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
.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

View file

@ -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
TutorialHookExec = .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

View file

@ -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 TutorialHookExec(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];
extern s16 boardStarHostMdl;
extern s16 boardShopHostMdl;
extern s16 boardLotteryHostMdl;
extern s16 boardBooHouseHostMdl;

View file

@ -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();
}
}

View file

@ -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(TutorialHookExec);
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) {

View file

@ -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) {
}

View file

@ -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 TutorialHookExec(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);
}