w05Dll/main complete (doesnt build)

This commit is contained in:
CreateSource 2024-04-05 16:24:52 -04:00
parent fd2857c546
commit 786c7a457d
4 changed files with 499 additions and 13 deletions

View file

@ -87,18 +87,18 @@ fn_1_B2B0 = .text:0x0000B2B0; // type:function size:0x114
fn_1_B3C4 = .text:0x0000B3C4; // type:function size:0x280
_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 data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float
lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float
lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float
lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float
lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float
lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float
lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double
lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float
lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float
lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float
lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double
lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double

View file

@ -1127,7 +1127,7 @@ config.libs = [
Rel('w05Dll',
objects = {
Object(Matching, "REL/board_executor.c"),
Object(NonMatching, "REL/w05Dll/main.c"),
Object(Matching, "REL/w05Dll/main.c"),
Object(NonMatching, "REL/w05Dll/hotel.c"),
Object(NonMatching, "REL/w05Dll/monkey.c"),
Object(NonMatching, "REL/w05Dll/dolphin.c"),

View file

@ -51,6 +51,7 @@ void BoardSpaceLandExec(s32 player, s32 space);
void BoardSpaceCameraSet(u16 mask);
void BoardSpaceBlockPosSet(void);
void BoardSpaceInit(s32 data_num);
void BoardSpaceDestroy(void);
extern s16 boardSpaceStarTbl[8];

485
src/REL/w05Dll/main.c Normal file
View file

@ -0,0 +1,485 @@
#include "dolphin.h"
#include "game/gamework_data.h"
#include "game/chrman.h"
#include "game/board/audio.h"
#include "game/board/boo_house.h"
#include "game/board/com.h"
#include "game/board/lottery.h"
#include "game/board/main.h"
#include "game/board/map_object.h"
#include "game/board/model.h"
#include "game/board/player.h"
#include "game/board/shop.h"
#include "game/board/space.h"
#include "game/board/star.h"
// #include "REL/w05Dll/mg_item.h"
extern void fn_1_96B4(void);
// #include "REL/w05Dll/mg_coin.h"
extern u32 fn_1_8884(void);
// data
BoardMapObject lbl_1_data_0[7] = {
{ { 3300.0f, 100.0f, -900.0f },
{ 0.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, 1.0f },
0x790011
},
{ { -2550.0f, 0.0f, 1350.0f },
{ 0.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, 1.0f },
0x790014
},
{ { -3000.0f, 100.0f, -1050.0f },
{ 0.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, 1.0f },
0x79001A
},
{ { 2100.0f, 100.0f, -450.0f },
{ 0.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, 1.0f },
0x79001B
},
{ { -450.0f, 100.0f, -750.0f },
{ 0.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, 1.0f },
0x79000A
},
{ { -2710.0f, 0.0f, 1315.0f },
{ 0.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, 1.0f },
0x79000A
},
{ { 3055.0f, 100.0f, -815.0f },
{ 0.0f, 0.0f, 0.0f },
{ 1.0f, 1.0f, 1.0f },
0x79000A
},
};
s16 lbl_1_data_118 = 0xFFFF;
s16 lbl_1_data_11A = 0xFFFF;
s16 lbl_1_data_11C = 0xFFFF;
s16 lbl_1_data_11E = 0xFFFF;
s16 lbl_1_data_120 = 0xFFFF;
s32 lbl_1_data_124[9] = {0x5F0000, 0x1A0000, 0x6D0000, 0x8A0000, 0x850000, 0x110000, 0xD0000, 0x810000, 0x790006};
s32 lbl_1_data_144 = 0xFFFFFFFF;
s32 lbl_1_data_14C = 0xFFFFFFFF;
// bss
s16 lbl_1_bss_14[7];
s32* lbl_1_bss_10;
s16 lbl_1_bss_8[4];
Process* lbl_1_bss_4;
u8* lbl_1_bss_0;
// functions
void BoardCreate(void);
void BoardDestroy(void);
void fn_1_744(void);
void fn_1_788(void);
s32 fn_1_78C(void);
s32 fn_1_82C(void);
void fn_1_92C(void);
void fn_1_950(void);
void fn_1_954(void);
void fn_1_D4C(void);
void fn_1_D84(void);
void fn_1_E04(void);
void fn_1_E40(void);
s32 fn_1_1114(void);
s32 fn_1_1208(s16 arg0, f32 arg8, f32 arg9);
void BoardCreate(void) {
s32 sp8;
s32 var_r31;
BoardMapObject* temp_r30;
sp8 = GWBoardGet();
lbl_1_bss_0 = GWSystem.board_data;
BoardSpaceInit(0x790000);
lbl_1_data_118 = BoardModelCreate(0x790001, NULL, 0);
lbl_1_data_120 = BoardModelCreate(0x790002, NULL, 0);
fn_8006DDE8(lbl_1_data_118, -1.0f);
BoardModelPosSet(lbl_1_data_118, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_118, 0, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_data_118, 1.0f);
fn_8006DDE8(lbl_1_data_120, -1.0f);
BoardModelPosSet(lbl_1_data_120, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_120, 0, 0x40000001);
BoardModelMotionSpeedSet(lbl_1_data_120, 1.0f);
BoardModelLayerSet(lbl_1_data_120, 1);
lbl_1_data_11A = BoardModelCreate(0x790003, NULL, 0);
fn_8006DDE8(lbl_1_data_11A, -1.0f);
BoardModelPosSet(lbl_1_data_11A, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_11A, 0, 0x40000001);
lbl_1_data_11C = BoardModelCreate(0x790005, &lbl_1_data_144, 0);
BoardModelPosSet(lbl_1_data_11C, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_11C, 1, 0x40000001);
lbl_1_data_11E = BoardModelCreate(0x2001C, &lbl_1_data_14C, 0);
BoardModelMotionStart(lbl_1_data_11E, 1, 0x40000001);
BoardLightHookSet(fn_1_744, fn_1_788);
for (var_r31 = 0; var_r31 < 7; var_r31++) {
temp_r30 = &lbl_1_data_0[var_r31];
if (temp_r30->data_num != -1) {
if ((var_r31 == 4) || (var_r31 == 5) || (var_r31 == 6)) {
lbl_1_bss_10 = &lbl_1_data_14C;
} else {
lbl_1_bss_10 = NULL;
}
lbl_1_bss_14[var_r31] = BoardModelCreate(temp_r30->data_num, lbl_1_bss_10, 0);
BoardModelPosSetV(lbl_1_bss_14[var_r31], &temp_r30->pos);
BoardModelRotSetV(lbl_1_bss_14[var_r31], &temp_r30->rot);
BoardModelScaleSetV(lbl_1_bss_14[var_r31], &temp_r30->scale);
BoardModelVisibilitySet(lbl_1_bss_14[var_r31], 1);
if (lbl_1_bss_10 != NULL) {
BoardModelMotionStart(lbl_1_bss_14[var_r31], 0, 0x40000001);
}
}
}
fn_1_92C();
fn_1_13D4();
fn_1_2B40();
BoardSpaceWalkEventFuncSet(fn_1_82C);
BoardSpaceWalkMiniEventFuncSet(&fn_1_1114);
BoardSpaceLandEventFuncSet(fn_1_78C);
BoardStarHostSet(lbl_1_data_11C);
BoardBooHouseHostSet(lbl_1_data_11E);
BoardShopHostSet(lbl_1_data_11E);
BoardLotteryHostSet(lbl_1_data_11E);
}
void BoardDestroy(void) {
s32 var_r31;
for (var_r31 = 0; var_r31 < 7; var_r31++) {
if (lbl_1_bss_14[var_r31] != 0) {
BoardModelKill(lbl_1_bss_14[var_r31]);
lbl_1_bss_14[var_r31] = 0;
}
}
if (lbl_1_data_11E != -1) {
BoardModelKill(lbl_1_data_11E);
lbl_1_data_11E = -1;
}
if (lbl_1_data_11C != -1) {
BoardModelKill(lbl_1_data_11C);
lbl_1_data_11C = -1;
}
if (lbl_1_data_118 != -1) {
BoardModelKill(lbl_1_data_118);
lbl_1_data_118 = -1;
}
if (lbl_1_data_120 != -1) {
BoardModelKill(lbl_1_data_120);
lbl_1_data_120 = -1;
}
if (lbl_1_data_11A != -1) {
BoardModelKill(lbl_1_data_11A);
lbl_1_data_11A = -1;
}
BoardSpaceDestroy();
}
void fn_1_744(void) {
s16 var_r31 = BoardModelIDGet(lbl_1_data_118);
Hu3DModelLightInfoSet(var_r31, 1);
}
void fn_1_788(void) {
}
s32 fn_1_78C(void) {
s32 var_r30 = GWSystem.player_curr;
s32 var_r29 = GWPlayer[var_r30].space_curr;
s32 var_r28;
u32 temp_r3;
temp_r3 = BoardSpaceFlagGet(0, var_r29);
if ((temp_r3 & 2) != 0) {
fn_1_1E44();
return;
}
if ((temp_r3 & 0x40) != 0) {
var_r28 = (temp_r3 & 0x38) >> 3;
fn_1_4034(var_r28);
}
}
s32 fn_1_82C(void) {
s32 temp_r30;
BoardSpace* temp_r3;
temp_r30 = GWSystem.player_curr;
temp_r3 = BoardSpaceGet(0, GWPlayer[temp_r30].space_curr);
if ((temp_r3->flag & 1) != 0) {
fn_1_2C7C(0);
return 1;
}
if ((temp_r3->flag & 0x800) != 0) {
fn_1_2C7C(1);
return 1;
}
if (BoardPlayerSizeGet(temp_r30) == 2) {
return 0;
}
if (GWPlayer[temp_r30].bowser_suit != 0) {
return 0;
}
if ((u32) (temp_r3->flag & 4) != 0) {
fn_1_155C();
return 1;
}
return 0;
}
void fn_1_92C(void) {
fn_1_6B28();
fn_1_9680();
}
void fn_1_950(void) {
}
void fn_1_954(void) {
Vec sp14;
Vec sp8;
s32 var_r26;
u32 var_r28;
s32 temp_r27;
s32 var_r29;
s32 var_r31;
s32 temp_r30;
temp_r30 = GWSystem.player_curr;
if (BoardPlayerItemCount(temp_r30) == 3) {
BoardWinCreate(2, 0x270009, 7);
BoardWinWait();
BoardWinKill();
HuPrcEnd();
}
lbl_1_bss_8[0] = 0;
for (var_r31 = 1; var_r31 < 3;) {
lbl_1_bss_8[var_r31] = frandmod(0xE);
if ((lbl_1_bss_8[var_r31] == 0xA) || (lbl_1_bss_8[var_r31] == 0xD)) {
continue;
}
for (var_r29 = 0; var_r29 < var_r31; var_r29++) {
if (lbl_1_bss_8[var_r31] == lbl_1_bss_8[var_r29]) {
lbl_1_bss_8[var_r31] = -1;
}
}
if (lbl_1_bss_8[var_r31] == -1) {
continue;
}
var_r31++;
}
fn_1_74D0(&lbl_1_bss_8);
BoardWinCreateChoice(2, 0x27000A, 7, 0);
if (GWPlayer[temp_r30].com != 0) {
if (BoardComPreferItemCheck(temp_r30, lbl_1_bss_8[0], lbl_1_bss_8[1], lbl_1_bss_8[2]) != -1) {
BoardComKeySetLeft();
} else {
BoardComKeySetRight();
}
}
BoardWinWait();
BoardWinKill();
var_r28 = BoardWinChoiceGet();
if (var_r28 == 1 || var_r28 == -1) {
while ((u32) (fn_1_8884() & 0x10) == 0) {
HuPrcVSleep();
}
BoardWinCreate(2, 0x27000B, 7);
BoardWinWait();
BoardWinKill();
BoardMGExit();
fn_1_88B8();
fn_1_77B0();
fn_1_7314();
while (BoardMGDoneFlagGet() != 1) {
HuPrcVSleep();
}
BoardMGDoneFlagSet(0);
HuPrcEnd();
}
sp14.x = -30.0f;
sp14.y = sp14.z = 0.0f;
sp8.x = 0.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_14[0], &sp14, &sp8, 1250.0f, 25.0f, 0x15);
while ((fn_1_8884() & 0x10) == 0) {
HuPrcVSleep();
}
temp_r27 = GWPlayer[temp_r30].space_curr;
var_r26 = BoardSpaceLinkFlagSearch(0, temp_r27, 0x02000000);
BoardPlayerMoveBetween(temp_r30, temp_r27, var_r26);
while (GWPlayer[temp_r30].moving != 0) {
HuPrcVSleep();
}
BoardPlayerMotionStart(temp_r30, 1, 0x40000001);
fn_1_6B7C();
while (BoardEventFlagGet() != 0) {
HuPrcVSleep();
}
while ((GWPlayer[temp_r30].moving) != 0) {
HuPrcVSleep();
}
BoardPlayerMotionStart(temp_r30, 1, 0x40000001);
HuPrcEnd();
}
void fn_1_D4C(void) {
BoardWinKill();
CharModelDataClose(-1);
lbl_1_bss_4 = NULL;
}
void fn_1_D84(void) {
lbl_1_bss_4 = HuPrcChildCreate(fn_1_954, 0x2003U, 0x3000U, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_4, fn_1_D4C);
while (lbl_1_bss_4 != 0) {
HuPrcVSleep();
}
}
void fn_1_E04(void) {
HuPrcSleep(0x3C);
BoardMusStart(1, 0x23, 0x7F, 0);
HuPrcEnd();
}
void fn_1_E40(void) {
Vec sp20;
Vec sp14;
Vec sp8;
s32 temp_r30;
s32 temp_r29;
s32 temp_r3_2;
s32 temp_r31;
temp_r31 = GWSystem.player_curr;
fn_1_96B4();
BoardWinCreateChoice(2, 0x27000F, 7, 0);
if (GWPlayer[temp_r31].com != 0) {
if ((frand() & 1) != 0) {
BoardComKeySetLeft();
} else {
BoardComKeySetRight();
}
}
BoardWinWait();
BoardWinKill();
temp_r30 = BoardWinChoiceGet();
if ((temp_r30 == 1) || (temp_r30 == -1)) {
fn_1_9760();
BoardWinCreate(2, 0x270010, 7);
BoardWinWait();
BoardWinKill();
BoardMGExit();
while (BoardMGDoneFlagGet() != 1) {
HuPrcVSleep();
}
BoardMGDoneFlagSet(0);
return;
}
BoardAudSeqPause(0, 1, 0x3E8);
HuPrcChildCreate(fn_1_E04, 0x2003, 0x1000, 0, boardMainProc);
sp20.x = -35.0f;
sp20.y = sp20.z = 0.0f;
sp14.x = 0.0f;
sp14.y = 0.0f;
sp14.z = -250.0f;
BoardCameraMotionStartEx(lbl_1_bss_14[1], &sp20, &sp14, 1550.0f, 25.0f, 0x15);
temp_r29 = GWPlayer[temp_r31].space_curr;
temp_r3_2 = BoardSpaceLinkFlagSearch(0, temp_r29, 0x02000000);
BoardSpacePosGet(0, temp_r3_2, &sp8);
BoardPlayerMoveBetween(temp_r31, temp_r29, temp_r3_2);
while (GWPlayer[temp_r31].moving != 0) {
HuPrcVSleep();
}
BoardPlayerMotionStart(temp_r31, 1, 0x40000001);
fn_1_97AC();
while (GWPlayer[temp_r31].moving != 0) {
HuPrcVSleep();
}
while (BoardEventFlagGet() != 0) {
HuPrcVSleep();
}
while (GWPlayer[temp_r31].moving != 0) {
HuPrcVSleep();
}
BoardPlayerMotionStart(temp_r31, 1, 0x40000001);
}
s32 fn_1_1114(void) {
u32 temp_r31;
s16 var_r30 = GWPlayer[GWSystem.player_curr].space_curr;
temp_r31 = BoardSpaceFlagGet(0, var_r30) & 0x600000;
BoardDiceDigit2DShowSet(0);
if ((temp_r31 & 0x200000) != 0) {
lbl_1_bss_4 = HuPrcChildCreate(fn_1_954, 0x2003U, 0x3000U, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_4, fn_1_D4C);
while (lbl_1_bss_4 != 0) {
HuPrcVSleep();
}
} else if ((temp_r31 & 0x400000) != 0) {
fn_1_E40();
}
BoardDiceDigit2DShowSet(1);
}
s32 fn_1_1208(s16 arg0, f32 arg8, f32 arg9) {
f32 var_f29;
f32 var_f31;
s32 var_r31;
var_r31 = 0;
var_f31 = BoardModelRotYGet(arg0);
arg8 = fmod(arg8, 360.0);
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
if (arg8 < 0.0f) {
arg8 += 360.0f;
}
if (var_f31 != arg8) {
var_f29 = arg8 - var_f31;
if (var_f29 < 0.0f) {
var_f29 += 360.0f;
}
if (var_f29 < 180.0f) {
if (var_f29 > arg9) {
var_f31 = var_f31 + arg9;
} else {
var_f31 = arg8;
}
} else if ((360.0f - var_f29) > arg9) {
var_f31 = var_f31 - arg9;
} else {
var_f31 = arg8;
}
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
if (var_f31 >= 360.0f) {
var_f31 -= 360.0f;
}
BoardModelRotYSet(arg0, var_f31);
} else {
var_r31 = 1;
}
return var_r31;
}