Merge pull request #218 from gamemasterplc/main

Label rules board code
This commit is contained in:
gamemasterplc 2024-03-14 19:07:38 -05:00 committed by GitHub
commit c789b59575
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 535 additions and 538 deletions

View file

@ -14,12 +14,13 @@ REL/w10Dll/main.c:
.text start:0x000000E0 end:0x00000AEC .text start:0x000000E0 end:0x00000AEC
.rodata start:0x00000010 end:0x00000038 .rodata start:0x00000010 end:0x00000038
.data start:0x00000000 end:0x00000078 .data start:0x00000000 end:0x00000078
.bss start:0x00000000 end:0x00000038 .bss start:0x00000000 end:0x00000018
REL/w10Dll/host.c: REL/w10Dll/host.c:
.text start:0x00000AEC end:0x00000D2C .text start:0x00000AEC end:0x00000D2C
.rodata start:0x00000038 end:0x00000048 .rodata start:0x00000038 end:0x00000048
.data start:0x00000078 end:0x00000098 .data start:0x00000078 end:0x00000098
.bss start:0x00000018 end:0x00000020
REL/w10Dll/scene.c: REL/w10Dll/scene.c:
.text start:0x00000D2C end:0x00001984 .text start:0x00000D2C end:0x00001984
@ -29,3 +30,4 @@ REL/w10Dll/tutorial.c:
.text start:0x00001984 end:0x0000206C .text start:0x00001984 end:0x0000206C
.rodata start:0x00000058 end:0x00000070 .rodata start:0x00000058 end:0x00000070
.data start:0x00000098 end:0x000002D4 .data start:0x00000098 end:0x000002D4
.bss start:0x00000020 end:0x00000038

View file

@ -3,66 +3,66 @@ _prolog = .text:0x00000030; // type:function size:0x64 scope:global
_epilog = .text:0x00000094; // type:function size:0x4C scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global
BoardCreate = .text:0x000000E0; // type:function size:0x5F8 BoardCreate = .text:0x000000E0; // type:function size:0x5F8
BoardDestroy = .text:0x000006D8; // type:function size:0x1E8 BoardDestroy = .text:0x000006D8; // type:function size:0x1E8
fn_1_8C0 = .text:0x000008C0; // type:function size:0x44 LightSetHook = .text:0x000008C0; // type:function size:0x44 scope:local
fn_1_904 = .text:0x00000904; // type:function size:0x4 LightResetHook = .text:0x00000904; // type:function size:0x4 scope:local
fn_1_908 = .text:0x00000908; // type:function size:0x4 LandEvent = .text:0x00000908; // type:function size:0x4 scope:local
fn_1_90C = .text:0x0000090C; // type:function size:0x8 WalkEvent = .text:0x0000090C; // type:function size:0x8 scope:local
fn_1_914 = .text:0x00000914; // type:function size:0x4 fn_1_914 = .text:0x00000914; // type:function size:0x4
fn_1_918 = .text:0x00000918; // 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_920 = .text:0x00000920; // type:function size:0x1CC
fn_1_AEC = .text:0x00000AEC; // type:function size:0xB4 HostCreate = .text:0x00000AEC; // type:function size:0xB4
fn_1_BA0 = .text:0x00000BA0; // type:function size:0x70 HostWinExec = .text:0x00000BA0; // type:function size:0x70
fn_1_C10 = .text:0x00000C10; // type:function size:0x10 HostPosSet = .text:0x00000C10; // type:function size:0x10
fn_1_C20 = .text:0x00000C20; // type:function size:0x10C UpdateHost = .text:0x00000C20; // type:function size:0x10C scope:local
fn_1_D2C = .text:0x00000D2C; // type:function size:0x28 TutorialStartExec = .text:0x00000D2C; // type:function size:0x28
fn_1_D54 = .text:0x00000D54; // type:function size:0x28 TutorialPreRollExec = .text:0x00000D54; // type:function size:0x28
fn_1_D7C = .text:0x00000D7C; // type:function size:0x28 TutorialOrderExec = .text:0x00000D7C; // type:function size:0x28
fn_1_DA4 = .text:0x00000DA4; // type:function size:0x28 TutorialP1StartExec = .text:0x00000DA4; // type:function size:0x28
fn_1_DCC = .text:0x00000DCC; // type:function size:0x28 TutorialP2StartExec = .text:0x00000DCC; // type:function size:0x28
fn_1_DF4 = .text:0x00000DF4; // type:function size:0x28 TutorialP3StartExec = .text:0x00000DF4; // type:function size:0x28
fn_1_E1C = .text:0x00000E1C; // type:function size:0x28 TutorialP4StartExec = .text:0x00000E1C; // type:function size:0x28
fn_1_E44 = .text:0x00000E44; // type:function size:0x50 TutorialGameStartExec = .text:0x00000E44; // type:function size:0x50
fn_1_E94 = .text:0x00000E94; // type:function size:0x28 TutorialRollExec = .text:0x00000E94; // type:function size:0x28
fn_1_EBC = .text:0x00000EBC; // type:function size:0x28 TutorialMoveExec = .text:0x00000EBC; // type:function size:0x28
fn_1_EE4 = .text:0x00000EE4; // type:function size:0x4 TutorialLandExec = .text:0x00000EE4; // type:function size:0x4
fn_1_EE8 = .text:0x00000EE8; // type:function size:0x48 TutorialLandBlueExec = .text:0x00000EE8; // type:function size:0x48
fn_1_F30 = .text:0x00000F30; // type:function size:0x3C TutorialLandRedExec = .text:0x00000F30; // type:function size:0x3C
fn_1_F6C = .text:0x00000F6C; // type:function size:0x4C TutorialLandHappenExec = .text:0x00000F6C; // type:function size:0x4C
fn_1_FB8 = .text:0x00000FB8; // type:function size:0x58 TutorialLandFortuneExec = .text:0x00000FB8; // type:function size:0x58
fn_1_1010 = .text:0x00001010; // type:function size:0x4C TutorialLandBowserExec = .text:0x00001010; // type:function size:0x4C
fn_1_105C = .text:0x0000105C; // type:function size:0x3C TutorialLandMushroomExec = .text:0x0000105C; // type:function size:0x3C
fn_1_1098 = .text:0x00001098; // type:function size:0x28 TutorialMushroomMegaExec = .text:0x00001098; // type:function size:0x28
fn_1_10C0 = .text:0x000010C0; // type:function size:0x38 TutorialMushroomMiniExec = .text:0x000010C0; // type:function size:0x38
fn_1_10F8 = .text:0x000010F8; // type:function size:0x3C TutorialLandBattleExec = .text:0x000010F8; // type:function size:0x3C
fn_1_1134 = .text:0x00001134; // type:function size:0x44 TutorialLandWarpExec = .text:0x00001134; // type:function size:0x44
fn_1_1178 = .text:0x00001178; // type:function size:0x28 TutorialWarpDecideExec = .text:0x00001178; // type:function size:0x28
fn_1_11A0 = .text:0x000011A0; // type:function size:0x4C TutorialBlockStarExec = .text:0x000011A0; // type:function size:0x4C
fn_1_11EC = .text:0x000011EC; // type:function size:0x54 TutorialBlockCoinExec = .text:0x000011EC; // type:function size:0x54
fn_1_1240 = .text:0x00001240; // type:function size:0x38 TutorialMiniMegaExec = .text:0x00001240; // type:function size:0x38
fn_1_1278 = .text:0x00001278; // type:function size:0x28 TutorialMiniUseExec = .text:0x00001278; // type:function size:0x28
fn_1_12A0 = .text:0x000012A0; // type:function size:0x3C TutorialMiniStopExec = .text:0x000012A0; // type:function size:0x3C
fn_1_12DC = .text:0x000012DC; // type:function size:0x28 TutorialMegaUseExec = .text:0x000012DC; // type:function size:0x28
fn_1_1304 = .text:0x00001304; // type:function size:0x28 TutorialMegaDiceExec = .text:0x00001304; // type:function size:0x28
fn_1_132C = .text:0x0000132C; // type:function size:0x28 TutorialMegaStompExec = .text:0x0000132C; // type:function size:0x28
fn_1_1354 = .text:0x00001354; // type:function size:0x28 TutorialMegaEventExec = .text:0x00001354; // type:function size:0x28
fn_1_137C = .text:0x0000137C; // type:function size:0x28 TutorialMegaStopExec = .text:0x0000137C; // type:function size:0x28
fn_1_13A4 = .text:0x000013A4; // type:function size:0x3C8 TutorialEndExec = .text:0x000013A4; // type:function size:0x3C8
fn_1_176C = .text:0x0000176C; // type:function size:0x30 TutorialMGStatusExec = .text:0x0000176C; // type:function size:0x30
fn_1_179C = .text:0x0000179C; // type:function size:0x58 TutorialMG4PExec = .text:0x0000179C; // type:function size:0x58
fn_1_17F4 = .text:0x000017F4; // type:function size:0x40 TutorialMG2Vs2Exec = .text:0x000017F4; // type:function size:0x40
fn_1_1834 = .text:0x00001834; // type:function size:0x88 TutorialMG1Vs3Exec = .text:0x00001834; // type:function size:0x88
fn_1_18BC = .text:0x000018BC; // type:function size:0x4C TutorialMG1Vs3AltExec = .text:0x000018BC; // type:function size:0x4C
fn_1_1908 = .text:0x00001908; // type:function size:0x28 TutorialShopExec = .text:0x00001908; // type:function size:0x28
fn_1_1930 = .text:0x00001930; // type:function size:0x28 TutorialLotteryExec = .text:0x00001930; // type:function size:0x28
fn_1_1958 = .text:0x00001958; // type:function size:0x28 TutorialBooHouseExec = .text:0x00001958; // type:function size:0x28
fn_1_1980 = .text:0x00001980; // type:function size:0x4 TutorialNullExec = .text:0x00001980; // type:function size:0x4
fn_1_1984 = .text:0x00001984; // type:function size:0x128 CloseTutorial = .text:0x00001984; // type:function size:0x128 scope:local
fn_1_1AAC = .text:0x00001AAC; // type:function size:0x2BC TutorialHookExec = .text:0x00001AAC; // type:function size:0x2BC
fn_1_1D68 = .text:0x00001D68; // type:function size:0x84 TutorialSprCreate = .text:0x00001D68; // type:function size:0x84
fn_1_1DEC = .text:0x00001DEC; // type:function size:0x50 TutorialSprKill = .text:0x00001DEC; // type:function size:0x50
fn_1_1E3C = .text:0x00001E3C; // type:function size:0x174 TutorialSpaceShow = .text:0x00001E3C; // type:function size:0x174
fn_1_1FB0 = .text:0x00001FB0; // type:function size:0xBC TutorialSpaceHide = .text:0x00001FB0; // type:function size:0xBC
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte _ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors: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 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_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_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_0 = .data:0x00000000; // type:object size:0x28 data:float
lbl_1_data_28 = .data:0x00000028; // type:object size:0x2 data:2byte bgMdl = .data:0x00000028; // type:object size:0x2 scope:local data:2byte
lbl_1_data_2A = .data:0x0000002A; // type:object size:0x2 data:2byte fgMdl = .data:0x0000002A; // type:object size:0x2 scope:local data:2byte
lbl_1_data_2C = .data:0x0000002C; // type:object size:0x2 data:2byte boardStarHostMdl = .data:0x0000002C; // type:object size:0x2 data:2byte
lbl_1_data_2E = .data:0x0000002E; // type:object size:0x2 data:2byte boardShopHostMdl = .data:0x0000002E; // type:object size:0x2 data:2byte
lbl_1_data_30 = .data:0x00000030; // type:object size:0x2 data:2byte boardLotteryHostMdl = .data:0x00000030; // type:object size:0x2 data:2byte
lbl_1_data_32 = .data:0x00000032; // type:object size:0x22 data:2byte boardBooHouseHostMdl = .data:0x00000032; // type:object size:0x2 data:2byte
lbl_1_data_54 = .data:0x00000054; // type:object size:0x8 lbl_1_data_34 = .data:0x00000034; // type:object size:0x20 data:4byte
lbl_1_data_5C = .data:0x0000005C; // type:object size:0x8 starHostMot = .data:0x00000054; // type:object size:0x8 scope:local
lbl_1_data_64 = .data:0x00000064; // type:object size:0x8 shopHostMot = .data:0x0000005C; // type:object size:0x8 scope:local
lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC lotteryHostMot = .data:0x00000064; // type:object size:0x8 scope:local
lbl_1_data_78 = .data:0x00000078; // type:object size:0x8 booHouseHostMot = .data:0x0000006C; // type:object size:0x8 scope:local
lbl_1_data_80 = .data:0x00000080; // type:object size:0x18 data:float hostMot = .data:0x00000078; // type:object size:0x8 scope:local
lbl_1_data_98 = .data:0x00000098; // type:object size:0x2E data:string hostPosTbl = .data:0x00000080; // type:object size:0x18 scope:local data:float
lbl_1_data_C6 = .data:0x000000C6; // type:object size:0x42 lbl_1_data_98 = .data:0x00000098; // type:object size:0x2E scope:local data:string
lbl_1_data_108 = .data:0x00000108; // type:object size:0x150 rollDataTbl = .data:0x000000C6; // type:object size:0x42 scope:local
lbl_1_data_258 = .data:0x00000258; // type:object size:0x50 data:string sceneTbl = .data:0x00000108; // type:object size:0x150 scope:local
lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x2C lbl_1_data_258 = .data:0x00000258; // type:object size:0x50 scope:local data:string
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte 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_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
lbl_1_bss_8 = .bss:0x00000008; // 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 tutorialDoneF = .bss:0x0000000C; // type:object size:0x2 data:2byte
lbl_1_bss_E = .bss:0x0000000E; // 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_10 = .bss:0x00000010; // type:object size:0x8 data:2byte
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte hostProc = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x2 data:2byte hostPos = .bss:0x0000001C; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_1E = .bss:0x0000001E; // type:object size:0x2 data:2byte hostMdl = .bss:0x0000001E; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x2 data:2byte sprCurr = .bss:0x00000020; // type:object size:0x2 scope:local data:2byte
lbl_1_bss_22 = .bss:0x00000022; // type:object size:0x16 sprList = .bss:0x00000022; // type:object size:0x16 scope:local

View file

@ -8,12 +8,12 @@
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) #define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
typedef struct w10_state { typedef struct w10_board_work {
/* 0x00 */ s32 unk0; /* 0x00 */ s32 scene;
/* 0x04 */ u16 unk4; /* 0x04 */ u16 dice;
/* 0x06 */ u16 unk6; /* 0x06 */ u16 msg;
/* 0x08 */ s16 unk8; /* 0x08 */ s16 focus_mdl;
} W10State; } W10BoardWork;
typedef struct unkw10Dll { typedef struct unkw10Dll {
Vec unk0; Vec unk0;
@ -22,104 +22,76 @@ typedef struct unkw10Dll {
s32 unk24; s32 unk24;
} unkw10Dll; //sizeof 0x28 } unkw10Dll; //sizeof 0x28
typedef struct w10DllUnk01 { typedef void (*TutorialSceneFunc)(void);
u8 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
f32 unk10;
} w10DllUnk01; //sizeof ?
typedef struct w10DllUnk04 { typedef struct tutorial_scene {
s16 unk0; s16 cue;
s16 unk2; TutorialSceneFunc func;
void (*unk4)(); } TutorialScene;
} w10DllUnk04;
extern s16 lbl_1_bss_20;
extern s16 lbl_1_bss_22[];
extern s16 lbl_1_bss_20;
extern s32 boardTutorialData[4]; extern s32 boardTutorialData[4];
void fn_1_C10(s16); void HostPosSet(s16);
void fn_1_1FB0(void); void fn_1_1FB0(void);
void fn_1_1E3C(s16, s16, s16); void fn_1_1E3C(s16, s16, s16);
void fn_1_BA0(s32); void HostWinExec(s32);
void fn_1_C20(void);
void fn_1_6D8(void); void fn_1_6D8(void);
void fn_1_E0(void); void fn_1_E0(void);
void fn_1_1D68(void); void TutorialSprCreate(void);
void fn_1_1DEC(void); void TutorialSprKill(void);
void fn_1_AEC(void); void HostCreate(void);
int fn_1_1AAC(s16, s32); int TutorialHookExec(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);
extern w10DllUnk04 lbl_1_data_108[42]; void TutorialStartExec(void);
extern Vec lbl_1_data_80[]; void TutorialPreRollExec(void);
extern Process* lbl_1_bss_18; void TutorialOrderExec(void);
extern s16 lbl_1_bss_1C; void TutorialP1StartExec(void);
extern s16 lbl_1_bss_1E; void TutorialP2StartExec(void);
extern s32 lbl_1_data_78[2]; void TutorialP3StartExec(void);
extern W10State* lbl_1_bss_0; void TutorialP4StartExec(void);
extern s16 lbl_1_bss_10[4]; //could be incorrect size 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 void* lbl_1_bss_8; //unknown type
extern s16 lbl_1_bss_C; extern s16 tutorialDoneF;
extern s16 lbl_1_bss_E; extern s16 w10ExitWin;
extern unkw10Dll lbl_1_data_0[1]; extern unkw10Dll lbl_1_data_0[1];
extern s16 lbl_1_bss_22[11];
extern s32 lbl_1_data_2A8[11]; extern s16 boardStarHostMdl;
extern s16 lbl_1_data_28; extern s16 boardShopHostMdl;
extern s16 lbl_1_data_2A; extern s16 boardLotteryHostMdl;
extern s16 lbl_1_data_2C; extern s16 boardBooHouseHostMdl;
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];

View file

@ -4,63 +4,70 @@
#include "game/board/tutorial.h" #include "game/board/tutorial.h"
#include "game/board/window.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), DATA_MAKE_NUM(DATADIR_W10, 16),
-1 -1
}; };
Vec lbl_1_data_80[2] = { static Vec hostPosTbl[2] = {
{70.0f, 355.0f, 200.f}, {70.0f, 355.0f, 200.f},
{70.0f, 175.0f, 200.f}, {70.0f, 175.0f, 200.f},
}; };
void fn_1_AEC(void) { static void UpdateHost(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); void HostCreate(void) {
BoardTutorialHostSet(lbl_1_bss_1E); hostPos = 0;
BoardModelLayerSet(lbl_1_bss_1E, 6); hostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 15), hostMot, 0);
lbl_1_bss_18 = HuPrcCreate(fn_1_C20, 0x1FFF, 0x1800, 0); BoardModelMotionStart(hostMdl, 1, 0x40000001);
BoardTutorialHostSet(hostMdl);
BoardModelLayerSet(hostMdl, 6);
hostProc = HuPrcCreate(UpdateHost, 0x1FFF, 0x1800, 0);
} }
void fn_1_BA0(s32 arg0) { void HostWinExec(s32 arg0) {
s16 var_r31; s16 pos;
switch (lbl_1_bss_1C) { switch (hostPos) {
case 0: case 0:
var_r31 = 5; pos = 5;
break; break;
case 1: case 1:
var_r31 = 6; pos = 6;
break; break;
} }
BoardWinCreate(var_r31, arg0, -1); BoardWinCreate(pos, arg0, -1);
BoardWinWait(); BoardWinWait();
BoardWinKill(); BoardWinKill();
} }
void fn_1_C10(s16 arg0) { void HostPosSet(s16 arg0) {
lbl_1_bss_1C = arg0; hostPos = arg0;
} }
void fn_1_C20(void) { void UpdateHost(void) {
Mtx sp20; Mtx rot;
Vec sp14; Vec sp14;
Vec sp8; Vec sp8;
while (1) { while (1) {
if (BoardIsKill() != 0) { if (BoardIsKill() != 0) {
BoardModelKill(lbl_1_bss_1E); BoardModelKill(hostMdl);
BoardTutorialHostSet(-1); BoardTutorialHostSet(-1);
HuPrcEnd(); HuPrcEnd();
} }
Hu3D2Dto3D(&lbl_1_data_80[lbl_1_bss_1C], 1, &sp14); Hu3D2Dto3D(&hostPosTbl[hostPos], 1, &sp14);
BoardModelPosSetV(lbl_1_bss_1E, &sp14); BoardModelPosSetV(hostMdl, &sp14);
BoardCameraRotGet(&sp8); BoardCameraRotGet(&sp8);
PSMTXRotRad(sp20, 'y', 0.2617994f); PSMTXRotRad(rot, 'y', 0.2617994f);
BoardModelMtxSet(lbl_1_bss_1E, &sp20); BoardModelMtxSet(hostMdl, &rot);
BoardModelRotSet(lbl_1_bss_1E, sp8.x, 0.0f, 0.0f); BoardModelRotSet(hostMdl, sp8.x, 0.0f, 0.0f);
BoardModelScaleSet(lbl_1_bss_1E, 0.2f, 0.2f, 0.2f); BoardModelScaleSet(hostMdl, 0.2f, 0.2f, 0.2f);
HuPrcVSleep(); HuPrcVSleep();
} }
} }

View file

@ -12,17 +12,12 @@
#include "math.h" #include "math.h"
//BSS //BSS
s16 lbl_1_bss_22[11]; s16 lbl_1_bss_10[1];
s16 lbl_1_bss_20; s16 w10ExitWin;
s16 lbl_1_bss_1E; s16 tutorialDoneF;
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;
void* lbl_1_bss_8; void* lbl_1_bss_8;
s32 lbl_1_bss_4_pad; s32 lbl_1_bss_4;
W10State* lbl_1_bss_0; W10BoardWork *boardWork;
//DATA //DATA
unkw10Dll lbl_1_data_0[1] = { unkw10Dll lbl_1_data_0[1] = {
@ -33,82 +28,88 @@ unkw10Dll lbl_1_data_0[1] = {
}; };
s16 lbl_1_data_28 = -1; static s16 bgMdl = -1;
s16 lbl_1_data_2A = -1; static s16 fgMdl = -1;
s16 lbl_1_data_2C = -1; s16 boardStarHostMdl = -1;
s16 lbl_1_data_2E = -1; s16 boardShopHostMdl = -1;
s16 lbl_1_data_30 = -1; s16 boardLotteryHostMdl = -1;
s16 lbl_1_data_32 = -1; s16 boardBooHouseHostMdl = -1;
//unused? //unused?
s32 lbl_1_data_34[] = { s32 lbl_1_data_34[] = {
0x005F0000, 0x001A0000, DATADIR_MARIOMOT, DATADIR_LUIGIMOT,
0x006D0000, 0x008A0000, DATADIR_PEACHMOT, DATADIR_YOSHIMOT,
0x00850000, 0x00110000, DATADIR_WARIOMOT, DATADIR_DONKEYMOT,
0x000D0000, 0x00810000, DATADIR_DAISYMOT, DATADIR_WALUIGIMOT,
}; };
s32 lbl_1_data_54[2] = { static s32 starHostMot[2] = {
DATA_MAKE_NUM(DATADIR_W10, 18), DATA_MAKE_NUM(DATADIR_W10, 18),
DATA_NUM_LISTEND DATA_NUM_LISTEND
}; };
s32 lbl_1_data_5C[2] = { static s32 shopHostMot[2] = {
DATA_MAKE_NUM(DATADIR_BGUEST, 9), DATA_MAKE_NUM(DATADIR_BGUEST, 9),
DATA_NUM_LISTEND DATA_NUM_LISTEND
}; };
s32 lbl_1_data_64[2] = { static s32 lotteryHostMot[2] = {
DATA_MAKE_NUM(DATADIR_BGUEST, 24), DATA_MAKE_NUM(DATADIR_BGUEST, 24),
DATA_NUM_LISTEND DATA_NUM_LISTEND
}; };
s32 lbl_1_data_6C[2] = { static s32 booHouseHostMot[2] = {
DATA_MAKE_NUM(DATADIR_BGUEST, 14), DATA_MAKE_NUM(DATADIR_BGUEST, 14),
DATA_NUM_LISTEND DATA_NUM_LISTEND
}; };
void BoardCreate(void) { static void LightSetHook(void);
f32 sp10; static void LightResetHook(void);
f32 spC[2]; static s32 WalkEvent(void);
s32 sp8; static s32 WalkMiniEvent(void);
static s32 LandEvent(void);
void BoardCreate(void)
{
float size[2];
s32 i; s32 i;
unkw10Dll* temp_r30; unkw10Dll* temp_r30;
s32 temp; s32 space;
s32 board; s32 board;
board = GWBoardGet(); board = GWBoardGet();
lbl_1_bss_0 = (W10State *)&GWSystem.board_data; boardWork = (W10BoardWork *)&GWSystem.board_data[0];
lbl_1_bss_0->unk0 = 0; boardWork->scene = 0;
lbl_1_bss_0->unk4 = 0; boardWork->dice = 0;
lbl_1_bss_0->unk6 = 0; boardWork->msg = 0;
BoardTutorialHookSet(&fn_1_1AAC); BoardTutorialHookSet(TutorialHookExec);
fn_1_AEC(); HostCreate();
fn_1_1D68(); TutorialSprCreate();
lbl_1_bss_C = 0; tutorialDoneF = 0;
BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W10, 0)); BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W10, 0));
temp = BoardSpaceFlagSearch(0, 1); space = BoardSpaceFlagSearch(0, 1);
BoardTutorialBlockSetPos(temp, 1); BoardTutorialBlockSetPos(space, 1);
lbl_1_data_28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 1), NULL, 0); bgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 1), NULL, 0);
fn_8006DDE8(lbl_1_data_28, -1.0f); fn_8006DDE8(bgMdl, -1.0f);
BoardModelPosSet(lbl_1_data_28, 0.0f, 0.0f, 0.0f); BoardModelPosSet(bgMdl, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_28, 0, 0x40000001); BoardModelMotionStart(bgMdl, 0, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_data_28, 1.0f); BoardModelMotionSpeedSet(bgMdl, 1.0f);
lbl_1_data_2A = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 2), NULL, 0); fgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 2), NULL, 0);
fn_8006DDE8(lbl_1_data_2A, -1.0f); fn_8006DDE8(fgMdl, -1.0f);
BoardModelPosSet(lbl_1_data_2A, 0.0f, 0.0f, 0.0f); BoardModelPosSet(fgMdl, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_2A, 0, 0x40000001); BoardModelMotionStart(fgMdl, 0, 0x40000001);
lbl_1_data_2C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 17), lbl_1_data_54, 0); boardStarHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 17), starHostMot, 0);
BoardModelPosSet(lbl_1_data_2C, 0.0f, 0.0f, 0.0f); BoardModelPosSet(boardStarHostMdl, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_2C, 1, 0x40000001); BoardModelMotionStart(boardStarHostMdl, 1, 0x40000001);
lbl_1_data_2E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 5), lbl_1_data_5C, 0); boardShopHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 5), shopHostMot, 0);
BoardModelMotionStart(lbl_1_data_2E, 1, 0x40000001); BoardModelMotionStart(boardShopHostMdl, 1, 0x40000001);
lbl_1_data_32 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 18), lbl_1_data_64, 0); boardBooHouseHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 18), lotteryHostMot, 0);
BoardModelMotionStart(lbl_1_data_32, 1, 0x40000001); BoardModelMotionStart(boardBooHouseHostMdl, 1, 0x40000001);
lbl_1_data_30 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 13), lbl_1_data_6C, 0); boardLotteryHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 13), booHouseHostMot, 0);
BoardModelMotionStart(lbl_1_data_30, 1, 0x40000001); BoardModelMotionStart(boardLotteryHostMdl, 1, 0x40000001);
BoardLightHookSet(&fn_1_8C0, &fn_1_904); BoardLightHookSet(LightSetHook, LightResetHook);
for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) { for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) {
temp_r30 = &lbl_1_data_0[i]; temp_r30 = &lbl_1_data_0[i];
if (temp_r30->unk24 != -1) { if (temp_r30->unk24 != -1) {
@ -124,24 +125,25 @@ void BoardCreate(void) {
} }
} }
BoardModelVisibilitySet(lbl_1_bss_10[0], 0); BoardModelVisibilitySet(lbl_1_bss_10[0], 0);
lbl_1_bss_0->unk8 = BoardModelCreate(0x7000A, NULL, 0); boardWork->focus_mdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 0);
BoardModelVisibilitySet(lbl_1_bss_0->unk8, 0); BoardModelVisibilitySet(boardWork->focus_mdl, 0);
BoardSpaceWalkEventFuncSet((void*)&fn_1_90C); BoardSpaceWalkEventFuncSet(WalkEvent);
BoardSpaceWalkMiniEventFuncSet((void*)&fn_1_91C); BoardSpaceWalkMiniEventFuncSet(WalkMiniEvent);
BoardSpaceLandEventFuncSet((void*)&fn_1_908); BoardSpaceLandEventFuncSet(LandEvent);
BoardStarHostSet(lbl_1_data_2C); BoardStarHostSet(boardStarHostMdl);
BoardBooHouseHostSet(lbl_1_data_32); BoardBooHouseHostSet(boardBooHouseHostMdl);
BoardShopHostSet(lbl_1_data_2E); BoardShopHostSet(boardShopHostMdl);
BoardLotteryHostSet(lbl_1_data_30); BoardLotteryHostSet(boardLotteryHostMdl);
HuWinMesMaxSizeGet(1, spC, 0x2E003A); HuWinMesMaxSizeGet(1, size, 0x2E003A);
lbl_1_bss_E = HuWinCreate(-10000.0f, 390.0f, spC[0], spC[1], 1); w10ExitWin = HuWinCreate(-10000.0f, 390.0f, size[0], size[1], 1);
HuWinMesSet(lbl_1_bss_E, 0x2E003A); HuWinMesSet(w10ExitWin, 0x2E003A);
HuWinMesSpeedSet(lbl_1_bss_E, 0); HuWinMesSpeedSet(w10ExitWin, 0);
HuWinPriSet(lbl_1_bss_E, 1); HuWinPriSet(w10ExitWin, 1);
HuWinMesPalSet(lbl_1_bss_E, 7, 0, 0, 0); HuWinMesPalSet(w10ExitWin, 7, 0, 0, 0);
} }
void BoardDestroy(void) { void BoardDestroy(void)
{
s32 i; s32 i;
for (i = 0; i < 1; i++) { for (i = 0; i < 1; i++) {
if (lbl_1_bss_10[i] != 0) { if (lbl_1_bss_10[i] != 0) {
@ -149,58 +151,70 @@ void BoardDestroy(void) {
lbl_1_bss_10[i] = 0; lbl_1_bss_10[i] = 0;
} }
} }
if (lbl_1_data_32 != -1) { if (boardBooHouseHostMdl != -1) {
BoardModelKill(lbl_1_data_32); BoardModelKill(boardBooHouseHostMdl);
lbl_1_data_32 = -1; boardBooHouseHostMdl = -1;
} }
if (lbl_1_data_2E != -1) { if (boardShopHostMdl != -1) {
BoardModelKill(lbl_1_data_2E); BoardModelKill(boardShopHostMdl);
lbl_1_data_2E = -1; boardShopHostMdl = -1;
} }
if (lbl_1_data_30 != -1) { if (boardLotteryHostMdl != -1) {
BoardModelKill(lbl_1_data_30); BoardModelKill(boardLotteryHostMdl);
lbl_1_data_30 = -1; boardLotteryHostMdl = -1;
} }
if (lbl_1_data_2C != -1) { if (boardStarHostMdl != -1) {
BoardModelKill(lbl_1_data_2C); BoardModelKill(boardStarHostMdl);
lbl_1_data_2C = -1; boardStarHostMdl = -1;
} }
if (lbl_1_data_28 != -1) { if (bgMdl != -1) {
BoardModelKill(lbl_1_data_28); BoardModelKill(bgMdl);
lbl_1_data_28 = -1; bgMdl = -1;
} }
if (lbl_1_data_2A != -1) { if (fgMdl != -1) {
BoardModelKill(lbl_1_data_2A); BoardModelKill(fgMdl);
lbl_1_data_2A = -1; fgMdl = -1;
} }
BoardModelKill(lbl_1_bss_0->unk8); BoardModelKill(boardWork->focus_mdl);
fn_1_1DEC(); TutorialSprKill();
HuWinKill(lbl_1_bss_E); HuWinKill(w10ExitWin);
BoardSpaceDestroy(); BoardSpaceDestroy();
} }
void fn_1_8C0(void) { static void LightSetHook(void)
s16 temp = BoardModelIDGet(lbl_1_data_28); {
Hu3DModelLightInfoSet(temp, 1); 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; 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) { s32 fn_1_920(s16 arg0, f32 arg8, f32 arg9) {

View file

@ -9,233 +9,233 @@
#include "game/board/tutorial.h" #include "game/board/tutorial.h"
#include "game/board/ui.h" #include "game/board/ui.h"
void fn_1_D2C(void) { void TutorialStartExec(void) {
fn_1_BA0(0x2E0001); HostWinExec(0x2E0001);
} }
void fn_1_D54(void) { void TutorialPreRollExec(void) {
fn_1_BA0(0x2E0002); HostWinExec(0x2E0002);
} }
void fn_1_D7C(void) { void TutorialOrderExec(void) {
fn_1_BA0(0x2E0003); HostWinExec(0x2E0003);
} }
void fn_1_DA4(void) { void TutorialP1StartExec(void) {
fn_1_BA0(0x2E0004); HostWinExec(0x2E0004);
} }
void fn_1_DCC(void) { void TutorialP2StartExec(void) {
fn_1_BA0(0x2E0005); HostWinExec(0x2E0005);
} }
void fn_1_DF4(void) { void TutorialP3StartExec(void) {
fn_1_BA0(0x2E0006); HostWinExec(0x2E0006);
} }
void fn_1_E1C(void) { void TutorialP4StartExec(void) {
fn_1_BA0(0x2E0007); HostWinExec(0x2E0007);
} }
void fn_1_E44(void) { void TutorialGameStartExec(void) {
fn_1_BA0(0x2E0008); HostWinExec(0x2E0008);
fn_1_BA0(0x2E0009); HostWinExec(0x2E0009);
BoardSpaceStarSetIndex(0); BoardSpaceStarSetIndex(0);
BoardModelVisibilitySet(lbl_1_data_2C, 1); BoardModelVisibilitySet(boardStarHostMdl, 1);
} }
void fn_1_E94(void) { void TutorialRollExec(void) {
fn_1_BA0(0x2E000A); HostWinExec(0x2E000A);
} }
void fn_1_EBC(void) { void TutorialMoveExec(void) {
fn_1_BA0(0x2E000B); HostWinExec(0x2E000B);
} }
void fn_1_EE4(void) { void TutorialLandExec(void) {
} }
void fn_1_EE8(void) { void TutorialLandBlueExec(void) {
fn_1_1E3C(0, 0x122, 0x8C); TutorialSpaceShow(0, 0x122, 0x8C);
fn_1_BA0(0x2E000C); HostWinExec(0x2E000C);
fn_1_BA0(0x2E000D); HostWinExec(0x2E000D);
fn_1_1FB0(); TutorialSpaceHide();
} }
void fn_1_F30(void) { void TutorialLandRedExec(void) {
fn_1_1E3C(1, 0x122, 0x8C); TutorialSpaceShow(1, 0x122, 0x8C);
fn_1_BA0(0x2E000E); HostWinExec(0x2E000E);
fn_1_1FB0(); TutorialSpaceHide();
} }
void fn_1_F6C(void) { void TutorialLandHappenExec(void) {
fn_1_1E3C(2, 0x122, 0x8C); TutorialSpaceShow(2, 0x122, 0x8C);
fn_1_BA0(0x2E000F); HostWinExec(0x2E000F);
fn_1_1FB0(); TutorialSpaceHide();
BoardTutorialDirInputSet(0, 0x50, 1); BoardTutorialDirInputSet(0, 0x50, 1);
} }
void fn_1_FB8(void) { void TutorialLandFortuneExec(void) {
fn_1_1E3C(3, 0x122, 0x8C); TutorialSpaceShow(3, 0x122, 0x8C);
fn_1_BA0(0x2E0010); HostWinExec(0x2E0010);
fn_1_1FB0(); TutorialSpaceHide();
fn_1_BA0(0x2E0011); HostWinExec(0x2E0011);
BoardTutorialDirInputSet(-0x50, 0, 1); BoardTutorialDirInputSet(-0x50, 0, 1);
} }
void fn_1_1010(void) { void TutorialLandBowserExec(void) {
fn_1_1E3C(4, 0x122, 0x8C); TutorialSpaceShow(4, 0x122, 0x8C);
fn_1_BA0(0x2E0012); HostWinExec(0x2E0012);
fn_1_1FB0(); TutorialSpaceHide();
BoardTutorialDirInputSet(0, 0x50, 1); BoardTutorialDirInputSet(0, 0x50, 1);
} }
void fn_1_105C(void) { void TutorialLandMushroomExec(void) {
fn_1_1E3C(5, 0x122, 0x8C); TutorialSpaceShow(5, 0x122, 0x8C);
fn_1_BA0(0x2E0013); HostWinExec(0x2E0013);
fn_1_1FB0(); TutorialSpaceHide();
} }
void fn_1_1098(void) { void TutorialMushroomMegaExec(void) {
fn_1_BA0(0x2E0014); HostWinExec(0x2E0014);
} }
void fn_1_10C0(void) { void TutorialMushroomMiniExec(void) {
fn_1_BA0(0x2E0015); HostWinExec(0x2E0015);
BoardTutorialDirInputSet(-0x50, 0, 1); BoardTutorialDirInputSet(-0x50, 0, 1);
} }
void fn_1_10F8(void) { void TutorialLandBattleExec(void) {
fn_1_1E3C(6, 0x122, 0x8C); TutorialSpaceShow(6, 0x122, 0x8C);
fn_1_BA0(0x2E0016); HostWinExec(0x2E0016);
fn_1_1FB0(); TutorialSpaceHide();
} }
void fn_1_1134(void) { void TutorialLandWarpExec(void) {
fn_1_1E3C(7, 0x122, 0x8C); TutorialSpaceShow(7, 0x122, 0x8C);
fn_1_BA0(0x2E0017); HostWinExec(0x2E0017);
fn_1_1FB0(); TutorialSpaceHide();
BoardCharWheelTargetSet(1); BoardCharWheelTargetSet(1);
} }
void fn_1_1178(void) { void TutorialWarpDecideExec(void) {
fn_1_BA0(0x2E0018); HostWinExec(0x2E0018);
} }
void fn_1_11A0(void) { void TutorialBlockStarExec(void) {
s32 temp; s32 space;
fn_1_BA0(0x2E0019); HostWinExec(0x2E0019);
temp = BoardSpaceFlagSearch(0, 1); space = BoardSpaceFlagSearch(0, 1);
BoardTutorialBlockSetPos(temp, 0); BoardTutorialBlockSetPos(space, 0);
} }
void fn_1_11EC(void) { void TutorialBlockCoinExec(void) {
s32 temp; s32 space;
fn_1_BA0(0x2E001A); HostWinExec(0x2E001A);
temp = BoardSpaceFlagSearch(0, 1); space = BoardSpaceFlagSearch(0, 1);
BoardTutorialBlockSetPos(temp, 0); BoardTutorialBlockSetPos(space, 0);
BoardTutorialItemSet(0); BoardTutorialItemSet(0);
} }
void fn_1_1240(void) { void TutorialMiniMegaExec(void) {
fn_1_BA0(0x2E001B); HostWinExec(0x2E001B);
BoardTutorialDirInputSet(0x50, 0, 1); BoardTutorialDirInputSet(0x50, 0, 1);
} }
void fn_1_1278(void) { void TutorialMiniUseExec(void) {
fn_1_BA0(0x2E001C); HostWinExec(0x2E001C);
} }
void fn_1_12A0(void) { void TutorialMiniStopExec(void) {
fn_1_BA0(0x2E001D); HostWinExec(0x2E001D);
BoardPlayerItemAdd(2, 1); BoardPlayerItemAdd(2, 1);
BoardTutorialItemSet(1); BoardTutorialItemSet(1);
} }
void fn_1_12DC(void) { void TutorialMegaUseExec(void) {
fn_1_BA0(0x2E001E); HostWinExec(0x2E001E);
} }
void fn_1_1304(void) { void TutorialMegaDiceExec(void) {
fn_1_BA0(0x2E001F); HostWinExec(0x2E001F);
} }
void fn_1_132C(void) { void TutorialMegaStompExec(void) {
fn_1_BA0(0x2E0020); HostWinExec(0x2E0020);
} }
void fn_1_1354(void) { void TutorialMegaEventExec(void) {
fn_1_BA0(0x2E0021); HostWinExec(0x2E0021);
} }
void fn_1_137C(void) { void TutorialMegaStopExec(void) {
fn_1_BA0(0x2E0022); HostWinExec(0x2E0022);
} }
void fn_1_13A4(void) { void TutorialEndExec(void) {
s32 i; s32 i;
Vec sp14; Vec pos;
Vec sp8; Vec offset;
s32 temp_r3_2; s32 space;
fn_1_BA0(0x2E0023); HostWinExec(0x2E0023);
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
GWPlayer[i].color = 1; GWPlayer[i].color = 1;
} }
BoardMGSetupTutorialExec(); BoardMGSetupTutorialExec();
BoardStatusShowSetAll(0); BoardStatusShowSetAll(0);
fn_1_C10(0); HostPosSet(0);
fn_1_BA0(0x2E002B); HostWinExec(0x2E002B);
sp8.x = -33.0f; offset.x = -33.0f;
sp8.y = sp8.z = 0.0f; offset.y = offset.z = 0.0f;
temp_r3_2 = BoardSpaceFlagSearch(0, 0x80000); space = BoardSpaceFlagSearch(0, 0x80000);
BoardSpacePosGet(0, temp_r3_2, &sp14); BoardSpacePosGet(0, space, &pos);
BoardModelPosSetV(lbl_1_bss_0->unk8, &sp14); BoardModelPosSetV(boardWork->focus_mdl, &pos);
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(); BoardCameraMotionWait();
fn_1_BA0(0x2E002C); HostWinExec(0x2E002C);
BoardShopTutorialExec(temp_r3_2); BoardShopTutorialExec(space);
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(); BoardCameraMotionWait();
temp_r3_2 = BoardSpaceFlagSearch(0, 0x10000000); space = BoardSpaceFlagSearch(0, 0x10000000);
BoardSpacePosGet(0, temp_r3_2, &sp14); BoardSpacePosGet(0, space, &pos);
BoardModelPosSetV(lbl_1_bss_0->unk8, &sp14); BoardModelPosSetV(boardWork->focus_mdl, &pos);
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(); BoardCameraMotionWait();
fn_1_BA0(0x2E002E); HostWinExec(0x2E002E);
BoardLotteryTutorialExec(); 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(); BoardCameraMotionWait();
temp_r3_2 = BoardSpaceFlagSearch(0, 0x08000000); space = BoardSpaceFlagSearch(0, 0x08000000);
BoardSpacePosGet(0, temp_r3_2, &sp14); BoardSpacePosGet(0, space, &pos);
BoardModelPosSetV(lbl_1_bss_0->unk8, &sp14); BoardModelPosSetV(boardWork->focus_mdl, &pos);
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(); BoardCameraMotionWait();
fn_1_BA0(0x2E0030); HostWinExec(0x2E0030);
BoardBooHouseTutorialExec(); 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(); BoardCameraMotionWait();
fn_1_BA0(0x2E0032); HostWinExec(0x2E0032);
BoardCameraTargetModelSet(BoardStarHostMdlGet()); BoardCameraTargetModelSet(BoardStarHostMdlGet());
BoardCameraMotionWait(); BoardCameraMotionWait();
fn_1_BA0(0x2E0033); HostWinExec(0x2E0033);
fn_1_BA0(0x2E0034); HostWinExec(0x2E0034);
fn_1_1E3C(8, 0x122, 0x8C); TutorialSpaceShow(8, 0x122, 0x8C);
fn_1_BA0(0x2E0035); HostWinExec(0x2E0035);
fn_1_1FB0(); TutorialSpaceHide();
fn_1_1E3C(9, 0x122, 0x8C); TutorialSpaceShow(9, 0x122, 0x8C);
fn_1_BA0(0x2E0036); HostWinExec(0x2E0036);
fn_1_1FB0(); TutorialSpaceHide();
fn_1_1E3C(0xA, 0x122, 0x8C); TutorialSpaceShow(0xA, 0x122, 0x8C);
fn_1_BA0(0x2E0037); HostWinExec(0x2E0037);
fn_1_1FB0(); TutorialSpaceHide();
fn_1_BA0(0x2E0038); HostWinExec(0x2E0038);
fn_1_BA0(0x2E0039); HostWinExec(0x2E0039);
if (lbl_1_bss_C == 0) { if (tutorialDoneF == 0) {
lbl_1_bss_C = 1; tutorialDoneF = 1;
BoardAudSeqFadeOut(0, 0x1F3); BoardAudSeqFadeOut(0, 0x1F3);
BoardKill(); BoardKill();
} }
@ -245,49 +245,49 @@ void fn_1_13A4(void) {
} }
} }
void fn_1_176C(void) { void TutorialMGStatusExec(void) {
fn_1_C10(1); HostPosSet(1);
fn_1_BA0(0x2E0024); HostWinExec(0x2E0024);
} }
void fn_1_179C(void) { void TutorialMG4PExec(void) {
fn_1_BA0(0x2E0025); HostWinExec(0x2E0025);
GWPlayer[1].color = 2; GWPlayer[1].color = 2;
GWPlayer[3].color = 2; GWPlayer[3].color = 2;
} }
void fn_1_17F4(void) { void TutorialMG2Vs2Exec(void) {
fn_1_BA0(0x2E0026); HostWinExec(0x2E0026);
GWPlayer[0].color = 2; GWPlayer[0].color = 2;
} }
void fn_1_1834(void) { void TutorialMG1Vs3Exec(void) {
fn_1_BA0(0x2E0027); HostWinExec(0x2E0027);
GWPlayer[0].color = 1; GWPlayer[0].color = 1;
GWPlayer[1].color = 1; GWPlayer[1].color = 1;
GWPlayer[2].color = 1; GWPlayer[2].color = 1;
GWPlayer[3].color = 2; GWPlayer[3].color = 2;
} }
void fn_1_18BC(void) { void TutorialMG1Vs3AltExec(void) {
fn_1_BA0(0x2E0028); HostWinExec(0x2E0028);
fn_1_BA0(0x2E0029); HostWinExec(0x2E0029);
boardTutorialData[0] = 0; boardTutorialData[0] = 0;
BoardStatusItemSet(0); BoardStatusItemSet(0);
} }
void fn_1_1908(void) { void TutorialShopExec(void) {
fn_1_BA0(0x2E002D); HostWinExec(0x2E002D);
} }
void fn_1_1930(void) { void TutorialLotteryExec(void) {
fn_1_BA0(0x2E002F); HostWinExec(0x2E002F);
} }
void fn_1_1958(void) { void TutorialBooHouseExec(void) {
fn_1_BA0(0x2E0031); HostWinExec(0x2E0031);
} }
void fn_1_1980(void) { void TutorialNullExec(void) {
} }

View file

@ -5,20 +5,23 @@
#include "game/wipe.h" #include "game/wipe.h"
#include "game/board/ui.h" #include "game/board/ui.h"
void fn_1_1984(void) { static s16 sprList[11];
static s16 sprCurr;
void CloseTutorial(void) {
s32 port; s32 port;
s32 i; s32 i;
if (lbl_1_bss_C == 0) { if (tutorialDoneF == 0) {
if (WipeStatGet() != 0) { if (WipeStatGet() != 0) {
HuWinDispOff(lbl_1_bss_E); HuWinDispOff(w10ExitWin);
return; return;
} }
HuWinDispOn(lbl_1_bss_E); HuWinDispOn(w10ExitWin);
if (BoardIsKill() != 0) { if (BoardIsKill() != 0) {
return; return;
} }
for (i = 0; i < ARRAY_COUNT(GWPlayer); i++) { for (i = 0; i < 4; i++) {
port = GWPlayer[i].port; port = GWPlayer[i].port;
if (port == -1) { if (port == -1) {
continue; continue;
@ -28,7 +31,7 @@ void fn_1_1984(void) {
} }
} }
if (i != 4) { if (i != 4) {
lbl_1_bss_C = 1; tutorialDoneF = 1;
OSReport("@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n"); OSReport("@@@@@@@@@@@@@@ Tutorial Exit @@@@@@@@@@@@@@\n");
BoardAudSeqFadeOut(0, 0x1F3); BoardAudSeqFadeOut(0, 0x1F3);
BoardKill(); 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, 1, -1, -1,
2, -1, -1, 2, -1, -1,
4, -1, -1, 4, -1, -1,
@ -51,74 +54,74 @@ s16 lbl_1_data_C6[11][3] = {
5, 6, -1, 5, 6, -1,
}; };
w10DllUnk04 lbl_1_data_108[42] = { static TutorialScene sceneTbl[42] = {
{0x0000, 0000, fn_1_D2C}, {0, TutorialStartExec},
{0x0001, 0000, fn_1_D54}, {1, TutorialPreRollExec},
{0x0002, 0000, fn_1_D7C}, {2, TutorialOrderExec},
{0x0003, 0000, fn_1_DA4}, {3, TutorialP1StartExec},
{0x0003, 0000, fn_1_DCC}, {3, TutorialP2StartExec},
{0x0003, 0000, fn_1_DF4}, {3, TutorialP3StartExec},
{0x0003, 0000, fn_1_E1C}, {3, TutorialP4StartExec},
{0x0004, 0000, fn_1_E44}, {4, TutorialGameStartExec},
{0x0005, 0000, fn_1_E94}, {5, TutorialRollExec},
{0x0006, 0000, fn_1_EBC}, {6, TutorialMoveExec},
{0x0007, 0000, fn_1_EE4}, {7, TutorialLandExec},
{0x000A, 0000, fn_1_EE8}, {10, TutorialLandBlueExec},
{0x000B, 0000, fn_1_F30}, {11, TutorialLandRedExec},
{0x0010, 0000, fn_1_F6C}, {16, TutorialLandHappenExec},
{0x0011, 0000, fn_1_FB8}, {17, TutorialLandFortuneExec},
{0x000C, 0000, fn_1_1010}, {12, TutorialLandBowserExec},
{0x000D, 0000, fn_1_105C}, {13, TutorialLandMushroomExec},
{0x000E, 0000, fn_1_1098}, {14, TutorialMushroomMegaExec},
{0x000E, 0000, fn_1_10C0}, {14, TutorialMushroomMiniExec},
{0x000F, 0000, fn_1_10F8}, {15, TutorialLandBattleExec},
{0x0012, 0000, fn_1_1134}, {18, TutorialLandWarpExec},
{0x0014, 0000, fn_1_1178}, {20, TutorialWarpDecideExec},
{0x0015, 0000, fn_1_11A0}, {21, TutorialBlockStarExec},
{0x0016, 0000, fn_1_11EC}, {22, TutorialBlockCoinExec},
{0x0005, 0000, fn_1_1240}, {5, TutorialMiniMegaExec},
{0x0017, 0000, fn_1_1278}, {23, TutorialMiniUseExec},
{0x0007, 0000, fn_1_12A0}, {7, TutorialMiniStopExec},
{0x0005, 0000, fn_1_12DC}, {5, TutorialMegaUseExec},
{0x0017, 0000, fn_1_1304}, {23, TutorialMegaDiceExec},
{0x0018, 0000, fn_1_132C}, {24, TutorialMegaStompExec},
{0x0019, 0000, fn_1_1354}, {25, TutorialMegaEventExec},
{0x0008, 0000, fn_1_137C}, {8, TutorialMegaStopExec},
{0x0009, 0000, fn_1_13A4}, {9, TutorialEndExec},
{0x001A, 0000, fn_1_176C}, {26, TutorialMGStatusExec},
{0x001B, 0000, fn_1_179C}, {27, TutorialMG4PExec},
{0x001B, 0000, fn_1_17F4}, {27, TutorialMG2Vs2Exec},
{0x001B, 0000, fn_1_1834}, {27, TutorialMG1Vs3Exec},
{0x001B, 0000, fn_1_18BC}, {27, TutorialMG1Vs3AltExec},
{0x001C, 0000, fn_1_1908}, {28, TutorialShopExec},
{0x001C, 0000, fn_1_1930}, {28, TutorialLotteryExec},
{0x001C, 0000, fn_1_1958}, {28, TutorialBooHouseExec},
{-1, 0, 0}, {-1, NULL },
}; };
int fn_1_1AAC(s16 arg0, s32 arg1) { int TutorialHookExec(s16 arg0, s32 arg1) {
if (arg0 == 0x1E) { if (arg0 == 30) {
fn_1_1984(); CloseTutorial();
return; 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", 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[0].com, GWPlayer[1].com,
GWPlayer[2].com, GWPlayer[3].com, GWPlayer[2].com, GWPlayer[3].com,
lbl_1_bss_0->unk0, arg0, arg1, lbl_1_bss_0->unk4, lbl_1_bss_0->unk6); boardWork->scene, arg0, arg1, boardWork->dice, boardWork->msg);
if (lbl_1_data_108[lbl_1_bss_0->unk0].unk0 != -1) { if (sceneTbl[boardWork->scene].cue != -1) {
if (arg0 == 5) { 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) { if (arg0 == sceneTbl[boardWork->scene].cue) {
void (*temp_r3_3)() = lbl_1_data_108[lbl_1_bss_0->unk0++].unk4; TutorialSceneFunc func = sceneTbl[boardWork->scene++].func;
temp_r3_3(); func();
} }
} }
} }
} }
s32 lbl_1_data_2A8[11] = { static s32 tutorialSprTbl[11] = {
DATA_MAKE_NUM(DATADIR_W10, 4), DATA_MAKE_NUM(DATADIR_W10, 4),
DATA_MAKE_NUM(DATADIR_W10, 5), DATA_MAKE_NUM(DATADIR_W10, 5),
DATA_MAKE_NUM(DATADIR_W10, 6), DATA_MAKE_NUM(DATADIR_W10, 6),
@ -132,45 +135,43 @@ s32 lbl_1_data_2A8[11] = {
DATA_MAKE_NUM(DATADIR_W10, 14) DATA_MAKE_NUM(DATADIR_W10, 14)
}; };
void fn_1_1D68(void) { void TutorialSprCreate(void) {
s32 temp_r4;
s32 temp_r5;
s32 i; s32 i;
for (i = 0; i < 11; i++) { for (i = 0; i < 11; i++) {
lbl_1_bss_22[i] = espEntry(lbl_1_data_2A8[i], 0, 0); sprList[i] = espEntry(tutorialSprTbl[i], 0, 0);
espDispOff(lbl_1_bss_22[i]); espDispOff(sprList[i]);
} }
} }
void fn_1_1DEC(void) { void TutorialSprKill(void) {
s32 i; s32 i;
for (i = 0; i < 11; 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_f31;
f32 var_f30; f32 var_f30;
u32 i; u32 i;
lbl_1_bss_20 = lbl_1_bss_22[arg0]; sprCurr = sprList[arg0];
espPosSet(lbl_1_bss_20, arg1, arg2); espPosSet(sprCurr, arg1, arg2);
var_f31 = 0.0f; var_f31 = 0.0f;
var_f30 = 0.0f; var_f30 = 0.0f;
espDispOn(lbl_1_bss_20); espDispOn(sprCurr);
for (i = 0; i < 15; i++) { for (i = 0; i < 15; i++) {
var_f31 += 0.06666667f; var_f31 += 0.06666667f;
var_f30 += 0.06666667f; var_f30 += 0.06666667f;
espScaleSet(lbl_1_bss_20, var_f31, var_f30); espScaleSet(sprCurr, var_f31, var_f30);
HuPrcVSleep(); 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_f31;
f32 var_f30; f32 var_f30;
u32 i; u32 i;
@ -180,8 +181,8 @@ void fn_1_1FB0(void) {
for (i = 0; i < 15; i++) { for (i = 0; i < 15; i++) {
var_f31 -= 0.06666667f; var_f31 -= 0.06666667f;
var_f30 -= 0.06666667f; var_f30 -= 0.06666667f;
espScaleSet(lbl_1_bss_20, var_f31, var_f30); espScaleSet(sprCurr, var_f31, var_f30);
HuPrcVSleep(); HuPrcVSleep();
} }
espDispOff(lbl_1_bss_20); espDispOff(sprCurr);
} }