cleanup a bit of w03

This commit is contained in:
Rainchus 2024-03-26 23:54:03 -05:00
parent 710a2cd1ba
commit 08594854de
8 changed files with 441 additions and 217 deletions

View file

@ -12,13 +12,72 @@
#include "game/pad.h"
#include "game/wipe.h"
//file is full of old names and old signatures...needs updating
//is also missing half the functions in this TU
//structs
typedef struct w03UnkStruct5 {
/* 0x00 */ struct {
u8 unk00_bit0 : 1;
u8 unk00_bit1 : 2;
u8 unk00_bit3 : 1;
u8 unk00_bit4 : 4;
};
/* 0x01 */ char unk_01[3];
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
} w03UnkStruct5;
typedef struct w03UnkStruct4 {
/* 0x00 */ struct {
u8 unk00_bit0 : 1;
};
} w03UnkStruct4;
typedef struct w03StructUnk3 {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s16 model;
/* 0x04 */ f32 unk_04;
/* 0x08 */ Vec unk_08;
/* 0x14 */ Vec unk_14;
} w03StructUnk3;
typedef struct w03StructUnk2 {
/* 0x00 */ struct {
u8 unkbit_00 : 1;
u8 unkbit_01 : 2;
u8 unkbit_03 : 1;
u8 unkbit_04 : 1;
};
s8 unk_01;
s8 unk_02;
u8 unk_03;
s16 model;
char unk_06[2];
w03StructUnk3* unk_08;
} w03StructUnk2;
//function signatures
void fn_1_313C(void);
void fn_1_3218(void);
void fn_1_3304(void);
s32 fn_1_3478(s32);
void fn_1_3814(s32);
void fn_1_3968(s32);
void fn_1_3E88(s32);
void fn_1_3F5C(s32);
void fn_1_4354(s32);
void fn_1_48EC(s32);
void fn_1_4A9C(void);
void fn_1_50D4(omObjData* arg0);
void fn_1_5838(s32);
void fn_1_5AC8(omObjData* arg0);
void fn_1_5C5C(omObjData* arg0, w03UnkStruct5* arg1);
void fn_1_602C(omObjData* arg0, w03UnkStruct5* arg1);
f32 fn_1_61A4(omObjData* arg0, w03UnkStruct5* arg1);
void fn_1_629C(s8 arg0);
s32 fn_1_62D0(void);
void fn_1_62FC(void);
//bss
float lbl_1_bss_80[20][2];
s8 lbl_1_bss_7D;
s8 lbl_1_bss_7C;
@ -26,12 +85,7 @@ omObjData *lbl_1_bss_78;
omObjData *lbl_1_bss_74;
Process* lbl_1_bss_70;
// #define MAKE_DATA_NUM(dir, file) (((dir) << 16)+(file))
// #define MAKE_DIR_NUM(dir) ((dir) << 16)
// #define DATA_NUM_LISTEND -1
//data
s16 lbl_1_data_310 = -1;
s16 lbl_1_data_312 = -1;
s16 lbl_1_data_314 = -1;
@ -63,19 +117,13 @@ s32 fn_1_309C(void) {
return lbl_1_bss_7C;
}
s32 fn_1_3478(s32);
void fn_1_3814(s32);
void fn_1_3968(s32);
void fn_1_3E88(s32);
void fn_1_3F5C(s32);
extern s8 lbl_1_bss_7C;
void fn_1_313C(void) {
s32 temp_r31;
temp_r31 = GWSystem.player_curr;
lbl_1_bss_7C = 0;
lbl_1_bss_0->unk3 = 1;
if (fn_1_3478(temp_r31) != 0) {
BoardCameraNearFarSet(500.0f, 20000.0f);
BoardStatusShowSetAll(0);
@ -84,6 +132,7 @@ void fn_1_313C(void) {
fn_1_3F5C(temp_r31);
lbl_1_bss_7C = 1;
}
BoardCameraNearFarSet(100.0f, 13000.0f);
fn_1_3814(temp_r31);
HuPrcEnd();
@ -95,14 +144,17 @@ void fn_1_3218(void) {
HuWinKill(lbl_1_data_316);
lbl_1_data_316 = -1;
}
if (lbl_1_data_314 != -1) {
BoardModelKill(lbl_1_data_314);
lbl_1_data_314 = -1;
}
if (lbl_1_data_312 != -1) {
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_312);
lbl_1_data_312 = -1;
}
lbl_1_bss_0->unk3 = 0;
lbl_1_bss_70 = 0;
}
@ -112,13 +164,13 @@ void fn_1_3304(void) {
Vec sp8;
f32 temp_f31;
s32 var_r31;
if (lbl_1_bss_0->unk1 != 0) {
var_r31 = BoardSpaceFlagSearch(0, 0x4000);
} else {
var_r31 = BoardSpaceFlagSearch(0, 0x8000);
}
var_r31 = BoardSpaceLinkFlagSearch(0, var_r31, 0x02000000);
BoardSpacePosGet(0, var_r31, &sp8);
temp_f31 = 0.0f;
@ -129,9 +181,6 @@ void fn_1_3304(void) {
BoardModelMotionStart(lbl_1_data_310, 2, 0x40000001);
}
void fn_1_4354(s32);
s32 fn_1_3478(s32 arg0) {
Vec sp38;
Vec sp2C;
@ -140,7 +189,6 @@ s32 fn_1_3478(s32 arg0) {
f32 sp18;
Vec sp14;
Vec sp8;
s32 temp_r28;
s32 temp_r3;
s32 var_r29;
@ -185,15 +233,16 @@ s32 fn_1_3478(s32 arg0) {
BoardWinCreate(2, 0x160010, 8);
BoardWinInsertMesSet(temp_r26, 3);
BoardWinWait();
if (BoardPlayerCoinsGet(arg0) < 5) {
BoardWinCreate(2, 0x160013, 8);
BoardWinWait();
BoardWinKill();
return 0;
}
var_r29 = 0;
goto test;
while (1) {
while (var_r29 == 0) {
BoardWinCreateChoice(2, 0x160011, 8, 0);
BoardWinAttrSet(0x10);
@ -217,22 +266,20 @@ s32 fn_1_3478(s32 arg0) {
BoardWinKill();
return 0;
}
test:
if (var_r29 != 0) {
BoardAudSeqPause(0, 1, 1000);
for (j = 0; j < 5; j++) {
BoardPlayerCoinsAdd(arg0, -1);
HuAudFXPlay(14);
HuPrcSleep(6);
}
HuAudFXPlay(15);
BoardWinKill();
return 1;
}
}
}
extern s8 lbl_1_bss_7C;
BoardAudSeqPause(0, 1, 1000);
for (j = 0; j < 5; j++) {
BoardPlayerCoinsAdd(arg0, -1);
HuAudFXPlay(14);
HuPrcSleep(6);
}
HuAudFXPlay(15);
BoardWinKill();
return 1;
}
void fn_1_3814(s32 arg0) {
Vec sp14;
@ -249,6 +296,7 @@ void fn_1_3814(s32 arg0) {
BoardCameraViewSet(1);
BoardCameraTargetPlayerSet(arg0);
if (lbl_1_bss_7C != 0) {
BoardSpacePosGet(0, GWPlayer[arg0].space_curr, &sp14);
BoardPlayerPosGet(arg0, &sp8);
@ -257,6 +305,7 @@ void fn_1_3814(s32 arg0) {
HuPrcVSleep();
}
}
BoardPlayerIdleSet(arg0);
BoardCameraMotionWait();
}
@ -304,6 +353,7 @@ void fn_1_3968(s32 arg0) {
sp24.y = temp_f28 + (-0.08166667f * (0.75f * (temp_f31 * temp_f31)));
PSVECAdd(&sp30, &sp24, &sp30);
temp_f30 = BoardVecDistXZCalc(&sp3C, &sp30);
if (temp_f30 < 5.0f) {
sp24.x = sp24.z = 0.0f;
sp30.x = sp3C.x;
@ -323,6 +373,7 @@ void fn_1_3968(s32 arg0) {
sp30.y = sp3C.y;
break;
}
BoardPlayerPosSetV(arg0, &sp30);
HuPrcVSleep();
sp8 += 1;
@ -357,11 +408,6 @@ void fn_1_3968(s32 arg0) {
}
}
void fn_1_48EC(s32); /* extern */
void fn_1_4A9C(void); /* extern */
void fn_1_5838(s32); /* extern */
s32 fn_1_62D0(void); /* extern */
void fn_1_3E88(s32 arg0) {
lbl_1_bss_7D = 0;
fn_1_48EC(arg0);
@ -370,15 +416,19 @@ void fn_1_3E88(s32 arg0) {
BoardStatusShowSetForce(arg0);
BoardStatusShowSet(arg0, 1);
WipeCreate(1, 0, 0x15);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
while (fn_1_62D0() != 3) {
HuPrcVSleep();
}
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
fn_1_4A9C();
BoardAudSeqPause(0, 0, 0x3E8);
}
@ -401,14 +451,17 @@ void fn_1_3F5C(s32 arg0) {
lbl_1_bss_0->unk1 = 1;
var_r30 = BoardSpaceFlagSearch(0, 0x4000);
}
temp_r28 = BoardSpaceLinkFlagSearch(0, var_r30, 0x02000000);
BoardCameraMoveSet(0);
BoardModelHookReset(lbl_1_data_310);
if (lbl_1_bss_0->unk1 != 0) {
var_r31 = BoardSpaceFlagSearch(0, 0x4000);
} else {
var_r31 = BoardSpaceFlagSearch(0, 0x8000);
}
var_r31 = BoardSpaceLinkFlagSearch(0, var_r31, 0x02000000);
BoardSpacePosGet(0, var_r31, &sp8);
temp_f31 = 0.0f;
@ -421,12 +474,14 @@ void fn_1_3F5C(s32 arg0) {
BoardModelRotYSet(lbl_1_data_310, 0.0f);
PSMTXIdentity(sp38);
BoardModelMtxSet(lbl_1_data_310, &sp38);
sp20.x = 0.0f;
sp20.y = 150.0f;
sp20.z = 0.0f;
sp14.x = -15.0f;
sp14.y = 0.0f;
sp14.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_data_310, &sp14, &sp20, 1900.0f, -1.0f, 1);
BoardSpacePosGet(0, temp_r28, &sp2C);
BoardPlayerPosSetV(arg0, &sp2C);
@ -441,9 +496,11 @@ void fn_1_3F5C(s32 arg0) {
HuPrcSleep(2);
BoardStatusItemSet(1);
WipeCreate(1, 0, 0x15);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
BoardWinCreate(2, 0x16000F, 8);
BoardWinWait();
BoardWinKill();
@ -464,39 +521,19 @@ void fn_1_4354(s32 arg0) {
} else if ((starPos == 0) || (starPos == 5) || (starPos == 6) || (starPos == 7)) {
var_r30 = 1;
}
if (BoardPlayerCoinsGet(arg0) < 0x14) {
var_r30 = 1;
}
if (var_r30 != 0) {
BoardComKeySetLeft();
return;
}
BoardComKeySetRight();
}
typedef struct w03StructUnk3 {
/* 0x00 */ s16 unk_00;
/* 0x02 */ s16 model;
/* 0x04 */ f32 unk_04;
/* 0x08 */ Vec unk_08;
/* 0x14 */ Vec unk_14;
} w03StructUnk3;
typedef struct w03StructUnk2 {
/* 0x00 */ struct {
u8 unkbit_00 : 1;
u8 unkbit_01 : 2;
u8 unkbit_03 : 1;
u8 unkbit_04 : 1;
};
s8 unk_01;
s8 unk_02;
u8 unk_03;
s16 model;
char unk_06[2];
w03StructUnk3* unk_08;
} w03StructUnk2;
char *lbl_1_data_34C[] = {
"jyanA",
"jyanB"
@ -536,12 +573,14 @@ void fn_1_4424(w03StructUnk2* arg0) {
sp14 = 0;
BoardSpaceFlagPosGet(0, 0x8000U, &sp6C);
BoardSpaceFlagPosGet(0, 0x8000U, &sp60);
if (lbl_1_bss_0->unk1 != 0) {
PSVECSubtract(&sp6C, &sp60, &sp3C);
} else {
PSVECSubtract(&sp60, &sp6C, &sp3C);
}
sp10_2 = 180.0f * (atan2(-sp3C.x, -sp3C.z) / 3.141592653589793);
sp10_2 = 180.0f * (atan2(-sp3C.x, -sp3C.z) / M_PI);
BoardModelMotionStart(lbl_1_data_314, 0, 0U);
BoardModelMotionSpeedSet(lbl_1_data_314, 8.0f);
HuPrcSleep(1);
@ -552,10 +591,12 @@ void fn_1_4424(w03StructUnk2* arg0) {
sp24.x = 0.0f;
sp24.y = 1.0f;
sp24.z = 0.0f;
for (i = var_r25 = 0; i < 20;) {
Hu3DMotionExec(temp_r23, temp_r28->unk_08, temp_r28->unk_64, 0);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_314), temp_r22, &sp54);
temp_r28->unk_64 = (f32) (temp_r28->unk_64 + temp_r28->unk_68);
if (temp_r28->unk_64 > 400.0f) {
break;
}
@ -587,11 +628,10 @@ void fn_1_4424(w03StructUnk2* arg0) {
sp48 = sp54;
var_r25++;
}
arg0->unk_03 = i;
}
void fn_1_50D4(omObjData* arg0);
void fn_1_48EC(s32 arg0) {
Vec spC;
omObjData* obj;
@ -616,7 +656,7 @@ void fn_1_48EC(s32 arg0) {
BoardModelLayerSet(temp_r31->model, 2U);
memset(temp_r31->unk_08, 0, 0xA00U);
for (i = 0; i < 0x50; i++) {
for (i = 0; i < 80; i++) {
temp_r30 = &temp_r31->unk_08[i];
temp_r30->model = BoardModelCreate(0x70009, 0, 1);
BoardModelVisibilitySet(temp_r30->model, 0);
@ -626,14 +666,8 @@ void fn_1_48EC(s32 arg0) {
fn_1_4424(temp_r31);
}
typedef struct w03UnkStruct4 {
/* 0x00 */ struct {
u8 unk00_bit0 : 1;
};
} w03UnkStruct4;
void fn_1_4A9C(void) {
((w03UnkStruct4*)&lbl_1_bss_74->work[0])->unk00_bit0 = 1;
OM_GET_WORK_PTR(lbl_1_bss_74, w03UnkStruct4)->unk00_bit0 = 1;
}
void fn_1_4ABC(w03StructUnk2* arg0) {
@ -666,7 +700,7 @@ void fn_1_4ABC(w03StructUnk2* arg0) {
BoardModelPosGet(lbl_1_data_310, &sp8);
for (i = arg0->unk_03; i < 0x50; i++) {
for (i = arg0->unk_03; i < 80; i++) {
temp_r31 = &arg0->unk_08[i];
if (temp_r31->unk_00 == 1) {
temp_r31->unk_04 += 1.0f;
@ -690,15 +724,13 @@ void fn_1_4ABC(w03StructUnk2* arg0) {
}
}
extern omObjData* lbl_1_bss_74;
s32 fn_1_4D0C(w03StructUnk3** arg0, s16* arg1) {
w03StructUnk2* temp_r31;
if (!(lbl_1_bss_74)) {
return 0;
}
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_74, w03StructUnk2);
*arg0 = temp_r31->unk_08;
*arg1 = temp_r31->unk_03;
@ -716,15 +748,15 @@ void fn_1_4D60(w03StructUnk2* arg0) {
if (arg0->unk_02 == 1) {
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[2]), "coin", &sp8);
for (i = 0; i < 5; i++) {
for (j = arg0->unk_03; j < 0x50; j++) {
for (j = arg0->unk_03; j < 80; j++) {
temp_r31 = &arg0->unk_08[j];
if (temp_r31->unk_00 == 0) {
temp_r31->unk_00 = 1;
temp_f31 = 360.0f * BoardRandFloat();
temp_f30 = 5.0f * BoardRandFloat();
temp_r31->unk_14.x = temp_f30 * sin((3.141592653589793 * temp_f31) / 180.0);
temp_r31->unk_14.x = temp_f30 * sin((M_PI * temp_f31) / 180.0);
temp_r31->unk_14.y = 50.0f + (20.0f * BoardRandFloat());
temp_r31->unk_14.z = temp_f30 * cos((3.141592653589793 * temp_f31) / 180.0);
temp_r31->unk_14.z = temp_f30 * cos((M_PI * temp_f31) / 180.0);
temp_r31->unk_08.x = sp8.x;
temp_r31->unk_08.y = sp8.y;
temp_r31->unk_08.z = sp8.z;
@ -753,8 +785,10 @@ void fn_1_4F24(w03StructUnk2* arg0) {
} else {
var_r30 = sp8[GWPlayer[arg0->unkbit_01].rank];
}
temp_r29 = BoardRandMod(100);
temp_r28 = BoardRandMod(100);
if (temp_r29 < var_r30) {
if (temp_r28 < 30) {
arg0->unk_02 = 2;
@ -764,6 +798,7 @@ void fn_1_4F24(w03StructUnk2* arg0) {
} else {
arg0->unk_02 = 0;
}
if (arg0->unk_02 != 0) {
BoardModelMotionShiftSet(lbl_1_bss_C[2], 0, 101.0f, 10.0f, 0);
}
@ -789,8 +824,9 @@ void fn_1_50D4(omObjData* arg0) {
w03StructUnk3* temp;
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_74, w03StructUnk2);
if ((temp_r31->unkbit_00 != 0) || (BoardIsKill() != 0)) {
for (i = 0; i < 0x50; i++) {
for (i = 0; i < 80; i++) {
temp = &temp_r31->unk_08[i];
BoardModelKill(temp->model);
}
@ -817,7 +853,7 @@ void fn_1_50D4(omObjData* arg0) {
temp_r31->unk_01 = 1;
}
} else {
fn_1_4F24(temp_r31); //inline
fn_1_4F24(temp_r31);
}
if (temp_r31->unk_01 != 0) {
@ -841,7 +877,7 @@ void fn_1_50D4(omObjData* arg0) {
}
if (temp_r31->unk_02 == 1) {
omVibrate(GWSystem.player_curr, 0xC, 4, 2);
fn_1_4D60(temp_r31); //inline
fn_1_4D60(temp_r31);
} else if ((temp_r31->unk_02 == 2) && (temp_r31->unkbit_03 == 0)) {
omVibrate(GWSystem.player_curr, 0xC, 0xC, 0);
BoardModelVisibilitySet(temp_r31->model, 1);
@ -867,25 +903,6 @@ void fn_1_50D4(omObjData* arg0) {
}
}
typedef struct w03UnkStruct5 {
/* 0x00 */ struct {
u8 unk00_bit0 : 1;
u8 unk00_bit1 : 2;
u8 unk00_bit3 : 1;
u8 unk00_bit4 : 4;
};
/* 0x01 */ char unk_01[3];
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
} w03UnkStruct5;
void fn_1_5AC8(omObjData* arg0);
void fn_1_5C5C(omObjData* arg0, w03UnkStruct5* arg1);
void fn_1_602C(omObjData* arg0, w03UnkStruct5* arg1);
f32 fn_1_61A4(omObjData* arg0, w03UnkStruct5* arg1);
void fn_1_629C(s8 arg0);
void fn_1_62FC(void);
void fn_1_5838(s32 arg0) {
Vec sp18;
Vec spC;
@ -899,6 +916,7 @@ void fn_1_5838(s32 arg0) {
temp_r31->unk00_bit1 = arg0;
temp_r31->unk00_bit4 = 1;
temp_r31->unk00_bit3 = 0;
switch (GWPlayer[temp_r31->unk00_bit1].diff) {
case 0:
temp_r31->unk_08 = (-15.0f + (-30.0f * BoardRandFloat()));
@ -913,13 +931,16 @@ void fn_1_5838(s32 arg0) {
temp_r31->unk_08 = 0.0f;
break;
}
BoardCameraMoveSet(0);
sp18.x = 0.0f;
sp18.y = -350.0f;
sp18.z = 0.0f;
spC.x = -20.0f;
spC.y = 0.0f;
spC.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_data_310, &spC, &sp18, 3000.0f, -1.0f, 1);
BoardModelMotionStart(lbl_1_data_310, 3, 0x40000001U);
BoardModelMotionStart(lbl_1_data_314, 0, 0U);
@ -934,6 +955,7 @@ void fn_1_5AC8(omObjData* arg0) {
w03UnkStruct5* temp_r31;
temp_r31 = OM_GET_WORK_PTR(arg0, w03UnkStruct5);
if ((temp_r31->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
lbl_1_bss_78 = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
@ -943,9 +965,11 @@ void fn_1_5AC8(omObjData* arg0) {
}
return;
}
if ((10.0f == BoardModelMotionTimeGet(lbl_1_data_310)) || (50.0f == BoardModelMotionTimeGet(lbl_1_data_310))) {
HuAudFXPlay(0x43B);
}
switch (temp_r31->unk00_bit4) {
case 1:
if (lbl_1_bss_7D != 0) {
@ -992,33 +1016,42 @@ void fn_1_5C5C(omObjData* arg0, w03UnkStruct5* arg1) {
fn_1_629C(3);
return;
}
if ((BoardModelMotionTimeGet(lbl_1_data_314) >= 410.0f) && (arg1->unk00_bit3) == 0) {
WipeColorSet(0, 0, 0);
WipeCreate(2, 0, -1);
arg1->unk00_bit3 = 1;
BoardAudSeqFadeOut(1, 0x3E8);
}
sp38.x = arg0->rot.x;
sp38.y = arg0->rot.y;
sp38.z = arg0->rot.z;
temp_r3 = BoardModelIDGet(lbl_1_data_314);
temp_r30 = &Hu3DData[temp_r3];
temp_r27 = lbl_1_data_35C[lbl_1_bss_0->unk1];
Hu3DMotionExec(temp_r3, temp_r30->unk_08, temp_r30->unk_64, 0);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_314), temp_r27, &sp44);
if (0.0f != temp_r30->unk_64) {
PSVECSubtract(&sp38, &sp44, &sp2C);
} else {
sp2C.x = sp2C.y = sp2C.z = 0.0f;
}
arg0->rot.x = sp44.x;
arg0->rot.y = sp44.y;
arg0->rot.z = sp44.z;
fn_1_602C(arg0, arg1);
sp8 = sp38;
sp14 = sp44;
sp20.x = sp20.z = 0.0f;
sp20.y = 1.0f;
BoardMTXCalcLookAt(sp110, &sp14, &sp20, &sp8);
PSMTXTranspose(sp110, sp110);
MTXRotDeg(spE0, 'z', -arg1->unk_04);
@ -1045,16 +1078,20 @@ void fn_1_602C(omObjData* arg0, w03UnkStruct5* arg1) {
} else {
var_f30 = fn_1_61A4(arg0, arg1);
}
temp_f31 = 0.625f * var_f30;
if (temp_f31 < 0.0f) {
var_f29 = -temp_f31;
} else {
var_f29 = temp_f31;
}
if (var_f29 < 2.0f) {
arg1->unk_04 *= 0.97f;
return;
}
BoardDAngleCalcRange(&arg1->unk_04, temp_f31, 1.0f);
}
@ -1081,6 +1118,7 @@ f32 fn_1_61A4(omObjData* arg0, w03UnkStruct5* arg1) {
return -1.5f * temp_r31[2];
}
}
return 0.0f;
}
@ -1095,15 +1133,15 @@ s32 fn_1_62D0(void) {
}
void fn_1_62FC(void) {
f32 sp8[2];
f32 widthHeight[2];
s32 messageID = 0x000D0005;
f32 temp0;
f32 temp1;
f32 x;
f32 y;
HuWinMesMaxSizeGet(1, sp8, messageID);
temp0 = -10000.0f;
temp1 = 392.0f;
lbl_1_data_316 = HuWinCreate(temp0, temp1, sp8[0], sp8[1], 0);
HuWinMesMaxSizeGet(1, widthHeight, messageID);
x = -10000.0f;
y = 392.0f;
lbl_1_data_316 = HuWinCreate(x, y, widthHeight[0], widthHeight[1], 0);
HuWinBGTPLvlSet(lbl_1_data_316, 0.0f);
HuWinMesSpeedSet(lbl_1_data_316, 0);
HuWinMesSet(lbl_1_data_316, messageID);

View file

@ -19,25 +19,25 @@
#include "math.h"
#include "game/hsfman.h"
void fn_1_740(void);
//function signatures
void fn_1_E0(void);
s32 fn_1_2930(s32 arg0);
void fn_1_884(void);
void fn_1_740(void);
void fn_1_8F0(void);
s32 fn_1_910(void);
s32 fn_1_A74(void);
void fn_1_AF8(void);
void fn_1_DEC(void);
void fn_1_10B0(void);
s32 fn_1_12C8(void);
s32 fn_8006DDE8(s16, f32);
void fn_1_10E4(omObjData* arg0);
s32 fn_1_12C8(void);
s32 fn_1_2930(s32 arg0);
typedef void (*VoidFunc)(void);
extern const VoidFunc _ctors[];
extern const VoidFunc _dtors[];
//DATA
//data
w03StructUnk0 lbl_1_data_0[] = {
{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0004)},
{{145.0988f, 65.6173f, -2004.14f}, {0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}, DATA_MAKE_NUM(DATADIR_W03, 0x0005)},
@ -125,26 +125,31 @@ void BoardCreate(void) {
lbl_1_bss_0 = (w03State*)&GWSystem.board_data;
lbl_1_bss_0->unk3 = 0;
BoardSpaceInit(0x770000);
lbl_1_data_1E0 = BoardModelCreate(0x770001, NULL, 0);
fn_8006DDE8(lbl_1_data_1E0, -1.0f);
BoardModelPosSet(lbl_1_data_1E0, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_1E0, 0, 0x40000001);
lbl_1_data_1E8 = BoardModelCreate(0x770003, NULL, 0);
fn_8006DDE8(lbl_1_data_1E8, -1.0f);
BoardModelPosSet(lbl_1_data_1E8, 0.0f, 0.0f, 0.0f);
BoardModelLayerSet(lbl_1_data_1E8, 2);
lbl_1_data_1E2 = BoardModelCreate(0x770002, NULL, 0);
fn_8006DDE8(lbl_1_data_1E2, -1.0f);
BoardModelPosSet(lbl_1_data_1E2, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_1E2, 0, 0x40000001);
lbl_1_data_1E4 = BoardModelCreate(0x77001B, lbl_1_data_20C, 0);
BoardModelPosSet(lbl_1_data_1E4, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_1E4, 1, 0x40000001);
lbl_1_data_1E6 = BoardModelCreate(0x2000D, lbl_1_data_214, 0);
BoardModelPosSet(lbl_1_data_1E6, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(lbl_1_data_1E6, 1, 0x40000001);
for (i = 0; i < 12; i++) {
for (i = 0; i < ARRAY_COUNT(lbl_1_data_0); i++) {
temp_r30 = &lbl_1_data_0[i];
if (temp_r30->datanum != -1) {
if ((i == 10) || (i == 11)) {
@ -159,15 +164,18 @@ void BoardCreate(void) {
BoardModelVisibilitySet(lbl_1_bss_C[i], 1);
}
}
BoardModelMotionStart(lbl_1_bss_C[10], 1, 0x40000001);
BoardModelMotionStart(lbl_1_bss_C[11], 1, 0x40000001);
BoardModelMotionStart(lbl_1_bss_C[7], 0, 0x40000002);
BoardModelMotionStart(lbl_1_bss_C[9], 0, 0x40000002);
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0x40000002);
fn_1_3058();
fn_1_6494();
fn_1_7ABC();
fn_1_9A7C();
BoardLightHookSet(&fn_1_884, &fn_1_8F0);
BoardSpaceWalkEventFuncSet(&fn_1_910);
BoardSpaceWalkMiniEventFuncSet((void*)&fn_1_A74);
@ -180,6 +188,7 @@ void BoardCreate(void) {
BoardJunctionMaskSet(0x3000);
fn_1_CF4();
BoardModelMotionStart(lbl_1_bss_C[0], 0, 0x40000001);
if (lbl_1_bss_0->unk0 != 0) {
var_f30 = lbl_1_data_1EC.unk_10;
var_f31 = lbl_1_data_1EC.unk_14;
@ -189,10 +198,12 @@ void BoardCreate(void) {
var_f31 = lbl_1_data_1EC.unk_04;
fn_1_63F4(1);
}
BoardModelMotionStartEndSet(lbl_1_bss_C[0], var_f30, var_f31);
BoardModelMotionStart(lbl_1_bss_C[2], 0, 0x40000001);
BoardModelMotionStartEndSet(lbl_1_bss_C[2], 1, 0x64);
BoardModelMotionStartEndSet(lbl_1_bss_C[2], 1, 100);
fn_1_785C();
if (lbl_1_bss_0->unk2 != 0) {
for (i = 0; i < 4; i++) {
if ((lbl_1_bss_0->unk2 & (1 << i)) != 0) {
@ -201,6 +212,7 @@ void BoardCreate(void) {
}
}
}
fn_1_DEC();
}
@ -210,22 +222,27 @@ void BoardDestroy(void) {
fn_1_10B0();
fn_1_9A9C();
fn_1_7B58();
for (i = 0; i < 0x0C; i++) {
BoardModelKill(lbl_1_bss_C[i]);
lbl_1_bss_C[i] = -1;
}
if (lbl_1_data_1E6 != -1) {
BoardModelKill(lbl_1_data_1E6);
lbl_1_data_1E6 = -1;
}
if (lbl_1_data_1E4 != -1) {
BoardModelKill(lbl_1_data_1E4);
lbl_1_data_1E4 = -1;
}
if (lbl_1_data_1E0 != -1) {
BoardModelKill(lbl_1_data_1E0);
lbl_1_data_1E0 = -1;
}
if (lbl_1_data_1E2 != -1) {
BoardModelKill(lbl_1_data_1E2);
lbl_1_data_1E2 = -1;
@ -250,6 +267,7 @@ s32 fn_1_910(void) {
cur_player_index = GWSystem.player_curr;
space = GWPlayer[cur_player_index].space_curr;
temp_r3 = BoardSpaceFlagGet(0, space);
if (temp_r3 & 0xC000) {
if ((BoardPlayerSizeGet(cur_player_index) == 2) || ((u8) (( GWPlayer[cur_player_index].bowser_suit)))) {
return 0;
@ -265,18 +283,21 @@ s32 fn_1_910(void) {
return fn_1_309C();
}
if (temp_r3 & 0x200) {
if ((BoardPlayerSizeGet(cur_player_index) == 2) || ((u8) ((GWPlayer[cur_player_index].bowser_suit)) != 0)) {
return 0;
}
return fn_1_675C();
}
return 0;
}
s32 fn_1_A74(void) {
s16 space = GWPlayer[GWSystem.player_curr].space_curr;
u32 var = BoardSpaceFlagGet(0, space) & 0x600000;
if (var + -0x200000 == 0) {
fn_1_7BA8();
return;
@ -311,8 +332,10 @@ void fn_1_B5C(s32 arg0) {
var_f28 = lbl_1_data_1EC.unk_04;
fn_1_63F4(1);
}
BoardModelMotionStart(lbl_1_bss_C[0], 0, 0);
BoardModelMotionTimeSet(lbl_1_bss_C[0], var_f30);
while (1) {
temp = BoardModelMotionTimeGet(lbl_1_bss_C[0]);
if (temp >= var_f29) {
@ -320,6 +343,7 @@ void fn_1_B5C(s32 arg0) {
}
HuPrcVSleep();
}
BoardModelAttrSet(lbl_1_bss_C[0], 0x40000001);
BoardModelMotionTimeSet(lbl_1_bss_C[0], var_f31);
BoardModelMotionStartEndSet(lbl_1_bss_C[0], var_f31, var_f28);
@ -367,7 +391,8 @@ void fn_1_DEC(void) {
BoardCameraPosGet(&sp20);
BoardCameraDirGet(&sp14);
HuAudFXListnerSetEX(&sp20, &sp14, 4800.0f, 36000.0f, 0.0f, 1200.0f, 1200.0f);
for (i = 0; i < 4; i++) {
for (i = 0; i < ARRAY_COUNT(lbl_1_data_22C); i++) {
sp8.x = lbl_1_data_22C[i].x - 3600.0f;
sp8.y = lbl_1_data_22C[i].y;
sp8.z = lbl_1_data_22C[i].z - 3600.0f;
@ -410,6 +435,7 @@ void fn_1_10E4(omObjData* arg0) {
w03UnkStruct2* temp_r29;
temp_r29 = OM_GET_WORK_PTR(arg0, w03UnkStruct2);
if (temp_r29->unk0 != 0 || (BoardIsKill() != 0)) {
for (i = 0; i < ARRAY_COUNT(lbl_1_data_21C); i++) {
if (lbl_1_data_21C[i] != -1) {
@ -421,6 +447,7 @@ void fn_1_10E4(omObjData* arg0) {
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
BoardCameraDirGet(&sp8);
BoardCameraTargetGet(&sp14);
@ -433,6 +460,7 @@ void fn_1_10E4(omObjData* arg0) {
}
sp14.y += 2000.0f;
if (_CheckFlag(0x10010) == 0) {
if (lbl_1_bss_8 == 0) {
HuAudFXPauseAll(1);
@ -442,5 +470,6 @@ void fn_1_10E4(omObjData* arg0) {
HuAudFXPauseAll(0);
lbl_1_bss_8 = 0;
}
HuAudFXListnerUpdate(&sp14, &sp8);
}

View file

@ -6,10 +6,11 @@
#include "game/board/model.h"
#include "game/board/player.h"
#include "game/board/space.h"
#include "game/minigame_seq.h"
#include "game/hsfdraw.h"
#include "game/pad.h"
extern u16 HuPadBtnDown[4];
extern s16 lbl_1_bss_C[14];
//structs
typedef struct someBits3 { //make sure this is defined correctly
/* 0x00 */ struct {
u8 unk00_bit0 : 1;
@ -63,21 +64,13 @@ void fn_1_9474(s32 arg0);
void fn_1_97F8(s32 arg0);
void fn_1_9A1C(unkTemp2* arg0);
double sin(double x);
double cos(double x);
double atan2(double y, double x);
extern s16 MGSeqCreate(s32, ...);
u8 MGSeqStatGet(s16);
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
//DATA
//data
s32 lbl_1_data_450 = -1;
s16 lbl_1_data_454 = -1;
s16 lbl_1_data_456 = -1;
s16 lbl_1_data_458 = -1;
s32 lbl_1_data_45C[] = {0x00770021, 0x00770022, -1};
//BSS
char lbl_1_bss_150[0x30];
s16 lbl_1_bss_14E;
@ -86,7 +79,6 @@ omObjData* lbl_1_bss_148;
omObjData* lbl_1_bss_144;
Process* lbl_1_bss_140;
void fn_1_7ABC(void) {
lbl_1_data_456 = BoardModelCreate(0x770020, lbl_1_data_45C, 0);
BoardModelHookSet(lbl_1_bss_C[7], "phei", lbl_1_data_456);
@ -146,24 +138,30 @@ s32 fn_1_7D18(s32 arg0) {
f32 arctan;
BoardWinCreateChoice(2, 0x160015, 2, 0);
if (GWPlayer[arg0].com != 0) {
BoardComKeySetLeft();
}
BoardWinWait();
BoardWinKill();
if (BoardWinChoiceGet() != 0) {
BoardWinCreate(2, 0x160018, 2);
BoardWinWait();
BoardWinKill();
return 0;
}
BoardAudSeqPause(0, 1, 1000);
sp14.x = 0.0f;
sp14.y = 200.0f;
sp14.z = 0.0f;
sp8.x = -10.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_C[7], &sp8, &sp14, 1500.0f, -1.0f, 0x15);
space = GWPlayer[arg0].space_curr;
temp_r28 = BoardSpaceLinkFlagSearch(0, space, 0x02000000);
@ -175,15 +173,19 @@ s32 fn_1_7D18(s32 arg0) {
HuPrcSleep(0x1E);
model = BoardModelIDGet(lbl_1_bss_C[7]);
Hu3DModelObjPosGet(model, "phei", &sp38);
if (GWPlayer[arg0].character == 5) {
var_f31 = 54.000004f;
} else {
var_f31 = 39.0f;
}
sp38.x = sp38.x + (var_f31 * sin((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
sp38.z = sp38.z + (var_f31 * cos((M_PI * (180.0f + BoardModelRotYGet(lbl_1_data_456))) / 180.0));
BoardPlayerPosGet(arg0, &sp2C);
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
while (GWPlayer[arg0].moving != 0) {
BoardModelPosGet(lbl_1_bss_C[10], &sp2C);
BoardPlayerPosGet(arg0, &sp38);
@ -192,10 +194,13 @@ s32 fn_1_7D18(s32 arg0) {
BoardModelRotYSet(lbl_1_bss_C[10], arctan);
HuPrcVSleep();
}
BoardPlayerMotBlendSet(arg0, -0x2D, 7);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
return 1;
}
@ -205,14 +210,18 @@ void fn_1_8140(s32 arg0) {
fn_1_81E0(arg0);
BoardMusStart(1, 0x16, 0x7F, 0);
temp_r31 = MGSeqCreate(3, 0);
while (MGSeqStatGet(temp_r31)) {
HuPrcVSleep();
}
fn_1_9384();
fn_1_84A8(0);
while (lbl_1_bss_144) {
HuPrcVSleep();
}
fn_1_91B8();
}
@ -325,10 +334,12 @@ void fn_1_8530(omObjData* arg0) {
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if (temp_r31->unk1 != 0) {
temp_r31->unk1--;
return;
}
switch (temp_r31->unk00_bit1) {
case 0:
fn_1_8698(arg0, temp_r31);
@ -364,13 +375,15 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
arg1->unk_04 = -1;
arg1->unk00_bit1 = 1;
temp = BoardModelMotionTimeGet(lbl_1_bss_C[7]);
if (temp == 0.0f) {
temp = 1.0f;
}
if (lbl_1_bss_14E > 30) {
lbl_1_bss_14E = 30;
}
//temp2 =
OSu16tof32((u16*)&lbl_1_bss_14E, &arg0->rot.x); //??
BoardModelAttrReset(lbl_1_data_456, 0x40000002);
BoardModelAttrReset(lbl_1_bss_C[7], 0x40000002);
@ -390,6 +403,7 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
BoardCameraMotionStartEx(-1, 0, 0, 1900.0f, -1.0f, 0x15);
return;
}
MGSeqParamSet(arg1->unk_04, 1, arg1->unk2);
arg1->unk3 = 60;
}
@ -397,8 +411,10 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
var_r26 = GWPlayer[arg1->unk00_bit5].port;
var_r28 = 0;
if ((GWPlayer[arg1->unk00_bit5].com) != 0) {
temp_r27 = BoardRandMod(100);
switch (GWPlayer[arg1->unk00_bit5].diff) {
case 0:
if (temp_r27 < 12) {
@ -422,6 +438,7 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
} else {
var_r28 = HuPadBtnDown[var_r26] & 0x100;
}
if ((var_r28 & 0x100)) {
arg0->trans.y += 0.5f;
if (arg0->trans.y > 2.0f) {
@ -444,19 +461,22 @@ void fn_1_8698(omObjData* arg0, someBits3* arg1) {
}
}
}
if ((lbl_1_data_450 != -1) && (HuAudFXStatusGet(lbl_1_data_450) == 0)) {
lbl_1_data_450 = -1;
}
arg0->trans.x += arg0->trans.y;
if (arg0->trans.x > 3.0f) {
arg0->trans.x = 3.0f;
}
BoardPlayerMotionSpeedSet(arg1->unk00_bit5, arg0->trans.x);
BoardModelMotionSpeedSet(lbl_1_data_456, arg0->trans.x);
}
s8 lbl_1_data_4B0 = -1;
s32 lbl_1_data_4B4[] = {
0x00000440,
0x00000441,
@ -465,7 +485,6 @@ s32 lbl_1_data_4B4[] = {
0x00000444
};
void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
Point3d spC;
f32 temp_f31;
@ -474,6 +493,7 @@ void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
BoardModelPosGet(lbl_1_data_456, &spC);
spC.y += 1.6666666f;
if (spC.y >= (arg0->trans.z + arg0->rot.y)) {
spC.y = arg0->trans.z + arg0->rot.y;
BoardModelMotionSpeedSet(lbl_1_bss_C[10], 0.0f);
@ -484,14 +504,17 @@ void fn_1_8C08(omObjData* arg0, someBits3* arg1) {
arg1->unk1 = 0x3C;
arg1->unk2 = 0;
}
BoardModelPosSetV(lbl_1_data_456, &spC);
temp_f30 = arg0->scale.x * ((spC.y - arg0->trans.z) / 500.0f);
OSf32tos8(&temp_f30, &temp_r27);
temp_r27 = temp_r27 / 30;
if (lbl_1_data_4B0 != temp_r27) {
lbl_1_data_4B0 = temp_r27;
HuAudFXPlay(lbl_1_data_4B4[temp_r27]);
}
BoardModelMotionTimeSet(lbl_1_bss_C[7], temp_f30);
BoardModelMotionTimeSet(lbl_1_bss_C[10], 0.2f * temp_f30);
BoardPlayerMotionTimeSet(arg1->unk00_bit5, 2.0f * temp_f30);
@ -511,9 +534,12 @@ void fn_1_8E44(omObjData* arg0, someBits3* arg1) {
}
BoardAudSeqFadeOut(1, 0x3E8);
}
OSu8tof32(&arg1->unk2, &temp_f31);
BoardModelPosGet(lbl_1_data_456, &sp8);
sp8.y = (sp8.y + (-0.08166666666666668 * temp_f31 * temp_f31));
if (sp8.y < arg0->trans.z) {
sp8.y = arg0->trans.z;
arg1->unk00_bit1 = 3;
@ -527,6 +553,7 @@ void fn_1_8E44(omObjData* arg0, someBits3* arg1) {
HuAudFXPlay(0x449);
BoardAudSeqPause(0, 0, 0x3E8);
}
arg1->unk2 += 1;
BoardModelPosSetV(lbl_1_data_456, &sp8);
}
@ -536,6 +563,7 @@ void fn_1_9044(omObjData* arg0, someBits3* arg1) {
BoardModelRotGet(lbl_1_data_456, &sp8);
arg0->trans.y = BoardDAngleCalc(arg0->trans.y + arg0->trans.z);
if (arg0->trans.y <= 2.0f) {
if (arg0->trans.y >= -2.0) {
arg0->trans.x *= 0.5f;
@ -547,6 +575,7 @@ void fn_1_9044(omObjData* arg0, someBits3* arg1) {
}
}
}
sp8.z = arg0->trans.x * sin((M_PI * arg0->trans.y) / 180.0);
BoardModelRotSetV(lbl_1_data_456, &sp8);
}
@ -559,6 +588,7 @@ void fn_1_91B8(void) {
if (lbl_1_bss_14E == 0) {
lbl_1_bss_14E = 1;
}
temp_r3 = lbl_1_bss_14E / 6;
lbl_1_bss_14C = lbl_1_data_4C8[temp_r3];
}
@ -576,6 +606,7 @@ void fn_1_9230(s32 arg0) {
BoardCameraTargetPlayerSet(arg0);
BoardCameraViewSet(1);
BoardPlayerPosLerpStart(arg0, &sp20, &sp14, 0x14);
while (GWPlayer[arg0].moving != 0) {
BoardModelPosGet(lbl_1_bss_C[10], &sp20);
BoardPlayerPosGet(arg0, &sp14);
@ -584,6 +615,7 @@ void fn_1_9230(s32 arg0) {
BoardModelRotYSet(lbl_1_bss_C[10], rotY);
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_C[10], 0.0f);
BoardCameraMotionWait();
}
@ -608,18 +640,24 @@ void fn_1_9474(s32 arg0) {
BoardWinWait();
BoardWinKill();
BoardPlayerMotBlendSet(arg0, 0, 0xF);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
fn_1_97F8(arg0);
while (lbl_1_bss_148) {
HuPrcVSleep();
}
BoardPlayerMotionShiftSet(arg0, 7, 0.0f, 8.0f, 0U);
HuPrcSleep(8);
while (BoardPlayerMotionEndCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardWinCreate(2, 0x160018U, 2);
BoardWinWait();
BoardWinKill();
@ -638,6 +676,7 @@ void fn_1_95B8(omObjData* arg0) {
s32 temp;
temp_r29 = OM_GET_WORK_PTR(arg0, unkTemp2);
if ((temp_r29->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
fn_1_9A1C(temp_r29);
HuMemDirectFree((void*)temp_r29->unk_0C);
@ -645,6 +684,7 @@ void fn_1_95B8(omObjData* arg0) {
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
var_r30 = temp_r29->unk_0C;
for (var_r27 = i = 0; i < 20; i++, var_r30++) {
@ -657,6 +697,7 @@ void fn_1_95B8(omObjData* arg0) {
temp_r29->unk00_bit0 = 1;
return;
}
var_r25 = 0;
for (i = 0; i < 20; i++) {
var_r30 = &temp_r29->unk_0C[i];
@ -704,6 +745,7 @@ void fn_1_97F8(s32 arg0) {
BoardPlayerPosGet(arg0, &sp8);
temp_r30->unk8 = (80.0f + sp8.y);
memset(temp_r30->unk_0C, 0, 0x190);
for (i = 0; i < lbl_1_bss_14C; i++) {
if (i == 0) {
var_f31 = 0.0f;
@ -730,5 +772,3 @@ void fn_1_9A1C(unkTemp2* arg0) {
BoardModelKill(temp->unk_02);
}
}
char mg_pad[] = "\0\0\0\0\0\0";

View file

@ -13,10 +13,9 @@
#include "math.h"
#include "game/hsfman.h"
#include "dolphin/os/OSFastCast.h"
double sin(double x);
double cos(double x);
double atan2(double y, double x);
#include "game/minigame_seq.h"
#include "game/hsfdraw.h"
#include "game/hsfmotion.h"
typedef struct someBits {
/* 0x00 */ struct {
@ -63,12 +62,6 @@ extern u16 HuPadBtnDown[4];
//function signatures
s32 BoardVecDAngleCalcRange(float *value, float min, float range);
void BoardCameraQuakeSet(s32 duration, float strength);
s16 MGSeqCreate(s32, ...);
u8 MGSeqStatGet(s16);
s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist);
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
s16 Hu3DMotionShiftIDGet(s16 arg0);
s32 frand(void);
void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix);
@ -102,7 +95,7 @@ s32 fn_1_9CF4(s32 arg0);
void fn_1_9F78(void);
void fn_1_9FE4(void);
//DATA
//data
s16 lbl_1_data_4D8 = -1;
s16 lbl_1_data_4DA = -1;
s16 lbl_1_data_4DC = -1;
@ -151,37 +144,46 @@ void fn_1_9AA0(void) {
BoardDiceDigit2DShowSet(0);
lbl_1_bss_180 = HuPrcChildCreate(fn_1_9C8C, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_180, fn_1_9B30);
while (lbl_1_bss_180 != 0) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
}
void fn_1_9B30(void) {
fn_1_BDAC();
if (lbl_1_bss_188) {
lbl_1_bss_188;
}
if (lbl_1_bss_184) {
OM_GET_WORK_PTR(lbl_1_bss_184, someBits2)->unk00_bit0 = 1;
}
if (lbl_1_data_4E0 != -1) {
HuAudFXStop(lbl_1_data_4E0);
lbl_1_data_4E0 = -1;
}
if (lbl_1_data_4DC != -1) {
BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DC);
lbl_1_data_4DC = -1;
}
if (lbl_1_data_4DA != -1) {
BoardModelMotionKill(lbl_1_bss_C[11], lbl_1_data_4DA);
lbl_1_data_4DA = -1;
}
if (lbl_1_data_4D8 != -1) {
HuWinKill(lbl_1_data_4D8);
lbl_1_data_4D8 = -1;
}
lbl_1_bss_180 = 0U;
lbl_1_bss_180 = 0;
}
void fn_1_9C8C(void) {
@ -189,10 +191,12 @@ void fn_1_9C8C(void) {
temp_r31 = GWSystem.player_curr;
lbl_1_data_4E0 = -1;
if (fn_1_9CF4(temp_r31) != 0) {
fn_1_A44C(temp_r31);
fn_1_A5E0(temp_r31);
}
HuPrcEnd();
}
@ -211,24 +215,31 @@ s32 fn_1_9CF4(s32 arg0) {
BoardWinKill();
return 0;
}
BoardWinCreateChoice(2, 0x16001A, 2, 0);
if (GWPlayer[arg0].com != 0) {
BoardComKeySetLeft();
}
BoardWinWait();
if (BoardWinChoiceGet() != 0) {
BoardWinCreate(2, 0x16001B, 2);
BoardWinWait();
BoardWinKill();
return 0;
}
BoardWinKill();
sp14.x = 0.0f;
sp14.y = 200.0f;
sp14.z = 0.0f;
sp8.x = -10.0f;
sp8.y = 0.0f;
sp8.z = 0.0f;
BoardCameraMotionStartEx(lbl_1_bss_C[8], &sp8, &sp14, 1500.0f, -1.0f, 0x15);
spaceCur = GWPlayer[arg0].space_curr;
temp_r29 = BoardSpaceLinkFlagSearch(0, spaceCur, 0x02000000);
@ -236,11 +247,13 @@ s32 fn_1_9CF4(s32 arg0) {
BoardSpacePosGet(0, temp_r29, &sp38);
PSVECSubtract(&sp38, &sp2C, &sp20);
PSVECNormalize(&sp20, &sp20);
BoardPlayerRotYSet(arg0, (f32) (180.0 * (atan2(-sp20.x, -sp20.z) / 3.141592653589793)));
BoardPlayerRotYSet(arg0, (f32) (180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)));
BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
BoardPlayerIdleSet(arg0);
HuPrcSleep(0x3C);
fn_1_B0A4(arg0);
@ -269,26 +282,31 @@ void fn_1_9FE4(void) {
sp18.z = (-907.7000122070313 + 200.0 * cos(0.0));
sp18.y = sp24.y;
PSVECSubtract(&sp18, &sp24, &spC);
temp_f30 = (atan2(spC.z, spC.x) / 3.141592653589793 * 180.0);
temp_f30 = (atan2(spC.z, spC.x) / M_PI * 180.0);
sp8 = BoardModelRotYGet(lbl_1_bss_C[11]);
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001);
while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) {
BoardModelRotYSet(lbl_1_bss_C[11], sp8);
HuPrcVSleep();
}
BoardModelRotYSet(lbl_1_bss_C[11], temp_f30);
BoardModelMotionSpeedSet(lbl_1_bss_C[11], 2.0f);
spC.x /= 20.0f;
spC.z /= 20.0f;
spC.y = 0.0f;
sp30 = sp24;
var_f31 = 0.0f;
while (var_f31 < 20.0f) {
PSVECAdd(&sp30, &spC, &sp30);
BoardModelPosSetV(lbl_1_bss_C[11], &sp30);
HuPrcVSleep();
var_f31 += 1.0f;
}
BoardAudSeqPause(0, 1, 0x3E8);
HuAudFXPlay(0x450);
HuAudFXPlay(0x362);
@ -296,23 +314,28 @@ void fn_1_9FE4(void) {
fn_1_B8E8(1);
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DC, 0.0f, 10.0, 0x40000005);
PSVECSubtract(&sp24, &sp30, &spC);
spC.x /= 60.0f;
spC.z /= 60.0f;
spC.y = 0.0f;
var_f31 = 0.0f;
while (var_f31 < 60.0f) {
PSVECAdd(&sp30, &spC, &sp30);
BoardModelPosSetV(lbl_1_bss_C[11], &sp30);
HuPrcVSleep();
var_f31 += 1.0f;
}
temp_f30 = 0.0f;
sp8 = BoardModelRotYGet(lbl_1_bss_C[11]);
BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, 0x40000001);
while (BoardDAngleCalcRange(&sp8, temp_f30, 10.0) == 0) {
BoardModelRotYSet(lbl_1_bss_C[11], sp8);
HuPrcVSleep();
}
BoardModelMotionShiftSet(lbl_1_bss_C[11], 1, 0.0f, 10.0, 0x40000001);
}
@ -323,34 +346,44 @@ void fn_1_A44C(s32 arg0) {
BoardMusStart(1, 0x17, 0x7F, 0);
temp_r30 = MGSeqCreate(3, 0);
while (MGSeqStatGet(temp_r30) != 0) {
HuPrcVSleep();
}
fn_1_A7A0(arg0);
fn_1_A6B0();
fn_1_ACD8(1);
while (fn_1_AE20() != 0) {
HuPrcVSleep();
}
temp_r29 = fn_1_BBC4() + 0x80000;
BoardWinCreate(2, 0x16001C, 2);
BoardWinInsertMesSet(temp_r29, 0);
BoardWinWait();
fn_1_B8E8(4);
while (fn_1_BB48() != 0) {
HuPrcVSleep();
}
omVibrate(arg0, 0xC, 6, 6);
BoardPlayerItemAdd(arg0, fn_1_BBC4());
fn_1_ACD8(3);
temp_r28 = HuAudSStreamPlay(2);
while (HuAudSStreamStatGet(temp_r28) != 0) {
HuPrcVSleep();
}
BoardAudSeqPause(0, 0, 0x3E8);
BoardAudSeqPause(0, 0, 1000);
while (lbl_1_bss_188) {
HuPrcVSleep();
}
HuPrcSleep(0x1E);
BoardWinCreate(2, 0x16001D, 2);
BoardWinWait();
@ -367,7 +400,7 @@ void fn_1_A5E0(s32 arg0) {
BoardSpacePosGet(0, spaceCur, &sp8);
BoardCameraTargetPlayerSet(arg0);
BoardCameraViewSet(1);
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 0x14);
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 20);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
@ -385,7 +418,7 @@ void fn_1_A6B0(void) {
lbl_1_data_4D8 = HuWinCreate(val1, val2, sp8[0], sp8[1], 0);
HuWinBGTPLvlSet(lbl_1_data_4D8, 0.0f);
HuWinMesSpeedSet(lbl_1_data_4D8, 0);
HuWinMesSet(lbl_1_data_4D8, 0x16001FU);
HuWinMesSet(lbl_1_data_4D8, 0x16001F);
}
void fn_1_A7A0(s32 arg0) {
@ -414,12 +447,15 @@ void fn_1_A8AC(s32 arg0) {
BoardModelPosGet(lbl_1_bss_C[9], &sp8);
BoardPlayerPosGet(arg0, &sp14);
sp8.y = sp14.y;
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 0x14);
BoardPlayerPosLerpStart(arg0, &sp14, &sp8, 20);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
playerYRot = BoardPlayerRotYGet(arg0) + 180.0f;
BoardPlayerMotBlendSet(arg0, playerYRot, 0xF);
BoardPlayerMotBlendSet(arg0, playerYRot, 15);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
@ -440,6 +476,7 @@ void fn_1_A994(omObjData* arg0) {
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if (temp_r31->unk00_bit6 == 0) {
if (temp_r31->unk2 != 0) {
temp_r31->unk2--;
@ -453,6 +490,7 @@ void fn_1_A994(omObjData* arg0) {
temp_r31->unk2 = 0x3CU;
}
}
switch (temp_r31->unk00_bit1) {
case 1:
fn_1_AB18(arg0, temp_r31);
@ -517,6 +555,7 @@ void fn_1_ACD8(s32 arg0) {
temp_r31 = (someBits*)&lbl_1_bss_188->work[0];
temp_r31->unk00_bit1 = arg0;
switch (arg0) {
case 0:
BoardPlayerIdleSet(temp_r31->unk00_bit4);
@ -553,6 +592,7 @@ s32 fn_1_AE4C(s32 arg0, s8* arg1) {
temp_r29 = lbl_1_data_4E6[arg1[0]];
temp_r28 = lbl_1_data_4E6[arg1[1]];
temp_r30 = lbl_1_data_4E6[arg1[2]];
if (temp_r29 > temp_r28) {
if (temp_r29 > temp_r30) {
var_r31 = 0;
@ -568,6 +608,7 @@ s32 fn_1_AE4C(s32 arg0, s8* arg1) {
} else {
var_r31 = 0;
}
return var_r31;
}
@ -579,6 +620,7 @@ u32 fn_1_AF24(s32 arg0) {
s8 temp_r0_2;
spC = 0;
switch (GWPlayer[arg0].diff) {
case 3:
var_r30 = 0;
@ -637,7 +679,7 @@ void fn_1_B0A4(s32 arg0) {
temp_r30->unk00_bit1 = 0;
temp_r30->unk00_bit4 = arg0;
for (i = 0; i < 3;) {
for (i = 0; i < ARRAY_COUNT(spC);) {
spC[i] = BoardRandMod(14);
if ((spC[i] != 10) && (spC[i] != 13)) {
for (j = 0; j < i; j++) {
@ -656,19 +698,22 @@ void fn_1_B0A4(s32 arg0) {
fn_1_BBF8();
for (i = 0; i < 3; i++) {
for (i = 0; i < ARRAY_COUNT(spC); i++) {
temp_r29 = spC[i];
temp_r30->unk3[i] = temp_r29;
temp_r30->unk_06[i] = BoardModelCreate(lbl_1_data_514[temp_r29], NULL, 0);
BoardModelHookSet(lbl_1_bss_C[9], lbl_1_data_508[i], temp_r30->unk_06[i]);
BoardModelMotionSpeedSet(temp_r30->unk_06[i], 0.0f);
if (temp_r29 == 0xB) {
if (temp_r29 == 11) {
BoardModelMotionStart(temp_r30->unk_06[i], 0, 0x40000001);
}
if (temp_r29 == 5) {
PSMTXTrans(sp18, 0.0f, -50.0f, 0.0f);
BoardModelMtxSet(temp_r30->unk_06[i], &sp18);
}
if ((temp_r29 == 6) || (temp_r29 == 7)) {
PSMTXTrans(sp18, 0.0f, 0.0f, 8.0f);
BoardModelMtxSet(temp_r30->unk_06[i], &sp18);
@ -681,6 +726,7 @@ void fn_1_B350(omObjData* arg0) {
someBits2* temp_r31;
temp_r31 = (someBits2*)&arg0->work[0];
if ((temp_r31->unk00_bit0 != 0) || (BoardIsKill() != 0)) {
BoardModelHookReset(lbl_1_bss_C[9]);
for (i = 0; i < 3; i++) {
@ -779,7 +825,7 @@ void fn_1_B748(omObjData* arg0, someBits2* arg1) {
BoardModelPosSetV(temp_r29, &sp8);
BoardModelRotYSet(temp_r29, 8.0f + BoardModelRotYGet(temp_r29));
BoardModelScaleGet(temp_r29, &sp14);
sp14.x = sp14.y = sp14.z = cos(3.141592653589793 * temp_f0 / 180.0);
sp14.x = sp14.y = sp14.z = cos(M_PI * temp_f0 / 180.0);
BoardModelScaleSetV(temp_r29, &sp14);
arg1->unk1 += 4;
return;
@ -802,6 +848,7 @@ void fn_1_B8E8(s32 arg0) {
temp_r31 = (someBits2*)&lbl_1_bss_184->work[0];
temp_r31->unk00_bit1 = arg0;
switch (arg0) {
case 1:
temp_f31 = 0.31666666f;
@ -840,7 +887,7 @@ void fn_1_BB74(s8* arg0) {
someBits2* bits = OM_GET_WORK_PTR(lbl_1_bss_184, someBits2);
s32 i;
for (i = 0; i < 3; i++) {
for (i = 0; i < ARRAY_COUNT(bits->unk3); i++) {
arg0[i] = bits->unk3[i];
}
}
@ -886,7 +933,6 @@ void fn_1_BDAC(void) {
void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
Point3d sp8;
f32 temp_f30;
f32 temp_f29;
f32 temp_f31;
@ -916,8 +962,8 @@ void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
if (j != particle->unk_30) {
temp_f30 = 360.0f * (0.003921569f * (frand() & 0xFF));
temp_f29 = temp_f31 * (20.0f + (60.0f * (0.003921569f * (frand() & 0xFF))));
var_r31->unk34.x = (sp8.x + (temp_f29 * sin((3.141592653589793 * temp_f30) / 180.0)));
var_r31->unk34.z = (sp8.z + (temp_f29 * cos((3.141592653589793 * temp_f30) / 180.0)));
var_r31->unk34.x = (sp8.x + (temp_f29 * sin((M_PI * temp_f30) / 180.0)));
var_r31->unk34.z = (sp8.z + (temp_f29 * cos((M_PI * temp_f30) / 180.0)));
var_r31->unk34.y = (sp8.y + (temp_f31 * (-30.0f + (40.0f * (0.003921569f * (frand() & 0xFF))))));
var_r31->unk08.x = (0.5f + (3.0f * (0.003921569f * (frand() & 0xFF))));
var_r31->unk08.y = (0.3f + (2.0f * (0.003921569f * (frand() & 0xFF))));
@ -925,6 +971,7 @@ void fn_1_BE30(ModelData *model, ParticleData *particle, Mtx matrix) {
var_r31->unk2C = (15.0f * temp_f31);
}
}
var_r31 = particle->unk_48;
for (i = 0; i < particle->unk_30; i++, var_r31++) {

View file

@ -4,17 +4,9 @@
#include "game/board/main.h"
#include "game/board/model.h"
#include "game/board/player.h"
#include "game/hsfdraw.h"
double sin(double x);
double cos(double x);
double atan2(double y, double x);
s16 BoardModelIDGet(s16 model);
void Hu3DModelObjPosGet(s16 arg0, char *arg1, Vec *arg2);
extern s16 lbl_1_bss_C[14];
extern s16 boardPlayerMdl[4];
//BSS
char lbl_1_bss_130[8];
omObjData* lbl_1_bss_12C;
s16 lbl_1_bss_128;
@ -40,7 +32,7 @@ typedef struct unkWorkStruct {
f32 unk_04;
} unkWorkStruct;
//DATA
//data
s32 lbl_1_data_368[] = {
0x00000105, 0x00000145, 0x00000185,
0x000001C5, 0x00000205, 0x00000245,
@ -61,13 +53,15 @@ void fn_1_63F4(s32 arg0) {
Vec spC;
unkWorkStruct* work = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
work->unk_04 = 0.0f;
work->unk_04 = 0.0f;
BoardModelPosGet(lbl_1_data_388, &spC);
if (arg0 != 0) {
spC.y = -185.0f;
} else {
spC.y = 10.0f;
}
BoardModelPosSetV(lbl_1_data_388, &spC);
}
@ -82,11 +76,10 @@ void fn_1_6494(void) {
BoardModelMotionStart(lbl_1_data_38A, 1, 0x40000001);
BoardModelHookSet(lbl_1_data_38A, "itemhook_R", lbl_1_data_38C);
BoardModelHookSet(lbl_1_data_388, "hei01", lbl_1_data_38A);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), "ikada", &sp14);
BoardSpaceFlagPosGet(0, 0x200, &sp8);
sp14.x = sp8.x + (400.0 * sin(-1.5707963267948966));
sp14.z = sp8.z + (400.0 * cos(-1.5707963267948966));
sp14.x = sp8.x + (400.0 * sin(-(M_PI / 2)));
sp14.z = sp8.z + (400.0 * cos(-(M_PI / 2)));
BoardModelPosSetV(lbl_1_data_388, &sp14);
lbl_1_bss_12C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, (void*)fn_1_767C);
temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_12C, unkWorkStruct);
@ -101,8 +94,8 @@ s32 fn_1_6698(void) {
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_C[0]), "ikada", &sp14);
BoardSpaceFlagPosGet(0, 0x200, &sp8);
sp14.x = sp8.x + (400.0 * sin(-1.5707963267948966));
sp14.z = sp8.z + (400.0 * cos(-1.5707963267948966));
sp14.x = sp8.x + (400.0 * sin(-(M_PI / 2)));
sp14.z = sp8.z + (400.0 * cos(-(M_PI / 2)));
BoardModelPosSetV(lbl_1_data_388, (Point3d* ) &sp14);
return 1;
}
@ -111,9 +104,11 @@ s16 fn_1_675C(void) {
BoardDiceDigit2DShowSet(0);
lbl_1_bss_120 = HuPrcChildCreate(fn_1_67F8, 0x2003, 0x2000, 0, boardMainProc);
HuPrcDestructorSet2(lbl_1_bss_120, fn_1_6884);
while ((u32) lbl_1_bss_120 != 0U) {
while (lbl_1_bss_120 != 0) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
return lbl_1_bss_128;
}
@ -123,12 +118,14 @@ void fn_1_67F8(void) {
temp_r31 = GWSystem.player_curr;
lbl_1_bss_128 = 0;
if (fn_1_6898(temp_r31) != 0) {
fn_1_6F9C(temp_r31);
fn_1_6B98(temp_r31);
fn_1_735C(temp_r31);
lbl_1_bss_128 = 1;
}
BoardCameraViewSet(1);
BoardCameraMotionWait();
HuPrcEnd();
@ -170,16 +167,19 @@ s32 fn_1_6898(s32 arg0) {
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "hei01", &sp20);
BoardPlayerPosGet(arg0, &sp14);
PSVECSubtract(&sp20, &sp14, &sp8);
temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / 3.141592653589793);
temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / M_PI);
BoardCameraTargetModelSet(lbl_1_data_388);
BoardPlayerMotBlendSet(arg0, temp_f31, 0xF);
BoardPlayerMotBlendSet(arg0, temp_f31, 15);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardCameraTargetModelSet(-1);
BoardWinCreate(2, 0x160009, 2);
BoardWinWait();
temp_r3 = BoardPlayerCoinsGet(arg0);
if (temp_r3 < 5) {
BoardWinCreate(2, 0x16000A, 2);
BoardWinWait();
@ -187,7 +187,7 @@ s32 fn_1_6898(s32 arg0) {
return 0;
}
for (var_r27 = i = 0; i < 6; i++) {
for (var_r27 = i = 0; i < ARRAY_COUNT(lbl_1_data_3B8); i++) {
temp = lbl_1_data_3B8[i].x;
temp2 = lbl_1_data_3B8[i].y;
if (temp_r3 >= temp) {
@ -197,17 +197,22 @@ s32 fn_1_6898(s32 arg0) {
}
}
}
sprintf(lbl_1_bss_130, "%d", var_r27);
j = 0;
while (j == 0) {
BoardWinCreateChoice(2, 0x16000B, 2, 0);
BoardWinInsertMesSet(lbl_1_bss_130, 2);
BoardWinAttrSet(0x10);
if (GWPlayer[arg0].com != 0) {
fn_1_77E4(arg0);
}
BoardWinWait();
BoardWinKill();
switch (BoardWinChoiceGet()) {
case 0:
j = 1;
@ -222,11 +227,13 @@ s32 fn_1_6898(s32 arg0) {
BoardViewMapExec(arg0);
}
}
for (i = 0; i < var_r27; i++) {
BoardPlayerCoinsAdd(arg0, -1);
HuAudFXPlay(0xE);
HuPrcSleep(6);
}
HuAudFXPlay(0xF);
BoardWinCreate(2, 0x0016000C, 2);
BoardWinWait();
@ -250,17 +257,20 @@ void fn_1_6B98(s32 arg0) {
BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0);
sp8 = BoardModelRotYGet(lbl_1_data_38A);
temp_f31 = sp8 + 180.0f;
while (BoardDAngleCalcRange(&sp8, temp_f31, 3.0f) == 0) {
BoardModelRotYSet(lbl_1_data_38A, sp8);
HuPrcVSleep();
}
while (BoardModelMotionEndCheck(lbl_1_data_38A) == 0) {
HuPrcVSleep();
}
BoardModelPosGet(lbl_1_data_388, &sp24);
BoardSpaceFlagPosGet(0, 0x100, &sp30);
sp18.x = sp30.x + (400.0 * sin(1.5707963267948966));
sp18.z = sp30.z + (400.0 * cos(1.5707963267948966));
sp18.x = sp30.x + (400.0 * sin(M_PI / 2));
sp18.z = sp30.z + (400.0 * cos(M_PI / 2));
sp18.y = sp24.y;
PSVECSubtract(&sp18, &sp24, &spC);
spC.x = spC.x / 120.0f;
@ -269,17 +279,21 @@ void fn_1_6B98(s32 arg0) {
BoardCameraTargetModelSet(lbl_1_data_388);
BoardModelMotionShiftSet(lbl_1_data_38A, 3, 0.0f, 4.0f, 0x40000001U);
HuPrcSleep(4);
var_r31 = 0;
for (i = 0; i < 0x78U; i++) {
PSVECAdd(&spC, &sp24, &sp24);
temp_f1 = BoardModelMotionTimeGet(lbl_1_data_38A);
if ((temp_f1 >= 5.0f) && (temp_f1 < 15.0f) && ((s16) var_r31 == 0)) {
HuAudFXPlay(0x451);
var_r31 = 1;
}
if ((BoardModelMotionTimeGet(lbl_1_data_38A) >= 21.0f) && ((s16) var_r31 != 0)) {
var_r31 = 0;
}
BoardModelPosSetV(lbl_1_data_388, &sp24);
HuPrcVSleep();
}
@ -289,18 +303,21 @@ void fn_1_6B98(s32 arg0) {
BoardModelMotionShiftSet(lbl_1_data_38A, 2, 0.0f, 10.0f, 0x40000004U);
sp8 = BoardModelRotYGet(lbl_1_data_38A);
temp_f31 = 0.0f;
while (BoardDAngleCalcRange(&sp8, temp_f31, 3.0f) == 0) {
BoardModelRotYSet(lbl_1_data_38A, sp8);
HuPrcVSleep();
}
while (BoardModelMotionEndCheck(lbl_1_data_38A) == 0) {
HuPrcVSleep();
}
BoardModelMotionShiftSet(lbl_1_data_38A, 1, 0.0f, 10.0f, 0x40000001U);
}
extern s32 lbl_1_data_368[];
extern w03State* lbl_1_bss_0;
// extern w03State* lbl_1_bss_0;
void fn_1_6F9C(s32 arg0) {
Vec sp20;
@ -316,9 +333,11 @@ void fn_1_6F9C(s32 arg0) {
BoardPlayerPosGet(arg0, &sp14);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "chara01", &sp20);
PSVECSubtract(&sp20, &sp14, &sp8);
sp8.x /= 60.0f;
sp8.z /= 60.0f;
sp8.y = 0.0f;
if (lbl_1_bss_0->unk0 != 0) {
var_f30 = 10.0f;
var_f29 = 0.21f;
@ -327,16 +346,18 @@ void fn_1_6F9C(s32 arg0) {
var_f30 = 0.0f;
var_f29 = 0.15f;
}
lbl_1_bss_124 = 1;
HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]);
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0U);
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0);
for (var_r30 = 0, var_f31 = 0.0f; var_f31 < 60.0f; var_f31 += 1.0f) {
PSVECAdd(&sp14, &sp8, &sp14);
sp14.y += 10.0f + var_f30 + (var_f29 * (-0.08166667f * var_f31 * var_f31));
if (sp14.y <= sp20.y) {
sp14.y = sp20.y;
if (var_r30 == 0) {
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
var_r30 = 1;
}
}
@ -344,14 +365,16 @@ void fn_1_6F9C(s32 arg0) {
HuPrcVSleep();
}
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
HuPrcSleep(10);
BoardPlayerIdleSet(arg0);
if (GWPlayer[arg0].bowser_suit != 0) {
BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0));
} else {
BoardModelHookSet(lbl_1_data_388, "chara01", BoardPlayerModelGet(arg0));
}
BoardPlayerPosSet(arg0, 0.0f, 0.0f, 0.0f);
lbl_1_bss_124 = 0;
}
@ -378,7 +401,7 @@ void fn_1_735C(s32 arg0) {
sp8.y = 0.0f;
HuAudFXPlay(lbl_1_data_368[GWPlayer[arg0].character]);
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0U);
BoardPlayerMotionShiftSet(arg0, 4, 0.0f, 10.0f, 0);
if (lbl_1_bss_0->unk0 != 0) {
var_f30 = 0.25f;
} else {
@ -391,7 +414,7 @@ void fn_1_735C(s32 arg0) {
if (sp14.y <= sp20.y && var_f31 > 48.0f) {
sp14.y = sp20.y;
if (var_r30 == 0) {
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0U);
BoardPlayerMotionShiftSet(arg0, 5, 0.0f, 8.0f, 0);
var_r30 = 1;
}
}
@ -401,10 +424,12 @@ void fn_1_735C(s32 arg0) {
BoardPlayerPosSetV(arg0, &sp20);
HuPrcSleep(0xA);
BoardPlayerMotBlendSet(arg0, 0, 0xF);
BoardPlayerMotBlendSet(arg0, 0, 15);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardPlayerIdleSet(arg0);
GWPlayer[arg0].space_curr = temp_r29;
GWPlayer[arg0].space_prev = -1;
@ -421,18 +446,20 @@ void fn_1_767C(omObjData* arg0) {
unkWorkStruct* temp_r31;
temp_r31 = OM_GET_WORK_PTR(arg0, unkWorkStruct);
if ( (temp_r31->temp1 != 0) || (BoardIsKill() != 0)) {
lbl_1_bss_12C = NULL;
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if ((lbl_1_data_388 != -1) && (lbl_1_bss_124 == 0)) {
temp_r31->unk_04 += 3.0f;
if (temp_r31->unk_04 >= 360.0f) {
temp_r31->unk_04 = (f32) (temp_r31->unk_04 - 360.0f);
}
BoardModelPosGet(lbl_1_data_388, &sp8);
sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((3.141592653589793 * (f64) temp_r31->unk_04) / 180.0))));
sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((M_PI * (f64) temp_r31->unk_04) / 180.0))));
BoardModelPosSetV(lbl_1_data_388, &sp8);
}
}
@ -442,14 +469,15 @@ void fn_1_77E4(s32 arg0) {
s32 var_r30 = 0;
boardIndex = GWSystem.star_pos;
if ((boardIndex == 1) || (boardIndex == 2) || (boardIndex == 3) || (boardIndex == 4)) {
var_r30 = 1;
}
if (var_r30 != 0) {
BoardComKeySetLeft();
return;
}
BoardComKeySetRight();
}
char padRiver[] = "\0\0\0\0";

View file

@ -30,16 +30,20 @@ void fn_1_785C(void) {
lbl_1_bss_138[0] = omAddObjEx(boardObjMan, 0x101, 0U, 0U, -1, fn_1_79E0);
temp_r31 = (w03UnkWorkStruct*)&lbl_1_bss_138[0]->work[0];
for (i = 0; i < 5; i++) {
for (i = 0; i < ARRAY_COUNT(temp_r31->unk_00); i++) {
temp_r31->unk_00[i] = BoardModelCreate(0x770008, NULL, 0);
temp_r29 = kemuri_strings[i];
if (0.0f == temp_r31->unk_0C) {
temp_r31->unk_0C = BoardModelMotionMaxTimeGet(temp_r31->unk_00[i]);
}
var_f31 = temp_r31->unk_0C * BoardRandFloat();
if (var_f31 < 1.0f) {
var_f31 = 1.0f;
}
BoardModelHookSet(lbl_1_data_1E0, temp_r29, temp_r31->unk_00[i]);
BoardModelMotionStart(temp_r31->unk_00[i], 0, 0x40000001);
BoardModelMotionTimeSet(temp_r31->unk_00[i], var_f31);
@ -63,14 +67,14 @@ void fn_1_79E0(omObjData* arg0) {
omDelObjEx(HuPrcCurrentGet(), arg0);
return;
}
if (lbl_1_bss_0->unk3 != 0) {
var_r29 = 0;
} else {
var_r29 = 1;
}
for (i = 0; i < 5; i++) {
for (i = 0; i < ARRAY_COUNT(temp_r30->unk_00); i++) {
BoardModelVisibilitySet(temp_r30->unk_00[i], var_r29);
}
}
char pad[4] = "\0\0\0\0";

View file

@ -28,7 +28,7 @@ void fn_1_2A40(void);
void fn_1_2B44(void);
double atan2(double y, double x);
//DATA
//data
s16 lbl_1_data_280 = -1;
s16 lbl_1_data_282 = -1;
s16 lbl_1_data_284 = -1;
@ -62,6 +62,7 @@ void fn_1_12C8(void) {
while (lbl_1_bss_28) {
HuPrcVSleep();
}
BoardDiceDigit2DShowSet(1);
}
@ -72,6 +73,7 @@ void fn_1_1358(void) {
cur_player_index = GWSystem.player_curr;
unkC = GWPlayer[cur_player_index].space_curr;
lbl_1_bss_2C = 0;
if ((BoardSpaceFlagGet(0, GWPlayer[cur_player_index].space_curr) & 0x2000)) {
lbl_1_bss_6E = 0;
lbl_1_bss_6C = lbl_1_bss_C[3];
@ -79,6 +81,7 @@ void fn_1_1358(void) {
lbl_1_bss_6E = 1;
lbl_1_bss_6C = lbl_1_bss_C[4];
}
if (fn_1_1650(cur_player_index) != 0) {
if (fn_1_1D1C() != 0) {
fn_1_1ED4(cur_player_index);
@ -98,6 +101,7 @@ void fn_1_1358(void) {
fn_1_26E0(cur_player_index);
BoardStatusShowSetAll(1);
}
BoardPlayerPostTurnHookSet(cur_player_index, &fn_1_15E8);
BoardWinKill();
HuPrcEnd();
@ -105,24 +109,29 @@ void fn_1_1358(void) {
void fn_1_152C(void) {
BoardConfettiKill();
if (lbl_1_data_282 != -1) {
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_282);
lbl_1_data_282 = -1;
}
if (lbl_1_data_280 != -1) {
BoardPlayerMotionKill(GWSystem.player_curr, lbl_1_data_280);
lbl_1_data_280 = -1;
}
fn_1_2AC0();
lbl_1_bss_28 = NULL;
}
s32 fn_1_15E8(void) {
BoardModelVisibilitySet(lbl_1_bss_6C, 1);
if (lbl_1_data_284 != -1) {
BoardModelKill(lbl_1_data_284);
lbl_1_data_284 = -1;
}
return 1;
}
@ -148,7 +157,7 @@ s32 fn_1_1650(s32 arg0) {
BoardSpacePosGet(0, temp2, &sp38);
BoardPlayerPosGet(arg0, &sp2C);
PSVECSubtract(&sp38, &sp2C, &sp20);
temp = (atan2(-sp20.x, -sp20.z) / 3.141592653589793) * 180.0f;
temp = (atan2(-sp20.x, -sp20.z) / M_PI) * 180.0f;
BoardPlayerRotYSet(arg0, temp);
sp14.x = 0.0f;
sp14.y = 100.0f;
@ -175,6 +184,7 @@ s32 fn_1_1650(s32 arg0) {
BoardWinWait();
BoardWinCreateChoice(0, 0x160002, -1, 0);
BoardWinAttrSet(0x10);
if (GWPlayer[arg0].com) {
if (BoardRandMod(0x64) > 0x32U) {
BoardComKeySetLeft();
@ -182,6 +192,7 @@ s32 fn_1_1650(s32 arg0) {
BoardComKeySetRight();
}
}
BoardWinWait();
lbl_1_bss_6F = BoardWinChoiceGet();
BoardWinKill();
@ -247,6 +258,7 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
f32 temp;
temp_r30 = GWPlayer[arg0].character;
if (arg1 != 0) {
lbl_1_data_282 = BoardPlayerMotionCreate(arg0, lbl_1_data_2B0[temp_r30]);
lbl_1_bss_6A = 8;
@ -257,12 +269,15 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
lbl_1_bss_68 = 1;
var_r29 = lbl_1_data_2D0[GWPlayer[arg0].character];
}
lbl_1_data_280 = BoardPlayerMotionCreate(arg0, lbl_1_data_290[temp_r30]);
temp = (180.0f + BoardPlayerRotYGet(arg0));
BoardPlayerMotBlendSet(arg0, temp, 0xF);
BoardPlayerMotBlendSet(arg0, temp, 15);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
HuAudFXPlay(var_r29);
BoardPlayerVoiceEnableSet(arg0, lbl_1_bss_6A, 0);
BoardPlayerMotionShiftSet(arg0, lbl_1_bss_6A, 0.0f, 8.0f, 0);
@ -272,7 +287,8 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
HuPrcVSleep();
}
HuPrcSleep(0x3C);
HuPrcSleep(60);
if (arg1 != 0) {
BoardPlayerMotionShiftSet(arg0, lbl_1_bss_68, 0.0f, 8.0f, 0);
@ -281,16 +297,20 @@ void fn_1_19DC(s32 arg0, s32 arg1) {
HuPrcVSleep();
}
}
BoardPlayerIdleSet(arg0);
HuPrcSleep(0x14);
temp = (180.0f + BoardPlayerRotYGet(arg0));
BoardPlayerMotBlendSet(arg0, temp, 0xF);
BoardPlayerMotBlendSet(arg0, temp, 15);
while (BoardPlayerMotBlendCheck(arg0) == 0) {
HuPrcVSleep();
}
BoardAudSeqPause(0, 1, 0x3E8);
BoardAudSeqPause(0, 1, 1000);
BoardPlayerMotionShiftSet(arg0, lbl_1_data_280, 0.0f, 10.0f, 0);
HuPrcSleep(0xB);
HuPrcSleep(11);
while (BoardPlayerMotionEndCheck(arg0) == 0) {
HuPrcVSleep();
}
@ -323,16 +343,20 @@ s32 fn_1_1D1C(void) {
BoardWinCreate(2, 0x160003, 2);
BoardWinWait();
BoardWinKill();
prevTurn = GWSystem.turn - 1;
maxTurn = GWSystem.max_turn;
var_r31 = prevTurn / (maxTurn / 3);
if (var_r31 >= 3) {
var_r31 = 2;
}
modRand = BoardRandMod(100);
if (modRand < sp8[var_r31] ) {
return 1;
}
modRand2 = BoardRandMod(100 - sp8[var_r31]);
if (modRand2 < sp14[var_r31][0]) {
lbl_1_bss_2C = 3;
@ -341,6 +365,7 @@ s32 fn_1_1D1C(void) {
} else {
lbl_1_bss_2C = 1;
}
return 0;
}
@ -373,11 +398,13 @@ void fn_1_1ED4(s32 arg0) {
while (BoardFilterFadePauseCheck() == 0) {
HuPrcVSleep();
}
BoardPlayerIdleSet(arg0);
while (BoardMusStatusGet(1) != 0) {
HuPrcVSleep();
}
BoardAudSeqPause(0, 0, 1000);
BoardWinCreate(2, 0x160004, 2);
BoardWinWait();
@ -401,10 +428,12 @@ void fn_1_20E0(s32 arg0) {
BoardModelPosSetV(lbl_1_data_284, &spC);
BoardFilterFadeOut(0x1E);
sp8 = BoardModelRotYGet(lbl_1_bss_6C);
while (BoardDAngleCalcRange(&sp8, 0.0f, 30.0f) == 0) {
BoardModelRotYSet(lbl_1_data_284, sp8);
HuPrcVSleep();
}
omVibrate(arg0, 0xC, 4, 2);
BoardModelRotYSet(lbl_1_data_284, 0.0f);
BoardModelRotYSet(lbl_1_bss_6C, 0.0f);
@ -426,26 +455,30 @@ void fn_1_20E0(s32 arg0) {
if (lbl_1_bss_30 > 128.0f) {
lbl_1_bss_30 = 128.0f;
}
HuPrcSleep(0x28);
HuPrcSleep(40);
lbl_1_bss_30 = 128.0f;
while (lbl_1_bss_30 > 0.0f) {
HuPrcVSleep();
lbl_1_bss_30 -= 12.0f;
}
if (lbl_1_bss_30 < 0.0f) {
lbl_1_bss_30 = 0.0f;
}
fn_1_2AC0();
for (i = 0; i < 3; i++) {
BoardCameraMotionStartEx(-1, NULL, 0, 680.0f, -1.0f, 0xD);
BoardCameraMotionStartEx(-1, NULL, 0, 680.0f, -1.0f, 13);
BoardCameraMotionWait();
BoardCameraMotionStartEx(-1, NULL, 0, 1360.0f, -1.0f, 0xD);
BoardCameraMotionStartEx(-1, NULL, 0, 1360.0f, -1.0f, 13);
BoardCameraMotionWait();
}
BoardPlayerIdleSet(arg0);
while (BoardMusStatusGet(1) != 0) {
HuPrcVSleep();
}
@ -476,6 +509,7 @@ void fn_1_20E0(s32 arg0) {
}
BoardCameraQuakeReset();
if (lbl_1_data_288 != 0) {
HuAudFXStop(lbl_1_data_288);
lbl_1_data_288 = -1;
@ -507,14 +541,16 @@ void fn_1_26E0(s32 arg0) {
BoardPlayerPosGet(arg0, &sp14);
PSVECSubtract(&sp20, &sp14, &sp8);
PSVECNormalize(&sp8, &sp8);
temp = (180.0f * (atan2(-sp8.x, -sp8.z) / 3.141592653589793));
temp = (180.0f * (atan2(-sp8.x, -sp8.z) / M_PI));
BoardPlayerRotYSet(arg0, temp);
BoardCameraViewSet(1);
BoardCameraTargetPlayerSet(arg0);
BoardPlayerPosLerpStart(arg0, &sp14, &sp20, 0x28);
while (GWPlayer[arg0].moving != 0) {
HuPrcVSleep();
}
BoardCameraMotionWait();
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0);
BoardPlayerIdleSet(arg0);
@ -526,8 +562,9 @@ void fn_1_2818(void) {
s16 j;
s16 sp8[3] = {0x0002, 0x003E, 0x007A};
temp_r29 = (4 - lbl_1_bss_2C) * 0x3C;
temp_r29 = (4 - lbl_1_bss_2C) * 60;
BoardModelMotionStart(lbl_1_bss_C[1], 0, 0);
while (1) {
temp_r30 = BoardModelMotionTimeGet(lbl_1_bss_C[1]);
if (temp_r29 > temp_r30) {
@ -548,6 +585,7 @@ void fn_1_2818(void) {
s32 fn_1_2930(s32 arg0) {
lbl_1_bss_0->unk0--;
if (lbl_1_bss_0->unk0 <= 0) {
lbl_1_bss_0->unk2 = 0;
lbl_1_bss_0->unk0 = 0;
@ -558,6 +596,7 @@ s32 fn_1_2930(s32 arg0) {
fn_1_CF4();
return 1;
}
sprintf(lbl_1_bss_38, "%d", lbl_1_bss_0->unk0);
BoardWinCreate(0, 0x160007, -1);
BoardWinInsertMesSet((s32)lbl_1_bss_38, 1);
@ -579,6 +618,7 @@ void fn_1_2AC0(void) {
HuMemDirectFree(lbl_1_bss_34);
lbl_1_bss_34 = NULL;
}
if (lbl_1_data_286 != -1) {
Hu3DModelKill(lbl_1_data_286);
lbl_1_data_286 = -1;
@ -640,5 +680,3 @@ void fn_1_2B44(void) {
GXPosition2f32(0.0f, 1.0f);
GXSetChanMatColor(GX_COLOR0A0, sp1C);
}
f32 const padStatue = 0.0f;

View file

@ -20,7 +20,7 @@ void* lbl_1_bss_8;
s32 lbl_1_bss_4;
W10BoardWork *boardWork;
//DATA
//data
unkw10Dll lbl_1_data_0[1] = {
3300.0f, 100.0f, -900.0f,
0.0f, 0.0f, 0.0f,