From 62135a7584a8ae7081841357040807e6ece6d9c9 Mon Sep 17 00:00:00 2001 From: Tal Hayon Date: Mon, 18 Apr 2022 14:34:24 +0300 Subject: [PATCH] Put const data in manager4 --- assets/assets.json | 75 ------------ data/const/manager/manager4.s | 209 ---------------------------------- include/manager.h | 4 +- linker.ld | 2 +- src/manager/manager4.c | 92 +++++++++++++-- 5 files changed, 85 insertions(+), 297 deletions(-) delete mode 100644 data/const/manager/manager4.s diff --git a/assets/assets.json b/assets/assets.json index 09800747..f9017dbd 100644 --- a/assets/assets.json +++ b/assets/assets.json @@ -32282,81 +32282,6 @@ "DEMO_JP": -2052 } }, - { - "path": "manager4/gUnk_08107C78.bin", - "start": 1080440, - "size": 8 - }, - { - "path": "manager4/gUnk_08107C80.bin", - "start": 1080448, - "size": 24 - }, - { - "path": "manager4/gUnk_08107C98.bin", - "start": 1080472, - "size": 40 - }, - { - "path": "manager4/gUnk_08107CC0.bin", - "start": 1080512, - "size": 16 - }, - { - "path": "manager4/gUnk_08107CD0.bin", - "start": 1080528, - "size": 16 - }, - { - "path": "manager4/gUnk_08107CE0.bin", - "start": 1080544, - "size": 24 - }, - { - "path": "manager4/gUnk_08107CF8.bin", - "start": 1080568, - "size": 16 - }, - { - "path": "manager4/gUnk_08107D08.bin", - "start": 1080584, - "size": 24 - }, - { - "path": "manager4/gUnk_08107D20.bin", - "start": 1080608, - "size": 24 - }, - { - "path": "manager4/gUnk_08107D38.bin", - "start": 1080632, - "size": 16 - }, - { - "path": "manager4/gUnk_08107D48.bin", - "start": 1080648, - "size": 32 - }, - { - "path": "manager4/gUnk_08107D68.bin", - "start": 1080680, - "size": 16 - }, - { - "path": "manager4/gUnk_08107D78.bin", - "start": 1080696, - "size": 24 - }, - { - "path": "manager4/gUnk_08107D90.bin", - "start": 1080720, - "size": 16 - }, - { - "path": "manager4/gUnk_08107DA0.bin", - "start": 1080736, - "size": 32 - }, { "offsets": { "EU": -2220, diff --git a/data/const/manager/manager4.s b/data/const/manager/manager4.s deleted file mode 100644 index 65034cbd..00000000 --- a/data/const/manager/manager4.s +++ /dev/null @@ -1,209 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - .align 2 - -gUnk_08107C70:: @ 08107C70 - .4byte sub_0805786C - .4byte sub_08057920 - -gUnk_08107C78:: @ 08107C78 - .incbin "manager4/gUnk_08107C78.bin" - -gUnk_08107C80:: @ 08107C80 - .incbin "manager4/gUnk_08107C80.bin" - -gUnk_08107C98:: @ 08107C98 - .incbin "manager4/gUnk_08107C98.bin" - -gUnk_08107CC0:: @ 08107CC0 - .incbin "manager4/gUnk_08107CC0.bin" - -gUnk_08107CD0:: @ 08107CD0 - .incbin "manager4/gUnk_08107CD0.bin" - -gUnk_08107CE0:: @ 08107CE0 - .incbin "manager4/gUnk_08107CE0.bin" - -gUnk_08107CF8:: @ 08107CF8 - .incbin "manager4/gUnk_08107CF8.bin" - -gUnk_08107D08:: @ 08107D08 - .incbin "manager4/gUnk_08107D08.bin" - -gUnk_08107D20:: @ 08107D20 - .incbin "manager4/gUnk_08107D20.bin" - -gUnk_08107D38:: @ 08107D38 - .incbin "manager4/gUnk_08107D38.bin" - -gUnk_08107D48:: @ 08107D48 - .incbin "manager4/gUnk_08107D48.bin" - -gUnk_08107D68:: @ 08107D68 - .incbin "manager4/gUnk_08107D68.bin" - -gUnk_08107D78:: @ 08107D78 - .incbin "manager4/gUnk_08107D78.bin" - -gUnk_08107D90:: @ 08107D90 - .incbin "manager4/gUnk_08107D90.bin" - -gUnk_08107DA0:: @ 08107DA0 - .incbin "manager4/gUnk_08107DA0.bin" - -diggingCaveEntrances:: @ 08107DC0 - .4byte gUnk_08107C80 - .4byte gUnk_08107C78 - .4byte gUnk_08107CC0 - .4byte gUnk_08107C98 - .4byte gUnk_08107CF8 - .4byte gUnk_08107C78 - .4byte gUnk_08107CD0 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107CE0 - .4byte gUnk_08107D08 - .4byte gUnk_08107D20 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107D38 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107D48 - .4byte gUnk_08107D68 - .4byte gUnk_08107C78 - .4byte gUnk_08107D78 - .4byte gUnk_08107D90 - .4byte gUnk_08107C78 - .4byte gUnk_08107DA0 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 - .4byte gUnk_08107C78 diff --git a/include/manager.h b/include/manager.h index 131e9967..94df1639 100644 --- a/include/manager.h +++ b/include/manager.h @@ -138,7 +138,7 @@ typedef struct { } DiggingCaveEntrance; typedef struct { - DiggingCaveEntrance* unk_00; + const DiggingCaveEntrance* unk_00; u16 unk_04; u16 unk_06; u8 isDiggingCave; @@ -148,7 +148,7 @@ typedef struct { } struct_03004030; extern struct_03004030 gUnk_03004030; -extern DiggingCaveEntrance* diggingCaveEntrances[]; +extern const DiggingCaveEntrance* const diggingCaveEntrances[]; typedef struct { Manager manager; diff --git a/linker.ld b/linker.ld index edfa4b96..257ffb21 100644 --- a/linker.ld +++ b/linker.ld @@ -1108,7 +1108,7 @@ SECTIONS { . = ALIGN(4); src/manager/manager1.o(.rodata); src/manager/manager3.o(.rodata); - data/const/manager/manager4.o(.rodata); + src/manager/manager4.o(.rodata); src/manager/manager5.o(.rodata); src/manager/manager7.o(.rodata); . = ALIGN(4); diff --git a/src/manager/manager4.c b/src/manager/manager4.c index 7ed53807..a94c7a5a 100644 --- a/src/manager/manager4.c +++ b/src/manager/manager4.c @@ -6,18 +6,24 @@ #include "structures.h" #include "functions.h" -extern void (*gUnk_08107C70[])(Manager*); +void Manager4_Main(Manager*); +void sub_0805786C(Manager*); +void sub_08057920(Manager*); void Manager4_Main(Manager* this) { - gUnk_08107C70[this->action](this); + static void (*const actionFuncs[])(Manager*) = { + sub_0805786C, + sub_08057920, + }; + actionFuncs[this->action](this); } extern void UpdateIsDiggingCave(void); -extern DiggingCaveEntrance* sub_08057AA8(DiggingCaveEntrance*, int); +extern const DiggingCaveEntrance* sub_08057AA8(const DiggingCaveEntrance*, int); void sub_0805786C(Manager* this) { - DiggingCaveEntrance* tmp; + const DiggingCaveEntrance* tmp; u8 room; u8 area; u16 uVar = 0x81 << 7; @@ -50,10 +56,10 @@ void sub_0805786C(Manager* this) { this->action = 1; } -extern u32 sub_0805795C(Manager*, DiggingCaveEntrance*); +extern u32 sub_0805795C(Manager*, const DiggingCaveEntrance*); void sub_08057920(Manager* this) { - DiggingCaveEntrance* tmp; + const DiggingCaveEntrance* tmp; u8 room; room = gRoomControls.room; for (tmp = diggingCaveEntrances[gRoomControls.area]; @@ -61,9 +67,9 @@ void sub_08057920(Manager* this) { ; } -void sub_08057A18(Manager*, DiggingCaveEntrance*); +void sub_08057A18(Manager*, const DiggingCaveEntrance*); -u32 sub_0805795C(Manager* this, DiggingCaveEntrance* entr) { +u32 sub_0805795C(Manager* this, const DiggingCaveEntrance* entr) { u16 offsetX, offsetY, offsetX2, offsetY2; u32 tmp, tmp2; if (gUnk_03004030.isDiggingCave) { @@ -91,7 +97,7 @@ u32 sub_0805795C(Manager* this, DiggingCaveEntrance* entr) { extern void sub_08080930(u32); -void sub_08057A18(Manager* this, DiggingCaveEntrance* entr) { +void sub_08057A18(Manager* this, const DiggingCaveEntrance* entr) { u16 tmp; SetInitializationPriority(); gUnk_03004030.unk_0a = gUnk_03004030.unk_09; @@ -118,10 +124,76 @@ void sub_08057A18(Manager* this, DiggingCaveEntrance* entr) { DeleteManager(this); } -DiggingCaveEntrance* sub_08057AA8(DiggingCaveEntrance* entr, int room) { +const DiggingCaveEntrance* sub_08057AA8(const DiggingCaveEntrance* entr, int room) { for (; entr->unk_00 != 0xFFFF; entr++) { if (entr->source_room == room) return entr; } return 0; } + +static const DiggingCaveEntrance gUnk_08107C78[] = { { -1, 0, 0, 0, 0 } }; +static const DiggingCaveEntrance gUnk_08107C80[] = { { 0x4e5, 0x0, 0x0, 0xc, 0x0, 0xce5 }, + { 0x3df, 0x0, 0x0, 0xc, 0x0, 0xbdf }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107C98[] = { { 0x2c3, 0x4, 0x4, 0x13, 0x0, 0x2c3 }, + { 0x163, 0x5, 0x10, 0x19, 0x1, 0x448 }, + { 0x385, 0x7, 0xa, 0x13, 0x3, 0x385 }, + { 0x390, 0x7, 0xa, 0x13, 0x3, 0x390 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107CC0[] = { { 0x62d, 0x0, 0x2, 0xf, 0x0, 0xa2d }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107CD0[] = { { 0x143, 0x1, 0x6, 0x14, 0x0, 0x643 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107CE0[] = { { 0x95a, 0x0, 0x8, 0x16, 0x0, 0x95a }, + { 0x9ce, 0x0, 0x8, 0x16, 0x0, 0x9ce }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107CF8[] = { { 0x670, 0x0, 0xc, 0x17, 0x0, 0x670 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D08[] = { { 0x15e, 0x0, 0xe, 0x19, 0x1, 0x46e }, + { 0x79e, 0x0, 0x12, 0x19, 0x0, 0x248 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D20[] = { { 0xce5, 0x0, 0x1, 0x0, 0x0, 0x4e5 }, + { 0xbdf, 0x0, 0x1, 0x0, 0x0, 0x3df }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D38[] = { { 0xa2d, 0x0, 0x3, 0x2, 0x0, 0x62d }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D48[] = { { 0x2c3, 0x0, 0x5, 0x3, 0x4, 0x2c3 }, + { 0x385, 0x3, 0xb, 0x3, 0x7, 0x385 }, + { 0x390, 0x3, 0xb, 0x3, 0x7, 0x390 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D68[] = { { 0x643, 0x0, 0x7, 0x6, 0x1, 0x143 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D78[] = { { 0x95a, 0x0, 0x9, 0xa, 0x0, 0x95a }, + { 0x9ce, 0x0, 0x9, 0xa, 0x0, 0x9ce }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107D90[] = { { 0x670, 0x0, 0xd, 0x4, 0x0, 0x670 }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance gUnk_08107DA0[] = { { 0x46e, 0x1, 0xf, 0xb, 0x0, 0x15e }, + { 0x448, 0x1, 0x11, 0x3, 0x5, 0x163 }, + { 0x248, 0x0, 0x13, 0xb, 0x0, 0x79e }, + { -0x1, 0x0, 0x0, 0x0, 0x0, 0x0 } }; +static const DiggingCaveEntrance* const diggingCaveEntrances[] = { + gUnk_08107C80, gUnk_08107C78, gUnk_08107CC0, gUnk_08107C98, gUnk_08107CF8, gUnk_08107C78, gUnk_08107CD0, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107CE0, gUnk_08107D08, gUnk_08107D20, gUnk_08107C78, + gUnk_08107C78, gUnk_08107D38, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107D48, gUnk_08107D68, + gUnk_08107C78, gUnk_08107D78, gUnk_08107D90, gUnk_08107C78, gUnk_08107DA0, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, + gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, gUnk_08107C78, +};