diff --git a/config/GMPE01_00/rels/w01Dll/splits.txt b/config/GMPE01_00/rels/w01Dll/splits.txt index 531cd645..347107b1 100644 --- a/config/GMPE01_00/rels/w01Dll/splits.txt +++ b/config/GMPE01_00/rels/w01Dll/splits.txt @@ -5,3 +5,24 @@ Sections: .rodata type:rodata align:8 .data type:data align:8 .bss type:bss align:8 + +REL/board_executor.c: + .text start:0x00000000 end:0x000000E0 + +REL/w01Dll/main.c: + .text start:0x000000E0 end:0x00009D00 + .rodata start:0x00000000 end:0x00000198 + .data start:0x00000000 end:0x00000658 + .bss start:0x00000000 end:0x00000708 + +REL/w01Dll/mg_coin.c: + .text start:0x00009D00 end:0x0000D740 + .rodata start:0x00000198 end:0x000002C8 + .data start:0x00000658 end:0x00000F08 + .bss start:0x00000708 end:0x000007A0 + +REL/w01Dll/mg_item.c: + .text start:0x0000D740 end:0x000119F0 + .rodata start:0x000002C8 end:0x000003C4 + .data start:0x00000F08 end:0x00000FAC + .bss start:0x000007A0 end:0x0000081C diff --git a/config/GMPE01_00/rels/w01Dll/symbols.txt b/config/GMPE01_00/rels/w01Dll/symbols.txt index 90f53307..99586db2 100644 --- a/config/GMPE01_00/rels/w01Dll/symbols.txt +++ b/config/GMPE01_00/rels/w01Dll/symbols.txt @@ -1,8 +1,8 @@ -fn_1_0 = .text:0x00000000; // type:function size:0x30 +InitBoard = .text:0x00000000; // type:function size:0x30 scope:local _prolog = .text:0x00000030; // type:function size:0x64 scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global -fn_1_E0 = .text:0x000000E0; // type:function size:0x4BC -fn_1_59C = .text:0x0000059C; // type:function size:0x194 +BoardInit = .text:0x000000E0; // type:function size:0x4BC +BoardDestroy = .text:0x0000059C; // type:function size:0x194 fn_1_730 = .text:0x00000730; // type:function size:0x44 fn_1_774 = .text:0x00000774; // type:function size:0x4 fn_1_778 = .text:0x00000778; // type:function size:0x9C diff --git a/config/GMPE01_00/rels/w02Dll/splits.txt b/config/GMPE01_00/rels/w02Dll/splits.txt index 531cd645..4f91a6ab 100644 --- a/config/GMPE01_00/rels/w02Dll/splits.txt +++ b/config/GMPE01_00/rels/w02Dll/splits.txt @@ -5,3 +5,47 @@ Sections: .rodata type:rodata align:8 .data type:data align:8 .bss type:bss align:8 + +REL/board_executor.c: + .text start:0x00000000 end:0x000000E0 + +REL/w02Dll/main.c: + .text start:0x000000E0 end:0x00001254 + .rodata start:0x00000000 end:0x00000038 + .data start:0x00000000 end:0x000002A8 + .bss start:0x00000000 end:0x00000050 + +REL/w02Dll/dice.c: + .text start:0x00001254 end:0x00002D04 + .rodata start:0x00000038 end:0x00000108 + .data start:0x000002A8 end:0x00000360 + +REL/w02Dll/gamble.c: + .text start:0x00002D04 end:0x000039F4 + .rodata start:0x00000108 end:0x00000178 + .data start:0x00000360 end:0x00000378 + .bss start:0x00000050 end:0x00000058 + +REL/w02Dll/mg_coin.c: + .text start:0x000039F4 end:0x00005CF8 + .rodata start:0x00000178 end:0x00000218 + .data start:0x00000378 end:0x00000428 + .bss start:0x00000058 end:0x000000C8 + +REL/w02Dll/mg_item.c: + .text start:0x00005CF8 end:0x00009250 + .rodata start:0x00000218 end:0x000002F0 + .data start:0x00000428 end:0x00000490 + .bss start:0x000000C8 end:0x000001A0 + +REL/w02Dll/shuffleboard.c: + .text start:0x00009250 end:0x0000BC1C + .rodata start:0x000002F0 end:0x00000408 + .data start:0x00000490 end:0x000004D0 + .bss start:0x000001A0 end:0x00000380 + +REL/w02Dll/roulette.c: + .text start:0x0000BC1C end:0x0000E4D4 + .rodata start:0x00000408 end:0x00000530 + .data start:0x000004D0 end:0x00000524 + .bss start:0x00000380 end:0x00000390 diff --git a/config/GMPE01_00/rels/w02Dll/symbols.txt b/config/GMPE01_00/rels/w02Dll/symbols.txt index 2969cbd4..ddb886a4 100644 --- a/config/GMPE01_00/rels/w02Dll/symbols.txt +++ b/config/GMPE01_00/rels/w02Dll/symbols.txt @@ -1,8 +1,8 @@ -fn_1_0 = .text:0x00000000; // type:function size:0x30 +InitBoard = .text:0x00000000; // type:function size:0x30 scope:local _prolog = .text:0x00000030; // type:function size:0x64 scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global -fn_1_E0 = .text:0x000000E0; // type:function size:0x4F4 -fn_1_5D4 = .text:0x000005D4; // type:function size:0x158 +BoardInit = .text:0x000000E0; // type:function size:0x4F4 +BoardDestroy = .text:0x000005D4; // type:function size:0x158 fn_1_72C = .text:0x0000072C; // type:function size:0x44 fn_1_770 = .text:0x00000770; // type:function size:0x4 fn_1_774 = .text:0x00000774; // type:function size:0x8C diff --git a/config/GMPE01_00/rels/w03Dll/splits.txt b/config/GMPE01_00/rels/w03Dll/splits.txt index 531cd645..04a55256 100644 --- a/config/GMPE01_00/rels/w03Dll/splits.txt +++ b/config/GMPE01_00/rels/w03Dll/splits.txt @@ -5,3 +5,47 @@ Sections: .rodata type:rodata align:8 .data type:data align:8 .bss type:bss align:8 + +REL/board_executor.c: + .text start:0x00000000 end:0x000000E0 + +REL/w03Dll/main.c: + .text start:0x000000E0 end:0x000010E4 + .rodata start:0x00000000 end:0x00000030 + .data start:0x00000000 end:0x00000280 + .bss start:0x00000000 end:0x00000028 + +REL/w03Dll/statue.c: + .text start:0x000010E4 end:0x00003058 + .rodata start:0x00000030 end:0x000000D8 + .data start:0x00000280 end:0x00000310 + .bss start:0x00000028 end:0x00000070 + +REL/w03Dll/condor.c: + .text start:0x00003058 end:0x000063F4 + .rodata start:0x000000D8 end:0x00000218 + .data start:0x00000310 end:0x00000368 + .bss start:0x00000070 end:0x00000120 + +REL/w03Dll/river.c: + .text start:0x000063F4 end:0x0000785C + .rodata start:0x00000218 end:0x000002A8 + .data start:0x00000368 end:0x00000410 + .bss start:0x00000120 end:0x00000140 + +REL/w03Dll/smoke.c: + .text start:0x0000785C end:0x00007ABC + .rodata start:0x000002A8 end:0x000002B0 + .data start:0x00000410 end:0x00000450 + +REL/w03Dll/mg_coin.c: + .text start:0x00007ABC end:0x00009A7C + .rodata start:0x000002B0 end:0x00000360 + .data start:0x00000450 end:0x000004D8 + .bss start:0x00000140 end:0x00000180 + +REL/w03Dll/mg_item.c: + .text start:0x00009A7C end:0x0000C248 + .rodata start:0x00000360 end:0x00000418 + .data start:0x000004D8 end:0x0000054C + .bss start:0x00000180 end:0x00000197 diff --git a/config/GMPE01_00/rels/w03Dll/symbols.txt b/config/GMPE01_00/rels/w03Dll/symbols.txt index d0fda24e..3cd0f761 100644 --- a/config/GMPE01_00/rels/w03Dll/symbols.txt +++ b/config/GMPE01_00/rels/w03Dll/symbols.txt @@ -1,8 +1,8 @@ -fn_1_0 = .text:0x00000000; // type:function size:0x30 +InitBoard = .text:0x00000000; // type:function size:0x30 scope:local _prolog = .text:0x00000030; // type:function size:0x64 scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global -fn_1_E0 = .text:0x000000E0; // type:function size:0x660 -fn_1_740 = .text:0x00000740; // type:function size:0x144 +BoardInit = .text:0x000000E0; // type:function size:0x660 +BoardDestroy = .text:0x00000740; // type:function size:0x144 fn_1_884 = .text:0x00000884; // type:function size:0x6C fn_1_8F0 = .text:0x000008F0; // type:function size:0x20 fn_1_910 = .text:0x00000910; // type:function size:0x164 diff --git a/config/GMPE01_00/rels/w10Dll/splits.txt b/config/GMPE01_00/rels/w10Dll/splits.txt index 1a8de7f9..150ddd7d 100644 --- a/config/GMPE01_00/rels/w10Dll/splits.txt +++ b/config/GMPE01_00/rels/w10Dll/splits.txt @@ -6,25 +6,25 @@ Sections: .data type:data align:8 .bss type:bss align:8 -REL/w10Dll/w10Dll_init.c: +REL/board_executor.c: .text start:0x00000000 end:0x000000E0 -REL/w10Dll/w10Dll.c: +REL/w10Dll/main.c: .text start:0x000000E0 end:0x00000AEC .rodata start:0x00000000 end:0x00000038 .data start:0x00000000 end:0x00000078 .bss start:0x00000000 end:0x00000038 -REL/w10Dll/w10Dll2.c: +REL/w10Dll/host.c: .text start:0x00000AEC end:0x00000D2C .rodata start:0x00000038 end:0x00000048 .data start:0x00000078 end:0x00000098 -REL/w10Dll/w10Dll3.c: +REL/w10Dll/scene.c: .text start:0x00000D2C end:0x0000176C .rodata start:0x00000048 end:0x00000050 -REL/w10Dll/w10Dll4.c: +REL/w10Dll/tutorial.c: .text start:0x0000176C end:0x0000206C .rodata start:0x00000050 end:0x00000070 .data start:0x00000098 end:0x000002D4 diff --git a/config/GMPE01_00/rels/w10Dll/symbols.txt b/config/GMPE01_00/rels/w10Dll/symbols.txt index 856dd9b1..7bcd5959 100644 --- a/config/GMPE01_00/rels/w10Dll/symbols.txt +++ b/config/GMPE01_00/rels/w10Dll/symbols.txt @@ -1,8 +1,8 @@ -fn_1_0 = .text:0x00000000; // type:function size:0x30 +InitBoard = .text:0x00000000; // type:function size:0x30 scope:local _prolog = .text:0x00000030; // type:function size:0x64 scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global -fn_1_E0 = .text:0x000000E0; // type:function size:0x5F8 -fn_1_6D8 = .text:0x000006D8; // type:function size:0x1E8 +BoardInit = .text:0x000000E0; // type:function size:0x5F8 +BoardDestroy = .text:0x000006D8; // type:function size:0x1E8 fn_1_8C0 = .text:0x000008C0; // type:function size:0x44 fn_1_904 = .text:0x00000904; // type:function size:0x4 fn_1_908 = .text:0x00000908; // type:function size:0x4 diff --git a/config/GMPE01_00/symbols.txt b/config/GMPE01_00/symbols.txt index 490e5c47..81ba21a2 100644 --- a/config/GMPE01_00/symbols.txt +++ b/config/GMPE01_00/symbols.txt @@ -999,7 +999,7 @@ HuRestartSystem = .text:0x8005AE34; // type:function size:0xDC HuSoftResetCheck = .text:0x8005AF10; // type:function size:0xFC scope:local HuSoftResetCountCheck = .text:0x8005B00C; // type:function size:0xCC scope:local HuSoftResetPostProc = .text:0x8005B0D8; // type:function size:0x78 scope:local -BoardInit = .text:0x8005B150; // type:function size:0x2E0 +BoardCommonInit = .text:0x8005B150; // type:function size:0x2E0 InitBoardFunc = .text:0x8005B430; // type:function size:0x64 scope:local ExecBoardFunc = .text:0x8005B494; // type:function size:0x9C scope:local KillBoardFunc = .text:0x8005B530; // type:function size:0xCC scope:local @@ -1063,9 +1063,9 @@ BoardMGExit = .text:0x8005EF8C; // type:function size:0x170 BoardMGKill = .text:0x8005F0FC; // type:function size:0x60 BoardMGExec = .text:0x8005F15C; // type:function size:0xC4 BoardMGCreate = .text:0x8005F220; // type:function size:0x74 -BoardMGStartFlagSet = .text:0x8005F294; // type:function size:0x28 -BoardMGStartFlagReset = .text:0x8005F2BC; // type:function size:0x28 -BoardMGStartFlagGet = .text:0x8005F2E4; // type:function size:0x48 +BoardEventFlagSet = .text:0x8005F294; // type:function size:0x28 +BoardEventFlagReset = .text:0x8005F2BC; // type:function size:0x28 +BoardEventFlagGet = .text:0x8005F2E4; // type:function size:0x48 BoardMTXCalcLookAt = .text:0x8005F32C; // type:function size:0x10C BoardArcSin = .text:0x8005F438; // type:function size:0x330 BoardArcCos = .text:0x8005F768; // type:function size:0x390 diff --git a/configure.py b/configure.py index ef0322fd..8def2c4a 100644 --- a/configure.py +++ b/configure.py @@ -861,13 +861,45 @@ config.libs = [ Object(NonMatching, "REL/subchrselDll/subchrselDll.c"), } ), - Rel('subchrselDll', + Rel('w01Dll', objects = { - Object(Matching, "REL/w10Dll/w10Dll_init.c"), - Object(Matching, "REL/w10Dll/w10Dll.c"), - Object(Matching, "REL/w10Dll/w10Dll2.c"), - Object(Matching, "REL/w10Dll/w10Dll3.c"), - Object(Matching, "REL/w10Dll/w10Dll4.c"), + Object(Matching, "REL/board_executor.c"), + Object(NonMatching, "REL/w01Dll/main.c"), + Object(NonMatching, "REL/w01Dll/mg_coin.c"), + Object(NonMatching, "REL/w01Dll/mg_item.c"), + } + ), + Rel('w02Dll', + objects = { + Object(Matching, "REL/board_executor.c"), + Object(NonMatching, "REL/w02Dll/main.c"), + Object(NonMatching, "REL/w02Dll/dice.c"), + Object(NonMatching, "REL/w02Dll/gamble.c"), + Object(NonMatching, "REL/w02Dll/mg_coin.c"), + Object(NonMatching, "REL/w02Dll/mg_item.c"), + Object(NonMatching, "REL/w02Dll/shuffleboard.c"), + Object(NonMatching, "REL/w02Dll/roulette.c"), + } + ), + Rel('w03Dll', + objects = { + Object(Matching, "REL/board_executor.c"), + Object(NonMatching, "REL/w03Dll/main.c"), + Object(NonMatching, "REL/w03Dll/statue.c"), + Object(NonMatching, "REL/w03Dll/condor.c"), + Object(NonMatching, "REL/w03Dll/river.c"), + Object(NonMatching, "REL/w03Dll/smoke.c"), + Object(NonMatching, "REL/w03Dll/mg_coin.c"), + Object(NonMatching, "REL/w03Dll/mg_item.c"), + } + ), + Rel('w10Dll', + objects = { + Object(Matching, "REL/board_executor.c"), + Object(Matching, "REL/w10Dll/main.c"), + Object(Matching, "REL/w10Dll/host.c"), + Object(Matching, "REL/w10Dll/scene.c"), + Object(Matching, "REL/w10Dll/tutorial.c"), } ), ] diff --git a/include/REL/board_executor.h b/include/REL/board_executor.h new file mode 100644 index 00000000..cc128176 --- /dev/null +++ b/include/REL/board_executor.h @@ -0,0 +1,24 @@ +#ifndef REL_BOARD_EXECUTOR_H +#define REL_BOARD_EXECUTOR_H + +#ifdef __cplusplus +extern "C" { +#endif + +extern int _prolog(); +extern void _epilog(); + +typedef void (*VoidFunc)(void); +extern const VoidFunc _ctors[]; +extern const VoidFunc _dtors[]; + +extern void BoardCommonInit(VoidFunc init, VoidFunc destroy); + +extern void BoardInit(void); +extern void BoardDestroy(void); + +#ifdef __cplusplus +} +#endif + +#endif /* REL_BOARD_EXECUTOR_H */ diff --git a/include/functions.h b/include/functions.h index e8211b5b..685d9e38 100644 --- a/include/functions.h +++ b/include/functions.h @@ -69,7 +69,7 @@ f32 BoardModelRotYGet(s32); void BoardModelLayerSet(s16, s32); void BoardTutorialHostSet(s16); s32 BoardModelIDGet(s16); -void BoardInit(void*, void*); +void BoardCommonInit(void*, void*); void BoardModelScaleSetV(s32, Vec*); void BoardLightHookSet(void*, void*); s16 BoardModelCreate(s32, void*, s32); diff --git a/src/REL/w10Dll/w10Dll_init.c b/src/REL/board_executor.c similarity index 69% rename from src/REL/w10Dll/w10Dll_init.c rename to src/REL/board_executor.c index 558cb29c..814097fc 100644 --- a/src/REL/w10Dll/w10Dll_init.c +++ b/src/REL/board_executor.c @@ -1,7 +1,7 @@ -#include "include/REL/w10Dll.h" +#include "REL/board_executor.h" -void fn_1_0(void) { - BoardInit(&fn_1_E0, &fn_1_6D8); +static void InitBoard(void) { + BoardCommonInit(BoardInit, BoardDestroy); } int _prolog(void) { @@ -10,7 +10,7 @@ int _prolog(void) { (**ctors)(); ctors++; } - fn_1_0(); + InitBoard(); return 0; } diff --git a/src/REL/w10Dll/w10Dll2.c b/src/REL/w10Dll/host.c similarity index 100% rename from src/REL/w10Dll/w10Dll2.c rename to src/REL/w10Dll/host.c diff --git a/src/REL/w10Dll/w10Dll.c b/src/REL/w10Dll/main.c similarity index 99% rename from src/REL/w10Dll/w10Dll.c rename to src/REL/w10Dll/main.c index 3a07f3d1..952cee32 100644 --- a/src/REL/w10Dll/w10Dll.c +++ b/src/REL/w10Dll/main.c @@ -65,7 +65,7 @@ inline s32 get_current_board(void) { return GWSystem.board; } -void fn_1_E0(void) { +void BoardInit(void) { f32 sp10; f32 spC[2]; s32 sp8; @@ -138,7 +138,7 @@ void fn_1_E0(void) { HuWinMesPalSet(lbl_1_bss_E, 7, 0, 0, 0); } -void fn_1_6D8(void) { +void BoardDestroy(void) { s32 i; for (i = 0; i < 1; i++) { if (lbl_1_bss_10[i] != 0) { diff --git a/src/REL/w10Dll/w10Dll3.c b/src/REL/w10Dll/scene.c similarity index 100% rename from src/REL/w10Dll/w10Dll3.c rename to src/REL/w10Dll/scene.c diff --git a/src/REL/w10Dll/w10Dll4.c b/src/REL/w10Dll/tutorial.c similarity index 100% rename from src/REL/w10Dll/w10Dll4.c rename to src/REL/w10Dll/tutorial.c