diff --git a/src/REL/w03Dll/condor.c b/src/REL/w03Dll/condor.c index 97e9d21b..af07abe7 100644 --- a/src/REL/w03Dll/condor.c +++ b/src/REL/w03Dll/condor.c @@ -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); diff --git a/src/REL/w03Dll/main.c b/src/REL/w03Dll/main.c index a75163aa..bfcaf2c4 100644 --- a/src/REL/w03Dll/main.c +++ b/src/REL/w03Dll/main.c @@ -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); } \ No newline at end of file diff --git a/src/REL/w03Dll/mg_coin.c b/src/REL/w03Dll/mg_coin.c index b06fc7e1..3015eba5 100644 --- a/src/REL/w03Dll/mg_coin.c +++ b/src/REL/w03Dll/mg_coin.c @@ -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"; \ No newline at end of file diff --git a/src/REL/w03Dll/mg_item.c b/src/REL/w03Dll/mg_item.c index b48ff37c..e2958ca9 100644 --- a/src/REL/w03Dll/mg_item.c +++ b/src/REL/w03Dll/mg_item.c @@ -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++) { diff --git a/src/REL/w03Dll/river.c b/src/REL/w03Dll/river.c index 515f2ab6..577e1994 100644 --- a/src/REL/w03Dll/river.c +++ b/src/REL/w03Dll/river.c @@ -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"; diff --git a/src/REL/w03Dll/smoke.c b/src/REL/w03Dll/smoke.c index 530dd8c4..ae32fa76 100644 --- a/src/REL/w03Dll/smoke.c +++ b/src/REL/w03Dll/smoke.c @@ -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"; \ No newline at end of file diff --git a/src/REL/w03Dll/statue.c b/src/REL/w03Dll/statue.c index 019f4844..595c8a8a 100644 --- a/src/REL/w03Dll/statue.c +++ b/src/REL/w03Dll/statue.c @@ -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; diff --git a/src/REL/w10Dll/main.c b/src/REL/w10Dll/main.c index 7ebecc57..6386f591 100644 --- a/src/REL/w10Dll/main.c +++ b/src/REL/w10Dll/main.c @@ -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,