diff --git a/config/GMPE01_00/rels/w10Dll/splits.txt b/config/GMPE01_00/rels/w10Dll/splits.txt index d14a396d..c6adc1ab 100644 --- a/config/GMPE01_00/rels/w10Dll/splits.txt +++ b/config/GMPE01_00/rels/w10Dll/splits.txt @@ -14,12 +14,13 @@ REL/w10Dll/main.c: .text start:0x000000E0 end:0x00000AEC .rodata start:0x00000010 end:0x00000038 .data start:0x00000000 end:0x00000078 - .bss start:0x00000000 end:0x00000038 + .bss start:0x00000000 end:0x00000018 REL/w10Dll/host.c: .text start:0x00000AEC end:0x00000D2C .rodata start:0x00000038 end:0x00000048 .data start:0x00000078 end:0x00000098 + .bss start:0x00000018 end:0x00000020 REL/w10Dll/scene.c: .text start:0x00000D2C end:0x00001984 @@ -29,3 +30,4 @@ REL/w10Dll/tutorial.c: .text start:0x00001984 end:0x0000206C .rodata start:0x00000058 end:0x00000070 .data start:0x00000098 end:0x000002D4 + .bss start:0x00000020 end:0x00000038 diff --git a/config/GMPE01_00/rels/w10Dll/symbols.txt b/config/GMPE01_00/rels/w10Dll/symbols.txt index 658188c2..3e5d6e0c 100644 --- a/config/GMPE01_00/rels/w10Dll/symbols.txt +++ b/config/GMPE01_00/rels/w10Dll/symbols.txt @@ -3,66 +3,66 @@ _prolog = .text:0x00000030; // type:function size:0x64 scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global BoardCreate = .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 -fn_1_90C = .text:0x0000090C; // type:function size:0x8 +LightSetHook = .text:0x000008C0; // type:function size:0x44 scope:local +LightResetHook = .text:0x00000904; // type:function size:0x4 scope:local +LandEvent = .text:0x00000908; // type:function size:0x4 scope:local +WalkEvent = .text:0x0000090C; // type:function size:0x8 scope:local fn_1_914 = .text:0x00000914; // type:function size:0x4 fn_1_918 = .text:0x00000918; // type:function size:0x4 -fn_1_91C = .text:0x0000091C; // type:function size:0x4 +WalkMiniEvent = .text:0x0000091C; // type:function size:0x4 scope:local fn_1_920 = .text:0x00000920; // type:function size:0x1CC -fn_1_AEC = .text:0x00000AEC; // type:function size:0xB4 -fn_1_BA0 = .text:0x00000BA0; // type:function size:0x70 -fn_1_C10 = .text:0x00000C10; // type:function size:0x10 -fn_1_C20 = .text:0x00000C20; // type:function size:0x10C -fn_1_D2C = .text:0x00000D2C; // type:function size:0x28 -fn_1_D54 = .text:0x00000D54; // type:function size:0x28 -fn_1_D7C = .text:0x00000D7C; // type:function size:0x28 -fn_1_DA4 = .text:0x00000DA4; // type:function size:0x28 -fn_1_DCC = .text:0x00000DCC; // type:function size:0x28 -fn_1_DF4 = .text:0x00000DF4; // type:function size:0x28 -fn_1_E1C = .text:0x00000E1C; // type:function size:0x28 -fn_1_E44 = .text:0x00000E44; // type:function size:0x50 -fn_1_E94 = .text:0x00000E94; // type:function size:0x28 -fn_1_EBC = .text:0x00000EBC; // type:function size:0x28 -fn_1_EE4 = .text:0x00000EE4; // type:function size:0x4 -fn_1_EE8 = .text:0x00000EE8; // type:function size:0x48 -fn_1_F30 = .text:0x00000F30; // type:function size:0x3C -fn_1_F6C = .text:0x00000F6C; // type:function size:0x4C -fn_1_FB8 = .text:0x00000FB8; // type:function size:0x58 -fn_1_1010 = .text:0x00001010; // type:function size:0x4C -fn_1_105C = .text:0x0000105C; // type:function size:0x3C -fn_1_1098 = .text:0x00001098; // type:function size:0x28 -fn_1_10C0 = .text:0x000010C0; // type:function size:0x38 -fn_1_10F8 = .text:0x000010F8; // type:function size:0x3C -fn_1_1134 = .text:0x00001134; // type:function size:0x44 -fn_1_1178 = .text:0x00001178; // type:function size:0x28 -fn_1_11A0 = .text:0x000011A0; // type:function size:0x4C -fn_1_11EC = .text:0x000011EC; // type:function size:0x54 -fn_1_1240 = .text:0x00001240; // type:function size:0x38 -fn_1_1278 = .text:0x00001278; // type:function size:0x28 -fn_1_12A0 = .text:0x000012A0; // type:function size:0x3C -fn_1_12DC = .text:0x000012DC; // type:function size:0x28 -fn_1_1304 = .text:0x00001304; // type:function size:0x28 -fn_1_132C = .text:0x0000132C; // type:function size:0x28 -fn_1_1354 = .text:0x00001354; // type:function size:0x28 -fn_1_137C = .text:0x0000137C; // type:function size:0x28 -fn_1_13A4 = .text:0x000013A4; // type:function size:0x3C8 -fn_1_176C = .text:0x0000176C; // type:function size:0x30 -fn_1_179C = .text:0x0000179C; // type:function size:0x58 -fn_1_17F4 = .text:0x000017F4; // type:function size:0x40 -fn_1_1834 = .text:0x00001834; // type:function size:0x88 -fn_1_18BC = .text:0x000018BC; // type:function size:0x4C -fn_1_1908 = .text:0x00001908; // type:function size:0x28 -fn_1_1930 = .text:0x00001930; // type:function size:0x28 -fn_1_1958 = .text:0x00001958; // type:function size:0x28 -fn_1_1980 = .text:0x00001980; // type:function size:0x4 -fn_1_1984 = .text:0x00001984; // type:function size:0x128 -fn_1_1AAC = .text:0x00001AAC; // type:function size:0x2BC -fn_1_1D68 = .text:0x00001D68; // type:function size:0x84 -fn_1_1DEC = .text:0x00001DEC; // type:function size:0x50 -fn_1_1E3C = .text:0x00001E3C; // type:function size:0x174 -fn_1_1FB0 = .text:0x00001FB0; // type:function size:0xBC +HostCreate = .text:0x00000AEC; // type:function size:0xB4 +HostWinExec = .text:0x00000BA0; // type:function size:0x70 +HostPosSet = .text:0x00000C10; // type:function size:0x10 +UpdateHost = .text:0x00000C20; // type:function size:0x10C scope:local +TutorialStartExec = .text:0x00000D2C; // type:function size:0x28 +TutorialPreRollExec = .text:0x00000D54; // type:function size:0x28 +TutorialOrderExec = .text:0x00000D7C; // type:function size:0x28 +TutorialP1StartExec = .text:0x00000DA4; // type:function size:0x28 +TutorialP2StartExec = .text:0x00000DCC; // type:function size:0x28 +TutorialP3StartExec = .text:0x00000DF4; // type:function size:0x28 +TutorialP4StartExec = .text:0x00000E1C; // type:function size:0x28 +TutorialGameStartExec = .text:0x00000E44; // type:function size:0x50 +TutorialRollExec = .text:0x00000E94; // type:function size:0x28 +TutorialMoveExec = .text:0x00000EBC; // type:function size:0x28 +TutorialLandExec = .text:0x00000EE4; // type:function size:0x4 +TutorialLandBlueExec = .text:0x00000EE8; // type:function size:0x48 +TutorialLandRedExec = .text:0x00000F30; // type:function size:0x3C +TutorialLandHappenExec = .text:0x00000F6C; // type:function size:0x4C +TutorialLandFortuneExec = .text:0x00000FB8; // type:function size:0x58 +TutorialLandBowserExec = .text:0x00001010; // type:function size:0x4C +TutorialLandMushroomExec = .text:0x0000105C; // type:function size:0x3C +TutorialMushroomMegaExec = .text:0x00001098; // type:function size:0x28 +TutorialMushroomMiniExec = .text:0x000010C0; // type:function size:0x38 +TutorialLandBattleExec = .text:0x000010F8; // type:function size:0x3C +TutorialLandWarpExec = .text:0x00001134; // type:function size:0x44 +TutorialWarpDecideExec = .text:0x00001178; // type:function size:0x28 +TutorialBlockStarExec = .text:0x000011A0; // type:function size:0x4C +TutorialBlockCoinExec = .text:0x000011EC; // type:function size:0x54 +TutorialMiniMegaExec = .text:0x00001240; // type:function size:0x38 +TutorialMiniUseExec = .text:0x00001278; // type:function size:0x28 +TutorialMiniStopExec = .text:0x000012A0; // type:function size:0x3C +TutorialMegaUseExec = .text:0x000012DC; // type:function size:0x28 +TutorialMegaDiceExec = .text:0x00001304; // type:function size:0x28 +TutorialMegaStompExec = .text:0x0000132C; // type:function size:0x28 +TutorialMegaEventExec = .text:0x00001354; // type:function size:0x28 +TutorialMegaStopExec = .text:0x0000137C; // type:function size:0x28 +TutorialEndExec = .text:0x000013A4; // type:function size:0x3C8 +TutorialMGStatusExec = .text:0x0000176C; // type:function size:0x30 +TutorialMG4PExec = .text:0x0000179C; // type:function size:0x58 +TutorialMG2Vs2Exec = .text:0x000017F4; // type:function size:0x40 +TutorialMG1Vs3Exec = .text:0x00001834; // type:function size:0x88 +TutorialMG1Vs3AltExec = .text:0x000018BC; // type:function size:0x4C +TutorialShopExec = .text:0x00001908; // type:function size:0x28 +TutorialLotteryExec = .text:0x00001930; // type:function size:0x28 +TutorialBooHouseExec = .text:0x00001958; // type:function size:0x28 +TutorialNullExec = .text:0x00001980; // type:function size:0x4 +CloseTutorial = .text:0x00001984; // type:function size:0x128 scope:local +TutorialExec = .text:0x00001AAC; // type:function size:0x2BC +TutorialSprCreate = .text:0x00001D68; // type:function size:0x84 +TutorialSprKill = .text:0x00001DEC; // type:function size:0x50 +TutorialSpaceShow = .text:0x00001E3C; // type:function size:0x174 +TutorialSpaceHide = .text:0x00001FB0; // type:function size:0xBC _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float @@ -85,31 +85,32 @@ lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:f lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0x28 data:float -lbl_1_data_28 = .data:0x00000028; // type:object size:0x2 data:2byte -lbl_1_data_2A = .data:0x0000002A; // type:object size:0x2 data:2byte -lbl_1_data_2C = .data:0x0000002C; // type:object size:0x2 data:2byte -lbl_1_data_2E = .data:0x0000002E; // type:object size:0x2 data:2byte -lbl_1_data_30 = .data:0x00000030; // type:object size:0x2 data:2byte -lbl_1_data_32 = .data:0x00000032; // type:object size:0x22 data:2byte -lbl_1_data_54 = .data:0x00000054; // type:object size:0x8 -lbl_1_data_5C = .data:0x0000005C; // type:object size:0x8 -lbl_1_data_64 = .data:0x00000064; // type:object size:0x8 -lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC -lbl_1_data_78 = .data:0x00000078; // type:object size:0x8 -lbl_1_data_80 = .data:0x00000080; // type:object size:0x18 data:float -lbl_1_data_98 = .data:0x00000098; // type:object size:0x2E data:string -lbl_1_data_C6 = .data:0x000000C6; // type:object size:0x42 -lbl_1_data_108 = .data:0x00000108; // type:object size:0x150 -lbl_1_data_258 = .data:0x00000258; // type:object size:0x50 data:string -lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x2C -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +bgMdl = .data:0x00000028; // type:object size:0x2 scope:local data:2byte +fgMdl = .data:0x0000002A; // type:object size:0x2 scope:local data:2byte +boardStarHostMdl = .data:0x0000002C; // type:object size:0x2 data:2byte +boardShopHostMdl = .data:0x0000002E; // type:object size:0x2 data:2byte +boardLotteryHostMdl = .data:0x00000030; // type:object size:0x2 data:2byte +boardBooHouseHostMdl = .data:0x00000032; // type:object size:0x2 data:2byte +lbl_1_data_34 = .data:0x00000034; // type:object size:0x20 data:4byte +starHostMot = .data:0x00000054; // type:object size:0x8 scope:local +shopHostMot = .data:0x0000005C; // type:object size:0x8 scope:local +lotteryHostMot = .data:0x00000064; // type:object size:0x8 scope:local +booHouseHostMot = .data:0x0000006C; // type:object size:0x8 scope:local +hostMot = .data:0x00000078; // type:object size:0x8 scope:local +hostPosTbl = .data:0x00000080; // type:object size:0x18 scope:local data:float +lbl_1_data_98 = .data:0x00000098; // type:object size:0x2E scope:local data:string +rollDataTbl = .data:0x000000C6; // type:object size:0x42 scope:local +sceneTbl = .data:0x00000108; // type:object size:0x150 scope:local +lbl_1_data_258 = .data:0x00000258; // type:object size:0x50 scope:local data:string +tutorialSprTbl = .data:0x000002A8; // type:object size:0x2C scope:local +boardWork = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte -lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte -lbl_1_bss_E = .bss:0x0000000E; // type:object size:0x2 data:2byte +tutorialDoneF = .bss:0x0000000C; // type:object size:0x2 data:2byte +w10ExitWin = .bss:0x0000000E; // type:object size:0x2 data:2byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x8 data:2byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x2 data:2byte -lbl_1_bss_1E = .bss:0x0000001E; // type:object size:0x2 data:2byte -lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x2 data:2byte -lbl_1_bss_22 = .bss:0x00000022; // type:object size:0x16 +hostProc = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte +hostPos = .bss:0x0000001C; // type:object size:0x2 scope:local data:2byte +hostMdl = .bss:0x0000001E; // type:object size:0x2 scope:local data:2byte +sprCurr = .bss:0x00000020; // type:object size:0x2 scope:local data:2byte +sprList = .bss:0x00000022; // type:object size:0x16 scope:local diff --git a/include/REL/w10Dll.h b/include/REL/w10Dll.h index d1bc4999..5d392272 100644 --- a/include/REL/w10Dll.h +++ b/include/REL/w10Dll.h @@ -8,12 +8,12 @@ #define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) -typedef struct w10_state { -/* 0x00 */ s32 unk0; -/* 0x04 */ u16 unk4; -/* 0x06 */ u16 unk6; -/* 0x08 */ s16 unk8; -} W10State; +typedef struct w10_board_work { +/* 0x00 */ s32 scene; +/* 0x04 */ u16 dice; +/* 0x06 */ u16 msg; +/* 0x08 */ s16 focus_mdl; +} W10BoardWork; typedef struct unkw10Dll { Vec unk0; @@ -22,104 +22,76 @@ typedef struct unkw10Dll { s32 unk24; } unkw10Dll; //sizeof 0x28 -typedef struct w10DllUnk01 { - u8 unk0; - f32 unk4; - f32 unk8; - f32 unkC; - f32 unk10; -} w10DllUnk01; //sizeof ? +typedef void (*TutorialSceneFunc)(void); -typedef struct w10DllUnk04 { - s16 unk0; - s16 unk2; - void (*unk4)(); -} w10DllUnk04; +typedef struct tutorial_scene { + s16 cue; + TutorialSceneFunc func; +} TutorialScene; -extern s16 lbl_1_bss_20; -extern s16 lbl_1_bss_22[]; -extern s16 lbl_1_bss_20; extern s32 boardTutorialData[4]; -void fn_1_C10(s16); +void HostPosSet(s16); void fn_1_1FB0(void); void fn_1_1E3C(s16, s16, s16); -void fn_1_BA0(s32); -void fn_1_C20(void); +void HostWinExec(s32); void fn_1_6D8(void); void fn_1_E0(void); -void fn_1_1D68(void); -void fn_1_1DEC(void); -void fn_1_AEC(void); -int fn_1_1AAC(s16, s32); -void fn_1_8C0(void); -void fn_1_904(void); -void fn_1_908(void); -s32 fn_1_90C(void); -void fn_1_91C(void); -void fn_1_13A4(void); -void fn_1_176C(void); -void fn_1_179C(void); -void fn_1_17F4(void); -void fn_1_1834(void); -void fn_1_18BC(void); -void fn_1_1908(void); -void fn_1_1930(void); -void fn_1_1958(void); -void fn_1_D2C(void); -void fn_1_D54(void); -void fn_1_D7C(void); -void fn_1_DA4(void); -void fn_1_DCC(void); -void fn_1_DF4(void); -void fn_1_E1C(void); -void fn_1_E44(void); -void fn_1_E94(void); -void fn_1_EBC(void); -void fn_1_EE4(void); -void fn_1_EE8(void); -void fn_1_F30(void); -void fn_1_F6C(void); -void fn_1_FB8(void); -void fn_1_1010(void); -void fn_1_105C(void); -void fn_1_1098(void); -void fn_1_10C0(void); -void fn_1_10F8(void); -void fn_1_1134(void); -void fn_1_1178(void); -void fn_1_11A0(void); -void fn_1_11EC(void); -void fn_1_1240(void); -void fn_1_1278(void); -void fn_1_12A0(void); -void fn_1_12DC(void); -void fn_1_1304(void); -void fn_1_132C(void); -void fn_1_1354(void); -void fn_1_137C(void); +void TutorialSprCreate(void); +void TutorialSprKill(void); +void HostCreate(void); +int TutorialExec(s16, s32); -extern w10DllUnk04 lbl_1_data_108[42]; -extern Vec lbl_1_data_80[]; -extern Process* lbl_1_bss_18; -extern s16 lbl_1_bss_1C; -extern s16 lbl_1_bss_1E; -extern s32 lbl_1_data_78[2]; -extern W10State* lbl_1_bss_0; -extern s16 lbl_1_bss_10[4]; //could be incorrect size +void TutorialStartExec(void); +void TutorialPreRollExec(void); +void TutorialOrderExec(void); +void TutorialP1StartExec(void); +void TutorialP2StartExec(void); +void TutorialP3StartExec(void); +void TutorialP4StartExec(void); +void TutorialGameStartExec(void); +void TutorialRollExec(void); +void TutorialMoveExec(void); +void TutorialLandExec(void); +void TutorialLandBlueExec(void); +void TutorialLandRedExec(void); +void TutorialLandHappenExec(void); +void TutorialLandFortuneExec(void); +void TutorialLandBowserExec(void); +void TutorialLandMushroomExec(void); +void TutorialMushroomMegaExec(void); +void TutorialMushroomMiniExec(void); +void TutorialLandBattleExec(void); +void TutorialLandWarpExec(void); +void TutorialWarpDecideExec(void); +void TutorialBlockStarExec(void); +void TutorialBlockCoinExec(void); +void TutorialMiniMegaExec(void); +void TutorialMiniUseExec(void); +void TutorialMiniStopExec(void); +void TutorialMegaUseExec(void); +void TutorialMegaDiceExec(void); +void TutorialMegaStompExec(void); +void TutorialMegaEventExec(void); +void TutorialMegaStopExec(void); +void TutorialEndExec(void); +void TutorialMGStatusExec(void); +void TutorialMG4PExec(void); +void TutorialMG2Vs2Exec(void); +void TutorialMG1Vs3Exec(void); +void TutorialMG1Vs3AltExec(void); +void TutorialShopExec(void); +void TutorialLotteryExec(void); +void TutorialBooHouseExec(void); + +extern W10BoardWork *boardWork; +extern s16 lbl_1_bss_10[1]; extern void* lbl_1_bss_8; //unknown type -extern s16 lbl_1_bss_C; -extern s16 lbl_1_bss_E; +extern s16 tutorialDoneF; +extern s16 w10ExitWin; extern unkw10Dll lbl_1_data_0[1]; -extern s16 lbl_1_bss_22[11]; -extern s32 lbl_1_data_2A8[11]; -extern s16 lbl_1_data_28; -extern s16 lbl_1_data_2A; -extern s16 lbl_1_data_2C; -extern s16 lbl_1_data_2E; -extern s16 lbl_1_data_30; -extern s16 lbl_1_data_32; -extern s32 lbl_1_data_54[2]; -extern s32 lbl_1_data_5C[2]; -extern s32 lbl_1_data_64[2]; -extern s32 lbl_1_data_6C[2]; \ No newline at end of file + +extern s16 boardStarHostMdl; +extern s16 boardShopHostMdl; +extern s16 boardLotteryHostMdl; +extern s16 boardBooHouseHostMdl; \ No newline at end of file diff --git a/src/REL/w10Dll/host.c b/src/REL/w10Dll/host.c index 275264d2..8fb2d502 100644 --- a/src/REL/w10Dll/host.c +++ b/src/REL/w10Dll/host.c @@ -4,63 +4,70 @@ #include "game/board/tutorial.h" #include "game/board/window.h" -s32 lbl_1_data_78[2] = { +static s16 hostMdl; +static s16 hostPos; +static Process *hostProc; + +static s32 hostMot[2] = { DATA_MAKE_NUM(DATADIR_W10, 16), -1 }; -Vec lbl_1_data_80[2] = { +static Vec hostPosTbl[2] = { {70.0f, 355.0f, 200.f}, {70.0f, 175.0f, 200.f}, }; -void fn_1_AEC(void) { - lbl_1_bss_1C = 0; - lbl_1_bss_1E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 15), lbl_1_data_78, 0); - BoardModelMotionStart(lbl_1_bss_1E, 1, 0x40000001); - BoardTutorialHostSet(lbl_1_bss_1E); - BoardModelLayerSet(lbl_1_bss_1E, 6); - lbl_1_bss_18 = HuPrcCreate(fn_1_C20, 0x1FFF, 0x1800, 0); +static void UpdateHost(void); + + +void HostCreate(void) { + hostPos = 0; + hostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 15), hostMot, 0); + BoardModelMotionStart(hostMdl, 1, 0x40000001); + BoardTutorialHostSet(hostMdl); + BoardModelLayerSet(hostMdl, 6); + hostProc = HuPrcCreate(UpdateHost, 0x1FFF, 0x1800, 0); } -void fn_1_BA0(s32 arg0) { - s16 var_r31; +void HostWinExec(s32 arg0) { + s16 pos; - switch (lbl_1_bss_1C) { + switch (hostPos) { case 0: - var_r31 = 5; + pos = 5; break; case 1: - var_r31 = 6; + pos = 6; break; } - BoardWinCreate(var_r31, arg0, -1); + BoardWinCreate(pos, arg0, -1); BoardWinWait(); BoardWinKill(); } -void fn_1_C10(s16 arg0) { - lbl_1_bss_1C = arg0; +void HostPosSet(s16 arg0) { + hostPos = arg0; } -void fn_1_C20(void) { - Mtx sp20; +void UpdateHost(void) { + Mtx rot; Vec sp14; Vec sp8; while (1) { if (BoardIsKill() != 0) { - BoardModelKill(lbl_1_bss_1E); + BoardModelKill(hostMdl); BoardTutorialHostSet(-1); HuPrcEnd(); } - Hu3D2Dto3D(&lbl_1_data_80[lbl_1_bss_1C], 1, &sp14); - BoardModelPosSetV(lbl_1_bss_1E, &sp14); + Hu3D2Dto3D(&hostPosTbl[hostPos], 1, &sp14); + BoardModelPosSetV(hostMdl, &sp14); BoardCameraRotGet(&sp8); - PSMTXRotRad(sp20, 'y', 0.2617994f); - BoardModelMtxSet(lbl_1_bss_1E, &sp20); - BoardModelRotSet(lbl_1_bss_1E, sp8.x, 0.0f, 0.0f); - BoardModelScaleSet(lbl_1_bss_1E, 0.2f, 0.2f, 0.2f); + PSMTXRotRad(rot, 'y', 0.2617994f); + BoardModelMtxSet(hostMdl, &rot); + BoardModelRotSet(hostMdl, sp8.x, 0.0f, 0.0f); + BoardModelScaleSet(hostMdl, 0.2f, 0.2f, 0.2f); HuPrcVSleep(); } } \ No newline at end of file diff --git a/src/REL/w10Dll/main.c b/src/REL/w10Dll/main.c index 39afd789..2694972c 100644 --- a/src/REL/w10Dll/main.c +++ b/src/REL/w10Dll/main.c @@ -12,17 +12,12 @@ #include "math.h" //BSS -s16 lbl_1_bss_22[11]; -s16 lbl_1_bss_20; -s16 lbl_1_bss_1E; -s16 lbl_1_bss_1C; -Process* lbl_1_bss_18; -s16 lbl_1_bss_10[4]; -s16 lbl_1_bss_E; -s16 lbl_1_bss_C; +s16 lbl_1_bss_10[1]; +s16 w10ExitWin; +s16 tutorialDoneF; void* lbl_1_bss_8; -s32 lbl_1_bss_4_pad; -W10State* lbl_1_bss_0; +s32 lbl_1_bss_4; +W10BoardWork *boardWork; //DATA unkw10Dll lbl_1_data_0[1] = { @@ -33,82 +28,88 @@ unkw10Dll lbl_1_data_0[1] = { }; -s16 lbl_1_data_28 = -1; -s16 lbl_1_data_2A = -1; -s16 lbl_1_data_2C = -1; -s16 lbl_1_data_2E = -1; -s16 lbl_1_data_30 = -1; -s16 lbl_1_data_32 = -1; +static s16 bgMdl = -1; +static s16 fgMdl = -1; +s16 boardStarHostMdl = -1; +s16 boardShopHostMdl = -1; +s16 boardLotteryHostMdl = -1; +s16 boardBooHouseHostMdl = -1; //unused? s32 lbl_1_data_34[] = { -0x005F0000, 0x001A0000, -0x006D0000, 0x008A0000, -0x00850000, 0x00110000, -0x000D0000, 0x00810000, + DATADIR_MARIOMOT, DATADIR_LUIGIMOT, + DATADIR_PEACHMOT, DATADIR_YOSHIMOT, + DATADIR_WARIOMOT, DATADIR_DONKEYMOT, + DATADIR_DAISYMOT, DATADIR_WALUIGIMOT, }; -s32 lbl_1_data_54[2] = { +static s32 starHostMot[2] = { DATA_MAKE_NUM(DATADIR_W10, 18), DATA_NUM_LISTEND }; -s32 lbl_1_data_5C[2] = { +static s32 shopHostMot[2] = { DATA_MAKE_NUM(DATADIR_BGUEST, 9), DATA_NUM_LISTEND }; -s32 lbl_1_data_64[2] = { +static s32 lotteryHostMot[2] = { DATA_MAKE_NUM(DATADIR_BGUEST, 24), DATA_NUM_LISTEND }; -s32 lbl_1_data_6C[2] = { +static s32 booHouseHostMot[2] = { DATA_MAKE_NUM(DATADIR_BGUEST, 14), DATA_NUM_LISTEND }; -void BoardCreate(void) { - f32 sp10; - f32 spC[2]; - s32 sp8; +static void LightSetHook(void); +static void LightResetHook(void); +static s32 WalkEvent(void); +static s32 WalkMiniEvent(void); +static s32 LandEvent(void); + + +void BoardCreate(void) +{ + float size[2]; s32 i; unkw10Dll* temp_r30; - s32 temp; + s32 space; s32 board; board = GWBoardGet(); - lbl_1_bss_0 = (W10State *)&GWSystem.board_data; - lbl_1_bss_0->unk0 = 0; - lbl_1_bss_0->unk4 = 0; - lbl_1_bss_0->unk6 = 0; - BoardTutorialHookSet(&fn_1_1AAC); - fn_1_AEC(); - fn_1_1D68(); - lbl_1_bss_C = 0; + boardWork = (W10BoardWork *)&GWSystem.board_data[0]; + boardWork->scene = 0; + boardWork->dice = 0; + boardWork->msg = 0; + BoardTutorialHookSet(&TutorialExec); + HostCreate(); + TutorialSprCreate(); + tutorialDoneF = 0; BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W10, 0)); - temp = BoardSpaceFlagSearch(0, 1); - BoardTutorialBlockSetPos(temp, 1); - lbl_1_data_28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 1), NULL, 0); - fn_8006DDE8(lbl_1_data_28, -1.0f); - BoardModelPosSet(lbl_1_data_28, 0.0f, 0.0f, 0.0f); - BoardModelMotionStart(lbl_1_data_28, 0, 0x40000001); - BoardModelMotionSpeedSet(lbl_1_data_28, 1.0f); - lbl_1_data_2A = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 2), NULL, 0); - fn_8006DDE8(lbl_1_data_2A, -1.0f); - BoardModelPosSet(lbl_1_data_2A, 0.0f, 0.0f, 0.0f); - BoardModelMotionStart(lbl_1_data_2A, 0, 0x40000001); - lbl_1_data_2C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 17), lbl_1_data_54, 0); - BoardModelPosSet(lbl_1_data_2C, 0.0f, 0.0f, 0.0f); - BoardModelMotionStart(lbl_1_data_2C, 1, 0x40000001); - lbl_1_data_2E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 5), lbl_1_data_5C, 0); - BoardModelMotionStart(lbl_1_data_2E, 1, 0x40000001); - lbl_1_data_32 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 18), lbl_1_data_64, 0); - BoardModelMotionStart(lbl_1_data_32, 1, 0x40000001); - lbl_1_data_30 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 13), lbl_1_data_6C, 0); - BoardModelMotionStart(lbl_1_data_30, 1, 0x40000001); - BoardLightHookSet(&fn_1_8C0, &fn_1_904); + space = BoardSpaceFlagSearch(0, 1); + BoardTutorialBlockSetPos(space, 1); + bgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 1), NULL, 0); + fn_8006DDE8(bgMdl, -1.0f); + BoardModelPosSet(bgMdl, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(bgMdl, 0, 0x40000001); + BoardModelMotionSpeedSet(bgMdl, 1.0f); + fgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 2), NULL, 0); + fn_8006DDE8(fgMdl, -1.0f); + BoardModelPosSet(fgMdl, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(fgMdl, 0, 0x40000001); + boardStarHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 17), starHostMot, 0); + BoardModelPosSet(boardStarHostMdl, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(boardStarHostMdl, 1, 0x40000001); + boardShopHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 5), shopHostMot, 0); + BoardModelMotionStart(boardShopHostMdl, 1, 0x40000001); + boardBooHouseHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 18), lotteryHostMot, 0); + BoardModelMotionStart(boardBooHouseHostMdl, 1, 0x40000001); + boardLotteryHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 13), booHouseHostMot, 0); + BoardModelMotionStart(boardLotteryHostMdl, 1, 0x40000001); + BoardLightHookSet(LightSetHook, LightResetHook); for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) { temp_r30 = &lbl_1_data_0[i]; if (temp_r30->unk24 != -1) { @@ -124,24 +125,25 @@ void BoardCreate(void) { } } BoardModelVisibilitySet(lbl_1_bss_10[0], 0); - lbl_1_bss_0->unk8 = BoardModelCreate(0x7000A, NULL, 0); - BoardModelVisibilitySet(lbl_1_bss_0->unk8, 0); - BoardSpaceWalkEventFuncSet((void*)&fn_1_90C); - BoardSpaceWalkMiniEventFuncSet((void*)&fn_1_91C); - BoardSpaceLandEventFuncSet((void*)&fn_1_908); - BoardStarHostSet(lbl_1_data_2C); - BoardBooHouseHostSet(lbl_1_data_32); - BoardShopHostSet(lbl_1_data_2E); - BoardLotteryHostSet(lbl_1_data_30); - HuWinMesMaxSizeGet(1, spC, 0x2E003A); - lbl_1_bss_E = HuWinCreate(-10000.0f, 390.0f, spC[0], spC[1], 1); - HuWinMesSet(lbl_1_bss_E, 0x2E003A); - HuWinMesSpeedSet(lbl_1_bss_E, 0); - HuWinPriSet(lbl_1_bss_E, 1); - HuWinMesPalSet(lbl_1_bss_E, 7, 0, 0, 0); + boardWork->focus_mdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 0); + BoardModelVisibilitySet(boardWork->focus_mdl, 0); + BoardSpaceWalkEventFuncSet(WalkEvent); + BoardSpaceWalkMiniEventFuncSet(WalkMiniEvent); + BoardSpaceLandEventFuncSet(LandEvent); + BoardStarHostSet(boardStarHostMdl); + BoardBooHouseHostSet(boardBooHouseHostMdl); + BoardShopHostSet(boardShopHostMdl); + BoardLotteryHostSet(boardLotteryHostMdl); + HuWinMesMaxSizeGet(1, size, 0x2E003A); + w10ExitWin = HuWinCreate(-10000.0f, 390.0f, size[0], size[1], 1); + HuWinMesSet(w10ExitWin, 0x2E003A); + HuWinMesSpeedSet(w10ExitWin, 0); + HuWinPriSet(w10ExitWin, 1); + HuWinMesPalSet(w10ExitWin, 7, 0, 0, 0); } -void BoardDestroy(void) { +void BoardDestroy(void) +{ s32 i; for (i = 0; i < 1; i++) { if (lbl_1_bss_10[i] != 0) { @@ -149,58 +151,70 @@ void BoardDestroy(void) { lbl_1_bss_10[i] = 0; } } - if (lbl_1_data_32 != -1) { - BoardModelKill(lbl_1_data_32); - lbl_1_data_32 = -1; + if (boardBooHouseHostMdl != -1) { + BoardModelKill(boardBooHouseHostMdl); + boardBooHouseHostMdl = -1; } - if (lbl_1_data_2E != -1) { - BoardModelKill(lbl_1_data_2E); - lbl_1_data_2E = -1; + if (boardShopHostMdl != -1) { + BoardModelKill(boardShopHostMdl); + boardShopHostMdl = -1; } - if (lbl_1_data_30 != -1) { - BoardModelKill(lbl_1_data_30); - lbl_1_data_30 = -1; + if (boardLotteryHostMdl != -1) { + BoardModelKill(boardLotteryHostMdl); + boardLotteryHostMdl = -1; } - if (lbl_1_data_2C != -1) { - BoardModelKill(lbl_1_data_2C); - lbl_1_data_2C = -1; + if (boardStarHostMdl != -1) { + BoardModelKill(boardStarHostMdl); + boardStarHostMdl = -1; } - if (lbl_1_data_28 != -1) { - BoardModelKill(lbl_1_data_28); - lbl_1_data_28 = -1; + if (bgMdl != -1) { + BoardModelKill(bgMdl); + bgMdl = -1; } - if (lbl_1_data_2A != -1) { - BoardModelKill(lbl_1_data_2A); - lbl_1_data_2A = -1; + if (fgMdl != -1) { + BoardModelKill(fgMdl); + fgMdl = -1; } - BoardModelKill(lbl_1_bss_0->unk8); - fn_1_1DEC(); - HuWinKill(lbl_1_bss_E); + BoardModelKill(boardWork->focus_mdl); + TutorialSprKill(); + HuWinKill(w10ExitWin); BoardSpaceDestroy(); } -void fn_1_8C0(void) { - s16 temp = BoardModelIDGet(lbl_1_data_28); - Hu3DModelLightInfoSet(temp, 1); +static void LightSetHook(void) +{ + s16 id = BoardModelIDGet(bgMdl); + Hu3DModelLightInfoSet(id, 1); } -void fn_1_904(void) { +static void LightResetHook(void) +{ + } -void fn_1_908(void) { +static s32 LandEvent(void) +{ + } -s32 fn_1_90C(void) { +static s32 WalkEvent(void) +{ return 0; } -void fn_1_914(void) { +void fn_1_914(void) +{ + } -void fn_1_918(void) { +void fn_1_918(void) +{ + } -void fn_1_91C(void) { +static s32 WalkMiniEvent(void) +{ + } s32 fn_1_920(s16 arg0, f32 arg8, f32 arg9) { diff --git a/src/REL/w10Dll/scene.c b/src/REL/w10Dll/scene.c index 4a0ac9fd..567249e6 100644 --- a/src/REL/w10Dll/scene.c +++ b/src/REL/w10Dll/scene.c @@ -9,233 +9,233 @@ #include "game/board/tutorial.h" #include "game/board/ui.h" -void fn_1_D2C(void) { - fn_1_BA0(0x2E0001); +void TutorialStartExec(void) { + HostWinExec(0x2E0001); } -void fn_1_D54(void) { - fn_1_BA0(0x2E0002); +void TutorialPreRollExec(void) { + HostWinExec(0x2E0002); } -void fn_1_D7C(void) { - fn_1_BA0(0x2E0003); +void TutorialOrderExec(void) { + HostWinExec(0x2E0003); } -void fn_1_DA4(void) { - fn_1_BA0(0x2E0004); +void TutorialP1StartExec(void) { + HostWinExec(0x2E0004); } -void fn_1_DCC(void) { - fn_1_BA0(0x2E0005); +void TutorialP2StartExec(void) { + HostWinExec(0x2E0005); } -void fn_1_DF4(void) { - fn_1_BA0(0x2E0006); +void TutorialP3StartExec(void) { + HostWinExec(0x2E0006); } -void fn_1_E1C(void) { - fn_1_BA0(0x2E0007); +void TutorialP4StartExec(void) { + HostWinExec(0x2E0007); } -void fn_1_E44(void) { - fn_1_BA0(0x2E0008); - fn_1_BA0(0x2E0009); +void TutorialGameStartExec(void) { + HostWinExec(0x2E0008); + HostWinExec(0x2E0009); BoardSpaceStarSetIndex(0); - BoardModelVisibilitySet(lbl_1_data_2C, 1); + BoardModelVisibilitySet(boardStarHostMdl, 1); } -void fn_1_E94(void) { - fn_1_BA0(0x2E000A); +void TutorialRollExec(void) { + HostWinExec(0x2E000A); } -void fn_1_EBC(void) { - fn_1_BA0(0x2E000B); +void TutorialMoveExec(void) { + HostWinExec(0x2E000B); } -void fn_1_EE4(void) { +void TutorialLandExec(void) { } -void fn_1_EE8(void) { - fn_1_1E3C(0, 0x122, 0x8C); - fn_1_BA0(0x2E000C); - fn_1_BA0(0x2E000D); - fn_1_1FB0(); +void TutorialLandBlueExec(void) { + TutorialSpaceShow(0, 0x122, 0x8C); + HostWinExec(0x2E000C); + HostWinExec(0x2E000D); + TutorialSpaceHide(); } -void fn_1_F30(void) { - fn_1_1E3C(1, 0x122, 0x8C); - fn_1_BA0(0x2E000E); - fn_1_1FB0(); +void TutorialLandRedExec(void) { + TutorialSpaceShow(1, 0x122, 0x8C); + HostWinExec(0x2E000E); + TutorialSpaceHide(); } -void fn_1_F6C(void) { - fn_1_1E3C(2, 0x122, 0x8C); - fn_1_BA0(0x2E000F); - fn_1_1FB0(); +void TutorialLandHappenExec(void) { + TutorialSpaceShow(2, 0x122, 0x8C); + HostWinExec(0x2E000F); + TutorialSpaceHide(); BoardTutorialDirInputSet(0, 0x50, 1); } -void fn_1_FB8(void) { - fn_1_1E3C(3, 0x122, 0x8C); - fn_1_BA0(0x2E0010); - fn_1_1FB0(); - fn_1_BA0(0x2E0011); +void TutorialLandFortuneExec(void) { + TutorialSpaceShow(3, 0x122, 0x8C); + HostWinExec(0x2E0010); + TutorialSpaceHide(); + HostWinExec(0x2E0011); BoardTutorialDirInputSet(-0x50, 0, 1); } -void fn_1_1010(void) { - fn_1_1E3C(4, 0x122, 0x8C); - fn_1_BA0(0x2E0012); - fn_1_1FB0(); +void TutorialLandBowserExec(void) { + TutorialSpaceShow(4, 0x122, 0x8C); + HostWinExec(0x2E0012); + TutorialSpaceHide(); BoardTutorialDirInputSet(0, 0x50, 1); } -void fn_1_105C(void) { - fn_1_1E3C(5, 0x122, 0x8C); - fn_1_BA0(0x2E0013); - fn_1_1FB0(); +void TutorialLandMushroomExec(void) { + TutorialSpaceShow(5, 0x122, 0x8C); + HostWinExec(0x2E0013); + TutorialSpaceHide(); } -void fn_1_1098(void) { - fn_1_BA0(0x2E0014); +void TutorialMushroomMegaExec(void) { + HostWinExec(0x2E0014); } -void fn_1_10C0(void) { - fn_1_BA0(0x2E0015); +void TutorialMushroomMiniExec(void) { + HostWinExec(0x2E0015); BoardTutorialDirInputSet(-0x50, 0, 1); } -void fn_1_10F8(void) { - fn_1_1E3C(6, 0x122, 0x8C); - fn_1_BA0(0x2E0016); - fn_1_1FB0(); +void TutorialLandBattleExec(void) { + TutorialSpaceShow(6, 0x122, 0x8C); + HostWinExec(0x2E0016); + TutorialSpaceHide(); } -void fn_1_1134(void) { - fn_1_1E3C(7, 0x122, 0x8C); - fn_1_BA0(0x2E0017); - fn_1_1FB0(); +void TutorialLandWarpExec(void) { + TutorialSpaceShow(7, 0x122, 0x8C); + HostWinExec(0x2E0017); + TutorialSpaceHide(); BoardCharWheelTargetSet(1); } -void fn_1_1178(void) { - fn_1_BA0(0x2E0018); +void TutorialWarpDecideExec(void) { + HostWinExec(0x2E0018); } -void fn_1_11A0(void) { - s32 temp; +void TutorialBlockStarExec(void) { + s32 space; - fn_1_BA0(0x2E0019); - temp = BoardSpaceFlagSearch(0, 1); - BoardTutorialBlockSetPos(temp, 0); + HostWinExec(0x2E0019); + space = BoardSpaceFlagSearch(0, 1); + BoardTutorialBlockSetPos(space, 0); } -void fn_1_11EC(void) { - s32 temp; +void TutorialBlockCoinExec(void) { + s32 space; - fn_1_BA0(0x2E001A); - temp = BoardSpaceFlagSearch(0, 1); - BoardTutorialBlockSetPos(temp, 0); + HostWinExec(0x2E001A); + space = BoardSpaceFlagSearch(0, 1); + BoardTutorialBlockSetPos(space, 0); BoardTutorialItemSet(0); } -void fn_1_1240(void) { - fn_1_BA0(0x2E001B); +void TutorialMiniMegaExec(void) { + HostWinExec(0x2E001B); BoardTutorialDirInputSet(0x50, 0, 1); } -void fn_1_1278(void) { - fn_1_BA0(0x2E001C); +void TutorialMiniUseExec(void) { + HostWinExec(0x2E001C); } -void fn_1_12A0(void) { - fn_1_BA0(0x2E001D); +void TutorialMiniStopExec(void) { + HostWinExec(0x2E001D); BoardPlayerItemAdd(2, 1); BoardTutorialItemSet(1); } -void fn_1_12DC(void) { - fn_1_BA0(0x2E001E); +void TutorialMegaUseExec(void) { + HostWinExec(0x2E001E); } -void fn_1_1304(void) { - fn_1_BA0(0x2E001F); +void TutorialMegaDiceExec(void) { + HostWinExec(0x2E001F); } -void fn_1_132C(void) { - fn_1_BA0(0x2E0020); +void TutorialMegaStompExec(void) { + HostWinExec(0x2E0020); } -void fn_1_1354(void) { - fn_1_BA0(0x2E0021); +void TutorialMegaEventExec(void) { + HostWinExec(0x2E0021); } -void fn_1_137C(void) { - fn_1_BA0(0x2E0022); +void TutorialMegaStopExec(void) { + HostWinExec(0x2E0022); } -void fn_1_13A4(void) { +void TutorialEndExec(void) { s32 i; - Vec sp14; - Vec sp8; - s32 temp_r3_2; + Vec pos; + Vec offset; + s32 space; - fn_1_BA0(0x2E0023); + HostWinExec(0x2E0023); for (i = 0; i < 4; i++) { GWPlayer[i].color = 1; } BoardMGSetupTutorialExec(); BoardStatusShowSetAll(0); - fn_1_C10(0); - fn_1_BA0(0x2E002B); - sp8.x = -33.0f; - sp8.y = sp8.z = 0.0f; - temp_r3_2 = BoardSpaceFlagSearch(0, 0x80000); - BoardSpacePosGet(0, temp_r3_2, &sp14); - BoardModelPosSetV(lbl_1_bss_0->unk8, &sp14); - BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); + HostPosSet(0); + HostWinExec(0x2E002B); + offset.x = -33.0f; + offset.y = offset.z = 0.0f; + space = BoardSpaceFlagSearch(0, 0x80000); + BoardSpacePosGet(0, space, &pos); + BoardModelPosSetV(boardWork->focus_mdl, &pos); + BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionWait(); - fn_1_BA0(0x2E002C); - BoardShopTutorialExec(temp_r3_2); - BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); + HostWinExec(0x2E002C); + BoardShopTutorialExec(space); + BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionWait(); - temp_r3_2 = BoardSpaceFlagSearch(0, 0x10000000); - BoardSpacePosGet(0, temp_r3_2, &sp14); - BoardModelPosSetV(lbl_1_bss_0->unk8, &sp14); - BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); + space = BoardSpaceFlagSearch(0, 0x10000000); + BoardSpacePosGet(0, space, &pos); + BoardModelPosSetV(boardWork->focus_mdl, &pos); + BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionWait(); - fn_1_BA0(0x2E002E); + HostWinExec(0x2E002E); BoardLotteryTutorialExec(); - BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); + BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionWait(); - temp_r3_2 = BoardSpaceFlagSearch(0, 0x08000000); - BoardSpacePosGet(0, temp_r3_2, &sp14); - BoardModelPosSetV(lbl_1_bss_0->unk8, &sp14); - BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); + space = BoardSpaceFlagSearch(0, 0x08000000); + BoardSpacePosGet(0, space, &pos); + BoardModelPosSetV(boardWork->focus_mdl, &pos); + BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionWait(); - fn_1_BA0(0x2E0030); + HostWinExec(0x2E0030); BoardBooHouseTutorialExec(); - BoardCameraMotionStartEx(lbl_1_bss_0->unk8, &sp8, NULL, 3200.0f, -1.0f, 30); + BoardCameraMotionStartEx(boardWork->focus_mdl, &offset, NULL, 3200.0f, -1.0f, 30); BoardCameraMotionWait(); - fn_1_BA0(0x2E0032); + HostWinExec(0x2E0032); BoardCameraTargetModelSet(BoardStarHostMdlGet()); BoardCameraMotionWait(); - fn_1_BA0(0x2E0033); - fn_1_BA0(0x2E0034); - fn_1_1E3C(8, 0x122, 0x8C); - fn_1_BA0(0x2E0035); - fn_1_1FB0(); - fn_1_1E3C(9, 0x122, 0x8C); - fn_1_BA0(0x2E0036); - fn_1_1FB0(); - fn_1_1E3C(0xA, 0x122, 0x8C); - fn_1_BA0(0x2E0037); - fn_1_1FB0(); - fn_1_BA0(0x2E0038); - fn_1_BA0(0x2E0039); - if (lbl_1_bss_C == 0) { - lbl_1_bss_C = 1; + HostWinExec(0x2E0033); + HostWinExec(0x2E0034); + TutorialSpaceShow(8, 0x122, 0x8C); + HostWinExec(0x2E0035); + TutorialSpaceHide(); + TutorialSpaceShow(9, 0x122, 0x8C); + HostWinExec(0x2E0036); + TutorialSpaceHide(); + TutorialSpaceShow(0xA, 0x122, 0x8C); + HostWinExec(0x2E0037); + TutorialSpaceHide(); + HostWinExec(0x2E0038); + HostWinExec(0x2E0039); + if (tutorialDoneF == 0) { + tutorialDoneF = 1; BoardAudSeqFadeOut(0, 0x1F3); BoardKill(); } @@ -245,49 +245,49 @@ void fn_1_13A4(void) { } } -void fn_1_176C(void) { - fn_1_C10(1); - fn_1_BA0(0x2E0024); +void TutorialMGStatusExec(void) { + HostPosSet(1); + HostWinExec(0x2E0024); } -void fn_1_179C(void) { - fn_1_BA0(0x2E0025); +void TutorialMG4PExec(void) { + HostWinExec(0x2E0025); GWPlayer[1].color = 2; GWPlayer[3].color = 2; } -void fn_1_17F4(void) { - fn_1_BA0(0x2E0026); +void TutorialMG2Vs2Exec(void) { + HostWinExec(0x2E0026); GWPlayer[0].color = 2; } -void fn_1_1834(void) { - fn_1_BA0(0x2E0027); +void TutorialMG1Vs3Exec(void) { + HostWinExec(0x2E0027); GWPlayer[0].color = 1; GWPlayer[1].color = 1; GWPlayer[2].color = 1; GWPlayer[3].color = 2; } -void fn_1_18BC(void) { - fn_1_BA0(0x2E0028); - fn_1_BA0(0x2E0029); +void TutorialMG1Vs3AltExec(void) { + HostWinExec(0x2E0028); + HostWinExec(0x2E0029); boardTutorialData[0] = 0; BoardStatusItemSet(0); } -void fn_1_1908(void) { - fn_1_BA0(0x2E002D); +void TutorialShopExec(void) { + HostWinExec(0x2E002D); } -void fn_1_1930(void) { - fn_1_BA0(0x2E002F); +void TutorialLotteryExec(void) { + HostWinExec(0x2E002F); } -void fn_1_1958(void) { - fn_1_BA0(0x2E0031); +void TutorialBooHouseExec(void) { + HostWinExec(0x2E0031); } -void fn_1_1980(void) { +void TutorialNullExec(void) { } \ No newline at end of file diff --git a/src/REL/w10Dll/tutorial.c b/src/REL/w10Dll/tutorial.c index 6da586f4..d9415273 100644 --- a/src/REL/w10Dll/tutorial.c +++ b/src/REL/w10Dll/tutorial.c @@ -5,20 +5,23 @@ #include "game/wipe.h" #include "game/board/ui.h" -void fn_1_1984(void) { +static s16 sprList[11]; +static s16 sprCurr; + +void CloseTutorial(void) { s32 port; s32 i; - if (lbl_1_bss_C == 0) { + if (tutorialDoneF == 0) { if (WipeStatGet() != 0) { - HuWinDispOff(lbl_1_bss_E); + HuWinDispOff(w10ExitWin); return; } - HuWinDispOn(lbl_1_bss_E); + HuWinDispOn(w10ExitWin); if (BoardIsKill() != 0) { return; } - for (i = 0; i < ARRAY_COUNT(GWPlayer); i++) { + for (i = 0; i < 4; i++) { port = GWPlayer[i].port; if (port == -1) { continue; @@ -28,7 +31,7 @@ void fn_1_1984(void) { } } if (i != 4) { - lbl_1_bss_C = 1; + tutorialDoneF = 1; OSReport("@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n"); BoardAudSeqFadeOut(0, 0x1F3); BoardKill(); @@ -37,7 +40,7 @@ void fn_1_1984(void) { } } -s16 lbl_1_data_C6[11][3] = { +static s16 rollDataTbl[11][3] = { 1, -1, -1, 2, -1, -1, 4, -1, -1, @@ -51,74 +54,74 @@ s16 lbl_1_data_C6[11][3] = { 5, 6, -1, }; -w10DllUnk04 lbl_1_data_108[42] = { - {0x0000, 0000, fn_1_D2C}, - {0x0001, 0000, fn_1_D54}, - {0x0002, 0000, fn_1_D7C}, - {0x0003, 0000, fn_1_DA4}, - {0x0003, 0000, fn_1_DCC}, - {0x0003, 0000, fn_1_DF4}, - {0x0003, 0000, fn_1_E1C}, - {0x0004, 0000, fn_1_E44}, - {0x0005, 0000, fn_1_E94}, - {0x0006, 0000, fn_1_EBC}, - {0x0007, 0000, fn_1_EE4}, - {0x000A, 0000, fn_1_EE8}, - {0x000B, 0000, fn_1_F30}, - {0x0010, 0000, fn_1_F6C}, - {0x0011, 0000, fn_1_FB8}, - {0x000C, 0000, fn_1_1010}, - {0x000D, 0000, fn_1_105C}, - {0x000E, 0000, fn_1_1098}, - {0x000E, 0000, fn_1_10C0}, - {0x000F, 0000, fn_1_10F8}, - {0x0012, 0000, fn_1_1134}, - {0x0014, 0000, fn_1_1178}, - {0x0015, 0000, fn_1_11A0}, - {0x0016, 0000, fn_1_11EC}, - {0x0005, 0000, fn_1_1240}, - {0x0017, 0000, fn_1_1278}, - {0x0007, 0000, fn_1_12A0}, - {0x0005, 0000, fn_1_12DC}, - {0x0017, 0000, fn_1_1304}, - {0x0018, 0000, fn_1_132C}, - {0x0019, 0000, fn_1_1354}, - {0x0008, 0000, fn_1_137C}, - {0x0009, 0000, fn_1_13A4}, - {0x001A, 0000, fn_1_176C}, - {0x001B, 0000, fn_1_179C}, - {0x001B, 0000, fn_1_17F4}, - {0x001B, 0000, fn_1_1834}, - {0x001B, 0000, fn_1_18BC}, - {0x001C, 0000, fn_1_1908}, - {0x001C, 0000, fn_1_1930}, - {0x001C, 0000, fn_1_1958}, - {-1, 0, 0}, +static TutorialScene sceneTbl[42] = { + {0, TutorialStartExec}, + {1, TutorialPreRollExec}, + {2, TutorialOrderExec}, + {3, TutorialP1StartExec}, + {3, TutorialP2StartExec}, + {3, TutorialP3StartExec}, + {3, TutorialP4StartExec}, + {4, TutorialGameStartExec}, + {5, TutorialRollExec}, + {6, TutorialMoveExec}, + {7, TutorialLandExec}, + {10, TutorialLandBlueExec}, + {11, TutorialLandRedExec}, + {16, TutorialLandHappenExec}, + {17, TutorialLandFortuneExec}, + {12, TutorialLandBowserExec}, + {13, TutorialLandMushroomExec}, + {14, TutorialMushroomMegaExec}, + {14, TutorialMushroomMiniExec}, + {15, TutorialLandBattleExec}, + {18, TutorialLandWarpExec}, + {20, TutorialWarpDecideExec}, + {21, TutorialBlockStarExec}, + {22, TutorialBlockCoinExec}, + {5, TutorialMiniMegaExec}, + {23, TutorialMiniUseExec}, + {7, TutorialMiniStopExec}, + {5, TutorialMegaUseExec}, + {23, TutorialMegaDiceExec}, + {24, TutorialMegaStompExec}, + {25, TutorialMegaEventExec}, + {8, TutorialMegaStopExec}, + {9, TutorialEndExec}, + {26, TutorialMGStatusExec}, + {27, TutorialMG4PExec}, + {27, TutorialMG2Vs2Exec}, + {27, TutorialMG1Vs3Exec}, + {27, TutorialMG1Vs3AltExec}, + {28, TutorialShopExec}, + {28, TutorialLotteryExec}, + {28, TutorialBooHouseExec}, + {-1, NULL }, }; -int fn_1_1AAC(s16 arg0, s32 arg1) { - if (arg0 == 0x1E) { - fn_1_1984(); +int TutorialExec(s16 arg0, s32 arg1) { + if (arg0 == 30) { + CloseTutorial(); return; } - if (arg0 != 0x1D) { + if (arg0 != 29) { OSReport("Tutorial Hook P0:%d P1:%d P2:%d P3:%d SCEN:%d CUE:%d PRM:%d DICE:%d MSG:%d\n", GWPlayer[0].com, GWPlayer[1].com, GWPlayer[2].com, GWPlayer[3].com, - lbl_1_bss_0->unk0, arg0, arg1, lbl_1_bss_0->unk4, lbl_1_bss_0->unk6); - if (lbl_1_data_108[lbl_1_bss_0->unk0].unk0 != -1) { + boardWork->scene, arg0, arg1, boardWork->dice, boardWork->msg); + if (sceneTbl[boardWork->scene].cue != -1) { if (arg0 == 5) { - BoardRollTutorialSet(&lbl_1_data_C6[lbl_1_bss_0->unk4++][0]); + BoardRollTutorialSet(&rollDataTbl[boardWork->dice++][0]); } - if (arg0 == lbl_1_data_108[lbl_1_bss_0->unk0].unk0) { - void (*temp_r3_3)() = lbl_1_data_108[lbl_1_bss_0->unk0++].unk4; - temp_r3_3(); + if (arg0 == sceneTbl[boardWork->scene].cue) { + TutorialSceneFunc func = sceneTbl[boardWork->scene++].func; + func(); } } } } -s32 lbl_1_data_2A8[11] = { +static s32 tutorialSprTbl[11] = { DATA_MAKE_NUM(DATADIR_W10, 4), DATA_MAKE_NUM(DATADIR_W10, 5), DATA_MAKE_NUM(DATADIR_W10, 6), @@ -132,45 +135,43 @@ s32 lbl_1_data_2A8[11] = { DATA_MAKE_NUM(DATADIR_W10, 14) }; -void fn_1_1D68(void) { - s32 temp_r4; - s32 temp_r5; +void TutorialSprCreate(void) { s32 i; for (i = 0; i < 11; i++) { - lbl_1_bss_22[i] = espEntry(lbl_1_data_2A8[i], 0, 0); - espDispOff(lbl_1_bss_22[i]); + sprList[i] = espEntry(tutorialSprTbl[i], 0, 0); + espDispOff(sprList[i]); } } -void fn_1_1DEC(void) { +void TutorialSprKill(void) { s32 i; for (i = 0; i < 11; i++) { - espKill(lbl_1_bss_22[i]); + espKill(sprList[i]); } } -void fn_1_1E3C(s16 arg0, s16 arg1, s16 arg2) { +void TutorialSpaceShow(s16 arg0, s16 arg1, s16 arg2) { f32 var_f31; f32 var_f30; u32 i; - lbl_1_bss_20 = lbl_1_bss_22[arg0]; - espPosSet(lbl_1_bss_20, arg1, arg2); + sprCurr = sprList[arg0]; + espPosSet(sprCurr, arg1, arg2); var_f31 = 0.0f; var_f30 = 0.0f; - espDispOn(lbl_1_bss_20); + espDispOn(sprCurr); for (i = 0; i < 15; i++) { var_f31 += 0.06666667f; var_f30 += 0.06666667f; - espScaleSet(lbl_1_bss_20, var_f31, var_f30); + espScaleSet(sprCurr, var_f31, var_f30); HuPrcVSleep(); } - espScaleSet(lbl_1_bss_20, 1.0f, 1.0f); + espScaleSet(sprCurr, 1.0f, 1.0f); } -void fn_1_1FB0(void) { +void TutorialSpaceHide(void) { f32 var_f31; f32 var_f30; u32 i; @@ -180,8 +181,8 @@ void fn_1_1FB0(void) { for (i = 0; i < 15; i++) { var_f31 -= 0.06666667f; var_f30 -= 0.06666667f; - espScaleSet(lbl_1_bss_20, var_f31, var_f30); + espScaleSet(sprCurr, var_f31, var_f30); HuPrcVSleep(); } - espDispOff(lbl_1_bss_20); + espDispOff(sprCurr); } \ No newline at end of file