From 47e4b48254a06f439e13cdade4b44323677023f5 Mon Sep 17 00:00:00 2001 From: CreateSource <72283721+abnormalhare@users.noreply.github.com> Date: Sun, 5 Jan 2025 18:40:35 -0500 Subject: [PATCH 01/24] Match m424Dll (#510) * get halfway through m424/ball * get halfway through m424/ball * get halfway through m424/ball * complete m424/ball * fix merge errors * Revert "complete m424/ball" This reverts commit acbc3196c585acc5e6328e53f4aaf31e1b52db73. * fix up ball, start claw * get halfway through m424/ball * complete m424/ball * Revert "complete m424/ball" This reverts commit acbc3196c585acc5e6328e53f4aaf31e1b52db73. * fix up ball, start claw * complete m424Dll --- config/GMPE01_00/rels/m424Dll/symbols.txt | 5 +- configure.py | 4 +- include/REL/m424Dll.h | 30 +- src/REL/m424Dll/ball.c | 29 +- src/REL/m424Dll/claw.c | 1357 +++++++++++++++++++++ 5 files changed, 1396 insertions(+), 29 deletions(-) create mode 100644 src/REL/m424Dll/claw.c diff --git a/config/GMPE01_00/rels/m424Dll/symbols.txt b/config/GMPE01_00/rels/m424Dll/symbols.txt index ffdf249f..8d4a83df 100644 --- a/config/GMPE01_00/rels/m424Dll/symbols.txt +++ b/config/GMPE01_00/rels/m424Dll/symbols.txt @@ -266,7 +266,7 @@ jumptable_1_data_B8 = .data:0x000000B8; // type:object size:0x28 scope:local lbl_1_data_E0 = .data:0x000000E0; // type:object size:0xC lbl_1_data_EC = .data:0x000000EC; // type:object size:0xC lbl_1_data_F8 = .data:0x000000F8; // type:object size:0xC -lbl_1_data_104 = .data:0x00000104; // type:object size:0x7 data:string +lbl_1_data_104 = .data:0x00000104; // type:object size:0x7 scope:local data:string lbl_1_data_10C = .data:0x0000010C; // type:object size:0x1C lbl_1_data_128 = .data:0x00000128; // type:object size:0x4 data:byte lbl_1_data_12C = .data:0x0000012C; // type:object size:0x1C @@ -317,6 +317,7 @@ lbl_1_bss_640 = .bss:0x00000640; // type:object size:0x80 data:4byte lbl_1_bss_6C0 = .bss:0x000006C0; // type:object size:0x4 data:4byte lbl_1_bss_6C4 = .bss:0x000006C4; // type:object size:0x4 data:4byte lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x4 data:4byte -lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0xC data:4byte +lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0x4 data:4byte +lbl_1_bss_6D0 = .bss:0x000006D0; // type:object size:0x8 data:4byte lbl_1_bss_6D8 = .bss:0x000006D8; // type:object size:0x4 data:4byte lbl_1_bss_6DC = .bss:0x000006DC; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 27092f4c..afd42860 100644 --- a/configure.py +++ b/configure.py @@ -1045,8 +1045,8 @@ config.libs = [ objects={ Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m424Dll/main.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m424Dll/map.c"), - Object(NonMatching, "REL/m424Dll/ball.c"), - Object(NonMatching, "REL/m424Dll/claw.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m424Dll/ball.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m424Dll/claw.c"), }, ), Rel( diff --git a/include/REL/m424Dll.h b/include/REL/m424Dll.h index 885af5eb..5b3dfaa8 100644 --- a/include/REL/m424Dll.h +++ b/include/REL/m424Dll.h @@ -8,13 +8,41 @@ typedef struct _M424DllMainStruct { f32 zoom; } M424DllMainStruct; // sizeof 1C +typedef struct _M424DllBallStruct2 { + omObjData* unk0; + u8 unk4; + u8 unk5; + u8 unk6; + u16 unk8; + u16 unkA; + Mtx unkC; + Vec unk3C; + Vec unk48; + Vec unk54; + Vec unk60; + Vec unk6C; + Vec unk78; + Vec unk84; + u8 unk90; + u8 unk91; +} M424DllBallStruct2; // sizeof 0x94 + +extern M424DllBallStruct2 lbl_1_bss_60[9]; +extern u8 lbl_1_bss_58; +extern s16 lbl_1_bss_24[4]; + +f32 fn_1_1358(f32, f32); +f32 fn_1_1470(f32, f32, f32); omObjData* fn_1_1AB8(Process*); void fn_1_1B8C(void); f32 fn_1_213C(void); +void fn_1_252C(f32, s32); +void fn_1_2670(s32, s32); void fn_1_2720(Process*); void fn_1_2880(void); +Vec* fn_1_8A00(u8); s32 fn_1_8A2C(void); -void fn_1_93F0(Process*); +omObjData* fn_1_93F0(Process*); void fn_1_94A4(void); s32 fn_1_B804(void); s32 fn_1_B888(void); diff --git a/src/REL/m424Dll/ball.c b/src/REL/m424Dll/ball.c index 5deb34fc..800f1775 100644 --- a/src/REL/m424Dll/ball.c +++ b/src/REL/m424Dll/ball.c @@ -54,25 +54,6 @@ typedef struct _M424DllBallStruct { s32 unkEC; } M424DllBallStruct; // sizeof 0xF0 -typedef struct _M424DllBallStruct2 { - omObjData* unk0; - u8 unk4; - u8 unk5; - u8 unk6; - u16 unk8; - u16 unkA; - Mtx unkC; - Vec unk3C; - Vec unk48; - Vec unk54; - Vec unk60; - Vec unk6C; - Vec unk78; - Vec unk84; - u8 unk90; - u8 unk91; -} M424DllBallStruct2; // sizeof 0x94 - typedef struct _M424DllBallStruct3 { u8 unk0; M424DllBallStruct2* unk4; @@ -153,7 +134,7 @@ void fn_1_2720(Process* arg0) { } for (var_r31 = 0; var_r31 < 6; var_r29++, var_r31++) { - var_r30 = omAddObjEx(arg0, 0x3F, 2U, 5U, 0, fn_1_4220); + var_r30 = omAddObjEx(arg0, 0x3F, 2, 5, 0, fn_1_4220); lbl_1_bss_594[var_r31] = var_r30; var_r30->work[0] = var_r31; var_r30->work[1] = sp8[var_r29]; @@ -460,12 +441,12 @@ void fn_1_37FC(omObjData* object) { if (temp_r31->unkC != 0) { if (temp_r31->unkD != 0) { temp_r31->unk4C.y = 0.0f; - temp_r31->unkD = 0U; + temp_r31->unkD = 0; var_r28 = 5; var_r27 = 0; } else { temp_r31->unk4C.y *= -0.1f; - temp_r31->unkC = 0U; + temp_r31->unkC = 0; var_r28 = 4; var_r27 = 0; } @@ -689,7 +670,7 @@ u8 fn_1_48D0(omObjData* object, u8 arg1, u8 arg2) { temp_r31->unk8 = var_r30; Hu3DModelLayerSet(var_r30, 2); Hu3DModelShadowMapSet(var_r30); - Hu3DModelAttrSet(var_r30, 0x20000U); + Hu3DModelAttrSet(var_r30, 0x20000); Hu3DModelHiliteMapSet(var_r30, HuSprAnimRead(HuDataReadNum(0x370016, 0x10000000))); var_r30 = Hu3DModelCreate(HuDataSelHeapReadNum((arg1 * 2) + 0x370001, 0x10000000, HEAP_DATA)); temp_r31->unkA = var_r30; @@ -856,7 +837,7 @@ void fn_1_5018(void) { var_f30 = var_f29; var_r31 = &lbl_1_bss_60[0]; for (var_r28 = 0; var_r28 < lbl_1_bss_58; var_r28++, var_r31++) { - if ((var_r31->unk90 != 0) && (var_r31->unk4 < 4U)) { + if ((var_r31->unk90 != 0) && (var_r31->unk4 < 4)) { var_r31->unk90 = 0; if (var_r31->unk4 < 3) { if (var_r31->unk6C.y < 0.0f) { diff --git a/src/REL/m424Dll/claw.c b/src/REL/m424Dll/claw.c new file mode 100644 index 00000000..578750ce --- /dev/null +++ b/src/REL/m424Dll/claw.c @@ -0,0 +1,1357 @@ +#include "REL/m424Dll.h" + +#include "math.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/pad.h" + +// STRUCT +typedef struct _M424DllClawStruct { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC; + s16 unkE; + s16 unk10; + s16 unk12; + s16 unk14; + s16 unk16; + s16 unk18; + f32 unk1C; + f32 unk20; + f32 unk24; + f32 unk28; + f32 unk2C; + Vec unk30; + Vec unk3C[12]; + Vec unkCC[12]; + s32 unk15C; + s32 unk160; + s32 unk164; + s32 unk168; + s32 unk16C; + s32 unk170; + Vec unk174; + f32 unk180; + s32 unk184; + s32 unk188; + s32 unk18C; + s32 unk190; + s32 unk194; + s32 unk198; + s32 unk19C; + s32 unk1A0; + s32 unk1A4; + f32 unk1A8; + s32 unk1AC; +} M424DllClawStruct; // sizeof 0x1B0 + +typedef struct _M424DllClawStruct2 { + s32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; +} M424DllClawStruct2; // sizeof 0x10 + +typedef struct _M424DllClawStruct3 { + s32 unk0; + s32 unk4; +} M424DllClawStruct3; // sizeof 0x8 + +// BSS +Process* lbl_1_bss_6DC; +omObjData* lbl_1_bss_6D8; +s32 lbl_1_bss_6D0[2]; +s32 lbl_1_bss_6CC; +s32 lbl_1_bss_6C8; +s32 lbl_1_bss_6C4; +s32 lbl_1_bss_6C0; +M424DllClawStruct3 lbl_1_bss_640[0x10]; + +// DATA +Vec lbl_1_data_1E0[4] = { + { 950.0f, 275.0f, 0.0f }, + { 900.0f, 360.0f, 320.0f }, +{ 494.99996f, 220.0f, 494.99996f }, + { 0.0f, 225.0f, 0.0f }, +}; +f32 lbl_1_data_210[3] = { 12.0f, 11.0f, 17.5f }; +char lbl_1_data_21C[12][0x10] = { + "tsume10", "tsume11", "tsume12", + "tsume20", "tsume21", "tsume22", + "tsume30", "tsume31", "tsume32", + "tsume40", "tsume41", "tsume42", +}; +u8 lbl_1_data_2DC[12] = { + 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0 +}; +s32 lbl_1_data_2E8[9] = { + 0x5F0000, 0x5F0002, 0x5F0003, 0x5F0005, 0x5F0006, + 0x5F0042, 0x5F0008, 0x5F0017, 0x5F0018 +}; +Vec lbl_1_data_30C = { 0.0f, 0.0f, 0.0f }; + +// PROTO +void fn_1_88E8(u8, f32, f32, f32); +void fn_1_8924(u8, s32); +u8 fn_1_8950(u8); +u8 fn_1_897C(u8); +u8 fn_1_89A8(u8); +Vec* fn_1_89D4(u8); +void fn_1_94D0(omObjData*); +void fn_1_9A64(omObjData*); +void fn_1_AE58(omObjData*); +void fn_1_AE64(omObjData*); +u16 fn_1_B79C(f32, f32, f32); +s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3); +void fn_1_C604(s32, s32); +s32 fn_1_C878(s16, const char*, Mtx, s32); +void fn_1_C99C(HsfObject*, Mtx, const char*, Mtx); +void fn_1_CE74(s32); +void fn_1_CF00(Process*); +void fn_1_CF80(omObjData*); +s32 fn_1_D010(s32, s32); + +omObjData* fn_1_93F0(Process* arg0) { + lbl_1_bss_6DC = arg0; + lbl_1_bss_6D8 = omAddObjEx(arg0, 0x40, 5, 9, -1, fn_1_94D0); + lbl_1_bss_6CC = 0; + lbl_1_bss_6C8 = 0; + lbl_1_bss_6C4 = 0; + lbl_1_bss_6C0 = 0; + fn_1_CF00(arg0); + return lbl_1_bss_6D8; +} + +void fn_1_94A4(void) { + fn_1_AE58(lbl_1_bss_6D8); +} + +void fn_1_94D0(omObjData* arg0) { + s32 var_r29; + M424DllClawStruct* var_r31; + + var_r31 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B0, 0x10000000); + memset(var_r31, 0, 0x1B0); + var_r31->unk0 = lbl_1_bss_24[3]; + var_r31->unk2 = GWPlayerCfg[var_r31->unk0].character; + var_r31->unk4 = GWPlayerCfg[var_r31->unk0].pad_idx; + var_r31->unk6 = GWPlayerCfg[var_r31->unk0].iscom; + var_r31->unk8 = GWPlayerCfg[var_r31->unk0].diff; + var_r31->unkA = var_r31->unkC = 0; + var_r31->unk10 = 0; + var_r31->unk12 = 0; + var_r31->unk14 = 0; + var_r31->unk16 = 0; + var_r31->unk18 = 0; + var_r31->unk1C = 0.0f; + var_r31->unk20 = 1.0f; + var_r31->unk24 = 0.0f; + var_r31->unk28 = 0.0f; + var_r31->unk2C = 1.0f; + var_r31->unk15C = 0; + var_r31->unk160 = 0; + var_r31->unk164 = 0; + var_r31->unk168 = -1; + var_r31->unk16C = -1; + var_r31->unk170 = -1; + var_r31->unk174 = lbl_1_data_30C; + // @todo how did this happen + var_r31->unk180 = (180.0 * (atan2(-102.864990234375, 424.559997558593750) / M_PI)); + if (var_r31->unk180 < 0.0f) { + var_r31->unk180 += 360.0f; + } + var_r31->unk184 = -1; + var_r31->unk30 = lbl_1_data_30C; + + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { + var_r31->unk3C[var_r29] = lbl_1_data_30C; + var_r31->unkCC[var_r29] = lbl_1_data_30C; + } + var_r31->unk188 = 0; + var_r31->unk18C = -1; + var_r31->unk190 = 0; + var_r31->unk194 = 0; + var_r31->unk198 = 0; + var_r31->unk19C = 0; + var_r31->unk1A0 = 0; + var_r31->unk1A4 = 0; + var_r31->unk1A8 = 0.0f; + var_r31->unk1AC = 0; + arg0->model[0] = CharModelCreate(var_r31->unk2, 1); + Hu3DModelShadowSet(arg0->model[0]); + CharModelStepTypeSet(var_r31->unk2, 1); + for (var_r29 = 0; var_r29 < 9; var_r29++) { + arg0->motion[var_r29] = CharModelMotionCreate(var_r31->unk2, lbl_1_data_2E8[var_r29]); + } + var_r31->unkE = 5; + CharModelMotionSet(var_r31->unk2, arg0->motion[var_r31->unkE]); + arg0->model[1] = Hu3DModelCreateFile(0x37001D); + Hu3DModelShadowSet(arg0->model[1]); + arg0->model[2] = Hu3DModelCreateFile(0x37001E); + Hu3DModelShadowSet(arg0->model[2]); + arg0->model[3] = Hu3DModelCreateFile(0x37001F); + Hu3DModelShadowSet(arg0->model[3]); + arg0->model[4] = Hu3DModelCreateFile(0x370020); + Hu3DModelShadowSet(arg0->model[4]); + Hu3DModelScaleSet(arg0->model[4], 0.9f, 0.9f, 0.9f); + Hu3DModelHookSet(arg0->model[1], "hook1", arg0->model[2]); + Hu3DModelHookSet(arg0->model[2], "hook2", arg0->model[3]); + Hu3DModelHookSet(arg0->model[3], "hook3", arg0->model[4]); + Hu3DModelPosSet(arg0->model[1], 950.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[2], 0x40000002); + Hu3DModelAttrSet(arg0->model[4], 0x40000002); + arg0->trans.x = 950.0f; + arg0->trans.y = 275.0f; + arg0->trans.z = 0.0f; + arg0->rot.y = 270.0f; + var_r31->unk10 = 3; + var_r31->unk24 = 0.45f; + var_r31->unk12 = 0; + arg0->func = fn_1_9A64; +} + +void fn_1_9A64(omObjData* arg0) { + Mtx sp74; + Mtx sp44; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + f32 var_f31; + f32 temp_f30; + M424DllClawStruct* temp_r31; + s32 var_r29; + s32 temp_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + temp_r31 = arg0->data; + if (fn_1_FE0() == 4) { + temp_r31->unkC = HuPadBtn[temp_r31->unk4]; + temp_r31->unkA = HuPadBtnDown[temp_r31->unk4]; + if (temp_r31->unk6 != 0) { + fn_1_AE64(arg0); + } + } else { + temp_r31->unkC = 0; + temp_r31->unkA = 0; + } + if (fn_1_FE0() <= 1) { + var_r25 = -1; + } else { + var_r25 = temp_r31->unk10; + } + switch (var_r25) { + case 0: + if (fn_1_FE0() >= 4) { + temp_r31->unk10 = 1; + temp_r31->unk12 = 0; + } + break; + case 1: + if (fn_1_FE0() > 4) { + temp_r31->unk10 = 10; + temp_r31->unk12 = 0; + } else if ((temp_r31->unkA & 0x100) != 0) { + HuAudFXPlay(0x62A); + temp_r31->unk184 = HuAudFXPlay(0x621); + temp_r31->unk10 = 2; + temp_r31->unk12 = 0; + } + break; + case 2: + temp_r31->unk12++; + temp_r31->unk24 += ((1.0f / 60.0f) * temp_r31->unk20); + if (temp_r31->unk24 >= 1.0f) { + temp_r31->unk24 = 1.0f; + temp_r31->unk20 = -1.0f; + } else { + if (temp_r31->unk24 <= 0.0f) { + temp_r31->unk24 = 0.0f; + temp_r31->unk20 = 1.0f; + } + } + if (fn_1_FE0() > 4) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + } + HuAudFXPlay(0x622); + temp_r31->unk10 = 10; + temp_r31->unk12 = 0; + } else if (((temp_r31->unkC & 0x100) == 0) || (temp_r31->unk12 >= 360.0f)) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + } + HuAudFXPlay(0x622); + temp_r31->unk184 = HuAudFXPlay(0x62C); + temp_r31->unk168 = -1; + temp_r31->unk16C = -1; + temp_r31->unk10 = 3; + temp_r31->unk12 = 0; + } + break; + case 3: + temp_r31->unk12++; + if (temp_r31->unk15C == 0) { + temp_r31->unk28 += (1.0f / 60.0f); + } + if (temp_r31->unk28 > 1.0f) { + temp_r31->unk28 = 1.0f; + } + if (temp_r31->unk12 >= 0x3C) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + } + HuAudFXPlay(0x62D); + HuAudFXPlay(0x625); + temp_r31->unk10 = 4; + temp_r31->unk12 = 0; + } + temp_r31->unk15C = 0; + break; + case 4: + temp_r31->unk12++; + if (temp_r31->unk160 == 0) { + temp_r31->unk2C -= (1.0f / 60.0f); + } + if (temp_r31->unk2C < 0.0f) { + temp_r31->unk2C = 0.0f; + } + if (temp_r31->unk12 >= 0x3C) { + temp_r31->unk10 = 5; + temp_r31->unk12 = 0; + } + temp_r31->unk160 = 0; + break; + case 5: + temp_r31->unk12++; + if (temp_r31->unk12 >= 6.0f) { + temp_r31->unk184 = HuAudFXPlay(0x62C); + if ((temp_r31->unk168 != -1)) { + var_r27 = fn_1_897C(temp_r31->unk168); + if (var_r27 != 0) { + var_r26 = fn_1_89A8(temp_r31->unk168); + HuAudCharVoicePlay(var_r26, 0x128); + } + } + temp_r31->unk10 = 6; + temp_r31->unk12 = 0; + } + break; + case 6: + temp_r31->unk12++; + temp_r31->unk28 -= (1.0f / 45.0f); + if (temp_r31->unk28 <= 0.0f) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + } + HuAudFXPlay(0x62D); + temp_r31->unk28 = 0.0f; + if (temp_r31->unk168 != -1) { + var_r27 = fn_1_897C(temp_r31->unk168); + } else { + var_r27 = -1; + } + if (temp_r31->unk168 == -1) { + if (fn_1_FE0() > 4) { + temp_r31->unk10 = 10; + temp_r31->unk12 = 0; + } else { + temp_r31->unk10 = 8; + temp_r31->unk12 = 0; + HuAudFXPlay(0x625); + } + } else if (var_r27 == 0) { + temp_r31->unk10 = 8; + temp_r31->unk12 = 0; + HuAudFXPlay(0x625); + } else { + if (temp_r31->unk168 != -1) { + fn_1_252C(-0.01f, 0x3C); + fn_1_2670(0x75, 0); + } + HuAudFXPlay(0x62B); + temp_r31->unk184 = HuAudFXPlay(0x623); + temp_r31->unk10 = 7; + temp_r31->unk12 = 0; + } + } + break; + case 7: + if (arg0->rot.y < temp_r31->unk180) { + arg0->rot.y += 1.25f; + } else if (arg0->rot.y > temp_r31->unk180) { + arg0->rot.y = temp_r31->unk180; + } + var_f31 = 0.35f - temp_r31->unk24; + if (var_f31 > 0.0125f) { + temp_r31->unk24 += 0.0125f; + } else if (var_f31 < -0.0125f) { + temp_r31->unk24 -= 0.0125f; + } else { + temp_r31->unk24 = 0.35f; + } + if ((arg0->rot.y == temp_r31->unk180) && (0.35f == temp_r31->unk24)) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + } + HuAudFXPlay(0x624); + HuAudFXPlay(0x625); + temp_r31->unk10 = 8; + temp_r31->unk12 = 0; + } + break; + case 8: + if ((temp_r31->unk12 == 0) && (temp_r31->unk168 != -1)) { + if (fn_1_897C(temp_r31->unk168) != 0) { + fn_1_8924(temp_r31->unk168, 4); + var_r26 = fn_1_89A8(temp_r31->unk168); + HuAudCharVoicePlay(var_r26, 0x123); + fn_1_D010(0x628, 30); + } else { + fn_1_8924(temp_r31->unk168, 2); + } + temp_r31->unk16C = temp_r31->unk168; + temp_r31->unk168 = -1; + } + temp_r31->unk12++; + temp_r31->unk2C += 0.033333335f; + if (temp_r31->unk2C > 1.0f) { + temp_r31->unk2C = 1.0f; + } + if (temp_r31->unk2C >= 1.0f) { + if (arg0->rot.y == temp_r31->unk180) { + temp_r31->unk184 = HuAudFXPlay(0x623); + } + if (temp_r31->unk16C != -1) { + if (fn_1_897C(temp_r31->unk16C) != 0) { + lbl_1_bss_6CC++; + } + } + temp_r31->unk10 = 9; + temp_r31->unk12 = 0; + } + break; + case 9: + temp_r31->unk12++; + if (arg0->rot.y > 270.0f) { + arg0->rot.y -= 1.25f; + } else if (arg0->rot.y < 270.0f) { + arg0->rot.y = 270.0f; + } + if (temp_r31->unk24 > 0.025f) { + temp_r31->unk24 -= 0.025f; + } else if (temp_r31->unk24 < 0.05f) { + temp_r31->unk24 = 0.0f; + } + if ((270.0f == arg0->rot.y) && (0.0f == temp_r31->unk24)) { + if (temp_r31->unk184 != -1) { + HuAudFXStop(temp_r31->unk184); + temp_r31->unk184 = -1; + HuAudFXPlay(0x624); + } + temp_r31->unk20 = 1.0f; + temp_r31->unk10 = 1; + temp_r31->unk12 = 0; + } + break; + case 10: + if (fn_1_B888() != 0) { + temp_r31->unkE = 5; + CharModelMotionSet(temp_r31->unk2, arg0->motion[temp_r31->unkE]); + temp_r31->unkE = 3; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0U); + temp_r31->unk16 = 0; + temp_r31->unk14 = 0; + temp_r31->unk1C = lbl_1_data_210[0]; + temp_r31->unk18 = fn_1_B79C(lbl_1_data_1E0[0].y, lbl_1_data_1E0[1].y, temp_r31->unk1C); + temp_r31->unk10 = 11; + temp_r31->unk12 = 0; + } else { + temp_r31->unk10 = 13; + temp_r31->unk12 = 0; + } + break; + case 11: + var_r29 = temp_r31->unk14; + if (var_r29 > 2) { + var_r29 = 2; + } + if (temp_r31->unk16 == 0) { + temp_r31->unk12++; + sp14 = lbl_1_data_1E0[var_r29]; + sp8 = lbl_1_data_1E0[var_r29 + 1]; + arg0->rot.y = fn_1_1470(atan2d((sp8.x - arg0->trans.x), (sp8.z - arg0->trans.z)), arg0->rot.y, 10.0f); + var_f31 = (f32)temp_r31->unk12 / temp_r31->unk18; + arg0->trans.x = sp14.x + (var_f31 * (sp8.x - sp14.x)); + arg0->trans.z = sp14.z + (var_f31 * (sp8.z - sp14.z)); + arg0->trans.y += temp_r31->unk1C; + temp_r31->unk1C -= 0.65333337f; + if (temp_r31->unk14 == 2) { + if ((temp_r31->unk12 >= (0.4f * temp_r31->unk18)) && (temp_r31->unkE != 6) && (CharModelMotionShiftIDGet(temp_r31->unk2) == -1)) { + temp_r31->unkE = 6; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0); + } + } + if (temp_r31->unk12 >= temp_r31->unk18) { + arg0->trans.x = sp8.x; + arg0->trans.y = sp8.y; + arg0->trans.z = sp8.z; + temp_r31->unkE = 4; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0U); + temp_r31->unk12 = 0; + temp_r31->unk16 ^= 1; + if (++temp_r31->unk14 >= 3) { + temp_r31->unk10 = 0xC; + } + } + } else { + sp14 = lbl_1_data_1E0[var_r29]; + sp8 = lbl_1_data_1E0[var_r29 + 1]; + var_f31 = atan2d((sp8.x - arg0->trans.x), (sp8.z - arg0->trans.z)); + arg0->rot.y = fn_1_1470(var_f31, arg0->rot.y, 10.0f); + if ((fn_1_1358(var_f31, arg0->rot.y) < 1.0f) && (CharModelMotionShiftIDGet(temp_r31->unk2) == -1)) { + temp_r31->unkE = 3; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0); + temp_r31->unk1C = lbl_1_data_210[var_r29]; + temp_r31->unk18 = fn_1_B79C(sp14.y, sp8.y, temp_r31->unk1C); + temp_r31->unk12 = 0; + temp_r31->unk16 ^= 1; + } + } + break; + case 12: + if ((temp_r31->unkE != 0) && (CharModelMotionShiftIDGet(temp_r31->unk2) == -1)) { + temp_r31->unkE = 0; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0x40000008); + } + arg0->rot.y = fn_1_1470(0.0f, arg0->rot.y, 10.0f); + if ((fn_1_1358(0.0f, arg0->rot.y) < 1.0f) && (temp_r31->unkE == 0)) { + temp_r31->unk10 = 0xD; + temp_r31->unk12 = 0; + } + break; + case 13: + if (fn_1_FE0() >= 7) { + if (fn_1_B888() != 0) { + temp_r31->unk10 = 14; + temp_r31->unk12 = 0; + } else { + temp_r31->unk10 = 15; + temp_r31->unk12 = 0; + } + } + break; + case 14: + if ((temp_r31->unkE != 7) && (CharModelMotionShiftIDGet(temp_r31->unk2) == -1)) { + temp_r31->unkE = 7; + CharModelMotionShiftSet(temp_r31->unk2, arg0->motion[temp_r31->unkE], 0.0f, 8.0f, 0); + } + break; + case 15: + break; + } + if (temp_r31->unk10 <= 9) { + Hu3DModelRotSet(arg0->model[1], 0.0f, 90.0f + arg0->rot.y, 0.0f); + } + temp_r28 = arg0->model[2]; + Hu3DMotionTimeSet(temp_r28, temp_r31->unk24 * Hu3DMotionMaxTimeGet(temp_r28)); + fn_1_CE74(temp_r28); + temp_f30 = 0.2f + (0.8f * temp_r31->unk28); + Hu3DModelScaleSet(arg0->model[3], 1.0f, temp_f30, 1.0f); + Hu3DModelScaleSet(arg0->model[4], 1.0f, 1.0f / temp_f30, 1.0f); + temp_r28 = arg0->model[4]; + Hu3DMotionTimeSet(temp_r28, temp_r31->unk2C * Hu3DMotionMaxTimeGet(temp_r28)); + fn_1_CE74(temp_r28); + fn_1_C878(arg0->model[1], "hook1", sp74, 0); + fn_1_C878(arg0->model[2], "hook2", sp74, 1); + fn_1_C878(arg0->model[3], "hook3", sp74, 1); + PSMTXCopy(sp74, sp44); + temp_r31->unk30.x = sp74[0][3]; + temp_r31->unk30.y = sp74[1][3]; + temp_r31->unk30.z = sp74[2][3]; + + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { + PSMTXCopy(sp44, sp74); + fn_1_C878(arg0->model[4], lbl_1_data_21C[var_r29], sp74, 1); + temp_r31->unkCC[var_r29] = temp_r31->unk3C[var_r29]; + temp_r31->unk3C[var_r29].x = sp74[0][3]; + temp_r31->unk3C[var_r29].y = sp74[1][3]; + temp_r31->unk3C[var_r29].z = sp74[2][3]; + } + if ((temp_r31->unk168 != -1) && (temp_r31->unk10 >= 6)) { + sp2C.x = 0.0f; + sp2C.y = temp_r31->unk174.y; + sp2C.z = 0.0f; + PSVECSubtract(&temp_r31->unk174, &sp2C, &sp20); + var_f31 = PSVECMag(&sp20); + if (var_f31 != 0.0f) { + PSVECNormalize(&sp20, &sp20); + PSVECScale(&sp20, &sp20, 0.9f * var_f31); + PSVECAdd(&sp2C, &sp20, &temp_r31->unk174); + } + PSVECAdd(&temp_r31->unk30, &temp_r31->unk174, &sp38); + fn_1_88E8(temp_r31->unk168, sp38.x, sp38.y, sp38.z); + } + temp_r31->unk164 = 1; +} + +void fn_1_AE58(omObjData* arg0) { + arg0->func = NULL; +} + +f32 lbl_1_data_36C[4][2] = { + 30.0f, 24.0f, + 24.0f, 18.0f, + 12.0f, 6.0f, + 6.0f, 0.0f +}; + +f32 lbl_1_data_38C[4][2] = { + 0.2f, 0.15f, + 0.15f, 0.1f, + 0.1f, 0.05f, + 0.05f, 0.0f +}; + +void fn_1_AE64(omObjData* arg0) { + M424DllClawStruct2 sp20[8]; + M424DllClawStruct2 sp10; + s32 spC; + f32 var_f31; + f32 var_f29; + f32 temp_f28; + f32 temp_f27; + f32 temp_f26; + f32 var_f25; + f32 var_f24; + s32 temp_r24; + s32 temp_r23; + M424DllClawStruct* temp_r31; + Vec* var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + M424DllBallStruct2* var_r26; + s32 var_r25; + + spC = 0; + temp_r31 = arg0->data; + var_r26 = &lbl_1_bss_60[0]; + if (var_r26) { + temp_r31->unkC = 0; + temp_r31->unkA = 0; + switch (temp_r31->unk10) { + case 1: + if (temp_r31->unk188 == 0) { + temp_r31->unk188 = 1; + temp_r31->unk18C = -1; + temp_r31->unk190 = 0; + temp_r31->unk194 = 0; + temp_r31->unk198 = 0; + temp_r31->unk19C = 0; + temp_r31->unk1A0 = 0; + temp_r31->unk1A4 = 0; + temp_r31->unk1A8 = 0.0f; + } + if (temp_r31->unk18C == -1) { + for (var_r29 = 0, var_r28 = 0; var_r29 < lbl_1_bss_58; var_r29++, var_r26++) { + if ((fn_1_897C(var_r29) != 0) && (fn_1_8950(var_r29) <= 2)) { + var_r30 = fn_1_89D4(var_r29); + var_f31 = atan2d(var_r30->x, var_r30->z); + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + if (var_r28 < 8) { + if (var_f31 >= -90.0f) { + if (var_f31 <= 45.0f) { + sp20[var_r28].unk0 = var_r29; + sp20[var_r28].unkC = var_f31; + sp20[var_r28].unk4 = var_r30->x; + sp20[var_r28].unk8 = var_r30->z; + var_r28++; + } + } + } + } + } + if (var_r28 != 0) { + for (var_r29 = 0; var_r29 < (var_r28 - 1); var_r29++) { + var_r27 = var_r29 + 1; + for (;var_r27 < var_r28; var_r27++) { + if (sp20[var_r29].unkC < sp20[var_r27].unkC) { + sp10 = sp20[var_r29]; + sp20[var_r29] = sp20[var_r27]; + sp20[var_r27] = sp10; + } + } + } + temp_r31->unk18C = sp20[0].unk0; + temp_r31->unk1A8 = sp20[0].unkC; + temp_r31->unk19C = 0; + temp_r31->unk1A0 = 0; + temp_r31->unk1A4 = 0; + temp_r31->unk1AC = 0; + } + } + if (temp_r31->unk18C != -1) { + var_r30 = fn_1_89D4(temp_r31->unk18C); + var_f31 = atan2d(var_r30->x, var_r30->z); + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + if (var_f31 >= 30.0f) { + if (temp_r31->unk19C != 0) { + temp_f27 = lbl_1_data_36C[temp_r31->unk8][0]; + temp_f26 = lbl_1_data_36C[temp_r31->unk8][1]; + temp_r24 = ((temp_f26 - temp_f27) * (temp_f27 * (0.007874016f * (frand() & 0x7F)))); + temp_f27 = lbl_1_data_38C[temp_r31->unk8][0]; + temp_f26 = lbl_1_data_38C[temp_r31->unk8][1]; + temp_r23 = ((temp_f26 - temp_f27) * (temp_f27 * (0.007874016f * (frand() & 0x7F)))); + temp_r31->unk190 = ((3.0f * temp_r31->unk1A4) + temp_r24); + temp_f28 = (var_r30->x * var_r30->x) + (var_r30->z * var_r30->z); + var_f29 = sqrtf(temp_f28); + var_f29 = (var_f29 - 350.0f) / 250.0f + temp_r23; + if (var_f29 < 0.0f) { + var_f29 = 0.0f; + } else if (var_f29 > 1.0f) { + var_f29 = 1.0f; + } + temp_r31->unk194 = (60.0f * (1.0f - var_f29)); + var_f25 = (1.5f + (-1.5f * var_f29)); + temp_r31->unk190 -= (s32)(60.0f * var_f25); + var_f25 = (1.0f + (-1.1f * var_f29)); + temp_r31->unk198 = (60.0f * var_f25); + temp_r31->unk19C = 0; + temp_r31->unk1A0 = 0; + temp_r31->unk1AC = 0; + temp_r31->unk1AC = (temp_r31->unk1AC + (60.0f * (1.0f - var_f29))); + } + if (++temp_r31->unk1AC >= (temp_r31->unk190 - temp_r31->unk198)) { + temp_r31->unkA |= 0x100; + temp_r31->unkC |= 0x100; + temp_r31->unk1AC = 0; + return; + } + } else { + if (var_f31 >= (15.0f + temp_r31->unk1A8)) { + temp_r31->unk1A0++; + temp_r31->unk1A8 = var_f31; + temp_r31->unk1A4 = (temp_r31->unk19C / temp_r31->unk1A0); + return; + } + temp_r31->unk19C++; + return; + } + } + break; + case 2: + if (temp_r31->unk18C != -1) { + var_r25 = 1; + if (++temp_r31->unk1AC >= temp_r31->unk194) { + var_r25 = 0; + } + } else { + var_r25 = 0; + } + if (var_r25 != 0) { + temp_r31->unkC |= 0x100; + } + temp_r31->unk188 = 0; + break; + } + } +} + +u16 fn_1_B79C(f32 arg0, f32 arg1, f32 arg2) { + f32 var_f31; + f32 var_f3; + u16 var_r31; + + var_r31 = 0; + for (var_f31 = arg0; arg2 > 0.0f || var_f31 > arg1; var_r31++) { + var_f31 += arg2; + arg2 -= 0.65333337f; + } + return var_r31; +} + +s32 fn_1_B804(void) { + M424DllClawStruct* temp_r31; + + if (!lbl_1_bss_6D8) { + return 0; + } + if (!lbl_1_bss_6D8->data) { + return 0; + } + temp_r31 = lbl_1_bss_6D8->data; + if ((temp_r31->unk10 >= 1) && (temp_r31->unk10 < 6)) { + return 1; + } + return 0; +} + +s32 fn_1_B888(void) { + if (lbl_1_bss_6CC >= 3) { + return 1; + } else { + return 0; + } +} + +s32 fn_1_B8AC(void) { + M424DllClawStruct* temp_r31; + + if (!lbl_1_bss_6D8) { + return 0; + } + if (!lbl_1_bss_6D8->data) { + return 0; + } + + temp_r31 = lbl_1_bss_6D8->data; + if (temp_r31->unk10 >= 10) { + return 1; + } + return 0; +} + +s32 fn_1_B924(void) { + M424DllClawStruct* temp_r31; + + if (!lbl_1_bss_6D8) { + return 0; + } + if (!lbl_1_bss_6D8->data) { + return 0; + } + + temp_r31 = lbl_1_bss_6D8->data; + if (temp_r31->unk10 >= 13) { + return 1; + } + return 0; +} + +void fn_1_B99C(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2) { + fn_1_B9E0(arg0, arg1, arg8, arg2, 0x10); +} + +s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3) { + Vec sp60; + Vec sp54; + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + f32 temp_f30; + f32 var_f29; + f32 temp_f28; + f32 temp_f27; + f32 temp_f26; + f32 var_f25; + f32 var_f24; + f32 var_f23; + M424DllClawStruct* temp_r31; + s32 var_r29; + s32 var_r28; + s32 var_r26; + omObjData* var_r24; + s32 var_r23; + + var_r23 = 1; + var_r28 = 0; + var_r24 = lbl_1_bss_6D8; + temp_r31 = var_r24->data; + PSVECAdd(arg0, arg1, &sp24); + spC = *arg1; + *arg2 = *arg0; + temp_f30 = 5.0f + arg8; + if (temp_r31->unk164 == 0) { + return 0; + } + switch (temp_r31->unk10) { + case 3: + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { + if (var_r28 != 0) { + sp24 = *arg2; + PSVECSubtract(&sp24, arg0, &spC); + } + PSVECSubtract(&sp24, &temp_r31->unk3C[var_r29], &sp18); + var_f29 = PSVECMag(&sp18); + if (var_f29 < temp_f30) { + if (0.0f == var_f29) { + var_f29 = temp_f30; + sp18.x = 0.0f; + sp18.y = 0.0f; + sp18.z = 1.0f; + } + var_f23 = sqrtf((sp18.x * sp18.x) + (sp18.z * sp18.z)); + if ((temp_r31->unk3C[var_r29].y > sp24.y) && (var_f23 < 17.599999999999998)) { + temp_r31->unk15C = 1; + } else { + PSVECNormalize(&sp18, &sp18); + PSVECScale(&sp18, &sp18, temp_f30); + PSVECAdd(&temp_r31->unk3C[var_r29], &sp18, arg2); + } + var_r28 = 1; + } + } + break; + default: + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { + if (var_r28 != 0) { + sp24 = *arg2; + PSVECSubtract(&sp24, arg0, &spC); + } + var_r26 = 0; + sp60 = temp_r31->unk3C[var_r29]; + PSVECAdd(&temp_r31->unkCC[var_r29], &spC, &sp54); + PSVECSubtract(&sp60, &sp54, &sp18); + PSVECSubtract(&sp24, &sp54, &sp48); + temp_f26 = (sp18.z * sp18.z) + ((sp18.x * sp18.x) + (sp18.y * sp18.y)); + if (temp_f26 != 0.0f) { + var_f24 = (sp18.x * sp48.x) + (sp18.y * sp48.y) + (sp18.z * sp48.z); + temp_f27 = var_f24 / temp_f26; + if (temp_f27 >= 0.0f) { + if (temp_f27 <= 1.0f) { + PSVECScale(&sp18, &sp18, temp_f27); + PSVECAdd(&sp54, &sp18, &sp3C); + PSVECSubtract(&sp24, &sp3C, &sp30); + var_f29 = PSVECMag(&sp30); + if (var_f29 == 0.0f) { + if (PSVECMag(&sp18) <= 0.0f) { + sp18.x = sp18.y = 0.0f; + sp18.z = 1.0f; + } + PSVECNormalize(&sp18, &sp30); + PSVECScale(&sp30, &sp30, temp_f30); + PSVECAdd(&sp60, &sp30, arg2); + var_r28 = 1; + var_r26 = 1; + } else if (var_f29 < temp_f30) { + if (PSVECMag(&sp30) <= 0.0f) { + + sp30.x = sp30.y = 0.0f; + sp30.z = 1.0f; + } + PSVECNormalize(&sp30, &sp30); + PSVECScale(&sp30, &sp30, temp_f30); + PSVECAdd(&sp3C, &sp30, arg2); + var_r28 = 1; + var_r26 = 1; + } + } + } + } + if (var_r26 == 0) { + PSVECSubtract(&sp24, &sp60, &sp18); + var_f29 = PSVECMag(&sp18); + if (var_f29 < temp_f30) { + if (var_f29 <= 0.0f) { + sp18.x = sp18.y = 0.0f; + sp18.z = 1.0f; + } + PSVECNormalize(&sp18, &sp18); + PSVECScale(&sp18, &sp18, temp_f30); + PSVECAdd(&temp_r31->unk3C[var_r29], &sp18, arg2); + var_r28 = 1; + var_r26 = 1; + } + } + if (var_r26 == 0) { + PSVECSubtract(&sp24, &sp54, &sp18); + var_f29 = PSVECMag(&sp18); + if (var_f29 < temp_f30) { + if (var_f29 <= 0.0f) { + sp18.x = sp18.y = 0.0f; + sp18.z = 1.0f; + } + PSVECNormalize(&sp18, &sp18); + PSVECScale(&sp18, &sp18, temp_f30); + PSVECAdd(&temp_r31->unk3C[var_r29], &sp18, arg2); + var_r28 = 1; + var_r26 = 1; + } + } + if ((lbl_1_data_2DC[var_r29] != 0) && (var_r26 == 0)) { + var_r23 = 0; + } + } + if ((temp_r31->unk10 == 4) && (var_r23 != 0)) { + arg2->x = temp_r31->unk30.x; + arg2->y = arg0->y; + arg2->z = temp_r31->unk30.z; + arg3 = 0; + temp_r31->unk160 = 1; + } + break; + case 0: + case 1: + case 2: + case 9: + break; + } + if (var_r28 != 0) { + if (--arg3 > 0) { + sp24 = *arg2; + PSVECSubtract(&sp24, arg0, &spC); + if (fn_1_B9E0(arg0, &spC, arg8, &sp24, arg3) != 0) { + *arg2 = sp24; + } + } + } + + (void)temp_f30; // @todo fix + (void)temp_f30; + return var_r28; +} + +s32 fn_1_C210(Vec* arg0) { + Vec sp1C; + Vec sp10; + f32 spC; + M424DllClawStruct* temp_r31; + omObjData* var_r30; + s32 var_r29; + + var_r29 = 0; + var_r30 = lbl_1_bss_6D8; + temp_r31 = var_r30->data; + if (temp_r31->unk164 == 0) { + return 0; + } + switch (temp_r31->unk10) { + case 5: + sp1C.x = temp_r31->unk30.x; + sp1C.y = -120.00001f + temp_r31->unk30.y; + sp1C.z = temp_r31->unk30.z; + PSVECSubtract(arg0, &sp1C, &sp10); + if ((spC = PSVECMag(&sp10)) < 50.0f) { + var_r29 = 1; + } + } + return var_r29; +} + +void fn_1_C2E0(s32 arg0) { + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + Vec* spC; + M424DllBallStruct2* temp_r27; + Vec* temp_r28; + M424DllClawStruct* temp_r31; + s32 var_r30; + s32 var_r26; + omObjData* var_r25; + + if ((u8)omPauseChk() != 0U) return; + + var_r25 = lbl_1_bss_6D8; + if (lbl_1_bss_6D8) { + temp_r31 = var_r25->data; + if (temp_r31 && (temp_r31->unk164 != 0)) { + temp_r27 = &lbl_1_bss_60[0]; + if (temp_r27) { + var_r26 = 0x10; + + for (var_r30 = 0; var_r30 < lbl_1_bss_58; var_r30++) { + temp_r27 = &lbl_1_bss_60[var_r30]; + if ((fn_1_8950(var_r30) == 3) || (fn_1_8950(var_r30) == 4)) continue; + temp_r28 = fn_1_89D4(var_r30); + spC = fn_1_8A00(var_r30); + sp28 = *temp_r28; + sp4C = temp_r27->unk60; + PSVECSubtract(temp_r28, &sp4C, &sp40); + if (fn_1_B9E0(&sp4C, &sp40, 100.0f, &sp34, 0x10) != 0) { + *temp_r28 = sp34; + sp4C = sp34; + if ((temp_r27->unk4 < 3) && (fn_1_907C(&sp4C, &sp34) != 0)) { + *temp_r28 = sp34; + sp4C = sp34; + } + fn_1_C604(var_r30, 0x20); + if ((sp28.y != sp4C.y) && (var_r30 != temp_r31->unk168) && (var_r30 != temp_r31->unk16C)) { + temp_r28->y = sp28.y; + sp4C.y = sp28.y; + if (var_r26 > 0) { + var_r30--; + var_r26--; + continue; + } + } + } + if (temp_r31->unk168 == -1) { + if (fn_1_C210(&sp4C) != 0) { + temp_r31->unk168 = var_r30; + temp_r31->unk170 = fn_1_897C(var_r30); + PSVECSubtract(&sp4C, &temp_r31->unk30, &temp_r31->unk174); + fn_1_88E8(temp_r31->unk168, sp4C.x, sp4C.y, sp4C.z); + } + } + var_r26 = 0x10; + } + } + } + } +} + +void fn_1_C604(s32 arg0, s32 arg1) { + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + M424DllBallStruct2* sp8; + Vec* var_r31; + f32 temp_f31; + f32 var_f30; + s32 var_r30; + M424DllBallStruct2* var_r28; + Vec* var_r27; + + sp8 = &lbl_1_bss_60[var_r30]; + var_r27 = fn_1_89D4(arg0); + sp30 = *var_r27; + for (var_r30 = 0; var_r30 < lbl_1_bss_58; var_r30++) { + if ((var_r30 != arg0) && (fn_1_8950(var_r30) < 3)) { + var_r28 = &lbl_1_bss_60[var_r30]; + var_r31 = fn_1_89D4(var_r30); + sp24 = *var_r31; + PSVECSubtract(&sp24, &sp30, &sp18); + var_f30 = PSVECMag(&sp18); + if (var_f30 < 200.0f) { + if (var_f30 > 0.0f) { + temp_f31 = 1.0f / var_f30; + sp18.x *= temp_f31; + sp18.y *= temp_f31; + sp18.z *= temp_f31; + } else { + sp18.x = 0.0f; + sp18.y = 0.0f; + sp18.z = 1.0f; + } + temp_f31 = 1.0f + (200.0f - var_f30); + sp24.x += (sp18.x * temp_f31); + sp24.z += (sp18.z * temp_f31); + var_r31->x = sp24.x; + var_r31->z = sp24.z; + if ((var_r28->unk4 < 3) && (fn_1_907C(&sp24, &spC) != 0)) { + var_r31->x = sp24.x = spC.x; + var_r31->z = sp24.z = spC.z; + } + if (arg1 > 0) { + arg1--; + fn_1_C604(var_r30, arg1); + } + } + } + } +} + +void fn_1_C854(void) { + fn_1_C2E0(0); +} + +s32 fn_1_C878(s16 arg0, const char* arg1, Mtx arg2, s32 arg3) { + Mtx sp44; + Mtx sp14; + HsfData* temp_r30; + ModelData* temp_r31; + + temp_r31 = &Hu3DData[arg0]; + temp_r30 = temp_r31->hsfData; + lbl_1_bss_6C8 = 0; + if (temp_r31->unk_08 != -1) { + lbl_1_bss_6C4 = 1; + } else { + lbl_1_bss_6C4 = 0; + } + mtxRot(sp14, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); + PSMTXScale(sp44, temp_r31->scale.x, temp_r31->scale.y, temp_r31->scale.z); + PSMTXConcat(sp14, sp44, sp44); + mtxTransCat(sp44, temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z); + if (arg3 != 0) { + PSMTXConcat(arg2, sp44, sp44); + } + fn_1_C99C(temp_r30->root, sp44, arg1, arg2); + return lbl_1_bss_6C8; +} + +void fn_1_C99C(HsfObject* arg0, Mtx arg1, const char* arg2, Mtx arg3) { + Mtx spF8; + Mtx spC8; + Mtx sp98; + Mtx sp68; + Mtx sp38; + Mtx sp8; + HsfTransform* var_r31; + HsfTransform* var_r30; + HsfTransform* var_r29; + HsfObject* temp_r28; + HsfObject* temp_r27; + u32 var_r25; + u32 var_r24; + u32 var_r23; + + if (lbl_1_bss_6C8 == 0) { + if (lbl_1_bss_6C4 != 0) { + var_r31 = &arg0->data.curr; + } else { + var_r31 = &arg0->data.base; + } + if ((var_r31->scale.x <= 0.0f) && (var_r31->scale.y <= 0.0f) && (var_r31->scale.z <= 0.0f)) { + PSMTXCopy(arg1, spF8); + OSReport("OBJ MTX CHECK ERROR %s \n", arg0->name); + } else { + mtxRot(spC8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); + PSMTXScale(spF8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + PSMTXConcat(spC8, spF8, spF8); + mtxTransCat(spF8, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); + PSMTXConcat(arg1, spF8, spF8); + } + if (lbl_1_bss_6C0 != 0) { + OSReport("%s \n", arg0->name); + } + if (strcmp(arg2, arg0->name) == 0) { + PSMTXCopy(spF8, arg3); + lbl_1_bss_6C8 = 1; + } + for (var_r25 = 0; var_r25 < arg0->data.childrenCount; var_r25++) { + temp_r28 = arg0->data.children[var_r25]; + if (lbl_1_bss_6C8 == 0) { + if (lbl_1_bss_6C4 != 0) { + var_r30 = &temp_r28->data.curr; + } else { + var_r30 = &temp_r28->data.base; + } + if ((var_r30->scale.x <= 0.0f) && (var_r30->scale.y <= 0.0f) && (var_r30->scale.z <= 0.0f)) { + PSMTXCopy(spF8, sp68); + OSReport("OBJ MTX CHECK ERROR %s \n", temp_r28->name); + } else { + mtxRot(sp98, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); + PSMTXScale(sp68, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); + PSMTXConcat(sp98, sp68, sp68); + mtxTransCat(sp68, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); + PSMTXConcat(spF8, sp68, sp68); + } + if (lbl_1_bss_6C0 != 0) { + OSReport("%s \n", temp_r28->name); + } + if (strcmp(arg2, temp_r28->name) == 0) { + PSMTXCopy(sp68, arg3); + lbl_1_bss_6C8 = 1; + } + for (var_r24 = 0; var_r24 < temp_r28->data.childrenCount; var_r24++) { + temp_r27 = temp_r28->data.children[var_r24]; + if (lbl_1_bss_6C8 == 0) { + if (lbl_1_bss_6C4 != 0) { + var_r29 = &temp_r27->data.curr; + } else { + var_r29 = &temp_r27->data.base; + } + if ((var_r29->scale.x <= 0.0f) && (var_r29->scale.y <= 0.0f) && (var_r29->scale.z <= 0.0f)) { + PSMTXCopy(sp68, sp8); + OSReport("OBJ MTX CHECK ERROR %s \n", temp_r27->name); + } else { + mtxRot(sp38, var_r29->rot.x, var_r29->rot.y, var_r29->rot.z); + PSMTXScale(sp8, var_r29->scale.x, var_r29->scale.y, var_r29->scale.z); + PSMTXConcat(sp38, sp8, sp8); + mtxTransCat(sp8, var_r29->pos.x, var_r29->pos.y, var_r29->pos.z); + PSMTXConcat(sp68, sp8, sp8); + } + if (lbl_1_bss_6C0 != 0) { + OSReport("%s \n", temp_r27->name); + } + if (strcmp(arg2, temp_r27->name) == 0) { + PSMTXCopy(sp8, arg3); + lbl_1_bss_6C8 = 1; + } + for (var_r23 = 0; var_r23 < temp_r27->data.childrenCount; var_r23++) { + fn_1_C99C(temp_r27->data.children[var_r23], sp8, arg2, arg3); + } + } + } + } + } + } +} + +void fn_1_CE74(s32 arg0) { + ModelData* temp_r31; + + temp_r31 = &Hu3DData[arg0]; + if (temp_r31->unk_08 != -1) { + Hu3DMotionExec(arg0, temp_r31->unk_08, temp_r31->unk_64, 0); + } + if (temp_r31->unk_0C != -1) { + Hu3DSubMotionExec(arg0); + } + if (temp_r31->hsfData->cenvCnt != 0) { + EnvelopeProc(temp_r31->hsfData); + } +} + +void fn_1_CF00(Process* arg0) { + M424DllClawStruct3* var_r31; + s32 var_r30; + + omAddObjEx(arg0, 0x40, 0, 0, -1, fn_1_CF80); + var_r31 = &lbl_1_bss_640[0]; + + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + var_r31->unk0 = -1; + var_r31->unk4 = -1; + } +} + +void fn_1_CF80(omObjData* arg0) { + M424DllClawStruct3* var_r31; + s32 var_r30; + + var_r31 = &lbl_1_bss_640[0]; + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if ((var_r31->unk0 >= 0) && (var_r31->unk4 > 0)) { + if (--var_r31->unk4 <= 0) { + HuAudFXPlay(var_r31->unk0); + var_r31->unk0 = -1; + var_r31->unk4 = -1; + } + } + } +} + +s32 fn_1_D010(s32 arg0, s32 arg1) { + M424DllClawStruct3* var_r31; + s32 var_r30; + + var_r31 = &lbl_1_bss_640[0]; + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (var_r31->unk0 == -1) break; + } + if (var_r30 >= 0x10) { + return -1; + } + var_r31->unk0 = arg0; + var_r31->unk4 = arg1; + return var_r30; +} From 2121a31f1d4e354a6ad75284cff7be3293e1bec9 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Tue, 7 Jan 2025 17:17:38 +0100 Subject: [PATCH 02/24] Match m425Dll except for one function with an inline (#511) --- config/GMPE01_00/rels/m425Dll/symbols.txt | 387 +-- include/REL/m425Dll.h | 15 + src/REL/m425Dll/main.c | 1685 +++++++++++++ src/REL/m425Dll/thwomp.c | 2768 +++++++++++++++++++++ 4 files changed, 4662 insertions(+), 193 deletions(-) create mode 100644 include/REL/m425Dll.h create mode 100644 src/REL/m425Dll/main.c create mode 100644 src/REL/m425Dll/thwomp.c diff --git a/config/GMPE01_00/rels/m425Dll/symbols.txt b/config/GMPE01_00/rels/m425Dll/symbols.txt index cae3368f..627df9e1 100644 --- a/config/GMPE01_00/rels/m425Dll/symbols.txt +++ b/config/GMPE01_00/rels/m425Dll/symbols.txt @@ -65,211 +65,212 @@ fn_1_11A74 = .text:0x00011A74; // type:function size:0x46C fn_1_11EE0 = .text:0x00011EE0; // type:function size:0x7B4 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x10 data:4byte -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC0 -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:double -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x10 data:4byte -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x10 data:4byte -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 data:double -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x20 data:4byte -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 data:double -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 data:double -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC0 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x8 scope:local data:double +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x20 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 scope:local data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 scope:local data:double +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte lbl_1_data_4 = .data:0x00000004; // type:object size:0xC lbl_1_data_10 = .data:0x00000010; // type:object size:0xC -lbl_1_data_1C = .data:0x0000001C; // type:object size:0x24 +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x24 data:float lbl_1_data_40 = .data:0x00000040; // type:object size:0x4 -lbl_1_data_44 = .data:0x00000044; // type:object size:0x23 data:string +lbl_1_data_44 = .data:0x00000044; // type:object size:0x23 scope:local data:string lbl_1_data_68 = .data:0x00000068; // type:object size:0x4 data:4byte lbl_1_data_6C = .data:0x0000006C; // type:object size:0x28 lbl_1_data_94 = .data:0x00000094; // type:object size:0x30 jumptable_1_data_C4 = .data:0x000000C4; // type:object size:0x28 scope:local jumptable_1_data_EC = .data:0x000000EC; // type:object size:0x28 scope:local lbl_1_data_114 = .data:0x00000114; // type:object size:0x4 data:4byte -lbl_1_data_118 = .data:0x00000118; // type:object size:0x18 -lbl_1_data_130 = .data:0x00000130; // type:object size:0x1F data:string +lbl_1_data_118 = .data:0x00000118; // type:object size:0x18 data:float +lbl_1_data_130 = .data:0x00000130; // type:object size:0x1F scope:local data:string lbl_1_data_150 = .data:0x00000150; // type:object size:0x18 lbl_1_data_168 = .data:0x00000168; // type:object size:0x4 data:byte -lbl_1_data_16C = .data:0x0000016C; // type:object size:0x30 -lbl_1_data_19C = .data:0x0000019C; // type:object size:0x30 +lbl_1_data_16C = .data:0x0000016C; // type:object size:0x30 data:float +lbl_1_data_19C = .data:0x0000019C; // type:object size:0x30 data:float lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x20 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:float @@ -287,7 +288,7 @@ lbl_1_bss_668 = .bss:0x00000668; // type:object size:0x4 data:4byte lbl_1_bss_670 = .bss:0x00000670; // type:object size:0xC data:float lbl_1_bss_67C = .bss:0x0000067C; // type:object size:0xC data:float lbl_1_bss_688 = .bss:0x00000688; // type:object size:0x40 -lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x1 data:byte +lbl_1_bss_6C8 = .bss:0x000006C8; // type:object size:0x4 data:byte lbl_1_bss_6CC = .bss:0x000006CC; // type:object size:0x4 data:4byte lbl_1_bss_6D0 = .bss:0x000006D0; // type:object size:0x1 data:byte lbl_1_bss_6D4 = .bss:0x000006D4; // type:object size:0x4 data:4byte diff --git a/include/REL/m425Dll.h b/include/REL/m425Dll.h new file mode 100644 index 00000000..413e47c3 --- /dev/null +++ b/include/REL/m425Dll.h @@ -0,0 +1,15 @@ +#ifndef M425DLL_H +#define M425DLL_H + +#include "game/object.h" + +omObjData *fn_1_6A0C(Process *process, s32 arg1); +void fn_1_6C08(void); +void fn_1_6CD0(s32 arg0, Vec *arg1); +s32 fn_1_109EC(s32 arg0, s32 arg1, Vec *arg2, Vec *arg3, Vec *arg4, s32 arg5); +float fn_1_10CF4(s32 arg0); +void fn_1_10DB4(s32 arg0); +void fn_1_10E3C(s32 arg0); +float fn_1_10EF8(s32 arg0, s32 arg1, float arg8, float arg9); + +#endif diff --git a/src/REL/m425Dll/main.c b/src/REL/m425Dll/main.c new file mode 100644 index 00000000..ae214b28 --- /dev/null +++ b/src/REL/m425Dll/main.c @@ -0,0 +1,1685 @@ +#define HUSPR_USE_OLD_DEFS +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "math.h" +#include "string.h" + +#include "REL/m425Dll.h" + +extern u8 texMtxTbl[]; // TODO maybe put in hsfdraw.h? + +typedef struct M425DllWork { + u8 unk_00; + u8 unk_01; + u8 unk_02; + u8 unk_03; + u8 unk_04; + u8 unk_05; + u8 unk_06; + char unk07[2]; + u8 unk_09; + u8 unk_0A; + u8 unk_0B; + u8 unk_0C; + char unk0D; + s16 unk_0E; + float unk_10; + float unk_14; + Vec unk_18; + Vec unk_24; + Vec unk_30; + float unk_3C[8]; + s32 unk_5C; + float unk_60; + s32 unk_64; + s32 unk_68; +} M425DllWork; /* size = 0x6C */ + +typedef struct M425DllWork2 { + char unk00[4]; + Vec unk_04; + Vec unk_10; + Vec unk_1C; + Vec unk_28; + float unk_34; + float unk_38; + float unk_3C; + float unk_40; + float unk_44; + float unk_48; + char unk4C[0x18]; + float unk_64; + float unk_68; + float unk_6C; + char unk70[4]; + s16 unk_74; + s16 unk_76; +} M425DllWork2; /* size = 0x78 */ + +typedef struct M425DllUnkStruct { + s16 unk_00; + s16 unk_02; + s16 unk_04; + char unk06[0x42]; +} M425DllUnkStruct; /* size = 0x48 */ + +typedef struct M425DllUnkStruct2 { + AnimData *unk_00; + s16 unk_04; + Vec unk_08; + Mtx unk_14; + Vec2f *unk_44; + s16 unk_48; +} M425DllUnkStruct2; /* size = 0x4C */ + +typedef struct M425DllUnkStruct3 { + char unk00[0xC]; + s16 unk_0C; + void *unk_10; + Vec *unk_14; + GXColor *unk_18; + Vec *unk_1C; + GXColor unk_20; + GXColor unk_24; + s16 unk_28; + s16 unk_2A; + M425DllUnkStruct2 *unk_2C; +} M425DllUnkStruct3; /* size = 0x30 */ + +typedef struct M425DllUnkBss10Struct { + /* 0x00 */ u8 unk_00; + /* 0x01 */ char pad_01[1]; + /* 0x02 */ u8 unk_02; + /* 0x03 */ u8 unk_03; + /* 0x04 */ float unk_04; + /* 0x08 */ Vec unk_08; + /* 0x14 */ float unk_14; + /* 0x18 */ float unk_18; + /* 0x1C */ float unk_1C; + /* 0x20 */ float unk_20; + /* 0x24 */ float unk_24; + /* 0x28 */ float unk_28; + /* 0x2C */ float unk_2C; + /* 0x30 */ float unk_30; + /* 0x34 */ float unk_34; + /* 0x38 */ float unk_38; + /* 0x3C */ float unk_3C; + /* 0x40 */ float unk_40; + union { + /* 0x44 */ s16 unk_44[0x20]; + struct { + float unk_44f; + float unk_48; + char unk4C[4]; + float unk_50; + char unk54[0x30]; + }; + }; +} M425DllUnkBss10Struct; /* size = 0x84 */ + +void fn_1_1B40(omObjData *object); +void fn_1_2784(omObjData *object); +void fn_1_2870(omObjData *object); +void fn_1_2A94(s16 arg0, Vec *arg1, Vec *arg2, float arg8); +void fn_1_2B2C(omObjData *object); +void fn_1_2E78(omObjData *object); +void fn_1_33E0(omObjData *object); +void fn_1_3764(omObjData *object); +s16 fn_1_3ED0(s32 arg0, s16 arg1, ParticleHook arg2); +void fn_1_3F80(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_460(omObjData *object); +void fn_1_480(omObjData *object); +void fn_1_4A88(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_5044(s16 arg0); +void fn_1_573C(Vec2f **arg0, s16 arg1, Vec2f *arg2); +void fn_1_57D4(ModelData *model, Mtx matrix); +void fn_1_5C20(ModelData *model, Mtx matrix); +s32 fn_1_64D4(void); +void fn_1_8E4(omObjData *object); +void fn_1_F48(omObjData *object); +void fn_1_FA8(omObjData *object); + +s16 lbl_1_data_0 = -1; +Vec lbl_1_data_4 = { -200.0f, 2500.0f, 1200.0f }; +Vec lbl_1_data_10 = { 0.2f, -0.8f, -0.2f }; +float lbl_1_data_1C[9] = { 0.0f, 2500.0f, 1500.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f }; +GXColor lbl_1_data_40 = { 0xFF, 0xFF, 0xFF, 0xFF }; + +omObjData *lbl_1_bss_668; +omObjData *lbl_1_bss_664; +// M425DllWork2 +omObjData *lbl_1_bss_660; +omObjData *lbl_1_bss_65C; +// M425DllWork +omObjData *lbl_1_bss_64C[4]; +u16 lbl_1_bss_648; +s16 lbl_1_bss_646; +s16 lbl_1_bss_644; +s16 lbl_1_bss_642; +s16 lbl_1_bss_640; +M425DllUnkBss10Struct lbl_1_bss_10[0xC]; +float lbl_1_bss_C; +float lbl_1_bss_8; +float lbl_1_bss_4; +char lbl_1_bss_0[4]; + +void ObjectSetup(void) +{ + s32 var_r31; + Process *process; + omObjData *object; + s32 var_r28; + LightData *var_r27; + CameraData *var_r26; + s32 var_r25; + s32 var_r24; + s32 sp8[4] = { 0, 0, 0, 0 }; + + OSReport("******* M425ObjectSetup *********\n"); + Hu3DLighInit(); + var_r24 = Hu3DGLightCreateV(&lbl_1_data_4, &lbl_1_data_10, &lbl_1_data_40); + Hu3DGLightInfinitytSet(var_r24); + var_r27 = Hu3DGlobalLight; + var_r27->unk_00 |= 0x8000; + process = omInitObjMan(0x32, 0x2000); + var_r25 = frand() & 0x1F; + for (var_r31 = 0; var_r31 < var_r25; var_r31++) { + fn_1_64D4(); + } + CRot.x = 8.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 430.0f; + Center.z = -400.0f; + CZoom = 1650.0f; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 45.0f, 100.0f, 50000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + lbl_1_bss_664 = omAddObjEx(process, 0x7FDA, 0, 0, -1, omOutView); + var_r26 = Hu3DCamera; + var_r26->fov = -1.0f; + lbl_1_bss_668 = omAddObjEx(process, 0x10, 8, 0, -1, fn_1_460); + lbl_1_bss_65C = omAddObjEx(process, 0x20, 0x10, 0, -1, fn_1_FA8); + lbl_1_bss_660 = omAddObjEx(process, 0x50, 0x10, 0, -1, fn_1_2784); + fn_1_6A0C(process, 0x40); + omMakeGroupEx(process, 0, 4); + omGetGroupMemberListEx(process, 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + object = omAddObjEx(process, 0x30, 2, 0xA, 0, fn_1_2B2C); + lbl_1_bss_64C[var_r31] = object; + object->work[0] = var_r31; + object->work[1] = GWPlayerCfg[var_r31].group; + for (var_r28 = object->work[1] * 2; var_r28 < 4; var_r28++) { + if (sp8[var_r28] == 0) { + object->work[1] = var_r28; + sp8[var_r28]++; + break; + } + } + } + omGameSysInit(process); + HuAudSndGrpSet(0x32); +} + +void fn_1_460(omObjData *object) +{ + lbl_1_bss_648 = 0; + object->func = fn_1_480; +} + +void fn_1_480(omObjData *object) +{ + Vec sp14; + Vec sp8; + float var_f31; + CameraData *var_r30; + + switch (lbl_1_bss_648) { + case 0: + sp14.x = -250.0f; + sp14.y = 225.0f; + sp14.z = 200.0f; + sp8.x = 22.0f; + sp8.y = 10.0f; + sp8.z = 0.0f; + var_f31 = 500.0f; + fn_1_2A94(1, &sp14, &sp8, var_f31); + lbl_1_bss_C = -4.866667f; + lbl_1_bss_8 = 600.0f; + sp14.x = -300.0f; + sp14.y = lbl_1_bss_8; + sp14.z = 0.0f; + fn_1_6CD0(0, &sp14); + sp14.x = 300.0f; + fn_1_6CD0(1, &sp14); + var_r30 = Hu3DCamera; + var_r30->fov = 45.0f; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_648++; + break; + case 1: + lbl_1_bss_8 += lbl_1_bss_C; + lbl_1_bss_C += -2.4333334f; + if (lbl_1_bss_8 < 0.0f) { + lbl_1_bss_8 = 0.0f; + lbl_1_bss_648++; + lbl_1_bss_640 = 0x3C; + fn_1_10DB4(0); + fn_1_10DB4(1); + fn_1_10E3C(0); + } + sp14.x = -300.0f; + sp14.y = lbl_1_bss_8; + sp14.z = 0.0f; + fn_1_6CD0(0, &sp14); + sp14.x = 300.0f; + fn_1_6CD0(1, &sp14); + break; + case 2: + if (--lbl_1_bss_640 == 0) { + sp14.x = 0.0f; + sp14.y = 430.0f; + sp14.z = -400.0f; + sp8.x = 8.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + var_f31 = 1650.0f; + lbl_1_bss_640 = 0x48; + fn_1_2A94(0x3C, &sp14, &sp8, var_f31); + lbl_1_bss_648++; + } + break; + case 3: + if (--lbl_1_bss_640 == 0) { + lbl_1_bss_648 = 4; + object->func = fn_1_8E4; + lbl_1_bss_646 = lbl_1_bss_644 = -1; + } + break; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_F48; + } +} + +s32 lbl_1_data_68 = -1; +s32 lbl_1_data_6C[0xA] = { 0, 2, 3, 5, 6, 8, 0xA, 9, 0x17, 0x18 }; +Vec lbl_1_data_94[4] = { + { -350.0f, 800.0f, 100.0f }, + { -200.0f, 1000.0f, 0.0f }, + { 200.0f, 1200.0f, 0.0f }, + { 350.0f, 1400.0f, 100.0f }, +}; + +void fn_1_8E4(omObjData *object) +{ + s16 sp8[2]; + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s16 var_r26; + s16 var_r25; + + switch (lbl_1_bss_648) { + case 4: + if (lbl_1_bss_644 == -1) { + lbl_1_bss_642 = 0x708; + lbl_1_bss_644 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_644, 320.0f, 240.0f); + } + else { + if (MGSeqStatGet(lbl_1_bss_644) == 0) { + lbl_1_bss_644 = -1; + lbl_1_bss_648++; + lbl_1_bss_646 = MGSeqCreate(1, lbl_1_bss_642 / 60, -1, -1); + } + } + if ((lbl_1_data_68 == -1) && ((MGSeqStatGet(lbl_1_bss_644) & 0x10) != 0)) { + lbl_1_data_68 = HuAudSeqPlay(0x48); + } + break; + case 5: + var_r30 = 0; + lbl_1_bss_642--; + var_r28 = (lbl_1_bss_642 + 0x3B) / 60; + if (var_r28 < 0) { + var_r28 = 0; + } + MGSeqParamSet(lbl_1_bss_646, 1, var_r28); + if (lbl_1_bss_642 < -1) { + var_r30++; + if ((fn_1_10CF4(0) == 1000.0f) && (fn_1_10CF4(1) == 1000.0f)) { + lbl_1_data_0 = -1; + } + else { + var_f31 = fn_1_10CF4(1); + if (fn_1_10CF4(0) <= var_f31) { + lbl_1_data_0 = 0; + } + else { + lbl_1_data_0 = 1; + } + } + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (!(fn_1_10CF4(var_r31) > 0.0f)) { + lbl_1_data_0 = var_r31; + var_r30++; + } + } + if (var_r30 != 0) { + lbl_1_bss_648++; + } + break; + case 6: + if (lbl_1_bss_644 == -1) { + lbl_1_bss_644 = MGSeqCreate(3, 1); + MGSeqPosSet(lbl_1_bss_644, 320.0f, 240.0f); + MGSeqParamSet(lbl_1_bss_646, 2, -1); + HuAudSeqFadeOut(lbl_1_data_68, 0x64); + } + else if (MGSeqStatGet(lbl_1_bss_644) == 0) { + lbl_1_bss_644 = -1; + lbl_1_bss_640 = 1; + lbl_1_bss_648++; + } + break; + case 7: + if (--lbl_1_bss_640 <= 0) { + lbl_1_bss_644 = -1; + lbl_1_bss_648++; + } + break; + case 8: + if (lbl_1_data_0 != -1) { + for (var_r31 = 0, var_r29 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_data_0 == OM_GET_DATA_PTR(lbl_1_bss_64C[var_r31], M425DllWork)->unk_02) { + sp8[var_r29] = OM_GET_DATA_PTR(lbl_1_bss_64C[var_r31], M425DllWork)->unk_01; + var_r29++; + GWPlayerCoinWinAdd(var_r31, 10); + } + } + lbl_1_bss_644 = MGSeqCreate(5, 3, sp8[0], sp8[1], -1, -1); + HuAudSStreamPlay(1); + } + else { + lbl_1_bss_644 = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + } + lbl_1_bss_640 = 0xD2; + lbl_1_bss_648++; + break; + case 9: + if (--lbl_1_bss_640 <= 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_F48; + } + break; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_F48; + } +} + +void fn_1_F48(omObjData *object) +{ + if (WipeStatGet() == 0) { + CharModelKill(-1); + MGSeqKill(lbl_1_bss_646); + MGSeqKillAll(); + fn_1_6C08(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_FA8(omObjData *object) +{ + M425DllUnkBss10Struct *var_r31; + s32 var_ctr; + void *var_r4; + s32 temp_r3; + s32 var_r30; + s16 *var_r28; + s32 var_r27; + s32 var_r26; + Vec sp8[] = { + { 475.0f, 800.0f, -1400.0f }, + { -300.0f, 900.0f, -1400.0f }, + { 300.0f, 875.0f, -1450.0f }, + { -575.0f, 850.0f, -1550.0f }, + { 350.0f, 750.0f, -1500.0f }, + { -450.0f, 775.0f, -1550.0f }, + { 325.0f, 725.0f, -1450.0f }, + { -525.0f, 725.0f, -1500.0f }, + { 575.0f, 850.0f, -1550.0f }, + { -350.0f, 750.0f, -1500.0f }, + { 450.0f, 775.0f, -1550.0f }, + { -325.0f, 725.0f, -1450.0f }, + { 525.0f, 725.0f, -1500.0f }, + { -475.0f, 800.0f, -1400.0f }, + { 300.0f, 900.0f, -1400.0f }, + { -300.0f, 875.0f, -1450.0f }, + }; + + var_r30 = Hu3DModelCreateFile(0x380000); + object->model[0] = var_r30; + var_r30 = Hu3DModelCreateFile(0x380001); + object->model[1] = var_r30; + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + var_r30 = Hu3DHookFuncCreate(fn_1_57D4); + object->model[2] = var_r30; + fn_1_5044(var_r30); + var_r30 = fn_1_3ED0(0x1E0020, 0xC8, fn_1_4A88); + object->model[3] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + var_r30 = fn_1_3ED0(0x380005, 1, fn_1_3F80); + object->model[5] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28[1] = 0; + var_r30 = fn_1_3ED0(0x380008, 0xA, fn_1_3F80); + object->model[6] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28[1] = 1; + var_r30 = fn_1_3ED0(0x380007, 4, fn_1_3F80); + object->model[7] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28[1] = 2; + var_r30 = fn_1_3ED0(0x380006, 6, fn_1_3F80); + object->model[8] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28[1] = 3; + for (var_r27 = 0; var_r27 < 0xC; var_r27++) { + var_r31 = &lbl_1_bss_10[var_r27]; + var_r30 = Hu3DModelCreateFile(0x380002); + var_r31->unk_00 = var_r30; + var_r31->unk_08.x = sp8[var_r27].x; + var_r31->unk_08.y = sp8[var_r27].y; + var_r31->unk_08.z = sp8[var_r27].z; + Hu3DModelPosSet(var_r30, var_r31->unk_08.x, var_r31->unk_08.y, var_r31->unk_08.z); + Hu3DMotionSpeedSet(var_r30, 6.0f); + var_r31->unk_02 = var_r31->unk_03 = 0; + var_r31->unk_14 = var_r31->unk_18 = var_r31->unk_1C = 0.0f; + var_r31->unk_20 = var_r31->unk_24 = var_r31->unk_28 = 1.0f; + var_r31->unk_38 = var_r31->unk_3C = var_r31->unk_40 = 0.0f; + var_r31->unk_2C = var_r31->unk_08.x; + var_r31->unk_30 = var_r31->unk_08.y; + var_r31->unk_34 = var_r31->unk_08.z; + if ((var_r27 & 1) != 0) { + var_r31->unk_18 = 90.0f; + var_r31->unk_08.y += 650.0; + var_r31->unk_08.x -= 1400.0; + } + else { + var_r31->unk_18 = 90.0f; + } + var_r31->unk_18 += 10.0 * (3.0517578125e-05 * (float)((u16)frand() - 0x8000)); + var_r31->unk_08.z -= 400.0; + var_r31->unk_04 = 100.0 * (0.10000000149011612 + (0.019999999552965164 * (1.52587890625e-05 * (float)(s32)(u16)frand()))); + for (var_r26 = 0; var_r26 < 0x20; var_r26++) { + var_r31->unk_44[var_r26] = 0; + } + var_r31->unk_50 = var_r31->unk_04; + } + HuAudFXPlay(0x633); + HuAudFXPlay(0x635); + object->func = fn_1_1B40; +} + +void fn_1_14CC(Mtx arg0, float arg8, float arg9, float argA) +{ + Mtx sp38; + Mtx sp8; + if (argA != 0.0f) { + PSMTXRotRad(arg0, 0x5A, 0.017453292f * argA); + } + else { + PSMTXIdentity(arg0); + } + if (arg8 != 0.0f) { + PSMTXRotRad(sp38, 0x58, 0.017453292f * arg8); + PSMTXConcat(sp38, arg0, arg0); + } + if (arg9 != 0.0f) { + PSMTXRotRad(sp8, 0x59, 0.017453292f * arg9); + PSMTXConcat(sp8, arg0, arg0); + } +} + +float fn_1_15EC(float arg8, float arg9) +{ + float var_f31; + float var_f30; + + var_f30 = 360.0f; + var_f31 = 180.0 * (atan2f(arg9, arg8) / M_PI); + if (var_f31 < 0.0f) { + var_f31 += var_f30; + } + else if (var_f31 >= var_f30) { + var_f31 -= var_f30; + } + return var_f31; +} + +void fn_1_16B0(Mtx var_r30, Vec *var_r31) +{ + float var_f29; + float var_f25; + + var_r31->x = fn_1_15EC(var_r30[2][2], var_r30[1][2]); + var_r31->z = fn_1_15EC(var_r30[0][0], var_r30[0][1]); + var_f29 = -var_r30[0][2]; + var_f25 = sqrtf((1.0 - (var_f29 * var_f29)) < 0.0 ? (-1.0 - (var_f29 * var_f29)) : (1.0 - (var_f29 * var_f29))); + if ((var_r31->x > 90.0f) && (var_r31->x < 270.0f) && (var_r31->z > 90.0f) && (var_r31->z < 270.0f)) { + var_r31->x = fmod(180.0f + var_r31->x, 360.0); + var_r31->z = fmod(180.0f + var_r31->z, 360.0); + var_f25 = -var_f25; + } + var_r31->y = fn_1_15EC(var_f25, var_f29); +} + +static inline float fn_1_1B40_inline(omObjData *object, s32 arg1, s32 arg2, float arg8, float arg9) +{ + float var_f31; + float var_f30; + + var_f30 = sqrtf(arg8); + var_f31 = arg9 + arg8; + if (var_f31 < 0.0f) { + var_f31 += var_f30 + arg2 + arg1; + } + else if (var_f31 >= var_f30) { + var_f31 -= var_f30 + object->group; + } + return var_f31; +} + +// TODO get a working stripped out inline https://decomp.me/scratch/2IbZG +void fn_1_1B40(omObjData *object) +{ + Mtx spCC; + Mtx sp9C; + Mtx sp6C; + Vec sp60; + M425DllUnkBss10Struct *var_r31; + s32 var_r27; + + for (var_r27 = 0; var_r27 < 0xC; var_r27++) { + var_r31 = &lbl_1_bss_10[var_r27]; + switch (var_r31->unk_03) { + case 0: + if (var_r31->unk_04 < var_r31->unk_50) { + var_r31->unk_04 += 0.4f; + } + if ((s32)(64.0 * (1.52587890625e-05 * (float)fn_1_64D4())) == 0) { + Hu3DMotionTimeSet(var_r31->unk_00, 0.0f); + } + if (Hu3DMotionEndCheck(var_r31->unk_00) != 0) { + var_r31->unk_3C = -2.92f; + } + else { + var_r31->unk_3C = -0.48666668f; + } + var_r31->unk_44f += 0.10000000149011612 * (3.0517578125e-05 * (float)((u16)frand() - 0x8000)); + var_r31->unk_48 += var_r31->unk_44f; + if (var_r31->unk_48 > 180.0f) { + var_r31->unk_48 -= 180.0f; + } + if (var_r31->unk_48 < -180.0f) { + var_r31->unk_48 += 180.0f; + } + var_r31->unk_14 = -30.0 * sind(var_r31->unk_48) * sind(var_r31->unk_18); + var_r31->unk_1C = -30.0 * sind(var_r31->unk_48) * cosd(var_r31->unk_18); + if ((var_r31->unk_08.y <= 700.0f) || (fabs(var_r31->unk_08.x) > 2000.0)) { + var_r31->unk_3C = 0.0f; + var_r31->unk_44[6] = (s32)(20.0 * (3.0517578125e-05 * (float)(fn_1_64D4() - 0x8000))) + 0xB4; + var_r31->unk_04 *= 0.75f; + var_r31->unk_03++; + } + break; + case 1: + var_r31->unk_18 += 1.0f; + var_r31->unk_14 = 0.0f; + var_r31->unk_1C = 60.0 * sind(var_r31->unk_44[6]) * cosd(var_r31->unk_18); + if (--var_r31->unk_44[6] == 0) { + Hu3DModelAttrSet(var_r31->unk_00, HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(var_r31->unk_00, 6.0f); + var_r31->unk_3C = 5.3533335f; + var_r31->unk_03++; + } + break; + case 2: + if (var_r31->unk_04 > 4.0f) { + var_r31->unk_04 -= 0.1f; + var_r31->unk_3C += 0.73f; + } + var_r31->unk_3C += -0.5475f; + if (var_r31->unk_3C < 0.0f) { + Hu3DModelAttrReset(var_r31->unk_00, HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(var_r31->unk_00, 2.0f); + var_r31->unk_50 = 100.0 * (0.10000000149011612 + (0.019999999552965164 * (1.52587890625e-05 * (float)(s32)(u16)frand()))); + var_r31->unk_03 = 0; + } + break; + } + if (0) { + fn_1_1B40_inline(object, 1, 2, 0.0f, 0.0f); + fn_1_1B40_inline(object, 1, 2, 0.0f, 0.0f); + } + var_r31->unk_38 = var_r31->unk_04 * sind(var_r31->unk_18); + var_r31->unk_40 = var_r31->unk_04 * cosd(var_r31->unk_18); + var_r31->unk_08.x += var_r31->unk_38; + var_r31->unk_08.y += var_r31->unk_3C; + var_r31->unk_08.z += var_r31->unk_40; + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_08.x, var_r31->unk_08.y, var_r31->unk_08.z); + fn_1_14CC(spCC, var_r31->unk_14, -var_r31->unk_18, var_r31->unk_1C); + fn_1_16B0(spCC, &sp60); + Hu3DModelRotSetV(var_r31->unk_00, &sp60); + } +} + +void fn_1_2784(omObjData *object) +{ + M425DllWork2 *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M425DllWork2), MEMORY_DEFAULT_NUM); + object->data = work; + work->unk_76 = work->unk_74 = 0; + work->unk_10.x = work->unk_28.x = 8.0f; + work->unk_10.y = work->unk_28.y = 0.0f; + work->unk_10.z = work->unk_28.z = 0.0f; + work->unk_04.x = work->unk_1C.x = 0.0f; + work->unk_04.y = work->unk_1C.y = 430.0f; + work->unk_04.z = work->unk_1C.z = -400.0f; + work->unk_64 = work->unk_68 = 1650.0f; + object->func = fn_1_2870; +} + +void fn_1_2870(omObjData *object) +{ + float var_f31; + M425DllWork2 *work; + + work = object->data; + if (work->unk_76 != 0) { + work->unk_76--; + var_f31 = (float)(work->unk_74 - work->unk_76) / work->unk_74; + var_f31 = sind((90.0f * var_f31)); + work->unk_04.x = work->unk_1C.x + (var_f31 * (work->unk_34 - work->unk_1C.x)); + work->unk_04.y = work->unk_1C.y + (var_f31 * (work->unk_38 - work->unk_1C.y)); + work->unk_04.z = work->unk_1C.z + (var_f31 * (work->unk_3C - work->unk_1C.z)); + work->unk_10.x = work->unk_28.x + (var_f31 * (work->unk_40 - work->unk_28.x)); + work->unk_10.y = work->unk_28.y + (var_f31 * (work->unk_44 - work->unk_28.y)); + work->unk_10.z = work->unk_28.z + (var_f31 * (work->unk_48 - work->unk_28.z)); + work->unk_64 = work->unk_68 + (var_f31 * (work->unk_6C - work->unk_68)); + } + CRot.x = work->unk_10.x; + CRot.y = work->unk_10.y; + CRot.z = work->unk_10.z; + Center.x = work->unk_04.x; + Center.y = work->unk_04.y; + Center.z = work->unk_04.z; + CZoom = work->unk_64; +} + +void fn_1_2A94(s16 arg0, Vec *arg1, Vec *arg2, float arg8) +{ + M425DllWork2 *work = lbl_1_bss_660->data; + work->unk_74 = arg0; + work->unk_76 = arg0; + work->unk_1C = work->unk_04; + work->unk_34 = arg1->x; + work->unk_38 = arg1->y; + work->unk_3C = arg1->z; + work->unk_28 = work->unk_10; + work->unk_40 = arg2->x; + work->unk_44 = arg2->y; + work->unk_48 = arg2->z; + work->unk_68 = work->unk_64; + work->unk_6C = arg8; +} + +void fn_1_2B2C(omObjData *object) +{ + s32 sp8; + M425DllWork *var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M425DllWork), MEMORY_DEFAULT_NUM); + object->data = var_r31; + var_r31->unk_00 = object->work[0]; + var_r31->unk_01 = GWPlayerCfg[var_r31->unk_00].character; + var_r31->unk_02 = GWPlayerCfg[var_r31->unk_00].group; + var_r31->unk_03 = object->work[1] & 1; + var_r31->unk_04 = GWPlayerCfg[var_r31->unk_00].pad_idx; + var_r31->unk_05 = GWPlayerCfg[var_r31->unk_00].iscom; + var_r31->unk_06 = GWPlayerCfg[var_r31->unk_00].diff; + var_r31->unk_0E = 0; + var_r31->unk_0B = 1; + var_r31->unk_0C = 0; + memset(var_r31->unk_3C, 0, sizeof(var_r31->unk_3C)); + var_r31->unk_5C = 0; + var_r31->unk_60 = 1.0f; + var_r31->unk_64 = 0; + var_r31->unk_68 = 0; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r29 != var_r31->unk_00) && (var_r31->unk_02 == GWPlayerCfg[var_r29].group)) { + var_r31->unk_09 = var_r29; + break; + } + } + var_r27 = object->work[1]; + var_r31->unk_18.x = lbl_1_data_94[var_r27].x; + var_r31->unk_18.y = lbl_1_data_94[var_r27].y; + var_r31->unk_18.z = lbl_1_data_94[var_r27].z; + var_r31->unk_24.x = var_r31->unk_24.y = var_r31->unk_24.z = 0.0f; + if (var_r31->unk_02 == 0) { + var_r31->unk_10 = 30.0f; + } + else { + var_r31->unk_10 = -30.0f; + } + var_r28 = CharModelCreate(var_r31->unk_01, 4); + object->model[0] = var_r28; + Hu3DModelAttrSet(var_r28, HU3D_MOTATTR_LOOP); + CharModelStepTypeSet(var_r31->unk_01, 1); + for (var_r29 = 0; var_r29 < 0xA; var_r29++) { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_01, lbl_1_data_6C[var_r29]); + if (var_r29 == 5) { + CharModelVoiceEnableSet(var_r31->unk_01, object->motion[var_r29], 0); + } + } + CharModelMotionDataClose(var_r31->unk_01); + CharModelMotionSet(var_r31->unk_01, object->motion[var_r31->unk_0E]); + omSetTra(object, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + Hu3DModelPosSet(var_r28, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + Hu3DModelRotSet(var_r28, 0.0f, 30.0f, 0.0f); + HuDataDirClose(sp8); + object->func = fn_1_2E78; +} + +void fn_1_2E78(omObjData *object) +{ + float spC[8]; + s32 sp8; + M425DllWork *var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r26 = 0; + sp8 = object->model[0]; + var_r31 = object->data; + var_r31->unk_30 = var_r31->unk_18; + if ((lbl_1_bss_648 == 5) && (var_r31->unk_05 != 0)) { + fn_1_33E0(object); + } + fn_1_3764(object); + switch (lbl_1_bss_648) { + case 2: + if (lbl_1_bss_640 == 1) { + var_r31->unk_0E = 5; + CharModelMotionShiftSet(var_r31->unk_01, object->motion[var_r31->unk_0E], 0.0f, 8.0f, 0); + var_r31->unk_24.y = 0.0f; + var_r31->unk_0B = 0; + } + var_r31->unk_68 = 0; + break; + case 3: + if (var_r31->unk_64 != 0) { + var_r31->unk_18.y = fn_1_10EF8(var_r31->unk_02, var_r31->unk_03, var_r31->unk_18.x, var_r31->unk_18.z); + var_r31->unk_18.y -= 10.0f; + } + else if (fn_1_109EC(var_r31->unk_02, var_r31->unk_03, &var_r31->unk_30, &var_r31->unk_24, &var_r31->unk_18, 0) != 0) { + if (var_r31->unk_0B == 0) { + HuAudFXPlay(0x62F); + } + CharModelVoiceEnableSet(var_r31->unk_01, object->motion[5], 1); + var_r31->unk_0B = 1; + } + break; + case 5: + if ((var_r31->unk_0E == 5) && (var_r31->unk_0C == 0)) { + var_r26 = 1; + } + + case 4: + case 6: + case 7: + if (var_r31->unk_64 != 0) { + var_r31->unk_18.y = fn_1_10EF8(var_r31->unk_02, var_r31->unk_03, var_r31->unk_18.x, var_r31->unk_18.z); + var_r31->unk_18.y -= 10.0f; + } + else if (fn_1_109EC(var_r31->unk_02, var_r31->unk_03, &var_r31->unk_30, &var_r31->unk_24, &var_r31->unk_18, var_r26) != 0) { + var_r31->unk_0B = 1; + } + break; + case 8: + if (var_r31->unk_64 != 0) { + var_r31->unk_18.y = fn_1_10EF8(var_r31->unk_02, var_r31->unk_03, var_r31->unk_18.x, var_r31->unk_18.z); + var_r31->unk_18.y -= 10.0f; + var_r31->unk_0B = 1; + } + else if (fn_1_109EC(var_r31->unk_02, var_r31->unk_03, &var_r31->unk_30, &var_r31->unk_24, &var_r31->unk_18, 0) != 0) { + var_r31->unk_0B = 1; + } + if ((var_r31->unk_0B != 0) && (var_r31->unk_0E != 8) && (var_r31->unk_0E != 9)) { + if (var_r31->unk_02 == lbl_1_data_0) { + var_r31->unk_0E = 8; + } + else { + var_r31->unk_0E = 9; + } + CharModelMotionShiftSet(var_r31->unk_01, object->motion[var_r31->unk_0E], 0.0f, 8.0f, 0); + } + break; + case 9: + if (var_r31->unk_64 != 0) { + var_r31->unk_18.y = fn_1_10EF8(var_r31->unk_02, var_r31->unk_03, var_r31->unk_18.x, var_r31->unk_18.z); + var_r31->unk_18.y -= 10.0f; + } + else if (fn_1_109EC(var_r31->unk_02, var_r31->unk_03, &var_r31->unk_30, &var_r31->unk_24, &var_r31->unk_18, 0) != 0) { + var_r31->unk_0B = 1; + } + break; + } + if (var_r31->unk_18.y < 0.0f) { + var_r31->unk_18.y = 0.0f; + var_r31->unk_0B = 1; + } + var_r27 = var_r31->unk_5C % 8; + var_r31->unk_3C[var_r27] = var_r31->unk_18.y; + if (++var_r31->unk_5C > 8) { + for (var_r29 = 0; var_r29 < 8; var_r29++) { + var_r28 = var_r27 - var_r29; + if (var_r28 < 0) { + var_r28 += 8; + } + spC[var_r29] = var_r31->unk_3C[var_r28]; + } + for (var_r29 = 1; var_r29 < 8; var_r29++) { + if (fabs(spC[var_r29] - spC[0]) > 25.0) { + break; + } + } + if (((var_r31->unk_0E == 0) || (var_r31->unk_0E == 8) || (var_r31->unk_0E == 9)) && (var_r29 >= 8)) { + var_r31->unk_60 = var_r31->unk_60 - 0.05f; + if (var_r31->unk_60 < 0.75f) { + var_r31->unk_60 = 0.75f; + } + } + else { + var_r31->unk_60 = 1.0f; + } + } + omSetTra(object, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); +} + +void fn_1_33E0(omObjData *object) +{ + s32 spC; + s16 sp8; + M425DllWork *var_r31; + M425DllWork *var_r30; + + var_r31 = object->data; + var_r30 = lbl_1_bss_64C[var_r31->unk_09]->data; + spC = object->model[0]; + sp8 = var_r31->unk_0E; + switch (var_r31->unk_0E) { + case 4: + case 7: + case 0: + if (var_r30->unk_0E == 3) { + if ((var_r30->unk_05 == 0) || ((s32)((0x18 - (var_r31->unk_06 * 3)) * (1.52587890625e-05 * (float)fn_1_64D4())) == 0)) { + HuPadBtnDown[var_r31->unk_04] |= 0x100; + break; + } + } + else { + if ((s32)((0x30 - (var_r31->unk_06 * 4)) * (1.52587890625e-05 * (float)fn_1_64D4())) == 0) { + HuPadBtnDown[var_r31->unk_04] |= 0x100; + break; + } + break; + } + break; + case 3: + if ((s32)(4.0 * (1.52587890625e-05 * (float)fn_1_64D4())) != 0) { + HuPadBtn[var_r31->unk_04] |= 0x100; + } + if ((var_r30->unk_05 == 0) && (var_r30->unk_0E == 5)) { + HuPadBtnDown[var_r31->unk_04] |= 0x100; + break; + } + if ((var_r31->unk_24.y < 5.353333473205566) && ((s32)((0xE - (var_r31->unk_06 * 2)) * (1.52587890625e-05 * (float)fn_1_64D4())) == 0)) { + HuPadBtnDown[var_r31->unk_04] |= 0x100; + } + break; + } +} + +void fn_1_3764(omObjData *object) +{ + float var_f30; + float var_f29; + + M425DllWork *var_r31; + s16 var_r30; + s16 var_r29; + s16 var_r27; + s16 var_r26; + s16 var_r25; + s16 var_r24; + s32 var_r23; + + var_r31 = object->data; + var_r23 = object->model[0]; + var_r30 = var_r31->unk_0E; + if (lbl_1_bss_648 == 5) { + var_r26 = 0; + var_r25 = 0; + var_r27 = HuPadBtnDown[var_r31->unk_04]; + var_r24 = HuPadBtn[var_r31->unk_04]; + } + else { + var_r26 = 0; + var_r25 = 0; + var_r27 = 0; + var_r24 = 0; + } + var_r31->unk_64 = 0; + switch (var_r31->unk_0E) { + case 4: + case 7: + if (CharModelMotionEndCheck(var_r31->unk_01) != 0) { + var_r30 = 0; + var_r29 = 1; + } + + case 0: + case 1: + case 2: + var_r31->unk_24.x = 0.25f * var_r26; + var_r31->unk_24.z = 0.25f * -var_r25; + var_r31->unk_14 = sqrtf((var_r31->unk_24.x * var_r31->unk_24.x) + (var_r31->unk_24.z * var_r31->unk_24.z)); + var_r31->unk_64 = 1; + if (var_r31->unk_14 > 0.1f) { + if (var_r31->unk_14 >= 8.0f) { + var_r30 = 2; + var_r29 = 1; + } + else { + var_r30 = 1; + var_r29 = 1; + } + var_f30 = atan2d(var_r31->unk_24.x, var_r31->unk_24.z); + if (var_f30 >= 180.0f) { + var_f30 = var_f30 - 360.0f; + } + else if (var_f30 < -180.0f) { + var_f30 += 360.0f; + } + var_f29 = var_r31->unk_10 - var_f30; + if (var_f29 >= 180.0f) { + var_f29 -= 360.0f; + } + else if (var_f29 < -180.0f) { + var_f29 += 360.0f; + } + var_r31->unk_10 = var_f30 + (0.5f * var_f29); + if (var_r31->unk_10 >= 180.0f) { + var_r31->unk_10 = var_r31->unk_10 - 360.0f; + } + else if (var_r31->unk_10 < -180.0f) { + var_r31->unk_10 += 360.0f; + } + } + else { + var_r30 = 0; + var_r29 = 1; + } + var_r31->unk_24.y = 0.0f; + var_r31->unk_24.y += -2.4333334f * var_r31->unk_60; + if ((var_r27 & 0x100) != 0) { + var_r31->unk_0B = 0; + var_r31->unk_0A = 1; + var_r31->unk_24.y = 26.766666f; + var_r30 = 3; + var_r29 = 0; + } + break; + case 3: + if (var_r31->unk_0A != 0) { + if ((var_r24 & 0x100) != 0) { + if (++var_r31->unk_0A > 4) { + var_r31->unk_0A = 0; + } + else { + var_r31->unk_24.y += 4.866667f; + } + } + else { + var_r31->unk_0A = 0; + } + } + var_r31->unk_24.y += -2.4333334f; + if (var_r31->unk_0B != 0) { + var_r31->unk_0B = 1; + var_r30 = 4; + var_r29 = 0; + var_r31->unk_24.y = 0.0f; + } + if (((var_r27 & 0x100) != 0) || ((var_r27 & 0x40) != 0)) { + var_r31->unk_24.y = 0.0f; + var_r31->unk_0C = 0; + var_r30 = 5; + var_r29 = 0; + } + break; + case 5: + if ((Hu3DData[var_r23].unk_0C == -1) && (CharModelMotionEndCheck(var_r31->unk_01) != 0)) { + var_r31->unk_24.y += -2.4333334f; + } + else { + var_r31->unk_24.y = 0.0f; + } + if (var_r31->unk_0B != 0) { + if (var_r31->unk_0C != 0) { + var_r31->unk_24.y = 0.0f; + var_r31->unk_0C = 0; + var_r30 = 7; + var_r29 = 0; + } + else { + var_r31->unk_24.y = 9.733334f; + var_r31->unk_0B = 0; + var_r30 = 6; + var_r29 = 0; + } + } + break; + case 6: + var_r31->unk_24.y += -2.4333334f; + if ((var_r31->unk_0B != 0) && (CharModelMotionEndCheck(var_r31->unk_01) != 0)) { + var_r30 = 7; + var_r29 = 0; + } + break; + case 8: + case 9: + var_r31->unk_24.y = -2.4333334f * var_r31->unk_60; + var_r31->unk_64 = 1; + break; + } + var_r31->unk_18.x += var_r31->unk_24.x; + if (var_r31->unk_0B == 0) { + var_r31->unk_18.y += var_r31->unk_24.y; + } + var_r31->unk_18.z += var_r31->unk_24.z; + if (var_r30 != var_r31->unk_0E) { + var_r31->unk_0E = var_r30; + CharModelMotionShiftSet(var_r31->unk_01, object->motion[var_r31->unk_0E], 0.0f, 8.0f, var_r29); + } + omSetTra(object, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + omSetRot(object, 0.0f, var_r31->unk_10, 0.0f); +} + +s16 fn_1_3ED0(s32 arg0, s16 arg1, ParticleHook arg2) +{ + s32 var_r31; + M425DllUnkStruct *var_r30; + ParticleData *var_r29; + AnimData *var_r28; + + var_r28 = HuSprAnimRead(HuDataReadNum(arg0, MEMORY_DEFAULT_NUM)); + var_r31 = Hu3DParticleCreate(var_r28, arg1); + Hu3DParticleHookSet(var_r31, arg2); + var_r29 = Hu3DData[var_r31].unk_120; + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M425DllUnkStruct), MEMORY_DEFAULT_NUM); + var_r29->unk_1C = var_r30; + var_r30->unk_04 = 0; + return var_r31; +} + +void fn_1_3F80(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float var_f29; + float var_f28; + float var_f26; + float var_f25; + float var_f24; + + HsfanimStruct01 *var_r31; + M425DllUnkStruct *var_r29; + s32 var_r28; + + float sp54[4] = { 1000.0f, 200.0f, 600.0f, 1200.0f }; + float sp44[4] = { 1.0f, 0.6f, 0.3f, 0.425f }; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + s16 sp8 = 0; + + var_r29 = particle->unk_1C; + switch (var_r29->unk_04) { + case 0: + var_r31 = particle->unk_48; + if (var_r29->unk_02 != 0) { + sp14.x = 0.0f; + sp14.y = -3600.0f; + sp14.z = 6250.0f; + var_f28 = (sp14.z * sp14.z) + ((sp14.x * sp14.x) + (sp14.y * sp14.y)); + var_f29 = 1.0f / sqrtf(var_f28); + sp14.x *= var_f29; + sp14.y *= var_f29; + sp14.z *= var_f29; + var_f24 = 6000.0f / particle->unk_30; + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + var_f26 = 500.0 + ((var_f24 * var_r28) + ((0.25f * var_f24) * (1.52587890625e-05 * (float)(s32)(u16)frand()))); + var_f25 = var_f26 / 6000.0f; + var_r31->unk14.x = var_f26; + var_r31->unk34.x = var_f26 * sp14.x; + var_r31->unk34.y = 4000.0f + (var_f26 * sp14.y); + var_r31->unk34.z = -6750.0f + (var_f26 * sp14.z); + var_r31->unk2C = (0.3f + (0.7f * (var_f25 * var_f25))) + * (sp54[var_r29->unk_02] * (0.699999988079071 + (0.30000001192092896 * (1.52587890625e-05 * (float)(s32)(u16)frand())))); + var_r31->unk40.r = (s32)(160.0 * (1.52587890625e-05 * (float)fn_1_64D4())) + 0x20; + var_r31->unk40.g = (s32)(96.0 * (1.52587890625e-05 * (float)fn_1_64D4())) + 0x20; + var_r31->unk40.b = (s32)(128.0 * (1.52587890625e-05 * (float)fn_1_64D4())) + 0x20; + var_r31->unk40.a + = ((1.0 - (0.4 * var_f25)) * (255.0f * sp44[var_r29->unk_02])) - (s32)(16.0 * (1.52587890625e-05 * (float)fn_1_64D4())); + } + var_r29->unk_04++; + } + else { + var_r31->unk34.x = 0.0f; + var_r31->unk34.y = 4000.0f; + var_r31->unk34.z = -6750.0f; + var_r31->unk2C = 1000.0f; + } + break; + case 1: + sp38.x = sind(CRot.y) * cosd(CRot.x); + sp38.y = -sind(CRot.x); + sp38.z = cosd(CRot.y) * cosd(CRot.x); + sp2C.x = -(Center.x + (1.25f * (sp38.x * CZoom))); + sp2C.y = 4000.0f - (Center.y + (sp38.y * CZoom)); + sp2C.z = -6750.0f - (Center.z + (1.25f * (sp38.z * CZoom))); + var_f29 = 1.0f / sqrtf((sp2C.z * sp2C.z) + ((sp2C.x * sp2C.x) + (sp2C.y * sp2C.y))); + sp2C.x *= var_f29; + sp2C.y *= var_f29; + sp2C.z *= var_f29; + var_f29 = -((-sp2C.z * -sp38.z) + ((-sp2C.x * -sp38.x) + (-sp2C.y * -sp38.y))); + sp20.x = -sp38.x + (-2.0f * sp2C.x * var_f29); + sp20.y = -sp38.y + (-2.0f * sp2C.y * var_f29); + sp20.z = -sp38.z + (-2.0f * sp2C.z * var_f29); + for (var_r31 = particle->unk_48, var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + var_r31->unk34.x = sp20.x * var_r31->unk14.x; + var_r31->unk34.y = 4000.0f + (sp20.y * var_r31->unk14.x); + var_r31->unk34.z = -6750.0f + (sp20.z * var_r31->unk14.x); + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_4A88(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float var_f31; + HsfanimStruct01 *var_r31; + M425DllUnkStruct *var_r29; + s32 var_r28; + s16 var_r27; + + var_r27 = 0; + var_r29 = particle->unk_1C; + switch (var_r29->unk_04) { + case 0: + for (var_r31 = particle->unk_48, var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + var_r31->unk00_s16 = var_r31->unk02 = 0; + } + var_r29->unk_04++; + break; + case 1: + for (var_r31 = particle->unk_48, var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + if (var_r31->unk00_s16 != 0) { + var_r31->unk00_s16--; + } + else { + if (var_r31->unk02 == 0) { + var_f31 = 180.0 * (1.52587890625e-05 * (float)(s32)(u16)frand()); + var_f31 = var_f31; + if ((s32)(4.0 * (1.52587890625e-05 * (float)fn_1_64D4())) != 0) { + var_r31->unk34.x = 100.0 * (4.0 * (1.52587890625e-05 * (float)(s32)(u16)frand())) * cosd(var_f31); + } + else { + var_r31->unk34.x = 100.0 * (2.0 * (1.52587890625e-05 * (float)(s32)(u16)frand())) * cosd(var_f31); + } + var_r31->unk34.y = -10.0f; + var_r31->unk34.z = -7000.0 + (100.0 * (40.0 * (1.52587890625e-05 * (float)(s32)(u16)frand())) * sind(var_f31)); + var_r31->unk30 = 1.5707964f; + var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = var_r31->unk40.a = 0xC0; + var_r31->unk40.b = 0xA0; + var_r31->unk2C = 0.0f; + var_r31->unk00_s16 = (s32)(90.0 * (1.52587890625e-05 * (float)fn_1_64D4())); + var_r31->unk02 = 0x3C; + var_r31->unk40.r = 0xC0; + var_r31->unk40.g = 0xE0; + var_r31->unk40.b = 0xE0; + var_r31->unk08.z = 0.01f * (0.05f * (3000.0f + -var_r31->unk34.z)); + var_r31->unk08.z *= var_r31->unk08.z; + var_r31->unk08.z *= 0.125f; + } + var_r31->unk40.a = 248.0 * sind((var_r31->unk02 * 3)); + var_r31->unk2C = (30.0f * var_r31->unk08.z) * sind((var_r31->unk02 * 3)); + var_r31->unk02--; + } + } + if (particle->unk_30 == var_r27) { + Hu3DModelAttrReset(var_r29->unk_00, HU3D_ATTR_PARTICLE_KILL); + Hu3DModelKill(var_r29->unk_00); + return; + } + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_5044(s16 sp8) +{ + M425DllUnkStruct3 *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + ModelData *var_r27; + void *var_r26; + + Vec2f spC[4] = { { 0.0f, 0.0f }, { 1.0f, 0.0f }, { 1.0f, 1.0f }, { 0.0f, 1.0f } }; + var_r27 = &Hu3DData[sp8]; + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M425DllUnkStruct3), MEMORY_DEFAULT_NUM); + var_r27->unk_120 = var_r31; + var_r31->unk_2A = 1; + var_r31->unk_20.r = var_r31->unk_20.g = var_r31->unk_20.b = 0x40; + var_r31->unk_20.a = 0xFF; + var_r31->unk_24.a = var_r31->unk_24.g = var_r31->unk_24.b = 0xFF; + var_r31->unk_24.r = var_r31->unk_24.b = 0; + // maybe Mtx? + var_r31->unk_14 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_2A * (4 * sizeof(Vec)), MEMORY_DEFAULT_NUM); + var_r31->unk_14[0].x = -4500.0f; + var_r31->unk_14[0].y = 0.0f; + var_r31->unk_14[0].z = -7000.0f; + var_r31->unk_14[1].x = 4500.0f; + var_r31->unk_14[1].y = 0.0f; + var_r31->unk_14[1].z = -7000.0f; + var_r31->unk_14[2].x = 3000.0f; + var_r31->unk_14[2].y = -200.0f; + var_r31->unk_14[2].z = 0.0f; + var_r31->unk_14[3].x = -3000.0f; + var_r31->unk_14[3].y = -200.0f; + var_r31->unk_14[3].z = 0.0f; + var_r31->unk_18 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_2A * (4 * sizeof(GXColor)), MEMORY_DEFAULT_NUM); + var_r31->unk_18[0].r = 0xFF; + var_r31->unk_18[0].g = 0xFF; + var_r31->unk_18[0].b = 0xFF; + var_r31->unk_18[0].a = 0xFF; + var_r31->unk_18[1].r = 0xFF; + var_r31->unk_18[1].g = 0xFF; + var_r31->unk_18[1].b = 0xFF; + var_r31->unk_18[1].a = 0xFF; + var_r31->unk_18[2].r = 0xFF; + var_r31->unk_18[2].g = 0xFF; + var_r31->unk_18[2].b = 0xFF; + var_r31->unk_18[2].a = 0xFF; + var_r31->unk_18[3].r = 0xFF; + var_r31->unk_18[3].g = 0xFF; + var_r31->unk_18[3].b = 0xFF; + var_r31->unk_18[3].a = 0xFF; + var_r31->unk_1C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_2A * sizeof(Vec), MEMORY_DEFAULT_NUM); + var_r31->unk_1C->x = 0.0f; + var_r31->unk_1C->y = 1.0f; + var_r31->unk_1C->z = 0.0f; + var_r31->unk_28 = 2; + var_r31->unk_2C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_2A * (var_r31->unk_28 * sizeof(M425DllUnkStruct2)), MEMORY_DEFAULT_NUM); + var_r31->unk_2C[0].unk_00 = HuSprAnimReadFile(0x380003); + var_r31->unk_2C[0].unk_04 = 0; + var_r31->unk_2C[1].unk_00 = HuSprAnimReadFile(0x380004); + var_r31->unk_2C[1].unk_04 = 0; + var_r31->unk_2C[1].unk_48 = 0x80; + for (var_r30 = 0; var_r30 < (var_r31->unk_28 * var_r31->unk_2A); var_r30++) { + PSMTXIdentity(var_r31->unk_2C[var_r30].unk_14); + var_r31->unk_2C[var_r30].unk_08.x = var_r31->unk_2C[var_r30].unk_08.y = var_r31->unk_2C[var_r30].unk_08.z = 0.0f; + } + for (var_r30 = 0; var_r30 < var_r31->unk_28; var_r30++) { + fn_1_573C(&var_r31->unk_2C[var_r30].unk_44, var_r31->unk_2A, spC); + } + var_r26 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20000, MEMORY_DEFAULT_NUM); + var_r31->unk_10 = var_r26; + DCFlushRange(var_r31->unk_10, 0x20000); + GXBeginDisplayList(var_r26, 0x20000); + GXBegin(GX_QUADS, GX_VTXFMT0, var_r31->unk_2A * 4); + for (var_r30 = 0; var_r30 < var_r31->unk_2A; var_r30++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + GXUnknownu16(var_r29 + (var_r30 * 4)); + GXUnknownu16(var_r30); + GXUnknownu16(var_r29 + (var_r30 * 4)); + for (var_r28 = 0; var_r28 < var_r31->unk_28; var_r28++) { + GXUnknownu16(var_r29 + (var_r30 * 4)); + } + } + } + var_r31->unk_0C = GXEndDisplayList(); +} + +void fn_1_5568(Vec **arg0, s16 arg1, Vec *arg2) +{ + Vec *var_r31; + s32 var_r29; + s32 var_r28; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (4 * sizeof(Vec)), MEMORY_DEFAULT_NUM); + for (var_r29 = 0; var_r29 < arg1; var_r29++) { + for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) { + var_r31->x = arg2->x; + var_r31->y = arg2->y; + var_r31->z = arg2->z; + } + } +} + +void fn_1_5608(GXColor **arg0, s16 arg1, GXColor *arg2) +{ + GXColor *var_r31; + s32 var_r29; + s32 var_r28; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (4 * sizeof(GXColor)), 0x10000000); + for (var_r29 = 0; var_r29 < arg1; var_r29++) { + for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) { + var_r31->r = arg2->r; + var_r31->g = arg2->g; + var_r31->b = arg2->b; + var_r31->a = arg2->a; + } + } +} + +void fn_1_56B0(Vec **arg0, s16 arg1, Vec *arg2) +{ + Vec *var_r31; + s32 var_r29; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(Vec), MEMORY_DEFAULT_NUM); + for (var_r29 = 0; var_r29 < arg1; var_r31++, arg2++, var_r29++) { + var_r31->x = arg2->x; + var_r31->y = arg2->y; + var_r31->z = arg2->z; + } +} + +void fn_1_573C(Vec2f **arg0, s16 arg1, Vec2f *arg2) +{ + Vec2f *var_r31; + s32 var_r29; + s32 var_r28; + + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (4 * sizeof(Vec2f)), MEMORY_DEFAULT_NUM); + for (var_r29 = 0; var_r29 < arg1; var_r29++) { + for (var_r28 = 0; var_r28 < 4; var_r31++, arg2++, var_r28++) { + var_r31->x = arg2->x; + var_r31->y = arg2->y; + } + } +} + +void fn_1_57D4(ModelData *model, Mtx matrix) +{ + float var_f31; + float var_f30; + s32 var_r31; + M425DllUnkStruct3 *var_r30; + + var_r30 = model->unk_120; + var_r30->unk_2C[1].unk_08.y -= 0.0005f; + var_f31 = sind(lbl_1_bss_4); + var_f30 = cosd(lbl_1_bss_4); + for (var_r31 = 0; var_r31 < 1; var_r31++) { + var_r30->unk_2C[var_r31].unk_44[0].x = 0.005f * var_f31 * (var_r31 != 0 ? 10.0f : -1.0f); + var_r30->unk_2C[var_r31].unk_44[0].y = 0.005f * var_f30 * (var_r31 != 0 ? 1.0f : -1.0f); + var_r30->unk_2C[var_r31].unk_44[1].x = 1.0f + (0.005f * var_f30 * (var_r31 != 0 ? 10.0f : -1.0f)); + var_r30->unk_2C[var_r31].unk_44[1].y = 0.005f * var_f31 * (var_r31 != 0 ? 1.0f : -1.0f); + var_r30->unk_2C[var_r31].unk_44[2].x = 1.0f + (0.005f * var_f31 * (var_r31 != 0 ? 10.0f : -1.0f)); + var_r30->unk_2C[var_r31].unk_44[2].y = 1.0f + (0.005f * var_f30 * (var_r31 != 0 ? 1.0f : -1.0f)); + var_r30->unk_2C[var_r31].unk_44[3].x = 0.005f * var_f30 * (var_r31 != 0 ? 10.0f : -1.0f); + var_r30->unk_2C[var_r31].unk_44[3].y = 1.0f + (0.005f * var_f31 * (var_r31 != 0 ? 1.0f : -1.0f)); + } + lbl_1_bss_4 += 1.0f; + fn_1_5C20(model, matrix); +} + +void fn_1_5C20(ModelData *var_r27, Mtx sp8) +{ + Mtx sp5C; + Mtx sp2C; + GXColor sp26; + s16 spC; + GXTexMapID var_r29; + M425DllUnkStruct3 *var_r31; + s16 var_r30; + s16 var_r28; + s16 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r31 = var_r27->unk_120; + GXSetChanAmbColor(GX_COLOR0A0, var_r31->unk_20); + GXSetChanMatColor(GX_COLOR0A0, var_r31->unk_24); + GXLoadPosMtxImm(sp8, 0); + PSMTXInverse(sp8, sp5C); + PSMTXTranspose(sp5C, sp2C); + GXLoadNrmMtxImm(sp2C, 0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(1, GX_LEQUAL, 1); + var_r30 = 0; + var_r28 = 0; + spC = 0; + for (var_r29 = GX_TEXMAP0; var_r29 < var_r31->unk_28; var_r29++) { + PSMTXRotRad(var_r31->unk_2C[var_r29].unk_14, 0x5A, 0.0f); + mtxTransCat( + var_r31->unk_2C[var_r29].unk_14, var_r31->unk_2C[var_r29].unk_08.x, var_r31->unk_2C[var_r29].unk_08.y, var_r31->unk_2C[var_r29].unk_08.z); + switch (var_r31->unk_2C[var_r29].unk_04) { + case 0: + GXLoadTexMtxImm(var_r31->unk_2C[var_r29].unk_14, texMtxTbl[var_r28], GX_MTX2x4); + var_r25 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r29 + 4, var_r25, GX_FALSE, 0x7D); + GXSetTevOrder(var_r30, var_r28, var_r29, GX_COLOR0A0); + if (var_r29 == GX_TEXMAP0) { + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + } + else { + sp26.a = var_r31->unk_2C[var_r29].unk_48; + GXSetTevColor(GX_TEVREG2, sp26); + GXSetTevColorIn(var_r30, GX_CC_CPREV, GX_CC_TEXC, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + } + GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + break; + case 1: + GXLoadTexMtxImm(var_r31->unk_2C[var_r29].unk_14, texMtxTbl[var_r28], GX_MTX2x4); + var_r24 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r29 + 4, var_r24, GX_FALSE, 0x7D); + GXSetTevOrder(var_r30, var_r28, var_r29, GX_COLOR0A0); + GXSetTevColor(GX_TEVREG2, sp26); + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + break; + case 2: + sp26.a = 0xE0; + GXSetTevColor(GX_TEVREG1, sp26); + GXSetTexCoordGen2(var_r28 + 1, GX_TG_BUMP0, var_r28, 0x3C, GX_FALSE, 0x7D); + GXSetTevOrder(var_r30, var_r28, var_r29, GX_COLOR0A0); + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_RASC); + GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + var_r30++; + GXSetTevOrder(var_r30, var_r28 + 1, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_CPREV); + GXSetTevColorOp(var_r30, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + break; + case 3: + var_r28--; + GXLoadTexMtxImm(var_r31->unk_2C[var_r29].unk_14, texMtxTbl[var_r28], GX_MTX2x4); + var_r23 = texMtxTbl[var_r28]; + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, var_r29 + 4, var_r23, 0, 0x7D); + GXSetTevOrder(var_r30, var_r28, var_r29, GX_COLOR0A0); + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXC, GX_CC_ZERO); + GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + var_r28++; + break; + } + var_r30++; + var_r28++; + HuSprTexLoad(var_r31->unk_2C[var_r29].unk_00, 0, var_r29, GX_REPEAT, GX_REPEAT, GX_LINEAR); + } + sp26.a = var_r31->unk_24.a; + GXSetTevColor(GX_TEVREG0, sp26); + GXSetTevOrder(var_r30, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(var_r30, GX_CC_ZERO, GX_CC_CPREV, GX_CC_RASC, GX_CC_ZERO); + GXSetTevColorOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r30, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_KONST); + GXSetTevAlphaOp(var_r30, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + var_r30++; + GXSetNumTevStages((s32)var_r30); + GXSetNumTexGens((s32)var_r28); + var_r26 = Hu3DLightSet(var_r27, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, 0.0f); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, var_r26, GX_DF_CLAMP, GX_AF_SPOT); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, var_r31->unk_14, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, var_r31->unk_18, 4); + for (var_r29 = GX_TEXMAP0; var_r29 < (var_r31->unk_28 * var_r31->unk_2A); var_r29++) { + GXSetVtxDesc(var_r29 + 0xD, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, var_r29 + 0xD, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(var_r29 + 0xD, var_r31->unk_2C[var_r29].unk_44, 8); + } + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); + GXSetArray(GX_VA_NRM, var_r31->unk_1C, 0xC); + GXCallDisplayList(var_r31->unk_10, var_r31->unk_0C); +} + +u32 lbl_1_data_114 = 0x41C64E6D; + +s32 fn_1_64D4(void) +{ + lbl_1_data_114 *= 0x41C64E6D; + lbl_1_data_114 += 0x3039; + return lbl_1_data_114 >> 0x10; +} + +float fn_1_6528(float arg8, float arg9, float argA, float argB) +{ + float var_f31 = 1.0 - arg8; + float var_f30 = (argB * (arg8 * arg8)) + ((arg9 * (var_f31 * var_f31)) + (2.0 * (argA * (var_f31 * arg8)))); + return var_f30; +} + +void fn_1_65A0(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3++ = fn_1_6528(arg8, *arg0++, *arg1++, *arg2++); + } +} + +float fn_1_66BC(float arg8, float arg9, float argA, float argB) +{ + float var_f31 = 2.0 * ((arg8 * argB) + (((arg8 - 1.0) * arg9) + ((1.0 - (2.0 * arg8)) * argA))); + return var_f31; +} + +void fn_1_6734(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) +{ + float spC[3]; + float sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + spC[var_r31] = fn_1_66BC(arg8, *arg0++, *arg1++, *arg2++); + } + + var_f29 = sqrtf((spC[2] * spC[2]) + ((spC[0] * spC[0]) + (spC[1] * spC[1]))); + if (var_f29) { + var_f29 = 1.0 / var_f29; + var_f29 = var_f29; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3++ = var_f29 * spC[var_r31]; + } + return; + } + *arg3++ = 0.0f; + *arg3++ = 0.0f; + *arg3++ = 1.0f; +} diff --git a/src/REL/m425Dll/thwomp.c b/src/REL/m425Dll/thwomp.c new file mode 100644 index 00000000..0a320286 --- /dev/null +++ b/src/REL/m425Dll/thwomp.c @@ -0,0 +1,2768 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXVert.h" +#include "dolphin/mtx/GeoTypes.h" +#include "ext_math.h" +#include "game/animdata.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m425Dll.h" + +extern u32 GlobalCounter; +extern LightData Hu3DLocalLight[0x20]; + +typedef struct M425DllUnkStruct4 { + s16 unk_00; + s16 unk_02; + s16 unk_04; + s16 unk_06; + float unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + s32 unk_28; + s32 unk_2C; + float unk_30; + s32 unk_34; + s32 unk_38; + s32 unk_3C[5]; + s32 unk_50; + float unk_54[6]; + s32 unk_6C[6]; + s32 unk_84[6]; + float unk_9C[6]; + s32 unk_B4[6]; + Vec unk_CC; + float unk_D8; + float unk_DC; + float unk_E0; + float unk_E4; + float unk_E8; + float unk_EC; + s32 unk_F0[3]; + float unk_FC; + float unk_100; + char unk104[0x8]; + s16 unk_10C; + s16 unk_10E; + s16 unk_110; + s16 unk_112[0x19]; + s16 unk_144[0x1A]; + s16 *unk_178; + Vec *unk_17C; + Vec *unk_180; + Vec2f *unk_184; + Vec *unk_188; + Vec *unk_18C; + s16 (*unk_190)[3]; + Vec *unk_194; + Vec *unk_198; + s32 unk_19C; + u8 *unk_1A0; + s16 *unk_1A4[0x19]; + s16 unk_208[0x19]; + GXColor unk_23A; + s32 unk_240; + u32 unk_244[0x19]; + void *unk_2A8[0x19]; +} M425DllUnkStruct4; /* size = 0x30C */ + +typedef struct M425DllUnkStruct5 { + char unk00[4]; + Vec unk_04; + Vec unk_10; + float unk_1C; + char unk20[8]; + float unk_28; + float unk_2C; + Vec unk_30; + GXColor unk_3C; + s32 unk_40; +} M425DllUnkStruct5; /* size = 0x44 */ + +typedef void (*UnkHook)(ModelData *model, struct M425DllUnkStruct6 *particle, Mtx matrix); + +typedef struct M425DllUnkStruct6 { + s16 unk_00; + s16 unk_02; + char unk04[0x1C]; + u8 unk_20; + u8 unk_21; + char unk22[2]; + s16 unk_24; + s32 unk_28; + s32 unk_2C; + u32 unk_30; + u32 unk_34; + AnimData *unk_38; + M425DllUnkStruct5 *unk_3C; + Vec *unk_40; + Vec2f *unk_44; + void *unk_48; + UnkHook unk_4C; +} M425DllUnkStruct6; /* size = 0x50 */ + +void fn_1_6BD8(omObjData *object); +s32 fn_1_6EC4(float arg8, float arg9, s16 arg0, s16 arg1); +void fn_1_6DFC(s32 arg0, float arg8); +void fn_1_E210(s32 arg0); +void fn_1_E914(ModelData *arg0, Mtx matrix); +void fn_1_D9A8(M425DllUnkStruct4 *var_r31, ModelData *var_r24, s32 var_r30, s32 var_r26, s32 var_r25); +void fn_1_DB44(M425DllUnkStruct4 *arg0, ModelData *model); +void fn_1_DE3C(M425DllUnkStruct4 *arg0, ModelData *model); +void fn_1_101C4(ModelData *model, Mtx matrix); +void fn_1_11284(void); +void fn_1_112FC(void); +void fn_1_11418(void); +s32 fn_1_11454(Vec *arg0, Vec *arg1, float arg8, float arg9); +s16 fn_1_115D4(ModelData *arg0, Mtx arg1, Mtx arg2, float arg8); +void fn_1_116E4(ModelData *arg1, LightData *arg2, s16 arg3, Mtx arg4, Mtx arg5, float arg8); +s16 fn_1_11A74(AnimData *arg0, s16 arg1); +void fn_1_11EE0(ModelData *model, Mtx matrix); + +Vec lbl_1_data_118[2] = { + { -300.0f, 1.0f, 0.0f }, + { 300.0f, 1.0f, 0.0f }, +}; + +Process *lbl_1_bss_6F0; +omObjData *lbl_1_bss_6EC; +s32 lbl_1_bss_6E8; +u8 *lbl_1_bss_6E4; +AnimData *lbl_1_bss_6E0; +AnimData *lbl_1_bss_6DC; +AnimData *lbl_1_bss_6D8; +// M425DllUnkStruct6 +s32 lbl_1_bss_6D4; +u8 lbl_1_bss_6D0; +s32 lbl_1_bss_6CC; +GXColor lbl_1_bss_6C8; +GXLightObj lbl_1_bss_688; +Vec lbl_1_bss_67C; +Vec lbl_1_bss_670; + +omObjData *fn_1_6A0C(Process *process, s32 sp8) +{ + omObjData *object; + + lbl_1_bss_6F0 = process; + object = omAddObjEx(process, sp8, 6, 0, -1, fn_1_6BD8); + lbl_1_bss_6EC = object; + object->stat |= 0x100; + lbl_1_bss_6E8 = 0; + lbl_1_bss_6D0 = 0x40; + lbl_1_bss_6CC = 0; + object->model[0] = fn_1_6EC4(350.0f, 350.0f, 0x10, 0x10); + object->model[1] = fn_1_6EC4(350.0f, 350.0f, 0x10, 0x10); + fn_1_6CD0(0, &lbl_1_data_118[0]); + fn_1_6CD0(1, &lbl_1_data_118[1]); + fn_1_6DFC(0, 30.0f); + fn_1_6DFC(1, -30.0f); + lbl_1_bss_6E4 = HuDataReadNum(0x38000A, MEMORY_DEFAULT_NUM); + lbl_1_bss_6E0 = HuSprAnimRead(HuDataReadNum(0x38000B, MEMORY_DEFAULT_NUM)); + lbl_1_bss_6DC = HuSprAnimRead(HuDataReadNum(0x38000C, MEMORY_DEFAULT_NUM)); + fn_1_11284(); + return lbl_1_bss_6EC; +} + +void fn_1_6BD8(omObjData *object) +{ + fn_1_E210(0); + fn_1_E210(1); + fn_1_112FC(); +} + +void fn_1_6C08(void) +{ + omObjData *object = lbl_1_bss_6EC; + if (object) { + HuMemDirectFree(lbl_1_bss_6E4); + lbl_1_bss_6E4 = NULL; + HuSprAnimKill(lbl_1_bss_6E0); + lbl_1_bss_6E0 = NULL; + HuSprAnimKill(lbl_1_bss_6DC); + lbl_1_bss_6DC = NULL; + fn_1_11418(); + lbl_1_bss_6EC = NULL; + object->func = NULL; + omDelObjEx(lbl_1_bss_6F0, object); + } +} + +void fn_1_6CD0(s32 arg0, Vec *arg1) +{ + M425DllUnkStruct4 *var_r30; + s32 var_r29; + ModelData *var_r28; + + if (lbl_1_bss_6EC) { + var_r28 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r30 = var_r28->unk_120; + var_r30->unk_CC.x = arg1->x; + var_r30->unk_CC.y = arg1->y; + var_r30->unk_CC.z = arg1->z; + Hu3DModelPosSet(lbl_1_bss_6EC->model[arg0], arg1->x, arg1->y, arg1->z); + if ((lbl_1_bss_6CC == 0) && (arg0 == 0) && (arg1->y <= 0.0f)) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + omVibrate(0, 0xC, 6, 6); + } + HuAudFXPlay(0x62E); + lbl_1_bss_6CC = 1; + } + } +} + +void fn_1_6DFC(s32 arg0, float arg8) +{ + ModelData *var_r31; + M425DllUnkStruct4 *var_r30; + + if (lbl_1_bss_6EC) { + var_r31 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r30 = var_r31->unk_120; + var_r30->unk_D8 = arg8; + Hu3DModelRotSet(lbl_1_bss_6EC->model[arg0], 0.0f, arg8, 0.0f); + } +} + +s32 fn_1_6EC4(float var_f24, float sp8, s16 var_r22, s16 var_r24) +{ + float sp24; + float sp20; + float sp1C; + float sp18; + float sp14; + float sp10; + void *spC; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + float var_f19; + float var_f18; + + M425DllUnkStruct4 *var_r31; + s32 var_r30; + Vec *var_r29; + Vec2f *var_r28; + s32 var_r27; + Vec *var_r26; + s16 *var_r25; + ModelData *var_r23; + s32 var_r21; + s16 *var_r20; + s32 var_r19; + s16 var_r18; + void *var_r17; + + var_r19 = Hu3DHookFuncCreate(fn_1_101C4); + var_r23 = &Hu3DData[var_r19]; + Hu3DModelLayerSet(var_r19, 5); + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(M425DllUnkStruct4), var_r23->unk_48); + var_r23->unk_120 = var_r31; + memset(var_r31, 0, sizeof(M425DllUnkStruct4)); + var_r31->unk_00 = lbl_1_bss_6E8; + lbl_1_bss_6E8++; + var_r31->unk_02 = 0; + var_r31->unk_04 = Hu3DModelCreateFile(0x38000D); + Hu3DModelLayerSet(var_r31->unk_04, 6); + var_r31->unk_06 = 0; + var_r31->unk_08 = 1000.0f; + var_r31->unk_0C = 1000.0f; + var_r31->unk_10 = 1000.0f; + var_r31->unk_14 = 0.0f; + var_r31->unk_18 = 0.0f; + var_r31->unk_1C = 0.0f; + var_r31->unk_20 = 0.0f; + var_r31->unk_24 = sp8; + var_r31->unk_FC = var_f24; + var_r31->unk_100 = sp8; + var_r31->unk_28 = 0; + var_r31->unk_2C = 0; + var_r31->unk_30 = 0.0f; + for (var_r30 = 0; var_r30 < 6; var_r30++) { + var_r31->unk_3C[var_r30] = -1; + var_r31->unk_54[var_r30] = 0.0f; + var_r31->unk_84[var_r30] = -1; + var_r31->unk_9C[var_r30] = 0.0f; + } + var_r31->unk_CC.x = var_r31->unk_CC.y = var_r31->unk_CC.z = 0.0f; + var_r31->unk_D8 = 0.0f; + var_r31->unk_DC = 1.0f; + var_r31->unk_F0[0] = -1; + var_r31->unk_F0[1] = -1; + var_r31->unk_F0[2] = -1; + lbl_1_bss_6EC->model[var_r31->unk_00 + 2] = var_r31->unk_04; + if (var_r31->unk_00 == 0) { + var_r31->unk_E0 = var_f22 = 302.0f; + var_r31->unk_E4 = var_f27 = 193.0f; + } + else { + var_r31->unk_E0 = var_f22 = 302.0f; + var_r31->unk_E4 = var_f27 = 150.0f; + } + var_r31->unk_E8 = var_r31->unk_EC = 0.0f; + var_f30 = sind(var_f27) * cosd(var_f22); + var_f26 = cosd(var_f27) * cosd(var_f22); + var_f28 = sind(var_f22); + sp24 = sqrtf((var_f26 * var_f26) + ((var_f30 * var_f30) + (var_f28 * var_f28))); + if (sp24 != 0.0f) { + sp24 = 1.0f / sp24; + } + else { + sp24 = 0.0f; + } + var_f30 *= sp24; + var_f28 *= sp24; + var_f26 *= sp24; + var_r30 = Hu3DLLightCreate(var_r19, 1000.0f * var_f30, 1000.0f * var_f28, 1000.0f * var_f26, var_f30, var_f28, var_f26, 0xFF, 0xFF, 0xFF); + Hu3DLLightInfinitytSet(var_r19, var_r30); + Hu3DLLightStaticSet(var_r19, var_r30, 1); + var_r22++; + var_r24++; + sp14 = var_f24 - 50.0f; + sp10 = sp8 - 50.0f; + var_r31->unk_112[0] = var_r24 * var_r24; + var_r31->unk_144[0] = 0; + var_r31->unk_112[1] = var_r22 * var_r24; + var_r31->unk_144[1] = var_r31->unk_144[0] + var_r31->unk_112[0]; + if (var_r31->unk_00 != 0) { + var_r31->unk_112[2] = 0; + } + else { + var_r31->unk_112[2] = var_r22 * var_r24; + } + var_r31->unk_144[2] = var_r31->unk_144[1] + var_r31->unk_112[1]; + if (var_r31->unk_00 == 0) { + var_r31->unk_112[3] = 0; + } + else { + var_r31->unk_112[3] = var_r22 * var_r24; + } + var_r31->unk_144[3] = var_r31->unk_144[2] + var_r31->unk_112[2]; + var_r31->unk_112[4] = var_r24 * 5; + var_r31->unk_144[4] = var_r31->unk_144[3] + var_r31->unk_112[3]; + var_r31->unk_112[5] = var_r24 * 5; + var_r31->unk_144[5] = var_r31->unk_144[4] + var_r31->unk_112[4]; + var_r31->unk_112[6] = var_r22 * 5; + var_r31->unk_144[6] = var_r31->unk_144[5] + var_r31->unk_112[5]; + var_r31->unk_112[7] = var_r22 * 5; + var_r31->unk_144[7] = var_r31->unk_144[6] + var_r31->unk_112[6]; + var_r31->unk_112[8] = var_r24 * 5; + var_r31->unk_144[8] = var_r31->unk_144[7] + var_r31->unk_112[7]; + var_r31->unk_112[9] = var_r24 * 5; + var_r31->unk_144[9] = var_r31->unk_144[8] + var_r31->unk_112[8]; + var_r31->unk_112[10] = var_r24 * 5; + var_r31->unk_144[10] = var_r31->unk_144[9] + var_r31->unk_112[9]; + var_r31->unk_112[11] = var_r24 * 5; + var_r31->unk_144[11] = var_r31->unk_144[10] + var_r31->unk_112[10]; + var_r31->unk_112[12] = var_r24 * 5; + var_r31->unk_144[12] = var_r31->unk_144[11] + var_r31->unk_112[11]; + var_r31->unk_112[13] = var_r24 * 5; + var_r31->unk_144[13] = var_r31->unk_144[12] + var_r31->unk_112[12]; + if (var_r31->unk_00 == 0) { + var_r31->unk_112[14] = 0; + } + else { + var_r31->unk_112[14] = var_r22 * 5; + } + var_r31->unk_144[14] = var_r31->unk_144[13] + var_r31->unk_112[13]; + if (var_r31->unk_00 != 0) { + var_r31->unk_112[15] = 0; + } + else { + var_r31->unk_112[15] = var_r22 * 5; + } + var_r31->unk_144[15] = var_r31->unk_144[14] + var_r31->unk_112[14]; + var_r31->unk_112[16] = 0x19; + var_r31->unk_144[16] = var_r31->unk_144[15] + var_r31->unk_112[15]; + var_r31->unk_112[17] = 0x19; + var_r31->unk_144[17] = var_r31->unk_144[16] + var_r31->unk_112[16]; + var_r31->unk_112[18] = 0x19; + var_r31->unk_144[18] = var_r31->unk_144[17] + var_r31->unk_112[17]; + var_r31->unk_112[19] = 0x19; + var_r31->unk_144[19] = var_r31->unk_144[18] + var_r31->unk_112[18]; + var_r31->unk_112[20] = 0x19; + var_r31->unk_144[20] = var_r31->unk_144[19] + var_r31->unk_112[19]; + var_r31->unk_112[21] = 0x19; + var_r31->unk_144[21] = var_r31->unk_144[20] + var_r31->unk_112[20]; + var_r31->unk_112[22] = 0x19; + var_r31->unk_144[22] = var_r31->unk_144[21] + var_r31->unk_112[21]; + var_r31->unk_112[23] = 0x19; + var_r31->unk_144[23] = var_r31->unk_144[22] + var_r31->unk_112[22]; + var_r31->unk_112[24] = var_r24 * var_r24; + var_r31->unk_144[24] = var_r31->unk_144[23] + var_r31->unk_112[23]; + if (var_r31->unk_00 == 0) { + var_r31->unk_06 = var_r31->unk_144[17] + (var_r31->unk_112[17] / 2) + 1; + } + else { + var_r31->unk_06 = var_r31->unk_144[16] + (var_r31->unk_112[16] / 2) - 1; + } + var_r31->unk_10C = var_r22; + var_r31->unk_10E = var_r24; + var_r31->unk_110 = var_r31->unk_144[24] + var_r31->unk_112[24]; + var_r31->unk_240 = 0x19; + var_r31->unk_178 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 2, var_r23->unk_48); + memset(var_r31->unk_178, 0, var_r31->unk_110 * 2); + var_r31->unk_17C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); + memset(var_r31->unk_17C, 0, var_r31->unk_110 * 0xC); + var_r31->unk_180 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); + memset(var_r31->unk_180, 0, var_r31->unk_110 * 0xC); + var_r31->unk_184 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 8, var_r23->unk_48); + memset(var_r31->unk_184, 0, var_r31->unk_110 * 8); + var_r31->unk_188 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); + memset(var_r31->unk_188, 0, var_r31->unk_110 * 0xC); + var_r31->unk_18C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); + memset(var_r31->unk_18C, 0, var_r31->unk_110 * 0xC); + var_r31->unk_190 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 6, var_r23->unk_48); + memset(var_r31->unk_190, 0, var_r31->unk_110 * 6); + var_r31->unk_194 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110 * 0xC, var_r23->unk_48); + memset(var_r31->unk_194, 0, var_r31->unk_110 * 0xC); + var_r31->unk_198 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_112[0] * 0xC, var_r23->unk_48); + memset(var_r31->unk_198, 0, var_r31->unk_112[0] * 0xC); + var_r31->unk_1A0 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_110, var_r23->unk_48); + memset(var_r31->unk_1A0, 0, var_r31->unk_110); + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if (((var_r31->unk_112[0] > 0) && (var_r30 >= var_r31->unk_144[0]) && (var_r30 < (var_r31->unk_144[0] + var_r31->unk_112[0]))) + || ((var_r31->unk_112[4] > 0) && (var_r30 >= var_r31->unk_144[4]) && (var_r30 < (var_r31->unk_144[4] + var_r31->unk_112[4]))) + || ((var_r31->unk_112[8] > 0) && (var_r30 >= var_r31->unk_144[8]) && (var_r30 < (var_r31->unk_144[8] + var_r31->unk_112[8]))) + || ((var_r31->unk_112[10] > 0) && (var_r30 >= var_r31->unk_144[10]) && (var_r30 < (var_r31->unk_144[10] + var_r31->unk_112[10]))) + || ((var_r31->unk_112[12] > 0) && (var_r30 >= var_r31->unk_144[12]) && (var_r30 < (var_r31->unk_144[12] + var_r31->unk_112[12]))) + || ((var_r31->unk_112[16] > 0) && (var_r30 >= var_r31->unk_144[16]) && (var_r30 < (var_r31->unk_144[16] + var_r31->unk_112[16]))) + || ((var_r31->unk_112[17] > 0) && (var_r30 >= var_r31->unk_144[17]) && (var_r30 < (var_r31->unk_144[17] + var_r31->unk_112[17]))) + || ((var_r31->unk_112[20] > 0) && (var_r30 >= var_r31->unk_144[20]) && (var_r30 < (var_r31->unk_144[20] + var_r31->unk_112[20]))) + || ((var_r31->unk_112[21] > 0) && (var_r30 >= var_r31->unk_144[21]) && (var_r30 < (var_r31->unk_144[21] + var_r31->unk_112[21])))) { + var_r31->unk_1A0[var_r30] = 1; + } + else { + var_r31->unk_1A0[var_r30] = 0; + } + } + var_r31->unk_23A.r = 0; + var_r31->unk_23A.g = 0; + var_r31->unk_23A.b = 0xFF; + var_r31->unk_23A.a = 0x40; + var_r29 = &var_r31->unk_17C[var_r31->unk_144[0]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[0]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[0]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[0]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp14 / (var_r24 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[0] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10E; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_r29->x = var_f30; + var_r29->y = var_f28; + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f26 = var_f26 + var_f23; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0, var_r24 - 1, var_r24 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[1]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[1]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[1]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[1]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = 0.5f * var_f24; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[1] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10E; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_r29->x = var_f30; + var_r29->y = var_f28; + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 1, var_r24 - 1, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[2]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[2]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[2]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[2]]; + var_f25 = var_f30 = -(0.5f * var_f24); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[2] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10E; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_r29->x = var_f30; + var_r29->y = var_f28; + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 2, var_r24 - 1, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[3]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[3]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[3]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[3]]; + var_f25 = var_f30 = 0.5f * var_f24; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[3] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10E; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_r29->x = var_f30; + var_r29->y = var_f28; + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 -= var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 3, var_r24 - 1, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[4]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[4]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[4]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[4]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[4] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 90.0f * (var_r30 / 4.0f); + var_r29->x = var_f30; + var_r29->y = sp20 + (25.0 * (cosd(var_f27) - 1.0)); + var_r29->z = sp1C + (25.0 * sind(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 4, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[5]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[5]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[5]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[5]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[5] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 90.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f30; + var_r29->y = sp20 + (25.0 * cosd(var_f27)); + var_r29->z = sp1C + (25.0 * sind(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 5, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[6]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[6]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[6]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[6]]; + var_f25 = var_f30 = -(0.5f * var_f24); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[6] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10C; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f * (var_r27 / 4.0f); + var_r29->x = var_f25 - (25.0 * (cosd(var_f27) - 1.0)); + var_r29->y = var_f28; + var_r29->z = sp1C + (25.0 * sind(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 6, 4, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[7]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[7]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[7]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[7]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = 0.5f * var_f24; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[7] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10C; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f - (90.0f * (var_r27 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = var_f28; + var_r29->z = sp1C + (25.0 * (sind(var_f27) - 1.0)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 7, 4, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[8]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[8]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[8]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[8]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[8] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 90.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + 25.0 * cosd(var_f27); + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 8, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[9]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[9]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[9]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[9]]; + var_f25 = var_f30 = -(0.5f * var_f24 - 25.0f); + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[9] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 180.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 9, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[10]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[10]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[10]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[10]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[10] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 90.0f - (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 -= var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xA, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[11]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[11]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[11]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[11]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[11] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = -(90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f26 -= var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f26 = sp1C; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xB, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[12]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[12]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[12]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[12]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[12] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 90.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f30; + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = sp1C + (25.0 * cosd(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 -= var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xC, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[13]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[13]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[13]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[13]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[13] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_f27 = 180.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f30; + var_r29->y = sp20 + (25.0 * sind(var_f27)); + var_r29->z = sp1C + (25.0 * cosd(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 -= var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xD, var_r24 - 1, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[14]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[14]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[14]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[14]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[14] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10C; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = -(90.0f * (var_r27 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = var_f28; + var_r29->z = sp1C + (25.0 * sind(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xE, 4, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[15]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[15]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[15]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[15]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[15] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10C; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = -90.0f - (90.0f * (var_r27 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27)); + var_r29->y = var_f28; + var_r29->z = sp1C + (25.0 * sind(var_f27)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0xF, 4, var_r22 - 1); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[16]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[16]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[16]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[16]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[16] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f * (var_r27 / 4.0f); + var_f22 = 90.0f * (var_r30 / 4.0f); + var_r29->x = var_f25 - (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 + (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x10, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[17]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[17]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[17]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[17]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[17] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f - (90.0f * (var_r27 / 4.0f)); + var_f22 = -(90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + (25.0 * cosd(var_f27) * -sind(var_f22)); + var_r29->y = sp20 + (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * -sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x11, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[18]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[18]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[18]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[18]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[18] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f * (var_r27 / 4.0f); + var_f22 = 90.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 - (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 + (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x12, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[19]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[19]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[19]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[19]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[19] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 90.0f * (var_r27 / 4.0f); + var_f22 = 90.0f * (var_r30 / 4.0f); + var_r29->x = var_f25 + (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 - (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x13, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[20]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[20]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[20]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[20]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[20] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 180.0f + (90.0f * (var_r27 / 4.0f)); + var_f22 = 90.0f * (var_r30 / 4.0f); + var_r29->x = var_f25 - (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 + (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x14, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[21]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[21]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[21]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[21]]; + var_f25 = var_f30 = -(0.5f * var_f24 - 25.0f); + sp20 = var_f28 = sp8 - 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[21] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 270.0f - (90.0f * (var_r27 / 4.0f)); + var_f22 = -(90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 + (cosd(var_f27) * 25.0 * -sind(var_f22)); + var_r29->y = sp20 + 25.0 * cosd(var_f22); + var_r29->z = sp1C + (25.0 * sind(var_f27) * -sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x15, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[22]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[22]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[22]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[22]]; + var_f25 = var_f30 = (0.5f * var_f24) - 25.0f; + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = -((0.5f * var_f24) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[22] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 180.0f + (90.0f * (var_r27 / 4.0f)); + var_f22 = 90.0f + (90.0f * (var_r30 / 4.0f)); + var_r29->x = var_f25 - (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 + (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x16, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[23]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[23]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[23]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[23]]; + var_f25 = var_f30 = -((var_f24 * 0.5f) - 25.0f); + sp20 = var_f28 = 25.0f; + sp1C = var_f26 = -((var_f24 * 0.5f) - 25.0f); + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp10 / (var_r22 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[23] != 0) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + for (var_r27 = 0; var_r27 < 5; var_r27++) { + var_f27 = 180.0f + (90.0f * (var_r27 / 4.0f)); + var_f22 = 90.0f * (var_r30 / 4.0f); + var_r29->x = var_f25 + (25.0 * cosd(var_f27) * sind(var_f22)); + var_r29->y = sp20 - (25.0 * cosd(var_f22)); + var_r29->z = sp1C + (25.0 * sind(var_f27) * sind(var_f22)); + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f28 -= var_f18; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x17, 4, 4); + } + var_r29 = &var_r31->unk_17C[var_r31->unk_144[24]]; + var_r26 = &var_r31->unk_188[var_r31->unk_144[24]]; + var_r28 = &var_r31->unk_184[var_r31->unk_144[24]]; + var_r25 = &var_r31->unk_178[var_r31->unk_144[24]]; + var_f25 = var_f30 = -((0.5f * var_f24) - 25.0f); + sp20 = var_f28 = 0.0f; + sp1C = var_f26 = (0.5f * var_f24) - 25.0f; + var_f19 = var_f31 = 0.0f; + sp18 = var_f29 = 0.0f; + var_f23 = sp14 / (var_r24 - 1); + var_f18 = sp14 / (var_r24 - 1); + var_f21 = 1.0f / (var_r31->unk_10E - 1); + var_f20 = 1.0f / (var_r31->unk_10E - 1); + if (var_r31->unk_112[0x18] != 0) { + for (var_r30 = 0; var_r30 < var_r31->unk_10E; var_r30++) { + for (var_r27 = 0; var_r27 < var_r31->unk_10E; var_r27++) { + var_r29->x = var_f30; + var_r29->y = var_f28; + var_r29->z = var_f26; + var_r28->x = var_f31; + var_r28->y = var_f29; + var_f30 += var_f23; + var_f31 += var_f21; + var_r29++; + var_r26++; + var_r28++; + var_r25++; + } + var_f30 = var_f25; + var_f31 = var_f19; + var_f26 = var_f26 - var_f23; + var_f29 += var_f20; + } + fn_1_D9A8(var_r31, var_r23, 0x18, var_r24 - 1, var_r24 - 1); + } + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + for (var_r27 = 0; var_r27 < var_r30; var_r27++) { + var_f30 = var_r31->unk_17C[var_r30].x - var_r31->unk_17C[var_r27].x; + var_f28 = var_r31->unk_17C[var_r30].y - var_r31->unk_17C[var_r27].y; + var_f26 = var_r31->unk_17C[var_r30].z - var_r31->unk_17C[var_r27].z; + sp24 = (var_f26 * var_f26) + ((var_f30 * var_f30) + (var_f28 * var_f28)); + if (sp24 < 10.0f) { + var_r31->unk_178[var_r30] = var_r27; + if (var_r31->unk_178[var_r27] != -1) { + var_r31->unk_178[var_r30] = var_r31->unk_178[var_r27]; + } + break; + } + } + if (var_r27 >= var_r30) { + var_r31->unk_178[var_r30] = -1; + } + } + memcpy(var_r31->unk_180, var_r31->unk_17C, var_r31->unk_110 * 0xC); + memcpy(var_r31->unk_198, &var_r31->unk_180[var_r31->unk_144[0]], var_r31->unk_112[0] * 0xC); + var_r31->unk_19C = 0; + fn_1_DB44(var_r31, var_r23); + fn_1_DE3C(var_r31, var_r23); + var_f31 = sqrtf((0.5f * sp8 * (0.5f * sp8)) + ((0.5f * var_f24 * (0.5f * var_f24)) + (0.5f * var_f24 * (0.5f * var_f24)))); + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + var_f30 = var_r31->unk_17C[var_r30].x; + var_f28 = var_r31->unk_17C[var_r30].y - (0.5f * sp8); + var_f26 = var_r31->unk_17C[var_r30].z; + sp24 = sqrtf((var_f26 * var_f26) + ((var_f30 * var_f30) + (var_f28 * var_f28))); + var_f27 = sp24; + sp24 = 1.0f - (sp24 / var_f31); + if (var_f27 != 0.0f) { + var_f22 = 1.0f / var_f27; + } + else { + var_f22 = 0.0; + } + var_r31->unk_194[var_r30].x = sp24 * (var_f22 * var_r31->unk_17C[var_r30].x); + var_r31->unk_194[var_r30].y = sp24 * (var_f22 * var_r31->unk_17C[var_r30].y); + var_r31->unk_194[var_r30].z = sp24 * (var_f22 * var_r31->unk_17C[var_r30].z); + } + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if ((((var_r31->unk_112[6] <= 0) || (var_r30 < var_r31->unk_144[6]) || (var_r30 >= (var_r31->unk_144[6] + var_r31->unk_112[6]))) + && ((var_r31->unk_112[7] <= 0) || (var_r30 < var_r31->unk_144[7]) || (var_r30 >= (var_r31->unk_144[7] + var_r31->unk_112[7]))) + && ((var_r31->unk_112[0xE] <= 0) || (var_r30 < var_r31->unk_144[0xE]) || (var_r30 >= (var_r31->unk_144[0xE] + var_r31->unk_112[0xE]))) + && ((var_r31->unk_112[0xF] <= 0) || (var_r30 < var_r31->unk_144[0xF]) || (var_r30 >= (var_r31->unk_144[0xF] + var_r31->unk_112[0xF]))) + && ((var_r31->unk_112[4] <= 0) || (var_r30 < var_r31->unk_144[4]) || (var_r30 >= (var_r31->unk_144[4] + var_r31->unk_112[4]))) + && ((var_r31->unk_112[8] <= 0) || (var_r30 < var_r31->unk_144[8]) || (var_r30 >= (var_r31->unk_144[8] + var_r31->unk_112[8]))) + && ((var_r31->unk_112[0xA] <= 0) || (var_r30 < var_r31->unk_144[0xA]) || (var_r30 >= (var_r31->unk_144[0xA] + var_r31->unk_112[0xA]))) + && ((var_r31->unk_112[0xC] <= 0) || (var_r30 < var_r31->unk_144[0xC]) || (var_r30 >= (var_r31->unk_144[0xC] + var_r31->unk_112[0xC]))) + && ((var_r31->unk_112[0x10] <= 0) || (var_r30 < var_r31->unk_144[0x10]) + || (var_r30 >= (var_r31->unk_144[0x10] + var_r31->unk_112[0x10]))) + && ((var_r31->unk_112[0x11] <= 0) || (var_r30 < var_r31->unk_144[0x11]) + || (var_r30 >= (var_r31->unk_144[0x11] + var_r31->unk_112[0x11]))) + && ((var_r31->unk_112[0x14] <= 0) || (var_r30 < var_r31->unk_144[0x14]) + || (var_r30 >= (var_r31->unk_144[0x14] + var_r31->unk_112[0x14]))) + && ((var_r31->unk_112[0x15] <= 0) || (var_r30 < var_r31->unk_144[0x15]) + || (var_r30 >= (var_r31->unk_144[0x15] + var_r31->unk_112[0x15]))) + && (var_r30 >= var_r31->unk_144[4])) + || (var_r31->unk_178[var_r30] != -1)) { + var_r31->unk_18C[var_r30].x = var_r31->unk_18C[var_r30].y = var_r31->unk_18C[var_r30].z = 0.0; + var_r31->unk_190[var_r30][0] = var_r31->unk_190[var_r30][1] = 0; + var_r31->unk_190[var_r30][2] = 0; + } + else if (((var_r31->unk_112[0] > 0) && (var_r30 >= var_r31->unk_144[0]) && (var_r30 < (var_r31->unk_144[0] + var_r31->unk_112[0]))) + || ((var_r31->unk_112[4] > 0) && (var_r30 >= var_r31->unk_144[4]) && (var_r30 < (var_r31->unk_144[4] + var_r31->unk_112[4]))) + || ((var_r31->unk_112[8] > 0) && (var_r30 >= var_r31->unk_144[8]) && (var_r30 < (var_r31->unk_144[8] + var_r31->unk_112[8]))) + || ((var_r31->unk_112[0xA] > 0) && (var_r30 >= var_r31->unk_144[0xA]) && (var_r30 < (var_r31->unk_144[0xA] + var_r31->unk_112[0xA]))) + || ((var_r31->unk_112[0xC] > 0) && (var_r30 >= var_r31->unk_144[0xC]) && (var_r30 < (var_r31->unk_144[0xC] + var_r31->unk_112[0xC]))) + || ((var_r31->unk_112[0x10] > 0) && (var_r30 >= var_r31->unk_144[0x10]) && (var_r30 < (var_r31->unk_144[0x10] + var_r31->unk_112[0x10]))) + || ((var_r31->unk_112[0x11] > 0) && (var_r30 >= var_r31->unk_144[0x11]) && (var_r30 < (var_r31->unk_144[0x11] + var_r31->unk_112[0x11]))) + || ((var_r31->unk_112[0x14] > 0) && (var_r30 >= var_r31->unk_144[0x14]) && (var_r30 < (var_r31->unk_144[0x14] + var_r31->unk_112[0x14]))) + || ((var_r31->unk_112[0x15] > 0) && (var_r30 >= var_r31->unk_144[0x15]) + && (var_r30 < (var_r31->unk_144[0x15] + var_r31->unk_112[0x15])))) { + *var_r31->unk_190[var_r30] = var_r31->unk_190[var_r30][1] = 0; + sp24 = sqrtf((var_r31->unk_17C[var_r30].x * var_r31->unk_17C[var_r30].x) + (var_r31->unk_17C[var_r30].z * var_r31->unk_17C[var_r30].z)); + var_f27 = sp24; + sp24 = 1.0f - (sp24 / sqrtf(var_f24 * var_f24)); + var_r31->unk_18C[var_r30].y = -(180.0f * sp24); + var_f27 = sqrtf(var_f27); + if (var_f27 != 0.0f) { + var_f22 = 1.0f / var_f27; + } + else { + var_f22 = 0.0; + } + var_r31->unk_18C[var_r30].x = sind((180.0f * (var_f22 * var_r31->unk_17C[var_r30].x))); + var_r31->unk_18C[var_r30].z = sind((180.0f * (var_f22 * var_r31->unk_17C[var_r30].z))); + var_r31->unk_18C[var_r30].x *= 20.0f * -(1.0f - sp24); + var_r31->unk_18C[var_r30].z *= (20.0f * -(1.0f - sp24)); + var_r31->unk_190[var_r30][2] = 1; + } + else { + sp24 = sqrtf((var_r31->unk_17C[var_r30].x * var_r31->unk_17C[var_r30].x) + (var_r31->unk_17C[var_r30].z * var_r31->unk_17C[var_r30].z)); + if (sp24 != 0.0f) { + sp24 = 1.0f / sp24; + } + else { + sp24 = 0.0f; + } + var_r31->unk_18C[var_r30].x = -(sp24 * var_r31->unk_17C[var_r30].x); + var_r31->unk_18C[var_r30].z = -(sp24 * var_r31->unk_17C[var_r30].z); + var_r31->unk_18C[var_r30].y = 0.0; + var_f27 = 180.0 + (180.0 * (atan2(var_r31->unk_17C[var_r30].x, var_r31->unk_17C[var_r30].z) / 3.141592653589793)); + if (var_f27 > 360.0f) { + var_f27 = fmod(var_f27, 360.0); + } + else if (var_f27 < 0.0f) { + var_f27 += 360.0f; + } + var_f27 = 255.0f * (0.0027777778f * var_f27); + if (var_f27 >= 255.0f) { + var_f27 = 255.0f; + } + else if (var_f27 < 0.0f) { + var_f27 = 0.0; + } + var_f22 = 64.0f * (var_r31->unk_17C[var_r30].y / sp8); + if (var_f22 >= 63.0f) { + var_f22 = 63.0f; + } + else if (var_f22 < 0.0f) { + var_f22 = 0.0; + } + var_r31->unk_190[var_r30][0] = var_f27; + var_r31->unk_190[var_r30][1] = var_f22; + var_r31->unk_190[var_r30][2] = 2; + } + } + DCFlushRangeNoSync(var_r31->unk_180, var_r31->unk_110 * 0xC); + DCFlushRangeNoSync(var_r31->unk_17C, var_r31->unk_110 * 0xC); + DCFlushRangeNoSync(var_r31->unk_188, var_r31->unk_110 * 0xC); + DCFlushRangeNoSync(var_r31->unk_184, var_r31->unk_110 * 8); + DCFlushRangeNoSync(var_r31->unk_178, var_r31->unk_110 * 2); + PPCSync(); + for (var_r21 = 0; var_r21 < 0x19; var_r21++) { + if ((var_r31->unk_208[var_r21] != 0) && var_r31->unk_1A4[var_r21] && (var_r31->unk_112[var_r21] != 0)) { + var_r17 = HuMemDirectMallocNum(HEAP_DATA, 0x4000, var_r23->unk_48); + spC = var_r17; + (void)var_r18; + DCFlushRange(var_r17, 0x4000); + GXBeginDisplayList(spC, 0x4000); + GXBegin(GX_QUADS, GX_VTXFMT0, var_r31->unk_208[var_r21] * 4); + var_r20 = var_r31->unk_1A4[var_r21]; + for (var_r30 = 0; var_r30 < var_r31->unk_208[var_r21]; var_r30++) { + for (var_r27 = 0; var_r27 < 4; var_r27++) { + if (var_r31->unk_178[var_r20[var_r27]] == -1) { + var_r18 = var_r20[var_r27]; + } + else { + var_r18 = var_r31->unk_178[var_r20[var_r27]]; + } + GXPosition1x16(var_r18); + GXNormal1x16(var_r18); + GXColor1x16(0); + GXTexCoord1x16(var_r20[var_r27]); + } + var_r20 += 5; + } + var_r31->unk_244[var_r21] = GXEndDisplayList(); + if (var_r31->unk_244[var_r21] >= 0x4000) { + OSReport("ERROR! GList test size over! \n"); + } + var_r31->unk_2A8[var_r21] = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_244[var_r21], var_r23->unk_48); + memcpy(var_r31->unk_2A8[var_r21], var_r17, var_r31->unk_244[var_r21]); + DCFlushRange(var_r31->unk_2A8[var_r21], var_r31->unk_244[var_r21]); + HuMemDirectFree(var_r17); + } + } + return var_r19; +} + +void fn_1_D9A8(M425DllUnkStruct4 *var_r31, ModelData *var_r24, s32 var_r30, s32 var_r26, s32 var_r25) +{ + s16 *var_r29; + s32 var_r28; + s32 var_r27; + + var_r31->unk_208[var_r30] = var_r26 * var_r25; + var_r31->unk_1A4[var_r30] = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_208[var_r30] * 0xA, var_r24->unk_48); + memset(var_r31->unk_1A4[var_r30], 0, var_r31->unk_208[var_r30] * 0xA); + var_r29 = var_r31->unk_1A4[var_r30]; + for (var_r28 = 0; var_r28 < var_r25; var_r28++) { + for (var_r27 = 0; var_r27 < var_r26; var_r27++) { + var_r29[0] = var_r31->unk_144[var_r30] + (var_r26 + 1) * var_r28 + var_r27; + var_r29[1] = var_r31->unk_144[var_r30] + (var_r26 + 1) * var_r28 + (var_r27 + 1); + var_r29[2] = var_r31->unk_144[var_r30] + (var_r26 + 1) * (var_r28 + 1) + (var_r27 + 1); + var_r29[3] = var_r31->unk_144[var_r30] + (var_r26 + 1) * (var_r28 + 1) + var_r27; + var_r29 += 5; + } + } + DCFlushRangeNoSync(var_r31->unk_1A4[var_r30], var_r31->unk_208[var_r30] * 0xA); + PPCSync(); +} + +void fn_1_DB44(M425DllUnkStruct4 *arg0, ModelData *model) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + s16 *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + for (var_r30 = 0; var_r30 < 0x19; var_r30++) { + if ((arg0->unk_208[var_r30] != 0) && arg0->unk_1A4[var_r30]) { + for (var_r31 = arg0->unk_1A4[var_r30], var_r29 = 0; var_r29 < arg0->unk_208[var_r30]; var_r29++, var_r31 += 0x5) { + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (arg0->unk_178[var_r31[var_r28]] != -1) { + var_r31[var_r28] = arg0->unk_178[var_r31[var_r28]]; + } + } + } + } + } + for (var_r30 = 0; var_r30 < 0x19; var_r30++) { + if ((arg0->unk_208[var_r30] != 0) && arg0->unk_1A4[var_r30]) { + for (var_r31 = arg0->unk_1A4[var_r30], var_r29 = 0; var_r29 < arg0->unk_208[var_r30]; var_r29++, var_r31 += 0x5) { + var_f31 = arg0->unk_17C[var_r31[0]].x - arg0->unk_17C[var_r31[1]].x; + var_f30 = arg0->unk_17C[var_r31[0]].y - arg0->unk_17C[var_r31[1]].y; + var_f29 = arg0->unk_17C[var_r31[0]].z - arg0->unk_17C[var_r31[1]].z; + var_f28 = (var_f29 * var_f29) + ((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f28 < 10.0f) { + var_r31[4] = 1; + } + else { + var_f31 = arg0->unk_17C[var_r31[0]].x - arg0->unk_17C[var_r31[2]].x; + var_f30 = arg0->unk_17C[var_r31[0]].y - arg0->unk_17C[var_r31[2]].y; + var_f29 = arg0->unk_17C[var_r31[0]].z - arg0->unk_17C[var_r31[2]].z; + var_f28 = (var_f29 * var_f29) + ((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f28 < 10.0f) { + var_r31[4] = 2; + } + else { + var_r31[4] = 0; + } + } + } + } + } +} + +void fn_1_DE3C(M425DllUnkStruct4 *arg0, ModelData *model) +{ + Vec sp20; + Vec sp14; + Vec sp8; + s32 var_r30; + s32 var_r29; + s16 *var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + memset(arg0->unk_188, 0, arg0->unk_110 * sizeof(Vec)); + for (var_r30 = 0; var_r30 < arg0->unk_240; var_r30++) { + if ((arg0->unk_208[var_r30] != 0) && arg0->unk_1A4[var_r30]) { + for (var_r28 = arg0->unk_1A4[var_r30], var_r24 = 0; var_r24 < arg0->unk_208[var_r30]; var_r24++, var_r28 += 5) { + switch (var_r28[4]) { + case 1: + var_r27 = 0; + var_r29 = 2; + var_r26 = 3; + var_r25 = 1; + break; + case 2: + var_r27 = 0; + var_r29 = 1; + var_r26 = 3; + var_r25 = 2; + break; + default: + var_r27 = 0; + var_r29 = 1; + var_r26 = 2; + var_r25 = 3; + break; + } + var_r27 = var_r28[var_r27]; + var_r29 = var_r28[var_r29]; + var_r26 = var_r28[var_r26]; + var_r25 = var_r28[var_r25]; + sp14.x = arg0->unk_180[var_r29].x - arg0->unk_180[var_r27].x; + sp14.y = arg0->unk_180[var_r29].y - arg0->unk_180[var_r27].y; + sp14.z = arg0->unk_180[var_r29].z - arg0->unk_180[var_r27].z; + sp8.x = arg0->unk_180[var_r26].x - arg0->unk_180[var_r29].x; + sp8.y = arg0->unk_180[var_r26].y - arg0->unk_180[var_r29].y; + sp8.z = arg0->unk_180[var_r26].z - arg0->unk_180[var_r29].z; + PSVECCrossProduct(&sp14, &sp8, &sp20); + sp20.x *= -1.0f; + sp20.y *= -1.0f; + sp20.z *= -1.0f; + arg0->unk_188[var_r27].x += sp20.x; + arg0->unk_188[var_r27].y += sp20.y; + arg0->unk_188[var_r27].z += sp20.z; + arg0->unk_188[var_r29].x += sp20.x; + arg0->unk_188[var_r29].y += sp20.y; + arg0->unk_188[var_r29].z += sp20.z; + arg0->unk_188[var_r26].x += sp20.x; + arg0->unk_188[var_r26].y += sp20.y; + arg0->unk_188[var_r26].z += sp20.z; + arg0->unk_188[var_r25].x += sp20.x; + arg0->unk_188[var_r25].y += sp20.y; + arg0->unk_188[var_r25].z += sp20.z; + } + } + } + for (var_r30 = 0; var_r30 < arg0->unk_110; var_r30++) { + PSVECNormalize(&arg0->unk_188[var_r30], &arg0->unk_188[var_r30]); + } +} + +s32 lbl_1_data_150[3][2] = { { 0x638, 0x63B }, { 0x639, 0x63C }, { 0x63A, 0x63D } }; +GXColor lbl_1_data_168 = { 255, 255, 255, 255 }; +Mtx lbl_1_data_16C = { + { 0.5f, 0.0f, 0.0f, -0.5f }, + { 0.0f, 0.5f, 0.0f, -0.5f }, + { 0.0f, 0.0f, 0.5f, -0.5f }, +}; +Vec lbl_1_data_19C[4] = { + { -0.5f, 0.5f, 0.0f }, + { 0.5f, 0.5f, 0.0f }, + { 0.5f, -0.5f, 0.0f }, + { -0.5f, -0.5f, 0.0f }, +}; +Vec2f lbl_1_data_1CC[4] = { + { 0.0f, 0.0f }, + { 0.25f, 0.0f }, + { 0.25f, 0.25f }, + { 0.0f, 0.25f }, +}; + +void fn_1_E210(s32 arg0) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + M425DllUnkStruct4 *var_r31; + s32 var_r30; + s32 var_r29; + LightData *var_r28; + ModelData *var_r27; + s32 var_r26; + + if (lbl_1_bss_6EC) { + var_r27 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r31 = var_r27->unk_120; + for (var_r30 = 0, var_f31 = 0.0f; var_r30 < 6; var_r30++) { + if ((var_r31->unk_84[var_r30] == -1) || (var_r31->unk_9C[var_r30] < 0.0f)) { + var_r31->unk_84[var_r30] = -1; + var_r31->unk_9C[var_r30] = 0.0f; + } + else { + var_f31 += var_r31->unk_9C[var_r30]; + for (var_r29 = 0; var_r29 < 5; var_r29++) { + if (var_r31->unk_3C[var_r29] == var_r31->unk_84[var_r30]) { + break; + } + } + if (var_r29 >= 5) { + for (var_r29 = 0; var_r29 < 5; var_r29++) { + if ((var_r31->unk_3C[var_r29] == -1) && (var_r31->unk_54[var_r29] <= 0.0f)) { + break; + } + } + } + if ((var_r29 < 5) && (var_r31->unk_54[var_r29] < var_r31->unk_9C[var_r30])) { + var_r31->unk_3C[var_r29] = var_r31->unk_84[var_r30]; + var_r31->unk_54[var_r29] = var_r31->unk_9C[var_r30]; + var_r31->unk_6C[var_r29] = var_r31->unk_B4[var_r30]; + } + var_r31->unk_84[var_r30] = -1; + var_r31->unk_9C[var_r30] = 0.0f; + var_r31->unk_B4[var_r30] = 0; + } + } + for (var_r30 = 0, var_r29 = 0, var_r31->unk_14 = 0.0f; var_r30 < 6; var_r30++) { + if ((var_r31->unk_3C[var_r30] != -1) && (var_r31->unk_54[var_r30] > 0.0f)) { + var_r31->unk_14 += 0.8f * var_r31->unk_54[var_r30]; + var_r29++; + } + } + + for (var_r30 = 0, var_r29 = 0, var_r31->unk_20 = 0.0f; var_r30 < 6; var_r30++) { + if ((var_r31->unk_3C[var_r30] != -1) && (var_r31->unk_54[var_r30] > 0.0f) && (var_r31->unk_6C[var_r30] != 0)) { + var_r31->unk_20 += 0.8f * var_r31->unk_54[var_r30]; + var_r29++; + } + } + if (var_r29 != 0) { + var_r31->unk_18 = 20.0f * (var_r31->unk_20 * var_r31->unk_20); + var_r31->unk_08 -= var_r31->unk_18; + if (var_r31->unk_08 < 0.0f) { + var_r31->unk_08 = 0.0f; + } + if ((var_r31->unk_18 > var_r31->unk_1C) && (var_r31->unk_18 >= 0.0f)) { + if (var_r31->unk_18 >= 13.200000000000001) { + var_r26 = HuAudFXPlay(lbl_1_data_150[2][arg0]); + } + else if (var_r31->unk_18 >= 6.6000000000000005) { + var_r26 = HuAudFXPlay(lbl_1_data_150[1][arg0]); + } + else { + var_r26 = HuAudFXPlay(lbl_1_data_150[0][arg0]); + } + var_f30 = var_r31->unk_08 / 1000.0f; + if (var_r26 != -1) { + HuAudFXPitchSet(var_r26, (s32)(8191.0f * (1.0f - var_f30))); + } + } + } + else { + var_r31->unk_18 = 0.0f; + } + var_r31->unk_1C = var_r31->unk_18; + if (var_r31->unk_2C != 0) { + if (++var_r31->unk_28 >= var_r31->unk_2C) { + var_r31->unk_2C = var_r31->unk_28 = 0; + var_r31->unk_30 = 0.0f; + } + } + if ((var_r31->unk_E0 != var_r31->unk_E8) || (var_r31->unk_E4 != var_r31->unk_EC)) { + sp8.x = sind(var_r31->unk_E4) * cosd(var_r31->unk_E0); + sp8.z = cosd(var_r31->unk_E4) * cosd(var_r31->unk_E0); + sp8.y = sind(var_r31->unk_E0); + PSVECNormalize(&sp8, &sp8); + var_r28 = &Hu3DLocalLight[var_r27->unk_38[0]]; + var_r28->unk_1C.x = 1000.0f * sp8.x; + var_r28->unk_1C.y = 1000.0f * sp8.y; + var_r28->unk_1C.z = 1000.0f * sp8.z; + var_r28->unk_28.x = sp8.x; + var_r28->unk_28.y = sp8.y; + var_r28->unk_28.z = sp8.z; + var_r31->unk_E8 = var_r31->unk_E0; + var_r31->unk_EC = var_r31->unk_E4; + } + var_r31->unk_20 = 0.0f; + } +} + +void fn_1_E914(ModelData *var_r27, Mtx matrix) +{ + s32 spB4; + s32 spB0; + Mtx sp70; + Vec sp64; + Vec sp58; + float sp48; + float sp44; + float sp40; + float sp3C; + float sp38; + float sp34; + float sp30; + float sp2C; + float sp28; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f19; + float var_f18; + + M425DllUnkStruct4 *var_r31; + s32 var_r30; + s32 var_r29; + s16 var_r28; + s32 var_r26; + + var_r31 = var_r27->unk_120; + if (var_r31->unk_2C != 0) { + var_f24 = (float)var_r31->unk_28 / var_r31->unk_2C; + var_r31->unk_30 = 0.30000001192092896 * cosd((90.0f * var_f24)); + sp40 = var_r31->unk_30 * (0.5 * sind((720.0f * var_f24))); + } + else { + sp40 = 0.0f; + } + if (var_r31->unk_0C != 0.0f) { + var_f19 = var_r31->unk_08 / var_r31->unk_0C; + } + else { + var_f19 = 1.0f; + } + var_r27->scale.y = var_r31->unk_DC = (0.100000024f + (0.9f * var_f19)) - sp40; + if (var_r31->unk_DC > 0.3f) { + sp3C = 1.0f - (-0.39999998f * ((var_r31->unk_DC - 0.3f) / 0.7f)); + } + else { + sp3C = 0.6f * (var_r31->unk_DC / 0.3f); + } + if (var_r31->unk_DC != 0.0f) { + sp3C /= var_r31->unk_DC; + } + else { + sp3C = 0.0f; + } + if (var_r31->unk_08 < 0.0f) { + sp3C = 0.0f; + } + if (var_f19 <= 0.3f) { + var_f24 = var_f19 / 0.3f; + var_r31->unk_E0 = 222.0f + (80.0f * var_f24); + } + var_f18 = 100.0f * var_r31->unk_14; + if (var_f19 > 0.85f) { + var_f18 += 100.0f * (4.0f * (var_f19 - 0.85f)); + } + if (var_f18 > 150.0f) { + var_f18 = 150.0f; + } + sp38 = 1.0f - var_f19; + if (var_f18 >= 0.0f) { + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if (var_r31->unk_178[var_r30] == -1) { + var_r31->unk_180[var_r30].x = var_r31->unk_17C[var_r30].x + (var_f18 * var_r31->unk_194[var_r30].x); + var_r31->unk_180[var_r30].y = var_r31->unk_17C[var_r30].y + (var_f18 * var_r31->unk_194[var_r30].y); + var_r31->unk_180[var_r30].z = var_r31->unk_17C[var_r30].z + (var_f18 * var_r31->unk_194[var_r30].z); + } + } + } + else { + memcpy(var_r31->unk_180, var_r31->unk_17C, var_r31->unk_110 * 0xC); + } + var_r31->unk_14 = 0.0f; + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if (!(var_f19 >= 1.0f) && (var_r31->unk_190[var_r30][2] != 0)) { + switch (var_r31->unk_190[var_r30][2]) { + case 1: + var_r31->unk_180[var_r30].x += sp38 * var_r31->unk_18C[var_r30].x; + var_r31->unk_180[var_r30].y += sp38 * var_r31->unk_18C[var_r30].y; + var_r31->unk_180[var_r30].z += sp38 * var_r31->unk_18C[var_r30].z; + break; + case 2: + var_f24 = lbl_1_bss_6E4[var_r31->unk_190[var_r30][0] + (var_r31->unk_190[var_r30][1] << 8)]; + var_f24 = 80.0f * (0.003921569f * (255.0f - var_f24) * sp38); + var_r31->unk_180[var_r30].x += var_f24 * var_r31->unk_18C[var_r30].x; + var_r31->unk_180[var_r30].y += var_f24 * var_r31->unk_18C[var_r30].y; + var_r31->unk_180[var_r30].z += var_f24 * var_r31->unk_18C[var_r30].z; + break; + } + } + } + for (var_r29 = 0, var_r28 = 0, var_f27 = var_f26 = var_f25 = 0.0f; var_r29 < 6; var_r29++) { + if ((var_r31->unk_54[var_r29] > 0.0f) || (var_r31->unk_3C[var_r29] != -1)) { + var_f27 += var_r31->unk_180[var_r31->unk_3C[var_r29]].x; + var_f25 += var_r31->unk_180[var_r31->unk_3C[var_r29]].z; + var_f26 += var_r31->unk_54[var_r29]; + var_r28++; + } + } + if (var_r28 >= 2) { + var_f27 /= var_r28; + var_f25 /= var_r28; + var_f26 /= var_r28; + mtxRot(sp70, 0.0f, var_r31->unk_D8, 0.0f); + var_f30 = var_r31->unk_CC.x + ((sp70[0][0] * var_f27) + (sp70[0][2] * var_f25)); + var_f31 = var_r31->unk_CC.z + ((sp70[2][0] * var_f27) + (sp70[2][2] * var_f25)); + fn_1_10EF8(var_r31->unk_00, 2, var_f30, var_f31); + var_r31->unk_50 = var_r31->unk_34; + var_r31->unk_54[5] = var_f26; + var_r31->unk_6C[5] = 0; + } + else { + var_r31->unk_50 = -1; + var_r31->unk_54[5] = 0.0f; + var_r31->unk_6C[5] = 0; + } + for (var_r29 = 0; var_r29 < 6; var_r29++) { + if ((var_r31->unk_54[var_r29] <= 0.0f) || (var_r31->unk_3C[var_r29] == -1)) { + var_r31->unk_3C[var_r29] = -1; + var_r31->unk_54[var_r29] = 0.0f; + var_r31->unk_6C[var_r29] = 0; + } + else { + var_f24 = 150.0f * var_r31->unk_54[var_r29] * sp3C; + sp44 = 50.0f * var_r31->unk_54[var_r29]; + if (sp44 > 15.000001f) { + sp44 = 15.000001f; + } + var_f27 = var_r31->unk_180[var_r31->unk_3C[var_r29]].x; + var_f26 = var_r31->unk_180[var_r31->unk_3C[var_r29]].y; + var_f25 = var_r31->unk_180[var_r31->unk_3C[var_r29]].z; + if (var_r29 != 5) { + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if (var_r31->unk_178[var_r30] == -1) { + var_f30 = var_r31->unk_180[var_r30].x - var_f27; + var_f29 = var_r31->unk_DC * (var_r31->unk_180[var_r30].y - var_f26); + var_f31 = 0.425f * (var_r31->unk_180[var_r30].z - var_f25); + var_f28 = (var_f31 * var_f31) + ((var_f30 * var_f30) + (var_f29 * var_f29)); + if (var_f28 < 10000.0f) { + var_f28 = sqrtf((var_f31 * var_f31) + ((var_f30 * var_f30) + (var_f29 * var_f29))); + var_f28 = var_f28 * 0.01f; + var_r31->unk_180[var_r30].y -= (1.0f - var_f28) * var_f24; + if (var_r31->unk_180[var_r30].y < 1.0f) { + var_r31->unk_180[var_r30].y = 1.0f; + } + } + if (var_r31->unk_1A0[var_r30] != 0) { + var_f31 = var_r31->unk_180[var_r30].z - var_f25; + if (!(fabs(var_f31) > 100.0)) { + var_f28 = sqrtf((var_f30 * var_f30) + (var_f31 * var_f31)); + if (var_f28 < 200.0f) { + var_f28 = var_f28 * 0.005f; + var_r31->unk_180[var_r30].y += (sp44 * sind((90.0f * var_f28))); // is this right? + } + else if (var_f28 < 400.0f) { + var_f28 -= 200.0f; + var_f28 = var_f28 * 0.005f; + var_r31->unk_180[var_r30].y += (sp44 * cosd((90.0f * var_f28))); + } + } + } + } + } + } + else { + for (var_r30 = 0; var_r30 < var_r31->unk_110; var_r30++) { + if ((var_r31->unk_178[var_r30] == -1) && ((var_r31->unk_F0[0] != var_r30) || (var_r31->unk_F0[1] != var_r30))) { + var_f30 = var_r31->unk_180[var_r30].x - var_f27; + var_f29 = var_r31->unk_DC * (var_r31->unk_180[var_r30].y - var_f26); + var_f31 = 0.425f * (var_r31->unk_180[var_r30].z - var_f25); + var_f28 = (var_f31 * var_f31) + ((var_f30 * var_f30) + (var_f29 * var_f29)); + if (var_f28 < 10000.0f) { + var_f28 = sqrtf((var_f31 * var_f31) + ((var_f30 * var_f30) + (var_f29 * var_f29))); + var_f28 = var_f28 * 0.01f; + var_r31->unk_180[var_r30].y -= (1.0f - var_f28) * var_f24; + if (var_r31->unk_180[var_r30].y < 1.0f) { + var_r31->unk_180[var_r30].y = 1.0f; + } + } + } + } + } + if (var_r29 < 5) { + if ((var_r31->unk_54[var_r29] -= 0.075f) <= 0.0f) { + var_r31->unk_54[var_r29] = 0.0f; + var_r31->unk_3C[var_r29] = -1; + var_r31->unk_6C[var_r29] = 0; + } + } + else { + var_r31->unk_54[var_r29] = 0.0f; + var_r31->unk_3C[var_r29] = -1; + var_r31->unk_6C[var_r29] = 0; + } + } + } + var_r31->unk_38 = 0; + memcpy(var_r31->unk_198, &var_r31->unk_180[var_r31->unk_144[0]], var_r31->unk_112[0] * 0xC); + var_r31->unk_19C = 0; + fn_1_DE3C(var_r31, var_r27); + if ((var_r31->unk_04 != -1) && (var_r31->unk_06 != -1)) { + mtxRot(sp70, 0.0f, var_r31->unk_D8, 0.0f); + sp70[1][0] *= var_r31->unk_DC; + sp70[1][1] *= var_r31->unk_DC; + sp70[1][2] *= var_r31->unk_DC; + var_f30 = var_r31->unk_180[var_r31->unk_06].x; + var_f29 = var_r31->unk_180[var_r31->unk_06].y; + var_f31 = var_r31->unk_180[var_r31->unk_06].z; + var_f27 = var_r31->unk_CC.x + ((sp70[0][2] * var_f31) + ((sp70[0][0] * var_f30) + (sp70[0][1] * var_f29))); + var_f26 = var_r31->unk_CC.y + ((sp70[1][2] * var_f31) + ((sp70[1][0] * var_f30) + (sp70[1][1] * var_f29))); + var_f25 = var_r31->unk_CC.z + ((sp70[2][2] * var_f31) + ((sp70[2][0] * var_f30) + (sp70[2][1] * var_f29))); + Hu3DModelPosSet(var_r31->unk_04, var_f27, var_f26, var_f25); + var_f30 = var_r31->unk_188[var_r31->unk_06].x; + var_f29 = var_r31->unk_188[var_r31->unk_06].y; + var_f31 = var_r31->unk_188[var_r31->unk_06].z; + sp64.x = var_f27 + (20.0f * var_f30); + sp64.y = var_f26 + (20.0f * var_f29); + sp64.z = var_f25 + (20.0f * var_f31); + sp48 = sqrtf((var_f30 * var_f30) + (var_f31 * var_f31)); + var_f27 = sp34 = atan2d(sp48, var_f29); + var_f26 = sp30 = atan2d(var_f30, var_f31); + var_f25 = sp2C = 0.0f; + Hu3DModelRotSet(var_r31->unk_04, var_f27, var_f26, var_f25); + var_r30 = (s32)(10.0f * var_r31->unk_18) / 40; + if (var_r30 > 0x10) { + var_r30 = 0x10; + } + for (var_r26 = 0; var_r26 < var_r30; var_r26++) { + var_f27 = sp34; + var_f26 = sp30; + var_f25 = sp2C; + var_f27 += 0.5f * ((s32)frand() % 48); + var_f30 = sind(var_f26) * sind(var_f27); + var_f31 = cosd(var_f26) * sind(var_f27); + var_f29 = cosd(var_f27); + sp28 = 12.0f - ((s32)frand() % 6); + sp58.x = var_f30; + sp58.y = var_f29; + sp58.z = var_f31; + fn_1_11454(&sp64, &sp58, 50.0f + (5.0f * var_r30), sp28); + } + } + DCFlushRangeNoSync(var_r31->unk_180, var_r31->unk_110 * 0xC); + DCFlushRangeNoSync(var_r31->unk_188, var_r31->unk_110 * 0xC); + PPCSync(); +} + +void fn_1_101C4(ModelData *var_r29, Mtx var_r28) +{ + Mtx sp50; + ROMtx sp20; + GXColor sp1C; + M425DllUnkStruct4 *var_r31; + s32 var_r30; + s16 var_r27; + + var_r31 = var_r29->unk_120; + GXLoadPosMtxImm(var_r28, 0); + PSMTXInvXpose(var_r28, sp50); + GXLoadNrmMtxImm(sp50, 0); + var_r27 = fn_1_115D4(var_r29, Hu3DCameraMtx, Hu3DCameraMtxXPose, 4.0f); + if (omPauseChk() == 0) { + fn_1_E914(var_r29, var_r28); + } + var_r29->scale.y = var_r31->unk_DC; + memcpy(sp50, lbl_1_data_16C, sizeof(lbl_1_data_16C)); + mtxRotCat(&sp50[0], CRot.x, CRot.y + var_r31->unk_D8, 180.0f); + GXLoadTexMtxImm(sp50, 0x36, GX_MTX2x4); + sp1C.a = lbl_1_bss_6D0; + GXSetTevColor(GX_TEVREG2, sp1C); + HuSprTexLoad(lbl_1_bss_6E0, 0, 0, GX_CLAMP, GX_CLAMP, GX_LINEAR); + HuSprTexLoad(lbl_1_bss_6DC, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetNumChans(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_NRM, 0x36, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_TEXC, GX_CC_A2, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_RASA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + lbl_1_bss_6C8.r = var_r31->unk_23A.r; + lbl_1_bss_6C8.g = var_r31->unk_23A.g; + lbl_1_bss_6C8.b = var_r31->unk_23A.b; + lbl_1_bss_6C8.a = var_r31->unk_23A.a; + GXSetChanAmbColor(GX_COLOR0A0, lbl_1_bss_6C8); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_168); + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, var_r27, GX_DF_CLAMP, GX_AF_SPEC); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZMode(1, GX_LEQUAL, GX_FALSE); + GXSetZCompLoc(0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + if (HmfInverseMtxF3X3(var_r28, sp50) == 0) { + PSMTXIdentity(sp50); + } + PSMTXReorder(sp50, sp20); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, var_r31->unk_180, 0xC); + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, var_r31->unk_188, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &var_r31->unk_23A, 4); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA6, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetArray(GX_VA_TEX0, var_r31->unk_184, 8); + for (var_r30 = 0; var_r30 < var_r31->unk_240; var_r30++) { + if (var_r31->unk_2A8[var_r30] && var_r31->unk_244[var_r30] != 0 && var_r30 != 1) { + GXCallDisplayList(var_r31->unk_2A8[var_r30], var_r31->unk_244[var_r30]); + } + } + GXSetNumTevStages(2); + GXSetNumTexGens(2); + GXSetNumChans(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_NRM, 0x36, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_TEXC, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_RASA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOp(GX_TEVSTAGE1, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A2, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_APREV, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + lbl_1_bss_6C8.r = var_r31->unk_23A.r; + lbl_1_bss_6C8.g = var_r31->unk_23A.g; + lbl_1_bss_6C8.b = var_r31->unk_23A.b; + lbl_1_bss_6C8.a = var_r31->unk_23A.a; + GXSetChanAmbColor(GX_COLOR0A0, lbl_1_bss_6C8); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_168); + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, var_r27, GX_DF_CLAMP, GX_AF_SPEC); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXSetZCompLoc(0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetArray(GX_VA_POS, var_r31->unk_180, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetArray(GX_VA_NRM, var_r31->unk_188, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetArray(GX_VA_CLR0, &var_r31->unk_23A, 4); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetArray(GX_VA_TEX0, var_r31->unk_184, 8); + if (var_r31->unk_2A8[1] && (var_r31->unk_244[1] != 0)) { + GXCallDisplayList(var_r31->unk_2A8[1], var_r31->unk_244[1]); + } +} + +s32 fn_1_109EC(s32 arg0, s32 arg1, Vec *arg2, Vec *arg3, Vec *arg4, s32 arg5) +{ + float var_f31; + float var_f30; + M425DllUnkStruct4 *var_r31; + s32 var_r29; + ModelData *var_r26; + + if (!lbl_1_bss_6EC) { + return; + } + var_r26 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r31 = var_r26->unk_120; + if (var_r31->unk_0C != 0.0f) { + var_f30 = var_r31->unk_08 / var_r31->unk_0C; + } + else { + var_f30 = 1.0f; + } + var_r31->unk_24 = fn_1_10EF8(arg0, arg1, arg2->x, arg2->z); + arg4->x = arg2->x + arg3->x; + arg4->y = arg2->y + arg3->y; + arg4->z = arg2->z + arg3->z; + if ((arg4->y < var_r31->unk_24) && (arg3->y < 0.0f) && (var_r31->unk_34 >= 0)) { + var_f31 = -arg3->y; + if (var_f31 > 50.0f) { + var_f31 = 50.0f; + } + else if (var_f31 < 10.0f) { + var_f31 = 0.0f; + } + if ((var_f31 > 0.0f) && (arg5 != 0)) { + var_f31 = (var_f31 - 10.0f) / 40.0f; + var_r31->unk_20 += var_f31; + } + var_f31 = -arg3->y; + var_f31 = var_f31 * 0.02f; + if (var_r31->unk_34 >= 0) { + for (var_r29 = 0; var_r29 < var_r31->unk_38; var_r29++) { + if (var_r31->unk_84[var_r29] == var_r31->unk_34) { + break; + } + } + if (var_r29 >= var_r31->unk_38) { + var_r29 = var_r31->unk_38; + } + if (var_r29 < 6) { + var_r31->unk_84[var_r29] = var_r31->unk_34; + if (var_r31->unk_9C[var_r29] < var_f31) { + var_r31->unk_9C[var_r29] = var_f31; + var_r31->unk_B4[var_r29] = arg5; + } + var_r31->unk_38++; + } + } + arg4->y = var_r31->unk_24 - (150.0f * (var_f30 * var_f31)); + if (arg4->y < 1.0f) { + arg4->y = 1.0f; + } + return 1; + } + if (arg4->y < var_r31->unk_24) { + arg4->y = var_r31->unk_24; + } + return 0; +} + +float fn_1_10CF4(s32 arg0) +{ + ModelData *var_r31; + M425DllUnkStruct4 *var_r30; + + if (!lbl_1_bss_6EC) { + return; + } + var_r31 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r30 = var_r31->unk_120; + return var_r30->unk_08; +} + +void fn_1_10D54(s32 arg0, float arg8) +{ + ModelData *var_r31; + M425DllUnkStruct4 *var_r30; + + if (lbl_1_bss_6EC) { + var_r31 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r30 = var_r31->unk_120; + var_r30->unk_08 = arg8; + } +} + +void fn_1_10DB4(s32 arg0) +{ + M425DllUnkStruct4 *var_r31; + ModelData *var_r30; + + if (lbl_1_bss_6EC) { + var_r30 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r31 = var_r30->unk_120; + if (var_r31->unk_2C == 0) { + var_r31->unk_28 = 0; + var_r31->unk_2C = 0x28; + var_r31->unk_30 = 0.3f; + } + } +} + +void fn_1_10E3C(s32 arg0) +{ + M425DllUnkStruct4 *var_r31; + s32 var_r30; + ModelData *var_r29; + + if (lbl_1_bss_6EC) { + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r29 = &Hu3DData[lbl_1_bss_6EC->model[var_r30]]; + var_r31 = var_r29->unk_120; + if (arg0 != 0) { + var_r31->unk_110 = var_r31->unk_144[0x18] + var_r31->unk_112[24]; + var_r31->unk_240 = 0x19; + } + else { + var_r31->unk_110 = var_r31->unk_144[0x17] + var_r31->unk_112[23]; + var_r31->unk_240 = 0x18; + } + } + } +} + +float fn_1_10EF8(s32 arg0, s32 arg1, float arg8, float arg9) +{ + Mtx spC; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f25; + M425DllUnkStruct4 *var_r31; + Vec *var_r30; + s32 var_r29; + s32 var_r28; + ModelData *var_r26; + + if (!lbl_1_bss_6EC) { + return 0.0f; + } + var_r26 = &Hu3DData[lbl_1_bss_6EC->model[arg0]]; + var_r31 = var_r26->unk_120; + if ((arg1 >= 0) && (arg1 <= 2) && (var_r31->unk_F0[arg1] != -1)) { + var_r28 = var_r31->unk_F0[arg1]; + var_r31->unk_34 = var_r28; + if (var_r31->unk_19C == 0) { + return var_r31->unk_DC * var_r31->unk_198[var_r28].y; + } + return var_r31->unk_198[var_r28].y; + } + if (var_r31->unk_19C == 0) { + mtxRot(spC, 0.0f, var_r31->unk_D8, 0.0f); + spC[1][0] *= var_r31->unk_DC; + spC[1][1] *= var_r31->unk_DC; + spC[1][2] *= var_r31->unk_DC; + for (var_r29 = 0, var_r30 = var_r31->unk_198; var_r29 < var_r31->unk_112[0]; var_r29++, var_r30++) { + var_f31 = (spC[0][2] * var_r30->z) + ((spC[0][0] * var_r30->x) + (spC[0][1] * var_r30->y)); + var_f25 = (spC[1][2] * var_r30->z) + ((spC[1][0] * var_r30->x) + (spC[1][1] * var_r30->y)); + var_f30 = (spC[2][2] * var_r30->z) + ((spC[2][0] * var_r30->x) + (spC[2][1] * var_r30->y)); + var_r30->x = var_f31; + var_r30->y = var_f25; + var_r30->z = var_f30; + } + var_r31->unk_19C = 1; + } + arg8 -= var_r31->unk_CC.x; + arg9 -= var_r31->unk_CC.z; + var_f28 = 10000.0f; + var_r28 = -1; + for (var_r29 = 0, var_r30 = var_r31->unk_198; var_r29 < var_r31->unk_112[0]; var_r29++, var_r30++) { + var_f31 = arg8 - var_r30->x; + var_f30 = arg9 - var_r30->z; + if (!(fabs(var_f31) > 100.0)) { + if (!(fabs(var_f30) > 100.0)) { + var_f29 = (var_f31 * var_f31) + (var_f30 * var_f30); + if (var_f29 < var_f28) { + var_r28 = var_r29; + var_f28 = var_f29; + } + } + } + } + (void)var_r29; + var_r31->unk_34 = var_r28; + if ((arg1 >= 0) && (arg1 <= 2)) { + var_r31->unk_F0[arg1] = var_r28; + } + if (var_r28 >= 0) { + return var_r31->unk_198[var_r28].y; + } + return 0.0f; +} + +void fn_1_11284(void) +{ + lbl_1_bss_6D8 = HuSprAnimRead(HuDataReadNum(0x38000E, 0x10000000)); + lbl_1_bss_6D4 = fn_1_11A74(lbl_1_bss_6D8, 0x40); + Hu3DModelLayerSet(lbl_1_bss_6D4, 6); +} + +void fn_1_112FC(void) +{ + M425DllUnkStruct5 *var_r31; + M425DllUnkStruct6 *var_r30; + s32 var_r29; + ModelData *var_r28; + + var_r28 = &Hu3DData[lbl_1_bss_6D4]; + var_r30 = var_r28->unk_120; + for (var_r31 = var_r30->unk_3C, var_r29 = 0; var_r29 < var_r30->unk_24; var_r29++, var_r31++) { + if (!(var_r31->unk_28 <= 0.0f)) { + var_r31->unk_04.x = var_r31->unk_10.x * var_r31->unk_1C; + var_r31->unk_04.y = var_r31->unk_10.y * var_r31->unk_1C; + var_r31->unk_04.z = var_r31->unk_10.z * var_r31->unk_1C; + var_r31->unk_1C *= 0.95f; + PSVECAdd(&var_r31->unk_30, &var_r31->unk_04, &var_r31->unk_30); + if (++var_r31->unk_40 >= 0xF) { + var_r31->unk_40 = 0; + var_r31->unk_28 = 0.0f; + } + } + } +} + +void fn_1_11418(void) +{ + HuSprAnimKill(lbl_1_bss_6D8); + lbl_1_bss_6D8 = NULL; +} + +s32 fn_1_11454(Vec *arg0, Vec *arg1, float arg8, float arg9) +{ + M425DllUnkStruct5 *var_r31; + M425DllUnkStruct6 *var_r29; + s32 var_r28; + ModelData *var_r26; + + var_r26 = &Hu3DData[lbl_1_bss_6D4]; + var_r29 = var_r26->unk_120; + for (var_r31 = var_r29->unk_3C, var_r28 = 0; var_r28 < var_r29->unk_24; var_r28++, var_r31++) { + if (var_r31->unk_28 <= 0.0f) { + break; + } + } + if (var_r28 >= var_r29->unk_24) { + return -1; + } + var_r31->unk_30.x = arg0->x; + var_r31->unk_30.y = arg0->y; + var_r31->unk_30.z = arg0->z; + var_r31->unk_10.x = arg1->x; + var_r31->unk_10.y = arg1->y; + var_r31->unk_10.z = arg1->z; + var_r31->unk_04.x = arg1->x * arg9; + var_r31->unk_04.y = arg1->y * arg9; + var_r31->unk_04.z = arg1->z * arg9; + var_r31->unk_1C = arg9; + var_r31->unk_28 = arg8; + var_r31->unk_2C = (s32)frand() % 360; + var_r31->unk_3C.a = 0x40; + var_r31->unk_40 = 0; + return var_r28; +} + +s16 fn_1_115D4(ModelData *arg0, Mtx arg1, Mtx arg2, float arg8) +{ + s16 var_r31; + s16 var_r30; + LightData *var_r29; + s16 var_r27; + + var_r27 = 0; + var_r30 = 1; + for (var_r29 = Hu3DGlobalLight, var_r31 = 0; var_r31 < 8; var_r31++, var_r29++) { + if (var_r29->unk_00 != -1) { + var_r30 <<= 1; + } + } + if ((arg0->attr & 0x1000) != 0) { + for (var_r31 = 0; var_r31 < 8; var_r31++) { + if (arg0->unk_38[var_r31] != -1) { + var_r29 = &Hu3DLocalLight[arg0->unk_38[var_r31]]; + fn_1_116E4(arg0, var_r29, var_r30, arg2, arg1, arg8); + var_r27 |= var_r30; + var_r30 <<= 1; + } + } + } + return var_r27; +} + +void fn_1_116E4(ModelData *arg1, LightData *var_r31, s16 sp8, Mtx spC, Mtx sp10, float var_f31) +{ + switch ((u8)var_r31->unk_00) { + case 0: + GXInitLightAttn(&lbl_1_bss_688, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f); + GXInitLightSpot(&lbl_1_bss_688, var_r31->unk_04, var_r31->unk_02); + break; + case 1: + GXInitLightAttn(&lbl_1_bss_688, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f); + PSVECScale(&var_r31->unk_28, &var_r31->unk_1C, -100000.0f); + break; + case 2: + GXInitLightAttn(&lbl_1_bss_688, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f); + GXInitLightDistAttn(&lbl_1_bss_688, var_r31->unk_04, var_r31->unk_08, var_r31->unk_02); + break; + } + if ((var_r31->unk_00 & 0x8000) != 0) { + PSMTXMultVec(spC, &var_r31->unk_28, &lbl_1_bss_67C); + PSMTXMultVec(sp10, &var_r31->unk_1C, &lbl_1_bss_670); + GXInitLightPos(&lbl_1_bss_688, lbl_1_bss_670.x, lbl_1_bss_670.y, lbl_1_bss_670.z); + } + else { + GXInitLightPos(&lbl_1_bss_688, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z); + lbl_1_bss_67C = var_r31->unk_28; + } + if (var_f31 == 0.0f) { + GXInitLightDir(&lbl_1_bss_688, lbl_1_bss_67C.x, lbl_1_bss_67C.y, lbl_1_bss_67C.z); + } + else { + GXInitSpecularDir(&lbl_1_bss_688, lbl_1_bss_67C.x, lbl_1_bss_67C.y, lbl_1_bss_67C.z); + GXInitLightAttn(&lbl_1_bss_688, 0.0f, 0.0f, 1.0f, var_f31 / 2, 0.0f, 1.0f - (var_f31 / 2)); + } + GXInitLightColor(&lbl_1_bss_688, var_r31->color); + GXLoadLightObjImm(&lbl_1_bss_688, sp8); +} + +s16 fn_1_11A74(AnimData *arg0, s16 arg1) +{ + M425DllUnkStruct6 *var_r31; + s16 var_r30; + Vec2f *var_r29; + M425DllUnkStruct5 *var_r28; + ModelData *var_r27; + Vec *var_r26; + void *var_r24; + s16 var_r23; + void *var_r21; + + var_r23 = Hu3DHookFuncCreate(fn_1_11EE0); + var_r27 = &Hu3DData[var_r23]; + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(M425DllUnkStruct6), var_r27->unk_48); + var_r27->unk_120 = var_r31; + var_r31->unk_38 = arg0; + arg0->useNum++; + var_r31->unk_24 = arg1; + var_r31->unk_20 = 0; + var_r31->unk_4C = 0; + var_r31->unk_28 = 0; + var_r31->unk_21 = 0; + var_r31->unk_30 = 0; + var_r31->unk_00 = var_r31->unk_02 = 0; + var_r28 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(M425DllUnkStruct5), var_r27->unk_48); + var_r31->unk_3C = var_r28; + for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r28++) { + var_r28->unk_28 = 0.0f; + var_r28->unk_2C = 0.0f; + var_r28->unk_30.x = (s32)((frand() & 0x7F) - 0x40) * 0x14; + var_r28->unk_30.y = (s32)((frand() & 0x7F) - 0x40) * 0x1E; + var_r28->unk_30.z = (s32)((frand() & 0x7F) - 0x40) * 0x14; + var_r28->unk_3C.r = var_r28->unk_3C.g = var_r28->unk_3C.b = var_r28->unk_3C.a = 0xFF; + var_r28->unk_40 = 0; + } + var_r26 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec) * 4, var_r27->unk_48); + var_r31->unk_40 = var_r26; + for (var_r30 = 0; var_r30 < (arg1 * 4); var_r30++, var_r26++) { + var_r26->x = var_r26->y = var_r26->z = 0.0f; + } + var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec2f) * 4, var_r27->unk_48); + var_r31->unk_44 = var_r29; + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + var_r29->x = 0.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 1.0f; + var_r29++; + var_r29->x = 0.0f; + var_r29->y = 1.0f; + var_r29++; + } + var_r24 = HuMemDirectMallocNum(HEAP_DATA, 0x4000, var_r27->unk_48); + var_r21 = var_r24; + DCFlushRange(var_r24, 0x4000); + GXBeginDisplayList(var_r21, 0x4000); + GXBegin(GX_QUADS, GX_VTXFMT0, arg1 * 4); + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + GXUnknownu16(var_r30 * 4); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4); + GXUnknownu16(var_r30 * 4 + 1); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4 + 1); + GXUnknownu16(var_r30 * 4 + 2); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4 + 2); + GXUnknownu16(var_r30 * 4 + 3); + GXUnknownu16(var_r30); + GXUnknownu16(var_r30 * 4 + 3); + } + var_r31->unk_34 = GXEndDisplayList(); + var_r31->unk_48 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_34, var_r27->unk_48); + memcpy(var_r31->unk_48, var_r24, var_r31->unk_34); + DCFlushRange(var_r31->unk_48, var_r31->unk_34); + HuMemDirectFree(var_r24); + return var_r23; +} + +void fn_1_11EE0(ModelData *var_r24, Mtx var_r21) +{ + Mtx sp128; + Mtx spF8; + Mtx spC8; + Vec sp98[4]; + Vec sp68[4]; + Vec sp38[4]; + ROMtx sp8; + M425DllUnkStruct6 *var_r31; + Vec *var_r30; + M425DllUnkStruct5 *var_r29; + Vec *var_r28; + Vec *var_r27; + Vec2f *var_r26; + s16 var_r25; + s16 var_r23; + s16 var_r22; + s16 var_r20; + s16 var_r19; + UnkHook var_r18; + + var_r31 = var_r24->unk_120; + if ((var_r31->unk_2C != GlobalCounter) || (shadowModelDrawF != 0)) { + GXLoadPosMtxImm(var_r21, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + if (shadowModelDrawF != 0) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ONE, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetZMode(0, GX_LEQUAL, 0); + } + else { + var_r22 = var_r31->unk_38->bmp->dataFmt & 0xF; + if ((var_r22 == 7) || (var_r22 == 8)) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + } + else { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + } + if ((var_r24->attr & 2) != 0) { + GXSetZMode(1, GX_LEQUAL, GX_TRUE); + } + else { + GXSetZMode(1, GX_LEQUAL, GX_FALSE); + } + } + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(var_r31->unk_38, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(0); + switch (var_r31->unk_20) { + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + break; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, var_r31->unk_40, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 0x44); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_TEX0, var_r31->unk_44, 8); + if (HmfInverseMtxF3X3(var_r21, sp128) == 0) { + PSMTXIdentity(sp128); + } + PSMTXReorder(sp128, &sp8[0]); + if (var_r31->unk_4C) { + var_r18 = var_r31->unk_4C; + var_r18(var_r24, var_r31, var_r21); + } + var_r29 = var_r31->unk_3C; + var_r30 = var_r31->unk_40; + var_r26 = var_r31->unk_44; + PSMTXROMultVecArray(sp8, lbl_1_data_19C, &sp38[0], 4); + for (var_r23 = 0; var_r23 < var_r31->unk_24; var_r23++, var_r29++) { + if (!var_r29->unk_28) { + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + } + else { + if (!var_r29->unk_2C) { + var_r28 = &sp98[0]; + var_r27 = &sp38[0]; + PSVECScale(var_r27++, var_r28, var_r29->unk_28); + PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); + PSVECScale(var_r27++, var_r28, var_r29->unk_28); + PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); + PSVECScale(var_r27++, var_r28, var_r29->unk_28); + PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); + PSVECScale(var_r27++, var_r28, var_r29->unk_28); + PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); + } + else { + PSVECScale(lbl_1_data_19C, &sp98[0], var_r29->unk_28); + PSVECScale(&lbl_1_data_19C[1], &sp98[1], var_r29->unk_28); + PSVECScale(&lbl_1_data_19C[2], &sp98[2], var_r29->unk_28); + PSVECScale(&lbl_1_data_19C[3], &sp98[3], var_r29->unk_28); + PSMTXRotRad(spC8, 0x5A, var_r29->unk_2C); + PSMTXConcat(sp128, spC8, spF8); + PSMTXMultVecArray(spF8, &sp98[0], &sp68[0], 4); + PSVECAdd(&sp68[0], &var_r29->unk_30, var_r30++); + PSVECAdd(&sp68[1], &var_r29->unk_30, var_r30++); + PSVECAdd(&sp68[2], &var_r29->unk_30, var_r30++); + PSVECAdd(&sp68[3], &var_r29->unk_30, var_r30++); + } + var_r20 = var_r29->unk_40 & 3; + var_r19 = (var_r29->unk_40 >> 2) & 3; + for (var_r25 = 0; var_r25 < 4; var_r25++, var_r26++) { + var_r26->x = (0.25f * var_r20) + lbl_1_data_1CC[var_r25].x; + var_r26->y = (0.25f * var_r19) + lbl_1_data_1CC[var_r25].y; + } + } + } + DCFlushRangeNoSync(var_r31->unk_40, var_r31->unk_24 * 0xC * 4); + DCFlushRangeNoSync(var_r31->unk_44, var_r31->unk_24 * 8 * 4); + PPCSync(); + GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); + if (shadowModelDrawF == 0) { + if ((var_r31->unk_21 & 2) == 0) { + var_r31->unk_28++; + } + if ((var_r31->unk_30 != 0) && (var_r31->unk_30 <= var_r31->unk_28)) { + if ((var_r31->unk_21 & 1) != 0) { + var_r31->unk_28 = 0; + } + var_r31->unk_28 = var_r31->unk_30; + } + var_r31->unk_2C = GlobalCounter; + } + } +} From 496c8544e585c992bfc9c1c21750c1dea8a653ff Mon Sep 17 00:00:00 2001 From: mrshigure Date: Wed, 8 Jan 2025 15:19:36 -0800 Subject: [PATCH 03/24] Matched mstoryDll (US) (#512) --- config/GMPE01_00/rels/mstoryDll/splits.txt | 4 +- config/GMPE01_00/rels/mstoryDll/symbols.txt | 530 +++++----- configure.py | 12 +- include/REL/mstoryDll.h | 96 ++ include/game/gamework_data.h | 5 + src/REL/mstoryDll/board_clear.c | 622 ++++++++++++ src/REL/mstoryDll/board_miss.c | 817 +++++++++++++++ src/REL/mstoryDll/main.c | 1012 +++++++++++++++++++ src/REL/mstoryDll/mg_clear.c | 691 +++++++++++++ src/REL/mstoryDll/mg_miss.c | 446 ++++++++ src/REL/mstoryDll/save.c | 116 +++ 11 files changed, 4078 insertions(+), 273 deletions(-) create mode 100755 include/REL/mstoryDll.h create mode 100755 src/REL/mstoryDll/board_clear.c create mode 100755 src/REL/mstoryDll/board_miss.c create mode 100755 src/REL/mstoryDll/main.c create mode 100755 src/REL/mstoryDll/mg_clear.c create mode 100755 src/REL/mstoryDll/mg_miss.c create mode 100755 src/REL/mstoryDll/save.c diff --git a/config/GMPE01_00/rels/mstoryDll/splits.txt b/config/GMPE01_00/rels/mstoryDll/splits.txt index 1c6cb09d..14c897fa 100644 --- a/config/GMPE01_00/rels/mstoryDll/splits.txt +++ b/config/GMPE01_00/rels/mstoryDll/splits.txt @@ -10,13 +10,13 @@ REL/mstoryDll/main.c: .text start:0x00000000 end:0x00007090 .rodata start:0x00000000 end:0x00000108 .data start:0x00000000 end:0x00000190 - .bss start:0x00000000 end:0x00000058 + .bss start:0x00000000 end:0x000000A8 REL/mstoryDll/board_clear.c: .text start:0x00007090 end:0x0000A830 .rodata start:0x00000108 end:0x00000268 .data start:0x00000190 end:0x00000388 - .bss start:0x00000058 end:0x000002C8 + .bss start:0x000000A8 end:0x000002C8 REL/mstoryDll/board_miss.c: .text start:0x0000A830 end:0x0000E710 diff --git a/config/GMPE01_00/rels/mstoryDll/symbols.txt b/config/GMPE01_00/rels/mstoryDll/symbols.txt index 9bc5210b..92563350 100644 --- a/config/GMPE01_00/rels/mstoryDll/symbols.txt +++ b/config/GMPE01_00/rels/mstoryDll/symbols.txt @@ -4,7 +4,7 @@ fn_1_A4 = .text:0x000000A4; // type:function size:0x344 _prolog = .text:0x000003E8; // type:function size:0x54 scope:global _epilog = .text:0x0000043C; // type:function size:0x4C scope:global fn_1_488 = .text:0x00000488; // type:function size:0x1D0 -fn_1_658 = .text:0x00000658; // type:function size:0x1D0 +ObjectSetup = .text:0x00000658; // type:function size:0x1D0 fn_1_828 = .text:0x00000828; // type:function size:0x28 fn_1_850 = .text:0x00000850; // type:function size:0x20 fn_1_870 = .text:0x00000870; // type:function size:0xD8 @@ -189,281 +189,281 @@ fn_1_13E2C = .text:0x00013E2C; // type:function size:0x324 fn_1_14150 = .text:0x00014150; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC data:4byte -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC data:4byte -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC data:4byte -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 data:byte -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC data:2byte -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 data:4byte -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC data:4byte -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 data:4byte -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 data:4byte -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC data:4byte -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C data:4byte -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:byte -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 data:4byte -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 data:4byte -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC data:4byte -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC data:4byte -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC data:4byte -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC data:4byte -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 data:byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 data:4byte -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 data:4byte -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 data:4byte -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 data:byte -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 data:4byte -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 data:4byte -lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C data:4byte -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:float -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xA scope:local data:2byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 scope:local +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 scope:local +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 scope:local +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 -lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 data:string -lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 data:string -lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A data:string -lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 data:string +lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 scope:local data:string +lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 scope:local data:string +lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A scope:local data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 scope:local data:string lbl_1_data_100 = .data:0x00000100; // type:object size:0x10 -lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 data:string -lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 data:string -lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 data:string -lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A data:string -lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A data:string -lbl_1_data_17F = .data:0x0000017F; // type:object size:0xE data:string +lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 scope:local data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 scope:local data:string +lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 scope:local data:string +lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A scope:local data:string +lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A scope:local data:string +lbl_1_data_17F = .data:0x0000017F; // type:object size:0xE scope:local data:string lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C -lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 data:string -lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 data:string -lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 data:string -lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 data:string -lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 data:string -lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 data:string -lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 data:string -lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 data:string -lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF data:string -lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C data:string -lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D data:string -lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 data:string -lbl_1_data_329 = .data:0x00000329; // type:object size:0xF data:string -lbl_1_data_338 = .data:0x00000338; // type:object size:0x1A data:string -lbl_1_data_354 = .data:0x00000354; // type:object size:0x30 +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 scope:local data:string +lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 scope:local data:string +lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C scope:local data:string +lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D scope:local data:string +lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0xF scope:local data:string +lbl_1_data_338 = .data:0x00000338; // type:object size:0x1A scope:local data:string +lbl_1_data_354 = .data:0x00000354; // type:object size:0x30 data:float lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C -lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 data:string -lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 data:string -lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 data:string -lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 data:string -lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 data:string -lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 data:string -lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 data:string -lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 data:string -lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA data:string -lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C data:string -lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D data:string -lbl_1_data_505 = .data:0x00000505; // type:object size:0xF data:string -lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B data:string -lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 data:string -lbl_1_data_537 = .data:0x00000537; // type:object size:0x8 data:string -lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 +lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 scope:local data:string +lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 scope:local data:string +lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 scope:local data:string +lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 scope:local data:string +lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 scope:local data:string +lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 scope:local data:string +lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 scope:local data:string +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA scope:local data:string +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C scope:local data:string +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D scope:local data:string +lbl_1_data_505 = .data:0x00000505; // type:object size:0xF scope:local data:string +lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B scope:local data:string +lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 scope:local data:string +lbl_1_data_537 = .data:0x00000537; // type:object size:0x8 scope:local data:string +lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 data:float lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 -lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 data:string -lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 data:string -lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 data:string -lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 data:string -lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 data:string -lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 data:string -lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 data:string -lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 data:string -lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF data:string -lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C data:string -lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D data:string -lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C data:string -lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 data:string -lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF data:string -lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 data:string -lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA data:string -lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 data:string -lbl_1_data_AED = .data:0x00000AED; // type:object size:0x7 data:string +lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 scope:local data:string +lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 scope:local data:string +lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 scope:local data:string +lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 scope:local data:string +lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 scope:local data:string +lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 scope:local data:string +lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 scope:local data:string +lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 scope:local data:string +lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF scope:local data:string +lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C scope:local data:string +lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D scope:local data:string +lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C scope:local data:string +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 scope:local data:string +lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF scope:local data:string +lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 scope:local data:string +lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA scope:local data:string +lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 scope:local data:string +lbl_1_data_AED = .data:0x00000AED; // type:object size:0x7 scope:local data:string lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C -lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 data:string -lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 data:string -lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 data:string -lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 data:string -lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 data:string -lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 data:string -lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 data:string -lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 data:string -lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF data:string -lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C data:string -lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D data:string -lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF data:string -lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x1A data:string -lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 data:string +lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 scope:local data:string +lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 scope:local data:string +lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 scope:local data:string +lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 scope:local data:string +lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 scope:local data:string +lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 scope:local data:string +lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 scope:local data:string +lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 scope:local data:string +lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF scope:local data:string +lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C scope:local data:string +lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D scope:local data:string +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF scope:local data:string +lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x1A scope:local data:string +lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0xC data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index afd42860..a4d446ec 100644 --- a/configure.py +++ b/configure.py @@ -1398,12 +1398,12 @@ config.libs = [ Rel( "mstoryDll", objects={ - Object(NonMatching, "REL/mstoryDll/main.c"), - Object(NonMatching, "REL/mstoryDll/board_clear.c"), - Object(NonMatching, "REL/mstoryDll/board_miss.c"), - Object(NonMatching, "REL/mstoryDll/mg_clear.c"), - Object(NonMatching, "REL/mstoryDll/mg_miss.c"), - Object(NonMatching, "REL/mstoryDll/save.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/main.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/board_clear.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/board_miss.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/mg_clear.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/mg_miss.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/save.c"), }, ), Rel( diff --git a/include/REL/mstoryDll.h b/include/REL/mstoryDll.h new file mode 100755 index 00000000..b948d6ff --- /dev/null +++ b/include/REL/mstoryDll.h @@ -0,0 +1,96 @@ +#ifndef MSTORYDLL_H +#define MSTORYDLL_H + +#include "game/object.h" +#include "game/process.h" + +#include "dolphin/types.h" + +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ void (*unk04)(void); + /* 0x08 */ Vec unk08; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ Vec unk20; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ s32 unk40; +} StructBss4; // Size 0x44 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ char unk1C[0x18]; +} StructFn352C; // Size 0x34 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ void (*unk04)(omObjData*, ...); + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ char unk10[0x18]; +} StructBss19C; // Size 0x28 + +// main.c +float fn_1_828(float arg0, float arg1, float arg2, float arg3); +float fn_1_870(float arg0, float arg1, float arg2, float arg3); +float fn_1_948(float arg0, float arg1, float arg2, float arg3); +float fn_1_ACC(float arg0, float arg1, float arg2, float arg3); +void fn_1_B8C(void); +void fn_1_BAC(s32 arg0); +void fn_1_BF4(void); +s32 fn_1_1834(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_1A64(s32 arg0); +void fn_1_1ACC(s32 arg0, s32 arg1); +BOOL fn_1_1B78(s32 arg0, s32 arg1); +BOOL fn_1_1C34(s32 arg0); +void fn_1_1CE8(s32 arg0, s32 arg1); +void fn_1_1D1C(s32 arg0, s32 arg1, s32 arg2); +void fn_1_1DCC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_2224(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_2710(void (*arg0)(void)); +void fn_1_27E8(Process* arg0, void (*arg1)(void)); +void fn_1_2908(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); +void fn_1_2CB0(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); +void fn_1_352C(StructFn352C* arg0, s32 arg1); +s32 fn_1_3618(s32 arg0); +void fn_1_3704(void); +void fn_1_3804(StructBss4* arg0); +void fn_1_3ABC(StructBss4* arg0, float arg1); +void fn_1_51D0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4); +void fn_1_61E8(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4); +void fn_1_6C1C(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +s32 fn_1_6EB8(s32 arg0, s32 arg1); +void fn_1_7028(s32 arg0); + +// board_clear.c +void fn_1_79B8(Process* arg0, s32 arg1, s32 arg2); + +// board_miss.c +void fn_1_ACFC(Process* arg0, s32 arg1, s32 arg2); + +// mg_clear.c +void fn_1_E710(Process* arg0, s32 arg1, s32 arg2); + +// mg_miss.c +void fn_1_11624(Process* arg0, s32 arg1, s32 arg2); + +// save.c +void fn_1_14150(Process* arg0); + +extern s32 lbl_1_bss_68; +extern s32 lbl_1_bss_58[]; +extern StructBss4 lbl_1_bss_4; +extern s32 lbl_1_data_0[][4]; + +#endif diff --git a/include/game/gamework_data.h b/include/game/gamework_data.h index 08b3e075..330e0f86 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -314,6 +314,11 @@ static inline s32 GWPlayerCurrGet(void) return GWSystem.player_curr; } +static inline s32 GWUnkB1Get(void) +{ + return GWSystem.unk0B[1]; +} + static inline s32 GWPlayerTeamGet(s32 player) { return GWPlayer[player].team; diff --git a/src/REL/mstoryDll/board_clear.c b/src/REL/mstoryDll/board_clear.c new file mode 100755 index 00000000..e5e5612b --- /dev/null +++ b/src/REL/mstoryDll/board_clear.c @@ -0,0 +1,622 @@ +#include "REL/mstoryDll.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/printfunc.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ char unk0C[4]; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ char unk18[0x1C]; + /* 0x34 */ StructFn352C unk34[4]; +} StructBss1C4; // Size 0x104 + +void fn_1_8A44(void); +void fn_1_8DC0(omObjData* arg0, StructBss19C* arg1); +void fn_1_8E6C(omObjData* arg0, StructBss19C* arg1); +void fn_1_8F68(void); +void fn_1_92D4(s32 arg0); +void fn_1_9718(omObjData* arg0, StructBss19C* arg1); +void fn_1_98A4(omObjData* arg0, StructBss19C* arg1); +void fn_1_992C(void); +void fn_1_A008(omObjData* arg0, StructBss19C* arg1); +void fn_1_A0EC(void); +void fn_1_A478(void); +void fn_1_A504(void); +void fn_1_A5F4(void); + +StructBss1C4 lbl_1_bss_1C4; +StructBss19C lbl_1_bss_19C; +StructBss19C lbl_1_bss_174; +StructBss19C lbl_1_bss_D4[4]; +StructBss19C lbl_1_bss_AC; +Process* lbl_1_bss_A8; + +s32 lbl_1_data_190[][4] = { + { MAKE_MESSID(30, 17), MAKE_MESSID(30, 23), MAKE_MESSID(30, 62), MAKE_MESSID(30, 63) }, + { MAKE_MESSID(30, 18), MAKE_MESSID(30, 24), MAKE_MESSID(30, 64), MAKE_MESSID(30, 65) }, + { MAKE_MESSID(30, 19), MAKE_MESSID(30, 25), MAKE_MESSID(30, 66), MAKE_MESSID(30, 67) }, + { MAKE_MESSID(30, 20), MAKE_MESSID(30, 26), MAKE_MESSID(30, 68), MAKE_MESSID(30, 69) }, + { MAKE_MESSID(30, 21), MAKE_MESSID(30, 27), MAKE_MESSID(30, 70), MAKE_MESSID(30, 71) } +}; + +s32 lbl_1_data_1E0[][3] = { + { MAKE_MESSID(30, 101), MAKE_MESSID(30, 102), MAKE_MESSID(30, 103) }, + { MAKE_MESSID(30, 104), MAKE_MESSID(30, 105), MAKE_MESSID(30, 106) }, + { MAKE_MESSID(30, 107), MAKE_MESSID(30, 108), MAKE_MESSID(30, 109) }, + { MAKE_MESSID(30, 110), MAKE_MESSID(30, 111), MAKE_MESSID(30, 112) }, + { MAKE_MESSID(30, 113), MAKE_MESSID(30, 114), MAKE_MESSID(30, 115) } +}; + +void fn_1_7090(s32 arg0, StructBss19C* arg1) { + fn_1_BAC(10); + fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 5, 15, 0); + fn_1_BAC(5); + HuAudCharVoicePlay(lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10, 0x128); + fn_1_BAC(25); + arg1->unk04 = 0; +} + +void fn_1_7134(s32 arg0, StructBss19C* arg1) { + float temp_f31; + float temp_f30; + float temp_f29; + s32 i; + + temp_f29 = Hu3DData[lbl_1_bss_174.unk00->model[7]].pos.y; + for (i = 0; i <= 30; i++) { + fn_1_B8C(); + temp_f31 = fn_1_870(temp_f29, 1000.0f, i, 30.0f); + temp_f30 = fn_1_870(0.0f, 1800.0f, i, 30.0f); + Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f31, 800.0f); + Hu3DModelRotSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f30, 0.0f); + Hu3DModelPosSet(lbl_1_bss_174.unk00->model[8], 0.0f, temp_f31 + 15.0f, 775.0f); + } + arg1->unk04 = 0; +} + +void fn_1_731C(s32 arg0) { + float temp_f31; + float temp_f30; + s32 var_r30; + s32 i; + + var_r30 = arg0; + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[6], HU3D_ATTR_DISPOFF); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1C4.unk34[i].unk00 != lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk00) { + Hu3DModelAttrSet(lbl_1_bss_D4[i].unk00->model[1], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrSet(lbl_1_bss_D4[i].unk00->model[2], HU3D_ATTR_DISPOFF); + } + lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[var_r30][0]); + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4)); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_1C4.unk08); + Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, 1000.0f, 640.0f); + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[8], HU3D_ATTR_DISPOFF); + for (i = 0; i <= 180; i++) { + fn_1_B8C(); + temp_f31 = fn_1_948(1000.0f, 150.0f, i, 180.0f); + temp_f30 = fn_1_948(1800.0f, 0.0f, i, 180.0f); + Hu3DModelPosSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f31, 800.0f); + Hu3DModelRotSet(lbl_1_bss_174.unk00->model[7], 0.0f, temp_f30, 0.0f); + Hu3DModelPosSet(lbl_1_bss_174.unk00->model[8], 0.0f, temp_f31 + 15.0f, 775.0f); + } + lbl_1_bss_174.unk04 = (void*) fn_1_8E6C; + fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 6, 15, 0); + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_98A4; + fn_1_BAC(40); + HuAudSeqFadeOut(lbl_1_bss_58[0], 1000); + fn_1_BAC(50); + lbl_1_bss_58[1] = HuAudSeqPlay(0x35); + lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[var_r30][1]); + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4)); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_1C4.unk08); + fn_1_BAC(30); + fn_1_1DCC(lbl_1_bss_174.unk00, 2, 3, 0, 0); + lbl_1_bss_174.unk04 = (void*) fn_1_8DC0; + fn_1_BAC(30); + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_7090; + fn_1_BAC(90); + lbl_1_bss_AC.unk04 = (void*) fn_1_7134; + lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 5, 15, 1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_1E0[lbl_1_bss_1C4.unk00][2]); + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4)); + fn_1_1A64(lbl_1_bss_1C4.unk08); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1C4.unk00][3]); +} + +void fn_1_79B8(Process* arg0, s32 arg1, s32 arg2) { + s32 i; + + lbl_1_bss_A8 = arg0; + lbl_1_bss_1C4.unk00 = arg1; + lbl_1_bss_1C4.unk10 = arg2; + fn_1_BF4(); + fn_1_3618(0xFF); + fn_1_27E8(lbl_1_bss_A8, fn_1_A478); + fn_1_3704(); + fn_1_92D4(arg2); + HuPrcChildCreate(fn_1_8F68, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_A0EC, 100, 0x2000, 0, HuPrcCurrentGet()); + for (i = 0; i < 4; i++) { + HuPrcChildCreate(fn_1_992C, 100, 0x2000, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_8A44, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_7AE0(void) { + s32 var_r30 = 16; + s32 var_r29 = 40; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 i; + + while (TRUE) { + fn_1_B8C(); + fontcolor = FONT_COLOR_WHITE; + printWin(var_r30, var_r29, 220, 150, &sp10); + if (lbl_1_bss_19C.unk04 == NULL) { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_174.unk04 == NULL) { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_D4[i].unk04 == NULL) { + print8(var_r30, i * 10 + (var_r29 + 20), 1.0f, "PROC_PLAYER%d -> FALSE", i); + } else { + print8(var_r30, i * 10 + (var_r29 + 20), 1.0f, "PROC_PLAYER%d -> TRUE", i); + } + } + if (lbl_1_bss_AC.unk04 == NULL) { + print8(var_r30, var_r29 + 60, 1.0f, "PROC_SUB -> FALSE"); + } else { + print8(var_r30, var_r29 + 60, 1.0f, "PROC_SUB -> TRUE"); + } + print8(var_r30, var_r29 + 80, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_1C4.unk00, lbl_1_bss_1C4.unk04, lbl_1_bss_1C4.unk10); + print8(var_r30, var_r29 + 100, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(var_r30, var_r29 + 110 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, + lbl_1_bss_1C4.unk34[i].unk00, lbl_1_bss_1C4.unk34[i].unk04, lbl_1_bss_1C4.unk34[i].unk08, + lbl_1_bss_1C4.unk34[i].unk0C, lbl_1_bss_1C4.unk34[i].unk14, lbl_1_bss_1C4.unk34[i].unk10); + } + } +} + +void fn_1_7E70(void) { + lbl_1_bss_58[0] = HuAudSeqPlay(0x33); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); +} + +void fn_1_7ECC(void) { + s32 spC = 0; + s32 sp8 = 0; + + lbl_1_bss_1C4.unk08 = fn_1_1834(0, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1); + fn_1_1D1C(lbl_1_bss_1C4.unk08, lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10, 0); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][0]); + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4)); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_1C4.unk08); + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_9718; + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_A504); + do { + fn_1_B8C(); + } while (lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 != NULL); + do { + fn_1_B8C(); + } while (lbl_1_bss_AC.unk04 != NULL); +} + +void fn_1_8090(void) { + lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 3, 15, 1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][2]); + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_1C4.unk08); + fn_1_1DCC(lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk00, 1, 6, 15, 0); + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_98A4; + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_174.unk00->model[6], HU3D_ATTR_DISPOFF); + fn_1_BAC(180); + HuAudSeqFadeOut(lbl_1_bss_58[0], 1000); + fn_1_1DCC(lbl_1_bss_174.unk00, 2, 3, 0, 0); + fn_1_BAC(75); + lbl_1_bss_58[1] = HuAudSeqPlay(0x35); + lbl_1_bss_1C4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_1C4.unk10); + fn_1_1DCC(lbl_1_bss_AC.unk00, 1, 4, 15, 1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, lbl_1_data_190[lbl_1_bss_1C4.unk00][3]); + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = NULL; + lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 = (void*) fn_1_7090; + fn_1_1ACC(lbl_1_bss_1C4.unk08, -1); + fn_1_1CE8(lbl_1_bss_1C4.unk08, MAKE_MESSID(37, 4)); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1C4.unk00][3]); + fn_1_1A64(lbl_1_bss_1C4.unk08); + do { + fn_1_B8C(); + } while (lbl_1_bss_D4[lbl_1_bss_1C4.unk04].unk04 != NULL); +} + +void fn_1_83B0(void) { + fn_1_BAC(60); + HuAudSeqFadeOut(lbl_1_bss_58[1], 3000); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_A5F4); + fn_1_BAC(150); +} + +void fn_1_8408(void) { + omOvlHisData* var_r30; + u16 sp8[] = { 53, 56, 55, 54, 57 }; + s32 sp14[] = { 9, 14, 10, 11, 12 }; + s32 var_r29; + s32 var_r28; + s32 i; + + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + CharModelKill(-1); + MGSeqKillAll(); + var_r29 = lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk10; + var_r28 = lbl_1_bss_1C4.unk34[lbl_1_bss_1C4.unk04].unk14; + GWPlayerCfg[lbl_1_bss_1C4.unk04].character = GWPlayerCfg->character; + GWPlayerCfg[lbl_1_bss_1C4.unk04].pad_idx = GWPlayerCfg->pad_idx; + GWPlayerCfg[lbl_1_bss_1C4.unk04].group = GWPlayerCfg->group; + GWPlayerCfg[lbl_1_bss_1C4.unk04].iscom = GWPlayerCfg->iscom; + GWPlayerCfg->character = var_r29; + GWPlayerCfg->pad_idx = var_r28; + GWPlayerCfg->group = 0; + GWPlayerCfg->iscom = 0; + for (i = 0; i < 4; i++) { + GWPlayer[i].character = GWPlayerCfg[i].character; + GWPlayer[i].port = GWPlayerCfg[i].pad_idx; + GWPlayer[i].com = GWPlayerCfg[i].iscom; + GWPlayer[i].team = GWPlayerCfg[i].group; + } + GWPlayerCfg[1].character = sp14[GWSystem.board]; + for (i = 1; i < 4; i++) { + GWPlayerCfg[i].iscom = GWPlayerCfg[i].group = 1; + } + var_r30 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY, 2, var_r30->stat); + OSReport("########## dllno - %d\n", sp8[GWSystem.board], GWSystem.board); + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + omOvlCallEx(sp8[GWSystem.board], 1, 0, 0); + while (TRUE) { + fn_1_B8C(); + } +} + +void fn_1_87DC(s32 arg0, StructBss19C* arg1) { + fn_1_7E70(); + fn_1_7ECC(); + fn_1_731C(lbl_1_bss_1C4.unk00); + fn_1_83B0(); + fn_1_8408(); + arg1->unk04 = NULL; +} + +void fn_1_8A44(void) { + omObjData* var_r31; + + var_r31 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_19C.unk00 = var_r31; + lbl_1_bss_19C.unk04 = (void*) fn_1_87DC; + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_19C.unk04 != NULL) { + lbl_1_bss_19C.unk04(var_r31, &lbl_1_bss_19C); + } + } +} + +void fn_1_8AE0(omObjData* arg0) { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base"); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61)); + fn_1_1DCC(arg0, 2, 2, 0, 2); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57)); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 76 + lbl_1_bss_1C4.unk00)); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]); + Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f); + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(arg0->model[5]); + fn_1_1DCC(arg0, 5, 5, 0, 2); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 75)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]); + Hu3DModelHookSet(arg0->model[5], "stargbox_fix-effect_fook1", arg0->model[6]); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + fn_1_1DCC(arg0, 6, 6, 0, 2); + arg0->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 81)); + Hu3DModelAttrSet(arg0->model[7], HU3D_ATTR_DISPOFF); + arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 96)); + arg0->motion[8] = Hu3DMotionIDGet(arg0->model[8]); + Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF); + fn_1_1DCC(arg0, 8, 8, 0, 1); +} + +void fn_1_8DC0(omObjData* arg0, StructBss19C* arg1) { + Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg0->work[0]++, 360.0f); + if (arg0->work[0] >= 360) { + arg0->work[0] = 0; + } +} + +void fn_1_8E6C(omObjData* arg0, StructBss19C* arg1) { + Hu3DData[arg0->model[7]].pos.y += fn_1_ACC(0.0f, 0.25f, arg0->work[0]++, 360.0f); + Hu3DData[arg0->model[8]].pos.y = Hu3DData[arg0->model[7]].pos.y + 15.0f; + if (arg0->work[0] >= 360) { + arg0->work[0] = 0; + } +} + +void fn_1_8F68(void) { + omObjData* temp_r31; + + temp_r31 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_174.unk00 = temp_r31; + lbl_1_bss_174.unk04 = (void*) fn_1_8DC0; + lbl_1_bss_174.unk00->data = &lbl_1_bss_174; + fn_1_8AE0(temp_r31); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_174.unk04 != NULL) { + lbl_1_bss_174.unk04(temp_r31, &lbl_1_bss_174); + } + } +} + +void fn_1_92D4(s32 arg0) { + s32 spC[4]; + s32 i; + + spC[0] = 0; + for (i = 1; i < 4; i++) { + spC[i] = spC[i - 1] + 1; + if (spC[i] >= 4) { + spC[i] = 0; + } + if (arg0 == spC[i]) { + lbl_1_bss_1C4.unk04 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_352C(&lbl_1_bss_1C4.unk34[i], spC[i]); + } + for (i = 0; i < 4; i++) { + lbl_1_bss_1C4.unk34[i].unk18 = GWPlayer[spC[i]].rank + 1; + } +} + +Vec lbl_1_data_354[] = { + { -300.0f, 0.0f, 460.0f }, + { -100.0f, -30.0f, 460.0f }, + { 100.0f, -60.0f, 460.0f }, + { 300.0f, -90.0f, 460.0f } +}; + +void fn_1_9408(omObjData* arg0, s32 arg1) { + s32 var_r30; + s32 temp_r29; + + var_r30 = arg1; + temp_r29 = lbl_1_bss_1C4.unk34[var_r30].unk10; + arg0->model[1] = CharModelCreate(temp_r29, 4); + arg0->motion[1] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[2] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3)); + arg0->motion[3] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 5)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 48 + temp_r29)); + arg0->motion[5] = CharModelMotionCreate(temp_r29, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 40 + temp_r29)); + CharModelMotionDataClose(temp_r29); + Hu3DModelPosSet(arg0->model[1], lbl_1_data_354[var_r30].x, lbl_1_data_354[lbl_1_bss_1C4.unk34[var_r30].unk18 - 1].y + 90.0f, lbl_1_data_354[var_r30].z - 15.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 62)); + Hu3DModelPosSet(arg0->model[2], lbl_1_data_354[var_r30].x, lbl_1_data_354[lbl_1_bss_1C4.unk34[var_r30].unk18 - 1].y, lbl_1_data_354[var_r30].z); + if (lbl_1_bss_1C4.unk34[var_r30].unk18 == 4) { + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + } + Hu3DModelShadowMapSet(arg0->model[2]); + Hu3DModelScaleSet(arg0->model[2], 1.5f, 1.0f, 1.5f); +} + +void fn_1_9718(omObjData* arg0, StructBss19C* arg1) { + Vec sp20 = { 120.0f, 0.0f, 670.0f }; + + fn_1_2908(arg0, 1, sp20, -1.0f, 30.0f, 10.0f); + lbl_1_bss_AC.unk04 = (void*) fn_1_A008; + fn_1_1DCC(lbl_1_bss_174.unk00, 2, 2, 0, 0); + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp20, -45.0f, 30.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + fn_1_2224(lbl_1_bss_174.unk00, 2, 2, 0); + arg1->unk04 = 0; +} + +void fn_1_98A4(omObjData* arg0, StructBss19C* arg1) { + if (arg0->motion[6] == Hu3DMotionIDGet(arg0->model[1]) && Hu3DMotionEndCheck(arg0->model[1])) { + fn_1_1DCC(arg0, 1, 4, 15, 1); + arg1->unk04 = 0; + } +} + +void fn_1_992C(void) { + omObjData* temp_r3; + s32 temp_r30; + + temp_r30 = lbl_1_bss_1C4.unk14++; + temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_D4[temp_r30].unk00 = temp_r3; + lbl_1_bss_D4[temp_r30].unk04 = NULL; + lbl_1_bss_D4[temp_r30].unk00->data = &lbl_1_bss_D4[temp_r30]; + fn_1_9408(temp_r3, temp_r30); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_D4[temp_r30].unk04 != NULL) { + lbl_1_bss_D4[temp_r30].unk04(temp_r3, &lbl_1_bss_D4[temp_r30]); + } + } +} + +void fn_1_9D08(omObjData* arg0, s32 arg1) { + s32 sp1C[] = { + DATA_MAKE_NUM(DATADIR_MSTORY, 97), + DATA_MAKE_NUM(DATADIR_MSTORY, 108), + DATA_MAKE_NUM(DATADIR_MSTORY, 116), + DATA_MAKE_NUM(DATADIR_MSTORY, 124), + DATA_MAKE_NUM(DATADIR_MSTORY, 131) + }; + s32 sp30[][5] = { + { DATA_MAKE_NUM(DATADIR_MSTORY, 98), DATA_MAKE_NUM(DATADIR_MSTORY, 100), DATA_MAKE_NUM(DATADIR_MSTORY, 101), DATA_MAKE_NUM(DATADIR_MSTORY, 103), DATA_MAKE_NUM(DATADIR_MSTORY, 104) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 109), DATA_MAKE_NUM(DATADIR_MSTORY, 111), DATA_MAKE_NUM(DATADIR_MSTORY, 112), DATA_MAKE_NUM(DATADIR_MSTORY, 114), DATA_MAKE_NUM(DATADIR_MSTORY, 115) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 117), DATA_MAKE_NUM(DATADIR_MSTORY, 119), DATA_MAKE_NUM(DATADIR_MSTORY, 120), DATA_MAKE_NUM(DATADIR_MSTORY, 122), DATA_MAKE_NUM(DATADIR_MSTORY, 123) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 125), DATA_MAKE_NUM(DATADIR_MSTORY, 126), DATA_MAKE_NUM(DATADIR_MSTORY, 127), DATA_MAKE_NUM(DATADIR_MSTORY, 129), DATA_MAKE_NUM(DATADIR_MSTORY, 130) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 132), DATA_MAKE_NUM(DATADIR_MSTORY, 134), DATA_MAKE_NUM(DATADIR_MSTORY, 135), DATA_MAKE_NUM(DATADIR_MSTORY, 137), DATA_MAKE_NUM(DATADIR_MSTORY, 138) } + }; + + arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]); + Hu3DModelPosSet(arg0->model[1], -300.0f, 0.0f, 890.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + if (arg1 == 3) { + Hu3DData[arg0->model[1]].pos.y = 50.0f; + } + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 5, 0, 1); + { + s32 sp8[] = { 9, 14, 10, 11, 12 }; + + if (arg1 != 3) { + CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]); + } + } +} + +void fn_1_A008(omObjData* arg0, StructBss19C* arg1) { + Vec sp14 = { -120.0f, 0.0f, 670.0f }; + + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp14, 45.0f, 60.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_A0EC(void) { + omObjData* temp_r3; + s32 temp_r30; + + temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_AC.unk00 = temp_r3; + lbl_1_bss_AC.unk04 = NULL; + lbl_1_bss_AC.unk00->data = &lbl_1_bss_AC; + temp_r30 = lbl_1_bss_1C4.unk00; + fn_1_9D08(temp_r3, temp_r30); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_AC.unk04 != NULL) { + lbl_1_bss_AC.unk04(temp_r3, &lbl_1_bss_AC); + } + } +} + +void fn_1_A478(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 170.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = -5.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 1700.0f; +} + +void fn_1_A504(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 125.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1750.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f); +} + +void fn_1_A5F4(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + if (var_r31->unk40 == 50) { + fn_1_1DCC(lbl_1_bss_174.unk00, 5, 5, 0, 0); + fn_1_1DCC(lbl_1_bss_174.unk00, 6, 6, 0, 0); + HuAudFXPlay(0xA1); + } + sp8.unk08.x = 0.0f; + sp8.unk08.y = 130.0f; + sp8.unk08.z = 460.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 150.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f); + if (var_r31->unk40++ >= 90) { + if (var_r31->unk40 == 91) { + lbl_1_bss_68 = HuAudFXPlay(0x21); + } + var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f); + Hu3DData[lbl_1_bss_174.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f); + } +} diff --git a/src/REL/mstoryDll/board_miss.c b/src/REL/mstoryDll/board_miss.c new file mode 100755 index 00000000..04c63c30 --- /dev/null +++ b/src/REL/mstoryDll/board_miss.c @@ -0,0 +1,817 @@ +#include "REL/mstoryDll.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x1C]; + /* 0x034 */ StructFn352C unk34[4]; + /* 0x104 */ float unk104; +} StructBss450; // Size 0x108 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ char unk0C[4]; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; +} StructBss2D0; // Size 0x18 + +void fn_1_C360(void); +void fn_1_C7C4(void); +void fn_1_CE48(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_CEF4(omObjData* arg0, StructBss19C* arg1); +void fn_1_D180(void); +void fn_1_D57C(s32 arg0); +void fn_1_DAA4(omObjData* arg0, StructBss19C* arg1); +void fn_1_DC08(omObjData* arg0, StructBss19C* arg1); +void fn_1_DD20(omObjData* arg0, StructBss19C* arg1); +void fn_1_DE04(void); +void fn_1_E228(void); +void fn_1_E2B4(void); +void fn_1_E3E4(void); +void fn_1_E620(void); + +StructBss450 lbl_1_bss_450; +StructBss19C lbl_1_bss_428; +StructBss19C lbl_1_bss_400; +StructBss19C lbl_1_bss_3D8; +StructBss19C lbl_1_bss_338[4]; +AnimData* lbl_1_bss_330[2]; +StructBss2D0 lbl_1_bss_2D0[4]; +s32 lbl_1_bss_2CC; +Process* lbl_1_bss_2C8; + +s32 lbl_1_data_388[][4] = { + { MAKE_MESSID(30, 28), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 29), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 30), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 31), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 32), MAKE_MESSID(30, 33), MAKE_MESSID(30, 34), MAKE_MESSID(30, 5) } +}; + +s32 lbl_1_data_3D8[] = { + DATADIR_W01, + DATADIR_W02, + DATADIR_W03, + DATADIR_W04, + DATADIR_W05, + DATADIR_W06, + DATADIR_W10, + DATADIR_MARIOMDL1, + DATADIR_LUIGIMDL1, + DATADIR_PEACHMDL1, + DATADIR_YOSHIMDL1, + DATADIR_WARIOMDL1, + DATADIR_DONKEYMDL1, + DATADIR_DAISYMDL1, + DATADIR_WALUIGIMDL1 +}; + +void fn_1_A830(void) { + s32 temp_r3; + + temp_r3 = HuDataDirReadAsync(DATADIR_BOARD); + if (temp_r3 != -1) { + while (HuDataGetAsyncStat(temp_r3) == 0) { + HuPrcVSleep(); + } + } + HuAR_MRAMtoARAM(DATADIR_BOARD); + while (HuARDMACheck()) { + HuPrcVSleep(); + } + HuDataDirClose(DATADIR_BOARD); + temp_r3 = HuDataDirReadAsync(lbl_1_data_3D8[GWSystem.board]); + if (temp_r3 != -1) { + while (HuDataGetAsyncStat(temp_r3) == 0) { + HuPrcVSleep(); + } + } + lbl_1_bss_2CC = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_A8F8(void) { + s32 i; + s32 j; + + lbl_1_bss_2D0[0].unk00 = 0; + lbl_1_bss_2D0[0].unk04 = 0; + lbl_1_bss_2D0[0].unk10 = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk10; + lbl_1_bss_2D0[0].unk14 = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk14; + lbl_1_bss_2D0[0].unk08 = 0; + for (i = 1; i < 4; i++) { + lbl_1_bss_2D0[i].unk10 = -1; + lbl_1_bss_2D0[i].unk14 = i; + lbl_1_bss_2D0[i].unk08 = 1; + } + for (i = 1; i < 4; i++) { + do { + lbl_1_bss_2D0[i].unk10 = rand8() % 8; + for (j = 0; j < 4; j++) { + if (i != j && lbl_1_bss_2D0[j].unk10 != -1 && lbl_1_bss_2D0[i].unk10 == lbl_1_bss_2D0[j].unk10) { + break; + } + } + } while (j != 4); + } + for (i = 0; i < 4; i++) { + GWPlayerCfg[i].character = lbl_1_bss_2D0[i].unk10; + GWPlayerCfg[i].pad_idx = lbl_1_bss_2D0[i].unk14; + GWPlayerCfg[i].group = 0; + GWPlayerCfg[i].iscom = lbl_1_bss_2D0[i].unk08; + } + BoardSaveInit(GWSystem.board); + CharKill(-1); + HuDataDirClose(DATADIR_MSTORY); + HuPrcChildCreate(fn_1_A830, 100, 0x3000, 0, lbl_1_bss_2C8); +} + +void fn_1_ABAC(void) { + omOvlHisData* var_r30; + s32 sp8[] = { OVL_W01, OVL_W02, OVL_W03, OVL_W04, OVL_W05, OVL_W06, OVL_W10 }; + + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet() != 0) { + fn_1_B8C(); + } + CharModelKill(-1); + MGSeqKillAll(); + var_r30 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY3, 0, var_r30->stat); + do { + fn_1_B8C(); + } while (lbl_1_bss_2CC != 1); + CharARAMOpen(GWPlayerCfg[0].character); + CharARAMOpen(GWPlayerCfg[1].character); + CharARAMOpen(GWPlayerCfg[2].character); + CharARAMOpen(GWPlayerCfg[3].character); + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + omOvlCallEx(sp8[GWSystem.board], 1, 0, 0); + while (TRUE) { + fn_1_B8C(); + } +} + +void fn_1_ACFC(Process* arg0, s32 arg1, s32 arg2) { + s32 i; + + lbl_1_bss_2C8 = arg0; + lbl_1_bss_450.unk04 = arg2; + lbl_1_bss_450.unk10 = arg2; + lbl_1_bss_450.unk00 = arg1; + fn_1_BF4(); + fn_1_3618(0xFF); + fn_1_27E8(lbl_1_bss_2C8, fn_1_E228); + fn_1_3704(); + fn_1_D57C(arg2); + HuPrcChildCreate(fn_1_C7C4, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_D180, 100, 0x2000, 0, HuPrcCurrentGet()); + for (i = 0; i < 4; i++) { + HuPrcChildCreate(fn_1_DE04, 100, 0x2000, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_C360, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_AE30(omObjData* arg0) { + if (arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) { + fn_1_1DCC(arg0, 1, arg0->work[1], 15, 1); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_AEBC(void) { + s32 var_r30 = 16; + s32 var_r29 = 40; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 i; + + while (TRUE) { + fn_1_B8C(); + printWin(var_r30, var_r29, 220, 160, &sp10); + if (lbl_1_bss_428.unk04 == NULL) { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_400.unk04 == NULL) { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_3D8.unk04 == NULL) { + print8(var_r30, var_r29 + 30, 1.0f, "PROC_MKOOPA -> FALSE"); + } else { + print8(var_r30, var_r29 + 30, 1.0f, "PROC_MKOOPA -> TRUE"); + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_338[i].unk04 == NULL) { + print8(var_r30, i * 10 + (var_r29 + 40), 1.0f, "PROC_PLAYER%d -> FALSE", i); + } else { + print8(var_r30, i * 10 + (var_r29 + 40), 1.0f, "PROC_PLAYER%d -> TRUE", i); + } + } + print8(var_r30, var_r29 + 90, 1.0f, "P:%d W:%d", lbl_1_bss_450.unk04, lbl_1_bss_450.unk10); + print8(var_r30, var_r29 + 110, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(var_r30, var_r29 + 120 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, + lbl_1_bss_450.unk34[i].unk00, lbl_1_bss_450.unk34[i].unk04, lbl_1_bss_450.unk34[i].unk08, + lbl_1_bss_450.unk34[i].unk0C, lbl_1_bss_450.unk34[i].unk14, lbl_1_bss_450.unk34[i].unk10); + } + } +} + +void fn_1_B230(void) { + lbl_1_bss_58[0] = HuAudSeqPlay(0x34); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); +} + +void fn_1_B28C(void) { + s32 i; + + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_450.unk00][1]); + lbl_1_bss_450.unk08 = fn_1_1834(0, 0, 21, 2, lbl_1_bss_450.unk10); + fn_1_CE48(3, -1, 15, 1, 0); + fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][0]); + fn_1_1ACC(lbl_1_bss_450.unk08, -1); + fn_1_1CE8(lbl_1_bss_450.unk08, MAKE_MESSID(37, 4)); + fn_1_CE48(1, -1, 15, 1, 0); + fn_1_1A64(lbl_1_bss_450.unk08); + for (i = 0; i < 4; i++) { + lbl_1_bss_338[i].unk04 = (void*) fn_1_DAA4; + } + do { + fn_1_B8C(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_338[i].unk04 != NULL) { + break; + } + } + } while (i != 4); + lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 = (void*) fn_1_DC08; + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_E2B4); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 == NULL) { + break; + } + } + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_3D8.unk04 == NULL) { + break; + } + } + fn_1_BAC(30); +} + +BOOL fn_1_B4A0(void) { + BOOL temp_r31 = FALSE; + + fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][1]); + fn_1_1ACC(lbl_1_bss_450.unk08, 5); + lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53)); + temp_r31 = fn_1_1C34(lbl_1_bss_450.unk0C); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4)); + fn_1_7028(lbl_1_bss_450.unk0C); + return temp_r31; +} + +BOOL fn_1_B588(void) { + BOOL temp_r31 = FALSE; + + fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][2]); + fn_1_1ACC(lbl_1_bss_450.unk08, 5); + lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53)); + temp_r31 = fn_1_1C34(lbl_1_bss_450.unk0C); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4)); + fn_1_7028(lbl_1_bss_450.unk0C); + return temp_r31; +} + +BOOL fn_1_B670(void) { + BOOL temp_r31 = FALSE; + + fn_1_CE48(3, -1, 15, 1, 0); + fn_1_1CE8(lbl_1_bss_450.unk08, lbl_1_data_388[lbl_1_bss_450.unk00][3]); + fn_1_1ACC(lbl_1_bss_450.unk08, 5); + fn_1_CE48(1, -1, 15, 1, 0); + lbl_1_bss_450.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_450.unk10); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(30, 53)); + temp_r31 = fn_1_1B78(lbl_1_bss_450.unk0C, 1); + fn_1_1CE8(lbl_1_bss_450.unk0C, MAKE_MESSID(37, 4)); + fn_1_7028(lbl_1_bss_450.unk0C); + return temp_r31; +} + +void fn_1_B78C(void) { + fn_1_BAC(60); + fn_1_A8F8(); + Hu3DModelAttrReset(lbl_1_bss_400.unk00->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_400.unk00->model[6], HU3D_ATTR_DISPOFF); + fn_1_1DCC(lbl_1_bss_400.unk00, 2, 3, 0, 0); + fn_1_BAC(30); + fn_1_1DCC(lbl_1_bss_3D8.unk00, 1, 4, 15, 0); + fn_1_BAC(30); + fn_1_1DCC(lbl_1_bss_338[lbl_1_bss_450.unk04].unk00, 1, 3, 15, 0); + fn_1_2224(lbl_1_bss_400.unk00, 2, 3, 0); + fn_1_BAC(60); + HuAudSeqFadeOut(lbl_1_bss_58[0], 3000); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_E3E4); + fn_1_BAC(150); +} + +void fn_1_B8C8(void) { +} + +void fn_1_B8CC(void) { + fn_1_1DCC(lbl_1_bss_400.unk00, 2, 3, 0, 0); + fn_1_2224(lbl_1_bss_400.unk00, 2, 3, 0); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_E620); + lbl_1_bss_3D8.unk04 = (void*) fn_1_CEF4; + lbl_1_bss_338[lbl_1_bss_450.unk04].unk04 = (void*) fn_1_DD20; + do { + fn_1_B8C(); + } while (lbl_1_bss_3D8.unk04 != NULL); + fn_1_1DCC(lbl_1_bss_400.unk00, 2, 2, 0, 0); + fn_1_2224(lbl_1_bss_400.unk00, 2, 2, 0); +} + +void fn_1_B9D0(s32 arg0) { + s32 i; + + fn_1_BAC(60); + HuAudSeqFadeOut(lbl_1_bss_58[0], 1000); + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + fn_1_B8C(); + if (WipeStatGet() == 0) { + break; + } + } + CharModelKill(-1); + HuAudFadeOut(1); + if (arg0 == 1) { + omOvlReturnEx(1, 1); + } else { + GWPlayerCfg->group = 0; + GWPlayerCfg->character = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk10; + GWPlayerCfg->pad_idx = lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk14; + GWPlayerCfg->iscom = 0; + for (i = 0; i < 4; i++) { + GWPlayer[i].character = GWPlayerCfg[i].character; + GWPlayer[i].port = GWPlayerCfg[i].pad_idx; + GWPlayer[i].com = GWPlayerCfg[i].iscom; + GWPlayer[i].team = GWPlayerCfg[i].group; + } + omOvlGotoEx(OVL_MENT, 1, 10, 0); + } + while (TRUE) { + fn_1_B8C(); + } +} + +void fn_1_BBD8(s32 arg0, StructBss19C* arg1) { + s32 i; + s32 var_r30 = 0; + + fn_1_B230(); + fn_1_B28C(); + lbl_1_bss_450.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_450.unk10); + while (TRUE) { + fn_1_B8C(); + if (fn_1_B4A0()) { + var_r30 = 0; + break; + } + if (fn_1_B588()) { + var_r30 = 2; + break; + } + if (fn_1_B670()) { + var_r30 = 1; + break; + } + } + fn_1_1A64(lbl_1_bss_450.unk08); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_450.unk34[i].unk00 != lbl_1_bss_450.unk34[lbl_1_bss_450.unk04].unk00) { + Hu3DModelAttrSet(lbl_1_bss_338[i].unk00->model[1], HU3D_ATTR_DISPOFF); + } + Hu3DModelAttrSet(lbl_1_bss_338[i].unk00->model[2], HU3D_ATTR_DISPOFF); + } + switch (var_r30) { + case 1: + fn_1_B8C8(); + break; + case 0: + fn_1_B78C(); + break; + case 2: + fn_1_B8CC(); + break; + } + switch (var_r30) { + case 0: + fn_1_ABAC(); + break; + case 1: + case 2: + fn_1_B9D0(var_r30); + /* fallthrough */ + default: + arg1->unk04 = 0; + break; + } +} + +void fn_1_C360(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_428.unk00 = temp_r3; + lbl_1_bss_428.unk04 = (void*) fn_1_BBD8; + lbl_1_bss_428.unk00->data = &lbl_1_bss_428; + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_428.unk04 != NULL) { + lbl_1_bss_428.unk04(temp_r3, &lbl_1_bss_428); + } + } +} + +void fn_1_C414(omObjData* arg0, s32 arg1) { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base"); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61)); + fn_1_1DCC(arg0, 2, 2, 0, 2); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57)); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 63)); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]); + Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f); + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(arg0->model[5]); + fn_1_1DCC(arg0, 5, 5, 0, 2); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 64)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]); + Hu3DModelHookSet(arg0->model[5], "partybox_fix2-effect_fook1", arg0->model[6]); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + fn_1_1DCC(arg0, 6, 6, 0, 2); + lbl_1_bss_330[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 65 + arg1 * 2), MEMORY_DEFAULT_NUM)); + lbl_1_bss_330[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 66 + arg1 * 2), MEMORY_DEFAULT_NUM)); + Hu3DAnimCreate(lbl_1_bss_330[0], lbl_1_bss_400.unk00->model[5], "ys26_p0"); + Hu3DAnimCreate(lbl_1_bss_330[1], lbl_1_bss_400.unk00->model[5], "ys26_p1"); +} + +void fn_1_C708(omObjData* arg0, StructBss19C* arg1) { + Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg1->unk08++, 360.0f); + if (arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_C7C4(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_400.unk00 = temp_r3; + lbl_1_bss_400.unk04 = (void*) fn_1_C708; + lbl_1_bss_400.unk00->data = &lbl_1_bss_400; + fn_1_C414(temp_r3, lbl_1_bss_450.unk00); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_400.unk04 != NULL) { + lbl_1_bss_400.unk04(temp_r3, &lbl_1_bss_400); + } + } +} + +void fn_1_CB48(omObjData* arg0, s32 arg1) { + s32 sp1C[] = { + DATA_MAKE_NUM(DATADIR_MSTORY, 0x61), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x6C), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x74), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x7C), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x83) + }; + s32 sp30[][5] = { + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x62), DATA_MAKE_NUM(DATADIR_MSTORY, 0x64), DATA_MAKE_NUM(DATADIR_MSTORY, 0x65), DATA_MAKE_NUM(DATADIR_MSTORY, 0x67), DATA_MAKE_NUM(DATADIR_MSTORY, 0x68) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x6D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x6F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x70), DATA_MAKE_NUM(DATADIR_MSTORY, 0x72), DATA_MAKE_NUM(DATADIR_MSTORY, 0x73) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x75), DATA_MAKE_NUM(DATADIR_MSTORY, 0x77), DATA_MAKE_NUM(DATADIR_MSTORY, 0x78), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7A), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7B) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x7D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7E), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x81), DATA_MAKE_NUM(DATADIR_MSTORY, 0x82) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x84), DATA_MAKE_NUM(DATADIR_MSTORY, 0x86), DATA_MAKE_NUM(DATADIR_MSTORY, 0x87), DATA_MAKE_NUM(DATADIR_MSTORY, 0x89), DATA_MAKE_NUM(DATADIR_MSTORY, 0x8A) } + }; + + arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]); + Hu3DModelPosSet(arg0->model[1], -300.0f, 0.0f, 890.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + if (arg1 == 3) { + Hu3DData[arg0->model[1]].pos.y = 50.0f; + } + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); + { + s32 sp8[] = { 9, 14, 10, 11, 12 }; + + if (arg1 != 3) { + CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]); + } + } +} + +void fn_1_CE48(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1DCC(lbl_1_bss_3D8.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_3D8.unk00->work[0] = arg4; + lbl_1_bss_3D8.unk00->work[1] = arg1; + lbl_1_bss_3D8.unk00->work[2] = arg2 + 1; +} + +void fn_1_CEF4(omObjData* arg0, StructBss19C* arg1) { + Vec sp14 = { 0.0f, 0.0f, 460.0f }; + + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp14, 0.0f, 60.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_CFD8(omObjData* arg0, StructBss19C* arg1) { + s32 i; + + for (i = 0; i < 15; i++) { + fn_1_B8C(); + Hu3DData[arg0->model[1]].rot.y = fn_1_828(0.0f, 135.0f, i, 15.0f); + } + arg1->unk04 = 0; +} + +void fn_1_D09C(omObjData* arg0, StructBss19C* arg1) { + Vec sp14 = { -120.0f, 0.0f, 670.0f }; + + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp14, 45.0f, 60.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_D180(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_3D8.unk00 = temp_r3; + lbl_1_bss_3D8.unk04 = NULL; + lbl_1_bss_3D8.unk00->data = &lbl_1_bss_3D8; + fn_1_CB48(temp_r3, lbl_1_bss_450.unk00); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_3D8.unk04 != NULL) { + lbl_1_bss_3D8.unk04(temp_r3, &lbl_1_bss_3D8); + } + if (temp_r3->work[0] != 0) { + fn_1_AE30(temp_r3); + } + } +} + +void fn_1_D57C(s32 arg0) { + s32 spC[4]; + s32 i; + + spC[0] = 0; + for (i = 1; i < 4; i++) { + spC[i] = spC[i - 1] + 1; + if (spC[i] >= 4) { + spC[i] = 0; + } + if (arg0 == spC[i]) { + lbl_1_bss_450.unk04 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_352C(&lbl_1_bss_450.unk34[i], spC[i]); + } + for (i = 0; i < 4; i++) { + lbl_1_bss_450.unk34[i].unk18 = GWPlayer[spC[i]].rank + 1; + } +} + +Vec lbl_1_data_540[] = { + { -300.0f, 0.0f, 460.0f }, + { -100.0f, -30.0f, 460.0f }, + { 100.0f, -60.0f, 460.0f }, + { 300.0f, -90.0f, 460.0f } +}; + +void fn_1_D6B0(omObjData* arg0, s32 arg1) { + s32 var_r30; + s32 temp_r28; + + var_r30 = arg1; + temp_r28 = lbl_1_bss_450.unk34[var_r30].unk10; + arg0->model[1] = CharModelCreate(lbl_1_bss_450.unk34[arg1].unk10, 4); + arg0->motion[1] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[2] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3)); + arg0->motion[3] = CharModelMotionCreate(lbl_1_bss_450.unk34[arg1].unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109)); + CharModelMotionDataClose(temp_r28); + Hu3DModelPosSet(arg0->model[1], lbl_1_data_540[var_r30].x, 90.0f + lbl_1_data_540[lbl_1_bss_450.unk34[var_r30].unk18 - 1].y, lbl_1_data_540[var_r30].z - 15.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 62)); + Hu3DModelPosSet(arg0->model[2], lbl_1_data_540[var_r30].x, lbl_1_data_540[lbl_1_bss_450.unk34[var_r30].unk18 - 1].y, lbl_1_data_540[var_r30].z); + if (lbl_1_bss_450.unk34[var_r30].unk18 == 4) { + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + } + Hu3DModelScaleSet(arg0->model[2], 1.5f, 1.0f, 1.5f); + Hu3DModelShadowMapSet(arg0->model[2]); +} + +void fn_1_D9A8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1DCC(lbl_1_bss_338[lbl_1_bss_450.unk04].unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[0] = arg4; + lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[1] = arg1; + lbl_1_bss_338[lbl_1_bss_450.unk04].unk00->work[2] = arg2 + 1; +} + +void fn_1_DAA4(omObjData* arg0, StructBss19C* arg1) { + float temp_f31; + s32 i; + + temp_f31 = Hu3DData[arg0->model[1]].pos.y; + for (i = 0; i < 60; i++) { + fn_1_B8C(); + Hu3DData[arg0->model[1]].pos.y = fn_1_948(temp_f31, 0.0f, i, 60.0f); + Hu3DData[arg0->model[2]].pos.y = fn_1_948(temp_f31 - 90.0f, -90.0f, i, 60.0f); + } + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + arg1->unk04 = 0; +} + +void fn_1_DC08(omObjData* arg0, StructBss19C* arg1) { + Vec sp14 = { 120.0f, 0.0f, 670.0f }; + + lbl_1_bss_3D8.unk04 = (void*) fn_1_D09C; + fn_1_1DCC(lbl_1_bss_400.unk00, 2, 2, 0, 0); + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp14, -45.0f, 30.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_DD20(omObjData* arg0, StructBss19C* arg1) { + Vec sp14 = { 600.0f, 0.0f, 700.0f }; + + fn_1_1DCC(arg0, 1, 2, 15, 1); + fn_1_2CB0(arg0, 1, sp14, -45.0f, 30.0f, 10.0f); + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_DE04(void) { + omObjData* temp_r3; + s32 temp_r30; + + temp_r30 = lbl_1_bss_450.unk14++; + temp_r3 = omAddObjEx(lbl_1_bss_2C8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_338[temp_r30].unk00 = temp_r3; + lbl_1_bss_338[temp_r30].unk04 = NULL; + lbl_1_bss_338[temp_r30].unk00->data = lbl_1_bss_338; + fn_1_D6B0(temp_r3, temp_r30); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_338[temp_r30].unk04 != NULL) { + lbl_1_bss_338[temp_r30].unk04(temp_r3, &lbl_1_bss_338[temp_r30]); + } + if (temp_r3->work[0] != 0) { + fn_1_AE30(temp_r3); + } + } +} + +void fn_1_E228(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 170.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = -5.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 1700.0f; +} + +void fn_1_E2B4(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 125.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1750.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f); + if (lbl_1_bss_450.unk104 != 0.0f) { + var_r31->unk08.y = 125.0f + lbl_1_bss_450.unk104; + } +} + +void fn_1_E3E4(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + if (var_r31->unk40 == 50) { + fn_1_1DCC(lbl_1_bss_400.unk00, 5, 5, 0, 0); + fn_1_1DCC(lbl_1_bss_400.unk00, 6, 6, 0, 0); + HuAudFXPlay(0xA1); + } + sp8.unk08.x = 0.0f; + sp8.unk08.y = 100.0f; + sp8.unk08.z = 460.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 125.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f); + if (var_r31->unk40++ >= 90) { + if (var_r31->unk40 == 91) { + lbl_1_bss_68 = HuAudFXPlay(0x21); + } + var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f); + Hu3DData[lbl_1_bss_400.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f); + } +} + +void fn_1_E620(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 220.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1600.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f); +} diff --git a/src/REL/mstoryDll/main.c b/src/REL/mstoryDll/main.c new file mode 100755 index 00000000..f9eb62d1 --- /dev/null +++ b/src/REL/mstoryDll/main.c @@ -0,0 +1,1012 @@ +#include "REL/mstoryDll.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "ext_math.h" + +char lbl_1_bss_6C[0x3C]; // unused +s32 lbl_1_bss_68; +s32 lbl_1_bss_58[4]; +char lbl_1_bss_48[0x10]; // unused +StructBss4 lbl_1_bss_4; +Process* lbl_1_bss_0; + +s32 lbl_1_data_0[][4] = { + { 0x37, 0x38, 0x36, 0x39 }, + { 0x43, 0x45, 0x44, 0x43 }, + { 0x40, 0x42, 0x41, 0x40 }, + { 0x4B, 0x4D, 0x4C, 0x4B }, + { 0x46, 0x48, 0x47, 0x46 }, + { 0x3E, 0x3F, 0x3E, 0x3E } +}; + +char* lbl_1_data_100[] = { + "S-2 : NORMAL STORY - BOARD CLEAR EVENT", + "S-3 : NORMAL STORY - BOARD MISS EVENT", + "S-4 : NORMAL STORY - MINIGAME CLEAR EVENT", + "S-5 : NORMAL STORY - MINIGAME MISS EVENT" +}; + +void fn_1_0(omObjData* arg0) { + if (WipeStatGet() == 0) { + arg0->func = NULL; + omOvlReturnEx(1, 1); + } +} + +void fn_1_4C(omObjData* arg0) { + if (omSysExitReq != 0) { + arg0->func = fn_1_0; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + } +} + +void fn_1_A4(void) { + s32 sp14; + s32 var_r30; + s32 var_r31; + s32 sp10; + s32 spC; + s32 sp8; + s32 i; + + sp14 = 0; + var_r30 = 0; + var_r31 = 0; + sp10 = 1; + spC = 1; + sp8 = 1; + omAddObjEx(lbl_1_bss_0, 0x2000, 0, 0, -1, fn_1_4C); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_B8C(); + } + while (TRUE) { + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + break; + } + if ((HuPadBtnDown[0] & PAD_BUTTON_DOWN) || HuPadStkY[0] >= 30) { + var_r30++; + if (var_r30 >= 4) { + var_r30 = 0; + } + fn_1_BAC(5); + } + if ((HuPadBtnDown[0] & PAD_BUTTON_UP) || HuPadStkY[0] <= -30) { + var_r30--; + if (var_r30 < 0) { + var_r30 = 3; + } + fn_1_BAC(5); + } + if (HuPadBtnDown[0] & PAD_BUTTON_RIGHT) { + var_r31++; + if (var_r31 > 4) { + var_r31 = 0; + } + } + if (HuPadBtnDown[0] & PAD_BUTTON_LEFT) { + var_r31--; + if (var_r31 < 0) { + var_r31 = 4; + } + } + fontcolor = FONT_COLOR_WHITE; + print8(24, 100, 1.5f, ">>>>> MPGC STORY 1 - EVENT SELECT <<<<<"); + print8(24, 130, 1.5f, "MAP NUMBER : %d", var_r31 + 1); + for (i = 0; i < 4; i++) { + fontcolor = FONT_COLOR_WHITE; + if (var_r30 == i) { + fontcolor = FONT_COLOR_CYAN; + } + print8(24, 160 + i * 15, 1.5f, "%s", lbl_1_data_100[i]); + } + fn_1_B8C(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_B8C(); + } + GWSystem.board = var_r31; + switch (var_r30) { + case 0: + fn_1_79B8(lbl_1_bss_0, var_r31, 0); + break; + case 1: + fn_1_ACFC(lbl_1_bss_0, var_r31, 0); + break; + case 2: + fn_1_E710(lbl_1_bss_0, var_r31, 0); + break; + case 3: + fn_1_11624(lbl_1_bss_0, var_r31, 0); + break; + } + while (TRUE) { + fn_1_B8C(); + } +} + +#include "src/REL/executor.c" + +void fn_1_488(void) { + s32 i; + + lbl_1_bss_0 = omInitObjMan(62, 0x2000); + switch (omovlevtno) { + case 0: + for (i = 0; i < 4; i++) { + if (GWPlayerCfg[i].character == GWUnkB1Get()) { + break; + } + } + fn_1_79B8(lbl_1_bss_0, GWSystem.board, i); + break; + case 1: + for (i = 0; i < 4; i++) { + if (GWPlayerCfg[i].character == GWUnkB1Get()) { + break; + } + } + fn_1_ACFC(lbl_1_bss_0, GWSystem.board, i); + break; + case 2: + if (GWPlayerCoinWinGet(0) >= 10) { + fn_1_E710(lbl_1_bss_0, GWSystem.board, 0); + } else { + fn_1_11624(lbl_1_bss_0, GWSystem.board, 0); + } + break; + case 20: + fn_1_14150(lbl_1_bss_0); + break; + } +} + +void ObjectSetup(void) { + fn_1_488(); +} + +float fn_1_828(float arg0, float arg1, float arg2, float arg3) { + if (arg3 <= arg2) { + return arg1; + } + return arg0 + (arg2 / arg3) * (arg1 - arg0); +} + +float fn_1_850(float arg0, float arg1, float arg2) { + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +float fn_1_870(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * (1.0 - cosd((90.0f / arg3) * arg2)); +} + +float fn_1_948(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((90.0f / arg3) * arg2); +} + +float fn_1_A10(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((180.0f / arg3) * arg2); +} + +float fn_1_ACC(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((360.0f / arg3) * arg2); +} + +void fn_1_B88(void) { +} + +void fn_1_B8C(void) { + HuPrcVSleep(); +} + +void fn_1_BAC(s32 arg0) { + HuPrcSleep(arg0); +} + +void fn_1_BD4(void) { + HuPrcEnd(); +} + +void fn_1_BF4(void) { + HuWinInit(1); +} + +void fn_1_C18(void) { + HuWinAllKill(); +} + +void fn_1_C38(s32 arg0, float arg1, float arg2, s32 arg3) { + WindowData* temp_r29; + float temp_f29; + float temp_f28; + float temp_f25; + float temp_f24; + float temp_f31; + float temp_f27; + float temp_f30; + float temp_f26; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + s32 i; + + temp_r29 = &winData[arg0]; + temp_f29 = temp_r29->pos_x; + temp_f28 = temp_r29->pos_y; + temp_f25 = temp_r29->w; + temp_f24 = temp_r29->h; + temp_f31 = temp_f29 + temp_f25 * arg1; + temp_f27 = 4.0f / temp_f25; + if (temp_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) { + temp_f31 = (temp_f29 + temp_f25) - 4.0f; + } else if (temp_f29 - (temp_f31 - 2.0f) >= 0.0f) { + temp_f31 = temp_f29; + } else { + temp_f31 -= 2.0f; + } + temp_f30 = temp_f28 + temp_f24 * arg2; + temp_f26 = 4.0f / temp_f24; + if (temp_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) { + temp_f30 = (temp_f28 + temp_f24) - 4.0f; + } else if (temp_f28 - (temp_f30 - 2.0f) >= 0.0f) { + temp_f30 = temp_f28; + } else { + temp_f30 -= 2.0f; + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + var_f23 = temp_f31; + var_f21 = temp_f27; + var_f22 = temp_f30; + var_f20 = temp_f26; + } else { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + var_f23 = temp_f29; + var_f21 = 1.0f; + var_f22 = temp_f28; + var_f20 = 1.0f; + } + HuWinDispOn(arg0); + for (i = 0; i <= 15; i++) { + HuPrcVSleep(); + if (arg3 != 0) { + if (i <= 10) { + var_f23 = fn_1_948(temp_f31, temp_f29, i, 10.0f); + var_f21 = fn_1_948(temp_f27, 1.0f, i, 10.0f);; + } else { + var_f22 = fn_1_948(temp_f30, temp_f28, i - 10, 5.0f); + var_f20 = fn_1_948(temp_f26, 1.0f, i - 10, 5.0f); + } + } else { + if (i <= 10) { + var_f22 = fn_1_948(temp_f28, temp_f30, i, 10.0f); + var_f20 = fn_1_948(1.0f, temp_f26, i, 10.0f); + } else { + var_f23 = fn_1_948(temp_f29, temp_f31, i - 10, 5.0f); + var_f21 = fn_1_948(1.0f, temp_f27, i - 10, 5.0f); + } + } + HuWinPosSet(arg0, var_f23, var_f22); + HuWinScaleSet(arg0, var_f21, var_f20); + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + } else { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + } + HuPrcVSleep(); +} + +s32 fn_1_1680(s32 arg0, s32 arg1, s32 arg2, s32 arg3, float arg4, float arg5, s32 arg6) { + s32 temp_r31; + + arg2 = arg2 * 21 + 16; + arg3 = arg3 * 26 + 16; + if (arg0 == 0) { + arg0 = 550 - arg2; + } else { + arg0 = 1.0f + (576.0f - arg2) / 2.0f; + } + if (arg1 == 0) { + arg1 = 430 - arg3; + } + temp_r31 = HuWinExCreateStyled(arg0, arg1, arg2, arg3, -1, 1); + if (arg6 != -1) { + arg6 = GWPlayerCfg[arg6].pad_idx; + winData[temp_r31].active_pad = 1; + } else { + winData[temp_r31].active_pad = 0xF; + } + HuWinMesPalSet(temp_r31, 7, 0, 0, 0); + fn_1_C38(temp_r31, arg4, arg5, 1); + return temp_r31; +} + +s32 fn_1_1834(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + return fn_1_1680(arg0, arg1, arg2, arg3, 0.5f, 0.5f, arg4); +} + +void fn_1_1A04(s32 arg0, float arg1, float arg2) { + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuPrcVSleep(); + fn_1_C38(arg0, arg1, arg2, 0); + HuWinExCleanup(arg0); +} + +void fn_1_1A64(s32 arg0) { + fn_1_1A04(arg0, 0.5f, 0.5f); +} + +void fn_1_1ACC(s32 arg0, s32 arg1) { + s32 i; + + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +BOOL fn_1_1B78(s32 arg0, s32 arg1) { + s32 var_r31; + s32 i; + + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + var_r31 = HuWinChoiceGet(arg0, arg1); + HuWinComKeyReset(); + if (var_r31 != 0) { + var_r31 = FALSE; + } else { + var_r31 = TRUE; + } + return var_r31; +} + +BOOL fn_1_1C34(s32 arg0) { + return fn_1_1B78(arg0, 0); +} + +void fn_1_1CE8(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_1D1C(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_1D5C(s16 arg0) { + ModelData* var_r28; + HsfMaterial* var_r31; + HsfData* temp_r30; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + } +} + +void fn_1_1DCC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_NONE); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_LOOP); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_PAUSE); + break; + } +} + +void fn_1_1F44(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] == Hu3DMotionIDGet(arg0->model[arg1])) { + return; + } + if (arg0->motion[arg2] == Hu3DMotionShiftIDGet(arg0->model[arg1])) { + return; + } + fn_1_1F44(arg0, arg1, arg2, arg3, arg4); +} + +void fn_1_2224(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3) { + HuPrcSleep(arg3 + 1); + do { + HuPrcVSleep(); + } while (arg0->motion[arg2] != Hu3DMotionIDGet(arg0->model[arg1]) || !Hu3DMotionEndCheck(arg0->model[arg1])); +} + +s32 fn_1_22B4(s32 arg0) { + s32 i; + + for (i = 0; i < 4; i++) { + if (arg0 == GWPlayerCfg[i].group) { + break; + } + } + return i; +} + +void fn_1_22FC(s32 arg0, s32 arg1) { + while (TRUE) { + if (arg1 & HuPadBtnDown[arg0]) { + break; + } + HuPrcVSleep(); + } +} + +void fn_1_2350(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + if (HuPadBtn[0] & PAD_BUTTON_B) { + if (HuPadBtn[0] & PAD_TRIGGER_R) { + var_r31->unk08.z -= HuPadStkY[0] / 10.0f; + } else { + var_r31->unk08.x += HuPadStkX[0] / 10.0f; + var_r31->unk08.y += HuPadStkY[0] / 10.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_Y) { + var_r31->unk20.x -= HuPadStkY[0] / 100.0f; + var_r31->unk20.y += HuPadStkX[0] / 100.0f; + if (var_r31->unk20.x < 0.0f) { + var_r31->unk20.x += 360.0f; + } + if (var_r31->unk20.x >= 360.0f) { + var_r31->unk20.x -= 360.0f; + } + if (var_r31->unk20.y < 0.0f) { + var_r31->unk20.y += 360.0f; + } + if (var_r31->unk20.y >= 360.0f) { + var_r31->unk20.y -= 360.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_X) { + var_r31->unk38 -= HuPadStkY[0] / 10.0f; + } + print8(24, 40, 1.5f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk08.x, var_r31->unk08.y, var_r31->unk08.z); + print8(24, 55, 1.5f, "ROT : %.2f, %.2f, %.2f", var_r31->unk20.x, var_r31->unk20.y, var_r31->unk20.z); + print8(24, 70, 1.5f, "ZOOM : %.2f", var_r31->unk38); +} + +void fn_1_2710(void (*arg0)(void)) { + lbl_1_bss_4.unk00 = arg0; +} + +void fn_1_2720(void (*arg0)(void)) { + lbl_1_bss_4.unk04 = arg0; +} + +void fn_1_2730(omObjData* arg0) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + if (var_r31->unk00 != NULL) { + var_r31->unk00(); + } + Center.x = var_r31->unk08.x; + Center.y = var_r31->unk08.y; + Center.z = var_r31->unk08.z; + CRot.x = var_r31->unk20.x; + CRot.y = var_r31->unk20.y; + CRot.z = var_r31->unk20.z; + CZoom = var_r31->unk38; +} + +void fn_1_27E8(Process* arg0, void (*arg1)(void)) { + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 42.0f, 0.1f, 10000.0f, 1.2f); + lbl_1_bss_4.unk00 = arg1; + lbl_1_bss_4.unk04 = fn_1_2350; + omAddObjEx(arg0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(arg0, 0x7FD9, 0, 0, -1, fn_1_2730); +} + +void fn_1_2908(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + float sp24; + float sp20; + float sp1C; + s32 sp18; + s32 sp14; + float var_f31; + + sp40.x = Hu3DData[arg0->model[arg1]].pos.x; + sp4C.y = sp40.y = Hu3DData[arg0->model[arg1]].pos.y; + sp40.z = Hu3DData[arg0->model[arg1]].pos.z; + sp34.x = arg2.x; + sp34.y = arg2.y; + sp34.z = arg2.z; + sp18 = arg4; + sp28.x = Hu3DData[arg0->model[arg1]].rot.x; + sp28.y = Hu3DData[arg0->model[arg1]].rot.y; + sp28.z = Hu3DData[arg0->model[arg1]].rot.z; + sp1C = 0.0f; + sp20 = arg3; + sp24 = 0.0f; + sp14 = arg5; + var_f31 = -1.1025f; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[3], 0.0f, 5.0f, 0U); + HuPrcSleep(10); + while (TRUE) { + if (var_f31 >= 1.7f) { + var_f31 = 1.7f; + } + sp4C.y += var_f31 * var_f31 * (var_f31 >= 0.0f ? -17.5f : 17.5f); + if (sp4C.y <= 0.0f && var_f31 > 0.0f) { + sp4C.y = 0.0f; + } + sp4C.x = sp40.x += 6.0 * sind(sp28.y); + sp4C.z = sp40.z += 6.0 * cosd(sp28.y); + Hu3DModelPosSet(arg0->model[1], sp4C.x, sp4C.y, sp4C.z); + Hu3DModelRotSet(arg0->model[1], sp28.x, sp28.y, sp28.z); + HuPrcVSleep(); + if (sp4C.y <= arg2.y && var_f31 > 0.0f) { + break; + } + var_f31 += 0.11f; + } +} + +void fn_1_2CB0(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp54; + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + s32 sp14; + s32 temp_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 i; + + var_r26 = 0; + var_r25 = 0; + sp48.x = Hu3DData[arg0->model[arg1]].pos.x; + sp48.y = Hu3DData[arg0->model[arg1]].pos.y; + sp48.z = Hu3DData[arg0->model[arg1]].pos.z; + sp3C.x = arg2.x; + sp3C.y = arg2.y; + sp3C.z = arg2.z; + sp14 = arg4; + sp24.x = Hu3DData[arg0->model[arg1]].rot.x; + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + sp24.z = Hu3DData[arg0->model[arg1]].rot.z; + sp18.x = 0.0f; + sp18.y = arg3; + sp18.z = 0.0f; + if (sp3C.x - sp48.x >= 0.0f) { + var_r24 = 1; + } else { + var_r24 = 0; + } + if (sp3C.z - sp48.z >= 0.0f) { + var_r23 = 1; + } else { + var_r23 = 0; + } + temp_r27 = arg5; + do { + sp30.y = -(atan2d(sp3C.z - sp48.z, sp3C.x - sp48.x) - 90.0); + if (sp30.y < 0.0f) { + sp30.y += 360.0f; + } else if (sp30.y >= 360.0f) { + sp30.y -= 360.0f; + } + if (sp30.y >= 180.0f) { + if (sp24.y - sp30.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp30.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp54.x = sp48.x += 6.0 * sind(sp30.y); + sp54.z = sp48.z += 6.0 * cosd(sp30.y); + if (var_r24 != 0) { + if (sp48.x >= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } else { + if (sp48.x <= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } + if (var_r23 != 0) { + if (sp48.z >= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } else { + if (sp48.z <= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } + sp24.y = fn_1_850(sp24.y, sp30.y, 10.0f); + Hu3DModelPosSet(arg0->model[1], sp54.x, sp48.y, sp54.z); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } while (var_r25 != 1 || var_r26 != 1); + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + for (i = 0; i <= temp_r27; i++) { + if (sp18.y >= 180.0f) { + if (sp24.y - sp18.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp18.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp24.y = fn_1_828(sp24.y, sp18.y, i, temp_r27); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } +} + +void fn_1_34A4(s16 arg0) { + ModelData* var_r28; + HsfData* temp_r30; + HsfMaterial* var_r31; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + var_r31->litColor[0] = 0xFF; + var_r31->litColor[1] = 0xFF; + var_r31->litColor[2] = 0xFF; + } +} + +void fn_1_352C(StructFn352C* arg0, s32 arg1) { + arg0->unk00 = arg1; + arg0->unk04 = GWPlayerCfg[arg0->unk00].group; + arg0->unk08 = GWPlayerCfg[arg0->unk00].iscom; + arg0->unk0C = GWPlayerCfg[arg0->unk00].diff; + arg0->unk10 = GWPlayerCfg[arg0->unk00].character; + arg0->unk14 = GWPlayerCfg[arg0->unk00].pad_idx; +} + +s32 fn_1_35C0(void) { + s32 i; + + for (i = 0; i < 4; i++) { + if (!GWPlayerCfg[i].iscom) { + break; + } + } + if (i == 4) { + return -1; + } + return i; +} + +s32 fn_1_3618(s32 arg0) { + s32 temp_r3 = 0; + + temp_r3 = Hu3DGLightCreate(0.0f, 700.0f, 1200.0f, 0.0f, -1.0f, 0.0f, arg0, arg0, arg0); + Hu3DGLightPosAimSet(temp_r3, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); + Hu3DGLightInfinitytSet(temp_r3); + return temp_r3; +} + +void fn_1_3704(void) { + Vec sp20 = { 0.0f, 3000.0f, 800.0f }; + Vec sp14 = { 0.0f, 0.0f, 640.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); +} + +void fn_1_37C8(StructBss4* arg0) { + arg0->unk08.x = arg0->unk14; + arg0->unk08.y = arg0->unk18; + arg0->unk08.z = arg0->unk1C; + arg0->unk20.x = arg0->unk2C; + arg0->unk20.y = arg0->unk30; + arg0->unk20.z = arg0->unk34; + arg0->unk38 = arg0->unk3C; +} + +void fn_1_3804(StructBss4* arg0) { + arg0->unk40 = 0; + arg0->unk14 = arg0->unk08.x; + arg0->unk18 = arg0->unk08.y; + arg0->unk1C = arg0->unk08.z; + arg0->unk2C = arg0->unk20.x; + arg0->unk30 = arg0->unk20.y; + arg0->unk34 = arg0->unk20.z; + arg0->unk3C = arg0->unk38; +} + +void fn_1_3848(StructBss4* arg0, StructBss4* arg1, s32 arg2, float arg3) { + arg0->unk08.x = fn_1_850(arg0->unk08.x, arg1->unk14, arg3); + arg0->unk08.y = fn_1_850(arg0->unk08.y, arg1->unk18, arg3); + arg0->unk08.z = fn_1_850(arg0->unk08.z, arg1->unk1C, arg3); + arg0->unk20.x = fn_1_850(arg0->unk20.x, arg1->unk2C, arg3); + arg0->unk20.y = fn_1_850(arg0->unk20.y, arg1->unk30, arg3); + arg0->unk20.z = fn_1_850(arg0->unk20.z, arg1->unk34, arg3); + if (arg2 != 0) { + arg0->unk38 = fn_1_850(arg0->unk38, arg1->unk3C, arg3); + } +} + +void fn_1_3ABC(StructBss4* arg0, float arg1) { + fn_1_3848(arg0, arg0, 1, arg1); +} + +void fn_1_3D28(StructBss4* arg0, float arg1) { + fn_1_3848(arg0, arg0, 0, arg1); +} + +void fn_1_3F54(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_828(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_828(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_828(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_828(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_828(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_828(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_828(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_41D0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_3F54(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_4484(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_3F54(arg0, arg1, arg2, arg3); + fn_1_3848(arg0, arg1, 1, arg4); +} + +void fn_1_48F0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_948(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_948(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_948(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_948(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_948(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_948(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_948(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_4D44(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_48F0(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_51D0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_48F0(arg0, arg1, arg2, arg3); + fn_1_3848(arg0, arg1, 1, arg4); +} + +void fn_1_5828(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_870(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_870(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_870(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_870(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_870(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_870(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_870(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_5CEC(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_5828(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_61E8(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_5828(arg0, arg1, arg2, arg3); + fn_1_3848(arg0, arg1, 1, arg4); +} + +void fn_1_68B0(omObjData* arg0) { + s32 var_r30; + + if (arg0->work[0] == 0 && arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) { + var_r30 = arg0->work[1]; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[var_r30], 0.0f, 15.0f, 0x40000001U); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_6974(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1DCC(arg0, 1, arg1, arg3, arg4); + if (arg4 == 0) { + arg0->work[0] = 1; + arg0->work[1] = arg2; + arg0->work[2] = arg3 + 1; + } +} + +void fn_1_6AFC(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_6B30(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_6B70(s32 arg0, s32 arg1) { + fn_1_1ACC(arg0, arg1); +} + +void fn_1_6C1C(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 temp_r28 = 0; + s32 var_r29 = 0; + s32 i; + + temp_r28 = HuWinKeyWaitNumGet(arg1); + if (arg2 == -1 || arg2 >= temp_r28 - 1) { + arg2 = temp_r28 - 1; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesSet(arg0, arg1); + for (i = 0; i < temp_r28; i++) { + var_r29 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r29 = 1; + } + while (TRUE) { + HuPrcVSleep(); + if (var_r29 != 0) { + if (var_r29 == 1 && HuWinStatGet(arg0) != 1) { + var_r29 = 2; + } else if (var_r29 == 2) { + HuPrcSleep(arg3); + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + fn_1_1ACC(arg0, 0); + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuWinComKeyReset(); +} + +BOOL fn_1_6E04(s32 arg0) { + return fn_1_1B78(arg0, 0); +} + +s32 fn_1_6EB8(s32 arg0, s32 arg1) { + float spC[2]; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + s32 var_r31; + + HuWinMesMaxSizeGet(1, spC, arg0); + var_f31 = spC[0]; + var_f30 = spC[1]; + var_f29 = 550.0f - var_f31; + var_f28 = 430.0f - var_f30; + var_r31 = HuWinExCreateStyled(var_f29, var_f28, var_f31, var_f30, -1, 1); + if (arg1 != -1) { + arg1 = GWPlayerCfg[arg1].pad_idx; + winData[var_r31].active_pad = 1; + } else { + winData[var_r31].active_pad = 0xF; + } + HuWinMesPalSet(var_r31, 7, 0, 0, 0); + fn_1_C38(var_r31, 0.5f, 0.5f, 1); + return var_r31; +} + +void fn_1_7028(s32 arg0) { + fn_1_1A04(arg0, 0.5f, 0.5f); +} diff --git a/src/REL/mstoryDll/mg_clear.c b/src/REL/mstoryDll/mg_clear.c new file mode 100755 index 00000000..48fb2dc4 --- /dev/null +++ b/src/REL/mstoryDll/mg_clear.c @@ -0,0 +1,691 @@ +#include "REL/mstoryDll.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/flag.h" +#include "game/gamework.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/objsub.h" +#include "game/printfunc.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ char unk0C[4]; + /* 0x010 */ s32 unk10; + /* 0x014 */ char unk14[0x20]; + /* 0x034 */ StructFn352C unk34[4]; + /* 0x104 */ s32 unk104; +} StructBss608; // Size 0x108 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; +} StructData570; // Size 0x14 + +void fn_1_FD1C(void); +void fn_1_10298(omObjData* arg0, StructBss19C* arg1); +void fn_1_10384(omObjData* arg0, StructBss19C* arg1); +void fn_1_10450(omObjData* arg0, StructBss19C* arg1); +void fn_1_1054C(void); +void fn_1_108F8(void); +void fn_1_10C6C(s32 arg0); +void fn_1_10FD0(void); +void fn_1_112A0(void); +void fn_1_1132C(void); +void fn_1_1141C(void); +void fn_1_11534(void); + +StructBss608 lbl_1_bss_608; +StructBss19C lbl_1_bss_5E0; +StructBss19C lbl_1_bss_5B8; +StructBss19C lbl_1_bss_590; +StructBss19C lbl_1_bss_568; +AnimData* lbl_1_bss_560[2]; +s32 lbl_1_bss_55C; +Process* lbl_1_bss_558; + +StructData570 lbl_1_data_570[] = { + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x00), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x01), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x02), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x03), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x04), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x05), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x06), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x07), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x08), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x09), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0E), 1, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0F), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x10), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x11), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x12), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x13), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x14), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x15), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x16), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x17), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x18), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x19), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1E), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1F), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x20), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x21), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x22), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x23), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x24), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x25), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x26), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x27), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x28), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x29), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2E), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2F), 0, 0, 0, 1 } +}; + +s32 lbl_1_data_930[][4] = { + { MAKE_MESSID(30, 72), MAKE_MESSID(30, 73) }, + { MAKE_MESSID(30, 74), MAKE_MESSID(30, 75) }, + { MAKE_MESSID(30, 76), MAKE_MESSID(30, 77) }, + { MAKE_MESSID(30, 78), MAKE_MESSID(30, 79) }, + { MAKE_MESSID(30, 80), MAKE_MESSID(30, 81) } +}; + +void fn_1_E710(Process* arg0, s32 arg1, s32 arg2) { + lbl_1_bss_558 = arg0; + lbl_1_bss_608.unk00 = arg1; + lbl_1_bss_608.unk10 = arg2; + fn_1_BF4(); + lbl_1_bss_608.unk104 = fn_1_3618(0xFF); + fn_1_27E8(lbl_1_bss_558, fn_1_112A0); + fn_1_3704(); + fn_1_10C6C(arg2); + HuPrcChildCreate(fn_1_1054C, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_108F8, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_10FD0, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_FD1C, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_E828(omObjData* arg0) { + if (arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) { + fn_1_1DCC(arg0, 1, arg0->work[1], 15, 1); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_E8B4(void) { + s32 var_r30 = 16; + s32 var_r29 = 40; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 i; + + while (TRUE) { + fn_1_B8C(); + printWin(var_r30, var_r29, 220, 130, &sp10); + if (lbl_1_bss_5E0.unk04 == NULL) { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_5B8.unk04 == NULL) { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_590.unk04 == NULL) { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> FALSE"); + } else { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> TRUE"); + } + if (lbl_1_bss_568.unk04 == NULL) { + print8(var_r30, var_r29 + 30, 1.0f, "PROC_PLAYER -> FALSE"); + } else { + print8(var_r30, var_r29 + 30, 1.0f, "PROC_PLAYER -> TRUE"); + } + print8(var_r30, var_r29 + 60, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_608.unk00, lbl_1_bss_608.unk04, lbl_1_bss_608.unk10); + print8(var_r30, var_r29 + 80, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(var_r30, var_r29 + 90 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, + lbl_1_bss_608.unk34[i].unk00, lbl_1_bss_608.unk34[i].unk04, lbl_1_bss_608.unk34[i].unk08, + lbl_1_bss_608.unk34[i].unk0C, lbl_1_bss_608.unk34[i].unk14, lbl_1_bss_608.unk34[i].unk10); + } + } +} + +void fn_1_EC00(void) { + lbl_1_bss_58[0] = HuAudSeqPlay(0x36); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); +} + +void fn_1_EC5C(void) { + lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10); + fn_1_1D1C(lbl_1_bss_608.unk08, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 0); + fn_1_1CE8(lbl_1_bss_608.unk08, lbl_1_data_930[lbl_1_bss_608.unk00][0]); + fn_1_1ACC(lbl_1_bss_608.unk08, -1); + fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_608.unk08); + fn_1_1DCC(lbl_1_bss_5B8.unk00, 2, 2, 0, 0); + fn_1_BAC(90); + fn_1_1DCC(lbl_1_bss_590.unk00, 1, 4, 15, 0); + fn_1_BAC(30); + fn_1_1DCC(lbl_1_bss_568.unk00, 1, 4, 15, 0); + fn_1_2224(lbl_1_bss_5B8.unk00, 2, 2, 0); + fn_1_BAC(60); + fn_1_1DCC(lbl_1_bss_568.unk00, 1, 1, 84, 1); + fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 84, 1); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_1132C); + lbl_1_bss_5B8.unk04 = (void*) fn_1_10450; + do { + fn_1_B8C(); + } while (lbl_1_bss_5B8.unk04 != NULL); + fn_1_BAC(10); + lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10); + fn_1_1DCC(lbl_1_bss_590.unk00, 1, 3, 15, 1); + if (lbl_1_bss_608.unk00 == 0) { + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_608.unk00][2]); + } else { + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_608.unk00][0]); + } + fn_1_1D1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + 5) + lbl_1_bss_608.unk00, 2); + fn_1_1CE8(lbl_1_bss_608.unk08, lbl_1_data_930[lbl_1_bss_608.unk00][1]); + fn_1_1ACC(lbl_1_bss_608.unk08, -1); + fn_1_1DCC(lbl_1_bss_590.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_608.unk08); +} + +void fn_1_EFE0(s32 arg0, StructBss19C* arg1) { + s32 temp_r31; + + temp_r31 = HuAudSStreamPlay(7); + do { + fn_1_B8C(); + } while (HuAudSStreamStatGet(temp_r31) != 0); + HuAudSeqPause(lbl_1_bss_58[0], 0, 1000); + arg1->unk04 = 0; +} + +void fn_1_F050(omObjData* arg0, StructBss19C* arg1) { + s32 temp_r31; + + temp_r31 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00; + fn_1_BAC(150); + OSReport("########## PRESENT_SE : %d\n", temp_r31); + HuAudFXPlay(0x8D4 + temp_r31); + if (lbl_1_data_570[lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00].unk04 == 1) { + fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 7, 0, 0); + fn_1_BAC(60); + fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 12, 0, 1); + } else { + fn_1_1DCC(lbl_1_bss_5B8.unk00, 7, 7, 1, 0); + } + arg1->unk04 = 0; +} + +void fn_1_F19C(void) { + s32 i; + + fn_1_1DCC(lbl_1_bss_568.unk00, 1, 2, 15, 1); + for (i = 0; i < 30; i++) { + fn_1_B8C(); + if (lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 != 5) { + Hu3DData[lbl_1_bss_568.unk00->model[1]].pos.x = fn_1_828(120.0f, 80.0f, i, 30.0f); + } + Hu3DData[lbl_1_bss_568.unk00->model[1]].rot.y = fn_1_828(-60.0f, -90.0f, i, 30.0f); + } + fn_1_1DCC(lbl_1_bss_568.unk00, 1, 5, 5, 0); + while (TRUE) { + fn_1_B8C(); + if (Hu3DMotionTimeGet(lbl_1_bss_568.unk00->model[1]) >= 35.0f) { + break; + } + } + Hu3DModelPosSet(lbl_1_bss_5B8.unk00->model[5], 0.0f, 0.0f, 0.0f); + Hu3DModelHookReset(lbl_1_bss_5B8.unk00->model[9]); + Hu3DModelHookSet(lbl_1_bss_568.unk00->model[1], CharModelHookNameGet(lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 1, 1), lbl_1_bss_5B8.unk00->model[5]); + fn_1_BAC(60); + lbl_1_bss_5B8.unk04 = (void*) fn_1_10298; + HuAudFXPlay(0xA3); + HuAudCharVoicePlay(lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, 0x128); + fn_1_1DCC(lbl_1_bss_5B8.unk00, 6, 6, 0, 0); + Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[6], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_5B8.unk00->model[5], HU3D_ATTR_DISPOFF); + fn_1_1DCC(lbl_1_bss_568.unk00, 1, 6, 5, 0); + HuAudSeqPause(lbl_1_bss_58[0], 1, 1000); + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + Hu3DMotionSpeedSet(lbl_1_bss_568.unk00->model[1], 0.0f); + Hu3DMotionTimeSet(lbl_1_bss_568.unk00->model[1], 50.0f); + Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(lbl_1_bss_5B8.unk00->model[8], HU3D_ATTR_DISPOFF); + fn_1_1DCC(lbl_1_bss_5B8.unk00, 8, 8, 0, 1); + fn_1_BAC(30); + HuAudFXPlay(0xA9); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_11534); + fn_1_BAC(60); + lbl_1_bss_568.unk04 = (void*) fn_1_F050; + lbl_1_bss_608.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_608.unk10); + lbl_1_bss_590.unk04 = (void*) fn_1_EFE0; + fn_1_1D1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + 6) + lbl_1_bss_608.unk00, 0); + fn_1_6C1C(lbl_1_bss_608.unk08, MAKE_MESSID(50, 134), 0, 300); + fn_1_1CE8(lbl_1_bss_608.unk08, MAKE_MESSID(37, 4)); + fn_1_1A64(lbl_1_bss_608.unk08); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_1141C); + lbl_1_bss_5B8.unk04 = (void*) fn_1_10384; + fn_1_BAC(30); + Hu3DMotionSpeedSet(lbl_1_bss_568.unk00->model[1], 0.1f); + fn_1_BAC(180); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); +} + +s32 fn_1_F780(s32 arg0) { + if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) { + return 1; + } + if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) { + return 1; + } + if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) { + return 1; + } + if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) { + return 1; + } + if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) { + return 1; + } + if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) { + return 1; + } + return 0; +} + +void fn_1_F86C(void) { + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + fn_1_BAC(60); + SLCommonSet(); + SLSaveBoardStory(); + if (SLSaveFlagGet() == 1) { + SLSave(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_55C = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_F910(void) { + omOvlHisData* var_r31; + + msmSeStopAll(FALSE, 1000); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); + CharModelKill(-1); + HuAudFXAllStop(); + HuAudSStreamAllStop(); + { + s32 sp8[] = { 53, 56, 55, 54, 57 }; + + GWMGAvailSet(omMgIndexGet(sp8[lbl_1_bss_608.unk00]) + 0x191); + } + GWGameStat.present[lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00] = 1; + OSReport("########## PRESENTFLG CHR:%d, MAP:%d, PRESENT:%d\n", lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10, lbl_1_bss_608.unk00, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00); + var_r31 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY, 20, var_r31->stat); + omOvlCallEx(OVL_PRESENT, 1, lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10 * 6 + lbl_1_bss_608.unk00 + 1, 0); +} + +void fn_1_FAE4(omObjData* arg0, StructBss19C* arg1) { + s32 sp8 = 0; + + lbl_1_bss_58[0] = HuAudSeqPlay(0x36); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); + fn_1_EC5C(); + fn_1_F19C(); + fn_1_F910(); + arg1->unk04 = 0; +} + +void fn_1_FD1C(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL); + lbl_1_bss_5E0.unk00 = temp_r3; + lbl_1_bss_5E0.unk04 = (void*) fn_1_FAE4; + lbl_1_bss_5E0.unk00->data = &lbl_1_bss_5E0; + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_5E0.unk04 != NULL) { + lbl_1_bss_5E0.unk04(temp_r3, &lbl_1_bss_5E0); + } + } +} + +void fn_1_FDD0(omObjData* arg0, s32 arg1) { + s32 temp_r29; + + temp_r29 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10; + arg0->model[7] = Hu3DModelCreateFile(lbl_1_data_570[temp_r29 * 6 + arg1].unk00); + arg0->motion[7] = Hu3DMotionIDGet(arg0->model[7]); + if (lbl_1_data_570[temp_r29 * 6 + arg1].unk04 == 1) { + arg0->motion[12] = Hu3DJointMotionFile(arg0->model[7], DATA_MAKE_NUM(DATADIR_MSTORY4, 48)); + } + Hu3DModelPosSet(arg0->model[7], 0.0f, 180.0f, 825.0f); + Hu3DModelAttrSet(arg0->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(arg0->model[7]); + fn_1_1DCC(arg0, 7, 7, 0, 2); + HuDataDirClose(DATADIR_MSTORY4); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base"); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61)); + fn_1_1DCC(arg0, 2, 2, 0, 2); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57)); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 81)); + Hu3DModelShadowSet(arg0->model[5]); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 83)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]); + Hu3DModelPosSet(arg0->model[6], 25.0f, 125.0f, 900.0f); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + fn_1_1DCC(arg0, 6, 6, 0, 2); + arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 96)); + arg0->motion[8] = Hu3DMotionIDGet(arg0->model[8]); + Hu3DModelAttrSet(arg0->model[8], HU3D_ATTR_DISPOFF); + fn_1_1DCC(arg0, 8, 8, 0, 2); + arg0->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 84)); + arg0->motion[9] = Hu3DMotionIDGet(arg0->model[9]); + Hu3DModelPosSet(arg0->model[9], 0.0f, 0.0f, 460.0f); + Hu3DModelShadowSet(arg0->model[9]); + fn_1_1DCC(arg0, 9, 9, 0, 2); + Hu3DModelHookSet(arg0->model[9], "carrier2-target0", arg0->model[5]); + lbl_1_bss_560[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 85 + arg1 * 2), MEMORY_DEFAULT_NUM)); + lbl_1_bss_560[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY, 86 + arg1 * 2), MEMORY_DEFAULT_NUM)); + Hu3DAnimCreate(lbl_1_bss_560[0], lbl_1_bss_5B8.unk00->model[5], "cylinder3"); + Hu3DAnimCreate(lbl_1_bss_560[1], lbl_1_bss_5B8.unk00->model[5], "wakuwaku"); +} + +void fn_1_10298(omObjData* arg0, StructBss19C* arg1) { + Mtx sp8; + + Hu3DData[arg0->model[7]].pos.y = fn_1_ACC(180.0f, 185.0f, arg1->unk08++, 360.0f); + Hu3DModelObjMtxGet(arg0->model[7], "effect", sp8); + Hu3DModelPosSet(arg0->model[8], sp8[0][3], sp8[1][3], sp8[2][3]); + if (arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_10384(omObjData* arg0, StructBss19C* arg1) { + Mtx sp8; + + Hu3DData[arg0->model[7]].pos.y += arg1->unk0C / 100.0f; + Hu3DModelObjMtxGet(arg0->model[7], "effect", sp8); + Hu3DModelPosSet(arg0->model[8], sp8[0][3], sp8[1][3], sp8[2][3]); + arg1->unk0C += 2; +} + +void fn_1_10450(omObjData* arg0, StructBss19C* arg1) { + fn_1_1DCC(arg0, 9, 9, 0, 1); + while (TRUE) { + fn_1_B8C(); + Hu3DData[arg0->model[9]].pos.z += 2.5f; + if (Hu3DData[arg0->model[9]].pos.z >= 670.0f) { + break; + } + } + Hu3DData[arg0->model[9]].pos.z = 670.0f; + Hu3DMotionSpeedSet(arg0->model[9], 0.0f); + arg1->unk04 = 0; +} + +void fn_1_1054C(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL); + lbl_1_bss_5B8.unk00 = temp_r3; + lbl_1_bss_5B8.unk04 = NULL; + fn_1_FDD0(temp_r3, lbl_1_bss_608.unk00); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_5B8.unk04 != NULL) { + lbl_1_bss_5B8.unk04(temp_r3, &lbl_1_bss_5B8); + } + } +} + +void fn_1_105F8(omObjData* arg0, s32 arg1) { + s32 sp1C[] = { + DATA_MAKE_NUM(DATADIR_MSTORY, 0x0061), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x006C), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x0074), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x007C), + DATA_MAKE_NUM(DATADIR_MSTORY, 0x0083) + }; + s32 sp30[][5] = { + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x0062), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0064), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0065), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0067), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0068) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x006D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x006F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0070), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0072), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0073) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x0075), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0077), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0078), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007A), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007B) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x007D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007E), DATA_MAKE_NUM(DATADIR_MSTORY, 0x007F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0081), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0082) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x0084), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0086), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0087), DATA_MAKE_NUM(DATADIR_MSTORY, 0x0089), DATA_MAKE_NUM(DATADIR_MSTORY, 0x008A) } + }; + + arg0->model[1] = Hu3DModelCreateFile(sp1C[arg1]); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][0]); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][1]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][2]); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][3]); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp30[arg1][4]); + Hu3DModelPosSet(arg0->model[1], -120.0f, 0.0f, 670.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 30.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + if (arg1 == 3) { + Hu3DData[arg0->model[1]].pos.y = 50.0f; + } + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 5, 0, 1); + { + s32 sp8[] = { 9, 14, 10, 11, 12 }; + + if (arg1 != 3) { + CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]); + } + } +} + +void fn_1_108F8(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL); + lbl_1_bss_590.unk00 = temp_r3; + lbl_1_bss_590.unk04 = NULL; + fn_1_105F8(temp_r3, lbl_1_bss_608.unk00); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_590.unk04 != NULL) { + lbl_1_bss_590.unk04(temp_r3, &lbl_1_bss_590); + } + } +} + +void fn_1_10C6C(s32 arg0) { + s32 spC[4]; + s32 i; + + spC[0] = 0; + for (i = 1; i < 4; i++) { + spC[i] = spC[i - 1] + 1; + if (spC[i] >= 4) { + spC[i] = 0; + } + if (arg0 == spC[i]) { + lbl_1_bss_608.unk04 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_352C(&lbl_1_bss_608.unk34[i], spC[i]); + } +} + +void fn_1_10D50(omObjData* arg0, s32 arg1) { + s32 temp_r30; + + temp_r30 = lbl_1_bss_608.unk34[lbl_1_bss_608.unk04].unk10; + arg0->model[1] = CharModelCreate(temp_r30, 1); + arg0->motion[1] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[2] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 2)); + arg0->motion[3] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 53)); + arg0->motion[4] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 109)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 24 + temp_r30)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_MSTORY, 32 + temp_r30)); + CharModelMotionDataClose(temp_r30); + Hu3DModelPosSet(arg0->model[1], 120.0f, 0.0f, 670.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, -60.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); +} + +void fn_1_10F24(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1DCC(lbl_1_bss_568.unk00, 1, arg0, arg2, arg3); + if (arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_568.unk00->work[0] = arg4; + lbl_1_bss_568.unk00->work[1] = arg1; + lbl_1_bss_568.unk00->work[2] = arg2 + 1; +} + +void fn_1_10FD0(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_558, 0x100, 16, 16, -1, NULL); + lbl_1_bss_568.unk00 = temp_r3; + lbl_1_bss_568.unk04 = NULL; + lbl_1_bss_568.unk00->data = &lbl_1_bss_568; + fn_1_10D50(temp_r3, lbl_1_bss_608.unk04); // Second argument required to match. + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_568.unk04 != NULL) { + lbl_1_bss_568.unk04(temp_r3, &lbl_1_bss_568); + } + if (temp_r3->work[0] != 0) { + fn_1_E828(temp_r3); + } + } +} + +void fn_1_112A0(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 125.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = -5.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 1750.0f; +} + +void fn_1_1132C(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 100.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1400.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40++, 120.0f, 10.0f); +} + +void fn_1_1141C(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk14 = 0.0f; + var_r31->unk18 = Hu3DData[lbl_1_bss_5B8.unk00->model[7]].pos.y; + var_r31->unk1C = 0.0f; + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = fn_1_828(1100.0f, 1400.0f, var_r31->unk40++, 240.0f); + fn_1_3ABC(var_r31, 30.0f); +} + +void fn_1_11534(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 160.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1100.0f; + fn_1_61E8(var_r31, &sp8, var_r31->unk40++, 10.0f, 5.0f); +} diff --git a/src/REL/mstoryDll/mg_miss.c b/src/REL/mstoryDll/mg_miss.c new file mode 100755 index 00000000..2bfd5f70 --- /dev/null +++ b/src/REL/mstoryDll/mg_miss.c @@ -0,0 +1,446 @@ +#include "REL/mstoryDll.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/printfunc.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ char unk14[0x20]; + /* 0x34 */ StructFn352C unk34[4]; +} StructBss7B4; // Size 0x104 + +void fn_1_12630(void); +void fn_1_129D4(void); +void fn_1_12C94(s32 arg0); +void fn_1_12F20(omObjData* arg0, StructBss19C* arg1); +void fn_1_12FA8(omObjData*, StructBss19C* arg1); +void fn_1_130C0(void); +void fn_1_13570(void); +void fn_1_13880(void); +void fn_1_1390C(void); + +StructBss7B4 lbl_1_bss_7B4; +StructBss19C lbl_1_bss_78C; +StructBss19C lbl_1_bss_764; +StructBss19C lbl_1_bss_73C; +StructBss19C lbl_1_bss_714; +Process* lbl_1_bss_710; + +s32 lbl_1_data_AF8[][3] = { + { MAKE_MESSID(30, 40), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 41), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 42), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 43), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) }, + { MAKE_MESSID(30, 44), MAKE_MESSID(30, 45), MAKE_MESSID(30, 5) } +}; + +void fn_1_11624(Process* arg0, s32 arg1, s32 arg2) { + lbl_1_bss_710 = arg0; + lbl_1_bss_7B4.unk00 = arg1; + lbl_1_bss_7B4.unk10 = arg2; + fn_1_BF4(); + fn_1_3618(0xFF); + fn_1_27E8(lbl_1_bss_710, fn_1_13880); + fn_1_3704(); + fn_1_12C94(arg2); + HuPrcChildCreate(fn_1_129D4, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_130C0, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_13570, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_12630, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_11730(void) { + s32 var_r31 = 16; + s32 var_r30 = 40; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 i; + + while (TRUE) { + fn_1_B8C(); + fontcolor = FONT_COLOR_WHITE; + printWin(var_r31, var_r30, 220, 120, &sp10); + if (lbl_1_bss_78C.unk04 == NULL) { + print8(var_r31, var_r30, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r31, var_r30, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_764.unk04 == NULL) { + print8(var_r31, var_r30 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r31, var_r30 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_73C.unk04 == NULL) { + print8(var_r31, var_r30 + 20, 1.0f, "PROC_PLAYER -> FALSE"); + } else { + print8(var_r31, var_r30 + 20, 1.0f, "PROC_PLAYER -> TRUE"); + } + if (lbl_1_bss_714.unk04 == NULL) { + print8(var_r31, var_r30 + 30, 1.0f, "PROC_SUB -> FALSE"); + } else { + print8(var_r31, var_r30 + 30, 1.0f, "PROC_SUB -> TRUE"); + } + print8(var_r31, var_r30 + 50, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_7B4.unk00, lbl_1_bss_7B4.unk04, lbl_1_bss_7B4.unk10); + print8(var_r31, var_r30 + 70, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(var_r31, var_r30 + 80 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, + lbl_1_bss_7B4.unk34[i].unk00, lbl_1_bss_7B4.unk34[i].unk04, lbl_1_bss_7B4.unk34[i].unk08, + lbl_1_bss_7B4.unk34[i].unk0C, lbl_1_bss_7B4.unk34[i].unk14, lbl_1_bss_7B4.unk34[i].unk10); + } + } +} + +void fn_1_11A8C(void) { + lbl_1_bss_58[0] = HuAudSeqPlay(0x34); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); +} + +void fn_1_11AE8(void) { + s32 spC = 0; + s32 sp8 = 0; + + fn_1_1DCC(lbl_1_bss_73C.unk00, 1, 2, 15, 0); + lbl_1_bss_73C.unk04 = (void*) fn_1_12F20; + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_7B4.unk00][1]); + HuAudCharVoicePlay(lbl_1_bss_7B4.unk34[lbl_1_bss_7B4.unk04].unk10, 0x12E); + lbl_1_bss_7B4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_7B4.unk10); + fn_1_1DCC(lbl_1_bss_714.unk00, 1, 2, 15, 1); + fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][0]); + fn_1_1ACC(lbl_1_bss_7B4.unk08, -1); + fn_1_1CE8(lbl_1_bss_7B4.unk08, MAKE_MESSID(37, 4)); + fn_1_1DCC(lbl_1_bss_714.unk00, 1, 1, 15, 1); + fn_1_1A64(lbl_1_bss_7B4.unk08); +} + +BOOL fn_1_11C6C(void) { + BOOL temp_r31 = FALSE; + + HuWinInsertMesSet(lbl_1_bss_7B4.unk08, MAKE_MESSID(30, 54) + lbl_1_bss_7B4.unk00, 3); + fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][1]); + fn_1_1ACC(lbl_1_bss_7B4.unk08, 5); + lbl_1_bss_7B4.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_7B4.unk10); + fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(30, 53)); + temp_r31 = fn_1_1C34(lbl_1_bss_7B4.unk0C); + fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(37, 4)); + fn_1_7028(lbl_1_bss_7B4.unk0C); + if (temp_r31) { + fn_1_1DCC(lbl_1_bss_73C.unk00, 1, 4, 15, 0); + lbl_1_bss_73C.unk04 = NULL; + fn_1_1DCC(lbl_1_bss_714.unk00, 1, 3, 15, 1); + } + return temp_r31; +} + +BOOL fn_1_11DD8(void) { + s32 temp_r31 = FALSE; + + fn_1_1CE8(lbl_1_bss_7B4.unk08, lbl_1_data_AF8[lbl_1_bss_7B4.unk00][2]); + fn_1_1ACC(lbl_1_bss_7B4.unk08, 5); + lbl_1_bss_7B4.unk0C = fn_1_6EB8(MAKE_MESSID(30, 53), lbl_1_bss_7B4.unk10); + fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(30, 53)); + temp_r31 = fn_1_1B78(lbl_1_bss_7B4.unk0C, 1); + fn_1_1CE8(lbl_1_bss_7B4.unk0C, MAKE_MESSID(37, 4)); + fn_1_7028(lbl_1_bss_7B4.unk0C); + return temp_r31; +} + +void fn_1_11EC4(void) { + lbl_1_bss_73C.unk04 = (void*) fn_1_12FA8; + HuAudSeqFadeOut(lbl_1_bss_58[0], 3000); + fn_1_3804(&lbl_1_bss_4); + fn_1_2710(fn_1_1390C); + fn_1_BAC(150); +} + +void fn_1_11F28(void) { +} + +void fn_1_11F2C(s32 arg0) { + omOvlHisData* var_r30; + OverlayID sp8[] = { OVL_M445, OVL_M448, OVL_M447, OVL_M446, OVL_M449 }; + + if (arg0 != 0) { + fn_1_BAC(60); + HuAudSeqFadeOut(lbl_1_bss_58[0], 1000); + } + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_B8C(); + } while (WipeStatGet() != 0); + fn_1_BAC(60); + CharModelKill(-1); + var_r30 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY, 2, var_r30->stat); + if (arg0 == 0) { + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + omOvlCallEx(sp8[GWSystem.board], 1, 0, 0); + } else { + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_12070(omObjData* arg0, StructBss19C* arg1) { + s32 var_r31; + + fn_1_11A8C(); + fn_1_11AE8(); + lbl_1_bss_7B4.unk08 = fn_1_1834(1, 0, 21, 2, lbl_1_bss_7B4.unk10); + while (TRUE) { + fn_1_B8C(); + if (fn_1_11C6C()) { + var_r31 = 0; + break; + } + if (fn_1_11DD8()) { + var_r31 = 1; + break; + } + } + fn_1_1A64(lbl_1_bss_7B4.unk08); + fn_1_BAC(60); + switch (var_r31) { + case 0: + fn_1_11EC4(); + break; + case 1: + fn_1_11F28(); + break; + } + fn_1_11F2C(var_r31); + arg1->unk04 = NULL; +} + +void fn_1_12630(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL); + lbl_1_bss_78C.unk00 = temp_r3; + lbl_1_bss_78C.unk04 = (void*) fn_1_12070; + lbl_1_bss_78C.unk00->data = &lbl_1_bss_78C; + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_78C.unk04 != NULL) { + lbl_1_bss_78C.unk04(temp_r3, &lbl_1_bss_78C); + } + } +} + +void fn_1_126E4(omObjData* arg0) { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 56)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base"); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 59)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 60)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY, 61)); + fn_1_1DCC(arg0, 2, 2, 0, 2); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 57)); + arg0->model[5] = Hu3DModelCreateFile(lbl_1_bss_7B4.unk00 + DATA_MAKE_NUM(DATADIR_MSTORY, 76)); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[5]); + Hu3DModelPosSet(arg0->model[5], 0.0f, 80.0f, 460.0f); + Hu3DModelShadowSet(arg0->model[5]); + fn_1_1DCC(arg0, 5, 5, 0, 2); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY, 75)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[6]); + Hu3DModelHookSet(arg0->model[5], "stargbox_fix-effect_fook1", arg0->model[6]); + fn_1_1DCC(arg0, 6, 6, 0, 2); +} + +void fn_1_12918(omObjData* arg0, StructBss19C* arg1) { + Hu3DData[arg0->model[5]].pos.y = fn_1_ACC(80.0f, 90.0f, arg1->unk08++, 360.0f); + if (arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_129D4(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL); + lbl_1_bss_764.unk00 = temp_r3; + lbl_1_bss_764.unk04 = (void*) fn_1_12918; + lbl_1_bss_764.unk00->data = &lbl_1_bss_764; + fn_1_126E4(temp_r3); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_764.unk04 != NULL) { + lbl_1_bss_764.unk04(temp_r3, &lbl_1_bss_764); + } + } +} + +void fn_1_12C94(s32 arg0) { + s32 spC[4]; + s32 i; + + spC[0] = 0; + for (i = 1; i < 4; i++) { + spC[i] = spC[i - 1] + 1; + if (spC[i] >= 4) { + spC[i] = 0; + } + if (arg0 == spC[i]) { + lbl_1_bss_7B4.unk04 = i; + } + } + for (i = 0; i < 4; i++) { + fn_1_352C(&lbl_1_bss_7B4.unk34[i], spC[i]); + } +} + +void fn_1_12D78(omObjData* arg0) { + s32 temp_r30; + + temp_r30 = lbl_1_bss_7B4.unk34[lbl_1_bss_7B4.unk04].unk10; + arg0->model[1] = CharModelCreate(temp_r30, 1); + arg0->motion[1] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[2] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 24)); + arg0->motion[3] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 52)); + arg0->motion[4] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 72)); + arg0->motion[5] = CharModelMotionCreate(temp_r30, DATA_MAKE_NUM(DATADIR_MARIOMOT, 53)); + CharModelVoiceEnableSet(temp_r30, arg0->motion[2], 0); + CharModelMotionDataClose(temp_r30); + Hu3DModelPosSet(arg0->model[1], 120.0f, 0.0f, 670.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, -45.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); +} + +void fn_1_12F20(omObjData* arg0, StructBss19C* arg1) { + if (arg0->motion[2] == Hu3DMotionIDGet(arg0->model[1]) && Hu3DMotionEndCheck(arg0->model[1])) { + fn_1_1DCC(arg0, 1, 3, 15, 1); + arg1->unk04 = 0; + } +} + +void fn_1_12FA8(omObjData* arg0, StructBss19C* arg1) { + s32 i; + + fn_1_BAC(10); + fn_1_1DCC(arg0, 1, 5, 15, 0); + fn_1_B8C(); + Hu3DMotionTimeSet(arg0->model[1], 60.0f); + for (i = 0; i < 50; i++) { + fn_1_B8C(); + Hu3DData[arg0->model[1]].rot.y = fn_1_828(-60.0f, -120.0f, i, 60.0f); + } + fn_1_1DCC(arg0, 1, 1, 15, 1); + arg1->unk04 = 0; +} + +void fn_1_130C0(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL); + lbl_1_bss_73C.unk00 = temp_r3; + lbl_1_bss_73C.unk04 = NULL; + lbl_1_bss_73C.unk00->data = &lbl_1_bss_73C; + fn_1_12D78(temp_r3); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_73C.unk04 != NULL) { + lbl_1_bss_73C.unk04(temp_r3, &lbl_1_bss_73C); + } + } +} + +void fn_1_132EC(omObjData* arg0, s32 arg1) { + s32 sp8[] = { + DATA_MAKE_NUM(DATADIR_MSTORY, 97), + DATA_MAKE_NUM(DATADIR_MSTORY, 108), + DATA_MAKE_NUM(DATADIR_MSTORY, 116), + DATA_MAKE_NUM(DATADIR_MSTORY, 124), + DATA_MAKE_NUM(DATADIR_MSTORY, 131) + }; + s32 sp1C[][3] = { + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x62), DATA_MAKE_NUM(DATADIR_MSTORY, 0x65), DATA_MAKE_NUM(DATADIR_MSTORY, 0x67) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x6D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x70), DATA_MAKE_NUM(DATADIR_MSTORY, 0x72) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x75), DATA_MAKE_NUM(DATADIR_MSTORY, 0x78), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7A) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x7D), DATA_MAKE_NUM(DATADIR_MSTORY, 0x7F), DATA_MAKE_NUM(DATADIR_MSTORY, 0x81) }, + { DATA_MAKE_NUM(DATADIR_MSTORY, 0x84), DATA_MAKE_NUM(DATADIR_MSTORY, 0x87), DATA_MAKE_NUM(DATADIR_MSTORY, 0x89) } + }; + + arg0->model[1] = Hu3DModelCreateFile(sp8[arg1]); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][0]); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][1]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp1C[arg1][2]); + Hu3DModelPosSet(arg0->model[1], -120.0f, 0.0f, 670.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 45.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + if (arg1 == 3) { + Hu3DData[arg0->model[1]].pos.y = 50.0f; + } + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1DCC(arg0, 1, 1, 0, 1); +} + +void fn_1_13570(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_710, 0x100, 16, 16, -1, NULL); + lbl_1_bss_714.unk00 = temp_r3; + lbl_1_bss_714.unk04 = NULL; + lbl_1_bss_714.unk00->data = &lbl_1_bss_714; + fn_1_132EC(temp_r3, lbl_1_bss_7B4.unk00); + while (TRUE) { + fn_1_B8C(); + if (lbl_1_bss_714.unk04 != NULL) { + lbl_1_bss_714.unk04(temp_r3, &lbl_1_bss_714); + } + } +} + +void fn_1_13880(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 125.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = -5.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 1750.0f; +} + +void fn_1_1390C(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + if (var_r31->unk40 == 50) { + fn_1_1DCC(lbl_1_bss_764.unk00, 5, 5, 0, 0); + fn_1_1DCC(lbl_1_bss_764.unk00, 6, 6, 0, 0); + HuAudFXPlay(0xA1); + } + sp8.unk08.x = 0.0f; + sp8.unk08.y = 130.0f; + sp8.unk08.z = 460.0f; + sp8.unk20.x = 0.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 150.0f; + fn_1_51D0(var_r31, &sp8, var_r31->unk40, 180.0f, 10.0f); + if (var_r31->unk40++ >= 90) { + if (var_r31->unk40 == 91) { + lbl_1_bss_68 = HuAudFXPlay(0x21); + } + var_r31->unk20.x = fn_1_828(var_r31->unk20.x, -45.0f, var_r31->unk40 - 90, 90.0f); + Hu3DData[lbl_1_bss_764.unk00->model[5]].rot.x = fn_1_828(0.0f, 45.0f, var_r31->unk40 - 90, 90.0f); + } +} diff --git a/src/REL/mstoryDll/save.c b/src/REL/mstoryDll/save.c new file mode 100755 index 00000000..cde06d88 --- /dev/null +++ b/src/REL/mstoryDll/save.c @@ -0,0 +1,116 @@ +#include "REL/mstoryDll.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/hsfman.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +s32 lbl_1_bss_8BC; +Process* lbl_1_bss_8B8; + +s32 fn_1_13B48(s32 arg0) { + if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) { + return 1; + } + if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) { + return 1; + } + if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) { + return 1; + } + if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) { + return 1; + } + if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) { + return 1; + } + if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) { + return 1; + } + return 0; +} + +void fn_1_13C34(void) { + float sp8[2]; + s32 temp_r30; + s32 var_r29; + s32 var_r31; + + temp_r30 = 1; + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + if (SLSaveFlagGet() == 0) { + lbl_1_bss_8BC = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } + } + espInit(); + HuPrcVSleep(); + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0); + espPosSet(var_r29, 288.0f, 240.0f); + espAttrReset(var_r29, 4); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + if (SLSaveFlagGet() == 1) { + HuWinInit(1); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22)); + var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2); + winData[var_r31].active_pad = 1; + HuWinAttrSet(var_r31, 0x10); + HuWinExAnimIn(var_r31); + HuWinMesSet(var_r31, MAKE_MESSID(30, 22)); + temp_r30 = HuWinChoiceGet(var_r31, 0); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + if (SLSaveFlagGet() == 1 && temp_r30 == 0) { + SLCommonSet(); + SLSaveBoardStory(); + SLSave(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_8BC = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_13E2C(void) { + _SetFlag(9); + if (_CheckFlag(FLAG_ID_MAKE(0, 2)) && _CheckFlag(FLAG_ID_MAKE(0, 3)) && _CheckFlag(FLAG_ID_MAKE(0, 4)) && _CheckFlag(FLAG_ID_MAKE(0, 5)) && _CheckFlag(FLAG_ID_MAKE(0, 6))) { + OSReport("########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9)); + HuPrcChildCreate(fn_1_13C34, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_B8C(); + } while (lbl_1_bss_8BC != 1); + omOvlGotoEx(OVL_MSTORY2, 1, 0, 0); + } else { + OSReport("########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9)); + HuPrcChildCreate(fn_1_13C34, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_B8C(); + } while (lbl_1_bss_8BC != 1); + omOvlGotoEx(OVL_MENT, 1, 10, 0); + } + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_14150(Process* arg0) { + lbl_1_bss_8B8 = arg0; + HuPrcChildCreate(fn_1_13E2C, 100, 0x2000, 0, HuPrcCurrentGet()); +} From 806ec24c4eaec3eaa4663f7052229c34fbd9d215 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Thu, 9 Jan 2025 01:00:25 +0100 Subject: [PATCH 04/24] Apply macros and port mstoryDll to every version (#513) * Apply MTXDegToRad macros * Port mstoryDll to every version --- config/GMPE01_00/rels/mstoryDll/symbols.txt | 3 +- config/GMPE01_01/rels/mstoryDll/splits.txt | 4 +- config/GMPE01_01/rels/mstoryDll/symbols.txt | 529 ++++++++++---------- config/GMPJ01_00/rels/mstoryDll/splits.txt | 36 ++ config/GMPJ01_00/rels/mstoryDll/symbols.txt | 520 +++++++++---------- config/GMPP01_00/rels/mstoryDll/splits.txt | 36 ++ config/GMPP01_00/rels/mstoryDll/symbols.txt | 520 +++++++++---------- config/GMPP01_02/rels/mstoryDll/splits.txt | 36 ++ config/GMPP01_02/rels/mstoryDll/symbols.txt | 522 +++++++++---------- configure.py | 12 +- src/REL/m425Dll/main.c | 29 +- src/REL/mstoryDll/save.c | 32 +- 12 files changed, 1196 insertions(+), 1083 deletions(-) diff --git a/config/GMPE01_00/rels/mstoryDll/symbols.txt b/config/GMPE01_00/rels/mstoryDll/symbols.txt index 92563350..93875bb3 100644 --- a/config/GMPE01_00/rels/mstoryDll/symbols.txt +++ b/config/GMPE01_00/rels/mstoryDll/symbols.txt @@ -465,7 +465,8 @@ lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte -lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x3C data:4byte lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x28 data:4byte lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0xA0 diff --git a/config/GMPE01_01/rels/mstoryDll/splits.txt b/config/GMPE01_01/rels/mstoryDll/splits.txt index dc2d5f55..7378f74e 100644 --- a/config/GMPE01_01/rels/mstoryDll/splits.txt +++ b/config/GMPE01_01/rels/mstoryDll/splits.txt @@ -10,13 +10,13 @@ REL/mstoryDll/main.c: .text start:0x00000000 end:0x00007090 .rodata start:0x00000000 end:0x00000108 .data start:0x00000000 end:0x00000190 - .bss start:0x00000000 end:0x00000058 + .bss start:0x00000000 end:0x000000A8 REL/mstoryDll/board_clear.c: .text start:0x00007090 end:0x0000A830 .rodata start:0x00000108 end:0x00000268 .data start:0x00000190 end:0x00000388 - .bss start:0x00000058 end:0x000002C8 + .bss start:0x000000A8 end:0x000002C8 REL/mstoryDll/board_miss.c: .text start:0x0000A830 end:0x0000E710 diff --git a/config/GMPE01_01/rels/mstoryDll/symbols.txt b/config/GMPE01_01/rels/mstoryDll/symbols.txt index 5dd7edd6..225344ab 100644 --- a/config/GMPE01_01/rels/mstoryDll/symbols.txt +++ b/config/GMPE01_01/rels/mstoryDll/symbols.txt @@ -4,7 +4,7 @@ fn_1_A4 = .text:0x000000A4; // type:function size:0x344 _prolog = .text:0x000003E8; // type:function size:0x54 scope:global _epilog = .text:0x0000043C; // type:function size:0x4C scope:global fn_1_488 = .text:0x00000488; // type:function size:0x1D0 -fn_1_658 = .text:0x00000658; // type:function size:0x1D0 +ObjectSetup = .text:0x00000658; // type:function size:0x1D0 fn_1_828 = .text:0x00000828; // type:function size:0x28 fn_1_850 = .text:0x00000850; // type:function size:0x20 fn_1_870 = .text:0x00000870; // type:function size:0xD8 @@ -189,283 +189,284 @@ fn_1_13E2C = .text:0x00013E44; // type:function size:0x324 fn_1_14150 = .text:0x00014168; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC data:4byte -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC data:4byte -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC data:4byte -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 data:byte -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC data:2byte -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 data:4byte -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC data:4byte -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 data:4byte -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 data:4byte -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC data:4byte -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C data:4byte -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:byte -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 data:4byte -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 data:4byte -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC data:4byte -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC data:4byte -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC data:4byte -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC data:4byte -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 data:byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 data:4byte -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 data:4byte -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 data:4byte -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 data:byte -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 data:4byte -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 data:4byte -lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C data:4byte -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:float -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 scope:local +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 scope:local +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 scope:local +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 -lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 data:string -lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 data:string -lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A data:string -lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 data:string +lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 scope:local data:string +lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 scope:local data:string +lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A scope:local data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 scope:local data:string lbl_1_data_100 = .data:0x00000100; // type:object size:0x10 -lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 data:string -lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 data:string -lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 data:string -lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A data:string -lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A data:string -lbl_1_data_17F = .data:0x0000017F; // type:object size:0xE data:string +lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 scope:local data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 scope:local data:string +lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 scope:local data:string +lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A scope:local data:string +lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A scope:local data:string +lbl_1_data_17F = .data:0x0000017F; // type:object size:0xE scope:local data:string lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C -lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 data:string -lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 data:string -lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 data:string -lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 data:string -lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 data:string -lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 data:string -lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 data:string -lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 data:string -lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF data:string -lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C data:string -lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D data:string -lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 data:string -lbl_1_data_329 = .data:0x00000329; // type:object size:0xF data:string -lbl_1_data_338 = .data:0x00000338; // type:object size:0x1A data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 scope:local data:string +lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 scope:local data:string +lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C scope:local data:string +lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D scope:local data:string +lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0xF scope:local data:string +lbl_1_data_338 = .data:0x00000338; // type:object size:0x1A scope:local data:string lbl_1_data_354 = .data:0x00000354; // type:object size:0x30 lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C -lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 data:string -lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 data:string -lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 data:string -lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 data:string -lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 data:string -lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 data:string -lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 data:string -lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 data:string -lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA data:string -lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C data:string -lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D data:string -lbl_1_data_505 = .data:0x00000505; // type:object size:0xF data:string -lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B data:string -lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 data:string -lbl_1_data_537 = .data:0x00000537; // type:object size:0x8 data:string +lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 scope:local data:string +lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 scope:local data:string +lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 scope:local data:string +lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 scope:local data:string +lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 scope:local data:string +lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 scope:local data:string +lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 scope:local data:string +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA scope:local data:string +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C scope:local data:string +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D scope:local data:string +lbl_1_data_505 = .data:0x00000505; // type:object size:0xF scope:local data:string +lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B scope:local data:string +lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 scope:local data:string +lbl_1_data_537 = .data:0x00000537; // type:object size:0x8 scope:local data:string lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 -lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 data:string -lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 data:string -lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 data:string -lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 data:string -lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 data:string -lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 data:string -lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 data:string -lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 data:string -lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF data:string -lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C data:string -lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D data:string -lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C data:string -lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 data:string -lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF data:string -lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 data:string -lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA data:string -lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 data:string -lbl_1_data_AED = .data:0x00000AED; // type:object size:0x7 data:string +lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 scope:local data:string +lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 scope:local data:string +lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 scope:local data:string +lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 scope:local data:string +lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 scope:local data:string +lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 scope:local data:string +lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 scope:local data:string +lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 scope:local data:string +lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF scope:local data:string +lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C scope:local data:string +lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D scope:local data:string +lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C scope:local data:string +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 scope:local data:string +lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF scope:local data:string +lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 scope:local data:string +lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA scope:local data:string +lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 scope:local data:string +lbl_1_data_AED = .data:0x00000AED; // type:object size:0x7 scope:local data:string lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C -lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 data:string -lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 data:string -lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 data:string -lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 data:string -lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 data:string -lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 data:string -lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 data:string -lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 data:string -lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF data:string -lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C data:string -lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D data:string -lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF data:string -lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x1A data:string -lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 data:string +lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 scope:local data:string +lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 scope:local data:string +lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 scope:local data:string +lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 scope:local data:string +lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 scope:local data:string +lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 scope:local data:string +lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 scope:local data:string +lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 scope:local data:string +lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF scope:local data:string +lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C scope:local data:string +lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D scope:local data:string +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF scope:local data:string +lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x1A scope:local data:string +lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0xC data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte -lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x3C lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x28 data:4byte lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0xA0 diff --git a/config/GMPJ01_00/rels/mstoryDll/splits.txt b/config/GMPJ01_00/rels/mstoryDll/splits.txt index 531cd645..14c897fa 100644 --- a/config/GMPJ01_00/rels/mstoryDll/splits.txt +++ b/config/GMPJ01_00/rels/mstoryDll/splits.txt @@ -5,3 +5,39 @@ Sections: .rodata type:rodata align:8 .data type:data align:8 .bss type:bss align:8 + +REL/mstoryDll/main.c: + .text start:0x00000000 end:0x00007090 + .rodata start:0x00000000 end:0x00000108 + .data start:0x00000000 end:0x00000190 + .bss start:0x00000000 end:0x000000A8 + +REL/mstoryDll/board_clear.c: + .text start:0x00007090 end:0x0000A830 + .rodata start:0x00000108 end:0x00000268 + .data start:0x00000190 end:0x00000388 + .bss start:0x000000A8 end:0x000002C8 + +REL/mstoryDll/board_miss.c: + .text start:0x0000A830 end:0x0000E710 + .rodata start:0x00000268 end:0x000003B8 + .data start:0x00000388 end:0x00000570 + .bss start:0x000002C8 end:0x00000558 + +REL/mstoryDll/mg_clear.c: + .text start:0x0000E710 end:0x00011624 + .rodata start:0x000003B8 end:0x000004E0 + .data start:0x00000570 end:0x00000AF8 + .bss start:0x00000558 end:0x00000710 + +REL/mstoryDll/mg_miss.c: + .text start:0x00011624 end:0x00013B48 + .rodata start:0x000004E0 end:0x000005A8 + .data start:0x00000AF8 end:0x00000C50 + .bss start:0x00000710 end:0x000008B8 + +REL/mstoryDll/save.c: + .text start:0x00013B48 end:0x000141A0 + .rodata start:0x000005A8 end:0x000005B8 + .data start:0x00000C50 end:0x00000C98 + .bss start:0x000008B8 end:0x000008C0 diff --git a/config/GMPJ01_00/rels/mstoryDll/symbols.txt b/config/GMPJ01_00/rels/mstoryDll/symbols.txt index e9076690..56357717 100644 --- a/config/GMPJ01_00/rels/mstoryDll/symbols.txt +++ b/config/GMPJ01_00/rels/mstoryDll/symbols.txt @@ -4,7 +4,7 @@ fn_1_A4 = .text:0x000000A4; // type:function size:0x344 _prolog = .text:0x000003E8; // type:function size:0x54 scope:global _epilog = .text:0x0000043C; // type:function size:0x4C scope:global fn_1_488 = .text:0x00000488; // type:function size:0x1D0 -fn_1_658 = .text:0x00000658; // type:function size:0x1D0 +ObjectSetup = .text:0x00000658; // type:function size:0x1D0 fn_1_828 = .text:0x00000828; // type:function size:0x28 fn_1_850 = .text:0x00000850; // type:function size:0x20 fn_1_870 = .text:0x00000870; // type:function size:0xD8 @@ -189,282 +189,284 @@ fn_1_13E2C = .text:0x00013E2C; // type:function size:0x324 fn_1_14150 = .text:0x00014150; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC data:4byte -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC data:4byte -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC data:4byte -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 data:byte -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC data:2byte -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 data:4byte -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC data:4byte -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 data:4byte -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 data:4byte -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC data:4byte -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C data:4byte -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x1 data:byte -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 data:4byte -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 data:4byte -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC data:4byte -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC data:4byte -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC data:4byte -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC data:4byte -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 data:byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 data:4byte -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 data:4byte -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 data:4byte -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 data:byte -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 data:4byte -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 data:4byte -lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C data:4byte -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:float -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 scope:local +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 scope:local +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 scope:local +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 -lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 data:string -lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 data:string -lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A data:string -lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 data:string +lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 scope:local data:string +lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 scope:local data:string +lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A scope:local data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 scope:local data:string lbl_1_data_100 = .data:0x00000100; // type:object size:0x10 -lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 data:string -lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 data:string -lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 data:string -lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A data:string -lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A data:string +lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 scope:local data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 scope:local data:string +lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 scope:local data:string +lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A scope:local data:string +lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A scope:local data:string lbl_1_data_17F = .data:0x0000017F; // type:object size:0x11 lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C -lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 data:string -lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 data:string -lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 data:string -lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 data:string -lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 data:string -lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 data:string -lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 data:string -lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 data:string -lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF data:string -lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C data:string -lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D data:string -lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 data:string -lbl_1_data_329 = .data:0x00000329; // type:object size:0xF data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 scope:local data:string +lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 scope:local data:string +lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C scope:local data:string +lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D scope:local data:string +lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0xF scope:local data:string lbl_1_data_338 = .data:0x00000338; // type:object size:0x1C lbl_1_data_354 = .data:0x00000354; // type:object size:0x34 lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C -lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 data:string -lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 data:string -lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 data:string -lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 data:string -lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 data:string -lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 data:string -lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 data:string -lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 data:string -lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA data:string -lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C data:string -lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D data:string -lbl_1_data_505 = .data:0x00000505; // type:object size:0xF data:string -lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B data:string -lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 data:string +lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 scope:local data:string +lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 scope:local data:string +lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 scope:local data:string +lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 scope:local data:string +lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 scope:local data:string +lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 scope:local data:string +lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 scope:local data:string +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA scope:local data:string +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C scope:local data:string +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D scope:local data:string +lbl_1_data_505 = .data:0x00000505; // type:object size:0xF scope:local data:string +lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B scope:local data:string +lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 scope:local data:string lbl_1_data_537 = .data:0x00000537; // type:object size:0x9 lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 -lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 data:string -lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 data:string -lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 data:string -lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 data:string -lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 data:string -lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 data:string -lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 data:string -lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 data:string -lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF data:string -lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C data:string -lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D data:string -lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C data:string -lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 data:string -lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF data:string -lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 data:string -lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA data:string -lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 data:string +lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 scope:local data:string +lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 scope:local data:string +lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 scope:local data:string +lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 scope:local data:string +lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 scope:local data:string +lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 scope:local data:string +lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 scope:local data:string +lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 scope:local data:string +lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF scope:local data:string +lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C scope:local data:string +lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D scope:local data:string +lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C scope:local data:string +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 scope:local data:string +lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF scope:local data:string +lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 scope:local data:string +lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA scope:local data:string +lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 scope:local data:string lbl_1_data_AED = .data:0x00000AED; // type:object size:0xB lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C -lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 data:string -lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 data:string -lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 data:string -lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 data:string -lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 data:string -lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 data:string -lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 data:string -lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 data:string -lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF data:string -lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C data:string -lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D data:string -lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF data:string +lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 scope:local data:string +lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 scope:local data:string +lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 scope:local data:string +lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 scope:local data:string +lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 scope:local data:string +lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 scope:local data:string +lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 scope:local data:string +lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 scope:local data:string +lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF scope:local data:string +lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C scope:local data:string +lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D scope:local data:string +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF scope:local data:string lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x21 -lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 data:string +lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x54 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte -lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x3C lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x28 data:4byte lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0xA0 diff --git a/config/GMPP01_00/rels/mstoryDll/splits.txt b/config/GMPP01_00/rels/mstoryDll/splits.txt index 531cd645..14c897fa 100644 --- a/config/GMPP01_00/rels/mstoryDll/splits.txt +++ b/config/GMPP01_00/rels/mstoryDll/splits.txt @@ -5,3 +5,39 @@ Sections: .rodata type:rodata align:8 .data type:data align:8 .bss type:bss align:8 + +REL/mstoryDll/main.c: + .text start:0x00000000 end:0x00007090 + .rodata start:0x00000000 end:0x00000108 + .data start:0x00000000 end:0x00000190 + .bss start:0x00000000 end:0x000000A8 + +REL/mstoryDll/board_clear.c: + .text start:0x00007090 end:0x0000A830 + .rodata start:0x00000108 end:0x00000268 + .data start:0x00000190 end:0x00000388 + .bss start:0x000000A8 end:0x000002C8 + +REL/mstoryDll/board_miss.c: + .text start:0x0000A830 end:0x0000E710 + .rodata start:0x00000268 end:0x000003B8 + .data start:0x00000388 end:0x00000570 + .bss start:0x000002C8 end:0x00000558 + +REL/mstoryDll/mg_clear.c: + .text start:0x0000E710 end:0x00011624 + .rodata start:0x000003B8 end:0x000004E0 + .data start:0x00000570 end:0x00000AF8 + .bss start:0x00000558 end:0x00000710 + +REL/mstoryDll/mg_miss.c: + .text start:0x00011624 end:0x00013B48 + .rodata start:0x000004E0 end:0x000005A8 + .data start:0x00000AF8 end:0x00000C50 + .bss start:0x00000710 end:0x000008B8 + +REL/mstoryDll/save.c: + .text start:0x00013B48 end:0x000141A0 + .rodata start:0x000005A8 end:0x000005B8 + .data start:0x00000C50 end:0x00000C98 + .bss start:0x000008B8 end:0x000008C0 diff --git a/config/GMPP01_00/rels/mstoryDll/symbols.txt b/config/GMPP01_00/rels/mstoryDll/symbols.txt index e9076690..0956831b 100644 --- a/config/GMPP01_00/rels/mstoryDll/symbols.txt +++ b/config/GMPP01_00/rels/mstoryDll/symbols.txt @@ -4,7 +4,7 @@ fn_1_A4 = .text:0x000000A4; // type:function size:0x344 _prolog = .text:0x000003E8; // type:function size:0x54 scope:global _epilog = .text:0x0000043C; // type:function size:0x4C scope:global fn_1_488 = .text:0x00000488; // type:function size:0x1D0 -fn_1_658 = .text:0x00000658; // type:function size:0x1D0 +ObjectSetup = .text:0x00000658; // type:function size:0x1D0 fn_1_828 = .text:0x00000828; // type:function size:0x28 fn_1_850 = .text:0x00000850; // type:function size:0x20 fn_1_870 = .text:0x00000870; // type:function size:0xD8 @@ -189,282 +189,284 @@ fn_1_13E2C = .text:0x00013E2C; // type:function size:0x324 fn_1_14150 = .text:0x00014150; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC data:4byte -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC data:4byte -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC data:4byte -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 data:byte -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC data:2byte -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 data:4byte -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC data:4byte -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 data:4byte -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 data:4byte -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC data:4byte -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C data:4byte -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x1 data:byte -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 data:4byte -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 data:4byte -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC data:4byte -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC data:4byte -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC data:4byte -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC data:4byte -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 data:byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 data:4byte -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 data:4byte -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 data:4byte -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 data:byte -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 data:4byte -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 data:4byte -lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C data:4byte -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:float -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 scope:local +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 scope:local +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 scope:local +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 -lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 data:string -lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 data:string -lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A data:string -lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 data:string +lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 scope:local data:string +lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 scope:local data:string +lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A scope:local data:string +lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 scope:local data:string lbl_1_data_100 = .data:0x00000100; // type:object size:0x10 -lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 data:string -lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 data:string -lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 data:string -lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A data:string -lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A data:string +lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 scope:local data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 scope:local data:string +lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 scope:local data:string +lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A scope:local data:string +lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A scope:local data:string lbl_1_data_17F = .data:0x0000017F; // type:object size:0x11 lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C -lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 data:string -lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 data:string -lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 data:string -lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 data:string -lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 data:string -lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 data:string -lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 data:string -lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 data:string -lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF data:string -lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C data:string -lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D data:string -lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 data:string -lbl_1_data_329 = .data:0x00000329; // type:object size:0xF data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 scope:local data:string +lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 scope:local data:string +lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C scope:local data:string +lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D scope:local data:string +lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0xF scope:local data:string lbl_1_data_338 = .data:0x00000338; // type:object size:0x1C lbl_1_data_354 = .data:0x00000354; // type:object size:0x34 lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C -lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 data:string -lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 data:string -lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 data:string -lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 data:string -lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 data:string -lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 data:string -lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 data:string -lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 data:string -lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA data:string -lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C data:string -lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D data:string -lbl_1_data_505 = .data:0x00000505; // type:object size:0xF data:string -lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B data:string -lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 data:string +lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 scope:local data:string +lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 scope:local data:string +lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 scope:local data:string +lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 scope:local data:string +lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 scope:local data:string +lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 scope:local data:string +lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 scope:local data:string +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA scope:local data:string +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C scope:local data:string +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D scope:local data:string +lbl_1_data_505 = .data:0x00000505; // type:object size:0xF scope:local data:string +lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B scope:local data:string +lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 scope:local data:string lbl_1_data_537 = .data:0x00000537; // type:object size:0x9 lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 -lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 data:string -lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 data:string -lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 data:string -lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 data:string -lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 data:string -lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 data:string -lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 data:string -lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 data:string -lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF data:string -lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C data:string -lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D data:string -lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C data:string -lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 data:string -lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF data:string -lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 data:string -lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA data:string -lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 data:string +lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 scope:local data:string +lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 scope:local data:string +lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 scope:local data:string +lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 scope:local data:string +lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 scope:local data:string +lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 scope:local data:string +lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 scope:local data:string +lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 scope:local data:string +lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF scope:local data:string +lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C scope:local data:string +lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D scope:local data:string +lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C scope:local data:string +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 scope:local data:string +lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF scope:local data:string +lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 scope:local data:string +lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA scope:local data:string +lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 scope:local data:string lbl_1_data_AED = .data:0x00000AED; // type:object size:0xB lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C -lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 data:string -lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 data:string -lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 data:string -lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 data:string -lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 data:string -lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 data:string -lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 data:string -lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 data:string -lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF data:string -lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C data:string -lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D data:string -lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF data:string +lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 scope:local data:string +lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 scope:local data:string +lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 scope:local data:string +lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 scope:local data:string +lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 scope:local data:string +lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 scope:local data:string +lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 scope:local data:string +lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 scope:local data:string +lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF scope:local data:string +lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C scope:local data:string +lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D scope:local data:string +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF scope:local data:string lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x21 -lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 data:string +lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x54 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte -lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x3C data:4byte lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x28 data:4byte lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0xA0 diff --git a/config/GMPP01_02/rels/mstoryDll/splits.txt b/config/GMPP01_02/rels/mstoryDll/splits.txt index 531cd645..7378f74e 100644 --- a/config/GMPP01_02/rels/mstoryDll/splits.txt +++ b/config/GMPP01_02/rels/mstoryDll/splits.txt @@ -5,3 +5,39 @@ Sections: .rodata type:rodata align:8 .data type:data align:8 .bss type:bss align:8 + +REL/mstoryDll/main.c: + .text start:0x00000000 end:0x00007090 + .rodata start:0x00000000 end:0x00000108 + .data start:0x00000000 end:0x00000190 + .bss start:0x00000000 end:0x000000A8 + +REL/mstoryDll/board_clear.c: + .text start:0x00007090 end:0x0000A830 + .rodata start:0x00000108 end:0x00000268 + .data start:0x00000190 end:0x00000388 + .bss start:0x000000A8 end:0x000002C8 + +REL/mstoryDll/board_miss.c: + .text start:0x0000A830 end:0x0000E710 + .rodata start:0x00000268 end:0x000003B8 + .data start:0x00000388 end:0x00000570 + .bss start:0x000002C8 end:0x00000558 + +REL/mstoryDll/mg_clear.c: + .text start:0x0000E710 end:0x00011624 + .rodata start:0x000003B8 end:0x000004E0 + .data start:0x00000570 end:0x00000AF8 + .bss start:0x00000558 end:0x00000710 + +REL/mstoryDll/mg_miss.c: + .text start:0x00011624 end:0x00013B48 + .rodata start:0x000004E0 end:0x000005A8 + .data start:0x00000AF8 end:0x00000C50 + .bss start:0x00000710 end:0x000008B8 + +REL/mstoryDll/save.c: + .text start:0x00013B48 end:0x000141B8 + .rodata start:0x000005A8 end:0x000005B8 + .data start:0x00000C50 end:0x00000C98 + .bss start:0x000008B8 end:0x000008C0 diff --git a/config/GMPP01_02/rels/mstoryDll/symbols.txt b/config/GMPP01_02/rels/mstoryDll/symbols.txt index 293cb82c..d7aca560 100644 --- a/config/GMPP01_02/rels/mstoryDll/symbols.txt +++ b/config/GMPP01_02/rels/mstoryDll/symbols.txt @@ -4,7 +4,7 @@ fn_1_A4 = .text:0x000000A4; // type:function size:0x344 _prolog = .text:0x000003E8; // type:function size:0x54 scope:global _epilog = .text:0x0000043C; // type:function size:0x4C scope:global fn_1_488 = .text:0x00000488; // type:function size:0x1D0 -fn_1_658 = .text:0x00000658; // type:function size:0x1D0 +ObjectSetup = .text:0x00000658; // type:function size:0x1D0 fn_1_828 = .text:0x00000828; // type:function size:0x28 fn_1_850 = .text:0x00000850; // type:function size:0x20 fn_1_870 = .text:0x00000870; // type:function size:0xD8 @@ -185,286 +185,288 @@ fn_1_13880 = .text:0x00013880; // type:function size:0x8C fn_1_1390C = .text:0x0001390C; // type:function size:0x23C fn_1_13B48 = .text:0x00013B48; // type:function size:0xEC fn_1_13C34 = .text:0x00013C34; // type:function size:0x210 -fn_1_13E44 = .text:0x00013E44; // type:function size:0x324 -fn_1_14168 = .text:0x00014168; // type:function size:0x50 +fn_1_13E2C = .text:0x00013E44; // type:function size:0x324 +fn_1_14150 = .text:0x00014168; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC data:4byte -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC data:4byte -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC data:4byte -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 data:byte -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC data:2byte -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 data:4byte -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC data:4byte -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 data:4byte -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 data:4byte -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC data:4byte -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C data:4byte -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x1 data:byte -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 data:4byte -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 data:4byte -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC data:4byte -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC data:4byte -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC data:4byte -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC data:4byte -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 data:byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 data:4byte -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 data:4byte -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 data:4byte -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 data:byte -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 data:4byte -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 data:4byte -lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C data:4byte -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:float -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0xC scope:local data:2byte +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x64 scope:local +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x64 scope:local +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x64 scope:local +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x60 -lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 data:string -lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 data:string -lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A data:string +lbl_1_data_60 = .data:0x00000060; // type:object size:0x27 scope:local data:string +lbl_1_data_87 = .data:0x00000087; // type:object size:0x26 scope:local data:string +lbl_1_data_AD = .data:0x000000AD; // type:object size:0x2A scope:local data:string lbl_1_data_D7 = .data:0x000000D7; // type:object size:0x29 data:string lbl_1_data_100 = .data:0x00000100; // type:object size:0x10 -lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 data:string -lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 data:string -lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 data:string -lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A data:string -lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A data:string +lbl_1_data_110 = .data:0x00000110; // type:object size:0x28 scope:local data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 scope:local data:string +lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 scope:local data:string +lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A scope:local data:string +lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A scope:local data:string lbl_1_data_17F = .data:0x0000017F; // type:object size:0x11 lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C -lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 data:string -lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 data:string -lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 data:string -lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 data:string -lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 data:string -lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 data:string -lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 data:string -lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 data:string -lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF data:string -lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C data:string -lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D data:string -lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 data:string -lbl_1_data_329 = .data:0x00000329; // type:object size:0xF data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0x15 scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0x16 scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0x15 scope:local data:string +lbl_1_data_272 = .data:0x00000272; // type:object size:0x17 scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0x16 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x16 scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0x15 scope:local data:string +lbl_1_data_2CA = .data:0x000002CA; // type:object size:0xF scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C scope:local data:string +lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D scope:local data:string +lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0xF scope:local data:string lbl_1_data_338 = .data:0x00000338; // type:object size:0x1C lbl_1_data_354 = .data:0x00000354; // type:object size:0x34 lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C -lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 data:string -lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 data:string -lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 data:string -lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 data:string -lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 data:string -lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 data:string -lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 data:string -lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 data:string -lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA data:string -lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C data:string -lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D data:string -lbl_1_data_505 = .data:0x00000505; // type:object size:0xF data:string -lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B data:string -lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 data:string +lbl_1_data_414 = .data:0x00000414; // type:object size:0x16 scope:local data:string +lbl_1_data_42A = .data:0x0000042A; // type:object size:0x15 scope:local data:string +lbl_1_data_43F = .data:0x0000043F; // type:object size:0x16 scope:local data:string +lbl_1_data_455 = .data:0x00000455; // type:object size:0x15 scope:local data:string +lbl_1_data_46A = .data:0x0000046A; // type:object size:0x16 scope:local data:string +lbl_1_data_480 = .data:0x00000480; // type:object size:0x15 scope:local data:string +lbl_1_data_495 = .data:0x00000495; // type:object size:0x17 scope:local data:string +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x16 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0xA scope:local data:string +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x1C scope:local data:string +lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D scope:local data:string +lbl_1_data_505 = .data:0x00000505; // type:object size:0xF scope:local data:string +lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B scope:local data:string +lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 scope:local data:string lbl_1_data_537 = .data:0x00000537; // type:object size:0x9 lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 -lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 data:string -lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 data:string -lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 data:string -lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 data:string -lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 data:string -lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 data:string -lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 data:string -lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 data:string -lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF data:string -lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C data:string -lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D data:string -lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C data:string -lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 data:string -lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF data:string -lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 data:string -lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA data:string -lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 data:string +lbl_1_data_980 = .data:0x00000980; // type:object size:0x15 scope:local data:string +lbl_1_data_995 = .data:0x00000995; // type:object size:0x14 scope:local data:string +lbl_1_data_9A9 = .data:0x000009A9; // type:object size:0x15 scope:local data:string +lbl_1_data_9BE = .data:0x000009BE; // type:object size:0x14 scope:local data:string +lbl_1_data_9D2 = .data:0x000009D2; // type:object size:0x15 scope:local data:string +lbl_1_data_9E7 = .data:0x000009E7; // type:object size:0x14 scope:local data:string +lbl_1_data_9FB = .data:0x000009FB; // type:object size:0x15 scope:local data:string +lbl_1_data_A10 = .data:0x00000A10; // type:object size:0x14 scope:local data:string +lbl_1_data_A24 = .data:0x00000A24; // type:object size:0xF scope:local data:string +lbl_1_data_A33 = .data:0x00000A33; // type:object size:0x1C scope:local data:string +lbl_1_data_A4F = .data:0x00000A4F; // type:object size:0x1D scope:local data:string +lbl_1_data_A6C = .data:0x00000A6C; // type:object size:0x1C scope:local data:string +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x32 scope:local data:string +lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF scope:local data:string +lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 scope:local data:string +lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA scope:local data:string +lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 scope:local data:string lbl_1_data_AED = .data:0x00000AED; // type:object size:0xB lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C -lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 data:string -lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 data:string -lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 data:string -lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 data:string -lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 data:string -lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 data:string -lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 data:string -lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 data:string -lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF data:string -lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C data:string -lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D data:string -lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF data:string +lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 scope:local data:string +lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 scope:local data:string +lbl_1_data_B5D = .data:0x00000B5D; // type:object size:0x15 scope:local data:string +lbl_1_data_B72 = .data:0x00000B72; // type:object size:0x14 scope:local data:string +lbl_1_data_B86 = .data:0x00000B86; // type:object size:0x15 scope:local data:string +lbl_1_data_B9B = .data:0x00000B9B; // type:object size:0x14 scope:local data:string +lbl_1_data_BAF = .data:0x00000BAF; // type:object size:0x15 scope:local data:string +lbl_1_data_BC4 = .data:0x00000BC4; // type:object size:0x14 scope:local data:string +lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF scope:local data:string +lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C scope:local data:string +lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D scope:local data:string +lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF scope:local data:string lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x21 -lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 data:string +lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x54 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte -lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte +lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x3C data:4byte lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x28 data:4byte lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0xA0 diff --git a/configure.py b/configure.py index a4d446ec..d2b126c7 100644 --- a/configure.py +++ b/configure.py @@ -1398,12 +1398,12 @@ config.libs = [ Rel( "mstoryDll", objects={ - Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/main.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/board_clear.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/board_miss.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/mg_clear.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/mg_miss.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstoryDll/save.c"), + Object(Matching, "REL/mstoryDll/main.c"), + Object(Matching, "REL/mstoryDll/board_clear.c"), + Object(Matching, "REL/mstoryDll/board_miss.c"), + Object(Matching, "REL/mstoryDll/mg_clear.c"), + Object(Matching, "REL/mstoryDll/mg_miss.c"), + Object(Matching, "REL/mstoryDll/save.c"), }, ), Rel( diff --git a/src/REL/m425Dll/main.c b/src/REL/m425Dll/main.c index ae214b28..9fc806f3 100644 --- a/src/REL/m425Dll/main.c +++ b/src/REL/m425Dll/main.c @@ -565,17 +565,17 @@ void fn_1_14CC(Mtx arg0, float arg8, float arg9, float argA) Mtx sp38; Mtx sp8; if (argA != 0.0f) { - PSMTXRotRad(arg0, 0x5A, 0.017453292f * argA); + PSMTXRotRad(arg0, 0x5A, MTXDegToRad(argA)); } else { PSMTXIdentity(arg0); } if (arg8 != 0.0f) { - PSMTXRotRad(sp38, 0x58, 0.017453292f * arg8); + PSMTXRotRad(sp38, 0x58, MTXDegToRad(arg8)); PSMTXConcat(sp38, arg0, arg0); } if (arg9 != 0.0f) { - PSMTXRotRad(sp8, 0x59, 0.017453292f * arg9); + PSMTXRotRad(sp8, 0x59, MTXDegToRad(arg9)); PSMTXConcat(sp8, arg0, arg0); } } @@ -613,23 +613,6 @@ void fn_1_16B0(Mtx var_r30, Vec *var_r31) var_r31->y = fn_1_15EC(var_f25, var_f29); } -static inline float fn_1_1B40_inline(omObjData *object, s32 arg1, s32 arg2, float arg8, float arg9) -{ - float var_f31; - float var_f30; - - var_f30 = sqrtf(arg8); - var_f31 = arg9 + arg8; - if (var_f31 < 0.0f) { - var_f31 += var_f30 + arg2 + arg1; - } - else if (var_f31 >= var_f30) { - var_f31 -= var_f30 + object->group; - } - return var_f31; -} - -// TODO get a working stripped out inline https://decomp.me/scratch/2IbZG void fn_1_1B40(omObjData *object) { Mtx spCC; @@ -698,8 +681,10 @@ void fn_1_1B40(omObjData *object) break; } if (0) { - fn_1_1B40_inline(object, 1, 2, 0.0f, 0.0f); - fn_1_1B40_inline(object, 1, 2, 0.0f, 0.0f); + int x = 12; + int y = 24; + char *str = "%f"; + print8(x, y, 1.5f, str, sqrtf(fn_1_15EC(object->trans.x, object->trans.y))); } var_r31->unk_38 = var_r31->unk_04 * sind(var_r31->unk_18); var_r31->unk_40 = var_r31->unk_04 * cosd(var_r31->unk_18); diff --git a/src/REL/mstoryDll/save.c b/src/REL/mstoryDll/save.c index cde06d88..eb848ba1 100755 --- a/src/REL/mstoryDll/save.c +++ b/src/REL/mstoryDll/save.c @@ -2,6 +2,7 @@ #include "game/data.h" #include "game/esprite.h" #include "game/flag.h" +#include "game/gamework_data.h" #include "game/hsfman.h" #include "game/saveload.h" #include "game/sprite.h" @@ -9,11 +10,12 @@ #include "game/wipe.h" s32 lbl_1_bss_8BC; -Process* lbl_1_bss_8B8; +Process *lbl_1_bss_8B8; -s32 fn_1_13B48(s32 arg0) { +s32 fn_1_13B48(s32 arg0) +{ if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) { - return 1; + return 1; } if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) { return 1; @@ -33,7 +35,8 @@ s32 fn_1_13B48(s32 arg0) { return 0; } -void fn_1_13C34(void) { +void fn_1_13C34(void) +{ float sp8[2]; s32 temp_r30; s32 var_r29; @@ -71,6 +74,9 @@ void fn_1_13C34(void) { HuWinExAnimOut(var_r31); HuWinExCleanup(var_r31); if (SLSaveFlagGet() == 1 && temp_r30 == 0) { +#if VERSION_REV1 + GWGameStat.story_continue = 1; +#endif SLCommonSet(); SLSaveBoardStory(); SLSave(); @@ -87,17 +93,22 @@ void fn_1_13C34(void) { } } -void fn_1_13E2C(void) { +void fn_1_13E2C(void) +{ _SetFlag(9); - if (_CheckFlag(FLAG_ID_MAKE(0, 2)) && _CheckFlag(FLAG_ID_MAKE(0, 3)) && _CheckFlag(FLAG_ID_MAKE(0, 4)) && _CheckFlag(FLAG_ID_MAKE(0, 5)) && _CheckFlag(FLAG_ID_MAKE(0, 6))) { - OSReport("########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9)); + if (_CheckFlag(FLAG_ID_MAKE(0, 2)) && _CheckFlag(FLAG_ID_MAKE(0, 3)) && _CheckFlag(FLAG_ID_MAKE(0, 4)) && _CheckFlag(FLAG_ID_MAKE(0, 5)) + && _CheckFlag(FLAG_ID_MAKE(0, 6))) { + OSReport( + "########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9)); HuPrcChildCreate(fn_1_13C34, 100, 0x2000, 0, HuPrcCurrentGet()); do { fn_1_B8C(); } while (lbl_1_bss_8BC != 1); omOvlGotoEx(OVL_MSTORY2, 1, 0, 0); - } else { - OSReport("########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9)); + } + else { + OSReport( + "########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_13B48(GWSystem.board), _CheckFlag(9)); HuPrcChildCreate(fn_1_13C34, 100, 0x2000, 0, HuPrcCurrentGet()); do { fn_1_B8C(); @@ -110,7 +121,8 @@ void fn_1_13E2C(void) { } } -void fn_1_14150(Process* arg0) { +void fn_1_14150(Process *arg0) +{ lbl_1_bss_8B8 = arg0; HuPrcChildCreate(fn_1_13E2C, 100, 0x2000, 0, HuPrcCurrentGet()); } From 49696ac31b789106eb8cc365d5d48e74582be657 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Thu, 9 Jan 2025 03:51:14 +0100 Subject: [PATCH 05/24] Match m430Dll/main.c (#514) --- config/GMPE01_00/rels/m430Dll/symbols.txt | 616 +++++++++++----------- configure.py | 2 +- include/REL/m430Dll.h | 26 + src/REL/m430Dll/main.c | 569 ++++++++++++++++++++ 4 files changed, 904 insertions(+), 309 deletions(-) create mode 100644 include/REL/m430Dll.h create mode 100644 src/REL/m430Dll/main.c diff --git a/config/GMPE01_00/rels/m430Dll/symbols.txt b/config/GMPE01_00/rels/m430Dll/symbols.txt index b27b88e7..df73f081 100644 --- a/config/GMPE01_00/rels/m430Dll/symbols.txt +++ b/config/GMPE01_00/rels/m430Dll/symbols.txt @@ -115,313 +115,313 @@ fn_1_133A4 = .text:0x000133A4; // type:function size:0x38 fn_1_133DC = .text:0x000133DC; // type:function size:0xB4 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:4byte -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 data:4byte -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x10 data:4byte -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x10 data:4byte -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x10 data:4byte -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:4byte -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x18 data:4byte -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:4byte -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0xC data:4byte -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0xC data:4byte -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0xC data:4byte -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0xC data:4byte -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x18 data:4byte -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x30 data:4byte -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x18 data:4byte -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x8 data:4byte -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x8 data:4byte -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x20 data:4byte -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x14 data:4byte -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x10 data:4byte -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x10 data:4byte -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x1 data:byte -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x1 data:byte -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x1 data:byte -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x1 data:byte -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x1 data:byte -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x1 data:byte -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x1 data:byte -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x1 data:byte -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x1 data:byte -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:4byte -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0xC data:4byte -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 data:double -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x8 data:double -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 data:float -lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 data:float -lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float -lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 data:float -lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 data:double -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:double -lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 data:float -lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 data:float -lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 data:double -lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 data:double -lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float -lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float -lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:double -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float -lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float -lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 data:float -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 data:float -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 data:double -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float -lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:double -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 data:float -lbl_1_rodata_5FC = .rodata:0x000005FC; // type:object size:0x4 data:float -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 data:double -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float -lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 data:float -lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 data:float -lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 data:float -lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 data:float -lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 data:float -lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 data:float -lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 data:double -lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 data:double -lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 data:double -lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 data:float -lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 data:float -lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 data:float -lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 data:float -lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 data:float -lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 data:float -lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x8 data:double -lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x8 data:double -lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 data:float -lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x8 data:double -lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x4 data:float -lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 data:double -lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x8 data:double -lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x8 data:double -lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 data:float -lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 data:float -lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 data:double -lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x4 data:float -lbl_1_rodata_6BC = .rodata:0x000006BC; // type:object size:0x4 data:float -lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 data:double -lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x8 data:double -lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x8 data:double -lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 data:float -lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 data:float -lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0xC scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0xC scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0xC scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0xC scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x18 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x30 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x18 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 scope:local data:double +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x8 scope:local data:double +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 scope:local data:double +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 scope:local data:double +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 scope:local data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 scope:local data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 scope:local data:double +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x8 scope:local data:double +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5FC = .rodata:0x000005FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 scope:local data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 scope:local data:float +lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 scope:local data:float +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 scope:local data:float +lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 scope:local data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 scope:local data:double +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 scope:local data:double +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 scope:local data:float +lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 scope:local data:float +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 scope:local data:float +lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 scope:local data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 scope:local data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x8 scope:local data:double +lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x8 scope:local data:double +lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 scope:local data:float +lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x8 scope:local data:double +lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x4 scope:local data:float +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 scope:local data:double +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6BC = .rodata:0x000006BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0xC lbl_1_data_C = .data:0x0000000C; // type:object size:0xC lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float @@ -461,7 +461,7 @@ lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x2 data:2byte lbl_1_bss_22 = .bss:0x00000022; // type:object size:0x2 data:2byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte -lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x6 data:2byte +lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 data:2byte lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index d2b126c7..23ff3deb 100644 --- a/configure.py +++ b/configure.py @@ -1087,7 +1087,7 @@ config.libs = [ Rel( "m430Dll", # Pair-a-sailing objects={ - Object(NonMatching, "REL/m430Dll/main.c"), + Object(Matching, "REL/m430Dll/main.c"), Object(NonMatching, "REL/m430Dll/water.c"), Object(NonMatching, "REL/m430Dll/player.c"), }, diff --git a/include/REL/m430Dll.h b/include/REL/m430Dll.h new file mode 100644 index 00000000..f6a826a0 --- /dev/null +++ b/include/REL/m430Dll.h @@ -0,0 +1,26 @@ +#ifndef M430DLL_H +#define M430DLL_H + +#include "game/object.h" + +s32 fn_1_4030(void); +u32 fn_1_4058(void); +u32 fn_1_4070(void); +u32 fn_1_4088(void); +void fn_1_40D0(s32 arg0); +void fn_1_4100(s32 arg0); +float fn_1_4130(void); +float fn_1_48B0(float arg8, float arg9, float argA); + +void fn_1_4A80(Process *process); +void fn_1_4C48(void); +float fn_1_7FBC(s32 arg0); +void fn_1_7FFC(s32 arg0, float arg8); +void fn_1_AEE0(s32 arg0, Vec *arg1, float arg8, float arg9); +void fn_1_B570(s32 arg0, Vec *arg1, float arg8, float arg9); +void fn_1_BB98(u32 arg0); + +void fn_1_BBC4(Process *process); +void fn_1_C00C(void); + +#endif diff --git a/src/REL/m430Dll/main.c b/src/REL/m430Dll/main.c new file mode 100644 index 00000000..bf93c2c6 --- /dev/null +++ b/src/REL/m430Dll/main.c @@ -0,0 +1,569 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m430Dll.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#endif + +typedef struct M430DllMainWork { + u32 unk_00; + s32 unk_04; + s32 unk_08; + u32 unk_0C; + s32 unk_10; + u32 unk_14; + s32 unk_18; + s32 unk_1C; + s32 unk_20; + u32 unk_24; + u32 unk_28; + s32 unk_2C; + u32 unk_30; + s32 unk_34; +} M430DllMainWork; /* size = 0x38 */ + +void fn_1_10FC(omObjData *object); +void fn_1_168C(omObjData *object); +void fn_1_1B04(omObjData *object); +void fn_1_21E4(omObjData *object); +void fn_1_2710(omObjData *object); +omObjFunc fn_1_2D48(Process *process, omObjData *object); +void fn_1_2E80(omObjData *object); +omObjFunc fn_1_369C(Process *arg1, omObjData *object); +void fn_1_3768(omObjData *object); +s32 fn_1_4030(void); +void fn_1_65C(omObjData *object); +void fn_1_A54(omObjData *arg0); +void fn_1_B98(omObjData *object); + +Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f }; +Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f }; +Vec lbl_1_data_18 = { 10.0f, 45.0f, 3500.0f }; +GXColor lbl_1_data_24 = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f }; +Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f }; + +Process *lbl_1_bss_38; +omObjData *lbl_1_bss_34; +omObjData *lbl_1_bss_30; +s16 lbl_1_bss_2C; +char lbl_1_bss_28[4]; +s16 lbl_1_bss_26; +s16 lbl_1_bss_24; +s16 lbl_1_bss_22; +s16 lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +s32 lbl_1_bss_14; +s16 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void ObjectSetup(void) +{ + Mtx sp20; + Vec sp14; + Vec sp8; + Process *var_r31; + LightData *var_r30; + + HuAudSndGrpSet(0x37); + lbl_1_bss_C = lbl_1_bss_8 = -1; + lbl_1_bss_4 = lbl_1_bss_0 = -1; + lbl_1_bss_2C = -1; + lbl_1_bss_14 = 1; + lbl_1_data_28.x = 200.0f; + lbl_1_data_28.y = 1200.0f; + lbl_1_data_28.z = 160.0f; + lbl_1_data_34.x = 0.0f; + lbl_1_data_34.y = 1.0f; + lbl_1_data_34.z = 0.0f; + lbl_1_data_40.x = 0.0f; + lbl_1_data_40.y = 0.0f; + lbl_1_data_40.z = 0.0f; + Hu3DShadowCreate(30.0f, 20.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40); + lbl_1_bss_26 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24); + Hu3DGLightInfinitytSet(lbl_1_bss_26); + var_r30 = &Hu3DGlobalLight[lbl_1_bss_26]; + var_r30->unk_00 |= 0x8000; + lbl_1_data_18.x = 34.75f; + lbl_1_data_18.y = -24.75f; + lbl_1_data_18.z = 3500.0f; + sp14.x = sp14.y = sp14.z = 0.0f; + sp8.x = sp8.z = 0.0f; + sp8.y = lbl_1_data_18.z; + mtxRot(sp20, lbl_1_data_18.x, lbl_1_data_18.y, 0.0f); + PSMTXMultVec(sp20, &sp8, &sp8); + Hu3DGLightPosAimSetV(lbl_1_bss_26, &sp8, &sp14); + Hu3DShadowPosSet(&sp8, &lbl_1_data_34, &sp14); + lbl_1_bss_24 = lbl_1_bss_22 = lbl_1_bss_20 = -1; + lbl_1_bss_1C = 1; + lbl_1_bss_18 = 1; + var_r31 = omInitObjMan(0x32, 0x2000); + lbl_1_bss_38 = var_r31; + omGameSysInit(var_r31); + Hu3DCameraCreate(3); + Hu3DCameraPerspectiveSet(1, -1.0f, 5.0f, 25000.0f, 0.6f); + Hu3DCameraPerspectiveSet(2, -1.0f, 5.0f, 25000.0f, 0.6f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(2, 320.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x140, 0x1E0); + Hu3DCameraScissorSet(2, 0x140, 0, 0x140, 0x1E0); + lbl_1_bss_30 = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutViewMulti); + lbl_1_bss_30->work[0] = 2; + lbl_1_bss_34 = omAddObjEx(var_r31, 0xA, 0, 0, -1, fn_1_65C); + fn_1_4A80(var_r31); + fn_1_BBC4(var_r31); + lbl_1_bss_10 = espEntry(0x3D001B, 0x64, 0); + espPosSet(lbl_1_bss_10, 288.0, 240.0); + espScaleSet(lbl_1_bss_10, 0.22499999403953552, 60.0); + espDispOff(lbl_1_bss_10); +} + +void fn_1_65C(omObjData *object) +{ + M430DllMainWork *work; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M430DllMainWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M430DllMainWork)); + work->unk_00 = 0; + work->unk_04 = 0; + work->unk_0C = 0; + work->unk_10 = 0; + work->unk_14 = 0; + work->unk_18 = 0; + work->unk_24 = 0; + work->unk_28 = 0; + work->unk_08 = 0; + work->unk_2C = 0; + work->unk_30 = 0; + work->unk_34 = 0; + object->func = fn_1_B98; +} + +void fn_1_720(omObjData *object) +{ + M430DllMainWork *work = object->data; + work->unk_04++; + work->unk_10++; + work->unk_18++; + work->unk_28++; + if ((omSysExitReq != 0) && (work->unk_00 != 5)) { + work->unk_00 = 4; + fn_1_A54(object); + } + if (lbl_1_bss_18 == 0) { + if (fn_1_4030() != 0) { + if ((Hu3DCamera->fov < 0.0f) || (Hu3DCamera[1].fov < 0.0f)) { + Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 25000.0f, 0.6f); + Hu3DCameraPerspectiveSet(2, 41.5f, 5.0f, 25000.0f, 0.6f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(2, 320.0f, 0.0f, 320.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x140, 0x1E0); + Hu3DCameraScissorSet(2, 0x140, 0, 0x140, 0x1E0); + } + } + else if ((Hu3DCamera->fov < 0.0f) || (Hu3DCamera[1].fov >= 0.0f)) { + Hu3DCamera[1].fov = -1.0f; + Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x280, 0x1E0); + } + } +} + +void fn_1_A54(omObjData *object) +{ + M430DllMainWork *work = object->data; + if (work->unk_08 == 0) { + switch (work->unk_00) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_18 = 0; + work->unk_00 = 1; + work->unk_10 = 0; + object->func = fn_1_2D48(lbl_1_bss_38, object); + break; + case 1: + work->unk_00 = 2; + work->unk_18 = 0; + object->func = fn_1_1B04; + break; + case 2: + work->unk_00 = 3; + work->unk_28 = 0; + object->func = fn_1_369C(lbl_1_bss_38, object); + break; + case 3: + case 4: + work->unk_08 = 1; + work->unk_00 = 5; + object->func = fn_1_10FC; + break; + case 5: + default: + work->unk_00 = 5; + object->func = fn_1_168C; + break; + } + work->unk_04 = 0; + } +} + +void fn_1_B98(omObjData *object) +{ + fn_1_720(object); + fn_1_A54(object); +} + +void fn_1_10FC(omObjData *object) +{ + M430DllMainWork *work = object->data; + fn_1_720(object); + + if (WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_14 = 1; + work->unk_08 = 0; + fn_1_A54(object); + } +} + +void fn_1_168C(omObjData *object) +{ + fn_1_720(object); + if (WipeStatGet() == 0) { + fn_1_C00C(); + fn_1_4C48(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_1B04(omObjData *object) +{ + M430DllMainWork *work = object->data; + fn_1_720(object); + switch (work->unk_14) { + case 0: + lbl_1_bss_1C = 1; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_14 = 0; + espDispOn(lbl_1_bss_10); + work->unk_1C = 0x2D; + work->unk_20 = 0x3C; + CenterM->x = -450.0f; + CenterM[1].x = 450.0f; + CenterM->y = CenterM[1].y = 300.0f; + CenterM->z = CenterM[1].z = 950.0f; + CRotM->x = CRotM[1].x = -5.0f; + CRotM->y = CRotM[1].y = 0.0f; + CZoomM[0] = CZoomM[1] = 700.0f; + work->unk_14 = 1; + work->unk_18 = 0; + object->work[0] = 0; + return; + case 1: + if (object->work[0] == 0) { + if (WipeStatGet() == 0) { + lbl_1_bss_24 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_24, 320.0f, 240.0f); + object->work[0]++; + } + } + else { + if ((lbl_1_bss_4 < 0) && ((MGSeqStatGet(lbl_1_bss_24) & 0x10) != 0)) { + lbl_1_bss_4 = HuAudSeqPlay(0x4A); + } + if ((MGSeqStatGet(lbl_1_bss_24) == 0) && (work->unk_08 == 0)) { + lbl_1_bss_2C = MGSeqCreate(1, work->unk_1C, -1, -1); + work->unk_14 = 2; + work->unk_18 = 0; + object->func = fn_1_21E4; + } + } + break; + } +} + +void fn_1_21E4(omObjData *object) +{ + M430DllMainWork *work = object->data; + s32 var_r27 = 0; + fn_1_720(object); + if (--work->unk_20 == 0) { + work->unk_20 = 0x3C; + work->unk_1C--; + if (work->unk_1C <= 0) { + var_r27 = 1; + } + } + if (var_r27 != 0) { + lbl_1_bss_22 = MGSeqCreate(3, 1); + MGSeqPosSet(lbl_1_bss_22, 320.0f, 240.0f); + HuAudSeqFadeOut(lbl_1_bss_4, 0x64); + object->work[1] = 0; + work->unk_14 = 3; + work->unk_18 = 0; + if (work->unk_08 == 0) { + object->func = fn_1_2710; + } + } + MGSeqParamSet(lbl_1_bss_2C, 1, work->unk_1C); +} + +void fn_1_2710(omObjData *object) +{ + M430DllMainWork *work = object->data; + if (lbl_1_bss_2C >= 0) { + MGSeqParamSet(lbl_1_bss_2C, 2, -1); + lbl_1_bss_2C = -1; + } + fn_1_720(object); + if (object->work[1] == 0) { + if (MGSeqStatGet(lbl_1_bss_22) == 0) { + if (work->unk_08 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_14 = 1; + } + object->work[1]++; + HuAudFXFadeOut(lbl_1_bss_C, 0x1E); + } + } + else if ((WipeStatGet() == 0) && (work->unk_30 == 0x1111)) { + work->unk_14 = 4; + work->unk_18 = 0; + fn_1_A54(object); + } +} + +omObjFunc fn_1_2D48(Process *process, omObjData *object) +{ + CenterM->x = CenterM[1].x = 0.0f; + CenterM->y = CenterM[1].y = 300.0f; + CenterM->z = CenterM[1].z = 950.0f; + CRotM->x = CRotM[1].x = -5.0f; + CRotM->y = CRotM[1].y = 0.0f; + CZoomM[0] = CZoomM[1] = 700.0f; + object->work[0] = object->work[1] = 0; + lbl_1_bss_1C = 0; + lbl_1_bss_C = HuAudFXPlay(0x674); + return fn_1_2E80; +} + +void fn_1_2E80(omObjData *object) +{ + M430DllMainWork *work = object->data; + fn_1_720(object); + work->unk_0C = 1; + object->work[0]++; + switch (object->work[1]) { + case 0: + if (object->work[0] > 180.0f) { + if (work->unk_08 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_14 = 1; + } + object->work[1]++; + object->work[0] = 0; + } + break; + case 1: + if (WipeStatGet() == 0) { + object->work[0] = 0; + work->unk_0C = 2; + fn_1_A54(object); + } + break; + } +} + +omObjFunc fn_1_369C(Process *arg0, omObjData *object) +{ + M430DllMainWork *work = object->data; + s32 spC = 0; + s32 sp8 = 1; + lbl_1_bss_1C = 0; + espDispOff(lbl_1_bss_10); + fn_1_BB98(1); + if (work->unk_08 == 0) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_14 = 0; + } + CenterM->x = 0.0f; + lbl_1_bss_8 = HuAudFXPlay(0x679); + return fn_1_3768; +} + +void fn_1_3768(omObjData *object) +{ + M430DllMainWork *work = object->data; + + fn_1_720(object); + if (WipeStatGet() == 0) { + work->unk_24 = 1; + if (work->unk_28 >= 210.0f) { + work->unk_24 = 2; + fn_1_A54(object); + } + } + else { + work->unk_28 = 0; + } +} + +s32 fn_1_4030(void) +{ + return lbl_1_bss_1C; +} + +u32 fn_1_4040(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_00; +} + +u32 fn_1_4058(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_0C; +} + +u32 fn_1_4070(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_14; +} + +u32 fn_1_4088(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_24; +} + +void fn_1_40A0(s32 arg0) +{ + OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_2C = arg0; +} + +s32 fn_1_40B8(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_2C; +} + +void fn_1_40D0(s32 arg0) +{ + + OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_30 |= (1 << ((arg0 & 3) * 4)); +} + +void fn_1_4100(s32 arg0) +{ + OM_GET_DATA_PTR(lbl_1_bss_34, M430DllMainWork)->unk_34 |= (1 << ((arg0 & 3) * 4)); +} + +float fn_1_4130(void) +{ + M430DllMainWork *work = lbl_1_bss_34->data; + float var_f31 = work->unk_1C - 1; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + var_f31 += 0.016666668f * work->unk_20; + return var_f31; +} + +void fn_1_41F0(Vec *arg0, Vec *arg1) +{ + Vec sp10; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + + sp10.x = arg1->x - arg0->x; + sp10.y = arg1->y - arg0->y; + sp10.z = arg1->z - arg0->z; + Center.x = arg1->x; + Center.y = arg1->y; + Center.z = arg1->z; + CRot.x = atan2d(sp10.y, sqrtf((sp10.x * sp10.x) + (sp10.z * sp10.z))); + CRot.y = atan2d(-sp10.x, -sp10.z); + CRot.z = 0.0f; + CZoom = sqrtf((sp10.z * sp10.z) + ((sp10.x * sp10.x) + (sp10.y * sp10.y))); +} + +void fn_1_4538(float sp8, float spC, float sp10, float sp14, float sp18, float sp1C) +{ + Vec sp40; + Vec sp34; + sp40.x = sp8; + sp40.y = spC; + sp40.z = sp10; + + sp34.x = sp14; + sp34.y = sp18; + sp34.z = sp1C; + fn_1_41F0(&sp40, &sp34); +} + +float fn_1_48B0(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f29; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + var_f29 = fmod(arg8 + (argA * var_f31), 360.0); + var_f31 = var_f29; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +float fn_1_49CC(float arg0, float arg1) +{ + float var_f31; + float var_f30; + + var_f30 = fmod(arg1 - arg0, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} From e9e3683871d6f5e3300a9305db245967d324d2cb Mon Sep 17 00:00:00 2001 From: Liam Coleman Date: Wed, 8 Jan 2025 22:40:16 -0600 Subject: [PATCH 06/24] Match first mstory2 TU (#515) --- config/GMPE01_00/rels/mstory2Dll/symbols.txt | 5 +- configure.py | 2 +- include/REL/mstory2Dll.h | 107 ++ src/REL/mstory2Dll/main.c | 1238 ++++++++++++++++++ 4 files changed, 1349 insertions(+), 3 deletions(-) create mode 100644 include/REL/mstory2Dll.h create mode 100644 src/REL/mstory2Dll/main.c diff --git a/config/GMPE01_00/rels/mstory2Dll/symbols.txt b/config/GMPE01_00/rels/mstory2Dll/symbols.txt index de1259ef..2043c77f 100644 --- a/config/GMPE01_00/rels/mstory2Dll/symbols.txt +++ b/config/GMPE01_00/rels/mstory2Dll/symbols.txt @@ -5,7 +5,7 @@ _prolog = .text:0x00000344; // type:function size:0x54 scope:global _epilog = .text:0x00000398; // type:function size:0x4C scope:global fn_1_3E4 = .text:0x000003E4; // type:function size:0x110 fn_1_4F4 = .text:0x000004F4; // type:function size:0x1B8 -fn_1_6AC = .text:0x000006AC; // type:function size:0x1B8 +ObjectSetup = .text:0x000006AC; // type:function size:0x1B8 fn_1_864 = .text:0x00000864; // type:function size:0x28 fn_1_88C = .text:0x0000088C; // type:function size:0x20 fn_1_8AC = .text:0x000008AC; // type:function size:0xD8 @@ -535,7 +535,8 @@ lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 data:string lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 data:string lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 -lbl_1_data_328 = .data:0x00000328; // type:object size:0x60 +lbl_1_data_328 = .data:0x00000328; // type:object size:0x40 +lbl_1_data_368 = .data:0x00000368; // type:object size:0x20 data:float lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 data:string lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 data:string lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x2C diff --git a/configure.py b/configure.py index 23ff3deb..e0f1746d 100644 --- a/configure.py +++ b/configure.py @@ -1370,7 +1370,7 @@ config.libs = [ Rel( "mstory2Dll", objects={ - Object(NonMatching, "REL/mstory2Dll/main.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/main.c"), Object(NonMatching, "REL/mstory2Dll/board_entrance.c"), Object(NonMatching, "REL/mstory2Dll/board_clear.c"), Object(NonMatching, "REL/mstory2Dll/board_miss.c"), diff --git a/include/REL/mstory2Dll.h b/include/REL/mstory2Dll.h new file mode 100644 index 00000000..839c576d --- /dev/null +++ b/include/REL/mstory2Dll.h @@ -0,0 +1,107 @@ +#ifndef MSTORY2DLL_H +#define MSTORY2DLL_H + +#include "game/object.h" +#include "game/process.h" + +#include "dolphin/types.h" + +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ void (*unk04)(void); + /* 0x08 */ Vec unk08; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ Vec unk20; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ s32 unk40; +} StructBss24; // Size 0x44 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ char unk1C[0x18]; +} StructFn357C; // Size 0x34 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ void (*unk04)(omObjData*, ...); + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ char unk10[0x18]; +} StructBss19C; // Size 0x28 + +// main.c +float fn_1_864(float arg0, float arg1, float arg2, float arg3); +float fn_1_8AC(float arg0, float arg1, float arg2, float arg3); +float fn_1_984(float arg0, float arg1, float arg2, float arg3); +float fn_1_B08(float arg0, float arg1, float arg2, float arg3); +void fn_1_BC8(void); +void fn_1_BE8(s32 arg0); +void fn_1_C30(void); +s32 fn_1_185C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_1A94(s32 arg0); +void fn_1_1AFC(s32 arg0, s32 arg1); +BOOL fn_1_1BA8(s32 arg0, s32 arg1); +BOOL fn_1_1C64(s32 arg0); +void fn_1_1D18(s32 arg0, s32 arg1); +void fn_1_1D4C(s32 arg0, s32 arg1, s32 arg2); +void fn_1_1DFC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_2264(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_2750(void (*arg0)(void)); +void fn_1_2828(Process* arg0, void (*arg1)(void)); +void fn_1_2948(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); +void fn_1_2D00(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); +void fn_1_357C(StructFn357C* arg0, s32 arg1); +s32 fn_1_3668(s32 arg0); +void fn_1_3754(void); +void fn_1_3854(StructBss24* arg0); +void fn_1_3B04(StructBss24* arg0, float arg1); +void fn_1_4FEC(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4); +void fn_1_6004(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4); +int fn_1_66CC(int modelId); + +void fn_1_6704(omObjData* arg0); +void fn_1_6A90(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_6D78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +s32 fn_1_7064(s32 arg0, s32 arg1); +void fn_1_71DC(s32 arg0); +void fn_1_7244(s16 modelId, char *objName, u32 constAttr, float ofs); +void fn_1_7384(int modelId, int charNo, float ofs, s32 maxTime, BOOL flag); + +// board_clear.c +void fn_1_7F54(Process* arg0, s32 arg1); + +// board_clear.c +void fn_1_B3E4(Process* arg0, s32 arg1); + +// board_miss.c +void fn_1_EA2C(Process* arg0, s32 arg1); + +// mg_clear.c +void fn_1_1256C(Process* arg0, s32 arg1); + +// mg_miss.c +void fn_1_16060(Process* arg0, s32 arg1); + +// ending.c +void fn_1_188F0(Process* arg0, s32 arg1); + +// ending.c +void fn_1_1B90C(Process* arg0); + +extern s32 lbl_1_bss_68[]; +extern StructBss24 lbl_1_bss_24; +extern s32 lbl_1_data_0[][4]; + +#endif diff --git a/src/REL/mstory2Dll/main.c b/src/REL/mstory2Dll/main.c new file mode 100644 index 00000000..058b2e4e --- /dev/null +++ b/src/REL/mstory2Dll/main.c @@ -0,0 +1,1238 @@ +#include "REL/mstory2Dll.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/hsfdraw.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/window.h" +#include "game/wipe.h" +#include "game/sprite.h" + +#include "ext_math.h" + +s32 lbl_1_bss_68[3]; // unused +StructBss24 lbl_1_bss_24; +s32 lbl_1_bss_4[8]; +Process* lbl_1_bss_0; + +s32 lbl_1_data_0[][4] = { + { 0x37, 0x38, 0x36, 0x39 }, + { 0x43, 0x45, 0x44, 0x43 }, + { 0x40, 0x42, 0x41, 0x40 }, + { 0x4B, 0x4D, 0x4C, 0x4B }, + { 0x46, 0x48, 0x47, 0x46 }, + { 0x3E, 0x3F, 0x3E, 0x3E }, + {0x3A, 0x3B, 0x3C, 0xFFFFFFFF} +}; + +char* lbl_1_data_144[] = { + "K-1 : KOOPA STORY - BOARD ENTRANCE EVENT", + "K-3 : KOOPA STORY - BOARD CLEAR EVENT", + "K-4 : KOOPA STORY - BOARD MISS EVENT", + "K-5 : KOOPA STORY - MINIGAME CLEAR EVENT", + "K-6 : KOOPA STORY - MINIGAME MISS EVENT", + "--- : ENDING" +}; + +void fn_1_0(omObjData* arg0) { + if (WipeStatGet() == 0) { + arg0->func = NULL; + omOvlReturnEx(1, 1); + } +} + +void fn_1_4C(omObjData* arg0) { + if (omSysExitReq != 0) { + arg0->func = fn_1_0; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + } +} + +void fn_1_A4(void) { + s32 sp14; + s32 var_r30; + s32 var_r31; + s32 sp10; + s32 spC; + s32 sp8; + s32 i; + + var_r30 = 0; + omAddObjEx(lbl_1_bss_0, 0x2000, 0, 0, -1, fn_1_4C); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_BC8(); + } + while (TRUE) { + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + break; + } + if (HuPadStkY[0] <= -30) { + fn_1_BE8(5); + var_r30++; + if (var_r30 >= 6) { + var_r30 = 0; + } + + } + if (HuPadStkY[0] >= 30) { + fn_1_BE8(5); + var_r30--; + if (var_r30 < 0) { + var_r30 = 5; + } + } + fontcolor = FONT_COLOR_WHITE; + print8(24, 100, 1.5f, ">>>>> MPGC STORY 2 - EVENT SELECT <<<<<"); + for (i = 0; i < 6; i++) { + fontcolor = FONT_COLOR_WHITE; + if (var_r30 == i) { + fontcolor = FONT_COLOR_CYAN; + } + print8(24, 130 + i * 15, 1.5f, "%s", lbl_1_data_144[i]); + } + fn_1_BC8(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_BC8(); + } + GWSystem.board = 5; + switch (var_r30) { + case 0: + fn_1_7F54(lbl_1_bss_0, 0); + break; + case 1: + fn_1_B3E4(lbl_1_bss_0, 0); + break; + case 2: + fn_1_EA2C(lbl_1_bss_0, 0); + break; + case 3: + fn_1_1256C(lbl_1_bss_0, 0); + break; + case 4: + fn_1_16060(lbl_1_bss_0, 0); + break; + case 5: + fn_1_188F0(lbl_1_bss_0, 0); + break; + } + while (TRUE) { + fn_1_BC8(); + } +} + +#include "src/REL/executor.c" + +void fn_1_3E4(void) +{ + int gid = HuSprGrpCreate(1); + int sprid = HuTHPSprCreate("movie/endmov_ma0.thp", FALSE, 10); + HuSprGrpMemberSet(gid, 0, sprid); + HuSprPosSet(gid, 0, 288, 240); + HuPrcSleep(5); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while(WipeStatGet()) { + HuPrcVSleep(); + } + while(!HuTHPEndCheck()) { + HuPrcVSleep(); + } + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuTHPClose(); + HuPrcVSleep(); + HuSprGrpKill(gid); + while(1) { + fn_1_BC8(); + } +} + +void fn_1_4F4(void) { + s32 i; + + lbl_1_bss_0 = omInitObjMan(62, 0x2000); + switch (omovlevtno) { + case 0: + fn_1_7F54(lbl_1_bss_0, 0); + break; + + case 1: + for (i = 0; i < 4; i++) { + if (GWPlayerCfg[i].character == GWUnkB1Get()) { + break; + } + } + fn_1_B3E4(lbl_1_bss_0, i); + break; + case 2: + for (i = 0; i < 4; i++) { + if (GWPlayerCfg[i].character == GWUnkB1Get()) { + break; + } + } + fn_1_EA2C(lbl_1_bss_0, i); + break; + case 3: + if (GWPlayerCoinWinGet(0) >= 10) { + fn_1_1256C(lbl_1_bss_0, 0); + } else { + fn_1_16060(lbl_1_bss_0, 0); + } + break; + case 4: + fn_1_188F0(lbl_1_bss_0, 0); + break; + + case 20: + fn_1_1B90C(lbl_1_bss_0); + break; + } +} + +void ObjectSetup(void) { + fn_1_4F4(); +} + +float fn_1_864(float arg0, float arg1, float arg2, float arg3) { + if (arg3 <= arg2) { + return arg1; + } + return arg0 + (arg2 / arg3) * (arg1 - arg0); +} + +float fn_1_88C(float arg0, float arg1, float arg2) { + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +float fn_1_8AC(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * (1.0 - cosd((90.0f / arg3) * arg2)); +} + +float fn_1_984(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((90.0f / arg3) * arg2); +} + +float fn_1_A4C(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((180.0f / arg3) * arg2); +} + +float fn_1_B08(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((360.0f / arg3) * arg2); +} + +void fn_1_BC4(void) { +} + +void fn_1_BC8(void) { + HuPrcVSleep(); +} + +void fn_1_BE8(s32 arg0) { + HuPrcSleep(arg0); +} + +void fn_1_C10(void) { + HuPrcEnd(); +} + +void fn_1_C30(void) { + HuWinInit(1); +} + +void fn_1_C54(void) { +} + +void fn_1_C58(s32 arg0, float arg1, float arg2, s32 arg3) { + WindowData* temp_r29; + float temp_f29; + float temp_f28; + float temp_f25; + float temp_f24; + float temp_f31; + float temp_f27; + float temp_f30; + float temp_f26; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + s32 i; + + temp_r29 = &winData[arg0]; + temp_f29 = temp_r29->pos_x; + temp_f28 = temp_r29->pos_y; + temp_f25 = temp_r29->w; + temp_f24 = temp_r29->h; + temp_f31 = temp_f29 + temp_f25 * arg1; + temp_f27 = 4.0f / temp_f25; + if (temp_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) { + temp_f31 = (temp_f29 + temp_f25) - 4.0f; + } else if (temp_f29 - (temp_f31 - 2.0f) >= 0.0f) { + temp_f31 = temp_f29; + } else { + temp_f31 -= 2.0f; + } + temp_f30 = temp_f28 + temp_f24 * arg2; + temp_f26 = 4.0f / temp_f24; + if (temp_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) { + temp_f30 = (temp_f28 + temp_f24) - 4.0f; + } else if (temp_f28 - (temp_f30 - 2.0f) >= 0.0f) { + temp_f30 = temp_f28; + } else { + temp_f30 -= 2.0f; + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + var_f23 = temp_f31; + var_f21 = temp_f27; + var_f22 = temp_f30; + var_f20 = temp_f26; + } else { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + var_f23 = temp_f29; + var_f21 = 1.0f; + var_f22 = temp_f28; + var_f20 = 1.0f; + } + HuWinDispOn(arg0); + for (i = 0; i <= 15; i++) { + HuPrcVSleep(); + if (arg3 != 0) { + if (i <= 10) { + var_f23 = fn_1_984(temp_f31, temp_f29, i, 10.0f); + var_f21 = fn_1_984(temp_f27, 1.0f, i, 10.0f);; + } else { + var_f22 = fn_1_984(temp_f30, temp_f28, i - 10, 5.0f); + var_f20 = fn_1_984(temp_f26, 1.0f, i - 10, 5.0f); + } + } else { + if (i <= 10) { + var_f22 = fn_1_984(temp_f28, temp_f30, i, 10.0f); + var_f20 = fn_1_984(1.0f, temp_f26, i, 10.0f); + } else { + var_f23 = fn_1_984(temp_f29, temp_f31, i - 10, 5.0f); + var_f21 = fn_1_984(1.0f, temp_f27, i - 10, 5.0f); + } + } + HuWinPosSet(arg0, var_f23, var_f22); + HuWinScaleSet(arg0, var_f21, var_f20); + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + } else { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + } + HuPrcVSleep(); +} + +s32 fn_1_16A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3, float arg4, float arg5, s32 arg6) { + s32 temp_r31; + + arg2 = arg2 * 21 + 16; + arg3 = arg3 * 26 + 16; + if (arg0 == 0) { + arg0 = 550 - arg2; + } else { + arg0 = 1.0f + (576.0f - arg2) / 2.0f; + } + if (arg1 == 0) { + arg1 = 430 - arg3; + } + temp_r31 = HuWinExCreateStyled(arg0, arg1, arg2, arg3, -1, 1); + HuWinMesPalSet(temp_r31, 7, 0, 0, 0); + if (arg6 != -1) { + arg6 = GWPlayerCfg[arg6].pad_idx; + winData[temp_r31].active_pad = (1 << arg6); + } else { + winData[temp_r31].active_pad = 0xF; + } + + fn_1_C58(temp_r31, arg4, arg5, 1); + return temp_r31; +} + +s32 fn_1_185C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + return fn_1_16A0(arg0, arg1, arg2, arg3, 0.5f, 0.5f, arg4); +} + +void fn_1_1A34(s32 arg0, float arg1, float arg2) { + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuPrcVSleep(); + fn_1_C58(arg0, arg1, arg2, 0); + HuWinExCleanup(arg0); +} + +void fn_1_1A94(s32 arg0) { + fn_1_1A34(arg0, 0.5f, 0.5f); +} + +void fn_1_1AFC(s32 arg0, s32 arg1) { + s32 i; + + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +BOOL fn_1_1BA8(s32 arg0, s32 arg1) { + s32 var_r31; + s32 i; + + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + var_r31 = HuWinChoiceGet(arg0, arg1); + HuWinComKeyReset(); + if (var_r31 != 0) { + var_r31 = FALSE; + } else { + var_r31 = TRUE; + } + return var_r31; +} + +BOOL fn_1_1C64(s32 arg0) { + return fn_1_1BA8(arg0, 0); +} + +void fn_1_1D18(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_1D4C(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_1D8C(s16 arg0) { + ModelData* var_r28; + HsfMaterial* var_r31; + HsfData* temp_r30; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + } +} + +void fn_1_1DFC(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_NONE); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_LOOP); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_PAUSE); + break; + } + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; +} + +void fn_1_1F84(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] == Hu3DMotionIDGet(arg0->model[arg1])) { + return; + } + if (arg0->motion[arg2] == Hu3DMotionShiftIDGet(arg0->model[arg1])) { + return; + } + fn_1_1F84(arg0, arg1, arg2, arg3, arg4); +} + +void fn_1_2264(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3) { + HuPrcSleep(arg3 + 1); + do { + HuPrcVSleep(); + } while (arg0->motion[arg2] != Hu3DMotionIDGet(arg0->model[arg1]) || !Hu3DMotionEndCheck(arg0->model[arg1])); +} + +s32 fn_1_22F4(s32 arg0) { + s32 i; + + for (i = 0; i < 4; i++) { + if (arg0 == GWPlayerCfg[i].group) { + break; + } + } + return i; +} + +void fn_1_233C(s32 arg0, s32 arg1) { + while (TRUE) { + if (arg1 & HuPadBtnDown[arg0]) { + break; + } + HuPrcVSleep(); + } +} + +void fn_1_2390(void) { + StructBss24* var_r31; + + var_r31 = &lbl_1_bss_24; + if (HuPadBtn[0] & PAD_BUTTON_B) { + if (HuPadBtn[0] & PAD_TRIGGER_R) { + var_r31->unk08.z -= HuPadStkY[0] / 10.0f; + } else { + var_r31->unk08.x += HuPadStkX[0] / 10.0f; + var_r31->unk08.y += HuPadStkY[0] / 10.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_Y) { + var_r31->unk20.x -= HuPadStkY[0] / 100.0f; + var_r31->unk20.y += HuPadStkX[0] / 100.0f; + if (var_r31->unk20.x < 0.0f) { + var_r31->unk20.x += 360.0f; + } + if (var_r31->unk20.x >= 360.0f) { + var_r31->unk20.x -= 360.0f; + } + if (var_r31->unk20.y < 0.0f) { + var_r31->unk20.y += 360.0f; + } + if (var_r31->unk20.y >= 360.0f) { + var_r31->unk20.y -= 360.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_X) { + var_r31->unk38 -= HuPadStkY[0] / 10.0f; + } + print8(24, 40, 1.5f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk08.x, var_r31->unk08.y, var_r31->unk08.z); + print8(24, 55, 1.5f, "ROT : %.2f, %.2f, %.2f", var_r31->unk20.x, var_r31->unk20.y, var_r31->unk20.z); + print8(24, 70, 1.5f, "ZOOM : %.2f", var_r31->unk38); +} + +void fn_1_2750(void (*arg0)(void)) { + lbl_1_bss_24.unk00 = arg0; +} + +void fn_1_2760(void (*arg0)(void)) { + lbl_1_bss_24.unk04 = arg0; +} + +void fn_1_2770(omObjData* arg0) { + StructBss24* var_r31; + + var_r31 = &lbl_1_bss_24; + if (var_r31->unk00 != NULL) { + var_r31->unk00(); + } + Center.x = var_r31->unk08.x; + Center.y = var_r31->unk08.y; + Center.z = var_r31->unk08.z; + CRot.x = var_r31->unk20.x; + CRot.y = var_r31->unk20.y; + CRot.z = var_r31->unk20.z; + CZoom = var_r31->unk38; +} + +void fn_1_2828(Process* arg0, void (*arg1)(void)) { + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 42.0f, 0.1f, 10000.0f, 1.2f); + lbl_1_bss_24.unk00 = arg1; + lbl_1_bss_24.unk04 = fn_1_2390; + omAddObjEx(arg0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(arg0, 0x7FD9, 0, 0, -1, fn_1_2770); +} + +void fn_1_2948(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + float sp24; + float sp20; + float sp1C; + s32 sp18; + s32 sp14; + float var_f31; + + sp40.x = Hu3DData[arg0->model[arg1]].pos.x; + sp4C.y = sp40.y = Hu3DData[arg0->model[arg1]].pos.y; + sp40.z = Hu3DData[arg0->model[arg1]].pos.z; + sp34.x = arg2.x; + sp34.y = arg2.y; + sp34.z = arg2.z; + sp18 = arg4; + sp28.x = Hu3DData[arg0->model[arg1]].rot.x; + sp28.y = Hu3DData[arg0->model[arg1]].rot.y; + sp28.z = Hu3DData[arg0->model[arg1]].rot.z; + sp1C = 0.0f; + sp20 = arg3; + sp24 = 0.0f; + sp14 = arg5; + var_f31 = -1.1025f; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[3], 0.0f, 5.0f, 0U); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + HuPrcSleep(10); + while (TRUE) { + if (var_f31 >= 1.7f) { + var_f31 = 1.7f; + } + sp4C.y += var_f31 * var_f31 * (var_f31 >= 0.0f ? -17.5f : 17.5f); + if (sp4C.y <= 0.0f && var_f31 > 0.0f) { + sp4C.y = 0.0f; + } + sp4C.x = sp40.x += 6.0 * sind(sp28.y); + sp4C.z = sp40.z += 6.0 * cosd(sp28.y); + Hu3DModelPosSet(arg0->model[1], sp4C.x, sp4C.y, sp4C.z); + Hu3DModelRotSet(arg0->model[1], sp28.x, sp28.y, sp28.z); + HuPrcVSleep(); + if (sp4C.y <= arg2.y && var_f31 > 0.0f) { + break; + } + var_f31 += 0.11f; + } +} + +void fn_1_2D00(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp54; + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + s32 sp14; + s32 temp_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 i; + + var_r26 = 0; + var_r25 = 0; + sp48.x = Hu3DData[arg0->model[arg1]].pos.x; + sp48.y = Hu3DData[arg0->model[arg1]].pos.y; + sp48.z = Hu3DData[arg0->model[arg1]].pos.z; + sp3C.x = arg2.x; + sp3C.y = arg2.y; + sp3C.z = arg2.z; + sp14 = arg4; + sp24.x = Hu3DData[arg0->model[arg1]].rot.x; + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + sp24.z = Hu3DData[arg0->model[arg1]].rot.z; + sp18.x = 0.0f; + sp18.y = arg3; + sp18.z = 0.0f; + if (sp3C.x - sp48.x >= 0.0f) { + var_r24 = 1; + } else { + var_r24 = 0; + } + if (sp3C.z - sp48.z >= 0.0f) { + var_r23 = 1; + } else { + var_r23 = 0; + } + temp_r27 = arg5; + do { + sp30.y = -(atan2d(sp3C.z - sp48.z, sp3C.x - sp48.x) - 90.0); + if (sp30.y < 0.0f) { + sp30.y += 360.0f; + } else if (sp30.y >= 360.0f) { + sp30.y -= 360.0f; + } + if (sp30.y >= 180.0f) { + if (sp24.y - sp30.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp30.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp54.x = sp48.x += 6.0 * sind(sp30.y); + sp54.z = sp48.z += 6.0 * cosd(sp30.y); + if (var_r24 != 0) { + if (sp48.x >= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } else { + if (sp48.x <= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } + if (var_r23 != 0) { + if (sp48.z >= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } else { + if (sp48.z <= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } + sp24.y = fn_1_88C(sp24.y, sp30.y, 10.0f); + Hu3DModelPosSet(arg0->model[1], sp54.x, sp48.y, sp54.z); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } while (var_r25 != 1 || var_r26 != 1); + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + for (i = 0; i <= temp_r27; i++) { + if (sp18.y >= 180.0f) { + if (sp24.y - sp18.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp18.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp24.y = fn_1_864(sp24.y, sp18.y, i, temp_r27); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } +} + +void fn_1_34F4(s16 arg0) { + ModelData* var_r28; + HsfData* temp_r30; + HsfMaterial* var_r31; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + var_r31->litColor[0] = 0xFF; + var_r31->litColor[1] = 0xFF; + var_r31->litColor[2] = 0xFF; + } +} + +void fn_1_357C(StructFn357C* arg0, s32 arg1) { + arg0->unk00 = arg1; + arg0->unk04 = GWPlayerCfg[arg0->unk00].group; + arg0->unk08 = GWPlayerCfg[arg0->unk00].iscom; + arg0->unk0C = GWPlayerCfg[arg0->unk00].diff; + arg0->unk10 = GWPlayerCfg[arg0->unk00].character; + arg0->unk14 = GWPlayerCfg[arg0->unk00].pad_idx; +} + +s32 fn_1_3610(void) { + s32 i; + + for (i = 0; i < 4; i++) { + if (!GWPlayerCfg[i].iscom) { + break; + } + } + if (i == 4) { + return -1; + } + return i; +} + +s32 fn_1_3668(s32 arg0) { + s32 temp_r3 = 0; + + temp_r3 = Hu3DGLightCreate(0.0f, 700.0f, 1200.0f, 0.0f, -1.0f, 0.0f, arg0, arg0, arg0); + Hu3DGLightPosAimSet(temp_r3, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); + Hu3DGLightInfinitytSet(temp_r3); + return temp_r3; +} + +void fn_1_3754(void) { + Vec sp20 = { 0.0f, 3000.0f, 800.0f }; + Vec sp14 = { 0.0f, 0.0f, 640.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); +} + +void fn_1_3818(StructBss24* arg0) { + arg0->unk08.x = arg0->unk14; + arg0->unk08.y = arg0->unk18; + arg0->unk08.z = arg0->unk1C; + arg0->unk20.x = arg0->unk2C; + arg0->unk20.y = arg0->unk30; + arg0->unk20.z = arg0->unk34; + arg0->unk38 = arg0->unk3C; +} + +void fn_1_3854(StructBss24* arg0) { + arg0->unk40 = 0; + arg0->unk14 = arg0->unk08.x; + arg0->unk18 = arg0->unk08.y; + arg0->unk1C = arg0->unk08.z; + arg0->unk2C = arg0->unk20.x; + arg0->unk30 = arg0->unk20.y; + arg0->unk34 = arg0->unk20.z; + arg0->unk3C = arg0->unk38; +} + +void fn_1_3898(StructBss24* arg0, StructBss24* arg1, float arg3) { + arg0->unk08.x = fn_1_88C(arg0->unk08.x, arg1->unk14, arg3); + arg0->unk08.y = fn_1_88C(arg0->unk08.y, arg1->unk18, arg3); + arg0->unk08.z = fn_1_88C(arg0->unk08.z, arg1->unk1C, arg3); + arg0->unk20.x = fn_1_88C(arg0->unk20.x, arg1->unk2C, arg3); + arg0->unk20.y = fn_1_88C(arg0->unk20.y, arg1->unk30, arg3); + arg0->unk20.z = fn_1_88C(arg0->unk20.z, arg1->unk34, arg3); + arg0->unk38 = fn_1_88C(arg0->unk38, arg1->unk3C, arg3); +} + +void fn_1_3B04(StructBss24* arg0, float arg1) { + fn_1_3898(arg0, arg0, arg1); +} + +void fn_1_3D70(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_864(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_864(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_864(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_864(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_864(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_864(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_864(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_3FEC(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + fn_1_3D70(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_42A0(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4) { + fn_1_3D70(arg0, arg1, arg2, arg3); + fn_1_3898(arg0, arg1, arg4); +} + +void fn_1_470C(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_984(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_984(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_984(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_984(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_984(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_984(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_984(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_4B60(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + fn_1_470C(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_4FEC(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4) { + fn_1_470C(arg0, arg1, arg2, arg3); + fn_1_3898(arg0, arg1, arg4); +} + +void fn_1_5644(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_8AC(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_8AC(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_8AC(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_8AC(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_8AC(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_8AC(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_8AC(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_5B08(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3) { + fn_1_5644(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_6004(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4) { + fn_1_5644(arg0, arg1, arg2, arg3); + fn_1_3898(arg0, arg1, arg4); +} + +int fn_1_66CC(int modelId) +{ + return Hu3DMotionMaxTimeGet(modelId); +} + +void fn_1_6704(omObjData* arg0) { + s32 var_r30; + if(arg0->work[0] == 0) { + return; + } + if (arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) { + var_r30 = arg0->work[1]; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[var_r30], 0.0f, 15.0f, 0x40000001U); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_67D8(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1DFC(arg0, 1, arg1, arg3, arg4); + if (arg4 == 0) { + arg0->work[0] = 1; + arg0->work[1] = arg2; + arg0->work[2] = arg3 + 1; + } +} + +void fn_1_6970(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_69A4(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_69E4(s32 arg0, s32 arg1) { + fn_1_1AFC(arg0, arg1); +} + +void fn_1_6A90(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + s32 var_r27 = 0; + s32 var_r29 = 0; + s32 var_r23 = 0; + s32 var_r26; + s32 i; + if(arg2 == -1) { + var_r23 = 1; + arg2 = 0; + } + HuWinMesSet(arg0, arg1); + var_r27 = HuWinKeyWaitNumGet(arg1); + if (arg2 == -1 || arg2 >= var_r27 - 1) { + arg2 = var_r27 - 1; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesSet(arg0, arg1); + for (i = 0; i < var_r27; i++) { + var_r29 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r29 = 1; + } + while (TRUE) { + HuPrcVSleep(); + if (var_r29 != 0) { + if (var_r29 == 1 && HuWinStatGet(arg0) != 1) { + var_r29 = 2; + } else if (var_r29 == 2) { + if(arg3 != -1) { + if(arg4 != -1) { + i=0; + do { + HuPrcVSleep(); + if(i++ == 25) { + HuAudFXPlay(lbl_1_data_0[6][0]); + } + } while(!Hu3DMotionEndCheck(arg3)); + Hu3DMotionShiftSet(arg3, arg4, 0, 1, 0); + HuPrcSleep(15); + } + var_r26 = fn_1_66CC(arg3)-15; + if(var_r23 == 1) { + for(i=0; i 0) { + HuPrcSleep(var_r26); + } + } + } else { + HuPrcSleep(60); + } + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + fn_1_1AFC(arg0, 0); + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuWinComKeyReset(); +} + +void fn_1_6D78(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + fn_1_6A90(arg0, arg1, arg2, arg3, -1); +} + +void fn_1_6DBC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 temp_r28 = 0; + s32 var_r29 = 0; + s32 i; + + HuWinMesSet(arg0, arg1); + temp_r28 = HuWinKeyWaitNumGet(arg1); + if (arg2 == -1 || arg2 >= temp_r28 - 1) { + arg2 = temp_r28 - 1; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesSet(arg0, arg1); + for (i = 0; i < temp_r28; i++) { + var_r29 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r29 = 1; + } + while (TRUE) { + HuPrcVSleep(); + if (var_r29 != 0) { + if (var_r29 == 1 && HuWinStatGet(arg0) != 1) { + var_r29 = 2; + } else if (var_r29 == 2) { + HuPrcSleep(arg3); + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + fn_1_1AFC(arg0, 0); + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuWinComKeyReset(); +} + +BOOL fn_1_6FB0(s32 arg0) { + return fn_1_1BA8(arg0, 0); +} + +s32 fn_1_7064(s32 arg0, s32 arg1) { + float spC[2]; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + s32 var_r31; + + HuWinMesMaxSizeGet(1, spC, arg0); + var_f31 = spC[0]; + var_f30 = spC[1]; + var_f29 = 550.0f - var_f31; + var_f28 = 430.0f - var_f30; + var_r31 = HuWinExCreateStyled(var_f29, var_f28, var_f31, var_f30, -1, 1); + if (arg1 != -1) { + arg1 = GWPlayerCfg[arg1].pad_idx; + winData[var_r31].active_pad = (1 << arg1); + } else { + winData[var_r31].active_pad = 0xF; + } + HuWinMesPalSet(var_r31, 7, 0, 0, 0); + fn_1_C58(var_r31, 0.5f, 0.5f, 1); + return var_r31; +} + +void fn_1_71DC(s32 arg0) { + fn_1_1A34(arg0, 0.5f, 0.5f); +} + +char *lbl_1_data_308[8] = { + "c000m1-ske_head", + "c001m1-ske_head", + "c002m1-ske_head", + "c003m1-ske_head", + "c004m1-ske_head", + "c005m1-ske_head", + "c006m1-ske_head", + "c007m1-ske_head" +}; + +s32 lbl_1_data_328[8][2] = { + 0x200, 0, + 0x200, 0, + 0x200, 0, + 0x200, 0, + 0x200, 0, + 0x200, 0, + 0x200, 0, + 0x200, 0, +}; + +float lbl_1_data_368[8] = { + 194, + 191, + 87.2, + 50.1, + 72, + 83.5, + 87.2, + 64.5 +}; + +void fn_1_7244(s16 modelId, char *objName, u32 constFlags, float ofs) +{ + HsfObject *obj = Hu3DModelObjPtrGet(modelId, objName); + HsfConstData *constData; + if(!obj->constData) { + constData = ObjConstantMake(obj, Hu3DData[modelId].unk_48); + } else { + constData = obj->constData; + } + constData->flags |= constFlags; + if(constFlags & 0x10) { + obj->data.curr.pos.x += ofs; + } + if(constFlags & 0x20) { + obj->data.curr.pos.y += ofs; + } + if(constFlags & 0x40) { + obj->data.curr.pos.z += ofs; + } + if(constFlags & 0x80) { + obj->data.curr.rot.x += ofs; + } + if(constFlags & 0x100) { + obj->data.curr.rot.y += ofs; + } + if(constFlags & 0x200) { + obj->data.curr.rot.z += ofs; + } +} + +void fn_1_7384(int modelId, int charNo, float ofs, s32 maxTime, BOOL flag) +{ + float var_f31 = 0; + float var_f30 = ofs; + s32 i; + if(charNo == 7) { + var_f30 *= 2.5f; + } + if(lbl_1_data_328[charNo][1] == 0) { + var_f30 *= -1; + } + if(flag) { + for(i=0; i Date: Thu, 9 Jan 2025 05:48:18 +0100 Subject: [PATCH 07/24] Match m430Dll/water.c (#516) --- config/GMPE01_00/rels/m430Dll/symbols.txt | 32 +- configure.py | 4 +- include/REL/m430Dll.h | 2 +- src/REL/m430Dll/water.c | 1818 +++++++++++++++++++++ 4 files changed, 1837 insertions(+), 19 deletions(-) create mode 100644 src/REL/m430Dll/water.c diff --git a/config/GMPE01_00/rels/m430Dll/symbols.txt b/config/GMPE01_00/rels/m430Dll/symbols.txt index df73f081..a4b72fe6 100644 --- a/config/GMPE01_00/rels/m430Dll/symbols.txt +++ b/config/GMPE01_00/rels/m430Dll/symbols.txt @@ -252,11 +252,11 @@ lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data: lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x14 scope:local data:4byte lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x10 scope:local data:4byte lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x10 scope:local data:4byte -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x1 scope:local data:byte -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x1 scope:local data:byte -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x1 scope:local data:byte -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x1 scope:local data:byte -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:byte lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float @@ -270,13 +270,13 @@ lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data: lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:byte lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:byte lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x1 scope:local data:byte -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:byte lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float @@ -300,11 +300,11 @@ lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data: lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:float lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0xC scope:local data:float lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 scope:local data:double lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float @@ -429,12 +429,12 @@ lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float -lbl_1_data_50 = .data:0x00000050; // type:object size:0x7 data:string -lbl_1_data_57 = .data:0x00000057; // type:object size:0x7 data:string -lbl_1_data_60 = .data:0x00000060; // type:object size:0x48 +lbl_1_data_50 = .data:0x00000050; // type:object size:0x7 scope:local data:string +lbl_1_data_57 = .data:0x00000057; // type:object size:0x7 scope:local data:string +lbl_1_data_60 = .data:0x00000060; // type:object size:0x48 data:float lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x18 -lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x60 -lbl_1_data_120 = .data:0x00000120; // type:object size:0x48 +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x60 data:float +lbl_1_data_120 = .data:0x00000120; // type:object size:0x48 data:float lbl_1_data_168 = .data:0x00000168; // type:object size:0x8 lbl_1_data_170 = .data:0x00000170; // type:object size:0x38 lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x20 diff --git a/configure.py b/configure.py index e0f1746d..ce78fe3b 100644 --- a/configure.py +++ b/configure.py @@ -1087,8 +1087,8 @@ config.libs = [ Rel( "m430Dll", # Pair-a-sailing objects={ - Object(Matching, "REL/m430Dll/main.c"), - Object(NonMatching, "REL/m430Dll/water.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m430Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m430Dll/water.c"), Object(NonMatching, "REL/m430Dll/player.c"), }, ), diff --git a/include/REL/m430Dll.h b/include/REL/m430Dll.h index f6a826a0..e1a47014 100644 --- a/include/REL/m430Dll.h +++ b/include/REL/m430Dll.h @@ -17,7 +17,7 @@ void fn_1_4C48(void); float fn_1_7FBC(s32 arg0); void fn_1_7FFC(s32 arg0, float arg8); void fn_1_AEE0(s32 arg0, Vec *arg1, float arg8, float arg9); -void fn_1_B570(s32 arg0, Vec *arg1, float arg8, float arg9); +void fn_1_B570(s32 arg0, Vec *arg1, float arg8, float arg9, Vec *arg2); void fn_1_BB98(u32 arg0); void fn_1_BBC4(Process *process); diff --git a/src/REL/m430Dll/water.c b/src/REL/m430Dll/water.c new file mode 100644 index 00000000..1d295c95 --- /dev/null +++ b/src/REL/m430Dll/water.c @@ -0,0 +1,1818 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m430Dll.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/frand.h" + +void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXBool signed_offsets, GXBool replace_mode, GXIndTexMtxID matrix_sel); +#endif + +inline double fabs2(double x) +{ + return (double)fabs(x); +} + +typedef struct M430DllUnkStruct2 { + s32 unk_00; + s16 unk_04; + char unk06[2]; + s16 unk_08; + s16 unk_0A; + Vec unk_0C; + Vec unk_18; + float unk_24; + float unk_28; + float unk_2C; + float unk_30; + float unk_34; + float unk_38; +} M430DllUnkStruct2; /* size 0x3C */ + +typedef struct M430DllWork { + s32 unk_00; + Vec unk_04; + s32 unk_10; + s32 unk_14; + s16 unk_18; + s16 unk_1A; + s16 unk_1C; + s16 unk_1E; + float unk_20; + s16 unk_24[0xC]; + s32 unk_3C; + s16 unk_40[0xA]; + s16 unk_54[0xA]; + s16 unk_68[0xA]; + s32 unk_7C; + s16 unk_80[6]; + s16 unk_8C[6]; + s16 unk_98[6]; + s32 unk_A4[6]; + s32 unk_BC; + M430DllUnkStruct2 *unk_C0; +} M430DllWork; /* size 0xC4 */ + +typedef struct M430DllWork2 { + s16 unk_00; + char unk02[4]; + s16 unk_06; + Vec unk_08; + Vec unk_14; + float unk_20; + float unk_24; + float unk_28; + float unk_2C; + float unk_30; + float unk_34; + float unk_38; + float unk_3C; +} M430DllWork2; /* size 0x40 */ + +typedef struct M430DllBss60Struct { + /* 0x00 */ u32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ u32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ float unk_24; + /* 0x28 */ float unk_28; + /* 0x2C */ Vec *unk_2C; + /* 0x30 */ Vec *unk_30; + /* 0x34 */ void *unk_34; + /* 0x38 */ void *unk_38; + /* 0x3C */ char pad_3C[4]; + /* 0x40 */ s32 unk_40; + /* 0x44 */ Vec *unk_44[2]; + /* 0x4C */ char pad_4C[8]; + /* 0x54 */ GXColor *unk_54[2]; + /* 0x5C */ s32 unk_5C; + /* 0x60 */ void *unk_60; + /* 0x64 */ u32 unk_64; + /* 0x68 */ u32 unk_68; + /* 0x6C */ void *unk_6C; +} M430DllBss60Struct; /* size = 0x70 */ + +void fn_1_4CB4(omObjData *object); +void fn_1_5DF8(omObjData *object); +void fn_1_6180(M430DllWork *arg0); +void fn_1_6540(M430DllWork *arg0); +void fn_1_6754(M430DllWork *arg0); +void fn_1_6DC8(M430DllWork *arg0); +M430DllUnkStruct2 *fn_1_70AC(omObjData *arg0, s32 arg1, s16 arg2); +void fn_1_732C(omObjData *object, M430DllUnkStruct2 *arg1); +void fn_1_76D8(omObjData *object, M430DllUnkStruct2 *arg1); +void fn_1_7848(omObjData *object); +void fn_1_7CAC(omObjData *object); +void fn_1_7EAC(omObjData *object, M430DllWork2 *arg1); +void fn_1_803C(omObjData *object); +void fn_1_8264(omObjData *object); +void fn_1_82F4(omObjData *object, M430DllBss60Struct *arg1); +void fn_1_86B4(omObjData *object, M430DllBss60Struct *arg1); +void fn_1_8B5C(omObjData *object, M430DllBss60Struct *arg1); +void fn_1_8CE0(ModelData *model, Mtx matrix); +void fn_1_963C(ModelData *model, Mtx matrix, u32 arg2); +void fn_1_9C90(ModelData *model, Mtx matrix); +void fn_1_A3A8(ModelData *model, Mtx matrix); +void fn_1_AB98(ModelData *model, Mtx matrix); +void fn_1_AC84(ModelData *model, Mtx matrix); +void fn_1_AD04(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_B394(ModelData *model, ParticleData *particle, Mtx matrix); +float fn_1_BB54(u32 arg0); + +AnimData *lbl_1_bss_150; +AnimData *lbl_1_bss_14C; +AnimData *lbl_1_bss_148; +AnimData *lbl_1_bss_144; +AnimData *lbl_1_bss_140; +M430DllBss60Struct lbl_1_bss_60[2]; +s32 lbl_1_bss_5C; +omObjData *lbl_1_bss_58; +omObjData *lbl_1_bss_54; +omObjData *lbl_1_bss_50; +float lbl_1_bss_4C; +float lbl_1_bss_48; +s32 lbl_1_bss_44; +s32 lbl_1_bss_40; + +void fn_1_4A80(Process *process) +{ + omObjData *object; + + lbl_1_bss_150 = HuSprAnimRead(HuDataReadNum(0x3D0019, 0x10000000)); + lbl_1_bss_14C = HuSprAnimRead(HuDataReadNum(0x3D001A, 0x10000000)); + lbl_1_bss_148 = HuSprAnimRead(HuDataReadNum(0x3D0014, 0x10000000)); + lbl_1_bss_144 = HuSprAnimRead(HuDataReadNum(0x3D0017, 0x10000000)); + lbl_1_bss_140 = HuSprAnimRead(HuDataReadNum(0x3D0018, 0x10000000)); + object = lbl_1_bss_58 = omAddObjEx(process, 0x1E, 0x68, 0, -1, fn_1_4CB4); + object->work[0] = 0; + object = lbl_1_bss_54 = omAddObjEx(process, 0x1E, 7, 0, -1, fn_1_803C); + object->work[0] = 0; + object = lbl_1_bss_50 = omAddObjEx(process, 0x1E, 0, 0, -1, fn_1_7848); + object->work[0] = 0; + lbl_1_bss_5C = 0; + lbl_1_bss_44 = lbl_1_bss_40 = 0; + lbl_1_bss_4C = lbl_1_bss_48 = 0.0f; +} + +void fn_1_4C48(void) +{ + HuSprAnimKill(lbl_1_bss_150); + HuSprAnimKill(lbl_1_bss_14C); + HuSprAnimKill(lbl_1_bss_148); + HuSprAnimKill(lbl_1_bss_144); + HuSprAnimKill(lbl_1_bss_140); +} + +void fn_1_4CB4(omObjData *object) +{ + s32 var_r31; + M430DllWork *var_r30; + s32 var_r28; + s32 var_r27; + HsfData *var_r26; + s32 var_r25; + M430DllWork *work; + + u32 spC[1] = { 0x3D0001 }; + s32 sp8[1]; + u32 sp90[4] = { 0x003D000B, 0x003D000C, 0x003D000D, 0x003D000E }; + u32 sp80[4] = { 0x003D0002, 0x003D0002, 0x003D0003, 0x003D0003 }; + u32 sp70[4] = { 0x003D0004, 0x003D0004, 0x00000000, 0x00000000 }; + u32 sp60[4] = { 0x003D0006, 0x003D0007, 0x003D0008, 0x003D0009 }; + s32 sp50[4]; + s32 sp40[4]; + s32 sp30[4]; + s32 sp20[4]; + s32 sp18[2] = { 1, 2 }; + s32 sp10[2]; + s32 spA0[6] = { 0, 3, 2, 1, 2, 3 }; + + object->stat |= 0x100; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(M430DllWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, 2 * sizeof(M430DllWork)); + for (var_r30 = work, var_r31 = 0; var_r31 < 2; var_r31++, var_r30++) { + var_r30->unk_00 = var_r31; + var_r30->unk_04.x = var_r30->unk_04.y = var_r30->unk_04.z = 0.0f; + var_r30->unk_3C = 0; + var_r30->unk_7C = 0; + var_r30->unk_BC = 0; + } + var_r30 = work; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + object->model[var_r31] = Hu3DModelCreateFile(0x3D0000); + var_r30[var_r31].unk_18 = object->model[var_r31]; + Hu3DModelLayerSet(var_r30[var_r31].unk_18, 0); + Hu3DModelScaleSet(var_r30[var_r31].unk_18, 1.15f, 1.15f, 1.15f); + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x3D000A), 1); + var_r30[var_r31].unk_1A = var_r27; + Hu3DModelLayerSet(var_r27, 1); + *((s16 *)Hu3DData[var_r27].unk_120) = 1; + var_r30[var_r31].unk_1C = Hu3DTexScrollCreate(var_r30[var_r31].unk_18, "pa_sk2"); + var_r30[var_r31].unk_1E = Hu3DTexScrollCreate(var_r30[var_r31].unk_18, "pa_sk3"); + Hu3DTexScrollPosMoveSet(var_r30[var_r31].unk_1C, -0.00009166667f, 0.0f, 0.0f); + Hu3DTexScrollPosMoveSet(var_r30[var_r31].unk_1E, -0.00020000001f, 0.0f, 0.0f); + var_r30[var_r31].unk_20 = 50000.0f; + var_r26 = Hu3DData[var_r30[var_r31].unk_18].hsfData; + for (var_r28 = 0; var_r28 < var_r26->materialCnt; var_r28++) { + var_r26->material[var_r28].flags &= 0xFFFFFDFF; + var_r26->material[var_r28].pass = 1; + var_r26->material[var_r28].invAlpha = 0.001f; + } + } + object->model[2] = Hu3DModelCreateFile(0x3D000F); + Hu3DModelLayerSet(object->model[2], 1); + Hu3DModelScaleSet(object->model[2], 1.5f, 1.5f, 1.5f); + object->model[3] = Hu3DModelCreateFile(0x3D0010); + Hu3DModelLayerSet(object->model[3], 2); + Hu3DModelScaleSet(object->model[3], 1.5f, 1.5f, 1.5f); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x3D0015), 0x64); + object->model[var_r31 + 4] = var_r27; + var_r30[var_r31].unk_10 = var_r27; + Hu3DModelLayerSet(var_r27, 2); + Hu3DParticleColSet(var_r27, 0xFF, 0xFF, 0xFF); + Hu3DParticleHookSet(var_r27, fn_1_AD04); + Hu3DModelPosSet(var_r27, 0.0f, 0.0f, 0.0f); + *((s16 *)Hu3DData[var_r27].unk_120) = 0; + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x3D0015), 0x64); + object->model[var_r31 + 6] = var_r27; + var_r30[var_r31].unk_14 = var_r27; + Hu3DModelLayerSet(var_r27, 1); + Hu3DParticleColSet(var_r27, 0xFF, 0xFF, 0xFF); + Hu3DParticleHookSet(var_r27, fn_1_B394); + Hu3DModelPosSet(var_r27, 0.0f, 0.0f, 0.0f); + *((s16 *)Hu3DData[var_r27].unk_120) = 0; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp20[var_r31] = Hu3DModelCreateFile(sp90[var_r31]); + } + for (var_r31 = 0; var_r31 < 0xC; var_r31++) { + var_r27 = sp20[var_r31 % 4]; + object->model[var_r31 + 8] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x14] = Hu3DModelLink(var_r27); + var_r30[0].unk_24[var_r31] = object->model[var_r31 + 8]; + var_r30[1].unk_24[var_r31] = object->model[var_r31 + 0x14]; + Hu3DModelLayerSet(var_r30[0].unk_24[var_r31], 1); + Hu3DModelLayerSet(var_r30[1].unk_24[var_r31], 1); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp50[var_r31] = Hu3DModelCreateFile(sp80[var_r31]); + sp40[var_r31] = -1; + sp30[var_r31] = -1; + if (sp70[var_r31] != 0) { + sp40[var_r31] = Hu3DModelCreateFile(sp70[var_r31]); + } + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + s32 sp10[2] = { 0x5C, 0x62 }; + var_r25 = spA0[var_r31]; + var_r27 = sp50[var_r25]; + for (var_r28 = 0; var_r28 < 2; var_r28++) { + object->model[var_r31 + sp10[var_r28]] = Hu3DModelLink(var_r27); + var_r30[var_r28].unk_80[var_r31] = object->model[var_r31 + sp10[var_r28]]; + Hu3DModelLayerSet(var_r30[var_r28].unk_80[var_r31], 1); + } + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r30[var_r28].unk_8C[var_r31] = -1; + var_r30[var_r28].unk_98[var_r31] = -1; + } + if (sp40[var_r25] >= 0) { + var_r27 = sp40[var_r25]; + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r30[var_r28].unk_8C[var_r31] = Hu3DModelLink(var_r27); + Hu3DModelLayerSet(var_r30[var_r28].unk_8C[var_r31], 4); + Hu3DModelAttrSet(var_r30[var_r28].unk_8C[var_r31], HU3D_ATTR_ZWRITE_OFF); + } + } + if (sp60[var_r25] != 0) { + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(sp60[var_r25]), 1); + var_r30[var_r28].unk_98[var_r31] = var_r27; + Hu3DModelLayerSet(var_r27, 5); + Hu3DParticleColSet(var_r27, 0xFF, 0xFF, 0xFF); + Hu3DModelPosSet(var_r27, 0.0f, 0.0f, 0.0f); + *((s16 *)Hu3DData[var_r27].unk_120) = 1; + } + } + } + for (var_r31 = 0; var_r31 < 1; var_r31++) { + sp8[var_r31] = Hu3DModelCreateFile(spC[var_r31]); + } + for (var_r31 = 0; var_r31 < 0x1E; var_r31 += 3) { + var_r27 = sp8[frandmod(1)]; + object->model[var_r31 + 0x20] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x21] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x22] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x3E] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x3F] = Hu3DModelLink(var_r27); + object->model[var_r31 + 0x40] = Hu3DModelLink(var_r27); + var_r30->unk_40[var_r31 / 3] = object->model[var_r31 + 0x20]; + var_r30->unk_54[var_r31 / 3] = object->model[var_r31 + 0x21]; + var_r30->unk_68[var_r31 / 3] = object->model[var_r31 + 0x22]; + var_r30[1].unk_40[var_r31 / 3] = object->model[var_r31 + 0x3E]; + var_r30[1].unk_54[var_r31 / 3] = object->model[var_r31 + 0x3F]; + var_r30[1].unk_68[var_r31 / 3] = object->model[var_r31 + 0x40]; + Hu3DModelLayerSet(var_r30->unk_40[var_r31 / 3], 1); + Hu3DModelLayerSet(var_r30->unk_54[var_r31 / 3], 1); + Hu3DModelLayerSet(var_r30->unk_68[var_r31 / 3], 1); + Hu3DModelLayerSet(var_r30[1].unk_40[var_r31 / 3], 1); + Hu3DModelLayerSet(var_r30[1].unk_54[var_r31 / 3], 1); + Hu3DModelLayerSet(var_r30[1].unk_68[var_r31 / 3], 1); + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r30[var_r31].unk_C0 = fn_1_70AC(object, var_r31, 8); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + Hu3DModelKill(sp20[var_r31]); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + Hu3DModelKill(sp50[var_r31]); + if (sp40[var_r31] >= 0) { + Hu3DModelKill(sp40[var_r31]); + } + if (sp30[var_r31] >= 0) { + Hu3DModelKill(sp30[var_r31]); + } + } + for (var_r31 = 0; var_r31 < 1; var_r31++) { + Hu3DModelKill(sp8[var_r31]); + } + for (var_r30 = work, var_r31 = 0; var_r31 < 2; var_r31++, var_r30++) { + Hu3DModelCameraSet(var_r30->unk_18, sp18[var_r31]); + Hu3DModelCameraSet(var_r30->unk_1A, sp18[var_r31]); + Hu3DModelCameraSet(var_r30->unk_10, sp18[var_r31]); + Hu3DModelCameraSet(var_r30->unk_14, sp18[var_r31]); + for (var_r28 = 0; var_r28 < 0xC; var_r28++) { + Hu3DModelCameraSet(var_r30->unk_24[var_r28], sp18[var_r31]); + } + for (var_r28 = 0; var_r28 < 6; var_r28++) { + Hu3DModelCameraSet(var_r30->unk_80[var_r28], sp18[var_r31]); + Hu3DModelAttrSet(var_r30->unk_80[var_r28], HU3D_ATTR_DISPOFF); + if (var_r30->unk_8C[var_r28] >= 0) { + Hu3DModelCameraSet(var_r30->unk_8C[var_r28], sp18[var_r31]); + Hu3DModelAttrSet(var_r30->unk_8C[var_r28], HU3D_ATTR_DISPOFF); + } + if (var_r30->unk_98[var_r28] >= 0) { + Hu3DModelCameraSet(var_r30->unk_98[var_r28], sp18[var_r31]); + Hu3DModelAttrSet(var_r30->unk_98[var_r28], HU3D_ATTR_DISPOFF); + } + } + for (var_r28 = 0; var_r28 < 0xA; var_r28++) { + Hu3DModelCameraSet(var_r30->unk_40[var_r28], sp18[var_r31]); + Hu3DModelCameraSet(var_r30->unk_54[var_r28], sp18[var_r31]); + Hu3DModelCameraSet(var_r30->unk_68[var_r28], sp18[var_r31]); + Hu3DModelAttrSet(var_r30->unk_40[var_r28], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r30->unk_54[var_r28], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r30->unk_68[var_r28], HU3D_ATTR_DISPOFF); + } + } + Hu3DModelCameraSet(object->model[2], sp18[0]); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelCameraSet(object->model[3], sp18[0]); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + object->func = fn_1_5DF8; +} + +void fn_1_5DF8(omObjData *object) +{ + M430DllWork *var_r31; + s32 var_r29; + M430DllWork *work; + + work = object->data; + if ((fn_1_4070() >= 2) && (fn_1_4030() != 0)) { + var_r31 = work; + if ((lbl_1_bss_44 == 0) && (fn_1_4130() < 5.0f)) { + lbl_1_bss_4C = var_r31[0].unk_04.x; + if (lbl_1_bss_4C > var_r31[1].unk_04.x) { + lbl_1_bss_4C = var_r31[1].unk_04.x; + } + lbl_1_bss_44 = 1; + } + if ((lbl_1_bss_40 == 0) && (fn_1_4130() < 1.8f)) { + lbl_1_bss_48 = var_r31[0].unk_04.x; + if (lbl_1_bss_48 > var_r31[1].unk_04.x) { + lbl_1_bss_48 = var_r31[1].unk_04.x; + } + lbl_1_bss_40 = 1; + } + } + for (var_r31 = work, var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + var_r31->unk_04.z = var_r31->unk_04.x; + var_r31->unk_04.x = var_r31->unk_04.y; + fn_1_6180(var_r31); + fn_1_6540(var_r31); + fn_1_6DC8(var_r31); + fn_1_6754(var_r31); + fn_1_732C(object, var_r31->unk_C0); + fn_1_76D8(object, var_r31->unk_C0); + if (var_r29 != 0) { + if (fn_1_4030() != 0) { + Hu3DModelCameraSet(var_r31->unk_10, 2); + Hu3DModelCameraSet(var_r31->unk_14, 2); + } + else { + Hu3DModelCameraSet(var_r31->unk_10, 1); + Hu3DModelCameraSet(var_r31->unk_14, 1); + } + } + } + if (lbl_1_bss_5C != 0) { + Vec sp20 = { 0.0f, 3000.0f, 0.0f }; + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelShadowMapSet(object->model[2]); + Hu3DModelPosSet(object->model[2], 0.0f, 0.0f, fn_1_7FBC(0) - 400.0f); + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[3], 0.0f, 0.0f, fn_1_7FBC(0) - 400.0f); + sp20.z = sp14.z = fn_1_7FBC(0) - 400.0f; + sp20.z += 100.0f; + Hu3DShadowPosSet(&sp20, &sp8, &sp14); + return; + } + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); +} + +void fn_1_6180(M430DllWork *work) +{ + Vec sp28; + Vec sp1C; + Vec sp10; + HsfanimStruct01 *var_r30; + s32 var_r29; + + float sp8[2] = { -450.0f, 450.0f }; + sp1C.x = CenterM[work->unk_00].x; + sp1C.y = CenterM[work->unk_00].y + (CZoomM[work->unk_00] * sind(-CRotM[work->unk_00].x)); + sp1C.z = CenterM[work->unk_00].z + (CZoomM[work->unk_00] * cosd(-CRotM[work->unk_00].x)); + sp28.x = sp1C.x; + sp28.y = 0.0f; + sp28.z = sp1C.z - 450000.0f; + PSVECSubtract(&sp28, &sp1C, &sp10); + PSVECNormalize(&sp10, &sp10); + PSVECScale(&sp10, &sp10, 6000.0f); + PSVECAdd(&sp1C, &sp10, &sp28); + Hu3DModelPosSetV(work->unk_18, &sp28); + if ((fn_1_4070() >= 2) && (fn_1_4030() != 0)) { + if ((lbl_1_bss_40 != 0) && (lbl_1_bss_48 >= work->unk_04.x)) { + if (work->unk_20 > 0.0f) { + work->unk_20 = fn_1_7FBC(work->unk_00) - 23000.0f; + } + sp28.x = 0.0f; + sp28.y = 0.0f; + sp28.z = work->unk_20 - fn_1_7FBC(work->unk_00); + PSVECSubtract(&sp28, &sp1C, &sp10); + PSVECNormalize(&sp10, &sp10); + PSVECScale(&sp10, &sp10, 5000.0f); + PSVECAdd(&sp1C, &sp10, &sp28); + sp28.y += 237.5f; + Hu3DModelPosSet(work->unk_1A, 0.0f, 593.75f, work->unk_20); + var_r30 = ((ParticleData *)Hu3DData[work->unk_1A].unk_120)->unk_48; + var_r30->unk34.x = var_r30->unk34.y = var_r30->unk34.z = 0.0f; + var_r30->unk2C = 2000.0f; + var_r29 = var_r30->unk40.a; + var_r29 += 2; + if (var_r29 > 0xFF) { + var_r29 = 0xFF; + } + var_r30->unk40.a = var_r29; + } + } + else { + var_r30 = ((ParticleData *)Hu3DData[work->unk_1A].unk_120)->unk_48; + var_r30->unk2C = 0.0f; + var_r30->unk40.a = 0; + } + DCStoreRange(var_r30, sizeof(HsfanimStruct01)); +} + +void fn_1_6540(M430DllWork *work) +{ + float var_f31; + float var_f30; + float var_f29; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = 1; + var_f29 = work->unk_04.x; + work->unk_3C = (s32)(fabs2(var_f29) / 1000.0) % 12; + var_r30 = work->unk_3C; + var_f31 = 1000.0f * (s32)(work->unk_04.x / 1000.0f); + var_f30 = 4000.0f; + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { + if (var_r28 != 0) { + Hu3DModelAttrReset(work->unk_24[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(work->unk_24[var_r30], 0.0f, 0.0f, var_f31); + var_f31 -= 1000.0f; + var_f30 -= 1000.0f; + if (var_f30 < 0.0f) { + var_r28 = 0; + } + } + else { + Hu3DModelAttrSet(work->unk_24[var_r30], HU3D_ATTR_DISPOFF); + } + var_r30 = (var_r30 + 1) % 12; + } +} + +void fn_1_6754(M430DllWork *work) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + s32 var_r30; + HsfanimStruct01 *var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r27 = 1; + { + float sp20[6] = { -1800.0f, 2000.0f, -1800.0f, 2000.0f, -1800.0f, 2000.0f }; + Vec2f sp38[6] = { + { -130.0f, 500.0f }, + { 180.0f, 70.0f }, + { 100.0f, 50.0f }, + { -30.000002f, 500.0f }, + { 100.0f, 50.0f }, + { 180.0f, 70.0f }, + }; + float sp8[6] = { 2750.0f, 1550.0f, 1450.0f, 2750.0f, 1450.0f, 1550.0f }; + if (lbl_1_bss_5C != 0) { + var_r27 = 0; + } + if ((fn_1_4070() == 0) || (fn_1_4030() == 0) || (lbl_1_bss_44 == 0) || !(lbl_1_bss_4C > work->unk_04.x)) { + for (var_r28 = 0; var_r28 < 6; var_r28++) { + work->unk_A4[var_r28] = 1; + } + } + var_f26 = work->unk_04.x; + work->unk_BC = (s32)(fabs2(var_f26) / 5000.0) % 6; + var_r30 = work->unk_BC; + var_f31 = 1000.0f + (5000.0f * (s32)(work->unk_04.x / 5000.0f)); + var_f28 = (1000.0f + work->unk_04.x) - 9000.0f; + var_f27 = (1000.0f + work->unk_04.x) - 20000.0f; + for (var_r28 = 0; var_r28 < 6; var_r28++) { + var_r25 = var_r24 = var_r23 = 1; + if ((var_r27 != 0) && (work->unk_A4[var_r30] != 0)) { + if ((var_f31 > var_f28) || ((work->unk_98[var_r30] >= 0) && (var_f31 > var_f27))) { + if (var_f31 > var_f28) { + Hu3DModelAttrReset(work->unk_80[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(work->unk_80[var_r30], sp20[var_r30], 0.0f, var_f31); + if (work->unk_8C[var_r30] >= 0) { + Hu3DModelAttrReset(work->unk_8C[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(work->unk_8C[var_r30], sp20[var_r30], 0.0f, var_f31); + } + var_r25 = var_r24 = 0; + } + if ((work->unk_98[var_r30] >= 0) && (var_f31 > var_f27) && (var_f31 < (1000.0f + var_f28))) { + var_r26 = work->unk_98[var_r30]; + Hu3DModelAttrReset(var_r26, HU3D_ATTR_DISPOFF); + var_r29 = ((ParticleData *)Hu3DData[var_r26].unk_120)->unk_48; + Hu3DModelPosSet(work->unk_98[var_r30], sp20[var_r30] + sp38[var_r30].x, sp38[var_r30].y, var_f31); + var_r29->unk34.x = var_r29->unk34.y = var_r29->unk34.z = 0.0f; + var_r29->unk2C = sp8[var_r30]; + var_r29->unk40.a = -1; + var_f30 = fabs(var_f27 - var_f31); + var_f29 = 1000.0f - (var_f31 - var_f28); + if (var_f30 < 2000.0f) { + var_f30 *= 0.0005f; + var_r29->unk40.a = 255.0f * var_f30; + } + else if (var_f29 < 1000.0f) { + var_f29 *= 0.001f; + var_r29->unk40.a = 255.0f * var_f29; + } + DCStoreRange(var_r29, sizeof(HsfanimStruct01)); + var_r23 = 0; + } + } + } + else { + work->unk_A4[var_r30] = 0; + } + if (var_r25 != 0) { + Hu3DModelAttrSet(work->unk_80[var_r30], HU3D_ATTR_DISPOFF); + } + if ((var_r24 != 0) && (work->unk_8C[var_r30] >= 0)) { + Hu3DModelAttrSet(work->unk_8C[var_r30], HU3D_ATTR_DISPOFF); + } + if ((var_r23 != 0) && (work->unk_98[var_r30] >= 0)) { + Hu3DModelAttrSet(work->unk_98[var_r30], HU3D_ATTR_DISPOFF); + } + var_f31 -= 5000.0f; + if (var_f31 < var_f27) { + var_r27 = 0; + } + var_r30 = (var_r30 + 1) % 6; + } + } +} + +void fn_1_6DC8(M430DllWork *work) +{ + float var_f31; + float var_f30; + float var_f29; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = 1; + if (lbl_1_bss_5C != 0) { + var_r28 = 0; + } + var_f29 = work->unk_04.x; + work->unk_7C = (s32)(fabs2(var_f29) / 1000.0) % 10; + var_r30 = work->unk_7C; + var_f31 = 1000.0f + (1000.0f * (s32)(work->unk_04.x / 1000.0f)); + var_f30 = 8000.0f; + for (var_r29 = 0; var_r29 < 0xA; var_r29++) { + if (var_r28 != 0) { + Hu3DModelAttrReset(work->unk_40[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(work->unk_54[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(work->unk_68[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(work->unk_40[var_r30], -920.0f, 0.0f, var_f31); + Hu3DModelPosSet(work->unk_54[var_r30], 0.0f, 0.0f, var_f31); + Hu3DModelPosSet(work->unk_68[var_r30], 920.0f, 0.0f, var_f31); + var_f31 -= 1000.0f; + var_f30 -= 1000.0f; + if (var_f30 < 0.0f) { + var_r28 = 0; + } + } + else { + Hu3DModelAttrSet(work->unk_40[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(work->unk_54[var_r30], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(work->unk_68[var_r30], HU3D_ATTR_DISPOFF); + } + var_r30 = (var_r30 + 1) % 10; + } +} + +M430DllUnkStruct2 *fn_1_70AC(omObjData *arg0, s32 var_r27, s16 var_r28) +{ + float var_f31; + float var_f30; + float var_f29; + M430DllUnkStruct2 *var_r31; + s32 var_r30; + M430DllUnkStruct2 *var_r29; + + u32 sp10[2] = { 0x003D0011, 0x003D0012 }; + s32 sp8[2] = { 1, 2 }; + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r28 * sizeof(M430DllUnkStruct2), MEMORY_DEFAULT_NUM); + memset(var_r29, 0, var_r28 * 0x3C); + var_f31 = -90.0f; + for (var_r31 = var_r29, var_r30 = 0; var_r30 < var_r28; var_r30++, var_r31++) { + var_r31->unk_00 = var_r27; + var_r31->unk_04 = Hu3DModelCreateFile(sp10[var_r30 & 1]); + Hu3DModelLayerSet(var_r31->unk_04, 1); + Hu3DModelCameraSet(var_r31->unk_04, sp8[var_r31->unk_00]); + var_f30 = frandmod(0x168); + var_f29 = frandmod(0x118); + var_r31->unk_0C.x = var_f29 * sind(var_f30) + fn_1_BB54(var_r27); + var_r31->unk_0C.y = var_f31; + var_r31->unk_0C.z = var_f29 * cosd(var_f30); + var_r31->unk_2C = frandmod(0x168); + var_r31->unk_34 = 1.0f; + var_r31->unk_38 = 0.0f; + var_f31 -= 10.0f; + var_r31->unk_0A = var_r28; + } + return var_r29; +} + +void fn_1_732C(omObjData *object, M430DllUnkStruct2 *arg1) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = arg1->unk_0A; + for (var_r30 = 0; var_r30 < var_r28; var_r30++, arg1++) { + var_r29 = 0; + if (arg1->unk_34 > arg1->unk_38) { + var_r29 = 1; + } + else { + PSVECSubtract(&arg1->unk_18, &arg1->unk_0C, &sp8); + var_f31 = PSVECMag(&sp8); + if (var_f31 < 50.0f) { + var_r29 = 1; + } + } + if (var_r29 != 0) { + var_f31 = frandmod(0x168); + var_f30 = 400.0f + frandmod(0x15E); + arg1->unk_18.x = var_f30 * sind(var_f31) + fn_1_BB54(arg1->unk_00); + arg1->unk_18.z = 2.0 * (var_f30 * cosd(var_f31)); + arg1->unk_18.y = arg1->unk_0C.y; + arg1->unk_34 = 0.0f; + arg1->unk_38 = 200.0f + frandmod(0x258); + arg1->unk_28 = 400.0f; + } + PSVECSubtract(&arg1->unk_18, &arg1->unk_0C, &sp8); + arg1->unk_30 = atan2d(sp8.x, sp8.z); + arg1->unk_2C = fn_1_48B0(arg1->unk_2C, arg1->unk_30, 0.08f); + arg1->unk_28 += 0.05f * (300.0f - arg1->unk_28); + arg1->unk_24 += 0.2f * (arg1->unk_28 - arg1->unk_24); + arg1->unk_0C.x = arg1->unk_0C.x + ((0.016666668f * arg1->unk_24) * sind(arg1->unk_2C)); + arg1->unk_0C.z = arg1->unk_0C.z + ((0.016666668f * arg1->unk_24) * cosd(arg1->unk_2C)); + arg1->unk_34 += 0.016666668f * arg1->unk_24; + } +} + +void fn_1_76D8(omObjData *object, M430DllUnkStruct2 *arg1) +{ + float var_f31; + s32 var_r30; + s32 var_r29; + + var_r29 = arg1->unk_0A; + if (lbl_1_bss_5C != 0) { + for (var_r30 = 0; var_r30 < var_r29; var_r30++, arg1++) { + Hu3DModelAttrSet(arg1->unk_04, HU3D_ATTR_DISPOFF); + } + return; + } + var_f31 = (s32)(0.00011111111f * (1000.0f + fn_1_7FBC(arg1->unk_00))); + var_f31 = (100.0f * (90.0f * var_f31)) - 5000.0f; + for (var_r30 = 0; var_r30 < var_r29; var_r30++, arg1++) { + Hu3DModelPosSet(arg1->unk_04, arg1->unk_0C.x, arg1->unk_0C.y, arg1->unk_0C.z + var_f31); + Hu3DModelRotSet(arg1->unk_04, 0.0f, arg1->unk_2C, 0.0f); + Hu3DModelAttrReset(arg1->unk_04, HU3D_ATTR_DISPOFF); + } +} + +void fn_1_7848(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + M430DllWork2 *var_r31; + s16 var_r30; + s32 var_r29; + M430DllWork2 *work; + s32 var_r26; + + var_r30 = 0x20; + work = HuMemDirectMallocNum(HEAP_SYSTEM, var_r30 * sizeof(M430DllWork2), MEMORY_DEFAULT_NUM); + object->data = work; + memset(work, 0, var_r30 * sizeof(M430DllWork2)); + var_r26 = Hu3DModelCreateFile(0x3D0013); + var_f29 = 1000.0f; + for (var_r31 = work, var_r29 = 0; var_r29 < var_r30; var_r29++, var_r31++) { + var_r31->unk_00 = Hu3DModelLink(var_r26); + Hu3DModelLayerSet(var_r31->unk_00, 1); + Hu3DModelCameraSet(var_r31->unk_00, 1); + Hu3DModelAttrSet(var_r31->unk_00, HU3D_ATTR_DISPOFF); + var_r31->unk_14.x = (2.8f * frandmod(0x3E8)) - 1400.0f; + var_r31->unk_14.z = 0.7f * frandmod(0x3E8) - 350.0f; + var_r31->unk_14.y = 300.0f + (0.8f * frandmod(0x3E8)); + var_f30 = frandmod(0x168); + var_f31 = 200.0f + frandmod(0xAF); + var_r31->unk_08.x = var_f31 * sind(var_f30); + var_r31->unk_08.y = 0.0f; + var_r31->unk_08.z = var_f31 * cosd(var_f30); + PSVECAdd(&var_r31->unk_14, &var_r31->unk_08, &var_r31->unk_08); + var_r31->unk_38 = 60.0f - (0.13483146f * var_f31); + var_r31->unk_28 = frandmod(0x168); + if (frandmod(0x3E8) < 0x1F4) { + var_f28 = -70.0f + (0.1f * frandmod(0x32)); + } + else { + var_f28 = 70.0f - (0.1f * frandmod(0x32)); + } + var_r31->unk_3C = var_f28; + if (var_r31->unk_3C < 0.0f) { + var_r31->unk_38 = -var_r31->unk_38; + } + var_r31->unk_30 = 1.0f; + var_r31->unk_34 = 0.0f; + var_f29 -= 50.0f; + var_r31->unk_06 = var_r30; + } + (void)var_r29; + (void)object; + Hu3DModelKill(var_r26); + object->func = fn_1_7CAC; +} + +void fn_1_7CAC(omObjData *object) +{ + Vec spC; + s32 sp8; + s32 var_r29; + + M430DllWork2 *work = object->data; + s32 var_r28 = work->unk_06; + if (fn_1_4070() >= 4) { + for (var_r29 = 0; var_r29 < var_r28; var_r29++, work++) { + sp8 = 0; + PSVECSubtract(&work->unk_14, &work->unk_08, &spC); + work->unk_2C = atan2d(spC.x, spC.z); + work->unk_28 = fn_1_48B0(work->unk_28, work->unk_2C + work->unk_3C, 0.08f); + work->unk_24 += (0.05f * (600.0f - work->unk_24)); + work->unk_20 += (0.2f * (work->unk_24 - work->unk_20)); + work->unk_08.x += ((0.016666668f * work->unk_20) * sind(work->unk_28)); + work->unk_08.z += ((0.016666668f * work->unk_20) * cosd(work->unk_28)); + work->unk_30 += (0.016666668f * work->unk_20); + } + fn_1_7EAC(object, object->data); + } +} + +void fn_1_7EAC(omObjData *object, M430DllWork2 *var_r31) +{ + Mtx sp8; + float var_f31; + s32 var_r30; + Mtx *var_r29; + s32 var_r28; + + var_r28 = var_r31->unk_06; + var_f31 = fn_1_7FBC(0) - 2000.0f; + for (var_r30 = 0; var_r30 < var_r28; var_r30++, var_r31++) { + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_08.x, var_r31->unk_08.y, var_r31->unk_08.z + var_f31); + var_r29 = &Hu3DData[var_r31->unk_00].unk_F0; + PSMTXRotRad(*var_r29, 0x59, 0.017453292f * var_r31->unk_28); + PSMTXRotRad(sp8, 0x5A, 0.017453292f * var_r31->unk_38); + PSMTXConcat(*var_r29, sp8, *var_r29); + Hu3DModelAttrReset(var_r31->unk_00, HU3D_ATTR_DISPOFF); + } +} + +float fn_1_7FBC(s32 arg0) +{ + M430DllWork *var_r31; + M430DllWork *var_r30; + + var_r30 = lbl_1_bss_58->data; + arg0 &= 1; + var_r31 = var_r30; + return var_r31[arg0].unk_04.x; +} + +void fn_1_7FFC(s32 arg0, float arg8) +{ + M430DllWork *var_r31; + M430DllWork *var_r30; + + var_r30 = lbl_1_bss_58->data; + arg0 &= 1; + var_r31 = var_r30; + var_r31[arg0].unk_04.y = arg8; +} + +void fn_1_803C(omObjData *var_r31) +{ + var_r31->stat |= 0x100; + omSetStatBit(var_r31, 0xA0); + var_r31->model[0] = Hu3DHookFuncCreate(fn_1_8CE0); + Hu3DModelLayerSet(var_r31->model[0], 4); + Hu3DModelCameraSet(var_r31->model[0], 1); + var_r31->model[1] = Hu3DHookFuncCreate(fn_1_8CE0); + Hu3DModelLayerSet(var_r31->model[1], 4); + Hu3DModelCameraSet(var_r31->model[1], 2); + var_r31->model[2] = Hu3DHookFuncCreate(fn_1_9C90); + Hu3DModelLayerSet(var_r31->model[2], 0); + Hu3DModelCameraSet(var_r31->model[2], 1); + var_r31->model[3] = Hu3DHookFuncCreate(fn_1_9C90); + Hu3DModelLayerSet(var_r31->model[3], 0); + Hu3DModelCameraSet(var_r31->model[3], 2); + var_r31->model[4] = Hu3DHookFuncCreate(fn_1_A3A8); + Hu3DModelLayerSet(var_r31->model[4], 1); + Hu3DModelCameraSet(var_r31->model[4], 3); + var_r31->model[5] = Hu3DHookFuncCreate(fn_1_AB98); + Hu3DModelLayerSet(var_r31->model[5], 3); + Hu3DModelCameraSet(var_r31->model[5], 3); + var_r31->model[6] = Hu3DHookFuncCreate(fn_1_AC84); + Hu3DModelLayerSet(var_r31->model[6], 7); + Hu3DModelCameraSet(var_r31->model[6], 3); + lbl_1_bss_60->unk_00 = 0; + lbl_1_bss_60->unk_04 = var_r31->model[0]; + fn_1_82F4(var_r31, lbl_1_bss_60); + lbl_1_bss_60[1].unk_00 = 1; + lbl_1_bss_60[1].unk_04 = var_r31->model[1]; + fn_1_82F4(var_r31, &lbl_1_bss_60[1]); + var_r31->func = fn_1_8264; +} + +void fn_1_8264(omObjData *object) +{ + lbl_1_bss_60[0].unk_08 = lbl_1_bss_60[1].unk_08 = 0; + lbl_1_bss_60[0].unk_0C = lbl_1_bss_60[1].unk_0C = 0; + lbl_1_bss_60[0].unk_10 = lbl_1_bss_60[1].unk_10 = 0; + lbl_1_bss_60[0].unk_14 = lbl_1_bss_60[1].unk_14 = 0; + lbl_1_bss_60[0].unk_18 = lbl_1_bss_60[1].unk_18 = 0; +} + +void fn_1_82F4(omObjData *object, M430DllBss60Struct *var_r31) +{ + float var_f31; + float var_f30; + s32 var_r30; + Vec *var_r29; + GXColor *var_r28; + s32 var_r27; + + s32 sp8[8] = { 0, 0x16, 1, 0x17, 1, 0, 0x17, 0x16 }; + + var_r31->unk_2C = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B8 * sizeof(Vec), MEMORY_DEFAULT_NUM); + var_r31->unk_30 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B8 * sizeof(Vec), MEMORY_DEFAULT_NUM); + var_r31->unk_34 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x14A0, MEMORY_DEFAULT_NUM); + var_r31->unk_38 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x6E0, MEMORY_DEFAULT_NUM); + var_r31->unk_40 = 0; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31->unk_44[var_r30] = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B8 * sizeof(Vec), MEMORY_DEFAULT_NUM); + var_r31->unk_54[var_r30] = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B8 * sizeof(GXColor), MEMORY_DEFAULT_NUM); + } + var_r31->unk_5C = 0x12D0; + var_r31->unk_60 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_5C, MEMORY_DEFAULT_NUM); + DCFlushRange(var_r31->unk_60, var_r31->unk_5C); + var_r31->unk_64 = 0; + var_r31->unk_68 = GXGetTexBufferSize(0x140, 0x1E0, 5, 0, 0); + if (var_r31->unk_00 == 0) { + var_r31->unk_68 *= 2; + } + var_r31->unk_6C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_68, MEMORY_DEFAULT_NUM); + DCFlushRange(var_r31->unk_6C, var_r31->unk_68); + var_r31->unk_1C = 0; + var_r31->unk_20 = 0; + var_r31->unk_24 = 0.0f; + var_r31->unk_28 = 0.0f; + var_r29 = var_r31->unk_2C; + var_f31 = 0.0f; + var_f30 = -2000.0f; + for (var_r30 = 0; var_r30 < 0x14; var_r30++) { + var_f31 = 65.47619f - var_f31; + for (var_r27 = 0; var_r27 < 0x16; var_r27++) { + var_r29->x = ((130.95238f * var_r27) - 1375.0f) + var_f31; + var_r29->y = 0.0f; + var_r29->z = var_f30; + var_r29++; + } + var_f30 += 210.52632f; + } + memset(var_r31->unk_30, 0, 0x1B8 * sizeof(Vec)); + for (var_r29 = var_r31->unk_30, var_r30 = 0; var_r30 < 0x1B8; var_r30++, var_r29++) { + var_r29->y = (0.05f * frandmod(0x3E8)) - 20.0f; + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + memcpy(var_r31->unk_44[var_r30], var_r31->unk_2C, 0x1B8 * sizeof(Vec)); + for (var_r28 = var_r31->unk_54[var_r30], var_r27 = 0; var_r27 < 0x1B8; var_r27++, var_r28++) { + var_r28->r = 0x32; + var_r28->g = 0x8C; + var_r28->b = 0xB4; + var_r28->a = 0; + } + } + fn_1_86B4(object, var_r31); + fn_1_8B5C(object, var_r31); +} + +void fn_1_86B4(omObjData *object, M430DllBss60Struct *arg1) +{ + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + GXColor *var_r30; + s32 var_r29; + Vec *var_r28; + Vec *var_r27; + Vec *var_r26; + u32 var_r25; + s32 var_r24; + s32 var_r23; + M430DllWork *var_r22; + M430DllWork *var_r21; + + if (omPauseChk() == 0) { + arg1->unk_1C++; + } + arg1->unk_40 = 1 - arg1->unk_40; + var_r25 = arg1->unk_00; + var_r21 = lbl_1_bss_58->data; + var_r25 &= 1; + var_r22 = var_r21; + var_f29 = var_r22[var_r25].unk_04.x; + var_f28 = var_f29; + var_f30 = var_f28; + var_r24 = 0.002375f * var_f30; + arg1->unk_28 = 421.05264f * var_r24; + arg1->unk_24 = var_f30 - arg1->unk_28; + arg1->unk_20 = (var_r24 * 2) % 20; + var_r23 = (arg1->unk_20 + 0x14) % 20; + Hu3DModelPosSet(arg1->unk_04, fn_1_BB54(arg1->unk_00), 0.0f, arg1->unk_28 - 500.0f); + var_r28 = arg1->unk_2C; + var_r30 = arg1->unk_54[arg1->unk_40]; + sp14.x = 0.0f; + sp14.y = 0.0f; + sp14.z = 2000.0f + arg1->unk_24; + if (lbl_1_bss_5C != 0) { + for (var_r29 = 0; var_r29 < 0x1B8; var_r29++) { + PSVECSubtract(var_r28, &sp14, &sp8); + var_f31 = 0.00025f * PSVECMag(&sp8); + if (var_f31 < 0.3f) { + var_r30->a = -1; + } + else if (var_f31 > 0.75f) { + var_r30->a = 0; + } + else { + var_f31 = 255.0f - (566.6667f * (var_f31 - 0.3f)); + var_r30->a = var_f31; + } + var_r28++; + var_r30++; + } + } + else { + for (var_r29 = 0; var_r29 < 0x1B8; var_r29++) { + PSVECSubtract(var_r28, &sp14, &sp8); + var_f31 = 0.00025f * PSVECMag(&sp8); + if (var_f31 < 0.25f) { + var_r30->a = -0x1A; + } + else if (var_f31 > 0.85f) { + var_r30->a = 0; + } + else { + var_f31 = 230.0f - (383.3333f * (var_f31 - 0.25f)); + var_r30->a = var_f31; + } + var_r28++; + var_r30++; + } + } + if (lbl_1_bss_5C != 0) { + memcpy(arg1->unk_44[arg1->unk_40], arg1->unk_2C, 0x1B8 * sizeof(Vec)); + } + else { + var_r28 = arg1->unk_2C; + var_r26 = arg1->unk_44[arg1->unk_40]; + var_r29 = (0x14 - var_r23) * 0x16; + var_r27 = &arg1->unk_30[0x1B8 - var_r29]; + while (var_r29-- != 0) { + PSVECAdd(var_r28, var_r27, var_r26); + var_r28++; + var_r27++; + var_r26++; + } + var_r29 = var_r23 * 0x16; + var_r27 = arg1->unk_30; + while (var_r29-- != 0) { + PSVECAdd(var_r28, var_r27, var_r26); + var_r28++; + var_r27++; + var_r26++; + } + memcpy(arg1->unk_44[arg1->unk_40], arg1->unk_2C, 0x16 * sizeof(Vec)); + } + DCStoreRangeNoSync(arg1->unk_44[arg1->unk_40], 0x1B8 * sizeof(Vec)); + DCStoreRangeNoSync(arg1->unk_54[arg1->unk_40], 0x1B8 * sizeof(GXColor)); + PPCSync(); +} + +void fn_1_8B5C(omObjData *object, M430DllBss60Struct *var_r30) +{ + s32 var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + s32 sp28[5] = { 0, 0, 0, 1, 1 }; + s32 sp18[4] = { 1, 0, 0, 0 }; + s32 sp8[4] = { 0, 0, 1, 2 }; + GXBeginDisplayList(var_r30->unk_60, var_r30->unk_5C); + var_r26 = 0; + var_r31 = 0; + for (var_r29 = 0; var_r29 < 0x13; var_r29++) { + var_r24 = 0x2B - (((var_r26 * 2) + sp8[var_r31]) * 2); + var_r27 = sp18[var_r31]; + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, var_r24); + for (var_r28 = 0; var_r28 < var_r24; var_r28++) { + var_r25 = (var_r28 >> 1) + ((var_r29 + var_r27) * 0x16) + (var_r26 + sp28[var_r31 + var_r27]); + GXUnknownu16(var_r25); + GXUnknownu16(var_r25); + var_r27 = 1 - var_r27; + } + var_r31++; + if (var_r31 >= 4) { + var_r31 = 0; + var_r26++; + } + } + var_r30->unk_64 = GXEndDisplayList(); +} + +void fn_1_8CE0(ModelData *model, Mtx matrix) +{ + Mtx sp194; + Mtx sp164; + Mtx sp134; + Mtx sp104; + Mtx spD4; + Mtx spA4; + Mtx sp74; + Mtx sp44; + GXTexObj sp24; + float var_f31; + float var_f30; + M430DllBss60Struct *var_r31; + + GXColor sp20 = { 0xFF, 0xFF, 0xFF, 0xFF }; + GXColor sp1C = { 0x08, 0x08, 0x08, 0xFF }; + GXColor sp18 = { 0x00, 0x00, 0x00, 0x80 }; + GXColor sp14 = { 0xCC, 0xBF, 0xB2, 0x33 }; + GXColor sp10 = { 0xE0, 0xD8, 0xF4, 0x08 }; + var_r31 = lbl_1_bss_60; + if (var_r31->unk_10 != 0) { + var_r31 = &var_r31[1]; + } + var_r31->unk_10 = 1; + fn_1_963C(model, matrix, var_r31->unk_00); + PSMTXCopy(matrix, sp134); + if (fn_1_4030() != 0) { + var_f30 = 1.0f; + var_f31 = fn_1_BB54(var_r31->unk_00); + } + else { + var_f30 = 1.5f; + var_f31 = 0.0f; + } + PSMTXTrans(sp164, var_f31 - fn_1_BB54(var_r31->unk_00), 0.0f, 0.0f); + PSMTXConcat(sp134, sp164, sp134); + PSMTXScale(sp194, var_f30, 1.0f, 1.0f); + PSMTXConcat(sp134, sp194, sp134); + GXLoadPosMtxImm(sp134, 0); + PSMTXInvXpose(sp134, sp194); + GXLoadNrmMtxImm(sp194, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + if ((fn_1_4030() == 0) && (var_r31->unk_00 == 0)) { + GXInitTexObj(&sp24, var_r31->unk_6C, 0x280, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); + } + else { + GXInitTexObj(&sp24, var_r31->unk_6C, 0x140, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); + } + GXInitTexObjLOD(&sp24, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&sp24, GX_TEXMAP0); + HuSprTexLoad(lbl_1_bss_150, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(lbl_1_bss_148, 0, 2, GX_CLAMP, GX_CLAMP, GX_LINEAR); + GXSetNumTexGens(3); + if (fn_1_4030() != 0) { + C_MTXLightPerspective(sp104, 41.5f, 0.6f, 0.5f, -0.5f, 0.5f, 0.5f); + } + else { + C_MTXLightPerspective(sp104, 41.5f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + } + PSMTXInverse(Hu3DCameraMtx, spD4); + PSMTXConcat(spD4, sp134, spD4); + PSMTXConcat(sp104, Hu3DCameraMtx, spA4); + PSMTXConcat(spA4, spD4, spD4); + GXLoadTexMtxImm(spD4, 0x1E, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, 0x1E, GX_FALSE, 0x7D); + C_MTXLightPerspective(sp104, 70.0f, 0.5f, 0.5f, -0.5f, 0.5f, 0.5f); + PSMTXInverse(Hu3DCameraMtx, sp74); + PSMTXConcat(sp74, sp134, sp74); + PSMTXConcat(sp104, Hu3DCameraMtx, sp44); + PSMTXConcat(sp44, sp74, sp74); + GXLoadTexMtxImm(sp74, 0x24, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX3x4, GX_TG_POS, 0x24, GX_FALSE, 0x7D); + PSMTXRotRad(sp164, 0x58, 1.5707964f); + var_f31 = 0.00075f * var_f30; + PSMTXScale(sp194, var_f31, -0.003f, 0.00075f); + PSMTXConcat(sp164, sp194, sp164); + PSMTXTrans(sp194, (var_r31->unk_1C & 0x3FF) / (1024.0f * var_f31), 0.0f, (0.7f * var_r31->unk_28) - (0.3f * var_r31->unk_24)); + PSMTXConcat(sp164, sp194, sp164); + sp164[0][1] = -0.001f; + GXLoadTexMtxImm(sp164, 0x21, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, 0x21, GX_FALSE, 0x7D); + GXSetNumIndStages(2); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD1, GX_TEXMAP1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(0, 0, GX_TRUE, GX_FALSE, 1); + PSMTXScale(sp164, -0.25f, -0.5f, 0.5f); + GXSetIndTexMtx(GX_ITM_0, (float(*)[3])sp164, -4); + GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD1, GX_TEXMAP1); + GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(1, 1, GX_TRUE, GX_FALSE, 2); + PSMTXScale(sp164, 0.4f, 0.5f, 0.5f); + GXSetIndTexMtx(GX_ITM_1, (float(*)[3])sp164, -1); + GXSetNumTevStages(2); + GXSetTevColor(GX_TEVREG0, sp14); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_TEXC, GX_CC_RASA, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_A0, GX_CA_ZERO, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD2, GX_TEXMAP2, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A0, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_SET); + GXSetZMode(1, GX_LEQUAL, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, var_r31->unk_44[var_r31->unk_40], sizeof(Vec)); + GXSetArray(GX_VA_CLR0, var_r31->unk_54[var_r31->unk_40], sizeof(GXColor)); + GXSetCullMode(GX_CULL_NONE); + GXCallDisplayList(var_r31->unk_60, var_r31->unk_64); + GXSetCullMode(GX_CULL_BACK); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); +} + +Vec lbl_1_data_60[6] = { + { -2750.0f, 0.0f, -2500.0f }, + { 2750.0f, 0.0f, -2500.0f }, + { -2750.0f, 0.0f, 0.0f }, + { 2750.0f, 0.0f, 0.0f }, + { -1375.0f, 0.0f, 2500.0f }, + { 1375.0f, 0.0f, 2500.0f }, +}; +GXColor lbl_1_data_A8[6] = { + { 5, 0x38, 0xA2, 0 }, + { 5, 0x38, 0xA2, 0xFF }, + { 0x14, 0x54, 0xAB, 0xFF }, + { 0x1E, 0x6D, 0xB0, 0xFF }, + { 0x2A, 0x7E, 0xB4, 0xFF }, + { 0x32, 0x8C, 0xB4, 0xFF }, +}; + +void fn_1_963C(ModelData *model, Mtx matrix, u32 var_r31) +{ + Mtx sp100; + Mtx spD0; + Mtx spA0; + Mtx sp70; + Mtx sp40; + Mtx sp10; + float var_f31; + float var_f30; + + GXColor spC = { 0x32, 0x8C, 0xB4, 0x33 }; + if (fn_1_4030() != 0) { + var_f30 = 1.0f; + var_f31 = fn_1_BB54(var_r31); + } + else { + var_f30 = 1.5f; + var_f31 = 0.0f; + } + PSMTXTrans(spD0, var_f31, 0.0f, ((lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24) - 2500.0f) - 2000.0f); + PSMTXScale(sp100, var_f30, 1.0f, 1.0f); + PSMTXConcat(spD0, sp100, spD0); + PSMTXConcat(Hu3DCameraMtx, spD0, spA0); + GXLoadPosMtxImm(spA0, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(lbl_1_bss_14C, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(lbl_1_bss_148, 0, 1, GX_CLAMP, GX_CLAMP, GX_LINEAR); + GXSetNumTexGens(2); + C_MTXLightPerspective(sp70, 70.0f, 0.5f, 0.5f, -0.5f, 0.5f, 0.5f); + PSMTXInverse(Hu3DCameraMtx, sp40); + PSMTXConcat(sp40, spA0, sp40); + PSMTXConcat(sp70, Hu3DCameraMtx, sp10); + PSMTXConcat(sp10, sp40, sp40); + GXLoadTexMtxImm(sp40, 0x21, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX3x4, GX_TG_POS, 0x21, GX_FALSE, 0x7D); + PSMTXRotRad(spD0, 0x58, 1.5707964f); + var_f31 = 0.00075f * var_f30; + PSMTXScale(sp100, var_f31, -0.003f, 0.00075f); + PSMTXConcat(spD0, sp100, spD0); + PSMTXTrans(sp100, (lbl_1_bss_60[var_r31].unk_1C & 0x3FF) / (1024.0f * var_f31), 0.0f, + 0.3f * (lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24)); + PSMTXConcat(spD0, sp100, spD0); + GXLoadTexMtxImm(spD0, 0x1E, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, 0x1E, GX_FALSE, 0x7D); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD0, GX_TEXMAP0); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(0, 0, GX_TRUE, GX_FALSE, 1); + PSMTXScale(spD0, 0.5f, 0.6f, 0.6f); + GXSetIndTexMtx(GX_ITM_0, (float(*)[3])spD0, -1); + GXSetNumTevStages(1); + GXSetTevColor(GX_TEVREG0, spC); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A0, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_RASA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_SET); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, lbl_1_data_60, sizeof(Vec)); + GXSetArray(GX_VA_CLR0, lbl_1_data_A8, sizeof(GXColor)); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(0); + GXColor1x8(3); + GXPosition1x8(1); + GXColor1x8(3); + GXPosition1x8(2); + GXColor1x8(4); + GXPosition1x8(3); + GXColor1x8(4); + GXPosition1x8(4); + GXColor1x8(5); + GXPosition1x8(5); + GXColor1x8(5); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); +} + +Vec lbl_1_data_C0[8] = { + { -2750.0f, 20.0f, 0.0f }, + { 2750.0f, 20.0f, 0.0f }, + { -2750.0f, -20.0f, 0.0f }, + { 2750.0f, -20.0f, 0.0f }, + { -2750.0f, -160.0f, 0.0f }, + { 2750.0f, -160.0f, 0.0f }, + { -2750.0f, -340.0f, 0.0f }, + { 2750.0f, -340.0f, 0.0f }, +}; +Vec lbl_1_data_120[6] = { + { -700.0f, 0.0f, -1750.0f }, + { 700.0f, 0.0f, -1750.0f }, + { -700.0f, 0.0f, -1400.0f }, + { 700.0f, 0.0f, -1400.0f }, + { -700.0f, 0.0f, 700.0f }, + { 700.0f, 0.0f, 700.0f }, +}; + +void fn_1_9C90(ModelData *model, Mtx matrix) +{ + Mtx sp124; + Mtx spF4; + Mtx spC4; + Mtx sp94; + Mtx sp64; + Mtx sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + + GXColor spC = { 0x32, 0x8C, 0xB4, 0x33 }; + var_r31 = 0; + if (lbl_1_bss_60[var_r31].unk_14 != 0) { + var_r31++; + } + lbl_1_bss_60[var_r31].unk_14 = 1; + sp1C.x = CenterM[var_r31].x; + sp1C.y = CenterM[var_r31].y + (CZoomM[var_r31] * sind(-CRotM[var_r31].x)); + sp1C.z = CenterM[var_r31].z + (CZoomM[var_r31] * cosd(-CRotM[var_r31].x)); + sp28.x = sp1C.x; + sp28.y = 0.0f; + sp28.z = sp1C.z - 450000.0f; + PSVECSubtract(&sp28, &sp1C, &sp10); + PSVECNormalize(&sp10, &sp10); + PSVECScale(&sp10, &sp10, 8000.0f); + PSVECAdd(&sp1C, &sp10, &sp28); + PSMTXTrans(spF4, sp28.x, sp28.y, sp28.z); + var_f31 = 1.0f; + if (fn_1_4030() == 0) { + var_f31 = 1.5f; + PSMTXScale(sp124, var_f31, 1.0f, 1.0f); + PSMTXConcat(spF4, sp124, spF4); + } + PSMTXConcat(Hu3DCameraMtx, spF4, spC4); + GXLoadPosMtxImm(spC4, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(lbl_1_bss_14C, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(lbl_1_bss_148, 0, 1, GX_CLAMP, GX_CLAMP, GX_LINEAR); + GXSetNumTexGens(2); + C_MTXLightPerspective(sp94, 70.0f, 0.5f, 0.5f, -0.5f, 0.5f, 0.5f); + PSMTXInverse(Hu3DCameraMtx, sp64); + PSMTXConcat(sp64, spC4, sp64); + PSMTXConcat(sp94, Hu3DCameraMtx, sp34); + PSMTXConcat(sp34, sp64, sp64); + GXLoadTexMtxImm(sp64, 0x21, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX3x4, GX_TG_POS, 0x21, GX_FALSE, 0x7D); + var_f30 = 0.00075f * var_f31; + PSMTXScale(spF4, var_f30, -0.005f, 0.00075f); + PSMTXTrans(sp124, (lbl_1_bss_60[var_r31].unk_1C & 0x3FF) / (1024.0f * var_f30), + 0.03f * -(lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24), 0.0f); + PSMTXConcat(spF4, sp124, spF4); + GXLoadTexMtxImm(spF4, 0x1E, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, 0x1E, GX_FALSE, 0x7D); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD0, GX_TEXMAP0); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(0, 0, GX_TRUE, GX_FALSE, 1); + PSMTXScale(spF4, 0.5f, 0.6f, 0.6f); + GXSetIndTexMtx(GX_ITM_0, (float(*)[3])spF4, -1); + GXSetNumTevStages(1); + GXSetTevColor(GX_TEVREG0, spC); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A0, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_RASA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_SET); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, lbl_1_data_C0, 0xC); + GXSetArray(GX_VA_CLR0, lbl_1_data_A8, 4); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); + for (var_r30 = 0; var_r30 < 8; var_r30++) { + GXPosition1x8(var_r30); + GXColor1x8(var_r30 >> 1); + } + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); +} + +GXColor lbl_1_data_168[2] = { { 0xFF, 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0xFF, 0xFF } }; + +void fn_1_A3A8(ModelData *model, Mtx matrix) +{ + Mtx sp48; + Mtx sp18; + float var_f31; + float var_f30; + u8 *var_r30; + u8 *var_r29; + + GXColor sp14 = { 0xFF, 0xA5, 0x59, 0xB2 }; + GXColor sp10 = { 0x99, 0x72, 0x59, 0xB2 }; + s32 var_r31 = 0; + if (lbl_1_bss_60[var_r31].unk_0C != 0) { + var_r31++; + } + lbl_1_bss_60[var_r31].unk_0C = 1; + if (fn_1_4030() != 0) { + var_f30 = 1.0f; + var_f31 = fn_1_BB54(var_r31); + } + else { + var_f30 = 1.5f; + var_f31 = 0.0f; + } + if (lbl_1_bss_5C != 0) { + PSMTXTrans(sp18, var_f31, 0.0f, 300.0f + (lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24)); + GXSetTevColor(GX_TEVREG0, sp10); + } + else { + PSMTXTrans(sp18, var_f31, -150.0f, lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24); + GXSetTevColor(GX_TEVREG0, sp14); + } + PSMTXScale(sp48, var_f30, 1.0f, 1.0f); + PSMTXConcat(sp18, sp48, sp18); + PSMTXConcat(Hu3DCameraMtx, sp18, sp18); + GXLoadPosMtxImm(sp18, 0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(lbl_1_bss_144, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(lbl_1_bss_140, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTexGens(2); + PSMTXRotRad(sp18, 0x58, 1.5707964f); + var_f31 = 0.004f * var_f30; + PSMTXScale(sp48, var_f31, -0.004f, 0.004f); + PSMTXConcat(sp18, sp48, sp18); + PSMTXTrans(sp48, (lbl_1_bss_60[var_r31].unk_1C & 0x3FF) / (512.0f * var_f31), 0.0f, + (1.2499999f * (lbl_1_bss_60[var_r31].unk_1C % 400)) + (lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24)); + PSMTXConcat(sp18, sp48, sp18); + GXLoadTexMtxImm(sp18, 0x1E, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, 0x1E, GX_FALSE, 0x7D); + PSMTXRotRad(sp18, 0x58, 1.5707964f); + var_f31 = 0.004f * var_f30; + PSMTXScale(sp48, var_f31, -0.004f, 0.004f); + PSMTXConcat(sp18, sp48, sp18); + PSMTXTrans(sp48, (lbl_1_bss_60[var_r31].unk_1C % 300) / (150.0f * var_f31), 0.0f, lbl_1_bss_60[var_r31].unk_28 + lbl_1_bss_60[var_r31].unk_24); + PSMTXConcat(sp18, sp48, sp18); + GXLoadTexMtxImm(sp18, 0x21, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, 0x21, GX_FALSE, 0x7D); + GXSetNumTevStages(2); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_SET); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, lbl_1_data_120, 0xC); + GXSetArray(GX_VA_CLR0, lbl_1_data_168, 4); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(0); + GXColor1x8(0); + GXPosition1x8(1); + GXColor1x8(0); + GXPosition1x8(2); + GXColor1x8(1); + GXPosition1x8(3); + GXColor1x8(1); + GXPosition1x8(4); + GXColor1x8(1); + GXPosition1x8(5); + GXColor1x8(1); +} + +void fn_1_AB98(ModelData *model, Mtx matrix) +{ + s32 var_r31 = 0; + if (lbl_1_bss_60[var_r31].unk_08 != 0) { + var_r31++; + } + if ((fn_1_4030() == 0) && (var_r31 == 0)) { + GXSetTexCopySrc(0, 0, 0x280, 0x1E0); + GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGB5A3, 0); + } + else { + GXSetTexCopySrc(var_r31 * 0x140, 0, 0x140, 0x1E0); + GXSetTexCopyDst(0x140, 0x1E0, GX_TF_RGB5A3, 0); + } + GXCopyTex(lbl_1_bss_60[var_r31].unk_6C, 0); + GXPixModeSync(); + lbl_1_bss_60[var_r31].unk_08 = 1; +} + +void fn_1_AC84(ModelData *model, Mtx matrix) +{ + s32 var_r31 = 0; + if (lbl_1_bss_60[var_r31].unk_18 != 0) { + var_r31++; + } + lbl_1_bss_60[var_r31].unk_18 = 1; + fn_1_86B4(lbl_1_bss_54, &lbl_1_bss_60[var_r31]); +} + +void fn_1_AD04(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + s32 var_r29; + + if ((particle->unk_00 == 0) || (lbl_1_bss_5C != 0)) { + particle->unk_00++; + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + return; + } + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00_s16 != 0) { + PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + PSVECScale(&var_r31->unk08, &var_r31->unk08, 0.97f); + if (var_r31->unk00_s16 < 24.0f) { + var_r31->unk40.a = 0.9f * var_r31->unk40.a; + } + var_r31->unk2C += 1.5f; + if (--var_r31->unk00_s16 == 0) { + var_r31->unk00_s16 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_AEE0(s32 arg0, Vec *arg1, float arg8, float arg9) +{ + Vec sp10; + float var_f31; + float var_f30; + float var_f28; + HsfanimStruct01 *var_r31; + ParticleData *var_r30; + s32 var_r29; + M430DllWork *var_r28; + u32 var_r27; + void *var_r26; + + var_r26 = lbl_1_bss_58->data; + var_r28 = var_r26; + var_r30 = Hu3DData[var_r28[arg0].unk_10].unk_120; + if (var_r30->unk_00 != 0) { + var_r31 = var_r30->unk_48; + if (!(frandmod(0x3E8) > (1200.0f * arg9))) { + var_r27 = 1; + var_f28 = 30.0f; + for (var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00_s16 == 0) { + var_r31->unk00 = 60.0f * (0.5f + (0.0005f * frandmod(0x3E8))); + var_f30 = (0.002f * frandmod(0x3E8)) - 1.0f; + var_f30 = arg8 + (var_f30 * var_f28); + sp10.x = sind(var_f30); + sp10.y = 0.0f; + sp10.z = cosd(var_f30); + var_r31->unk34 = *arg1; + var_r31->unk34.y = -20.0f; + var_f31 = 5.0f + arg9 * (1.6666667f * (2.0f * (0.001f * frandmod(0x3E8)))); + var_r31->unk08.x = sp10.x * var_f31; + var_r31->unk08.y = -0.2f * var_f31; + var_r31->unk08.z = sp10.z * var_f31; + var_f31 = 0.001f * frandmod(0x3E8); + var_f31 += (1.0f - var_f31) * (0.5f * arg9); + var_r31->unk30 = frandmod(0x168); + var_r31->unk2C = 80.0f + frandmod(0x46); + var_r31->unk40.a = frandmod(0x64) + 0x64; + var_r31->unk40.r = 150.0f + (95.0f * var_f31); + var_r31->unk40.g = 160.0f + (80.0f * var_f31); + var_r31->unk40.b = 166.0f + (60.0f * var_f31); + if (--var_r27 == 0) { + break; + } + } + } + } + } +} + +void fn_1_B394(ModelData *model, ParticleData *var_r30, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + s32 var_r29; + + if ((var_r30->unk_00 == 0) || (lbl_1_bss_5C != 0)) { + var_r30->unk_00++; + for (var_r31 = var_r30->unk_48, var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) { + var_r31->unk00_s16 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + return; + } + for (var_r31 = var_r30->unk_48, var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00_s16 != 0) { + var_r31->unk00_s16--; + PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + var_r31->unk2C += 0.5f; + if (var_r31->unk00_s16 < 30.0) { + var_r31->unk40.a = 0.98f * var_r31->unk40.a; + } + if ((var_r31->unk34.y < -40.0f) || (var_r31->unk00_s16 == 0)) { + var_r31->unk00_s16 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(var_r30->unk_48, var_r30->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_B570(s32 arg0, Vec *arg1, float arg8, float arg9, Vec *arg2) +{ + Vec sp28; + Vec sp1C; + s32 sp18; + float var_f31; + float var_f30; + float var_f28; + HsfanimStruct01 *var_r31; + ParticleData *var_r30; + s32 var_r29; + M430DllWork *var_r28; + u32 var_r27; + M430DllWork *var_r26; + + var_r26 = lbl_1_bss_58->data; + { + float sp14[2] = { -100.0f, 100.0f }; + var_r28 = var_r26; + var_r30 = Hu3DData[var_r28[arg0].unk_14].unk_120; + if (var_r30->unk_00 != 0) { + var_r31 = var_r30->unk_48; + if (!(frandmod(0x3E8) > (1000.0f * arg9))) { + var_r27 = 2; + var_f28 = 40.0f; + PSVECScale(arg2, &sp1C, 0.2f); + sp1C.x = 0.0f; + for (var_r29 = 0; var_r29 < var_r30->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00_s16 == 0) { + var_r31->unk00_s16 = 60.0f * (0.5f + (0.0005f * frandmod(0x3E8))); + var_f30 = (0.002f * frandmod(0x3E8)) - 1.0f; + var_f30 = arg8 + sp14[var_r29 & 1] + (var_f30 * var_f28); + sp28.x = sind(var_f30); + sp28.y = 0.0f; + sp28.z = cosd(var_f30); + var_r31->unk34 = *arg1; + var_r31->unk34.x = var_r31->unk34.x + ((0.05f * frandmod(0x3E8)) - 25.0f); + var_r31->unk34.z = var_r31->unk34.z + ((0.05f * frandmod(0x3E8)) - 25.0f); + var_r31->unk34.y = 40.0f; + var_f31 = 1.6666667f + (arg9 * (0.0016666667f * frandmod(0x3E8))); + var_r31->unk08.x = sp28.x * var_f31; + var_r31->unk08.z = sp28.z * var_f31; + var_r31->unk08.y = 0.0f; + PSVECAdd(&var_r31->unk08, &sp1C, &var_r31->unk08); + var_f31 = 0.001f * frandmod(0x3E8); + var_f31 += (1.0f - var_f31) * (0.3f * arg9); + var_r31->unk30 = frandmod(0x168); + var_r31->unk2C = 60.0f + frandmod(0x50); + var_r31->unk40.a = (60.0f * arg9) + frandmod(0x50); + var_r31->unk40.r = 150.0f + (95.0f * var_f31); + var_r31->unk40.g = 160.0f + (80.0f * var_f31); + var_r31->unk40.b = 166.0f + (60.0f * var_f31); + if (--var_r27 == 0) { + break; + } + } + } + } + } + } +} + +float fn_1_BB54(u32 arg0) +{ + float sp8[2] = { -450.0f, 450.0f }; + + return sp8[arg0 & 1]; +} + +float fn_1_BB88(void) +{ + return 0.0f; +} + +void fn_1_BB98(u32 arg0) +{ + lbl_1_bss_5C = 0; + if (arg0 != 0) { + lbl_1_bss_5C = 1; + } +} From d6f065e127fa5737e9ec32299c5702770e3f4aae Mon Sep 17 00:00:00 2001 From: Liam Coleman Date: Fri, 10 Jan 2025 10:00:49 -0600 Subject: [PATCH 08/24] Complete mstory2 board_clear and board_entrance (#517) * Match first mstory2 TU * Complete mstory2 board_clear and board_entrance --- config/GMPE01_00/rels/mstory2Dll/symbols.txt | 2 +- configure.py | 4 +- include/REL/mstory2Dll.h | 7 +- src/REL/mstory2Dll/board_clear.c | 619 ++++++++++++++++++ src/REL/mstory2Dll/board_entrance.c | 644 +++++++++++++++++++ 5 files changed, 1272 insertions(+), 4 deletions(-) create mode 100644 src/REL/mstory2Dll/board_clear.c create mode 100644 src/REL/mstory2Dll/board_entrance.c diff --git a/config/GMPE01_00/rels/mstory2Dll/symbols.txt b/config/GMPE01_00/rels/mstory2Dll/symbols.txt index 2043c77f..351e9c5d 100644 --- a/config/GMPE01_00/rels/mstory2Dll/symbols.txt +++ b/config/GMPE01_00/rels/mstory2Dll/symbols.txt @@ -573,7 +573,7 @@ lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C data:string lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D data:string lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 data:string lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C data:string -lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 +lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 data:float lbl_1_data_698 = .data:0x00000698; // type:object size:0x1C lbl_1_data_6B4 = .data:0x000006B4; // type:object size:0x20 lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 data:string diff --git a/configure.py b/configure.py index ce78fe3b..9c510762 100644 --- a/configure.py +++ b/configure.py @@ -1371,8 +1371,8 @@ config.libs = [ "mstory2Dll", objects={ Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/main.c"), - Object(NonMatching, "REL/mstory2Dll/board_entrance.c"), - Object(NonMatching, "REL/mstory2Dll/board_clear.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/board_entrance.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/board_clear.c"), Object(NonMatching, "REL/mstory2Dll/board_miss.c"), Object(NonMatching, "REL/mstory2Dll/mg_clear.c"), Object(NonMatching, "REL/mstory2Dll/mg_miss.c"), diff --git a/include/REL/mstory2Dll.h b/include/REL/mstory2Dll.h index 839c576d..b170640e 100644 --- a/include/REL/mstory2Dll.h +++ b/include/REL/mstory2Dll.h @@ -39,10 +39,11 @@ typedef struct { /* 0x08 */ s32 unk08; /* 0x0C */ s32 unk0C; /* 0x10 */ char unk10[0x18]; -} StructBss19C; // Size 0x28 +} StructBss16C; // Size 0x28 // main.c float fn_1_864(float arg0, float arg1, float arg2, float arg3); +float fn_1_88C(float arg0, float arg1, float arg2); float fn_1_8AC(float arg0, float arg1, float arg2, float arg3); float fn_1_984(float arg0, float arg1, float arg2, float arg3); float fn_1_B08(float arg0, float arg1, float arg2, float arg3); @@ -63,6 +64,7 @@ void fn_1_2828(Process* arg0, void (*arg1)(void)); void fn_1_2948(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); void fn_1_2D00(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); void fn_1_357C(StructFn357C* arg0, s32 arg1); +void fn_1_42A0(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, float arg4); s32 fn_1_3668(s32 arg0); void fn_1_3754(void); void fn_1_3854(StructBss24* arg0); @@ -72,6 +74,7 @@ void fn_1_6004(StructBss24* arg0, StructBss24* arg1, float arg2, float arg3, flo int fn_1_66CC(int modelId); void fn_1_6704(omObjData* arg0); +void fn_1_67D8(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); void fn_1_6A90(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); void fn_1_6D78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); s32 fn_1_7064(s32 arg0, s32 arg1); @@ -100,6 +103,8 @@ void fn_1_188F0(Process* arg0, s32 arg1); // ending.c void fn_1_1B90C(Process* arg0); +extern s32 lbl_1_bss_88[16]; +extern s32 lbl_1_bss_78[4]; extern s32 lbl_1_bss_68[]; extern StructBss24 lbl_1_bss_24; extern s32 lbl_1_data_0[][4]; diff --git a/src/REL/mstory2Dll/board_clear.c b/src/REL/mstory2Dll/board_clear.c new file mode 100644 index 00000000..206854e1 --- /dev/null +++ b/src/REL/mstory2Dll/board_clear.c @@ -0,0 +1,619 @@ +#include "REL/mstory2Dll.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "game/pad.h" +#include "game/objsub.h" + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x18]; + /* 0x030 */ StructFn357C unk30[4]; + /* 0x100 */ float unk100; +} StructBss3DC; // Size 0x104 + +StructBss3DC lbl_1_bss_3DC; +StructBss16C lbl_1_bss_3B4; +StructBss16C lbl_1_bss_38C; +StructBss16C lbl_1_bss_364; +StructBss16C lbl_1_bss_33C; +StructBss16C lbl_1_bss_29C[4]; +Process *lbl_1_bss_298; + +void fn_1_C4C0(void); +void fn_1_C858(void); +void fn_1_CCCC(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_CD78(void); +void fn_1_D224(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_D2D0(omObjData* arg0, StructBss16C* arg1); +void fn_1_D478(void); +void fn_1_D764(int arg0); +void fn_1_DB58(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_DC54(omObjData* arg0, StructBss16C* arg1); +void fn_1_DDC4(void); +void fn_1_E1B8(void); +void fn_1_E244(void); +void fn_1_E334(void); + +void fn_1_B37C(omObjData* arg0, StructBss16C* arg1) +{ + fn_1_BE8(30); + fn_1_DB58(4, -1, 15, 1, 0); + fn_1_D224(4, -1, 15, 1, 0); + arg1->unk04 = NULL; +} + +void fn_1_B3E4(Process* arg0, s32 arg1) +{ + int i; + lbl_1_bss_298 = arg0; + lbl_1_bss_3DC.unk0C = arg1; + fn_1_C30(); + fn_1_3668(255); + fn_1_2828(lbl_1_bss_298, fn_1_E1B8); + fn_1_3754(); + fn_1_D764(arg1); + HuPrcChildCreate(fn_1_C858, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_CD78, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_D478, 100, 8192, 0, HuPrcCurrentGet()); + for(i=0; i<4; i++) { + HuPrcChildCreate(fn_1_DDC4, 100, 8192, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_C4C0, 100, 8192, 0, HuPrcCurrentGet()); + +} + +void fn_1_B518(omObjData *object) +{ + if(object->work[2]) { + object->work[2]--; + return; + } + if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_B5A4(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while(1) { + fn_1_BC8(); + printWin(posX, posY, 220, 160, &winColor); + if(lbl_1_bss_3B4.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if(lbl_1_bss_38C.unk04 == NULL) { + print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); + } else { + print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + } + if(lbl_1_bss_364.unk04 == NULL) { + print8(posX, posY+20, 1, "PROC_KOOPA -> FALSE"); + } else { + print8(posX, posY+20, 1, "PROC_KOOPA -> TRUE"); + } + if(lbl_1_bss_33C.unk04 == NULL) { + print8(posX, posY+30, 1, "PROC_MKOOPA -> FALSE"); + } else { + print8(posX, posY+30, 1, "PROC_MKOOPA -> TRUE"); + } + for(i=0; i<4; i++) { + if(lbl_1_bss_29C[i].unk04 == NULL) { + print8(posX, posY+40+(i*10), 1, "PROC_PLAYER%d -> FALSE", i); + } else { + print8(posX, posY+40+(i*10), 1, "PROC_PLAYER%d -> TRUE", i); + } + } + print8(posX, posY+90, 1, "P:%d W:%d", lbl_1_bss_3DC.unk00, lbl_1_bss_3DC.unk0C); + print8(posX, posY+110, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for(i=0; i<4; i++) { + print8(posX, posY+120+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_3DC.unk30[i].unk00, lbl_1_bss_3DC.unk30[i].unk04, lbl_1_bss_3DC.unk30[i].unk08, lbl_1_bss_3DC.unk30[i].unk0C, lbl_1_bss_3DC.unk30[i].unk14, lbl_1_bss_3DC.unk30[i].unk10); + } + + } +} + +void fn_1_B984(void) +{ + lbl_1_bss_78[0] = HuAudSeqPlay(51); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); +} + +void fn_1_B9E0(void) +{ + lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk04 = (void *)fn_1_DC54; + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_E244); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk04 == NULL) { + break; + } + } + while(1) { + fn_1_BC8(); + if(lbl_1_bss_33C.unk04 == NULL) { + break; + } + } + fn_1_BE8(30); +} + +void fn_1_BA90(void) +{ + int i; + lbl_1_bss_3DC.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_3DC.unk0C); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_D224(3, -1, 15, 1, 0); + fn_1_1D4C(lbl_1_bss_3DC.unk04, lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk10, 0); + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x1F000C); + fn_1_1AFC(lbl_1_bss_3DC.unk04, -1); + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x250004); + fn_1_D224(1, -1, 15, 1, 0); + fn_1_1A94(lbl_1_bss_3DC.unk04); + HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); + fn_1_BE8(60); + for(i=0; i<4; i++) { + if(lbl_1_bss_3DC.unk30[i].unk00 != lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk00) { + Hu3DModelAttrSet(lbl_1_bss_29C[i].unk00->model[1], 1); + } + Hu3DModelAttrSet(lbl_1_bss_29C[i].unk00->model[2], 1); + } + Hu3DModelAttrReset(lbl_1_bss_364.unk00->model[1], 1); + Hu3DModelAttrReset(lbl_1_bss_38C.unk00->model[5], 1); + Hu3DModelAttrReset(lbl_1_bss_38C.unk00->model[6], 1); + lbl_1_bss_3DC.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_3DC.unk0C); + HuAudFXPlay(lbl_1_data_0[6][0]); + lbl_1_bss_78[1] = HuAudSeqPlay(55); + lbl_1_bss_33C.unk04 = (void *)fn_1_B37C; + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x1F000D); + fn_1_1AFC(lbl_1_bss_3DC.unk04, -1); + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_3DC.unk04); + fn_1_1DFC(lbl_1_bss_38C.unk00, 2, 3, 0, 0); + fn_1_BE8(60); + lbl_1_bss_33C.unk04 = (void *)fn_1_D2D0; + fn_1_DB58(5, -1, 15, 0, 0); + fn_1_D224(5, 1, 0, 0, 1); + fn_1_2264(lbl_1_bss_38C.unk00, 2, 3, 0); +} + +void fn_1_BDF0(void) +{ + lbl_1_bss_3DC.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_3DC.unk0C); + HuAudFXPlay(lbl_1_data_0[6][1]); + fn_1_CCCC(3, -1, 15, 1, 0); + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x1F000E); + fn_1_1AFC(lbl_1_bss_3DC.unk04, -1); + fn_1_1D18(lbl_1_bss_3DC.unk04, 0x250004); + fn_1_CCCC(1, -1, 15, 1, 0); + fn_1_1A94(lbl_1_bss_3DC.unk04); + fn_1_CCCC(2, -1, 15, 0, 0); + fn_1_BE8(45); + HuAudFXPlay(lbl_1_data_0[6][0]); + fn_1_BE8(15); + HuAudSeqFadeOut(lbl_1_bss_78[1], 3000); + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_E334); + fn_1_BE8(30); + fn_1_BE8(45); + fn_1_BE8(75); +} + +void fn_1_BF48(void) +{ + int i; + omOvlHisData *his; + int charNo; + int padNo; + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while(1) { + fn_1_BC8(); + if(!WipeStatGet()) { + break; + } + } + CharModelKill(-1); + charNo = lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk10; + padNo = lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk14; + GWPlayerCfg[lbl_1_bss_3DC.unk00].character = GWPlayerCfg[0].character; + GWPlayerCfg[lbl_1_bss_3DC.unk00].pad_idx = GWPlayerCfg[0].pad_idx; + GWPlayerCfg[lbl_1_bss_3DC.unk00].group = GWPlayerCfg[0].group; + GWPlayerCfg[lbl_1_bss_3DC.unk00].iscom = GWPlayerCfg[0].iscom; + GWPlayerCfg[0].character = charNo; + GWPlayerCfg[0].pad_idx = padNo; + GWPlayerCfg[0].group = 0; + GWPlayerCfg[0].iscom = FALSE; + for(i=0; i<4; i++) { + GWPlayer[i].character = GWPlayerCfg[i].character; + GWPlayer[i].port = GWPlayerCfg[i].pad_idx; + GWPlayer[i].com = GWPlayerCfg[i].iscom; + GWPlayer[i].team = GWPlayerCfg[i].group; + } + GWPlayerCfg[1].character = 8; + for(i=1; i<4; i++) { + GWPlayerCfg[i].iscom = GWPlayerCfg[i].group = 1; + } + his = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY2, 3, his->stat); + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + GWSystem.mg_type = -1; + GWMGAvailSet(450); + GWSystem.mg_next = 450-401; + omOvlCallEx(OVL_M450, 1, 0, 0); + while(1) { + fn_1_BC8(); + } +} + +void fn_1_C270(omObjData* arg0, StructBss16C* arg1) +{ + int temp = 0; + fn_1_B984(); + fn_1_B9E0(); + fn_1_BA90(); + fn_1_BDF0(); + fn_1_BF48(); + arg1->unk04 = NULL; +} + +void fn_1_C4C0(void) +{ + omObjData *obj; + lbl_1_bss_3B4.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL); + lbl_1_bss_3B4.unk04 = (void *)fn_1_C270; + lbl_1_bss_3B4.unk00->data = &lbl_1_bss_3B4; + while(1) { + fn_1_BC8(); + if(lbl_1_bss_3B4.unk04 != NULL) { + lbl_1_bss_3B4.unk04(obj, &lbl_1_bss_3B4); + } + } +} + +void fn_1_C574(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660052); + object->motion[1] = Hu3DMotionIDGet(object->model[1]); + Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(0x660053); + object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); + object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + fn_1_1DFC(object, 2, 2, 0, 2); + object->model[5] = Hu3DModelCreateFile(0x660059); + object->motion[5] = Hu3DMotionIDGet(object->model[5]); + Hu3DModelPosSet(object->model[5], 0, 80, 460); + Hu3DModelAttrSet(object->model[5], 1); + Hu3DModelShadowSet(object->model[5]); + fn_1_1DFC(object, 5, 5, 0, 2); + object->model[6] = Hu3DModelCreateFile(0x66005A); + object->motion[6] = Hu3DMotionIDGet(object->model[6]); + Hu3DModelHookSet(object->model[5], "koopasgbox_fix-effect_fook2", object->model[6]); + Hu3DModelAttrSet(object->model[6], 1); + fn_1_1DFC(object, 6, 6, 0, 2); +} + +void fn_1_C79C(omObjData* arg0, StructBss16C* arg1) +{ + Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360); + if(arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_C858(void) +{ + omObjData *obj; + lbl_1_bss_38C.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL); + lbl_1_bss_38C.unk04 = (void *)fn_1_C79C; + lbl_1_bss_38C.unk00->data = &lbl_1_bss_38C; + fn_1_C574(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_38C.unk04 != NULL) { + lbl_1_bss_38C.unk04(obj, &lbl_1_bss_38C); + } + } +} + +void fn_1_CB0C(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660062); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); + object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660066); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660069); + Hu3DModelPosSet(object->model[1], 0, 0, 150); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1.25f, 1.25f, 1.25f); + Hu3DModelScaleSet(object->model[1], 1.6f, 1.6f, 1.6f); + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_CCCC(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_364.unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_364.unk00->work[0] = arg4; + lbl_1_bss_364.unk00->work[1] = arg1; + lbl_1_bss_364.unk00->work[2] = arg2+1; +} + +void fn_1_CD78(void) +{ + omObjData *obj; + lbl_1_bss_364.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL); + lbl_1_bss_364.unk04 = NULL; + lbl_1_bss_364.unk00->data = &lbl_1_bss_38C; + fn_1_CB0C(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_364.unk04 != NULL) { + lbl_1_bss_364.unk04(obj, &lbl_1_bss_364); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_D030(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x66007D); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x66007E); + object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660080); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660081); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660084); + object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660085); + Hu3DModelPosSet(object->model[1], -300, 0, 890); + Hu3DModelRotSet(object->model[1], 0, 30, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 13); +} + +void fn_1_D224(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_33C.unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_33C.unk00->work[0] = arg4; + lbl_1_bss_33C.unk00->work[1] = arg1; + lbl_1_bss_33C.unk00->work[2] = arg2+1; +} + +void fn_1_D2D0(omObjData* arg0, StructBss16C* arg1) +{ + int i; + for(i=0; i<15; i++) { + fn_1_BC8(); + Hu3DData[arg0->model[1]].rot.y = fn_1_864(0, 135, i, 15); + } + arg1->unk04 = NULL; +} + +void fn_1_D394(omObjData* arg0, StructBss16C* arg1) +{ + Vec pos = { -120, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 60, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_D478(void) +{ + omObjData *obj; + lbl_1_bss_33C.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL); + lbl_1_bss_33C.unk04 = NULL; + lbl_1_bss_33C.unk00->data = &lbl_1_bss_33C; + fn_1_D030(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_33C.unk04 != NULL) { + lbl_1_bss_33C.unk04(obj, &lbl_1_bss_33C); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_D764(int arg0) +{ + int i; + int order[4]; + order[0] = 0; + for(i=1; i<4; i++) { + order[i] = order[i-1]+1; + if(order[i] >= 4) { + order[i] = 0; + } + if(arg0 == order[i]) { + lbl_1_bss_3DC.unk00 = i; + } + } + for(i=0; i<4; i++) { + fn_1_357C(&lbl_1_bss_3DC.unk30[i], order[i]); + } + for(i=0; i<4; i++) { + lbl_1_bss_3DC.unk30[i].unk18 = GWPlayer[order[i]].rank+1; + } +} + +Vec lbl_1_data_668[4] = { + { -300, 0, 460 }, + { -100, -30, 460 }, + { 100, -60, 460 }, + { 300, -90, 460 }, +}; + +void fn_1_D898(omObjData *object, int player) +{ + int playerNo = player; + int charNo = lbl_1_bss_3DC.unk30[playerNo].unk10; + object->model[1] = CharModelCreate(charNo, 4); + object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); + object->motion[2] = CharModelMotionCreate(charNo, 0x5F0003); + object->motion[3] = CharModelMotionCreate(charNo, 0x5F0005); + object->motion[4] = CharModelMotionCreate(charNo, 0x5F001A); + object->motion[5] = CharModelMotionCreate(charNo, 0x5F006D); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet(object->model[1], lbl_1_data_668[playerNo].x, lbl_1_data_668[lbl_1_bss_3DC.unk30[playerNo].unk18-1].y+90, lbl_1_data_668[playerNo].z); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(0x660056); + Hu3DModelPosSet(object->model[2], lbl_1_data_668[playerNo].x, lbl_1_data_668[lbl_1_bss_3DC.unk30[playerNo].unk18-1].y, lbl_1_data_668[playerNo].z); + if(lbl_1_bss_3DC.unk30[playerNo].unk18 == 4) { + Hu3DModelAttrSet(object->model[2], 1); + } + Hu3DModelScaleSet(object->model[2], 1.5, 1, 1.5); + Hu3DModelShadowMapSet(object->model[2]); +} + +void fn_1_DB58(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[0] = arg4; + lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[1] = arg1; + lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[2] = arg2+1; +} + +void fn_1_DC54(omObjData* arg0, StructBss16C* arg1) +{ + Vec pos = { 120, 0, 800 }; + fn_1_2948(arg0, 1, pos, -1, 30, 10); + lbl_1_bss_33C.unk04 = (void *)fn_1_D394; + fn_1_1DFC(lbl_1_bss_38C.unk00, 2, 2, 0, 0); + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, -60, 30, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_DDC4(void) +{ + omObjData *obj; + int playerNo = lbl_1_bss_3DC.unk10++; + lbl_1_bss_29C[playerNo].unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL); + lbl_1_bss_29C[playerNo].unk04 = NULL; + lbl_1_bss_29C[playerNo].unk00->data = &lbl_1_bss_29C[0]; + fn_1_D898(obj, playerNo); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_29C[playerNo].unk04 != NULL) { + lbl_1_bss_29C[playerNo].unk04(obj, &lbl_1_bss_29C[playerNo]); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_E1B8(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 170; + work->unk08.z = -20; + work->unk20.x = -5; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1700; +} + +void fn_1_E244(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 125; + temp.unk08.z = -20; + temp.unk20.x = -5; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1750; + fn_1_4FEC(work, &temp, work->unk40++, 60, 30); +} + +void fn_1_E334(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + if(work->unk40 == 50) { + fn_1_1DFC(lbl_1_bss_38C.unk00, 5, 5, 0, 0); + fn_1_1DFC(lbl_1_bss_38C.unk00, 6, 6, 0, 0); + HuAudFXPlay(161); + } + temp.unk08.x = 0; + temp.unk08.y = 130; + temp.unk08.z = 460; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 150; + fn_1_4FEC(work, &temp, work->unk40, 180, 10); + if(work->unk40++ >= 90) { + if(work->unk40 == 91) { + lbl_1_bss_88[0] = HuAudFXPlay(32); + } + work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40-90, 90); + Hu3DData[lbl_1_bss_38C.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40-90, 90); + } +} \ No newline at end of file diff --git a/src/REL/mstory2Dll/board_entrance.c b/src/REL/mstory2Dll/board_entrance.c new file mode 100644 index 00000000..d1ac7abb --- /dev/null +++ b/src/REL/mstory2Dll/board_entrance.c @@ -0,0 +1,644 @@ +#include "REL/mstory2Dll.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "game/pad.h" +#include "game/objsub.h" + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x18]; + /* 0x030 */ StructFn357C unk30[4]; + /* 0x100 */ float unk100; +} StructBss194; // Size 0x104 + +StructBss194 lbl_1_bss_194; +StructBss16C lbl_1_bss_16C; +StructBss16C lbl_1_bss_144; +StructBss16C lbl_1_bss_11C; +StructBss16C lbl_1_bss_F4; +StructBss16C lbl_1_bss_CC; +Process *lbl_1_bss_C8; +s32 lbl_1_bss_88[16]; +s32 lbl_1_bss_78[4]; + +u32 lbl_1_data_3A0[11] = { + 0x00250000, + 0x00250000, + 0x00250000, + 0x00250000, + 0x00250000, + 0x00250000, + 0x00250000, + 0x00250000, + 0x00250000, + 0x00250000, + 0x00250000 +}; + +s32 lbl_1_data_3CC[2][2] = { + 20, + 70, + 1, + 1 +}; + +s32 lbl_1_data_3DC = -1; +s32 lbl_1_data_3E0[2] = { -1, -1 }; + +void fn_1_9768(void); +void fn_1_9A10(void); +void fn_1_9BD4(s32 arg0); +void fn_1_9ECC(omObjData* arg0, StructBss16C* arg1); +void fn_1_9FDC(void); +void fn_1_A4A8(omObjData* arg0, StructBss16C* arg1); +void fn_1_A58C(void); +void fn_1_AB10(omObjData* arg0, StructBss16C* arg1); + +void fn_1_AE5C(void); +void fn_1_B1C0(void); +void fn_1_B24C(void); + +void fn_1_7DB0(void) +{ + int i; + while(1) { + do { + HuPrcVSleep(); + } while(lbl_1_data_3DC == -1 || lbl_1_data_3E0[0] == -1 || lbl_1_data_3E0[1] == -1 || lbl_1_data_3E0[0] != Hu3DMotionIDGet(lbl_1_data_3DC)); + for(i=0; i<2; i++) { + if(lbl_1_data_3CC[1][i] != -1) { + if(Hu3DMotionTimeGet(lbl_1_data_3DC) >= lbl_1_data_3CC[0][i]) { + OSReport("KE-System TIME:%d\n", lbl_1_data_3CC[0][i]); + HuAudFXPlay(81); + lbl_1_data_3CC[1][i] = -1; + } + } + } + if(Hu3DMotionTimeGet(lbl_1_data_3DC) <= 10) { + for(i=0; i<2; i++) { + lbl_1_data_3CC[1][i] = 1; + } + } + + } + +} + +void fn_1_7F54(Process* arg0, s32 arg1) +{ + lbl_1_bss_C8 = arg0; + lbl_1_bss_194.unk0C = arg1; + fn_1_C30(); + fn_1_3668(255); + fn_1_2828(lbl_1_bss_C8, fn_1_B1C0); + fn_1_3754(); + fn_1_9BD4(arg1); + HuPrcChildCreate(fn_1_9FDC, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_9A10, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_A58C, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_AE5C, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_9768, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_806C(omObjData *object) +{ + if(object->work[2]) { + object->work[2]--; + return; + } + if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_80F8(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while(1) { + fn_1_BC8(); + fontcolor = FONT_COLOR_WHITE; + printWin(posX, posY, 220, 130, &winColor); + if(lbl_1_bss_16C.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if(lbl_1_bss_144.unk04 == NULL) { + print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); + } else { + print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + } + if(lbl_1_bss_11C.unk04 == NULL) { + print8(posX, posY+20, 1, "PROC_PLAYER -> FALSE"); + } else { + print8(posX, posY+20, 1, "PROC_PLAYER -> TRUE"); + } + if(lbl_1_bss_F4.unk04 == NULL) { + print8(posX, posY+30, 1, "PROC_SUB -> FALSE"); + } else { + print8(posX, posY+30, 1, "PROC_SUB -> TRUE"); + } + if(lbl_1_bss_CC.unk04 == NULL) { + print8(posX, posY+40, 1, "PROC_KOOPA -> FALSE"); + } else { + print8(posX, posY+40, 1, "PROC_KOOPA -> TRUE"); + } + + print8(posX, posY+60, 1, "P:%d W:%d", lbl_1_bss_194.unk00, lbl_1_bss_194.unk0C); + print8(posX, posY+80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for(i=0; i<4; i++) { + print8(posX, posY+90+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_194.unk30[i].unk00, lbl_1_bss_194.unk30[i].unk04, lbl_1_bss_194.unk30[i].unk08, lbl_1_bss_194.unk30[i].unk0C, lbl_1_bss_194.unk30[i].unk14, lbl_1_bss_194.unk30[i].unk10); + } + if(HuPadBtnDown[0] & PAD_BUTTON_X) { + fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 30, 120, TRUE); + } else if(HuPadBtnDown[0] & PAD_BUTTON_Y) { + fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 30, 120, FALSE); + } + } +} + +void fn_1_8580(void) +{ + lbl_1_bss_78[0] = HuAudSeqPlay(51); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); +} + +void fn_1_85DC(void) +{ + fn_1_1DFC(lbl_1_bss_144.unk00, 2, 3, 0, 0); + fn_1_2264(lbl_1_bss_144.unk00, 2, 3, 0); + lbl_1_bss_11C.unk04 = (void *)fn_1_9ECC; + lbl_1_bss_F4.unk04 = (void *)fn_1_A4A8; + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_B24C); + fn_1_BE8(30); + fn_1_1DFC(lbl_1_bss_144.unk00, 2, 2, 0, 0); + do { + fn_1_BC8(); + } while(lbl_1_bss_11C.unk04 != NULL); + do { + fn_1_BC8(); + } while(lbl_1_bss_F4.unk04 != NULL); + lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C); + HuAudFXPlay(lbl_1_data_0[0][2]); + fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 3, 5, 1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0000); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0001); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x250004); + fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 1, 5, 1); + fn_1_1A94(lbl_1_bss_194.unk04); + fn_1_BE8(15); +} + +void fn_1_87D4(void) +{ + int i; + float speed; + HuAudSeqFadeOut(lbl_1_bss_78[0], 500); + HuAudFXPlay(153); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 2, 0, 0); + fn_1_BC8(); + Hu3DMotionTimeSet(lbl_1_bss_CC.unk00->model[1], 100); + Hu3DModelAttrReset(lbl_1_bss_CC.unk00->model[1], 1); + while(1) { + fn_1_BC8(); + if(Hu3DMotionTimeGet(lbl_1_bss_CC.unk00->model[1]) >= 132) { + break; + } + } + fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 4, 0, 0); + fn_1_BC8(); + while(1) { + fn_1_BC8(); + if(Hu3DMotionTimeGet(lbl_1_bss_F4.unk00->model[1]) >= 5) { + break; + } + } + Hu3DMotionSpeedSet(lbl_1_bss_F4.unk00->model[1], 0); + Hu3DData[lbl_1_bss_F4.unk00->model[1]].rot.y = 0; + fn_1_67D8(lbl_1_bss_11C.unk00, 3, 1, 5, 0); + HuAudFXPlay(156); + omVibrate(lbl_1_bss_194.unk0C, 45, 12, 0); + speed = 50; + for(i=0; i<60; i++) { + float weight = fn_1_B08(0, speed, i%15, 15); + speed = fn_1_88C(speed, 0, 30); + lbl_1_bss_194.unk100 = fn_1_88C(lbl_1_bss_194.unk100, weight, 5); + fn_1_BC8(); + } + lbl_1_bss_194.unk100 = 0; +} + +void fn_1_8ABC(void) +{ + fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 1, 20, 1); + lbl_1_bss_78[1] = HuAudSeqPlay(6); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 3, 10, 0); + fn_1_BE8(30); + lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C); + HuAudFXPlay(lbl_1_data_0[6][0]); + HuWinAttrSet(lbl_1_bss_194.unk04, 0x400); + HuWinMesSet(lbl_1_bss_194.unk04, 0x1F0002); + fn_1_2264(lbl_1_bss_CC.unk00, 1, 3, 10); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 3, 10, 0); + fn_1_BE8(45); + HuAudFXPlay(lbl_1_data_0[6][0]); + fn_1_2264(lbl_1_bss_CC.unk00, 1, 3, 10); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 10, 1); + HuWinAttrReset(lbl_1_bss_194.unk04, 0x400); + HuWinKeyWaitEntry(lbl_1_bss_194.unk04); + fn_1_BC8(); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + HuAudFXPlay(lbl_1_data_0[6][2]); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 4, 10, 1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0003); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_194.unk04); + fn_1_BE8(30); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 30, 1); + fn_1_BE8(60); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 5, 10, 0); + fn_1_BE8(25); + HuAudFXPlay(81); + fn_1_BE8(20); + lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C); + HuAudFXPlay(lbl_1_data_0[6][2]); + fn_1_1D4C(lbl_1_bss_194.unk04, lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 0); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0004); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0005); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_194.unk04); + fn_1_67D8(lbl_1_bss_11C.unk00, 7, 8, 10, 0); + fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 3, 5, 0); + fn_1_BE8(90); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 3, 30, 0); + fn_1_BE8(30); + lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C); + HuAudFXPlay(lbl_1_data_0[6][0]); + HuWinAttrSet(lbl_1_bss_194.unk04, 0x400); + HuWinMesSet(lbl_1_bss_194.unk04, 0x1F0002); + fn_1_2264(lbl_1_bss_CC.unk00, 1, 3, 10); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 10, 1); + HuWinAttrReset(lbl_1_bss_194.unk04, 0x400); + HuWinKeyWaitEntry(lbl_1_bss_194.unk04); + fn_1_BC8(); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1D18(lbl_1_bss_194.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_194.unk04); +} + +void fn_1_9034(void) +{ + fn_1_BE8(60); + lbl_1_bss_CC.unk04 = (void *)fn_1_AB10; + lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C); + HuAudFXPlay(lbl_1_data_0[6][1]); + fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0007); + fn_1_1AFC(lbl_1_bss_194.unk04, -1); + fn_1_1A94(lbl_1_bss_194.unk04); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_CC.unk04 == NULL) { + break; + } + } + HuAudFXPlay(149); + Hu3DMotionSpeedSet(lbl_1_bss_F4.unk00->model[1], 1); + fn_1_BC8(); + fn_1_2264(lbl_1_bss_F4.unk00, 1, 4, 0); + lbl_1_bss_88[0] = HuAudFXPlay(98); + HuAudFXPlay(lbl_1_data_0[0][1]); + fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 5, 15, 1); + fn_1_BE8(60); +} + +void fn_1_9198(void) +{ + fn_1_BE8(60); + HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); + HuAudFXFadeOut(lbl_1_bss_88[0], 1000); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while(1) { + fn_1_BC8(); + if(!WipeStatGet()) { + break; + } + } + CharModelKill(-1); + HuAudFadeOut(1); + GWPlayerCfg[0].group = 0; + GWPlayerCfg[0].character = lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10; + GWPlayerCfg[0].pad_idx = lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk14; + GWPlayerCfg[0].iscom = FALSE; + omOvlGotoEx(OVL_MENT, 1, 11, 0); +} + +void fn_1_92BC(omObjData* arg0, StructBss16C* arg1) +{ + int temp = 0; + fn_1_8580(); + fn_1_85DC(); + fn_1_87D4(); + fn_1_8ABC(); + fn_1_9034(); + fn_1_9198(); + arg1->unk04 = NULL; +} + +void fn_1_9768(void) +{ + omObjData *obj; + lbl_1_bss_16C.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL); + lbl_1_bss_16C.unk04 = (void *)fn_1_92BC; + lbl_1_bss_16C.unk00->data = &lbl_1_bss_16C; + while(1) { + fn_1_BC8(); + if(lbl_1_bss_16C.unk04 != NULL) { + lbl_1_bss_16C.unk04(obj, &lbl_1_bss_16C); + } + } +} + +void fn_1_981C(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660050); + object->motion[0] = Hu3DMotionIDGet(object->model[1]); + fn_1_1DFC(object, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(object->model[1], "base_fix9-base"); + object->model[2] = Hu3DModelCreateFile(0x660053); + object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); + object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + fn_1_1DFC(object, 2, 3, 0, 2); + object->model[4] = Hu3DModelCreateFile(0x660051); +} + +void fn_1_9954(omObjData* arg0, StructBss16C* arg1) +{ + Hu3DData[arg0->model[5]].pos.y = fn_1_B08(125, 130, arg1->unk08++, 360); + if(arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_9A10(void) +{ + omObjData *obj; + lbl_1_bss_144.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL); + lbl_1_bss_144.unk04 = (void *)fn_1_9954; + lbl_1_bss_144.unk00->data = &lbl_1_bss_144; + fn_1_981C(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_144.unk04 != NULL) { + lbl_1_bss_144.unk04(obj, &lbl_1_bss_144); + } + } +} + +void fn_1_9BD4(s32 arg0) +{ + int i; + int order[4]; + order[0] = 0; + for(i=1; i<4; i++) { + order[i] = order[i-1]+1; + if(order[i] >= 4) { + order[i] = 0; + } + if(arg0 == order[i]) { + lbl_1_bss_194.unk00 = i; + } + } + for(i=0; i<4; i++) { + fn_1_357C(&lbl_1_bss_194.unk30[i], order[i]); + } +} + +void fn_1_9CB8(omObjData *object) +{ + int charNo = lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10; + object->model[1] = CharModelCreate(charNo, 1); + object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); + object->motion[2] = CharModelMotionCreate(charNo, 0x5F0035); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660018+charNo); + object->motion[7] = Hu3DJointMotionFile(object->model[1], 0x660048+charNo); + object->motion[8] = Hu3DJointMotionFile(object->model[1], 0x660040+charNo); + object->motion[9] = Hu3DJointMotionFile(object->model[1], 0x660020+charNo); + object->motion[10] = CharModelMotionCreate(charNo, 0x5F0012); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet(object->model[1], 120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, -135, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_9ECC(omObjData* arg0, StructBss16C* arg1) +{ + int i; + fn_1_1DFC(arg0, 1, 2, 0, 0); + fn_1_BC8(); + Hu3DMotionTimeSet(arg0->model[1], 60); + for(i=0; i<60; i++) { + fn_1_BC8(); + Hu3DData[arg0->model[1]].rot.y = fn_1_864(-135, -90, i, 60); + } + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_9FDC(void) +{ + omObjData *obj; + lbl_1_bss_11C.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL); + lbl_1_bss_11C.unk04 = NULL; + lbl_1_bss_11C.unk00->data = &lbl_1_bss_11C; + fn_1_9CB8(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_11C.unk04 != NULL) { + lbl_1_bss_11C.unk04(obj, &lbl_1_bss_11C); + } + if(obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_A288(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660072); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660073); + object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660075); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660076); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x66007A); + object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x66007B); + object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x660079); + Hu3DModelPosSet(object->model[1], 0, 0, 460); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 6, 0, 1); + CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 9); +} + +void fn_1_A4A8(omObjData* arg0, StructBss16C* arg1) +{ + Vec pos = { -120, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 90, 45, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_A58C(void) +{ + omObjData *obj; + lbl_1_bss_F4.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL); + lbl_1_bss_F4.unk04 = NULL; + lbl_1_bss_F4.unk00->data = &lbl_1_bss_F4; + fn_1_A288(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_F4.unk04 != NULL) { + lbl_1_bss_F4.unk04(obj, &lbl_1_bss_F4); + } + if(obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_A848(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660062); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); + object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660065); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660066); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660069); + object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660068); + object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x66006C); + object->motion[7] = Hu3DJointMotionFile(object->model[1], 0x66006D); + object->motion[8] = Hu3DJointMotionFile(object->model[1], 0x660064); + Hu3DModelPosSet(object->model[1], -120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, 90, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + lbl_1_data_3DC = object->model[1]; + lbl_1_data_3E0[0] = object->motion[7]; + lbl_1_data_3E0[1] = object->motion[8]; + HuPrcChildCreate(fn_1_7DB0, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_AB10(omObjData* arg0, StructBss16C* arg1) +{ + int i; + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 8, 15, 1); + for(i=0; i<30; i++) { + fn_1_BC8(); + Hu3DData[lbl_1_bss_CC.unk00->model[1]].pos.x = fn_1_864(-120, -60, i, 30); + } + fn_1_1DFC(lbl_1_bss_11C.unk00, 1, 9, 15, 0); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 6, 15, 0); + fn_1_2264(lbl_1_bss_CC.unk00, 1, 6, 15); + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 7, 15, 1); + fn_1_1DFC(lbl_1_bss_11C.unk00, 1, 10, 15, 1); + for(i=0; i<240; i++) { + fn_1_BC8(); + Hu3DData[lbl_1_bss_CC.unk00->model[1]].pos.x = fn_1_864(-60, 540, i, 180); + Hu3DData[lbl_1_bss_11C.unk00->model[1]].pos.x = fn_1_864(120, 840, i, 180); + } + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_ADB0(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_CC.unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_CC.unk00->work[0] = arg4; + lbl_1_bss_CC.unk00->work[1] = arg1; + lbl_1_bss_CC.unk00->work[2] = arg2+1; +} + +void fn_1_AE5C(void) +{ + omObjData *obj; + lbl_1_bss_CC.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL); + lbl_1_bss_CC.unk04 = NULL; + lbl_1_bss_CC.unk00->data = &lbl_1_bss_CC; + fn_1_A848(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_CC.unk04 != NULL) { + lbl_1_bss_CC.unk04(obj, &lbl_1_bss_CC); + } + if(obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_B1C0(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 125; + work->unk08.z = 0; + work->unk20.x = -4.9f; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1750; +} + +void fn_1_B24C(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 100; + temp.unk08.z = 0; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1400; + fn_1_42A0(work, &temp, work->unk40++, 60, 10); + if(0.0f != lbl_1_bss_194.unk100) { + work->unk08.y = 100+lbl_1_bss_194.unk100; + } +} \ No newline at end of file From 40da624fe7e6c914154c1b7a58372f7c6a717b0e Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sat, 11 Jan 2025 00:44:35 +0100 Subject: [PATCH 09/24] Completely match m430Dll (#519) --- config/GMPE01_00/rels/m430Dll/symbols.txt | 2 +- configure.py | 2 +- include/game/gamework_data.h | 2 +- src/REL/m430Dll/player.c | 2427 +++++++++++++++++++++ 4 files changed, 2430 insertions(+), 3 deletions(-) create mode 100644 src/REL/m430Dll/player.c diff --git a/config/GMPE01_00/rels/m430Dll/symbols.txt b/config/GMPE01_00/rels/m430Dll/symbols.txt index a4b72fe6..50779d4f 100644 --- a/config/GMPE01_00/rels/m430Dll/symbols.txt +++ b/config/GMPE01_00/rels/m430Dll/symbols.txt @@ -445,7 +445,7 @@ lbl_1_data_258 = .data:0x00000258; // type:object size:0x20 lbl_1_data_278 = .data:0x00000278; // type:object size:0x8 lbl_1_data_280 = .data:0x00000280; // type:object size:0x8 lbl_1_data_288 = .data:0x00000288; // type:object size:0x8 -lbl_1_data_290 = .data:0x00000290; // type:object size:0x14 +lbl_1_data_290 = .data:0x00000290; // type:object size:0x12 scope:local data:string lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x8 lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x54 lbl_1_data_300 = .data:0x00000300; // type:object size:0x8 data:4byte diff --git a/configure.py b/configure.py index 9c510762..212bef75 100644 --- a/configure.py +++ b/configure.py @@ -1089,7 +1089,7 @@ config.libs = [ objects={ Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m430Dll/main.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m430Dll/water.c"), - Object(NonMatching, "REL/m430Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m430Dll/player.c"), }, ), Rel( diff --git a/include/game/gamework_data.h b/include/game/gamework_data.h index 330e0f86..8d98cad0 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -362,6 +362,6 @@ static inline void GWPlayerCoinWinSet(s32 player, s16 value) } #define GWPlayerCoinWinAdd(player, value) GWPlayerCoinWinSet((player), GWPlayerCoinWinGet((player))+(value)) -#define GWPlayerCoinCollectAdd(player, value) GWPlayerCoinCollectSet((player), GWPlayerCoinCollectGet((player))+(value)) +#define GWPlayerCoinCollectAdd(player, value) GWPlayerCoinCollectSet((player), (s32)GWPlayerCoinCollectGet((player))+(value)) #endif diff --git a/src/REL/m430Dll/player.c b/src/REL/m430Dll/player.c new file mode 100644 index 00000000..981602dc --- /dev/null +++ b/src/REL/m430Dll/player.c @@ -0,0 +1,2427 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXVert.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m430Dll.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/frand.h" +#endif + +inline double fabs2(double x) +{ + return (double)fabs(x); +} + +typedef struct M430PlayerData170Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; +} M430PlayerData170Struct; /* size = 0x08 */ + +typedef struct M430PlayerBss160Struct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10[6]; + s32 unk_28[6][3]; + s32 unk_70[6][3]; + s32 unk_B8; + s32 unk_BC; +} M430PlayerBss160Struct; /* size = 0xC0 */ + +typedef struct M430PlayerBss164Struct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + AnimData *unk_14; + Vec unk_18; + Vec unk_24; + Vec unk_30; +} M430PlayerBss164Struct; /* size = 0x3C */ + +typedef struct M430PlayerBss168Struct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + Vec unk_14; + Vec unk_20; + Vec unk_2C; +} M430PlayerBss168Struct; /* size = 0x38 */ + +typedef struct M430PlayerBss16CStruct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + s32 unk_14; + float unk_18; + Vec unk_1C; + float unk_28; + float unk_2C; + float unk_30; + float unk_34; + float unk_38; + float unk_3C; +} M430PlayerBss16CStruct; /* size = 0x40 */ + +typedef struct M430PlayerBss170Struct { + s32 unk_00; + s32 unk_04; + s32 unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; + float unk_2C; + float unk_30; + float unk_34; + float unk_38; + float unk_3C; + float unk_40; + float unk_44; + float unk_48; + Vec *unk_4C; + Vec *unk_50; + Vec2f *unk_54; + s32 unk_58; + u32 unk_5C; + void *unk_60; +} M430PlayerBss170Struct; /* size = 0x64 */ + +typedef struct M430PlayerBss174Struct { + s32 unk_00[2]; + s32 unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + s32 unk_20; +} M430PlayerBss174Struct; /* size = 0x24 */ + +typedef struct M430PlayerWork { + u32 unk_00; + u16 unk_04; + u16 unk_06; + u16 unk_08; + u16 unk_0A; + u16 unk_0C; + u16 unk_0E; + u16 unk_10; + u16 unk_12; + u16 unk_14; + u16 unk_16; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; + float unk_2C; + float unk_30; + s32 unk_34; + s32 unk_38; + char unk3C[4]; + s32 unk_40; + u32 unk_44; + float unk_48; + float unk_4C; + float unk_50; + float unk_54; + s32 unk_58; + s32 unk_5C; + s32 unk_60; + s32 unk_64; + s32 unk_68; + s32 unk_6C; + float unk_70; + s32 unk_74; + s32 unk_78; + float unk_7C; +} M430PlayerWork; /* size = 0x80 */ + +void fn_1_100A0(void); +void fn_1_1033C(void); +void fn_1_1053C(void); +void fn_1_10540(s32 arg0, s32 arg1, float arg8, float arg9, float argA); +void fn_1_1058C(s32 arg0, float arg8); +void fn_1_105B8(s32 arg0); +void fn_1_1061C(M430PlayerBss170Struct *arg0); +void fn_1_10948(ModelData *model, Mtx matrix); +void fn_1_10B88(void); +void fn_1_10D1C(void); +void fn_1_10F20(void); +s32 fn_1_10F24(s32 arg0, float arg8, float arg9, float argA); +s32 fn_1_110A8(s32 arg0, float arg8, float arg9, float argA, s32 arg1); +s32 fn_1_111BC(s32 arg0, float arg8, Vec *arg1); +void fn_1_11314(s32 arg0); +void fn_1_113AC(void); +void fn_1_114F0(void); +void fn_1_11644(void); +s32 fn_1_11648(s32 arg0, float arg8, float arg9, float argA); +s32 fn_1_117A4(s32 arg0, float arg8, float arg9, float argA, s32 arg1); +s32 fn_1_11A1C(s32 arg0, float arg8, Vec *arg1); +M430PlayerBss168Struct *fn_1_11B64(s32 arg0); +void fn_1_11B94(s32 arg0); +void fn_1_11C1C(void); +void fn_1_11D70(void); +void fn_1_11F60(void); +s32 fn_1_11F90(s32 arg0, float arg8, float arg9, float argA); +void fn_1_12550(s32 arg0); +void fn_1_125C4(void); +void fn_1_129CC(void); +void fn_1_12D74(void); +void fn_1_12DF0(s32 arg0); +void fn_1_12F20(float arg8, float *arg0, float *arg1, float *arg2, float *arg3); +float fn_1_1303C(float arg8, float arg9); +float fn_1_13154(float arg8, float arg9, float argA); +void fn_1_133A4(AnimData *arg0); +void fn_1_133DC(Mtx arg0, Vec *arg1); +void fn_1_BE24(omObjData *object); +void fn_1_C040(void); +void fn_1_C1E4(omObjData *object); +void fn_1_CA3C(omObjData *object); +void fn_1_D2D0(omObjData *object); +void fn_1_D828(omObjData *object); +void fn_1_E8FC(omObjData *object); +void fn_1_F0D8(omObjData *object); +s32 fn_1_F62C(omObjData *object); +void fn_1_F6A0(omObjData *object); +void fn_1_FC9C(omObjData *object); + +M430PlayerData170Struct lbl_1_data_170[7] = { + { 0x5F0042, -1 }, + { 0, 1 }, + { 0, 2 }, + { 0, 3 }, + { 0, -1 }, + { 0x5F0017, -1 }, + { 0x5F0018, -1 }, +}; +M430PlayerData170Struct lbl_1_data_1A8[4] = { + { 0, 4 }, + { 0x5F0000, -1 }, + { 0x5F0017, -1 }, + { 0x5F0018, -1 }, +}; +s32 lbl_1_data_1C8[5] = { 0, 0x3D0031, 0x3D0039, 0x3D0041, 0x3D0049 }; +float lbl_1_data_1DC[7] = { -262.5f, -173.25f, -86.625f, 0.0f, 86.625f, 173.25f, 262.5f }; +Vec lbl_1_data_1F8[8] = { + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 160.0f }, + { 60.000004f, 0.0f, 0.0f }, + { -60.000004f, 0.0f, 0.0f }, + { 50.0f, 0.0f, 100.0f }, + { -50.0f, 0.0f, 100.0f }, + { 60.000004f, 0.0f, -120.00001f }, + { -60.000004f, 0.0f, -120.00001f }, +}; +float lbl_1_data_258[8] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 25.0f, 0.0f, 25.0f }; +s32 lbl_1_data_278[2] = { 0x3D001C, 0x3D001D }; +s32 lbl_1_data_280[2] = { 0x3D001E, 0x3D001F }; +s32 lbl_1_data_288[2] = { 0x3D0020, 0x3D0021 }; + +s32 lbl_1_bss_17C; +Process *lbl_1_bss_178; +M430PlayerBss174Struct *lbl_1_bss_174; +M430PlayerBss170Struct *lbl_1_bss_170; +M430PlayerBss16CStruct *lbl_1_bss_16C; +M430PlayerBss168Struct *lbl_1_bss_168; +M430PlayerBss164Struct *lbl_1_bss_164; +M430PlayerBss160Struct *lbl_1_bss_160; +s32 lbl_1_bss_15C; +s32 lbl_1_bss_158; + +void fn_1_BBC4(Process *process) +{ + Vec sp14; + Vec sp8; + + lbl_1_bss_178 = process; + fn_1_C040(); + fn_1_100A0(); + fn_1_10B88(); + fn_1_113AC(); + fn_1_11C1C(); + fn_1_125C4(); + omAddObjEx(process, 0x2D, 0, 0, -1, fn_1_BE24); + sp14.x = CenterM[0].x + (CZoomM[0] * (sind(CRotM[0].y) * cosd(CRotM[0].x))); + sp14.y = CenterM[0].y + (CZoomM[0] * -sind(CRotM[0].x)); + sp14.z = CenterM[0].z + (CZoomM[0] * (cosd(CRotM[0].y) * cosd(CRotM[0].x))); + PSVECSubtract(CenterM, &sp14, &sp8); + PSVECNormalize(&sp8, &sp8); + HuAudFXListnerSetEX(&sp14, &sp8, 100000.0f, 566.6667f, 0.0f, 300.0f, 300.0f); +} + +void fn_1_BE24(omObjData *object) +{ + Vec sp14; + Vec sp8; + + fn_1_1033C(); + fn_1_10D1C(); + fn_1_114F0(); + fn_1_11D70(); + fn_1_129CC(); + sp14.x = CenterM[0].x + (CZoomM[0] * (sind(CRotM[0].y) * cosd(CRotM[0].x))); + sp14.y = CenterM[0].y + (CZoomM[0] * -sind(CRotM[0].x)); + sp14.z = CenterM[0].z + (CZoomM[0] * (cosd(CRotM[0].y) * cosd(CRotM[0].x))); + PSVECSubtract(CenterM, &sp14, &sp8); + PSVECNormalize(&sp8, &sp8); + HuAudFXListnerUpdate(&sp14, &sp8); +} + +void fn_1_C00C(void) +{ + HuAudFXListnerKill(); + fn_1_1053C(); + fn_1_10F20(); + fn_1_11644(); + fn_1_11F60(); + fn_1_12D74(); +} + +void fn_1_C040(void) +{ + s8 spC[4]; + s32 sp8; + s32 var_r31; + omObjData *var_r30; + s32 var_r29; + s32 var_r28; + + sp8 = 0; + lbl_1_bss_17C = 1; + omMakeGroupEx(lbl_1_bss_178, 0, 4); + omGetGroupMemberListEx(lbl_1_bss_178, 0); + lbl_1_bss_174 = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(M430PlayerBss174Struct), MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_174, 0, 2 * sizeof(M430PlayerBss174Struct)); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + spC[var_r31] = -1; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = GWPlayerCfg[var_r31].group; + if (spC[var_r29] == -1) { + spC[var_r29] = var_r31; + } + else { + break; + } + } + if (var_r31 < 4) { + spC[0] = 0; + spC[1] = 1; + spC[2] = 2; + spC[3] = 3; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = omAddObjEx(lbl_1_bss_178, 0x28, 3, 7, 0, fn_1_C1E4); + var_r28 = spC[var_r31]; + var_r30->work[0] = var_r28; + var_r30->work[1] = var_r31 >> 1; + var_r30->work[2] = var_r31 & 1; + } +} + +void fn_1_C1E4(omObjData *object) +{ + M430PlayerWork *work; + s32 var_r29; + M430PlayerBss174Struct *var_r28; + u32 var_r27; + HsfData *var_r26; + HsfMaterial *var_r25; + ModelData *var_r24; + s32 var_r23; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M430PlayerWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M430PlayerWork)); + var_r27 = object->work[0]; + var_r23 = GWPlayerCfg[var_r27].character; + work->unk_38 = var_r23; + work->unk_00 = var_r27; + work->unk_04 = object->work[1]; + work->unk_06 = GWPlayerCfg[var_r27].pad_idx; + work->unk_08 = GWPlayerCfg[var_r27].iscom; + work->unk_0A = GWPlayerCfg[var_r27].diff; + work->unk_0C = object->work[2]; + work->unk_0E = 0; + work->unk_10 = 0; + work->unk_12 = 0; + work->unk_14 = 0; + work->unk_16 = 0; + if (work->unk_04 == 0) { + work->unk_18 = 450.0f; + } + else { + work->unk_18 = -450.0f; + } + work->unk_34 = 1; + work->unk_24 = 12.500001f; + work->unk_28 = 0.0f; + work->unk_1C = 180.0f; + work->unk_2C = 0.0f; + work->unk_30 = 0.0f; + work->unk_20 = 0.0f; + work->unk_40 = work->unk_44 = 0; + work->unk_48 = work->unk_4C = 0.0f; + work->unk_50 = 0.0f; + work->unk_54 = 0.0f; + work->unk_74 = 0; + work->unk_78 = -1; + work->unk_7C = 0.0f; + work->unk_60 = -1; + work->unk_64 = -1; + work->unk_68 = -1; + work->unk_6C = -1; + work->unk_70 = lbl_1_data_258[var_r23]; + object->model[0] = CharModelCreate(work->unk_38, 4); + Hu3DModelCameraSet(object->model[0], 3); + Hu3DModelLayerSet(object->model[0], 6); + CharModelStepTypeSet(work->unk_38, 3); + if (work->unk_0C == 0) { + for (var_r29 = 0; var_r29 < 7; var_r29++) { + if ((lbl_1_data_170[var_r29].unk_04) == 0xFFFFFFFF) { + object->motion[var_r29] = CharModelMotionCreate(work->unk_38, lbl_1_data_170[var_r29].unk_00); + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], work->unk_38 + lbl_1_data_1C8[lbl_1_data_170[var_r29].unk_04]); + } + if (var_r29 == 5) { + CharModelVoiceEnableSet(work->unk_38, object->motion[var_r29], 0); + } + } + work->unk_58 = 0; + CharModelMotionSet(work->unk_38, object->motion[work->unk_58]); + object->model[1] = Hu3DModelCreateFile(lbl_1_data_278[work->unk_04]); + Hu3DModelLayerSet(object->model[1], 2); + Hu3DModelCameraSet(object->model[1], 3); + Hu3DModelScaleSet(object->model[1], 1.2f, 1.2f, 1.2f); + object->model[2] = Hu3DModelCreateFile(0x3D0025); + Hu3DModelLayerSet(object->model[2], 1); + Hu3DModelCameraSet(object->model[2], 3); + work->unk_60 = HuAudFXPlay(0x67A); + work->unk_68 = 0x50; + if (work->unk_60 != -1) { + HuAudFXVolSet(work->unk_60, work->unk_68); + } + if (work->unk_04 == 0) { + work->unk_64 = HuAudFXPlay(0x675); + } + else { + work->unk_64 = HuAudFXPlay(0x676); + } + if (work->unk_64 != -1) { + HuAudFXPitchSet(work->unk_64, 0); + } + } + else { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (lbl_1_data_1A8[var_r29].unk_04 == 0xFFFFFFFF) { + object->motion[var_r29] = CharModelMotionCreate(work->unk_38, lbl_1_data_1A8[var_r29].unk_00); + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], work->unk_38 + lbl_1_data_1C8[lbl_1_data_1A8[var_r29].unk_04]); + } + if (var_r29 == 2) { + CharModelVoiceEnableSet(work->unk_38, object->motion[var_r29], 0); + } + } + work->unk_58 = 0; + CharModelMotionSet(work->unk_38, object->motion[work->unk_58]); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + object->model[1] = Hu3DModelCreateFile(lbl_1_data_280[work->unk_04]); + Hu3DModelLayerSet(object->model[1], 7); + Hu3DModelCameraSet(object->model[1], 3); + Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(object->model[1], 2.0f); + object->model[2] = Hu3DModelCreateFile(lbl_1_data_288[work->unk_04]); + Hu3DModelLayerSet(object->model[2], 6); + Hu3DModelCameraSet(object->model[2], 3); + } + CharModelMotionDataClose(work->unk_38); + object->trans.x = work->unk_18; + if (work->unk_0C == 0) { + object->trans.y = 0.0f; + } + else { + object->trans.y = 200.0f; + } + if (work->unk_04 == 0) { + object->trans.z = -100000.0f; + } + else { + object->trans.z = -101000.0f; + } + object->rot.y = 180.0f; + work->unk_20 = object->trans.y; + var_r28 = &lbl_1_bss_174[work->unk_04]; + if (work->unk_0C == 0) { + var_r28->unk_00[work->unk_0C] = work->unk_00; + if (work->unk_08 != 0) { + var_r23 = var_r28->unk_08 | 1; + var_r28->unk_08 = var_r23; + } + var_r28->unk_0C = object->trans.x; + var_r28->unk_10 = 0.0f; + var_r28->unk_14 = object->trans.z; + var_r28->unk_18 = object->trans.z; + var_r28->unk_1C = work->unk_24; + var_r28->unk_20 = 0; + lbl_1_bss_158 = 1; + } + else { + var_r28->unk_00[work->unk_0C] = work->unk_00; + if (work->unk_08 != 0) { + var_r28->unk_08 = var_r28->unk_08 | 2; + } + } + if (work->unk_0C != 0) { + var_r24 = &Hu3DData[object->model[1]]; + var_r26 = var_r24->hsfData; + for (var_r25 = var_r26->material, var_r29 = 0; var_r29 < var_r26->materialCnt; var_r29++, var_r25++) { + var_r25->flags |= 2; + } + } + object->func = fn_1_CA3C; + (void)var_r24; + (void)var_r24; +} + +void fn_1_CA3C(omObjData *object) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + M430PlayerWork *work; + s32 var_r29; + M430PlayerBss174Struct *var_r28; + HsfData *var_r27; + HsfMaterial *var_r26; + ModelData *var_r25; + + work = object->data; + var_r28 = &lbl_1_bss_174[work->unk_04]; + work->unk_40 = 0; + work->unk_44 = 0; + work->unk_48 = 0.0f; + work->unk_4C = 0.0f; + if (work->unk_0C == 0) { + work->unk_34 = 3; + work->unk_24 = -41.000004f; + object->rot.y = 0.0f; + object->rot.z = 0.0f; + object->trans.z -= work->unk_30; + fn_1_D828(object); + if (work->unk_60 != -1) { + HuAudFXVolSet(work->unk_60, work->unk_68); + } + if (work->unk_64 != -1) { + HuAudFXPitchSet(work->unk_64, (s32)(8192.0f * (work->unk_68 / 127.0f))); + } + object->rot.y = object->rot.z = 0.0f; + if (++work->unk_10 > (60.0f * (1.5f + (0.5f * work->unk_04)))) { + work->unk_30 += 30.000002f; + var_r28->unk_18 = object->trans.z = object->trans.z + work->unk_30; + work->unk_68 += 3; + if (work->unk_68 > 0x7F) { + work->unk_68 = 0x7F; + } + } + else { + var_r28->unk_18 = object->trans.z; + } + var_f30 = work->unk_70 * sind(object->rot.y); + var_f29 = work->unk_70 * cosd(object->rot.y); + Hu3DModelPosSet(object->model[1], object->trans.x + var_f30, object->trans.y, object->trans.z + var_f29); + Hu3DModelRotSet(object->model[1], object->rot.x, object->rot.y, object->rot.z); + Hu3DModelPosSet(object->model[2], object->trans.x + var_f30, object->trans.y - 150.0f, object->trans.z + var_f29); + Hu3DModelRotSet(object->model[2], object->rot.x, 180.0f + object->rot.y, object->rot.z); + fn_1_10540(work->unk_04, 0, object->trans.x, 25.0f + object->trans.y, object->trans.z - 100.0f); + if (work->unk_10 > 30.0f) { + var_f31 = 0.016666668f * (work->unk_10 - 30.0f); + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + var_f31 = sind((90.0f * var_f31)); + var_f31 *= var_f31; + } + else { + var_f31 = 0.0f; + } + CenterM[work->unk_04].x = work->unk_18 - (var_f31 * work->unk_18); + CenterM[work->unk_04].z = (950.0f * (0.5f + (0.5f * var_f31))) + fn_1_7FBC(work->unk_04); + } + else { + work->unk_1C = 0.0f; + object->rot.y = 0.0f; + object->rot.z = 0.0f; + fn_1_E8FC(object); + work->unk_1C = 0.0f; + object->rot.y = 0.0f; + object->rot.z = 0.0f; + object->trans.y = 200.0f; + object->trans.z = var_r28->unk_18 - 300.0f; + object->rot.z = 0.0f; + for (var_r29 = 0; var_r29 < 2; var_r29++) { + Hu3DModelPosSet(object->model[var_r29 + 1], object->trans.x, 150.0f + object->trans.y, 50.0f + object->trans.z); + Hu3DModelRotSet(object->model[var_r29 + 1], object->rot.x, object->rot.y, object->rot.z); + } + fn_1_10540(work->unk_04, 1, object->trans.x, 150.0f + object->trans.y, 50.0f + object->trans.z); + if (work->unk_6C == -1) { + sp8.x = object->trans.x; + sp8.y = object->trans.y; + sp8.z = object->trans.z; + work->unk_6C = HuAudFXEmiterPlay(0x67B, &sp8); + } + else { + sp8.x = object->trans.x; + sp8.y = object->trans.y; + sp8.z = object->trans.z; + HuAudFXEmiterUpDate(work->unk_6C, &sp8); + } + } + if (fn_1_4058() == 2) { + if (work->unk_0C == 0) { + work->unk_34 = 1; + work->unk_24 = 12.500001f; + work->unk_28 = 0.0f; + work->unk_68 = 0x50; + object->trans.y = 0.0f; + } + else { + var_r25 = &Hu3DData[object->model[1]]; + var_r27 = var_r25->hsfData; + for (var_r26 = var_r27->material, var_r29 = 0; var_r29 < var_r27->materialCnt; var_r29++, var_r26++) { + var_r26->flags &= 0xFFFFFFFD; + } + if (work->unk_6C != -1) { + HuAudFXStop(work->unk_6C); + } + work->unk_6C = -1; + if (work->unk_04 == 0) { + work->unk_6C = HuAudFXPlay(0x67C); + } + else { + work->unk_6C = HuAudFXPlay(0x67D); + } + if (work->unk_6C != -1) { + HuAudFXPitchSet(work->unk_6C, -0x2000); + } + work->unk_28 = 0.0f; + object->trans.y = 200.0f; + object->rot.z = 180.0f; + } + object->trans.x *= -1.0f; + work->unk_18 *= -1.0f; + object->trans.x = work->unk_18; + object->trans.z = 0.0f; + object->rot.x = 0.0f; + object->rot.y = 180.0f; + work->unk_1C = 180.0f; + work->unk_20 = object->trans.y; + lbl_1_bss_158 = 0; + object->func = fn_1_D2D0; + } +} + +void fn_1_D2D0(omObjData *object) +{ + s32 spC; + s32 sp8; + float var_f31; + M430PlayerWork *work; + s32 var_r29; + M430PlayerBss174Struct *var_r28; + + work = object->data; + spC = 0; + sp8 = -1; + var_r28 = &lbl_1_bss_174[work->unk_04]; + if ((lbl_1_bss_15C == 0) && (fn_1_4070() >= 2)) { + fn_1_12DF0(1); + } + if (lbl_1_bss_17C != 0) { + Hu3DModelCameraSet(object->model[0], 3); + Hu3DModelCameraSet(object->model[1], 3); + if (object->model[2] != -1) { + Hu3DModelCameraSet(object->model[2], 3); + } + } + else { + if (work->unk_04 == 0) { + var_r29 = 1; + } + else { + var_r29 = 2; + } + Hu3DModelCameraSet(object->model[0], var_r29); + Hu3DModelCameraSet(object->model[1], var_r29); + if (object->model[2] != -1) { + Hu3DModelCameraSet(object->model[2], var_r29); + } + } + if (fn_1_4070() == 2) { + work->unk_40 = HuPadBtn[work->unk_06]; + work->unk_44 = HuPadBtnDown[work->unk_06]; + work->unk_48 = HuPadStkX[work->unk_06]; + work->unk_4C = HuPadStkY[work->unk_06]; + } + else { + work->unk_40 = 0; + work->unk_44 = 0; + work->unk_48 = 0.0f; + work->unk_4C = 0.0f; + } + if (fn_1_4070() < 2) { + work->unk_1C = 180.0f; + work->unk_28 = 0.0f; + object->trans.x = work->unk_18; + object->rot.y = 180.0f; + } + if (work->unk_0C == 0) { + fn_1_D828(object); + var_f31 = (work->unk_24 - 12.500001f) / 28.500004f; + work->unk_68 = 80.0f + (47.0f * var_f31); + if (work->unk_60 != -1) { + HuAudFXVolSet(work->unk_60, work->unk_68); + } + if (work->unk_64 != -1) { + HuAudFXPitchSet(work->unk_64, (s32)(8192.0f * (work->unk_68 / 127.0f))); + } + } + else { + fn_1_E8FC(object); + var_f31 = (var_r28->unk_1C - 12.500001f) / 28.500004f; + var_f31 = 8192.0f + (-16384.0f * (1.0f - var_f31)); + if (work->unk_6C != -1) { + HuAudFXPitchSet(work->unk_6C, var_f31); + } + } + if (fn_1_4070() == 3) { + fn_1_40D0(work->unk_00); + work->unk_5C = 0; + return; + } + if (fn_1_4070() == 4) { + work->unk_0E = 2; + work->unk_10 = 0; + if (work->unk_0C == 0) { + work->unk_58 = 4; + } + else { + work->unk_58 = 1; + } + CharModelMotionSet(work->unk_38, object->motion[work->unk_58]); + Hu3DModelCameraSet(object->model[0], 1); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + if ((object->model[1] != -1) && (work->unk_0C != 0)) { + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + } + if (work->unk_60 != -1) { + HuAudFXStop(work->unk_60); + } + if (work->unk_64 != -1) { + HuAudFXStop(work->unk_64); + } + work->unk_60 = work->unk_64 = -1; + if (work->unk_6C != -1) { + HuAudFXStop(work->unk_6C); + } + if (object->model[2] != -1) { + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + } + fn_1_105B8(work->unk_04); + fn_1_11314(work->unk_04); + fn_1_11B94(work->unk_04); + fn_1_12550(work->unk_04); + object->func = fn_1_F0D8; + } +} + +void fn_1_D828(omObjData *var_r30) +{ + Mtx sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + float var_f19; + float var_f18; + M430PlayerWork *var_r31; + M430PlayerBss174Struct *var_r29; + s32 var_r28; + s32 var_r27; + + var_r31 = var_r30->data; + var_r27 = -1; + var_r29 = &lbl_1_bss_174[var_r31->unk_04]; + if ((fn_1_4070() == 2) && (var_r31->unk_08 != 0)) { + fn_1_F6A0(var_r30); + } + mtxRot(sp20, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); + sp20[1][0] *= var_r30->scale.y; + sp20[1][1] *= var_r30->scale.y; + sp20[1][2] *= var_r30->scale.z; + var_r30->trans.y = 0.3f * (100.0f * (var_r31->unk_24 / 41.000004f)); + if (var_r30->trans.y < 0.0f) { + var_r30->trans.y *= -0.5f; + } + var_f27 = 15.0f * (var_r31->unk_24 / 41.000004f); + if (var_r31->unk_24 < 0.0f) { + var_f27 *= -0.5f; + } + switch (var_r31->unk_0E) { + case 0: + var_r31->unk_12 = var_r31->unk_34 + (frand() & 7) + var_r31->unk_12; + var_r31->unk_14 = var_r31->unk_34 + (frand() & 7) + var_r31->unk_14; + var_r30->rot.x = (2.5 * sind(var_r31->unk_12)) - var_f27; + var_r30->rot.z = 2.0 * cosd(var_r31->unk_14); + for (var_r28 = 0; var_r28 < 8; var_r28++) { + sp14.x = lbl_1_data_1F8[var_r28].x; + sp14.y = lbl_1_data_1F8[var_r28].y; + sp14.z = lbl_1_data_1F8[var_r28].z; + fn_1_133DC(&sp20[0], &sp14); + var_f31 = var_r31->unk_70 * sind(var_r30->rot.y); + var_f29 = var_r31->unk_70 * cosd(var_r30->rot.y); + if (fn_1_110A8( + var_r31->unk_04, var_f31 + (sp14.x + var_r30->trans.x), sp14.y + var_r30->trans.y, var_f29 + (sp14.z + var_r30->trans.z), 1) + != 0) { + break; + } + } + if (var_r28 < 8) { + var_r31->unk_58 = 3; + CharModelMotionShiftSet(var_r31->unk_38, var_r30->motion[var_r31->unk_58], 0.0f, 10.0f, 0); + var_r31->unk_0E = 1; + var_r31->unk_10 = 0; + if (var_r31->unk_04 == 0) { + HuAudFXPlay(0x678); + } + else { + HuAudFXPlay(0x67E); + } + HuAudCharVoicePlay(var_r31->unk_38, 0x123); + omVibrate(var_r31->unk_00, 0xC, 4, 2); + var_r31->unk_2C = 5.0f; + var_r31->unk_16 = frand() & 3; + } + break; + case 1: + var_r31->unk_34 = 1; + var_r31->unk_44 = 0; + var_r31->unk_48 = 0.0f; + var_r31->unk_12 = var_r31->unk_34 + (frand() & 7) + var_r31->unk_12; + var_r31->unk_14 = var_r31->unk_34 + (frand() & 7) + var_r31->unk_14; + var_r30->rot.x = (2.5 * sind(var_r31->unk_12)) - var_f27; + var_r30->rot.z = 2.0 * cosd(var_r31->unk_14); + var_r31->unk_2C = 5.0f - (5.0f * (0.011111111f * var_r31->unk_10)); + var_f25 = 7.0 * (var_r31->unk_2C * sind((10.0f * var_r31->unk_10))); + if ((var_r31->unk_16 & 1) != 0) { + var_r30->rot.x += var_f25; + } + else { + var_r30->rot.x -= var_f25; + } + if ((var_r31->unk_16 & 2) != 0) { + var_r30->rot.z += var_f25; + } + else { + var_r30->rot.z -= var_f25; + } + if ((var_r31->unk_10 & 1) != 0) { + Hu3DModelAttrSet(var_r30->model[0], HU3D_ATTR_DISPOFF); + } + else { + Hu3DModelAttrReset(var_r30->model[0], HU3D_ATTR_DISPOFF); + } + if (++var_r31->unk_10 >= 90.0f) { + var_r31->unk_0E = 0; + var_r31->unk_10 = 0; + Hu3DModelAttrReset(var_r30->model[0], HU3D_ATTR_DISPOFF); + } + break; + } + var_f24 = var_r31->unk_48; + var_f23 = var_f24; + if (fabs2(var_f23) < 8.0) { + var_f24 = 0.0f; + } + var_r31->unk_28 *= 0.98f; + var_r31->unk_28 += 0.0017499999f * var_f24; + if (var_r31->unk_28 < -8.75f) { + var_r31->unk_28 = -8.75f; + } + else if (var_r31->unk_28 > 8.75f) { + var_r31->unk_28 = 8.75f; + } + var_r30->trans.x += var_r31->unk_28; + var_f26 = 180.0f - (30.0f * (0.015625f * var_f24)); + var_r31->unk_1C = fn_1_13154(var_f26, var_r31->unk_1C, 1.0f); + var_r30->rot.y = var_r31->unk_1C; + if (var_r30->trans.x > (350.0f + var_r31->unk_18)) { + var_r30->trans.x = 350.0f + var_r31->unk_18; + } + else if (var_r30->trans.x < (var_r31->unk_18 - 350.0f)) { + var_r30->trans.x = var_r31->unk_18 - 350.0f; + } + if (var_r31->unk_0E == 0) { + if ((var_r31->unk_48 > 8.0f) && (var_r30->rot.y < 170.0f)) { + var_r27 = 1; + } + else if ((var_r31->unk_48 < -8.0f) && (var_r30->rot.y > 190.0f)) { + var_r27 = 2; + } + else { + var_r27 = 0; + } + if ((var_r27 != -1) && (var_r31->unk_58 != var_r27) && (CharModelMotionShiftIDGet(var_r31->unk_38) < 0)) { + var_r31->unk_58 = var_r27; + CharModelMotionShiftSet(var_r31->unk_38, var_r30->motion[var_r31->unk_58], 0.0f, 10.0f, 0); + } + } + if ((var_r31->unk_44 & 0x100) != 0) { + var_r31->unk_34++; + } + else if ((var_r31->unk_44 & 0x200) != 0) { + var_r31->unk_34--; + } + if (var_r31->unk_34 < 1) { + var_r31->unk_34 = 1; + } + else if (var_r31->unk_34 > 3) { + var_r31->unk_34 = 3; + } + switch (var_r31->unk_34) { + case 1: + var_f30 = 12.500001f; + (void)var_f30; + break; + case 2: + var_f30 = 27.916668f; + (void)var_f30; + break; + default: + var_f30 = 41.000004f; + break; + } + if (fabs(var_f30 - var_r31->unk_24) < 1.6666667461395264) { + var_r31->unk_24 = var_f30; + } + else if (var_f30 > var_r31->unk_24) { + var_r31->unk_24 += 1.6666667f; + } + else { + var_r31->unk_24 -= 1.6666667f; + } + var_r30->trans.z -= var_r31->unk_24; + if (fn_1_4070() >= 1) { + if ((var_r31->unk_50 -= var_r31->unk_24) < 0.0f) { + var_r31->unk_50 = 4500.0f - (500.0f * ((frand() & 0x8F) / 128.0f)); + var_f31 = var_r31->unk_18 + lbl_1_data_1DC[frand() & 7]; + fn_1_10F24(var_r31->unk_04, var_f31, var_r30->trans.y - 100.0f, -6000.0f + var_r30->trans.z); + } + if ((var_r31->unk_54 -= var_r31->unk_24) < 0.0f) { + var_r31->unk_54 = 2000.0f; + var_f31 = var_r31->unk_18 + lbl_1_data_1DC[frand() & 7]; + if ((frand() & 1) != 0) { + var_f26 = 350.0f; + } + else { + var_f26 = 500.0f; + } + if (fn_1_4070() == 2) { + fn_1_11648(var_r31->unk_04, var_f31, 50.0f + var_f26, -6000.0f + var_r30->trans.z); + } + } + } + var_r29->unk_10 = var_r30->trans.x - var_r29->unk_0C; + var_r29->unk_0C = var_r30->trans.x; + var_r29->unk_14 = var_r30->trans.z; + if (lbl_1_bss_158 == 0) { + var_r29->unk_18 = var_r30->trans.z; + } + var_r29->unk_1C = var_r31->unk_24; + fn_1_7FFC(var_r31->unk_04, var_r30->trans.z); + CenterM[var_r31->unk_04].x = var_r31->unk_18 + (0.5f * (var_r30->trans.x - var_r31->unk_18)); + CenterM[var_r31->unk_04].z = 950.0f + fn_1_7FBC(var_r31->unk_04); + var_f31 = var_r31->unk_70 * sind(var_r30->rot.y); + var_f31 = var_f31; + var_f29 = var_r31->unk_70 * cosd(var_r30->rot.y); + var_f29 = var_f29; + if (var_r31->unk_00 == 0) { + OSReport("X>%3.3f Z>%3.3f \n", var_f31, var_f29); + } + Hu3DModelPosSet(var_r30->model[1], var_r30->trans.x + var_f31, var_r30->trans.y, var_r30->trans.z + var_f29); + Hu3DModelRotSet(var_r30->model[1], var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); + Hu3DModelPosSet(var_r30->model[2], var_r30->trans.x + var_f31, var_r30->trans.y - 150.0f, var_r30->trans.z + var_f29); + Hu3DModelRotSet(var_r30->model[2], var_r30->rot.x, 180.0f + var_r30->rot.y, var_r30->rot.z); + sp14.x = 0.0f; + sp14.y = 25.0f; + sp14.z = -100.0f; + fn_1_133DC(sp20, &sp14); + sp14.x += var_r30->trans.x; + sp14.y += var_r30->trans.y; + sp14.z += var_r29->unk_18; + fn_1_10540(var_r31->unk_04, 0, sp14.x, sp14.y, sp14.z); + var_f28 = var_r31->unk_24 / 41.000004f; + if (var_f28 < 0.0) { + var_f28 *= -1.0f; + } + fn_1_AEE0(var_r31->unk_04, &sp14, 180.0f + var_r30->rot.y, var_f28); + sp8.x = var_r31->unk_28; + sp8.y = 0.0f; + sp8.z = -var_r31->unk_24; + sp14.x = 0.0f; + sp14.y = 0.0f; + sp14.z = 160.0f; + fn_1_133DC(&sp20[0], &sp14); + sp14.x += var_r30->trans.x; + sp14.y += var_r30->trans.y; + sp14.z += var_r29->unk_18; + fn_1_B570(var_r31->unk_04, &sp14, var_r30->rot.y, var_f28, &sp8); +} + +s32 lbl_1_data_2A4[2] = { 1, 2 }; +Vec lbl_1_data_2AC[7] = { + { -300.0f, 30.000002f, -150.0f }, + { -150.0f, 30.000002f, 0.0f }, + { 150.0f, 30.000002f, 0.0f }, + { 300.0f, 30.000002f, -150.0f }, + { -400.0f, 0.0f, 250.0f }, + { 380.0f, 0.0f, 300.0f }, + { 0.0f, 1.0f, 0.0f }, +}; +Vec2f lbl_1_data_300 = { 0.0f, 0.0f }; +s32 lbl_1_data_308 = 0xFFA040FF; + +void fn_1_E8FC(omObjData *object) +{ + Mtx sp3C; + Vec sp30; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + M430PlayerWork *work; + M430PlayerBss174Struct *var_r29; + s32 var_r28; + + work = object->data; + var_f27 = 180.0f; + var_f31 = 0.0f; + var_f29 = 0.0f; + var_r29 = &lbl_1_bss_174[work->unk_04]; + if ((fn_1_4070() == 2) && (work->unk_08 != 0)) { + fn_1_FC9C(object); + } + if ((s32)work->unk_0E != 0) { + (void)object; + } + else if ((fn_1_4070() == 2) && (fn_1_117A4(work->unk_04, object->trans.x, 50.0f + object->trans.y, object->trans.z, 1) != -1)) { + HuAudFXPlay(7); + var_r29->unk_20++; + } + if (fabs(var_f28 = work->unk_48) < 8.0) { + var_f28 = 0.0f; + } + work->unk_28 *= 0.98f; + work->unk_28 += 0.002625f * var_f28; + if (work->unk_28 < -8.75f) { + work->unk_28 = -8.75f; + } + else if (work->unk_28 > 8.75f) { + work->unk_28 = 8.75f; + } + var_f26 = object->trans.x; + object->trans.x += work->unk_28; + if (object->trans.x > (350.0f + work->unk_18)) { + object->trans.x = 350.0f + work->unk_18; + } + else if (object->trans.x < (work->unk_18 - 350.0f)) { + object->trans.x = work->unk_18 - 350.0f; + } + var_f30 = fabs(0.0033333334f * (object->trans.y - 200.0f)); + var_f31 = 245.0f + (-105.0f * var_f30); + if (object->trans.x > (var_r29->unk_0C + var_f31)) { + object->trans.x = var_r29->unk_0C + var_f31; + } + else if (object->trans.x < (var_r29->unk_0C - var_f31)) { + object->trans.x = var_r29->unk_0C - var_f31; + } + var_f27 = 180.0f; + work->unk_1C = var_f27 - (30.0f * (0.114285715f * (object->trans.x - var_f26))); + object->rot.y = fn_1_13154(work->unk_1C, object->rot.y, 2.5f); + if (fabs(fn_1_1303C(object->rot.y, 180.0f)) < 90.0) { + object->rot.z = 0.5f * (object->rot.y - 180.0f); + } + else { + object->rot.z = 0.5f * object->rot.y; + } + object->trans.z = 300.0f + var_r29->unk_18; + if (var_r29->unk_1C < 18.75f) { + var_f29 = 200.0f; + } + else if (var_r29->unk_1C < 33.333336f) { + var_f29 = 350.0f; + } + else { + var_f29 = 500.0f; + } + var_f30 = work->unk_20 - var_f29; + if (fabs(var_f30) < 1.6666667461395264) { + work->unk_20 = var_f29; + } + else if (var_f30 > 0.0f) { + work->unk_20 -= 1.6666667f; + } + else if (var_f30 < 0.0f) { + work->unk_20 += 1.6666667f; + } + work->unk_10 += (frand() & 3) + 1; + object->trans.y = work->unk_20 + (0.10000000149011612 * (100.0 * sind(work->unk_10))); + mtxRot(&sp3C[0], object->rot.x, object->rot.y, object->rot.z); + sp3C[1][0] *= object->scale.y; + sp3C[1][1] *= object->scale.y; + sp3C[1][2] *= object->scale.z; + sp30.x = 0.0f; + sp30.y = 150.0f; + sp30.z = 50.0f; + fn_1_133DC(&sp3C[0], &sp30); + for (var_r28 = 0; var_r28 < 2; var_r28++) { + Hu3DModelPosSet(object->model[lbl_1_data_2A4[var_r28]], object->trans.x + sp30.x, object->trans.y + sp30.y, object->trans.z + sp30.z); + Hu3DModelRotSet(object->model[lbl_1_data_2A4[var_r28]], object->rot.x, object->rot.y, object->rot.z); + } + sp30.x = 0.0f; + sp30.y = 150.0f; + sp30.z = 50.0f; + fn_1_133DC(&sp3C[0], &sp30); + fn_1_10540(work->unk_04, 1, object->trans.x + sp30.x, object->trans.y + sp30.y, object->trans.z + sp30.z); + fn_1_1058C(work->unk_04, 1.0 - fabs((object->trans.x - var_r29->unk_0C) / var_f31)); +} + +void fn_1_F0D8(omObjData *object) +{ + float var_f31; + float var_f30; + M430PlayerWork *work; + s32 var_r29; + M430PlayerBss174Struct *var_r28; + s32 var_r27; + M430PlayerBss174Struct *var_r26; + + work = object->data; + var_r28 = &lbl_1_bss_174[work->unk_04]; + var_r26 = &lbl_1_bss_174[work->unk_04 ^ 1]; + switch (work->unk_5C) { + case 0: + var_r27 = work->unk_0C + (work->unk_04 * 2); + object->trans.x = lbl_1_data_2AC[var_r27].x; + object->trans.y = lbl_1_data_2AC[var_r27].y; + object->trans.z = lbl_1_data_2AC[var_r27].z + fn_1_7FBC(0); + object->rot.x = object->rot.y = object->rot.z = 0.0f; + object->scale.x = object->scale.y = object->scale.z = 1.0f; + CenterM[0].x = 0.0f; + CenterM[0].z = 750.0f + object->trans.z; + if (work->unk_0C == 0) { + work->unk_58 = 4; + } + else { + work->unk_58 = 1; + } + CharModelMotionSet(work->unk_38, object->motion[work->unk_58]); + Hu3DModelShadowSet(object->model[0]); + if (work->unk_0C == 0) { + Hu3DModelCameraSet(object->model[1], 3); + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelCameraSet(object->model[2], 3); + Hu3DModelAttrReset(object->model[2], HU3D_ATTR_DISPOFF); + work->unk_1C = (180.0f + (40.0f * (0.007874016f * (frand() & 0x7F)))) - 20.0f; + if (work->unk_04 == 0) { + var_r29 = 4; + } + else { + var_r29 = 5; + } + Hu3DModelPosSet(object->model[1], lbl_1_data_2AC[var_r29].x, lbl_1_data_2AC[var_r29].y, lbl_1_data_2AC[var_r29].z + fn_1_7FBC(0)); + Hu3DModelPosSet( + object->model[2], lbl_1_data_2AC[var_r29].x, lbl_1_data_2AC[var_r29].y - 150.0f, lbl_1_data_2AC[var_r29].z + fn_1_7FBC(0)); + Hu3DModelAttrSet(object->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(object->model[1]); + } + if (var_r28->unk_20 > 0) { + work->unk_0E = 3; + } + else { + work->unk_0E = 4; + } + GWPlayerCoinCollectAdd(work->unk_00, var_r28->unk_20); + work->unk_5C++; + break; + case 1: + if (fn_1_4088() == 1) { + if (work->unk_00 == 0) { + if ((var_r28->unk_20 == 0) && (var_r26->unk_20 == 0)) { + HuAudSStreamPlay(4); + } + else { + HuAudSStreamPlay(1); + } + } + if (work->unk_0C == 0) { + if (work->unk_0E == 3) { + work->unk_58 = 5; + } + else { + work->unk_58 = 6; + } + } + else if (work->unk_0E == 3) { + work->unk_58 = 2; + } + else { + work->unk_58 = 3; + } + CharModelMotionShiftSet(work->unk_38, object->motion[work->unk_58], 0.0f, 8.0f, 0); + if (work->unk_0E == 3) { + HuAudCharVoicePlay(work->unk_38, 0x122); + } + work->unk_10 = 0; + work->unk_5C++; + } + break; + case 2: + if (fn_1_F62C(object) != 0) { + fn_1_4100(work->unk_00); + work->unk_5C++; + } + break; + } + if (work->unk_0C == 0) { + var_f31 = -10.0f; + var_f30 = 0.0f; + Hu3DModelRotSet(object->model[1], var_f31, work->unk_1C, var_f30); + Hu3DModelRotSet(object->model[2], var_f31, work->unk_1C, var_f30); + } +} + +s32 fn_1_F62C(omObjData *object) +{ + M430PlayerWork *work = object->data; + s32 var_r30 = 0; + if ((CharModelMotionEndCheck(work->unk_38) != 0) && (CharModelMotionShiftIDGet(work->unk_38) < 0)) { + var_r30 = 1; + } + return var_r30; +} + +void fn_1_F6A0(omObjData *object) +{ + Vec sp38; + float sp30; + float sp28; + float sp20; + float sp18; + float sp10; + float sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + float var_f19; + float var_f18; + M430PlayerWork *work; + s32 var_r29; + s32 var_r28; + M430PlayerBss168Struct *var_r27; + M430PlayerBss174Struct *var_r26; + s32 var_r25; + s32 var_r24; + + work = object->data; + var_r28 = 3; + var_r26 = &lbl_1_bss_174[work->unk_04]; + if (var_r26->unk_08 != 3) { + work->unk_0A = 3; + } + if (--work->unk_74 < 0) { + work->unk_7C = 150.0f * (3 - work->unk_0A) * ((frand() & 0x7F) / 127.0f); + if ((frand() & 1) != 0) { + work->unk_7C *= -1.0f; + } + work->unk_74 = 0x1E + (frand() % 30) + (4 - work->unk_0A) * 0x3C; + } + switch (work->unk_34) { + case 1: + var_f27 = 500.0f; + break; + case 2: + var_f27 = 1500.0f; + break; + default: + var_f27 = 3000.0f; + break; + } + var_r25 = fn_1_111BC(work->unk_04, object->trans.z, &sp38); + var_f30 = sp38.x; + var_f25 = sp38.z; + var_r29 = fn_1_11A1C(work->unk_04, object->trans.z, &sp38); + var_f29 = sp38.x; + var_f28 = sp38.z; + if (var_r29 == work->unk_78) { + var_r29 = fn_1_11A1C(work->unk_04, 100.0f + var_f28, &sp38); + var_f29 = sp38.x; + var_f28 = sp38.z; + } + else if (work->unk_78 == -1) { + var_r24 = fn_1_11A1C(work->unk_04, 100.0f + var_f28, &sp38); + var_f26 = sp38.x; + if (work->unk_0A >= 2) { + if (fabs(var_f29 - object->trans.x) > 300.0) { + if (fabs(var_f26 - object->trans.x) < 300.0) { + if ((fabs(var_f28 - object->trans.z) < 1800.0) && (work->unk_34 == 3)) { + work->unk_78 = var_r29; + var_r29 = var_r24; + var_f29 = var_f26; + } + } + } + } + } + else { + work->unk_78 = -1; + } + if (fabs(var_f25 - object->trans.z) < var_f27) { + if (var_f30 > object->trans.x) { + var_f31 = var_f30 - 200.0f; + } + else { + var_f31 = 200.0f + var_f30; + } + } + else { + if ((fabs(var_f30 - var_f29) > 200.0) || (var_r25 == -1)) { + var_f31 = var_f29; + } + else if ((var_f30 > var_f29) || (var_f30 > (250.0f + work->unk_18))) { + var_f31 = var_f30 - 200.0f; + } + else { + var_f31 = 200.0f + var_f30; + } + } + var_f31 += work->unk_7C; + if (var_f31 > (350.0f + work->unk_18)) { + var_f31 = 350.0f + work->unk_18; + } + else if (var_f31 < (work->unk_18 - 350.0f)) { + var_f31 = work->unk_18 - 350.0f; + } + if (var_r29 != -1) { + var_f31 -= object->trans.x; + if (var_f31 > 30.000002f) { + work->unk_48 = 64.0f; + } + else if (var_f31 < -30.000002f) { + work->unk_48 = -64.0f; + } + var_r27 = fn_1_11B64(var_r29); + if (var_r27 != NULL) { + if (var_r27->unk_14.y > 450.0f) { + var_r28 = 3; + } + else { + var_r28 = 2; + } + } + if (var_r28 > work->unk_34) { + work->unk_44 |= 0x100; + return; + } + if (var_r28 < work->unk_34) { + work->unk_44 |= 0x200; + } + } + else if (var_r28 > work->unk_34) { + work->unk_44 |= 0x100; + } +} + +void fn_1_FC9C(omObjData *object) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + M430PlayerWork *work; + s32 var_r29; + M430PlayerBss174Struct *var_r28; + s32 var_r27; + + work = object->data; + var_r28 = &lbl_1_bss_174[work->unk_04]; + if (var_r28->unk_08 != 3) { + work->unk_0A = 3; + } + if (--work->unk_74 < 0) { + work->unk_7C = 75.0f * (3 - work->unk_0A) * ((frand() & 0x7F) / 127.0f); + if ((frand() & 1) != 0) { + work->unk_7C *= -1.0f; + } + work->unk_74 = 0x1E + (frand() % 60) + (4 - work->unk_0A) * 0x3C; + } + var_r29 = fn_1_11A1C(work->unk_04, object->trans.z, &sp8); + var_f31 = sp8.x; + var_f30 = sp8.z; + if (var_r29 == work->unk_78) { + var_r29 = fn_1_11A1C(work->unk_04, 100.0f + var_f30, &sp8); + var_f31 = sp8.x; + var_f30 = sp8.z; + } + else if (work->unk_78 == -1) { + var_r27 = fn_1_11A1C(work->unk_04, 100.0f + var_f30, &sp8); + var_f29 = sp8.x; + if (work->unk_0A >= 2) { + if (fabs(var_f31 - object->trans.x) > 300.0) { + if (fabs(var_f29 - object->trans.x) < 300.0) { + if ((fabs(var_f30 - object->trans.z) < 1800.0) && (work->unk_34 == 3)) { + work->unk_78 = var_r29; + var_r29 = var_r27; + var_f31 = var_f29; + } + } + } + } + } + else { + work->unk_78 = -1; + } + var_f31 += work->unk_7C; + if (var_f31 > (350.0f + work->unk_18)) { + var_f31 = 350.0f + work->unk_18; + } + else if (var_f31 < (work->unk_18 - 350.0f)) { + var_f31 = work->unk_18 - 350.0f; + } + if (var_r29 != -1) { + var_f31 -= object->trans.x; + if (var_f31 > 30.000002f) { + work->unk_48 = 64.0f; + return; + } + if (var_f31 < -30.000002f) { + work->unk_48 = -64.0f; + } + } +} + +void fn_1_100A0(void) +{ + M430PlayerBss170Struct *var_r31; + ModelData *var_r30; + s32 var_r29; + s32 var_r28; + void *var_r27; + void *var_r26; + + var_r31 = lbl_1_bss_170 = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(M430PlayerBss170Struct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 2 * sizeof(M430PlayerBss170Struct)); + for (var_r28 = 0; var_r28 < 2; var_r31++) { + var_r31->unk_00 = var_r28; + var_r31->unk_04 = Hu3DHookFuncCreate(fn_1_10948); + Hu3DModelLayerSet(var_r31->unk_04, 6); + Hu3DModelCameraSet(var_r31->unk_04, 3); + var_r30 = &Hu3DData[var_r31->unk_04]; + var_r30->unk_120 = var_r31; + var_r31->unk_08 = 1; + var_r31->unk_0C = 0.0f; + var_r31->unk_10 = var_r31->unk_14 = var_r31->unk_18 = 0.0f; + var_r31->unk_1C = var_r31->unk_20 = var_r31->unk_24 = 500.0f; + var_r31->unk_28 = var_r31->unk_2C = var_r31->unk_30 = 1000.0f; + var_r31->unk_34 = var_r31->unk_38 = var_r31->unk_3C = 0.0f; + var_r31->unk_40 = var_r31->unk_44 = var_r31->unk_48 = 1000.0f; + var_r31->unk_58 = 0; + var_r31->unk_4C = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC0, MEMORY_DEFAULT_NUM); + memset(var_r31->unk_4C, 0, 0xC0); + var_r31->unk_50 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC0, MEMORY_DEFAULT_NUM); + memset(var_r31->unk_50, 0, 0xC0); + var_r31->unk_54 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x80, MEMORY_DEFAULT_NUM); + memset(var_r31->unk_54, 0, 0x80); + var_r30 = &Hu3DData[var_r31->unk_04]; + var_r27 = HuMemDirectMallocNum(HEAP_DATA, 0x200, var_r30->unk_48); + var_r26 = var_r27; + DCFlushRange(var_r27, 0x200); + GXBeginDisplayList(var_r26, 0x200); + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 0x10); + for (var_r29 = 0; var_r29 < 0x10; var_r29++) { + GXUnknownu16(var_r29); + GXUnknownu16(0); + GXUnknownu16(var_r29); + } + var_r31->unk_5C = GXEndDisplayList(); + var_r31->unk_60 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_5C, var_r30->unk_48); + memcpy(var_r31->unk_60, var_r27, var_r31->unk_5C); + DCFlushRange(var_r31->unk_60, var_r31->unk_5C); + HuMemDirectFree(var_r27); + fn_1_1061C(var_r31); + var_r28++; + } +} + +void fn_1_1033C(void) +{ + float var_f31; + M430PlayerBss170Struct *var_r31; + s32 var_r30; + s32 var_r29; + + for (var_r31 = lbl_1_bss_170, var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + if (var_r31->unk_08 != 0) { + var_r31->unk_34 = var_r31->unk_38 = var_r31->unk_3C = 0.0f; + var_r31->unk_40 = var_r31->unk_28 - var_r31->unk_10; + var_r31->unk_44 = var_r31->unk_2C - var_r31->unk_14; + var_r31->unk_48 = var_r31->unk_30 - var_r31->unk_18; + var_f31 = 0.5f * (var_r31->unk_34 + var_r31->unk_40); + var_r31->unk_1C = var_f31 + (var_r31->unk_0C * (var_r31->unk_40 - var_f31)); + var_f31 = 0.5f * (var_r31->unk_38 + var_r31->unk_44); + var_r31->unk_20 = var_f31 + (var_r31->unk_0C * (var_r31->unk_38 - var_f31)); + var_f31 = 0.5f * (var_r31->unk_3C + var_r31->unk_48); + var_r31->unk_24 = var_f31 + (var_r31->unk_0C * (var_r31->unk_3C - var_f31)); + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + var_f31 = var_r30 / 15.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + fn_1_12F20(var_f31, &var_r31->unk_34, &var_r31->unk_1C, &var_r31->unk_40, (float *)&var_r31->unk_4C[var_r30]); + } + fn_1_1061C(var_r31); + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_10, var_r31->unk_14, var_r31->unk_18); + } + } +} + +void fn_1_1053C(void) { } + +void fn_1_10540(s32 arg0, s32 arg1, float arg8, float arg9, float argA) +{ + M430PlayerBss170Struct *var_r31 = &lbl_1_bss_170[arg0]; + if (arg1 == 0) { + var_r31->unk_10 = arg8; + var_r31->unk_14 = arg9; + var_r31->unk_18 = argA; + return; + } + var_r31->unk_28 = arg8; + var_r31->unk_2C = arg9; + var_r31->unk_30 = argA; +} + +void fn_1_1058C(s32 arg0, float arg8) +{ + M430PlayerBss170Struct *var_r31 = &lbl_1_bss_170[arg0]; + var_r31->unk_0C = arg8; +} + +void fn_1_105B8(s32 arg0) +{ + M430PlayerBss170Struct *var_r31 = &lbl_1_bss_170[arg0]; + if (var_r31->unk_08 != 0) { + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + } + var_r31->unk_08 = 0; +} + +void fn_1_1061C(M430PlayerBss170Struct *var_r31) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f27; + float var_f25; + s32 var_r30; + + var_f27 = 0.0f; + for (var_r30 = 0xF; var_r30 >= 0; var_r30--) { + var_r31->unk_50[var_r30] = var_r31->unk_4C[var_r30]; + var_r31->unk_54[var_r30] = lbl_1_data_300; + if (var_r30 == 0) { + var_f27 = 0.0f; + var_r31->unk_54[var_r30].y = var_f27; + } + else { + var_f31 = var_r31->unk_4C[var_r30 - 1].x - var_r31->unk_4C[var_r30].x; + var_f30 = var_r31->unk_4C[var_r30 - 1].y - var_r31->unk_4C[var_r30].y; + var_f29 = var_r31->unk_4C[var_r30 - 1].z - var_r31->unk_4C[var_r30].z; + var_f25 = sqrtf((var_f29 * var_f29) + ((var_f31 * var_f31) + (var_f30 * var_f30))); + var_f27 -= 0.01f * var_f25; + var_r31->unk_54[var_r30].y = var_f27; + } + } + DCFlushRangeNoSync(var_r31->unk_50, 0xC0); + DCFlushRangeNoSync(var_r31->unk_54, 0x80); + PPCSync(); +} + +void fn_1_10948(ModelData *var_r29, Mtx var_r30) +{ + Mtx sp8; + M430PlayerBss170Struct *var_r31 = var_r29->unk_120; + GXLoadPosMtxImm(var_r30, 0); + PSMTXInvXpose(var_r30, sp8); + GXLoadNrmMtxImm(sp8, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetNumChans(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, 0, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVREG0); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVREG0); + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_VTX, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_SPEC); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXSetZCompLoc(0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_ONE, GX_BL_ZERO, GX_LO_NOOP); + GXSetLineWidth(0x10, GX_TO_ZERO); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, var_r31->unk_50, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &lbl_1_data_308, 4); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_TEX0, var_r31->unk_54, 8); + GXCallDisplayList(var_r31->unk_60, var_r31->unk_5C); +} + +void fn_1_10B88(void) +{ + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + + var_r31 = lbl_1_bss_16C = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10 * sizeof(M430PlayerBss16CStruct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 0x10 * sizeof(M430PlayerBss16CStruct)); + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + var_r31->unk_00 = var_r30; + if (var_r30 == 0) { + var_r31->unk_04 = Hu3DModelCreateFile(0x3D0023); + } + else { + var_r31->unk_04 = Hu3DModelLink(lbl_1_bss_16C[0].unk_04); + } + Hu3DModelLayerSet(var_r31->unk_04, 2); + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_08 = Hu3DModelCreateFile(0x3D0024); + Hu3DModelLayerSet(var_r31->unk_08, 2); + Hu3DModelAttrSet(var_r31->unk_08, HU3D_ATTR_DISPOFF); + var_r31->unk_0C = 0; + var_r31->unk_10 = 0; + var_r31->unk_14 = 0; + var_r31->unk_18 = 0.0f; + var_r31->unk_1C.x = var_r31->unk_1C.y = var_r31->unk_1C.z = 0.0f; + var_r31->unk_28 = var_r31->unk_2C = var_r31->unk_30 = 0.0f; + var_r31->unk_34 = var_r31->unk_38 = var_r31->unk_3C = 1.0f; + } +} + +void fn_1_10D1C(void) +{ + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + M430PlayerBss174Struct *var_r29; + + for (var_r31 = lbl_1_bss_16C, var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (var_r31->unk_10 != 0) { + var_r29 = &lbl_1_bss_174[var_r31->unk_0C]; + switch (var_r31->unk_10) { + case 1: + if (var_r31->unk_1C.y < 0.0f) { + var_r31->unk_1C.y += 1.0f; + } + break; + case 2: + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_08, HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(var_r31->unk_08, 0.0f); + Hu3DMotionSpeedSet(var_r31->unk_08, 1.0f); + var_r31->unk_10 = 3; + break; + case 3: + break; + } + if (var_r31->unk_1C.z > (1000.0f + var_r29->unk_14)) { + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_08, HU3D_ATTR_DISPOFF); + var_r31->unk_10 = 0; + } + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_28, var_r31->unk_2C, var_r31->unk_30); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_34, var_r31->unk_38, var_r31->unk_3C); + Hu3DModelPosSet(var_r31->unk_08, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z); + Hu3DModelRotSet(var_r31->unk_08, var_r31->unk_28, var_r31->unk_2C, var_r31->unk_30); + Hu3DModelScaleSet(var_r31->unk_08, var_r31->unk_34, var_r31->unk_38, var_r31->unk_3C); + } + } +} + +void fn_1_10F20(void) { } + +s32 fn_1_10F24(s32 var_r29, float sp8, float spC, float sp10) +{ + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_16C, var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (var_r31->unk_10 == 0) { + break; + } + } + if (var_r30 >= 0x10) { + return -1; + } + if (var_r29 == 0) { + Hu3DModelCameraSet(var_r31->unk_04, 1); + Hu3DModelCameraSet(var_r31->unk_08, 1); + } + else { + Hu3DModelCameraSet(var_r31->unk_04, 2); + Hu3DModelCameraSet(var_r31->unk_08, 2); + } + Hu3DModelAttrReset(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_0C = var_r29; + var_r31->unk_10 = 1; + var_r31->unk_14 = 0; + var_r31->unk_1C.x = sp8; + var_r31->unk_1C.y = spC; + var_r31->unk_1C.z = sp10; + var_r31->unk_28 = var_r31->unk_2C = var_r31->unk_30 = 0.0f; + var_r31->unk_34 = var_r31->unk_38 = var_r31->unk_3C = 1.0f; + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_1C.x, var_r31->unk_1C.y, var_r31->unk_1C.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_28, var_r31->unk_2C, var_r31->unk_30); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_34, var_r31->unk_38, var_r31->unk_3C); +} + +s32 fn_1_110A8(s32 arg0, float arg8, float arg9, float argA, s32 arg1) +{ + float var_f31; + float var_f30; + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_16C, var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if ((var_r31->unk_10 == 1) && (var_r31->unk_0C == arg0)) { + var_f31 = arg8 - var_r31->unk_1C.x; + var_f30 = argA - var_r31->unk_1C.z; + if ((fabs(var_f31) < 50.0) && (fabs(var_f30) < 50.0)) { + break; + } + } + } + if (var_r30 >= 0x20) { + return 0; + } + if (arg1 != 0) { + var_r31->unk_18 = 50.0f; + var_r31->unk_10 = 2; + var_r31->unk_14 = 0; + } + return 1; +} + +s32 fn_1_111BC(s32 arg0, float arg8, Vec *arg1) +{ + float var_f31; + float var_f30; + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = lbl_1_bss_16C; + var_r29 = -1; + var_f31 = 10000.0f; + arg1->x = arg1->y = arg1->z = 0.0f; + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if ((var_r31->unk_10 == 1) && (var_r31->unk_0C == arg0) && !(var_r31->unk_1C.z > arg8)) { + var_f30 = fabs(var_r31->unk_1C.z - (arg8 - 100.0f)); + if (var_f30 < var_f31) { + var_f31 = var_f30; + var_r29 = var_r30; + } + } + } + if (var_r29 == -1) { + return -1; + } + var_r31 = &lbl_1_bss_16C[var_r29]; + *arg1 = var_r31->unk_1C; + return var_r29; +} + +void fn_1_11314(s32 arg0) +{ + M430PlayerBss16CStruct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_16C, var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if ((var_r31->unk_10 != 0) && (var_r31->unk_0C == arg0)) { + var_r31->unk_10 = 0; + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->unk_08, HU3D_ATTR_DISPOFF); + } + } +} + +void fn_1_113AC(void) +{ + M430PlayerBss168Struct *var_r31; + s32 var_r30; + + var_r31 = lbl_1_bss_168 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x20 * sizeof(M430PlayerBss168Struct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 0x20 * sizeof(M430PlayerBss168Struct)); + for (var_r30 = 0; var_r30 < 0x20; var_r31++) { + var_r31->unk_00 = var_r30; + if (var_r30 == 0) { + var_r31->unk_04 = Hu3DModelCreateFile(0x3D0022); + } + else { + var_r31->unk_04 = Hu3DModelLink(lbl_1_bss_168[0].unk_04); + } + Hu3DModelLayerSet(var_r31->unk_04, 7); + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_08 = 0; + var_r31->unk_0C = 0; + var_r31->unk_10 = 0; + var_r31->unk_14.x = var_r31->unk_14.y = var_r31->unk_14.z = 0.0f; + var_r31->unk_20.x = var_r31->unk_20.y = var_r31->unk_20.z = 0.0f; + var_r31->unk_2C.x = var_r31->unk_2C.y = var_r31->unk_2C.z = 1.0f; + var_r30++; + } +} + +void fn_1_114F0(void) +{ + M430PlayerBss168Struct *var_r31; + s32 var_r30; + M430PlayerBss174Struct *var_r29; + + for (var_r31 = lbl_1_bss_168, var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if (var_r31->unk_0C != 0) { + switch (var_r31->unk_0C) { + case 1: + var_r31->unk_20.y += 7.5; + break; + case 2: + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_0C = 0; + break; + } + var_r29 = &lbl_1_bss_174[var_r31->unk_08]; + if (var_r31->unk_14.z > (1000.0f + var_r29->unk_14)) { + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_0C = 0; + } + else { + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_14.x, var_r31->unk_14.y, var_r31->unk_14.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_20.x, var_r31->unk_20.y, var_r31->unk_20.z); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + } + } + } +} + +void fn_1_11644(void) { } + +s32 fn_1_11648(s32 arg0, float arg1, float arg8, float arg9) +{ + M430PlayerBss168Struct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_168, var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if (var_r31->unk_0C == 0) { + break; + } + } + if (var_r30 >= 0x20) { + return -1; + } + if (arg0 == 0) { + Hu3DModelCameraSet(var_r31->unk_04, 1); + } + else { + Hu3DModelCameraSet(var_r31->unk_04, 2); + } + Hu3DModelAttrReset(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_08 = arg0; + var_r31->unk_0C = 1; + var_r31->unk_14.x = arg1; + var_r31->unk_14.y = arg8; + var_r31->unk_14.z = arg9; + var_r31->unk_20.x = var_r31->unk_20.y = var_r31->unk_20.z = 0.0f; + var_r31->unk_2C.x = var_r31->unk_2C.y = var_r31->unk_2C.z = 1.0f; + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_14.x, var_r31->unk_14.y, var_r31->unk_14.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_20.x, var_r31->unk_20.y, var_r31->unk_20.z); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); +} + +s32 fn_1_117A4(s32 arg0, float arg8, float arg9, float argA, s32 arg1) +{ + float var_f31; + float var_f30; + float var_f27; + M430PlayerBss168Struct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_168, var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if ((var_r31->unk_0C == 1) && (var_r31->unk_08 == arg0)) { + var_f31 = var_r31->unk_14.x - arg8; + var_f27 = var_r31->unk_14.y - arg9; + var_f30 = var_r31->unk_14.z - argA; + if ((fabs(var_f27) < 100.0) && (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) < 100.0f)) { + break; + } + } + } + if (var_r30 >= 0x20) { + return -1; + } + if (arg1 != 0) { + fn_1_11F90(var_r31->unk_08, var_r31->unk_14.x, var_r31->unk_14.y, var_r31->unk_14.z); + var_r31->unk_0C = 2; + var_r31->unk_10 = 0; + } + return 1; +} + +s32 fn_1_11A1C(s32 arg0, float arg8, Vec *arg1) +{ + float var_f31; + float var_f30; + M430PlayerBss168Struct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = lbl_1_bss_168; + var_r29 = -1; + var_f31 = 10000.0f; + arg1->x = arg1->y = arg1->z = 0.0f; + for (var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if ((var_r31->unk_0C == 1) && (var_r31->unk_08 == arg0) && !(var_r31->unk_14.z > arg8)) { + var_f30 = fabs(var_r31->unk_14.z - arg8); + if (var_f30 < var_f31) { + var_f31 = var_f30; + var_r29 = var_r30; + } + } + } + if (var_r29 == -1) { + return -1; + } + var_r31 = &lbl_1_bss_168[var_r29]; + *arg1 = var_r31->unk_14; + return var_r29; +} + +M430PlayerBss168Struct *fn_1_11B64(s32 arg0) +{ + if ((arg0 < 0) || (arg0 >= 0x20)) { + return NULL; + } + return &lbl_1_bss_168[arg0]; +} + +void fn_1_11B94(s32 arg0) +{ + M430PlayerBss168Struct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_168, var_r30 = 0; var_r30 < 0x20; var_r30++, var_r31++) { + if ((var_r31->unk_0C != 0) && (var_r31->unk_08 == arg0)) { + var_r31->unk_0C = 0; + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + } + } +} + +void fn_1_11C1C(void) +{ + M430PlayerBss164Struct *var_r31; + s32 var_r30; + + var_r31 = lbl_1_bss_164 = HuMemDirectMallocNum(HEAP_SYSTEM, 8 * sizeof(M430PlayerBss164Struct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 8 * sizeof(M430PlayerBss164Struct)); + for (var_r30 = 0; var_r30 < 8; var_r30++, var_r31++) { + if (var_r30 == 0) { + var_r31->unk_14 = HuSprAnimRead(HuDataReadNum(0x3D0026, MEMORY_DEFAULT_NUM)); + } + else { + var_r31->unk_14 = lbl_1_bss_164[0].unk_14; + } + var_r31->unk_00 = var_r30; + var_r31->unk_04 = Hu3DParticleCreate(var_r31[0].unk_14, 0x20); + Hu3DModelLayerSet(var_r31->unk_04, 7); + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->unk_04, HU3D_ATTR_PARTICLE_KILL); + var_r31->unk_08 = 0; + var_r31->unk_0C = 0; + var_r31->unk_10 = 0; + + var_r31->unk_18.x = var_r31->unk_18.y = var_r31->unk_18.z = 0.0f; + var_r31->unk_24.x = var_r31->unk_24.y = var_r31->unk_24.z = 0.0f; + var_r31->unk_30.x = var_r31->unk_30.y = var_r31->unk_30.z = 1.0f; + } +} + +void fn_1_11D70(void) +{ + M430PlayerBss164Struct *var_r31; + HsfanimStruct01 *var_r30; + ParticleData *var_r29; + s32 var_r28; + s32 var_r27; + M430PlayerBss174Struct *var_r26; + ModelData *var_r25; + s32 var_r24; + + for (var_r31 = lbl_1_bss_164, var_r28 = 0; var_r28 < 8; var_r28++, var_r31++) { + if (var_r31->unk_0C != 0) { + if (var_r31->unk_10 > 1) { + var_r25 = &Hu3DData[var_r31->unk_04]; + var_r29 = var_r25->unk_120; + for (var_r30 = var_r29->unk_48, var_r27 = 0; var_r27 < var_r29->unk_30; var_r27++, var_r30++) { + if (++var_r30->unk00_s16 > var_r30->unk02) { + var_r24 = var_r30->unk40.a - 9; + if (var_r24 < 0) { + var_r30->unk2C = 0.0f; + } + else { + var_r30->unk40.a = var_r24; + } + } + var_r30->unk2C *= 0.975; + var_r30->unk34.x += var_r30->unk08.x; + var_r30->unk34.y += var_r30->unk08.y; + var_r30->unk34.z += var_r30->unk08.z; + var_r30->unk08.y -= 0.3103333379576603; + } + } + var_r26 = &lbl_1_bss_174[var_r31->unk_08]; + var_r31->unk_18.z -= var_r26->unk_1C; + if (++var_r31->unk_10 > 0x78) { + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_0C = 0; + } + else { + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_30.x, var_r31->unk_30.y, var_r31->unk_30.z); + } + } + } +} + +void fn_1_11F60(void) +{ + fn_1_133A4(lbl_1_bss_164[0].unk_14); +} + +s32 fn_1_11F90(s32 arg0, float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + M430PlayerBss164Struct *var_r31; + HsfanimStruct01 *var_r30; + s32 var_r29; + ParticleData *var_r28; + ModelData *var_r27; + + for (var_r31 = lbl_1_bss_164, var_r29 = 0; var_r29 < 8; var_r29++, var_r31++) { + if (var_r31->unk_0C == 0) { + break; + } + } + if (var_r29 >= 8) { + return -1; + } + if (arg0 == 0) { + Hu3DModelCameraSet(var_r31->unk_04, 1); + } + else { + Hu3DModelCameraSet(var_r31->unk_04, 2); + } + Hu3DModelAttrReset(var_r31->unk_04, HU3D_ATTR_DISPOFF); + var_r31->unk_08 = arg0; + var_r31->unk_0C = 1; + var_r31->unk_10 = 0; + var_r27 = &Hu3DData[var_r31->unk_04]; + var_r28 = var_r27->unk_120; + var_r28->unk_2C = 1; + for (var_r30 = var_r28->unk_48, var_r29 = 0; var_r29 < var_r28->unk_30; var_r29++, var_r30++) { + var_f30 = (frand() % 30) + 0x4B; + var_f29 = frand() % 360; + var_f27 = sind(var_f30); + var_f28 = cosd(var_f30); + var_f26 = 0.8f + (0.3f * (0.007874016f * (frand() % 255))); + var_f31 = 0.35f; + var_r30->unk08.x = var_f31 * (0.6499999761581421 * (50.0 * (var_f28 * sind(var_f29)))); + var_r30->unk08.y = var_f31 * (50.0f * var_f27 * var_f26); + var_r30->unk08.z = var_f31 * (0.6499999761581421 * (50.0 * (var_f28 * cosd(var_f29)))); + var_r30->unk00 = 0; + var_r30->unk02 = (frand() % 7) + 0xA; + var_r30->unk2C = 45.0f; + var_r30->unk34.x = 0.25f * ((frand() & 0x7F) - 0x40); + var_r30->unk34.y = 0.25f * ((frand() & 0x7F) - 0x40); + var_r30->unk34.z = 0.25f * ((frand() & 0x7F) - 0x40); + var_r30->unk40.r = (frand() % 64) + 0xC0; + var_r30->unk40.g = (frand() % 64) + 0xC0; + var_r30->unk40.b = (frand() % 64) + 0xC0; + var_r30->unk40.a = 0xFF; + } + var_r31->unk_18.x = arg8; + var_r31->unk_18.y = arg9; + var_r31->unk_18.z = argA; + var_r31->unk_24.x = var_r31->unk_24.y = var_r31->unk_24.z = 0.0f; + var_r31->unk_30.x = var_r31->unk_30.y = var_r31->unk_30.z = 1.0f; + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_18.x, var_r31->unk_18.y, var_r31->unk_18.z); + Hu3DModelRotSet(var_r31->unk_04, var_r31->unk_24.x, var_r31->unk_24.y, var_r31->unk_24.z); + Hu3DModelScaleSet(var_r31->unk_04, var_r31->unk_30.x, var_r31->unk_30.y, var_r31->unk_30.z); +} + +void fn_1_12550(s32 arg0) +{ + M430PlayerBss164Struct *var_r31; + s32 var_r30; + + for (var_r31 = lbl_1_bss_164, var_r30 = 0; var_r30 < 8; var_r30++, var_r31++) { + if (var_r31->unk_0C != 0) { + var_r31->unk_0C = 0; + Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); + } + } +} + +void fn_1_125C4(void) +{ + M430PlayerBss160Struct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(M430PlayerBss160Struct), MEMORY_DEFAULT_NUM); + lbl_1_bss_160 = var_r31; + for (var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + if (var_r29 == 0) { + var_r31->unk_00 = 0x90; + } + else { + var_r31->unk_00 = 0x1B0; + } + var_r31->unk_04 = 0x198; + var_r31->unk_08 = 0; + var_r31->unk_0C = 0; + var_r31->unk_B8 = 0x15; + var_r31->unk_BC = 0; + for (var_r30 = 0; var_r30 < 6; var_r30++) { + switch (var_r30) { + case 0: + case 1: + var_r31->unk_10[var_r30] = espEntry(0x610033, 1, 0); + espPriSet(var_r31->unk_10[var_r30], 0x40); + var_r31->unk_28[var_r30][0] = (var_r30 * 0x14) + 0xB; + var_r31->unk_28[var_r30][1] = 0; + var_r31->unk_70[var_r30][0] = var_r31->unk_28[var_r30][0] - var_r31->unk_B8; + var_r31->unk_70[var_r30][1] = var_r31->unk_28[var_r30][1] - var_r31->unk_BC; + break; + case 2: + if (var_r29 == 0) { + var_r31->unk_10[var_r30] = espEntry(0x61001B, 1, 0); + } + else { + var_r31->unk_10[var_r30] = espEntry(0x61001C, 1, 0); + } + espPriSet(var_r31->unk_10[var_r30], 0xFF); + var_r31->unk_28[var_r30][0] = 0; + var_r31->unk_28[var_r30][1] = 0; + break; + case 3: + var_r31->unk_10[var_r30] = espEntry(0x61001D, 1, 0); + espPriSet(var_r31->unk_10[var_r30], 0x100); + espTPLvlSet(var_r31->unk_10[var_r30], 0.6000000238418579); + espColorSet(var_r31->unk_10[var_r30], 0, 0, 0); + var_r31->unk_28[var_r30][0] = 0; + var_r31->unk_28[var_r30][1] = 0; + break; + case 4: + var_r31->unk_10[var_r30] = espEntry(0x610008, 1, 0); + espPriSet(var_r31->unk_10[var_r30], 0x80); + var_r31->unk_28[var_r30][0] = -0x21; + var_r31->unk_28[var_r30][1] = 0; + break; + case 5: + var_r31->unk_10[var_r30] = espEntry(0x3D0028, 1, 0); + espPriSet(var_r31->unk_10[var_r30], 0x80); + espZRotSet(var_r31->unk_10[var_r30], 45.0); + var_r31->unk_28[var_r30][0] = -0xA; + var_r31->unk_28[var_r30][1] = 0; + break; + } + espDispOn(var_r31->unk_10[var_r30]); + espDrawNoSet(var_r31->unk_10[var_r30], 0); + espAttrSet(var_r31->unk_10[var_r30], HUSPR_ATTR_NOANIM); + espPosSet(var_r31->unk_10[var_r30], var_r31->unk_00 + var_r31->unk_28[var_r30][0], var_r31->unk_04 + var_r31->unk_28[var_r30][1]); + espBankSet(var_r31->unk_10[var_r30], 0); + } + } + lbl_1_bss_15C = 1; + fn_1_12DF0(0); +} + +void fn_1_129CC(void) +{ + s32 sp8[4]; + float var_f31; + float var_f30; + float var_f29; + M430PlayerBss160Struct *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + for (var_r31 = lbl_1_bss_160, var_r28 = 0; var_r28 < 2; var_r28++, var_r31++) { + var_r29 = lbl_1_bss_174[var_r28].unk_20; + if (lbl_1_bss_15C != 0) { + if (var_r29 != var_r31->unk_08) { + var_r31->unk_08 = var_r29; + var_r31->unk_0C = 0x14; + } + if (var_r31->unk_0C != 0) { + var_f31 = 1.0 + (0.800000011920929 * sind((180.0f * (var_r31->unk_0C / 20.0f)))); + var_r31->unk_0C--; + } + else { + var_f31 = 1.0f; + } + if ((sp8[0] = var_r29 / 10) > 9) { + sp8[0] = 9; + } + var_r29 -= sp8[0] * 0xA; + sp8[1] = var_r29; + if (var_r29 > 9) { + sp8[1] = 9; + } + for (var_r30 = 0; var_r30 < 6; var_r30++) { + if (var_r30 < 2) { + var_f30 = (var_r31->unk_00 + var_r31->unk_B8) + (var_r31->unk_70[var_r30][0] * var_f31); + var_f29 = (var_r31->unk_04 + var_r31->unk_BC) + (var_r31->unk_70[var_r30][1] * var_f31); + espBankSet(var_r31->unk_10[var_r30], sp8[var_r30]); + espScaleSet(var_r31->unk_10[var_r30], var_f31, var_f31); + } + else { + var_f30 = var_r31->unk_00 + var_r31->unk_28[var_r30][0]; + var_f29 = var_r31->unk_04 + var_r31->unk_28[var_r30][1]; + } + if (sp8[var_r30] < 0) { + sp8[var_r30] = 0; + } + espPosSet(var_r31->unk_10[var_r30], var_f30, var_f29); + } + } + } +} + +void fn_1_12D74(void) +{ + M430PlayerBss160Struct *var_r31; + s32 var_r30; + s32 var_r29; + + for (var_r31 = lbl_1_bss_160, var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + espKill(var_r31->unk_10[var_r30]); + } + } +} + +void fn_1_12DF0(s32 arg0) +{ + M430PlayerBss160Struct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = lbl_1_bss_160; + lbl_1_bss_15C = arg0; + for (var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + if (arg0 != 0) { + espAttrReset(var_r31->unk_10[var_r30], HUSPR_ATTR_DISPOFF); + } + else { + espAttrSet(var_r31->unk_10[var_r30], HUSPR_ATTR_DISPOFF); + } + } + } +} + +float fn_1_12EA8(float arg8, float arg9, float argA, float argB) +{ + float var_f31; + float var_f30; + + var_f31 = 1.0 - arg8; + var_f30 = (argB * (arg8 * arg8)) + ((arg9 * (var_f31 * var_f31)) + (2.0 * (argA * (var_f31 * arg8)))); + return var_f30; +} + +void fn_1_12F20(float arg8, float *var_r3, float *var_r4, float *var_r5, float *var_r6) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *var_r6++ = fn_1_12EA8(arg8, *var_r3++, *var_r4++, *var_r5++); + } +} + +float fn_1_1303C(float arg8, float arg9) +{ + float var_f31; + + if (arg8 >= 360.0f) { + arg8 -= 360.0f; + } + else if (arg8 < 0.0f) { + arg8 += 360.0f; + } + if (arg9 >= 360.0f) { + arg9 -= 360.0f; + } + else if (arg9 < 0.0f) { + arg9 += 360.0f; + } + var_f31 = arg8 - arg9; + if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + else if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} + +float fn_1_13154(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f26; + + if (arg8 >= 360.0) { + arg8 -= 360.0; + } + else if (arg8 < 0.0) { + arg8 += 360.0; + } + if (arg9 >= 360.0) { + arg9 -= 360.0; + } + else if (arg9 < 0.0) { + arg9 += 360.0; + } + var_f30 = 360.0 + (arg8 - arg9); + if (fabs(var_f30) >= 360.0) { + var_f30 = fmod(var_f30, 360.0); + } + if (var_f30 < 180.0) { + if (var_f30 <= argA) { + var_f31 = var_f30; + } + else { + var_f31 = argA; + } + } + else if ((360.0 - var_f30) <= argA) { + var_f31 = -(360.0 - var_f30); + } + else { + var_f31 = -argA; + } + var_f31 += arg9; + if (var_f31 >= 360.0) { + var_f31 -= 360.0; + } + else if (var_f31 < 0.0) { + var_f31 += 360.0; + } + return var_f31; +} + +void fn_1_133A4(AnimData *arg0) +{ + arg0->useNum = 0; + HuSprAnimKill(arg0); +} + +void fn_1_133DC(Mtx arg0, Vec *arg1) +{ + Vec sp8; + + sp8.x = (arg0[0][2] * arg1->z) + ((arg0[0][0] * arg1->x) + (arg0[0][1] * arg1->y)); + sp8.y = (arg0[1][2] * arg1->z) + ((arg0[1][0] * arg1->x) + (arg0[1][1] * arg1->y)); + sp8.z = (arg0[2][2] * arg1->z) + ((arg0[2][0] * arg1->x) + (arg0[2][1] * arg1->y)); + *arg1 = sp8; +} From 2455408432817ab0f47dbb9af47aec382a4b3f35 Mon Sep 17 00:00:00 2001 From: mrshigure Date: Fri, 10 Jan 2025 16:20:22 -0800 Subject: [PATCH 10/24] Applying sind/cosd/atan2d macros across the board (#518) --- config/GMPE01_00/rels/m424Dll/symbols.txt | 10 +- include/REL/modeltestDll.h | 5 +- src/REL/instDll/main.c | 4 +- src/REL/m407dll/camera.c | 8 +- src/REL/m407dll/player.c | 6 +- src/REL/m409Dll/main.c | 26 +- src/REL/m412Dll/main.c | 4 +- src/REL/m414Dll/main.c | 6 +- src/REL/m417Dll/player.c | 2 +- src/REL/m417Dll/water.c | 2 +- src/REL/m424Dll/claw.c | 2 +- src/REL/m425Dll/thwomp.c | 2 +- src/REL/m440Dll/main.c | 22 +- src/REL/m440Dll/object.c | 14 +- src/REL/m443Dll/player.c | 4 +- src/REL/m444dll/shadow.c | 4 +- src/REL/m446Dll/camera.c | 4 +- src/REL/m446Dll/card.c | 8 +- src/REL/m446Dll/cursor.c | 4 +- src/REL/m446Dll/player.c | 6 +- src/REL/mentDll/common.c | 6 +- src/REL/modeltestDll/main.c | 46 +- src/REL/modeltestDll/modeltest00.c | 42 +- src/REL/modeseldll/filesel.c | 52 +- src/REL/modeseldll/main.c | 44 +- src/REL/option/record.c | 6 +- src/REL/resultDll/battle.c | 4 +- src/REL/resultDll/main.c | 46 +- src/REL/w03Dll/condor.c | 24 +- src/REL/w03Dll/mg_coin.c | 18 +- src/REL/w03Dll/mg_item.c | 10 +- src/REL/w03Dll/river.c | 8 +- src/REL/w03Dll/statue.c | 7 +- src/REL/w05Dll/dolphin.c | 18 +- src/REL/w05Dll/hotel.c | 10 +- src/REL/w05Dll/mg_coin.c | 7 +- src/REL/w05Dll/mg_item.c | 10 +- src/game/board/basic_space.c | 8 +- src/game/board/block.c | 6 +- src/game/board/bowser.c | 2907 +++++++++--------- src/game/board/main.c | 3340 ++++++++++----------- src/game/board/mg_setup.c | 16 +- src/game/board/mushroom.c | 2 +- src/game/board/start.c | 13 +- src/game/board/warp.c | 6 +- src/game/hsfex.c | 18 +- src/game/objsysobj.c | 28 +- 47 files changed, 3431 insertions(+), 3414 deletions(-) diff --git a/config/GMPE01_00/rels/m424Dll/symbols.txt b/config/GMPE01_00/rels/m424Dll/symbols.txt index 8d4a83df..8320af0c 100644 --- a/config/GMPE01_00/rels/m424Dll/symbols.txt +++ b/config/GMPE01_00/rels/m424Dll/symbols.txt @@ -281,14 +281,14 @@ lbl_1_data_21C = .data:0x0000021C; // type:object size:0xC0 lbl_1_data_2DC = .data:0x000002DC; // type:object size:0xC lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x24 lbl_1_data_30C = .data:0x0000030C; // type:object size:0xC data:4byte -lbl_1_data_318 = .data:0x00000318; // type:object size:0x6 data:string -lbl_1_data_31E = .data:0x0000031E; // type:object size:0x6 data:string -lbl_1_data_324 = .data:0x00000324; // type:object size:0x6 data:string +lbl_1_data_318 = .data:0x00000318; // type:object size:0x6 scope:local data:string +lbl_1_data_31E = .data:0x0000031E; // type:object size:0x6 scope:local data:string +lbl_1_data_324 = .data:0x00000324; // type:object size:0x6 scope:local data:string jumptable_1_data_32C = .data:0x0000032C; // type:object size:0x40 scope:local lbl_1_data_36C = .data:0x0000036C; // type:object size:0x20 lbl_1_data_38C = .data:0x0000038C; // type:object size:0x20 -lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x19 data:string -lbl_1_data_3C5 = .data:0x000003C5; // type:object size:0x5 data:string +lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x19 scope:local data:string +lbl_1_data_3C5 = .data:0x000003C5; // type:object size:0x5 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 scope:local data:float lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte diff --git a/include/REL/modeltestDll.h b/include/REL/modeltestDll.h index d0b4ccc3..f2dd081e 100644 --- a/include/REL/modeltestDll.h +++ b/include/REL/modeltestDll.h @@ -5,12 +5,13 @@ #include "game/objsub.h" #include "game/object.h" +#include "ext_math.h" + // -------------------------------------------------------------------------- // #define US_PER_60TH_SEC (1000000.0f / 60.0f) #define US_TO_60TH_SEC(us) ((us) / US_PER_60TH_SEC) #define FB_SIZE(width, height) width * height * 2 -#define ABS(x) ((x) < 0 ? -(x) : (x)) // -------------------------------------------------------------------------- // @@ -44,4 +45,4 @@ omObjFunc2 fn_1_F9C; #endif -// -------------------------------------------------------------------------- // \ No newline at end of file +// -------------------------------------------------------------------------- // diff --git a/src/REL/instDll/main.c b/src/REL/instDll/main.c index 45308b70..5bfac016 100644 --- a/src/REL/instDll/main.c +++ b/src/REL/instDll/main.c @@ -495,7 +495,7 @@ static void fn_1_17E4(void) CharModelMotionShiftSet(char_tbl[j], mot_tbl[j][0], 0, 10, HU3D_MOTATTR_LOOP); } if (time <= 20) { - Hu3DModelPosSet(player_mdl[j], player_pos[j].x, player_pos[j].y + (1000.0 * cos(M_PI * (time * 4.5f) / 180.0)), player_pos[j].z); + Hu3DModelPosSet(player_mdl[j], player_pos[j].x, player_pos[j].y + 1000.0 * cosd(time * 4.5f), player_pos[j].z); time -= 10; if (time >= 0) { tplvl = 0.1 * time; @@ -1081,7 +1081,7 @@ static void fn_1_50B0(ModelData *model, Mtx mtx) target.y = 415.0f; pos.x = (sind(lbl_1_bss_40[0].y) * cosd(lbl_1_bss_40[0].x) * lbl_1_bss_20[0]) + lbl_1_bss_28[0].x; pos.y = (-sind(lbl_1_bss_40[0].x) * lbl_1_bss_20[0]) + lbl_1_bss_28[0].y; - pos.z = (cos(M_PI * lbl_1_bss_40[0].y / 180.0) * cosd(lbl_1_bss_40[0].x) * lbl_1_bss_20[0]) + lbl_1_bss_28[0].z; + pos.z = (cosd(lbl_1_bss_40[0].y) * cosd(lbl_1_bss_40[0].x) * lbl_1_bss_20[0]) + lbl_1_bss_28[0].z; up.x = -sind(lbl_1_bss_40[0].y); up.z = -cosd(lbl_1_bss_40[0].y); up.y = 0; diff --git a/src/REL/m407dll/camera.c b/src/REL/m407dll/camera.c index 20d3d4db..69d04b85 100644 --- a/src/REL/m407dll/camera.c +++ b/src/REL/m407dll/camera.c @@ -1,7 +1,7 @@ #include "game/process.h" #include "game/object.h" #include "game/hsfdraw.h" -#include "math.h" +#include "ext_math.h" typedef struct unkDominationData2 { /* 0x00 */ s32 unk_00; @@ -128,16 +128,16 @@ void fn_1_2024(omObjData* arg0) { } break; case 2: - var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0); + var_f31 = sind(90.0f * temp_r31->unk_44); break; case 3: - var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0); + var_f31 = sind(90.0f * temp_r31->unk_44); if (temp_r31->unk_48 > 0.5) { temp_r31->unk_00 = 4; } break; case 4: - var_f31 = sin((M_PI * (90.0f * temp_r31->unk_44)) / 180.0); + var_f31 = sind(90.0f * temp_r31->unk_44); var_f31 *= var_f31; break; } diff --git a/src/REL/m407dll/player.c b/src/REL/m407dll/player.c index 395fb157..725f71bd 100644 --- a/src/REL/m407dll/player.c +++ b/src/REL/m407dll/player.c @@ -467,8 +467,8 @@ void fn_1_DB4(omObjData *arg0) temp_r31->unk_20++; } - temp_f31 = (32.0f * sin(1.0471975511965976)) - (9.8f * temp_r31->unk_24); - temp_f30 = 22.0f * cos(1.0471975511965976); + temp_f31 = 32.0f * sin(M_PI / 3) - 9.8f * temp_r31->unk_24; + temp_f30 = 22.0f * cos(M_PI / 3); temp_r31->unk_18 = temp_r31->unk_18 + temp_f30; temp_r31->unk_14 = temp_r31->unk_14 + temp_f31; temp_r31->unk_24 += 0.3f; @@ -514,7 +514,7 @@ void fn_1_1074(omObjData *arg0) temp_r31->unk_20 = 1; } - temp_r31->unk_14 = (temp_r31->unk_14 + ((80.0 * sin(1.5707963267948966)) - (9.8 * temp_r31->unk_24))); + temp_r31->unk_14 += 80.0 * sin(M_PI / 2) - 9.8 * temp_r31->unk_24; temp_r31->unk_24 += 0.3f; if (!(temp_r31->unk_14 < 1000.0f)) { diff --git a/src/REL/m409Dll/main.c b/src/REL/m409Dll/main.c index 3e51e855..a1ee937d 100644 --- a/src/REL/m409Dll/main.c +++ b/src/REL/m409Dll/main.c @@ -132,7 +132,7 @@ s8 fn_1_524(void) var_r30 = 1; } var_f30 = lbl_1_bss_2 / 300.0f; - temp_f31 = (sin((M_PI * (90.0f * var_f30)) / 180.0) * sin((M_PI * (90.0f * var_f30)) / 180.0)); + temp_f31 = sind(90.0f * var_f30) * sind(90.0f * var_f30); CZoom = fn_1_4120(var_r31[0].zoom, var_r31[1].zoom, var_r31[2].zoom, temp_f31); Center.x = fn_1_4120(var_r31[0].center.x, var_r31[1].center.x, var_r31[2].center.x, temp_f31); Center.y = fn_1_4120(var_r31[0].center.y, var_r31[1].center.y, var_r31[2].center.y, temp_f31); @@ -157,8 +157,8 @@ s8 fn_1_524(void) Hu3DTexScrollPosMoveSet(lbl_1_bss_24.unkC, -0.0001f - (0.005f * temp_f31), 0.0f, 0.0f); Hu3DTexScrollPosMoveSet(lbl_1_bss_24.unkE, -0.0002f - (0.005f * temp_f31), 0.0f, 0.0f); Hu3DTexScrollPosMoveSet(lbl_1_bss_24.unk10, -0.0003f - (0.005f * temp_f31), 0.0f, 0.0f); - sp8.x = -(sin((M_PI * CRot.y) / 180.0) * cosd(CRot.x)); - sp8.y = sin((M_PI * CRot.x) / 180.0); + sp8.x = -(sind(CRot.y) * cosd(CRot.x)); + sp8.y = sind(CRot.x); sp8.z = -(cosd(CRot.y) * cosd(CRot.x)); HuAudFXListnerUpdate(&Hu3DCamera->pos, &sp8); return var_r30; @@ -178,7 +178,7 @@ s8 fn_1_B80(void) var_r30 = 1; } temp_f30 = lbl_1_bss_4 / 60.0f; - temp_f31 = (sin((M_PI * (90.0f * temp_f30)) / 180.0) * sin((M_PI * (90.0f * temp_f30)) / 180.0)); + temp_f31 = sind(90.0f * temp_f30) * sind(90.0f * temp_f30); CZoom = var_r31[0].zoom + (temp_f31 * (var_r31[1].zoom - var_r31[0].zoom)); Center.x = var_r31[0].center.x + (temp_f31 * (var_r31[1].center.x - var_r31[0].center.x)); Center.y = var_r31[0].center.y + (temp_f31 * (var_r31[1].center.y - var_r31[0].center.y)); @@ -300,20 +300,20 @@ s8 fn_1_10E8(omObjData *object) else if (lbl_1_bss_C > 0.2f) { lbl_1_bss_A = 1; } - var_f31 = sin((M_PI * (90.0f * lbl_1_bss_C)) / 180.0); + var_f31 = sind(90.0f * lbl_1_bss_C); var_f27 = 1520.0f; var_f26 = -1030.0f; temp_f30 = var_f27 + (var_f31 * (var_f26 - var_f27)); Hu3DModelPosSet(lbl_1_bss_DC->model[4], temp_f30, 0.0f, -1200.0f); Hu3DModelPosSet(lbl_1_bss_DC->model[1], temp_f30, 0.0f, -1200.0f); - if ((lbl_1_data_BC + 0x10000) != 0xFFFF) { + if (lbl_1_data_BC != ~0) { sp8.x = temp_f30; sp8.y = 0.0f; sp8.z = -1200.0f; HuAudFXEmiterUpDate(lbl_1_data_BC, &sp8); } var_f31 = 1.2f * lbl_1_bss_C; - if ((var_f31 >= 1.0f) && ((lbl_1_data_BC + 0x10000) != 0xFFFF)) { + if ((var_f31 >= 1.0f) && lbl_1_data_BC != ~0) { HuAudFXEmiterPlay(0x555, &sp8); sp8.x += 200.0f; HuAudFXEmiterPlay(0x55E, &sp8); @@ -324,7 +324,7 @@ s8 fn_1_10E8(omObjData *object) var_f31 = 0.0f; } else { - var_f31 = sin((M_PI * (90.0f + (90.0f * var_f31))) / 180.0); + var_f31 = sind(90.0f + 90.0f * var_f31); } Hu3DMotionSpeedSet(lbl_1_bss_DC->model[4], 2.0f * var_f31); if (lbl_1_bss_C > 0.5f) { @@ -455,7 +455,7 @@ void fn_1_2098(omObjData *object) Hu3DModelAttrSet(lbl_1_bss_DC->model[4], HU3D_ATTR_DISPOFF); lbl_1_bss_18 = 1.0f; } - var_f31 = sin((M_PI * (90.0f * lbl_1_bss_18)) / 180.0); + var_f31 = sind(90.0f * lbl_1_bss_18); var_f29 = -1030.0f; var_f28 = -1880.0f; var_f30 = var_f29 + (var_f31 * (var_f28 - var_f29)); @@ -684,7 +684,7 @@ void fn_1_2DCC(omObjData *object) Hu3DModelAttrReset(var_r31->unk6, HU3D_ATTR_DISPOFF); } var_r31->unk10 += var_f30; - var_f31 = sin((M_PI * (90.0f * var_r31->unk10)) / 180.0); + var_f31 = sind(90.0f * var_r31->unk10); if (var_r31->unk10 >= 1.0f) { var_f31 = 1.0f; var_r31->unk10 = var_f31; @@ -728,7 +728,7 @@ void fn_1_2DCC(omObjData *object) } Hu3DModelPosSet(var_r31->unk6, 70.0f + temp_r30->pos.x, 290.0f, -1200.0f); Hu3DData[var_r31->unk4].pos.x = temp_r30->pos.x; - var_f31 = (0.800000011920929 * sin((M_PI * (180.0f * var_r31->unk10)) / 180.0)); + var_f31 = 0.8f * sind(180.0f * var_r31->unk10); Hu3DMotionSpeedSet(var_r31->unk2, var_f31); } } @@ -948,7 +948,7 @@ void fn_1_44F0(s16 arg0, f32 arg8, f32 arg9, f32 argA, s8 arg1, s16 arg2) return; temp_f31 = (((rand8() << 8) | rand8()) % 361); - var_r31->unk0.x = (2.0 + (3.0 * sin((M_PI * temp_f31) / 180.0))); + var_r31->unk0.x = 2.0 + (3.0 * sind(temp_f31)); var_r31->unk0.y = (0.1f * ((((rand8() << 8) | rand8()) % 31) + 40)); var_r31->unk0.z = (3.5 * cosd(temp_f31)); var_r31->unk28 = 0; @@ -1012,7 +1012,7 @@ void fn_1_4FFC(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4) temp_f31 = ((((rand8() << 8) | rand8()) % 81) - 40); temp_r31->unk0.x = (13.0 * cosd(temp_f31)); temp_r31->unk0.y = 0.1f * ((((rand8() << 8) | rand8()) % 21) + 20); - temp_r31->unk0.z = (9.0 * sin((M_PI * temp_f31) / 180.0)); + temp_r31->unk0.z = (9.0 * sind(temp_f31)); temp_r31->unkC.x = (0.05f * temp_r31->unk0.x); temp_r31->unkC.z = (0.05f * temp_r31->unk0.z); temp_r31->unk18 = 500.0f; diff --git a/src/REL/m412Dll/main.c b/src/REL/m412Dll/main.c index 1cad6746..d71592b2 100644 --- a/src/REL/m412Dll/main.c +++ b/src/REL/m412Dll/main.c @@ -81,8 +81,8 @@ void ObjectSetup(void) temp_f29 = lbl_1_bss_268.y; temp_f31 = lbl_1_bss_268.z; lbl_1_bss_774 = sqrtf((temp_f31 * temp_f31) + ((temp_f30 * temp_f30) + (temp_f29 * temp_f29))); - lbl_1_bss_778 = fn_1_1D08((180.0 * (atan2(temp_f30, temp_f31) / M_PI))); - lbl_1_bss_77C = fn_1_1D08((180.0 * (atan2(temp_f29, temp_f31) / M_PI))); + lbl_1_bss_778 = fn_1_1D08(atan2d(temp_f30, temp_f31)); + lbl_1_bss_77C = fn_1_1D08(atan2d(temp_f29, temp_f31)); lbl_1_bss_77C = 50.0f; Hu3DLighInit(); lbl_1_bss_7A0 = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 0xFFU, 0xFFU, 0xFFU); diff --git a/src/REL/m414Dll/main.c b/src/REL/m414Dll/main.c index 8e7bc1f0..8ca555e6 100644 --- a/src/REL/m414Dll/main.c +++ b/src/REL/m414Dll/main.c @@ -1156,9 +1156,9 @@ void fn_1_42AC(void) var_f23 = -200.0 * (cos(0.0) * cosd(lbl_1_bss_920[var_r27])); } else { - var_f24 = -200.0 * (sind(lbl_1_bss_920[var_r27]) * cos(0.3490658503988659)); - var_f26 = 150.0 + (-200.0 * sin(-0.3490658503988659)); - var_f23 = -200.0 * (cos(-0.3490658503988659) * cosd(lbl_1_bss_920[var_r27])); + var_f24 = -200.0 * (sind(lbl_1_bss_920[var_r27]) * cosd(20)); + var_f26 = 150.0 + -200.0 * sind(-20); + var_f23 = -200.0 * (cosd(-20) * cosd(lbl_1_bss_920[var_r27])); } if (!lbl_1_bss_938[var_r30->unk_04]) { var_f26 += 70.0f; diff --git a/src/REL/m417Dll/player.c b/src/REL/m417Dll/player.c index cc740d0e..ca8f7206 100644 --- a/src/REL/m417Dll/player.c +++ b/src/REL/m417Dll/player.c @@ -856,7 +856,7 @@ void fn_1_9C14(omObjData *object) return; } PSQUATNormalize(&var_r31->unk_194, &sp28); - if (sp28.w < cos(0.4363323129985824)) { + if (sp28.w < cosd(25)) { var_r31->unk_3C = 1; } } diff --git a/src/REL/m417Dll/water.c b/src/REL/m417Dll/water.c index 7f7bd933..4313fa29 100644 --- a/src/REL/m417Dll/water.c +++ b/src/REL/m417Dll/water.c @@ -326,7 +326,7 @@ void fn_1_3D58(omObjData *object) var_r28->y = 0.0f; var_r28->z = var_f29; } - var_f29 += (var_f28 * sin(1.0471975511965976)); + var_f29 += var_f28 * sind(60); } var_r28 = lbl_1_bss_178.unk_2C; var_r30 = 0; diff --git a/src/REL/m424Dll/claw.c b/src/REL/m424Dll/claw.c index 578750ce..752b4afb 100644 --- a/src/REL/m424Dll/claw.c +++ b/src/REL/m424Dll/claw.c @@ -164,7 +164,7 @@ void fn_1_94D0(omObjData* arg0) { var_r31->unk170 = -1; var_r31->unk174 = lbl_1_data_30C; // @todo how did this happen - var_r31->unk180 = (180.0 * (atan2(-102.864990234375, 424.559997558593750) / M_PI)); + var_r31->unk180 = atan2d(-102.864990234375, 424.559997558593750); if (var_r31->unk180 < 0.0f) { var_r31->unk180 += 360.0f; } diff --git a/src/REL/m425Dll/thwomp.c b/src/REL/m425Dll/thwomp.c index 0a320286..a47e9bd9 100644 --- a/src/REL/m425Dll/thwomp.c +++ b/src/REL/m425Dll/thwomp.c @@ -1477,7 +1477,7 @@ s32 fn_1_6EC4(float var_f24, float sp8, s16 var_r22, s16 var_r24) var_r31->unk_18C[var_r30].x = -(sp24 * var_r31->unk_17C[var_r30].x); var_r31->unk_18C[var_r30].z = -(sp24 * var_r31->unk_17C[var_r30].z); var_r31->unk_18C[var_r30].y = 0.0; - var_f27 = 180.0 + (180.0 * (atan2(var_r31->unk_17C[var_r30].x, var_r31->unk_17C[var_r30].z) / 3.141592653589793)); + var_f27 = 180.0 + atan2d(var_r31->unk_17C[var_r30].x, var_r31->unk_17C[var_r30].z); if (var_f27 > 360.0f) { var_f27 = fmod(var_f27, 360.0); } diff --git a/src/REL/m440Dll/main.c b/src/REL/m440Dll/main.c index e6c29642..d7653b96 100644 --- a/src/REL/m440Dll/main.c +++ b/src/REL/m440Dll/main.c @@ -125,7 +125,7 @@ s32 fn_1_4A4(void) var_r30 = 1; } - var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); + var_f31 = sind(90.0f * var_f31) * sind(90.0f * var_f31); CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); @@ -152,7 +152,7 @@ s32 fn_1_6C8(void) var_r30 = 1; } - var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); + var_f31 = (sind(90.0f * var_f31) * sind(90.0f * var_f31)); CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); @@ -282,7 +282,7 @@ u8 fn_1_E14(omObjData *arg0) var_f31 = 1.0f; var_r30 = 1; } - var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); + var_f31 = (sind(90.0f * var_f31) * sind(90.0f * var_f31)); CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); @@ -338,7 +338,7 @@ u8 fn_1_1138(omObjData *object) var_f31 = 1.0f; var_r28 = 1; } - var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); + var_f31 = (sind(90.0f * var_f31) * sind(90.0f * var_f31)); CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); @@ -628,8 +628,8 @@ void fn_1_2470(omObjData *arg0) Hu3DModelShadowMapSet(arg0->model[0]); for (var_r30 = 0; var_r30 < 5; var_r30++) { - temp_f31 = (450.0 * cos(M_PI * lbl_1_data_0[var_r30] / 180.0)); - var_f29 = (450.0 * sin(M_PI * lbl_1_data_0[var_r30] / 180.0)); + temp_f31 = 450.0 * cosd(lbl_1_data_0[var_r30]); + var_f29 = 450.0 * sind(lbl_1_data_0[var_r30]); Hu3DModelPosSet(arg0->model[var_r30 + 4], temp_f31, 0.0f, var_f29); var_f30 = 90.0f - lbl_1_data_0[var_r30]; Hu3DModelRotSet(arg0->model[var_r30 + 4], 0.0f, var_f30, 0.0f); @@ -705,7 +705,7 @@ void fn_1_2B04(omObjData *object) fn_1_4EEC(0x20, 0); return; } - temp_f31 = sin((M_PI * (90.0f * temp_f31)) / 180.0); + temp_f31 = sind(90.0f * temp_f31); temp_r31->center.y = (250.0f + (1750.0f * temp_f31)); } Hu3DModelPosSet(object->model[3], temp_r31->center.x, temp_r31->center.y, temp_r31->center.z); @@ -764,7 +764,7 @@ void fn_1_2D28(omObjData *object) if ((11 * REFRESH_RATE_F / 6) == lbl_1_data_F0[0]) { HuAudFXPlay(0x70A); } - var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + var_f31 = sind(90.0f * var_f31); temp_r31->center.y = (2000.0f + (-1750.0f * var_f31)); break; case 0x2: @@ -811,7 +811,7 @@ void fn_1_2D28(omObjData *object) fn_1_4EEC(7, 2); return; } - var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + var_f31 = sind(90.0f * var_f31); temp_r31->center.y = (250.0f + (1750.0f * var_f31)); break; case 0x63: @@ -1030,7 +1030,7 @@ void fn_1_46E0(omObjData *object) fn_1_4EEC(0x18, 0x10); HuAudFXPlay(0x70F); } - var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + var_f31 = sind(90.0f * var_f31); temp_r31->unk24 = (150.0f * var_f31); break; case 0x63: @@ -1090,7 +1090,7 @@ void fn_1_4B44(omObjData *object) lbl_1_data_108[0] = 0; lbl_1_data_104[0]++; } - var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + var_f31 = sind(90.0f * var_f31); temp_r31->unk24 = (150.0f + (-150.0f * var_f31)); break; case 1: diff --git a/src/REL/m440Dll/object.c b/src/REL/m440Dll/object.c index 941f1463..00d59251 100644 --- a/src/REL/m440Dll/object.c +++ b/src/REL/m440Dll/object.c @@ -255,7 +255,7 @@ void fn_1_B884(omObjData *arg0, unkObjStruct *arg1) arg1->unk18.z = (700.0 * sind(lbl_1_data_250)); var_f29 = (arg1->unk18.x - arg1->unk24.x); var_f28 = (arg1->unk18.z - arg1->unk24.z); - var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI)); + var_f30 = atan2d(var_f29, var_f28); if (var_f30 < 0.0f) { var_f30 += 360.0f; } @@ -310,7 +310,7 @@ void fn_1_B884(omObjData *arg0, unkObjStruct *arg1) arg1->unk18.z = (arg1->unk5C * sind(lbl_1_data_250)); var_f29 = (arg1->unk18.x - arg1->unk24.x); var_f28 = (arg1->unk18.z - arg1->unk24.z); - var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI)); + var_f30 = atan2d(var_f29, var_f28); if (var_f30 < 0.0f) { var_f30 += 360.0f; } @@ -551,7 +551,7 @@ void fn_1_C944(omObjData *arg0, unkObjStruct *arg1) arg1->unk48 = arg1->unk48 & ~4; var_f26 = (arg1->unk18.x - arg1->unk24.x); var_f25 = (arg1->unk18.z - arg1->unk24.z); - var_f29 = (180.0 * (atan2(var_f26, var_f25) / M_PI)); + var_f29 = atan2d(var_f26, var_f25); if (var_f29 < 0.0f) { var_f29 += 360.0f; } @@ -920,7 +920,7 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1) arg1->unk18.z = (arg1->unk5C * sind(lbl_1_bss_84)); var_f29 = (arg1->unk18.x - arg1->unk24.x); var_f28 = (arg1->unk18.z - arg1->unk24.z); - var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI)); + var_f30 = atan2d(var_f29, var_f28); if (var_f30 < 0.0f) { var_f30 += 360.0f; } @@ -949,8 +949,8 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1) arg1->unk60++; } var_f29 = arg1->unk5C + ((700.0f - arg1->unk5C) * var_f31); - arg1->unk18.x = (var_f29 * cos(2.356194490192345)); // atan2(1.0, -1.0) - arg1->unk18.z = (var_f29 * sin(2.356194490192345)); + arg1->unk18.x = var_f29 * cosd(135); + arg1->unk18.z = var_f29 * sind(135); var_f29 = 0.3f; var_f28 = 0.6f; if (var_f31 >= var_f29) { @@ -978,7 +978,7 @@ void fn_1_E034(omObjData *arg0, unkObjStruct *arg1) arg1->unk18.z = (700.0 * sind(lbl_1_bss_84)); var_f29 = (arg1->unk18.x - arg1->unk24.x); var_f28 = (arg1->unk18.z - arg1->unk24.z); - var_f30 = (180.0 * (atan2(var_f29, var_f28) / M_PI)); + var_f30 = atan2d(var_f29, var_f28); if (var_f30 < 0.0f) { var_f30 += 360.0f; } diff --git a/src/REL/m443Dll/player.c b/src/REL/m443Dll/player.c index a55b2d0c..ee7e5237 100644 --- a/src/REL/m443Dll/player.c +++ b/src/REL/m443Dll/player.c @@ -355,8 +355,8 @@ void fn_1_5BD4(omObjData *object) var_f30 = 0.0f; } var_f30 = var_f30 * var_f30; - sp8.x = 320.0 + (160.0 * (var_f31 * cos(M_PI * ((450.0f * var_f31) + (90.0f * object->work[0])) / 180.0))); - sp8.y = 240.0 + (120.0 * (var_f31 * sin(M_PI * ((450.0f * var_f31) + (90.0f * object->work[0])) / 180.0))); + sp8.x = 320.0 + 160.0 * (var_f31 * cosd(450.0f * var_f31 + 90.0f * object->work[0])); + sp8.y = 240.0 + 120.0 * (var_f31 * sind(450.0f * var_f31 + 90.0f * object->work[0])); temp_r31->unk100->unk_44 = sp8.x + (var_f30 * (temp_r31->unk100->unk_78 - sp8.x)); temp_r31->unk100->unk_48 = sp8.y + (var_f30 * (temp_r31->unk100->unk_7C - sp8.y)); temp_r31->unk100->unk_40 = 0.01f + ((temp_r31->unk100->unk_80 - 0.01f) * var_f31); diff --git a/src/REL/m444dll/shadow.c b/src/REL/m444dll/shadow.c index 676458bf..9351f3e6 100644 --- a/src/REL/m444dll/shadow.c +++ b/src/REL/m444dll/shadow.c @@ -49,8 +49,8 @@ void fn_1_D9F4(s16 arg0) sp10.y = 1.0f; C_MTXLookAt(sp34, &sp28, &sp10, &sp1C); GXLoadPosMtxImm(sp34, 0); - sp28.x = 1.2000000476837158 * (10000.0 * -sin(var_r31->fov / 2)); - sp28.y = 0.8333333134651184 * (10000.0 * -sin(var_r31->fov / 2)); + sp28.x = 1.2f * (10000.0 * -sin(var_r31->fov / 2)); + sp28.y = (2.5f / 3) * (10000.0 * -sin(var_r31->fov / 2)); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3f32(-sp28.x, -sp28.y, -10000.0f); GXPosition3f32(sp28.x, -sp28.y, -10000.0f); diff --git a/src/REL/m446Dll/camera.c b/src/REL/m446Dll/camera.c index ef322bf3..8a49a82f 100644 --- a/src/REL/m446Dll/camera.c +++ b/src/REL/m446Dll/camera.c @@ -51,7 +51,7 @@ void fn_1_68DC(void) { f32 temp_f31; if (lbl_1_bss_38 != 0) { - temp_f31 = sin((M_PI * (90.0f * lbl_1_bss_40)) / 180.0); + temp_f31 = sind(90.0f * lbl_1_bss_40); temp_f31 *= temp_f31; lbl_1_bss_8C.x = lbl_1_bss_54.x + (temp_f31 * (lbl_1_bss_70.x - lbl_1_bss_54.x)); lbl_1_bss_8C.y = lbl_1_bss_54.y + (temp_f31 * (lbl_1_bss_70.y - lbl_1_bss_54.y)); @@ -138,4 +138,4 @@ void fn_1_709C(void) { print8(0x20, 0x84, 1.5f, "LOOKAT : x=%.2f y=%.2f z=%.2f", lbl_1_bss_8C.x, lbl_1_bss_8C.y, lbl_1_bss_8C.z); print8(0x20, 0x94, 1.5f, "ANGLE : x=%.2f y=%.2f z=%.2f", lbl_1_bss_80.x, lbl_1_bss_80.y, lbl_1_bss_80.z); print8(0x20, 0xA4, 1.5f, "ZOOM : %.2f", lbl_1_bss_7C); -} \ No newline at end of file +} diff --git a/src/REL/m446Dll/card.c b/src/REL/m446Dll/card.c index 28b943a1..fa45170f 100644 --- a/src/REL/m446Dll/card.c +++ b/src/REL/m446Dll/card.c @@ -1,7 +1,7 @@ #include "REL/m446Dll.h" #include "game/hsfman.h" -#include "math.h" +#include "ext_math.h" // data m446Func4 lbl_1_data_150[3] = { NULL, fn_1_2AA8, fn_1_2DA8 }; @@ -229,7 +229,7 @@ void fn_1_20D4(void) temp_r31->unk7C--; } else { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unk80)) / 180.0); + temp_f31 = sind(90.0f * temp_r31->unk80); temp_r31->unk10.x = temp_r31->unk1C.x + (temp_f31 * (temp_r31->unk28.x - temp_r31->unk1C.x)); temp_r31->unk10.y = temp_r31->unk1C.y + (temp_f31 * (temp_r31->unk28.y - temp_r31->unk1C.y)); temp_r31->unk10.z = temp_r31->unk1C.z + (temp_f31 * (temp_r31->unk28.z - temp_r31->unk1C.z)); @@ -243,7 +243,7 @@ void fn_1_20D4(void) } } if (temp_r31->unk74 != 0) { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unk88)) / 180.0); + temp_f31 = sind(90.0f * temp_r31->unk88); temp_r31->unk34.x = (temp_r31->unk40.x + (temp_f31 * (temp_r31->unk4C.x - temp_r31->unk40.x))); temp_r31->unk34.y = (temp_r31->unk40.y + (temp_f31 * (temp_r31->unk4C.y - temp_r31->unk40.y))); temp_r31->unk34.z = (temp_r31->unk40.z + (temp_f31 * (temp_r31->unk4C.z - temp_r31->unk40.z))); @@ -256,7 +256,7 @@ void fn_1_20D4(void) } } if (temp_r31->unk78 != 0) { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unk90)) / 180.0); + temp_f31 = sind(90.0f * temp_r31->unk90); temp_r31->unk58 = (temp_r31->unk5C + (temp_f31 * (temp_r31->unk60 - temp_r31->unk5C))); temp_r31->unk90 = (temp_r31->unk90 + temp_r31->unk94); if (temp_r31->unk90 >= 1.0f) { diff --git a/src/REL/m446Dll/cursor.c b/src/REL/m446Dll/cursor.c index 088e6f9f..c57da258 100644 --- a/src/REL/m446Dll/cursor.c +++ b/src/REL/m446Dll/cursor.c @@ -2,7 +2,7 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" -#include "math.h" +#include "ext_math.h" // bss unkStruct3 *lbl_1_bss_98; @@ -42,7 +42,7 @@ void fn_1_7350(void) do { temp_r31 = var_r30->unk0; if (temp_r31->field00_bit1 != 0) { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unk4C)) / 180.0); + temp_f31 = sind(90.0f * temp_r31->unk4C); temp_f31 *= temp_f31; temp_r31->unk20.x = (temp_r31->unk2C.x + (temp_f31 * (temp_r31->unk38.x - temp_r31->unk2C.x))); temp_r31->unk20.y = (temp_r31->unk2C.y + (temp_f31 * (temp_r31->unk38.y - temp_r31->unk2C.y))); diff --git a/src/REL/m446Dll/player.c b/src/REL/m446Dll/player.c index 619176ae..ecf62fa9 100644 --- a/src/REL/m446Dll/player.c +++ b/src/REL/m446Dll/player.c @@ -6,7 +6,7 @@ #include "game/hsfmotion.h" #include "game/objsub.h" #include "game/pad.h" -#include "math.h" +#include "ext_math.h" // cursor.c extern unkStruct7 *m446CursorCreate(s32); @@ -122,7 +122,7 @@ void fn_1_487C(void) lbl_1_data_2DC[temp_r31->unk18](temp_r31); } if (temp_r31->unkB4 != 0) { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unkC0)) / 180.0); + temp_f31 = sind(90.0f * temp_r31->unkC0); temp_f31 *= temp_f31; temp_r31->unk48.x = (temp_r31->unk9C.x + (temp_f31 * (temp_r31->unkA8.x - temp_r31->unk9C.x))); temp_r31->unk48.y = (temp_r31->unk9C.y + (temp_f31 * (temp_r31->unkA8.y - temp_r31->unk9C.y))); @@ -136,7 +136,7 @@ void fn_1_487C(void) } } if (temp_r31->unk98 != 0) { - temp_f31 = sin((M_PI * (90.0f * temp_r31->unkB8)) / 180.0); + temp_f31 = sind(90.0f * temp_r31->unkB8); temp_f31 *= temp_f31; temp_r31->unk54.x = (temp_r31->unk80.x + (temp_f31 * (temp_r31->unk8C.x - temp_r31->unk80.x))); temp_r31->unk54.y = (temp_r31->unk80.y + (temp_f31 * (temp_r31->unk8C.y - temp_r31->unk80.y))); diff --git a/src/REL/mentDll/common.c b/src/REL/mentDll/common.c index 82910c62..77e82ced 100644 --- a/src/REL/mentDll/common.c +++ b/src/REL/mentDll/common.c @@ -109,7 +109,7 @@ f32 fn_1_254(f32 arg8, f32 arg9, f32 argA, f32 argB) if (argA >= argB) { return arg9; } - return (arg8 + ((arg9 - arg8) * (1.0 - cos((M_PI * ((90.0f / argB) * argA)) / 180.0)))); + return (arg8 + ((arg9 - arg8) * (1.0 - cosd((90.0f / argB) * argA)))); } // fn_1_32C @@ -118,7 +118,7 @@ f32 fn_1_32C(f32 arg8, f32 arg9, f32 argA, f32 argB) if (argA >= argB) { return arg9; } - return (arg8 + ((arg9 - arg8) * sin((M_PI * ((90.0f / argB) * argA)) / 180.0))); + return arg8 + (arg9 - arg8) * sind((90.0f / argB) * argA); } f32 fn_1_3F4(f32 arg8, f32 arg9, f32 argA, f32 argB) @@ -126,7 +126,7 @@ f32 fn_1_3F4(f32 arg8, f32 arg9, f32 argA, f32 argB) if (argA >= argB) { return arg8; } - return (arg8 + ((arg9 - arg8) * sin((M_PI * ((360.0f / argB) * argA)) / 180.0))); + return (arg8 + ((arg9 - arg8) * sind((360.0f / argB) * argA))); } void fn_1_4B0(s32 arg0) diff --git a/src/REL/modeltestDll/main.c b/src/REL/modeltestDll/main.c index 7c8dc93a..b2887739 100644 --- a/src/REL/modeltestDll/main.c +++ b/src/REL/modeltestDll/main.c @@ -11,10 +11,8 @@ #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" -#include "math.h" #include "REL/modeltestDll.h" -#include "math.h" // -------------------------------------------------------------------------- // @@ -311,7 +309,7 @@ void fn_1_29C(omObjData *arg0) Hu3DParManAttrSet(lbl_1_bss_864[var_r31], 0x864); Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(lbl_1_bss_864[var_r31]), 1U); Hu3DParManPosSet( - lbl_1_bss_864[var_r31], (100.0 * sin((M_PI * (36.0f * var_r31)) / 180.0)), 0.0f, 100.0 * cos((M_PI * (36.0f * var_r31)) / 180.0)); + lbl_1_bss_864[var_r31], (100.0 * sind(36.0f * var_r31)), 0.0f, 100.0 * cosd(36.0f * var_r31)); Hu3DParManRotSet(lbl_1_bss_864[var_r31], -90.0f, 0.0f, 0.0f); } @@ -465,28 +463,28 @@ void fn_1_F9C(struct om_obj_data *omData) } } - sp3C.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))); - sp3C.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0))); - sp3C.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)))); + sp3C.x = Center.x + CZoom * (sind(CRot.y) * cosd(CRot.x)); + sp3C.y = Center.y + CZoom * -sind(CRot.x); + sp3C.z = Center.z + CZoom * (cosd(CRot.y) * cosd(CRot.x)); sp30.x = Center.x - sp3C.x; sp30.y = Center.y - sp3C.y; sp30.z = Center.z - sp3C.z; - sp24.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); - sp24.y = cos((M_PI * CRot.x) / 180.0); - sp24.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); + sp24.x = sind(CRot.y) * sind(CRot.x); + sp24.y = cosd(CRot.x); + sp24.z = cosd(CRot.y) * sind(CRot.x); temp_f31 = CRot.z; - sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cos((M_PI * temp_f31) / 180.0)) - + sp24.y * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.z * sin((M_PI * temp_f31) / 180.0)) - + sp24.z * (sp30.x * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.y * sin((M_PI * temp_f31) / 180.0)); + sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cosd(temp_f31)) + + sp24.y * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) - sp30.z * sind(temp_f31)) + + sp24.z * (sp30.x * sp30.z * (1.0f - cosd(temp_f31)) + sp30.y * sind(temp_f31)); - sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cos((M_PI * temp_f31) / 180.0)) - + sp24.x * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.z * sin((M_PI * temp_f31) / 180.0)) - + sp24.z * (sp30.y * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.x * sin((M_PI * temp_f31) / 180.0)); + sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cosd(temp_f31)) + + sp24.x * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) + sp30.z * sind(temp_f31)) + + sp24.z * (sp30.y * sp30.z * (1.0f - cosd(temp_f31)) - sp30.x * sind(temp_f31)); - sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cos((M_PI * temp_f31) / 180.0)) - + (sp24.x * (sp30.x * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) - sp30.y * sin((M_PI * temp_f31) / 180.0)) - + sp24.y * (sp30.y * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) + sp30.x * sin((M_PI * temp_f31) / 180.0))); + sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cosd(temp_f31)) + + (sp24.x * (sp30.x * sp30.z * (1.0 - cosd(temp_f31)) - sp30.y * sind(temp_f31)) + + sp24.y * (sp30.y * sp30.z * (1.0 - cosd(temp_f31)) + sp30.x * sind(temp_f31))); VECCrossProduct(&sp24, &sp30, &sp30); VECNormalize(&sp30, &sp30); @@ -603,11 +601,11 @@ void fn_1_20F4(void) Hu3DMtxTransGet(spC0, &sp18); PSMTXMultVec(sp60, &sp18, &sp18); - temp_f27 = 180.0 * (atan2(sp18.z, sp18.x) / M_PI); + temp_f27 = atan2d(sp18.z, sp18.x); temp_r31 = &lbl_1_bss_40[var_r29 * 2]; - temp_r31->obj->data.curr.rot.x = temp_r31->rot.x + (var_f29 * (2.0 * (sin((M_PI * temp_f27) / 180.0) * sin((M_PI * var_r27) / 180.0)))); + temp_r31->obj->data.curr.rot.x = temp_r31->rot.x + (var_f29 * (2.0 * (sind(temp_f27) * sind(var_r27)))); temp_r31->obj->data.curr.rot.y = temp_r31->rot.y; - temp_r31->obj->data.curr.rot.z = temp_r31->rot.z + (var_f29 * cos((M_PI * var_r27) / 180.0)); + temp_r31->obj->data.curr.rot.z = temp_r31->rot.z + (var_f29 * cosd(var_r27)); Hu3DModelObjMtxGet(temp_r3, lbl_1_data_D8[(var_r29 * 2) + 1], spC0); Hu3DMtxTransGet(spC0, &sp24); @@ -632,7 +630,7 @@ void fn_1_20F4(void) var_f29 = 0.0f; } else { - var_r27 = 180.0 * (atan2(HuPadSubStkX[1], HuPadSubStkY[1]) / M_PI); + var_r27 = atan2d(HuPadSubStkX[1], HuPadSubStkY[1]); temp_f30 = (HuPadSubStkX[1] * HuPadSubStkX[1]) + (HuPadSubStkY[1] * HuPadSubStkY[1]); var_f29 = sqrtf(temp_f30); if (var_f29 > 80.0f) { @@ -658,8 +656,8 @@ void fn_1_28F8(Point3d *arg0, Point3d *arg1) C_MTXLookAt(sp18, &cam->pos, &cam->up, &cam->target); PSMTXMultVec(sp18, arg0, &spC); - temp_f31 = (1.2f * (spC.z * (sin((M_PI * (cam->fov / 2)) / 180.0) / (cos((M_PI * (cam->fov / 2)) / 180.0))))); - temp_f30 = (spC.z * (sin((M_PI * (cam->fov / 2)) / 180.0) / (cos((M_PI * (cam->fov / 2)) / 180.0)))); + temp_f31 = (1.2f * (spC.z * (sind(cam->fov / 2) / (cosd(cam->fov / 2))))); + temp_f30 = (spC.z * (sind(cam->fov / 2) / (cosd(cam->fov / 2)))); arg1->x = 288.0f + (spC.x * (288.0f / -temp_f31)); arg1->y = 240.0f + (spC.y * (240.0f / temp_f30)); } diff --git a/src/REL/modeltestDll/modeltest00.c b/src/REL/modeltestDll/modeltest00.c index 36d9596b..c687e5df 100644 --- a/src/REL/modeltestDll/modeltest00.c +++ b/src/REL/modeltestDll/modeltest00.c @@ -103,28 +103,28 @@ void fn_1_37DC(omObjData *) CZoom += HuPadTrigL[0] / 2; CZoom -= HuPadTrigR[0] / 2; - sp3C.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))); - sp3C.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0))); - sp3C.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)))); + sp3C.x = Center.x + CZoom * (sind(CRot.y) * cosd(CRot.x)); + sp3C.y = Center.y + CZoom * -sind(CRot.x); + sp3C.z = Center.z + CZoom * (cosd(CRot.y) * cosd(CRot.x)); sp30.x = Center.x - sp3C.x; sp30.y = Center.y - sp3C.y; sp30.z = Center.z - sp3C.z; - sp24.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); - sp24.y = cos((M_PI * CRot.x) / 180.0); - sp24.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); + sp24.x = sind(CRot.y) * sind(CRot.x); + sp24.y = cosd(CRot.x); + sp24.z = cosd(CRot.y) * sind(CRot.x); temp_f31 = CRot.z; - sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cos((M_PI * temp_f31) / 180.0)) - + sp24.y * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.z * sin((M_PI * temp_f31) / 180.0)) - + sp24.z * (sp30.x * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.y * sin((M_PI * temp_f31) / 180.0)); + sp18.x = sp24.x * (sp30.x * sp30.x + (1.0f - sp30.x * sp30.x) * cosd(temp_f31)) + + sp24.y * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) - sp30.z * sind(temp_f31)) + + sp24.z * (sp30.x * sp30.z * (1.0f - cosd(temp_f31)) + sp30.y * sind(temp_f31)); - sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cos((M_PI * temp_f31) / 180.0)) - + sp24.x * (sp30.x * sp30.y * (1.0f - cos((M_PI * temp_f31) / 180.0)) + sp30.z * sin((M_PI * temp_f31) / 180.0)) - + sp24.z * (sp30.y * sp30.z * (1.0f - cos((M_PI * temp_f31) / 180.0)) - sp30.x * sin((M_PI * temp_f31) / 180.0)); + sp18.y = sp24.y * (sp30.y * sp30.y + (1.0f - sp30.y * sp30.y) * cosd(temp_f31)) + + sp24.x * (sp30.x * sp30.y * (1.0f - cosd(temp_f31)) + sp30.z * sind(temp_f31)) + + sp24.z * (sp30.y * sp30.z * (1.0f - cosd(temp_f31)) - sp30.x * sind(temp_f31)); - sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cos((M_PI * temp_f31) / 180.0)) - + (sp24.x * (sp30.x * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) - sp30.y * sin((M_PI * temp_f31) / 180.0)) - + sp24.y * (sp30.y * sp30.z * (1.0 - cos((M_PI * temp_f31) / 180.0)) + sp30.x * sin((M_PI * temp_f31) / 180.0))); + sp18.z = sp24.z * (sp30.z * sp30.z + (1.0f - sp30.z * sp30.z) * cosd(temp_f31)) + + (sp24.x * (sp30.x * sp30.z * (1.0 - cosd(temp_f31)) - sp30.y * sind(temp_f31)) + + sp24.y * (sp30.y * sp30.z * (1.0 - cosd(temp_f31)) + sp30.x * sind(temp_f31))); VECCrossProduct(&sp24, &sp30, &sp30); VECNormalize(&sp30, &sp30); @@ -148,17 +148,17 @@ void fn_1_439C(omObjData * ) temp_f31 = CRot.x; temp_f30 = CRot.y + (var_r31 * 90); sp10 = CRot.z; - sp2C.x = Center.x + (CZoom * (sin((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0)))); - sp2C.y = Center.y + (CZoom * -sin((M_PI * temp_f31) / 180.0)); - sp2C.z = Center.z + (CZoom * (cos((M_PI * temp_f30) / 180.0) * (cos((M_PI * temp_f31) / 180.0)))); + sp2C.x = Center.x + CZoom * (sind(temp_f30) * (cosd(temp_f31))); + sp2C.y = Center.y + CZoom * -sind(temp_f31); + sp2C.z = Center.z + CZoom * (cosd(temp_f30) * (cosd(temp_f31))); sp20.x = Center.x; sp20.y = Center.y; sp20.z = Center.z; - sp14.x = sin((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0)); - sp14.y = cos((M_PI * temp_f31) / 180.0); - sp14.z = cos((M_PI * temp_f30) / 180.0) * (sin((M_PI * temp_f31) / 180.0)); + sp14.x = sind(temp_f30) * (sind(temp_f31)); + sp14.y = cosd(temp_f31); + sp14.z = cosd(temp_f30) * (sind(temp_f31)); Hu3DCameraPosSet(lbl_1_data_358[var_r31], sp2C.x, sp2C.y, sp2C.z, sp14.x, sp14.y, sp14.z, sp20.x, sp20.y, sp20.z); } diff --git a/src/REL/modeseldll/filesel.c b/src/REL/modeseldll/filesel.c index 93fc856d..53a1d962 100644 --- a/src/REL/modeseldll/filesel.c +++ b/src/REL/modeseldll/filesel.c @@ -10,7 +10,7 @@ #include "game/window.h" #include "game/wipe.h" -#include "math.h" +#include "ext_math.h" #include "REL/modeseldll.h" @@ -203,7 +203,7 @@ repeat: fn_1_5C38(); for (temp_r30 = 0; temp_r30 <= 20; temp_r30++) { temp_f31 = temp_r30 / 20.0; - temp_f31 = sin(M_PI * (90.0f * temp_f31) / 180.0); + temp_f31 = sind(90.0f * temp_f31); Hu3DModelScaleSet(lbl_1_bss_19A[0], temp_f31, temp_f31, temp_f31); Hu3DModelScaleSet(lbl_1_bss_19A[1], temp_f31, temp_f31, temp_f31); Hu3DModelScaleSet(lbl_1_bss_19A[2], temp_f31, temp_f31, temp_f31); @@ -377,8 +377,8 @@ loop_exit: for (temp_r30 = 0; temp_r30 <= 40; temp_r30++) { if (temp_r30 <= 30) { temp_f31 = temp_r30 / 30.0f; - sp28.x = 288.0 + (GET_ZEROSIGN(temp_r26) * (100.0 + (250.0 * sin(M_PI * (90.0f * temp_f31) / 180.0)))); - sp28.y = 250.0 - (100.0 * sin(M_PI * (180.0f * temp_f31) / 180.0)); + sp28.x = 288.0 + (GET_ZEROSIGN(temp_r26) * (100.0 + (250.0 * sind(90.0f * temp_f31)))); + sp28.y = 250.0 - (100.0 * sind(180.0f * temp_f31)); sp28.z = (temp_r30 * 100) + 600; Hu3D2Dto3D(&sp28, 1, &sp1C); Hu3DModelPosSetV(lbl_1_bss_19A[temp_r26 + 2], &sp1C); @@ -390,11 +390,11 @@ loop_exit: temp_f31 = (temp_r30 - 20) / 20.0f; if (temp_r29) { sp28.x = 288.0f + ((1.0 - temp_f31) * (100 * GET_ZEROSIGN(temp_r31))); - sp28.y = 250.0 - (100.0 * sin(M_PI * (180.0f * temp_f31) / 180.0)); + sp28.y = 250.0 - (100.0 * sind(180.0f * temp_f31)); sp28.z = 600.0f; Hu3D2Dto3D(&sp28, 1, &sp1C); Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C); - temp_f31 = (0.5 * sin(M_PI * (90.0f * temp_f31) / 180.0)) + 1.0; + temp_f31 = (0.5 * sind(90.0f * temp_f31)) + 1.0; Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31); } else { @@ -407,14 +407,14 @@ loop_exit: sp28.z = 600; Hu3D2Dto3D(&sp28, 1, &sp10); VECSubtract(&sp10, &sp1C, &sp28); - sp28.x *= sin(M_PI * (90.0f * temp_f31) / 180.0); - sp28.y *= 1.0 - cos(M_PI * (90.0f * temp_f31) / 180.0); + sp28.x *= sind(90.0f * temp_f31); + sp28.y *= 1.0 - cosd(90.0f * temp_f31); sp28.z = 0; VECAdd(&sp28, &sp1C, &sp1C); Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C); - lbl_1_bss_108[temp_r31] *= cos(M_PI * (90.0f * temp_f31) / 180.0); + lbl_1_bss_108[temp_r31] *= cosd(90.0f * temp_f31); lbl_1_bss_100[temp_r31] = 1.0 - temp_f31; - temp_f31 = 1.0 + (0.3 * cos(M_PI * (90.0f * temp_f31) / 180.0)); + temp_f31 = 1.0 + (0.3 * cosd(90.0f * temp_f31)); Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31); } } @@ -525,7 +525,7 @@ cleanup: for (temp_r30 = 0; temp_r30 <= 20; temp_r30++) { temp_f31 = temp_r30 / 20.0f; if (temp_r29) { - temp_f31 = 1.5 * cos(M_PI * (90.0f * temp_f31) / 180.0); + temp_f31 = 1.5 * cosd(90.0f * temp_f31); Hu3DModelScaleSet(lbl_1_bss_19A[0], temp_f31, temp_f31, temp_f31); Hu3DModelScaleSet(lbl_1_bss_19A[1], temp_f31, temp_f31, temp_f31); Hu3DModelScaleSet(lbl_1_bss_19A[2], 0.7 * temp_f31, 0.7 * temp_f31, 0.7 * temp_f31); @@ -544,14 +544,14 @@ cleanup: sp28.z = 600; Hu3D2Dto3D(&sp28, 1, &sp10); VECSubtract(&sp10, &sp1C, &sp28); - sp28.x *= sin(M_PI * (90.0f * temp_f31) / 180.0); - sp28.y *= 1.0 - cos(M_PI * (90.0f * temp_f31) / 180.0); + sp28.x *= sind(90.0f * temp_f31); + sp28.y *= 1.0 - cosd(90.0f * temp_f31); sp28.z = 0.0f; VECAdd(&sp28, &sp1C, &sp1C); Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31], &sp1C); - lbl_1_bss_108[temp_r31] *= cos(M_PI * (90.0f * temp_f31) / 180.0); + lbl_1_bss_108[temp_r31] *= cosd(90.0f * temp_f31); lbl_1_bss_100[temp_r31] = 1.0 - temp_f31; - temp_f31 = 1.0 + (0.5 * cos(M_PI * (90.0f * temp_f31) / 180.0)); + temp_f31 = 1.0 + (0.5 * cosd(90.0f * temp_f31)); Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31], temp_f31, temp_f31, temp_f31); } HuPrcVSleep(); @@ -636,10 +636,10 @@ void fn_1_5850(void) float scale; float time = i / 10.0; if (param) { - scale = 1.0 + (0.3 * sin(M_PI * (90.0f * time) / 180.0)); + scale = 1.0 + (0.3 * sind(90.0f * time)); } else { - scale = 1.0 + (0.3 * cos(M_PI * (90.0f * time) / 180.0)); + scale = 1.0 + (0.3 * cosd(90.0f * time)); } Hu3DModelScaleSet(lbl_1_bss_19A[index + 2], scale, scale, scale); Hu3DModelScaleSet(lbl_1_bss_19A[index + 4], scale, scale, scale); @@ -800,7 +800,7 @@ s32 fn_1_61B4(void) lbl_1_bss_120[0] = lbl_1_bss_120[1] = lbl_1_bss_120[2] = 1; UnMountCnt = 0; for (temp_r29 = 0; temp_r29 <= 20; temp_r29++) { - temp_f31 = sin(M_PI * (90.0f * (temp_r29 / 20.0f)) / 180.0); + temp_f31 = sind(90.0f * (temp_r29 / 20.0f)); for (temp_r28 = 0; temp_r28 < 3; temp_r28++) { Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28 + 8], temp_f31, temp_f31, temp_f31); Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28 + 11], temp_f31, temp_f31, temp_f31); @@ -1076,7 +1076,7 @@ s32 fn_1_61B4(void) } HuWinDispOff(lbl_1_bss_146); for (temp_r29 = 0; temp_r29 <= 20; temp_r29++) { - temp_f31 = cos(M_PI * (90.0 * (temp_r29 / 20.0)) / 180.0); + temp_f31 = cosd(90.0 * (temp_r29 / 20.0)); Hu3DModelScaleSet(lbl_1_bss_19A[curSlotNo], temp_f31, temp_f31, temp_f31); for (temp_r28 = 0; temp_r28 < 3; temp_r28++) { Hu3DModelScaleSet(lbl_1_bss_19A[temp_r28 + 8], temp_f31, temp_f31, temp_f31); @@ -1115,10 +1115,10 @@ void fn_1_72DC(void) Vec pos_2d; Vec pos_3d; if (param) { - scale = sin(M_PI * (90.0f * (i / 10.0f)) / 180.0); + scale = sind(90.0f * (i / 10.0f)); } else { - scale = cos(M_PI * (90.0f * (i / 10.0f)) / 180.0); + scale = cosd(90.0f * (i / 10.0f)); } pos_2d.x = 158.0f + (index * 130); pos_2d.y = 230; @@ -1476,7 +1476,7 @@ s32 fn_1_8540(s16 boxno) return 0; } for (time = 0; time <= 10; time++) { - scale = cos(M_PI * (90.0 * (time / 10.0)) / 180.0); + scale = cosd(90.0 * (time / 10.0)); Hu3DModelScaleSet(lbl_1_bss_19A[boxno + 8], scale, scale, scale); HuPrcVSleep(); } @@ -1490,7 +1490,7 @@ s32 fn_1_8540(s16 boxno) Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno + 8], 0.6f); Hu3DModelTPLvlSet(lbl_1_bss_19A[boxno + 11], 0.3f); for (time = 0; time <= 20; time++) { - scale = sin(M_PI * (90.0 * (time / 20.0)) / 180.0); + scale = sind(90.0 * (time / 20.0)); Hu3DModelScaleSet(lbl_1_bss_19A[boxno + 8], scale, scale, scale); HuPrcVSleep(); } @@ -1661,7 +1661,7 @@ s32 fn_1_8C30(s16 boxno) else { fn_1_9E14(); for (temp_r30 = 0; temp_r30 <= 10; temp_r30++) { - temp_f31 = cos(M_PI * (90.0 * (temp_r30 / 10.0)) / 180.0); + temp_f31 = cosd(90.0 * (temp_r30 / 10.0)); Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31 + 8], temp_f31, temp_f31, temp_f31); HuPrcVSleep(); } @@ -1709,7 +1709,7 @@ s32 fn_1_8C30(s16 boxno) temp_f31 = temp_r30 / 30.0; sp60.x = sp3C.x * temp_f31; sp60.y = sp3C.y * temp_f31; - sp60.z = (sp3C.z * temp_f31) + (-300 * sin(M_PI * (180.0f * temp_f31) / 180.0)); + sp60.z = (sp3C.z * temp_f31) + (-300 * sind(180.0f * temp_f31)); VECAdd(&sp60, &sp54, &sp60); Hu3DModelPosSetV(lbl_1_bss_19A[temp_r31 + 11], &sp60); HuPrcVSleep(); @@ -1730,7 +1730,7 @@ s32 fn_1_8C30(s16 boxno) Hu3DModelAttrSet(lbl_1_bss_19A[23], HU3D_ATTR_DISPOFF); Hu3DModelAttrReset(lbl_1_bss_19A[boxno + 8], HU3D_ATTR_DISPOFF); for (temp_r30 = 0; temp_r30 <= 10; temp_r30++) { - temp_f31 = sin(M_PI * (90.0 * (temp_r30 / 10.0)) / 180.0); + temp_f31 = sind(90.0 * (temp_r30 / 10.0)); Hu3DModelScaleSet(lbl_1_bss_19A[temp_r31 + 8], temp_f31, temp_f31, temp_f31); HuPrcVSleep(); } diff --git a/src/REL/modeseldll/main.c b/src/REL/modeseldll/main.c index f1d9be9b..7505272f 100644 --- a/src/REL/modeseldll/main.c +++ b/src/REL/modeseldll/main.c @@ -8,7 +8,7 @@ #include "game/process.h" #include "game/window.h" #include "game/wipe.h" -#include "math.h" +#include "ext_math.h" typedef struct camera_view_params { Vec rot; @@ -233,15 +233,15 @@ void fn_1_B8C(omObjData *object) y = lbl_1_bss_24[i].y; z = lbl_1_bss_24[i].z; - pos.x = (((sin((M_PI * y) / 180.0) * cos((M_PI * x) / 180.0)) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].x); - pos.y = (-sin((M_PI * x) / 180.0) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].y; - pos.z = ((cos((M_PI * y) / 180.0) * cos((M_PI * x) / 180.0)) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].z; + pos.x = (((sind(y) * cosd(x)) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].x); + pos.y = (-sind(x) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].y; + pos.z = ((cosd(y) * cosd(x)) * lbl_1_bss_4[i]) + lbl_1_bss_C[i].z; target.x = lbl_1_bss_C[i].x; target.y = lbl_1_bss_C[i].y; target.z = lbl_1_bss_C[i].z; - up.x = sin((M_PI * y) / 180.0) * sin((M_PI * x) / 180.0); - up.y = cos((M_PI * x) / 180.0); - up.z = cos((M_PI * y) / 180.0) * sin((M_PI * x) / 180.0); + up.x = sind(y) * sind(x); + up.y = cosd(x); + up.z = cosd(y) * sind(x); Hu3DCameraPosSet(lbl_1_data_6E[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); } } @@ -272,27 +272,27 @@ void fn_1_F40(omObjData *object) if (lbl_1_bss_4[0] < 100.0f) { lbl_1_bss_4[0] = 100.0f; } - pos.x = lbl_1_bss_C[0].x + (lbl_1_bss_4[0] * (sin((M_PI * lbl_1_bss_24[0].y) / 180.0) * cos((M_PI * lbl_1_bss_24[0].x) / 180.0))); - pos.y = (lbl_1_bss_C[0].y + (lbl_1_bss_4[0] * -sin((M_PI * lbl_1_bss_24[0].x) / 180.0))); - pos.z = (lbl_1_bss_C[0].z + (lbl_1_bss_4[0] * (cos((M_PI * lbl_1_bss_24[0].y) / 180.0) * cos((M_PI * lbl_1_bss_24[0].x) / 180.0)))); + pos.x = lbl_1_bss_C[0].x + (lbl_1_bss_4[0] * (sind(lbl_1_bss_24[0].y) * cosd(lbl_1_bss_24[0].x))); + pos.y = (lbl_1_bss_C[0].y + (lbl_1_bss_4[0] * -sind(lbl_1_bss_24[0].x))); + pos.z = (lbl_1_bss_C[0].z + (lbl_1_bss_4[0] * (cosd(lbl_1_bss_24[0].y) * cosd(lbl_1_bss_24[0].x)))); offset.x = lbl_1_bss_C[0].x - pos.x; offset.y = lbl_1_bss_C[0].y - pos.y; offset.z = lbl_1_bss_C[0].z - pos.z; - dir.x = (sin((M_PI * lbl_1_bss_24[0].y) / 180.0) * sin((M_PI * lbl_1_bss_24[0].x) / 180.0)); - dir.y = cos((M_PI * lbl_1_bss_24[0].x) / 180.0); - dir.z = (cos((M_PI * lbl_1_bss_24[0].y) / 180.0) * sin((M_PI * lbl_1_bss_24[0].x) / 180.0)); + dir.x = (sind(lbl_1_bss_24[0].y) * sind(lbl_1_bss_24[0].x)); + dir.y = cosd(lbl_1_bss_24[0].x); + dir.z = (cosd(lbl_1_bss_24[0].y) * sind(lbl_1_bss_24[0].x)); z_rot = lbl_1_bss_24[0].z; - y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cos((M_PI * z_rot) / 180.0)) - + dir.y * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.x * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.y * sin((M_PI * z_rot) / 180.0)); + y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) + + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); - y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cos((M_PI * z_rot) / 180.0)) - + dir.x * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.y * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.x * sin((M_PI * z_rot) / 180.0)); + y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) + + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) + + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cos((M_PI * z_rot) / 180.0)) - + (dir.x * (offset.x * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) - offset.y * sin((M_PI * z_rot) / 180.0)) - + dir.y * (offset.y * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) + offset.x * sin((M_PI * z_rot) / 180.0))); + y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) + + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) + + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); VECCrossProduct(&dir, &offset, &offset); VECNormalize(&offset, &offset); diff --git a/src/REL/option/record.c b/src/REL/option/record.c index c255cdbe..763bc418 100755 --- a/src/REL/option/record.c +++ b/src/REL/option/record.c @@ -10,7 +10,7 @@ #include "game/window.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" #include "version.h" #ifndef __MWERKS__ @@ -208,8 +208,8 @@ static void ExecRecord(omObjData *object) Hu3DModelAttrReset(work->hand->model[0], HU3D_ATTR_DISPOFF); work->cameraDoneF = TRUE; } - pos.x = 505.0 * -sin(305 * M_PI / 180.0); - pos.z = 505.0 * cos(305 * M_PI / 180.0); + pos.x = 505.0 * -sind(305); + pos.z = 505.0 * cosd(305); pos.y = 144.0f - 14.0f * work->recordType; omSetTra(work->hand, pos.x, pos.y, pos.z); object->unk10 = 3; diff --git a/src/REL/resultDll/battle.c b/src/REL/resultDll/battle.c index c9441385..8818f975 100644 --- a/src/REL/resultDll/battle.c +++ b/src/REL/resultDll/battle.c @@ -1,5 +1,5 @@ #include "dolphin.h" -#include "math.h" +#include "ext_math.h" #include "game/armem.h" #include "game/audio.h" @@ -503,7 +503,7 @@ void fn_1_7F98(void) } delay = (lbl_1_bss_174) ? 3 : 10; for (time = 0; time <= delay; time++) { - float scale = sin(M_PI * ((90.0 / delay) * time) / 180.0); + float scale = sind((90.0 / delay) * time); for (i = 0; i < 4; i++) { HuSprGrpScaleSet(lbl_1_bss_19E0[i], scale, scale); } diff --git a/src/REL/resultDll/main.c b/src/REL/resultDll/main.c index 66c26486..bda3b255 100644 --- a/src/REL/resultDll/main.c +++ b/src/REL/resultDll/main.c @@ -14,7 +14,7 @@ #include "game/window.h" #include "game/wipe.h" -#include "math.h" +#include "ext_math.h" #include "REL/resultdll.h" @@ -498,7 +498,7 @@ void fn_1_1F4C(void) } temp_r29 = (lbl_1_bss_174) ? 3 : 10; for (temp_r30 = 0; temp_r30 <= temp_r29; temp_r30++) { - temp_f31 = sin(M_PI * ((90.0 / temp_r29) * temp_r30) / 180.0); + temp_f31 = sind((90.0 / temp_r29) * temp_r30); for (i = 0; i < 4; i++) { HuSprGrpScaleSet(lbl_1_bss_3A[i], temp_f31, temp_f31); } @@ -512,8 +512,8 @@ void fn_1_1F4C(void) if (GWPlayerCoinWinGet(lbl_1_bss_4A[i]) >= 10) { HuSprAttrReset(lbl_1_bss_9C, i, 4); } - HuSprScaleSet(lbl_1_bss_9C, i, sin(M_PI * ((120.0f / 14.0f) * temp_r28) / 180.0) * (0.8 * (1.0 / sin((M_PI * 2) / 3))), - 0.8 * (sin(M_PI * ((120.0f / 14.0f) * temp_r28) / 180.0) * (1.0 / sin((M_PI * 2) / 3)))); + HuSprScaleSet(lbl_1_bss_9C, i, sind((120.0f / 14.0f) * temp_r28) * (0.8 * (1.0 / sin((M_PI * 2) / 3))), + 0.8 * (sind((120.0f / 14.0f) * temp_r28) * (1.0 / sin((M_PI * 2) / 3)))); } temp_r28 += (lbl_1_bss_174) ? 2 : 1; HuPrcVSleep(); @@ -603,7 +603,7 @@ void fn_1_1F4C(void) } temp_r29 = (lbl_1_bss_174) ? 3 : 10; for (temp_r30 = 0; temp_r30 <= temp_r29; temp_r30++) { - temp_f31 = cos(M_PI * ((90.0 / temp_r29) * temp_r30) / 180.0); + temp_f31 = cosd((90.0 / temp_r29) * temp_r30); for (i = 0; i < 4; i++) { HuSprGrpScaleSet(lbl_1_bss_3A[i], temp_f31, temp_f31); } @@ -686,12 +686,12 @@ void fn_1_2ADC(void) temp_r27 = temp_r28 - (i * 20); if (temp_r27 <= 20) { if (temp_r27 <= 10) { - HuSprScaleSet(lbl_1_bss_52, i, 1.0f, cos(M_PI * (9.0f * temp_r27) / 180.0)); + HuSprScaleSet(lbl_1_bss_52, i, 1.0f, cosd(9.0f * temp_r27)); } else { HuSprAttrSet(lbl_1_bss_52, i, 4); HuSprAttrReset(lbl_1_data_380, i, 4); - HuSprScaleSet(lbl_1_data_380, i, 1.0f, sin(M_PI * (9.0f * (temp_r27 - 10)) / 180.0)); + HuSprScaleSet(lbl_1_data_380, i, 1.0f, sind(9.0f * (temp_r27 - 10))); } temp_f31 = temp_r27 / 20.0f; temp_r29 = GWStarsGet(sp28[i]) + (temp_f31 * (GWStarsGet(lbl_1_bss_4A[i]) - GWStarsGet(sp28[i]))); @@ -741,7 +741,7 @@ void fn_1_2ADC(void) } if (temp_r28 <= 10) { for (i = 0; i < 4; i++) { - HuSprScaleSet(lbl_1_bss_9C, i, cos(M_PI * (9.0f * temp_r28) / 180.0), cos(M_PI * (9.0f * temp_r28) / 180.0)); + HuSprScaleSet(lbl_1_bss_9C, i, cosd(9.0f * temp_r28), cosd(9.0f * temp_r28)); } } else { @@ -1264,27 +1264,27 @@ void fn_1_5880(omObjData *object) CZoom += HuPadTrigL[0] / 2; CZoom -= HuPadTrigR[0] / 2; - pos.x = Center.x + (CZoom * (sin((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0))); - pos.y = (Center.y + (CZoom * -sin((M_PI * CRot.x) / 180.0))); - pos.z = (Center.z + (CZoom * (cos((M_PI * CRot.y) / 180.0) * cos((M_PI * CRot.x) / 180.0)))); + pos.x = Center.x + CZoom * (sind(CRot.y) * cosd(CRot.x)); + pos.y = Center.y + CZoom * -sind(CRot.x); + pos.z = Center.z + CZoom * (cosd(CRot.y) * cosd(CRot.x)); offset.x = Center.x - pos.x; offset.y = Center.y - pos.y; offset.z = Center.z - pos.z; - dir.x = (sin((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); - dir.y = cos((M_PI * CRot.x) / 180.0); - dir.z = (cos((M_PI * CRot.y) / 180.0) * sin((M_PI * CRot.x) / 180.0)); + dir.x = (sind(CRot.y) * sind(CRot.x)); + dir.y = cosd(CRot.x); + dir.z = (cosd(CRot.y) * sind(CRot.x)); z_rot = CRot.z; - y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cos((M_PI * z_rot) / 180.0)) - + dir.y * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.x * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.y * sin((M_PI * z_rot) / 180.0)); + y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) + + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); - y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cos((M_PI * z_rot) / 180.0)) - + dir.x * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.y * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.x * sin((M_PI * z_rot) / 180.0)); + y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) + + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) + + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cos((M_PI * z_rot) / 180.0)) - + (dir.x * (offset.x * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) - offset.y * sin((M_PI * z_rot) / 180.0)) - + dir.y * (offset.y * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) + offset.x * sin((M_PI * z_rot) / 180.0))); + y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) + + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) + + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); VECCrossProduct(&dir, &offset, &offset); VECNormalize(&offset, &offset); diff --git a/src/REL/w03Dll/condor.c b/src/REL/w03Dll/condor.c index 15ea43a8..4c8327dd 100644 --- a/src/REL/w03Dll/condor.c +++ b/src/REL/w03Dll/condor.c @@ -12,6 +12,8 @@ #include "game/pad.h" #include "game/wipe.h" +#include "ext_math.h" + // structs typedef struct w03UnkStruct5 { @@ -172,8 +174,8 @@ void fn_1_3304(void) var_r31 = BoardSpaceLinkFlagSearch(0, var_r31, 0x02000000); BoardSpacePosGet(0, var_r31, &sp8); temp_f31 = 0.0f; - sp8.x = sp8.x + (-300.0 * sin((M_PI * temp_f31) / 180.0)); - sp8.z = sp8.z + (-300.0 * cos((M_PI * temp_f31) / 180.0)); + sp8.x += -300.0 * sind(temp_f31); + sp8.z += -300.0 * cosd(temp_f31); sp8.y = 45.0f + sp8.y; BoardModelPosSetV(lbl_1_data_310, &sp8); BoardModelMotionStart(lbl_1_data_310, 2, 0x40000001); @@ -211,7 +213,7 @@ s32 fn_1_3478(s32 arg0) temp = BoardSpaceLinkFlagSearch(0, temp_r28, 0x02000000); BoardSpacePosGet(0, temp, &sp38); VECSubtract(&sp38, &sp2C, &sp20); - float_temp = atan2(sp20.x, sp20.z) / M_PI * 180.0f; + float_temp = atan2d(sp20.x, sp20.z); BoardPlayerMotBlendSet(arg0, (float_temp), 0xF); while (BoardPlayerMotBlendCheck(arg0) == 0) { @@ -473,8 +475,8 @@ void fn_1_3F5C(s32 arg0) var_r31 = BoardSpaceLinkFlagSearch(0, var_r31, 0x02000000); BoardSpacePosGet(0, var_r31, &sp8); temp_f31 = 0.0f; - sp8.x = (sp8.x + (-300.0 * sin((M_PI * temp_f31) / 180.0f))); - sp8.z = (sp8.z + (-300.0 * cos((M_PI * temp_f31) / 180.0f))); + sp8.x += -300.0 * sind(temp_f31); + sp8.z += -300.0 * cosd(temp_f31); sp8.y = 45.0f + sp8.y; BoardModelPosSetV(lbl_1_data_310, &sp8); BoardModelMotionStart(lbl_1_data_310, 2, 0x40000001); @@ -589,7 +591,7 @@ void fn_1_4424(w03StructUnk2 *arg0) VECSubtract(&sp60, &sp6C, &sp3C); } - sp10_2 = 180.0f * (atan2(-sp3C.x, -sp3C.z) / M_PI); + sp10_2 = atan2d(-sp3C.x, -sp3C.z); BoardModelMotionStart(lbl_1_data_314, 0, 0U); BoardModelMotionSpeedSet(lbl_1_data_314, 8.0f); HuPrcSleep(1); @@ -604,7 +606,7 @@ void fn_1_4424(w03StructUnk2 *arg0) 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); + temp_r28->unk_64 += temp_r28->unk_68; if (temp_r28->unk_64 > 400.0f) { break; @@ -770,9 +772,9 @@ void fn_1_4D60(w03StructUnk2 *arg0) temp_r31->unk_00 = 1; temp_f31 = 360.0f * BoardRandFloat(); temp_f30 = 5.0f * BoardRandFloat(); - temp_r31->unk_14.x = temp_f30 * sin((M_PI * temp_f31) / 180.0); + temp_r31->unk_14.x = temp_f30 * sind(temp_f31); temp_r31->unk_14.y = 50.0f + (20.0f * BoardRandFloat()); - temp_r31->unk_14.z = temp_f30 * cos((M_PI * temp_f31) / 180.0); + temp_r31->unk_14.z = temp_f30 * cosd(temp_f31); temp_r31->unk_08.x = sp8.x; temp_r31->unk_08.y = sp8.y; temp_r31->unk_08.z = sp8.z; @@ -1084,11 +1086,11 @@ void fn_1_5C5C(omObjData *arg0, w03UnkStruct5 *arg1) PSMTXTrans(sp80, sp44.x, sp44.y, sp44.z); PSMTXConcat(sp80, sp50, sp80); Hu3DMtxTransGet(sp80, &sp44); - MTXRotDeg(spB0, 'y', (180.0 * (atan2(-sp2C.x, -sp2C.z) / M_PI))); + MTXRotDeg(spB0, 'y', atan2d(-sp2C.x, -sp2C.z)); PSMTXConcat(spB0, spE0, sp110); BoardModelMtxSet(lbl_1_data_310, &sp110); BoardModelPosSetV(lbl_1_data_310, &sp44); - BoardCameraRotSet(-20.0f, (180.0 * (atan2(sp2C.x, sp2C.z) / M_PI))); + BoardCameraRotSet(-20.0f, atan2d(sp2C.x, sp2C.z)); } void fn_1_602C(omObjData *arg0, w03UnkStruct5 *arg1) diff --git a/src/REL/w03Dll/mg_coin.c b/src/REL/w03Dll/mg_coin.c index 0d0e6f64..b577ffc1 100644 --- a/src/REL/w03Dll/mg_coin.c +++ b/src/REL/w03Dll/mg_coin.c @@ -10,6 +10,8 @@ #include "game/object.h" #include "game/pad.h" +#include "ext_math.h" + // structs typedef struct someBits3 { // make sure this is defined correctly /* 0x00 */ struct { @@ -175,7 +177,7 @@ s32 fn_1_7D18(s32 arg0) BoardSpacePosGet(0, temp_r28, &sp38); VECSubtract(&sp38, &sp2C, &sp20); VECNormalize(&sp20, &sp20); - BoardPlayerRotYSet(arg0, 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)); + BoardPlayerRotYSet(arg0, atan2d(-sp20.x, -sp20.z)); HuPrcSleep(0x1E); model = BoardModelIDGet(lbl_1_bss_C[7]); Hu3DModelObjPosGet(model, "phei", &sp38); @@ -187,8 +189,8 @@ s32 fn_1_7D18(s32 arg0) 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)); + sp38.x += var_f31 * sind(180.0f + BoardModelRotYGet(lbl_1_data_456)); + sp38.z += var_f31 * cosd(180.0f + BoardModelRotYGet(lbl_1_data_456)); BoardPlayerPosGet(arg0, &sp2C); BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14); @@ -197,7 +199,7 @@ s32 fn_1_7D18(s32 arg0) BoardModelPosGet(lbl_1_bss_C[10], &sp2C); BoardPlayerPosGet(arg0, &sp38); VECSubtract(&sp38, &sp2C, &sp20); - arctan = atan2(sp20.x, sp20.z) / M_PI * 180.0; + arctan = atan2d(sp20.x, sp20.z); BoardModelRotYSet(lbl_1_bss_C[10], arctan); HuPrcVSleep(); } @@ -589,7 +591,7 @@ void fn_1_9044(omObjData *arg0, someBits3 *arg1) } } - sp8.z = arg0->trans.x * sin((M_PI * arg0->trans.y) / 180.0); + sp8.z = arg0->trans.x * sind(arg0->trans.y); BoardModelRotSetV(lbl_1_data_456, &sp8); } @@ -626,7 +628,7 @@ void fn_1_9230(s32 arg0) BoardModelPosGet(lbl_1_bss_C[10], &sp20); BoardPlayerPosGet(arg0, &sp14); VECSubtract(&sp14, &sp20, &sp8); - rotY = atan2(sp8.x, sp8.z) / M_PI * 180.0; + rotY = atan2d(sp8.x, sp8.z); BoardModelRotYSet(lbl_1_bss_C[10], rotY); HuPrcVSleep(); } @@ -773,8 +775,8 @@ void fn_1_97F8(s32 arg0) } temp_r31 = &temp_r30->unk_0C[i]; temp_r31->unk0 = 1; - temp_r31->unk8.x = sp8.x + (50.0f * sin((M_PI * var_f31) / 180.0)); - temp_r31->unk8.z = sp8.z + (50.0f * cos((M_PI * var_f31) / 180.0)); + temp_r31->unk8.x = sp8.x + (50.0f * sind(var_f31)); + temp_r31->unk8.z = sp8.z + (50.0f * cosd(var_f31)); temp_r31->unk8.y = 600.0f + sp8.y + (500.0f * BoardRandFloat()); temp_r31->unk1 = 0; temp_r31->unk4 = BoardRandFloat() * 360.0f; diff --git a/src/REL/w03Dll/mg_item.c b/src/REL/w03Dll/mg_item.c index 24d08ad3..18332aa2 100644 --- a/src/REL/w03Dll/mg_item.c +++ b/src/REL/w03Dll/mg_item.c @@ -255,7 +255,7 @@ s32 fn_1_9CF4(s32 arg0) BoardSpacePosGet(0, temp_r29, &sp38); VECSubtract(&sp38, &sp2C, &sp20); VECNormalize(&sp20, &sp20); - BoardPlayerRotYSet(arg0, (f32)(180.0 * (atan2(-sp20.x, -sp20.z) / M_PI))); + BoardPlayerRotYSet(arg0, atan2d(-sp20.x, -sp20.z)); BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 0x14); while (GWPlayer[arg0].moving != 0) { @@ -288,11 +288,11 @@ void fn_1_9FE4(void) f32 var_f31; BoardModelPosGet(lbl_1_bss_C[11], &sp24); - sp18.x = (-3179.800048828125 + (200.0 * sin(0.0))); - sp18.z = (-907.7000122070313 + 200.0 * cos(0.0)); + sp18.x = -3179.8f + 200.0 * sin(0.0); + sp18.z = -907.7f + 200.0 * cos(0.0); sp18.y = sp24.y; VECSubtract(&sp18, &sp24, &spC); - temp_f30 = (atan2(spC.z, spC.x) / M_PI * 180.0); + temp_f30 = atan2d(spC.z, spC.x); sp8 = BoardModelRotYGet(lbl_1_bss_C[11]); BoardModelMotionShiftSet(lbl_1_bss_C[11], lbl_1_data_4DA, 0.0f, 10.0, HU3D_MOTATTR_LOOP); @@ -861,7 +861,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(M_PI * temp_f0 / 180.0); + sp14.x = sp14.y = sp14.z = cosd(temp_f0); BoardModelScaleSetV(temp_r29, &sp14); arg1->unk1 += 4; return; diff --git a/src/REL/w03Dll/river.c b/src/REL/w03Dll/river.c index 98423294..7736b6f2 100644 --- a/src/REL/w03Dll/river.c +++ b/src/REL/w03Dll/river.c @@ -6,6 +6,8 @@ #include "game/board/player.h" #include "game/hsfdraw.h" +#include "ext_math.h" + //BSS char lbl_1_bss_130[8]; omObjData* lbl_1_bss_12C; @@ -167,7 +169,7 @@ s32 fn_1_6898(s32 arg0) { Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_388), "hei01", &sp20); BoardPlayerPosGet(arg0, &sp14); VECSubtract(&sp20, &sp14, &sp8); - temp_f31 = 180.0 * (atan2(sp8.x, sp8.z) / M_PI); + temp_f31 = atan2d(sp8.x, sp8.z); BoardCameraTargetModelSet(lbl_1_data_388); BoardPlayerMotBlendSet(arg0, temp_f31, 15); @@ -456,10 +458,10 @@ void fn_1_767C(omObjData* arg0) { 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); + temp_r31->unk_04 -= 360.0f; } BoardModelPosGet(lbl_1_data_388, &sp8); - sp8.y = (f32) ((f64) sp8.y + (0.25 * (2.0 * sin((M_PI * (f64) temp_r31->unk_04) / 180.0)))); + sp8.y += 0.25 * (2.0 * sind(temp_r31->unk_04)); BoardModelPosSetV(lbl_1_data_388, &sp8); } } diff --git a/src/REL/w03Dll/statue.c b/src/REL/w03Dll/statue.c index 914ee853..de10197b 100644 --- a/src/REL/w03Dll/statue.c +++ b/src/REL/w03Dll/statue.c @@ -13,6 +13,8 @@ #include "game/board/main.h" #include "game/objsub.h" +#include "ext_math.h" + void fn_1_1358(void); void fn_1_152C(void); s32 fn_1_15E8(void); @@ -26,7 +28,6 @@ void fn_1_2AC0(void); void fn_1_2818(void); void fn_1_2A40(void); void fn_1_2B44(void); -double atan2(double y, double x); //data s16 lbl_1_data_280 = -1; @@ -155,7 +156,7 @@ s32 fn_1_1650(s32 arg0) { BoardSpacePosGet(0, temp2, &sp38); BoardPlayerPosGet(arg0, &sp2C); VECSubtract(&sp38, &sp2C, &sp20); - temp = (atan2(-sp20.x, -sp20.z) / M_PI) * 180.0f; + temp = atan2d(-sp20.x, -sp20.z); BoardPlayerRotYSet(arg0, temp); sp14.x = 0.0f; sp14.y = 100.0f; @@ -539,7 +540,7 @@ void fn_1_26E0(s32 arg0) { BoardPlayerPosGet(arg0, &sp14); VECSubtract(&sp20, &sp14, &sp8); VECNormalize(&sp8, &sp8); - temp = (180.0f * (atan2(-sp8.x, -sp8.z) / M_PI)); + temp = atan2d(-sp8.x, -sp8.z); BoardPlayerRotYSet(arg0, temp); BoardCameraViewSet(1); BoardCameraTargetPlayerSet(arg0); diff --git a/src/REL/w05Dll/dolphin.c b/src/REL/w05Dll/dolphin.c index 6870e9c0..46cc5a9e 100644 --- a/src/REL/w05Dll/dolphin.c +++ b/src/REL/w05Dll/dolphin.c @@ -11,6 +11,8 @@ #include "game/board/player.h" #include "game/board/window.h" +#include "ext_math.h" + // bss s16 lbl_1_bss_72[2]; s16 lbl_1_bss_6C[3]; @@ -179,7 +181,7 @@ void fn_1_4034(s32 arg0) var_r27 = arg0 + 1; } Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_118), lbl_1_data_22C[var_r27], &sp34); - temp_f25 = (180.0 * (atan2((sp34.x - sp40.x), (sp34.z - sp40.z)) / M_PI)); + temp_f25 = atan2d(sp34.x - sp40.x, sp34.z - sp40.z); BoardModelMotionShiftSet(lbl_1_bss_64, 2, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); while (fn_1_1208(lbl_1_bss_64, temp_f25, 10.0f) == 0) { @@ -236,7 +238,7 @@ loop_37: } BoardModelPosGet(lbl_1_bss_64, &sp40); BoardPlayerPosGet(lbl_1_bss_68, &sp28); - var_f27 = 180.0 * (atan2((sp40.x - sp28.x), (sp40.z - sp28.z)) / M_PI); + var_f27 = atan2d(sp40.x - sp28.x, sp40.z - sp28.z); BoardPlayerMotBlendSet(lbl_1_bss_68, var_f27, 0xF); while (BoardPlayerMotBlendCheck(lbl_1_bss_68) == 0) { @@ -352,7 +354,7 @@ void fn_1_4EB4(s32 arg1, s32 arg2, Vec *arg3) BoardPlayerIdleSet(lbl_1_bss_68); HuPrcSleep(8); BoardSpacePosGet(0, arg2, &sp3C); - var_f28 = 180.0 * (atan2((sp3C.x - sp30.x), (sp3C.z - sp30.z)) / M_PI); + var_f28 = atan2d(sp3C.x - sp30.x, sp3C.z - sp30.z); BoardPlayerMotBlendSet(lbl_1_bss_68, var_f28, 0xF); while (BoardPlayerMotBlendCheck(lbl_1_bss_68) == 0) { @@ -486,7 +488,7 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec *arg2) VECAdd(&sp58, &sp40, &sp58); sp64 = sp58; if (var_r29 == 0) { - sp58.y += 250.0 * sin((M_PI * var_f28) / 180.0); + sp58.y += 250.0 * sind(var_f28); var_f28 -= 2.5f; if (var_f28 < -540.0f) { var_f28 = -540.0f; @@ -521,7 +523,7 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec *arg2) var_r29--; } BoardModelPosSetV(lbl_1_bss_64, &sp58); - sp28.x = sp34.x = (45.0 * -sin((M_PI * var_f28) / 180.0)); + sp28.x = sp34.x = 45.0 * -sind(var_f28); BoardModelRotSetV(lbl_1_bss_64, &sp34); BoardPlayerRotSetV(lbl_1_bss_68, &sp28); sp4C = sp58; @@ -540,7 +542,7 @@ void fn_1_5794(s32 arg0, s32 arg1, Vec *arg2) BoardPlayerIdleSet(lbl_1_bss_68); HuPrcSleep(8); BoardSpacePosGet(0, arg1, &sp58); - var_f27 = (180.0 * (atan2((sp58.x - sp4C.x), (sp58.z - sp4C.z)) / M_PI)); + var_f27 = atan2d(sp58.x - sp4C.x, sp58.z - sp4C.z); BoardPlayerMotBlendSet(lbl_1_bss_68, var_f27, 0xF); while (BoardPlayerMotBlendCheck(lbl_1_bss_68) == 0) { @@ -599,8 +601,8 @@ void fn_1_62AC(s32 arg0, Vec *arg1) sp1C = sp28; sp10 = sp28; VECScale(&sp1C, &sp1C, sp8[arg0]); - sp1C.y += (250.0 * sin((M_PI * var_f31) / 180.0)); - var_f30 = (250.0 * -cos((M_PI * var_f31) / 180.0)); + sp1C.y += 250.0 * sind(var_f31); + var_f30 = 250.0 * -cosd(var_f31); VECScale(&sp10, &sp10, var_f30); VECAdd(&sp10, &sp1C, &sp1C); VECAdd(&sp1C, &sp34, &sp1C); diff --git a/src/REL/w05Dll/hotel.c b/src/REL/w05Dll/hotel.c index d05260b2..bebb63c7 100644 --- a/src/REL/w05Dll/hotel.c +++ b/src/REL/w05Dll/hotel.c @@ -10,6 +10,8 @@ #include "game/board/player.h" #include "game/board/window.h" +#include "ext_math.h" + // data s32 lbl_1_data_150[5] = { DATA_MAKE_NUM(DATADIR_W05, 0x21), DATA_MAKE_NUM(DATADIR_W05, 0x22), DATA_MAKE_NUM(DATADIR_W05, 0x23), @@ -75,7 +77,7 @@ void fn_1_155C(void) { temp_f30 = BoardPlayerRotYGet(lbl_1_bss_28); BoardPlayerPosGet(lbl_1_bss_28, &sp58); Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_data_118), "hotel1", &sp64); - temp_f31 = 180.0 * (atan2((sp64.x - sp58.x), (sp64.z - sp58.z)) / M_PI); + temp_f31 = atan2d(sp64.x - sp58.x, sp64.z - sp58.z); BoardPlayerMotBlendSet(lbl_1_bss_28, temp_f31, 0xF); BoardCameraViewSet(2); @@ -103,7 +105,7 @@ void fn_1_155C(void) { HuPrcVSleep(); } BoardModelPosSetV(lbl_1_bss_14[4], &sp28); - temp_f31 = (180.0 * (atan2((sp58.x - sp28.x), (sp58.z - sp28.z)) / M_PI)); + temp_f31 = atan2d(sp58.x - sp28.x, sp58.z - sp28.z); while (fn_1_1208(lbl_1_bss_14[4], temp_f31, 10.0f) == 0) { HuPrcVSleep(); @@ -266,13 +268,13 @@ void fn_1_1E44(void) { HuPrcVSleep(); } BoardModelPosSetV(lbl_1_bss_14[4], &sp2C); - temp_f31 = (180.0 * (atan2((sp50.x - sp2C.x), (sp50.z - sp2C.z)) / M_PI)); + temp_f31 = atan2d(sp50.x - sp2C.x, sp50.z - sp2C.z); while (fn_1_1208(lbl_1_bss_14[4], temp_f31, 10.0f) == 0) { HuPrcVSleep(); } BoardModelMotionShiftSet(lbl_1_bss_14[4], 0, 0.0f, 5.0f, HU3D_MOTATTR_LOOP); - temp_f31 = 180.0 * (atan2((sp2C.x - sp50.x), (sp2C.z - sp50.z)) / M_PI); + temp_f31 = atan2d(sp2C.x - sp50.x, sp2C.z - sp50.z); BoardPlayerMotBlendSet(lbl_1_bss_28, temp_f31, 0xF); while (BoardPlayerMotBlendCheck(lbl_1_bss_28) == 0) { diff --git a/src/REL/w05Dll/mg_coin.c b/src/REL/w05Dll/mg_coin.c index 36c2269a..c2f8d938 100644 --- a/src/REL/w05Dll/mg_coin.c +++ b/src/REL/w05Dll/mg_coin.c @@ -14,6 +14,9 @@ #include "game/board/window.h" +#include "ext_math.h" + + s16 lbl_1_bss_102[3]; s16 lbl_1_bss_100; s16 lbl_1_bss_FE; @@ -226,7 +229,7 @@ void fn_1_9F24(omObjData *arg0) temp_r31->unk_08++; } sp18 = temp_r31->unk_0C[temp_r31->unk_08]; - var_f31 = (180.0 * (atan2((sp18.x - sp24.x), (sp18.z - sp24.z)) / M_PI)); + var_f31 = atan2d(sp18.x - sp24.x, sp18.z - sp24.z); BoardPlayerRotYSet(lbl_1_bss_C0, var_f31); spC = temp_r31->unk_0C[temp_r31->unk_08]; spC.y += 50.0f; @@ -387,7 +390,7 @@ void fn_1_AB24(void) spC = temp_r30->data; BoardPlayerPosGet(lbl_1_bss_C0, &sp28); BoardModelPosGet(lbl_1_bss_14[5], &sp1C); - var_f30 = (180.0 * (atan2((sp1C.z - sp28.z), (sp1C.x - sp28.x)) / M_PI)); + var_f30 = atan2d(sp1C.z - sp28.z, sp1C.x - sp28.x); BoardPlayerMotBlendSet(lbl_1_bss_C0, var_f30, 0xF); while (BoardPlayerMotBlendCheck(lbl_1_bss_C0) == 0) { diff --git a/src/REL/w05Dll/mg_item.c b/src/REL/w05Dll/mg_item.c index 0a596430..0e942bef 100644 --- a/src/REL/w05Dll/mg_item.c +++ b/src/REL/w05Dll/mg_item.c @@ -12,6 +12,8 @@ #include "game/board/model.h" #include "game/board/window.h" +#include "ext_math.h" + // data s32 lbl_1_data_310[2] = { 0x79, 0x7A }; char *lbl_1_data_330[3] = { "suika1", "suika2", "suika3" }; @@ -459,7 +461,7 @@ void fn_1_80D8(omObjData *arg0) } if ((spC != 0) || (sp10 != 0)) { var_r29 = -1; - var_f31 = (180.0 * (atan2(spC, sp10) / M_PI)); + var_f31 = atan2d(spC, sp10); if (var_f31 < 0.0f) { var_f31 += 360.0f; } @@ -695,7 +697,7 @@ void fn_1_896C(void) var_r29 = (1 << var_r31); if ((temp_r30 & var_r29) != 0) { BoardModelPosGet(lbl_1_bss_A4[var_r31], &sp18); - sp18.y = (sp18.y + (0.25 * sin((M_PI * var_f30) / 180.0))); + sp18.y += 0.25 * sind(var_f30); BoardModelPosSetV(lbl_1_bss_A4[var_r31], &sp18); } } @@ -810,8 +812,8 @@ void fn_1_9268(ModelData *model, ParticleData *particle, f32 (*matrix)[4]) if (var_r28 != particle->unk_30) { temp_f30 = 360.0f * (0.003921569f * (s32)(frand() & 0xFF)); temp_f29 = temp_f31 * (20.0f + (60.0f * (0.003921569f * (s32)(frand() & 0xFF)))); - 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.x = sp8.x + temp_f29 * sind(temp_f30); + var_r31->unk34.z = sp8.z + temp_f29 * cosd(temp_f30); var_r31->unk34.y = sp8.y + (temp_f31 * (-30.0f + (40.0f * (0.003921569f * (s32)(frand() & 0xFF))))); var_r31->unk08.x = 0.5f + (3.0f * (0.003921569f * (s32)(frand() & 0xFF))); var_r31->unk08.y = 0.3f + (2.0f * (0.003921569f * (s32)(frand() & 0xFF))); diff --git a/src/game/board/basic_space.c b/src/game/board/basic_space.c index 70df8cf9..d7624381 100644 --- a/src/game/board/basic_space.c +++ b/src/game/board/basic_space.c @@ -302,7 +302,7 @@ static void CoinChgAppear(omObjData *object, coinChg *coin_chg) { f32 angle; OSu16tof32(&coin_chg->angle, &angle); - angle = sin(M_PI * angle / 180.0); + angle = sind(angle); scale = angle; object->rot.x = 405.0f * angle; BoardModelScaleSet(coin_chg->coin_model, scale, scale, scale); @@ -342,8 +342,8 @@ static void CoinChgSeparate(omObjData *object, coinChg *coin_chg) { } else { spacing = 105.0f; } - y_offset = (200.0 * sin((M_PI * (2.0f * x_scale)) / 180.0)); - x_scale = sin((M_PI * x_scale) / 180.0); + y_offset = 200.0 * sind(2.0f * x_scale); + x_scale = sind(x_scale); object->rot.x = 45.0f + (315.0f * x_scale); if (coin_chg->tens != 0) { coin_x = object->trans.x + (x_scale * -spacing); @@ -379,7 +379,7 @@ static void CoinChgShow(omObjData* object, coinChg* coin_chg) { f32 y_pos; OSu16tof32(&coin_chg->angle, &angle); - angle = (f32) sin((M_PI * angle) / 180.0); + angle = sind(angle); if (coin_chg->minus != 0) { y_pos = (-50.0f * angle) + object->trans.y; } else { diff --git a/src/game/board/block.c b/src/game/board/block.c index 8a70b5c9..b830314f 100644 --- a/src/game/board/block.c +++ b/src/game/board/block.c @@ -6,7 +6,7 @@ #include "game/flag.h" #include "game/objsub.h" #include "game/process.h" -#include "math.h" +#include "ext_math.h" #define BLOCK_SPAWN 0 #define BLOCK_HIT 2 @@ -312,7 +312,7 @@ static void SpawnBlock(BlockWork *arg0, omObjData *arg1) } arg1->rot.y = rotY; - arg1->scale.x = arg1->scale.y = arg1->scale.z = sin(M_PI * scaleAngle / 180.0); + arg1->scale.x = arg1->scale.y = arg1->scale.z = sind(scaleAngle); } static void HitBlock(BlockWork *arg0, omObjData *arg1) @@ -325,7 +325,7 @@ static void HitBlock(BlockWork *arg0, omObjData *arg1) } OSs16tof32(&arg0->hit_y_velocity, &var_f30); - arg1->trans.y += 0.2f * sin((M_PI * var_f30) / 180.0); + arg1->trans.y += 0.2f * sind(var_f30); } static void OpenBlock(BlockWork *arg0, omObjData *arg1) diff --git a/src/game/board/bowser.c b/src/game/board/bowser.c index fe5af9e3..bcbe7133 100644 --- a/src/game/board/bowser.c +++ b/src/game/board/bowser.c @@ -12,30 +12,29 @@ #include "game/wipe.h" #include "game/gamework.h" +#include "ext_math.h" #include "string.h" -#define ABS(x) ((x) < 0 ? -(x) : (x)) - typedef struct bowser_event_data { - s16 sprite[3]; - s16 delay[3]; - s16 angle[3]; - s16 group; - s16 model; + s16 sprite[3]; + s16 delay[3]; + s16 angle[3]; + s16 group; + s16 model; } BowserEventData; static BowserEventData bowserEvent; static Vec playerPosTemp[4]; static s32 scareFxTbl[] = { - 0x128, - 0x168, - 0x1A8, - 0x1E8, - 0x228, - 0x268, - 0x2A8, - 0x2E8 + 0x128, + 0x168, + 0x1A8, + 0x1E8, + 0x228, + 0x268, + 0x2A8, + 0x2E8 }; @@ -102,701 +101,701 @@ static s32 ExecMiniBowserEvent(void); s32 BoardBowserExec(s32 player, s32 space) { - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - HuAudFXPlay(841); - BoardCameraViewSet(2); - BoardPlayerMotBlendSet(player, 0, 15); - while(!BoardPlayerMotBlendCheck(player)) { - HuPrcVSleep(); - } - BoardCameraMotionWait(); - BoardTutorialHookExec(12, 0); - GWPlayer[player].color = 2; - } else { - eventPlayer = player; - eventSpace = space; - playerMot[0] = playerMot[1] = playerMot[2] = playerMot[3] = -1; - bowserProc = HuPrcChildCreate(ExecBowser, 8196, 14336, 0, boardMainProc); - HuPrcDestructorSet2(bowserProc, DestroyBowser); - while(bowserProc) { - HuPrcVSleep(); - } - GWPlayer[player].color = 2; - } + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + HuAudFXPlay(841); + BoardCameraViewSet(2); + BoardPlayerMotBlendSet(player, 0, 15); + while(!BoardPlayerMotBlendCheck(player)) { + HuPrcVSleep(); + } + BoardCameraMotionWait(); + BoardTutorialHookExec(12, 0); + GWPlayer[player].color = 2; + } else { + eventPlayer = player; + eventSpace = space; + playerMot[0] = playerMot[1] = playerMot[2] = playerMot[3] = -1; + bowserProc = HuPrcChildCreate(ExecBowser, 8196, 14336, 0, boardMainProc); + HuPrcDestructorSet2(bowserProc, DestroyBowser); + while(bowserProc) { + HuPrcVSleep(); + } + GWPlayer[player].color = 2; + } } typedef struct bowser_work { - u8 kill : 1; - u8 state : 3; - u8 mot_active : 1; - u8 fall_done : 1; - u8 jump_done : 1; - u8 jump_state; - u8 idle_timer; + u8 kill : 1; + u8 state : 3; + u8 mot_active : 1; + u8 fall_done : 1; + u8 jump_done : 1; + u8 jump_state; + u8 idle_timer; } BowserWork; typedef struct mini_bowser_work { - u8 kill : 1; - s16 group; - s16 sprite; - s16 angle; + u8 kill : 1; + s16 group; + s16 sprite; + s16 angle; } MiniBowserWork; typedef struct bowser_event_work { - u8 kill : 1; - s8 state; - s16 timer; + u8 kill : 1; + s8 state; + s16 timer; } BowserEventWork; static void ExecBowser(void) { - #define BOWSER_EVENT 0 - #define MINI_BOWSER_EVENT 1 + #define BOWSER_EVENT 0 + #define MINI_BOWSER_EVENT 1 - s32 i; - s32 status; - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - HuAudFXPlay(841); - omVibrate(eventPlayer, 12, 4, 2); - if(GWBoardGet() == BOARD_ID_MAIN6 && boardBowserHook) { - boardBowserHook(1); - } - BoardAudSeqPause(0, 1, 1000); - //20% of bowser, 80% chance of koopa kid - if(BoardRandMod(100) < 20) { - eventType = BOWSER_EVENT; - } else { - eventType = MINI_BOWSER_EVENT; - } - } else { - BoardMusStart(1, 6, 127, 0); - } - status = BoardDataDirReadAsync(DATADIR_BKOOPA); - BoardDataAsyncWait(status); - CreatePlayerMot(); - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - ExecBowserMain(); - } else { - ExecMGReturn(); - } - for(i=0; i<4; i++) { - if(eventSpace == GWPlayer[i].space_curr) { - BoardPlayerMotionSpeedSet(i, 1.0f); - } - } - BoardAudSeqPause(0, 0, 1000); - if(bowserObj) { - OM_GET_WORK_PTR(bowserObj, BowserWork)->kill = 1; - } - if(miniBowserObj) { - OM_GET_WORK_PTR(miniBowserObj, MiniBowserWork)->kill = 1; - } - if(bowserEventObj) { - OM_GET_WORK_PTR(bowserEventObj, BowserEventWork)->kill = 1; - } - GWPlayer[eventPlayer].show_next = 1; - BoardCameraMotionStartEx(-1, NULL, NULL, 2100.0f, -1.0f, 21); - HuPrcSleep(30); - for(i=0; i<4; i++) { - BoardPlayerIdleSet(i); - } - BoardCameraMotionWait(); - if(GWBoardGet() == BOARD_ID_MAIN6 && boardBowserHook) { - boardBowserHook(0); - } else { - HuPrcSleep(30); - } - HuPrcEnd(); + s32 i; + s32 status; + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + HuAudFXPlay(841); + omVibrate(eventPlayer, 12, 4, 2); + if(GWBoardGet() == BOARD_ID_MAIN6 && boardBowserHook) { + boardBowserHook(1); + } + BoardAudSeqPause(0, 1, 1000); + //20% of bowser, 80% chance of koopa kid + if(BoardRandMod(100) < 20) { + eventType = BOWSER_EVENT; + } else { + eventType = MINI_BOWSER_EVENT; + } + } else { + BoardMusStart(1, 6, 127, 0); + } + status = BoardDataDirReadAsync(DATADIR_BKOOPA); + BoardDataAsyncWait(status); + CreatePlayerMot(); + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + ExecBowserMain(); + } else { + ExecMGReturn(); + } + for(i=0; i<4; i++) { + if(eventSpace == GWPlayer[i].space_curr) { + BoardPlayerMotionSpeedSet(i, 1.0f); + } + } + BoardAudSeqPause(0, 0, 1000); + if(bowserObj) { + OM_GET_WORK_PTR(bowserObj, BowserWork)->kill = 1; + } + if(miniBowserObj) { + OM_GET_WORK_PTR(miniBowserObj, MiniBowserWork)->kill = 1; + } + if(bowserEventObj) { + OM_GET_WORK_PTR(bowserEventObj, BowserEventWork)->kill = 1; + } + GWPlayer[eventPlayer].show_next = 1; + BoardCameraMotionStartEx(-1, NULL, NULL, 2100.0f, -1.0f, 21); + HuPrcSleep(30); + for(i=0; i<4; i++) { + BoardPlayerIdleSet(i); + } + BoardCameraMotionWait(); + if(GWBoardGet() == BOARD_ID_MAIN6 && boardBowserHook) { + boardBowserHook(0); + } else { + HuPrcSleep(30); + } + HuPrcEnd(); } static void ExecBowserMain(void) { - s32 result = 0; - BoardPlayerMotBlendSet(eventPlayer, 0, 15); - while(!BoardPlayerMotBlendCheck(eventPlayer)) { - HuPrcVSleep(); - } - BoardMusStart(1, 5, 127, 0); - BoardCameraViewSet(3); - BoardFilterFadeInit(30, 160); - BoardCameraMotionWait(); - BoardPlayerMotionShiftSet(eventPlayer, jumpMot, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); - BoardPlayerMotionSpeedSet(eventPlayer, 2.0f); - HuPrcSleep(120); - ConfigBowserEvent(); - HuAudFXPlay(scareFxTbl[GWPlayer[eventPlayer].character]); - BoardPlayerMotionShiftSet(eventPlayer, scareMot, 0.0f, 10.0f, HU3D_MOTATTR_NONE); - CreateMiniBowser(); - while(!CheckMiniBowser()) { - HuPrcVSleep(); - } - BoardPlayerIdleSet(eventPlayer); - if(eventType) { - result = ExecMiniBowserEvent(); - if(!result) { - return; - } - BoardAudSeqFadeOut(1, 1000); - BoardFilterFadeInit(30, 160); - HuPrcSleep(30); - } - ExecBowserSpecial(); - BoardModelMotionShiftSet(bowserMdl, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE); - HuPrcSleep(8); - HuAudFXPlay(58); - BoardWinCreate(2, MAKE_MESSID(3, 11), 5); - BoardWinWait(); - BoardWinKill(); - BoardAudSeqFadeOut(1, 1000); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - SetBowserState(6); - while(!CheckBowserIdle()) { - HuPrcVSleep(); - } - BoardFilterFadeOut(30); + s32 result = 0; + BoardPlayerMotBlendSet(eventPlayer, 0, 15); + while(!BoardPlayerMotBlendCheck(eventPlayer)) { + HuPrcVSleep(); + } + BoardMusStart(1, 5, 127, 0); + BoardCameraViewSet(3); + BoardFilterFadeInit(30, 160); + BoardCameraMotionWait(); + BoardPlayerMotionShiftSet(eventPlayer, jumpMot, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + BoardPlayerMotionSpeedSet(eventPlayer, 2.0f); + HuPrcSleep(120); + ConfigBowserEvent(); + HuAudFXPlay(scareFxTbl[GWPlayer[eventPlayer].character]); + BoardPlayerMotionShiftSet(eventPlayer, scareMot, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + CreateMiniBowser(); + while(!CheckMiniBowser()) { + HuPrcVSleep(); + } + BoardPlayerIdleSet(eventPlayer); + if(eventType) { + result = ExecMiniBowserEvent(); + if(!result) { + return; + } + BoardAudSeqFadeOut(1, 1000); + BoardFilterFadeInit(30, 160); + HuPrcSleep(30); + } + ExecBowserSpecial(); + BoardModelMotionShiftSet(bowserMdl, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(8); + HuAudFXPlay(58); + BoardWinCreate(2, MAKE_MESSID(3, 11), 5); + BoardWinWait(); + BoardWinKill(); + BoardAudSeqFadeOut(1, 1000); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + SetBowserState(6); + while(!CheckBowserIdle()) { + HuPrcVSleep(); + } + BoardFilterFadeOut(30); } static void ExecMGReturn(void) { - s32 i; - s32 player; - BoardStatusItemSet(1); - for(i=0; i<4; i++) { - BoardPlayerPosSetV(i, &playerPosTemp[i]); - } - BoardCameraMoveSet(0); - BoardCameraTargetPlayerSet(eventPlayer); - BoardCameraViewSet(2); - BoardCameraMotionWait(); - CreateBowserObj(); - SquishPlayers(); - BoardPlayerMotBlendSet(eventPlayer, 0, 15); - BoardCameraViewSet(3); - BoardFilterFadeInit(30, 160); - BoardStatusItemSet(0); - BoardCameraMotionWait(); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); - while(WipeStatGet()) { - HuPrcVSleep(); - } - _ClearFlag(0x1001C); - BoardCameraMoveSet(1); - player = GWSystem.player_curr; - GWSystem.player_curr = -1; - DoMGReturnEffect(); - GWSystem.player_curr = player; - BoardStatusShowSetAll(1); - BoardModelMotionShiftSet(bowserMdl, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE); - HuPrcSleep(8); - HuAudFXPlay(58); - BoardWinCreate(2, MAKE_MESSID(3, 11), 5); - BoardWinWait(); - BoardWinKill(); - while(!BoardStatusStopCheck(0)) { - HuPrcVSleep(); - } - BoardAudSeqFadeOut(1, 1000); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - SetBowserState(6); - while(!CheckBowserIdle()) { - HuPrcVSleep(); - } - BoardFilterFadeOut(30); - BoardMusStartBoard(); + s32 i; + s32 player; + BoardStatusItemSet(1); + for(i=0; i<4; i++) { + BoardPlayerPosSetV(i, &playerPosTemp[i]); + } + BoardCameraMoveSet(0); + BoardCameraTargetPlayerSet(eventPlayer); + BoardCameraViewSet(2); + BoardCameraMotionWait(); + CreateBowserObj(); + SquishPlayers(); + BoardPlayerMotBlendSet(eventPlayer, 0, 15); + BoardCameraViewSet(3); + BoardFilterFadeInit(30, 160); + BoardStatusItemSet(0); + BoardCameraMotionWait(); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); + while(WipeStatGet()) { + HuPrcVSleep(); + } + _ClearFlag(0x1001C); + BoardCameraMoveSet(1); + player = GWSystem.player_curr; + GWSystem.player_curr = -1; + DoMGReturnEffect(); + GWSystem.player_curr = player; + BoardStatusShowSetAll(1); + BoardModelMotionShiftSet(bowserMdl, 3, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(8); + HuAudFXPlay(58); + BoardWinCreate(2, MAKE_MESSID(3, 11), 5); + BoardWinWait(); + BoardWinKill(); + while(!BoardStatusStopCheck(0)) { + HuPrcVSleep(); + } + BoardAudSeqFadeOut(1, 1000); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + SetBowserState(6); + while(!CheckBowserIdle()) { + HuPrcVSleep(); + } + BoardFilterFadeOut(30); + BoardMusStartBoard(); } static void DestroyBowser(void) { - KillPlayerMot(); - HuDataDirClose(DATADIR_BKOOPA); - bowserProc = NULL; + KillPlayerMot(); + HuDataDirClose(DATADIR_BKOOPA); + bowserProc = NULL; } static void SquishPlayers(void) { - Vec pos; - Vec pos_space; - s32 i; - BoardPlayerPosGet(eventPlayer, &pos); - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - HuAudFXPlay(798); - } - pos.y += 6.0f; - BoardPlayerPosSetV(eventPlayer, &pos); - GWPlayer[eventPlayer].show_next = 0; - BoardPlayerMotionSpeedSet(eventPlayer, 0.0f); - for(i=0; i<4; i++) { - if(eventSpace == GWPlayer[i].space_curr) { - BoardPlayerPosGet(i, &pos); - BoardSpacePosGet(0, eventSpace, &pos_space); - pos.y = pos_space.y+2.5f; - BoardPlayerPosSetV(i, &pos); - BoardPlayerMotionStart(i, playerMot[i], 0); - BoardPlayerMotionTimeSet(i, 50.0f); - BoardPlayerMotionSpeedSet(i, 0.0f); - } - } + Vec pos; + Vec pos_space; + s32 i; + BoardPlayerPosGet(eventPlayer, &pos); + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + HuAudFXPlay(798); + } + pos.y += 6.0f; + BoardPlayerPosSetV(eventPlayer, &pos); + GWPlayer[eventPlayer].show_next = 0; + BoardPlayerMotionSpeedSet(eventPlayer, 0.0f); + for(i=0; i<4; i++) { + if(eventSpace == GWPlayer[i].space_curr) { + BoardPlayerPosGet(i, &pos); + BoardSpacePosGet(0, eventSpace, &pos_space); + pos.y = pos_space.y+2.5f; + BoardPlayerPosSetV(i, &pos); + BoardPlayerMotionStart(i, playerMot[i], 0); + BoardPlayerMotionTimeSet(i, 50.0f); + BoardPlayerMotionSpeedSet(i, 0.0f); + } + } } static void ExecBowserSpecial(void) { - s32 i; - CreateBowserObj(); - while(!CheckBowserIdle()) { - HuPrcVSleep(); - } - SetBowserState(2); - HuAudFXPlay(58); - BoardMusStart(1, 6, 127, 0); - HuPrcSleep(120); - BoardWinCreate(2, MAKE_MESSID(3, 7), 5); - BoardWinWait(); - BoardWinKill(); - HuAudFXPlay(857); - BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); - for(i=0; i<4; i++) { - omVibrate(i, 12, 12, 0); - } - HuPrcSleep(11); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - CreateBowserEvent(); - HuAudFXPlay(831); - HuAudFXPlay(60); - while(!CheckBowserEvent()) { - HuPrcVSleep(); - } - HuPrcSleep(60); - BoardModelAttrSet(bowserMdl, 0x40000004); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_NONE); - StopBowserEvent(); - switch(GWSystem.bowser_event) { - case 0: - ExecBowserGame(); - break; - - case 2: - ExecBowserRevo(); - break; - - case 1: - ExecBowserShuffle(); - break; - - case 3: - ExecBowserSuit(); - break; - } + s32 i; + CreateBowserObj(); + while(!CheckBowserIdle()) { + HuPrcVSleep(); + } + SetBowserState(2); + HuAudFXPlay(58); + BoardMusStart(1, 6, 127, 0); + HuPrcSleep(120); + BoardWinCreate(2, MAKE_MESSID(3, 7), 5); + BoardWinWait(); + BoardWinKill(); + HuAudFXPlay(857); + BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + for(i=0; i<4; i++) { + omVibrate(i, 12, 12, 0); + } + HuPrcSleep(11); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + CreateBowserEvent(); + HuAudFXPlay(831); + HuAudFXPlay(60); + while(!CheckBowserEvent()) { + HuPrcVSleep(); + } + HuPrcSleep(60); + BoardModelAttrSet(bowserMdl, 0x40000004); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + StopBowserEvent(); + switch(GWSystem.bowser_event) { + case 0: + ExecBowserGame(); + break; + + case 2: + ExecBowserRevo(); + break; + + case 1: + ExecBowserShuffle(); + break; + + case 3: + ExecBowserSuit(); + break; + } } static void ExecBowserGame(void) { - s32 i; - s16 mgTbl[3] = { - 435, - 436, - 437 - }; - s32 messLoss[3] = { - MAKE_MESSID(3, 9), - MAKE_MESSID(3, 12), - MAKE_MESSID(3, 14) - }; - s32 mg; - s32 mess; - s32 fx_stat; - for(i=0; i<4; i++) { - BoardPlayerPosGet(i, &playerPosTemp[i]); - } - BoardWinCreate(2, MAKE_MESSID(3, 8), 5); - BoardWinWait(); - mess = messLoss[GWSystem.bowser_loss]; - BoardWinCreate(2, mess, 5); - BoardWinWait(); - BoardWinKill(); - BoardModelMotionShiftSet(bowserMdl, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE); - HuPrcSleep(8); - while(BoardModelMotionTimeGet(bowserMdl) < 80.0f) { - HuPrcVSleep(); - } - fx_stat = HuAudFXPlay(846); - InitBowserFire(); - while(BoardModelMotionTimeGet(bowserMdl) < 200.0f) { - HuPrcVSleep(); - } - BoardAudSeqFadeOut(1, 1000); - BoardMusVolPanSet(0, 0, 1); - BoardAudSeqPause(0, 0, 1); - _SetFlag(0x1000E); - HuAudFXFadeOut(fx_stat, 500); - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - while(WipeStatGet()) { - HuPrcVSleep(); - } - HuAudFXAllStop(); - _SetFlag(0x1001C); - KillBowserFire(); - HuPrcSleep(60); - BoardModelMotionStart(bowserMdl, 1, 0); - mg = (s16)mgTbl[BoardRandMod(3)]; - GWMGAvailSet(mg); - GWSystem.mg_next = mg-401; - _SetFlag(0x10003); - BoardNextOvlSet(OVL_INST); - BoardFilterFadeOut(30); - HuPrcEnd(); + s32 i; + s16 mgTbl[3] = { + 435, + 436, + 437 + }; + s32 messLoss[3] = { + MAKE_MESSID(3, 9), + MAKE_MESSID(3, 12), + MAKE_MESSID(3, 14) + }; + s32 mg; + s32 mess; + s32 fx_stat; + for(i=0; i<4; i++) { + BoardPlayerPosGet(i, &playerPosTemp[i]); + } + BoardWinCreate(2, MAKE_MESSID(3, 8), 5); + BoardWinWait(); + mess = messLoss[GWSystem.bowser_loss]; + BoardWinCreate(2, mess, 5); + BoardWinWait(); + BoardWinKill(); + BoardModelMotionShiftSet(bowserMdl, 5, 0.0f, 8.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(8); + while(BoardModelMotionTimeGet(bowserMdl) < 80.0f) { + HuPrcVSleep(); + } + fx_stat = HuAudFXPlay(846); + InitBowserFire(); + while(BoardModelMotionTimeGet(bowserMdl) < 200.0f) { + HuPrcVSleep(); + } + BoardAudSeqFadeOut(1, 1000); + BoardMusVolPanSet(0, 0, 1); + BoardAudSeqPause(0, 0, 1); + _SetFlag(0x1000E); + HuAudFXFadeOut(fx_stat, 500); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuAudFXAllStop(); + _SetFlag(0x1001C); + KillBowserFire(); + HuPrcSleep(60); + BoardModelMotionStart(bowserMdl, 1, 0); + mg = (s16)mgTbl[BoardRandMod(3)]; + GWMGAvailSet(mg); + GWSystem.mg_next = mg-401; + _SetFlag(0x10003); + BoardNextOvlSet(OVL_INST); + BoardFilterFadeOut(30); + HuPrcEnd(); } static void DoMGReturnEffect(void) { - s32 messTbl[3] = { - MAKE_MESSID(3, 10), - MAKE_MESSID(3, 13), - MAKE_MESSID(3, 15) - }; - s32 player; - s32 coin; - s32 item; - s32 delay; - s32 item_cnt; - s32 mess; - s32 mess_char; - for(player=0; player<4; player++) { - if(GWPlayerCoinWinGet(player) == 1) { - break; - } - } - mess = messTbl[GWSystem.bowser_loss]; - mess_char = BoardPlayerGetCharMess(player); - BoardStatusShowSetForce(player); - BoardStatusShowSet(player, 1); - BoardWinCreate(2, mess, 5); - BoardWinInsertMesSet(mess_char, 1); - BoardWinWait(); - while(!BoardStatusStopCheck(player)) { - HuPrcVSleep(); - } - omVibrate(player, 12, 4, 2); - if(GWSystem.bowser_loss == 2) { - item_cnt = BoardPlayerItemCount(player); - for(item=0; item> 1); - } - if(coin >= 50 ) { - delay = 1; - } else if(coin >= 20) { - delay = 3; - } else { - delay = 6; - } - while(coin != 0 && BoardPlayerCoinsGet(player) != 0) { - BoardPlayerCoinsAdd(player, -1); - HuAudFXPlay(14); - HuPrcSleep(delay); - coin--; - } - HuAudFXPlay(15); - } - BoardStatusShowSet(player, 0); - while(!BoardStatusStopCheck(player)) { - HuPrcVSleep(); - } + s32 messTbl[3] = { + MAKE_MESSID(3, 10), + MAKE_MESSID(3, 13), + MAKE_MESSID(3, 15) + }; + s32 player; + s32 coin; + s32 item; + s32 delay; + s32 item_cnt; + s32 mess; + s32 mess_char; + for(player=0; player<4; player++) { + if(GWPlayerCoinWinGet(player) == 1) { + break; + } + } + mess = messTbl[GWSystem.bowser_loss]; + mess_char = BoardPlayerGetCharMess(player); + BoardStatusShowSetForce(player); + BoardStatusShowSet(player, 1); + BoardWinCreate(2, mess, 5); + BoardWinInsertMesSet(mess_char, 1); + BoardWinWait(); + while(!BoardStatusStopCheck(player)) { + HuPrcVSleep(); + } + omVibrate(player, 12, 4, 2); + if(GWSystem.bowser_loss == 2) { + item_cnt = BoardPlayerItemCount(player); + for(item=0; item> 1); + } + if(coin >= 50 ) { + delay = 1; + } else if(coin >= 20) { + delay = 3; + } else { + delay = 6; + } + while(coin != 0 && BoardPlayerCoinsGet(player) != 0) { + BoardPlayerCoinsAdd(player, -1); + HuAudFXPlay(14); + HuPrcSleep(delay); + coin--; + } + HuAudFXPlay(15); + } + BoardStatusShowSet(player, 0); + while(!BoardStatusStopCheck(player)) { + HuPrcVSleep(); + } } static void ExecBowserShuffle(void) { - Vec pos; - Vec target; - s16 space_old[4]; - s16 space[4]; - s32 i; - s32 player; - s32 player_new; - s32 reset_cam; - BoardWinCreate(2, MAKE_MESSID(3, 16), 5); - BoardWinWait(); - BoardWinKill(); - for(i=0; i<4; i++) { - space_old[i] = GWPlayer[i].space_curr; - } - player=0; - while(player<4) { - player_new = BoardRandMod(4); - if(player_new == player || space_old[player_new] == -1) { - continue; - } - space[player] = space_old[player_new]; - space_old[player_new] = -1; - player++; - } - HuAudFXPlay(857); - BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - SetBowserState(3); - HuPrcSleep(60); - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - while(WipeStatGet()) { - HuPrcVSleep(); - } - reset_cam = 0; - for(i=0; i<4; i++) { - GWPlayer[i].space_curr = space[i]; - if(eventSpace == space[i]) { - BoardPlayerMotionStart(i, playerMot[i], 0); - BoardPlayerMotionTimeSet(i, 50.0f); - BoardPlayerMotionSpeedSet(i, 0.0f); - reset_cam = 1; - } else { - BoardPlayerIdleSet(i); - } - BoardPlayerMoveAwayStart(i, GWPlayer[i].space_curr, 1); - } - if(reset_cam) { - BoardCameraTargetGet(&target); - BoardCameraPosGet(&pos); - BoardCameraTargetModelSet(-1); - BoardCameraTargetSet(target.x, target.y, target.z); - BoardCameraPosSet(pos.x, pos.y, pos.z); - } - SetBowserState(4); - HuPrcSleep(60); - BoardModelMotionStart(bowserMdl, 1, 0x40000001); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); - while(WipeStatGet()) { - HuPrcVSleep(); - } + Vec pos; + Vec target; + s16 space_old[4]; + s16 space[4]; + s32 i; + s32 player; + s32 player_new; + s32 reset_cam; + BoardWinCreate(2, MAKE_MESSID(3, 16), 5); + BoardWinWait(); + BoardWinKill(); + for(i=0; i<4; i++) { + space_old[i] = GWPlayer[i].space_curr; + } + player=0; + while(player<4) { + player_new = BoardRandMod(4); + if(player_new == player || space_old[player_new] == -1) { + continue; + } + space[player] = space_old[player_new]; + space_old[player_new] = -1; + player++; + } + HuAudFXPlay(857); + BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + SetBowserState(3); + HuPrcSleep(60); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while(WipeStatGet()) { + HuPrcVSleep(); + } + reset_cam = 0; + for(i=0; i<4; i++) { + GWPlayer[i].space_curr = space[i]; + if(eventSpace == space[i]) { + BoardPlayerMotionStart(i, playerMot[i], 0); + BoardPlayerMotionTimeSet(i, 50.0f); + BoardPlayerMotionSpeedSet(i, 0.0f); + reset_cam = 1; + } else { + BoardPlayerIdleSet(i); + } + BoardPlayerMoveAwayStart(i, GWPlayer[i].space_curr, 1); + } + if(reset_cam) { + BoardCameraTargetGet(&target); + BoardCameraPosGet(&pos); + BoardCameraTargetModelSet(-1); + BoardCameraTargetSet(target.x, target.y, target.z); + BoardCameraPosSet(pos.x, pos.y, pos.z); + } + SetBowserState(4); + HuPrcSleep(60); + BoardModelMotionStart(bowserMdl, 1, 0x40000001); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while(WipeStatGet()) { + HuPrcVSleep(); + } } static void ExecBowserRevo(void) { - s32 i; - s32 coin; - BoardWinCreate(2, MAKE_MESSID(3, 17), 5); - BoardWinWait(); - BoardWinKill(); - for(coin=i=0; i<4; i++) { - coin += BoardPlayerCoinsGet(i); - } - coin /= 4; - HuAudFXPlay(857); - BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } - SetBowserState(3); - HuPrcSleep(60); - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - while(WipeStatGet()) { - HuPrcVSleep(); - } - SetBowserState(4); - for(i=0; i<4; i++) { - BoardPlayerCoinsSet(i, coin); - } - HuPrcSleep(60); - BoardModelMotionStart(bowserMdl, 1, 0x40000001); - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); - while(WipeStatGet()) { - HuPrcVSleep(); - } + s32 i; + s32 coin; + BoardWinCreate(2, MAKE_MESSID(3, 17), 5); + BoardWinWait(); + BoardWinKill(); + for(coin=i=0; i<4; i++) { + coin += BoardPlayerCoinsGet(i); + } + coin /= 4; + HuAudFXPlay(857); + BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } + SetBowserState(3); + HuPrcSleep(60); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while(WipeStatGet()) { + HuPrcVSleep(); + } + SetBowserState(4); + for(i=0; i<4; i++) { + BoardPlayerCoinsSet(i, coin); + } + HuPrcSleep(60); + BoardModelMotionStart(bowserMdl, 1, 0x40000001); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while(WipeStatGet()) { + HuPrcVSleep(); + } } static void ExecBowserSuit(void) { - BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_NONE); - BoardWinCreate(2, MAKE_MESSID(3, 18), 5); - BoardWinWait(); - HuAudFXPlay(857); - BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); - HuPrcSleep(10); - StartSuitGive(); - while(!CheckSuitGive()) { - HuPrcVSleep(); - } - BoardWinKill(); - BoardModelAttrSet(bowserMdl, 0x40000004); - while(!BoardModelMotionEndCheck(bowserMdl)) { - HuPrcVSleep(); - } + BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + BoardWinCreate(2, MAKE_MESSID(3, 18), 5); + BoardWinWait(); + HuAudFXPlay(857); + BoardModelMotionShiftSet(bowserMdl, 4, 0.0f, 10.0f, HU3D_MOTATTR_NONE); + HuPrcSleep(10); + StartSuitGive(); + while(!CheckSuitGive()) { + HuPrcVSleep(); + } + BoardWinKill(); + BoardModelAttrSet(bowserMdl, 0x40000004); + while(!BoardModelMotionEndCheck(bowserMdl)) { + HuPrcVSleep(); + } } typedef struct suit_give_work { - u8 kill : 1; - u8 state; - u8 timer; - u8 idle_timer; - s16 model; + u8 kill : 1; + u8 state; + u8 timer; + u8 idle_timer; + s16 model; } SuitGiveWork; static s32 CheckSuitGive(void) { - if(!suitGiveObj) { - return 1; - } else { - return 0; - } + if(!suitGiveObj) { + return 1; + } else { + return 0; + } } static void StartSuitGive(void) { - omObjData *object; - SuitGiveWork *work; - Vec pos; - object = omAddObjEx(boardObjMan, 258, 0, 0, -1, SuitGiveMain); - suitGiveObj = object; - work = OM_GET_WORK_PTR(suitGiveObj, SuitGiveWork); - work->kill = 0; - work->state = 0; - work->idle_timer = 0; - work->timer = 30; - work->model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 120), NULL, 0); - BoardModelLayerSet(work->model, 7); - BoardModelScaleSet(work->model, 0.16f, 0.16f, 0.16f); - object->trans.x = 288.0f; - object->trans.y = -64.0f; - pos.x = 288.0f; - pos.y = 240.0f; - object->rot.x = (pos.x-object->trans.x)/30.0f; - object->rot.y = (pos.y-object->trans.y)/30.0f; - object->scale.x = 300.0f; - pos.x = object->trans.x; - pos.y = object->trans.y; - pos.z = object->scale.x; - Hu3D2Dto3D(&pos, 1, &pos); - BoardModelPosSetV(work->model, &pos); + omObjData *object; + SuitGiveWork *work; + Vec pos; + object = omAddObjEx(boardObjMan, 258, 0, 0, -1, SuitGiveMain); + suitGiveObj = object; + work = OM_GET_WORK_PTR(suitGiveObj, SuitGiveWork); + work->kill = 0; + work->state = 0; + work->idle_timer = 0; + work->timer = 30; + work->model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 120), NULL, 0); + BoardModelLayerSet(work->model, 7); + BoardModelScaleSet(work->model, 0.16f, 0.16f, 0.16f); + object->trans.x = 288.0f; + object->trans.y = -64.0f; + pos.x = 288.0f; + pos.y = 240.0f; + object->rot.x = (pos.x-object->trans.x)/30.0f; + object->rot.y = (pos.y-object->trans.y)/30.0f; + object->scale.x = 300.0f; + pos.x = object->trans.x; + pos.y = object->trans.y; + pos.z = object->scale.x; + Hu3D2Dto3D(&pos, 1, &pos); + BoardModelPosSetV(work->model, &pos); } static void SuitGiveMain(omObjData *object) { - SuitGiveWork *work = OM_GET_WORK_PTR(object, SuitGiveWork); - s32 effect_active; - Vec pos; - if(work->kill || BoardIsKill()) { - BoardModelKill(work->model); - suitGiveObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(work->idle_timer) { - work->idle_timer--; - return; - } - - effect_active = 0; - switch(work->state) { - case 0: - if(work->timer == 0) { - work->state = 1; - work->idle_timer = 30; - work->timer = 30; - BoardStatusPosGet(eventPlayer, &pos); - object->rot.x = (pos.x-object->trans.x)/30.0f; - object->rot.y = (pos.y-object->trans.y)/30.0f; - } else { - work->timer--; - } - break; - - case 1: - if(work->timer == 0) { - work->state = 2; - work->idle_timer = 6; - effect_active = 1; - } else { - work->timer--; - } - break; - - case 2: - BoardPlayerItemAdd(eventPlayer, 10); - BoardModelVisibilitySet(work->model, 0); - work->kill = 1; - return; - - default: - break; - } - object->trans.x += object->rot.x; - object->trans.y += object->rot.y; - pos.x = object->trans.x; - pos.y = object->trans.y; - pos.z = object->scale.x; - Hu3D2Dto3D(&pos, 1, &pos); - BoardModelPosSetV(work->model, &pos); - if(effect_active) { - CharModelLayerSetAll(6); - CharModelEffectCreate(1, &pos); - } + SuitGiveWork *work = OM_GET_WORK_PTR(object, SuitGiveWork); + s32 effect_active; + Vec pos; + if(work->kill || BoardIsKill()) { + BoardModelKill(work->model); + suitGiveObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if(work->idle_timer) { + work->idle_timer--; + return; + } + + effect_active = 0; + switch(work->state) { + case 0: + if(work->timer == 0) { + work->state = 1; + work->idle_timer = 30; + work->timer = 30; + BoardStatusPosGet(eventPlayer, &pos); + object->rot.x = (pos.x-object->trans.x)/30.0f; + object->rot.y = (pos.y-object->trans.y)/30.0f; + } else { + work->timer--; + } + break; + + case 1: + if(work->timer == 0) { + work->state = 2; + work->idle_timer = 6; + effect_active = 1; + } else { + work->timer--; + } + break; + + case 2: + BoardPlayerItemAdd(eventPlayer, 10); + BoardModelVisibilitySet(work->model, 0); + work->kill = 1; + return; + + default: + break; + } + object->trans.x += object->rot.x; + object->trans.y += object->rot.y; + pos.x = object->trans.x; + pos.y = object->trans.y; + pos.z = object->scale.x; + Hu3D2Dto3D(&pos, 1, &pos); + BoardModelPosSetV(work->model, &pos); + if(effect_active) { + CharModelLayerSetAll(6); + CharModelEffectCreate(1, &pos); + } } static const s32 bowserMotTbl[] = { - DATA_MAKE_NUM(DATADIR_BKOOPA, 8), - DATA_MAKE_NUM(DATADIR_BKOOPA, 10), - DATA_MAKE_NUM(DATADIR_BKOOPA, 11), - DATA_MAKE_NUM(DATADIR_BKOOPA, 12), - DATA_MAKE_NUM(DATADIR_BKOOPA, 13), - DATA_NUM_LISTEND + DATA_MAKE_NUM(DATADIR_BKOOPA, 8), + DATA_MAKE_NUM(DATADIR_BKOOPA, 10), + DATA_MAKE_NUM(DATADIR_BKOOPA, 11), + DATA_MAKE_NUM(DATADIR_BKOOPA, 12), + DATA_MAKE_NUM(DATADIR_BKOOPA, 13), + DATA_NUM_LISTEND }; static void CreateBowserObj(void) { - BowserWork *work; - Vec pos; - bowserObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecBowserObj); - work = OM_GET_WORK_PTR(bowserObj, BowserWork); - work->kill = 0; - work->jump_state = 0; - work->idle_timer = 0; - work->mot_active = 0; - work->fall_done = 0; - work->jump_done = 0; - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - work->state = 1; - } else { - work->state = 0; - } - bowserMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 7), (s32 *)bowserMotTbl, 0); - BoardModelVisibilitySet(bowserMdl, 0); - BoardModelScaleSet(bowserMdl, 2.0f, 2.0f, 2.0f); - BoardPlayerPosGet(eventPlayer, &pos); - BoardModelLayerSet(bowserMdl, 2); - bowserObj->trans.x = pos.x; - bowserObj->trans.y = pos.y; - bowserObj->trans.z = pos.z; - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - suitItemMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 99), NULL, 0); - BoardModelLayerSet(suitItemMdl, 2); - BoardModelVisibilitySet(suitItemMdl, 0); - } else { - s32 space = GWPlayer[eventPlayer].space_curr; - BoardSpacePosGet(0, space, &pos); - bowserObj->trans.x = pos.x; - bowserObj->trans.y = pos.y; - bowserObj->trans.z = pos.z; - BoardModelPosSetV(bowserMdl, &pos); - BoardCameraTargetSpaceSet(space); - BoardModelMotionStart(bowserMdl, 1, 0x40000001); - BoardModelVisibilitySet(bowserMdl, 1); - } + BowserWork *work; + Vec pos; + bowserObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecBowserObj); + work = OM_GET_WORK_PTR(bowserObj, BowserWork); + work->kill = 0; + work->jump_state = 0; + work->idle_timer = 0; + work->mot_active = 0; + work->fall_done = 0; + work->jump_done = 0; + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + work->state = 1; + } else { + work->state = 0; + } + bowserMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 7), (s32 *)bowserMotTbl, 0); + BoardModelVisibilitySet(bowserMdl, 0); + BoardModelScaleSet(bowserMdl, 2.0f, 2.0f, 2.0f); + BoardPlayerPosGet(eventPlayer, &pos); + BoardModelLayerSet(bowserMdl, 2); + bowserObj->trans.x = pos.x; + bowserObj->trans.y = pos.y; + bowserObj->trans.z = pos.z; + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + suitItemMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 99), NULL, 0); + BoardModelLayerSet(suitItemMdl, 2); + BoardModelVisibilitySet(suitItemMdl, 0); + } else { + s32 space = GWPlayer[eventPlayer].space_curr; + BoardSpacePosGet(0, space, &pos); + bowserObj->trans.x = pos.x; + bowserObj->trans.y = pos.y; + bowserObj->trans.z = pos.z; + BoardModelPosSetV(bowserMdl, &pos); + BoardCameraTargetSpaceSet(space); + BoardModelMotionStart(bowserMdl, 1, 0x40000001); + BoardModelVisibilitySet(bowserMdl, 1); + } } static void ExecBowserFall(BowserWork *work, omObjData *object); @@ -807,316 +806,316 @@ static void ExecBowserJump(BowserWork *work, omObjData *object); static void ExecBowserObj(omObjData *object) { - BowserWork *work = OM_GET_WORK_PTR(bowserObj, BowserWork); - Vec pos; - Vec rot; - - if(work->kill || BoardIsKill()) { - BoardModelKill(bowserMdl); - bowserMdl = -1; - BoardModelKill(suitItemMdl); - suitItemMdl = -1; - omDelObjEx(HuPrcCurrentGet(), object); - bowserObj = NULL; - return; - } - if(work->idle_timer) { - work->idle_timer--; - return; - } - if(work->mot_active && BoardModelMotionEndCheck(bowserMdl)) { - work->mot_active = 0; - BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); - } - switch(work->state) { - case 1: - ExecBowserFall(work, object); - break; - - case 2: - ExecBowserLaugh(work, object); - break; - - case 3: - ExecBowserPowerUp(work, object); - break; - - case 5: - ExecBowserFire(work, object); - break; - - case 6: - ExecBowserJump(work, object); - break; - - case 4: - BoardModelVisibilitySet(suitItemMdl, 0); - work->state = 0; - break; - - case 0: - break; - } - BoardModelPosSet(bowserMdl, object->trans.x, object->trans.y, object->trans.z); - BoardCameraRotGet(&rot); - pos.x = object->trans.x+(-100.0f*sin(M_PI*BoardModelRotYGet(bowserMdl)/180.0)); - pos.z = object->trans.z+(-100.0f*cos(M_PI*BoardModelRotYGet(bowserMdl)/180.0)); - pos.y = object->trans.y+250.0f; - BoardModelPosSetV(suitItemMdl, &pos); + BowserWork *work = OM_GET_WORK_PTR(bowserObj, BowserWork); + Vec pos; + Vec rot; + + if(work->kill || BoardIsKill()) { + BoardModelKill(bowserMdl); + bowserMdl = -1; + BoardModelKill(suitItemMdl); + suitItemMdl = -1; + omDelObjEx(HuPrcCurrentGet(), object); + bowserObj = NULL; + return; + } + if(work->idle_timer) { + work->idle_timer--; + return; + } + if(work->mot_active && BoardModelMotionEndCheck(bowserMdl)) { + work->mot_active = 0; + BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + } + switch(work->state) { + case 1: + ExecBowserFall(work, object); + break; + + case 2: + ExecBowserLaugh(work, object); + break; + + case 3: + ExecBowserPowerUp(work, object); + break; + + case 5: + ExecBowserFire(work, object); + break; + + case 6: + ExecBowserJump(work, object); + break; + + case 4: + BoardModelVisibilitySet(suitItemMdl, 0); + work->state = 0; + break; + + case 0: + break; + } + BoardModelPosSet(bowserMdl, object->trans.x, object->trans.y, object->trans.z); + BoardCameraRotGet(&rot); + pos.x = object->trans.x+(-100.0f*sind(BoardModelRotYGet(bowserMdl))); + pos.z = object->trans.z+(-100.0f*cosd(BoardModelRotYGet(bowserMdl))); + pos.y = object->trans.y+250.0f; + BoardModelPosSetV(suitItemMdl, &pos); } static void ExecBowserFall(BowserWork *work, omObjData *object) { - Vec pos; - Vec pos_space; - Vec pos_player; - s32 i; - if(!work->jump_state) { - BoardModelVisibilitySet(bowserMdl, 1); - BoardModelMotionStart(bowserMdl, 2, 0); - BoardModelMotionTimeSet(bowserMdl, 100.0f); - work->jump_state = 1; - return; - } - if(BoardModelMotionEndCheck(bowserMdl)) { - work->state = 0; - BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); - return; - } - if(!work->fall_done && !(BoardModelMotionTimeGet(bowserMdl) < 140.0f)) { - BoardPlayerPosGet(eventPlayer, &pos); - HuAudFXPlay(829); - BoardCameraQuakeSet(60, 100.0f); - object->trans.y = pos.y; - BoardPlayerPosGet(eventPlayer, &pos_player); - if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { - HuAudFXPlay(798); - } - pos_player.y += 6.0f; - BoardPlayerPosSetV(eventPlayer, &pos_player); - GWPlayer[eventPlayer].show_next = 0; - BoardPlayerMotionSpeedSet(eventPlayer, 0.0f); - for(i=0; i<4; i++) { - if(eventSpace != GWPlayer[i].space_curr) { - continue; - } - BoardPlayerPosGet(i, &pos_player); - BoardSpacePosGet(0, eventSpace, &pos_space); - pos_player.y = 2.5f+pos_space.y; - BoardPlayerPosSetV(i, &pos_player); - BoardPlayerMotionStart(i, playerMot[i], 0); - BoardPlayerMotionTimeSet(i, 50.0f); - BoardPlayerMotionSpeedSet(i, 0.0f); - } - if(!work->fall_done) { - work->fall_done = 1; - omVibrate(eventPlayer, 12, 4, 2); - } - } - + Vec pos; + Vec pos_space; + Vec pos_player; + s32 i; + if(!work->jump_state) { + BoardModelVisibilitySet(bowserMdl, 1); + BoardModelMotionStart(bowserMdl, 2, 0); + BoardModelMotionTimeSet(bowserMdl, 100.0f); + work->jump_state = 1; + return; + } + if(BoardModelMotionEndCheck(bowserMdl)) { + work->state = 0; + BoardModelMotionShiftSet(bowserMdl, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + return; + } + if(!work->fall_done && !(BoardModelMotionTimeGet(bowserMdl) < 140.0f)) { + BoardPlayerPosGet(eventPlayer, &pos); + HuAudFXPlay(829); + BoardCameraQuakeSet(60, 100.0f); + object->trans.y = pos.y; + BoardPlayerPosGet(eventPlayer, &pos_player); + if(!_CheckFlag(FLAG_ID_MAKE(1, 3))) { + HuAudFXPlay(798); + } + pos_player.y += 6.0f; + BoardPlayerPosSetV(eventPlayer, &pos_player); + GWPlayer[eventPlayer].show_next = 0; + BoardPlayerMotionSpeedSet(eventPlayer, 0.0f); + for(i=0; i<4; i++) { + if(eventSpace != GWPlayer[i].space_curr) { + continue; + } + BoardPlayerPosGet(i, &pos_player); + BoardSpacePosGet(0, eventSpace, &pos_space); + pos_player.y = 2.5f+pos_space.y; + BoardPlayerPosSetV(i, &pos_player); + BoardPlayerMotionStart(i, playerMot[i], 0); + BoardPlayerMotionTimeSet(i, 50.0f); + BoardPlayerMotionSpeedSet(i, 0.0f); + } + if(!work->fall_done) { + work->fall_done = 1; + omVibrate(eventPlayer, 12, 4, 2); + } + } + } static void ExecBowserLaugh(BowserWork *work, omObjData *object) { - BoardModelMotionStart(bowserMdl, 3, 0); - work->mot_active = 1; - work->state = 0; + BoardModelMotionStart(bowserMdl, 3, 0); + work->mot_active = 1; + work->state = 0; } static void ExecBowserFire(BowserWork *work, omObjData *object) { - BoardModelMotionStart(bowserMdl, 5, 0); - work->state = 0; + BoardModelMotionStart(bowserMdl, 5, 0); + work->state = 0; } static void ExecBowserJump(BowserWork *work, omObjData *object) { - switch(work->jump_state) { - case 0: - BoardModelMotionShiftSet(bowserMdl, 2, 0.0f, 4.0f, HU3D_MOTATTR_NONE); - work->jump_state = 1; - break; - - case 1: - { - s16 model_id = BoardModelIDGet(bowserMdl); - if(Hu3DMotionShiftIDGet(model_id) == -1) { - work->jump_state = 2; - } - } - break; - - case 2: - { - float time = BoardModelMotionTimeGet(bowserMdl); - if(time < 60.0f) { - break; - } - if(!work->jump_done) { - omVibrate(eventPlayer, 12, 12, 0); - HuAudFXPlay(61); - work->jump_done = 1; - } - if(time >= 100.0f) { - BoardModelVisibilitySet(bowserMdl, 0); - work->state = 0; - work->kill = 1; - } - } - break; - } + switch(work->jump_state) { + case 0: + BoardModelMotionShiftSet(bowserMdl, 2, 0.0f, 4.0f, HU3D_MOTATTR_NONE); + work->jump_state = 1; + break; + + case 1: + { + s16 model_id = BoardModelIDGet(bowserMdl); + if(Hu3DMotionShiftIDGet(model_id) == -1) { + work->jump_state = 2; + } + } + break; + + case 2: + { + float time = BoardModelMotionTimeGet(bowserMdl); + if(time < 60.0f) { + break; + } + if(!work->jump_done) { + omVibrate(eventPlayer, 12, 12, 0); + HuAudFXPlay(61); + work->jump_done = 1; + } + if(time >= 100.0f) { + BoardModelVisibilitySet(bowserMdl, 0); + work->state = 0; + work->kill = 1; + } + } + break; + } } static void ExecBowserPowerUp(BowserWork *work, omObjData *object) { - Vec pos; - if(work->jump_state == 0) { - BoardModelVisibilitySet(suitItemMdl, 1); - BoardModelMotionStart(suitItemMdl, 0, 0); - BoardModelScaleSet(suitItemMdl, 10.0f, 10.0f, 10.0f); - pos.x = object->trans.x+(-100.0f*sin(M_PI*BoardModelRotYGet(bowserMdl)/180.0)); - pos.z = object->trans.z+(-100.0f*cos(M_PI*BoardModelRotYGet(bowserMdl)/180.0)); - pos.y = object->trans.y+250.0f; - BoardModelPosSetV(suitItemMdl, &pos); - HuAudFXPlay(850); - } else { - if(work->jump_state >= 100) { - work->state = 0; - } - } - work->jump_state++; + Vec pos; + if(work->jump_state == 0) { + BoardModelVisibilitySet(suitItemMdl, 1); + BoardModelMotionStart(suitItemMdl, 0, 0); + BoardModelScaleSet(suitItemMdl, 10.0f, 10.0f, 10.0f); + pos.x = object->trans.x+(-100.0f*sind(BoardModelRotYGet(bowserMdl))); + pos.z = object->trans.z+(-100.0f*cosd(BoardModelRotYGet(bowserMdl))); + pos.y = object->trans.y+250.0f; + BoardModelPosSetV(suitItemMdl, &pos); + HuAudFXPlay(850); + } else { + if(work->jump_state >= 100) { + work->state = 0; + } + } + work->jump_state++; } static void SetBowserState(s32 state) { - BowserWork *work = OM_GET_WORK_PTR(bowserObj, BowserWork); - work->state = state; - work->jump_state = 0; + BowserWork *work = OM_GET_WORK_PTR(bowserObj, BowserWork); + work->state = state; + work->jump_state = 0; } static s32 CheckBowserIdle(void) { - BowserWork *work; - if(!bowserObj) { - return 1; - } - work = OM_GET_WORK_PTR(bowserObj, BowserWork); - if(work->state != 0 || work->idle_timer != 0) { - return 0; - } else { - return 1; - } + BowserWork *work; + if(!bowserObj) { + return 1; + } + work = OM_GET_WORK_PTR(bowserObj, BowserWork); + if(work->state != 0 || work->idle_timer != 0) { + return 0; + } else { + return 1; + } } static void CreateMiniBowser(void) { - omObjData *object; - MiniBowserWork *work; - object = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecMiniBowser); - miniBowserObj = object; - work = OM_GET_WORK_PTR(object, MiniBowserWork); - work->kill = 0; - work->angle = 0; - work->group = HuSprGrpCreate(1); - BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 5), 100, NULL, &work->sprite); - HuSprGrpMemberSet(work->group, 0, work->sprite); - HuSprAttrSet(work->group, 0, HUSPR_ATTR_LINEAR); - HuSprGrpPosSet(work->group, 288.0f, 240.0f); - HuSprGrpScaleSet(work->group, 4.0f, 4.0f); + omObjData *object; + MiniBowserWork *work; + object = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecMiniBowser); + miniBowserObj = object; + work = OM_GET_WORK_PTR(object, MiniBowserWork); + work->kill = 0; + work->angle = 0; + work->group = HuSprGrpCreate(1); + BoardSpriteCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 5), 100, NULL, &work->sprite); + HuSprGrpMemberSet(work->group, 0, work->sprite); + HuSprAttrSet(work->group, 0, HUSPR_ATTR_LINEAR); + HuSprGrpPosSet(work->group, 288.0f, 240.0f); + HuSprGrpScaleSet(work->group, 4.0f, 4.0f); } static s32 CheckMiniBowser(void) { - if(miniBowserObj) { - return 0; - } else { - return 1; - } + if(miniBowserObj) { + return 0; + } else { + return 1; + } } static void ExecMiniBowser(omObjData *object) { - MiniBowserWork *work = OM_GET_WORK_PTR(object, MiniBowserWork); - float alpha; - if(work->kill || BoardIsKill()) { - HuSprGrpKill(work->group); - miniBowserObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - OSs16tof32(&work->angle, &alpha); - alpha = sin(M_PI*BoardDAngleCalc(alpha)/180.0); - HuSprTPLvlSet(work->group, 0, ABS(alpha)); - if(work->angle == 60) { - HuAudFXPlay(807); - } - work->angle += 2; - if(work->angle == 90 || work->angle == 270 || work->angle == 450) { - omVibrate(eventPlayer, 12, 4, 2); - } - if(work->angle >= 540) { - work->kill = 1; - } + MiniBowserWork *work = OM_GET_WORK_PTR(object, MiniBowserWork); + float alpha; + if(work->kill || BoardIsKill()) { + HuSprGrpKill(work->group); + miniBowserObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + OSs16tof32(&work->angle, &alpha); + alpha = sind(BoardDAngleCalc(alpha)); + HuSprTPLvlSet(work->group, 0, ABS(alpha)); + if(work->angle == 60) { + HuAudFXPlay(807); + } + work->angle += 2; + if(work->angle == 90 || work->angle == 270 || work->angle == 450) { + omVibrate(eventPlayer, 12, 4, 2); + } + if(work->angle >= 540) { + work->kill = 1; + } } static void CreateBowserEvent(void) { - Vec pos_2d; - Vec pos_3d; - s32 eventSpr[] = { - DATA_MAKE_NUM(DATADIR_BKOOPA, 1), - DATA_MAKE_NUM(DATADIR_BKOOPA, 2), - DATA_MAKE_NUM(DATADIR_BKOOPA, 3), - DATA_MAKE_NUM(DATADIR_BKOOPA, 4), - }; - - - BowserEventData *data; - s32 i; - BowserEventWork *work; - s32 sprite; - bowserEventObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecBowserEvent); - work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); - work->kill = 0; - work->state = 0; - work->timer = 0; - memset(&bowserEvent, 0, sizeof(BowserEventData)); - data = &bowserEvent; - data->group = HuSprGrpCreate(3); - sprite = eventSpr[GWSystem.bowser_event]; - for(i=0; i<3; i++) { - BoardSpriteCreate(sprite, 100, NULL, &data->sprite[i]); - HuSprGrpMemberSet(data->group, i, data->sprite[i]); - HuSprTPLvlSet(data->group, i, 0.0f); - HuSprPosSet(data->group, i, 0.0f, 0.0f); - data->delay[i] = i*2; - } - HuSprGrpPosSet(data->group, 288.0f, 240.0f); - data->model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 101), NULL, 0); - pos_2d.x = 288.0f; - pos_2d.y = 240.0f; - pos_2d.z = 1000.0f; - Hu3D2Dto3D(&pos_2d, 1, &pos_3d); - BoardModelMotionStart(data->model, 0, 0x40000001); - BoardModelPosSetV(data->model, &pos_3d); - BoardModelLayerSet(data->model, 2); + Vec pos_2d; + Vec pos_3d; + s32 eventSpr[] = { + DATA_MAKE_NUM(DATADIR_BKOOPA, 1), + DATA_MAKE_NUM(DATADIR_BKOOPA, 2), + DATA_MAKE_NUM(DATADIR_BKOOPA, 3), + DATA_MAKE_NUM(DATADIR_BKOOPA, 4), + }; + + + BowserEventData *data; + s32 i; + BowserEventWork *work; + s32 sprite; + bowserEventObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecBowserEvent); + work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); + work->kill = 0; + work->state = 0; + work->timer = 0; + memset(&bowserEvent, 0, sizeof(BowserEventData)); + data = &bowserEvent; + data->group = HuSprGrpCreate(3); + sprite = eventSpr[GWSystem.bowser_event]; + for(i=0; i<3; i++) { + BoardSpriteCreate(sprite, 100, NULL, &data->sprite[i]); + HuSprGrpMemberSet(data->group, i, data->sprite[i]); + HuSprTPLvlSet(data->group, i, 0.0f); + HuSprPosSet(data->group, i, 0.0f, 0.0f); + data->delay[i] = i*2; + } + HuSprGrpPosSet(data->group, 288.0f, 240.0f); + data->model = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 101), NULL, 0); + pos_2d.x = 288.0f; + pos_2d.y = 240.0f; + pos_2d.z = 1000.0f; + Hu3D2Dto3D(&pos_2d, 1, &pos_3d); + BoardModelMotionStart(data->model, 0, 0x40000001); + BoardModelPosSetV(data->model, &pos_3d); + BoardModelLayerSet(data->model, 2); } static s32 CheckBowserEvent(void) { - BowserEventWork *work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); - - if(work->state != 2) { - return 0; - } else { - return 1; - } + BowserEventWork *work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); + + if(work->state != 2) { + return 0; + } else { + return 1; + } } static void StopBowserEvent(void) { - BowserEventWork *work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); - work->state = 1; + BowserEventWork *work = OM_GET_WORK_PTR(bowserEventObj, BowserEventWork); + work->state = 1; } static void ShowBowserEvent(BowserEventWork *work, omObjData *object); @@ -1124,187 +1123,187 @@ static void HideBowserEvent(BowserEventWork *work, omObjData *object); static void ExecBowserEvent(omObjData *object) { - BowserEventWork *work = OM_GET_WORK_PTR(object, BowserEventWork); - BowserEventData *data = &bowserEvent; - if(work->kill || BoardIsKill()) { - HuSprGrpKill(data->group); - BoardModelKill(data->model); - bowserEventObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(work->timer) { - work->timer--; - return; - } - switch(work->state) { - case 0: - ShowBowserEvent(work, object); - break; - - case 1: - HideBowserEvent(work, object); - break; - - case 2: - break; - } + BowserEventWork *work = OM_GET_WORK_PTR(object, BowserEventWork); + BowserEventData *data = &bowserEvent; + if(work->kill || BoardIsKill()) { + HuSprGrpKill(data->group); + BoardModelKill(data->model); + bowserEventObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if(work->timer) { + work->timer--; + return; + } + switch(work->state) { + case 0: + ShowBowserEvent(work, object); + break; + + case 1: + HideBowserEvent(work, object); + break; + + case 2: + break; + } } static void ShowBowserEvent(BowserEventWork *work, omObjData *object) { - BowserEventData *data; - s32 i; - s32 count; - float angle; - float tplvl; - float scale; - data = &bowserEvent; - for(count=i=0; i<3; i++) { - if(data->delay[i]) { - data->delay[i]--; - } else { - if(data->angle[i] > 90) { - count++; - continue; - } - OSs16tof32(&data->angle[i], &angle); - tplvl = sin(M_PI*angle/180.0); - scale = sin(M_PI*angle/180.0); - HuSprTPLvlSet(data->group, i, tplvl); - HuSprScaleSet(data->group, i, scale, scale); - BoardModelAlphaSet(data->model, 255.0f*tplvl); - data->angle[i] += 9; - if(data->angle[i] > 90 && i != 0) { - HuSprAttrSet(data->group, i, HUSPR_ATTR_DISPOFF); - } - } - } - if(count == 3) { - work->state = 2; - work->timer = 60; - } + BowserEventData *data; + s32 i; + s32 count; + float angle; + float tplvl; + float scale; + data = &bowserEvent; + for(count=i=0; i<3; i++) { + if(data->delay[i]) { + data->delay[i]--; + } else { + if(data->angle[i] > 90) { + count++; + continue; + } + OSs16tof32(&data->angle[i], &angle); + tplvl = sind(angle); + scale = sind(angle); + HuSprTPLvlSet(data->group, i, tplvl); + HuSprScaleSet(data->group, i, scale, scale); + BoardModelAlphaSet(data->model, 255.0f*tplvl); + data->angle[i] += 9; + if(data->angle[i] > 90 && i != 0) { + HuSprAttrSet(data->group, i, HUSPR_ATTR_DISPOFF); + } + } + } + if(count == 3) { + work->state = 2; + work->timer = 60; + } } static void HideBowserEvent(BowserEventWork *work, omObjData *object) { - BowserEventData *data = &bowserEvent; - float angle; - float tplvl; - OSs16tof32(&data->angle[0], &angle); - tplvl = sin(M_PI*angle/180.0); - HuSprTPLvlSet(data->group, 0, tplvl); - BoardModelAlphaSet(data->model, 255.0f*tplvl); - data->angle[0] -= 10; - if(data->angle[0] < 0) { - work->kill = 1; - HuSprAttrSet(data->group, 0, HUSPR_ATTR_DISPOFF); - } + BowserEventData *data = &bowserEvent; + float angle; + float tplvl; + OSs16tof32(&data->angle[0], &angle); + tplvl = sind(angle); + HuSprTPLvlSet(data->group, 0, tplvl); + BoardModelAlphaSet(data->model, 255.0f*tplvl); + data->angle[0] -= 10; + if(data->angle[0] < 0) { + work->kill = 1; + HuSprAttrSet(data->group, 0, HUSPR_ATTR_DISPOFF); + } } static void ConfigBowserEvent(void) { - s32 i; - s32 chance; - s32 coins; - s32 item_full; - item_full = 0; - if(BoardPlayerItemCount(eventPlayer) == 3) { - item_full = 1; - } - for(coins=i=0; i<4; i++) { - coins += BoardPlayerCoinsGet(i); - } - retry: - while(1) { - chance = BoardRandMod(100); - if(chance >= 95) { - if(item_full) { - continue; - } - if(GWSystem.max_turn-GWSystem.turn == 0) { - continue; - } - GWSystem.bowser_event = 3; - break; - } else if(chance >= 85) { - GWSystem.bowser_event = 2; - break; - } else if(chance >= 70) { - GWSystem.bowser_event = 1; - break; - } else { - if(coins == 0) { - continue; - } - GWSystem.bowser_event = 0; - GWSystem.bowser_loss = BoardRandMod(3); - break; - } - } + s32 i; + s32 chance; + s32 coins; + s32 item_full; + item_full = 0; + if(BoardPlayerItemCount(eventPlayer) == 3) { + item_full = 1; + } + for(coins=i=0; i<4; i++) { + coins += BoardPlayerCoinsGet(i); + } + retry: + while(1) { + chance = BoardRandMod(100); + if(chance >= 95) { + if(item_full) { + continue; + } + if(GWSystem.max_turn-GWSystem.turn == 0) { + continue; + } + GWSystem.bowser_event = 3; + break; + } else if(chance >= 85) { + GWSystem.bowser_event = 2; + break; + } else if(chance >= 70) { + GWSystem.bowser_event = 1; + break; + } else { + if(coins == 0) { + continue; + } + GWSystem.bowser_event = 0; + GWSystem.bowser_loss = BoardRandMod(3); + break; + } + } } static void CreatePlayerMot(void) { - s32 scareMotTbl[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 27), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 27), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 27), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 27), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 27), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 27), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 27), - }; - s32 jumpMotTbl[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 26), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 26), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 26), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 26), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 26), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 26), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 26), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 26), - }; - s32 playerMotTbl[] = { - DATA_MAKE_NUM(DATADIR_MARIOMOT, 31), - DATA_MAKE_NUM(DATADIR_LUIGIMOT, 31), - DATA_MAKE_NUM(DATADIR_PEACHMOT, 31), - DATA_MAKE_NUM(DATADIR_YOSHIMOT, 31), - DATA_MAKE_NUM(DATADIR_WARIOMOT, 31), - DATA_MAKE_NUM(DATADIR_DONKEYMOT, 31), - DATA_MAKE_NUM(DATADIR_DAISYMOT, 31), - DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 31), - }; - s32 i; - s32 character; - character = GWPlayer[eventPlayer].character; - scareMot = BoardPlayerMotionCreate(eventPlayer, scareMotTbl[character]); - jumpMot = BoardPlayerMotionCreate(eventPlayer, jumpMotTbl[character]); - for(i=0; i<4; i++) { - character = GWPlayer[i].character; - playerMot[i] = BoardPlayerMotionCreate(i, playerMotTbl[character]); - } + s32 scareMotTbl[] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 27), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 27), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 27), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 27), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 27), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 27), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 27), + }; + s32 jumpMotTbl[] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 26), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 26), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 26), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 26), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 26), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 26), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 26), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 26), + }; + s32 playerMotTbl[] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 31), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 31), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 31), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 31), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 31), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 31), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 31), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 31), + }; + s32 i; + s32 character; + character = GWPlayer[eventPlayer].character; + scareMot = BoardPlayerMotionCreate(eventPlayer, scareMotTbl[character]); + jumpMot = BoardPlayerMotionCreate(eventPlayer, jumpMotTbl[character]); + for(i=0; i<4; i++) { + character = GWPlayer[i].character; + playerMot[i] = BoardPlayerMotionCreate(i, playerMotTbl[character]); + } } static void KillPlayerMot(void) { - s32 i; - if(scareMot > 0) { - BoardPlayerMotionKill(eventPlayer, scareMot); - scareMot = -1; - } - if(jumpMot > 0) { - BoardPlayerMotionKill(eventPlayer, jumpMot); - jumpMot = -1; - } - for(i=0; i<4; i++) { - if(playerMot[i] > 0) { - BoardPlayerMotionKill(i, playerMot[i]); - playerMot[i] = -1; - } - } + s32 i; + if(scareMot > 0) { + BoardPlayerMotionKill(eventPlayer, scareMot); + scareMot = -1; + } + if(jumpMot > 0) { + BoardPlayerMotionKill(eventPlayer, jumpMot); + jumpMot = -1; + } + for(i=0; i<4; i++) { + if(playerMot[i] > 0) { + BoardPlayerMotionKill(i, playerMot[i]); + playerMot[i] = -1; + } + } } static void BowserFireHook(ModelData *model, ParticleData *particle, Mtx matrix); @@ -1314,103 +1313,103 @@ static s32 CheckBowserFire(HsfanimStruct01 *arg0); static void InitBowserFire(void) { - fireAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_BOARD, 106)); - fireParMan = Hu3DParticleCreate(fireAnim, 30); - Hu3DParticleColSet(fireParMan, 255, 255, 255); - Hu3DParticleScaleSet(fireParMan, 10.0f); - Hu3DParticleHookSet(fireParMan, BowserFireHook); - Hu3DParticleBlendModeSet(fireParMan, 1); - Hu3DModelLayerSet(fireParMan, 2); + fireAnim = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_BOARD, 106)); + fireParMan = Hu3DParticleCreate(fireAnim, 30); + Hu3DParticleColSet(fireParMan, 255, 255, 255); + Hu3DParticleScaleSet(fireParMan, 10.0f); + Hu3DParticleHookSet(fireParMan, BowserFireHook); + Hu3DParticleBlendModeSet(fireParMan, 1); + Hu3DModelLayerSet(fireParMan, 2); } static void BowserFireHook(ModelData *model, ParticleData *particle, Mtx matrix) { - HsfanimStruct01* var_r30; - s32 i; - s32 var_r28; - Vec pos; - Hu3DModelObjPosGet(BoardModelIDGet(bowserMdl), "itemhook_M_1", &pos); - if (particle->unk_34 == 0) { - var_r30 = particle->unk_48; + HsfanimStruct01* var_r30; + s32 i; + s32 var_r28; + Vec pos; + Hu3DModelObjPosGet(BoardModelIDGet(bowserMdl), "itemhook_M_1", &pos); + if (particle->unk_34 == 0) { + var_r30 = particle->unk_48; for (i = 0; i < particle->unk_30; i++, var_r30++) { - var_r30->unk2C = 0.0f; - } - particle->unk_34 = 1; - particle->unk_00 = 0; - } - if((particle->unk_34 & 0x3) == 0) { - var_r30 = particle->unk_48; - for(var_r28=0; var_r28unk_30; var_r28++, var_r30++) { - if(var_r30->unk2C == 0.0f) { - break; - } - } - if(var_r28 != particle->unk_30) { - var_r30->unk34 = pos; - particle->unk_00++; - SpawnBowserFire(var_r30); - } - } - var_r30 = particle->unk_48; - for (i = 0; i < particle->unk_30; i++, var_r30++) { - if(var_r30->unk2C != 0.0f && CheckBowserFire(var_r30)) { - particle->unk_00--; - } - } + var_r30->unk2C = 0.0f; + } + particle->unk_34 = 1; + particle->unk_00 = 0; + } + if((particle->unk_34 & 0x3) == 0) { + var_r30 = particle->unk_48; + for(var_r28=0; var_r28unk_30; var_r28++, var_r30++) { + if(var_r30->unk2C == 0.0f) { + break; + } + } + if(var_r28 != particle->unk_30) { + var_r30->unk34 = pos; + particle->unk_00++; + SpawnBowserFire(var_r30); + } + } + var_r30 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r30++) { + if(var_r30->unk2C != 0.0f && CheckBowserFire(var_r30)) { + particle->unk_00--; + } + } } static void SpawnBowserFire(HsfanimStruct01 *arg0) { - Vec dir; - BoardCameraDirGet(&dir); - arg0->unk08.x = 0.0f; - arg0->unk08.y = 0.0f; - arg0->unk08.z = 0.0f; - arg0->unk14.x = -dir.x*((0.5f*BoardRandFloat())+0.5f); - arg0->unk14.y = -dir.y*((0.5f*BoardRandFloat())+0.5f); - arg0->unk14.z = -dir.z*((0.5f*BoardRandFloat())+0.5f); - arg0->unk24 = 1.025f; - arg0->unk40.a = 254; - arg0->unk40.r = 255; - arg0->unk40.g = 255; - arg0->unk40.b = 255; - arg0->unk2C = 100.0f; + Vec dir; + BoardCameraDirGet(&dir); + arg0->unk08.x = 0.0f; + arg0->unk08.y = 0.0f; + arg0->unk08.z = 0.0f; + arg0->unk14.x = -dir.x*((0.5f*BoardRandFloat())+0.5f); + arg0->unk14.y = -dir.y*((0.5f*BoardRandFloat())+0.5f); + arg0->unk14.z = -dir.z*((0.5f*BoardRandFloat())+0.5f); + arg0->unk24 = 1.025f; + arg0->unk40.a = 254; + arg0->unk40.r = 255; + arg0->unk40.g = 255; + arg0->unk40.b = 255; + arg0->unk2C = 100.0f; } static s32 CheckBowserFire(HsfanimStruct01 *arg0) { - arg0->unk34.x += arg0->unk08.x; - arg0->unk34.y += arg0->unk08.y; - arg0->unk34.z += arg0->unk08.z; - arg0->unk08.x += arg0->unk14.x; - arg0->unk08.y += arg0->unk14.y; - arg0->unk08.z += arg0->unk14.z; - arg0->unk40.a -= 8; - arg0->unk2C *= arg0->unk24; - if(arg0->unk40.a == 0.0f) { - arg0->unk40.a = 0; - arg0->unk2C = 0.0f; - return 1; - } - return 0; + arg0->unk34.x += arg0->unk08.x; + arg0->unk34.y += arg0->unk08.y; + arg0->unk34.z += arg0->unk08.z; + arg0->unk08.x += arg0->unk14.x; + arg0->unk08.y += arg0->unk14.y; + arg0->unk08.z += arg0->unk14.z; + arg0->unk40.a -= 8; + arg0->unk2C *= arg0->unk24; + if(arg0->unk40.a == 0.0f) { + arg0->unk40.a = 0; + arg0->unk2C = 0.0f; + return 1; + } + return 0; } static void KillBowserFire(void) { - if(fireParMan != -1) { - Hu3DModelKill(fireParMan); - fireParMan = -1; - fireAnim = NULL; - } + if(fireParMan != -1) { + Hu3DModelKill(fireParMan); + fireParMan = -1; + fireAnim = NULL; + } } typedef struct mini_bowser_balloon_work { - u8 kill : 1; - u8 state; - u16 timer; - s16 angle; - float offset; - s16 *models; + u8 kill : 1; + u8 state; + u16 timer; + s16 angle; + float offset; + s16 *models; } MiniBowserBalloonWork; static void MiniBowserTake(void); @@ -1433,384 +1432,384 @@ static void WaitMiniBowserMotion(void); static s32 ExecMiniBowserEvent(void) { - s32 doneF = 0; - CreateMiniBowserBalloon(); - SetMiniBowserBalloonState(0); - while(GetMiniBowserBalloonState() != 2) { - HuPrcVSleep(); - } - BoardFilterFadeOut(30); - BoardAudSeqFadeOut(1, 1000); - HuPrcSleep(30); - BoardAudSeqFadeOutFast(1); - BoardMusStart(1, 11, 127, 0); - HuAudFXPlay(62); - BoardWinCreate(2, MAKE_MESSID(3, 0), 6); - BoardWinWait(); - if(BoardRandMod(100) < 70) { - MiniBowserTake(); - } else { - MiniBowserTakeAll(); - } - //5% chance bowser will appear after baby bowser - if(BoardRandMod(100) < 5) { - doneF = 1; - } - if(doneF) { - HuPrcSleep(60); - BoardWinCreate(2, MAKE_MESSID(3, 6), 6); - BoardWinWait(); - BoardWinKill(); - HuAudFXPlay(62); - SetMiniBowserMotion(6, 10, 1); - HuPrcSleep(60); - } else { - HuAudFXPlay(62); - BoardWinCreate(2, MAKE_MESSID(3, 2), 6); - BoardWinWait(); - BoardWinKill(); - BoardAudSeqFadeOut(1, 1000); - SetMiniBowserMotion(4, 10, 1); - HuPrcSleep(30); - } - SetMiniBowserBalloonState(1); - while(GetMiniBowserBalloonState() != 2) { - HuPrcVSleep(); - } - MiniBowserBalloonStop(); - return doneF; + s32 doneF = 0; + CreateMiniBowserBalloon(); + SetMiniBowserBalloonState(0); + while(GetMiniBowserBalloonState() != 2) { + HuPrcVSleep(); + } + BoardFilterFadeOut(30); + BoardAudSeqFadeOut(1, 1000); + HuPrcSleep(30); + BoardAudSeqFadeOutFast(1); + BoardMusStart(1, 11, 127, 0); + HuAudFXPlay(62); + BoardWinCreate(2, MAKE_MESSID(3, 0), 6); + BoardWinWait(); + if(BoardRandMod(100) < 70) { + MiniBowserTake(); + } else { + MiniBowserTakeAll(); + } + //5% chance bowser will appear after baby bowser + if(BoardRandMod(100) < 5) { + doneF = 1; + } + if(doneF) { + HuPrcSleep(60); + BoardWinCreate(2, MAKE_MESSID(3, 6), 6); + BoardWinWait(); + BoardWinKill(); + HuAudFXPlay(62); + SetMiniBowserMotion(6, 10, 1); + HuPrcSleep(60); + } else { + HuAudFXPlay(62); + BoardWinCreate(2, MAKE_MESSID(3, 2), 6); + BoardWinWait(); + BoardWinKill(); + BoardAudSeqFadeOut(1, 1000); + SetMiniBowserMotion(4, 10, 1); + HuPrcSleep(30); + } + SetMiniBowserBalloonState(1); + while(GetMiniBowserBalloonState() != 2) { + HuPrcVSleep(); + } + MiniBowserBalloonStop(); + return doneF; } static void MiniBowserTake(void) { - u8 coinSteal[][3] = { - 20, 20, 30, - 20, 20, 30, - 10, 15, 20, - 10, 15, 20 - }; - s32 coin_inc; - s32 game_part; - u8 steal; - s32 i; - u32 mess; - s32 delay; - s32 turn; - s32 turn_max; - turn = GWSystem.turn-1; - turn_max = GWSystem.max_turn; - game_part = turn/(turn_max/3); - if(game_part >= 3) { - game_part = 2; - } - steal = (u8)coinSteal[GWPlayer[eventPlayer].rank][game_part]; - sprintf(coinStealStrAll, "%d", steal); - SetMiniBowserMotion(2, 10, 0); - if(steal >= 20) { - delay = 3; - } else { - delay = 6; - } - if(BoardPlayerCoinsGet(eventPlayer) != 0) { - mess = MAKE_MESSID(3, 1); - coin_inc = -1; - } else { - mess = MAKE_MESSID(3, 3); - steal = 10; - coin_inc = 1; - } - HuAudFXPlay(62); - BoardWinCreate(2, mess, 6); - BoardWinInsertMesSet(MAKE_MESSID_PTR(coinStealStrAll), 0); - BoardWinWait(); - if(coin_inc > 0) { - SetMiniBowserMotion(5, 10, 0); - } else { - SetMiniBowserMotion(3, 10, 1); - } - if(coin_inc < 0) { - omVibrate(eventPlayer, 12, 6, 6); - } - if(coin_inc < 0) { - BoardPlayerMotionShiftSet(eventPlayer, 13, 0.0f, 4.0f, HU3D_MOTATTR_NONE); - } else { - BoardPlayerMotionShiftSet(eventPlayer, 12, 0.0f, 4.0f, HU3D_MOTATTR_NONE); - } - for(i=0; i= 3) { + game_part = 2; + } + steal = (u8)coinSteal[GWPlayer[eventPlayer].rank][game_part]; + sprintf(coinStealStrAll, "%d", steal); + SetMiniBowserMotion(2, 10, 0); + if(steal >= 20) { + delay = 3; + } else { + delay = 6; + } + if(BoardPlayerCoinsGet(eventPlayer) != 0) { + mess = MAKE_MESSID(3, 1); + coin_inc = -1; + } else { + mess = MAKE_MESSID(3, 3); + steal = 10; + coin_inc = 1; + } + HuAudFXPlay(62); + BoardWinCreate(2, mess, 6); + BoardWinInsertMesSet(MAKE_MESSID_PTR(coinStealStrAll), 0); + BoardWinWait(); + if(coin_inc > 0) { + SetMiniBowserMotion(5, 10, 0); + } else { + SetMiniBowserMotion(3, 10, 1); + } + if(coin_inc < 0) { + omVibrate(eventPlayer, 12, 6, 6); + } + if(coin_inc < 0) { + BoardPlayerMotionShiftSet(eventPlayer, 13, 0.0f, 4.0f, HU3D_MOTATTR_NONE); + } else { + BoardPlayerMotionShiftSet(eventPlayer, 12, 0.0f, 4.0f, HU3D_MOTATTR_NONE); + } + for(i=0; i= 3) { - game_part = 2; - } - steal = (u8)coinSteal[game_part]; - sprintf(coinStealStr, "%d", steal); - SetMiniBowserMotion(2, 10, 0); - for(coin_total=j=0; j<4; j++) { - coin_total += BoardPlayerCoinsGet(j); - } - if(coin_total != 0) { - mess = MAKE_MESSID(3, 4); - coin_inc = -1; - } else { - mess = MAKE_MESSID(3, 5); - steal = 10; - coin_inc = 1; - } - HuAudFXPlay(62); - BoardWinCreate(2, mess, 6); - BoardWinInsertMesSet(MAKE_MESSID_PTR(coinStealStr), 0); - BoardWinWait(); - if(coin_inc > 0) { - SetMiniBowserMotion(5, 10, 0); - } else { - SetMiniBowserMotion(3, 10, 1); - } - if(coin_inc < 0) { - for(i=0; i<4; i++) { - omVibrate(i, 12, 6, 6); - } - } - for(i=0; i<4; i++) { - if(coin_inc < 0) { - BoardPlayerMotionShiftSet(i, 13, 0.0f, 4.0f, HU3D_MOTATTR_NONE); - } else { - BoardPlayerMotionShiftSet(i, 12, 0.0f, 4.0f, HU3D_MOTATTR_NONE); - } - } - if(steal >= 20) { - delay = 3; - } else { - delay = 6; - } - for(i=0; i= 3) { + game_part = 2; + } + steal = (u8)coinSteal[game_part]; + sprintf(coinStealStr, "%d", steal); + SetMiniBowserMotion(2, 10, 0); + for(coin_total=j=0; j<4; j++) { + coin_total += BoardPlayerCoinsGet(j); + } + if(coin_total != 0) { + mess = MAKE_MESSID(3, 4); + coin_inc = -1; + } else { + mess = MAKE_MESSID(3, 5); + steal = 10; + coin_inc = 1; + } + HuAudFXPlay(62); + BoardWinCreate(2, mess, 6); + BoardWinInsertMesSet(MAKE_MESSID_PTR(coinStealStr), 0); + BoardWinWait(); + if(coin_inc > 0) { + SetMiniBowserMotion(5, 10, 0); + } else { + SetMiniBowserMotion(3, 10, 1); + } + if(coin_inc < 0) { + for(i=0; i<4; i++) { + omVibrate(i, 12, 6, 6); + } + } + for(i=0; i<4; i++) { + if(coin_inc < 0) { + BoardPlayerMotionShiftSet(i, 13, 0.0f, 4.0f, HU3D_MOTATTR_NONE); + } else { + BoardPlayerMotionShiftSet(i, 12, 0.0f, 4.0f, HU3D_MOTATTR_NONE); + } + } + if(steal >= 20) { + delay = 3; + } else { + delay = 6; + } + for(i=0; ikill = 1; - } + if(miniBowserBalloonObj) { + OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork)->kill = 1; + } } static s32 GetMiniBowserBalloonState(void) { - return OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork)->state; + return OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork)->state; } static void SetMiniBowserBalloonState(s32 state) { - OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork)->state = state; + OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork)->state = state; } static void CreateMiniBowserBalloon(void) { - MiniBowserBalloonWork *work; - s16 *models; - Vec pos; - miniBowserBalloonObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecMiniBowserBalloon); - work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); - work->kill = 0; - work->state = 0; - work->timer = 0; - work->offset = 0; - work->angle = 0; - work->models = HuMemDirectMallocNum(HEAP_SYSTEM, 9*sizeof(s16), MEMORY_DEFAULT_NUM); - models = work->models; - models[0] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 14), (s32 *)miniBowserMotTbl, 0); - models[1] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 0), NULL, 0); - BoardPlayerPosGet(eventPlayer, &pos); - miniBowserBalloonObj->trans.x = pos.x; - miniBowserBalloonObj->trans.y = pos.y+800.0f; - miniBowserBalloonObj->trans.z = pos.z; - BoardModelHookSet(models[1], "minik01", models[0]); - BoardModelPosSet(models[1], miniBowserBalloonObj->trans.x, - miniBowserBalloonObj->trans.y, - miniBowserBalloonObj->trans.z); - SetMiniBowserMotion(1, 0, 1); + MiniBowserBalloonWork *work; + s16 *models; + Vec pos; + miniBowserBalloonObj = omAddObjEx(boardObjMan, 257, 0, 0, -1, ExecMiniBowserBalloon); + work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); + work->kill = 0; + work->state = 0; + work->timer = 0; + work->offset = 0; + work->angle = 0; + work->models = HuMemDirectMallocNum(HEAP_SYSTEM, 9*sizeof(s16), MEMORY_DEFAULT_NUM); + models = work->models; + models[0] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 14), (s32 *)miniBowserMotTbl, 0); + models[1] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BKOOPA, 0), NULL, 0); + BoardPlayerPosGet(eventPlayer, &pos); + miniBowserBalloonObj->trans.x = pos.x; + miniBowserBalloonObj->trans.y = pos.y+800.0f; + miniBowserBalloonObj->trans.z = pos.z; + BoardModelHookSet(models[1], "minik01", models[0]); + BoardModelPosSet(models[1], miniBowserBalloonObj->trans.x, + miniBowserBalloonObj->trans.y, + miniBowserBalloonObj->trans.z); + SetMiniBowserMotion(1, 0, 1); } static void ExecMiniBowserBalloon(omObjData *object) { - MiniBowserBalloonWork *work; - s16 *models; - work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); - models = work->models; - if(work->kill || BoardIsKill()) { - BoardModelKill(models[0]); - BoardModelKill(models[1]); - HuMemDirectFree(work->models); - miniBowserBalloonObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(work->timer) { - work->timer--; - } else { - switch(work->state) { - case 0: - MiniBowserBalloonFall(work, object); - break; - - case 1: - MiniBowserBalloonRaise(work, object); - break; - - case 2: - MiniBowserBalloonHover(work, object); - break; - } - } - BoardModelPosSet(models[1], object->trans.x, object->trans.y+work->offset, object->trans.z); + MiniBowserBalloonWork *work; + s16 *models; + work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); + models = work->models; + if(work->kill || BoardIsKill()) { + BoardModelKill(models[0]); + BoardModelKill(models[1]); + HuMemDirectFree(work->models); + miniBowserBalloonObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if(work->timer) { + work->timer--; + } else { + switch(work->state) { + case 0: + MiniBowserBalloonFall(work, object); + break; + + case 1: + MiniBowserBalloonRaise(work, object); + break; + + case 2: + MiniBowserBalloonHover(work, object); + break; + } + } + BoardModelPosSet(models[1], object->trans.x, object->trans.y+work->offset, object->trans.z); } static void MiniBowserBalloonHover(MiniBowserBalloonWork *work, omObjData *object) { - float angle; - work->angle++; - if(work->angle >= 360) { - work->angle = 0; - } - OSs16tof32(&work->angle, &angle); - work->offset = 10.0*sin(M_PI*angle/180.0); + float angle; + work->angle++; + if(work->angle >= 360) { + work->angle = 0; + } + OSs16tof32(&work->angle, &angle); + work->offset = 10.0*sind(angle); } static void MiniBowserBalloonFall(MiniBowserBalloonWork *work, omObjData *object) { - Vec pos; - BoardPlayerPosGet(eventPlayer, &pos); - pos.y += 250.0f; - if(object->trans.y < pos.y) { - object->trans.y = pos.y; - work->state = 2; - } else { - object->trans.y += -10.0f; - } + Vec pos; + BoardPlayerPosGet(eventPlayer, &pos); + pos.y += 250.0f; + if(object->trans.y < pos.y) { + object->trans.y = pos.y; + work->state = 2; + } else { + object->trans.y += -10.0f; + } } static void MiniBowserBalloonRaise(MiniBowserBalloonWork *work, omObjData *object) { - Vec pos; - BoardPlayerPosGet(eventPlayer, &pos); - pos.y += 800.0f; - if(object->trans.y > pos.y) { - work->state = 2; - } else { - object->trans.y += 10.0f; - } + Vec pos; + BoardPlayerPosGet(eventPlayer, &pos); + pos.y += 800.0f; + if(object->trans.y > pos.y) { + work->state = 2; + } else { + object->trans.y += 10.0f; + } } static void SetMiniBowserMotion(s32 mot, u8 end, s32 pause) { - s16 *models; - u32 attr; - float shift_end; - MiniBowserBalloonWork *work; - work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); - models = work->models; - if(pause) { - attr = HU3D_MOTATTR_LOOP; - } else { - attr = HU3D_MOTATTR_NONE; - } - if(end) { - OSu8tof32(&end, &shift_end); - BoardModelMotionShiftSet(models[0], mot, 0, shift_end, attr); - } else { - BoardModelMotionStart(models[0], mot, attr); - } + s16 *models; + u32 attr; + float shift_end; + MiniBowserBalloonWork *work; + work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); + models = work->models; + if(pause) { + attr = HU3D_MOTATTR_LOOP; + } else { + attr = HU3D_MOTATTR_NONE; + } + if(end) { + OSu8tof32(&end, &shift_end); + BoardModelMotionShiftSet(models[0], mot, 0, shift_end, attr); + } else { + BoardModelMotionStart(models[0], mot, attr); + } } static void SetMiniBowserMotionPause(s32 flag) { - s16 *models; - MiniBowserBalloonWork *work; - work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); - models = work->models; - if(flag) { - BoardModelAttrSet(models[0], 0x40000001); - } else { - BoardModelAttrReset(models[0], 0x40000001); - } + s16 *models; + MiniBowserBalloonWork *work; + work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); + models = work->models; + if(flag) { + BoardModelAttrSet(models[0], 0x40000001); + } else { + BoardModelAttrReset(models[0], 0x40000001); + } } static void WaitMiniBowserMotion(void) { - s16 *models; - MiniBowserBalloonWork *work; - work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); - models = work->models; - BoardModelAttrReset(models[0], 0x40000001); - while(!BoardModelMotionEndCheck(models[0])) { - HuPrcVSleep(); - } + s16 *models; + MiniBowserBalloonWork *work; + work = OM_GET_WORK_PTR(miniBowserBalloonObj, MiniBowserBalloonWork); + models = work->models; + BoardModelAttrReset(models[0], 0x40000001); + while(!BoardModelMotionEndCheck(models[0])) { + HuPrcVSleep(); + } } diff --git a/src/game/board/main.c b/src/game/board/main.c index 119780c2..68440f98 100644 --- a/src/game/board/main.c +++ b/src/game/board/main.c @@ -1,5 +1,5 @@ #include "game/gamework_data.h" -#include "math.h" +#include "ext_math.h" #include "game/object.h" #include "game/flag.h" #include "game/data.h" @@ -23,9 +23,9 @@ #include "game/msm.h" typedef struct camera_view { - s16 x_rot; - s16 zoom; - s16 fov; + s16 x_rot; + s16 zoom; + s16 fov; } CameraView; omObjData *boardMainObj; @@ -54,12 +54,12 @@ static BoardCameraData cameraBackup; static OverlayID nextOvl = OVL_INVALID; static CameraView camViewTbl[] = { - { 0, 0, 25 }, - { -33, 3200, 25 }, - { -33, 2100, 25 }, - { -33, 1800, 25 }, - { -33, 12640, 25 }, - { -33, 3200, 25 }, + { 0, 0, 25 }, + { -33, 3200, 25 }, + { -33, 2100, 25 }, + { -33, 1800, 25 }, + { -33, 12640, 25 }, + { -33, 3200, 25 }, }; @@ -83,1181 +83,1181 @@ static void DestroyBoard(void); void BoardObjectSetup(BoardFunc create, BoardFunc destroy) { - omSysPauseEnable(FALSE); - if(!_CheckFlag(FLAG_ID_MAKE(1, 0))) { - _SetFlag(FLAG_ID_MAKE(1, 0)); - _ClearFlag(FLAG_ID_MAKE(2, 1)); - _ClearFlag(FLAG_ID_MAKE(2, 3)); - _ClearFlag(FLAG_ID_MAKE(2, 0)); - _ClearFlag(FLAG_ID_MAKE(2, 2)); - _ClearFlag(FLAG_ID_MAKE(2, 4)); - _ClearFlag(FLAG_ID_MAKE(2, 5)); - _ClearFlag(FLAG_ID_MAKE(1, 6)); - _ClearFlag(FLAG_ID_MAKE(1, 9)); - _ClearFlag(FLAG_ID_MAKE(0, 8)); - _ClearFlag(FLAG_ID_MAKE(0, 10)); - BoardMGSetupPlayClear(); - } - - nextOvl = OVL_INVALID; - _SetFlag(FLAG_ID_MAKE(1, 28)); - _SetFlag(FLAG_ID_MAKE(1, 14)); - _ClearFlag(FLAG_ID_MAKE(1, 16)); - _ClearFlag(FLAG_ID_MAKE(1, 17)); - _ClearFlag(FLAG_ID_MAKE(1, 18)); - _ClearFlag(FLAG_ID_MAKE(1, 19)); - _ClearFlag(FLAG_ID_MAKE(1, 20)); - _ClearFlag(FLAG_ID_MAKE(1, 21)); - _ClearFlag(FLAG_ID_MAKE(1, 23)); - _ClearFlag(FLAG_ID_MAKE(1, 24)); - _ClearFlag(FLAG_ID_MAKE(1, 25)); - _ClearFlag(FLAG_ID_MAKE(1, 27)); - createFunc = create; - destroyFunc = destroy; - boardTurnFunc = NULL; - boardStarShowNextHook = NULL; - boardBowserHook = NULL; - boardStarGiveHook = NULL; - boardTurnStartFunc = NULL; - boardObjMan = omInitObjMan(64, 8192); - omSystemKeyCheckSetup(boardObjMan); - boardMainObj = omAddObjEx(boardObjMan, 0, 0, 0, -1, InitBoardFunc); - switch(omcurovl) { - case OVL_W01: - GWSystem.board = BOARD_ID_MAIN1; - break; - - case OVL_W02: - GWSystem.board = BOARD_ID_MAIN2; - break; - - case OVL_W03: - GWSystem.board = BOARD_ID_MAIN3; - break; - - case OVL_W04: - GWSystem.board = BOARD_ID_MAIN4; - break; - - case OVL_W05: - GWSystem.board = BOARD_ID_MAIN5; - break; - - case OVL_W06: - GWSystem.board = BOARD_ID_MAIN6; - break; - - case OVL_W10: - GWSystem.board = BOARD_ID_TUTORIAL; - break; - - case OVL_W20: - GWSystem.board = BOARD_ID_EXTRA1; - break; - - case OVL_W21: - GWSystem.board = BOARD_ID_EXTRA2; - break; - } + omSysPauseEnable(FALSE); + if(!_CheckFlag(FLAG_ID_MAKE(1, 0))) { + _SetFlag(FLAG_ID_MAKE(1, 0)); + _ClearFlag(FLAG_ID_MAKE(2, 1)); + _ClearFlag(FLAG_ID_MAKE(2, 3)); + _ClearFlag(FLAG_ID_MAKE(2, 0)); + _ClearFlag(FLAG_ID_MAKE(2, 2)); + _ClearFlag(FLAG_ID_MAKE(2, 4)); + _ClearFlag(FLAG_ID_MAKE(2, 5)); + _ClearFlag(FLAG_ID_MAKE(1, 6)); + _ClearFlag(FLAG_ID_MAKE(1, 9)); + _ClearFlag(FLAG_ID_MAKE(0, 8)); + _ClearFlag(FLAG_ID_MAKE(0, 10)); + BoardMGSetupPlayClear(); + } + + nextOvl = OVL_INVALID; + _SetFlag(FLAG_ID_MAKE(1, 28)); + _SetFlag(FLAG_ID_MAKE(1, 14)); + _ClearFlag(FLAG_ID_MAKE(1, 16)); + _ClearFlag(FLAG_ID_MAKE(1, 17)); + _ClearFlag(FLAG_ID_MAKE(1, 18)); + _ClearFlag(FLAG_ID_MAKE(1, 19)); + _ClearFlag(FLAG_ID_MAKE(1, 20)); + _ClearFlag(FLAG_ID_MAKE(1, 21)); + _ClearFlag(FLAG_ID_MAKE(1, 23)); + _ClearFlag(FLAG_ID_MAKE(1, 24)); + _ClearFlag(FLAG_ID_MAKE(1, 25)); + _ClearFlag(FLAG_ID_MAKE(1, 27)); + createFunc = create; + destroyFunc = destroy; + boardTurnFunc = NULL; + boardStarShowNextHook = NULL; + boardBowserHook = NULL; + boardStarGiveHook = NULL; + boardTurnStartFunc = NULL; + boardObjMan = omInitObjMan(64, 8192); + omSystemKeyCheckSetup(boardObjMan); + boardMainObj = omAddObjEx(boardObjMan, 0, 0, 0, -1, InitBoardFunc); + switch(omcurovl) { + case OVL_W01: + GWSystem.board = BOARD_ID_MAIN1; + break; + + case OVL_W02: + GWSystem.board = BOARD_ID_MAIN2; + break; + + case OVL_W03: + GWSystem.board = BOARD_ID_MAIN3; + break; + + case OVL_W04: + GWSystem.board = BOARD_ID_MAIN4; + break; + + case OVL_W05: + GWSystem.board = BOARD_ID_MAIN5; + break; + + case OVL_W06: + GWSystem.board = BOARD_ID_MAIN6; + break; + + case OVL_W10: + GWSystem.board = BOARD_ID_TUTORIAL; + break; + + case OVL_W20: + GWSystem.board = BOARD_ID_EXTRA1; + break; + + case OVL_W21: + GWSystem.board = BOARD_ID_EXTRA2; + break; + } } static void InitBoardFunc(omObjData *object) { - boardMainProc = HuPrcChildCreate(MainFunc, 8194, 0x6000, 0, boardObjMan); - HuPrcDestructorSet2(boardMainProc, DestroyMainFunc); - object->func = ExecBoardFunc; + boardMainProc = HuPrcChildCreate(MainFunc, 8194, 0x6000, 0, boardObjMan); + HuPrcDestructorSet2(boardMainProc, DestroyMainFunc); + object->func = ExecBoardFunc; } static void ExecBoardFunc(omObjData *object) { - if(!_CheckFlag(FLAG_ID_MAKE(1, 16))) { - return; - } - if(!_CheckFlag(FLAG_ID_MAKE(1, 17))) { - if(omSysExitReq) { - BoardKill(); - } else { - if(BoardPauseReqCheck()) { - BoardPauseStart(); - } else { - return; - } - } - } else { - if(boardMainProc) { - HuPrcKill(boardMainProc); - } - object->func = KillBoardFunc; - } + if(!_CheckFlag(FLAG_ID_MAKE(1, 16))) { + return; + } + if(!_CheckFlag(FLAG_ID_MAKE(1, 17))) { + if(omSysExitReq) { + BoardKill(); + } else { + if(BoardPauseReqCheck()) { + BoardPauseStart(); + } else { + return; + } + } + } else { + if(boardMainProc) { + HuPrcKill(boardMainProc); + } + object->func = KillBoardFunc; + } } static void KillBoardFunc(omObjData *object) { - if(boardMainProc) { - return; - } - if(WipeStatGet()) { - return; - return_alt: - return; - } else { - if(HuARDMACheck()) { - goto return_alt; - } - if(nextOvl != OVL_INVALID) { - omOvlCallEx(nextOvl, 1, 0, 0); - } else { - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - BoardTutorialKill(); - BoardTutorialWorkRestore(); - } - _ClearFlag(FLAG_ID_MAKE(1, 0)); - HuARDirFree(DATADIR_BOARD); - if(_CheckFlag(FLAG_ID_MAKE(1, 27))) { - omOvlReturnEx(2, 1); - } else { - omOvlReturnEx(1, 1); - } - } - } + if(boardMainProc) { + return; + } + if(WipeStatGet()) { + return; + return_alt: + return; + } else { + if(HuARDMACheck()) { + goto return_alt; + } + if(nextOvl != OVL_INVALID) { + omOvlCallEx(nextOvl, 1, 0, 0); + } else { + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + BoardTutorialKill(); + BoardTutorialWorkRestore(); + } + _ClearFlag(FLAG_ID_MAKE(1, 0)); + HuARDirFree(DATADIR_BOARD); + if(_CheckFlag(FLAG_ID_MAKE(1, 27))) { + omOvlReturnEx(2, 1); + } else { + omOvlReturnEx(1, 1); + } + } + } } void BoardKill(void) { - _SetFlag(FLAG_ID_MAKE(1, 28)); - _SetFlag(FLAG_ID_MAKE(1, 14)); - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - BoardTutorialHookExec(29, 0); - } - HuAudFXAllStop(); - if(!BoardStartCheck()) { - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - boardTutorialF = 1; - while(WipeStatGet()) { - HuPrcVSleep(); - } - } - _SetFlag(FLAG_ID_MAKE(1, 17)); - HuPrcKill(boardMainProc); - DestroyBoard(); + _SetFlag(FLAG_ID_MAKE(1, 28)); + _SetFlag(FLAG_ID_MAKE(1, 14)); + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + BoardTutorialHookExec(29, 0); + } + HuAudFXAllStop(); + if(!BoardStartCheck()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + boardTutorialF = 1; + while(WipeStatGet()) { + HuPrcVSleep(); + } + } + _SetFlag(FLAG_ID_MAKE(1, 17)); + HuPrcKill(boardMainProc); + DestroyBoard(); } s32 BoardIsKill(void) { - return (_CheckFlag(FLAG_ID_MAKE(1, 17))) ? 1 : 0; + return (_CheckFlag(FLAG_ID_MAKE(1, 17))) ? 1 : 0; } void BoardPauseDisableSet(s32 value) { - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - _SetFlag(FLAG_ID_MAKE(1, 25)); - omSysPauseEnable(FALSE); - } else { - if(value) { - _SetFlag(FLAG_ID_MAKE(1, 25)); - } else { - _ClearFlag(FLAG_ID_MAKE(1, 25)); - } - } + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + _SetFlag(FLAG_ID_MAKE(1, 25)); + omSysPauseEnable(FALSE); + } else { + if(value) { + _SetFlag(FLAG_ID_MAKE(1, 25)); + } else { + _ClearFlag(FLAG_ID_MAKE(1, 25)); + } + } } s32 BoardPauseDisableGet() { - return (_CheckFlag(FLAG_ID_MAKE(1, 25))) ? 1 : 0; + return (_CheckFlag(FLAG_ID_MAKE(1, 25))) ? 1 : 0; } void BoardSaveInit(s32 board) { - s32 i; - GWSystem.board = board; - _ClearFlag(FLAG_ID_MAKE(1, 0)); - _ClearFlag(FLAG_ID_MAKE(1, 1)); - _ClearFlag(FLAG_ID_MAKE(1, 5)); - _ClearFlag(FLAG_ID_MAKE(1, 4)); - _ClearFlag(FLAG_ID_MAKE(1, 6)); - _ClearFlag(FLAG_ID_MAKE(1, 2)); - _ClearFlag(FLAG_ID_MAKE(1, 9)); - _ClearFlag(FLAG_ID_MAKE(1, 7)); - _ClearFlag(FLAG_ID_MAKE(1, 8)); - _ClearFlag(FLAG_ID_MAKE(0, 8)); - _ClearFlag(FLAG_ID_MAKE(1, 12)); - _ClearFlag(FLAG_ID_MAKE(1, 3)); - GWSystem.turn = 1; - GWSystem.star_flag = 0; - GWSystem.star_pos = 0; - GWSystem.star_total = 1; - GWSystem.last5_effect = 0; - GWSystem.player_curr = -1; - GWSystem.bowser_loss = 0; - GWSystem.bowser_event = 0; - GWSystem.lucky_value = 1; - GWSystem.mg_next = 0; - GWMGTypeSet(0); - GWSystem.unk_38 = 0; - GWSystem.block_pos = 0; - memset(GWSystem.board_data, 0, sizeof(GWSystem.board_data)); - for(i=0; i<4; i++) { - s32 party_flag; - BoardPlayerAutoSizeSet(i, 0); - GWPlayer[i].draw_ticket = 0; - GWPlayer[i].color = 0; - GWPlayer[i].bowser_suit = 0; - GWPlayer[i].jump = 0; - GWPlayer[i].space_shock = 0; - GWPlayer[i].spark = 0; - GWPlayer[i].show_next = 1; - BoardPlayerCoinsSet(i, 0); - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - GWSystem.team = 0; - } - GWPlayer[i].blue_count = 0; - GWPlayer[i].red_count = 0; - GWPlayer[i].question_count = 0; - GWPlayer[i].fortune_count = 0; - GWPlayer[i].bowser_count = 0; - GWPlayer[i].battle_count = 0; - GWPlayer[i].mushroom_count = 0; - GWPlayer[i].warp_count = 0; - GWPlayer[i].coins_mg = 0; - GWPlayer[i].coins_total = 0; - GWPlayer[i].coins_max = 0; - GWPlayer[i].stars_max = 0; - GWPlayer[i].coins_battle = 0; - GWPlayer[i].coin_collect = 0; - GWPlayer[i].coin_win = 0; - GWPlayer[i].items[0] = -1; - GWPlayer[i].items[1] = -1; - GWPlayer[i].items[2] = -1; - if(GWPartyGet() == 0 || _CheckFlag(FLAG_ID_MAKE(1, 11))) { - GWStarsSet(i, 0); - } else { - GWStarsSet(i, BoardPlayerHandicapGet(i)); - } - } + s32 i; + GWSystem.board = board; + _ClearFlag(FLAG_ID_MAKE(1, 0)); + _ClearFlag(FLAG_ID_MAKE(1, 1)); + _ClearFlag(FLAG_ID_MAKE(1, 5)); + _ClearFlag(FLAG_ID_MAKE(1, 4)); + _ClearFlag(FLAG_ID_MAKE(1, 6)); + _ClearFlag(FLAG_ID_MAKE(1, 2)); + _ClearFlag(FLAG_ID_MAKE(1, 9)); + _ClearFlag(FLAG_ID_MAKE(1, 7)); + _ClearFlag(FLAG_ID_MAKE(1, 8)); + _ClearFlag(FLAG_ID_MAKE(0, 8)); + _ClearFlag(FLAG_ID_MAKE(1, 12)); + _ClearFlag(FLAG_ID_MAKE(1, 3)); + GWSystem.turn = 1; + GWSystem.star_flag = 0; + GWSystem.star_pos = 0; + GWSystem.star_total = 1; + GWSystem.last5_effect = 0; + GWSystem.player_curr = -1; + GWSystem.bowser_loss = 0; + GWSystem.bowser_event = 0; + GWSystem.lucky_value = 1; + GWSystem.mg_next = 0; + GWMGTypeSet(0); + GWSystem.unk_38 = 0; + GWSystem.block_pos = 0; + memset(GWSystem.board_data, 0, sizeof(GWSystem.board_data)); + for(i=0; i<4; i++) { + s32 party_flag; + BoardPlayerAutoSizeSet(i, 0); + GWPlayer[i].draw_ticket = 0; + GWPlayer[i].color = 0; + GWPlayer[i].bowser_suit = 0; + GWPlayer[i].jump = 0; + GWPlayer[i].space_shock = 0; + GWPlayer[i].spark = 0; + GWPlayer[i].show_next = 1; + BoardPlayerCoinsSet(i, 0); + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + GWSystem.team = 0; + } + GWPlayer[i].blue_count = 0; + GWPlayer[i].red_count = 0; + GWPlayer[i].question_count = 0; + GWPlayer[i].fortune_count = 0; + GWPlayer[i].bowser_count = 0; + GWPlayer[i].battle_count = 0; + GWPlayer[i].mushroom_count = 0; + GWPlayer[i].warp_count = 0; + GWPlayer[i].coins_mg = 0; + GWPlayer[i].coins_total = 0; + GWPlayer[i].coins_max = 0; + GWPlayer[i].stars_max = 0; + GWPlayer[i].coins_battle = 0; + GWPlayer[i].coin_collect = 0; + GWPlayer[i].coin_win = 0; + GWPlayer[i].items[0] = -1; + GWPlayer[i].items[1] = -1; + GWPlayer[i].items[2] = -1; + if(GWPartyGet() == 0 || _CheckFlag(FLAG_ID_MAKE(1, 11))) { + GWStarsSet(i, 0); + } else { + GWStarsSet(i, BoardPlayerHandicapGet(i)); + } + } } void BoardStoryConfigSet(s32 mg_list, s32 diff_story) { - GWSystem.party = 0; - GWSystem.team = 0; - GWSystem.diff_story = diff_story; - GWSystem.bonus_star = 0; - GWMGListSet(mg_list); - GWPlayer[0].handicap = 0; - GWPlayer[1].handicap = 0; - GWPlayer[2].handicap = 0; - GWPlayer[3].handicap = 0; - GWSystem.max_turn = 15; - memset(GWPlayer, 0, 4*sizeof(PlayerState)); - _ClearFlag(FLAG_ID_MAKE(0, 2)); - _ClearFlag(FLAG_ID_MAKE(0, 3)); - _ClearFlag(FLAG_ID_MAKE(0, 4)); - _ClearFlag(FLAG_ID_MAKE(0, 5)); - _ClearFlag(FLAG_ID_MAKE(0, 6)); - _ClearFlag(FLAG_ID_MAKE(0, 7)); - _ClearFlag(FLAG_ID_MAKE(1, 11)); - _SetFlag(FLAG_ID_MAKE(0, 11)); - _SetFlag(FLAG_ID_MAKE(1, 10)); + GWSystem.party = 0; + GWSystem.team = 0; + GWSystem.diff_story = diff_story; + GWSystem.bonus_star = 0; + GWMGListSet(mg_list); + GWPlayer[0].handicap = 0; + GWPlayer[1].handicap = 0; + GWPlayer[2].handicap = 0; + GWPlayer[3].handicap = 0; + GWSystem.max_turn = 15; + memset(GWPlayer, 0, 4*sizeof(PlayerState)); + _ClearFlag(FLAG_ID_MAKE(0, 2)); + _ClearFlag(FLAG_ID_MAKE(0, 3)); + _ClearFlag(FLAG_ID_MAKE(0, 4)); + _ClearFlag(FLAG_ID_MAKE(0, 5)); + _ClearFlag(FLAG_ID_MAKE(0, 6)); + _ClearFlag(FLAG_ID_MAKE(0, 7)); + _ClearFlag(FLAG_ID_MAKE(1, 11)); + _SetFlag(FLAG_ID_MAKE(0, 11)); + _SetFlag(FLAG_ID_MAKE(1, 10)); } void BoardPartyConfigSet(s32 team, s32 bonus_star, s32 mg_list, s32 max_turn, s32 p1_handicap, s32 p2_handicap, s32 p3_handicap, s32 p4_handicap) { - GWSystem.party = 1; - GWSystem.team = team; - GWSystem.diff_story = 0; - GWSystem.bonus_star = bonus_star; - GWMGListSet(mg_list); - GWSystem.max_turn = max_turn; - memset(GWPlayer, 0, 4*sizeof(PlayerState)); - GWPlayer[0].handicap = p1_handicap; - GWPlayer[1].handicap = p2_handicap; - GWPlayer[2].handicap = p3_handicap; - GWPlayer[3].handicap = p4_handicap; - _ClearFlag(FLAG_ID_MAKE(1, 11)); - _SetFlag(FLAG_ID_MAKE(0, 11)); - _SetFlag(FLAG_ID_MAKE(1, 10)); + GWSystem.party = 1; + GWSystem.team = team; + GWSystem.diff_story = 0; + GWSystem.bonus_star = bonus_star; + GWMGListSet(mg_list); + GWSystem.max_turn = max_turn; + memset(GWPlayer, 0, 4*sizeof(PlayerState)); + GWPlayer[0].handicap = p1_handicap; + GWPlayer[1].handicap = p2_handicap; + GWPlayer[2].handicap = p3_handicap; + GWPlayer[3].handicap = p4_handicap; + _ClearFlag(FLAG_ID_MAKE(1, 11)); + _SetFlag(FLAG_ID_MAKE(0, 11)); + _SetFlag(FLAG_ID_MAKE(1, 10)); } static void DestroyMainFunc(void) { - boardMainProc = NULL; + boardMainProc = NULL; } #define CHECK_LAST5_TURN() ((s32)(GWSystem.max_turn-GWSystem.turn) < 5) static void MainFunc(void) { - s32 i; - s32 fade_enable, turn_cont, fade_type; - fade_enable = 0; - turn_cont = 0; - BoardPauseDisableSet(1); - if(_CheckFlag(FLAG_ID_MAKE(0, 10))) { - _ClearFlag(FLAG_ID_MAKE(0, 10)); - _SetFlag(FLAG_ID_MAKE(1, 16)); - BoardKill(); - HuPrcSleep(-1); - } - _ClearFlag(FLAG_ID_MAKE(0, 10)); - BoardTutorialInit(); - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - BoardTutorialWorkSave(); - BoardTutorialPlayerInit(); - #if VERSION_PAL - GWMessSpeedSet(3); - #else - GWMessSpeedSet(1); - #endif - } - CreateBoard(); - if(!_CheckFlag(FLAG_ID_MAKE(1, 1))) { - GWSystem.player_curr = -1; - BoardStartExec(); - GWSystem.player_curr = 0; - fade_enable = 1; - _SetFlag(FLAG_ID_MAKE(1, 1)); - } else { - fade_enable = 0; - } - if(ExecTurnStart()) { - turn_cont = 1; - } - if(CHECK_LAST5_TURN() && GWSystem.player_curr == 0 && !turn_cont) { - if(!_CheckFlag(FLAG_ID_MAKE(0, 8))) { - BoardLast5Exec(); - _SetFlag(FLAG_ID_MAKE(0, 8)); - } else { - BoardLast5GfxInit(); - } - } - if(!turn_cont) { - fade_type = 1; - } else { - fade_type = 0; - } - _ClearFlag(FLAG_ID_MAKE(1, 28)); - do { - BoardStatusShowSetAll(1); - if(GWBoardGet() == BOARD_ID_MAIN6 && GWSystem.player_curr == 0 && !turn_cont && boardTurnFunc) { - GWSystem.player_curr = -1; - boardTurnFunc(); - GWSystem.player_curr = 0; - } - BoardMusStartBoard(); - for(i=GWSystem.player_curr; i<4; i++) { - if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { - if(CHECK_LAST5_TURN() && i == 0 && !turn_cont) { - BoardLast5GfxInit(); - _SetFlag(FLAG_ID_MAKE(0, 8)); - } - } - if(_CheckFlag(FLAG_ID_MAKE(1, 6))) { - BoardPlayerTurnExec(i); - } else { - if(!turn_cont) { - BoardCameraMoveSet(0); - GWSystem.player_curr = i; - BoardCameraTargetPlayerSet(i); - BoardCameraMotionWait(); - { - Vec pos; - BoardSpacePosGet(0, GWPlayer[i].space_curr, &pos); - BoardPlayerPosSetV(i, &pos); - } - while(WipeStatGet()) { - HuPrcVSleep(); - } - if(!fade_enable) { - if(!fade_type) { - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, 30); - while(WipeStatGet()) { - HuPrcVSleep(); - } - } else { - fade_type = 0; - WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); - while(WipeStatGet()) { - HuPrcVSleep(); - } - } - } else { - fade_enable = 0; - } - BoardPlayerTurnExec(i); - } - } - turn_cont = 0; - if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { - BoardTutorialHookExec(9, 0); - } - if(i != 3 || _CheckFlag(FLAG_ID_MAKE(1, 11))) { - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); - while(WipeStatGet()) { - HuPrcVSleep(); - } - BoardPlayerMoveAwayStartCurr(GWPlayer[i].space_curr, 1); - fade_type = 0; - } else { - if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { - if(GWSystem.turn != GWSystem.max_turn) { - WipeColorSet(255, 255, 255); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); - while(WipeStatGet()) { - HuPrcVSleep(); - } - BoardPlayerMoveAwayStartCurr(GWPlayer[i].space_curr, 1); - fade_type = 0; - } - } else { - WipeColorSet(0, 0, 0); - WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); - while(WipeStatGet()) { - HuPrcVSleep(); - } - } - } - BoardPlayerPostTurnHookExec(i); - } - if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { - GWSystem.player_curr = 0; - if(BoardTurnNext()) { - BoardAudSeqFadeOut(0, 500); - BoardKill(); - HuPrcEnd(); - HuPrcSleep(-1); - } - } else { - _SetFlag(FLAG_ID_MAKE(1, 28)); - _SetFlag(FLAG_ID_MAKE(1, 14)); - BoardPauseDisableSet(1); - _ClearFlag(FLAG_ID_MAKE(1, 9)); - if(_CheckFlag(FLAG_ID_MAKE(2, 0)) || _CheckFlag(FLAG_ID_MAKE(1, 11)) ) { - for(i=0; i<4; i++) { - GWPlayer[i].color = 0; - } - GWSystem.player_curr = (GWSystem.player_curr+1)&3; - } else { - BoardMGSetupExec(); - HuPrcSleep(-1); - } - } - } while(1); + s32 i; + s32 fade_enable, turn_cont, fade_type; + fade_enable = 0; + turn_cont = 0; + BoardPauseDisableSet(1); + if(_CheckFlag(FLAG_ID_MAKE(0, 10))) { + _ClearFlag(FLAG_ID_MAKE(0, 10)); + _SetFlag(FLAG_ID_MAKE(1, 16)); + BoardKill(); + HuPrcSleep(-1); + } + _ClearFlag(FLAG_ID_MAKE(0, 10)); + BoardTutorialInit(); + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + BoardTutorialWorkSave(); + BoardTutorialPlayerInit(); + #if VERSION_PAL + GWMessSpeedSet(3); + #else + GWMessSpeedSet(1); + #endif + } + CreateBoard(); + if(!_CheckFlag(FLAG_ID_MAKE(1, 1))) { + GWSystem.player_curr = -1; + BoardStartExec(); + GWSystem.player_curr = 0; + fade_enable = 1; + _SetFlag(FLAG_ID_MAKE(1, 1)); + } else { + fade_enable = 0; + } + if(ExecTurnStart()) { + turn_cont = 1; + } + if(CHECK_LAST5_TURN() && GWSystem.player_curr == 0 && !turn_cont) { + if(!_CheckFlag(FLAG_ID_MAKE(0, 8))) { + BoardLast5Exec(); + _SetFlag(FLAG_ID_MAKE(0, 8)); + } else { + BoardLast5GfxInit(); + } + } + if(!turn_cont) { + fade_type = 1; + } else { + fade_type = 0; + } + _ClearFlag(FLAG_ID_MAKE(1, 28)); + do { + BoardStatusShowSetAll(1); + if(GWBoardGet() == BOARD_ID_MAIN6 && GWSystem.player_curr == 0 && !turn_cont && boardTurnFunc) { + GWSystem.player_curr = -1; + boardTurnFunc(); + GWSystem.player_curr = 0; + } + BoardMusStartBoard(); + for(i=GWSystem.player_curr; i<4; i++) { + if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { + if(CHECK_LAST5_TURN() && i == 0 && !turn_cont) { + BoardLast5GfxInit(); + _SetFlag(FLAG_ID_MAKE(0, 8)); + } + } + if(_CheckFlag(FLAG_ID_MAKE(1, 6))) { + BoardPlayerTurnExec(i); + } else { + if(!turn_cont) { + BoardCameraMoveSet(0); + GWSystem.player_curr = i; + BoardCameraTargetPlayerSet(i); + BoardCameraMotionWait(); + { + Vec pos; + BoardSpacePosGet(0, GWPlayer[i].space_curr, &pos); + BoardPlayerPosSetV(i, &pos); + } + while(WipeStatGet()) { + HuPrcVSleep(); + } + if(!fade_enable) { + if(!fade_type) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + } else { + fade_type = 0; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); + while(WipeStatGet()) { + HuPrcVSleep(); + } + } + } else { + fade_enable = 0; + } + BoardPlayerTurnExec(i); + } + } + turn_cont = 0; + if(_CheckFlag(FLAG_ID_MAKE(1, 11))) { + BoardTutorialHookExec(9, 0); + } + if(i != 3 || _CheckFlag(FLAG_ID_MAKE(1, 11))) { + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); + while(WipeStatGet()) { + HuPrcVSleep(); + } + BoardPlayerMoveAwayStartCurr(GWPlayer[i].space_curr, 1); + fade_type = 0; + } else { + if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { + if(GWSystem.turn != GWSystem.max_turn) { + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); + while(WipeStatGet()) { + HuPrcVSleep(); + } + BoardPlayerMoveAwayStartCurr(GWPlayer[i].space_curr, 1); + fade_type = 0; + } + } else { + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); + while(WipeStatGet()) { + HuPrcVSleep(); + } + } + } + BoardPlayerPostTurnHookExec(i); + } + if(GWBoardGet() == BOARD_ID_EXTRA1 || GWBoardGet() == BOARD_ID_EXTRA2) { + GWSystem.player_curr = 0; + if(BoardTurnNext()) { + BoardAudSeqFadeOut(0, 500); + BoardKill(); + HuPrcEnd(); + HuPrcSleep(-1); + } + } else { + _SetFlag(FLAG_ID_MAKE(1, 28)); + _SetFlag(FLAG_ID_MAKE(1, 14)); + BoardPauseDisableSet(1); + _ClearFlag(FLAG_ID_MAKE(1, 9)); + if(_CheckFlag(FLAG_ID_MAKE(2, 0)) || _CheckFlag(FLAG_ID_MAKE(1, 11)) ) { + for(i=0; i<4; i++) { + GWPlayer[i].color = 0; + } + GWSystem.player_curr = (GWSystem.player_curr+1)&3; + } else { + BoardMGSetupExec(); + HuPrcSleep(-1); + } + } + } while(1); } s32 BoardTurnNext(void) { - s32 i; - for(i=0; i<4; i++) { - GWPlayer[i].color = 0; - } - GWSystem.turn++; - if(GWSystem.turn > GWSystem.max_turn) { - return 1; - } else { - return 0; - } + s32 i; + for(i=0; i<4; i++) { + GWPlayer[i].color = 0; + } + GWSystem.turn++; + if(GWSystem.turn > GWSystem.max_turn) { + return 1; + } else { + return 0; + } } static s32 ExecTurnStart(void) { - s32 player; - s32 space; - if(!BoardStartCheck()) { - return 0; - } - player = GWSystem.player_curr; - space = GWPlayer[player].space_curr; - if(_CheckFlag(FLAG_ID_MAKE(1, 5))) { - BoardFortuneExec(player, space); - _ClearFlag(FLAG_ID_MAKE(1, 5)); - } else if(_CheckFlag(FLAG_ID_MAKE(1, 4))) { - BoardMusStartBoard(); - BoardBattleExec(player, space); - _ClearFlag(FLAG_ID_MAKE(1, 4)); - } else if(_CheckFlag(FLAG_ID_MAKE(1, 3))) { - BoardBowserExec(player, space); - _ClearFlag(FLAG_ID_MAKE(1, 3)); - } else if(_CheckFlag(FLAG_ID_MAKE(1, 2))) { - s32 turn_end = 0; - BoardCameraMoveSet(0); - BoardCameraViewSet(2); - BoardCameraMotionWait(); - turn_end = BoardTurnNext(); - if(turn_end) { - BoardKill(); - HuPrcEnd(); - } - _ClearFlag(FLAG_ID_MAKE(1, 2)); - return 0; - } else if(_CheckFlag(FLAG_ID_MAKE(1, 6))) { - boardTurnStartFunc(player, space); - return 1; - } - BoardPlayerZoomRestore(player); - return 1; + s32 player; + s32 space; + if(!BoardStartCheck()) { + return 0; + } + player = GWSystem.player_curr; + space = GWPlayer[player].space_curr; + if(_CheckFlag(FLAG_ID_MAKE(1, 5))) { + BoardFortuneExec(player, space); + _ClearFlag(FLAG_ID_MAKE(1, 5)); + } else if(_CheckFlag(FLAG_ID_MAKE(1, 4))) { + BoardMusStartBoard(); + BoardBattleExec(player, space); + _ClearFlag(FLAG_ID_MAKE(1, 4)); + } else if(_CheckFlag(FLAG_ID_MAKE(1, 3))) { + BoardBowserExec(player, space); + _ClearFlag(FLAG_ID_MAKE(1, 3)); + } else if(_CheckFlag(FLAG_ID_MAKE(1, 2))) { + s32 turn_end = 0; + BoardCameraMoveSet(0); + BoardCameraViewSet(2); + BoardCameraMotionWait(); + turn_end = BoardTurnNext(); + if(turn_end) { + BoardKill(); + HuPrcEnd(); + } + _ClearFlag(FLAG_ID_MAKE(1, 2)); + return 0; + } else if(_CheckFlag(FLAG_ID_MAKE(1, 6))) { + boardTurnStartFunc(player, space); + return 1; + } + BoardPlayerZoomRestore(player); + return 1; } void BoardNextOvlSet(OverlayID overlay) { - nextOvl = overlay; - BoardAudSeqFadeOut(0, 1000); - BoardKill(); + nextOvl = overlay; + BoardAudSeqFadeOut(0, 1000); + BoardKill(); } s32 BoardStartCheck(void) { - if(_CheckFlag(FLAG_ID_MAKE(1, 2)) || _CheckFlag(FLAG_ID_MAKE(1, 3)) || _CheckFlag(FLAG_ID_MAKE(1, 4)) || _CheckFlag(FLAG_ID_MAKE(1, 5)) || _CheckFlag(FLAG_ID_MAKE(1, 6))) { - return 1; - } else { - return 0; - } + if(_CheckFlag(FLAG_ID_MAKE(1, 2)) || _CheckFlag(FLAG_ID_MAKE(1, 3)) || _CheckFlag(FLAG_ID_MAKE(1, 4)) || _CheckFlag(FLAG_ID_MAKE(1, 5)) || _CheckFlag(FLAG_ID_MAKE(1, 6))) { + return 1; + } else { + return 0; + } } static void CreateBoard(void) { - s32 guest_status; - - GWSystem.mg_next = -1; - if(!GWGameStat.field10E_bit5 && GWMGListGet() == 2) { - GWMGListSet(0); - } - GWMessSpeedSet(GWMessSpeedGet()); - if(GWMGExplainGet()) { - _SetFlag(FLAG_ID_MAKE(0, 11)); - } else { - _ClearFlag(FLAG_ID_MAKE(0, 11)); - } - if(!BoardStartCheck()) { - _ClearFlag(FLAG_ID_MAKE(1, 2)); - _ClearFlag(FLAG_ID_MAKE(1, 3)); - _ClearFlag(FLAG_ID_MAKE(1, 4)); - _ClearFlag(FLAG_ID_MAKE(1, 5)); - _ClearFlag(FLAG_ID_MAKE(1, 6)); - } - _ClearFlag(FLAG_ID_MAKE(1, 8)); - if(!BoardStartCheck()) { - GWSystem.lucky_value = 1; - } - guest_status = BoardDataDirReadAsync(DATADIR_BGUEST); - if(guest_status != -1) { - BoardDataAsyncWait(guest_status); - } - BoardAudSeqClear(); - BoardModelInit(); - BoardRandInit(); - BoardWinInit(); - BoardPlayerModelInit(); - createFunc(); - BoardLightSetExec(); - BoardLotteryInit(); - BoardShopInit(); - BoardBooHouseCreate(); - BoardCameraInit(); - BoardStatusCreate(); - CharModelDataClose(-1); - BoardPlayerInit(); - if(GWSystem.last5_effect == 2) { - BoardSpaceTypeForce(2, 3); - } - if(GWSystem.last5_effect == 3) { - BoardSpaceTypeForce(2, 7); - } - BoardCameraMoveSet(0); - BoardCameraTargetPlayerSet(0); - BoardCameraViewSet(2); - BoardCameraMotionWait(); - BoardTauntInit(); - _SetFlag(FLAG_ID_MAKE(1, 14)); - HuDataDirClose(DATADIR_BKOOPASUIT); - HuDataDirClose(DATADIR_BBATTLE); - HuDataDirClose(DATADIR_BKOOPA); - HuDataDirClose(DATADIR_BKUJIYA); - HuDataDirClose(DATADIR_BYOKODORI); - HuDataDirClose(DATADIR_BPAUSE); - HuDataDirClose(DATADIR_BLAST5); - HuDataDirClose(DATADIR_EFFECT); - _SetFlag(FLAG_ID_MAKE(1, 16)); + s32 guest_status; + + GWSystem.mg_next = -1; + if(!GWGameStat.field10E_bit5 && GWMGListGet() == 2) { + GWMGListSet(0); + } + GWMessSpeedSet(GWMessSpeedGet()); + if(GWMGExplainGet()) { + _SetFlag(FLAG_ID_MAKE(0, 11)); + } else { + _ClearFlag(FLAG_ID_MAKE(0, 11)); + } + if(!BoardStartCheck()) { + _ClearFlag(FLAG_ID_MAKE(1, 2)); + _ClearFlag(FLAG_ID_MAKE(1, 3)); + _ClearFlag(FLAG_ID_MAKE(1, 4)); + _ClearFlag(FLAG_ID_MAKE(1, 5)); + _ClearFlag(FLAG_ID_MAKE(1, 6)); + } + _ClearFlag(FLAG_ID_MAKE(1, 8)); + if(!BoardStartCheck()) { + GWSystem.lucky_value = 1; + } + guest_status = BoardDataDirReadAsync(DATADIR_BGUEST); + if(guest_status != -1) { + BoardDataAsyncWait(guest_status); + } + BoardAudSeqClear(); + BoardModelInit(); + BoardRandInit(); + BoardWinInit(); + BoardPlayerModelInit(); + createFunc(); + BoardLightSetExec(); + BoardLotteryInit(); + BoardShopInit(); + BoardBooHouseCreate(); + BoardCameraInit(); + BoardStatusCreate(); + CharModelDataClose(-1); + BoardPlayerInit(); + if(GWSystem.last5_effect == 2) { + BoardSpaceTypeForce(2, 3); + } + if(GWSystem.last5_effect == 3) { + BoardSpaceTypeForce(2, 7); + } + BoardCameraMoveSet(0); + BoardCameraTargetPlayerSet(0); + BoardCameraViewSet(2); + BoardCameraMotionWait(); + BoardTauntInit(); + _SetFlag(FLAG_ID_MAKE(1, 14)); + HuDataDirClose(DATADIR_BKOOPASUIT); + HuDataDirClose(DATADIR_BBATTLE); + HuDataDirClose(DATADIR_BKOOPA); + HuDataDirClose(DATADIR_BKUJIYA); + HuDataDirClose(DATADIR_BYOKODORI); + HuDataDirClose(DATADIR_BPAUSE); + HuDataDirClose(DATADIR_BLAST5); + HuDataDirClose(DATADIR_EFFECT); + _SetFlag(FLAG_ID_MAKE(1, 16)); } static void DestroyBoard(void) { - s32 dir_table[] = { - DATADIR_W01, - DATADIR_W02, - DATADIR_W03, - DATADIR_W04, - DATADIR_W05, - DATADIR_W06, - DATADIR_W10, - DATADIR_W20, - DATADIR_W21 - }; - BoardTauntKill(); - BoardAudSeqFadeOutAll(); - HuAudAllStop(); - BoardRollKill(); - BoardStatusKill(); - BoardBooHouseKill(); - BoardShopKill(); - BoardLotteryKill(); - BoardSpaceDestroy(); - BoardPlayerModelKill(); - if(destroyFunc) { - destroyFunc(); - } - BoardModelKillAll(); - BoardWinKillAll(); - HuDataDirClose(dir_table[GWBoardGet()]); - HuDataDirClose(DATADIR_EFFECT); - HuDataDirClose(DATADIR_BGUEST); - HuDataDirClose(DATADIR_BKOOPASUIT); - HuDataDirClose(DATADIR_BBATTLE); - HuDataDirClose(DATADIR_BKOOPA); - HuDataDirClose(DATADIR_BKUJIYA); - HuDataDirClose(DATADIR_BYOKODORI); - HuDataDirClose(DATADIR_BOARD); - createFunc = destroyFunc = NULL; + s32 dir_table[] = { + DATADIR_W01, + DATADIR_W02, + DATADIR_W03, + DATADIR_W04, + DATADIR_W05, + DATADIR_W06, + DATADIR_W10, + DATADIR_W20, + DATADIR_W21 + }; + BoardTauntKill(); + BoardAudSeqFadeOutAll(); + HuAudAllStop(); + BoardRollKill(); + BoardStatusKill(); + BoardBooHouseKill(); + BoardShopKill(); + BoardLotteryKill(); + BoardSpaceDestroy(); + BoardPlayerModelKill(); + if(destroyFunc) { + destroyFunc(); + } + BoardModelKillAll(); + BoardWinKillAll(); + HuDataDirClose(dir_table[GWBoardGet()]); + HuDataDirClose(DATADIR_EFFECT); + HuDataDirClose(DATADIR_BGUEST); + HuDataDirClose(DATADIR_BKOOPASUIT); + HuDataDirClose(DATADIR_BBATTLE); + HuDataDirClose(DATADIR_BKOOPA); + HuDataDirClose(DATADIR_BKUJIYA); + HuDataDirClose(DATADIR_BYOKODORI); + HuDataDirClose(DATADIR_BOARD); + createFunc = destroyFunc = NULL; } void BoardLightHookSet(BoardLightHook set, BoardLightHook reset) { - boardLightSetHook = set; - boardLightResetHook = reset; + boardLightSetHook = set; + boardLightResetHook = reset; } void BoardLightSetExec(void) { - Hu3DBGColorSet(0, 0, 0); - if(boardLightSetHook) { - boardLightSetHook(); - } + Hu3DBGColorSet(0, 0, 0); + if(boardLightSetHook) { + boardLightSetHook(); + } } void BoardLightResetExec(void) { - if(boardLightResetHook) { - boardLightResetHook(); - } - Hu3DBGColorSet(0, 0, 0); - Hu3DFogClear(); - Hu3DReflectNoSet(0); + if(boardLightResetHook) { + boardLightResetHook(); + } + Hu3DBGColorSet(0, 0, 0); + Hu3DFogClear(); + Hu3DReflectNoSet(0); } //Fixes order of boardCamera and cameraBackup static BoardCameraData *BoardCameraGet(void) { - return &boardCamera; + return &boardCamera; } void BoardCameraBackup(void) { - cameraUseBackup = TRUE; - memcpy(&cameraBackup, &boardCamera, sizeof(BoardCameraData)); + cameraUseBackup = TRUE; + memcpy(&cameraBackup, &boardCamera, sizeof(BoardCameraData)); } void BoardCameraRestore(void) { - if(cameraUseBackup) { - memcpy(&boardCamera, &cameraBackup, sizeof(BoardCameraData)); - cameraUseBackup = FALSE; - } + if(cameraUseBackup) { + memcpy(&boardCamera, &cameraBackup, sizeof(BoardCameraData)); + cameraUseBackup = FALSE; + } } void BoardCameraScissorSet(s32 x, s32 y, s32 w, s32 h) { - BoardCameraData *camera = &boardCamera; - Hu3DCameraScissorSet(camera->mask, x, y, w, h); + BoardCameraData *camera = &boardCamera; + Hu3DCameraScissorSet(camera->mask, x, y, w, h); } void BoardCameraViewSet(s32 type) { - BoardCameraData *camera = &boardCamera; - BoardFocusData *focus; - float size; - if(!cameraObj) { - return; - } - focus = &camera->focus; - if(type == 0) { - focus->view_type = 0; - return; - } - OSs16tof32(&camViewTbl[type].fov, &focus->fov_end); - focus->fov_start = camera->fov; - OSs16tof32(&camViewTbl[type].zoom, &focus->zoom_end); - focus->zoom_start = camera->zoom; - OSs16tof32(&camViewTbl[type].x_rot, &focus->rot_end.x); - focus->rot_end.y = 0; - focus->rot_end.z = 0; - focus->rot_start = camera->rot; - focus->target_start = camera->target; - if(BoardPlayerSizeGet(GWSystem.player_curr) == 2 || GWPlayer[GWSystem.player_curr].bowser_suit) { - focus->zoom_end += 400.0f; - size = 2.5f; - } else { - size = 1.0f; - } - BoardCameraTargetModelSet(BoardPlayerModelGet(GWSystem.player_curr)); - BoardPlayerPosGet(GWSystem.player_curr, &focus->target_end); - BoardCameraOffsetSet(0.0f, 100.0f*size, 0.0f); - focus->target_end.y += 100.0f*size; - _SetFlag(FLAG_ID_MAKE(1, 21)); - focus->view_type = type; - focus->time = 0; - if(camera->moving) { - focus->max_time = 21; - } else { - focus->max_time = 1; - } + BoardCameraData *camera = &boardCamera; + BoardFocusData *focus; + float size; + if(!cameraObj) { + return; + } + focus = &camera->focus; + if(type == 0) { + focus->view_type = 0; + return; + } + OSs16tof32(&camViewTbl[type].fov, &focus->fov_end); + focus->fov_start = camera->fov; + OSs16tof32(&camViewTbl[type].zoom, &focus->zoom_end); + focus->zoom_start = camera->zoom; + OSs16tof32(&camViewTbl[type].x_rot, &focus->rot_end.x); + focus->rot_end.y = 0; + focus->rot_end.z = 0; + focus->rot_start = camera->rot; + focus->target_start = camera->target; + if(BoardPlayerSizeGet(GWSystem.player_curr) == 2 || GWPlayer[GWSystem.player_curr].bowser_suit) { + focus->zoom_end += 400.0f; + size = 2.5f; + } else { + size = 1.0f; + } + BoardCameraTargetModelSet(BoardPlayerModelGet(GWSystem.player_curr)); + BoardPlayerPosGet(GWSystem.player_curr, &focus->target_end); + BoardCameraOffsetSet(0.0f, 100.0f*size, 0.0f); + focus->target_end.y += 100.0f*size; + _SetFlag(FLAG_ID_MAKE(1, 21)); + focus->view_type = type; + focus->time = 0; + if(camera->moving) { + focus->max_time = 21; + } else { + focus->max_time = 1; + } } s32 BoardCameraPosGet(Vec *dst) { - BoardCameraData *camera; - if(!dst) { - return -1; - } - camera = &boardCamera; - *dst = camera->pos; - return 0; + BoardCameraData *camera; + if(!dst) { + return -1; + } + camera = &boardCamera; + *dst = camera->pos; + return 0; } s32 BoardCameraTargetGet(Vec *dst) { - BoardCameraData *camera; - if(!dst) { - return -1; - } - camera = &boardCamera; - *dst = camera->target; - return 0; + BoardCameraData *camera; + if(!dst) { + return -1; + } + camera = &boardCamera; + *dst = camera->target; + return 0; } s32 BoardCameraRotGet(Vec *dst) { - BoardCameraData *camera; - if(!dst) { - return -1; - } - camera = &boardCamera; - *dst = camera->rot; - return 0; + BoardCameraData *camera; + if(!dst) { + return -1; + } + camera = &boardCamera; + *dst = camera->rot; + return 0; } float BoardCameraZoomGet() { - BoardCameraData *camera; - camera = &boardCamera; - return camera->zoom; + BoardCameraData *camera; + camera = &boardCamera; + return camera->zoom; } s32 BoardCameraDirGet(Vec *dst) { - BoardCameraData *camera; - if(!dst) { - return -1; - } - camera = &boardCamera; - if(!camera) { - return -1; - } - VECSubtract(&camera->target, &camera->pos, dst); - if(dst->x != 0 || dst->y != 0 || dst->z != 0) { - VECNormalize(dst, dst); - } - return 0; + BoardCameraData *camera; + if(!dst) { + return -1; + } + camera = &boardCamera; + if(!camera) { + return -1; + } + VECSubtract(&camera->target, &camera->pos, dst); + if(dst->x != 0 || dst->y != 0 || dst->z != 0) { + VECNormalize(dst, dst); + } + return 0; } s32 BoardCameraPointDirGet(Vec *point, Vec *dst) { - BoardCameraData *camera; - if(!dst || !point) { - return -1; - } - camera = &boardCamera; - if(!camera) { - return -1; - } - VECSubtract(point, &camera->pos, dst); - if(dst->x != 0 || dst->y != 0 || dst->z != 0) { - VECNormalize(dst, dst); - } - return 0; + BoardCameraData *camera; + if(!dst || !point) { + return -1; + } + camera = &boardCamera; + if(!camera) { + return -1; + } + VECSubtract(point, &camera->pos, dst); + if(dst->x != 0 || dst->y != 0 || dst->z != 0) { + VECNormalize(dst, dst); + } + return 0; } void BoardCameraMaskSet(u16 mask) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->mask = mask; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->mask = mask; } void BoardCameraMoveSet(s32 move) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - if(!move) { - camera->moving = 0; - } else { - camera->moving = 1; - } + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + if(!move) { + camera->moving = 0; + } else { + camera->moving = 1; + } } void BoardCameraOffsetSet(float x, float y, float z) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->offset.x = x; - camera->offset.y = y; - camera->offset.z = z; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->offset.x = x; + camera->offset.y = y; + camera->offset.z = z; } void BoardCameraTargetPlayerSet(s32 player) { - PlayerState *player_ptr = BoardPlayerGet(player); - if(!player_ptr) { - BoardCameraTargetModelSet(-1); - return; - } - BoardCameraTargetModelSet(BoardPlayerModelGet(player)); - BoardCameraOffsetSet(0, 100, 0); + PlayerState *player_ptr = BoardPlayerGet(player); + if(!player_ptr) { + BoardCameraTargetModelSet(-1); + return; + } + BoardCameraTargetModelSet(BoardPlayerModelGet(player)); + BoardCameraOffsetSet(0, 100, 0); } void BoardCameraTargetModelSet(s16 model) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->target_mdl = model; - camera->target_space = -1; - camera->offset.x = camera->offset.y = camera->offset.z = 0; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->target_mdl = model; + camera->target_space = -1; + camera->offset.x = camera->offset.y = camera->offset.z = 0; } void BoardCameraTargetSpaceSet(s32 space) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->target_mdl = -1; - camera->target_space = space; - camera->offset.x = camera->offset.y = camera->offset.z = 0; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->target_mdl = -1; + camera->target_space = space; + camera->offset.x = camera->offset.y = camera->offset.z = 0; } void BoardCameraPosCalcFuncSet(BoardCameraPosCalcFunc func) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->pos_calc = func; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->pos_calc = func; } void BoardCameraQuakeSet(s32 duration, float strength) { - BoardCameraData *camera = &boardCamera; - if(!camera) { - return; - } - camera->quaking = 1; - camera->quake_strength = strength; - camera->quake_timer = duration; + BoardCameraData *camera = &boardCamera; + if(!camera) { + return; + } + camera->quaking = 1; + camera->quake_strength = strength; + camera->quake_timer = duration; } void BoardCameraQuakeReset() { - BoardCameraData *camera = &boardCamera; - camera->quaking = 0; - camera->quake_strength = 0; - camera->quake_timer = 0; + BoardCameraData *camera = &boardCamera; + camera->quaking = 0; + camera->quake_strength = 0; + camera->quake_timer = 0; } void BoardCameraTargetSet(float x, float y, float z) { - BoardCameraData *camera = &boardCamera; - camera->target.x = x; - camera->target.y = y; - camera->target.z = z; + BoardCameraData *camera = &boardCamera; + camera->target.x = x; + camera->target.y = y; + camera->target.z = z; } void BoardCameraPosSet(float x, float y, float z) { - BoardCameraData *camera = &boardCamera; - camera->pos.x = x; - camera->pos.y = y; - camera->pos.z = z; + BoardCameraData *camera = &boardCamera; + camera->pos.x = x; + camera->pos.y = y; + camera->pos.z = z; } void BoardCameraXRotZoomSet(float zoom, float x_rot) { - BoardCameraData *camera = &boardCamera; - camera->zoom = zoom; - camera->rot.x = x_rot; + BoardCameraData *camera = &boardCamera; + camera->zoom = zoom; + camera->rot.x = x_rot; } void BoardCameraZoomSet(float zoom) { - BoardCameraData *camera = &boardCamera; - camera->zoom = zoom; + BoardCameraData *camera = &boardCamera; + camera->zoom = zoom; } void BoardCameraRotSet(float x, float y) { - BoardCameraData *camera = &boardCamera; - camera->rot.x = x; - camera->rot.y = y; + BoardCameraData *camera = &boardCamera; + camera->rot.x = x; + camera->rot.y = y; } void BoardCameraNearFarSet(float near, float far) { - BoardCameraData *camera = &boardCamera; - camera->near = near; - camera->far = far; + BoardCameraData *camera = &boardCamera; + camera->near = near; + camera->far = far; } void BoardCameraNearFarGet(float *near, float *far) { - BoardCameraData *camera = &boardCamera; - if(near) { - *near = camera->near; - } - if(far) { - *far = camera->far; - } + BoardCameraData *camera = &boardCamera; + if(near) { + *near = camera->near; + } + if(far) { + *far = camera->far; + } } void BoardCameraMotionStart(s16 model_target, Vec *rot_target, float zoom_target, float fov_target) { - BoardCameraMotionStartEx(model_target, rot_target, NULL, zoom_target, fov_target, 21); + BoardCameraMotionStartEx(model_target, rot_target, NULL, zoom_target, fov_target, 21); } void BoardCameraMotionStartEx(s16 model_target, Vec *rot_target, Vec *offset_end, float zoom_target, float fov_target, s16 max_time) { - BoardCameraData *camera = &boardCamera; - BoardFocusData *focus; - if(!cameraObj) { - return; - } - focus = &camera->focus; - focus->fov_start = camera->fov; - focus->zoom_start = camera->zoom; - focus->rot_start = camera->rot; - focus->target_start = camera->target; - if(fov_target == -1) { - focus->fov_end = focus->fov_start; - } else { - focus->fov_end = fov_target; - } - if(zoom_target == -1) { - focus->zoom_end = focus->zoom_start; - } else { - focus->zoom_end = zoom_target; - } - if(!rot_target) { - focus->rot_end = focus->rot_start; - } else { - focus->rot_end = *rot_target; - } - if(model_target == -1) { - focus->target_end = focus->target_start; - } else { - BoardCameraTargetModelSet(model_target); - BoardModelPosGet(model_target, &focus->target_end); - } - if(offset_end) { - BoardCameraOffsetSet(offset_end->x, offset_end->y, offset_end->z); - VECAdd(offset_end, &focus->target_end, &focus->target_end); - } - _SetFlag(FLAG_ID_MAKE(1, 21)); - focus->view_type = 5; - focus->time = 0; - if(max_time < 0) { - max_time = 1; - } - focus->max_time = max_time; + BoardCameraData *camera = &boardCamera; + BoardFocusData *focus; + if(!cameraObj) { + return; + } + focus = &camera->focus; + focus->fov_start = camera->fov; + focus->zoom_start = camera->zoom; + focus->rot_start = camera->rot; + focus->target_start = camera->target; + if(fov_target == -1) { + focus->fov_end = focus->fov_start; + } else { + focus->fov_end = fov_target; + } + if(zoom_target == -1) { + focus->zoom_end = focus->zoom_start; + } else { + focus->zoom_end = zoom_target; + } + if(!rot_target) { + focus->rot_end = focus->rot_start; + } else { + focus->rot_end = *rot_target; + } + if(model_target == -1) { + focus->target_end = focus->target_start; + } else { + BoardCameraTargetModelSet(model_target); + BoardModelPosGet(model_target, &focus->target_end); + } + if(offset_end) { + BoardCameraOffsetSet(offset_end->x, offset_end->y, offset_end->z); + VECAdd(offset_end, &focus->target_end, &focus->target_end); + } + _SetFlag(FLAG_ID_MAKE(1, 21)); + focus->view_type = 5; + focus->time = 0; + if(max_time < 0) { + max_time = 1; + } + focus->max_time = max_time; } void BoardCameraFovSet(float fov) { - BoardCameraData *camera = &boardCamera; - camera->fov = fov; + BoardCameraData *camera = &boardCamera; + camera->fov = fov; } s32 BoardCameraCullCheck(Vec *point, float radius) { - Vec dir; - Vec pos; - float dist; - float dot; - BoardCameraData *camera = &boardCamera; - if(!camera->hide_all) { - return 0; - } - BoardCameraDirGet(&dir); - VECSubtract(point, &camera->pos, &pos); - dist = sqrtf((pos.x*pos.x)+(pos.y*pos.y)+(pos.z*pos.z)); - if(25000 < dist-(radius*2.0f)) { - return 0; - } - BoardCameraPointDirGet(point, &pos); - dot = VECDotProduct(&dir, &pos); - if(BOARD_FABS(dot) < cos((camera->fov*M_PI)/180)) { - return 0; - } else { - return 1; - } + Vec dir; + Vec pos; + float dist; + float dot; + BoardCameraData *camera = &boardCamera; + if(!camera->hide_all) { + return 0; + } + BoardCameraDirGet(&dir); + VECSubtract(point, &camera->pos, &pos); + dist = sqrtf((pos.x*pos.x)+(pos.y*pos.y)+(pos.z*pos.z)); + if(25000 < dist-(radius*2.0f)) { + return 0; + } + BoardCameraPointDirGet(point, &pos); + dot = VECDotProduct(&dir, &pos); + if(BOARD_FABS(dot) < cosd(camera->fov)) { + return 0; + } else { + return 1; + } } s32 BoardCameraMotionIsDone(void) { - return (_CheckFlag(FLAG_ID_MAKE(1, 21))) ? 0 : 1; + return (_CheckFlag(FLAG_ID_MAKE(1, 21))) ? 0 : 1; } void BoardCameraMotionWait(void) { - while(!BoardCameraMotionIsDone()) { - HuPrcVSleep(); - } - HuPrcVSleep(); + while(!BoardCameraMotionIsDone()) { + HuPrcVSleep(); + } + HuPrcVSleep(); } void BoardCameraInit(void) { - BoardCameraData *camera; - cameraUseBackup = FALSE; - memset(&cameraBackup, 0, sizeof(BoardCameraData)); - memset(&boardCamera, 0, sizeof(BoardCameraData)); - camera = &boardCamera; - camera->fov = 25; - camera->near = 100; - camera->far = 13000; - camera->aspect = HU_DISP_ASPECT; - camera->viewport_x = 0; - camera->viewport_y = 0; - camera->viewport_h = 480; - camera->viewport_w = 640; - camera->viewport_near = 0; - camera->viewport_far = 1; - camera->up.y = 1; - camera->moving = 0; - camera->quaking = 0; - camera->quake_timer = 0; - camera->pos.x = 0; - camera->pos.y = 5000; - camera->pos.z = 5000; - camera->offset.x = 0; - camera->offset.y = 0; - camera->offset.z = 0; - camera->pos_calc = NULL; - BoardSpaceFlagPosGet(0, 0x80000000, &camera->target); - camera->rot.x = camViewTbl[1].x_rot; - camera->zoom = camViewTbl[1].zoom; - camera->hide_all = 1; - camera->mask = 1; - Hu3DCameraCreate(1); - Hu3DCameraScissorSet(1, camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h); - Hu3DCameraScissorSet(2, 0, 0, 0, 0); - Hu3DCameraPerspectiveSet(2, -1, 100, 13000, 1.2); - cameraObj = omAddObjEx(boardObjMan, 32258, 0, 0, -1, UpdateCamera); + BoardCameraData *camera; + cameraUseBackup = FALSE; + memset(&cameraBackup, 0, sizeof(BoardCameraData)); + memset(&boardCamera, 0, sizeof(BoardCameraData)); + camera = &boardCamera; + camera->fov = 25; + camera->near = 100; + camera->far = 13000; + camera->aspect = HU_DISP_ASPECT; + camera->viewport_x = 0; + camera->viewport_y = 0; + camera->viewport_h = 480; + camera->viewport_w = 640; + camera->viewport_near = 0; + camera->viewport_far = 1; + camera->up.y = 1; + camera->moving = 0; + camera->quaking = 0; + camera->quake_timer = 0; + camera->pos.x = 0; + camera->pos.y = 5000; + camera->pos.z = 5000; + camera->offset.x = 0; + camera->offset.y = 0; + camera->offset.z = 0; + camera->pos_calc = NULL; + BoardSpaceFlagPosGet(0, 0x80000000, &camera->target); + camera->rot.x = camViewTbl[1].x_rot; + camera->zoom = camViewTbl[1].zoom; + camera->hide_all = 1; + camera->mask = 1; + Hu3DCameraCreate(1); + Hu3DCameraScissorSet(1, camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h); + Hu3DCameraScissorSet(2, 0, 0, 0, 0); + Hu3DCameraPerspectiveSet(2, -1, 100, 13000, 1.2); + cameraObj = omAddObjEx(boardObjMan, 32258, 0, 0, -1, UpdateCamera); } static inline void CalcCameraView(void) { - BoardCameraData *camera = &boardCamera; - CalcCameraTarget(camera); - CalcCameraPos(camera); + BoardCameraData *camera = &boardCamera; + CalcCameraTarget(camera); + CalcCameraPos(camera); } static void UpdateCamera(omObjData *object) { - BoardCameraData *camera; - Vec *target; - float x, y, z; - if(BoardIsKill()) { - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - CalcCameraView(); - camera = &boardCamera; - Hu3DCameraPerspectiveSet(camera->mask, camera->fov, camera->near, camera->far, camera->aspect); - Hu3DCameraViewportSet(camera->mask, camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h, camera->viewport_near, camera->viewport_far); - target = &camera->target; - if(camera->pos_calc) { - camera->pos_calc(camera); - } else { - - x = camera->rot.x; - y = camera->rot.y; - camera->pos.x = target->x+(sin((y*M_PI)/180.0)*cos((x*M_PI)/180.0)*camera->zoom); - camera->pos.y = target->y+(-sin((x*M_PI)/180.0)*camera->zoom); - camera->pos.z = target->z+(cos((y*M_PI)/180.0)*cos((x*M_PI)/180.0)*camera->zoom); - camera->up.x = sin((y*M_PI)/180.0)*sin((x*M_PI)/180.0); - camera->up.y = cos((x*M_PI)/180.0); - camera->up.z = cos((y*M_PI)/180.0)*sin((x*M_PI)/180.0); - if(camera->quaking) { - x = BoardRandFloat(); - y = BoardRandFloat(); - z = BoardRandFloat(); - camera->pos.x += (x-0.5f)*camera->quake_strength; - camera->pos.y += (y-0.5f)*camera->quake_strength; - camera->pos.z += (z-0.5f)*camera->quake_strength; - if(--camera->quake_timer <= 0) { - camera->quaking = 0; - camera->quake_timer = 0; - camera->quake_strength = 0; - } - } - } - Hu3DCameraPosSetV(camera->mask, &camera->pos, &camera->up, target); + BoardCameraData *camera; + Vec *target; + float x, y, z; + if(BoardIsKill()) { + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + CalcCameraView(); + camera = &boardCamera; + Hu3DCameraPerspectiveSet(camera->mask, camera->fov, camera->near, camera->far, camera->aspect); + Hu3DCameraViewportSet(camera->mask, camera->viewport_x, camera->viewport_y, camera->viewport_w, camera->viewport_h, camera->viewport_near, camera->viewport_far); + target = &camera->target; + if(camera->pos_calc) { + camera->pos_calc(camera); + } else { + + x = camera->rot.x; + y = camera->rot.y; + camera->pos.x = target->x+(sind(y)*cosd(x)*camera->zoom); + camera->pos.y = target->y+(-sind(x)*camera->zoom); + camera->pos.z = target->z+(cosd(y)*cosd(x)*camera->zoom); + camera->up.x = sind(y)*sind(x); + camera->up.y = cosd(x); + camera->up.z = cosd(y)*sind(x); + if(camera->quaking) { + x = BoardRandFloat(); + y = BoardRandFloat(); + z = BoardRandFloat(); + camera->pos.x += (x-0.5f)*camera->quake_strength; + camera->pos.y += (y-0.5f)*camera->quake_strength; + camera->pos.z += (z-0.5f)*camera->quake_strength; + if(--camera->quake_timer <= 0) { + camera->quaking = 0; + camera->quake_timer = 0; + camera->quake_strength = 0; + } + } + } + Hu3DCameraPosSetV(camera->mask, &camera->pos, &camera->up, target); } static void CalcCameraTarget(BoardCameraData *camera) { - Vec offset; - Vec pos = { 0, 0, 0 }; - BoardFocusData *focus = &camera->focus; - if(camera->target_mdl != -1) { - BoardModelPosGet(camera->target_mdl, &pos); - } else { - if(camera->target_space != -1) { - BoardSpacePosGet(0, camera->target_space, &pos); - } else { - return; - } - } - VECAdd(&camera->offset, &pos, &pos); - VECSubtract(&pos, &camera->target, &offset); - if(camera->moving) { - VECScale(&offset, &offset, 0.15f); - } - VECAdd(&offset, &camera->target, &camera->target); + Vec offset; + Vec pos = { 0, 0, 0 }; + BoardFocusData *focus = &camera->focus; + if(camera->target_mdl != -1) { + BoardModelPosGet(camera->target_mdl, &pos); + } else { + if(camera->target_space != -1) { + BoardSpacePosGet(0, camera->target_space, &pos); + } else { + return; + } + } + VECAdd(&camera->offset, &pos, &pos); + VECSubtract(&pos, &camera->target, &offset); + if(camera->moving) { + VECScale(&offset, &offset, 0.15f); + } + VECAdd(&offset, &camera->target, &camera->target); } #define CAM_LERP(t, x1, x2, out) \ { \ - float result; \ - float offset; \ - float unit_scale; \ - float lerp_t; \ - lerp_x2 = x2; \ - lerp_x1 = x1; \ - lerp_t = t; \ - if(lerp_t2 == lerp_t1) { \ - result = lerp_x2; \ - } else { \ - unit_scale = (lerp_x1-lerp_x2)/((float)lerp_t1-(float)lerp_t2); \ - offset = lerp_x2-(unit_scale*lerp_t2); \ - result = offset+(unit_scale*lerp_t); \ - } \ - out = result; \ + float result; \ + float offset; \ + float unit_scale; \ + float lerp_t; \ + lerp_x2 = x2; \ + lerp_x1 = x1; \ + lerp_t = t; \ + if(lerp_t2 == lerp_t1) { \ + result = lerp_x2; \ + } else { \ + unit_scale = (lerp_x1-lerp_x2)/((float)lerp_t1-(float)lerp_t2); \ + offset = lerp_x2-(unit_scale*lerp_t2); \ + result = offset+(unit_scale*lerp_t); \ + } \ + out = result; \ } #define CAM_LERP_VEC(t, x1, x2, out) \ @@ -1267,270 +1267,270 @@ CAM_LERP(t, (x1).z, (x2).z, (out).z) static void CalcCameraPos(BoardCameraData *camera) { - //These variables must be volatile to match - volatile u32 lerp_t1, lerp_t2; - volatile float lerp_x1, lerp_x2; - float time; - - BoardFocusData *focus = &camera->focus; - if(focus->time > focus->max_time) { - focus->view_type = 0; - _ClearFlag(FLAG_ID_MAKE(1, 21)); - return; - } - OSs16tof32(&focus->time, &time); - focus->time++; - lerp_t2 = focus->max_time; - lerp_t1 = 0; - CAM_LERP(time, focus->zoom_start, focus->zoom_end, camera->zoom) - CAM_LERP_VEC(time, focus->rot_start, focus->rot_end, camera->rot) - CAM_LERP(time, focus->fov_start, focus->fov_end, camera->fov) - CAM_LERP_VEC(time, focus->target_start, focus->target_end, camera->target) + //These variables must be volatile to match + volatile u32 lerp_t1, lerp_t2; + volatile float lerp_x1, lerp_x2; + float time; + + BoardFocusData *focus = &camera->focus; + if(focus->time > focus->max_time) { + focus->view_type = 0; + _ClearFlag(FLAG_ID_MAKE(1, 21)); + return; + } + OSs16tof32(&focus->time, &time); + focus->time++; + lerp_t2 = focus->max_time; + lerp_t1 = 0; + CAM_LERP(time, focus->zoom_start, focus->zoom_end, camera->zoom) + CAM_LERP_VEC(time, focus->rot_start, focus->rot_end, camera->rot) + CAM_LERP(time, focus->fov_start, focus->fov_end, camera->fov) + CAM_LERP_VEC(time, focus->target_start, focus->target_end, camera->target) } void BoardMGDoneFlagSet(s32 flag) { - if(flag) { - _SetFlag(FLAG_ID_MAKE(1, 20)); - } else { - _ClearFlag(FLAG_ID_MAKE(1, 20)); - } + if(flag) { + _SetFlag(FLAG_ID_MAKE(1, 20)); + } else { + _ClearFlag(FLAG_ID_MAKE(1, 20)); + } } s32 BoardMGDoneFlagGet() { - return (_CheckFlag(FLAG_ID_MAKE(1, 20))) ? 1 : 0; + return (_CheckFlag(FLAG_ID_MAKE(1, 20))) ? 1 : 0; } void BoardMGExit(void) { - s32 player = GWSystem.player_curr; - BoardPlayerMoveToAsync(player, GWPlayer[GWSystem.player_curr].space_curr); - BoardCameraTargetPlayerSet(player); - BoardCameraMoveSet(1); - BoardCameraViewSet(1); - _ClearFlag(FLAG_ID_MAKE(1, 19)); + s32 player = GWSystem.player_curr; + BoardPlayerMoveToAsync(player, GWPlayer[GWSystem.player_curr].space_curr); + BoardCameraTargetPlayerSet(player); + BoardCameraMoveSet(1); + BoardCameraViewSet(1); + _ClearFlag(FLAG_ID_MAKE(1, 19)); } static void KillBoardMG(omObjData *object) { - if(!BoardMGDoneFlagGet()) { - BoardEventFlagReset(); - omDelObjEx(HuPrcCurrentGet(), object); - } + if(!BoardMGDoneFlagGet()) { + BoardEventFlagReset(); + omDelObjEx(HuPrcCurrentGet(), object); + } } static void ExecBoardMG(omObjData *object) { - if(_CheckFlag(FLAG_ID_MAKE(1, 19))) { - return; - } - if(GWPlayer[GWSystem.player_curr].moving == 0) { - BoardPlayerMotionShiftSet(GWSystem.player_curr, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); - if(!_CheckFlag(FLAG_ID_MAKE(1, 21))) { - _SetFlag(FLAG_ID_MAKE(1, 20)); - object->func = KillBoardMG; - } - } + if(_CheckFlag(FLAG_ID_MAKE(1, 19))) { + return; + } + if(GWPlayer[GWSystem.player_curr].moving == 0) { + BoardPlayerMotionShiftSet(GWSystem.player_curr, 1, 0.0f, 10.0f, HU3D_MOTATTR_LOOP); + if(!_CheckFlag(FLAG_ID_MAKE(1, 21))) { + _SetFlag(FLAG_ID_MAKE(1, 20)); + object->func = KillBoardMG; + } + } } void BoardMGCreate(s32 arg0) { - _SetFlag(FLAG_ID_MAKE(1, 19)); - _ClearFlag(FLAG_ID_MAKE(1, 20)); - GWSystem.unk_38 = arg0; - omAddObjEx(boardObjMan, 0x201, 0, 0, -1, ExecBoardMG); - BoardEventFlagSet(); - BoardSpaceWalkMiniEventExec(); + _SetFlag(FLAG_ID_MAKE(1, 19)); + _ClearFlag(FLAG_ID_MAKE(1, 20)); + GWSystem.unk_38 = arg0; + omAddObjEx(boardObjMan, 0x201, 0, 0, -1, ExecBoardMG); + BoardEventFlagSet(); + BoardSpaceWalkMiniEventExec(); } void BoardEventFlagSet(void) { - _SetFlag(FLAG_ID_MAKE(1, 18)); + _SetFlag(FLAG_ID_MAKE(1, 18)); } void BoardEventFlagReset(void) { - _ClearFlag(FLAG_ID_MAKE(1, 18)); + _ClearFlag(FLAG_ID_MAKE(1, 18)); } s32 BoardEventFlagGet(void) { - return _CheckFlag(FLAG_ID_MAKE(1, 18)) ? 1 : 0; + return _CheckFlag(FLAG_ID_MAKE(1, 18)) ? 1 : 0; } void BoardMTXCalcLookAt(Mtx dest, Vec *eye, Vec *up, Vec *target) { - Vec f, u, s; - f.x = eye->x-target->x; - f.y = eye->y-target->y; - f.z = eye->z-target->z; - VECNormalize(&f, &f); - VECCrossProduct(up, &f, &u); - VECNormalize(&u, &u); - VECCrossProduct(&f, &u, &s); - dest[0][0] = u.x; - dest[0][1] = u.y; - dest[0][2] = u.z; - dest[0][3] = 0; - dest[1][0] = s.x; - dest[1][1] = s.y; - dest[1][2] = s.z; - dest[1][3] = 0; - dest[2][0] = f.x; - dest[2][1] = f.y; - dest[2][2] = f.z; - dest[2][3] = 0; + Vec f, u, s; + f.x = eye->x-target->x; + f.y = eye->y-target->y; + f.z = eye->z-target->z; + VECNormalize(&f, &f); + VECCrossProduct(up, &f, &u); + VECNormalize(&u, &u); + VECCrossProduct(&f, &u, &s); + dest[0][0] = u.x; + dest[0][1] = u.y; + dest[0][2] = u.z; + dest[0][3] = 0; + dest[1][0] = s.x; + dest[1][1] = s.y; + dest[1][2] = s.z; + dest[1][3] = 0; + dest[2][0] = f.x; + dest[2][1] = f.y; + dest[2][2] = f.z; + dest[2][3] = 0; } float BoardArcSin(float value) { - float result; - s32 sign; - if(value < 0) { - sign = 1; - value = BOARD_FABS(value); - } else { - sign = 0; - } - if(value > 1.0f) { - return 0; - } - if(value <= (float)(M_PI/2)) { - result = atanf(value/sqrtf(1-(value*value))); - } else { - result = (float)(M_PI/2)-atanf(sqrtf(1-(value*value))/value); - } - if(sign) { - result = BOARD_FABS(result); - } - return result; + float result; + s32 sign; + if(value < 0) { + sign = 1; + value = BOARD_FABS(value); + } else { + sign = 0; + } + if(value > 1.0f) { + return 0; + } + if(value <= (float)(M_PI/2)) { + result = atanf(value/sqrtf(1-(value*value))); + } else { + result = (float)(M_PI/2)-atanf(sqrtf(1-(value*value))/value); + } + if(sign) { + result = BOARD_FABS(result); + } + return result; } float BoardArcCos(float value) { - if(BOARD_FABS(value) > 1) { - return 0; - } - return (float)(M_PI/2)-BoardArcSin(value); + if(BOARD_FABS(value) > 1) { + return 0; + } + return (float)(M_PI/2)-BoardArcSin(value); } void BoardRandInit(void) { - boardRandSeed = OSGetTime(); + boardRandSeed = OSGetTime(); } u32 BoardRand(void) { - boardRandSeed = (boardRandSeed*0x19660D)+(0x3C6EF35F); - return boardRandSeed; + boardRandSeed = (boardRandSeed*0x19660D)+(0x3C6EF35F); + return boardRandSeed; } u32 BoardRandMod(u32 value) { - return (BoardRand() & 0x7FFFFFFF)%value; + return (BoardRand() & 0x7FFFFFFF)%value; } float BoardRandFloat(void) { - float value; - *((u32 *)&value) = (BoardRand() & 0x7FFFFF)|0x3F800000; //Generate float from 1.0f to 2.0f - return value-1.0f; + float value; + *((u32 *)&value) = (BoardRand() & 0x7FFFFF)|0x3F800000; //Generate float from 1.0f to 2.0f + return value-1.0f; } float BoardVecDistXZCalc(Vec *vec1, Vec *vec2) { - float dx = vec1->x-vec2->x; - float dz = vec1->z-vec2->z; - return sqrtf((dx*dx)+(dz*dz)); + float dx = vec1->x-vec2->x; + float dz = vec1->z-vec2->z; + return sqrtf((dx*dx)+(dz*dz)); } s32 BoardVecMaxDistXZCheck(Vec *vec1, Vec *vec2, float max_dist) { - float dz = vec1->z-vec2->z; - float dx = vec1->x-vec2->x; - float dist = sqrtf((dx*dx)+(dz*dz)); - if(dist <= max_dist) { - return 1; - } else { - return 0; - } + float dz = vec1->z-vec2->z; + float dx = vec1->x-vec2->x; + float dist = sqrtf((dx*dx)+(dz*dz)); + if(dist <= max_dist) { + return 1; + } else { + return 0; + } } void BoardDAngleCalcVec(Vec *vec1) { - s32 i; - float *data = &vec1->x; - for(i=0; i<3; i++) { - while(*data > 180.0f) { - *data -= 360.0f; - } - while(*data < -180.0f) { - *data += 360.0f; - } - data++; - } + s32 i; + float *data = &vec1->x; + for(i=0; i<3; i++) { + while(*data > 180.0f) { + *data -= 360.0f; + } + while(*data < -180.0f) { + *data += 360.0f; + } + data++; + } } float BoardDAngleCalc(float value) { - while(value > 180.0f) { - value -= 360.0f; - } - while(value < -180.0f) { - value += 360.0f; - } - return value; + while(value > 180.0f) { + value -= 360.0f; + } + while(value < -180.0f) { + value += 360.0f; + } + return value; } s32 BoardDAngleCalcRange(float *value, float min, float range) { - float diff = min-(*value); - if(diff >= 180.0f) { - min -= 360.0f; - } - if(diff <= -180.0f) { - min += 360.0f; - } - if(min > *value) { - *value += range; - if(*value >= min) { - *value = BoardDAngleCalc(min); - return 1; - } - } else { - *value -= range; - if(*value <= min) { - *value = BoardDAngleCalc(min); - return 1; - } - } - *value = BoardDAngleCalc(*value); - return 0; + float diff = min-(*value); + if(diff >= 180.0f) { + min -= 360.0f; + } + if(diff <= -180.0f) { + min += 360.0f; + } + if(min > *value) { + *value += range; + if(*value >= min) { + *value = BoardDAngleCalc(min); + return 1; + } + } else { + *value -= range; + if(*value <= min) { + *value = BoardDAngleCalc(min); + return 1; + } + } + *value = BoardDAngleCalc(*value); + return 0; } s32 BoardVecMinDistCheck(Vec *vec1, Vec *vec2, float min_dist) { - Vec temp; - VECSubtract(vec1, vec2, &temp); - if(VECSquareMag(&temp) >= (min_dist*min_dist)) { - return 0; - } else { - return 1; - } + Vec temp; + VECSubtract(vec1, vec2, &temp); + if(VECSquareMag(&temp) >= (min_dist*min_dist)) { + return 0; + } else { + return 1; + } } typedef struct filter_work { - struct { - u8 kill : 1; - u8 paused : 1; - }; - u8 max_alpha; - s16 time; - s16 len; - s16 model; - GXColor color; - float speed; + struct { + u8 kill : 1; + u8 paused : 1; + }; + u8 max_alpha; + s16 time; + s16 len; + s16 model; + GXColor color; + float speed; } FilterWork; static void UpdateFilter(omObjData *object); @@ -1538,168 +1538,168 @@ static void DrawFilter(ModelData *model, Mtx matrix); void BoardFilterFadeOut(s16 len) { - FilterWork *work; - float speed; - if(!filterObj) { - return; - } - if(len <= 0) { - len = 1; - } - work = OM_GET_WORK_PTR(filterObj, FilterWork); - work->len = len; - OSs16tof32(&len, &speed); - work->speed = -(work->color.a)/speed; - work->paused = 0; - work->time = work->len; + FilterWork *work; + float speed; + if(!filterObj) { + return; + } + if(len <= 0) { + len = 1; + } + work = OM_GET_WORK_PTR(filterObj, FilterWork); + work->len = len; + OSs16tof32(&len, &speed); + work->speed = -(work->color.a)/speed; + work->paused = 0; + work->time = work->len; } void BoardFilterFadeInit(s16 len, u8 max_alpha) { - FilterWork *work; - if(filterObj) { - work = OM_GET_WORK_PTR(filterObj, FilterWork); - work->kill = 1; - while(filterObj) { - HuPrcVSleep(); - } - } - filterObj = omAddObjEx(boardObjMan, 32000, 0, 0, -1, UpdateFilter); - omSetStatBit(filterObj, OM_STAT_NOPAUSE|0x80); - if(len <= 0) { - len = 1; - } - work = OM_GET_WORK_PTR(filterObj, FilterWork); - work->kill = 0; - work->paused = 0; - work->color.r = 0; - work->color.g = 0; - work->color.b = 0; - work->color.a = 0; - work->max_alpha = max_alpha; - work->speed = (float)(max_alpha-work->color.a)/(float)len; - work->time = len; - work->len = len; - work->model = Hu3DHookFuncCreate(DrawFilter); - Hu3DModelLayerSet(work->model, 1); + FilterWork *work; + if(filterObj) { + work = OM_GET_WORK_PTR(filterObj, FilterWork); + work->kill = 1; + while(filterObj) { + HuPrcVSleep(); + } + } + filterObj = omAddObjEx(boardObjMan, 32000, 0, 0, -1, UpdateFilter); + omSetStatBit(filterObj, OM_STAT_NOPAUSE|0x80); + if(len <= 0) { + len = 1; + } + work = OM_GET_WORK_PTR(filterObj, FilterWork); + work->kill = 0; + work->paused = 0; + work->color.r = 0; + work->color.g = 0; + work->color.b = 0; + work->color.a = 0; + work->max_alpha = max_alpha; + work->speed = (float)(max_alpha-work->color.a)/(float)len; + work->time = len; + work->len = len; + work->model = Hu3DHookFuncCreate(DrawFilter); + Hu3DModelLayerSet(work->model, 1); } s32 BoardFilterFadePauseCheck(void) { - FilterWork *work; - if(!filterObj) { - return 1; - } - work = OM_GET_WORK_PTR(filterObj, FilterWork); - return (work->paused) ? 1 : 0; + FilterWork *work; + if(!filterObj) { + return 1; + } + work = OM_GET_WORK_PTR(filterObj, FilterWork); + return (work->paused) ? 1 : 0; } s32 BoardFilterFadeCheck(void) { - return (filterObj != NULL) ? 0 : 1; + return (filterObj != NULL) ? 0 : 1; } static void UpdateFilter(omObjData *object) { - float alpha; - FilterWork *work = OM_GET_WORK_PTR(object, FilterWork); - if(work->kill || BoardIsKill()) { - if(work->model != -1) { - Hu3DModelKill(work->model); - } - filterObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(work->paused) { - return; - } - OSu8tof32(&work->color.a, &alpha); - alpha += work->speed; - OSf32tou8(&alpha, &work->color.a); - if(work->time > 0) { - work->time--; - return; - } - if(work->speed > 0) { - work->paused = 1; - work->color.a = work->max_alpha; - } else { - work->kill = 1; - } + float alpha; + FilterWork *work = OM_GET_WORK_PTR(object, FilterWork); + if(work->kill || BoardIsKill()) { + if(work->model != -1) { + Hu3DModelKill(work->model); + } + filterObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if(work->paused) { + return; + } + OSu8tof32(&work->color.a, &alpha); + alpha += work->speed; + OSf32tou8(&alpha, &work->color.a); + if(work->time > 0) { + work->time--; + return; + } + if(work->speed > 0) { + work->paused = 1; + work->color.a = work->max_alpha; + } else { + work->kill = 1; + } } static void DrawFilter(ModelData *model, Mtx matrix) { - static GXColor colorN = { 0xFF, 0xFF, 0xFF, 0xFF }; - Mtx44 proj; - Mtx modelview; - - float x1, x2, y1, y2; - FilterWork *work; - if(!filterObj) { - return; - } - work = OM_GET_WORK_PTR(filterObj, FilterWork); - x1 = 0.0f; - x2 = HU_FB_WIDTH; - y1 = 0.0f; - y2 = HU_FB_HEIGHT; - MTXOrtho(proj, y1, y2, x1, x2, 0, 10); - GXSetProjection(proj, GX_ORTHOGRAPHIC); - MTXIdentity(modelview); - GXLoadPosMtxImm(modelview, GX_PNMTX0); - GXSetCurrentMtx(GX_PNMTX0); - GXSetViewport(0, 0, x2, 1.0f+y2, 0, 1); - GXSetScissor(0, 0, x2, 1.0f+y2); - GXClearVtxDesc(); - GXSetChanMatColor(GX_COLOR0A0, work->color); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); - GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0); - GXSetZMode(GX_TRUE, GX_ALWAYS, GX_FALSE); - GXSetAlphaUpdate(GX_FALSE); - GXSetColorUpdate(GX_TRUE); - GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition2u16(x1, y1); - GXPosition2u16(x2, y1); - GXPosition2u16(x2, y2); - GXPosition2u16(x1, y2); - GXEnd(); - GXSetChanMatColor(GX_COLOR0A0, colorN); - + static GXColor colorN = { 0xFF, 0xFF, 0xFF, 0xFF }; + Mtx44 proj; + Mtx modelview; + + float x1, x2, y1, y2; + FilterWork *work; + if(!filterObj) { + return; + } + work = OM_GET_WORK_PTR(filterObj, FilterWork); + x1 = 0.0f; + x2 = HU_FB_WIDTH; + y1 = 0.0f; + y2 = HU_FB_HEIGHT; + MTXOrtho(proj, y1, y2, x1, x2, 0, 10); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXSetCurrentMtx(GX_PNMTX0); + GXSetViewport(0, 0, x2, 1.0f+y2, 0, 1); + GXSetScissor(0, 0, x2, 1.0f+y2); + GXClearVtxDesc(); + GXSetChanMatColor(GX_COLOR0A0, work->color); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); + GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_NONE, GX_AF_NONE); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0); + GXSetZMode(GX_TRUE, GX_ALWAYS, GX_FALSE); + GXSetAlphaUpdate(GX_FALSE); + GXSetColorUpdate(GX_TRUE); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2u16(x1, y1); + GXPosition2u16(x2, y1); + GXPosition2u16(x2, y2); + GXPosition2u16(x1, y2); + GXEnd(); + GXSetChanMatColor(GX_COLOR0A0, colorN); + } typedef struct confetti_particle { - s16 time; - u8 alpha; - u8 light_col; - Vec pos; - Vec rot; - Vec pos_vel; - Vec rot_vel; + s16 time; + u8 alpha; + u8 light_col; + Vec pos; + Vec rot; + Vec pos_vel; + Vec rot_vel; } ConfettiParticle; typedef struct confetti_work { - struct { - u8 kill : 1; - u8 paused : 1; - }; - s8 spawn_speed; - s8 time; - s8 delay; - s16 count; - s16 gfx_mdl; - s16 draw_mdl; - ConfettiParticle *data; + struct { + u8 kill : 1; + u8 paused : 1; + }; + s8 spawn_speed; + s8 time; + s8 delay; + s16 count; + s16 gfx_mdl; + s16 draw_mdl; + ConfettiParticle *data; } ConfettiWork; static void UpdateConfetti(omObjData *object); @@ -1710,501 +1710,501 @@ static void DrawConfetti(ModelData *model, Mtx matrix); void BoardConfettiCreate(Vec *pos, s16 count, float range) { - omObjData *object; - ConfettiWork *work; - if(confettiObj) { - BoardConfettiStop(); - HuPrcSleep(17); - } - object = omAddObjEx(boardObjMan, 257, 0, 0, -1, UpdateConfetti); - confettiObj = object; - work = OM_GET_WORK_PTR(object, ConfettiWork); - work->kill = 0; - work->paused = 0; - work->count = count; - work->spawn_speed = 1; - work->time = 0; - work->delay = 10; - work->draw_mdl = Hu3DHookFuncCreate(DrawConfetti); - work->data = HuMemDirectMallocNum(HEAP_SYSTEM, work->count*sizeof(ConfettiParticle), MEMORY_DEFAULT_NUM); - object->trans.x = pos->x; - object->trans.y = pos->y; - object->trans.z = pos->z; - object->rot.x = range; - work->gfx_mdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 7), NULL, 0); - BoardModelLayerSet(work->gfx_mdl, 2); - BoardModelVisibilitySet(work->gfx_mdl, 0); - { - ConfettiParticle *particle; - s32 i; - particle = work->data; - for(i=0; icount; i++, particle++) { - particle->time = -1; - } - } - HuAudFXPlay(774); + omObjData *object; + ConfettiWork *work; + if(confettiObj) { + BoardConfettiStop(); + HuPrcSleep(17); + } + object = omAddObjEx(boardObjMan, 257, 0, 0, -1, UpdateConfetti); + confettiObj = object; + work = OM_GET_WORK_PTR(object, ConfettiWork); + work->kill = 0; + work->paused = 0; + work->count = count; + work->spawn_speed = 1; + work->time = 0; + work->delay = 10; + work->draw_mdl = Hu3DHookFuncCreate(DrawConfetti); + work->data = HuMemDirectMallocNum(HEAP_SYSTEM, work->count*sizeof(ConfettiParticle), MEMORY_DEFAULT_NUM); + object->trans.x = pos->x; + object->trans.y = pos->y; + object->trans.z = pos->z; + object->rot.x = range; + work->gfx_mdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 7), NULL, 0); + BoardModelLayerSet(work->gfx_mdl, 2); + BoardModelVisibilitySet(work->gfx_mdl, 0); + { + ConfettiParticle *particle; + s32 i; + particle = work->data; + for(i=0; icount; i++, particle++) { + particle->time = -1; + } + } + HuAudFXPlay(774); } void BoardConfettiKill(void) { - if(confettiObj) { - OM_GET_WORK_PTR(confettiObj, ConfettiWork)->kill = 1; - } + if(confettiObj) { + OM_GET_WORK_PTR(confettiObj, ConfettiWork)->kill = 1; + } } void BoardConfettiStop(void) { - if(confettiObj) { - s32 i; - ConfettiParticle *particle; - ConfettiWork *work = OM_GET_WORK_PTR(confettiObj, ConfettiWork); - work->paused = 1; - particle = work->data; - for(i=0; icount; i++, particle++) { - if(particle->time != -1) { - if(particle->time > 16) { - particle->time = 16; - } - } - } - } + if(confettiObj) { + s32 i; + ConfettiParticle *particle; + ConfettiWork *work = OM_GET_WORK_PTR(confettiObj, ConfettiWork); + work->paused = 1; + particle = work->data; + for(i=0; icount; i++, particle++) { + if(particle->time != -1) { + if(particle->time > 16) { + particle->time = 16; + } + } + } + } } static void UpdateConfetti(omObjData *object) { - ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); - if(work->kill || BoardIsKill()) { - BoardModelKill(work->gfx_mdl); - Hu3DModelKill(work->draw_mdl); - HuMemDirectFree(work->data); - confettiObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - } else { - SpawnConfetti(object); - MoveConfetti(object); - } + ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); + if(work->kill || BoardIsKill()) { + BoardModelKill(work->gfx_mdl); + Hu3DModelKill(work->draw_mdl); + HuMemDirectFree(work->data); + confettiObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + } else { + SpawnConfetti(object); + MoveConfetti(object); + } } static void SpawnConfetti(omObjData *object) { - ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); - s32 i; - if(work->paused) { - return; - } - if(work->spawn_speed < 5) { - if(work->time++ > work->delay) { - work->time = 0; - work->spawn_speed++; - } - } - for(i=0; ispawn_speed; i++) { - ConfettiParticle *particle; - float angle; - s32 j; - particle = work->data; - for(j=0; jcount; j++, particle++) { - if(particle->time == -1) { - break; - } - } - if(j == work->count) { - break; - } - particle->time = BoardRandMod(60)+120; - angle = BoardRandFloat()*360.0f; - particle->pos.x = (sin((angle*M_PI)/180.0)*object->rot.x)+object->trans.x; - particle->pos.y = object->trans.y; - particle->pos.z = (cos((angle*M_PI)/180.0)*object->rot.x)+object->trans.z; - particle->pos_vel.x = 2.0f*(BoardRandFloat()-0.5f); - particle->pos_vel.y = (-98.00001f/15.0f)*BoardRandFloat(); - particle->pos_vel.z = 2.0f*(BoardRandFloat()-0.5f); - particle->rot_vel.x = 8.0f+((BoardRandFloat()-0.5f)*20.0f); - particle->rot_vel.y = 8.0f+((BoardRandFloat()-0.5f)*20.0f); - particle->rot_vel.z = 8.0f+((BoardRandFloat()-0.5f)*20.0f); - particle->rot.x = 0; - particle->rot.y = 0; - particle->rot.z = 0; - particle->alpha = 255; - particle->light_col = BoardRandMod(6); - } + ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); + s32 i; + if(work->paused) { + return; + } + if(work->spawn_speed < 5) { + if(work->time++ > work->delay) { + work->time = 0; + work->spawn_speed++; + } + } + for(i=0; ispawn_speed; i++) { + ConfettiParticle *particle; + float angle; + s32 j; + particle = work->data; + for(j=0; jcount; j++, particle++) { + if(particle->time == -1) { + break; + } + } + if(j == work->count) { + break; + } + particle->time = BoardRandMod(60)+120; + angle = BoardRandFloat()*360.0f; + particle->pos.x = (sind(angle)*object->rot.x)+object->trans.x; + particle->pos.y = object->trans.y; + particle->pos.z = (cosd(angle)*object->rot.x)+object->trans.z; + particle->pos_vel.x = 2.0f*(BoardRandFloat()-0.5f); + particle->pos_vel.y = (-98.00001f/15.0f)*BoardRandFloat(); + particle->pos_vel.z = 2.0f*(BoardRandFloat()-0.5f); + particle->rot_vel.x = 8.0f+((BoardRandFloat()-0.5f)*20.0f); + particle->rot_vel.y = 8.0f+((BoardRandFloat()-0.5f)*20.0f); + particle->rot_vel.z = 8.0f+((BoardRandFloat()-0.5f)*20.0f); + particle->rot.x = 0; + particle->rot.y = 0; + particle->rot.z = 0; + particle->alpha = 255; + particle->light_col = BoardRandMod(6); + } } static void MoveConfetti(omObjData *object) { - ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); - s32 i; - s32 existF; - ConfettiParticle *particle; - - existF = 0; - particle = work->data; - - for(i=0; icount; i++, particle++) { - if(particle->time == -1) { - continue; - } - if(particle->time <= 0) { - particle->time = -1; - continue; - } - particle->time--; - particle->pos.x += particle->pos_vel.x; - particle->pos.y += particle->pos_vel.y; - particle->pos.z += particle->pos_vel.z; - particle->rot.x += particle->rot_vel.x; - particle->rot.y += particle->rot_vel.y; - particle->rot.z += particle->rot_vel.z; - if(particle->time < 16) { - if(particle->alpha >= 15) { - particle->alpha -= 15; - } else { - particle->alpha = 0; - } - } - if(!existF) { - existF = 1; - } - } - if(existF == 0 && work->paused) { - work->kill = 1; - } + ConfettiWork *work = OM_GET_WORK_PTR(object, ConfettiWork); + s32 i; + s32 existF; + ConfettiParticle *particle; + + existF = 0; + particle = work->data; + + for(i=0; icount; i++, particle++) { + if(particle->time == -1) { + continue; + } + if(particle->time <= 0) { + particle->time = -1; + continue; + } + particle->time--; + particle->pos.x += particle->pos_vel.x; + particle->pos.y += particle->pos_vel.y; + particle->pos.z += particle->pos_vel.z; + particle->rot.x += particle->rot_vel.x; + particle->rot.y += particle->rot_vel.y; + particle->rot.z += particle->rot_vel.z; + if(particle->time < 16) { + if(particle->alpha >= 15) { + particle->alpha -= 15; + } else { + particle->alpha = 0; + } + } + if(!existF) { + existF = 1; + } + } + if(existF == 0 && work->paused) { + work->kill = 1; + } } static Vec confettiLightTbl[6] = { - { 0.1, 0.4, 1 }, - { 0.2, 1, 0.1 }, - { 0.3, 1, 1 }, - { 1, 0.2, 0.1 }, - { 1, 0.2, 0.8 }, - { 1, 8, 0.3 } + { 0.1, 0.4, 1 }, + { 0.2, 1, 0.1 }, + { 0.3, 1, 1 }, + { 1, 0.2, 0.1 }, + { 1, 0.2, 0.8 }, + { 1, 8, 0.3 } }; static void DrawConfetti(ModelData *model, Mtx matrix) { - if(!confettiObj || BoardIsKill()) { - return; - } else { - ConfettiWork *work = OM_GET_WORK_PTR(confettiObj, ConfettiWork); - ModelData *model = &Hu3DData[work->gfx_mdl]; - ConfettiParticle *particle; - s32 i; - if(!model->hsfData) { - return; - } - particle = work->data; - for(i=0; icount; i++, particle++) { - Mtx result, temp; - float r, g, b, a; - if(particle->time == -1) { - continue; - } - MTXRotDeg(temp, 'z', particle->rot.z); - MTXRotDeg(result, 'x', particle->rot.x); - MTXConcat(temp, result, result); - MTXRotDeg(temp, 'y', particle->rot.y); - MTXConcat(temp, result, result); - MTXTrans(temp, particle->pos.x, particle->pos.y, particle->pos.z); - MTXConcat(temp, result, result); - MTXConcat(matrix, result, result); - r = confettiLightTbl[particle->light_col].x; - g = confettiLightTbl[particle->light_col].y; - b = confettiLightTbl[particle->light_col].z; - OSu8tof32(&particle->alpha, &a); - a = a*(1.0f/255.0f); - Hu3DModelTPLvlSet(BoardModelIDGet(work->gfx_mdl), a); - Hu3DModelAmbSet(BoardModelIDGet(work->gfx_mdl), r, g, b); - Hu3DModelObjDraw(BoardModelIDGet(work->gfx_mdl), "grid2", result); - } - } + if(!confettiObj || BoardIsKill()) { + return; + } else { + ConfettiWork *work = OM_GET_WORK_PTR(confettiObj, ConfettiWork); + ModelData *model = &Hu3DData[work->gfx_mdl]; + ConfettiParticle *particle; + s32 i; + if(!model->hsfData) { + return; + } + particle = work->data; + for(i=0; icount; i++, particle++) { + Mtx result, temp; + float r, g, b, a; + if(particle->time == -1) { + continue; + } + MTXRotDeg(temp, 'z', particle->rot.z); + MTXRotDeg(result, 'x', particle->rot.x); + MTXConcat(temp, result, result); + MTXRotDeg(temp, 'y', particle->rot.y); + MTXConcat(temp, result, result); + MTXTrans(temp, particle->pos.x, particle->pos.y, particle->pos.z); + MTXConcat(temp, result, result); + MTXConcat(matrix, result, result); + r = confettiLightTbl[particle->light_col].x; + g = confettiLightTbl[particle->light_col].y; + b = confettiLightTbl[particle->light_col].z; + OSu8tof32(&particle->alpha, &a); + a = a*(1.0f/255.0f); + Hu3DModelTPLvlSet(BoardModelIDGet(work->gfx_mdl), a); + Hu3DModelAmbSet(BoardModelIDGet(work->gfx_mdl), r, g, b); + Hu3DModelObjDraw(BoardModelIDGet(work->gfx_mdl), "grid2", result); + } + } } typedef struct last5_gfx_work { - struct { - u8 kill : 1; - u8 state : 3; - u8 is_last : 1; - u8 : 4; - }; - u8 stop_time; - s16 time; - s16 group; - s16 sprites[3]; + struct { + u8 kill : 1; + u8 state : 3; + u8 is_last : 1; + u8 : 4; + }; + u8 stop_time; + s16 time; + s16 group; + s16 sprites[3]; } Last5GfxWork; static s32 last5GfxSprTbl[3] = { - DATA_MAKE_NUM(DATADIR_BOARD, 95), - DATA_MAKE_NUM(DATADIR_BOARD, 97), - DATA_MAKE_NUM(DATADIR_BOARD, 96), + DATA_MAKE_NUM(DATADIR_BOARD, 95), + DATA_MAKE_NUM(DATADIR_BOARD, 97), + DATA_MAKE_NUM(DATADIR_BOARD, 96), }; static float last5GfxPosTbl[2][3][2] = { - { - { -80, 0 }, - { 0, 0 }, - { 80, 0 } - }, - { - { -52, 0 }, - { 0, 0 }, - { 52, 0 } - } + { + { -80, 0 }, + { 0, 0 }, + { 80, 0 } + }, + { + { -52, 0 }, + { 0, 0 }, + { 52, 0 } + } }; static void UpdateLast5Gfx(omObjData *object); void BoardLast5GfxInit(void) { - Last5GfxWork *work; - omObjData *object; - s32 turn_remain; - s32 lastF; - turn_remain = GWSystem.max_turn-GWSystem.turn; - if(turn_remain > 4 || turn_remain < 0) { - return; - } else { - s32 i; - turn_remain = 4-turn_remain; - object = omAddObjEx(boardObjMan, 0, 0, 0, -1, UpdateLast5Gfx); - last5GfxObj = object; - work = OM_GET_WORK_PTR(object, Last5GfxWork); - work->kill = 0; - work->stop_time = 0; - work->time = 0; - work->group = HuSprGrpCreate(3); - if((s32)(GWSystem.max_turn-GWSystem.turn) == 0) { - work->is_last = 1; - lastF = 1; - } else { - work->is_last = 0; - lastF = 0; - } - for(i=0; i<3; i++) { - s32 prio; - s32 spr_file; - - if(i == 1) { - prio = 1000; - } else { - prio = 1400; - } + Last5GfxWork *work; + omObjData *object; + s32 turn_remain; + s32 lastF; + turn_remain = GWSystem.max_turn-GWSystem.turn; + if(turn_remain > 4 || turn_remain < 0) { + return; + } else { + s32 i; + turn_remain = 4-turn_remain; + object = omAddObjEx(boardObjMan, 0, 0, 0, -1, UpdateLast5Gfx); + last5GfxObj = object; + work = OM_GET_WORK_PTR(object, Last5GfxWork); + work->kill = 0; + work->stop_time = 0; + work->time = 0; + work->group = HuSprGrpCreate(3); + if((s32)(GWSystem.max_turn-GWSystem.turn) == 0) { + work->is_last = 1; + lastF = 1; + } else { + work->is_last = 0; + lastF = 0; + } + for(i=0; i<3; i++) { + s32 prio; + s32 spr_file; + + if(i == 1) { + prio = 1000; + } else { + prio = 1400; + } #if !VERSION_JP - spr_file = last5GfxSprTbl[i]; - if(i == 2 && work->is_last && GWLanguageGet() != 0) { - spr_file = DATA_MAKE_NUM(DATADIR_BOARD, 98); - } - BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]); + spr_file = last5GfxSprTbl[i]; + if(i == 2 && work->is_last && GWLanguageGet() != 0) { + spr_file = DATA_MAKE_NUM(DATADIR_BOARD, 98); + } + BoardSpriteCreate(spr_file, prio, NULL, &work->sprites[i]); #else - BoardSpriteCreate(last5GfxSprTbl[i], prio, NULL, &work->sprites[i]); + BoardSpriteCreate(last5GfxSprTbl[i], prio, NULL, &work->sprites[i]); #endif - HuSprGrpMemberSet(work->group, i, work->sprites[i]); - HuSprAttrSet(work->group, i, HUSPR_ATTR_LINEAR); - HuSprPosSet(work->group, i, last5GfxPosTbl[lastF][i][0], last5GfxPosTbl[lastF][i][1]); - } - if(!work->is_last) { - HuSprite *sprite = &HuSprData[HuSprGrpData[work->group].members[1]]; - HuSprBankSet(work->group, 1, 0); - sprite->frame = turn_remain; - } else { - HuSprAttrSet(work->group, 1, HUSPR_ATTR_DISPOFF); - } - HuSprAttrSet(work->group, 1, HUSPR_ATTR_NOANIM); - object->trans.x = 0.0f; - HuSprGrpTPLvlSet(work->group, object->trans.x); - HuSprGrpPosSet(work->group, HU_DISP_CENTERX, 72); - HuAudFXPlay(838); - work->time = 0; - } + HuSprGrpMemberSet(work->group, i, work->sprites[i]); + HuSprAttrSet(work->group, i, HUSPR_ATTR_LINEAR); + HuSprPosSet(work->group, i, last5GfxPosTbl[lastF][i][0], last5GfxPosTbl[lastF][i][1]); + } + if(!work->is_last) { + HuSprite *sprite = &HuSprData[HuSprGrpData[work->group].members[1]]; + HuSprBankSet(work->group, 1, 0); + sprite->frame = turn_remain; + } else { + HuSprAttrSet(work->group, 1, HUSPR_ATTR_DISPOFF); + } + HuSprAttrSet(work->group, 1, HUSPR_ATTR_NOANIM); + object->trans.x = 0.0f; + HuSprGrpTPLvlSet(work->group, object->trans.x); + HuSprGrpPosSet(work->group, HU_DISP_CENTERX, 72); + HuAudFXPlay(838); + work->time = 0; + } } static void UpdateLast5Gfx(omObjData *object) { - Last5GfxWork *work = OM_GET_WORK_PTR(object, Last5GfxWork); - if(work->kill || BoardIsKill()) { - HuSprGrpKill(work->group); - last5GfxObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - if(work->stop_time != 0) { - work->stop_time--; - return; - } - switch(work->state) { - case 0: - object->trans.x += 1.0f/30.0f; - if(object->trans.x > 1.0f) { - object->trans.x = 1.0f; - work->state = 1; - } - HuSprGrpTPLvlSet(work->group, object->trans.x); - break; - - case 1: - if(work->time >= 720) { - work->state = 2; - work->stop_time = 90; - if(work->is_last) { - HuSprGrpScaleSet(work->group, 1.0f, 1.0f); - } else { - HuSprScaleSet(work->group, 1, 1.0f, 1.0f); - } - } else { - s16 angle; - angle = work->time%180; - OSs16tof32(&angle, &object->trans.y); - object->trans.y = sin((object->trans.y*M_PI)/180.0)+0.5; - if(work->is_last) { - HuSprGrpScaleSet(work->group, object->trans.y, object->trans.y); - } else { - HuSprScaleSet(work->group, 1, object->trans.y, object->trans.y); - } - work->time += 9; - } - break; - - case 2: - object->trans.x -= 1.0f/30.0f; - if(object->trans.x < 0.0f) { - object->trans.x = 0.0f; - work->kill = 1; - } - HuSprGrpTPLvlSet(work->group, object->trans.x); - break; - } + Last5GfxWork *work = OM_GET_WORK_PTR(object, Last5GfxWork); + if(work->kill || BoardIsKill()) { + HuSprGrpKill(work->group); + last5GfxObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + if(work->stop_time != 0) { + work->stop_time--; + return; + } + switch(work->state) { + case 0: + object->trans.x += 1.0f/30.0f; + if(object->trans.x > 1.0f) { + object->trans.x = 1.0f; + work->state = 1; + } + HuSprGrpTPLvlSet(work->group, object->trans.x); + break; + + case 1: + if(work->time >= 720) { + work->state = 2; + work->stop_time = 90; + if(work->is_last) { + HuSprGrpScaleSet(work->group, 1.0f, 1.0f); + } else { + HuSprScaleSet(work->group, 1, 1.0f, 1.0f); + } + } else { + s16 angle; + angle = work->time%180; + OSs16tof32(&angle, &object->trans.y); + object->trans.y = sind(object->trans.y)+0.5; + if(work->is_last) { + HuSprGrpScaleSet(work->group, object->trans.y, object->trans.y); + } else { + HuSprScaleSet(work->group, 1, object->trans.y, object->trans.y); + } + work->time += 9; + } + break; + + case 2: + object->trans.x -= 1.0f/30.0f; + if(object->trans.x < 0.0f) { + object->trans.x = 0.0f; + work->kill = 1; + } + HuSprGrpTPLvlSet(work->group, object->trans.x); + break; + } } void BoardLast5GfxShowSet(s32 show) { - s32 i; - Last5GfxWork *work; - if(!last5GfxObj) { - return; - } - - work = OM_GET_WORK_PTR(last5GfxObj, Last5GfxWork); - for(i=0; i<3; i++) { - if(show) { - HuSprAttrReset(work->group, i, HUSPR_ATTR_DISPOFF); - } else { - HuSprAttrSet(work->group, i, HUSPR_ATTR_DISPOFF); - } - if(work->is_last) { - HuSprAttrSet(work->group, 1, HUSPR_ATTR_DISPOFF); - } - } + s32 i; + Last5GfxWork *work; + if(!last5GfxObj) { + return; + } + + work = OM_GET_WORK_PTR(last5GfxObj, Last5GfxWork); + for(i=0; i<3; i++) { + if(show) { + HuSprAttrReset(work->group, i, HUSPR_ATTR_DISPOFF); + } else { + HuSprAttrSet(work->group, i, HUSPR_ATTR_DISPOFF); + } + if(work->is_last) { + HuSprAttrSet(work->group, 1, HUSPR_ATTR_DISPOFF); + } + } } static s32 tauntActiveFXTbl[4] = { -1, -1, -1, -1 }; static s32 tauntFXTbl[8] = { - 294, - 358, - 422, - 486, - 550, - 614, - 678, - 742 + 294, + 358, + 422, + 486, + 550, + 614, + 678, + 742 }; typedef struct taunt_work { - u8 kill : 1; + u8 kill : 1; } TauntWork; static void TauntUpdate(omObjData *object); void BoardTauntInit(void) { - s32 i; - tauntObj = omAddObjEx(boardObjMan, 32258, 0, 0, -1, TauntUpdate); - for(i=0; i<4; i++) { - tauntActiveFXTbl[i] = -1; - } - _SetFlag(FLAG_ID_MAKE(1, 14)); + s32 i; + tauntObj = omAddObjEx(boardObjMan, 32258, 0, 0, -1, TauntUpdate); + for(i=0; i<4; i++) { + tauntActiveFXTbl[i] = -1; + } + _SetFlag(FLAG_ID_MAKE(1, 14)); } void BoardTauntKill(void) { - TauntWork *work; - if(!tauntObj) { - return; - } - work = OM_GET_WORK_PTR(tauntObj, TauntWork); - work->kill = 1; - _SetFlag(FLAG_ID_MAKE(1, 14)); + TauntWork *work; + if(!tauntObj) { + return; + } + work = OM_GET_WORK_PTR(tauntObj, TauntWork); + work->kill = 1; + _SetFlag(FLAG_ID_MAKE(1, 14)); } static void TauntUpdate(omObjData *object) { - s32 i; - s32 port; - s32 character; - TauntWork *work; - work = OM_GET_WORK_PTR(object, TauntWork); - if(work->kill || BoardIsKill()) { - for(i=0; i<4; i++) { - if(tauntActiveFXTbl[i] >= 0) { - HuAudFXStop(tauntActiveFXTbl[i]); - tauntActiveFXTbl[i] = -1; - } - } - tauntObj = NULL; - omDelObjEx(HuPrcCurrentGet(), object); - return; - } - for(i=0; i<4; i++) { - if(tauntActiveFXTbl[i] >= 0 && HuAudFXStatusGet(tauntActiveFXTbl[i]) == 0) { - tauntActiveFXTbl[i] = -1; - } - } - if(BoardPauseActiveCheck()) { - return; - } - if(_CheckFlag(FLAG_ID_MAKE(1, 14))) { - return; - } - if(WipeStatGet()) { - return; - } - if(GWSystem.player_curr == -1) { - return; - } - for(i=0; i<4; i++) { - if(i == GWSystem.player_curr || GWPlayer[i].com) { - continue; - } - port = GWPlayer[i].port & 0x3; - character = GWPlayer[i].character & 0x7; - if(tauntActiveFXTbl[port] >= 0) { - MSM_SEPARAM param; - float vol, pan; - vol = (64.0f*(HuPadSubStkX[port]/59.0f))+64.0f; - pan = 8191.0f*(HuPadSubStkY[port]/59.0f); - memset(¶m, 0, sizeof(MSM_SEPARAM)); - param.flag = MSM_SEPARAM_PITCH|MSM_SEPARAM_PAN; - OSf32tos8(&vol, ¶m.pan); - OSf32tos16(&pan, ¶m.pitch); - msmSeSetParam(tauntActiveFXTbl[port], ¶m); - } else { - if(HuPadBtnDown[port] & PAD_TRIGGER_L) { - tauntActiveFXTbl[port] = HuAudFXPlay(tauntFXTbl[character]); - } - } - } + s32 i; + s32 port; + s32 character; + TauntWork *work; + work = OM_GET_WORK_PTR(object, TauntWork); + if(work->kill || BoardIsKill()) { + for(i=0; i<4; i++) { + if(tauntActiveFXTbl[i] >= 0) { + HuAudFXStop(tauntActiveFXTbl[i]); + tauntActiveFXTbl[i] = -1; + } + } + tauntObj = NULL; + omDelObjEx(HuPrcCurrentGet(), object); + return; + } + for(i=0; i<4; i++) { + if(tauntActiveFXTbl[i] >= 0 && HuAudFXStatusGet(tauntActiveFXTbl[i]) == 0) { + tauntActiveFXTbl[i] = -1; + } + } + if(BoardPauseActiveCheck()) { + return; + } + if(_CheckFlag(FLAG_ID_MAKE(1, 14))) { + return; + } + if(WipeStatGet()) { + return; + } + if(GWSystem.player_curr == -1) { + return; + } + for(i=0; i<4; i++) { + if(i == GWSystem.player_curr || GWPlayer[i].com) { + continue; + } + port = GWPlayer[i].port & 0x3; + character = GWPlayer[i].character & 0x7; + if(tauntActiveFXTbl[port] >= 0) { + MSM_SEPARAM param; + float vol, pan; + vol = (64.0f*(HuPadSubStkX[port]/59.0f))+64.0f; + pan = 8191.0f*(HuPadSubStkY[port]/59.0f); + memset(¶m, 0, sizeof(MSM_SEPARAM)); + param.flag = MSM_SEPARAM_PITCH|MSM_SEPARAM_PAN; + OSf32tos8(&vol, ¶m.pan); + OSf32tos16(&pan, ¶m.pitch); + msmSeSetParam(tauntActiveFXTbl[port], ¶m); + } else { + if(HuPadBtnDown[port] & PAD_TRIGGER_L) { + tauntActiveFXTbl[port] = HuAudFXPlay(tauntFXTbl[character]); + } + } + } } s32 BoardDataDirReadAsync(s32 data_num) { - s32 status = HuDataDirReadAsync(data_num); - return status; + s32 status = HuDataDirReadAsync(data_num); + return status; } void BoardDataAsyncWait(s32 status) { - if(status == -1) { - return; - } - while(!HuDataGetAsyncStat(status)) { - HuPrcVSleep(); - } + if(status == -1) { + return; + } + while(!HuDataGetAsyncStat(status)) { + HuPrcVSleep(); + } } diff --git a/src/game/board/mg_setup.c b/src/game/board/mg_setup.c index 4613826f..ec5ac7a4 100644 --- a/src/game/board/mg_setup.c +++ b/src/game/board/mg_setup.c @@ -12,6 +12,8 @@ #include "game/board/tutorial.h" #include "game/board/window.h" +#include "ext_math.h" + // structs typedef struct structActiveMG { s16 unk_00; @@ -767,7 +769,7 @@ static void SeparateStatus(bitcopy* arg0, omObjData* arg1) { return; } OSu8tof32((u8*)&arg0->unk_03, &temp_f29); - temp_f30 = sin((temp_f29 * M_PI) / 180.0) * 4.0 + 1.0; + temp_f30 = sind(temp_f29) * 4.0 + 1.0; arg0->unk_03 += 6; if (arg0->unk_03 > 0x5A) { arg0->unk_03 = 0x5A; @@ -797,9 +799,9 @@ static void PopupVS(bitcopy* arg0, omObjData* arg1) { } OSs16tof32(&arg0->unk_04, &temp_f31); if (arg0->unk_04 < 0x5A) { - var_f30 = 2.0 * sin((M_PI * temp_f31) / 180.0); + var_f30 = 2.0 * sind(temp_f31); } else { - var_f30 = 1.0 + sin((M_PI * temp_f31) / 180.0); + var_f30 = 1.0 + sind(temp_f31); if (arg0->unk_04 >= 0xB4) { var_f30 = 1.0f; temp_r28 = (bitcopy*) mgSetupObj->work; @@ -958,7 +960,7 @@ static void UpdateLuckyValue(bitcopy* arg0, omObjData* arg1) { case 1: if (arg0->unk_03 < 0x5A) { OSu8tof32((u8*) &arg0->unk_03, &temp_f28); - temp_f29 = sin((M_PI * temp_f28) / 180.0); + temp_f29 = sind(temp_f28); HuSprScaleSet(temp_r27->unk_00[0], 8, temp_f29, temp_f29); HuSprScaleSet(temp_r27->unk_00[0], 9, temp_f29, temp_f29); arg0->unk_03 += 2; @@ -1006,7 +1008,7 @@ static void UpdateLuckyValue(bitcopy* arg0, omObjData* arg1) { return; } temp_f28 = (arg0->unk_04 % 360); - temp_f29 = (1.0 + (0.5 * sin((M_PI * temp_f28) / 180.0))); + temp_f29 = (1.0 + (0.5 * sind(temp_f28))); HuSprScaleSet(temp_r27->unk_00[0], 8, temp_f29, temp_f29); HuSprScaleSet(temp_r27->unk_00[0], 9, temp_f29, temp_f29); break; @@ -1075,7 +1077,7 @@ static void UpdateMGList(bitcopy* arg0, omObjData* arg1) { case 1: if (arg0->unk_03 < 0x5A) { OSu8tof32((u8*) &arg0->unk_03, &var_f26); - temp_f27 = sin((M_PI * var_f26) / 180.0); + temp_f27 = sind(var_f26); arg0->unk_03 += 3; HuSprScaleSet(temp_r24->unk_00[0], temp_r22, temp_f27, temp_f27); return; @@ -1166,7 +1168,7 @@ static void UpdateMGList(bitcopy* arg0, omObjData* arg1) { case 5: if (arg0->unk_03 < 0x5A) { OSu8tof32((u8*) &arg0->unk_03, &var_f26); - temp_f27 = (1.0 + (2.0 * sin((M_PI * var_f26) / 180.0))); + temp_f27 = (1.0 + (2.0 * sind(var_f26))); arg0->unk_03 += 4; if (arg0->unk_03 > 0x5A) { arg0->unk_03 = 0x5A; diff --git a/src/game/board/mushroom.c b/src/game/board/mushroom.c index 328fc1fe..1b0c57b6 100644 --- a/src/game/board/mushroom.c +++ b/src/game/board/mushroom.c @@ -300,7 +300,7 @@ static void ExitBox(ItemGiveWork2* arg0, omObjData* arg1) { } arg1->trans.y = spC.y + (700.0f * cosd(arg0->unk_08)); - arg1->rot.y = sin((M_PI * temp) / 180.0); + arg1->rot.y = sind(temp); arg0->unk_08 -= 1.5f; arg0->unk_06 -= 30; } diff --git a/src/game/board/start.c b/src/game/board/start.c index 0cb9e8bc..61b854db 100755 --- a/src/game/board/start.c +++ b/src/game/board/start.c @@ -20,6 +20,7 @@ #include "game/board/window.h" #include "dolphin.h" +#include "ext_math.h" #include "string.h" typedef struct { @@ -238,7 +239,7 @@ static void ShowLogo(void) { HuSprGrpPosSet(logoSprGrp, 288.0f, 240.0f); for (spA = 0; spA < 90; spA += 4) { OSs16tof32(&spA, &var_f27); - temp_f28 = sin(var_f27 * M_PI / 180.0); + temp_f28 = sind(var_f27); HuSprScaleSet(logoSprGrp, 0, temp_f28, temp_f28); HuPrcVSleep(); } @@ -246,7 +247,7 @@ static void ShowLogo(void) { for (spA = 0; spA < 540; spA += 4) { sp8 = spA % 180; OSs16tof32(&sp8, &var_f27); - temp_f28 = 1.0 + 0.699999988079071 * sin(var_f27 * M_PI / 180.0); + temp_f28 = 1.0 + 0.7f * sind(var_f27); HuSprScaleSet(logoSprGrp, 0, temp_f28, temp_f28); HuPrcVSleep(); } @@ -254,7 +255,7 @@ static void ShowLogo(void) { HuPrcSleep(0x78); for (spA = 0; spA < 90; spA += 4) { OSs16tof32(&spA, &var_f27); - temp_f28 = cos(var_f27 * M_PI / 180.0); + temp_f28 = cosd(var_f27); HuSprScaleSet(logoSprGrp, 0, temp_f28, temp_f28); HuPrcVSleep(); } @@ -586,7 +587,7 @@ static void PlayerDiceNumHide(omObjData *arg0, PlayerStartWork *arg1) { arg1->unk02 = 2; } OSs16tof32(&arg1->unk06, &var_f28); - arg0->rot.x = 1.0 + 1.2999999523162842 * sin(var_f28 * M_PI / 180.0); + arg0->rot.x = 1.0 + 1.3f * sind(var_f28); break; case 2: arg1->unk06 += 9; @@ -595,8 +596,8 @@ static void PlayerDiceNumHide(omObjData *arg0, PlayerStartWork *arg1) { arg1->unk02 = 3; } OSs16tof32(&arg1->unk06, &var_f28); - arg0->rot.x = cos(0.5f * var_f28 * M_PI / 180.0); - arg0->rot.y = 1.0 + 1.2999999523162842 * sin(var_f28 * M_PI / 180.0); + arg0->rot.x = cosd(0.5f * var_f28); + arg0->rot.y = 1.0 + 1.3f * sind(var_f28); break; case 3: BoardModelVisibilitySet(arg1->unk0A, 0); diff --git a/src/game/board/warp.c b/src/game/board/warp.c index ddc92315..c25a8511 100644 --- a/src/game/board/warp.c +++ b/src/game/board/warp.c @@ -12,7 +12,7 @@ #include "game/objsub.h" #include "game/disp.h" -#include "math.h" +#include "ext_math.h" static void WarpInit(s32); static void WarpLaunch(s32); @@ -234,7 +234,7 @@ static void WarpImpact(s32 player) { speed = 4.0f; for (angle = 0.0f, temp = angle; angle < 180.0f; angle += speed) { - temp_f30 = sin((M_PI * angle) / 180.0); + temp_f30 = sind(angle); BoardModelScaleSet(warpImpactMdl, 0.5f + temp_f30, 0.5f + temp_f30, 0.5f + temp_f30); HuPrcVSleep(); } @@ -245,4 +245,4 @@ static void WarpImpact(s32 player) { BoardPlayerIdleSet(warpImpactPlayer[i]); } warpState = 6; -} \ No newline at end of file +} diff --git a/src/game/hsfex.c b/src/game/hsfex.c index 63f3745e..490e19e3 100644 --- a/src/game/hsfex.c +++ b/src/game/hsfex.c @@ -3,7 +3,7 @@ #include "game/hsfmotion.h" #include "game/disp.h" -#include "math.h" +#include "ext_math.h" #define DISP_HALF_W (HU_DISP_WIDTH/2.0f) #define DISP_HALF_H (HU_DISP_HEIGHT/2.0f) @@ -129,10 +129,10 @@ void CamMotionEx(s16 arg0, s16 arg1, Vec *arg2, Vec *arg3, Vec *arg4, float arg5 var_f30 = var_f31; break; case 1: - var_f30 = arg5 * sin(90.0f * (var_f31 / arg5) * M_PI / 180.0); + var_f30 = arg5 * sind(90.0f * (var_f31 / arg5)); break; case 2: - var_f30 = arg5 * (1.0 - cos(90.0f * (var_f31 / arg5) * M_PI / 180.0)); + var_f30 = arg5 * (1.0 - cosd(90.0f * (var_f31 / arg5))); break; } var_r31 = temp_r21; @@ -346,9 +346,9 @@ static void SetObjCamMotion(s16 arg0, HsfTrack *arg1, float arg2, HsfexStruct02 case 14: VECSubtract(&arg3->unk08, &arg3->unk20, &spC); VECNormalize(&spC, &spC); - sp18.x = spC.x * spC.y * (1.0 - cos(M_PI * arg2 / 180.0)) - spC.z * sin(M_PI * arg2 / 180.0); - sp18.y = spC.y * spC.y + (1.0f - spC.y * spC.y) * cos(M_PI * arg2 / 180.0); - sp18.z = spC.y * spC.z * (1.0 - cos(M_PI * arg2 / 180.0)) + spC.x * sin(M_PI * arg2 / 180.0); + sp18.x = spC.x * spC.y * (1.0 - cosd(arg2)) - spC.z * sind(arg2); + sp18.y = spC.y * spC.y + (1.0f - spC.y * spC.y) * cosd(arg2); + sp18.z = spC.y * spC.z * (1.0 - cosd(arg2)) + spC.x * sind(arg2); VECNormalize(&sp18, &arg3->unk14); break; } @@ -432,7 +432,7 @@ void Hu3D2Dto3D(Vec *arg0, s16 arg1, Vec *arg2) { } } temp_r31 = &Hu3DCamera[i]; - temp_f30 = sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0); + temp_f30 = sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2); temp_f31 = temp_f30 * arg0->z * 2.0f; temp_f29 = temp_f31 * HU_DISP_ASPECT; temp_f28 = arg0->x / HU_DISP_WIDTH; @@ -461,8 +461,8 @@ void Hu3D3Dto2D(Vec *arg0, s16 arg1, Vec *arg2) { temp_r31 = &Hu3DCamera[i]; C_MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target); PSMTXMultVec(sp1C, arg0, &sp10); - temp_f31 = (sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0)) * sp10.z * HU_DISP_ASPECT; - temp_f30 = (sin((temp_r31->fov / 2) * M_PI / 180.0) / cos((temp_r31->fov / 2) * M_PI / 180.0)) * sp10.z; + temp_f31 = (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * sp10.z * HU_DISP_ASPECT; + temp_f30 = (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * sp10.z; arg2->x = DISP_HALF_W + sp10.x * (DISP_HALF_W / -temp_f31); arg2->y = DISP_HALF_H + sp10.y * (DISP_HALF_H / temp_f30); arg2->z = 0.0f; diff --git a/src/game/objsysobj.c b/src/game/objsysobj.c index 3e6b56f3..210bdbfd 100644 --- a/src/game/objsysobj.c +++ b/src/game/objsysobj.c @@ -6,7 +6,7 @@ #include "game/sprite.h" #include "game/hsfman.h" #include "game/audio.h" -#include "math.h" +#include "ext_math.h" Vec CRot; Vec Center; @@ -23,15 +23,15 @@ void omOutView(omObjData *object) float rot_x = CRot.x; float rot_y = CRot.y; float rot_z = CRot.z; - pos.x = (sin(M_PI*rot_y/180.0)*cos(M_PI*rot_x/180.0)*CZoom)+Center.x; - pos.y = (-sin(M_PI*rot_x/180.0)*CZoom)+Center.y; - pos.z = (cos(M_PI*rot_y/180.0)*cos(M_PI*rot_x/180.0)*CZoom)+Center.z; + pos.x = (sind(rot_y)*cosd(rot_x)*CZoom)+Center.x; + pos.y = (-sind(rot_x)*CZoom)+Center.y; + pos.z = (cosd(rot_y)*cosd(rot_x)*CZoom)+Center.z; target.x = Center.x; target.y = Center.y; target.z = Center.z; - up.x = sin(M_PI*rot_y/180.0)*sin(M_PI*rot_x/180.0); - up.y = cos(M_PI*rot_x/180.0); - up.z = cos(M_PI*rot_y/180.0)*sin(M_PI*rot_x/180.0); + up.x = sind(rot_y)*sind(rot_x); + up.y = cosd(rot_x); + up.z = cosd(rot_y)*sind(rot_x); Hu3DCameraPosSet(1, pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); } @@ -43,15 +43,15 @@ void omOutViewMulti(omObjData *object) float rot_x = CRotM[i].x; float rot_y = CRotM[i].y; float rot_z = CRotM[i].z; - pos.x = (sin(M_PI*rot_y/180.0)*cos(M_PI*rot_x/180.0)*CZoomM[i])+CenterM[i].x; - pos.y = (-sin(M_PI*rot_x/180.0)*CZoomM[i])+CenterM[i].y; - pos.z = (cos(M_PI*rot_y/180.0)*cos(M_PI*rot_x/180.0)*CZoomM[i])+CenterM[i].z; + pos.x = (sind(rot_y)*cosd(rot_x)*CZoomM[i])+CenterM[i].x; + pos.y = (-sind(rot_x)*CZoomM[i])+CenterM[i].y; + pos.z = (cosd(rot_y)*cosd(rot_x)*CZoomM[i])+CenterM[i].z; target.x = CenterM[i].x; target.y = CenterM[i].y; target.z = CenterM[i].z; - up.x = sin(M_PI*rot_y/180.0)*sin(M_PI*rot_x/180.0); - up.y = cos(M_PI*rot_x/180.0); - up.z = cos(M_PI*rot_y/180.0)*sin(M_PI*rot_x/180.0); + up.x = sind(rot_y)*sind(rot_x); + up.y = cosd(rot_x); + up.z = cosd(rot_y)*sind(rot_x); Hu3DCameraPosSetV((1 << i), &pos, &up, &target); } } @@ -145,4 +145,4 @@ void omSysPauseCtrl(s16 flag) } else { omDBGSysKeyObj->work[0] |= 0x100; } -} \ No newline at end of file +} From 98a95407ffb4ccd48eed15f8d773ba430a9d1398 Mon Sep 17 00:00:00 2001 From: Liam Coleman Date: Fri, 10 Jan 2025 18:22:38 -0600 Subject: [PATCH 11/24] mstory2 board_miss (#520) * Match first mstory2 TU * Complete mstory2 board_clear and board_entrance * Complete mstory2 board miss --- config/GMPE01_00/rels/mstory2Dll/splits.txt | 4 +- config/GMPE01_01/rels/mstory2Dll/splits.txt | 4 +- configure.py | 2 +- src/REL/mstory2Dll/board_miss.c | 855 ++++++++++++++++++++ 4 files changed, 860 insertions(+), 5 deletions(-) create mode 100644 src/REL/mstory2Dll/board_miss.c diff --git a/config/GMPE01_00/rels/mstory2Dll/splits.txt b/config/GMPE01_00/rels/mstory2Dll/splits.txt index 43465253..080a347f 100644 --- a/config/GMPE01_00/rels/mstory2Dll/splits.txt +++ b/config/GMPE01_00/rels/mstory2Dll/splits.txt @@ -27,13 +27,13 @@ REL/mstory2Dll/board_clear.c: REL/mstory2Dll/board_miss.c: .text start:0x0000E570 end:0x000123C8 .rodata start:0x00000248 end:0x00000310 - .data start:0x00000698 end:0x00000D50 + .data start:0x00000698 end:0x00000850 .bss start:0x000004E0 end:0x00000790 REL/mstory2Dll/mg_clear.c: .text start:0x000123C8 end:0x00016060 .rodata start:0x00000310 end:0x000003D0 - .data start:0x00000D50 end:0x00000DB8 + .data start:0x00000850 end:0x00000DB8 .bss start:0x00000790 end:0x00000968 REL/mstory2Dll/mg_miss.c: diff --git a/config/GMPE01_01/rels/mstory2Dll/splits.txt b/config/GMPE01_01/rels/mstory2Dll/splits.txt index 3e202379..2d36e6e7 100644 --- a/config/GMPE01_01/rels/mstory2Dll/splits.txt +++ b/config/GMPE01_01/rels/mstory2Dll/splits.txt @@ -27,13 +27,13 @@ REL/mstory2Dll/board_clear.c: REL/mstory2Dll/board_miss.c: .text start:0x0000E570 end:0x000123C8 .rodata start:0x00000248 end:0x00000310 - .data start:0x00000698 end:0x00000D50 + .data start:0x00000698 end:0x00000850 .bss start:0x000004E0 end:0x00000790 REL/mstory2Dll/mg_clear.c: .text start:0x000123C8 end:0x00016060 .rodata start:0x00000310 end:0x000003D0 - .data start:0x00000D50 end:0x00000DB8 + .data start:0x00000850 end:0x00000DB8 .bss start:0x00000790 end:0x00000968 REL/mstory2Dll/mg_miss.c: diff --git a/configure.py b/configure.py index 212bef75..dc0c82ab 100644 --- a/configure.py +++ b/configure.py @@ -1373,7 +1373,7 @@ config.libs = [ Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/main.c"), Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/board_entrance.c"), Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/board_clear.c"), - Object(NonMatching, "REL/mstory2Dll/board_miss.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/board_miss.c"), Object(NonMatching, "REL/mstory2Dll/mg_clear.c"), Object(NonMatching, "REL/mstory2Dll/mg_miss.c"), Object(NonMatching, "REL/mstory2Dll/ending.c"), diff --git a/src/REL/mstory2Dll/board_miss.c b/src/REL/mstory2Dll/board_miss.c new file mode 100644 index 00000000..45b05479 --- /dev/null +++ b/src/REL/mstory2Dll/board_miss.c @@ -0,0 +1,855 @@ +#include "REL/mstory2Dll.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "game/pad.h" +#include "game/objsub.h" +#include "game/board/main.h" + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x18]; + /* 0x030 */ StructFn357C unk30[4]; + /* 0x100 */ float unk100; +} StructBss688; // Size 0x104 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ char unk0C[4]; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; +} StructBss4E8; // Size 0x18 + +StructBss688 lbl_1_bss_688; +StructBss16C lbl_1_bss_660; +StructBss16C lbl_1_bss_638; +StructBss16C lbl_1_bss_610; +StructBss16C lbl_1_bss_5E8; +StructBss16C lbl_1_bss_548[4]; +StructBss4E8 lbl_1_bss_4E8[4]; +BOOL lbl_1_bss_4E4; +Process *lbl_1_bss_4E0; + +s32 lbl_1_data_698[7] = { + DATADIR_W01, + DATADIR_W02, + DATADIR_W03, + DATADIR_W04, + DATADIR_W05, + DATADIR_W06, + DATADIR_W10, +}; + +s32 lbl_1_data_6B4[8] = { + DATADIR_MARIOMDL1, + DATADIR_LUIGIMDL1, + DATADIR_PEACHMDL1, + DATADIR_YOSHIMDL1, + DATADIR_WARIOMDL1, + DATADIR_DONKEYMDL1, + DATADIR_DAISYMDL1, + DATADIR_WALUIGIMDL1 +}; + +void fn_1_FDFC(void); +void fn_1_10194(void); +void fn_1_106B0(omObjData* arg0, StructBss16C* arg1); +void fn_1_1094C(void); +void fn_1_10DF4(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_10EA0(omObjData* arg0, StructBss16C* arg1); +void fn_1_1112C(void); +void fn_1_11418(int arg0); +void fn_1_11934(omObjData* arg0, StructBss16C* arg1); +void fn_1_11A98(omObjData* arg0, StructBss16C* arg1); +void fn_1_11BB0(void); +void fn_1_11FD0(void); +void fn_1_1205C(void); +void fn_1_1218C(void); + +void fn_1_E570(void) +{ + int statId = HuDataDirReadAsync(DATADIR_BOARD); + if(statId != -1) { + while(!HuDataGetAsyncStat(statId)) { + HuPrcVSleep(); + } + } + HuAR_MRAMtoARAM(DATADIR_BOARD); + while(HuARDMACheck()) { + HuPrcVSleep(); + } + HuDataDirClose(DATADIR_BOARD); + statId = HuDataDirReadAsync(lbl_1_data_698[GWSystem.board]); + if(statId != -1) { + while(!HuDataGetAsyncStat(statId)) { + HuPrcVSleep(); + } + } + lbl_1_bss_4E4 = TRUE; + HuPrcEnd(); + while(1) { + HuPrcVSleep(); + } +} + +void fn_1_E638(void) +{ + int i, j; + lbl_1_bss_4E8[0].unk00 = 0; + lbl_1_bss_4E8[0].unk04 = 0; + lbl_1_bss_4E8[0].unk10 = lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk10; + lbl_1_bss_4E8[0].unk14 = lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk14; + lbl_1_bss_4E8[0].unk08 = 0; + for(i=1; i<4; i++) { + lbl_1_bss_4E8[i].unk10 = -1; + lbl_1_bss_4E8[i].unk14 = i; + lbl_1_bss_4E8[i].unk08 = 1; + } + for(i=1; i<4; i++) { + do { + lbl_1_bss_4E8[i].unk10 = rand8()%8; + for(j=0; j<4; j++) { + if(i != j && lbl_1_bss_4E8[j].unk10 != -1 && lbl_1_bss_4E8[i].unk10 == lbl_1_bss_4E8[j].unk10) { + break; + } + } + } while(j != 4); + } + for(i=0; i<4; i++) { + GWPlayerCfg[i].character = lbl_1_bss_4E8[i].unk10; + GWPlayerCfg[i].pad_idx = lbl_1_bss_4E8[i].unk14; + GWPlayerCfg[i].group = 0; + GWPlayerCfg[i].iscom = lbl_1_bss_4E8[i].unk08; + } + BoardSaveInit(GWSystem.board); + CharKill(-1); + HuDataDirClose(DATADIR_MSTORY2); + HuPrcChildCreate(fn_1_E570, 100, 12288, 0, lbl_1_bss_4E0); +} + +void fn_1_E8EC(void) +{ + int ovlTbl[7] = { + OVL_W01, + OVL_W02, + OVL_W03, + OVL_W04, + OVL_W05, + OVL_W06, + OVL_W10 + }; + omOvlHisData *his; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet()) { + fn_1_BC8(); + } + CharModelKill(-1); + MGSeqKillAll(); + his = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY3, 0, his->stat); + do { + fn_1_BC8(); + } while(lbl_1_bss_4E4 != 1); + CharARAMOpen(GWPlayerCfg[0].character); + CharARAMOpen(GWPlayerCfg[1].character); + CharARAMOpen(GWPlayerCfg[2].character); + CharARAMOpen(GWPlayerCfg[3].character); + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + omOvlCallEx(ovlTbl[GWSystem.board], 1, 0, 0); + while(1) { + fn_1_BC8(); + } +} + +void fn_1_EA2C(Process* arg0, s32 arg1) +{ + int i; + lbl_1_bss_4E0 = arg0; + lbl_1_bss_688.unk0C = arg1; + fn_1_C30(); + fn_1_3668(255); + fn_1_2828(lbl_1_bss_4E0, fn_1_11FD0); + fn_1_3754(); + fn_1_11418(arg1); + HuPrcChildCreate(fn_1_10194, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1094C, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1112C, 100, 8192, 0, HuPrcCurrentGet()); + for(i=0; i<4; i++) { + HuPrcChildCreate(fn_1_11BB0, 100, 8192, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_FDFC, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_EB60(omObjData *object) +{ + if(object->work[2]) { + object->work[2]--; + return; + } + if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_EBEC(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while(1) { + fn_1_BC8(); + printWin(posX, posY, 220, 160, &winColor); + if(lbl_1_bss_660.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if(lbl_1_bss_638.unk04 == NULL) { + print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); + } else { + print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + } + if(lbl_1_bss_610.unk04 == NULL) { + print8(posX, posY+20, 1, "PROC_KOOPA -> FALSE"); + } else { + print8(posX, posY+20, 1, "PROC_KOOPA -> TRUE"); + } + if(lbl_1_bss_5E8.unk04 == NULL) { + print8(posX, posY+30, 1, "PROC_MKOOPA -> FALSE"); + } else { + print8(posX, posY+30, 1, "PROC_MKOOPA -> TRUE"); + } + for(i=0; i<4; i++) { + if(lbl_1_bss_548[i].unk04 == NULL) { + print8(posX, posY+40+(i*10), 1, "PROC_PLAYER%d -> FALSE", i); + } else { + print8(posX, posY+40+(i*10), 1, "PROC_PLAYER%d -> TRUE", i); + } + } + print8(posX, posY+90, 1, "P:%d W:%d", lbl_1_bss_688.unk00, lbl_1_bss_688.unk0C); + print8(posX, posY+110, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for(i=0; i<4; i++) { + print8(posX, posY+120+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_688.unk30[i].unk00, lbl_1_bss_688.unk30[i].unk04, lbl_1_bss_688.unk30[i].unk08, lbl_1_bss_688.unk30[i].unk0C, lbl_1_bss_688.unk30[i].unk14, lbl_1_bss_688.unk30[i].unk10); + } + } +} + +void fn_1_EFCC(void) +{ + lbl_1_bss_78[0] = HuAudSeqPlay(52); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); +} + +void fn_1_F028(void) +{ + int i; + for(i=0; i<4; i++) { + lbl_1_bss_548[i].unk04 = (void *)fn_1_11934; + } + do { + fn_1_BC8(); + for(i=0; i<4; i++) { + if(lbl_1_bss_548[i].unk04 != NULL) { + break; + } + } + } while(i != 4); + lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 = (void *)fn_1_11A98; + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_1205C); + do { + fn_1_BC8(); + } while(lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 != NULL); + do { + fn_1_BC8(); + } while(lbl_1_bss_5E8.unk04 != NULL); + fn_1_BE8(30); + if(0) { + //Dummy code to stop this function from inlining + do { + fn_1_BC8(); + for(i=0; i<4; i++) { + if(lbl_1_bss_548[i].unk04 != NULL) { + break; + } + } + } while(i != 4); + lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 = (void *)fn_1_11A98; + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_1205C); + do { + fn_1_BC8(); + } while(lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 != NULL); + do { + fn_1_BC8(); + } while(lbl_1_bss_5E8.unk04 != NULL); + fn_1_BE8(30); + } +} + +void fn_1_F150(void) +{ + lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_10DF4(3, -1, 15, 1, 0); + fn_1_1D18(lbl_1_bss_688.unk04, 0x1F0009); + fn_1_1AFC(lbl_1_bss_688.unk04, -1); + fn_1_1D18(lbl_1_bss_688.unk04, 0x250004); + fn_1_10DF4(1, -1, 15, 1, 0); + fn_1_1A94(lbl_1_bss_688.unk04); +} + +int fn_1_F22C(void) +{ + int result = 0; + fn_1_1D18(lbl_1_bss_688.unk04, 0x1E0021); + fn_1_1AFC(lbl_1_bss_688.unk04, 5); + lbl_1_bss_688.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_688.unk0C); + fn_1_1D18(lbl_1_bss_688.unk08, 0x1E0035); + result = fn_1_1C64(lbl_1_bss_688.unk08); + fn_1_1D18(lbl_1_bss_688.unk08, 0x250004); + fn_1_71DC(lbl_1_bss_688.unk08); + return result; +} + +int fn_1_F2FC(void) +{ + int result = 0; + fn_1_1D18(lbl_1_bss_688.unk04, 0x1E0005); + fn_1_1AFC(lbl_1_bss_688.unk04, 5); + lbl_1_bss_688.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_688.unk0C); + fn_1_1D18(lbl_1_bss_688.unk08, 0x1E0035); + result = fn_1_1BA8(lbl_1_bss_688.unk08, 1); + fn_1_1D18(lbl_1_bss_688.unk08, 0x250004); + fn_1_71DC(lbl_1_bss_688.unk08); + return result; +} + +void fn_1_F3D0(void) +{ + lbl_1_bss_5E8.unk04 = (void *)fn_1_10EA0; + lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_1D18(lbl_1_bss_688.unk04, 0x1F000A); + fn_1_1AFC(lbl_1_bss_688.unk04, -1); + fn_1_1D18(lbl_1_bss_688.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_688.unk04); + HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); + do { + fn_1_BC8(); + } while(lbl_1_bss_5E8.unk04 != NULL); + lbl_1_bss_610.unk04 = (void *)fn_1_106B0; + do { + fn_1_BC8(); + } while(lbl_1_bss_610.unk04 != NULL); + fn_1_7384(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->model[1], lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk10, 1, 20, 1); + lbl_1_bss_78[1] = HuAudSeqPlay(6); + fn_1_BE8(30); + fn_1_1DFC(lbl_1_bss_610.unk00, 1, 4, 30, 0); + fn_1_BE8(30); + lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C); + HuAudFXPlay(lbl_1_data_0[6][0]); + HuWinAttrSet(lbl_1_bss_688.unk04, 0x400); + HuWinMesSet(lbl_1_bss_688.unk04, 0x1F000B); + fn_1_2264(lbl_1_bss_610.unk00, 1, 4, 10); + fn_1_1DFC(lbl_1_bss_610.unk00, 1, 1, 10, 1); + HuWinAttrReset(lbl_1_bss_688.unk04, 0x400); + HuWinKeyWaitEntry(lbl_1_bss_688.unk04); + fn_1_BC8(); + fn_1_1AFC(lbl_1_bss_688.unk04, -1); + fn_1_1D18(lbl_1_bss_688.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_688.unk04); + fn_1_BE8(60); + fn_1_E638(); + Hu3DModelAttrReset(lbl_1_bss_638.unk00->model[5], 1); + Hu3DModelAttrReset(lbl_1_bss_638.unk00->model[6], 1); + fn_1_1DFC(lbl_1_bss_610.unk00, 1, 4, 15, 1); + fn_1_1DFC(lbl_1_bss_638.unk00, 2, 3, 0, 0); + fn_1_BE8(45); + HuAudFXPlay(lbl_1_data_0[6][0]); + fn_1_BE8(15); + fn_1_1DFC(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00, 1, 5, 0, 0); + fn_1_BC8(); + fn_1_7384(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->model[1], lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk10, 1, 10, 0); + fn_1_2264(lbl_1_bss_638.unk00, 2, 3, 0); + HuAudSeqFadeOut(lbl_1_bss_78[1], 3000); + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_1218C); + fn_1_BE8(150); +} + +void fn_1_F838(void) +{ + +} + +void fn_1_F83C(void) +{ + fn_1_BE8(60); + HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + CharModelKill(-1); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); +} + +void fn_1_F8B4(omObjData* arg0, StructBss16C* arg1) +{ + int mode = 0; + int i; + fn_1_EFCC(); + fn_1_F028(); + fn_1_F150(); + lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C); + while(1) { + fn_1_BC8(); + if(fn_1_F22C()) { + mode = 0; + break; + } else if(fn_1_F2FC()) { + mode = 1; + break; + } + } + + fn_1_1A94(lbl_1_bss_688.unk04); + for(i=0; i<4; i++) { + if(lbl_1_bss_688.unk30[i].unk00 != lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk00) { + Hu3DModelAttrSet(lbl_1_bss_548[i].unk00->model[1], 1); + } + Hu3DModelAttrSet(lbl_1_bss_548[i].unk00->model[2], 1); + } + switch(mode) { + case 0: + fn_1_F3D0(); + break; + case 1: + break; + } + switch(mode) { + case 0: + fn_1_E8EC(); + break; + + case 1: + fn_1_F83C(); + break; + } + arg1->unk04 = NULL; +} + +void fn_1_FDFC(void) +{ + omObjData *obj; + lbl_1_bss_660.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL); + lbl_1_bss_660.unk04 = (void *)fn_1_F8B4; + lbl_1_bss_660.unk00->data = &lbl_1_bss_660; + while(1) { + fn_1_BC8(); + if(lbl_1_bss_660.unk04 != NULL) { + lbl_1_bss_660.unk04(obj, &lbl_1_bss_660); + } + } +} + +void fn_1_FEB0(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660052); + object->motion[1] = Hu3DMotionIDGet(object->model[1]); + Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(0x660053); + object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); + object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + fn_1_1DFC(object, 2, 2, 0, 2); + object->model[5] = Hu3DModelCreateFile(0x660057); + object->motion[5] = Hu3DMotionIDGet(object->model[5]); + Hu3DModelPosSet(object->model[5], 0, 80, 460); + Hu3DModelAttrSet(object->model[5], 1); + Hu3DModelShadowSet(object->model[5]); + fn_1_1DFC(object, 5, 5, 0, 2); + object->model[6] = Hu3DModelCreateFile(0x660058); + object->motion[6] = Hu3DMotionIDGet(object->model[6]); + Hu3DModelHookSet(object->model[5], "koopabox_fix-effect_fook2", object->model[6]); + Hu3DModelAttrSet(object->model[6], 1); + fn_1_1DFC(object, 6, 6, 0, 2); +} + +void fn_1_100D8(omObjData* arg0, StructBss16C* arg1) +{ + Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360); + if(arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_10194(void) +{ + omObjData *obj; + lbl_1_bss_638.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL); + lbl_1_bss_638.unk04 = (void *)fn_1_100D8; + lbl_1_bss_638.unk00->data = &lbl_1_bss_638; + fn_1_FEB0(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_638.unk04 != NULL) { + lbl_1_bss_638.unk04(obj, &lbl_1_bss_638); + } + } +} + +void fn_1_10448(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660062); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); + object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660065); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660069); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660066); + Hu3DModelPosSet(object->model[1], -180, 0, 800); + Hu3DModelRotSet(object->model[1], 0, 60, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_10604(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_610.unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_610.unk00->work[0] = arg4; + lbl_1_bss_610.unk00->work[1] = arg1; + lbl_1_bss_610.unk00->work[2] = arg2+1; +} + +void fn_1_106B0(omObjData* arg0, StructBss16C* arg1) +{ + int i = 0; + float speed = 50; + + HuAudFXPlay(153); + fn_1_10604(2, 1, 0, 0, 1); + fn_1_BE8(5); + Hu3DMotionTimeSet(lbl_1_bss_610.unk00->model[1], 100); + fn_1_BC8(); + Hu3DModelAttrReset(arg0->model[1], 1); + while(1) { + fn_1_BC8(); + if(Hu3DMotionTimeGet(lbl_1_bss_610.unk00->model[1]) >= 137) { + break; + } + } + HuAudFXPlay(156); + omVibrate(lbl_1_bss_688.unk0C, 45, 12, 0); + fn_1_67D8(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00, 6, 1, 5, 0); + for(i=0; i<60; i++) { + float posY; + fn_1_BC8(); + posY = fn_1_B08(0, speed, i%15, 15); + speed = fn_1_88C(speed, 0, 30); + lbl_1_bss_688.unk100 = fn_1_88C(lbl_1_bss_688.unk100, posY, 5); + } + lbl_1_bss_688.unk100 = 0; + arg1->unk04 = NULL; +} + +void fn_1_1094C(void) +{ + omObjData *obj; + lbl_1_bss_610.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL); + lbl_1_bss_610.unk04 = NULL; + lbl_1_bss_610.unk00->data = &lbl_1_bss_638; + fn_1_10448(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_610.unk04 != NULL) { + lbl_1_bss_610.unk04(obj, &lbl_1_bss_610); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_10C00(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x66007D); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x66007E); + object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660080); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660081); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660084); + object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660085); + Hu3DModelPosSet(object->model[1], -300, 0, 890); + Hu3DModelRotSet(object->model[1], 0, 30, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 13); +} + +void fn_1_10DF4(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_5E8.unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_5E8.unk00->work[0] = arg4; + lbl_1_bss_5E8.unk00->work[1] = arg1; + lbl_1_bss_5E8.unk00->work[2] = arg2+1; +} + +void fn_1_10EA0(omObjData* arg0, StructBss16C* arg1) +{ + Vec pos = { -600, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, -90, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_10F84(omObjData* arg0, StructBss16C* arg1) +{ + int i; + for(i=0; i<15; i++) { + fn_1_BC8(); + Hu3DData[arg0->model[1]].rot.y = fn_1_864(0, 135, i, 15); + } + arg1->unk04 = NULL; +} + +void fn_1_11048(omObjData* arg0, StructBss16C* arg1) +{ + Vec pos = { -120, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 60, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_1112C(void) +{ + omObjData *obj; + lbl_1_bss_5E8.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL); + lbl_1_bss_5E8.unk04 = NULL; + lbl_1_bss_5E8.unk00->data = &lbl_1_bss_5E8; + fn_1_10C00(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_5E8.unk04 != NULL) { + lbl_1_bss_5E8.unk04(obj, &lbl_1_bss_5E8); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_11418(int arg0) +{ + int i; + int order[4]; + order[0] = 0; + for(i=1; i<4; i++) { + order[i] = order[i-1]+1; + if(order[i] >= 4) { + order[i] = 0; + } + if(arg0 == order[i]) { + lbl_1_bss_688.unk00 = i; + } + } + for(i=0; i<4; i++) { + fn_1_357C(&lbl_1_bss_688.unk30[i], order[i]); + } + for(i=0; i<4; i++) { + lbl_1_bss_688.unk30[i].unk18 = GWPlayer[order[i]].rank+1; + } +} + +Vec lbl_1_data_81C[4] = { + { -300, 0, 460 }, + { -100, -30, 460 }, + { 100, -60, 460 }, + { 300, -90, 460 }, +}; + +void fn_1_1154C(omObjData *object, int player) +{ + int playerNo = player; + int charNo = lbl_1_bss_688.unk30[playerNo].unk10; + object->model[1] = CharModelCreate(charNo, 4); + object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); + object->motion[2] = CharModelMotionCreate(charNo, 0x5F0003); + object->motion[3] = CharModelMotionCreate(charNo, 0x5F0005); + object->motion[4] = CharModelMotionCreate(charNo, 0x5F001A); + object->motion[5] = CharModelMotionCreate(charNo, 0x5F006D); + object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x660018+charNo); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet(object->model[1], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18-1].y+90, lbl_1_data_81C[playerNo].z); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(0x660056); + Hu3DModelPosSet(object->model[2], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18-1].y, lbl_1_data_81C[playerNo].z); + if(lbl_1_bss_688.unk30[playerNo].unk18 == 4) { + Hu3DModelAttrSet(object->model[2], 1); + } + Hu3DModelScaleSet(object->model[2], 1.5, 1, 1.5); + Hu3DModelShadowMapSet(object->model[2]); +} + +void fn_1_11838(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[0] = arg4; + lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[1] = arg1; + lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[2] = arg2+1; +} + +void fn_1_11934(omObjData* arg0, StructBss16C* arg1) +{ + float posY = Hu3DData[arg0->model[1]].pos.y; + int i; + for(i=0; i<60; i++) { + fn_1_BC8(); + Hu3DData[arg0->model[1]].pos.y = fn_1_984(posY, 0, i, 60); + Hu3DData[arg0->model[2]].pos.y = fn_1_984(posY-90, -90, i, 60); + } + Hu3DModelAttrSet(arg0->model[2], 1); + arg1->unk04 = NULL; +} + +void fn_1_11A98(omObjData* arg0, StructBss16C* arg1) +{ + Vec pos = { 120, 0, 800 }; + lbl_1_bss_5E8.unk04 = (void *)fn_1_11048; + fn_1_1DFC(lbl_1_bss_638.unk00, 2, 2, 0, 0); + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, -60, 30, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_11BB0(void) +{ + omObjData *obj; + int playerNo = lbl_1_bss_688.unk10++; + lbl_1_bss_548[playerNo].unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL); + lbl_1_bss_548[playerNo].unk04 = NULL; + lbl_1_bss_548[playerNo].unk00->data = &lbl_1_bss_548[0]; + fn_1_1154C(obj, playerNo); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_548[playerNo].unk04 != NULL) { + lbl_1_bss_548[playerNo].unk04(obj, &lbl_1_bss_548[playerNo]); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_11FD0(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 170; + work->unk08.z = 0; + work->unk20.x = -5; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1700; +} + +void fn_1_1205C(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 125; + temp.unk08.z = 0; + temp.unk20.x = -5; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1750; + fn_1_4FEC(work, &temp, work->unk40++, 60, 30); + if(0.0f != lbl_1_bss_688.unk100) { + work->unk08.y = lbl_1_bss_688.unk100+125; + } +} + +void fn_1_1218C(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + if(work->unk40 == 50) { + fn_1_1DFC(lbl_1_bss_638.unk00, 5, 5, 0, 0); + fn_1_1DFC(lbl_1_bss_638.unk00, 6, 6, 0, 0); + HuAudFXPlay(161); + } + temp.unk08.x = 0; + temp.unk08.y = 100; + temp.unk08.z = 460; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 125; + fn_1_4FEC(work, &temp, work->unk40, 180, 10); + if(work->unk40++ >= 90) { + if(work->unk40 == 91) { + lbl_1_bss_88[0] = HuAudFXPlay(32); + } + work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40-90, 90); + Hu3DData[lbl_1_bss_638.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40-90, 90); + } +} \ No newline at end of file From f28e9d19aa20f800ed7cbc8d457f380bee3c015b Mon Sep 17 00:00:00 2001 From: Liam Coleman Date: Sat, 11 Jan 2025 00:04:16 -0600 Subject: [PATCH 12/24] Match rest of mstory2 (#521) --- config/GMPE01_00/rels/mstory2Dll/splits.txt | 4 +- config/GMPE01_01/rels/mstory2Dll/splits.txt | 4 +- configure.py | 8 +- include/REL/mstory2Dll.h | 2 + include/game/gamework_data.h | 5 +- src/REL/mentDll/main.c | 2 +- src/REL/modeseldll/filesel.c | 2 +- src/REL/mstory2Dll/ending.c | 676 ++++++++++++++++ src/REL/mstory2Dll/mg_clear.c | 831 ++++++++++++++++++++ src/REL/mstory2Dll/mg_miss.c | 501 ++++++++++++ src/REL/mstory2Dll/save.c | 118 +++ src/REL/mstory4Dll/main.c | 2 +- 12 files changed, 2142 insertions(+), 13 deletions(-) create mode 100644 src/REL/mstory2Dll/ending.c create mode 100644 src/REL/mstory2Dll/mg_clear.c create mode 100644 src/REL/mstory2Dll/mg_miss.c create mode 100644 src/REL/mstory2Dll/save.c diff --git a/config/GMPE01_00/rels/mstory2Dll/splits.txt b/config/GMPE01_00/rels/mstory2Dll/splits.txt index 080a347f..aa6bd0d5 100644 --- a/config/GMPE01_00/rels/mstory2Dll/splits.txt +++ b/config/GMPE01_00/rels/mstory2Dll/splits.txt @@ -38,13 +38,13 @@ REL/mstory2Dll/mg_clear.c: REL/mstory2Dll/mg_miss.c: .text start:0x00016060 end:0x000186D0 - .rodata start:0x000003D0 end:0x00000440 + .rodata start:0x000003D0 end:0x00000438 .data start:0x00000DB8 end:0x00000EF8 .bss start:0x00000968 end:0x00000B38 REL/mstory2Dll/ending.c: .text start:0x000186D0 end:0x0001B560 - .rodata start:0x00000440 end:0x000004B8 + .rodata start:0x00000438 end:0x000004B8 .data start:0x00000EF8 end:0x00001113 .bss start:0x00000B38 end:0x00000D10 diff --git a/config/GMPE01_01/rels/mstory2Dll/splits.txt b/config/GMPE01_01/rels/mstory2Dll/splits.txt index 2d36e6e7..efd06f61 100644 --- a/config/GMPE01_01/rels/mstory2Dll/splits.txt +++ b/config/GMPE01_01/rels/mstory2Dll/splits.txt @@ -38,13 +38,13 @@ REL/mstory2Dll/mg_clear.c: REL/mstory2Dll/mg_miss.c: .text start:0x00016060 end:0x000186D0 - .rodata start:0x000003D0 end:0x00000440 + .rodata start:0x000003D0 end:0x00000438 .data start:0x00000DB8 end:0x00000EF8 .bss start:0x00000968 end:0x00000B38 REL/mstory2Dll/ending.c: .text start:0x000186D0 end:0x0001B560 - .rodata start:0x00000440 end:0x000004B8 + .rodata start:0x00000438 end:0x000004B8 .data start:0x00000EF8 end:0x00001113 .bss start:0x00000B38 end:0x00000D10 diff --git a/configure.py b/configure.py index dc0c82ab..015fa960 100644 --- a/configure.py +++ b/configure.py @@ -1374,10 +1374,10 @@ config.libs = [ Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/board_entrance.c"), Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/board_clear.c"), Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/board_miss.c"), - Object(NonMatching, "REL/mstory2Dll/mg_clear.c"), - Object(NonMatching, "REL/mstory2Dll/mg_miss.c"), - Object(NonMatching, "REL/mstory2Dll/ending.c"), - Object(NonMatching, "REL/mstory2Dll/save.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/mg_clear.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/mg_miss.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/ending.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/save.c"), }, ), Rel( diff --git a/include/REL/mstory2Dll.h b/include/REL/mstory2Dll.h index b170640e..7998a490 100644 --- a/include/REL/mstory2Dll.h +++ b/include/REL/mstory2Dll.h @@ -46,6 +46,7 @@ float fn_1_864(float arg0, float arg1, float arg2, float arg3); float fn_1_88C(float arg0, float arg1, float arg2); float fn_1_8AC(float arg0, float arg1, float arg2, float arg3); float fn_1_984(float arg0, float arg1, float arg2, float arg3); +float fn_1_A4C(float arg0, float arg1, float arg2, float arg3); float fn_1_B08(float arg0, float arg1, float arg2, float arg3); void fn_1_BC8(void); void fn_1_BE8(s32 arg0); @@ -77,6 +78,7 @@ void fn_1_6704(omObjData* arg0); void fn_1_67D8(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); void fn_1_6A90(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); void fn_1_6D78(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_6DBC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); s32 fn_1_7064(s32 arg0, s32 arg1); void fn_1_71DC(s32 arg0); void fn_1_7244(s16 modelId, char *objName, u32 constAttr, float ofs); diff --git a/include/game/gamework_data.h b/include/game/gamework_data.h index 8d98cad0..0e2c8254 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -40,7 +40,8 @@ typedef struct system_state { }; /* 0x09 */ s8 last5_effect; /* 0x0A */ s8 player_curr; -/* 0x0B */ s8 unk0B[3]; +/* 0x0B */ u8 unk0B; +/* 0x0C */ s8 unk0C; /* 0x0E */ s16 block_pos; /* 0x10 */ u8 ATTRIBUTE_ALIGN(4) board_data[32]; /* 0x30 */ u8 mess_delay; @@ -316,7 +317,7 @@ static inline s32 GWPlayerCurrGet(void) static inline s32 GWUnkB1Get(void) { - return GWSystem.unk0B[1]; + return GWSystem.unk0C; } static inline s32 GWPlayerTeamGet(s32 player) diff --git a/src/REL/mentDll/main.c b/src/REL/mentDll/main.c index 03f49eb0..3888ccf4 100644 --- a/src/REL/mentDll/main.c +++ b/src/REL/mentDll/main.c @@ -2696,7 +2696,7 @@ void fn_1_E71C(s32 arg0) inline void fn_1_E874_inline(void) { s32 sp18 = lbl_1_bss_3114[0].unk_68; - GWSystem.unk0B[1] = sp18; + GWSystem.unk0C = sp18; } void fn_1_E874(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) diff --git a/src/REL/modeseldll/filesel.c b/src/REL/modeseldll/filesel.c index 53a1d962..ef0bc58f 100644 --- a/src/REL/modeseldll/filesel.c +++ b/src/REL/modeseldll/filesel.c @@ -1859,7 +1859,7 @@ void fn_1_A8C0(s16 boxno) SLLoadBoardStory(); lbl_1_bss_EE[boxno] = GWGameStat.total_stars; lbl_1_bss_D0[boxno] = GWGameStat.create_time; - lbl_1_bss_E8[boxno] = GWSystem.unk0B[1]; + lbl_1_bss_E8[boxno] = GWSystem.unk0C; lbl_1_bss_C4[boxno] = GWGameStat.story_continue; lbl_1_bss_B8[boxno] = GWGameStat.party_continue; if (GWGameStat.story_continue) { diff --git a/src/REL/mstory2Dll/ending.c b/src/REL/mstory2Dll/ending.c new file mode 100644 index 00000000..c0c09595 --- /dev/null +++ b/src/REL/mstory2Dll/ending.c @@ -0,0 +1,676 @@ +#include "REL/mstory2Dll.h" +#include "game/armem.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "game/pad.h" +#include "game/objsub.h" +#include "game/esprite.h" + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x18]; + /* 0x030 */ StructFn357C unk30[4]; + /* 0x100 */ float unk100; +} StructBssC0C; // Size 0x104 + +StructBssC0C lbl_1_bss_C0C; +StructBss16C lbl_1_bss_BE4; +StructBss16C lbl_1_bss_BBC; +StructBss16C lbl_1_bss_B94; +StructBss16C lbl_1_bss_B6C; +StructBss16C lbl_1_bss_B44; +BOOL lbl_1_bss_B40; +BOOL lbl_1_bss_B3C; +Process *lbl_1_bss_B38; + +s32 lbl_1_data_EF8[2][2] = { 20, 70, 1, 1 }; +s32 lbl_1_data_F08 = -1; +s32 lbl_1_data_F0C[2] = { -1, -1 }; +s32 lbl_1_data_F14 = 127; + +void fn_1_19F14(void); +void fn_1_1A160(void); +void fn_1_1A538(omObjData* arg0, StructBss16C* arg1); +void fn_1_1A578(void); +void fn_1_1A9D0(omObjData* arg0, StructBss16C* arg1); +void fn_1_1AAB4(void); +void fn_1_1AFD4(omObjData* arg0, StructBss16C* arg1); +void fn_1_1B0E4(void); +void fn_1_1AD3C(int arg0); +void fn_1_1B318(void); +void fn_1_1B3A4(void); +void fn_1_1B430(void); + +void fn_1_186D0(void) +{ + int i; + while(1) { + HuPrcVSleep(); + if(lbl_1_data_F08 != -1 && lbl_1_data_F0C[0] != -1 && lbl_1_data_F0C[1] != -1 && lbl_1_data_F0C[0] == Hu3DMotionIDGet(lbl_1_data_F08)) { + for(i=0; i<2; i++) { + if(lbl_1_data_EF8[1][i] != -1) { + if(Hu3DMotionTimeGet(lbl_1_data_F08) >= lbl_1_data_EF8[0][i]) { + OSReport("KE-System TIME:%d\n", lbl_1_data_EF8[0][i]); + HuAudFXPlayVol(81, lbl_1_data_F14); + lbl_1_data_EF8[1][i] = -1; + } + } + } + if(Hu3DMotionTimeGet(lbl_1_data_F08) <= 10) { + for(i=0; i<2; i++) { + lbl_1_data_EF8[1][i] = 1; + } + } + } + if(lbl_1_bss_B3C == 1) { + lbl_1_data_F14--; + if(lbl_1_data_F14 <= 0) { + lbl_1_data_F14 = 0; + } + } + if(lbl_1_bss_B3C == 2) { + break; + } + } + HuPrcEnd(); + while(1) { + HuPrcVSleep(); + } +} + +void fn_1_188F0(Process* arg0, s32 arg1) +{ + lbl_1_bss_B38 = arg0; + if(GWSystem.diff_story == 2) { + GWGameStat.field10E_bit4 = TRUE; + } + lbl_1_bss_C0C.unk0C = arg1; + fn_1_C30(); + fn_1_3668(255); + fn_1_2828(lbl_1_bss_B38, fn_1_1B318); + fn_1_3754(); + fn_1_1AD3C(arg1); + HuPrcChildCreate(fn_1_1B0E4, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1A160, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1AAB4, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1A578, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_19F14, 100, 12288, 0, HuPrcCurrentGet()); +} + +void fn_1_18A34(omObjData *object) +{ + if(object->work[2]) { + object->work[2]--; + return; + } + if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_18AC0(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while(1) { + fn_1_BC8(); + fontcolor = FONT_COLOR_WHITE; + printWin(posX, posY, 220, 130, &winColor); + if(lbl_1_bss_BE4.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if(lbl_1_bss_BBC.unk04 == NULL) { + print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); + } else { + print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + } + if(lbl_1_bss_B94.unk04 == NULL) { + print8(posX, posY+20, 1, "PROC_PLAYER -> FALSE"); + } else { + print8(posX, posY+20, 1, "PROC_PLAYER -> TRUE"); + } + if(lbl_1_bss_B6C.unk04 == NULL) { + print8(posX, posY+30, 1, "PROC_SUB -> FALSE"); + } else { + print8(posX, posY+30, 1, "PROC_SUB -> TRUE"); + } + if(lbl_1_bss_B44.unk04 == NULL) { + print8(posX, posY+40, 1, "PROC_KOOPA -> FALSE"); + } else { + print8(posX, posY+40, 1, "PROC_KOOPA -> TRUE"); + } + + print8(posX, posY+60, 1, "P:%d W:%d", lbl_1_bss_C0C.unk00, lbl_1_bss_C0C.unk0C); + print8(posX, posY+80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for(i=0; i<4; i++) { + print8(posX, posY+90+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_C0C.unk30[i].unk00, lbl_1_bss_C0C.unk30[i].unk04, lbl_1_bss_C0C.unk30[i].unk08, lbl_1_bss_C0C.unk30[i].unk0C, lbl_1_bss_C0C.unk30[i].unk14, lbl_1_bss_C0C.unk30[i].unk10); + } + } +} + +void fn_1_18E7C(void) +{ + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); +} + +void fn_1_18EC4(void) +{ + lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C); + HuAudFXPlay(lbl_1_data_0[6][1]); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F001E); + fn_1_1AFC(lbl_1_bss_C0C.unk04, -1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_C0C.unk04); + lbl_1_bss_B44.unk04 = (void *)fn_1_1A538; + lbl_1_bss_B3C = 1; + fn_1_BE8(60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); + lbl_1_bss_B44.unk04 = NULL; + lbl_1_bss_B3C = 2; + fn_1_1DFC(lbl_1_bss_B44.unk00, 1, 1, 0, 1); + fn_1_2750(fn_1_1B3A4); + Hu3DModelAttrReset(lbl_1_bss_BBC.unk00->model[1], 1); + Hu3DModelAttrReset(lbl_1_bss_BBC.unk00->model[2], 1); + Hu3DModelAttrReset(lbl_1_bss_BBC.unk00->model[4], 1); + Hu3DModelAttrReset(lbl_1_bss_B6C.unk00->model[1], 1); + Hu3DModelAttrReset(lbl_1_bss_B94.unk00->model[1], 1); + Hu3DModelAttrSet(lbl_1_bss_B44.unk00->model[1], 1); + Hu3DModelPosSet(lbl_1_bss_BBC.unk00->model[1], 0, 0, 0); + fn_1_BE8(60); + lbl_1_bss_78[0] = HuAudSeqPlay(56); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + if(0) { + fn_1_BC8(); + } +} + +void fn_1_19138(void) +{ + fn_1_1DFC(lbl_1_bss_BBC.unk00, 2, 3, 0, 0); + fn_1_2264(lbl_1_bss_BBC.unk00, 2, 3, 0); + lbl_1_bss_B94.unk04 = (void *)fn_1_1AFD4; + lbl_1_bss_B6C.unk04 = (void *)fn_1_1A9D0; + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_1B430); + fn_1_BE8(30); + fn_1_1DFC(lbl_1_bss_BBC.unk00, 2, 2, 0, 0); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_B94.unk04 == NULL) { + break; + } + } + while(1) { + fn_1_BC8(); + if(lbl_1_bss_B6C.unk04 == NULL) { + break; + } + } + lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C); + HuAudFXPlay(lbl_1_data_0[0][2]); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 3, 15, 1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F001F); + fn_1_1AFC(lbl_1_bss_C0C.unk04, -1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F0020); + fn_1_1AFC(lbl_1_bss_C0C.unk04, -1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 1, 15, 1); + fn_1_1A94(lbl_1_bss_C0C.unk04); + fn_1_BE8(60); +} + +char *lbl_1_data_10E4[8] = { + "movie/endmov_ma0.thp", + "movie/endmov_lu0.thp", + "movie/endmov_pe0.thp", + "movie/endmov_yo0.thp", + "movie/endmov_wa0.thp", + "movie/endmov_do0.thp", + "movie/endmov_da0.thp", + "movie/endmov_wl0.thp" +}; + +void fn_1_19334(void) +{ + lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C); + HuAudFXPlay(lbl_1_data_0[0][2]); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 3, 0, 1); + fn_1_1D4C(lbl_1_bss_C0C.unk04, lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10, 0); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x1F0024); + fn_1_1AFC(lbl_1_bss_C0C.unk04, -1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 1, 0, 1); + fn_1_1A94(lbl_1_bss_C0C.unk04); + fn_1_1DFC(lbl_1_bss_B94.unk00, 1, 4, 15, 0); + fn_1_2264(lbl_1_bss_B94.unk00, 1, 4, 15); + fn_1_1DFC(lbl_1_bss_B94.unk00, 1, 3, 15, 1); + fn_1_BE8(60); + lbl_1_bss_C0C.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_C0C.unk0C); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 3, 0, 1); + fn_1_6D78(lbl_1_bss_C0C.unk04, 0x1F0023, 0, -1); + fn_1_1D18(lbl_1_bss_C0C.unk04, 0x250004); + fn_1_1DFC(lbl_1_bss_B6C.unk00, 1, 1, 0, 1); + HuAudFXPlay(lbl_1_data_0[0][3]); + fn_1_1A94(lbl_1_bss_C0C.unk04); + fn_1_BE8(60); + HuAudFXPlay(152); + Hu3DModelAttrSet(lbl_1_bss_BBC.unk00->model[1], 1); + Hu3DModelAttrSet(lbl_1_bss_BBC.unk00->model[2], 1); + Hu3DModelAttrSet(lbl_1_bss_BBC.unk00->model[4], 1); + Hu3DModelAttrSet(lbl_1_bss_B6C.unk00->model[1], 1); + Hu3DModelAttrSet(lbl_1_bss_B94.unk00->model[1], 1); + HuAudSeqFadeOut(lbl_1_bss_78[0], 100); + lbl_1_bss_B3C = 2; + GWGameStat.field10E_bit6 = TRUE; + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (WipeStatGet()) { + HuPrcVSleep(); + } + lbl_1_bss_BBC.unk04 = NULL; + lbl_1_bss_B94.unk04 = NULL; + lbl_1_bss_B44.unk04 = NULL; + lbl_1_bss_B6C.unk04 = NULL; + + CharModelKill(-1); + Hu3DAllKill(); + fn_1_BE8(60); + { + int time = 0; + int gid = HuSprGrpCreate(3); + int sprid = HuTHPSprCreate(lbl_1_data_10E4[lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10], FALSE, 1000); + HuSprGrpMemberSet(gid, 0, sprid); + HuSprPosSet(gid, 0, 288, 240); + sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(0x660060, 0x10000000)), 950, 0); + HuSprGrpMemberSet(gid, 1, sprid); + HuSprPosSet(gid, 1, 288, 226); + HuSprAttrSet(gid, 1, HUSPR_ATTR_DISPOFF); + sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(0x660061, 0x10000000)), 950, 0); + HuSprGrpMemberSet(gid, 2, sprid); + HuSprBankSet(gid, 2, lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10); + if(GWLanguageGet() == 0 && lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10 == 5) { + HuSprBankSet(gid, 2, 8); + } + HuSprPosSet(gid, 2, 288, 254); + HuSprAttrSet(gid, 2, HUSPR_ATTR_DISPOFF); + HuPrcSleep(5); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while(WipeStatGet()) { + HuPrcVSleep(); + } + while(!HuTHPEndCheck()) { + if(time >= 3300) { + HuSprAttrReset(gid, 1, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(gid, 2, HUSPR_ATTR_DISPOFF); + } else { + time++; + } + HuPrcVSleep(); + } + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuTHPClose(); + HuPrcVSleep(); + HuSprGrpKill(gid); + } + +} + +void fn_1_199A0(void) +{ + float sp8[2]; + s32 temp_r30; + s32 var_r29; + s32 var_r31; + s32 var_r28; + temp_r30 = 1; + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + if (SLSaveFlagGet() == 0) { + lbl_1_bss_B40 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } + } + espInit(); + HuPrcVSleep(); + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0); + espPosSet(var_r29, 288.0f, 240.0f); + espAttrReset(var_r29, 4); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + fn_1_BE8(60); + var_r28 = GWUnkB1Get(); + GWSystem.unk0B |= 1 << var_r28; + if (SLSaveFlagGet() == 1) { + HuWinInit(1); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22)); + var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2); + winData[var_r31].active_pad = 1; + HuWinAttrSet(var_r31, 0x10); + HuWinExAnimIn(var_r31); + HuWinMesSet(var_r31, MAKE_MESSID(30, 22)); + temp_r30 = HuWinChoiceGet(var_r31, 0); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + if (SLSaveFlagGet() == 1 && temp_r30 == 0) { + GWGameStat.story_continue = FALSE; + SLCommonSet(); + SLSaveBoardStory(); + SLSave(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_B40 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_19BE8(void) +{ + omOvlHisData *his; + fn_1_BE8(120); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + CharModelKill(-1); + HuAudFadeOut(1); + his = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY2, 20, 1); + omOvlCallEx(OVL_STAFF, 1, 0, 0); + while(1) { + fn_1_BC8(); + } +} + +void fn_1_19C6C(omObjData* arg0, StructBss16C* arg1) +{ + int temp = 0; + fn_1_18E7C(); + fn_1_18EC4(); + fn_1_19138(); + fn_1_19334(); + fn_1_19BE8(); + arg1->unk04 = NULL; +} + +void fn_1_19F14(void) +{ + omObjData *obj; + lbl_1_bss_BE4.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); + lbl_1_bss_BE4.unk04 = (void *)fn_1_19C6C; + lbl_1_bss_BE4.unk00->data = &lbl_1_bss_BE4; + while(1) { + fn_1_BC8(); + if(lbl_1_bss_BE4.unk04 != NULL) { + lbl_1_bss_BE4.unk04(obj, &lbl_1_bss_BE4); + } + } +} + +void fn_1_19FC8(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660050); + object->motion[0] = Hu3DMotionIDGet(object->model[1]); + fn_1_1DFC(object, 1, 0, 0, 2); + Hu3DModelShadowMapObjSet(object->model[1], "base_fix9-base"); + Hu3DModelAttrSet(object->model[1], 1); + object->model[2] = Hu3DModelCreateFile(0x660053); + object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); + object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + Hu3DModelAttrSet(object->model[2], 1); + fn_1_1DFC(object, 2, 3, 0, 2); + object->model[4] = Hu3DModelCreateFile(0x660051); + Hu3DModelAttrSet(object->model[4], 1); + Hu3DModelPosSet(object->model[1], 0, -1000, 0); +} + +void fn_1_1A160(void) +{ + omObjData *obj; + lbl_1_bss_BBC.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); + lbl_1_bss_BBC.unk04 = NULL; + fn_1_19FC8(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_BBC.unk04 != NULL) { + lbl_1_bss_BBC.unk04(obj, &lbl_1_bss_BBC); + } + } +} + +void fn_1_1A368(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660062); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); + object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660070); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660071); + Hu3DModelPosSet(object->model[1], 0, 0, 600); + Hu3DModelRotSet(object->model[1], 0, 180, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + fn_1_1DFC(object, 1, 3, 0, 1); + lbl_1_data_F08 = object->model[1]; + lbl_1_data_F0C[0] = object->motion[3]; + lbl_1_data_F0C[1] = object->motion[3]; + HuPrcChildCreate(fn_1_186D0, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_1A538(omObjData* arg0, StructBss16C* arg1) +{ + Hu3DData[lbl_1_bss_B44.unk00->model[1]].pos.z -= 2.5f; +} + +void fn_1_1A578(void) +{ + omObjData *obj; + lbl_1_bss_B44.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); + lbl_1_bss_B44.unk04 = NULL; + fn_1_1A368(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_B44.unk04 != NULL) { + lbl_1_bss_B44.unk04(obj, &lbl_1_bss_B44); + } + if(obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_1A7CC(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660072); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660073); + object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660075); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660076); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x66007C); + object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660079); + Hu3DModelPosSet(object->model[1], 0, 0, 460); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 5, 0, 1); + CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 9); +} + + +void fn_1_1A9D0(omObjData* arg0, StructBss16C* arg1) +{ + Vec pos = { -120, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 90, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_1AAB4(void) +{ + omObjData *obj; + lbl_1_bss_B6C.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); + lbl_1_bss_B6C.unk04 = NULL; + fn_1_1A7CC(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_B6C.unk04 != NULL) { + lbl_1_bss_B6C.unk04(obj, &lbl_1_bss_B6C); + } + if(obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_1AD3C(int arg0) +{ + int i; + int order[4]; + order[0] = 0; + for(i=1; i<4; i++) { + order[i] = order[i-1]+1; + if(order[i] >= 4) { + order[i] = 0; + } + if(arg0 == order[i]) { + lbl_1_bss_C0C.unk00 = i; + } + } + for(i=0; i<4; i++) { + fn_1_357C(&lbl_1_bss_C0C.unk30[i], order[i]); + } +} + +void fn_1_1AE20(omObjData *object) +{ + int charNo = lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10; + object->model[1] = CharModelCreate(charNo, 1); + object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); + object->motion[2] = CharModelMotionCreate(charNo, 0x5F0035); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660010+charNo); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660008+charNo); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet(object->model[1], 120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, -135, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_1AFD4(omObjData* arg0, StructBss16C* arg1) +{ + int i; + fn_1_1DFC(arg0, 1, 2, 0, 0); + fn_1_BC8(); + Hu3DMotionTimeSet(arg0->model[1], 60); + for(i=0; i<60; i++) { + fn_1_BC8(); + Hu3DData[arg0->model[1]].rot.y = fn_1_864(-135, -90, i, 60); + } + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_1B0E4(void) +{ + omObjData *obj; + lbl_1_bss_B94.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); + lbl_1_bss_B94.unk04 = NULL; + fn_1_1AE20(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_B94.unk04 != NULL) { + lbl_1_bss_B94.unk04(obj, &lbl_1_bss_B94); + } + if(obj->work[0]) { + fn_1_6704(obj); + } + } +} + +void fn_1_1B318(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 120; + work->unk08.z = 0; + work->unk20.x = 0; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1400; +} + +void fn_1_1B3A4(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 125; + work->unk08.z = 0; + work->unk20.x = -4.9f; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1750; +} + +void fn_1_1B430(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 100; + temp.unk08.z = 0; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1400; + fn_1_42A0(work, &temp, work->unk40++, 60, 10); + if(0.0f != lbl_1_bss_C0C.unk100) { + work->unk08.y = 125+lbl_1_bss_C0C.unk100; + } +} \ No newline at end of file diff --git a/src/REL/mstory2Dll/mg_clear.c b/src/REL/mstory2Dll/mg_clear.c new file mode 100644 index 00000000..ddeded43 --- /dev/null +++ b/src/REL/mstory2Dll/mg_clear.c @@ -0,0 +1,831 @@ +#include "REL/mstory2Dll.h" +#include "game/armem.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "game/pad.h" +#include "game/objsub.h" + +typedef struct struct_data850 { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; +} StructData850; + +StructData850 lbl_1_data_850[] = { + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x00), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x01), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x02), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x03), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x04), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x05), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x06), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x07), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x08), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x09), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0E), 1, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0F), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x10), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x11), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x12), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x13), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x14), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x15), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x16), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x17), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x18), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x19), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1E), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1F), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x20), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x21), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x22), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x23), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x24), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x25), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x26), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x27), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x28), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x29), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2E), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2F), 0, 0, 0, 1 }, +}; + +s32 lbl_1_data_C10[2][2] = { 20, 70, 1, 1 }; +s32 lbl_1_data_C20 = -1; +s32 lbl_1_data_C24[2] = { -1, -1 }; + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x18]; + /* 0x030 */ StructFn357C unk30[4]; + /* 0x100 */ s32 unk100; +} StructBss860; // Size 0x104 + +StructBss860 lbl_1_bss_860; +StructBss16C lbl_1_bss_838; +StructBss16C lbl_1_bss_810; +StructBss16C lbl_1_bss_7E8; +StructBss16C lbl_1_bss_7C0; +StructBss16C lbl_1_bss_798; +BOOL lbl_1_bss_794; +Process *lbl_1_bss_790; + +void fn_1_13BB8(void); +void fn_1_13FB4(omObjData* arg0, StructBss16C* arg1); +void fn_1_140A0(omObjData* arg0, StructBss16C* arg1); +void fn_1_1449C(void); +void fn_1_14A9C(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_14B48(omObjData* arg0, StructBss16C* arg1); +void fn_1_14C40(void); +void fn_1_15134(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_151E0(omObjData* arg0, StructBss16C* arg1); +void fn_1_152C4(omObjData* arg0, StructBss16C* arg1); +void fn_1_153A8(void); +void fn_1_15668(int arg0); +void fn_1_159F0(void); +void fn_1_15CDC(void); +void fn_1_15D68(void); +void fn_1_15E58(void); +void fn_1_15F70(void); + +void fn_1_123C8(void) +{ + int i; + while(1) { + do { + HuPrcVSleep(); + } while(lbl_1_data_C20 == -1 || lbl_1_data_C24[0] == -1 || lbl_1_data_C24[1] == -1 || lbl_1_data_C24[0] != Hu3DMotionIDGet(lbl_1_data_C20)); + for(i=0; i<2; i++) { + if(lbl_1_data_C10[1][i] != -1) { + if(Hu3DMotionTimeGet(lbl_1_data_C20) >= lbl_1_data_C10[0][i]) { + OSReport("KE-System TIME:%d\n", lbl_1_data_C10[0][i]); + HuAudFXPlay(81); + lbl_1_data_C10[1][i] = -1; + } + } + } + if(Hu3DMotionTimeGet(lbl_1_data_C20) <= 10) { + for(i=0; i<2; i++) { + lbl_1_data_C10[1][i] = 1; + } + } + } +} + +void fn_1_1256C(Process* arg0, s32 arg1) +{ + lbl_1_bss_790 = arg0; + lbl_1_bss_860.unk0C = arg1; + fn_1_C30(); + lbl_1_bss_860.unk100 = fn_1_3668(255); + fn_1_2828(lbl_1_bss_790, fn_1_15CDC); + fn_1_3754(); + fn_1_15668(arg1); + HuPrcChildCreate(fn_1_1449C, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_14C40, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_153A8, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_159F0, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_13BB8, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_12690(omObjData *object) +{ + if(object->work[2]) { + object->work[2]--; + return; + } + if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_1271C(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while(1) { + fn_1_BC8(); + printWin(posX, posY, 220, 130, &winColor); + if(lbl_1_bss_838.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if(lbl_1_bss_810.unk04 == NULL) { + print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); + } else { + print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + } + if(lbl_1_bss_7E8.unk04 == NULL) { + print8(posX, posY+20, 1, "PROC_KOOPA -> FALSE"); + } else { + print8(posX, posY+20, 1, "PROC_KOOPA -> TRUE"); + } + if(lbl_1_bss_7C0.unk04 == NULL) { + print8(posX, posY+30, 1, "PROC_MKOOPA -> FALSE"); + } else { + print8(posX, posY+30, 1, "PROC_MKOOPA -> TRUE"); + } + if(lbl_1_bss_798.unk04 == NULL) { + print8(posX, posY+40, 1, "PROC_PLAYER -> FALSE"); + } else { + print8(posX, posY+40, 1, "PROC_PLAYER -> TRUE"); + } + print8(posX, posY+60, 1, "P:%d W:%d", lbl_1_bss_860.unk00, lbl_1_bss_860.unk0C); + print8(posX, posY+80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for(i=0; i<4; i++) { + print8(posX, posY+90+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_860.unk30[i].unk00, lbl_1_bss_860.unk30[i].unk04, lbl_1_bss_860.unk30[i].unk08, lbl_1_bss_860.unk30[i].unk0C, lbl_1_bss_860.unk30[i].unk14, lbl_1_bss_860.unk30[i].unk10); + } + } +} + +void fn_1_12AC8(void) +{ + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(30); +} + +void fn_1_12B10(void) +{ + lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C); + HuAudFXPlay(lbl_1_data_0[6][1]); + fn_1_14A9C(4, 1, 15, 0, 1); + fn_1_1D4C(lbl_1_bss_860.unk04, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 0); + fn_1_6D78(lbl_1_bss_860.unk04, 0x1F0014, 0, lbl_1_bss_7E8.unk00->model[1]); + HuAudFXPlay(lbl_1_data_0[6][2]); + fn_1_1DFC(lbl_1_bss_7E8.unk00, 1, 5, 10, 1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0015); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + fn_1_15134(1, -1, 15, 1, 0); + fn_1_1A94(lbl_1_bss_860.unk04); + lbl_1_bss_7E8.unk04 = (void *)fn_1_14B48; + fn_1_BE8(60); + fn_1_1DFC(lbl_1_bss_798.unk00, 1, 4, 15, 0); + fn_1_BE8(16); + while(1) { + fn_1_BC8(); + if(Hu3DMotionTimeGet(lbl_1_bss_798.unk00->model[1]) >= 20) { + break; + } + } + Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 0); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_7E8.unk04 == NULL) { + break; + } + } + fn_1_BE8(30); + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_15D68); + lbl_1_bss_7C0.unk04 = (void *)fn_1_152C4; + fn_1_BE8(80); + Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 1); + fn_1_1DFC(lbl_1_bss_798.unk00, 1, 1, 15, 1); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_7C0.unk04 == NULL) { + break; + } + } +} + +void fn_1_12DD4(void) +{ + lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C); + lbl_1_bss_78[0] = HuAudSeqPlay(56); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 4, 15, 0); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0016); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 3, 15, 1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0017); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0018); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 1, 15, 1); + fn_1_1A94(lbl_1_bss_860.unk04); + fn_1_BE8(60); + lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C); + HuAudFXPlay(lbl_1_data_0[5][0]); + fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, 3, 15, 1); + fn_1_1D4C(lbl_1_bss_860.unk04, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 0); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F0019); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + HuAudFXPlay(lbl_1_data_0[5][1]); + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F001A); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + lbl_1_bss_7C0.unk04 = (void *)fn_1_151E0; + fn_1_1D18(lbl_1_bss_860.unk04, 0x1F001B); + fn_1_1AFC(lbl_1_bss_860.unk04, -1); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); + fn_1_1A94(lbl_1_bss_860.unk04); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_7C0.unk04 == NULL) { + break; + } + } +} + +void fn_1_13150(omObjData* arg0, StructBss16C* arg1) +{ + int streamNo = HuAudSStreamPlay(7); + while(1) { + fn_1_BC8(); + if(HuAudSStreamStatGet(streamNo) == 0) { + break; + } + } + HuAudSeqPause(lbl_1_bss_78[0], 0, 1000); + arg1->unk04 = NULL; +} + +void fn_1_131C0(omObjData* arg0, StructBss16C* arg1) +{ + int presentSe = (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10*6)+5; + fn_1_BE8(150); + OSReport("########## PRESENT_SE : %d\n", presentSe); + HuAudFXPlay(presentSe+2260); + fn_1_1DFC(lbl_1_bss_810.unk00, 7, 7, 1, 0); + arg1->unk04 = NULL; +} + +void fn_1_13264(void) +{ + int i; + fn_1_1DFC(lbl_1_bss_798.unk00, 1, 2, 15, 1); + for(i=0; i<30; i++) { + fn_1_BC8(); + if(lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 != 5) { + Hu3DData[lbl_1_bss_798.unk00->model[1]].pos.x = fn_1_864(120, 80, i, 30); + } + Hu3DData[lbl_1_bss_798.unk00->model[1]].rot.y = fn_1_864(-60, -90, i, 30); + } + fn_1_1DFC(lbl_1_bss_798.unk00, 1, 5, 5, 0); + fn_1_BE8(10); + while(1) { + fn_1_BC8(); + if(Hu3DMotionTimeGet(lbl_1_bss_798.unk00->model[1]) >= 30) { + break; + } + } + Hu3DModelPosSet(lbl_1_bss_810.unk00->model[5], 0, 0, 0); + Hu3DModelHookSet(lbl_1_bss_798.unk00->model[1], CharModelHookNameGet(lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 1, 1), lbl_1_bss_810.unk00->model[5]); + fn_1_BE8(60); + lbl_1_bss_810.unk04 = (void *)fn_1_13FB4; + HuAudFXPlay(163); + HuAudCharVoicePlay(lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 296); + fn_1_1DFC(lbl_1_bss_810.unk00, 6, 6, 0, 0); + Hu3DModelAttrReset(lbl_1_bss_810.unk00->model[6], 1); + Hu3DModelAttrSet(lbl_1_bss_810.unk00->model[5], 1); + fn_1_1DFC(lbl_1_bss_798.unk00, 1, 6, 5, 0); + HuAudSeqPause(lbl_1_bss_78[0], 1, 1000); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + while(1) { + fn_1_BC8(); + if(!WipeStatGet()) { + break; + } + } + Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 0); + Hu3DMotionTimeSet(lbl_1_bss_798.unk00->model[1], 50); + Hu3DModelAttrReset(lbl_1_bss_810.unk00->model[7], 1); + Hu3DModelAttrReset(lbl_1_bss_810.unk00->model[8], 1); + fn_1_1DFC(lbl_1_bss_810.unk00, 8, 8, 0, 1); + fn_1_BE8(30); + HuAudFXPlay(169); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + while(1) { + fn_1_BC8(); + if(!WipeStatGet()) { + break; + } + } + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_15F70); + fn_1_BE8(60); + lbl_1_bss_798.unk04 = (void *)fn_1_131C0; + lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C); + lbl_1_bss_7C0.unk04 = (void *)fn_1_13150; + fn_1_1D4C(lbl_1_bss_860.unk04, (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10*6)+0x32000B, 0); + fn_1_6DBC(lbl_1_bss_860.unk04, 0x320086, 0, 300); + fn_1_1D18(lbl_1_bss_860.unk04,0x250004); + fn_1_1A94(lbl_1_bss_860.unk04); + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_15E58); + lbl_1_bss_810.unk04 = (void *)fn_1_140A0; + fn_1_BE8(30); + Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 0.1f); + fn_1_BE8(180); + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); +} + +void fn_1_13828(void) +{ + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + fn_1_BE8(60); + SLCommonSet(); + SLSaveBoardStory(); + if (SLSaveFlagGet() == 1) { + SLSave(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_794 = TRUE; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_138CC(void) +{ + omOvlHisData* var_r31; + + msmSeStopAll(FALSE, 1000); + do { + fn_1_BC8(); + } while (WipeStatGet() != 0); + CharModelKill(-1); + HuAudFXAllStop(); + HuAudSStreamAllStop(); + GWMGAvailSet(omMgIndexGet(58)+401); + GWGameStat.present[lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5] = 1; + OSReport("########## PRESENTFLG CHR:%d, MAP:5, PRESENT:%d\n", lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5); + var_r31 = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY2, 20, var_r31->stat); + omOvlCallEx(OVL_PRESENT, 1, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5 + 1, 0); +} + +void fn_1_13A18(omObjData* arg0, StructBss16C* arg1) +{ + int temp = 0; + fn_1_12AC8(); + fn_1_12B10(); + fn_1_12DD4(); + fn_1_13264(); + fn_1_138CC(); + arg1->unk04 = 0; +} + +void fn_1_13BB8(void) +{ + omObjData *obj; + lbl_1_bss_838.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL); + lbl_1_bss_838.unk04 = (void *)fn_1_13A18; + lbl_1_bss_838.unk00->data = &lbl_1_bss_838; + while(1) { + fn_1_BC8(); + if(lbl_1_bss_838.unk04 != NULL) { + lbl_1_bss_838.unk04(obj, &lbl_1_bss_838); + } + } +} + +void fn_1_13C6C(omObjData* object) +{ + s32 charNo; + charNo = lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10; + object->model[7] = Hu3DModelCreateFile(lbl_1_data_850[charNo * 6 + 5].unk0); + object->motion[7] = Hu3DMotionIDGet(object->model[7]); + Hu3DModelPosSet(object->model[7], 0, 180, 825); + Hu3DModelAttrSet(object->model[7], 1); + Hu3DModelShadowSet(object->model[7]); + fn_1_1DFC(object, 7, 7, 0, 2); + HuDataDirClose(DATADIR_MSTORY4); + object->model[1] = Hu3DModelCreateFile(0x660052); + object->motion[1] = Hu3DMotionIDGet(object->model[1]); + Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(0x660053); + object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); + object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + fn_1_1DFC(object, 2, 3, 0, 2); + object->model[5] = Hu3DModelCreateFile(0x66005B); + Hu3DModelPosSet(object->model[5], 0, 125, 800); + Hu3DModelAttrSet(object->model[5], 1); + Hu3DModelShadowSet(object->model[5]); + object->model[6] = Hu3DModelCreateFile(0x66005D); + object->motion[6] = Hu3DMotionIDGet(object->model[6]); + Hu3DModelPosSet(object->model[6], 25, 125, 900); + Hu3DModelAttrSet(object->model[6], 1); + fn_1_1DFC(object, 6, 6, 0, 2); + object->model[8] = Hu3DModelCreateFile(0x66005F); + object->motion[8] = Hu3DMotionIDGet(object->model[8]); + Hu3DModelAttrSet(object->model[8], 1); + fn_1_1DFC(object, 8, 8, 0, 1); +} + + +void fn_1_13FB4(omObjData* arg0, StructBss16C* arg1) +{ + Mtx matrix; + Hu3DData[arg0->model[7]].pos.y = fn_1_B08(180, 185, arg1->unk08++, 360); + Hu3DModelObjMtxGet(arg0->model[7], "effect", matrix); + Hu3DModelPosSet(arg0->model[8], matrix[0][3], matrix[1][3], matrix[2][3]); + if(arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_140A0(omObjData* arg0, StructBss16C* arg1) +{ + Mtx matrix; + Hu3DData[arg0->model[7]].pos.y += arg1->unk0C/100.0f; + Hu3DModelObjMtxGet(arg0->model[7], "effect", matrix); + Hu3DModelPosSet(arg0->model[8], matrix[0][3], matrix[1][3], matrix[2][3]); + arg1->unk0C += 2; +} + +void fn_1_1416C(omObjData* arg0, StructBss16C* arg1) +{ + int i; + Vec pos; + float rotY; + Hu3DModelPosSet(arg0->model[5], -180, 100, 800); + Hu3DModelRotSet(arg0->model[5], 0, 0, 0); + Hu3DModelAttrReset(arg0->model[5], 1); + for(i=0; i<60; i++) { + fn_1_BC8(); + if(i == 30) { + HuAudFXPlay(151); + } + if(i <= 30) { + pos.y = fn_1_A4C(0, 100, i+30, 60); + pos.x = fn_1_864(-180, -45, i, 30); + rotY = fn_1_984(0, -90, i, 30); + } else { + pos.x = fn_1_864(-45, 0, i-30, 30); + pos.y = fn_1_A4C(0, 25, i-30, 30); + rotY = fn_1_984(-90, -360, i-30, 30); + } + Hu3DModelPosSet(arg0->model[5], pos.x, pos.y, 800); + Hu3DModelRotSet(arg0->model[5], 0, rotY, 0); + } + arg1->unk04 = NULL; +} + +void fn_1_1449C(void) +{ + omObjData *obj; + lbl_1_bss_810.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL); + lbl_1_bss_810.unk04 = NULL; + lbl_1_bss_810.unk00->data = &lbl_1_bss_810; + fn_1_13C6C(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_810.unk04 != NULL) { + lbl_1_bss_810.unk04(obj, &lbl_1_bss_810); + } + } +} + +void fn_1_14868(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660062); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); + object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660064); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x66006E); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x66006F); + object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660069); + Hu3DModelPosSet(object->model[1], -180, 0, 800); + Hu3DModelRotSet(object->model[1], 0, 60, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 3, 0, 1); + lbl_1_data_C20 = object->model[1]; + lbl_1_data_C24[0] = object->motion[2]; + lbl_1_data_C24[1] = object->motion[2]; + HuPrcChildCreate(fn_1_123C8, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_14A9C(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_7E8.unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_7E8.unk00->work[0] = arg4; + lbl_1_bss_7E8.unk00->work[1] = arg1; + lbl_1_bss_7E8.unk00->work[2] = arg2+1; +} + +void fn_1_14B48(omObjData* arg0, StructBss16C* arg1) +{ + Vec pos = { -1000, 0, 810 }; + lbl_1_bss_810.unk04 = (void *)fn_1_1416C; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, -1, 45, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_14C40(void) +{ + omObjData *obj; + lbl_1_bss_7E8.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL); + lbl_1_bss_7E8.unk04 = NULL; + lbl_1_bss_7E8.unk00->data = &lbl_1_bss_810; + fn_1_14868(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_7E8.unk04 != NULL) { + lbl_1_bss_7E8.unk04(obj, &lbl_1_bss_7E8); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_14F6C(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x66007D); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x66007E); + object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660080); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660081); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660086); + Hu3DModelPosSet(object->model[1], -600, 0, 800); + Hu3DModelRotSet(object->model[1], 0, 60, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); + CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 13); +} + +void fn_1_15134(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_7C0.unk00->work[0] = arg4; + lbl_1_bss_7C0.unk00->work[1] = arg1; + lbl_1_bss_7C0.unk00->work[2] = arg2+1; +} + +void fn_1_151E0(omObjData* arg0, StructBss16C* arg1) +{ + Vec pos = { -800, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 60, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_152C4(omObjData* arg0, StructBss16C* arg1) +{ + Vec pos = { -120, 0, 800 }; + fn_1_1DFC(arg0, 1, 2, 15, 1); + fn_1_2D00(arg0, 1, pos, 60, 60, 10); + fn_1_1DFC(arg0, 1, 1, 15, 1); + arg1->unk04 = NULL; +} + +void fn_1_153A8(void) +{ + omObjData *obj; + lbl_1_bss_7C0.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL); + lbl_1_bss_7C0.unk04 = NULL; + lbl_1_bss_7C0.unk00->data = &lbl_1_bss_7C0; + fn_1_14F6C(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_7C0.unk04 != NULL) { + lbl_1_bss_7C0.unk04(obj, &lbl_1_bss_7C0); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_15668(int arg0) +{ + int i; + int order[4]; + order[0] = 0; + for(i=1; i<4; i++) { + order[i] = order[i-1]+1; + if(order[i] >= 4) { + order[i] = 0; + } + if(arg0 == order[i]) { + lbl_1_bss_860.unk00 = i; + } + } + for(i=0; i<4; i++) { + fn_1_357C(&lbl_1_bss_860.unk30[i], order[i]); + } +} + +void fn_1_1574C(omObjData *object) +{ + int charNo = lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10; + object->model[1] = CharModelCreate(charNo, 1); + object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); + object->motion[2] = CharModelMotionCreate(charNo, 0x5F0002); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660028+charNo); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660030+charNo); + object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660038+charNo); + object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x660000+charNo); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet(object->model[1], 120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, -60, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 3, 0, 1); +} + +void fn_1_15944(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_798.unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_798.unk00->work[0] = arg4; + lbl_1_bss_798.unk00->work[1] = arg1; + lbl_1_bss_798.unk00->work[2] = arg2+1; +} + +void fn_1_159F0(void) +{ + omObjData *obj; + lbl_1_bss_798.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL); + lbl_1_bss_798.unk04 = NULL; + lbl_1_bss_798.unk00->data = &lbl_1_bss_798; + fn_1_1574C(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_798.unk04 != NULL) { + lbl_1_bss_798.unk04(obj, &lbl_1_bss_798); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_15CDC(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 125; + work->unk08.z = 0; + work->unk20.x = -5; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1750; +} + +void fn_1_15D68(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 100; + temp.unk08.z = 0; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1400; + fn_1_4FEC(work, &temp, work->unk40++, 120, 10); + +} + +void fn_1_15E58(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk14 = 0; + work->unk18 = Hu3DData[lbl_1_bss_810.unk00->model[7]].pos.y; + work->unk1C = 0; + work->unk2C = 0; + work->unk30 = 0; + work->unk34 = 0; + work->unk3C = fn_1_864(1200, 1400, work->unk40++, 240); + fn_1_3B04(work, 30); +} + +void fn_1_15F70(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + temp.unk08.x = 0; + temp.unk08.y = 160; + temp.unk08.z = 0; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 1200; + fn_1_6004(work, &temp, work->unk40++, 10, 5); +} \ No newline at end of file diff --git a/src/REL/mstory2Dll/mg_miss.c b/src/REL/mstory2Dll/mg_miss.c new file mode 100644 index 00000000..6a9232ab --- /dev/null +++ b/src/REL/mstory2Dll/mg_miss.c @@ -0,0 +1,501 @@ +#include "REL/mstory2Dll.h" +#include "game/armem.h" +#include "game/board/main.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "game/pad.h" +#include "game/objsub.h" + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[0x18]; + /* 0x030 */ StructFn357C unk30[4]; + /* 0x100 */ s32 unk100; +} StructBssA34; // Size 0x104 + +StructBssA34 lbl_1_bss_A34; +StructBss16C lbl_1_bss_A0C; +StructBss16C lbl_1_bss_9E4; +StructBss16C lbl_1_bss_9BC; +StructBss16C lbl_1_bss_994; +StructBss16C lbl_1_bss_96C; +Process *lbl_1_bss_968; + +void fn_1_16FC0(void); +void fn_1_17338(void); +void fn_1_1774C(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_177F8(void); +void fn_1_17C44(void); +void fn_1_17E64(s32 arg0); +void fn_1_180D8(int arg0, int arg1, int arg2, int arg3, int arg4); +void fn_1_18184(void); +void fn_1_18408(void); +void fn_1_18494(void); + +void fn_1_16060(Process* arg0, s32 arg1) +{ + lbl_1_bss_968 = arg0; + lbl_1_bss_A34.unk0C = arg1; + fn_1_C30(); + fn_1_3668(255); + fn_1_2828(lbl_1_bss_968, fn_1_18408); + fn_1_3754(); + fn_1_17E64(arg1); + HuPrcChildCreate(fn_1_17338, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_177F8, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_17C44, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_18184, 100, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_16FC0, 100, 8192, 0, HuPrcCurrentGet()); +} + +void fn_1_16178(omObjData *object) +{ + if(object->work[2]) { + object->work[2]--; + return; + } + if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + fn_1_1DFC(object, 1, object->work[1], 15, 1); + object->work[0] = object->work[1] = object->work[2] = 0; + } +} + +void fn_1_16204(void) +{ + int posX = 16; + int posY = 40; + GXColor winColor = { 0, 0, 128, 128 }; + int i; + while(1) { + fn_1_BC8(); + printWin(posX, posY, 220, 130, &winColor); + if(lbl_1_bss_A0C.unk04 == NULL) { + print8(posX, posY, 1, "PROC_MAIN -> FALSE"); + } else { + print8(posX, posY, 1, "PROC_MAIN -> TRUE"); + } + if(lbl_1_bss_9E4.unk04 == NULL) { + print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); + } else { + print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + } + if(lbl_1_bss_9BC.unk04 == NULL) { + print8(posX, posY+20, 1, "PROC_KOOPA -> FALSE"); + } else { + print8(posX, posY+20, 1, "PROC_KOOPA -> TRUE"); + } + if(lbl_1_bss_994.unk04 == NULL) { + print8(posX, posY+30, 1, "PROC_MKOOPA -> FALSE"); + } else { + print8(posX, posY+30, 1, "PROC_MKOOPA -> TRUE"); + } + if(lbl_1_bss_96C.unk04 == NULL) { + print8(posX, posY+40, 1, "PROC_PLAYER -> FALSE"); + } else { + print8(posX, posY+40, 1, "PROC_PLAYER -> TRUE"); + } + print8(posX, posY+60, 1, "P:%d W:%d", lbl_1_bss_A34.unk00, lbl_1_bss_A34.unk0C); + print8(posX, posY+80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for(i=0; i<4; i++) { + print8(posX, posY+90+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_A34.unk30[i].unk00, lbl_1_bss_A34.unk30[i].unk04, lbl_1_bss_A34.unk30[i].unk08, lbl_1_bss_A34.unk30[i].unk0C, lbl_1_bss_A34.unk30[i].unk14, lbl_1_bss_A34.unk30[i].unk10); + } + } +} + +void fn_1_165B0(void) +{ + lbl_1_bss_78[0] = HuAudSeqPlay(52); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet()); + fn_1_BE8(60); +} + +void fn_1_1661C(void) +{ + lbl_1_bss_A34.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_A34.unk0C); + fn_1_1774C(2, 1, 15, 0, 1); + fn_1_180D8(2, 3, 15, 0, 1); + HuAudCharVoicePlay(lbl_1_bss_A34.unk30[lbl_1_bss_A34.unk00].unk10, 302); + fn_1_6D78(lbl_1_bss_A34.unk04, 0x1F0010, -1, lbl_1_bss_9BC.unk00->model[1]); + fn_1_1D18(lbl_1_bss_A34.unk04, 0x250004); + fn_1_1774C(1, -1, 15, 1, 0); + fn_1_1A94(lbl_1_bss_A34.unk04); +} + +int fn_1_1670C(void) +{ + int result = 0; + HuWinInsertMesSet(lbl_1_bss_A34.unk04, 0x1E003C, 3); + fn_1_1D18(lbl_1_bss_A34.unk04, 0x1E002D); + fn_1_1AFC(lbl_1_bss_A34.unk04, 5); + lbl_1_bss_A34.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_A34.unk0C); + fn_1_1D18(lbl_1_bss_A34.unk08, 0x1E0035); + result = fn_1_1C64(lbl_1_bss_A34.unk08); + fn_1_1D18(lbl_1_bss_A34.unk08, 0x250004); + fn_1_71DC(lbl_1_bss_A34.unk08); + if(result) { + HuAudFXPlay(lbl_1_data_0[6][2]); + fn_1_1774C(3, 1, 15, 1, 0); + fn_1_1D18(lbl_1_bss_A34.unk04, 0x1F0012); + fn_1_1AFC(lbl_1_bss_A34.unk04, -1); + fn_1_1D18(lbl_1_bss_A34.unk04, 0x250004); + fn_1_1774C(1, -1, 15, 1, 0); + fn_1_180D8(4, 1, 15, 0, 1); + } + return result; +} + +int fn_1_168B0(void) +{ + int result = 0; + fn_1_1D18(lbl_1_bss_A34.unk04, 0x1E0005); + fn_1_1AFC(lbl_1_bss_A34.unk04, 5); + lbl_1_bss_A34.unk08 = fn_1_7064(0x1E0035, lbl_1_bss_A34.unk0C); + fn_1_1D18(lbl_1_bss_A34.unk08, 0x1E0035); + result = fn_1_1BA8(lbl_1_bss_A34.unk08, 1); + fn_1_1D18(lbl_1_bss_A34.unk08, 0x250004); + fn_1_71DC(lbl_1_bss_A34.unk08); + return result; +} + +void fn_1_16984(void) +{ + HuAudSeqFadeOut(lbl_1_bss_78[0], 3000); + fn_1_3854(&lbl_1_bss_24); + fn_1_2750(fn_1_18494); + fn_1_BE8(150); +} + +void fn_1_169D4(void) +{ + +} + +void fn_1_169D8(int arg0) +{ + omOvlHisData* his; + + if (arg0 != 0) { + HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_BC8(); + } while (WipeStatGet() != 0); + CharModelKill(-1); + his = omOvlHisGet(0); + omOvlHisChg(0, OVL_MSTORY2, 3, his->stat); + if (arg0 == 0) { + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + GWMGAvailSet(450); + GWSystem.mg_next = 450-401; + omOvlCallEx(OVL_M450, 1, 0, 0); + } else { + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_16ACC(omObjData* arg0, StructBss16C* arg1) +{ + int mode = 0; + fn_1_165B0(); + fn_1_1661C(); + lbl_1_bss_A34.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_A34.unk0C); + while(1) { + fn_1_BC8(); + if(fn_1_1670C()) { + mode = 0; + break; + } else if(fn_1_168B0()) { + mode = 1; + break; + } + } + fn_1_1A94(lbl_1_bss_A34.unk04); + switch(mode) { + case 0: + fn_1_16984(); + break; + case 1: + break; + } + fn_1_169D8(mode); + arg1->unk04 = NULL; +} + +void fn_1_16FC0(void) +{ + omObjData *obj; + lbl_1_bss_A0C.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL); + lbl_1_bss_A0C.unk04 = (void *)fn_1_16ACC; + lbl_1_bss_A0C.unk00->data = &lbl_1_bss_A0C; + while(1) { + fn_1_BC8(); + if(lbl_1_bss_A0C.unk04 != NULL) { + lbl_1_bss_A0C.unk04(obj, &lbl_1_bss_A0C); + } + } +} + +void fn_1_17074(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660052); + object->motion[1] = Hu3DMotionIDGet(object->model[1]); + Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); + fn_1_1DFC(object, 1, 1, 0, 1); + object->model[2] = Hu3DModelCreateFile(0x660053); + object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); + object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + fn_1_1DFC(object, 2, 2, 0, 2); + object->model[5] = Hu3DModelCreateFile(0x660059); + object->motion[5] = Hu3DMotionIDGet(object->model[5]); + Hu3DModelPosSet(object->model[5], 0, 80, 460); + Hu3DModelShadowSet(object->model[5]); + fn_1_1DFC(object, 5, 5, 0, 2); + object->model[6] = Hu3DModelCreateFile(0x66005A); + object->motion[6] = Hu3DMotionIDGet(object->model[6]); + Hu3DModelHookSet(object->model[5], "koopasgbox_fix-effect_fook2", object->model[6]); + fn_1_1DFC(object, 6, 6, 0, 2); +} + +void fn_1_1727C(omObjData* arg0, StructBss16C* arg1) +{ + Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360); + if(arg1->unk08 >= 360) { + arg1->unk08 = 0; + } +} + +void fn_1_17338(void) +{ + omObjData *obj; + lbl_1_bss_9E4.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL); + lbl_1_bss_9E4.unk04 = (void *)fn_1_1727C; + lbl_1_bss_9E4.unk00->data = &lbl_1_bss_9E4; + fn_1_17074(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_9E4.unk04 != NULL) { + lbl_1_bss_9E4.unk04(obj, &lbl_1_bss_9E4); + } + } +} + +void fn_1_175CC(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x660062); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); + object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660066); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660069); + Hu3DModelPosSet(object->model[1], 0, 0, 200); + Hu3DModelRotSet(object->model[1], 0, 0, 0); + Hu3DModelScaleSet(object->model[1], 1.6f, 1.6f, 1.6f); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_1774C(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_9BC.unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_9BC.unk00->work[0] = arg4; + lbl_1_bss_9BC.unk00->work[1] = arg1; + lbl_1_bss_9BC.unk00->work[2] = arg2+1; +} + +void fn_1_177F8(void) +{ + omObjData *obj; + lbl_1_bss_9BC.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL); + lbl_1_bss_9BC.unk04 = NULL; + lbl_1_bss_9BC.unk00->data = &lbl_1_bss_9E4; + fn_1_175CC(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_9BC.unk04 != NULL) { + lbl_1_bss_9BC.unk04(obj, &lbl_1_bss_9BC); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_17A70(omObjData *object) +{ + object->model[1] = Hu3DModelCreateFile(0x66007D); + object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x66007E); + Hu3DModelPosSet(object->model[1], -120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, 135, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_17B98(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_994.unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_994.unk00->work[0] = arg4; + lbl_1_bss_994.unk00->work[1] = arg1; + lbl_1_bss_994.unk00->work[2] = arg2+1; +} + +void fn_1_17C44(void) +{ + omObjData *obj; + lbl_1_bss_994.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL); + lbl_1_bss_994.unk04 = NULL; + lbl_1_bss_994.unk00->data = &lbl_1_bss_994; + fn_1_17A70(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_994.unk04 != NULL) { + lbl_1_bss_994.unk04(obj, &lbl_1_bss_994); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_17E64(s32 arg0) +{ + int i; + int order[4]; + order[0] = 0; + for(i=1; i<4; i++) { + order[i] = order[i-1]+1; + if(order[i] >= 4) { + order[i] = 0; + } + if(arg0 == order[i]) { + lbl_1_bss_A34.unk00 = i; + } + } + for(i=0; i<4; i++) { + fn_1_357C(&lbl_1_bss_A34.unk30[i], order[i]); + } +} + +void fn_1_17F48(omObjData *object) +{ + int charNo = lbl_1_bss_A34.unk30[lbl_1_bss_A34.unk00].unk10; + object->model[1] = CharModelCreate(charNo, 1); + object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); + object->motion[2] = CharModelMotionCreate(charNo, 0x5F0018); + object->motion[3] = CharModelMotionCreate(charNo, 0x5F0034); + object->motion[4] = CharModelMotionCreate(charNo, 0x5F0048); + CharModelVoiceEnableSet(charNo, object->motion[2], FALSE); + CharModelMotionDataClose(charNo); + Hu3DModelPosSet(object->model[1], 120, 0, 800); + Hu3DModelRotSet(object->model[1], 0, -135, 0); + Hu3DModelScaleSet(object->model[1], 1, 1, 1); + Hu3DModelShadowSet(object->model[1]); + fn_1_1DFC(object, 1, 1, 0, 1); +} + +void fn_1_180D8(int arg0, int arg1, int arg2, int arg3, int arg4) +{ + fn_1_1DFC(lbl_1_bss_96C.unk00, 1, arg0, arg2, arg3); + if(arg3 == 1) { + arg4 = 0; + } + lbl_1_bss_96C.unk00->work[0] = arg4; + lbl_1_bss_96C.unk00->work[1] = arg1; + lbl_1_bss_96C.unk00->work[2] = arg2+1; +} + +void fn_1_18184(void) +{ + omObjData *obj; + lbl_1_bss_96C.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL); + lbl_1_bss_96C.unk04 = NULL; + lbl_1_bss_96C.unk00->data = &lbl_1_bss_96C; + fn_1_17F48(obj); + while(1) { + fn_1_BC8(); + if(lbl_1_bss_96C.unk04 != NULL) { + lbl_1_bss_96C.unk04(obj, &lbl_1_bss_96C); + } + if(obj->work[0]) { + if(obj->work[2]) { + obj->work[2]--; + } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + fn_1_1DFC(obj, 1, obj->work[1], 15, 1); + obj->work[0] = obj->work[1] = obj->work[2] = 0; + } + } + } +} + +void fn_1_18408(void) +{ + StructBss24 *work = &lbl_1_bss_24; + work->unk08.x = 0; + work->unk08.y = 125; + work->unk08.z = 0; + work->unk20.x = -5; + work->unk20.y = 0; + work->unk20.z = 0; + work->unk38 = 1750; +} + +void fn_1_18494(void) +{ + StructBss24 *work = &lbl_1_bss_24; + StructBss24 temp; + if(work->unk40 == 50) { + fn_1_1DFC(lbl_1_bss_9E4.unk00, 5, 5, 0, 0); + fn_1_1DFC(lbl_1_bss_9E4.unk00, 6, 6, 0, 0); + HuAudFXPlay(161); + } + temp.unk08.x = 0; + temp.unk08.y = 130; + temp.unk08.z = 460; + temp.unk20.x = 0; + temp.unk20.y = 0; + temp.unk20.z = 0; + temp.unk38 = 150; + fn_1_4FEC(work, &temp, work->unk40, 180, 10); + if(work->unk40++ >= 90) { + if(work->unk40 == 91) { + lbl_1_bss_88[0] = HuAudFXPlay(32); + } + work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40-90, 90); + Hu3DData[lbl_1_bss_9E4.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40-90, 90); + } +} \ No newline at end of file diff --git a/src/REL/mstory2Dll/save.c b/src/REL/mstory2Dll/save.c new file mode 100644 index 00000000..8bdf3535 --- /dev/null +++ b/src/REL/mstory2Dll/save.c @@ -0,0 +1,118 @@ +#include "REL/mstoryDll.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +s32 lbl_1_bss_D14; +Process *lbl_1_bss_D10; + +s32 fn_1_1B560(s32 arg0) +{ + if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) { + return 1; + } + if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) { + return 1; + } + if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) { + return 1; + } + if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) { + return 1; + } + if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) { + return 1; + } + if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) { + return 1; + } + return 0; +} + +void fn_1_1B64C(void) +{ + float sp8[2]; + s32 temp_r30; + s32 var_r29; + s32 var_r31; + + temp_r30 = 1; + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + if (SLSaveFlagGet() == 0) { + lbl_1_bss_D14 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } + } + espInit(); + HuPrcVSleep(); + var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0); + espPosSet(var_r29, 288.0f, 240.0f); + espAttrReset(var_r29, 4); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + if (SLSaveFlagGet() == 1) { + HuWinInit(1); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22)); + var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2); + winData[var_r31].active_pad = 1; + HuWinAttrSet(var_r31, 0x10); + HuWinExAnimIn(var_r31); + HuWinMesSet(var_r31, MAKE_MESSID(30, 22)); + temp_r30 = HuWinChoiceGet(var_r31, 0); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + if (SLSaveFlagGet() == 1 && temp_r30 == 0) { + if(omovlstat) { + GWGameStat.story_continue = 0; + } + SLCommonSet(); + SLSaveBoardStory(); + SLSave(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_D14 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1B870(void) +{ + _SetFlag(9); + HuPrcChildCreate(fn_1_1B64C, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_BC8(); + } while (lbl_1_bss_D14 != 1); + if(omovlstat == 0) { + omOvlGotoEx(OVL_MSTORY2, 1, 4, 0); + } else { + omOvlReturnEx(omovlhisidx, 1); + } + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1B90C(Process *arg0) +{ + lbl_1_bss_D10 = arg0; + HuPrcChildCreate(fn_1_1B870, 100, 0x2000, 0, HuPrcCurrentGet()); +} diff --git a/src/REL/mstory4Dll/main.c b/src/REL/mstory4Dll/main.c index 1bb809d0..e5fce452 100644 --- a/src/REL/mstory4Dll/main.c +++ b/src/REL/mstory4Dll/main.c @@ -583,7 +583,7 @@ void fn_1_13A0(void) } } character = GWPlayerCfg[0].character; - GWSystem.unk0B[1] = character; + GWSystem.unk0C = character; GWPlayer[0].character = GWPlayerCfg[0].character; GWPlayer[1].character = GWPlayerCfg[1].character; GWPlayer[2].character = GWPlayerCfg[2].character; From f79a3f88b184bc2b23c6ef5d6f23d03142107f89 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sat, 11 Jan 2025 15:50:52 +0100 Subject: [PATCH 13/24] Fix mstory2 data locality and apply DATA_MAKE_NUM macros (#522) * Make rodata and strings local in mstory2 * use DATA_MAKE_NUM macros --- config/GMPE01_00/rels/mstory2Dll/symbols.txt | 736 +++++------ src/REL/m418Dll/main.c | 1149 ++++++++++-------- src/REL/m420dll/player.c | 113 +- src/REL/m424Dll/claw.c | 330 ++--- src/REL/m430Dll/main.c | 2 +- src/REL/m430Dll/player.c | 43 +- src/REL/m430Dll/water.c | 36 +- src/REL/m449Dll/main.c | 3 +- src/REL/m455Dll/main.c | 8 +- src/REL/m456Dll/main.c | 22 +- src/REL/m458Dll/main.c | 18 +- src/REL/m461Dll/main.c | 979 +++++++-------- src/REL/mstory2Dll/board_clear.c | 210 ++-- src/REL/mstory2Dll/board_entrance.c | 216 ++-- src/REL/mstory2Dll/board_miss.c | 319 +++-- src/REL/mstory2Dll/ending.c | 200 ++- src/REL/mstory2Dll/mg_clear.c | 367 +++--- src/REL/mstory2Dll/mg_miss.c | 175 +-- 18 files changed, 2589 insertions(+), 2337 deletions(-) diff --git a/config/GMPE01_00/rels/mstory2Dll/symbols.txt b/config/GMPE01_00/rels/mstory2Dll/symbols.txt index 351e9c5d..f0c05621 100644 --- a/config/GMPE01_00/rels/mstory2Dll/symbols.txt +++ b/config/GMPE01_00/rels/mstory2Dll/symbols.txt @@ -265,398 +265,398 @@ fn_1_1B870 = .text:0x0001B870; // type:function size:0x9C fn_1_1B90C = .text:0x0001B90C; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC data:4byte -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC data:4byte -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC data:4byte -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 data:byte -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC data:4byte -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 data:byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC data:4byte -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC data:4byte -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C data:4byte -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 data:byte -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC data:4byte -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC data:4byte -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC data:4byte -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 data:byte -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC data:4byte -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC data:4byte -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC data:4byte -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 data:byte -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 data:double -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 data:byte -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC data:4byte -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte -lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 data:string -lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 data:string -lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 data:string -lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 data:string -lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 data:string -lbl_1_data_135 = .data:0x00000135; // type:object size:0xF +lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 scope:local data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 scope:local data:string +lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 scope:local data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0xF scope:local lbl_1_data_144 = .data:0x00000144; // type:object size:0x18 -lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 data:string -lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 data:string -lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 data:string +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 scope:local data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 scope:local data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 scope:local data:string jumptable_1_data_19C = .data:0x0000019C; // type:object size:0x54 scope:local jumptable_1_data_1F0 = .data:0x000001F0; // type:object size:0x54 scope:local -lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A data:string -lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A data:string -lbl_1_data_278 = .data:0x00000278; // type:object size:0xE data:string -lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 data:string -lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 data:string -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 data:string -lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 data:string -lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 data:string -lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 data:string -lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 data:string -lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 +lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A scope:local data:string +lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A scope:local data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0xE scope:local data:string +lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 scope:local data:string +lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 scope:local data:string +lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 scope:local data:string +lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 scope:local data:string +lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 scope:local lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 lbl_1_data_328 = .data:0x00000328; // type:object size:0x40 lbl_1_data_368 = .data:0x00000368; // type:object size:0x20 data:float -lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 data:string -lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 data:string +lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 scope:local data:string +lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 scope:local data:string lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x2C lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10 lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte -lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 data:string -lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 data:string -lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 data:string -lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 data:string -lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 data:string -lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 data:string -lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 data:string -lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 data:string -lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 data:string -lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 data:string -lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 data:string -lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA data:string -lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C data:string -lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D data:string -lbl_1_data_50C = .data:0x0000050C; // type:object size:0xF data:string -lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 data:string -lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 data:string -lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 data:string -lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 data:string -lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 data:string -lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 data:string -lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 data:string -lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 data:string -lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 data:string -lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 data:string -lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA data:string -lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C data:string -lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D data:string -lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 data:string -lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C data:string +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 scope:local data:string +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 scope:local data:string +lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 scope:local data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 scope:local data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 scope:local data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 scope:local data:string +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 scope:local data:string +lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 scope:local data:string +lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA scope:local data:string +lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C scope:local data:string +lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D scope:local data:string +lbl_1_data_50C = .data:0x0000050C; // type:object size:0xF scope:local data:string +lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 scope:local data:string +lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 scope:local data:string +lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 scope:local data:string +lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 scope:local data:string +lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 scope:local data:string +lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 scope:local data:string +lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 scope:local data:string +lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 scope:local data:string +lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA scope:local data:string +lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C scope:local data:string +lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D scope:local data:string +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 scope:local data:string +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C scope:local data:string lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 data:float lbl_1_data_698 = .data:0x00000698; // type:object size:0x1C lbl_1_data_6B4 = .data:0x000006B4; // type:object size:0x20 -lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 data:string -lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 data:string -lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 data:string -lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 data:string -lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 data:string -lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 data:string -lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 data:string -lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 data:string -lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 data:string -lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 data:string -lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA data:string -lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C data:string -lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D data:string -lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 data:string -lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 scope:local data:string +lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 scope:local data:string +lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 scope:local data:string +lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 scope:local data:string +lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 scope:local data:string +lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 scope:local data:string +lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 scope:local data:string +lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 scope:local data:string +lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 scope:local data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 scope:local data:string +lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA scope:local data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C scope:local data:string +lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D scope:local data:string +lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 scope:local data:string +lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C scope:local lbl_1_data_81C = .data:0x0000081C; // type:object size:0x30 lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0 lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10 lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte lbl_1_data_C24 = .data:0x00000C24; // type:object size:0x8 data:4byte -lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 data:string -lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 data:string -lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 data:string -lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 data:string -lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 data:string -lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 data:string -lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 data:string -lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 data:string -lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 data:string -lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 data:string -lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 data:string -lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA data:string -lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C data:string -lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D data:string -lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C data:string -lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 data:string -lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 data:string -lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0x7 data:string -lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 data:string -lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 data:string -lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 data:string -lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 data:string -lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 data:string -lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 data:string -lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 data:string -lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 data:string -lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 data:string -lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 data:string -lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA data:string -lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C data:string -lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D data:string -lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 data:string -lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x1C data:string +lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 scope:local data:string +lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 scope:local data:string +lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 scope:local data:string +lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 scope:local data:string +lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 scope:local data:string +lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 scope:local data:string +lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 scope:local data:string +lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 scope:local data:string +lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 scope:local data:string +lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 scope:local data:string +lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 scope:local data:string +lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA scope:local data:string +lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C scope:local data:string +lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D scope:local data:string +lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C scope:local data:string +lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 scope:local data:string +lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 scope:local data:string +lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0x7 scope:local data:string +lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 scope:local data:string +lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 scope:local data:string +lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 scope:local data:string +lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 scope:local data:string +lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 scope:local data:string +lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 scope:local data:string +lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 scope:local data:string +lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 scope:local data:string +lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 scope:local data:string +lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 scope:local data:string +lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA scope:local data:string +lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C scope:local data:string +lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D scope:local data:string +lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 scope:local data:string +lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x1C scope:local data:string lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10 lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte lbl_1_data_F14 = .data:0x00000F14; // type:object size:0x4 data:4byte -lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 data:string -lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 data:string -lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 data:string -lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 data:string -lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 data:string -lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 data:string -lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 data:string -lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 data:string -lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 data:string -lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 data:string -lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 data:string -lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA data:string -lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C data:string -lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D data:string -lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 data:string -lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 data:string -lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 data:string -lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 data:string -lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 data:string -lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 data:string -lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 data:string -lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 data:string +lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 scope:local data:string +lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 scope:local data:string +lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 scope:local data:string +lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 scope:local data:string +lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 scope:local data:string +lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 scope:local data:string +lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 scope:local data:string +lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 scope:local data:string +lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 scope:local data:string +lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 scope:local data:string +lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 scope:local data:string +lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA scope:local data:string +lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C scope:local data:string +lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D scope:local data:string +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 scope:local data:string +lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 scope:local data:string +lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 scope:local data:string +lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 scope:local data:string +lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 scope:local data:string +lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 scope:local data:string +lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 scope:local data:string +lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 scope:local data:string lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20 -lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF data:string +lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x20 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x44 data:float diff --git a/src/REL/m418Dll/main.c b/src/REL/m418Dll/main.c index c2794f39..38b547ca 100644 --- a/src/REL/m418Dll/main.c +++ b/src/REL/m418Dll/main.c @@ -1,4 +1,3 @@ -#include "math.h" #include "ext_math.h" #include "game/chrman.h" #include "game/hsfman.h" @@ -6,17 +5,18 @@ #include "game/objsub.h" #include "game/pad.h" #include "game/wipe.h" +#include "math.h" #include "REL/m418Dll.h" // types typedef struct M418DllUnkStruct2 { - omObjData* unk0; + omObjData *unk0; s32 unk4[4]; } M418DllUnkStruct2; // sizeof 0x14 typedef struct M418DllUnkStruct3 { - omObjData* unk0; + omObjData *unk0; s32 unk4; s32 unk8; s32 unkC; @@ -41,7 +41,7 @@ typedef struct M418DllUnkStruct3 { } M418DllUnkStruct3; // sizeof 0x60 typedef struct M418DllUnkStruct4 { - omObjData* unk0; + omObjData *unk0; f32 unk4; f32 unk8; s32 unkC; @@ -69,7 +69,7 @@ typedef struct M418DllUnkStruct6 { } M418DllUnkStruct6; // sizeof 0x44 typedef struct M418DllWorkStruct { - omObjData* unk0; + omObjData *unk0; Vec unk4; Vec unk10[10]; s32 unk88; @@ -95,18 +95,20 @@ s32 lbl_1_bss_10; s32 lbl_1_bss_C; s32 lbl_1_bss_8; s32 lbl_1_bss_4; -Process* lbl_1_bss_0; +Process *lbl_1_bss_0; // data s32 lbl_1_data_0[2] = { -1, -1 }; s32 lbl_1_data_8 = -1; -void fn_1_0(void) { +void fn_1_0(void) +{ Hu3DGLightCreate(-2500.0f, 5000.0f, 5000.0f, 0.0f, -1.0f, -1.0f, 0xFF, 0xD8, 0xA0); } -void fn_1_74(void) { - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; +void fn_1_74(void) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; Vec sp2C = { 0.0f, 1100.0f, 1800.0f }; Vec sp20 = { 0.0f, 600.0f, 600.0f }; @@ -115,15 +117,17 @@ void fn_1_74(void) { var_r31->rot.x++; } -void fn_1_158(s32 arg0, f32 arg8) { - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; - +void fn_1_158(s32 arg0, f32 arg8) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + var_r31->unk3C[arg0] = arg8; } -f32 fn_1_180(s32 arg0) { - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; - +f32 fn_1_180(s32 arg0) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + if (var_r31->unk3C[arg0] != 0.0f) { var_r31->unk3C[arg0] *= -0.9f; if (var_r31->unk3C[arg0] >= -0.5f) { @@ -135,19 +139,21 @@ f32 fn_1_180(s32 arg0) { return var_r31->unk3C[arg0]; } -void fn_1_248(M418DllFunc arg0) { - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; - +void fn_1_248(M418DllFunc arg0) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + var_r31->unk0 = arg0; } -void fn_1_268(omObjData* object) { - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; - +void fn_1_268(omObjData *object) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + if (var_r31->unk0 != NULL) { var_r31->unk0(); } - + Center.x = var_r31->center.x + fn_1_180(0); Center.y = var_r31->center.y + fn_1_180(1); Center.z = var_r31->center.z + fn_1_180(2); @@ -157,8 +163,9 @@ void fn_1_268(omObjData* object) { CZoom = var_r31->zoom; } -void fn_1_500(void) { - M418DllUnkStruct* var_r31; +void fn_1_500(void) +{ + M418DllUnkStruct *var_r31; Hu3DCameraCreate(1); Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); Hu3DCameraPerspectiveSet(1, 40.0f, 0.1f, 17500.0f, 1.2f); @@ -168,7 +175,8 @@ void fn_1_500(void) { omAddObjEx(lbl_1_bss_0, 0x7FD9, 0, 0, -1, fn_1_268); } -void fn_1_618(void) { +void fn_1_618(void) +{ Vec sp20 = { -1500.0f, 2500.0f, 1000.0f }; Vec sp14 = { 0.0f, 0.0f, 0.0f }; Vec sp8 = { 0.0f, 1.0f, 0.0f }; @@ -178,30 +186,34 @@ void fn_1_618(void) { Hu3DShadowPosSet(&sp20, &sp8, &sp14); } -void fn_1_6DC(s32 arg0) { +void fn_1_6DC(s32 arg0) +{ if (lbl_1_bss_8 == 0) { lbl_1_bss_8 = 1; lbl_1_bss_4 = arg0 * 0x3C; } } -s32 fn_1_714(void) { +s32 fn_1_714(void) +{ s32 var_r31 = 0; - + if (lbl_1_bss_8 == 3) { var_r31 = 1; } return var_r31; } -void fn_1_748(void) { +void fn_1_748(void) +{ if (lbl_1_bss_8 == 2) { lbl_1_bss_8 = 3; lbl_1_bss_4 = 30; } } -void fn_1_780(omObjData* object) { +void fn_1_780(omObjData *object) +{ switch (lbl_1_bss_8) { case 1: if (lbl_1_data_8 == -1) { @@ -230,18 +242,21 @@ void fn_1_780(omObjData* object) { } } -s32 fn_1_950(s32 arg0) { - +s32 fn_1_950(s32 arg0) +{ + if ((rand8() % arg0) == 0) { return 1; - } else { + } + else { return 0; } } -void fn_1_998(omObjData* object) { +void fn_1_998(omObjData *object) +{ s32 var_r31; - M418DllUnkStruct2* var_r30 = &lbl_1_bss_1E0; + M418DllUnkStruct2 *var_r30 = &lbl_1_bss_1E0; for (var_r31 = 0; var_r31 < 3; var_r31++) { switch (var_r30->unk4[var_r31]) { @@ -262,9 +277,10 @@ void fn_1_998(omObjData* object) { } } -void fn_1_AA8(omObjData* object) { +void fn_1_AA8(omObjData *object) +{ Mtx sp10; - char* sp8[2] = { "scene02-dai1_null", "scene02-dai2_null1" }; + char *sp8[2] = { "scene02-dai1_null", "scene02-dai2_null1" }; s32 var_r31; for (var_r31 = 0; var_r31 < 2; var_r31++) { @@ -274,13 +290,14 @@ void fn_1_AA8(omObjData* object) { object->func = fn_1_998; } -void fn_1_B4C(omObjData* object) { +void fn_1_B4C(omObjData *object) +{ s32 sp8[3] = { 0x310021, 0x310022, 0x310023 }; s32 var_r30; object->model[0] = Hu3DModelCreateFile(0x310011); Hu3DModelShadowMapSet(object->model[0]); - + for (var_r30 = 1; var_r30 < 4; var_r30++) { object->model[var_r30] = Hu3DModelCreateFile(sp8[var_r30 - 1]); object->motion[var_r30] = Hu3DMotionIDGet(object->model[var_r30]); @@ -290,7 +307,7 @@ void fn_1_B4C(omObjData* object) { } object->model[4] = Hu3DModelCreateFile(0x310016); object->model[5] = Hu3DModelCreateFile(0x310018); - + for (var_r30 = 6; var_r30 < 8; var_r30++) { object->model[var_r30] = Hu3DModelCreateFile(0x310026); object->motion[var_r30] = Hu3DMotionIDGet(object->model[var_r30]); @@ -298,7 +315,7 @@ void fn_1_B4C(omObjData* object) { Hu3DModelLayerSet(object->model[var_r30], 1); fn_1_ABC4(object, var_r30, var_r30, 0, 1); } - + for (var_r30 = 8; var_r30 < 11; var_r30++) { object->model[var_r30] = Hu3DModelCreateFile(0x31002A); object->motion[var_r30] = Hu3DJointMotion(object->model[var_r30], HuDataSelHeapReadNum(0x31002E, MEMORY_DEFAULT_NUM, HEAP_DATA)); @@ -308,24 +325,26 @@ void fn_1_B4C(omObjData* object) { object->func = fn_1_AA8; } -void fn_1_E74(omObjData* object) { +void fn_1_E74(omObjData *object) +{ Mtx sp18; f32 var_f31; - M418DllUnkStruct4* temp_r30; - M418DllUnkStruct4* temp_r29; - M418DllUnkStruct3* temp_r28; - M418DllUnkStruct4* temp_r27; - M418DllUnkStruct6* temp_r26; - HsfObject* temp_r25; - ModelData* temp_r24; + M418DllUnkStruct4 *temp_r30; + M418DllUnkStruct4 *temp_r29; + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct4 *temp_r27; + M418DllUnkStruct6 *temp_r26; + HsfObject *temp_r25; + ModelData *temp_r24; temp_r26 = &lbl_1_bss_3EC; temp_r28 = &lbl_1_bss_26C[temp_r26->unk0]; temp_r30 = &lbl_1_bss_170[object->work[0]]; if (object->work[1] == 0) { fn_1_ABC4(object, 2, 2, 0, 2); - } else if (object->work[1] == 1) { + } + else if (object->work[1] == 1) { Hu3DModelAttrReset(object->model[3], 1); Hu3DModelAttrReset(object->model[4], 1); Hu3DModelAttrReset(object->model[5], 1); @@ -335,14 +354,16 @@ void fn_1_E74(omObjData* object) { fn_1_ABC4(object, 4, 4, 0, 1); object->work[1] = 2; lbl_1_bss_240[5] = HuAudFXPlay(0x5D6); - } else if (object->work[1] == 2) { + } + else if (object->work[1] == 2) { if (Hu3DMotionEndCheck(object->model[3]) != 0) { object->work[1] = 3; object->work[2] = 0; temp_r30->unkC = 1; HuAudFXFadeOut(lbl_1_bss_240[5], 0x3E8); } - } else if (object->work[1] == 3) { + } + else if (object->work[1] == 3) { temp_r29 = &lbl_1_bss_170[object->work[0]]; temp_r29->unkC = 2; temp_r29->unk4 += 1.0f; @@ -353,7 +374,8 @@ void fn_1_E74(omObjData* object) { if (temp_r29->unk10 == 1) { object->work[1] = 5; temp_r29->unk8 = 0.0f; - } else { + } + else { HuAudFXPlay(0x5D2); object->work[1] = 4; Hu3DModelObjMtxGet(object->model[0], "taihou-null4", sp18); @@ -363,21 +385,24 @@ void fn_1_E74(omObjData* object) { } temp_r29->unkC = 3; } - } else if (object->work[1] == 4) { - if ((Hu3DMotionEndCheck(object->model[5]) != 0) || (temp_r30->unk10 == 1)) { - object->work[1] = 99; - Hu3DModelAttrSet(object->model[3], 1); - Hu3DModelAttrSet(object->model[4], 1); - Hu3DModelAttrSet(object->model[5], 1); - } - } else if (object->work[1] == 5 || object->work[1] == 6) { + } + else if (object->work[1] == 4) { + if ((Hu3DMotionEndCheck(object->model[5]) != 0) || (temp_r30->unk10 == 1)) { + object->work[1] = 99; + Hu3DModelAttrSet(object->model[3], 1); + Hu3DModelAttrSet(object->model[4], 1); + Hu3DModelAttrSet(object->model[5], 1); + } + } + else if (object->work[1] == 5 || object->work[1] == 6) { if (temp_r30->unk8 > 1.7f) { temp_r30->unk8 = 1.7f; } if (object->work[1] == 5) { var_f31 = temp_r30->unk8 * temp_r30->unk8 * (temp_r30->unk8 >= 0.0f ? -3.5f : 3.5f); temp_r30->unk4 += var_f31; - } else { + } + else { var_f31 = temp_r30->unk8 * temp_r30->unk8 * (temp_r30->unk8 >= 0.0f ? -1.25f : 1.25f); temp_r30->unk4 += var_f31; } @@ -388,7 +413,8 @@ void fn_1_E74(omObjData* object) { fn_1_158(1, 4.0f); omVibrate(temp_r28->unk4, 0xC, 6, 6); HuAudFXPlay(0x5DA); - } else { + } + else { if ((temp_r30->unk4 <= 0.0f) && (object->work[1] == 6)) { Hu3DModelObjMtxGet(object->model[0], "taihou-null4", sp18); Hu3DModelPosSet(object->model[6], sp18[0][3], sp18[1][3], sp18[2][3]); @@ -405,7 +431,7 @@ void fn_1_E74(omObjData* object) { temp_r30->unk8 += 0.11f; } if (object->work[1] != 0) { - const char* sp8[4] = { "doukasen-null_B", "doukasen-null_A", "doukasen-null_X", "doukasen-null_Y" }; + const char *sp8[4] = { "doukasen-null_B", "doukasen-null_A", "doukasen-null_X", "doukasen-null_Y" }; Hu3DModelObjMtxGet(object->model[3], sp8[object->work[0]], sp18); Hu3DModelPosSet(object->model[4], sp18[0][3], sp18[1][3], sp18[2][3]); } @@ -416,12 +442,13 @@ void fn_1_E74(omObjData* object) { temp_r24->rot.x = temp_r27->unk4; } -void fn_1_14F0(omObjData* arg0) { +void fn_1_14F0(omObjData *arg0) +{ s32 var_r30 = arg0->work[0]; s32 sp28[4] = { 0x310012, 0x310013, 0x310015, 0x310014 }; s32 sp18[4] = { 0x310019, 0x31001A, 0x31001B, 0x31001C }; s32 sp8[4] = { 0x31001D, 0x31001E, 0x31001F, 0x310020 }; - + arg0->model[0] = Hu3DModelCreateFile(0x310010); omSetTra(arg0, -540.0f + (360.0f * var_r30), 115.0f, -900.0f); arg0->model[1] = Hu3DModelCreateFile(sp28[var_r30]); @@ -449,8 +476,9 @@ void fn_1_14F0(omObjData* arg0) { arg0->func = fn_1_E74; } -void fn_1_18AC(omObjData* object) { - M418DllUnkStruct4* var_r31; +void fn_1_18AC(omObjData *object) +{ + M418DllUnkStruct4 *var_r31; var_r31 = &lbl_1_bss_11C[object->work[0]]; if (var_r31->unk14 == 0.0f) { @@ -458,8 +486,9 @@ void fn_1_18AC(omObjData* object) { } } -s32 fn_1_18FC(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { - M418DllUnkStruct4* temp_r30; +s32 fn_1_18FC(omObjData *object, Vec arg1, f32 arg8, f32 arg9) +{ + M418DllUnkStruct4 *temp_r30; s32 var_r28; f32 var_f31; f32 var_f30; @@ -476,7 +505,8 @@ s32 fn_1_18FC(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); if (var_f27 <= 15.0f) { var_f31 = var_f30 = 0.0f; - } else { + } + else { var_f31 = 55.0f * (var_f31 / var_f27); var_f30 = 55.0f * (var_f30 / var_f27); } @@ -486,7 +516,8 @@ s32 fn_1_18FC(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { var_f27 = arg9 * (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) / 72.0f); if (var_f27 >= arg9) { var_f27 = arg9; - } else if (var_f27 <= 1.0f) { + } + else if (var_f27 <= 1.0f) { var_f31 = var_f30 = var_f27 = 0.0f; var_r28 = 1; } @@ -501,7 +532,8 @@ s32 fn_1_18FC(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { if (object->rot.y - var_f26 < -180.0f) { object->rot.y += 360.0f; } - } else { + } + else { if (object->rot.y - var_f26 > 180.0f) { object->rot.y -= 360.0f; } @@ -529,32 +561,27 @@ s32 fn_1_18FC(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { } if (var_f27 > 0.0f) { fn_1_AD14(object, 0, 1, 10, 1); - } else { + } + else { fn_1_AD14(object, 0, 0, 10, 1); } return var_r28; } -s32 fn_1_20B0(omObjData* object, Vec arg1, f32 arg8, f32 arg9, s32 arg2) { - if (arg2 == 1) fn_1_18AC(object); +s32 fn_1_20B0(omObjData *object, Vec arg1, f32 arg8, f32 arg9, s32 arg2) +{ + if (arg2 == 1) + fn_1_18AC(object); return fn_1_18FC(object, arg1, arg9, arg8); } -Vec lbl_1_data_8C[9] = { - { 140.0f, 0.0f, -90.0f }, - { -200.0f, 0.0f, 50.0f }, - { -300.0f, 0.0f, -150.0f }, - { -250.0f, 0.0f, -500.0f }, - { 0.0f, 0.0f, 150.0f }, - { 700.0f, 0.0f, 50.0f }, - { 1000.0f, -50.0f, 500.0f }, - { 1000.0f, -100.0f, 500.0f }, - { 1000.0f, -150.0f, 500.0f } -}; +Vec lbl_1_data_8C[9] = { { 140.0f, 0.0f, -90.0f }, { -200.0f, 0.0f, 50.0f }, { -300.0f, 0.0f, -150.0f }, { -250.0f, 0.0f, -500.0f }, + { 0.0f, 0.0f, 150.0f }, { 700.0f, 0.0f, 50.0f }, { 1000.0f, -50.0f, 500.0f }, { 1000.0f, -100.0f, 500.0f }, { 1000.0f, -150.0f, 500.0f } }; -s32 fn_1_2178(omObjData* object) { +s32 fn_1_2178(omObjData *object) +{ s32 var_r30; - + switch (object->work[1]) { case 1: object->work[2] = 0; @@ -580,7 +607,7 @@ s32 fn_1_2178(omObjData* object) { object->work[2] = 0; } break; - + case 2: object->work[2] = 0; object->work[1] = 0x14; @@ -646,10 +673,11 @@ s32 fn_1_2178(omObjData* object) { } } -void fn_1_2894(omObjData* object) { +void fn_1_2894(omObjData *object) +{ Mtx sp3C; Mtx spC; - M418DllUnkStruct6* sp8; + M418DllUnkStruct6 *sp8; f32 temp_f31; sp8 = &lbl_1_bss_3EC; @@ -661,7 +689,8 @@ void fn_1_2894(omObjData* object) { fn_1_2178(object); } -void fn_1_29A0(omObjData* object) { +void fn_1_29A0(omObjData *object) +{ u32 temp_r30; temp_r30 = object->work[0]; @@ -683,8 +712,9 @@ void fn_1_29A0(omObjData* object) { object->func = fn_1_2894; } -void fn_1_2BC4(Vec arg0) { - M418DllWorkStruct* var_r31 = &lbl_1_bss_68; +void fn_1_2BC4(Vec arg0) +{ + M418DllWorkStruct *var_r31 = &lbl_1_bss_68; var_r31->unk4.x = arg0.x; var_r31->unk4.y = arg0.y; var_r31->unk4.z = arg0.z; @@ -692,9 +722,10 @@ void fn_1_2BC4(Vec arg0) { var_r31->unk0->work[0] = 1; } -void fn_1_2C0C(omObjData* object) { - ModelData* temp_r28; - M418DllWorkStruct* var_r31 = &lbl_1_bss_68; +void fn_1_2C0C(omObjData *object) +{ + ModelData *temp_r28; + M418DllWorkStruct *var_r31 = &lbl_1_bss_68; s32 var_r30; switch (object->work[0]) { @@ -726,7 +757,8 @@ void fn_1_2C0C(omObjData* object) { } } -void fn_1_3054(omObjData* object) { +void fn_1_3054(omObjData *object) +{ s32 var_r30; for (var_r30 = 1; var_r30 < 11; var_r30++) { @@ -738,8 +770,9 @@ void fn_1_3054(omObjData* object) { object->func = fn_1_2C0C; } -void fn_1_3138(void) { - M418DllUnkStruct3* temp_r31; +void fn_1_3138(void) +{ + M418DllUnkStruct3 *temp_r31; s32 var_r30; for (var_r30 = 0; var_r30 < 4; var_r30++) { @@ -748,13 +781,15 @@ void fn_1_3138(void) { temp_r31->unk8 = GWPlayerCfg[temp_r31->unk4].group; if (temp_r31->unk8 == 0) { temp_r31->unk8 = 0; - } else { + } + else { temp_r31->unk8 = 1; } temp_r31->unkC = GWPlayerCfg[temp_r31->unk4].iscom; if (temp_r31->unkC != 0) { temp_r31->unk10 = GWPlayerCfg[temp_r31->unk4].diff; - } else { + } + else { temp_r31->unk10 = 0; } temp_r31->unk14 = GWPlayerCfg[temp_r31->unk4].character; @@ -762,23 +797,16 @@ void fn_1_3138(void) { } } -char* lbl_1_data_1C0[8] = { - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r", - "test11_tex_we-itemhook-r" -}; +char *lbl_1_data_1C0[8] = { "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", + "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r", "test11_tex_we-itemhook-r" }; -void fn_1_3240(omObjData* object) { +void fn_1_3240(omObjData *object) +{ Mtx sp14; Vec sp8; - M418DllUnkStruct3* temp_r28; - ModelData* temp_r30; - M418DllWorkStruct* var_r29; + M418DllUnkStruct3 *temp_r28; + ModelData *temp_r30; + M418DllWorkStruct *var_r29; temp_r30 = &Hu3DData[object->model[11]]; temp_r28 = &lbl_1_bss_26C[object->work[0]]; @@ -801,12 +829,13 @@ void fn_1_3240(omObjData* object) { Hu3DModelAttrSet(object->model[11], 1); object->work[1] = object->work[2] = 0; } - break; + break; } } -void fn_1_3408(omObjData* object) { - M418DllUnkStruct3* temp_r31; +void fn_1_3408(omObjData *object) +{ + M418DllUnkStruct3 *temp_r31; temp_r31 = &lbl_1_bss_26C[object->work[0]]; if (temp_r31->unk1C == 0) { @@ -814,14 +843,15 @@ void fn_1_3408(omObjData* object) { } } -void fn_1_3444(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { +void fn_1_3444(omObjData *object, Vec arg1, f32 arg8, f32 arg9) +{ s32 sp24; f32 sp20; f32 sp1C; f32 sp18; - M418DllUnkStruct3* temp_r28; - M418DllUnkStruct3* temp_r30; - + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct3 *temp_r30; + f32 var_f31; f32 var_f30; f32 temp_f29; @@ -842,7 +872,8 @@ void fn_1_3444(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { var_f24 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); if (var_f24 <= 30.0f) { var_f31 = var_f30 = 0.0f; - } else { + } + else { var_f31 = 55.0f * (var_f31 / var_f24); var_f30 = 55.0f * (var_f30 / var_f24); } @@ -852,7 +883,8 @@ void fn_1_3444(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { var_f24 = arg9 * (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) / 72.0f); if (var_f24 >= arg9) { var_f24 = arg9; - } else if (var_f24 <= 1.0f) { + } + else if (var_f24 <= 1.0f) { var_f31 = var_f30 = var_f24 = 0.0f; } if (var_f31 != 0.0f || var_f30 != 0.0f || arg8 >= 0.0f) { @@ -866,7 +898,8 @@ void fn_1_3444(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { if (object->rot.y - var_f23 < -180.0f) { object->rot.y += 360.0f; } - } else { + } + else { if (object->rot.y - var_f23 > 180.0f) { object->rot.y -= 360.0f; } @@ -881,7 +914,8 @@ void fn_1_3444(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { sp18 = object->trans.z - (50.0 * sind(object->rot.y - 90.0f)); for (var_r29 = 0; var_r29 < 4; var_r29++) { - if (var_r29 == object->work[0]) continue; + if (var_r29 == object->work[0]) + continue; temp_r28 = &lbl_1_bss_26C[var_r29]; temp_f29 = temp_r28->unk0->trans.x; temp_f28 = temp_r28->unk0->trans.z; @@ -925,8 +959,9 @@ void fn_1_3444(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { fn_1_AD14(object, 0, 0, 10, 1); } -void fn_1_3EB0(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { - M418DllUnkStruct3* temp_r30; +void fn_1_3EB0(omObjData *object, Vec arg1, f32 arg8, f32 arg9) +{ + M418DllUnkStruct3 *temp_r30; s32 sp10; f32 var_f31; f32 var_f30; @@ -943,7 +978,8 @@ void fn_1_3EB0(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); if (var_f27 <= 30.0f) { var_f31 = var_f30 = 0.0f; - } else { + } + else { var_f31 = 55.0f * (var_f31 / var_f27); var_f30 = 55.0f * (var_f30 / var_f27); } @@ -953,7 +989,8 @@ void fn_1_3EB0(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { var_f27 = arg9 * (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) / 72.0f); if (var_f27 >= arg9) { var_f27 = arg9; - } else if (var_f27 <= 1.0f) { + } + else if (var_f27 <= 1.0f) { var_f31 = var_f30 = var_f27 = 0.0f; } if (var_f31 != 0.0f || var_f30 != 0.0f || arg8 >= 0.0f) { @@ -967,7 +1004,8 @@ void fn_1_3EB0(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { if (object->rot.y - var_f26 < -180.0f) { object->rot.y += 360.0f; } - } else { + } + else { if (object->rot.y - var_f26 > 180.0f) { object->rot.y -= 360.0f; } @@ -995,29 +1033,28 @@ void fn_1_3EB0(omObjData* object, Vec arg1, f32 arg8, f32 arg9) { } if (temp_r30->unk1C != 0) { fn_1_AD14(object, 0, 3, 10, 0); - } else if (var_f27 >= 6.75f) { + } + else if (var_f27 >= 6.75f) { fn_1_AD14(object, 0, 2, 10, 1); - } else if (var_f27 > 0.0f) { + } + else if (var_f27 > 0.0f) { fn_1_AD14(object, 0, 1, 10, 1); - } else { + } + else { fn_1_AD14(object, 0, 0, 10, 1); } } -s32 lbl_1_data_1E0[4][2] = { - { -1, 127 }, - { -1, 127 }, - { -1, 127 }, - { -1, 127 } -}; +s32 lbl_1_data_1E0[4][2] = { { -1, 127 }, { -1, 127 }, { -1, 127 }, { -1, 127 } }; -void fn_1_46C4(omObjData* object) { +void fn_1_46C4(omObjData *object) +{ s32 sp8; - M418DllUnkStruct3* temp_r31; + M418DllUnkStruct3 *temp_r31; sp8 = 0; temp_r31 = &lbl_1_bss_26C[object->work[0]]; - + switch (temp_r31->unk24) { case 0: temp_r31->unk2C = object->scale.x; @@ -1090,15 +1127,16 @@ void fn_1_46C4(omObjData* object) { } } -void fn_1_4C84(omObjData* object) { +void fn_1_4C84(omObjData *object) +{ Mtx sp14; Vec sp8; f32 var_f31; - M418DllUnkStruct3* temp_r26; - M418DllWorkStruct* var_r27; - M418DllUnkStruct3* temp_r30; - ModelData* temp_r28; - ModelData* temp_r29; + M418DllUnkStruct3 *temp_r26; + M418DllWorkStruct *var_r27; + M418DllUnkStruct3 *temp_r30; + ModelData *temp_r28; + ModelData *temp_r29; s32 temp_r0; u32 temp_r3; @@ -1108,7 +1146,8 @@ void fn_1_4C84(omObjData* object) { temp_r29 = &Hu3DData[object->model[12]]; if ((temp_r30->unk14 == 7) || (temp_r30->unk14 == 5)) { temp_r29->rot.y = -object->rot.y - 360.0f; - } else { + } + else { temp_r29->rot.y = -object->rot.y - 90.0f; } temp_r29->scale.x = 0.35f * temp_r30->unk3C; @@ -1119,20 +1158,21 @@ void fn_1_4C84(omObjData* object) { fn_1_46C4(object); } -void fn_1_4F60(omObjData* object) { - M418DllUnkStruct3* temp_r30; +void fn_1_4F60(omObjData *object) +{ + M418DllUnkStruct3 *temp_r30; temp_r30 = &lbl_1_bss_26C[object->work[0]]; object->model[0] = CharModelCreate(temp_r30->unk14, 2); - object->motion[0] = CharModelMotionCreate(temp_r30->unk14, 0x5F0000); - object->motion[1] = CharModelMotionCreate(temp_r30->unk14, 0x5F0002); - object->motion[2] = CharModelMotionCreate(temp_r30->unk14, 0x5F0003); - object->motion[3] = CharModelMotionCreate(temp_r30->unk14, 0x5F0073); - object->motion[4] = CharModelMotionCreate(temp_r30->unk14, 0x5F0074); - object->motion[5] = CharModelMotionCreate(temp_r30->unk14, 0x5F0017); - object->motion[6] = CharModelMotionCreate(temp_r30->unk14, 0x5F0018); - object->motion[7] = CharModelMotionCreate(temp_r30->unk14, 0x5F001B); - object->motion[8] = CharModelMotionCreate(temp_r30->unk14, 0x5F002A); + object->motion[0] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[1] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); + object->motion[2] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03)); + object->motion[3] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x73)); + object->motion[4] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x74)); + object->motion[5] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17)); + object->motion[6] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18)); + object->motion[7] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1B)); + object->motion[8] = CharModelMotionCreate(temp_r30->unk14, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2A)); object->motion[9] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(temp_r30->unk14 + 0x310000, 0x10000000, HEAP_DATA)); object->motion[10] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(temp_r30->unk14 + 0x310008, 0x10000000, HEAP_DATA)); object->model[1] = Hu3DModelCreateFile(0x310017); @@ -1161,8 +1201,9 @@ void fn_1_4F60(omObjData* object) { object->func = fn_1_4C84; } -void fn_1_5358(void) { - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; +void fn_1_5358(void) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; Vec sp2C = { 0.0f, 1100.0f, 1800.0f }; Vec sp20 = { 0.0f, 600.0f, 600.0f }; @@ -1171,13 +1212,13 @@ void fn_1_5358(void) { var_r31->rot.x++; } -void fn_1_543C(void) { +void fn_1_543C(void) +{ M418DllUnkStruct sp38; - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; - Vec sp2C = { -180.0f, 500.0f, 440.0f }; + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + Vec sp2C = { -180.0f, 500.0f, 440.0f }; Vec sp20 = { -180.0f, 330.0f, -760.0f }; - fn_1_B104(&sp38, sp2C, sp20); fn_1_B41C(&sp38); sp38.center.x = 0.0f; @@ -1187,11 +1228,12 @@ void fn_1_543C(void) { fn_1_DC10(var_r31, &sp38, var_r31->unk48++, 30.0f, 10.0f); } -void fn_1_558C(void) { +void fn_1_558C(void) +{ M418DllUnkStruct sp38; - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; Vec sp2C = { 0.0f, 1100.0f, 1800.0f }; - Vec sp20 = { 0.0f, 600.0f, 600.0f }; + Vec sp20 = { 0.0f, 600.0f, 600.0f }; fn_1_B104(&sp38, sp2C, sp20); fn_1_B41C(&sp38); @@ -1199,8 +1241,9 @@ void fn_1_558C(void) { fn_1_CBF8(var_r31, &sp38, var_r31->unk48++, 30.0f, 10.0f); } -void fn_1_56AC(s32 arg0) { - M418DllUnkStruct* var_r28 = &lbl_1_bss_1F4; +void fn_1_56AC(s32 arg0) +{ + M418DllUnkStruct *var_r28 = &lbl_1_bss_1F4; fn_1_B458(var_r28); switch (arg0) { case 0: @@ -1215,11 +1258,12 @@ void fn_1_56AC(s32 arg0) { } } -void fn_1_5768(s32 arg0) { +void fn_1_5768(s32 arg0) +{ s32 var_r31; - M418DllUnkStruct4* var_r30; - M418DllUnkStruct* var_r26; - + M418DllUnkStruct4 *var_r30; + M418DllUnkStruct *var_r26; + for (var_r31 = 0; var_r31 < 3; var_r31++) { var_r30 = &lbl_1_bss_170[var_r31]; var_r30->unkC = 0; @@ -1228,9 +1272,10 @@ void fn_1_5768(s32 arg0) { fn_1_56AC(0); } -s32 fn_1_57E4(s32 arg0) { - M418DllUnkStruct4* temp_r31; - M418DllUnkStruct* var_r25; +s32 fn_1_57E4(s32 arg0) +{ + M418DllUnkStruct4 *temp_r31; + M418DllUnkStruct *var_r25; s32 var_r29; s32 var_r30; @@ -1240,14 +1285,16 @@ s32 fn_1_57E4(s32 arg0) { if (temp_r31->unkC == 0) { if ((rand8() % 5) == 0) { var_r29 = 1; - } else { + } + else { var_r29 = 0; } if (var_r29 || (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x41)) { HuAudFXPlay(0x5D3); temp_r31->unkC = 1; } - } else { + } + else { temp_r31->unk4 += 5.0f; if (temp_r31->unk4 >= 90.0f) { temp_r31->unk4 = 90.0f; @@ -1260,28 +1307,26 @@ s32 fn_1_57E4(s32 arg0) { } if (fn_1_B0C8(&lbl_1_bss_50, 1) != 0) { return fn_1_AF38(&lbl_1_bss_50); - } else { + } + else { return 0; } } -s32 lbl_1_data_200[16] = { - 0x310000, 0x310001, 0x310002, 0x310003, - 0x310004, 0x310005, 0x310006, 0x310007, - 0x310008, 0x310009, 0x31000A, 0x31000B, - 0x31000C, 0x31000D, 0x31000E, 0x31000F -}; +s32 lbl_1_data_200[16] = { 0x310000, 0x310001, 0x310002, 0x310003, 0x310004, 0x310005, 0x310006, 0x310007, 0x310008, 0x310009, 0x31000A, 0x31000B, + 0x31000C, 0x31000D, 0x31000E, 0x31000F }; Vec lbl_1_data_240[3] = { { -540.0f, 225.0f, -900.0f }, { -180.0f, 225.0f, -900.0f }, - { 180.0f, 225.0f, -900.0f }, + { 180.0f, 225.0f, -900.0f }, }; -void fn_1_5970(s32 arg0) { - M418DllUnkStruct3* temp_r30; - M418DllUnkStruct6* temp_r29; - M418DllUnkStruct4* temp_r28; +void fn_1_5970(s32 arg0) +{ + M418DllUnkStruct3 *temp_r30; + M418DllUnkStruct6 *temp_r29; + M418DllUnkStruct4 *temp_r28; s32 var_r31; temp_r29 = &lbl_1_bss_3EC; @@ -1291,7 +1336,7 @@ void fn_1_5970(s32 arg0) { omSetTra(temp_r30->unk0, lbl_1_data_240[var_r31].x, lbl_1_data_240[var_r31].y, lbl_1_data_240[var_r31].z - 50.0f); temp_r30->unk4C = 0; } - + for (var_r31 = 0; var_r31 < 3; var_r31++) { temp_r28 = &lbl_1_bss_170[var_r31]; temp_r28->unkC = 0; @@ -1300,28 +1345,30 @@ void fn_1_5970(s32 arg0) { Vec lbl_1_data_264[4] = { { -355.0f, 0.0f, -680.0f }, - { 5.0f, 0.0f, -680.0f }, - { 365.0f, 0.0f, -680.0f }, + { 5.0f, 0.0f, -680.0f }, + { 365.0f, 0.0f, -680.0f }, }; -s32 fn_1_5A6C(s32 arg0) { +s32 fn_1_5A6C(s32 arg0) +{ s32 var_r31; - M418DllUnkStruct3* temp_r30; - M418DllUnkStruct4* temp_r29; - M418DllUnkStruct3* temp_r28; - M418DllUnkStruct6* temp_r27; + M418DllUnkStruct3 *temp_r30; + M418DllUnkStruct4 *temp_r29; + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct6 *temp_r27; s32 var_r26; - omObjData* temp_r25; + omObjData *temp_r25; s32 var_r24; - M418DllUnkStruct* temp_r20; + M418DllUnkStruct *temp_r20; - temp_r27 = &lbl_1_bss_3EC; + temp_r27 = &lbl_1_bss_3EC; for (var_r31 = 0; var_r31 < 3; var_r31++) { temp_r30 = &lbl_1_bss_26C[temp_r27->unk4[var_r31]]; if (temp_r30->unk4C == 0) { if ((rand8() % 5) == 0) { var_r26 = 1; - } else { + } + else { var_r26 = 0; } if (var_r26 || (fn_1_B0C8(&lbl_1_bss_50, 0) >= 5)) { @@ -1333,25 +1380,28 @@ s32 fn_1_5A6C(s32 arg0) { } HuAudCharVoicePlay(temp_r30->unk14, 0x122); } - } else { + } + else { fn_1_3EB0(temp_r30->unk0, lbl_1_data_264[var_r31], 0.0f, 9.0f); } } if (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x3C) { - + for (var_r31 = 0; var_r31 < 3; var_r31++) { temp_r29 = &lbl_1_bss_170[var_r31]; if (temp_r29->unkC == 0) { if ((rand8() % 5) == 0) { var_r24 = 1; - } else { + } + else { var_r24 = 0; } if ((var_r24 != 0) || (fn_1_B0C8(&lbl_1_bss_50, 0) >= 0x41)) { HuAudFXPlay(0x5D3); temp_r29->unkC = 1; } - } else { + } + else { temp_r29->unk4 -= 2.5f; if (temp_r29->unk4 <= 0.0f) { temp_r29->unk4 = 0.0f; @@ -1368,17 +1418,15 @@ s32 fn_1_5A6C(s32 arg0) { return 0; } -M418DllUnkStruct8 lbl_1_data_294[3] = { - { fn_1_5768, fn_1_57E4, 0x5A }, - { fn_1_5970, fn_1_5A6C, 0xB4 }, - { NULL, NULL, -1 } -}; +M418DllUnkStruct8 lbl_1_data_294[3] = { { fn_1_5768, fn_1_57E4, 0x5A }, { fn_1_5970, fn_1_5A6C, 0xB4 }, { NULL, NULL, -1 } }; -void fn_1_5D28(void) { +void fn_1_5D28(void) +{ fn_1_AEDC(&lbl_1_bss_50, &lbl_1_data_294[0]); } -s32 fn_1_5D58(void) { +s32 fn_1_5D58(void) +{ s32 var_r31; var_r31 = 0; @@ -1392,8 +1440,9 @@ s32 fn_1_5D58(void) { return var_r31; } -s32 fn_1_5DF0(omObjData* object, s32 arg1) { - M418DllUnkStruct3* temp_r31; +s32 fn_1_5DF0(omObjData *object, s32 arg1) +{ + M418DllUnkStruct3 *temp_r31; s32 var_r30; temp_r31 = &lbl_1_bss_26C[object->work[0]]; @@ -1421,7 +1470,8 @@ s32 fn_1_5DF0(omObjData* object, s32 arg1) { } break; } - } else { + } + else { if ((HuPadBtnDown[temp_r31->unk18] & PAD_BUTTON_A) != 0) { var_r30 = 1; } @@ -1438,11 +1488,12 @@ s32 fn_1_5DF0(omObjData* object, s32 arg1) { return var_r30; } -s32 fn_1_6038(omObjData* object, s32 arg1) { - M418DllUnkStruct3* temp_r30; - M418DllUnkStruct4* temp_r28; - M418DllUnkStruct4* temp_r27; - M418DllUnkStruct4* temp_r26; +s32 fn_1_6038(omObjData *object, s32 arg1) +{ + M418DllUnkStruct3 *temp_r30; + M418DllUnkStruct4 *temp_r28; + M418DllUnkStruct4 *temp_r27; + M418DllUnkStruct4 *temp_r26; s32 var_r29; s32 var_r31; @@ -1482,11 +1533,13 @@ s32 fn_1_6038(omObjData* object, s32 arg1) { break; } } - } else { + } + else { temp_r28->unk18s = 1; } } - } else { + } + else { if ((HuPadBtnDown[temp_r30->unk18] & PAD_BUTTON_A) != 0) { var_r31 = 1; } @@ -1503,7 +1556,8 @@ s32 fn_1_6038(omObjData* object, s32 arg1) { temp_r26 = &lbl_1_bss_170[var_r31]; if (temp_r26->unk18s == 1) { var_r31 = -1; - } else { + } + else { temp_r26->unk18s = 1; } } @@ -1511,8 +1565,9 @@ s32 fn_1_6038(omObjData* object, s32 arg1) { return var_r31; } -void fn_1_6314(void) { - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; +void fn_1_6314(void) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; Vec sp2C = { 0.0f, 1100.0f, 1800.0f }; Vec sp20 = { 0.0f, 600.0f, 600.0f }; @@ -1521,8 +1576,9 @@ void fn_1_6314(void) { var_r31->rot.x++; } -void fn_1_63F8(void) { - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; +void fn_1_63F8(void) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; M418DllUnkStruct sp38; Vec sp2C = { 0.0f, 1800.0f, 480.0f }; Vec sp20 = { 0.0f, 600.0f, 250.0f }; @@ -1533,33 +1589,27 @@ void fn_1_63F8(void) { fn_1_BEAC(var_r31, &sp38, var_r31->unk48++, 120.0f, 10.0f); } -void fn_1_6510(void) { - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; +void fn_1_6510(void) +{ + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; M418DllUnkStruct sp38; Vec sp2C = { 0.0f, 980.0f, 1330.0f }; Vec sp20 = { 0.0f, 480.0f, 130.0f }; - + fn_1_B104(&sp38, sp2C, sp20); fn_1_B41C(&sp38); fn_1_BEAC(var_r31, &sp38, var_r31->unk48++, 30.0f, 10.0f); } -Vec lbl_1_data_2B8[8] = { - { -540.0f, 225.0f, -900.0f }, - { -180.0f, 225.0f, -900.0f }, - { 180.0f, 225.0f, -900.0f }, - { 540.0f, 225.0f, -900.0f }, - { -360.0f, 0.0f, -680.0f }, - { 0.0f, 0.0f, -680.0f }, - { 360.0f, 0.0f, -680.0f }, - { 0.0f, 0.0f, 0.0f } -}; +Vec lbl_1_data_2B8[8] = { { -540.0f, 225.0f, -900.0f }, { -180.0f, 225.0f, -900.0f }, { 180.0f, 225.0f, -900.0f }, { 540.0f, 225.0f, -900.0f }, + { -360.0f, 0.0f, -680.0f }, { 0.0f, 0.0f, -680.0f }, { 360.0f, 0.0f, -680.0f }, { 0.0f, 0.0f, 0.0f } }; -void fn_1_6618(void) { +void fn_1_6618(void) +{ M418DllUnkStruct sp8; - M418DllUnkStruct3* temp_r31; - M418DllUnkStruct* var_r30; - M418DllUnkStruct6* var_r29; + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct *var_r30; + M418DllUnkStruct6 *var_r29; var_r29 = &lbl_1_bss_3EC; temp_r31 = &lbl_1_bss_26C[var_r29->unk0]; @@ -1574,9 +1624,10 @@ void fn_1_6618(void) { fn_1_CBF8(var_r30, &sp8, var_r30->unk48++, 30.0f, 5.0f); } -void fn_1_6740(s32 arg0) { - M418DllUnkStruct* var_r27 = &lbl_1_bss_1F4; - +void fn_1_6740(s32 arg0) +{ + M418DllUnkStruct *var_r27 = &lbl_1_bss_1F4; + fn_1_B458(var_r27); switch (arg0) { case 0: @@ -1594,20 +1645,21 @@ void fn_1_6740(s32 arg0) { } } -void fn_1_6808(s32 arg0) { +void fn_1_6808(s32 arg0) +{ s32 var_r31; - M418DllUnkStruct6* var_r30 = &lbl_1_bss_3EC; - M418DllUnkStruct3* var_r29; - M418DllUnkStruct4* var_r28; - M418DllUnkStruct* var_r23; + M418DllUnkStruct6 *var_r30 = &lbl_1_bss_3EC; + M418DllUnkStruct3 *var_r29; + M418DllUnkStruct4 *var_r28; + M418DllUnkStruct *var_r23; HuAudAUXVolSet(0x40, 0x40); - + for (var_r31 = 0; var_r31 < 3; var_r31++) { var_r29 = &lbl_1_bss_26C[var_r30->unk4[var_r31]]; var_r29->unk4C = -1; } - + for (var_r31 = 0; var_r31 < 3; var_r31++) { var_r28 = &lbl_1_bss_11C[var_r31]; fn_1_ABC4(var_r28->unk0, 0, 3, 30, 1); @@ -1616,29 +1668,25 @@ void fn_1_6808(s32 arg0) { lbl_1_bss_8 = 1; lbl_1_bss_4 = 0x12C; } - + fn_1_6740(0); } -Vec lbl_1_data_318[4] = { - { -540.0f, 115.0f, -700.0f }, - { -180.0f, 115.0f, -700.0f }, - { 180.0f, 115.0f, -700.0f }, - { 540.0f, 115.0f, -700.0f } -}; +Vec lbl_1_data_318[4] = { { -540.0f, 115.0f, -700.0f }, { -180.0f, 115.0f, -700.0f }, { 180.0f, 115.0f, -700.0f }, { 540.0f, 115.0f, -700.0f } }; -s32 fn_1_6914(s32 arg0) { +s32 fn_1_6914(s32 arg0) +{ Vec sp14; - M418DllUnkStruct3* temp_r31; - M418DllUnkStruct3* temp_r30; + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct3 *temp_r30; s32 var_r29; s32 temp_r27; - M418DllUnkStruct6* var_r26; - M418DllUnkStruct4* var_r25; - M418DllUnkStruct* var_r18; + M418DllUnkStruct6 *var_r26; + M418DllUnkStruct4 *var_r25; + M418DllUnkStruct *var_r18; var_r26 = &lbl_1_bss_3EC; - + for (var_r29 = 0; var_r29 < 3; var_r29++) { temp_r31 = &lbl_1_bss_26C[var_r26->unk4[var_r29]]; temp_r27 = fn_1_B0C8(&lbl_1_bss_38, 0); @@ -1660,7 +1708,7 @@ s32 fn_1_6914(s32 arg0) { } } } - + for (var_r29 = 0; var_r29 < 3; var_r29++) { var_r25 = &lbl_1_bss_11C[var_r29]; var_r25->unk0->rot.y += 1.2f; @@ -1674,10 +1722,11 @@ s32 fn_1_6914(s32 arg0) { return 0; } -void fn_1_6DCC(s32 arg0) { +void fn_1_6DCC(s32 arg0) +{ s32 var_r31; - M418DllUnkStruct4* temp_r30; - + M418DllUnkStruct4 *temp_r30; + for (var_r31 = 0; var_r31 < 3; var_r31++) { temp_r30 = &lbl_1_bss_11C[var_r31]; temp_r30->unk0->rot.y = 0.0f; @@ -1686,20 +1735,22 @@ void fn_1_6DCC(s32 arg0) { fn_1_6740(2); } -s32 fn_1_6E6C(s32 arg0) { +s32 fn_1_6E6C(s32 arg0) +{ if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) { return fn_1_AF38(&lbl_1_bss_38); } return 0; } -void fn_1_6EB4(s32 arg0) { - M418DllUnkStruct6* var_r31 = &lbl_1_bss_3EC; +void fn_1_6EB4(s32 arg0) +{ + M418DllUnkStruct6 *var_r31 = &lbl_1_bss_3EC; s32 var_r30; - M418DllUnkStruct3* temp_r29; + M418DllUnkStruct3 *temp_r29; var_r31->unk34 = 0; - + for (var_r30 = 0; var_r30 < 3; var_r30++) { temp_r29 = &lbl_1_bss_26C[var_r31->unk4[var_r30]]; if (temp_r29->unk4C == -1) { @@ -1709,12 +1760,13 @@ void fn_1_6EB4(s32 arg0) { } } -s32 fn_1_6F38(s32 arg0) { - M418DllUnkStruct3* temp_r31; - M418DllUnkStruct2* temp_r29; - M418DllUnkStruct6* temp_r28; - M418DllUnkStruct2* temp_r27; - +s32 fn_1_6F38(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct2 *temp_r29; + M418DllUnkStruct6 *temp_r28; + M418DllUnkStruct2 *temp_r27; + s32 var_r26; s32 var_r30; f32 var_f31; @@ -1725,14 +1777,15 @@ s32 fn_1_6F38(s32 arg0) { if (temp_r28->unk34 == 0) { return fn_1_B034(&lbl_1_bss_38, 9); } - + for (var_r30 = 0; var_r30 < 3; var_r30++) { temp_r31 = &lbl_1_bss_26C[temp_r28->unk4[var_r30]]; if (temp_r31->unk4C == -1) { if (temp_r29->unk4[var_r30] == 0) { if ((rand8() % 10) == 0) { var_r26 = 1; - } else { + } + else { var_r26 = 0; } if ((var_r26 != 0) || (fn_1_B0C8(&lbl_1_bss_38, 0) >= 10)) { @@ -1744,17 +1797,13 @@ s32 fn_1_6F38(s32 arg0) { temp_r31->unk50 = fn_1_B0C8(&lbl_1_bss_38, 0); omVibrate(temp_r31->unk4, 0xC, 6, 6); } - } else if (fn_1_B0C8(&lbl_1_bss_38, 0) >= (temp_r31->unk50 + 0x1E)) { + } + else if (fn_1_B0C8(&lbl_1_bss_38, 0) >= (temp_r31->unk50 + 0x1E)) { temp_r31->unk0->trans.y -= 15.0f; } if (fn_1_B0C8(&lbl_1_bss_38, 0) >= (temp_r31->unk50 + 0x3C)) { var_f31 = fn_1_AA30(-200.0f, -110.0f, fn_1_B0C8(&lbl_1_bss_38, 0) - (temp_r31->unk50 + 0x3C), 90.0f); - Hu3DModelPosSet( - temp_r29->unk0->model[var_r30 + 8], - -350.0f + (360.0f * var_r30), - var_f31, - -660.0f - ); + Hu3DModelPosSet(temp_r29->unk0->model[var_r30 + 8], -350.0f + (360.0f * var_r30), var_f31, -660.0f); Hu3DModelRotSet(temp_r29->unk0->model[var_r30 + 8], 0.0f, 0.0f, 20.0f); } } @@ -1766,17 +1815,19 @@ s32 fn_1_6F38(s32 arg0) { return 1; } return fn_1_B034(&lbl_1_bss_38, 9); - } else { + } + else { return 0; } } -void fn_1_7294(s32 arg0) {} +void fn_1_7294(s32 arg0) { } -s32 fn_1_7298(s32 arg0) { - M418DllUnkStruct3* temp_r31; - M418DllUnkStruct4* temp_r30; - M418DllUnkStruct6* temp_r29; +s32 fn_1_7298(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct4 *temp_r30; + M418DllUnkStruct6 *temp_r29; temp_r29 = &lbl_1_bss_3EC; temp_r31 = &lbl_1_bss_26C[temp_r29->unk0]; @@ -1794,33 +1845,38 @@ s32 fn_1_7298(s32 arg0) { temp_r30->unk0->rot.y = -50.0f; } } - } else if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0x3C) { + } + else if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0x3C) { HuAudFXPlay(0x40); fn_1_ABC4(temp_r30->unk0, 0, 2, 0xA, 0); fn_1_AD14(temp_r31->unk0, 0, 0, 0xA, 1); Hu3DMotionOverlaySet(temp_r31->unk0->model[0], temp_r31->unk0->motion[9]); Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], 1.0f); lbl_1_bss_240[8] = HuAudFXPlay(0x5D9); - } else if (fn_1_B0C8(&lbl_1_bss_38, 0) <= 0xAA) { + } + else if (fn_1_B0C8(&lbl_1_bss_38, 0) <= 0xAA) { if (fn_1_B0C8(&lbl_1_bss_38, 0) >= 0x5A) { temp_r31->unk3C += 0.025f; if (temp_r31->unk3C >= 1.0f) { temp_r31->unk3C = 1.0f; } } - } else { + } + else { Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], -1.0f); } if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) { return fn_1_AF38(&lbl_1_bss_38); - } else { + } + else { return 0; } } -void fn_1_7570(s32 arg0) { - M418DllUnkStruct6* var_r31 = &lbl_1_bss_3EC; - M418DllUnkStruct3* var_r30 = &lbl_1_bss_26C[var_r31->unk0]; +void fn_1_7570(s32 arg0) +{ + M418DllUnkStruct6 *var_r31 = &lbl_1_bss_3EC; + M418DllUnkStruct3 *var_r30 = &lbl_1_bss_26C[var_r31->unk0]; var_r30->unk4C = -1; if (lbl_1_bss_8 == 0) { lbl_1_bss_8 = 1; @@ -1828,11 +1884,12 @@ void fn_1_7570(s32 arg0) { } } -s32 fn_1_75E4(s32 arg0) { +s32 fn_1_75E4(s32 arg0) +{ Mtx sp38; Mtx sp8; - M418DllUnkStruct3* temp_r31; - M418DllUnkStruct6* var_r30; + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *var_r30; s32 var_r29; var_r30 = &lbl_1_bss_3EC; @@ -1860,14 +1917,16 @@ s32 fn_1_75E4(s32 arg0) { Hu3DMotionSpeedSet(temp_r31->unk0->model[13], 2.0f); fn_1_ABC4(temp_r31->unk0, 0xD, 0xD, 0, 0); return fn_1_AF38(&lbl_1_bss_38); - } else { + } + else { return 0; } } -void fn_1_77F8(s32 arg0) { - M418DllUnkStruct6* var_r31; - M418DllUnkStruct3* var_r30; +void fn_1_77F8(s32 arg0) +{ + M418DllUnkStruct6 *var_r31; + M418DllUnkStruct3 *var_r30; var_r31 = &lbl_1_bss_3EC; var_r30 = &lbl_1_bss_26C[var_r31->unk0]; @@ -1876,9 +1935,10 @@ void fn_1_77F8(s32 arg0) { } } -s32 fn_1_7860(s32 arg0) { - M418DllUnkStruct3* temp_r31; - M418DllUnkStruct6* temp_r30; +s32 fn_1_7860(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *temp_r30; temp_r30 = &lbl_1_bss_3EC; temp_r31 = &lbl_1_bss_26C[temp_r30->unk0]; @@ -1890,11 +1950,9 @@ s32 fn_1_7860(s32 arg0) { if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) { return fn_1_AF38(&lbl_1_bss_38); } - } else { - temp_r31->unk0->rot.y = fn_1_A940( - 180.0f, 200.0f - (10.0f * temp_r31->unk4C), - fn_1_B0C8(&lbl_1_bss_38, 0), 10.0f - ); + } + else { + temp_r31->unk0->rot.y = fn_1_A940(180.0f, 200.0f - (10.0f * temp_r31->unk4C), fn_1_B0C8(&lbl_1_bss_38, 0), 10.0f); if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0xA) { Hu3DMotionOverlaySet(temp_r31->unk0->model[0], temp_r31->unk0->motion[10]); Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], 1.0f); @@ -1909,12 +1967,13 @@ s32 fn_1_7860(s32 arg0) { return 0; } -void fn_1_7A68(s32 arg0) { - M418DllUnkStruct6* temp_r31; - M418DllUnkStruct3* temp_r30; - M418DllUnkStruct4* temp_r29; +void fn_1_7A68(s32 arg0) +{ + M418DllUnkStruct6 *temp_r31; + M418DllUnkStruct3 *temp_r30; + M418DllUnkStruct4 *temp_r29; s32 var_r28; - M418DllUnkStruct3* temp_r27; + M418DllUnkStruct3 *temp_r27; s32 var_r26; var_r26 = 0; @@ -1922,7 +1981,7 @@ void fn_1_7A68(s32 arg0) { temp_r30 = &lbl_1_bss_26C[temp_r31->unk0]; if (temp_r30->unk4C != -1) { temp_r31->unk10[0] = temp_r31->unk10[1] = temp_r31->unk10[2] = -1; - + for (var_r28 = 0; var_r28 < 3; var_r28++) { temp_r27 = &lbl_1_bss_26C[temp_r31->unk4[var_r28]]; if (temp_r30->unk4C == temp_r27->unk4C) { @@ -1938,15 +1997,16 @@ void fn_1_7A68(s32 arg0) { } } -s32 fn_1_7B68(s32 arg0) { +s32 fn_1_7B68(s32 arg0) +{ Mtx sp8; - M418DllUnkStruct3* temp_r31; - M418DllUnkStruct6* temp_r30; - M418DllUnkStruct3* temp_r29; - M418DllUnkStruct4* temp_r28; + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *temp_r30; + M418DllUnkStruct3 *temp_r29; + M418DllUnkStruct4 *temp_r28; s32 var_r27; s32 var_r26; - M418DllUnkStruct* temp_r21; + M418DllUnkStruct *temp_r21; var_r26 = -1; temp_r30 = &lbl_1_bss_3EC; @@ -1959,11 +2019,11 @@ s32 fn_1_7B68(s32 arg0) { fn_1_6740(3); } if (temp_r28->unkC == 3) { - + for (var_r27 = 0; var_r27 < 3; var_r27++) { if (temp_r30->unk10[var_r27] != -1) { temp_r31 = &lbl_1_bss_26C[temp_r30->unk10[var_r27]]; - Hu3DModelObjMtxGet(*temp_r28->unk0->model, "taihou-null4", (f32 (*)[4]) &sp8[0]); + Hu3DModelObjMtxGet(*temp_r28->unk0->model, "taihou-null4", (f32(*)[4]) & sp8[0]); omSetTra(temp_r31->unk0, sp8[0][3], sp8[1][3] - 25.0f, 50.0f + sp8[2][3]); omSetRot(temp_r31->unk0, 0.0f, 180.0f, 0.0f); fn_1_AD14(temp_r31->unk0, 0, 8, 0, 2); @@ -1974,7 +2034,7 @@ s32 fn_1_7B68(s32 arg0) { } temp_r31->unk30 = var_r26++; temp_r31->unk28 = 0.0f; - omVibrate((s16) temp_r29->unk4, 0xC, 4, 2); + omVibrate((s16)temp_r29->unk4, 0xC, 4, 2); } } return fn_1_AF38(&lbl_1_bss_38); @@ -1982,31 +2042,33 @@ s32 fn_1_7B68(s32 arg0) { return 0; } -void fn_1_7D80(s32 arg0) { +void fn_1_7D80(s32 arg0) +{ s32 var_r31; - M418DllUnkStruct3* temp_r30; - M418DllUnkStruct6* temp_r29; - M418DllUnkStruct4* temp_r28; + M418DllUnkStruct3 *temp_r30; + M418DllUnkStruct6 *temp_r29; + M418DllUnkStruct4 *temp_r28; temp_r29 = &lbl_1_bss_3EC; temp_r30 = &lbl_1_bss_26C[temp_r29->unk0]; temp_r30->unk0->rot.y = 180.0f; temp_r30->unk3C = 0.0f; - + for (var_r31 = 0; var_r31 < 3; var_r31++) { temp_r28 = &lbl_1_bss_11C[var_r31]; temp_r28->unk0->rot.y = 0.0f; } } -s32 fn_1_7E24(s32 arg0) { - M418DllUnkStruct6* var_r31; +s32 fn_1_7E24(s32 arg0) +{ + M418DllUnkStruct6 *var_r31; s32 var_r30; s32 var_r29; - M418DllUnkStruct4* var_r28; - M418DllUnkStruct4* var_r27; - M418DllUnkStruct4* var_r26; - M418DllUnkStruct3* var_r25; + M418DllUnkStruct4 *var_r28; + M418DllUnkStruct4 *var_r27; + M418DllUnkStruct4 *var_r26; + M418DllUnkStruct3 *var_r25; var_r29 = 0; var_r31 = &lbl_1_bss_3EC; @@ -2020,7 +2082,7 @@ s32 fn_1_7E24(s32 arg0) { return 1; } var_r31->unk38++; - + for (var_r30 = 0; var_r30 < 3; var_r30++) { var_r25 = &lbl_1_bss_26C[var_r31->unk4[var_r30]]; if (var_r25->unk4C != -1) { @@ -2029,36 +2091,40 @@ s32 fn_1_7E24(s32 arg0) { } if (var_r29 == 0) { return 1; - } else { + } + else { return fn_1_AF38(&lbl_1_bss_38); } } -void fn_1_7F1C(s32 arg0) { - M418DllUnkStruct6* var_r31; - M418DllUnkStruct4* var_r30; - M418DllUnkStruct4* var_r29; - M418DllUnkStruct4* var_r28; +void fn_1_7F1C(s32 arg0) +{ + M418DllUnkStruct6 *var_r31; + M418DllUnkStruct4 *var_r30; + M418DllUnkStruct4 *var_r29; + M418DllUnkStruct4 *var_r28; var_r31 = &lbl_1_bss_3EC; var_r30 = &lbl_1_bss_11C[0]; var_r29 = &lbl_1_bss_11C[1]; var_r28 = &lbl_1_bss_11C[2]; if (var_r31->unk38 == 1) { - var_r30->unk0->work[1] = 3; - var_r29->unk0->work[1] = 2; - var_r28->unk0->work[1] = 1; - } else if (var_r31->unk38 == 2) { - var_r30->unk0->work[1] = 0; - var_r29->unk0->work[1] = 3; - var_r28->unk0->work[1] = 2; + var_r30->unk0->work[1] = 3; + var_r29->unk0->work[1] = 2; + var_r28->unk0->work[1] = 1; + } + else if (var_r31->unk38 == 2) { + var_r30->unk0->work[1] = 0; + var_r29->unk0->work[1] = 3; + var_r28->unk0->work[1] = 2; } } -s32 fn_1_7FD4(s32 arg0) { - M418DllUnkStruct3* temp_r31; - M418DllUnkStruct6* temp_r30; - M418DllUnkStruct4* temp_r29; +s32 fn_1_7FD4(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *temp_r30; + M418DllUnkStruct4 *temp_r29; temp_r30 = &lbl_1_bss_3EC; temp_r31 = &lbl_1_bss_26C[temp_r30->unk0]; @@ -2069,7 +2135,8 @@ s32 fn_1_7FD4(s32 arg0) { if (fn_1_B0C8(&lbl_1_bss_38, 0) == 120) { return fn_1_B034(&lbl_1_bss_38, 9); } - } else { + } + else { temp_r29 = &lbl_1_bss_170[temp_r31->unk4C]; if (temp_r29->unk10 != 0) { if (fn_1_B0C8(&lbl_1_bss_38, 0) == 210) { @@ -2078,7 +2145,8 @@ s32 fn_1_7FD4(s32 arg0) { if (fn_1_B0C8(&lbl_1_bss_38, 0) == 300) { return fn_1_B034(&lbl_1_bss_38, 9); } - } else { + } + else { if (fn_1_B0C8(&lbl_1_bss_38, 0) == 30) { fn_1_6740(2); } @@ -2091,12 +2159,13 @@ s32 fn_1_7FD4(s32 arg0) { return 0; } -void fn_1_81A0(s32 arg0) {} +void fn_1_81A0(s32 arg0) { } -s32 fn_1_81A4(s32 arg0) { - M418DllUnkStruct3* temp_r31; - M418DllUnkStruct4* temp_r30; - M418DllUnkStruct6* temp_r29; +s32 fn_1_81A4(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct4 *temp_r30; + M418DllUnkStruct6 *temp_r29; temp_r29 = &lbl_1_bss_3EC; temp_r31 = &lbl_1_bss_26C[temp_r29->unk0]; @@ -2114,49 +2183,45 @@ s32 fn_1_81A4(s32 arg0) { temp_r30->unk0->rot.y = -50.0f; } } - } else if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0x3C) { + } + else if (fn_1_B0C8(&lbl_1_bss_38, 0) == 0x3C) { HuAudFXPlay(0x40); fn_1_ABC4(temp_r30->unk0, 0, 2, 0xA, 0); fn_1_AD14(temp_r31->unk0, 0, 0, 0xA, 1); Hu3DMotionOverlaySet(temp_r31->unk0->model[0], temp_r31->unk0->motion[9]); Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], 1.0f); lbl_1_bss_240[8] = HuAudFXPlay(0x5D9); - } else if (fn_1_B0C8(&lbl_1_bss_38, 0) <= 0xAA) { + } + else if (fn_1_B0C8(&lbl_1_bss_38, 0) <= 0xAA) { if (fn_1_B0C8(&lbl_1_bss_38, 0) >= 0x5A) { temp_r31->unk3C += 0.025f; if (temp_r31->unk3C >= 1.0f) { temp_r31->unk3C = 1.0f; } } - } else { + } + else { Hu3DMotionOverlaySpeedSet(temp_r31->unk0->model[0], -1.0f); } if (fn_1_B0C8(&lbl_1_bss_38, 1) != 0) { return fn_1_B034(&lbl_1_bss_38, 4); - } else { + } + else { return 0; } } -M418DllUnkStruct8 lbl_1_data_348[11] = { - { fn_1_6808, fn_1_6914, 300 }, - { fn_1_6DCC, fn_1_6E6C, 60 }, - { fn_1_6EB4, fn_1_6F38, 180 }, - { fn_1_7294, fn_1_7298, 300 }, - { fn_1_7570, fn_1_75E4, 300 }, - { fn_1_77F8, fn_1_7860, 60 }, - { fn_1_7A68, fn_1_7B68, 180 }, - { fn_1_7D80, fn_1_7E24, -1 }, - { fn_1_7F1C, fn_1_7FD4, 300 }, - { fn_1_81A0, fn_1_81A4, 240 }, - { NULL, NULL, -1 } -}; +M418DllUnkStruct8 lbl_1_data_348[11] = { { fn_1_6808, fn_1_6914, 300 }, { fn_1_6DCC, fn_1_6E6C, 60 }, { fn_1_6EB4, fn_1_6F38, 180 }, + { fn_1_7294, fn_1_7298, 300 }, { fn_1_7570, fn_1_75E4, 300 }, { fn_1_77F8, fn_1_7860, 60 }, { fn_1_7A68, fn_1_7B68, 180 }, + { fn_1_7D80, fn_1_7E24, -1 }, { fn_1_7F1C, fn_1_7FD4, 300 }, { fn_1_81A0, fn_1_81A4, 240 }, { NULL, NULL, -1 } }; -void fn_1_8480(void) { +void fn_1_8480(void) +{ fn_1_AEDC(&lbl_1_bss_38, &lbl_1_data_348[0]); } -s32 fn_1_84B0(void) { +s32 fn_1_84B0(void) +{ s32 var_r31; var_r31 = 0; @@ -2170,9 +2235,10 @@ s32 fn_1_84B0(void) { return var_r31; } -void fn_1_8548(void) { +void fn_1_8548(void) +{ M418DllUnkStruct sp38; - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; Vec sp2C = { 0.0f, 1100.0f, 1800.0f }; Vec sp20 = { 0.0f, 600.0f, 600.0f }; @@ -2182,12 +2248,13 @@ void fn_1_8548(void) { fn_1_CBF8(var_r31, &sp38, var_r31->unk48++, 60.0f, 10.0f); } -void fn_1_8668(void) { +void fn_1_8668(void) +{ M418DllUnkStruct sp8; f32 temp_f1; - M418DllUnkStruct* var_r31 = &lbl_1_bss_1F4; - + M418DllUnkStruct *var_r31 = &lbl_1_bss_1F4; + sp8.center.x = sp8.center.y = 0.0f; sp8.center.z = -500.0f; sp8.rot.x = -20.0f; @@ -2196,9 +2263,10 @@ void fn_1_8668(void) { fn_1_CBF8(var_r31, &sp8, var_r31->unk48++, 10.0f, 5.0f); } -void fn_1_8728(void) { +void fn_1_8728(void) +{ M418DllUnkStruct sp8; - M418DllUnkStruct* var_r31; + M418DllUnkStruct *var_r31; var_r31 = &lbl_1_bss_1F4; @@ -2212,43 +2280,46 @@ void fn_1_8728(void) { fn_1_CBF8(var_r31, &sp8, var_r31->unk48++, 10.0f, 5.0f); } -void fn_1_87D0(s32 arg0) { - M418DllUnkStruct* var_r31; +void fn_1_87D0(s32 arg0) +{ + M418DllUnkStruct *var_r31; var_r31 = &lbl_1_bss_1F4; - + fn_1_B458(var_r31); switch (arg0) { - case 0: - fn_1_248(fn_1_8548); - break; - case 1: - fn_1_248(fn_1_8668); - break; - case 2: - fn_1_248(fn_1_8728); - break; + case 0: + fn_1_248(fn_1_8548); + break; + case 1: + fn_1_248(fn_1_8668); + break; + case 2: + fn_1_248(fn_1_8728); + break; } } -void fn_1_888C(s32 arg0) { +void fn_1_888C(s32 arg0) +{ HuAudAUXVolSet(-1, -1); } -s32 fn_1_88B4(s32 arg0) { +s32 fn_1_88B4(s32 arg0) +{ s32 var_r31; - M418DllUnkStruct6* var_r30; + M418DllUnkStruct6 *var_r30; s32 var_r29; - M418DllUnkStruct3* var_r28; - M418DllUnkStruct3* var_r27; - M418DllUnkStruct* var_r23; + M418DllUnkStruct3 *var_r28; + M418DllUnkStruct3 *var_r27; + M418DllUnkStruct *var_r23; var_r29 = 5; var_r30 = &lbl_1_bss_3EC; - + fn_1_87D0(0); lbl_1_bss_10 = 0; - + for (var_r31 = 0; var_r31 < 3; var_r31++) { var_r28 = &lbl_1_bss_26C[var_r30->unk4[var_r31]]; if (var_r28->unk4C != -1) { @@ -2263,12 +2334,13 @@ s32 fn_1_88B4(s32 arg0) { fn_1_B034(&lbl_1_bss_20, var_r29); } -void fn_1_89B0(s32 arg0) { - M418DllUnkStruct6* var_r31; +void fn_1_89B0(s32 arg0) +{ + M418DllUnkStruct6 *var_r31; s32 var_r30; s32 var_r29; - M418DllUnkStruct3* temp_r28; - M418DllUnkStruct4* temp_r27; + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct4 *temp_r27; var_r29 = 0; var_r31 = &lbl_1_bss_3EC; @@ -2279,7 +2351,7 @@ void fn_1_89B0(s32 arg0) { var_r29++; } } - switch (var_r29) { /* irregular */ + switch (var_r29) { /* irregular */ case 1: var_r31->unk1C[0] = 3; break; @@ -2302,17 +2374,18 @@ void fn_1_89B0(s32 arg0) { if (var_r31->unk28[1] == var_r31->unk28[2]) { var_r31->unk28[2] = -1; } - + for (var_r30 = 0; var_r30 < 4; var_r30++) { temp_r27 = &lbl_1_bss_170[var_r30]; temp_r27->unkC = 0; } } -s32 fn_1_8B14(s32 arg0) { - M418DllUnkStruct4* temp_r31; +s32 fn_1_8B14(s32 arg0) +{ + M418DllUnkStruct4 *temp_r31; s32 var_r30; - M418DllUnkStruct6* var_r29; + M418DllUnkStruct6 *var_r29; s32 var_r28; var_r29 = &lbl_1_bss_3EC; @@ -2322,14 +2395,16 @@ s32 fn_1_8B14(s32 arg0) { if (temp_r31->unkC == 0) { if ((rand8() % 5) == 0) { var_r28 = 1; - } else { + } + else { var_r28 = 0; } if ((var_r28 != 0) || (fn_1_B0C8(&lbl_1_bss_20, 0) >= 5)) { temp_r31->unkC = 1; HuAudFXPlay(0x5D3); } - } else { + } + else { temp_r31->unk4 += 5.0f; if (temp_r31->unk4 >= 90.0f) { temp_r31->unk4 = 90.0f; @@ -2339,16 +2414,18 @@ s32 fn_1_8B14(s32 arg0) { } if (fn_1_B0C8(&lbl_1_bss_20, 1) != 0) { return fn_1_AF38(&lbl_1_bss_20); - } else { + } + else { return 0; } } -void fn_1_8C84(s32 arg0) { - M418DllUnkStruct3* temp_r31; +void fn_1_8C84(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; s32 var_r30; - M418DllUnkStruct6* temp_r29; - M418DllUnkStruct3* temp_r28; + M418DllUnkStruct6 *temp_r29; + M418DllUnkStruct3 *temp_r28; s32 var_r27; s32 temp_r0; @@ -2368,51 +2445,43 @@ void fn_1_8C84(s32 arg0) { temp_r28->unk0->work[1] = 1; } -Vec lbl_1_data_3CC[4] = { - { -540.0f, 225.0f, -900.0f }, - { -180.0f, 225.0f, -900.0f }, - { 180.0f, 225.0f, -900.0f }, - { 540.0f, 225.0f, -900.0f } -}; +Vec lbl_1_data_3CC[4] = { { -540.0f, 225.0f, -900.0f }, { -180.0f, 225.0f, -900.0f }, { 180.0f, 225.0f, -900.0f }, { 540.0f, 225.0f, -900.0f } }; -Vec lbl_1_data_3FC[6] = { - { -200.0f, 0.0f, -450.0f }, - { 0.0f, 0.0f, -400.0f }, - { 200.0f, 0.0f, -450.0f }, - { 0.0f, 0.0f, -400.0f }, - { -100.0f, 0.0f, -425.0f }, - { 100.0f, 0.0f, -425.0f } -}; +Vec lbl_1_data_3FC[6] = { { -200.0f, 0.0f, -450.0f }, { 0.0f, 0.0f, -400.0f }, { 200.0f, 0.0f, -450.0f }, { 0.0f, 0.0f, -400.0f }, + { -100.0f, 0.0f, -425.0f }, { 100.0f, 0.0f, -425.0f } }; -s32 fn_1_8D70(s32 arg0) { +s32 fn_1_8D70(s32 arg0) +{ s32 sp10; s32 spC; s32 sp8; - M418DllUnkStruct3* temp_r31; - M418DllUnkStruct6* temp_r30; + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *temp_r30; s32 var_r29; - M418DllUnkStruct3* temp_r28; - M418DllUnkStruct3* temp_r27; - omObjData* var_r26; + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct3 *temp_r27; + omObjData *var_r26; s32 temp_r3; - void* temp_r4; + void *temp_r4; temp_r30 = &lbl_1_bss_3EC; - + for (var_r29 = 0; var_r29 < 3; var_r29++) { temp_r31 = &lbl_1_bss_26C[temp_r30->unk4[var_r29]]; if (temp_r31->unk4C != -1) { if (temp_r31->unk54 == 0) { if (temp_r31->unk50++ == 0) { temp_r31->unk54 = 1; - omSetTra(temp_r31->unk0, lbl_1_data_3CC[temp_r31->unk4C].x, lbl_1_data_3CC[temp_r31->unk4C].y, lbl_1_data_3CC[temp_r31->unk4C].z - 50.0f); + omSetTra(temp_r31->unk0, lbl_1_data_3CC[temp_r31->unk4C].x, lbl_1_data_3CC[temp_r31->unk4C].y, + lbl_1_data_3CC[temp_r31->unk4C].z - 50.0f); var_r26 = temp_r31->unk0; temp_r28 = &lbl_1_bss_26C[var_r26->work[0]]; if (temp_r28->unk1C == 0) { temp_r28->unk1C = 1; } } - } else if (temp_r31->unk54 == 1) { + } + else if (temp_r31->unk54 == 1) { fn_1_3EB0(temp_r31->unk0, lbl_1_data_3FC[temp_r30->unk1C[temp_r31->unk58]], 0.0f, 12.0f); } } @@ -2423,17 +2492,19 @@ s32 fn_1_8D70(s32 arg0) { } if (fn_1_B0C8(&lbl_1_bss_20, 1) != 0) { return fn_1_AF38(&lbl_1_bss_20); - } else { + } + else { return 0; } } -void fn_1_8F74(s32 arg0) { +void fn_1_8F74(s32 arg0) +{ s32 sp8[3]; - M418DllUnkStruct3* temp_r31; + M418DllUnkStruct3 *temp_r31; s32 var_r30; - M418DllUnkStruct6* var_r29; - M418DllUnkStruct3* temp_r28; + M418DllUnkStruct6 *var_r29; + M418DllUnkStruct3 *temp_r28; var_r29 = &lbl_1_bss_3EC; for (var_r30 = 0; var_r30 < 3; var_r30++) { @@ -2450,17 +2521,20 @@ void fn_1_8F74(s32 arg0) { HuAudSStreamPlay(1); } -s32 fn_1_9094(s32 arg0) { +s32 fn_1_9094(s32 arg0) +{ if (fn_1_B0C8(&lbl_1_bss_20, 1) != 0) { return fn_1_AF38(&lbl_1_bss_20); - } else { + } + else { return 0; } } -void fn_1_90DC(s32 arg0) { - M418DllUnkStruct3* temp_r31; - M418DllUnkStruct6* temp_r30; +void fn_1_90DC(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; + M418DllUnkStruct6 *temp_r30; temp_r30 = &lbl_1_bss_3EC; temp_r31 = &lbl_1_bss_26C[temp_r30->unk0]; @@ -2468,9 +2542,10 @@ void fn_1_90DC(s32 arg0) { temp_r31->unk0->work[1] = 1; } -s32 fn_1_9140(s32 arg0) { - M418DllUnkStruct6* temp_r31; - M418DllUnkStruct3* temp_r30; +s32 fn_1_9140(s32 arg0) +{ + M418DllUnkStruct6 *temp_r31; + M418DllUnkStruct3 *temp_r30; temp_r31 = &lbl_1_bss_3EC; @@ -2480,22 +2555,24 @@ s32 fn_1_9140(s32 arg0) { } if (fn_1_B0C8(&lbl_1_bss_20, 1) != 0) { return fn_1_AF38(&lbl_1_bss_20); - } else { + } + else { return 0; } } -void fn_1_91E4(s32 arg0) { - M418DllUnkStruct3* temp_r31; +void fn_1_91E4(s32 arg0) +{ + M418DllUnkStruct3 *temp_r31; s32 var_r30; - M418DllUnkStruct6* temp_r29; - M418DllUnkStruct4* temp_r28; + M418DllUnkStruct6 *temp_r29; + M418DllUnkStruct4 *temp_r28; temp_r29 = &lbl_1_bss_3EC; temp_r31 = &lbl_1_bss_26C[temp_r29->unk0]; Hu3DMotionOverlayReset(temp_r31->unk0->model[0]); fn_1_ABC4(temp_r31->unk0, 0, 5, 10, 0); - + for (var_r30 = 0; var_r30 < 3; var_r30++) { temp_r28 = &lbl_1_bss_11C[var_r30]; fn_1_ABC4(temp_r28->unk0, 0, 3, 10, 1); @@ -2505,30 +2582,26 @@ void fn_1_91E4(s32 arg0) { HuAudSStreamPlay(1); } -s32 fn_1_92EC(s32 arg0) { +s32 fn_1_92EC(s32 arg0) +{ if (fn_1_B0C8(&lbl_1_bss_20, 1) != 0) { return fn_1_AF38(&lbl_1_bss_20); - } else { + } + else { return 0; } } -M418DllUnkStruct8 lbl_1_data_444[8] = { - { fn_1_888C, fn_1_88B4, -1 }, - { fn_1_89B0, fn_1_8B14, 90 }, - { fn_1_8C84, fn_1_8D70, 180 }, - { fn_1_8F74, fn_1_9094, 210 }, - { NULL, NULL, -1 }, - { fn_1_90DC, fn_1_9140, 180 }, - { fn_1_91E4, fn_1_92EC, 240 }, - { NULL, NULL, -1 } -}; +M418DllUnkStruct8 lbl_1_data_444[8] = { { fn_1_888C, fn_1_88B4, -1 }, { fn_1_89B0, fn_1_8B14, 90 }, { fn_1_8C84, fn_1_8D70, 180 }, + { fn_1_8F74, fn_1_9094, 210 }, { NULL, NULL, -1 }, { fn_1_90DC, fn_1_9140, 180 }, { fn_1_91E4, fn_1_92EC, 240 }, { NULL, NULL, -1 } }; -void fn_1_9334(void) { +void fn_1_9334(void) +{ fn_1_AEDC(&lbl_1_bss_20, &lbl_1_data_444[0]); } -s32 fn_1_9364(void) { +s32 fn_1_9364(void) +{ s32 var_r31; var_r31 = 0; @@ -2542,14 +2615,15 @@ s32 fn_1_9364(void) { return var_r31; } -void fn_1_93FC(omObjData* object) { +void fn_1_93FC(omObjData *object) +{ s32 var_r31; - M418DllUnkStruct6* var_r30; - M418DllUnkStruct3* var_r29; - M418DllUnkStruct3* var_r28; + M418DllUnkStruct6 *var_r30; + M418DllUnkStruct3 *var_r29; + M418DllUnkStruct3 *var_r28; s32 temp_r27; s32 temp_r26; - + if (WipeStatGet() == 0) { var_r30 = &lbl_1_bss_3EC; if (lbl_1_bss_10 != 0) { @@ -2560,7 +2634,8 @@ void fn_1_93FC(omObjData* object) { GWPlayer[temp_r27].coin_win = 10; } } - } else { + } + else { var_r28 = &lbl_1_bss_26C[var_r30->unk0]; temp_r26 = var_r28->unk4; if (_CheckFlag(0x1000CU) == 0) { @@ -2576,7 +2651,8 @@ void fn_1_93FC(omObjData* object) { } } -void fn_1_952C(omObjData* object) { +void fn_1_952C(omObjData *object) +{ if (omSysExitReq == 1) { HuAudSeqAllFadeOut(0xFA); WipeCreate(2, 0, -1); @@ -2584,14 +2660,15 @@ void fn_1_952C(omObjData* object) { } } -void fn_1_958C(void) { - M418DllUnkStruct3* temp_r31; +void fn_1_958C(void) +{ + M418DllUnkStruct3 *temp_r31; s32 var_r30; - M418DllUnkStruct6* temp_r29; - M418DllUnkStruct2* temp_r28; - M418DllUnkStruct4* temp_r27; - M418DllUnkStruct4* temp_r26; - M418DllUnkStruct3* temp_r25; + M418DllUnkStruct6 *temp_r29; + M418DllUnkStruct2 *temp_r28; + M418DllUnkStruct4 *temp_r27; + M418DllUnkStruct4 *temp_r26; + M418DllUnkStruct3 *temp_r25; s32 temp_r0; s32 var_r24; @@ -2600,22 +2677,22 @@ void fn_1_958C(void) { for (var_r30 = 1; var_r30 < 4; var_r30++) { fn_1_ABC4(temp_r28->unk0, var_r30, var_r30, 0, 2); } - + for (var_r30 = 8; var_r30 < 11; var_r30++) { fn_1_ABC4(temp_r28->unk0, var_r30, var_r30, 0, 1); Hu3DModelPosSet(temp_r28->unk0->model[var_r30 + 8], -360.0f + (360.0f * (var_r30 - 8)), -200.0f, -660.0f); Hu3DModelRotSet(temp_r28->unk0->model[var_r30], 0.0f, 0.0f, 20.0f); } - + temp_r28->unk4[0] = temp_r28->unk4[1] = temp_r28->unk4[2] = temp_r28->unk4[3] = 0; - + for (var_r30 = 0; var_r30 < 4; var_r30++) { temp_r27 = &lbl_1_bss_170[var_r30]; temp_r27->unk0->work[1] = temp_r27->unk0->work[2] = 0; temp_r27->unk4 = 0.0f; temp_r27->unkC = temp_r27->unk10 = temp_r27->unk14s = temp_r27->unk18s = 0; } - + for (var_r30 = 0; var_r30 < 3; var_r30++) { temp_r26 = &lbl_1_bss_11C[var_r30]; omSetTra(temp_r26->unk0, lbl_1_data_8C[var_r30].x, lbl_1_data_8C[var_r30].y, lbl_1_data_8C[var_r30].z); @@ -2624,12 +2701,13 @@ void fn_1_958C(void) { fn_1_AD14(temp_r26->unk0, 0, 0, 10, 1); temp_r26->unk0->work[1] = -1U; } - + for (var_r30 = 0; var_r30 < 4; var_r30++) { temp_r31 = &lbl_1_bss_26C[var_r30]; if (temp_r31->unk8 != 0) { omSetTra(temp_r31->unk0, 0.0f, -5000.0f, 0.0f); - } else { + } + else { omSetTra(temp_r31->unk0, 0.0f, 0.0f, 0.0f); } omSetRot(temp_r31->unk0, 0.0f, 0.0f, 0.0f); @@ -2654,21 +2732,22 @@ void fn_1_958C(void) { temp_r25 = &lbl_1_bss_26C[var_r30]; if (temp_r25->unk8 != 0) { temp_r29->unk4[var_r24++] = temp_r25->unk4; - } else { + } + else { temp_r29->unk0 = temp_r25->unk4; } } - + for (var_r30 = 0; var_r30 < 3; var_r30++) { temp_r29->unk1C[var_r30] = temp_r29->unk28[var_r30] = -1; temp_r29->unk10[var_r30] = -1; } - + temp_r29->unk34 = temp_r29->unk38 = temp_r29->unk3C = temp_r29->unk40 = 0; fn_1_5D28(); fn_1_8480(); fn_1_9334(); - + for (var_r30 = 0; var_r30 < 10; var_r30++) { lbl_1_bss_240[var_r30] = -1; } @@ -2676,7 +2755,8 @@ void fn_1_958C(void) { lbl_1_bss_240[7] = HuAudFXPlay(0x5D8); } -void fn_1_9BA4(omObjData* object) { +void fn_1_9BA4(omObjData *object) +{ switch (lbl_1_bss_18) { case 0: fn_1_958C(); @@ -2741,35 +2821,36 @@ void fn_1_9BA4(omObjData* object) { } } -void fn_1_9F94(omObjData* object) { +void fn_1_9F94(omObjData *object) +{ s32 var_r31; - M418DllUnkStruct4* temp_r30; - M418DllUnkStruct4* temp_r29; - M418DllUnkStruct3* temp_r28; - M418DllUnkStruct2* temp_r27; - M418DllWorkStruct* temp_r26; + M418DllUnkStruct4 *temp_r30; + M418DllUnkStruct4 *temp_r29; + M418DllUnkStruct3 *temp_r28; + M418DllUnkStruct2 *temp_r27; + M418DllWorkStruct *temp_r26; temp_r27 = &lbl_1_bss_1E0; temp_r27->unk0 = omAddObjEx(lbl_1_bss_0, 0x100, 0x14U, 0x14U, -1, fn_1_B4C); - + for (var_r31 = 0; var_r31 < 4; var_r31++) { temp_r30 = &lbl_1_bss_170[var_r31]; temp_r30->unk0 = omAddObjEx(lbl_1_bss_0, 0x200, 0x14U, 0x14U, -1, fn_1_14F0); temp_r30->unk0->work[0] = var_r31; } - + for (var_r31 = 0; var_r31 < 3; var_r31++) { temp_r29 = &lbl_1_bss_11C[var_r31]; temp_r29->unk0 = omAddObjEx(lbl_1_bss_0, 0x300, 0x14U, 0x14U, -1, fn_1_29A0); temp_r29->unk0->work[0] = var_r31; } - + for (var_r31 = 0; var_r31 < 4; var_r31++) { temp_r28 = &lbl_1_bss_26C[var_r31]; temp_r28->unk0 = omAddObjEx(lbl_1_bss_0, 0x400, 0x14U, 0x14U, -1, fn_1_4F60); temp_r28->unk0->work[0] = var_r31; } - + temp_r26 = &lbl_1_bss_68; temp_r26->unk0 = omAddObjEx(lbl_1_bss_0, 0x500, 0xBU, 0xBU, -1, fn_1_3054); WipeCreate(1, 0, -1); @@ -2778,7 +2859,8 @@ void fn_1_9F94(omObjData* object) { #include "src/REL/executor.c" -void fn_1_A1F0(void) { +void fn_1_A1F0(void) +{ lbl_1_bss_0 = omInitObjMan(0x3E, 0x2000); omGameSysInit(lbl_1_bss_0); HuAudAUXVolSet(-1, -1); @@ -2790,6 +2872,7 @@ void fn_1_A1F0(void) { omAddObjEx(lbl_1_bss_0, 0x2000, 0U, 0U, -1, fn_1_780); } -void ObjectSetup(void) { +void ObjectSetup(void) +{ fn_1_A1F0(); } diff --git a/src/REL/m420dll/player.c b/src/REL/m420dll/player.c index 6b424066..5bdb79f2 100644 --- a/src/REL/m420dll/player.c +++ b/src/REL/m420dll/player.c @@ -59,16 +59,111 @@ M420DllUnkStruct2 lbl_1_data_50[4] = { { 0x19, 0x01, 0x14, 0x04, 0x0A, 0x08, 0x01, 0x01 }, }; -// TODO MAKE_NUM static const s32 lbl_1_rodata_F8[8][0xB] = { - { 0x5F0000, 0x5F0017, 0x5F0018, 0x5F0068, 0x5F0069, 0x5F006A, 0x5F0035, 0x5F006B, 0x5F006E, 0x5F0049, 0x33001B }, - { 0x1A0000, 0x1A0017, 0x1A0018, 0x1A0068, 0x1A0069, 0x1A006A, 0x1A0035, 0x1A006B, 0x1A006E, 0x1A0049, 0x33001C }, - { 0x6D0000, 0x6D0017, 0x6D0018, 0x6D0068, 0x6D0069, 0x6D006A, 0x6D0035, 0x6D006B, 0x6D006E, 0x6D0049, 0x33001D }, - { 0x8A0000, 0x8A0017, 0x8A0018, 0x8A0068, 0x8A0069, 0x8A006A, 0x8A0035, 0x8A006B, 0x8A006E, 0x8A0049, 0x33001E }, - { 0x850000, 0x850017, 0x850018, 0x850068, 0x850069, 0x85006A, 0x850035, 0x85006B, 0x85006E, 0x850049, 0x33001F }, - { 0x110000, 0x110017, 0x110018, 0x110068, 0x110069, 0x11006A, 0x110035, 0x11006B, 0x11006E, 0x110049, 0x330020 }, - { 0x0D0000, 0x0D0017, 0x0D0018, 0x0D0068, 0x0D0069, 0x0D006A, 0x0D0035, 0x0D006B, 0x0D006E, 0x0D0049, 0x330021 }, - { 0x810000, 0x810017, 0x810018, 0x810068, 0x810069, 0x81006A, 0x810035, 0x81006B, 0x81006E, 0x810049, 0x330022 }, + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x68), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x69), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x49), + 0x33001B, + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x18), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x68), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x69), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x35), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x49), + 0x33001C, + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x18), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x68), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x69), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x35), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x49), + 0x33001D, + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x18), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x68), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x69), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x35), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x49), + 0x33001E, + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x18), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x68), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x69), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x35), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x49), + 0x33001F, + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x18), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x68), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x69), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x35), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x49), + 0x330020, + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x18), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x68), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x69), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x35), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x49), + 0x330021, + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x18), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x68), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x69), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x35), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6B), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6E), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x49), + 0x330022, + }, }; static const Vec lbl_1_rodata_258[4][2] = { { { -372.0f, 300.0f, -220.0f }, { 0.0f, 50.0f, 0.0f } }, diff --git a/src/REL/m424Dll/claw.c b/src/REL/m424Dll/claw.c index 752b4afb..2e6b061f 100644 --- a/src/REL/m424Dll/claw.c +++ b/src/REL/m424Dll/claw.c @@ -1,6 +1,5 @@ #include "REL/m424Dll.h" -#include "math.h" #include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" @@ -8,6 +7,8 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/pad.h" +#include "math.h" + // STRUCT typedef struct _M424DllClawStruct { @@ -66,8 +67,8 @@ typedef struct _M424DllClawStruct3 { } M424DllClawStruct3; // sizeof 0x8 // BSS -Process* lbl_1_bss_6DC; -omObjData* lbl_1_bss_6D8; +Process *lbl_1_bss_6DC; +omObjData *lbl_1_bss_6D8; s32 lbl_1_bss_6D0[2]; s32 lbl_1_bss_6CC; s32 lbl_1_bss_6C8; @@ -77,25 +78,30 @@ M424DllClawStruct3 lbl_1_bss_640[0x10]; // DATA Vec lbl_1_data_1E0[4] = { - { 950.0f, 275.0f, 0.0f }, + { 950.0f, 275.0f, 0.0f }, { 900.0f, 360.0f, 320.0f }, -{ 494.99996f, 220.0f, 494.99996f }, - { 0.0f, 225.0f, 0.0f }, + { 494.99996f, 220.0f, 494.99996f }, + { 0.0f, 225.0f, 0.0f }, }; f32 lbl_1_data_210[3] = { 12.0f, 11.0f, 17.5f }; char lbl_1_data_21C[12][0x10] = { - "tsume10", "tsume11", "tsume12", - "tsume20", "tsume21", "tsume22", - "tsume30", "tsume31", "tsume32", - "tsume40", "tsume41", "tsume42", -}; -u8 lbl_1_data_2DC[12] = { - 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0 -}; -s32 lbl_1_data_2E8[9] = { - 0x5F0000, 0x5F0002, 0x5F0003, 0x5F0005, 0x5F0006, - 0x5F0042, 0x5F0008, 0x5F0017, 0x5F0018 + "tsume10", + "tsume11", + "tsume12", + "tsume20", + "tsume21", + "tsume22", + "tsume30", + "tsume31", + "tsume32", + "tsume40", + "tsume41", + "tsume42", }; +u8 lbl_1_data_2DC[12] = { 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0 }; +s32 lbl_1_data_2E8[9] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x42), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x08), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18) }; Vec lbl_1_data_30C = { 0.0f, 0.0f, 0.0f }; // PROTO @@ -104,22 +110,23 @@ void fn_1_8924(u8, s32); u8 fn_1_8950(u8); u8 fn_1_897C(u8); u8 fn_1_89A8(u8); -Vec* fn_1_89D4(u8); -void fn_1_94D0(omObjData*); -void fn_1_9A64(omObjData*); -void fn_1_AE58(omObjData*); -void fn_1_AE64(omObjData*); +Vec *fn_1_89D4(u8); +void fn_1_94D0(omObjData *); +void fn_1_9A64(omObjData *); +void fn_1_AE58(omObjData *); +void fn_1_AE64(omObjData *); u16 fn_1_B79C(f32, f32, f32); -s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3); +s32 fn_1_B9E0(Vec *arg0, Vec *arg1, f32 arg8, Vec *arg2, s32 arg3); void fn_1_C604(s32, s32); -s32 fn_1_C878(s16, const char*, Mtx, s32); -void fn_1_C99C(HsfObject*, Mtx, const char*, Mtx); +s32 fn_1_C878(s16, const char *, Mtx, s32); +void fn_1_C99C(HsfObject *, Mtx, const char *, Mtx); void fn_1_CE74(s32); -void fn_1_CF00(Process*); -void fn_1_CF80(omObjData*); +void fn_1_CF00(Process *); +void fn_1_CF80(omObjData *); s32 fn_1_D010(s32, s32); -omObjData* fn_1_93F0(Process* arg0) { +omObjData *fn_1_93F0(Process *arg0) +{ lbl_1_bss_6DC = arg0; lbl_1_bss_6D8 = omAddObjEx(arg0, 0x40, 5, 9, -1, fn_1_94D0); lbl_1_bss_6CC = 0; @@ -130,13 +137,15 @@ omObjData* fn_1_93F0(Process* arg0) { return lbl_1_bss_6D8; } -void fn_1_94A4(void) { +void fn_1_94A4(void) +{ fn_1_AE58(lbl_1_bss_6D8); } -void fn_1_94D0(omObjData* arg0) { +void fn_1_94D0(omObjData *arg0) +{ s32 var_r29; - M424DllClawStruct* var_r31; + M424DllClawStruct *var_r31; var_r31 = arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x1B0, 0x10000000); memset(var_r31, 0, 0x1B0); @@ -170,7 +179,7 @@ void fn_1_94D0(omObjData* arg0) { } var_r31->unk184 = -1; var_r31->unk30 = lbl_1_data_30C; - + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { var_r31->unk3C[var_r29] = lbl_1_data_30C; var_r31->unkCC[var_r29] = lbl_1_data_30C; @@ -218,7 +227,8 @@ void fn_1_94D0(omObjData* arg0) { arg0->func = fn_1_9A64; } -void fn_1_9A64(omObjData* arg0) { +void fn_1_9A64(omObjData *arg0) +{ Mtx sp74; Mtx sp44; Vec sp38; @@ -228,7 +238,7 @@ void fn_1_9A64(omObjData* arg0) { Vec sp8; f32 var_f31; f32 temp_f30; - M424DllClawStruct* temp_r31; + M424DllClawStruct *temp_r31; s32 var_r29; s32 temp_r28; s32 var_r27; @@ -242,13 +252,15 @@ void fn_1_9A64(omObjData* arg0) { if (temp_r31->unk6 != 0) { fn_1_AE64(arg0); } - } else { + } + else { temp_r31->unkC = 0; temp_r31->unkA = 0; } if (fn_1_FE0() <= 1) { var_r25 = -1; - } else { + } + else { var_r25 = temp_r31->unk10; } switch (var_r25) { @@ -262,7 +274,8 @@ void fn_1_9A64(omObjData* arg0) { if (fn_1_FE0() > 4) { temp_r31->unk10 = 10; temp_r31->unk12 = 0; - } else if ((temp_r31->unkA & 0x100) != 0) { + } + else if ((temp_r31->unkA & 0x100) != 0) { HuAudFXPlay(0x62A); temp_r31->unk184 = HuAudFXPlay(0x621); temp_r31->unk10 = 2; @@ -275,7 +288,8 @@ void fn_1_9A64(omObjData* arg0) { if (temp_r31->unk24 >= 1.0f) { temp_r31->unk24 = 1.0f; temp_r31->unk20 = -1.0f; - } else { + } + else { if (temp_r31->unk24 <= 0.0f) { temp_r31->unk24 = 0.0f; temp_r31->unk20 = 1.0f; @@ -289,7 +303,8 @@ void fn_1_9A64(omObjData* arg0) { HuAudFXPlay(0x622); temp_r31->unk10 = 10; temp_r31->unk12 = 0; - } else if (((temp_r31->unkC & 0x100) == 0) || (temp_r31->unk12 >= 360.0f)) { + } + else if (((temp_r31->unkC & 0x100) == 0) || (temp_r31->unk12 >= 360.0f)) { if (temp_r31->unk184 != -1) { HuAudFXStop(temp_r31->unk184); temp_r31->unk184 = -1; @@ -363,23 +378,27 @@ void fn_1_9A64(omObjData* arg0) { temp_r31->unk28 = 0.0f; if (temp_r31->unk168 != -1) { var_r27 = fn_1_897C(temp_r31->unk168); - } else { + } + else { var_r27 = -1; } if (temp_r31->unk168 == -1) { if (fn_1_FE0() > 4) { temp_r31->unk10 = 10; temp_r31->unk12 = 0; - } else { + } + else { temp_r31->unk10 = 8; temp_r31->unk12 = 0; HuAudFXPlay(0x625); } - } else if (var_r27 == 0) { + } + else if (var_r27 == 0) { temp_r31->unk10 = 8; temp_r31->unk12 = 0; HuAudFXPlay(0x625); - } else { + } + else { if (temp_r31->unk168 != -1) { fn_1_252C(-0.01f, 0x3C); fn_1_2670(0x75, 0); @@ -394,15 +413,18 @@ void fn_1_9A64(omObjData* arg0) { case 7: if (arg0->rot.y < temp_r31->unk180) { arg0->rot.y += 1.25f; - } else if (arg0->rot.y > temp_r31->unk180) { + } + else if (arg0->rot.y > temp_r31->unk180) { arg0->rot.y = temp_r31->unk180; } var_f31 = 0.35f - temp_r31->unk24; if (var_f31 > 0.0125f) { temp_r31->unk24 += 0.0125f; - } else if (var_f31 < -0.0125f) { + } + else if (var_f31 < -0.0125f) { temp_r31->unk24 -= 0.0125f; - } else { + } + else { temp_r31->unk24 = 0.35f; } if ((arg0->rot.y == temp_r31->unk180) && (0.35f == temp_r31->unk24)) { @@ -423,7 +445,8 @@ void fn_1_9A64(omObjData* arg0) { var_r26 = fn_1_89A8(temp_r31->unk168); HuAudCharVoicePlay(var_r26, 0x123); fn_1_D010(0x628, 30); - } else { + } + else { fn_1_8924(temp_r31->unk168, 2); } temp_r31->unk16C = temp_r31->unk168; @@ -451,12 +474,14 @@ void fn_1_9A64(omObjData* arg0) { temp_r31->unk12++; if (arg0->rot.y > 270.0f) { arg0->rot.y -= 1.25f; - } else if (arg0->rot.y < 270.0f) { + } + else if (arg0->rot.y < 270.0f) { arg0->rot.y = 270.0f; } if (temp_r31->unk24 > 0.025f) { temp_r31->unk24 -= 0.025f; - } else if (temp_r31->unk24 < 0.05f) { + } + else if (temp_r31->unk24 < 0.05f) { temp_r31->unk24 = 0.0f; } if ((270.0f == arg0->rot.y) && (0.0f == temp_r31->unk24)) { @@ -482,7 +507,8 @@ void fn_1_9A64(omObjData* arg0) { temp_r31->unk18 = fn_1_B79C(lbl_1_data_1E0[0].y, lbl_1_data_1E0[1].y, temp_r31->unk1C); temp_r31->unk10 = 11; temp_r31->unk12 = 0; - } else { + } + else { temp_r31->unk10 = 13; temp_r31->unk12 = 0; } @@ -520,7 +546,8 @@ void fn_1_9A64(omObjData* arg0) { temp_r31->unk10 = 0xC; } } - } else { + } + else { sp14 = lbl_1_data_1E0[var_r29]; sp8 = lbl_1_data_1E0[var_r29 + 1]; var_f31 = atan2d((sp8.x - arg0->trans.x), (sp8.z - arg0->trans.z)); @@ -551,7 +578,8 @@ void fn_1_9A64(omObjData* arg0) { if (fn_1_B888() != 0) { temp_r31->unk10 = 14; temp_r31->unk12 = 0; - } else { + } + else { temp_r31->unk10 = 15; temp_r31->unk12 = 0; } @@ -585,7 +613,7 @@ void fn_1_9A64(omObjData* arg0) { temp_r31->unk30.x = sp74[0][3]; temp_r31->unk30.y = sp74[1][3]; temp_r31->unk30.z = sp74[2][3]; - + for (var_r29 = 0; var_r29 < 0xC; var_r29++) { PSMTXCopy(sp44, sp74); fn_1_C878(arg0->model[4], lbl_1_data_21C[var_r29], sp74, 1); @@ -611,25 +639,17 @@ void fn_1_9A64(omObjData* arg0) { temp_r31->unk164 = 1; } -void fn_1_AE58(omObjData* arg0) { +void fn_1_AE58(omObjData *arg0) +{ arg0->func = NULL; } -f32 lbl_1_data_36C[4][2] = { - 30.0f, 24.0f, - 24.0f, 18.0f, - 12.0f, 6.0f, - 6.0f, 0.0f -}; +f32 lbl_1_data_36C[4][2] = { 30.0f, 24.0f, 24.0f, 18.0f, 12.0f, 6.0f, 6.0f, 0.0f }; -f32 lbl_1_data_38C[4][2] = { - 0.2f, 0.15f, - 0.15f, 0.1f, - 0.1f, 0.05f, - 0.05f, 0.0f -}; +f32 lbl_1_data_38C[4][2] = { 0.2f, 0.15f, 0.15f, 0.1f, 0.1f, 0.05f, 0.05f, 0.0f }; -void fn_1_AE64(omObjData* arg0) { +void fn_1_AE64(omObjData *arg0) +{ M424DllClawStruct2 sp20[8]; M424DllClawStruct2 sp10; s32 spC; @@ -642,12 +662,12 @@ void fn_1_AE64(omObjData* arg0) { f32 var_f24; s32 temp_r24; s32 temp_r23; - M424DllClawStruct* temp_r31; - Vec* var_r30; + M424DllClawStruct *temp_r31; + Vec *var_r30; s32 var_r29; s32 var_r28; s32 var_r27; - M424DllBallStruct2* var_r26; + M424DllBallStruct2 *var_r26; s32 var_r25; spC = 0; @@ -693,7 +713,7 @@ void fn_1_AE64(omObjData* arg0) { if (var_r28 != 0) { for (var_r29 = 0; var_r29 < (var_r28 - 1); var_r29++) { var_r27 = var_r29 + 1; - for (;var_r27 < var_r28; var_r27++) { + for (; var_r27 < var_r28; var_r27++) { if (sp20[var_r29].unkC < sp20[var_r27].unkC) { sp10 = sp20[var_r29]; sp20[var_r29] = sp20[var_r27]; @@ -729,7 +749,8 @@ void fn_1_AE64(omObjData* arg0) { var_f29 = (var_f29 - 350.0f) / 250.0f + temp_r23; if (var_f29 < 0.0f) { var_f29 = 0.0f; - } else if (var_f29 > 1.0f) { + } + else if (var_f29 > 1.0f) { var_f29 = 1.0f; } temp_r31->unk194 = (60.0f * (1.0f - var_f29)); @@ -748,7 +769,8 @@ void fn_1_AE64(omObjData* arg0) { temp_r31->unk1AC = 0; return; } - } else { + } + else { if (var_f31 >= (15.0f + temp_r31->unk1A8)) { temp_r31->unk1A0++; temp_r31->unk1A8 = var_f31; @@ -766,7 +788,8 @@ void fn_1_AE64(omObjData* arg0) { if (++temp_r31->unk1AC >= temp_r31->unk194) { var_r25 = 0; } - } else { + } + else { var_r25 = 0; } if (var_r25 != 0) { @@ -778,7 +801,8 @@ void fn_1_AE64(omObjData* arg0) { } } -u16 fn_1_B79C(f32 arg0, f32 arg1, f32 arg2) { +u16 fn_1_B79C(f32 arg0, f32 arg1, f32 arg2) +{ f32 var_f31; f32 var_f3; u16 var_r31; @@ -791,8 +815,9 @@ u16 fn_1_B79C(f32 arg0, f32 arg1, f32 arg2) { return var_r31; } -s32 fn_1_B804(void) { - M424DllClawStruct* temp_r31; +s32 fn_1_B804(void) +{ + M424DllClawStruct *temp_r31; if (!lbl_1_bss_6D8) { return 0; @@ -807,17 +832,20 @@ s32 fn_1_B804(void) { return 0; } -s32 fn_1_B888(void) { +s32 fn_1_B888(void) +{ if (lbl_1_bss_6CC >= 3) { return 1; - } else { + } + else { return 0; } } -s32 fn_1_B8AC(void) { - M424DllClawStruct* temp_r31; - +s32 fn_1_B8AC(void) +{ + M424DllClawStruct *temp_r31; + if (!lbl_1_bss_6D8) { return 0; } @@ -832,9 +860,10 @@ s32 fn_1_B8AC(void) { return 0; } -s32 fn_1_B924(void) { - M424DllClawStruct* temp_r31; - +s32 fn_1_B924(void) +{ + M424DllClawStruct *temp_r31; + if (!lbl_1_bss_6D8) { return 0; } @@ -849,11 +878,13 @@ s32 fn_1_B924(void) { return 0; } -void fn_1_B99C(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2) { +void fn_1_B99C(Vec *arg0, Vec *arg1, f32 arg8, Vec *arg2) +{ fn_1_B9E0(arg0, arg1, arg8, arg2, 0x10); } -s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3) { +s32 fn_1_B9E0(Vec *arg0, Vec *arg1, f32 arg8, Vec *arg2, s32 arg3) +{ Vec sp60; Vec sp54; Vec sp48; @@ -870,11 +901,11 @@ s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3) { f32 var_f25; f32 var_f24; f32 var_f23; - M424DllClawStruct* temp_r31; + M424DllClawStruct *temp_r31; s32 var_r29; s32 var_r28; s32 var_r26; - omObjData* var_r24; + omObjData *var_r24; s32 var_r23; var_r23 = 1; @@ -907,7 +938,8 @@ s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3) { var_f23 = sqrtf((sp18.x * sp18.x) + (sp18.z * sp18.z)); if ((temp_r31->unk3C[var_r29].y > sp24.y) && (var_f23 < 17.599999999999998)) { temp_r31->unk15C = 1; - } else { + } + else { PSVECNormalize(&sp18, &sp18); PSVECScale(&sp18, &sp18, temp_f30); PSVECAdd(&temp_r31->unk3C[var_r29], &sp18, arg2); @@ -947,9 +979,10 @@ s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3) { PSVECAdd(&sp60, &sp30, arg2); var_r28 = 1; var_r26 = 1; - } else if (var_f29 < temp_f30) { + } + else if (var_f29 < temp_f30) { if (PSVECMag(&sp30) <= 0.0f) { - + sp30.x = sp30.y = 0.0f; sp30.z = 1.0f; } @@ -1025,12 +1058,13 @@ s32 fn_1_B9E0(Vec* arg0, Vec* arg1, f32 arg8, Vec* arg2, s32 arg3) { return var_r28; } -s32 fn_1_C210(Vec* arg0) { +s32 fn_1_C210(Vec *arg0) +{ Vec sp1C; Vec sp10; f32 spC; - M424DllClawStruct* temp_r31; - omObjData* var_r30; + M424DllClawStruct *temp_r31; + omObjData *var_r30; s32 var_r29; var_r29 = 0; @@ -1052,21 +1086,23 @@ s32 fn_1_C210(Vec* arg0) { return var_r29; } -void fn_1_C2E0(s32 arg0) { +void fn_1_C2E0(s32 arg0) +{ Vec sp4C; Vec sp40; Vec sp34; Vec sp28; - Vec* spC; - M424DllBallStruct2* temp_r27; - Vec* temp_r28; - M424DllClawStruct* temp_r31; + Vec *spC; + M424DllBallStruct2 *temp_r27; + Vec *temp_r28; + M424DllClawStruct *temp_r31; s32 var_r30; s32 var_r26; - omObjData* var_r25; + omObjData *var_r25; + + if ((u8)omPauseChk() != 0U) + return; - if ((u8)omPauseChk() != 0U) return; - var_r25 = lbl_1_bss_6D8; if (lbl_1_bss_6D8) { temp_r31 = var_r25->data; @@ -1074,10 +1110,11 @@ void fn_1_C2E0(s32 arg0) { temp_r27 = &lbl_1_bss_60[0]; if (temp_r27) { var_r26 = 0x10; - + for (var_r30 = 0; var_r30 < lbl_1_bss_58; var_r30++) { temp_r27 = &lbl_1_bss_60[var_r30]; - if ((fn_1_8950(var_r30) == 3) || (fn_1_8950(var_r30) == 4)) continue; + if ((fn_1_8950(var_r30) == 3) || (fn_1_8950(var_r30) == 4)) + continue; temp_r28 = fn_1_89D4(var_r30); spC = fn_1_8A00(var_r30); sp28 = *temp_r28; @@ -1116,18 +1153,19 @@ void fn_1_C2E0(s32 arg0) { } } -void fn_1_C604(s32 arg0, s32 arg1) { +void fn_1_C604(s32 arg0, s32 arg1) +{ Vec sp30; Vec sp24; Vec sp18; Vec spC; - M424DllBallStruct2* sp8; - Vec* var_r31; + M424DllBallStruct2 *sp8; + Vec *var_r31; f32 temp_f31; f32 var_f30; s32 var_r30; - M424DllBallStruct2* var_r28; - Vec* var_r27; + M424DllBallStruct2 *var_r28; + Vec *var_r27; sp8 = &lbl_1_bss_60[var_r30]; var_r27 = fn_1_89D4(arg0); @@ -1145,7 +1183,8 @@ void fn_1_C604(s32 arg0, s32 arg1) { sp18.x *= temp_f31; sp18.y *= temp_f31; sp18.z *= temp_f31; - } else { + } + else { sp18.x = 0.0f; sp18.y = 0.0f; sp18.z = 1.0f; @@ -1168,22 +1207,25 @@ void fn_1_C604(s32 arg0, s32 arg1) { } } -void fn_1_C854(void) { +void fn_1_C854(void) +{ fn_1_C2E0(0); } -s32 fn_1_C878(s16 arg0, const char* arg1, Mtx arg2, s32 arg3) { +s32 fn_1_C878(s16 arg0, const char *arg1, Mtx arg2, s32 arg3) +{ Mtx sp44; Mtx sp14; - HsfData* temp_r30; - ModelData* temp_r31; + HsfData *temp_r30; + ModelData *temp_r31; temp_r31 = &Hu3DData[arg0]; temp_r30 = temp_r31->hsfData; lbl_1_bss_6C8 = 0; if (temp_r31->unk_08 != -1) { lbl_1_bss_6C4 = 1; - } else { + } + else { lbl_1_bss_6C4 = 0; } mtxRot(sp14, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); @@ -1197,18 +1239,19 @@ s32 fn_1_C878(s16 arg0, const char* arg1, Mtx arg2, s32 arg3) { return lbl_1_bss_6C8; } -void fn_1_C99C(HsfObject* arg0, Mtx arg1, const char* arg2, Mtx arg3) { +void fn_1_C99C(HsfObject *arg0, Mtx arg1, const char *arg2, Mtx arg3) +{ Mtx spF8; Mtx spC8; Mtx sp98; Mtx sp68; Mtx sp38; Mtx sp8; - HsfTransform* var_r31; - HsfTransform* var_r30; - HsfTransform* var_r29; - HsfObject* temp_r28; - HsfObject* temp_r27; + HsfTransform *var_r31; + HsfTransform *var_r30; + HsfTransform *var_r29; + HsfObject *temp_r28; + HsfObject *temp_r27; u32 var_r25; u32 var_r24; u32 var_r23; @@ -1216,13 +1259,15 @@ void fn_1_C99C(HsfObject* arg0, Mtx arg1, const char* arg2, Mtx arg3) { if (lbl_1_bss_6C8 == 0) { if (lbl_1_bss_6C4 != 0) { var_r31 = &arg0->data.curr; - } else { + } + else { var_r31 = &arg0->data.base; } if ((var_r31->scale.x <= 0.0f) && (var_r31->scale.y <= 0.0f) && (var_r31->scale.z <= 0.0f)) { PSMTXCopy(arg1, spF8); OSReport("OBJ MTX CHECK ERROR %s \n", arg0->name); - } else { + } + else { mtxRot(spC8, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); PSMTXScale(spF8, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); PSMTXConcat(spC8, spF8, spF8); @@ -1241,13 +1286,15 @@ void fn_1_C99C(HsfObject* arg0, Mtx arg1, const char* arg2, Mtx arg3) { if (lbl_1_bss_6C8 == 0) { if (lbl_1_bss_6C4 != 0) { var_r30 = &temp_r28->data.curr; - } else { + } + else { var_r30 = &temp_r28->data.base; } if ((var_r30->scale.x <= 0.0f) && (var_r30->scale.y <= 0.0f) && (var_r30->scale.z <= 0.0f)) { PSMTXCopy(spF8, sp68); OSReport("OBJ MTX CHECK ERROR %s \n", temp_r28->name); - } else { + } + else { mtxRot(sp98, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); PSMTXScale(sp68, var_r30->scale.x, var_r30->scale.y, var_r30->scale.z); PSMTXConcat(sp98, sp68, sp68); @@ -1266,13 +1313,15 @@ void fn_1_C99C(HsfObject* arg0, Mtx arg1, const char* arg2, Mtx arg3) { if (lbl_1_bss_6C8 == 0) { if (lbl_1_bss_6C4 != 0) { var_r29 = &temp_r27->data.curr; - } else { + } + else { var_r29 = &temp_r27->data.base; } if ((var_r29->scale.x <= 0.0f) && (var_r29->scale.y <= 0.0f) && (var_r29->scale.z <= 0.0f)) { PSMTXCopy(sp68, sp8); OSReport("OBJ MTX CHECK ERROR %s \n", temp_r27->name); - } else { + } + else { mtxRot(sp38, var_r29->rot.x, var_r29->rot.y, var_r29->rot.z); PSMTXScale(sp8, var_r29->scale.x, var_r29->scale.y, var_r29->scale.z); PSMTXConcat(sp38, sp8, sp8); @@ -1296,8 +1345,9 @@ void fn_1_C99C(HsfObject* arg0, Mtx arg1, const char* arg2, Mtx arg3) { } } -void fn_1_CE74(s32 arg0) { - ModelData* temp_r31; +void fn_1_CE74(s32 arg0) +{ + ModelData *temp_r31; temp_r31 = &Hu3DData[arg0]; if (temp_r31->unk_08 != -1) { @@ -1311,21 +1361,23 @@ void fn_1_CE74(s32 arg0) { } } -void fn_1_CF00(Process* arg0) { - M424DllClawStruct3* var_r31; +void fn_1_CF00(Process *arg0) +{ + M424DllClawStruct3 *var_r31; s32 var_r30; omAddObjEx(arg0, 0x40, 0, 0, -1, fn_1_CF80); var_r31 = &lbl_1_bss_640[0]; - + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { var_r31->unk0 = -1; var_r31->unk4 = -1; } } -void fn_1_CF80(omObjData* arg0) { - M424DllClawStruct3* var_r31; +void fn_1_CF80(omObjData *arg0) +{ + M424DllClawStruct3 *var_r31; s32 var_r30; var_r31 = &lbl_1_bss_640[0]; @@ -1340,13 +1392,15 @@ void fn_1_CF80(omObjData* arg0) { } } -s32 fn_1_D010(s32 arg0, s32 arg1) { - M424DllClawStruct3* var_r31; +s32 fn_1_D010(s32 arg0, s32 arg1) +{ + M424DllClawStruct3 *var_r31; s32 var_r30; var_r31 = &lbl_1_bss_640[0]; for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { - if (var_r31->unk0 == -1) break; + if (var_r31->unk0 == -1) + break; } if (var_r30 >= 0x10) { return -1; diff --git a/src/REL/m430Dll/main.c b/src/REL/m430Dll/main.c index bf93c2c6..f7320e52 100644 --- a/src/REL/m430Dll/main.c +++ b/src/REL/m430Dll/main.c @@ -139,7 +139,7 @@ void ObjectSetup(void) lbl_1_bss_34 = omAddObjEx(var_r31, 0xA, 0, 0, -1, fn_1_65C); fn_1_4A80(var_r31); fn_1_BBC4(var_r31); - lbl_1_bss_10 = espEntry(0x3D001B, 0x64, 0); + lbl_1_bss_10 = espEntry(DATA_MAKE_NUM(DATADIR_M430, 0x1B), 0x64, 0); espPosSet(lbl_1_bss_10, 288.0, 240.0); espScaleSet(lbl_1_bss_10, 0.22499999403953552, 60.0); espDispOff(lbl_1_bss_10); diff --git a/src/REL/m430Dll/player.c b/src/REL/m430Dll/player.c index 981602dc..e42fbd99 100644 --- a/src/REL/m430Dll/player.c +++ b/src/REL/m430Dll/player.c @@ -219,21 +219,22 @@ void fn_1_F6A0(omObjData *object); void fn_1_FC9C(omObjData *object); M430PlayerData170Struct lbl_1_data_170[7] = { - { 0x5F0042, -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x42), -1 }, { 0, 1 }, { 0, 2 }, { 0, 3 }, { 0, -1 }, - { 0x5F0017, -1 }, - { 0x5F0018, -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), -1 }, }; M430PlayerData170Struct lbl_1_data_1A8[4] = { { 0, 4 }, - { 0x5F0000, -1 }, - { 0x5F0017, -1 }, - { 0x5F0018, -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), -1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), -1 }, }; -s32 lbl_1_data_1C8[5] = { 0, 0x3D0031, 0x3D0039, 0x3D0041, 0x3D0049 }; +s32 lbl_1_data_1C8[5] = { 0, DATA_MAKE_NUM(DATADIR_M430, 0x31), DATA_MAKE_NUM(DATADIR_M430, 0x39), DATA_MAKE_NUM(DATADIR_M430, 0x41), + DATA_MAKE_NUM(DATADIR_M430, 0x49) }; float lbl_1_data_1DC[7] = { -262.5f, -173.25f, -86.625f, 0.0f, 86.625f, 173.25f, 262.5f }; Vec lbl_1_data_1F8[8] = { { 0.0f, 0.0f, 0.0f }, @@ -246,9 +247,9 @@ Vec lbl_1_data_1F8[8] = { { -60.000004f, 0.0f, -120.00001f }, }; float lbl_1_data_258[8] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 25.0f, 0.0f, 25.0f }; -s32 lbl_1_data_278[2] = { 0x3D001C, 0x3D001D }; -s32 lbl_1_data_280[2] = { 0x3D001E, 0x3D001F }; -s32 lbl_1_data_288[2] = { 0x3D0020, 0x3D0021 }; +s32 lbl_1_data_278[2] = { DATA_MAKE_NUM(DATADIR_M430, 0x1C), DATA_MAKE_NUM(DATADIR_M430, 0x1D) }; +s32 lbl_1_data_280[2] = { DATA_MAKE_NUM(DATADIR_M430, 0x1E), DATA_MAKE_NUM(DATADIR_M430, 0x1F) }; +s32 lbl_1_data_288[2] = { DATA_MAKE_NUM(DATADIR_M430, 0x20), DATA_MAKE_NUM(DATADIR_M430, 0x21) }; s32 lbl_1_bss_17C; Process *lbl_1_bss_178; @@ -427,7 +428,7 @@ void fn_1_C1E4(omObjData *object) Hu3DModelLayerSet(object->model[1], 2); Hu3DModelCameraSet(object->model[1], 3); Hu3DModelScaleSet(object->model[1], 1.2f, 1.2f, 1.2f); - object->model[2] = Hu3DModelCreateFile(0x3D0025); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x25)); Hu3DModelLayerSet(object->model[2], 1); Hu3DModelCameraSet(object->model[2], 3); work->unk_60 = HuAudFXPlay(0x67A); @@ -1659,14 +1660,14 @@ void fn_1_10B88(void) for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { var_r31->unk_00 = var_r30; if (var_r30 == 0) { - var_r31->unk_04 = Hu3DModelCreateFile(0x3D0023); + var_r31->unk_04 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x23)); } else { var_r31->unk_04 = Hu3DModelLink(lbl_1_bss_16C[0].unk_04); } Hu3DModelLayerSet(var_r31->unk_04, 2); Hu3DModelAttrSet(var_r31->unk_04, HU3D_ATTR_DISPOFF); - var_r31->unk_08 = Hu3DModelCreateFile(0x3D0024); + var_r31->unk_08 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x24)); Hu3DModelLayerSet(var_r31->unk_08, 2); Hu3DModelAttrSet(var_r31->unk_08, HU3D_ATTR_DISPOFF); var_r31->unk_0C = 0; @@ -1836,7 +1837,7 @@ void fn_1_113AC(void) for (var_r30 = 0; var_r30 < 0x20; var_r31++) { var_r31->unk_00 = var_r30; if (var_r30 == 0) { - var_r31->unk_04 = Hu3DModelCreateFile(0x3D0022); + var_r31->unk_04 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x22)); } else { var_r31->unk_04 = Hu3DModelLink(lbl_1_bss_168[0].unk_04); @@ -2006,7 +2007,7 @@ void fn_1_11C1C(void) memset(var_r31, 0, 8 * sizeof(M430PlayerBss164Struct)); for (var_r30 = 0; var_r30 < 8; var_r30++, var_r31++) { if (var_r30 == 0) { - var_r31->unk_14 = HuSprAnimRead(HuDataReadNum(0x3D0026, MEMORY_DEFAULT_NUM)); + var_r31->unk_14 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x26), MEMORY_DEFAULT_NUM)); } else { var_r31->unk_14 = lbl_1_bss_164[0].unk_14; @@ -2182,7 +2183,7 @@ void fn_1_125C4(void) switch (var_r30) { case 0: case 1: - var_r31->unk_10[var_r30] = espEntry(0x610033, 1, 0); + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x33), 1, 0); espPriSet(var_r31->unk_10[var_r30], 0x40); var_r31->unk_28[var_r30][0] = (var_r30 * 0x14) + 0xB; var_r31->unk_28[var_r30][1] = 0; @@ -2191,17 +2192,17 @@ void fn_1_125C4(void) break; case 2: if (var_r29 == 0) { - var_r31->unk_10[var_r30] = espEntry(0x61001B, 1, 0); + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x1B), 1, 0); } else { - var_r31->unk_10[var_r30] = espEntry(0x61001C, 1, 0); + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x1C), 1, 0); } espPriSet(var_r31->unk_10[var_r30], 0xFF); var_r31->unk_28[var_r30][0] = 0; var_r31->unk_28[var_r30][1] = 0; break; case 3: - var_r31->unk_10[var_r30] = espEntry(0x61001D, 1, 0); + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x1D), 1, 0); espPriSet(var_r31->unk_10[var_r30], 0x100); espTPLvlSet(var_r31->unk_10[var_r30], 0.6000000238418579); espColorSet(var_r31->unk_10[var_r30], 0, 0, 0); @@ -2209,13 +2210,13 @@ void fn_1_125C4(void) var_r31->unk_28[var_r30][1] = 0; break; case 4: - var_r31->unk_10[var_r30] = espEntry(0x610008, 1, 0); + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 0x08), 1, 0); espPriSet(var_r31->unk_10[var_r30], 0x80); var_r31->unk_28[var_r30][0] = -0x21; var_r31->unk_28[var_r30][1] = 0; break; case 5: - var_r31->unk_10[var_r30] = espEntry(0x3D0028, 1, 0); + var_r31->unk_10[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_M430, 0x28), 1, 0); espPriSet(var_r31->unk_10[var_r30], 0x80); espZRotSet(var_r31->unk_10[var_r30], 45.0); var_r31->unk_28[var_r30][0] = -0xA; diff --git a/src/REL/m430Dll/water.c b/src/REL/m430Dll/water.c index 1d295c95..f9b938a2 100644 --- a/src/REL/m430Dll/water.c +++ b/src/REL/m430Dll/water.c @@ -165,11 +165,11 @@ void fn_1_4A80(Process *process) { omObjData *object; - lbl_1_bss_150 = HuSprAnimRead(HuDataReadNum(0x3D0019, 0x10000000)); - lbl_1_bss_14C = HuSprAnimRead(HuDataReadNum(0x3D001A, 0x10000000)); - lbl_1_bss_148 = HuSprAnimRead(HuDataReadNum(0x3D0014, 0x10000000)); - lbl_1_bss_144 = HuSprAnimRead(HuDataReadNum(0x3D0017, 0x10000000)); - lbl_1_bss_140 = HuSprAnimRead(HuDataReadNum(0x3D0018, 0x10000000)); + lbl_1_bss_150 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x19), MEMORY_DEFAULT_NUM)); + lbl_1_bss_14C = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x1A), MEMORY_DEFAULT_NUM)); + lbl_1_bss_148 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x14), MEMORY_DEFAULT_NUM)); + lbl_1_bss_144 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x17), MEMORY_DEFAULT_NUM)); + lbl_1_bss_140 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M430, 0x18), MEMORY_DEFAULT_NUM)); object = lbl_1_bss_58 = omAddObjEx(process, 0x1E, 0x68, 0, -1, fn_1_4CB4); object->work[0] = 0; object = lbl_1_bss_54 = omAddObjEx(process, 0x1E, 7, 0, -1, fn_1_803C); @@ -200,12 +200,12 @@ void fn_1_4CB4(omObjData *object) s32 var_r25; M430DllWork *work; - u32 spC[1] = { 0x3D0001 }; + u32 spC[1] = { DATA_MAKE_NUM(DATADIR_M430, 0x01) }; s32 sp8[1]; - u32 sp90[4] = { 0x003D000B, 0x003D000C, 0x003D000D, 0x003D000E }; - u32 sp80[4] = { 0x003D0002, 0x003D0002, 0x003D0003, 0x003D0003 }; - u32 sp70[4] = { 0x003D0004, 0x003D0004, 0x00000000, 0x00000000 }; - u32 sp60[4] = { 0x003D0006, 0x003D0007, 0x003D0008, 0x003D0009 }; + u32 sp90[4] = { DATA_MAKE_NUM(DATADIR_M430, 0x0B), DATA_MAKE_NUM(DATADIR_M430, 0x0C), DATA_MAKE_NUM(DATADIR_M430, 0x0D), DATA_MAKE_NUM(DATADIR_M430, 0x0E) }; + u32 sp80[4] = { DATA_MAKE_NUM(DATADIR_M430, 0x02), DATA_MAKE_NUM(DATADIR_M430, 0x02), DATA_MAKE_NUM(DATADIR_M430, 0x03), DATA_MAKE_NUM(DATADIR_M430, 0x03) }; + u32 sp70[4] = { DATA_MAKE_NUM(DATADIR_M430, 0x04), DATA_MAKE_NUM(DATADIR_M430, 0x04), 0, 0 }; + u32 sp60[4] = { DATA_MAKE_NUM(DATADIR_M430, 0x06), DATA_MAKE_NUM(DATADIR_M430, 0x07), DATA_MAKE_NUM(DATADIR_M430, 0x08), DATA_MAKE_NUM(DATADIR_M430, 0x09) }; s32 sp50[4]; s32 sp40[4]; s32 sp30[4]; @@ -227,11 +227,11 @@ void fn_1_4CB4(omObjData *object) } var_r30 = work; for (var_r31 = 0; var_r31 < 2; var_r31++) { - object->model[var_r31] = Hu3DModelCreateFile(0x3D0000); + object->model[var_r31] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x00)); var_r30[var_r31].unk_18 = object->model[var_r31]; Hu3DModelLayerSet(var_r30[var_r31].unk_18, 0); Hu3DModelScaleSet(var_r30[var_r31].unk_18, 1.15f, 1.15f, 1.15f); - var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x3D000A), 1); + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M430, 0x0A)), 1); var_r30[var_r31].unk_1A = var_r27; Hu3DModelLayerSet(var_r27, 1); *((s16 *)Hu3DData[var_r27].unk_120) = 1; @@ -247,14 +247,14 @@ void fn_1_4CB4(omObjData *object) var_r26->material[var_r28].invAlpha = 0.001f; } } - object->model[2] = Hu3DModelCreateFile(0x3D000F); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x0F)); Hu3DModelLayerSet(object->model[2], 1); Hu3DModelScaleSet(object->model[2], 1.5f, 1.5f, 1.5f); - object->model[3] = Hu3DModelCreateFile(0x3D0010); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x10)); Hu3DModelLayerSet(object->model[3], 2); Hu3DModelScaleSet(object->model[3], 1.5f, 1.5f, 1.5f); for (var_r31 = 0; var_r31 < 2; var_r31++) { - var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x3D0015), 0x64); + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M430, 0x15)), 0x64); object->model[var_r31 + 4] = var_r27; var_r30[var_r31].unk_10 = var_r27; Hu3DModelLayerSet(var_r27, 2); @@ -264,7 +264,7 @@ void fn_1_4CB4(omObjData *object) *((s16 *)Hu3DData[var_r27].unk_120) = 0; } for (var_r31 = 0; var_r31 < 2; var_r31++) { - var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x3D0015), 0x64); + var_r27 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M430, 0x15)), 0x64); object->model[var_r31 + 6] = var_r27; var_r30[var_r31].unk_14 = var_r27; Hu3DModelLayerSet(var_r27, 1); @@ -701,7 +701,7 @@ M430DllUnkStruct2 *fn_1_70AC(omObjData *arg0, s32 var_r27, s16 var_r28) s32 var_r30; M430DllUnkStruct2 *var_r29; - u32 sp10[2] = { 0x003D0011, 0x003D0012 }; + u32 sp10[2] = { DATA_MAKE_NUM(DATADIR_M430, 0x11), DATA_MAKE_NUM(DATADIR_M430, 0x12) }; s32 sp8[2] = { 1, 2 }; var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r28 * sizeof(M430DllUnkStruct2), MEMORY_DEFAULT_NUM); memset(var_r29, 0, var_r28 * 0x3C); @@ -807,7 +807,7 @@ void fn_1_7848(omObjData *object) work = HuMemDirectMallocNum(HEAP_SYSTEM, var_r30 * sizeof(M430DllWork2), MEMORY_DEFAULT_NUM); object->data = work; memset(work, 0, var_r30 * sizeof(M430DllWork2)); - var_r26 = Hu3DModelCreateFile(0x3D0013); + var_r26 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M430, 0x13)); var_f29 = 1000.0f; for (var_r31 = work, var_r29 = 0; var_r29 < var_r30; var_r29++, var_r31++) { var_r31->unk_00 = Hu3DModelLink(var_r26); diff --git a/src/REL/m449Dll/main.c b/src/REL/m449Dll/main.c index e2ee45d9..be72261b 100644 --- a/src/REL/m449Dll/main.c +++ b/src/REL/m449Dll/main.c @@ -127,7 +127,8 @@ s32 lbl_1_data_0[0x12] = { 0x610000, }; s32 lbl_1_data_48[0x12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -s32 lbl_1_data_90[4] = { 0x5F0000, 0x500000, 0x5F0017, 0x5F0085 }; +s32 lbl_1_data_90[4] + = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), 0x500000, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x85) }; s32 lbl_1_data_A0[4] = { 0x50001C, 0x50001E, 0x50001D, 0x50001F }; u8 lbl_1_data_B0[0x38] = { 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, diff --git a/src/REL/m455Dll/main.c b/src/REL/m455Dll/main.c index 2a2c634a..fa1c4b5b 100644 --- a/src/REL/m455Dll/main.c +++ b/src/REL/m455Dll/main.c @@ -3,7 +3,6 @@ #include "game/object.h" #include "game/objsub.h" - #include "game/hsfmotion.h" #include "game/pad.h" @@ -15,7 +14,6 @@ #include "game/minigame_seq.h" #include "game/wipe.h" - #include "ext_math.h" #include "math.h" @@ -329,15 +327,15 @@ s32 fn_1_C90(void) s32 fn_1_3214(void); u32 lbl_1_data_E0[5][2] = { - 0x5F0000, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), 0, 0x540024, 1, 0x54001C, 1, - 0x5F0017, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), 0, - 0x5F0018, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), 0, }; diff --git a/src/REL/m456Dll/main.c b/src/REL/m456Dll/main.c index 8604098f..9c760c47 100644 --- a/src/REL/m456Dll/main.c +++ b/src/REL/m456Dll/main.c @@ -436,16 +436,16 @@ s32 fn_1_F4C(void) } M456DllDataE4Struct lbl_1_data_E4[0xA] = { - { 0x5F0000, 0 }, - { 0x55001C, 1 }, - { 0x550024, 1 }, - { 0x55002C, 1 }, - { 0x550034, 1 }, - { 0x5F002A, 0 }, - { 0x5F0005, 0 }, - { 0x5F0017, 0 }, - { 0x5F0018, 0 }, - { 0x55003C, 1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), 0 }, + { DATA_MAKE_NUM(DATADIR_M456, 0x1C), 1 }, + { DATA_MAKE_NUM(DATADIR_M456, 0x24), 1 }, + { DATA_MAKE_NUM(DATADIR_M456, 0x2C), 1 }, + { DATA_MAKE_NUM(DATADIR_M456, 0x34), 1 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2A), 0 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), 0 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), 0 }, + { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18), 0 }, + { DATA_MAKE_NUM(DATADIR_M456, 0x3C), 1 }, }; Vec lbl_1_data_134[4] = { { -300.0f, 0.0f, 0.0f }, @@ -826,7 +826,7 @@ void fn_1_2448(omObjData *object) } M456DllData1B0Struct lbl_1_data_1B0[0x10] = { - { 0x550044, 0x10E }, + { DATA_MAKE_NUM(DATADIR_M456, 0x44), 0x10E }, { 0x610037, 0xFA }, { 0x610030, 0xFA }, { 0x610030, 0xFA }, diff --git a/src/REL/m458Dll/main.c b/src/REL/m458Dll/main.c index 1e95123b..f7242c46 100644 --- a/src/REL/m458Dll/main.c +++ b/src/REL/m458Dll/main.c @@ -77,16 +77,16 @@ void fn_1_6D9C(omObjData *arg0); s32 lbl_1_data_0[2] = { 0x570025, 0x570026 }; s32 lbl_1_data_8[2] = { 0, 0 }; s32 lbl_1_data_10[0xA] = { - 0x5F0000, - 0x5F0002, - 0x5F0003, - 0x5F0005, - 0x5F0006, - 0x5F0036, - 0x5F002F, - 0x5F001A, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x36), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x2F), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A), 0x570000, - 0x5F0017, + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), }; u32 lbl_1_data_38[0xA] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 }; u32 lbl_1_data_60[0xA] = { 0x30008, 0, 0, 0x3000A, 0, 0, 0x57002A, 0x570028, 0x570029, 0x570027 }; diff --git a/src/REL/m461Dll/main.c b/src/REL/m461Dll/main.c index d24bdfd7..2c18e8cd 100644 --- a/src/REL/m461Dll/main.c +++ b/src/REL/m461Dll/main.c @@ -1,11 +1,11 @@ #include "REL/executor.h" #include "game/chrman.h" #include "game/frand.h" +#include "game/gamework.h" #include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" #include "game/wipe.h" -#include "game/gamework.h" #include "game/gamework_data.h" @@ -544,27 +544,19 @@ float lbl_1_bss_8; float lbl_1_bss_4; float lbl_1_bss_0; -s16 lbl_1_data_0[8] = { - 0, 1, 2, 3, 4, 5, 6, 7 -}; +s16 lbl_1_data_0[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; -s32 lbl_1_data_10[8] = { - 0, 1, 2, 3, 4, 5, 6, 7 -}; +s32 lbl_1_data_10[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; -float lbl_1_data_30[10] = { - 70, 70, 70, 70, 70, 70, 70, 70, 70, 100 -}; +float lbl_1_data_30[10] = { 70, 70, 70, 70, 70, 70, 70, 70, 70, 100 }; -float lbl_1_data_58[10] = { - 150, 170, 190, 170, 160, 150, 180, 200, 150, 200 -}; +float lbl_1_data_58[10] = { 150, 170, 190, 170, 160, 150, 180, 200, 150, 200 }; void fn_1_23B4(WorkPlayerOld *player) { s32 i; - for(i=0; i<8; i++) { - if(player->unk44 == player->unk14[i]) { + for (i = 0; i < 8; i++) { + if (player->unk44 == player->unk14[i]) { player->unk40 = lbl_1_data_10[i]; return; } @@ -580,7 +572,7 @@ void fn_1_2418(float *minDist, s32 *state, s32 stateNew, Vec *posA, float aYOfs, pointA.y += aYOfs; pointB.y += bYOfs; dist = VECDistance(&pointA, &pointB); - if(*minDist > dist) { + if (*minDist > dist) { *minDist = dist; *state = stateNew; } @@ -588,11 +580,11 @@ void fn_1_2418(float *minDist, s32 *state, s32 stateNew, Vec *posA, float aYOfs, void fn_1_24F8(WorkPlayerOld *player1, WorkPlayerOld *player2, float *minDist, s32 *state) { - *minDist = 10*(player1->unkBC+player2->unkBC); + *minDist = 10 * (player1->unkBC + player2->unkBC); fn_1_2418(minDist, state, 0, &player1->unk6C, player1->unkBC, &player2->unk6C, player2->unkBC); - fn_1_2418(minDist, state, 1, &player1->unk6C, player1->unkC0-player1->unkBC, &player2->unk6C, player2->unkC0-player2->unkBC); - fn_1_2418(minDist, state, 2, &player1->unk6C, player1->unkBC, &player2->unk6C, player2->unkC0-player2->unkBC); - fn_1_2418(minDist, state, 3, &player1->unk6C, player1->unkC0-player1->unkBC, &player2->unk6C, player2->unkBC); + fn_1_2418(minDist, state, 1, &player1->unk6C, player1->unkC0 - player1->unkBC, &player2->unk6C, player2->unkC0 - player2->unkBC); + fn_1_2418(minDist, state, 2, &player1->unk6C, player1->unkBC, &player2->unk6C, player2->unkC0 - player2->unkBC); + fn_1_2418(minDist, state, 3, &player1->unk6C, player1->unkC0 - player1->unkBC, &player2->unk6C, player2->unkBC); } s32 fn_1_2824(WorkPlayerOld *player, WorkPlayerOld *player2) @@ -600,29 +592,30 @@ s32 fn_1_2824(WorkPlayerOld *player, WorkPlayerOld *player2) Vec dir; Vec dir2; float dist; - + player->unk3C |= 0x1; - player->unk90.x = player->unk20/4.0f; - player->unk90.z = -(float)player->unk24/4.0f; - if(player->unk90.x != 0.0f || player->unk90.z != 0.0f) { + player->unk90.x = player->unk20 / 4.0f; + player->unk90.z = -(float)player->unk24 / 4.0f; + if (player->unk90.x != 0.0f || player->unk90.z != 0.0f) { return; } VECSubtract(&player->unk6C, &player2->unk6C, &dir); dist = VECMagXZ(&dir); - if(0.0f == dist) { + if (0.0f == dist) { dir.x = 0; dir.z = -1; - } else { + } + else { dir.x /= dist; dir.z /= dist; } VECSubtract(&player->unk6C, &player->unk78, &dir2); dist = VECMagXZ(&dir2); - if(5 > dist) { + if (5 > dist) { dist = 5; } - player->unk90.x = dir.x*dist; - player->unk90.z = dir.z*dist; + player->unk90.x = dir.x * dist; + player->unk90.z = dir.z * dist; } void fn_1_2BD0(WorkPlayerOld *player, float arg1, float arg2) @@ -630,7 +623,7 @@ void fn_1_2BD0(WorkPlayerOld *player, float arg1, float arg2) player->unk38 = 1; player->unk84.y = arg1; player->unkA4 = arg2; - if(player->unk3C & 0x2) { + if (player->unk3C & 0x2) { player->unk3C &= ~0x2; } } @@ -709,45 +702,46 @@ void fn_1_2E34(WorkPlayerOld *player) BOOL addTime; s32 i; player->unk3C &= ~0x100; - if(player->unk3C & 0x8) { + if (player->unk3C & 0x8) { return; } - if(NULL == lbl_1_bss_A8) { + if (NULL == lbl_1_bss_A8) { return; } addTime = FALSE; - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { WorkPlayerOld *player2 = lbl_1_bss_A8(i); BOOL fixPos; float minDist; s32 state; - if(player == player2) { - continue; + if (player == player2) { + continue; } - if(player2->unk3C & 0x8) { + if (player2->unk3C & 0x8) { continue; } fixPos = FALSE; fn_1_24F8(player, player2, &minDist, &state); - if(minDist < player->unkBC+player2->unkBC) { - if(state < 2) { + if (minDist < player->unkBC + player2->unkBC) { + if (state < 2) { fixPos = TRUE; - if(player->unk38 == 1) { + if (player->unk38 == 1) { fn_1_2824(player, player2); } - } else { - if(state == 2 && player->unk38 == 1) { + } + else { + if (state == 2 && player->unk38 == 1) { fn_1_2824(player, player2); player->unk3C |= 0x100; player->unkA4 = 0; - if(!(player2->unk3C & 0x100)) { + if (!(player2->unk3C & 0x100)) { player->unk84.y = 26.766666f; } } - if(state == 3) { + if (state == 3) { fixPos = TRUE; - if(player->unk38 == 1) { - if(0.0f < player->unk84.y) { + if (player->unk38 == 1) { + if (0.0f < player->unk84.y) { player->unk84.y = 0.0f; } player->unkA4 = 0; @@ -755,24 +749,26 @@ void fn_1_2E34(WorkPlayerOld *player) } } } - if(fixPos) { + if (fixPos) { Vec dir; addTime = TRUE; VECSubtract(&player->unk6C, &player2->unk6C, &dir); - if(0.0f == minDist) { + if (0.0f == minDist) { dir.x = 0; dir.z = -1; - } else { + } + else { dir.x /= minDist; dir.z /= minDist; } - player->unk6C.x = player2->unk6C.x+(dir.x*(player->unkBC+player2->unkBC)); - player->unk6C.z = player2->unk6C.z+(dir.z*(player->unkBC+player2->unkBC)); + player->unk6C.x = player2->unk6C.x + (dir.x * (player->unkBC + player2->unkBC)); + player->unk6C.z = player2->unk6C.z + (dir.z * (player->unkBC + player2->unkBC)); } } - if(addTime) { + if (addTime) { player->unk4C++; - } else { + } + else { player->unk4C = 0; } } @@ -783,62 +779,63 @@ float fn_1_39C4(WorkPlayerOld *player, float arg2) s32 i; AddX = 0; AddZ = 0; - if(NULL != player->unk68) { - for(pos=player->unk68, i=0; iunk64; i++, pos += 2) { + if (NULL != player->unk68) { + for (pos = player->unk68, i = 0; i < player->unk64; i++, pos += 2) { int num = 0; - if(pos[0].x == pos[1].x || pos[0].x > player->unk6C.x || pos[1].x < player->unk6C.x) { + if (pos[0].x == pos[1].x || pos[0].x > player->unk6C.x || pos[1].x < player->unk6C.x) { num++; } - if(pos[0].y == pos[1].y || pos[0].y > player->unk6C.y || pos[1].y < player->unk6C.y) { + if (pos[0].y == pos[1].y || pos[0].y > player->unk6C.y || pos[1].y < player->unk6C.y) { num++; } - if(pos[0].z == pos[1].z || pos[0].z > player->unk6C.z || pos[1].z < player->unk6C.z) { + if (pos[0].z == pos[1].z || pos[0].z > player->unk6C.z || pos[1].z < player->unk6C.z) { num++; } - if(num == 3) { - if(pos[0].x != pos[1].x) { - if(pos[0].x > player->unk6C.x) { - player->unk6C.x = pos[0].x+player->unkBC; + if (num == 3) { + if (pos[0].x != pos[1].x) { + if (pos[0].x > player->unk6C.x) { + player->unk6C.x = pos[0].x + player->unkBC; } - if(pos[1].x < player->unk6C.x) { - player->unk6C.x = pos[1].x-player->unkBC; + if (pos[1].x < player->unk6C.x) { + player->unk6C.x = pos[1].x - player->unkBC; } } - if(pos[0].y != pos[1].y) { - if(pos[0].y > player->unk6C.y) { + if (pos[0].y != pos[1].y) { + if (pos[0].y > player->unk6C.y) { player->unk6C.y = pos[0].y; } - if(pos[1].y < player->unk6C.y) { + if (pos[1].y < player->unk6C.y) { player->unk6C.y = pos[1].y; } } - if(pos[0].z != pos[1].z) { - if(pos[0].z > player->unk6C.z) { - player->unk6C.z = pos[0].z+player->unkBC; + if (pos[0].z != pos[1].z) { + if (pos[0].z > player->unk6C.z) { + player->unk6C.z = pos[0].z + player->unkBC; } - if(pos[1].z < player->unk6C.z) { - player->unk6C.z = pos[1].z-player->unkBC; + if (pos[1].z < player->unk6C.z) { + player->unk6C.z = pos[1].z - player->unkBC; } } } } } - return ABS(AddX)+ABS(AddZ); + return ABS(AddX) + ABS(AddZ); } void fn_1_3C74(WorkPlayerOld *player, s32 *state, u32 *motAttr) { *motAttr = HU3D_MOTATTR_LOOP; *state = 0; - if(0.5f <= player->unkA0) { - if(7.0f <= player->unkA0) { + if (0.5f <= player->unkA0) { + if (7.0f <= player->unkA0) { *state = 2; - } else { + } + else { *state = 1; } } - - if(player->unk14[3] >= 0 && (player->unk28 & 0x100)) { + + if (player->unk14[3] >= 0 && (player->unk28 & 0x100)) { fn_1_2BD0(player, 26.766666f, 1.0f); *motAttr = HU3D_MOTATTR_NONE; *state = 3; @@ -847,20 +844,22 @@ void fn_1_3C74(WorkPlayerOld *player, s32 *state, u32 *motAttr) void fn_1_3D4C(WorkPlayerOld *player, s32 *state, u32 *motAttr) { - if(0.0f < player->unkA4) { - if(player->unk2C & 0x100) { + if (0.0f < player->unkA4) { + if (player->unk2C & 0x100) { player->unkA4++; - if(4.0f < player->unkA4) { + if (4.0f < player->unkA4) { player->unkA4 = 0; - } else { + } + else { player->unk84.y += 3.65f; } - } else { + } + else { player->unkA4 = 0; } } player->unk84.y += -2.4333334f; - if(player->unk14[5] >= 0 && (player->unk28 & 0x140)) { + if (player->unk14[5] >= 0 && (player->unk28 & 0x140)) { player->unk38 = 3; player->unk84.y = 0.0f; player->unk3C &= ~0x3; @@ -872,13 +871,14 @@ void fn_1_3D4C(WorkPlayerOld *player, s32 *state, u32 *motAttr) void fn_1_3E60(WorkPlayerOld *player, s32 *state, u32 *motAttr) { - if((player->unk3C & 0x1000) || Hu3DMotionEndCheck(player->unk0->model[0])) { + if ((player->unk3C & 0x1000) || Hu3DMotionEndCheck(player->unk0->model[0])) { player->unk3C &= ~0x3; - if(player->unk40 == 6) { + if (player->unk40 == 6) { player->unk38 = 4; *motAttr = HU3D_MOTATTR_NONE; *state = 7; - } else { + } + else { player->unk38 = 0; *motAttr = HU3D_MOTATTR_LOOP; *state = 0; @@ -888,15 +888,14 @@ void fn_1_3E60(WorkPlayerOld *player, s32 *state, u32 *motAttr) void fn_1_3F18(WorkPlayerOld *player, s32 *state, u32 *motAttr) { - if(Hu3DMotionShiftIDGet(player->unk0->model[0]) < 0 && Hu3DMotionEndCheck(player->unk0->model[0])) { + if (Hu3DMotionShiftIDGet(player->unk0->model[0]) < 0 && Hu3DMotionEndCheck(player->unk0->model[0])) { fn_1_2BD0(player, 0.0f, 0.0f); } } - void fn_1_3FB8(WorkPlayerOld *player, s32 *state, u32 *motAttr) { - if(Hu3DMotionShiftIDGet(player->unk0->model[0]) < 0 && Hu3DMotionEndCheck(player->unk0->model[0])) { + if (Hu3DMotionShiftIDGet(player->unk0->model[0]) < 0 && Hu3DMotionEndCheck(player->unk0->model[0])) { player->unk3C &= ~0x4; player->unk38 = 0; *motAttr = HU3D_MOTATTR_LOOP; @@ -913,17 +912,18 @@ void fn_1_4054(WorkPlayerOld *player) float temp_f22; Vec *pos; BOOL temp_r27; - if(player->unk3C & 0x1) { + if (player->unk3C & 0x1) { player->unk84.x = player->unk90.x; player->unk84.z = player->unk90.z; - } else { - player->unk84.x = player->unk20/4.0f; - player->unk84.z = -(float)player->unk24/4.0f; - if(player->unk38 == 1 && 0.0f == player->unk84.x && 0.0f == player->unk84.z) { - player->unk84.x = 0.98f*(player->unk6C.x-player->unk78.x); - player->unk84.z = 0.98f*(player->unk6C.z-player->unk78.z); + } + else { + player->unk84.x = player->unk20 / 4.0f; + player->unk84.z = -(float)player->unk24 / 4.0f; + if (player->unk38 == 1 && 0.0f == player->unk84.x && 0.0f == player->unk84.z) { + player->unk84.x = 0.98f * (player->unk6C.x - player->unk78.x); + player->unk84.z = 0.98f * (player->unk6C.z - player->unk78.z); } - if(player->unk3C & 0x14) { + if (player->unk3C & 0x14) { player->unk84.x = 0; player->unk84.z = 0; player->unk28 = 0; @@ -931,15 +931,16 @@ void fn_1_4054(WorkPlayerOld *player) } player->unk78 = player->unk6C; player->unkA0 = VECMagXZ(&player->unk84); - if(0.5f <= player->unkA0) { - if(10.0f <= player->unkA0) { + if (0.5f <= player->unkA0) { + if (10.0f <= player->unkA0) { player->unk84.x /= player->unkA0; player->unk84.z /= player->unkA0; player->unkA0 = 10; - player->unk84.x = 10*player->unk84.x; - player->unk84.z = 10*player->unk84.z; + player->unk84.x = 10 * player->unk84.x; + player->unk84.z = 10 * player->unk84.z; } - } else { + } + else { player->unk84.x = 0; player->unk84.z = 0; player->unkA0 = 0; @@ -947,134 +948,137 @@ void fn_1_4054(WorkPlayerOld *player) player->unk84.x *= player->unkB8; player->unk84.z *= player->unkB8; player->unkA0 *= player->unkB8; - if(player->unk3C & 0x800) { + if (player->unk3C & 0x800) { player->unk28 |= 0x100; player->unk2C |= 0x100; - if(player->unk38 == 1) { - if(0.0f == player->unkA4) { + if (player->unk38 == 1) { + if (0.0f == player->unkA4) { player->unk3C &= ~0x800; } } } - switch(player->unk38) { + switch (player->unk38) { case 0: fn_1_3C74(player, &state, &motAttr); break; - + case 1: fn_1_3D4C(player, &state, &motAttr); break; - + case 2: fn_1_3E60(player, &state, &motAttr); break; - + case 3: fn_1_3F18(player, &state, &motAttr); break; - + case 4: fn_1_3FB8(player, &state, &motAttr); break; - + default: OSReport("*** player action error(%d)!!\n", player->unk38); break; } - if(player->unk3C & 0x2000) { + if (player->unk3C & 0x2000) { player->unk84.y = 0; } temp_f28 = 0; - if(50.0f < ABS(player->unk84.y)) { - player->unk84.y = 50.0f*((0.0f > player->unk84.y) ? -1 : 1); + if (50.0f < ABS(player->unk84.y)) { + player->unk84.y = 50.0f * ((0.0f > player->unk84.y) ? -1 : 1); } - if(player->unk3C & 0x2) { + if (player->unk3C & 0x2) { Mtx rotMtx; - MTXRotDeg(rotMtx, 'y', player->unk50[2].x-player->unk60); + MTXRotDeg(rotMtx, 'y', player->unk50[2].x - player->unk60); MTXMultVec(rotMtx, &player->unk54, &player->unk54); VECAdd(&player->unk54, &player->unk50[0], &player->unk6C); - player->unk9C += player->unk50[2].x-player->unk60; + player->unk9C += player->unk50[2].x - player->unk60; } temp_f22 = player->unk6C.y; VECAdd(&player->unk6C, &player->unk84, &player->unk6C); - if((player->unk3C & 0x1) == 0 && (0.0f != player->unk84.x || 0.0f != player->unk84.z)) { - player->unk9C = fn_1_1E20(player->unk9C, atan2d(player->unk84.x, player->unk84.z), 0.4f*player->unkB8); + if ((player->unk3C & 0x1) == 0 && (0.0f != player->unk84.x || 0.0f != player->unk84.z)) { + player->unk9C = fn_1_1E20(player->unk9C, atan2d(player->unk84.x, player->unk84.z), 0.4f * player->unkB8); } temp_f28 += fn_1_39C4(player, temp_f22); - if(nMap == 0) { + if (nMap == 0) { player->unkA8 = lbl_1_bss_A4; - } else { + } + else { player->unkA8 = MapPos(player->unk6C.x, player->unk6C.y, player->unk6C.z, player->unkC0, &player->unkAC); } temp_r27 = FALSE; - if(NULL != player->unk8) { + if (NULL != player->unk8) { pos = player->unk8(player->unk0); - if(NULL != pos) { - if(player->unkA8 < pos[1].y) { + if (NULL != pos) { + if (player->unkA8 < pos[1].y) { temp_r27 = TRUE; player->unk50 = pos; player->unkA8 = pos[1].y; } } } - if(!temp_r27 && (player->unk3C & 0x2)) { + if (!temp_r27 && (player->unk3C & 0x2)) { player->unk3C &= ~0x2; } - if(player->unk38 == 1 && player->unkA8 >= player->unk6C.y) { + if (player->unk38 == 1 && player->unkA8 >= player->unk6C.y) { player->unk38 = 2; player->unk3C &= ~0x3; player->unk6C.y = player->unkA8; player->unk84.y = 0; motAttr = HU3D_MOTATTR_NONE; state = 4; - if(player->unk40 == 5) { + if (player->unk40 == 5) { state = 6; - if(NULL != player->unk10) { + if (NULL != player->unk10) { player->unk10(player->unk0); } - if(player->unk18 < 4) { + if (player->unk18 < 4) { omVibrate(player->unk18, 12, 4, 2); } } - if(player->unk3C & 0x200) { + if (player->unk3C & 0x200) { state = -1; - if(NULL != player->unkC) { + if (NULL != player->unkC) { player->unkC(player->unk0); } } - if(temp_r27) { + if (temp_r27) { player->unk3C |= 0x2; } } - temp_f23 = player->unk6C.y-player->unkA8; - if(player->unk38 == 0 && 10.0f < temp_f23) { - if(!(player->unk3C & 0x2000) && (player->unk3C & 0x400)) { + temp_f23 = player->unk6C.y - player->unkA8; + if (player->unk38 == 0 && 10.0f < temp_f23) { + if (!(player->unk3C & 0x2000) && (player->unk3C & 0x400)) { player->unk3C |= 0x800; } - } else if(temp_r27) { - if(!(player->unk3C & 0x2)) { + } + else if (temp_r27) { + if (!(player->unk3C & 0x2)) { player->unk6C.y = player->unkA8; player->unk3C |= 0x2; } } fn_1_2E34(player); - if(NULL != player->unk4) { + if (NULL != player->unk4) { player->unk4(player->unk0); } temp_f28 += fn_1_39C4(player, player->unk6C.y); - if(player->unk3C & 0x2) { + if (player->unk3C & 0x2) { player->unk60 = player->unk50[2].x; VECSubtract(&player->unk6C, &player->unk50[0], &player->unk54); } - if(0.0f != temp_f28) { + if (0.0f != temp_f28) { player->unk48++; - } else { + } + else { player->unk48 = 0; } - if(state >= 0 && player->unk40 != state) { + if (state >= 0 && player->unk40 != state) { player->unk40 = state; player->unk44 = player->unk14[player->unk40]; - if(player->unk44 >= 0 && !(player->unk3C & 0x20)) { + if (player->unk44 >= 0 && !(player->unk3C & 0x20)) { Hu3DMotionShiftSet(player->unk0->model[0], player->unk0->motion[player->unk44], 0, 8, motAttr); } } @@ -1091,17 +1095,19 @@ void fn_1_4E1C(WorkPlayerOld *player, s32 motNo) player->unk84.y = 0; player->unk84.z = 0; fn_1_23B4(player); - if(player->unk40 == 3) { - Hu3DModelAttrReset(player->unk0->model[0], HU3D_MOTATTR_LOOP|HU3D_MOTATTR_PAUSE); + if (player->unk40 == 3) { + Hu3DModelAttrReset(player->unk0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); Hu3DMotionSet(player->unk0->model[0], player->unk0->motion[player->unk44]); - Hu3DMotionTimeSet(player->unk0->model[0], Hu3DMotionMaxTimeGet(player->unk0->model[0])-1); - } else if(player->unk40 == 5) { + Hu3DMotionTimeSet(player->unk0->model[0], Hu3DMotionMaxTimeGet(player->unk0->model[0]) - 1); + } + else if (player->unk40 == 5) { player->unk38 = 3; player->unk3C |= 0x4; - Hu3DModelAttrReset(player->unk0->model[0], HU3D_MOTATTR_LOOP|HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(player->unk0->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); Hu3DMotionSet(player->unk0->model[0], player->unk0->motion[player->unk44]); - Hu3DMotionTimeSet(player->unk0->model[0], Hu3DMotionMaxTimeGet(player->unk0->model[0])-1); - } else { + Hu3DMotionTimeSet(player->unk0->model[0], Hu3DMotionMaxTimeGet(player->unk0->model[0]) - 1); + } + else { Hu3DModelAttrReset(player->unk0->model[0], HU3D_MOTATTR_PAUSE); Hu3DMotionShiftSet(player->unk0->model[0], player->unk0->motion[player->unk44], 0, 8, HU3D_MOTATTR_LOOP); } @@ -1131,93 +1137,82 @@ Vec lbl_1_data_E8 = { -1500, 4000, 1500 }; Vec lbl_1_data_F4 = { 1.5, -4, -1.5 }; GXColor lbl_1_data_100 = { 255, 255, 255, 255 }; - Vec lbl_1_data_104 = { -1500, 4000, 1500 }; Vec lbl_1_data_110 = { 0, 0, 0 }; Vec lbl_1_data_11C = { 0, 1, 0 }; s32 lbl_1_data_128[8][5] = { - 0x005F0000, 0x005F0002, 0x005F0003, 0x005F0014, 0x005F0017, - 0x001A0000, 0x001A0002, 0x001A0003, 0x001A0014, 0x001A0017, - 0x006D0000, 0x006D0002, 0x006D0003, 0x006D0014, 0x006D0017, - 0x008A0000, 0x008A0002, 0x008A0003, 0x008A0014, 0x008A0017, - 0x00850000, 0x00850002, 0x00850003, 0x00850014, 0x00850017, - 0x00110000, 0x00110002, 0x00110003, 0x00110014, 0x00110017, - 0x000D0000, 0x000D0002, 0x000D0003, 0x000D0014, 0x000D0017, - 0x00810000, 0x00810002, 0x00810003, 0x00810014, 0x00810017 + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x14), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x14), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x02), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x03), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x14), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x14), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x14), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x14), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x14), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x14), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17), }; -s32 lbl_1_data_1C8[3] = { - 0x005A0002, - 0x005A0003, - 0x005A0008 -}; +s32 lbl_1_data_1C8[3] = { DATA_MAKE_NUM(DATADIR_M461, 0x02), DATA_MAKE_NUM(DATADIR_M461, 0x03), DATA_MAKE_NUM(DATADIR_M461, 0x08) }; -s32 lbl_1_data_1D4[4] = { - 0x005A0004, - 0x005A0005, - 0x005A0006, - 0x005A0007 -}; +s32 lbl_1_data_1D4[4] = { DATA_MAKE_NUM(DATADIR_M461, 0x04), DATA_MAKE_NUM(DATADIR_M461, 0x05), DATA_MAKE_NUM(DATADIR_M461, 0x06), DATA_MAKE_NUM(DATADIR_M461, 0x07) }; -float lbl_1_data_1E4[3] = { - 0.3f, - 0.5f, - 0.9f -}; +float lbl_1_data_1E4[3] = { 0.3f, 0.5f, 0.9f }; -float lbl_1_data_1F0[10][2] = { - 0, 60, - 1860, 60, - 3660, 50, - 5460, 50, - 7260, 40, - 9060, 40, - 10860, 30, - 12660, 20, - 14460, 10, - -1, 10 -}; +float lbl_1_data_1F0[10][2] = { 0, 60, 1860, 60, 3660, 50, 5460, 50, 7260, 40, 9060, 40, 10860, 30, 12660, 20, 14460, 10, -1, 10 }; -Vec lbl_1_data_240[3] = { - { 0, 0, 2800 }, - { 2800, 0, 0 }, - { -2800, 0, 0 } -}; +Vec lbl_1_data_240[3] = { { 0, 0, 2800 }, { 2800, 0, 0 }, { -2800, 0, 0 } }; -s32 lbl_1_data_264[3] = { - 70, 30, 0 -}; +s32 lbl_1_data_264[3] = { 70, 30, 0 }; typedef struct data270_struct { Vec unk0; float unkC; } Data270Struct; -Data270Struct lbl_1_data_270[8] = { - {{ 200, 0, 1400 }, 180 }, - {{ -200, 0, 1400 }, 180 }, - {{ 200, 0, -1400 }, 0 }, - {{ -200, 0, -1400 }, 0 }, - {{ 1400, 0, 200 }, 270 }, - {{ 1400, 0, -200 }, 270 }, - {{ -1400, 0, 200 }, 90 }, - {{ -1400, 0, -200}, 90 } -}; +Data270Struct lbl_1_data_270[8] = { { { 200, 0, 1400 }, 180 }, { { -200, 0, 1400 }, 180 }, { { 200, 0, -1400 }, 0 }, { { -200, 0, -1400 }, 0 }, + { { 1400, 0, 200 }, 270 }, { { 1400, 0, -200 }, 270 }, { { -1400, 0, 200 }, 90 }, { { -1400, 0, -200 }, 90 } }; -Vec lbl_1_data_2F0[4] = { - { 600, 0, 600 }, - { 600, 0, -600 }, - { -600, 0, 600 }, - { -600, 0, -600 } -}; +Vec lbl_1_data_2F0[4] = { { 600, 0, 600 }, { 600, 0, -600 }, { -600, 0, 600 }, { -600, 0, -600 } }; void fn_1_512C(void) { - if(HuPadBtn[0] & PAD_BUTTON_X) { + if (HuPadBtn[0] & PAD_BUTTON_X) { lbl_1_bss_200 = 35999; } - print8(24, 32, 1.5f, "COUNT:%d MODE:%d MES:%d %d/%d %02x", lbl_1_bss_204, lbl_1_bss_A0->work[0], lbl_1_bss_1FA, lbl_1_bss_20, lbl_1_bss_24, lbl_1_bss_28); + print8(24, 32, 1.5f, "COUNT:%d MODE:%d MES:%d %d/%d %02x", lbl_1_bss_204, lbl_1_bss_A0->work[0], lbl_1_bss_1FA, lbl_1_bss_20, lbl_1_bss_24, + lbl_1_bss_28); print8(24, 48, 1.5f, "%f %f %f", lbl_1_bss_0, lbl_1_bss_8, lbl_1_bss_4); print8(24, 64, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM), HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA)); @@ -1257,14 +1252,16 @@ typedef struct work_bomhei { void fn_1_5438(Vec *pos) { float dist = VECDistance(pos, &((WorkPlayer *)lbl_1_bss_9C->data)->unk0); - if(2000 < dist) { + if (2000 < dist) { return; } - if(1000 < dist) { + if (1000 < dist) { omVibrate(lbl_1_bss_18, 12, 6, 6); - } else if(300 < dist) { + } + else if (300 < dist) { omVibrate(lbl_1_bss_18, 12, 4, 2); - } else { + } + else { omVibrate(lbl_1_bss_18, 12, 12, 0); } } @@ -1272,40 +1269,40 @@ void fn_1_5438(Vec *pos) BOOL fn_1_5528(Vec *pos, float offset) { BOOL result = FALSE; - float ofs = 700-offset; + float ofs = 700 - offset; Mtx rotMtx; - - if(ofs < pos->x) { + + if (ofs < pos->x) { pos->x = ofs; } - if(ofs < pos->z) { + if (ofs < pos->z) { pos->z = ofs; } - if(-ofs > pos->x) { + if (-ofs > pos->x) { pos->x = -ofs; } - if(-ofs > pos->z) { + if (-ofs > pos->z) { pos->z = -ofs; } - if(ofs == ABS(pos->x) || ofs == ABS(pos->z)) { + if (ofs == ABS(pos->x) || ofs == ABS(pos->z)) { result = TRUE; } MTXRotDeg(rotMtx, 'Y', 45); MTXMultVec(rotMtx, pos, pos); - ofs = (550*sqrtf(2))-offset; - if(ofs < pos->x) { + ofs = (550 * sqrtf(2)) - offset; + if (ofs < pos->x) { pos->x = ofs; } - if(ofs < pos->z) { + if (ofs < pos->z) { pos->z = ofs; } - if(-ofs > pos->x) { + if (-ofs > pos->x) { pos->x = -ofs; } - if(-ofs > pos->z) { + if (-ofs > pos->z) { pos->z = -ofs; } - if(ofs == ABS(pos->x) || ofs == ABS(pos->z)) { + if (ofs == ABS(pos->x) || ofs == ABS(pos->z)) { result = TRUE; } MTXRotDeg(rotMtx, 'Y', -45); @@ -1315,19 +1312,20 @@ BOOL fn_1_5528(Vec *pos, float offset) void fn_1_5894(Vec *pos1, Vec *pos2, float radius1, float radius2) { - float dx = pos1->x-pos2->x; - float dz = pos1->z-pos2->z; - float dist = sqrtf((dx*dx)+(dz*dz)); - if(radius1+radius2 > dist) { - if(0.0f == dist) { + float dx = pos1->x - pos2->x; + float dz = pos1->z - pos2->z; + float dist = sqrtf((dx * dx) + (dz * dz)); + if (radius1 + radius2 > dist) { + if (0.0f == dist) { dx = 0; dz = -1; - } else { + } + else { dx /= dist; dz /= dist; } - pos1->x = pos2->x+(dx*(radius1+radius2)); - pos1->z = pos2->z+(dz*(radius1+radius2)); + pos1->x = pos2->x + (dx * (radius1 + radius2)); + pos1->z = pos2->z + (dz * (radius1 + radius2)); } } @@ -1338,9 +1336,9 @@ void fn_1_5A7C(WorkPlayer *player, omObjData *obj) player->unk58 = 2002; Hu3DMotionShiftSet(obj->model[0], obj->motion[3], 0, 8, HU3D_MOTATTR_NONE); distMin = 100000; - for(i=0; i<3; i++) { + for (i = 0; i < 3; i++) { float dist = VECDistance(&lbl_1_data_240[i], &player->unk0); - if(distMin > dist) { + if (distMin > dist) { distMin = dist; player->unk3C = lbl_1_data_240[i]; } @@ -1359,45 +1357,47 @@ void fn_1_5BF4(WorkPlayer *player, omObjData *obj) player->unkC.x = 0; player->unkC.y = 0; player->unkC.z = 0; - player->unkC.x = player->unk4C/4.0f; - player->unkC.z = -(float)player->unk50/4.0f; + player->unkC.x = player->unk4C / 4.0f; + player->unkC.z = -(float)player->unk50 / 4.0f; action = 0; player->unk18.z = VECMagXZ(&player->unkC); - if(0.5f <= player->unk18.z) { - if(10.0f <= player->unk18.z) { + if (0.5f <= player->unk18.z) { + if (10.0f <= player->unk18.z) { player->unkC.x /= player->unk18.z; player->unkC.z /= player->unk18.z; player->unk18.z = 10; - player->unkC.x = 10*player->unkC.x; - player->unkC.z = 10*player->unkC.z; + player->unkC.x = 10 * player->unkC.x; + player->unkC.z = 10 * player->unkC.z; } player->unk18.y = fn_1_1E20(player->unk18.y, atan2d(player->unkC.x, player->unkC.z), 0.4f); - if(7.0f <= player->unk18.z) { + if (7.0f <= player->unk18.z) { action = 2; - } else { + } + else { action = 1; } } VECAdd(&player->unk0, &player->unkC, &player->unk0); fn_1_5528(&player->unk0, 70); - for(i=0; i<20; i++) { + for (i = 0; i < 20; i++) { WorkBomhei *bomhei; - if(NULL == lbl_1_bss_4C[i]) { + if (NULL == lbl_1_bss_4C[i]) { continue; } bomhei = lbl_1_bss_4C[i]->data; - if(bomhei->unk34 == 3004 && 30 > Hu3DMotionTimeGet(lbl_1_bss_4C[i]->model[2])) { - float dx = player->unk0.x-bomhei->unk0.x; - float dz = player->unk0.z-bomhei->unk0.z; - if(200 > sqrtf((dx*dx)+(dz*dz))) { + if (bomhei->unk34 == 3004 && 30 > Hu3DMotionTimeGet(lbl_1_bss_4C[i]->model[2])) { + float dx = player->unk0.x - bomhei->unk0.x; + float dz = player->unk0.z - bomhei->unk0.z; + if (200 > sqrtf((dx * dx) + (dz * dz))) { lbl_1_bss_14 = 1; } - } else { + } + else { fn_1_5894(&player->unk0, &bomhei->unk0, 70, 70); } } fn_1_5528(&player->unk0, 70); - if(player->unk54 != action) { + if (player->unk54 != action) { player->unk54 = action; Hu3DMotionShiftSet(obj->model[0], obj->motion[player->unk54], 0, 8, HU3D_MOTATTR_LOOP); } @@ -1409,73 +1409,74 @@ void fn_1_6A00(omObjData *obj) float dx; float dz; float dist; - switch(player->unk58) { + switch (player->unk58) { case 2000: - if(lbl_1_bss_A0->work[0] >= 1004) { + if (lbl_1_bss_A0->work[0] >= 1004) { player->unk58++; } break; - + case 2001: player->unk4C = HuPadStkX[player->unk60]; player->unk50 = HuPadStkY[player->unk60]; fn_1_5BF4(player, obj); - if(lbl_1_bss_A0->work[0] >= 1005) { - if(lbl_1_bss_14) { + if (lbl_1_bss_A0->work[0] >= 1005) { + if (lbl_1_bss_14) { fn_1_5A7C(player, obj); - } else { + } + else { player->unk58 = 2003; Hu3DMotionShiftSet(obj->model[0], obj->motion[0], 0, 8, HU3D_MOTATTR_LOOP); } } break; - + case 2002: - dx = player->unk3C.x-player->unk0.x; - dz = player->unk3C.z-player->unk0.z; - dist = sqrtf((dx*dx)+(dz*dz)); - if(player->unk48 < dist) { - dx = player->unk48*(dx/dist); - dz = player->unk48*(dz/dist); + dx = player->unk3C.x - player->unk0.x; + dz = player->unk3C.z - player->unk0.z; + dist = sqrtf((dx * dx) + (dz * dz)); + if (player->unk48 < dist) { + dx = player->unk48 * (dx / dist); + dz = player->unk48 * (dz / dist); } player->unk18.x -= player->unk48; - if(0.0f > player->unk18.x) { + if (0.0f > player->unk18.x) { player->unk18.x += 360; } - player->unk18.y = fn_1_1E20(player->unk18.y, atan2d(dx, dz)+180.0, 0.4f); + player->unk18.y = fn_1_1E20(player->unk18.y, atan2d(dx, dz) + 180.0, 0.4f); player->unk0.x += dx; player->unk0.z += dz; - dist = VECDistance(&player->unk3C, &player->unk0)/VECDistance(&player->unk3C, &player->unk30); - player->unk0.y = 500*sind(dist*180); + dist = VECDistance(&player->unk3C, &player->unk0) / VECDistance(&player->unk3C, &player->unk30); + player->unk0.y = 500 * sind(dist * 180); player->unk48 *= 1.05f; - if(lbl_1_bss_10 >= 0) { + if (lbl_1_bss_10 >= 0) { HuAudFXEmiterUpDate(lbl_1_bss_10, &player->unk0); } - if(lbl_1_bss_C >= 0) { + if (lbl_1_bss_C >= 0) { HuAudFXEmiterUpDate(lbl_1_bss_C, &player->unk0); } fn_1_5438(&player->unk24); - if(lbl_1_bss_A0->work[0] >= 1007) { + if (lbl_1_bss_A0->work[0] >= 1007) { player->unk58 = 2005; HuAudSStreamPlay(4); } break; - + case 2003: - if(lbl_1_bss_A0->work[0] >= 1007) { + if (lbl_1_bss_A0->work[0] >= 1007) { player->unk58 = 2004; HuAudSStreamPlay(1); Hu3DMotionShiftSet(obj->model[0], obj->motion[4], 0, 8, HU3D_MOTATTR_NONE); } break; - + case 2004: player->unk18.y = fn_1_1E20(player->unk18.y, 0, 0.4f); break; - + case 2005: break; - + default: OSReport("*** player mode error(%d)!!\n", player->unk58); break; @@ -1496,7 +1497,7 @@ void fn_1_7328(omObjData *obj) player->unk54 = 0; obj->model[0] = CharModelCreate(lbl_1_data_0[player->unk5C], 2); CharModelStepTypeSet(lbl_1_data_0[player->unk5C], 0); - for(i=0; i<5; i++) { + for (i = 0; i < 5; i++) { obj->motion[i] = CharModelMotionCreate(lbl_1_data_0[player->unk5C], lbl_1_data_128[player->unk5C][i]); CharModelMotionSet(lbl_1_data_0[player->unk5C], obj->motion[i]); } @@ -1523,8 +1524,8 @@ void fn_1_75B0(WorkBomhei *bomhei, omObjData *obj) float *data1F0; bomhei->unk34 = 3003; bomhei->unk24 = 10; - for(data1F0=&lbl_1_data_1F0[0][0]; 0.0f<=data1F0[0]; data1F0 += 2) { - if(data1F0[0] <= lbl_1_bss_200) { + for (data1F0 = &lbl_1_data_1F0[0][0]; 0.0f <= data1F0[0]; data1F0 += 2) { + if (data1F0[0] <= lbl_1_bss_200) { bomhei->unk24 = data1F0[1]; } } @@ -1537,20 +1538,20 @@ void fn_1_75B0(WorkBomhei *bomhei, omObjData *obj) BOOL fn_1_76CC(WorkBomhei *bomhei) { - if(bomhei->unk34 == 3002) { - if(fn_1_5528(&bomhei->unk0, 70)) { + if (bomhei->unk34 == 3002) { + if (fn_1_5528(&bomhei->unk0, 70)) { return TRUE; } - } else { - float ofs = 700-70; - - if(ofs > bomhei->unk0.x && -ofs < bomhei->unk0.x) { - if(ofs > bomhei->unk0.z && -ofs < bomhei->unk0.z) { - if(bomhei->unk28 >= 0) { + } + else { + float ofs = 700 - 70; + + if (ofs > bomhei->unk0.x && -ofs < bomhei->unk0.x) { + if (ofs > bomhei->unk0.z && -ofs < bomhei->unk0.z) { + if (bomhei->unk28 >= 0) { lbl_1_bss_28 = lbl_1_bss_28 & ~(u32)(1 << bomhei->unk28); bomhei->unk28 = -1; } - } } } @@ -1559,35 +1560,36 @@ BOOL fn_1_76CC(WorkBomhei *bomhei) void fn_1_7AD8(WorkBomhei *bomhei, omObjData *obj) { - float radius = 10*lbl_1_data_1E4[bomhei->unk30]; + float radius = 10 * lbl_1_data_1E4[bomhei->unk30]; Vec playerOfs; Vec angle; - + s32 i; s32 state; BOOL temp_r25; - + angle.x = bomhei->unkC.y; - if(bomhei->unk34 == 3002) { - switch(bomhei->unk30) { + if (bomhei->unk34 == 3002) { + switch (bomhei->unk30) { case 0: bomhei->unk18.x--; - if(0.0f > bomhei->unk18.x) { + if (0.0f > bomhei->unk18.x) { radius = 0; - if(-bomhei->unk18.y > bomhei->unk18.x) { - bomhei->unk18.y = frandmod(120)+120; - bomhei->unk18.x = frandmod(120)+120; + if (-bomhei->unk18.y > bomhei->unk18.x) { + bomhei->unk18.y = frandmod(120) + 120; + bomhei->unk18.x = frandmod(120) + 120; } - } else { + } + else { bomhei->unk18.z--; - if(0.0f > bomhei->unk18.z) { - bomhei->unk18.z = frandmod(120)+120; - bomhei->unkC.z = frandf()*360; + if (0.0f > bomhei->unk18.z) { + bomhei->unk18.z = frandmod(120) + 120; + bomhei->unkC.z = frandf() * 360; } } angle.x = bomhei->unkC.z; break; - + case 1: case 2: VECSubtract(&((WorkPlayer *)lbl_1_bss_9C->data)->unk0, &bomhei->unk0, &playerOfs); @@ -1596,49 +1598,50 @@ void fn_1_7AD8(WorkBomhei *bomhei, omObjData *obj) } } bomhei->unkC.y = fn_1_1E20(bomhei->unkC.y, angle.x, 0.05f); - angle.z = radius*sind(bomhei->unkC.y); - angle.y = radius*cosd(bomhei->unkC.y); + angle.z = radius * sind(bomhei->unkC.y); + angle.y = radius * cosd(bomhei->unkC.y); bomhei->unk0.x += angle.z; bomhei->unk0.z += angle.y; - if(0.0f < radius) { + if (0.0f < radius) { bomhei->unkC.x = fn_1_1E20(bomhei->unkC.x, atan2d(angle.z, angle.y), 0.2f); } state = 0; - if(0.5f <= radius) { - if(7.0f <= radius) { + if (0.5f <= radius) { + if (7.0f <= radius) { state = 2; - } else { + } + else { state = 1; } } temp_r25 = FALSE; - if(fn_1_76CC(bomhei)) { + if (fn_1_76CC(bomhei)) { temp_r25 = TRUE; } fn_1_5894(&bomhei->unk0, &((WorkPlayer *)lbl_1_bss_9C->data)->unk0, 70, 70); - for(i=0; i<20; i++) { + for (i = 0; i < 20; i++) { WorkBomhei *bomhei2; - if(NULL == lbl_1_bss_4C[i]) { + if (NULL == lbl_1_bss_4C[i]) { continue; } - if(obj == lbl_1_bss_4C[i]) { + if (obj == lbl_1_bss_4C[i]) { continue; } bomhei2 = lbl_1_bss_4C[i]->data; - if(bomhei2->unk34 != 3004) { + if (bomhei2->unk34 != 3004) { fn_1_5894(&bomhei->unk0, &bomhei2->unk0, 70, 70); } } - if(fn_1_76CC(bomhei)) { + if (fn_1_76CC(bomhei)) { temp_r25 = TRUE; } - if(temp_r25 && bomhei->unk30 == 0) { - float radius = frandf()*350; - float angle2 = frandf()*360; - bomhei->unkC.z = atan2d((radius*sind(angle2))-bomhei->unk0.x, (radius*cosd(angle2))-bomhei->unk0.z); - bomhei->unk18.z = frandmod(120)+120; + if (temp_r25 && bomhei->unk30 == 0) { + float radius = frandf() * 350; + float angle2 = frandf() * 360; + bomhei->unkC.z = atan2d((radius * sind(angle2)) - bomhei->unk0.x, (radius * cosd(angle2)) - bomhei->unk0.z); + bomhei->unk18.z = frandmod(120) + 120; } - if(bomhei->unk2C != state) { + if (bomhei->unk2C != state) { bomhei->unk2C = state; Hu3DMotionShiftSet(obj->model[0], obj->motion[bomhei->unk2C], 0, 8, HU3D_MOTATTR_LOOP); } @@ -1650,61 +1653,61 @@ void fn_1_8D08(omObjData *obj) { WorkBomhei *bomhei = obj->data; s32 i; - switch(bomhei->unk34) { + switch (bomhei->unk34) { case 3000: - if(lbl_1_bss_A0->work[0] >= 1004) { + if (lbl_1_bss_A0->work[0] >= 1004) { bomhei->unk34 = 3002; } break; - + case 3001: fn_1_7AD8(bomhei, obj); - if(bomhei->unk28 < 0) { + if (bomhei->unk28 < 0) { bomhei->unk34 = 3002; } break; - + case 3002: fn_1_7AD8(bomhei, obj); bomhei->unk24--; - if(0.0f > bomhei->unk24) { + if (0.0f > bomhei->unk24) { fn_1_75B0(bomhei, obj); } break; - + case 3003: bomhei->unk24--; - if(0.0f > bomhei->unk24) { + if (0.0f > bomhei->unk24) { bomhei->unk34++; Hu3DModelAttrSet(obj->model[1], HU3D_ATTR_DISPOFF); - Hu3DModelAttrReset(obj->model[2], HU3D_MOTATTR_PAUSE|HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(obj->model[2], HU3D_MOTATTR_PAUSE | HU3D_MOTATTR_LOOP); Hu3DModelAttrReset(obj->model[2], HU3D_ATTR_DISPOFF); HuAudFXEmiterPlay(2082, &bomhei->unk0); fn_1_5438(&bomhei->unk0); } break; - + case 3004: - if(Hu3DMotionEndCheck(obj->model[2])) { + if (Hu3DMotionEndCheck(obj->model[2])) { fn_1_9724(obj); return; } break; - + case 3005: break; - + default: OSReport("*** bomhei mode error(%d)!!\n", bomhei->unk34); break; } - if(bomhei->unk34 != 3004 && lbl_1_bss_A0->work[0] >= 1005) { + if (bomhei->unk34 != 3004 && lbl_1_bss_A0->work[0] >= 1005) { bomhei->unk34 = 3005; Hu3DMotionShiftSet(obj->model[0], obj->motion[0], 0, 8, HU3D_MOTATTR_LOOP); } omSetTra(obj, bomhei->unk0.x, bomhei->unk0.y, bomhei->unk0.z); omSetRot(obj, 0, bomhei->unkC.x, 0); - for(i=0; i<3; i++) { + for (i = 0; i < 3; i++) { Hu3DModelPosSet(obj->model[i], bomhei->unk0.x, bomhei->unk0.y, bomhei->unk0.z); Hu3DModelRotSet(obj->model[i], 0, bomhei->unkC.x, 0); } @@ -1718,27 +1721,30 @@ void fn_1_9164(omObjData *obj) omSetTra(obj, bomhei->unk0.x, bomhei->unk0.y, bomhei->unk0.z); omSetRot(obj, 0, bomhei->unkC.x, 0); modelId = fn_1_AC(0x1000); - if(modelId < 0) { + if (modelId < 0) { obj->model[0] = Hu3DModelLink(lbl_1_bss_3C[0]); - } else { + } + else { obj->model[0] = modelId; } modelId = fn_1_AC(0x2000); - if(modelId < 0) { + if (modelId < 0) { obj->model[1] = Hu3DModelLink(lbl_1_bss_3C[1]); - } else { + } + else { obj->model[1] = modelId; } modelId = fn_1_AC(0x3000); - if(modelId < 0) { + if (modelId < 0) { obj->model[2] = Hu3DModelLink(lbl_1_bss_3C[2]); - } else { + } + else { obj->model[2] = modelId; } - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { obj->motion[i] = lbl_1_bss_2C[i]; } - for(i=0; i<3; i++) { + for (i = 0; i < 3; i++) { Hu3DModelAttrSet(obj->model[i], HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(obj->model[i], HU3D_MOTATTR_LOOP); Hu3DModelAttrReset(obj->model[i], HU3D_MOTATTR_PAUSE); @@ -1750,8 +1756,8 @@ void fn_1_9164(omObjData *obj) Hu3DModelLayerSet(obj->model[2], 4); Hu3DModelShadowSet(obj->model[0]); Hu3DModelShadowSet(obj->model[1]); - for(i=0; i<20; i++) { - if(NULL == lbl_1_bss_4C[i]) { + for (i = 0; i < 20; i++) { + if (NULL == lbl_1_bss_4C[i]) { lbl_1_bss_4C[i] = obj; break; } @@ -1777,10 +1783,10 @@ void fn_1_956C(Vec *pos, float rotY, s32 type, s32 mode, s32 time) bomhei->unk28 = time; bomhei->unkC.y = bomhei->unkC.x; bomhei->unkC.z = bomhei->unkC.x; - bomhei->unk18.x = frandmod(120)+120; - bomhei->unk18.y = frandmod(120)+120; - bomhei->unk18.z = frandmod(120)+120; - bomhei->unk24 = frandmod(300)+180; + bomhei->unk18.x = frandmod(120) + 120; + bomhei->unk18.y = frandmod(120) + 120; + bomhei->unk18.z = frandmod(120) + 120; + bomhei->unk24 = frandmod(300) + 180; bomhei->unk2C = 0; } @@ -1788,15 +1794,15 @@ void fn_1_9724(omObjData *obj) { s32 i; lbl_1_bss_20--; - for(i=0; i<20; i++) { - if(obj == lbl_1_bss_4C[i]) { + for (i = 0; i < 20; i++) { + if (obj == lbl_1_bss_4C[i]) { lbl_1_bss_4C[i] = NULL; break; } } - for(i=0; i<3; i++) { + for (i = 0; i < 3; i++) { Hu3DModelAttrSet(obj->model[i], HU3D_ATTR_DISPOFF); - fn_1_24((i*4096)+4096, obj->model[i]); + fn_1_24((i * 4096) + 4096, obj->model[i]); } omDelObjEx(lbl_1_bss_238, obj); } @@ -1819,50 +1825,50 @@ typedef struct work_bomhei2 { void fn_1_9854(void) { - if(lbl_1_bss_200 % 900 == 0) { - if(++lbl_1_bss_24 >= 20) { + if (lbl_1_bss_200 % 900 == 0) { + if (++lbl_1_bss_24 >= 20) { lbl_1_bss_24 = 20; } } - if(lbl_1_bss_200 % 1800 == 0) { - if(lbl_1_data_264[2] < 40) { + if (lbl_1_bss_200 % 1800 == 0) { + if (lbl_1_data_264[2] < 40) { lbl_1_data_264[2] += 10; - if(lbl_1_data_264[2] > 100) { + if (lbl_1_data_264[2] > 100) { lbl_1_data_264[2] = 100; } lbl_1_data_264[1] -= 5; - if(lbl_1_data_264[1] < 0) { + if (lbl_1_data_264[1] < 0) { lbl_1_data_264[1] = 0; lbl_1_data_264[0] -= 5; } lbl_1_data_264[0] -= 5; - if(lbl_1_data_264[0] < 0) { + if (lbl_1_data_264[0] < 0) { lbl_1_data_264[0] = 0; } } } - if(lbl_1_bss_24 > lbl_1_bss_20) { + if (lbl_1_bss_24 > lbl_1_bss_20) { Data270Struct *data270 = NULL; s32 bitNum = frandmod(8); s32 i; - for(i=0; i<8; i++) { - if(((1 << bitNum) & lbl_1_bss_28) == 0) { + for (i = 0; i < 8; i++) { + if (((1 << bitNum) & lbl_1_bss_28) == 0) { data270 = &lbl_1_data_270[bitNum]; lbl_1_bss_28 |= (1 << bitNum); (void)i; break; } bitNum++; - if(bitNum >= 8) { + if (bitNum >= 8) { bitNum -= 8; } } - if(NULL != data270) { + if (NULL != data270) { s32 type = 2; s32 chance = frandmod(100); Vec pos; - for(i=0; i<3; i++) { - if(lbl_1_data_264[i] > chance) { + for (i = 0; i < 3; i++) { + if (lbl_1_data_264[i] > chance) { type = i; break; } @@ -1893,12 +1899,13 @@ WorkBomhei2 *fn_1_9CAC(omObjFunc func, s32 prio) bomhei->unk8.y = 10; bomhei->unk8.z = 0; modelId = fn_1_AC(0x1000); - if(modelId < 0) { + if (modelId < 0) { obj->model[0] = Hu3DModelLink(lbl_1_bss_3C[0]); - } else { + } + else { obj->model[0] = modelId; } - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { obj->motion[i] = lbl_1_bss_2C[i]; } omSetTra(obj, bomhei->unk8.x, bomhei->unk8.y, bomhei->unk8.z); @@ -1920,27 +1927,27 @@ void fn_1_9EF4(omObjData *obj) float vel = 3; float dx; float dz; - + s32 state; - switch(bomhei->unk44) { + switch (bomhei->unk44) { case 0: - if(bomhei->unk3C != 1) { + if (bomhei->unk3C != 1) { bomhei->unk3C = 1; Hu3DMotionShiftSet(obj->model[0], obj->motion[bomhei->unk3C], 0, 8, HU3D_MOTATTR_LOOP); } - dx = bomhei->unk14.x-bomhei->unk8.x; - dz = bomhei->unk14.z-bomhei->unk8.z; - dist = sqrtf((dx*dx)+(dz*dz)); - if(vel < dist) { - dx = vel*(dx/dist); - dz = vel*(dz/dist); + dx = bomhei->unk14.x - bomhei->unk8.x; + dz = bomhei->unk14.z - bomhei->unk8.z; + dist = sqrtf((dx * dx) + (dz * dz)); + if (vel < dist) { + dx = vel * (dx / dist); + dz = vel * (dz / dist); } bomhei->unk8.x += dx; bomhei->unk8.z += dz; bomhei->unk2C = fn_1_1E20(bomhei->unk2C, atan2d(dx, dz), 0.4f); bomhei->unk30 = bomhei->unk2C; - if(vel > dist) { - switch(bomhei->unk40) { + if (vel > dist) { + switch (bomhei->unk40) { case 1: case 2: bomhei->unk44 = 1; @@ -1948,30 +1955,29 @@ void fn_1_9EF4(omObjData *obj) bomhei->unk3C = 0; Hu3DMotionShiftSet(obj->model[0], obj->motion[bomhei->unk3C], 0, 8, HU3D_MOTATTR_LOOP); break; - + default: bomhei->unk44 = 3; break; } } break; - + case 1: - bomhei->unk2C = fn_1_1E20(bomhei->unk2C, atan2d(parent->unk8.x-bomhei->unk8.x, parent->unk8.z-bomhei->unk8.z), 0.05f); + bomhei->unk2C = fn_1_1E20(bomhei->unk2C, atan2d(parent->unk8.x - bomhei->unk8.x, parent->unk8.z - bomhei->unk8.z), 0.05f); bomhei->unk30 = bomhei->unk2C; - parent->unk2C = fn_1_1E20(parent->unk2C, atan2d(bomhei->unk8.x-parent->unk8.x, bomhei->unk8.z-parent->unk8.z), 0.05f); + parent->unk2C = fn_1_1E20(parent->unk2C, atan2d(bomhei->unk8.x - parent->unk8.x, bomhei->unk8.z - parent->unk8.z), 0.05f); parent->unk30 = parent->unk2C; bomhei->unk34++; - if(180.0f < bomhei->unk34) { + if (180.0f < bomhei->unk34) { bomhei->unk44 = 3; - if(bomhei->unk40 == 2) { + if (bomhei->unk40 == 2) { bomhei->unk44 = 2; } } break; - - case 2: - { + + case 2: { Vec temp = parent->unk8; float tempAngle = parent->unk2C; parent->unk20 = parent->unk8; @@ -1982,40 +1988,39 @@ void fn_1_9EF4(omObjData *obj) bomhei->unk30 = tempAngle; bomhei->unk34 = 0; bomhei->unk44 = 3; - } - break; - + } break; + case 3: - bomhei->unk30 = fn_1_1E20(bomhei->unk30, atan2d(bomhei->unk20.x-bomhei->unk14.x, bomhei->unk20.z-bomhei->unk14.z), 0.2f); + bomhei->unk30 = fn_1_1E20(bomhei->unk30, atan2d(bomhei->unk20.x - bomhei->unk14.x, bomhei->unk20.z - bomhei->unk14.z), 0.2f); bomhei->unk2C = bomhei->unk30; - bomhei->unk8.x += vel*sind(bomhei->unk30); - bomhei->unk8.z += vel*cosd(bomhei->unk30); - if(bomhei->unk3C != 1) { + bomhei->unk8.x += vel * sind(bomhei->unk30); + bomhei->unk8.z += vel * cosd(bomhei->unk30); + if (bomhei->unk3C != 1) { bomhei->unk3C = 1; Hu3DMotionShiftSet(obj->model[0], obj->motion[bomhei->unk3C], 0, 8, HU3D_MOTATTR_LOOP); } parent->unk2C = fn_1_1E20(parent->unk2C, atan2d(-parent->unk8.x, -parent->unk8.z), 0.05f); bomhei->unk34++; - if(bomhei->unk40 == 2 && 60.0f < bomhei->unk34) { - dx = parent->unk20.x-parent->unk8.x; - dz = parent->unk20.z-parent->unk8.z; - dist = sqrtf((dx*dx)+(dz*dz)); - if(vel < dist) { - dx = vel*(dx/dist); - dz = vel*(dz/dist); + if (bomhei->unk40 == 2 && 60.0f < bomhei->unk34) { + dx = parent->unk20.x - parent->unk8.x; + dz = parent->unk20.z - parent->unk8.z; + dist = sqrtf((dx * dx) + (dz * dz)); + if (vel < dist) { + dx = vel * (dx / dist); + dz = vel * (dz / dist); } parent->unk8.x += dx; parent->unk8.z += dz; state = 0; - if(0.0f < dist) { + if (0.0f < dist) { state = 1; } - if(state != parent->unk3C) { + if (state != parent->unk3C) { parent->unk3C = state; Hu3DMotionShiftSet(parent->unk0->model[0], parent->unk0->motion[parent->unk3C], 0, 8, HU3D_MOTATTR_LOOP); } } - if(1750 < VECMagXZ(&bomhei->unk8)) { + if (1750 < VECMagXZ(&bomhei->unk8)) { parent->unk4 = NULL; Hu3DModelAttrSet(obj->model[0], HU3D_ATTR_DISPOFF); fn_1_24(0x1000, obj->model[0]); @@ -2026,9 +2031,9 @@ void fn_1_9EF4(omObjData *obj) } omSetTra(obj, bomhei->unk8.x, bomhei->unk8.y, bomhei->unk8.z); omSetRot(obj, 0, bomhei->unk2C, 0); - if(bomhei->unk38) { + if (bomhei->unk38) { bomhei->unk38 = 0; - Hu3DMotionTimeSet(obj->model[0], Hu3DMotionMaxTimeGet(obj->model[0])*frandf()); + Hu3DMotionTimeSet(obj->model[0], Hu3DMotionMaxTimeGet(obj->model[0]) * frandf()); Hu3DModelAttrReset(obj->model[0], HU3D_ATTR_DISPOFF); } } @@ -2037,43 +2042,44 @@ s32 fn_1_ADDC(WorkBomhei2 *parent, WorkBomhei2 *bomhei) { parent->unk4 = bomhei->unk0; bomhei->unk4 = parent->unk0; - bomhei->unk40 = frandmod(3); + bomhei->unk40 = frandmod(3); bomhei->unk44 = 0; - bomhei->unk14.x = 750.0f*((0 > parent->unk8.x) ? -1 : 1); - bomhei->unk14.z = 750.0f*((0 > parent->unk8.z) ? -1 : 1); - if(lbl_1_bss_204 & 0x1) { - bomhei->unk8.x = 1400.0f*((0 > parent->unk8.x) ? -1 : 1); - bomhei->unk8.z = 750.0f*((0 > parent->unk8.z) ? -1 : 1); - bomhei->unk20.x = 750.0f*((0 > parent->unk8.x) ? -1 : 1); - bomhei->unk20.z = 1400.0f*((0 > parent->unk8.z) ? -1 : 1); - } else { - bomhei->unk8.x = 750.0f*((0 > parent->unk8.x) ? -1 : 1); - bomhei->unk8.z = 1400.0f*((0 > parent->unk8.z) ? -1 : 1); - bomhei->unk20.x = 1400.0f*((0 > parent->unk8.x) ? -1 : 1); - bomhei->unk20.z = 750.0f*((0 > parent->unk8.z) ? -1 : 1); + bomhei->unk14.x = 750.0f * ((0 > parent->unk8.x) ? -1 : 1); + bomhei->unk14.z = 750.0f * ((0 > parent->unk8.z) ? -1 : 1); + if (lbl_1_bss_204 & 0x1) { + bomhei->unk8.x = 1400.0f * ((0 > parent->unk8.x) ? -1 : 1); + bomhei->unk8.z = 750.0f * ((0 > parent->unk8.z) ? -1 : 1); + bomhei->unk20.x = 750.0f * ((0 > parent->unk8.x) ? -1 : 1); + bomhei->unk20.z = 1400.0f * ((0 > parent->unk8.z) ? -1 : 1); } - bomhei->unk2C = atan2d(bomhei->unk14.x-bomhei->unk8.x, bomhei->unk14.z-bomhei->unk8.z); + else { + bomhei->unk8.x = 750.0f * ((0 > parent->unk8.x) ? -1 : 1); + bomhei->unk8.z = 1400.0f * ((0 > parent->unk8.z) ? -1 : 1); + bomhei->unk20.x = 1400.0f * ((0 > parent->unk8.x) ? -1 : 1); + bomhei->unk20.z = 750.0f * ((0 > parent->unk8.z) ? -1 : 1); + } + bomhei->unk2C = atan2d(bomhei->unk14.x - bomhei->unk8.x, bomhei->unk14.z - bomhei->unk8.z); bomhei->unk30 = bomhei->unk2C; } void fn_1_B234(omObjData *obj) { WorkBomhei2 *bomhei = obj->data; - if(NULL == bomhei->unk4) { + if (NULL == bomhei->unk4) { bomhei->unk2C = atan2d(-bomhei->unk8.x, -bomhei->unk8.z); bomhei->unk48--; - if(0.0f > bomhei->unk48) { + if (0.0f > bomhei->unk48) { WorkBomhei2 *bomheiNew; - bomhei->unk48 = frandmod(1200)+300; + bomhei->unk48 = frandmod(1200) + 300; bomheiNew = fn_1_9CAC(fn_1_9EF4, 102); fn_1_ADDC(bomhei, bomheiNew); } } omSetTra(obj, bomhei->unk8.x, bomhei->unk8.y, bomhei->unk8.z); omSetRot(obj, 0, bomhei->unk2C, 0); - if(bomhei->unk38) { + if (bomhei->unk38) { bomhei->unk38 = 0; - Hu3DMotionTimeSet(obj->model[0], Hu3DMotionMaxTimeGet(obj->model[0])*frandf()); + Hu3DMotionTimeSet(obj->model[0], Hu3DMotionMaxTimeGet(obj->model[0]) * frandf()); Hu3DModelAttrReset(obj->model[0], HU3D_ATTR_DISPOFF); } } @@ -2082,15 +2088,15 @@ void fn_1_D70C(omObjData *obj); void fn_1_BA2C(omObjData *obj) { - if(omSysExitReq) { + if (omSysExitReq) { fn_1_1F58(-1); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); obj->func = fn_1_D70C; } lbl_1_bss_204++; - switch(obj->work[0]) { + switch (obj->work[0]) { case 1000: - if(!WipeStatGet()) { + if (!WipeStatGet()) { Vec dir; obj->work[0]++; lbl_1_bss_1C = 0; @@ -2100,61 +2106,63 @@ void fn_1_BA2C(omObjData *obj) VECNormalize(&dir, &dir); HuAudFXListnerSetEX(&lbl_1_bss_220, &dir, 14000.0, 36000.0, 1000.0, 300.0, 300.0); } - + break; - + case 1001: lbl_1_bss_1C++; - if(30.0f < lbl_1_bss_1C) { + if (30.0f < lbl_1_bss_1C) { obj->work[0]++; lbl_1_bss_1C = 0; } break; - + case 1002: lbl_1_bss_1C++; - fn_1_13DC(lbl_1_bss_1C/120, &lbl_1_data_D0); - if(120.0f <= lbl_1_bss_1C) { + fn_1_13DC(lbl_1_bss_1C / 120, &lbl_1_data_D0); + if (120.0f <= lbl_1_bss_1C) { obj->work[0]++; lbl_1_bss_1C = 0; fn_1_1350(&lbl_1_data_C4, &lbl_1_data_D0, &lbl_1_data_DC); } break; - + case 1003: - if(lbl_1_bss_1FA < 0) { + if (lbl_1_bss_1FA < 0) { lbl_1_bss_1FA = MGSeqStartCreate(); - } else { - if(lbl_1_bss_1F4 < 0 && (MGSeqStatGet(lbl_1_bss_1FA) & 0x10)) { + } + else { + if (lbl_1_bss_1F4 < 0 && (MGSeqStatGet(lbl_1_bss_1FA) & 0x10)) { fn_1_1F24(70); } - if(MGSeqStatGet(lbl_1_bss_1FA) == 0) { + if (MGSeqStatGet(lbl_1_bss_1FA) == 0) { obj->work[0]++; lbl_1_bss_1FA = -1; } } break; - + case 1004: lbl_1_bss_200++; fn_1_580(lbl_1_bss_1AC, 0, lbl_1_bss_200); - if(lbl_1_bss_14 || 35999 <= lbl_1_bss_200) { + if (lbl_1_bss_14 || 35999 <= lbl_1_bss_200) { obj->work[0] = 1005; lbl_1_bss_1C = 0; } fn_1_9854(); break; - + case 1005: - if(lbl_1_bss_1FA < 0) { + if (lbl_1_bss_1FA < 0) { lbl_1_bss_1FA = MGSeqFinishCreate(); fn_1_1F58(100); mgRecordExtra = lbl_1_bss_200; - } else { + } + else { lbl_1_bss_1C++; - if(60.0f < lbl_1_bss_1C && !MGSeqStatGet(lbl_1_bss_1FA)) { + if (60.0f < lbl_1_bss_1C && !MGSeqStatGet(lbl_1_bss_1FA)) { obj->work[0] = 1007; - if(lbl_1_bss_1FC < lbl_1_bss_200) { + if (lbl_1_bss_1FC < lbl_1_bss_200) { obj->work[0] = 1006; fn_1_798(13); } @@ -2163,29 +2171,30 @@ void fn_1_BA2C(omObjData *obj) } } break; - + case 1006: - if(lbl_1_bss_1FA < 0) { + if (lbl_1_bss_1FA < 0) { lbl_1_bss_1FA = MGSeqRecordCreate(lbl_1_bss_1FC); - } else { - if(!MGSeqStatGet(lbl_1_bss_1FA)) { + } + else { + if (!MGSeqStatGet(lbl_1_bss_1FA)) { obj->work[0]++; lbl_1_bss_1C = 0; lbl_1_bss_1FA = -1; } } break; - + case 1007: lbl_1_bss_1C++; - if(210.0f < lbl_1_bss_1C) { + if (210.0f < lbl_1_bss_1C) { fn_1_1F58(-1); lbl_1_bss_1FA = -1; WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); obj->func = fn_1_D70C; } break; - + default: OSReport("*** main mode error(%d)!!\n", obj->work[0]); break; @@ -2196,23 +2205,23 @@ void fn_1_BA2C(omObjData *obj) void fn_1_C970(omObjData *obj) { s32 i; - obj->model[0] = Hu3DModelCreateFile(0x5A0000); - Hu3DModelAttrSet(obj->model[0], HU3D_ATTR_NOCULL|HU3D_ATTR_DISPOFF); + obj->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M461, 0x00)); + Hu3DModelAttrSet(obj->model[0], HU3D_ATTR_NOCULL | HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(obj->model[0], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(obj->model[0], 0); Hu3DModelShadowMapSet(obj->model[0]); omSetTra(obj, 0, 0, 0); omSetRot(obj, 0, 0, 0); - obj->model[1] = Hu3DModelCreateFile(0x5A0001); - Hu3DModelAttrSet(obj->model[1], HU3D_ATTR_NOCULL|HU3D_ATTR_DISPOFF); + obj->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M461, 0x01)); + Hu3DModelAttrSet(obj->model[1], HU3D_ATTR_NOCULL | HU3D_ATTR_DISPOFF); Hu3DModelAttrSet(obj->model[1], HU3D_MOTATTR_PAUSE); Hu3DModelLayerSet(obj->model[1], 1); Hu3DModelShadowSet(obj->model[1]); Hu3DModelPosSet(obj->model[1], 0, 0, 0); Hu3DModelRotSet(obj->model[1], 0, 0, 0); - fn_1_B4C(64, 0x5A0009); + fn_1_B4C(64, DATA_MAKE_NUM(DATADIR_M461, 0x09)); fn_1_9EC(); - for(i=0; i<2; i++) { + for (i = 0; i < 2; i++) { Hu3DModelAttrReset(obj->model[i], HU3D_ATTR_DISPOFF); } HuAudFXPlay(2085); @@ -2254,45 +2263,45 @@ void ObjectSetup(void) Hu3DShadowTPLvlSet(0.5f); Hu3DShadowPosSet(&lbl_1_data_104, &lbl_1_data_11C, &lbl_1_data_110); fn_1_0(); - for(i=0; i<20; i++) { + for (i = 0; i < 20; i++) { s32 modelId; lbl_1_bss_4C[i] = NULL; - modelId = Hu3DModelCreateFile(0x5A0008); + modelId = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M461, 0x08)); Hu3DModelAttrSet(modelId, HU3D_ATTR_DISPOFF); fn_1_24(12288, modelId); } - for(i=0; i<3; i++) { + for (i = 0; i < 3; i++) { lbl_1_bss_3C[i] = Hu3DModelCreateFile(lbl_1_data_1C8[i]); - Hu3DModelAttrSet(lbl_1_bss_3C[i], HU3D_ATTR_NOCULL|HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_3C[i], HU3D_ATTR_NOCULL | HU3D_ATTR_DISPOFF); } - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { lbl_1_bss_2C[i] = Hu3DJointMotionFile(lbl_1_bss_3C[0], lbl_1_data_1D4[i]); } lbl_1_bss_28 = 0; lbl_1_bss_20 = 0; lbl_1_bss_24 = 10; - angle = 360.0f*frandf(); + angle = 360.0f * frandf(); radiusPrev = -1; - for(i=0; iunk8 = lbl_1_data_2F0[i]; bomhei2->unk2C = atan2d(-bomhei2->unk8.x, -bomhei2->unk8.z); - bomhei2->unk48 = frandmod(1200)+300; + bomhei2->unk48 = frandmod(1200) + 300; } lbl_1_bss_9C = omAddObjEx(lbl_1_bss_238, 100, 1, 5, -1, fn_1_7328); lbl_1_bss_A0 = omAddObjEx(lbl_1_bss_238, 104, 2, 0, -1, fn_1_C970); @@ -2303,18 +2312,18 @@ void ObjectSetup(void) void fn_1_D70C(omObjData *obj) { s32 i; - if(WipeStatGet()) { + if (WipeStatGet()) { return; } - if(lbl_1_bss_1FA >= 0) { + if (lbl_1_bss_1FA >= 0) { MGSeqKill(lbl_1_bss_1FA); } - if(lbl_1_bss_1F8 >= 0) { + if (lbl_1_bss_1F8 >= 0) { MGSeqKill(lbl_1_bss_1F8); } MGSeqKillAll(); HuAudAllStop(); - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { CharModelKill(lbl_1_data_0[GWPlayerCfg[i].character]); } omOvlReturnEx(1, 1); diff --git a/src/REL/mstory2Dll/board_clear.c b/src/REL/mstory2Dll/board_clear.c index 206854e1..b4013800 100644 --- a/src/REL/mstory2Dll/board_clear.c +++ b/src/REL/mstory2Dll/board_clear.c @@ -10,12 +10,13 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" #include "game/printfunc.h" #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" -#include "game/pad.h" -#include "game/objsub.h" + typedef struct { /* 0x000 */ s32 unk00; @@ -42,17 +43,17 @@ void fn_1_C858(void); void fn_1_CCCC(int arg0, int arg1, int arg2, int arg3, int arg4); void fn_1_CD78(void); void fn_1_D224(int arg0, int arg1, int arg2, int arg3, int arg4); -void fn_1_D2D0(omObjData* arg0, StructBss16C* arg1); +void fn_1_D2D0(omObjData *arg0, StructBss16C *arg1); void fn_1_D478(void); void fn_1_D764(int arg0); void fn_1_DB58(int arg0, int arg1, int arg2, int arg3, int arg4); -void fn_1_DC54(omObjData* arg0, StructBss16C* arg1); +void fn_1_DC54(omObjData *arg0, StructBss16C *arg1); void fn_1_DDC4(void); void fn_1_E1B8(void); void fn_1_E244(void); void fn_1_E334(void); -void fn_1_B37C(omObjData* arg0, StructBss16C* arg1) +void fn_1_B37C(omObjData *arg0, StructBss16C *arg1) { fn_1_BE8(30); fn_1_DB58(4, -1, 15, 1, 0); @@ -60,7 +61,7 @@ void fn_1_B37C(omObjData* arg0, StructBss16C* arg1) arg1->unk04 = NULL; } -void fn_1_B3E4(Process* arg0, s32 arg1) +void fn_1_B3E4(Process *arg0, s32 arg1) { int i; lbl_1_bss_298 = arg0; @@ -73,20 +74,19 @@ void fn_1_B3E4(Process* arg0, s32 arg1) HuPrcChildCreate(fn_1_C858, 100, 8192, 0, HuPrcCurrentGet()); HuPrcChildCreate(fn_1_CD78, 100, 8192, 0, HuPrcCurrentGet()); HuPrcChildCreate(fn_1_D478, 100, 8192, 0, HuPrcCurrentGet()); - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { HuPrcChildCreate(fn_1_DDC4, 100, 8192, 0, HuPrcCurrentGet()); } HuPrcChildCreate(fn_1_C4C0, 100, 8192, 0, HuPrcCurrentGet()); - } void fn_1_B518(omObjData *object) { - if(object->work[2]) { + if (object->work[2]) { object->work[2]--; return; } - if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { fn_1_1DFC(object, 1, object->work[1], 15, 1); object->work[0] = object->work[1] = object->work[2] = 0; } @@ -98,42 +98,47 @@ void fn_1_B5A4(void) int posY = 40; GXColor winColor = { 0, 0, 128, 128 }; int i; - while(1) { + while (1) { fn_1_BC8(); printWin(posX, posY, 220, 160, &winColor); - if(lbl_1_bss_3B4.unk04 == NULL) { + if (lbl_1_bss_3B4.unk04 == NULL) { print8(posX, posY, 1, "PROC_MAIN -> FALSE"); - } else { + } + else { print8(posX, posY, 1, "PROC_MAIN -> TRUE"); } - if(lbl_1_bss_38C.unk04 == NULL) { - print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); - } else { - print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + if (lbl_1_bss_38C.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); } - if(lbl_1_bss_364.unk04 == NULL) { - print8(posX, posY+20, 1, "PROC_KOOPA -> FALSE"); - } else { - print8(posX, posY+20, 1, "PROC_KOOPA -> TRUE"); + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); } - if(lbl_1_bss_33C.unk04 == NULL) { - print8(posX, posY+30, 1, "PROC_MKOOPA -> FALSE"); - } else { - print8(posX, posY+30, 1, "PROC_MKOOPA -> TRUE"); + if (lbl_1_bss_364.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE"); } - for(i=0; i<4; i++) { - if(lbl_1_bss_29C[i].unk04 == NULL) { - print8(posX, posY+40+(i*10), 1, "PROC_PLAYER%d -> FALSE", i); - } else { - print8(posX, posY+40+(i*10), 1, "PROC_PLAYER%d -> TRUE", i); + else { + print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE"); + } + if (lbl_1_bss_33C.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE"); + } + else { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE"); + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_29C[i].unk04 == NULL) { + print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> FALSE", i); + } + else { + print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> TRUE", i); } } - print8(posX, posY+90, 1, "P:%d W:%d", lbl_1_bss_3DC.unk00, lbl_1_bss_3DC.unk0C); - print8(posX, posY+110, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); - for(i=0; i<4; i++) { - print8(posX, posY+120+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_3DC.unk30[i].unk00, lbl_1_bss_3DC.unk30[i].unk04, lbl_1_bss_3DC.unk30[i].unk08, lbl_1_bss_3DC.unk30[i].unk0C, lbl_1_bss_3DC.unk30[i].unk14, lbl_1_bss_3DC.unk30[i].unk10); + print8(posX, posY + 90, 1, "P:%d W:%d", lbl_1_bss_3DC.unk00, lbl_1_bss_3DC.unk0C); + print8(posX, posY + 110, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 120 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_3DC.unk30[i].unk00, lbl_1_bss_3DC.unk30[i].unk04, + lbl_1_bss_3DC.unk30[i].unk08, lbl_1_bss_3DC.unk30[i].unk0C, lbl_1_bss_3DC.unk30[i].unk14, lbl_1_bss_3DC.unk30[i].unk10); } - } } @@ -152,15 +157,15 @@ void fn_1_B9E0(void) lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk04 = (void *)fn_1_DC54; fn_1_3854(&lbl_1_bss_24); fn_1_2750(fn_1_E244); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk04 == NULL) { + if (lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk04 == NULL) { break; } } - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_33C.unk04 == NULL) { + if (lbl_1_bss_33C.unk04 == NULL) { break; } } @@ -181,8 +186,8 @@ void fn_1_BA90(void) fn_1_1A94(lbl_1_bss_3DC.unk04); HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); fn_1_BE8(60); - for(i=0; i<4; i++) { - if(lbl_1_bss_3DC.unk30[i].unk00 != lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk00) { + for (i = 0; i < 4; i++) { + if (lbl_1_bss_3DC.unk30[i].unk00 != lbl_1_bss_3DC.unk30[lbl_1_bss_3DC.unk00].unk00) { Hu3DModelAttrSet(lbl_1_bss_29C[i].unk00->model[1], 1); } Hu3DModelAttrSet(lbl_1_bss_29C[i].unk00->model[2], 1); @@ -236,9 +241,9 @@ void fn_1_BF48(void) int padNo; WipeColorSet(0, 0, 0); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - while(1) { + while (1) { fn_1_BC8(); - if(!WipeStatGet()) { + if (!WipeStatGet()) { break; } } @@ -253,14 +258,14 @@ void fn_1_BF48(void) GWPlayerCfg[0].pad_idx = padNo; GWPlayerCfg[0].group = 0; GWPlayerCfg[0].iscom = FALSE; - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { GWPlayer[i].character = GWPlayerCfg[i].character; GWPlayer[i].port = GWPlayerCfg[i].pad_idx; GWPlayer[i].com = GWPlayerCfg[i].iscom; GWPlayer[i].team = GWPlayerCfg[i].group; } GWPlayerCfg[1].character = 8; - for(i=1; i<4; i++) { + for (i = 1; i < 4; i++) { GWPlayerCfg[i].iscom = GWPlayerCfg[i].group = 1; } his = omOvlHisGet(0); @@ -269,14 +274,14 @@ void fn_1_BF48(void) HuAudSStreamAllFadeOut(1000); GWSystem.mg_type = -1; GWMGAvailSet(450); - GWSystem.mg_next = 450-401; + GWSystem.mg_next = 450 - 401; omOvlCallEx(OVL_M450, 1, 0, 0); - while(1) { + while (1) { fn_1_BC8(); } } -void fn_1_C270(omObjData* arg0, StructBss16C* arg1) +void fn_1_C270(omObjData *arg0, StructBss16C *arg1) { int temp = 0; fn_1_B984(); @@ -293,9 +298,9 @@ void fn_1_C4C0(void) lbl_1_bss_3B4.unk00 = obj = omAddObjEx(lbl_1_bss_298, 256, 16, 16, -1, NULL); lbl_1_bss_3B4.unk04 = (void *)fn_1_C270; lbl_1_bss_3B4.unk00->data = &lbl_1_bss_3B4; - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_3B4.unk04 != NULL) { + if (lbl_1_bss_3B4.unk04 != NULL) { lbl_1_bss_3B4.unk04(obj, &lbl_1_bss_3B4); } } @@ -324,10 +329,10 @@ void fn_1_C574(omObjData *object) fn_1_1DFC(object, 6, 6, 0, 2); } -void fn_1_C79C(omObjData* arg0, StructBss16C* arg1) +void fn_1_C79C(omObjData *arg0, StructBss16C *arg1) { Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360); - if(arg1->unk08 >= 360) { + if (arg1->unk08 >= 360) { arg1->unk08 = 0; } } @@ -339,9 +344,9 @@ void fn_1_C858(void) lbl_1_bss_38C.unk04 = (void *)fn_1_C79C; lbl_1_bss_38C.unk00->data = &lbl_1_bss_38C; fn_1_C574(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_38C.unk04 != NULL) { + if (lbl_1_bss_38C.unk04 != NULL) { lbl_1_bss_38C.unk04(obj, &lbl_1_bss_38C); } } @@ -365,12 +370,12 @@ void fn_1_CB0C(omObjData *object) void fn_1_CCCC(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_364.unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_364.unk00->work[0] = arg4; lbl_1_bss_364.unk00->work[1] = arg1; - lbl_1_bss_364.unk00->work[2] = arg2+1; + lbl_1_bss_364.unk00->work[2] = arg2 + 1; } void fn_1_CD78(void) @@ -380,15 +385,16 @@ void fn_1_CD78(void) lbl_1_bss_364.unk04 = NULL; lbl_1_bss_364.unk00->data = &lbl_1_bss_38C; fn_1_CB0C(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_364.unk04 != NULL) { + if (lbl_1_bss_364.unk04 != NULL) { lbl_1_bss_364.unk04(obj, &lbl_1_bss_364); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -415,25 +421,25 @@ void fn_1_D030(omObjData *object) void fn_1_D224(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_33C.unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_33C.unk00->work[0] = arg4; lbl_1_bss_33C.unk00->work[1] = arg1; - lbl_1_bss_33C.unk00->work[2] = arg2+1; + lbl_1_bss_33C.unk00->work[2] = arg2 + 1; } -void fn_1_D2D0(omObjData* arg0, StructBss16C* arg1) +void fn_1_D2D0(omObjData *arg0, StructBss16C *arg1) { int i; - for(i=0; i<15; i++) { + for (i = 0; i < 15; i++) { fn_1_BC8(); Hu3DData[arg0->model[1]].rot.y = fn_1_864(0, 135, i, 15); } arg1->unk04 = NULL; } -void fn_1_D394(omObjData* arg0, StructBss16C* arg1) +void fn_1_D394(omObjData *arg0, StructBss16C *arg1) { Vec pos = { -120, 0, 800 }; fn_1_1DFC(arg0, 1, 2, 15, 1); @@ -449,15 +455,16 @@ void fn_1_D478(void) lbl_1_bss_33C.unk04 = NULL; lbl_1_bss_33C.unk00->data = &lbl_1_bss_33C; fn_1_D030(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_33C.unk04 != NULL) { + if (lbl_1_bss_33C.unk04 != NULL) { lbl_1_bss_33C.unk04(obj, &lbl_1_bss_33C); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -470,20 +477,20 @@ void fn_1_D764(int arg0) int i; int order[4]; order[0] = 0; - for(i=1; i<4; i++) { - order[i] = order[i-1]+1; - if(order[i] >= 4) { + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { order[i] = 0; } - if(arg0 == order[i]) { + if (arg0 == order[i]) { lbl_1_bss_3DC.unk00 = i; } } - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { fn_1_357C(&lbl_1_bss_3DC.unk30[i], order[i]); } - for(i=0; i<4; i++) { - lbl_1_bss_3DC.unk30[i].unk18 = GWPlayer[order[i]].rank+1; + for (i = 0; i < 4; i++) { + lbl_1_bss_3DC.unk30[i].unk18 = GWPlayer[order[i]].rank + 1; } } @@ -499,20 +506,22 @@ void fn_1_D898(omObjData *object, int player) int playerNo = player; int charNo = lbl_1_bss_3DC.unk30[playerNo].unk10; object->model[1] = CharModelCreate(charNo, 4); - object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); - object->motion[2] = CharModelMotionCreate(charNo, 0x5F0003); - object->motion[3] = CharModelMotionCreate(charNo, 0x5F0005); - object->motion[4] = CharModelMotionCreate(charNo, 0x5F001A); - object->motion[5] = CharModelMotionCreate(charNo, 0x5F006D); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03)); + object->motion[3] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05)); + object->motion[4] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A)); + object->motion[5] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6D)); CharModelMotionDataClose(charNo); - Hu3DModelPosSet(object->model[1], lbl_1_data_668[playerNo].x, lbl_1_data_668[lbl_1_bss_3DC.unk30[playerNo].unk18-1].y+90, lbl_1_data_668[playerNo].z); + Hu3DModelPosSet( + object->model[1], lbl_1_data_668[playerNo].x, lbl_1_data_668[lbl_1_bss_3DC.unk30[playerNo].unk18 - 1].y + 90, lbl_1_data_668[playerNo].z); Hu3DModelRotSet(object->model[1], 0, 0, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); Hu3DModelShadowSet(object->model[1]); fn_1_1DFC(object, 1, 1, 0, 1); object->model[2] = Hu3DModelCreateFile(0x660056); - Hu3DModelPosSet(object->model[2], lbl_1_data_668[playerNo].x, lbl_1_data_668[lbl_1_bss_3DC.unk30[playerNo].unk18-1].y, lbl_1_data_668[playerNo].z); - if(lbl_1_bss_3DC.unk30[playerNo].unk18 == 4) { + Hu3DModelPosSet( + object->model[2], lbl_1_data_668[playerNo].x, lbl_1_data_668[lbl_1_bss_3DC.unk30[playerNo].unk18 - 1].y, lbl_1_data_668[playerNo].z); + if (lbl_1_bss_3DC.unk30[playerNo].unk18 == 4) { Hu3DModelAttrSet(object->model[2], 1); } Hu3DModelScaleSet(object->model[2], 1.5, 1, 1.5); @@ -522,15 +531,15 @@ void fn_1_D898(omObjData *object, int player) void fn_1_DB58(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[0] = arg4; lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[1] = arg1; - lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[2] = arg2+1; + lbl_1_bss_29C[lbl_1_bss_3DC.unk00].unk00->work[2] = arg2 + 1; } -void fn_1_DC54(omObjData* arg0, StructBss16C* arg1) +void fn_1_DC54(omObjData *arg0, StructBss16C *arg1) { Vec pos = { 120, 0, 800 }; fn_1_2948(arg0, 1, pos, -1, 30, 10); @@ -550,15 +559,16 @@ void fn_1_DDC4(void) lbl_1_bss_29C[playerNo].unk04 = NULL; lbl_1_bss_29C[playerNo].unk00->data = &lbl_1_bss_29C[0]; fn_1_D898(obj, playerNo); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_29C[playerNo].unk04 != NULL) { + if (lbl_1_bss_29C[playerNo].unk04 != NULL) { lbl_1_bss_29C[playerNo].unk04(obj, &lbl_1_bss_29C[playerNo]); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -596,7 +606,7 @@ void fn_1_E334(void) { StructBss24 *work = &lbl_1_bss_24; StructBss24 temp; - if(work->unk40 == 50) { + if (work->unk40 == 50) { fn_1_1DFC(lbl_1_bss_38C.unk00, 5, 5, 0, 0); fn_1_1DFC(lbl_1_bss_38C.unk00, 6, 6, 0, 0); HuAudFXPlay(161); @@ -609,11 +619,11 @@ void fn_1_E334(void) temp.unk20.z = 0; temp.unk38 = 150; fn_1_4FEC(work, &temp, work->unk40, 180, 10); - if(work->unk40++ >= 90) { - if(work->unk40 == 91) { + if (work->unk40++ >= 90) { + if (work->unk40 == 91) { lbl_1_bss_88[0] = HuAudFXPlay(32); } - work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40-90, 90); - Hu3DData[lbl_1_bss_38C.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40-90, 90); + work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40 - 90, 90); + Hu3DData[lbl_1_bss_38C.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40 - 90, 90); } -} \ No newline at end of file +} diff --git a/src/REL/mstory2Dll/board_entrance.c b/src/REL/mstory2Dll/board_entrance.c index d1ac7abb..c1b93643 100644 --- a/src/REL/mstory2Dll/board_entrance.c +++ b/src/REL/mstory2Dll/board_entrance.c @@ -9,12 +9,13 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" #include "game/printfunc.h" #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" -#include "game/pad.h" -#include "game/objsub.h" + typedef struct { /* 0x000 */ s32 unk00; @@ -38,26 +39,10 @@ Process *lbl_1_bss_C8; s32 lbl_1_bss_88[16]; s32 lbl_1_bss_78[4]; -u32 lbl_1_data_3A0[11] = { - 0x00250000, - 0x00250000, - 0x00250000, - 0x00250000, - 0x00250000, - 0x00250000, - 0x00250000, - 0x00250000, - 0x00250000, - 0x00250000, - 0x00250000 -}; +u32 lbl_1_data_3A0[11] + = { 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000, 0x00250000 }; -s32 lbl_1_data_3CC[2][2] = { - 20, - 70, - 1, - 1 -}; +s32 lbl_1_data_3CC[2][2] = { 20, 70, 1, 1 }; s32 lbl_1_data_3DC = -1; s32 lbl_1_data_3E0[2] = { -1, -1 }; @@ -65,11 +50,11 @@ s32 lbl_1_data_3E0[2] = { -1, -1 }; void fn_1_9768(void); void fn_1_9A10(void); void fn_1_9BD4(s32 arg0); -void fn_1_9ECC(omObjData* arg0, StructBss16C* arg1); +void fn_1_9ECC(omObjData *arg0, StructBss16C *arg1); void fn_1_9FDC(void); -void fn_1_A4A8(omObjData* arg0, StructBss16C* arg1); +void fn_1_A4A8(omObjData *arg0, StructBss16C *arg1); void fn_1_A58C(void); -void fn_1_AB10(omObjData* arg0, StructBss16C* arg1); +void fn_1_AB10(omObjData *arg0, StructBss16C *arg1); void fn_1_AE5C(void); void fn_1_B1C0(void); @@ -78,30 +63,28 @@ void fn_1_B24C(void); void fn_1_7DB0(void) { int i; - while(1) { + while (1) { do { HuPrcVSleep(); - } while(lbl_1_data_3DC == -1 || lbl_1_data_3E0[0] == -1 || lbl_1_data_3E0[1] == -1 || lbl_1_data_3E0[0] != Hu3DMotionIDGet(lbl_1_data_3DC)); - for(i=0; i<2; i++) { - if(lbl_1_data_3CC[1][i] != -1) { - if(Hu3DMotionTimeGet(lbl_1_data_3DC) >= lbl_1_data_3CC[0][i]) { + } while (lbl_1_data_3DC == -1 || lbl_1_data_3E0[0] == -1 || lbl_1_data_3E0[1] == -1 || lbl_1_data_3E0[0] != Hu3DMotionIDGet(lbl_1_data_3DC)); + for (i = 0; i < 2; i++) { + if (lbl_1_data_3CC[1][i] != -1) { + if (Hu3DMotionTimeGet(lbl_1_data_3DC) >= lbl_1_data_3CC[0][i]) { OSReport("KE-System TIME:%d\n", lbl_1_data_3CC[0][i]); HuAudFXPlay(81); lbl_1_data_3CC[1][i] = -1; } } } - if(Hu3DMotionTimeGet(lbl_1_data_3DC) <= 10) { - for(i=0; i<2; i++) { + if (Hu3DMotionTimeGet(lbl_1_data_3DC) <= 10) { + for (i = 0; i < 2; i++) { lbl_1_data_3CC[1][i] = 1; } } - } - } -void fn_1_7F54(Process* arg0, s32 arg1) +void fn_1_7F54(Process *arg0, s32 arg1) { lbl_1_bss_C8 = arg0; lbl_1_bss_194.unk0C = arg1; @@ -119,11 +102,11 @@ void fn_1_7F54(Process* arg0, s32 arg1) void fn_1_806C(omObjData *object) { - if(object->work[2]) { + if (object->work[2]) { object->work[2]--; return; } - if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { fn_1_1DFC(object, 1, object->work[1], 15, 1); object->work[0] = object->work[1] = object->work[2] = 0; } @@ -135,44 +118,51 @@ void fn_1_80F8(void) int posY = 40; GXColor winColor = { 0, 0, 128, 128 }; int i; - while(1) { + while (1) { fn_1_BC8(); fontcolor = FONT_COLOR_WHITE; printWin(posX, posY, 220, 130, &winColor); - if(lbl_1_bss_16C.unk04 == NULL) { + if (lbl_1_bss_16C.unk04 == NULL) { print8(posX, posY, 1, "PROC_MAIN -> FALSE"); - } else { + } + else { print8(posX, posY, 1, "PROC_MAIN -> TRUE"); } - if(lbl_1_bss_144.unk04 == NULL) { - print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); - } else { - print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + if (lbl_1_bss_144.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); } - if(lbl_1_bss_11C.unk04 == NULL) { - print8(posX, posY+20, 1, "PROC_PLAYER -> FALSE"); - } else { - print8(posX, posY+20, 1, "PROC_PLAYER -> TRUE"); + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); } - if(lbl_1_bss_F4.unk04 == NULL) { - print8(posX, posY+30, 1, "PROC_SUB -> FALSE"); - } else { - print8(posX, posY+30, 1, "PROC_SUB -> TRUE"); + if (lbl_1_bss_11C.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_PLAYER -> FALSE"); } - if(lbl_1_bss_CC.unk04 == NULL) { - print8(posX, posY+40, 1, "PROC_KOOPA -> FALSE"); - } else { - print8(posX, posY+40, 1, "PROC_KOOPA -> TRUE"); + else { + print8(posX, posY + 20, 1, "PROC_PLAYER -> TRUE"); } - - print8(posX, posY+60, 1, "P:%d W:%d", lbl_1_bss_194.unk00, lbl_1_bss_194.unk0C); - print8(posX, posY+80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); - for(i=0; i<4; i++) { - print8(posX, posY+90+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_194.unk30[i].unk00, lbl_1_bss_194.unk30[i].unk04, lbl_1_bss_194.unk30[i].unk08, lbl_1_bss_194.unk30[i].unk0C, lbl_1_bss_194.unk30[i].unk14, lbl_1_bss_194.unk30[i].unk10); + if (lbl_1_bss_F4.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_SUB -> FALSE"); } - if(HuPadBtnDown[0] & PAD_BUTTON_X) { + else { + print8(posX, posY + 30, 1, "PROC_SUB -> TRUE"); + } + if (lbl_1_bss_CC.unk04 == NULL) { + print8(posX, posY + 40, 1, "PROC_KOOPA -> FALSE"); + } + else { + print8(posX, posY + 40, 1, "PROC_KOOPA -> TRUE"); + } + + print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_194.unk00, lbl_1_bss_194.unk0C); + print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_194.unk30[i].unk00, lbl_1_bss_194.unk30[i].unk04, + lbl_1_bss_194.unk30[i].unk08, lbl_1_bss_194.unk30[i].unk0C, lbl_1_bss_194.unk30[i].unk14, lbl_1_bss_194.unk30[i].unk10); + } + if (HuPadBtnDown[0] & PAD_BUTTON_X) { fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 30, 120, TRUE); - } else if(HuPadBtnDown[0] & PAD_BUTTON_Y) { + } + else if (HuPadBtnDown[0] & PAD_BUTTON_Y) { fn_1_7384(lbl_1_bss_11C.unk00->model[1], lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10, 30, 120, FALSE); } } @@ -200,10 +190,10 @@ void fn_1_85DC(void) fn_1_1DFC(lbl_1_bss_144.unk00, 2, 2, 0, 0); do { fn_1_BC8(); - } while(lbl_1_bss_11C.unk04 != NULL); + } while (lbl_1_bss_11C.unk04 != NULL); do { fn_1_BC8(); - } while(lbl_1_bss_F4.unk04 != NULL); + } while (lbl_1_bss_F4.unk04 != NULL); lbl_1_bss_194.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_194.unk0C); HuAudFXPlay(lbl_1_data_0[0][2]); fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 3, 5, 1); @@ -227,17 +217,17 @@ void fn_1_87D4(void) fn_1_BC8(); Hu3DMotionTimeSet(lbl_1_bss_CC.unk00->model[1], 100); Hu3DModelAttrReset(lbl_1_bss_CC.unk00->model[1], 1); - while(1) { + while (1) { fn_1_BC8(); - if(Hu3DMotionTimeGet(lbl_1_bss_CC.unk00->model[1]) >= 132) { + if (Hu3DMotionTimeGet(lbl_1_bss_CC.unk00->model[1]) >= 132) { break; } } fn_1_1DFC(lbl_1_bss_F4.unk00, 1, 4, 0, 0); fn_1_BC8(); - while(1) { + while (1) { fn_1_BC8(); - if(Hu3DMotionTimeGet(lbl_1_bss_F4.unk00->model[1]) >= 5) { + if (Hu3DMotionTimeGet(lbl_1_bss_F4.unk00->model[1]) >= 5) { break; } } @@ -247,8 +237,8 @@ void fn_1_87D4(void) HuAudFXPlay(156); omVibrate(lbl_1_bss_194.unk0C, 45, 12, 0); speed = 50; - for(i=0; i<60; i++) { - float weight = fn_1_B08(0, speed, i%15, 15); + for (i = 0; i < 60; i++) { + float weight = fn_1_B08(0, speed, i % 15, 15); speed = fn_1_88C(speed, 0, 30); lbl_1_bss_194.unk100 = fn_1_88C(lbl_1_bss_194.unk100, weight, 5); fn_1_BC8(); @@ -326,9 +316,9 @@ void fn_1_9034(void) fn_1_1D18(lbl_1_bss_194.unk04, 0x1F0007); fn_1_1AFC(lbl_1_bss_194.unk04, -1); fn_1_1A94(lbl_1_bss_194.unk04); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_CC.unk04 == NULL) { + if (lbl_1_bss_CC.unk04 == NULL) { break; } } @@ -349,9 +339,9 @@ void fn_1_9198(void) HuAudFXFadeOut(lbl_1_bss_88[0], 1000); WipeColorSet(0, 0, 0); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); - while(1) { + while (1) { fn_1_BC8(); - if(!WipeStatGet()) { + if (!WipeStatGet()) { break; } } @@ -364,7 +354,7 @@ void fn_1_9198(void) omOvlGotoEx(OVL_MENT, 1, 11, 0); } -void fn_1_92BC(omObjData* arg0, StructBss16C* arg1) +void fn_1_92BC(omObjData *arg0, StructBss16C *arg1) { int temp = 0; fn_1_8580(); @@ -382,9 +372,9 @@ void fn_1_9768(void) lbl_1_bss_16C.unk00 = obj = omAddObjEx(lbl_1_bss_C8, 256, 16, 16, -1, NULL); lbl_1_bss_16C.unk04 = (void *)fn_1_92BC; lbl_1_bss_16C.unk00->data = &lbl_1_bss_16C; - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_16C.unk04 != NULL) { + if (lbl_1_bss_16C.unk04 != NULL) { lbl_1_bss_16C.unk04(obj, &lbl_1_bss_16C); } } @@ -403,10 +393,10 @@ void fn_1_981C(omObjData *object) object->model[4] = Hu3DModelCreateFile(0x660051); } -void fn_1_9954(omObjData* arg0, StructBss16C* arg1) +void fn_1_9954(omObjData *arg0, StructBss16C *arg1) { Hu3DData[arg0->model[5]].pos.y = fn_1_B08(125, 130, arg1->unk08++, 360); - if(arg1->unk08 >= 360) { + if (arg1->unk08 >= 360) { arg1->unk08 = 0; } } @@ -418,9 +408,9 @@ void fn_1_9A10(void) lbl_1_bss_144.unk04 = (void *)fn_1_9954; lbl_1_bss_144.unk00->data = &lbl_1_bss_144; fn_1_981C(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_144.unk04 != NULL) { + if (lbl_1_bss_144.unk04 != NULL) { lbl_1_bss_144.unk04(obj, &lbl_1_bss_144); } } @@ -431,16 +421,16 @@ void fn_1_9BD4(s32 arg0) int i; int order[4]; order[0] = 0; - for(i=1; i<4; i++) { - order[i] = order[i-1]+1; - if(order[i] >= 4) { + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { order[i] = 0; } - if(arg0 == order[i]) { + if (arg0 == order[i]) { lbl_1_bss_194.unk00 = i; } } - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { fn_1_357C(&lbl_1_bss_194.unk30[i], order[i]); } } @@ -449,13 +439,13 @@ void fn_1_9CB8(omObjData *object) { int charNo = lbl_1_bss_194.unk30[lbl_1_bss_194.unk00].unk10; object->model[1] = CharModelCreate(charNo, 1); - object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); - object->motion[2] = CharModelMotionCreate(charNo, 0x5F0035); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660018+charNo); - object->motion[7] = Hu3DJointMotionFile(object->model[1], 0x660048+charNo); - object->motion[8] = Hu3DJointMotionFile(object->model[1], 0x660040+charNo); - object->motion[9] = Hu3DJointMotionFile(object->model[1], 0x660020+charNo); - object->motion[10] = CharModelMotionCreate(charNo, 0x5F0012); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660018 + charNo); + object->motion[7] = Hu3DJointMotionFile(object->model[1], 0x660048 + charNo); + object->motion[8] = Hu3DJointMotionFile(object->model[1], 0x660040 + charNo); + object->motion[9] = Hu3DJointMotionFile(object->model[1], 0x660020 + charNo); + object->motion[10] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x12)); CharModelMotionDataClose(charNo); Hu3DModelPosSet(object->model[1], 120, 0, 800); Hu3DModelRotSet(object->model[1], 0, -135, 0); @@ -464,13 +454,13 @@ void fn_1_9CB8(omObjData *object) fn_1_1DFC(object, 1, 1, 0, 1); } -void fn_1_9ECC(omObjData* arg0, StructBss16C* arg1) +void fn_1_9ECC(omObjData *arg0, StructBss16C *arg1) { int i; fn_1_1DFC(arg0, 1, 2, 0, 0); fn_1_BC8(); Hu3DMotionTimeSet(arg0->model[1], 60); - for(i=0; i<60; i++) { + for (i = 0; i < 60; i++) { fn_1_BC8(); Hu3DData[arg0->model[1]].rot.y = fn_1_864(-135, -90, i, 60); } @@ -485,12 +475,12 @@ void fn_1_9FDC(void) lbl_1_bss_11C.unk04 = NULL; lbl_1_bss_11C.unk00->data = &lbl_1_bss_11C; fn_1_9CB8(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_11C.unk04 != NULL) { + if (lbl_1_bss_11C.unk04 != NULL) { lbl_1_bss_11C.unk04(obj, &lbl_1_bss_11C); } - if(obj->work[0]) { + if (obj->work[0]) { fn_1_6704(obj); } } @@ -513,7 +503,7 @@ void fn_1_A288(omObjData *object) CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 9); } -void fn_1_A4A8(omObjData* arg0, StructBss16C* arg1) +void fn_1_A4A8(omObjData *arg0, StructBss16C *arg1) { Vec pos = { -120, 0, 800 }; fn_1_1DFC(arg0, 1, 2, 15, 1); @@ -529,12 +519,12 @@ void fn_1_A58C(void) lbl_1_bss_F4.unk04 = NULL; lbl_1_bss_F4.unk00->data = &lbl_1_bss_F4; fn_1_A288(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_F4.unk04 != NULL) { + if (lbl_1_bss_F4.unk04 != NULL) { lbl_1_bss_F4.unk04(obj, &lbl_1_bss_F4); } - if(obj->work[0]) { + if (obj->work[0]) { fn_1_6704(obj); } } @@ -563,11 +553,11 @@ void fn_1_A848(omObjData *object) HuPrcChildCreate(fn_1_7DB0, 100, 8192, 0, HuPrcCurrentGet()); } -void fn_1_AB10(omObjData* arg0, StructBss16C* arg1) +void fn_1_AB10(omObjData *arg0, StructBss16C *arg1) { int i; fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 8, 15, 1); - for(i=0; i<30; i++) { + for (i = 0; i < 30; i++) { fn_1_BC8(); Hu3DData[lbl_1_bss_CC.unk00->model[1]].pos.x = fn_1_864(-120, -60, i, 30); } @@ -576,7 +566,7 @@ void fn_1_AB10(omObjData* arg0, StructBss16C* arg1) fn_1_2264(lbl_1_bss_CC.unk00, 1, 6, 15); fn_1_1DFC(lbl_1_bss_CC.unk00, 1, 7, 15, 1); fn_1_1DFC(lbl_1_bss_11C.unk00, 1, 10, 15, 1); - for(i=0; i<240; i++) { + for (i = 0; i < 240; i++) { fn_1_BC8(); Hu3DData[lbl_1_bss_CC.unk00->model[1]].pos.x = fn_1_864(-60, 540, i, 180); Hu3DData[lbl_1_bss_11C.unk00->model[1]].pos.x = fn_1_864(120, 840, i, 180); @@ -588,12 +578,12 @@ void fn_1_AB10(omObjData* arg0, StructBss16C* arg1) void fn_1_ADB0(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_CC.unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_CC.unk00->work[0] = arg4; lbl_1_bss_CC.unk00->work[1] = arg1; - lbl_1_bss_CC.unk00->work[2] = arg2+1; + lbl_1_bss_CC.unk00->work[2] = arg2 + 1; } void fn_1_AE5C(void) @@ -603,12 +593,12 @@ void fn_1_AE5C(void) lbl_1_bss_CC.unk04 = NULL; lbl_1_bss_CC.unk00->data = &lbl_1_bss_CC; fn_1_A848(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_CC.unk04 != NULL) { + if (lbl_1_bss_CC.unk04 != NULL) { lbl_1_bss_CC.unk04(obj, &lbl_1_bss_CC); } - if(obj->work[0]) { + if (obj->work[0]) { fn_1_6704(obj); } } @@ -638,7 +628,7 @@ void fn_1_B24C(void) temp.unk20.z = 0; temp.unk38 = 1400; fn_1_42A0(work, &temp, work->unk40++, 60, 10); - if(0.0f != lbl_1_bss_194.unk100) { - work->unk08.y = 100+lbl_1_bss_194.unk100; + if (0.0f != lbl_1_bss_194.unk100) { + work->unk08.y = 100 + lbl_1_bss_194.unk100; } -} \ No newline at end of file +} diff --git a/src/REL/mstory2Dll/board_miss.c b/src/REL/mstory2Dll/board_miss.c index 45b05479..89c73938 100644 --- a/src/REL/mstory2Dll/board_miss.c +++ b/src/REL/mstory2Dll/board_miss.c @@ -10,13 +10,13 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" #include "game/printfunc.h" #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" -#include "game/pad.h" -#include "game/objsub.h" -#include "game/board/main.h" + typedef struct { /* 0x000 */ s32 unk00; @@ -59,27 +59,19 @@ s32 lbl_1_data_698[7] = { DATADIR_W10, }; -s32 lbl_1_data_6B4[8] = { - DATADIR_MARIOMDL1, - DATADIR_LUIGIMDL1, - DATADIR_PEACHMDL1, - DATADIR_YOSHIMDL1, - DATADIR_WARIOMDL1, - DATADIR_DONKEYMDL1, - DATADIR_DAISYMDL1, - DATADIR_WALUIGIMDL1 -}; +s32 lbl_1_data_6B4[8] = { DATADIR_MARIOMDL1, DATADIR_LUIGIMDL1, DATADIR_PEACHMDL1, DATADIR_YOSHIMDL1, DATADIR_WARIOMDL1, DATADIR_DONKEYMDL1, + DATADIR_DAISYMDL1, DATADIR_WALUIGIMDL1 }; void fn_1_FDFC(void); void fn_1_10194(void); -void fn_1_106B0(omObjData* arg0, StructBss16C* arg1); +void fn_1_106B0(omObjData *arg0, StructBss16C *arg1); void fn_1_1094C(void); void fn_1_10DF4(int arg0, int arg1, int arg2, int arg3, int arg4); -void fn_1_10EA0(omObjData* arg0, StructBss16C* arg1); +void fn_1_10EA0(omObjData *arg0, StructBss16C *arg1); void fn_1_1112C(void); void fn_1_11418(int arg0); -void fn_1_11934(omObjData* arg0, StructBss16C* arg1); -void fn_1_11A98(omObjData* arg0, StructBss16C* arg1); +void fn_1_11934(omObjData *arg0, StructBss16C *arg1); +void fn_1_11A98(omObjData *arg0, StructBss16C *arg1); void fn_1_11BB0(void); void fn_1_11FD0(void); void fn_1_1205C(void); @@ -88,25 +80,25 @@ void fn_1_1218C(void); void fn_1_E570(void) { int statId = HuDataDirReadAsync(DATADIR_BOARD); - if(statId != -1) { - while(!HuDataGetAsyncStat(statId)) { + if (statId != -1) { + while (!HuDataGetAsyncStat(statId)) { HuPrcVSleep(); } } HuAR_MRAMtoARAM(DATADIR_BOARD); - while(HuARDMACheck()) { + while (HuARDMACheck()) { HuPrcVSleep(); } HuDataDirClose(DATADIR_BOARD); statId = HuDataDirReadAsync(lbl_1_data_698[GWSystem.board]); - if(statId != -1) { - while(!HuDataGetAsyncStat(statId)) { + if (statId != -1) { + while (!HuDataGetAsyncStat(statId)) { HuPrcVSleep(); } } lbl_1_bss_4E4 = TRUE; HuPrcEnd(); - while(1) { + while (1) { HuPrcVSleep(); } } @@ -119,22 +111,22 @@ void fn_1_E638(void) lbl_1_bss_4E8[0].unk10 = lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk10; lbl_1_bss_4E8[0].unk14 = lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk14; lbl_1_bss_4E8[0].unk08 = 0; - for(i=1; i<4; i++) { + for (i = 1; i < 4; i++) { lbl_1_bss_4E8[i].unk10 = -1; lbl_1_bss_4E8[i].unk14 = i; lbl_1_bss_4E8[i].unk08 = 1; } - for(i=1; i<4; i++) { + for (i = 1; i < 4; i++) { do { - lbl_1_bss_4E8[i].unk10 = rand8()%8; - for(j=0; j<4; j++) { - if(i != j && lbl_1_bss_4E8[j].unk10 != -1 && lbl_1_bss_4E8[i].unk10 == lbl_1_bss_4E8[j].unk10) { + lbl_1_bss_4E8[i].unk10 = rand8() % 8; + for (j = 0; j < 4; j++) { + if (i != j && lbl_1_bss_4E8[j].unk10 != -1 && lbl_1_bss_4E8[i].unk10 == lbl_1_bss_4E8[j].unk10) { break; } } - } while(j != 4); + } while (j != 4); } - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { GWPlayerCfg[i].character = lbl_1_bss_4E8[i].unk10; GWPlayerCfg[i].pad_idx = lbl_1_bss_4E8[i].unk14; GWPlayerCfg[i].group = 0; @@ -148,15 +140,7 @@ void fn_1_E638(void) void fn_1_E8EC(void) { - int ovlTbl[7] = { - OVL_W01, - OVL_W02, - OVL_W03, - OVL_W04, - OVL_W05, - OVL_W06, - OVL_W10 - }; + int ovlTbl[7] = { OVL_W01, OVL_W02, OVL_W03, OVL_W04, OVL_W05, OVL_W06, OVL_W10 }; omOvlHisData *his; WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); while (WipeStatGet()) { @@ -168,7 +152,7 @@ void fn_1_E8EC(void) omOvlHisChg(0, OVL_MSTORY3, 0, his->stat); do { fn_1_BC8(); - } while(lbl_1_bss_4E4 != 1); + } while (lbl_1_bss_4E4 != 1); CharARAMOpen(GWPlayerCfg[0].character); CharARAMOpen(GWPlayerCfg[1].character); CharARAMOpen(GWPlayerCfg[2].character); @@ -176,12 +160,12 @@ void fn_1_E8EC(void) HuAudSeqAllFadeOut(1000); HuAudSStreamAllFadeOut(1000); omOvlCallEx(ovlTbl[GWSystem.board], 1, 0, 0); - while(1) { + while (1) { fn_1_BC8(); } } -void fn_1_EA2C(Process* arg0, s32 arg1) +void fn_1_EA2C(Process *arg0, s32 arg1) { int i; lbl_1_bss_4E0 = arg0; @@ -194,7 +178,7 @@ void fn_1_EA2C(Process* arg0, s32 arg1) HuPrcChildCreate(fn_1_10194, 100, 8192, 0, HuPrcCurrentGet()); HuPrcChildCreate(fn_1_1094C, 100, 8192, 0, HuPrcCurrentGet()); HuPrcChildCreate(fn_1_1112C, 100, 8192, 0, HuPrcCurrentGet()); - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { HuPrcChildCreate(fn_1_11BB0, 100, 8192, 0, HuPrcCurrentGet()); } HuPrcChildCreate(fn_1_FDFC, 100, 8192, 0, HuPrcCurrentGet()); @@ -202,11 +186,11 @@ void fn_1_EA2C(Process* arg0, s32 arg1) void fn_1_EB60(omObjData *object) { - if(object->work[2]) { + if (object->work[2]) { object->work[2]--; return; } - if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { fn_1_1DFC(object, 1, object->work[1], 15, 1); object->work[0] = object->work[1] = object->work[2] = 0; } @@ -218,40 +202,46 @@ void fn_1_EBEC(void) int posY = 40; GXColor winColor = { 0, 0, 128, 128 }; int i; - while(1) { + while (1) { fn_1_BC8(); printWin(posX, posY, 220, 160, &winColor); - if(lbl_1_bss_660.unk04 == NULL) { + if (lbl_1_bss_660.unk04 == NULL) { print8(posX, posY, 1, "PROC_MAIN -> FALSE"); - } else { + } + else { print8(posX, posY, 1, "PROC_MAIN -> TRUE"); } - if(lbl_1_bss_638.unk04 == NULL) { - print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); - } else { - print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + if (lbl_1_bss_638.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); } - if(lbl_1_bss_610.unk04 == NULL) { - print8(posX, posY+20, 1, "PROC_KOOPA -> FALSE"); - } else { - print8(posX, posY+20, 1, "PROC_KOOPA -> TRUE"); + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); } - if(lbl_1_bss_5E8.unk04 == NULL) { - print8(posX, posY+30, 1, "PROC_MKOOPA -> FALSE"); - } else { - print8(posX, posY+30, 1, "PROC_MKOOPA -> TRUE"); + if (lbl_1_bss_610.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE"); } - for(i=0; i<4; i++) { - if(lbl_1_bss_548[i].unk04 == NULL) { - print8(posX, posY+40+(i*10), 1, "PROC_PLAYER%d -> FALSE", i); - } else { - print8(posX, posY+40+(i*10), 1, "PROC_PLAYER%d -> TRUE", i); + else { + print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE"); + } + if (lbl_1_bss_5E8.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE"); + } + else { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE"); + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_548[i].unk04 == NULL) { + print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> FALSE", i); + } + else { + print8(posX, posY + 40 + (i * 10), 1, "PROC_PLAYER%d -> TRUE", i); } } - print8(posX, posY+90, 1, "P:%d W:%d", lbl_1_bss_688.unk00, lbl_1_bss_688.unk0C); - print8(posX, posY+110, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); - for(i=0; i<4; i++) { - print8(posX, posY+120+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_688.unk30[i].unk00, lbl_1_bss_688.unk30[i].unk04, lbl_1_bss_688.unk30[i].unk08, lbl_1_bss_688.unk30[i].unk0C, lbl_1_bss_688.unk30[i].unk14, lbl_1_bss_688.unk30[i].unk10); + print8(posX, posY + 90, 1, "P:%d W:%d", lbl_1_bss_688.unk00, lbl_1_bss_688.unk0C); + print8(posX, posY + 110, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 120 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_688.unk30[i].unk00, lbl_1_bss_688.unk30[i].unk04, + lbl_1_bss_688.unk30[i].unk08, lbl_1_bss_688.unk30[i].unk0C, lbl_1_bss_688.unk30[i].unk14, lbl_1_bss_688.unk30[i].unk10); } } } @@ -269,46 +259,46 @@ void fn_1_EFCC(void) void fn_1_F028(void) { int i; - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { lbl_1_bss_548[i].unk04 = (void *)fn_1_11934; } do { fn_1_BC8(); - for(i=0; i<4; i++) { - if(lbl_1_bss_548[i].unk04 != NULL) { + for (i = 0; i < 4; i++) { + if (lbl_1_bss_548[i].unk04 != NULL) { break; } } - } while(i != 4); + } while (i != 4); lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 = (void *)fn_1_11A98; fn_1_3854(&lbl_1_bss_24); fn_1_2750(fn_1_1205C); do { fn_1_BC8(); - } while(lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 != NULL); + } while (lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 != NULL); do { fn_1_BC8(); - } while(lbl_1_bss_5E8.unk04 != NULL); + } while (lbl_1_bss_5E8.unk04 != NULL); fn_1_BE8(30); - if(0) { - //Dummy code to stop this function from inlining + if (0) { + // Dummy code to stop this function from inlining do { fn_1_BC8(); - for(i=0; i<4; i++) { - if(lbl_1_bss_548[i].unk04 != NULL) { + for (i = 0; i < 4; i++) { + if (lbl_1_bss_548[i].unk04 != NULL) { break; } } - } while(i != 4); + } while (i != 4); lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 = (void *)fn_1_11A98; fn_1_3854(&lbl_1_bss_24); fn_1_2750(fn_1_1205C); do { fn_1_BC8(); - } while(lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 != NULL); + } while (lbl_1_bss_548[lbl_1_bss_688.unk00].unk04 != NULL); do { fn_1_BC8(); - } while(lbl_1_bss_5E8.unk04 != NULL); + } while (lbl_1_bss_5E8.unk04 != NULL); fn_1_BE8(30); } } @@ -363,11 +353,11 @@ void fn_1_F3D0(void) HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); do { fn_1_BC8(); - } while(lbl_1_bss_5E8.unk04 != NULL); + } while (lbl_1_bss_5E8.unk04 != NULL); lbl_1_bss_610.unk04 = (void *)fn_1_106B0; do { fn_1_BC8(); - } while(lbl_1_bss_610.unk04 != NULL); + } while (lbl_1_bss_610.unk04 != NULL); fn_1_7384(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->model[1], lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk10, 1, 20, 1); lbl_1_bss_78[1] = HuAudSeqPlay(6); fn_1_BE8(30); @@ -404,10 +394,7 @@ void fn_1_F3D0(void) fn_1_BE8(150); } -void fn_1_F838(void) -{ - -} +void fn_1_F838(void) { } void fn_1_F83C(void) { @@ -422,7 +409,7 @@ void fn_1_F83C(void) omOvlReturnEx(1, 1); } -void fn_1_F8B4(omObjData* arg0, StructBss16C* arg1) +void fn_1_F8B4(omObjData *arg0, StructBss16C *arg1) { int mode = 0; int i; @@ -430,36 +417,37 @@ void fn_1_F8B4(omObjData* arg0, StructBss16C* arg1) fn_1_F028(); fn_1_F150(); lbl_1_bss_688.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_688.unk0C); - while(1) { + while (1) { fn_1_BC8(); - if(fn_1_F22C()) { + if (fn_1_F22C()) { mode = 0; break; - } else if(fn_1_F2FC()) { + } + else if (fn_1_F2FC()) { mode = 1; break; } } - + fn_1_1A94(lbl_1_bss_688.unk04); - for(i=0; i<4; i++) { - if(lbl_1_bss_688.unk30[i].unk00 != lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk00) { + for (i = 0; i < 4; i++) { + if (lbl_1_bss_688.unk30[i].unk00 != lbl_1_bss_688.unk30[lbl_1_bss_688.unk00].unk00) { Hu3DModelAttrSet(lbl_1_bss_548[i].unk00->model[1], 1); } Hu3DModelAttrSet(lbl_1_bss_548[i].unk00->model[2], 1); } - switch(mode) { + switch (mode) { case 0: fn_1_F3D0(); break; case 1: break; } - switch(mode) { + switch (mode) { case 0: fn_1_E8EC(); break; - + case 1: fn_1_F83C(); break; @@ -473,9 +461,9 @@ void fn_1_FDFC(void) lbl_1_bss_660.unk00 = obj = omAddObjEx(lbl_1_bss_4E0, 256, 16, 16, -1, NULL); lbl_1_bss_660.unk04 = (void *)fn_1_F8B4; lbl_1_bss_660.unk00->data = &lbl_1_bss_660; - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_660.unk04 != NULL) { + if (lbl_1_bss_660.unk04 != NULL) { lbl_1_bss_660.unk04(obj, &lbl_1_bss_660); } } @@ -504,10 +492,10 @@ void fn_1_FEB0(omObjData *object) fn_1_1DFC(object, 6, 6, 0, 2); } -void fn_1_100D8(omObjData* arg0, StructBss16C* arg1) +void fn_1_100D8(omObjData *arg0, StructBss16C *arg1) { Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360); - if(arg1->unk08 >= 360) { + if (arg1->unk08 >= 360) { arg1->unk08 = 0; } } @@ -519,9 +507,9 @@ void fn_1_10194(void) lbl_1_bss_638.unk04 = (void *)fn_1_100D8; lbl_1_bss_638.unk00->data = &lbl_1_bss_638; fn_1_FEB0(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_638.unk04 != NULL) { + if (lbl_1_bss_638.unk04 != NULL) { lbl_1_bss_638.unk04(obj, &lbl_1_bss_638); } } @@ -545,38 +533,38 @@ void fn_1_10448(omObjData *object) void fn_1_10604(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_610.unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_610.unk00->work[0] = arg4; lbl_1_bss_610.unk00->work[1] = arg1; - lbl_1_bss_610.unk00->work[2] = arg2+1; + lbl_1_bss_610.unk00->work[2] = arg2 + 1; } -void fn_1_106B0(omObjData* arg0, StructBss16C* arg1) +void fn_1_106B0(omObjData *arg0, StructBss16C *arg1) { int i = 0; float speed = 50; - + HuAudFXPlay(153); fn_1_10604(2, 1, 0, 0, 1); fn_1_BE8(5); Hu3DMotionTimeSet(lbl_1_bss_610.unk00->model[1], 100); fn_1_BC8(); Hu3DModelAttrReset(arg0->model[1], 1); - while(1) { + while (1) { fn_1_BC8(); - if(Hu3DMotionTimeGet(lbl_1_bss_610.unk00->model[1]) >= 137) { + if (Hu3DMotionTimeGet(lbl_1_bss_610.unk00->model[1]) >= 137) { break; } } HuAudFXPlay(156); omVibrate(lbl_1_bss_688.unk0C, 45, 12, 0); fn_1_67D8(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00, 6, 1, 5, 0); - for(i=0; i<60; i++) { + for (i = 0; i < 60; i++) { float posY; fn_1_BC8(); - posY = fn_1_B08(0, speed, i%15, 15); + posY = fn_1_B08(0, speed, i % 15, 15); speed = fn_1_88C(speed, 0, 30); lbl_1_bss_688.unk100 = fn_1_88C(lbl_1_bss_688.unk100, posY, 5); } @@ -591,15 +579,16 @@ void fn_1_1094C(void) lbl_1_bss_610.unk04 = NULL; lbl_1_bss_610.unk00->data = &lbl_1_bss_638; fn_1_10448(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_610.unk04 != NULL) { + if (lbl_1_bss_610.unk04 != NULL) { lbl_1_bss_610.unk04(obj, &lbl_1_bss_610); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -626,15 +615,15 @@ void fn_1_10C00(omObjData *object) void fn_1_10DF4(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_5E8.unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_5E8.unk00->work[0] = arg4; lbl_1_bss_5E8.unk00->work[1] = arg1; - lbl_1_bss_5E8.unk00->work[2] = arg2+1; + lbl_1_bss_5E8.unk00->work[2] = arg2 + 1; } -void fn_1_10EA0(omObjData* arg0, StructBss16C* arg1) +void fn_1_10EA0(omObjData *arg0, StructBss16C *arg1) { Vec pos = { -600, 0, 800 }; fn_1_1DFC(arg0, 1, 2, 15, 1); @@ -643,17 +632,17 @@ void fn_1_10EA0(omObjData* arg0, StructBss16C* arg1) arg1->unk04 = NULL; } -void fn_1_10F84(omObjData* arg0, StructBss16C* arg1) +void fn_1_10F84(omObjData *arg0, StructBss16C *arg1) { int i; - for(i=0; i<15; i++) { + for (i = 0; i < 15; i++) { fn_1_BC8(); Hu3DData[arg0->model[1]].rot.y = fn_1_864(0, 135, i, 15); } arg1->unk04 = NULL; } -void fn_1_11048(omObjData* arg0, StructBss16C* arg1) +void fn_1_11048(omObjData *arg0, StructBss16C *arg1) { Vec pos = { -120, 0, 800 }; fn_1_1DFC(arg0, 1, 2, 15, 1); @@ -669,15 +658,16 @@ void fn_1_1112C(void) lbl_1_bss_5E8.unk04 = NULL; lbl_1_bss_5E8.unk00->data = &lbl_1_bss_5E8; fn_1_10C00(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_5E8.unk04 != NULL) { + if (lbl_1_bss_5E8.unk04 != NULL) { lbl_1_bss_5E8.unk04(obj, &lbl_1_bss_5E8); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -690,20 +680,20 @@ void fn_1_11418(int arg0) int i; int order[4]; order[0] = 0; - for(i=1; i<4; i++) { - order[i] = order[i-1]+1; - if(order[i] >= 4) { + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { order[i] = 0; } - if(arg0 == order[i]) { + if (arg0 == order[i]) { lbl_1_bss_688.unk00 = i; } } - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { fn_1_357C(&lbl_1_bss_688.unk30[i], order[i]); } - for(i=0; i<4; i++) { - lbl_1_bss_688.unk30[i].unk18 = GWPlayer[order[i]].rank+1; + for (i = 0; i < 4; i++) { + lbl_1_bss_688.unk30[i].unk18 = GWPlayer[order[i]].rank + 1; } } @@ -719,21 +709,23 @@ void fn_1_1154C(omObjData *object, int player) int playerNo = player; int charNo = lbl_1_bss_688.unk30[playerNo].unk10; object->model[1] = CharModelCreate(charNo, 4); - object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); - object->motion[2] = CharModelMotionCreate(charNo, 0x5F0003); - object->motion[3] = CharModelMotionCreate(charNo, 0x5F0005); - object->motion[4] = CharModelMotionCreate(charNo, 0x5F001A); - object->motion[5] = CharModelMotionCreate(charNo, 0x5F006D); - object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x660018+charNo); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03)); + object->motion[3] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05)); + object->motion[4] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A)); + object->motion[5] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6D)); + object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x660018 + charNo); CharModelMotionDataClose(charNo); - Hu3DModelPosSet(object->model[1], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18-1].y+90, lbl_1_data_81C[playerNo].z); + Hu3DModelPosSet( + object->model[1], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18 - 1].y + 90, lbl_1_data_81C[playerNo].z); Hu3DModelRotSet(object->model[1], 0, 0, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); Hu3DModelShadowSet(object->model[1]); fn_1_1DFC(object, 1, 1, 0, 1); object->model[2] = Hu3DModelCreateFile(0x660056); - Hu3DModelPosSet(object->model[2], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18-1].y, lbl_1_data_81C[playerNo].z); - if(lbl_1_bss_688.unk30[playerNo].unk18 == 4) { + Hu3DModelPosSet( + object->model[2], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18 - 1].y, lbl_1_data_81C[playerNo].z); + if (lbl_1_bss_688.unk30[playerNo].unk18 == 4) { Hu3DModelAttrSet(object->model[2], 1); } Hu3DModelScaleSet(object->model[2], 1.5, 1, 1.5); @@ -743,28 +735,28 @@ void fn_1_1154C(omObjData *object, int player) void fn_1_11838(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_548[lbl_1_bss_688.unk00].unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[0] = arg4; lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[1] = arg1; - lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[2] = arg2+1; + lbl_1_bss_548[lbl_1_bss_688.unk00].unk00->work[2] = arg2 + 1; } -void fn_1_11934(omObjData* arg0, StructBss16C* arg1) +void fn_1_11934(omObjData *arg0, StructBss16C *arg1) { float posY = Hu3DData[arg0->model[1]].pos.y; int i; - for(i=0; i<60; i++) { + for (i = 0; i < 60; i++) { fn_1_BC8(); Hu3DData[arg0->model[1]].pos.y = fn_1_984(posY, 0, i, 60); - Hu3DData[arg0->model[2]].pos.y = fn_1_984(posY-90, -90, i, 60); + Hu3DData[arg0->model[2]].pos.y = fn_1_984(posY - 90, -90, i, 60); } Hu3DModelAttrSet(arg0->model[2], 1); arg1->unk04 = NULL; } -void fn_1_11A98(omObjData* arg0, StructBss16C* arg1) +void fn_1_11A98(omObjData *arg0, StructBss16C *arg1) { Vec pos = { 120, 0, 800 }; lbl_1_bss_5E8.unk04 = (void *)fn_1_11048; @@ -783,15 +775,16 @@ void fn_1_11BB0(void) lbl_1_bss_548[playerNo].unk04 = NULL; lbl_1_bss_548[playerNo].unk00->data = &lbl_1_bss_548[0]; fn_1_1154C(obj, playerNo); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_548[playerNo].unk04 != NULL) { + if (lbl_1_bss_548[playerNo].unk04 != NULL) { lbl_1_bss_548[playerNo].unk04(obj, &lbl_1_bss_548[playerNo]); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -823,8 +816,8 @@ void fn_1_1205C(void) temp.unk20.z = 0; temp.unk38 = 1750; fn_1_4FEC(work, &temp, work->unk40++, 60, 30); - if(0.0f != lbl_1_bss_688.unk100) { - work->unk08.y = lbl_1_bss_688.unk100+125; + if (0.0f != lbl_1_bss_688.unk100) { + work->unk08.y = lbl_1_bss_688.unk100 + 125; } } @@ -832,7 +825,7 @@ void fn_1_1218C(void) { StructBss24 *work = &lbl_1_bss_24; StructBss24 temp; - if(work->unk40 == 50) { + if (work->unk40 == 50) { fn_1_1DFC(lbl_1_bss_638.unk00, 5, 5, 0, 0); fn_1_1DFC(lbl_1_bss_638.unk00, 6, 6, 0, 0); HuAudFXPlay(161); @@ -845,11 +838,11 @@ void fn_1_1218C(void) temp.unk20.z = 0; temp.unk38 = 125; fn_1_4FEC(work, &temp, work->unk40, 180, 10); - if(work->unk40++ >= 90) { - if(work->unk40 == 91) { + if (work->unk40++ >= 90) { + if (work->unk40 == 91) { lbl_1_bss_88[0] = HuAudFXPlay(32); } - work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40-90, 90); - Hu3DData[lbl_1_bss_638.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40-90, 90); + work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40 - 90, 90); + Hu3DData[lbl_1_bss_638.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40 - 90, 90); } -} \ No newline at end of file +} diff --git a/src/REL/mstory2Dll/ending.c b/src/REL/mstory2Dll/ending.c index c0c09595..5e1a9b17 100644 --- a/src/REL/mstory2Dll/ending.c +++ b/src/REL/mstory2Dll/ending.c @@ -3,19 +3,20 @@ #include "game/board/main.h" #include "game/chrman.h" #include "game/data.h" +#include "game/esprite.h" #include "game/gamework.h" #include "game/gamework_data.h" #include "game/hsfanim.h" #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" #include "game/printfunc.h" #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" -#include "game/pad.h" -#include "game/objsub.h" -#include "game/esprite.h" + typedef struct { /* 0x000 */ s32 unk00; @@ -46,11 +47,11 @@ s32 lbl_1_data_F14 = 127; void fn_1_19F14(void); void fn_1_1A160(void); -void fn_1_1A538(omObjData* arg0, StructBss16C* arg1); +void fn_1_1A538(omObjData *arg0, StructBss16C *arg1); void fn_1_1A578(void); -void fn_1_1A9D0(omObjData* arg0, StructBss16C* arg1); +void fn_1_1A9D0(omObjData *arg0, StructBss16C *arg1); void fn_1_1AAB4(void); -void fn_1_1AFD4(omObjData* arg0, StructBss16C* arg1); +void fn_1_1AFD4(omObjData *arg0, StructBss16C *arg1); void fn_1_1B0E4(void); void fn_1_1AD3C(int arg0); void fn_1_1B318(void); @@ -60,44 +61,44 @@ void fn_1_1B430(void); void fn_1_186D0(void) { int i; - while(1) { + while (1) { HuPrcVSleep(); - if(lbl_1_data_F08 != -1 && lbl_1_data_F0C[0] != -1 && lbl_1_data_F0C[1] != -1 && lbl_1_data_F0C[0] == Hu3DMotionIDGet(lbl_1_data_F08)) { - for(i=0; i<2; i++) { - if(lbl_1_data_EF8[1][i] != -1) { - if(Hu3DMotionTimeGet(lbl_1_data_F08) >= lbl_1_data_EF8[0][i]) { + if (lbl_1_data_F08 != -1 && lbl_1_data_F0C[0] != -1 && lbl_1_data_F0C[1] != -1 && lbl_1_data_F0C[0] == Hu3DMotionIDGet(lbl_1_data_F08)) { + for (i = 0; i < 2; i++) { + if (lbl_1_data_EF8[1][i] != -1) { + if (Hu3DMotionTimeGet(lbl_1_data_F08) >= lbl_1_data_EF8[0][i]) { OSReport("KE-System TIME:%d\n", lbl_1_data_EF8[0][i]); HuAudFXPlayVol(81, lbl_1_data_F14); lbl_1_data_EF8[1][i] = -1; } } } - if(Hu3DMotionTimeGet(lbl_1_data_F08) <= 10) { - for(i=0; i<2; i++) { + if (Hu3DMotionTimeGet(lbl_1_data_F08) <= 10) { + for (i = 0; i < 2; i++) { lbl_1_data_EF8[1][i] = 1; } } } - if(lbl_1_bss_B3C == 1) { + if (lbl_1_bss_B3C == 1) { lbl_1_data_F14--; - if(lbl_1_data_F14 <= 0) { + if (lbl_1_data_F14 <= 0) { lbl_1_data_F14 = 0; } } - if(lbl_1_bss_B3C == 2) { + if (lbl_1_bss_B3C == 2) { break; } } HuPrcEnd(); - while(1) { + while (1) { HuPrcVSleep(); } } -void fn_1_188F0(Process* arg0, s32 arg1) +void fn_1_188F0(Process *arg0, s32 arg1) { lbl_1_bss_B38 = arg0; - if(GWSystem.diff_story == 2) { + if (GWSystem.diff_story == 2) { GWGameStat.field10E_bit4 = TRUE; } lbl_1_bss_C0C.unk0C = arg1; @@ -115,11 +116,11 @@ void fn_1_188F0(Process* arg0, s32 arg1) void fn_1_18A34(omObjData *object) { - if(object->work[2]) { + if (object->work[2]) { object->work[2]--; return; } - if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { fn_1_1DFC(object, 1, object->work[1], 15, 1); object->work[0] = object->work[1] = object->work[2] = 0; } @@ -131,40 +132,46 @@ void fn_1_18AC0(void) int posY = 40; GXColor winColor = { 0, 0, 128, 128 }; int i; - while(1) { + while (1) { fn_1_BC8(); fontcolor = FONT_COLOR_WHITE; printWin(posX, posY, 220, 130, &winColor); - if(lbl_1_bss_BE4.unk04 == NULL) { + if (lbl_1_bss_BE4.unk04 == NULL) { print8(posX, posY, 1, "PROC_MAIN -> FALSE"); - } else { + } + else { print8(posX, posY, 1, "PROC_MAIN -> TRUE"); } - if(lbl_1_bss_BBC.unk04 == NULL) { - print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); - } else { - print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + if (lbl_1_bss_BBC.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); } - if(lbl_1_bss_B94.unk04 == NULL) { - print8(posX, posY+20, 1, "PROC_PLAYER -> FALSE"); - } else { - print8(posX, posY+20, 1, "PROC_PLAYER -> TRUE"); + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); } - if(lbl_1_bss_B6C.unk04 == NULL) { - print8(posX, posY+30, 1, "PROC_SUB -> FALSE"); - } else { - print8(posX, posY+30, 1, "PROC_SUB -> TRUE"); + if (lbl_1_bss_B94.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_PLAYER -> FALSE"); } - if(lbl_1_bss_B44.unk04 == NULL) { - print8(posX, posY+40, 1, "PROC_KOOPA -> FALSE"); - } else { - print8(posX, posY+40, 1, "PROC_KOOPA -> TRUE"); + else { + print8(posX, posY + 20, 1, "PROC_PLAYER -> TRUE"); } - - print8(posX, posY+60, 1, "P:%d W:%d", lbl_1_bss_C0C.unk00, lbl_1_bss_C0C.unk0C); - print8(posX, posY+80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); - for(i=0; i<4; i++) { - print8(posX, posY+90+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_C0C.unk30[i].unk00, lbl_1_bss_C0C.unk30[i].unk04, lbl_1_bss_C0C.unk30[i].unk08, lbl_1_bss_C0C.unk30[i].unk0C, lbl_1_bss_C0C.unk30[i].unk14, lbl_1_bss_C0C.unk30[i].unk10); + if (lbl_1_bss_B6C.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_SUB -> FALSE"); + } + else { + print8(posX, posY + 30, 1, "PROC_SUB -> TRUE"); + } + if (lbl_1_bss_B44.unk04 == NULL) { + print8(posX, posY + 40, 1, "PROC_KOOPA -> FALSE"); + } + else { + print8(posX, posY + 40, 1, "PROC_KOOPA -> TRUE"); + } + + print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_C0C.unk00, lbl_1_bss_C0C.unk0C); + print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_C0C.unk30[i].unk00, lbl_1_bss_C0C.unk30[i].unk04, + lbl_1_bss_C0C.unk30[i].unk08, lbl_1_bss_C0C.unk30[i].unk0C, lbl_1_bss_C0C.unk30[i].unk14, lbl_1_bss_C0C.unk30[i].unk10); } } } @@ -211,7 +218,7 @@ void fn_1_18EC4(void) do { fn_1_BC8(); } while (WipeStatGet()); - if(0) { + if (0) { fn_1_BC8(); } } @@ -226,15 +233,15 @@ void fn_1_19138(void) fn_1_2750(fn_1_1B430); fn_1_BE8(30); fn_1_1DFC(lbl_1_bss_BBC.unk00, 2, 2, 0, 0); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_B94.unk04 == NULL) { + if (lbl_1_bss_B94.unk04 == NULL) { break; } } - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_B6C.unk04 == NULL) { + if (lbl_1_bss_B6C.unk04 == NULL) { break; } } @@ -251,16 +258,8 @@ void fn_1_19138(void) fn_1_BE8(60); } -char *lbl_1_data_10E4[8] = { - "movie/endmov_ma0.thp", - "movie/endmov_lu0.thp", - "movie/endmov_pe0.thp", - "movie/endmov_yo0.thp", - "movie/endmov_wa0.thp", - "movie/endmov_do0.thp", - "movie/endmov_da0.thp", - "movie/endmov_wl0.thp" -}; +char *lbl_1_data_10E4[8] = { "movie/endmov_ma0.thp", "movie/endmov_lu0.thp", "movie/endmov_pe0.thp", "movie/endmov_yo0.thp", "movie/endmov_wa0.thp", + "movie/endmov_do0.thp", "movie/endmov_da0.thp", "movie/endmov_wl0.thp" }; void fn_1_19334(void) { @@ -303,7 +302,7 @@ void fn_1_19334(void) lbl_1_bss_B94.unk04 = NULL; lbl_1_bss_B44.unk04 = NULL; lbl_1_bss_B6C.unk04 = NULL; - + CharModelKill(-1); Hu3DAllKill(); fn_1_BE8(60); @@ -320,7 +319,7 @@ void fn_1_19334(void) sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(0x660061, 0x10000000)), 950, 0); HuSprGrpMemberSet(gid, 2, sprid); HuSprBankSet(gid, 2, lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10); - if(GWLanguageGet() == 0 && lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10 == 5) { + if (GWLanguageGet() == 0 && lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10 == 5) { HuSprBankSet(gid, 2, 8); } HuSprPosSet(gid, 2, 288, 254); @@ -328,28 +327,28 @@ void fn_1_19334(void) HuPrcSleep(5); WipeColorSet(0, 0, 0); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); - while(WipeStatGet()) { + while (WipeStatGet()) { HuPrcVSleep(); } - while(!HuTHPEndCheck()) { - if(time >= 3300) { + while (!HuTHPEndCheck()) { + if (time >= 3300) { HuSprAttrReset(gid, 1, HUSPR_ATTR_DISPOFF); HuSprAttrReset(gid, 2, HUSPR_ATTR_DISPOFF); - } else { + } + else { time++; } HuPrcVSleep(); } WipeColorSet(0, 0, 0); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); - while(WipeStatGet()) { + while (WipeStatGet()) { HuPrcVSleep(); } HuTHPClose(); HuPrcVSleep(); HuSprGrpKill(gid); } - } void fn_1_199A0(void) @@ -423,13 +422,13 @@ void fn_1_19BE8(void) HuAudFadeOut(1); his = omOvlHisGet(0); omOvlHisChg(0, OVL_MSTORY2, 20, 1); - omOvlCallEx(OVL_STAFF, 1, 0, 0); - while(1) { + omOvlCallEx(OVL_STAFF, 1, 0, 0); + while (1) { fn_1_BC8(); } } -void fn_1_19C6C(omObjData* arg0, StructBss16C* arg1) +void fn_1_19C6C(omObjData *arg0, StructBss16C *arg1) { int temp = 0; fn_1_18E7C(); @@ -446,9 +445,9 @@ void fn_1_19F14(void) lbl_1_bss_BE4.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); lbl_1_bss_BE4.unk04 = (void *)fn_1_19C6C; lbl_1_bss_BE4.unk00->data = &lbl_1_bss_BE4; - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_BE4.unk04 != NULL) { + if (lbl_1_bss_BE4.unk04 != NULL) { lbl_1_bss_BE4.unk04(obj, &lbl_1_bss_BE4); } } @@ -477,9 +476,9 @@ void fn_1_1A160(void) lbl_1_bss_BBC.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); lbl_1_bss_BBC.unk04 = NULL; fn_1_19FC8(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_BBC.unk04 != NULL) { + if (lbl_1_bss_BBC.unk04 != NULL) { lbl_1_bss_BBC.unk04(obj, &lbl_1_bss_BBC); } } @@ -501,7 +500,7 @@ void fn_1_1A368(omObjData *object) HuPrcChildCreate(fn_1_186D0, 100, 8192, 0, HuPrcCurrentGet()); } -void fn_1_1A538(omObjData* arg0, StructBss16C* arg1) +void fn_1_1A538(omObjData *arg0, StructBss16C *arg1) { Hu3DData[lbl_1_bss_B44.unk00->model[1]].pos.z -= 2.5f; } @@ -512,12 +511,12 @@ void fn_1_1A578(void) lbl_1_bss_B44.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); lbl_1_bss_B44.unk04 = NULL; fn_1_1A368(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_B44.unk04 != NULL) { + if (lbl_1_bss_B44.unk04 != NULL) { lbl_1_bss_B44.unk04(obj, &lbl_1_bss_B44); } - if(obj->work[0]) { + if (obj->work[0]) { fn_1_6704(obj); } } @@ -540,8 +539,7 @@ void fn_1_1A7CC(omObjData *object) CharModelEffectNpcInit(object->model[1], object->motion[2], 1, 9); } - -void fn_1_1A9D0(omObjData* arg0, StructBss16C* arg1) +void fn_1_1A9D0(omObjData *arg0, StructBss16C *arg1) { Vec pos = { -120, 0, 800 }; fn_1_1DFC(arg0, 1, 2, 15, 1); @@ -556,12 +554,12 @@ void fn_1_1AAB4(void) lbl_1_bss_B6C.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); lbl_1_bss_B6C.unk04 = NULL; fn_1_1A7CC(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_B6C.unk04 != NULL) { + if (lbl_1_bss_B6C.unk04 != NULL) { lbl_1_bss_B6C.unk04(obj, &lbl_1_bss_B6C); } - if(obj->work[0]) { + if (obj->work[0]) { fn_1_6704(obj); } } @@ -572,16 +570,16 @@ void fn_1_1AD3C(int arg0) int i; int order[4]; order[0] = 0; - for(i=1; i<4; i++) { - order[i] = order[i-1]+1; - if(order[i] >= 4) { + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { order[i] = 0; } - if(arg0 == order[i]) { + if (arg0 == order[i]) { lbl_1_bss_C0C.unk00 = i; } } - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { fn_1_357C(&lbl_1_bss_C0C.unk30[i], order[i]); } } @@ -590,10 +588,10 @@ void fn_1_1AE20(omObjData *object) { int charNo = lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10; object->model[1] = CharModelCreate(charNo, 1); - object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); - object->motion[2] = CharModelMotionCreate(charNo, 0x5F0035); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660010+charNo); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660008+charNo); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660010 + charNo); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660008 + charNo); CharModelMotionDataClose(charNo); Hu3DModelPosSet(object->model[1], 120, 0, 800); Hu3DModelRotSet(object->model[1], 0, -135, 0); @@ -603,13 +601,13 @@ void fn_1_1AE20(omObjData *object) fn_1_1DFC(object, 1, 1, 0, 1); } -void fn_1_1AFD4(omObjData* arg0, StructBss16C* arg1) +void fn_1_1AFD4(omObjData *arg0, StructBss16C *arg1) { int i; fn_1_1DFC(arg0, 1, 2, 0, 0); fn_1_BC8(); Hu3DMotionTimeSet(arg0->model[1], 60); - for(i=0; i<60; i++) { + for (i = 0; i < 60; i++) { fn_1_BC8(); Hu3DData[arg0->model[1]].rot.y = fn_1_864(-135, -90, i, 60); } @@ -623,12 +621,12 @@ void fn_1_1B0E4(void) lbl_1_bss_B94.unk00 = obj = omAddObjEx(lbl_1_bss_B38, 256, 16, 16, -1, NULL); lbl_1_bss_B94.unk04 = NULL; fn_1_1AE20(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_B94.unk04 != NULL) { + if (lbl_1_bss_B94.unk04 != NULL) { lbl_1_bss_B94.unk04(obj, &lbl_1_bss_B94); } - if(obj->work[0]) { + if (obj->work[0]) { fn_1_6704(obj); } } @@ -670,7 +668,7 @@ void fn_1_1B430(void) temp.unk20.z = 0; temp.unk38 = 1400; fn_1_42A0(work, &temp, work->unk40++, 60, 10); - if(0.0f != lbl_1_bss_C0C.unk100) { - work->unk08.y = 125+lbl_1_bss_C0C.unk100; + if (0.0f != lbl_1_bss_C0C.unk100) { + work->unk08.y = 125 + lbl_1_bss_C0C.unk100; } -} \ No newline at end of file +} diff --git a/src/REL/mstory2Dll/mg_clear.c b/src/REL/mstory2Dll/mg_clear.c index ddeded43..524869fe 100644 --- a/src/REL/mstory2Dll/mg_clear.c +++ b/src/REL/mstory2Dll/mg_clear.c @@ -9,70 +9,71 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" #include "game/printfunc.h" #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" -#include "game/pad.h" -#include "game/objsub.h" + typedef struct struct_data850 { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; } StructData850; StructData850 lbl_1_data_850[] = { - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x00), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x01), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x02), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x03), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x04), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x05), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x06), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x07), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x08), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x09), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0A), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0B), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0C), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0D), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0E), 1, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0F), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x10), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x11), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x12), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x13), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x14), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x15), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x16), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x17), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x18), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x19), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1A), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1B), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1C), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1D), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1E), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1F), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x20), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x21), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x22), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x23), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x24), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x25), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x26), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x27), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x28), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x29), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2A), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2B), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2C), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2D), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2E), 0, 0, 0, 1 }, - { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2F), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x00), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x01), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x02), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x03), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x04), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x05), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x06), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x07), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x08), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x09), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0E), 1, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x0F), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x10), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x11), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x12), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x13), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x14), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x15), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x16), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x17), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x18), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x19), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1E), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x1F), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x20), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x21), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x22), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x23), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x24), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x25), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x26), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x27), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x28), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x29), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2A), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2B), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2C), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2D), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2E), 0, 0, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_MSTORY4, 0x2F), 0, 0, 0, 1 }, }; s32 lbl_1_data_C10[2][2] = { 20, 70, 1, 1 }; @@ -101,15 +102,15 @@ BOOL lbl_1_bss_794; Process *lbl_1_bss_790; void fn_1_13BB8(void); -void fn_1_13FB4(omObjData* arg0, StructBss16C* arg1); -void fn_1_140A0(omObjData* arg0, StructBss16C* arg1); +void fn_1_13FB4(omObjData *arg0, StructBss16C *arg1); +void fn_1_140A0(omObjData *arg0, StructBss16C *arg1); void fn_1_1449C(void); void fn_1_14A9C(int arg0, int arg1, int arg2, int arg3, int arg4); -void fn_1_14B48(omObjData* arg0, StructBss16C* arg1); +void fn_1_14B48(omObjData *arg0, StructBss16C *arg1); void fn_1_14C40(void); void fn_1_15134(int arg0, int arg1, int arg2, int arg3, int arg4); -void fn_1_151E0(omObjData* arg0, StructBss16C* arg1); -void fn_1_152C4(omObjData* arg0, StructBss16C* arg1); +void fn_1_151E0(omObjData *arg0, StructBss16C *arg1); +void fn_1_152C4(omObjData *arg0, StructBss16C *arg1); void fn_1_153A8(void); void fn_1_15668(int arg0); void fn_1_159F0(void); @@ -121,28 +122,28 @@ void fn_1_15F70(void); void fn_1_123C8(void) { int i; - while(1) { + while (1) { do { HuPrcVSleep(); - } while(lbl_1_data_C20 == -1 || lbl_1_data_C24[0] == -1 || lbl_1_data_C24[1] == -1 || lbl_1_data_C24[0] != Hu3DMotionIDGet(lbl_1_data_C20)); - for(i=0; i<2; i++) { - if(lbl_1_data_C10[1][i] != -1) { - if(Hu3DMotionTimeGet(lbl_1_data_C20) >= lbl_1_data_C10[0][i]) { + } while (lbl_1_data_C20 == -1 || lbl_1_data_C24[0] == -1 || lbl_1_data_C24[1] == -1 || lbl_1_data_C24[0] != Hu3DMotionIDGet(lbl_1_data_C20)); + for (i = 0; i < 2; i++) { + if (lbl_1_data_C10[1][i] != -1) { + if (Hu3DMotionTimeGet(lbl_1_data_C20) >= lbl_1_data_C10[0][i]) { OSReport("KE-System TIME:%d\n", lbl_1_data_C10[0][i]); HuAudFXPlay(81); lbl_1_data_C10[1][i] = -1; } } } - if(Hu3DMotionTimeGet(lbl_1_data_C20) <= 10) { - for(i=0; i<2; i++) { + if (Hu3DMotionTimeGet(lbl_1_data_C20) <= 10) { + for (i = 0; i < 2; i++) { lbl_1_data_C10[1][i] = 1; } } } } -void fn_1_1256C(Process* arg0, s32 arg1) +void fn_1_1256C(Process *arg0, s32 arg1) { lbl_1_bss_790 = arg0; lbl_1_bss_860.unk0C = arg1; @@ -160,11 +161,11 @@ void fn_1_1256C(Process* arg0, s32 arg1) void fn_1_12690(omObjData *object) { - if(object->work[2]) { + if (object->work[2]) { object->work[2]--; return; } - if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { fn_1_1DFC(object, 1, object->work[1], 15, 1); object->work[0] = object->work[1] = object->work[2] = 0; } @@ -176,38 +177,44 @@ void fn_1_1271C(void) int posY = 40; GXColor winColor = { 0, 0, 128, 128 }; int i; - while(1) { + while (1) { fn_1_BC8(); printWin(posX, posY, 220, 130, &winColor); - if(lbl_1_bss_838.unk04 == NULL) { + if (lbl_1_bss_838.unk04 == NULL) { print8(posX, posY, 1, "PROC_MAIN -> FALSE"); - } else { + } + else { print8(posX, posY, 1, "PROC_MAIN -> TRUE"); } - if(lbl_1_bss_810.unk04 == NULL) { - print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); - } else { - print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + if (lbl_1_bss_810.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); } - if(lbl_1_bss_7E8.unk04 == NULL) { - print8(posX, posY+20, 1, "PROC_KOOPA -> FALSE"); - } else { - print8(posX, posY+20, 1, "PROC_KOOPA -> TRUE"); + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); } - if(lbl_1_bss_7C0.unk04 == NULL) { - print8(posX, posY+30, 1, "PROC_MKOOPA -> FALSE"); - } else { - print8(posX, posY+30, 1, "PROC_MKOOPA -> TRUE"); + if (lbl_1_bss_7E8.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE"); } - if(lbl_1_bss_798.unk04 == NULL) { - print8(posX, posY+40, 1, "PROC_PLAYER -> FALSE"); - } else { - print8(posX, posY+40, 1, "PROC_PLAYER -> TRUE"); + else { + print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE"); } - print8(posX, posY+60, 1, "P:%d W:%d", lbl_1_bss_860.unk00, lbl_1_bss_860.unk0C); - print8(posX, posY+80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); - for(i=0; i<4; i++) { - print8(posX, posY+90+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_860.unk30[i].unk00, lbl_1_bss_860.unk30[i].unk04, lbl_1_bss_860.unk30[i].unk08, lbl_1_bss_860.unk30[i].unk0C, lbl_1_bss_860.unk30[i].unk14, lbl_1_bss_860.unk30[i].unk10); + if (lbl_1_bss_7C0.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE"); + } + else { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE"); + } + if (lbl_1_bss_798.unk04 == NULL) { + print8(posX, posY + 40, 1, "PROC_PLAYER -> FALSE"); + } + else { + print8(posX, posY + 40, 1, "PROC_PLAYER -> TRUE"); + } + print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_860.unk00, lbl_1_bss_860.unk0C); + print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_860.unk30[i].unk00, lbl_1_bss_860.unk30[i].unk04, + lbl_1_bss_860.unk30[i].unk08, lbl_1_bss_860.unk30[i].unk0C, lbl_1_bss_860.unk30[i].unk14, lbl_1_bss_860.unk30[i].unk10); } } } @@ -239,16 +246,16 @@ void fn_1_12B10(void) fn_1_BE8(60); fn_1_1DFC(lbl_1_bss_798.unk00, 1, 4, 15, 0); fn_1_BE8(16); - while(1) { + while (1) { fn_1_BC8(); - if(Hu3DMotionTimeGet(lbl_1_bss_798.unk00->model[1]) >= 20) { + if (Hu3DMotionTimeGet(lbl_1_bss_798.unk00->model[1]) >= 20) { break; } } Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 0); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_7E8.unk04 == NULL) { + if (lbl_1_bss_7E8.unk04 == NULL) { break; } } @@ -259,9 +266,9 @@ void fn_1_12B10(void) fn_1_BE8(80); Hu3DMotionSpeedSet(lbl_1_bss_798.unk00->model[1], 1); fn_1_1DFC(lbl_1_bss_798.unk00, 1, 1, 15, 1); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_7C0.unk04 == NULL) { + if (lbl_1_bss_7C0.unk04 == NULL) { break; } } @@ -304,20 +311,20 @@ void fn_1_12DD4(void) fn_1_1AFC(lbl_1_bss_860.unk04, -1); fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); fn_1_1A94(lbl_1_bss_860.unk04); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_7C0.unk04 == NULL) { + if (lbl_1_bss_7C0.unk04 == NULL) { break; } } } -void fn_1_13150(omObjData* arg0, StructBss16C* arg1) +void fn_1_13150(omObjData *arg0, StructBss16C *arg1) { int streamNo = HuAudSStreamPlay(7); - while(1) { + while (1) { fn_1_BC8(); - if(HuAudSStreamStatGet(streamNo) == 0) { + if (HuAudSStreamStatGet(streamNo) == 0) { break; } } @@ -325,12 +332,12 @@ void fn_1_13150(omObjData* arg0, StructBss16C* arg1) arg1->unk04 = NULL; } -void fn_1_131C0(omObjData* arg0, StructBss16C* arg1) +void fn_1_131C0(omObjData *arg0, StructBss16C *arg1) { - int presentSe = (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10*6)+5; + int presentSe = (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6) + 5; fn_1_BE8(150); OSReport("########## PRESENT_SE : %d\n", presentSe); - HuAudFXPlay(presentSe+2260); + HuAudFXPlay(presentSe + 2260); fn_1_1DFC(lbl_1_bss_810.unk00, 7, 7, 1, 0); arg1->unk04 = NULL; } @@ -339,23 +346,24 @@ void fn_1_13264(void) { int i; fn_1_1DFC(lbl_1_bss_798.unk00, 1, 2, 15, 1); - for(i=0; i<30; i++) { + for (i = 0; i < 30; i++) { fn_1_BC8(); - if(lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 != 5) { + if (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 != 5) { Hu3DData[lbl_1_bss_798.unk00->model[1]].pos.x = fn_1_864(120, 80, i, 30); } Hu3DData[lbl_1_bss_798.unk00->model[1]].rot.y = fn_1_864(-60, -90, i, 30); } fn_1_1DFC(lbl_1_bss_798.unk00, 1, 5, 5, 0); fn_1_BE8(10); - while(1) { + while (1) { fn_1_BC8(); - if(Hu3DMotionTimeGet(lbl_1_bss_798.unk00->model[1]) >= 30) { + if (Hu3DMotionTimeGet(lbl_1_bss_798.unk00->model[1]) >= 30) { break; } } Hu3DModelPosSet(lbl_1_bss_810.unk00->model[5], 0, 0, 0); - Hu3DModelHookSet(lbl_1_bss_798.unk00->model[1], CharModelHookNameGet(lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 1, 1), lbl_1_bss_810.unk00->model[5]); + Hu3DModelHookSet( + lbl_1_bss_798.unk00->model[1], CharModelHookNameGet(lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, 1, 1), lbl_1_bss_810.unk00->model[5]); fn_1_BE8(60); lbl_1_bss_810.unk04 = (void *)fn_1_13FB4; HuAudFXPlay(163); @@ -367,9 +375,9 @@ void fn_1_13264(void) HuAudSeqPause(lbl_1_bss_78[0], 1, 1000); WipeColorSet(255, 255, 255); WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - while(1) { + while (1) { fn_1_BC8(); - if(!WipeStatGet()) { + if (!WipeStatGet()) { break; } } @@ -381,9 +389,9 @@ void fn_1_13264(void) fn_1_BE8(30); HuAudFXPlay(169); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - while(1) { + while (1) { fn_1_BC8(); - if(!WipeStatGet()) { + if (!WipeStatGet()) { break; } } @@ -393,9 +401,9 @@ void fn_1_13264(void) lbl_1_bss_798.unk04 = (void *)fn_1_131C0; lbl_1_bss_860.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_860.unk0C); lbl_1_bss_7C0.unk04 = (void *)fn_1_13150; - fn_1_1D4C(lbl_1_bss_860.unk04, (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10*6)+0x32000B, 0); + fn_1_1D4C(lbl_1_bss_860.unk04, (lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6) + 0x32000B, 0); fn_1_6DBC(lbl_1_bss_860.unk04, 0x320086, 0, 300); - fn_1_1D18(lbl_1_bss_860.unk04,0x250004); + fn_1_1D18(lbl_1_bss_860.unk04, 0x250004); fn_1_1A94(lbl_1_bss_860.unk04); fn_1_3854(&lbl_1_bss_24); fn_1_2750(fn_1_15E58); @@ -435,7 +443,7 @@ void fn_1_13828(void) void fn_1_138CC(void) { - omOvlHisData* var_r31; + omOvlHisData *var_r31; msmSeStopAll(FALSE, 1000); do { @@ -444,15 +452,16 @@ void fn_1_138CC(void) CharModelKill(-1); HuAudFXAllStop(); HuAudSStreamAllStop(); - GWMGAvailSet(omMgIndexGet(58)+401); + GWMGAvailSet(omMgIndexGet(58) + 401); GWGameStat.present[lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5] = 1; - OSReport("########## PRESENTFLG CHR:%d, MAP:5, PRESENT:%d\n", lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5); + OSReport("########## PRESENTFLG CHR:%d, MAP:5, PRESENT:%d\n", lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10, + lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5); var_r31 = omOvlHisGet(0); omOvlHisChg(0, OVL_MSTORY2, 20, var_r31->stat); omOvlCallEx(OVL_PRESENT, 1, lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10 * 6 + 5 + 1, 0); } -void fn_1_13A18(omObjData* arg0, StructBss16C* arg1) +void fn_1_13A18(omObjData *arg0, StructBss16C *arg1) { int temp = 0; fn_1_12AC8(); @@ -469,15 +478,15 @@ void fn_1_13BB8(void) lbl_1_bss_838.unk00 = obj = omAddObjEx(lbl_1_bss_790, 256, 16, 16, -1, NULL); lbl_1_bss_838.unk04 = (void *)fn_1_13A18; lbl_1_bss_838.unk00->data = &lbl_1_bss_838; - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_838.unk04 != NULL) { + if (lbl_1_bss_838.unk04 != NULL) { lbl_1_bss_838.unk04(obj, &lbl_1_bss_838); } } } -void fn_1_13C6C(omObjData* object) +void fn_1_13C6C(omObjData *object) { s32 charNo; charNo = lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10; @@ -511,28 +520,27 @@ void fn_1_13C6C(omObjData* object) fn_1_1DFC(object, 8, 8, 0, 1); } - -void fn_1_13FB4(omObjData* arg0, StructBss16C* arg1) +void fn_1_13FB4(omObjData *arg0, StructBss16C *arg1) { Mtx matrix; Hu3DData[arg0->model[7]].pos.y = fn_1_B08(180, 185, arg1->unk08++, 360); Hu3DModelObjMtxGet(arg0->model[7], "effect", matrix); Hu3DModelPosSet(arg0->model[8], matrix[0][3], matrix[1][3], matrix[2][3]); - if(arg1->unk08 >= 360) { + if (arg1->unk08 >= 360) { arg1->unk08 = 0; } } -void fn_1_140A0(omObjData* arg0, StructBss16C* arg1) +void fn_1_140A0(omObjData *arg0, StructBss16C *arg1) { Mtx matrix; - Hu3DData[arg0->model[7]].pos.y += arg1->unk0C/100.0f; + Hu3DData[arg0->model[7]].pos.y += arg1->unk0C / 100.0f; Hu3DModelObjMtxGet(arg0->model[7], "effect", matrix); Hu3DModelPosSet(arg0->model[8], matrix[0][3], matrix[1][3], matrix[2][3]); arg1->unk0C += 2; } -void fn_1_1416C(omObjData* arg0, StructBss16C* arg1) +void fn_1_1416C(omObjData *arg0, StructBss16C *arg1) { int i; Vec pos; @@ -540,19 +548,20 @@ void fn_1_1416C(omObjData* arg0, StructBss16C* arg1) Hu3DModelPosSet(arg0->model[5], -180, 100, 800); Hu3DModelRotSet(arg0->model[5], 0, 0, 0); Hu3DModelAttrReset(arg0->model[5], 1); - for(i=0; i<60; i++) { + for (i = 0; i < 60; i++) { fn_1_BC8(); - if(i == 30) { + if (i == 30) { HuAudFXPlay(151); } - if(i <= 30) { - pos.y = fn_1_A4C(0, 100, i+30, 60); + if (i <= 30) { + pos.y = fn_1_A4C(0, 100, i + 30, 60); pos.x = fn_1_864(-180, -45, i, 30); rotY = fn_1_984(0, -90, i, 30); - } else { - pos.x = fn_1_864(-45, 0, i-30, 30); - pos.y = fn_1_A4C(0, 25, i-30, 30); - rotY = fn_1_984(-90, -360, i-30, 30); + } + else { + pos.x = fn_1_864(-45, 0, i - 30, 30); + pos.y = fn_1_A4C(0, 25, i - 30, 30); + rotY = fn_1_984(-90, -360, i - 30, 30); } Hu3DModelPosSet(arg0->model[5], pos.x, pos.y, 800); Hu3DModelRotSet(arg0->model[5], 0, rotY, 0); @@ -567,9 +576,9 @@ void fn_1_1449C(void) lbl_1_bss_810.unk04 = NULL; lbl_1_bss_810.unk00->data = &lbl_1_bss_810; fn_1_13C6C(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_810.unk04 != NULL) { + if (lbl_1_bss_810.unk04 != NULL) { lbl_1_bss_810.unk04(obj, &lbl_1_bss_810); } } @@ -597,15 +606,15 @@ void fn_1_14868(omObjData *object) void fn_1_14A9C(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_7E8.unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_7E8.unk00->work[0] = arg4; lbl_1_bss_7E8.unk00->work[1] = arg1; - lbl_1_bss_7E8.unk00->work[2] = arg2+1; + lbl_1_bss_7E8.unk00->work[2] = arg2 + 1; } -void fn_1_14B48(omObjData* arg0, StructBss16C* arg1) +void fn_1_14B48(omObjData *arg0, StructBss16C *arg1) { Vec pos = { -1000, 0, 810 }; lbl_1_bss_810.unk04 = (void *)fn_1_1416C; @@ -622,15 +631,16 @@ void fn_1_14C40(void) lbl_1_bss_7E8.unk04 = NULL; lbl_1_bss_7E8.unk00->data = &lbl_1_bss_810; fn_1_14868(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_7E8.unk04 != NULL) { + if (lbl_1_bss_7E8.unk04 != NULL) { lbl_1_bss_7E8.unk04(obj, &lbl_1_bss_7E8); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -656,15 +666,15 @@ void fn_1_14F6C(omObjData *object) void fn_1_15134(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_7C0.unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_7C0.unk00->work[0] = arg4; lbl_1_bss_7C0.unk00->work[1] = arg1; - lbl_1_bss_7C0.unk00->work[2] = arg2+1; + lbl_1_bss_7C0.unk00->work[2] = arg2 + 1; } -void fn_1_151E0(omObjData* arg0, StructBss16C* arg1) +void fn_1_151E0(omObjData *arg0, StructBss16C *arg1) { Vec pos = { -800, 0, 800 }; fn_1_1DFC(arg0, 1, 2, 15, 1); @@ -673,7 +683,7 @@ void fn_1_151E0(omObjData* arg0, StructBss16C* arg1) arg1->unk04 = NULL; } -void fn_1_152C4(omObjData* arg0, StructBss16C* arg1) +void fn_1_152C4(omObjData *arg0, StructBss16C *arg1) { Vec pos = { -120, 0, 800 }; fn_1_1DFC(arg0, 1, 2, 15, 1); @@ -689,15 +699,16 @@ void fn_1_153A8(void) lbl_1_bss_7C0.unk04 = NULL; lbl_1_bss_7C0.unk00->data = &lbl_1_bss_7C0; fn_1_14F6C(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_7C0.unk04 != NULL) { + if (lbl_1_bss_7C0.unk04 != NULL) { lbl_1_bss_7C0.unk04(obj, &lbl_1_bss_7C0); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -710,16 +721,16 @@ void fn_1_15668(int arg0) int i; int order[4]; order[0] = 0; - for(i=1; i<4; i++) { - order[i] = order[i-1]+1; - if(order[i] >= 4) { + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { order[i] = 0; } - if(arg0 == order[i]) { + if (arg0 == order[i]) { lbl_1_bss_860.unk00 = i; } } - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { fn_1_357C(&lbl_1_bss_860.unk30[i], order[i]); } } @@ -728,12 +739,12 @@ void fn_1_1574C(omObjData *object) { int charNo = lbl_1_bss_860.unk30[lbl_1_bss_860.unk00].unk10; object->model[1] = CharModelCreate(charNo, 1); - object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); - object->motion[2] = CharModelMotionCreate(charNo, 0x5F0002); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660028+charNo); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660030+charNo); - object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660038+charNo); - object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x660000+charNo); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660028 + charNo); + object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660030 + charNo); + object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660038 + charNo); + object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x660000 + charNo); CharModelMotionDataClose(charNo); Hu3DModelPosSet(object->model[1], 120, 0, 800); Hu3DModelRotSet(object->model[1], 0, -60, 0); @@ -745,12 +756,12 @@ void fn_1_1574C(omObjData *object) void fn_1_15944(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_798.unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_798.unk00->work[0] = arg4; lbl_1_bss_798.unk00->work[1] = arg1; - lbl_1_bss_798.unk00->work[2] = arg2+1; + lbl_1_bss_798.unk00->work[2] = arg2 + 1; } void fn_1_159F0(void) @@ -760,15 +771,16 @@ void fn_1_159F0(void) lbl_1_bss_798.unk04 = NULL; lbl_1_bss_798.unk00->data = &lbl_1_bss_798; fn_1_1574C(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_798.unk04 != NULL) { + if (lbl_1_bss_798.unk04 != NULL) { lbl_1_bss_798.unk04(obj, &lbl_1_bss_798); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -800,7 +812,6 @@ void fn_1_15D68(void) temp.unk20.z = 0; temp.unk38 = 1400; fn_1_4FEC(work, &temp, work->unk40++, 120, 10); - } void fn_1_15E58(void) @@ -828,4 +839,4 @@ void fn_1_15F70(void) temp.unk20.z = 0; temp.unk38 = 1200; fn_1_6004(work, &temp, work->unk40++, 10, 5); -} \ No newline at end of file +} diff --git a/src/REL/mstory2Dll/mg_miss.c b/src/REL/mstory2Dll/mg_miss.c index 6a9232ab..cc329a56 100644 --- a/src/REL/mstory2Dll/mg_miss.c +++ b/src/REL/mstory2Dll/mg_miss.c @@ -9,12 +9,13 @@ #include "game/hsfman.h" #include "game/hsfmotion.h" #include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" #include "game/printfunc.h" #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" -#include "game/pad.h" -#include "game/objsub.h" + typedef struct { /* 0x000 */ s32 unk00; @@ -47,7 +48,7 @@ void fn_1_18184(void); void fn_1_18408(void); void fn_1_18494(void); -void fn_1_16060(Process* arg0, s32 arg1) +void fn_1_16060(Process *arg0, s32 arg1) { lbl_1_bss_968 = arg0; lbl_1_bss_A34.unk0C = arg1; @@ -65,11 +66,11 @@ void fn_1_16060(Process* arg0, s32 arg1) void fn_1_16178(omObjData *object) { - if(object->work[2]) { + if (object->work[2]) { object->work[2]--; return; } - if(object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { + if (object->work[2] == 0 && Hu3DMotionEndCheck(object->model[1])) { fn_1_1DFC(object, 1, object->work[1], 15, 1); object->work[0] = object->work[1] = object->work[2] = 0; } @@ -81,38 +82,44 @@ void fn_1_16204(void) int posY = 40; GXColor winColor = { 0, 0, 128, 128 }; int i; - while(1) { + while (1) { fn_1_BC8(); printWin(posX, posY, 220, 130, &winColor); - if(lbl_1_bss_A0C.unk04 == NULL) { + if (lbl_1_bss_A0C.unk04 == NULL) { print8(posX, posY, 1, "PROC_MAIN -> FALSE"); - } else { + } + else { print8(posX, posY, 1, "PROC_MAIN -> TRUE"); } - if(lbl_1_bss_9E4.unk04 == NULL) { - print8(posX, posY+10, 1, "PROC_MAP -> FALSE"); - } else { - print8(posX, posY+10, 1, "PROC_MAP -> TRUE"); + if (lbl_1_bss_9E4.unk04 == NULL) { + print8(posX, posY + 10, 1, "PROC_MAP -> FALSE"); } - if(lbl_1_bss_9BC.unk04 == NULL) { - print8(posX, posY+20, 1, "PROC_KOOPA -> FALSE"); - } else { - print8(posX, posY+20, 1, "PROC_KOOPA -> TRUE"); + else { + print8(posX, posY + 10, 1, "PROC_MAP -> TRUE"); } - if(lbl_1_bss_994.unk04 == NULL) { - print8(posX, posY+30, 1, "PROC_MKOOPA -> FALSE"); - } else { - print8(posX, posY+30, 1, "PROC_MKOOPA -> TRUE"); + if (lbl_1_bss_9BC.unk04 == NULL) { + print8(posX, posY + 20, 1, "PROC_KOOPA -> FALSE"); } - if(lbl_1_bss_96C.unk04 == NULL) { - print8(posX, posY+40, 1, "PROC_PLAYER -> FALSE"); - } else { - print8(posX, posY+40, 1, "PROC_PLAYER -> TRUE"); + else { + print8(posX, posY + 20, 1, "PROC_KOOPA -> TRUE"); } - print8(posX, posY+60, 1, "P:%d W:%d", lbl_1_bss_A34.unk00, lbl_1_bss_A34.unk0C); - print8(posX, posY+80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); - for(i=0; i<4; i++) { - print8(posX, posY+90+(i*10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_A34.unk30[i].unk00, lbl_1_bss_A34.unk30[i].unk04, lbl_1_bss_A34.unk30[i].unk08, lbl_1_bss_A34.unk30[i].unk0C, lbl_1_bss_A34.unk30[i].unk14, lbl_1_bss_A34.unk30[i].unk10); + if (lbl_1_bss_994.unk04 == NULL) { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> FALSE"); + } + else { + print8(posX, posY + 30, 1, "PROC_MKOOPA -> TRUE"); + } + if (lbl_1_bss_96C.unk04 == NULL) { + print8(posX, posY + 40, 1, "PROC_PLAYER -> FALSE"); + } + else { + print8(posX, posY + 40, 1, "PROC_PLAYER -> TRUE"); + } + print8(posX, posY + 60, 1, "P:%d W:%d", lbl_1_bss_A34.unk00, lbl_1_bss_A34.unk0C); + print8(posX, posY + 80, 1, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(posX, posY + 90 + (i * 10), 1, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, lbl_1_bss_A34.unk30[i].unk00, lbl_1_bss_A34.unk30[i].unk04, + lbl_1_bss_A34.unk30[i].unk08, lbl_1_bss_A34.unk30[i].unk0C, lbl_1_bss_A34.unk30[i].unk14, lbl_1_bss_A34.unk30[i].unk10); } } } @@ -150,7 +157,7 @@ int fn_1_1670C(void) result = fn_1_1C64(lbl_1_bss_A34.unk08); fn_1_1D18(lbl_1_bss_A34.unk08, 0x250004); fn_1_71DC(lbl_1_bss_A34.unk08); - if(result) { + if (result) { HuAudFXPlay(lbl_1_data_0[6][2]); fn_1_1774C(3, 1, 15, 1, 0); fn_1_1D18(lbl_1_bss_A34.unk04, 0x1F0012); @@ -183,14 +190,11 @@ void fn_1_16984(void) fn_1_BE8(150); } -void fn_1_169D4(void) -{ - -} +void fn_1_169D4(void) { } void fn_1_169D8(int arg0) { - omOvlHisData* his; + omOvlHisData *his; if (arg0 != 0) { HuAudSeqFadeOut(lbl_1_bss_78[0], 1000); @@ -206,32 +210,34 @@ void fn_1_169D8(int arg0) HuAudSeqAllFadeOut(1000); HuAudSStreamAllFadeOut(1000); GWMGAvailSet(450); - GWSystem.mg_next = 450-401; + GWSystem.mg_next = 450 - 401; omOvlCallEx(OVL_M450, 1, 0, 0); - } else { + } + else { HuAudFadeOut(1); omOvlReturnEx(1, 1); } } -void fn_1_16ACC(omObjData* arg0, StructBss16C* arg1) +void fn_1_16ACC(omObjData *arg0, StructBss16C *arg1) { int mode = 0; fn_1_165B0(); fn_1_1661C(); lbl_1_bss_A34.unk04 = fn_1_185C(1, 0, 21, 2, lbl_1_bss_A34.unk0C); - while(1) { + while (1) { fn_1_BC8(); - if(fn_1_1670C()) { + if (fn_1_1670C()) { mode = 0; break; - } else if(fn_1_168B0()) { + } + else if (fn_1_168B0()) { mode = 1; break; } } fn_1_1A94(lbl_1_bss_A34.unk04); - switch(mode) { + switch (mode) { case 0: fn_1_16984(); break; @@ -248,9 +254,9 @@ void fn_1_16FC0(void) lbl_1_bss_A0C.unk00 = obj = omAddObjEx(lbl_1_bss_968, 256, 16, 16, -1, NULL); lbl_1_bss_A0C.unk04 = (void *)fn_1_16ACC; lbl_1_bss_A0C.unk00->data = &lbl_1_bss_A0C; - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_A0C.unk04 != NULL) { + if (lbl_1_bss_A0C.unk04 != NULL) { lbl_1_bss_A0C.unk04(obj, &lbl_1_bss_A0C); } } @@ -277,10 +283,10 @@ void fn_1_17074(omObjData *object) fn_1_1DFC(object, 6, 6, 0, 2); } -void fn_1_1727C(omObjData* arg0, StructBss16C* arg1) +void fn_1_1727C(omObjData *arg0, StructBss16C *arg1) { Hu3DData[arg0->model[5]].pos.y = fn_1_B08(80, 90, arg1->unk08++, 360); - if(arg1->unk08 >= 360) { + if (arg1->unk08 >= 360) { arg1->unk08 = 0; } } @@ -292,9 +298,9 @@ void fn_1_17338(void) lbl_1_bss_9E4.unk04 = (void *)fn_1_1727C; lbl_1_bss_9E4.unk00->data = &lbl_1_bss_9E4; fn_1_17074(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_9E4.unk04 != NULL) { + if (lbl_1_bss_9E4.unk04 != NULL) { lbl_1_bss_9E4.unk04(obj, &lbl_1_bss_9E4); } } @@ -316,12 +322,12 @@ void fn_1_175CC(omObjData *object) void fn_1_1774C(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_9BC.unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_9BC.unk00->work[0] = arg4; lbl_1_bss_9BC.unk00->work[1] = arg1; - lbl_1_bss_9BC.unk00->work[2] = arg2+1; + lbl_1_bss_9BC.unk00->work[2] = arg2 + 1; } void fn_1_177F8(void) @@ -331,15 +337,16 @@ void fn_1_177F8(void) lbl_1_bss_9BC.unk04 = NULL; lbl_1_bss_9BC.unk00->data = &lbl_1_bss_9E4; fn_1_175CC(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_9BC.unk04 != NULL) { + if (lbl_1_bss_9BC.unk04 != NULL) { lbl_1_bss_9BC.unk04(obj, &lbl_1_bss_9BC); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -361,12 +368,12 @@ void fn_1_17A70(omObjData *object) void fn_1_17B98(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_994.unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_994.unk00->work[0] = arg4; lbl_1_bss_994.unk00->work[1] = arg1; - lbl_1_bss_994.unk00->work[2] = arg2+1; + lbl_1_bss_994.unk00->work[2] = arg2 + 1; } void fn_1_17C44(void) @@ -376,15 +383,16 @@ void fn_1_17C44(void) lbl_1_bss_994.unk04 = NULL; lbl_1_bss_994.unk00->data = &lbl_1_bss_994; fn_1_17A70(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_994.unk04 != NULL) { + if (lbl_1_bss_994.unk04 != NULL) { lbl_1_bss_994.unk04(obj, &lbl_1_bss_994); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -397,16 +405,16 @@ void fn_1_17E64(s32 arg0) int i; int order[4]; order[0] = 0; - for(i=1; i<4; i++) { - order[i] = order[i-1]+1; - if(order[i] >= 4) { + for (i = 1; i < 4; i++) { + order[i] = order[i - 1] + 1; + if (order[i] >= 4) { order[i] = 0; } - if(arg0 == order[i]) { + if (arg0 == order[i]) { lbl_1_bss_A34.unk00 = i; } } - for(i=0; i<4; i++) { + for (i = 0; i < 4; i++) { fn_1_357C(&lbl_1_bss_A34.unk30[i], order[i]); } } @@ -415,10 +423,10 @@ void fn_1_17F48(omObjData *object) { int charNo = lbl_1_bss_A34.unk30[lbl_1_bss_A34.unk00].unk10; object->model[1] = CharModelCreate(charNo, 1); - object->motion[1] = CharModelMotionCreate(charNo, 0x5F0000); - object->motion[2] = CharModelMotionCreate(charNo, 0x5F0018); - object->motion[3] = CharModelMotionCreate(charNo, 0x5F0034); - object->motion[4] = CharModelMotionCreate(charNo, 0x5F0048); + object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); + object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x18)); + object->motion[3] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x34)); + object->motion[4] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x48)); CharModelVoiceEnableSet(charNo, object->motion[2], FALSE); CharModelMotionDataClose(charNo); Hu3DModelPosSet(object->model[1], 120, 0, 800); @@ -431,12 +439,12 @@ void fn_1_17F48(omObjData *object) void fn_1_180D8(int arg0, int arg1, int arg2, int arg3, int arg4) { fn_1_1DFC(lbl_1_bss_96C.unk00, 1, arg0, arg2, arg3); - if(arg3 == 1) { + if (arg3 == 1) { arg4 = 0; } lbl_1_bss_96C.unk00->work[0] = arg4; lbl_1_bss_96C.unk00->work[1] = arg1; - lbl_1_bss_96C.unk00->work[2] = arg2+1; + lbl_1_bss_96C.unk00->work[2] = arg2 + 1; } void fn_1_18184(void) @@ -446,15 +454,16 @@ void fn_1_18184(void) lbl_1_bss_96C.unk04 = NULL; lbl_1_bss_96C.unk00->data = &lbl_1_bss_96C; fn_1_17F48(obj); - while(1) { + while (1) { fn_1_BC8(); - if(lbl_1_bss_96C.unk04 != NULL) { + if (lbl_1_bss_96C.unk04 != NULL) { lbl_1_bss_96C.unk04(obj, &lbl_1_bss_96C); } - if(obj->work[0]) { - if(obj->work[2]) { + if (obj->work[0]) { + if (obj->work[2]) { obj->work[2]--; - } else if(obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { + } + else if (obj->work[2] == 0 && Hu3DMotionEndCheck(obj->model[1])) { fn_1_1DFC(obj, 1, obj->work[1], 15, 1); obj->work[0] = obj->work[1] = obj->work[2] = 0; } @@ -478,7 +487,7 @@ void fn_1_18494(void) { StructBss24 *work = &lbl_1_bss_24; StructBss24 temp; - if(work->unk40 == 50) { + if (work->unk40 == 50) { fn_1_1DFC(lbl_1_bss_9E4.unk00, 5, 5, 0, 0); fn_1_1DFC(lbl_1_bss_9E4.unk00, 6, 6, 0, 0); HuAudFXPlay(161); @@ -491,11 +500,11 @@ void fn_1_18494(void) temp.unk20.z = 0; temp.unk38 = 150; fn_1_4FEC(work, &temp, work->unk40, 180, 10); - if(work->unk40++ >= 90) { - if(work->unk40 == 91) { + if (work->unk40++ >= 90) { + if (work->unk40 == 91) { lbl_1_bss_88[0] = HuAudFXPlay(32); } - work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40-90, 90); - Hu3DData[lbl_1_bss_9E4.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40-90, 90); + work->unk20.x = fn_1_864(work->unk20.x, -45, work->unk40 - 90, 90); + Hu3DData[lbl_1_bss_9E4.unk00->model[5]].rot.x = fn_1_864(0, 45, work->unk40 - 90, 90); } -} \ No newline at end of file +} From 090ab1c05f3347259949e7a4e8730d0cf3e561f4 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sat, 11 Jan 2025 18:38:53 +0100 Subject: [PATCH 14/24] Fix w06 symbols for PAL and port mstory2Dll to every version (#523) * Fix w06 symbols for PAL * Port mstory2Dll to every version --- config/GMPE01_01/rels/mstory2Dll/symbols.txt | 742 ++++++++--------- config/GMPJ01_00/rels/mstory2Dll/splits.txt | 47 ++ config/GMPJ01_00/rels/mstory2Dll/symbols.txt | 742 ++++++++--------- config/GMPJ01_00/rels/mstoryDll/symbols.txt | 10 +- config/GMPP01_00/rels/mstory2Dll/splits.txt | 47 ++ config/GMPP01_00/rels/mstory2Dll/symbols.txt | 784 +++++++++--------- config/GMPP01_00/rels/w06Dll/symbols.txt | 690 ++++++++-------- config/GMPP01_02/rels/mstory2Dll/splits.txt | 47 ++ config/GMPP01_02/rels/mstory2Dll/symbols.txt | 788 +++++++++---------- configure.py | 16 +- src/REL/mstory2Dll/board_clear.c | 34 +- src/REL/mstory2Dll/board_entrance.c | 51 +- src/REL/mstory2Dll/board_miss.c | 38 +- src/REL/mstory2Dll/ending.c | 67 +- src/REL/mstory2Dll/main.c | 6 +- src/REL/mstory2Dll/mg_clear.c | 44 +- src/REL/mstory2Dll/mg_miss.c | 24 +- src/REL/mstory2Dll/save.c | 10 +- 18 files changed, 2181 insertions(+), 2006 deletions(-) diff --git a/config/GMPE01_01/rels/mstory2Dll/symbols.txt b/config/GMPE01_01/rels/mstory2Dll/symbols.txt index fb773409..8bf47557 100644 --- a/config/GMPE01_01/rels/mstory2Dll/symbols.txt +++ b/config/GMPE01_01/rels/mstory2Dll/symbols.txt @@ -5,7 +5,7 @@ _prolog = .text:0x00000344; // type:function size:0x54 scope:global _epilog = .text:0x00000398; // type:function size:0x4C scope:global fn_1_3E4 = .text:0x000003E4; // type:function size:0x110 fn_1_4F4 = .text:0x000004F4; // type:function size:0x1B8 -fn_1_6AC = .text:0x000006AC; // type:function size:0x1B8 +ObjectSetup = .text:0x000006AC; // type:function size:0x1B8 fn_1_864 = .text:0x00000864; // type:function size:0x28 fn_1_88C = .text:0x0000088C; // type:function size:0x20 fn_1_8AC = .text:0x000008AC; // type:function size:0xD8 @@ -209,8 +209,8 @@ fn_1_16060 = .text:0x00016060; // type:function size:0x118 fn_1_16178 = .text:0x00016178; // type:function size:0x8C fn_1_16204 = .text:0x00016204; // type:function size:0x3AC fn_1_165B0 = .text:0x000165B0; // type:function size:0x5C -fn_1_1660C = .text:0x0001660C; // type:function size:0x110 -fn_1_1671C = .text:0x0001671C; // type:function size:0x194 +fn_1_1661C = .text:0x0001660C; // type:function size:0x110 +fn_1_1670C = .text:0x0001671C; // type:function size:0x194 fn_1_168B0 = .text:0x000168B0; // type:function size:0xD4 fn_1_16984 = .text:0x00016984; // type:function size:0x50 fn_1_169D4 = .text:0x000169D4; // type:function size:0x4 @@ -265,397 +265,397 @@ fn_1_1B870 = .text:0x0001B888; // type:function size:0x9C fn_1_1B90C = .text:0x0001B924; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC data:4byte -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC data:4byte -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC data:4byte -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 data:byte -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC data:4byte -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 data:byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC data:4byte -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC data:4byte -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C data:4byte -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 data:byte -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC data:4byte -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC data:4byte -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC data:4byte -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 data:byte -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC data:4byte -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC data:4byte -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC data:4byte -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 data:byte -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 data:double -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 data:byte -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC data:4byte -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte -lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 data:string -lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 data:string -lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 data:string -lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 data:string -lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 data:string -lbl_1_data_135 = .data:0x00000135; // type:object size:0xF +lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 scope:local data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 scope:local data:string +lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 scope:local data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0xF scope:local lbl_1_data_144 = .data:0x00000144; // type:object size:0x18 -lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 data:string -lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 data:string -lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 data:string +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 scope:local data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 scope:local data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 scope:local data:string jumptable_1_data_19C = .data:0x0000019C; // type:object size:0x54 scope:local jumptable_1_data_1F0 = .data:0x000001F0; // type:object size:0x54 scope:local -lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A data:string -lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A data:string -lbl_1_data_278 = .data:0x00000278; // type:object size:0xE data:string -lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 data:string -lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 data:string -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 data:string -lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 data:string -lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 data:string -lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 data:string -lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 data:string -lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 +lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A scope:local data:string +lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A scope:local data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0xE scope:local data:string +lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 scope:local data:string +lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 scope:local data:string +lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 scope:local data:string +lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 scope:local data:string +lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 scope:local lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 lbl_1_data_328 = .data:0x00000328; // type:object size:0x60 -lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 data:string -lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 data:string +lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 scope:local data:string +lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 scope:local data:string lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x2C lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10 lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte -lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 data:string -lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 data:string -lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 data:string -lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 data:string -lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 data:string -lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 data:string -lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 data:string -lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 data:string -lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 data:string -lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 data:string -lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 data:string -lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA data:string -lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C data:string -lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D data:string -lbl_1_data_50C = .data:0x0000050C; // type:object size:0xF data:string -lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 data:string -lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 data:string -lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 data:string -lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 data:string -lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 data:string -lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 data:string -lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 data:string -lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 data:string -lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 data:string -lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 data:string -lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA data:string -lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C data:string -lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D data:string -lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 data:string -lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C data:string +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 scope:local data:string +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 scope:local data:string +lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 scope:local data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 scope:local data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 scope:local data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 scope:local data:string +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 scope:local data:string +lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 scope:local data:string +lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA scope:local data:string +lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C scope:local data:string +lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D scope:local data:string +lbl_1_data_50C = .data:0x0000050C; // type:object size:0xF scope:local data:string +lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 scope:local data:string +lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 scope:local data:string +lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 scope:local data:string +lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 scope:local data:string +lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 scope:local data:string +lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 scope:local data:string +lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 scope:local data:string +lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 scope:local data:string +lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA scope:local data:string +lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C scope:local data:string +lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D scope:local data:string +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 scope:local data:string +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C scope:local data:string lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 lbl_1_data_698 = .data:0x00000698; // type:object size:0x1C lbl_1_data_6B4 = .data:0x000006B4; // type:object size:0x20 -lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 data:string -lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 data:string -lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 data:string -lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 data:string -lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 data:string -lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 data:string -lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 data:string -lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 data:string -lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 data:string -lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 data:string -lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA data:string -lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C data:string -lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D data:string -lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 data:string -lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 scope:local data:string +lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 scope:local data:string +lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 scope:local data:string +lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 scope:local data:string +lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 scope:local data:string +lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 scope:local data:string +lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 scope:local data:string +lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 scope:local data:string +lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 scope:local data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 scope:local data:string +lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA scope:local data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C scope:local data:string +lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D scope:local data:string +lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 scope:local data:string +lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C scope:local lbl_1_data_81C = .data:0x0000081C; // type:object size:0x30 lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0 lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10 lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte lbl_1_data_C24 = .data:0x00000C24; // type:object size:0x8 data:4byte -lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 data:string -lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 data:string -lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 data:string -lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 data:string -lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 data:string -lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 data:string -lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 data:string -lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 data:string -lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 data:string -lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 data:string -lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 data:string -lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA data:string -lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C data:string -lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D data:string -lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C data:string -lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 data:string -lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 data:string -lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0x7 data:string -lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 data:string -lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 data:string -lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 data:string -lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 data:string -lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 data:string -lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 data:string -lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 data:string -lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 data:string -lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 data:string -lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 data:string -lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA data:string -lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C data:string -lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D data:string -lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 data:string -lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x1C data:string +lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 scope:local data:string +lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 scope:local data:string +lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 scope:local data:string +lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 scope:local data:string +lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 scope:local data:string +lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 scope:local data:string +lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 scope:local data:string +lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 scope:local data:string +lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 scope:local data:string +lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 scope:local data:string +lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 scope:local data:string +lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA scope:local data:string +lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C scope:local data:string +lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D scope:local data:string +lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C scope:local data:string +lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 scope:local data:string +lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 scope:local data:string +lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0x7 scope:local data:string +lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 scope:local data:string +lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 scope:local data:string +lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 scope:local data:string +lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 scope:local data:string +lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 scope:local data:string +lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 scope:local data:string +lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 scope:local data:string +lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 scope:local data:string +lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 scope:local data:string +lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 scope:local data:string +lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA scope:local data:string +lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C scope:local data:string +lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D scope:local data:string +lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 scope:local data:string +lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x1C scope:local data:string lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10 lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte lbl_1_data_F14 = .data:0x00000F14; // type:object size:0x4 data:4byte -lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 data:string -lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 data:string -lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 data:string -lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 data:string -lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 data:string -lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 data:string -lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 data:string -lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 data:string -lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 data:string -lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 data:string -lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 data:string -lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA data:string -lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C data:string -lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D data:string -lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 data:string -lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 data:string -lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 data:string -lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 data:string -lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 data:string -lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 data:string -lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 data:string -lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 data:string +lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 scope:local data:string +lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 scope:local data:string +lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 scope:local data:string +lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 scope:local data:string +lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 scope:local data:string +lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 scope:local data:string +lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 scope:local data:string +lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 scope:local data:string +lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 scope:local data:string +lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 scope:local data:string +lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 scope:local data:string +lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA scope:local data:string +lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C scope:local data:string +lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D scope:local data:string +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 scope:local data:string +lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 scope:local data:string +lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 scope:local data:string +lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 scope:local data:string +lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 scope:local data:string +lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 scope:local data:string +lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 scope:local data:string +lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 scope:local data:string lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20 -lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF data:string +lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x20 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x44 data:float diff --git a/config/GMPJ01_00/rels/mstory2Dll/splits.txt b/config/GMPJ01_00/rels/mstory2Dll/splits.txt index 531cd645..aa6bd0d5 100644 --- a/config/GMPJ01_00/rels/mstory2Dll/splits.txt +++ b/config/GMPJ01_00/rels/mstory2Dll/splits.txt @@ -5,3 +5,50 @@ Sections: .rodata type:rodata align:8 .data type:data align:8 .bss type:bss align:8 + +REL/mstory2Dll/main.c: + .text start:0x00000000 end:0x00007DB0 + .rodata start:0x00000000 end:0x00000118 + .data start:0x00000000 end:0x000003A0 + .bss start:0x00000000 end:0x00000078 + +REL/mstory2Dll/board_entrance.c: + .text start:0x00007DB0 end:0x0000B37C + .rodata start:0x00000118 end:0x000001A8 + .data start:0x000003A0 end:0x00000520 + .bss start:0x00000078 end:0x00000298 + +REL/mstory2Dll/board_clear.c: + .text start:0x0000B37C end:0x0000E570 + .rodata start:0x000001A8 end:0x00000248 + .data start:0x00000520 end:0x00000698 + .bss start:0x00000298 end:0x000004E0 + +REL/mstory2Dll/board_miss.c: + .text start:0x0000E570 end:0x000123C8 + .rodata start:0x00000248 end:0x00000310 + .data start:0x00000698 end:0x00000850 + .bss start:0x000004E0 end:0x00000790 + +REL/mstory2Dll/mg_clear.c: + .text start:0x000123C8 end:0x00016060 + .rodata start:0x00000310 end:0x000003D0 + .data start:0x00000850 end:0x00000DB8 + .bss start:0x00000790 end:0x00000968 + +REL/mstory2Dll/mg_miss.c: + .text start:0x00016060 end:0x000186D0 + .rodata start:0x000003D0 end:0x00000438 + .data start:0x00000DB8 end:0x00000EF8 + .bss start:0x00000968 end:0x00000B38 + +REL/mstory2Dll/ending.c: + .text start:0x000186D0 end:0x0001B560 + .rodata start:0x00000438 end:0x000004B8 + .data start:0x00000EF8 end:0x00001113 + .bss start:0x00000B38 end:0x00000D10 + +REL/mstory2Dll/save.c: + .text start:0x0001B560 end:0x0001B95C + .rodata start:0x000004B8 end:0x000004C8 + .bss start:0x00000D10 end:0x00000D18 diff --git a/config/GMPJ01_00/rels/mstory2Dll/symbols.txt b/config/GMPJ01_00/rels/mstory2Dll/symbols.txt index 43271272..c14583cf 100644 --- a/config/GMPJ01_00/rels/mstory2Dll/symbols.txt +++ b/config/GMPJ01_00/rels/mstory2Dll/symbols.txt @@ -5,7 +5,7 @@ _prolog = .text:0x00000344; // type:function size:0x54 scope:global _epilog = .text:0x00000398; // type:function size:0x4C scope:global fn_1_3E4 = .text:0x000003E4; // type:function size:0x110 fn_1_4F4 = .text:0x000004F4; // type:function size:0x1B8 -fn_1_6AC = .text:0x000006AC; // type:function size:0x1B8 +ObjectSetup = .text:0x000006AC; // type:function size:0x1B8 fn_1_864 = .text:0x00000864; // type:function size:0x28 fn_1_88C = .text:0x0000088C; // type:function size:0x20 fn_1_8AC = .text:0x000008AC; // type:function size:0xD8 @@ -209,8 +209,8 @@ fn_1_16060 = .text:0x00016060; // type:function size:0x118 fn_1_16178 = .text:0x00016178; // type:function size:0x8C fn_1_16204 = .text:0x00016204; // type:function size:0x3AC fn_1_165B0 = .text:0x000165B0; // type:function size:0x5C -fn_1_1660C = .text:0x0001660C; // type:function size:0x110 -fn_1_1671C = .text:0x0001671C; // type:function size:0x194 +fn_1_1661C = .text:0x0001660C; // type:function size:0x110 +fn_1_1670C = .text:0x0001671C; // type:function size:0x194 fn_1_168B0 = .text:0x000168B0; // type:function size:0xD4 fn_1_16984 = .text:0x00016984; // type:function size:0x50 fn_1_169D4 = .text:0x000169D4; // type:function size:0x4 @@ -265,395 +265,395 @@ fn_1_1B870 = .text:0x0001B870; // type:function size:0x9C fn_1_1B90C = .text:0x0001B90C; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC data:4byte -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC data:4byte -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC data:4byte -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 data:byte -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC data:4byte -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 data:byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC data:4byte -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC data:4byte -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C data:4byte -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 data:byte -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC data:4byte -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC data:4byte -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC data:4byte -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 data:byte -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC data:4byte -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC data:4byte -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC data:4byte -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 data:byte -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 data:double -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 data:byte -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC data:4byte -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte -lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 data:string -lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 data:string -lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 data:string -lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 data:string -lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 data:string -lbl_1_data_135 = .data:0x00000135; // type:object size:0xF +lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 scope:local data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 scope:local data:string +lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 scope:local data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0xF scope:local lbl_1_data_144 = .data:0x00000144; // type:object size:0x18 -lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 data:string -lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 data:string -lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 data:string +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 scope:local data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 scope:local data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 scope:local data:string jumptable_1_data_19C = .data:0x0000019C; // type:object size:0x54 scope:local jumptable_1_data_1F0 = .data:0x000001F0; // type:object size:0x54 scope:local -lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A data:string -lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A data:string -lbl_1_data_278 = .data:0x00000278; // type:object size:0xE data:string -lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 data:string -lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 data:string -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 data:string -lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 data:string -lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 data:string -lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 data:string -lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 data:string -lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 +lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A scope:local data:string +lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A scope:local data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0xE scope:local data:string +lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 scope:local data:string +lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 scope:local data:string +lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 scope:local data:string +lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 scope:local data:string +lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 scope:local lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 lbl_1_data_328 = .data:0x00000328; // type:object size:0x60 -lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 data:string -lbl_1_data_399 = .data:0x00000399; // type:object size:0x33 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 scope:local data:string +lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 scope:local data:string lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10 lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte -lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 data:string -lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 data:string -lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 data:string -lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 data:string -lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 data:string -lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 data:string -lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 data:string -lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 data:string -lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 data:string -lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 data:string -lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 data:string -lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA data:string -lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C data:string -lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D data:string -lbl_1_data_50C = .data:0x0000050C; // type:object size:0x14 -lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 data:string -lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 data:string -lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 data:string -lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 data:string -lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 data:string -lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 data:string -lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 data:string -lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 data:string -lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 data:string -lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 data:string -lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA data:string -lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C data:string -lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D data:string -lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 data:string -lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C data:string +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 scope:local data:string +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 scope:local data:string +lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 scope:local data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 scope:local data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 scope:local data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 scope:local data:string +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 scope:local data:string +lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 scope:local data:string +lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA scope:local data:string +lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C scope:local data:string +lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D scope:local data:string +lbl_1_data_50C = .data:0x0000050C; // type:object size:0x14 scope:local +lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 scope:local data:string +lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 scope:local data:string +lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 scope:local data:string +lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 scope:local data:string +lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 scope:local data:string +lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 scope:local data:string +lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 scope:local data:string +lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 scope:local data:string +lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA scope:local data:string +lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C scope:local data:string +lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D scope:local data:string +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 scope:local data:string +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C scope:local data:string lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 lbl_1_data_698 = .data:0x00000698; // type:object size:0x3C -lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 data:string -lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 data:string -lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 data:string -lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 data:string -lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 data:string -lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 data:string -lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 data:string -lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 data:string -lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 data:string -lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 data:string -lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA data:string -lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C data:string -lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D data:string -lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 data:string -lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 scope:local data:string +lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 scope:local data:string +lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 scope:local data:string +lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 scope:local data:string +lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 scope:local data:string +lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 scope:local data:string +lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 scope:local data:string +lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 scope:local data:string +lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 scope:local data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 scope:local data:string +lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA scope:local data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C scope:local data:string +lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D scope:local data:string +lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 scope:local data:string +lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C scope:local lbl_1_data_81C = .data:0x0000081C; // type:object size:0x34 lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0 lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10 lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte lbl_1_data_C24 = .data:0x00000C24; // type:object size:0x8 data:4byte -lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 data:string -lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 data:string -lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 data:string -lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 data:string -lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 data:string -lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 data:string -lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 data:string -lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 data:string -lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 data:string -lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 data:string -lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 data:string -lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA data:string -lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C data:string -lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D data:string -lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C data:string -lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 data:string -lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 data:string -lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0xB -lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 data:string -lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 data:string -lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 data:string -lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 data:string -lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 data:string -lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 data:string -lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 data:string -lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 data:string -lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 data:string -lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 data:string -lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA data:string -lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C data:string -lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D data:string -lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 data:string -lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x20 +lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 scope:local data:string +lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 scope:local data:string +lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 scope:local data:string +lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 scope:local data:string +lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 scope:local data:string +lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 scope:local data:string +lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 scope:local data:string +lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 scope:local data:string +lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 scope:local data:string +lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 scope:local data:string +lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 scope:local data:string +lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA scope:local data:string +lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C scope:local data:string +lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D scope:local data:string +lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C scope:local data:string +lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 scope:local data:string +lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 scope:local data:string +lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0xB scope:local +lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 scope:local data:string +lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 scope:local data:string +lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 scope:local data:string +lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 scope:local data:string +lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 scope:local data:string +lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 scope:local data:string +lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 scope:local data:string +lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 scope:local data:string +lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 scope:local data:string +lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 scope:local data:string +lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA scope:local data:string +lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C scope:local data:string +lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D scope:local data:string +lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 scope:local data:string +lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x20 scope:local lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10 lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte lbl_1_data_F14 = .data:0x00000F14; // type:object size:0x4 data:4byte -lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 data:string -lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 data:string -lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 data:string -lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 data:string -lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 data:string -lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 data:string -lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 data:string -lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 data:string -lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 data:string -lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 data:string -lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 data:string -lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA data:string -lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C data:string -lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D data:string -lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 data:string -lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 data:string -lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 data:string -lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 data:string -lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 data:string -lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 data:string -lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 data:string -lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 data:string +lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 scope:local data:string +lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 scope:local data:string +lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 scope:local data:string +lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 scope:local data:string +lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 scope:local data:string +lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 scope:local data:string +lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 scope:local data:string +lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 scope:local data:string +lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 scope:local data:string +lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 scope:local data:string +lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 scope:local data:string +lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA scope:local data:string +lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C scope:local data:string +lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D scope:local data:string +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 scope:local data:string +lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 scope:local data:string +lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 scope:local data:string +lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 scope:local data:string +lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 scope:local data:string +lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 scope:local data:string +lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 scope:local data:string +lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 scope:local data:string lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20 -lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF data:string +lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x24 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x54 data:float lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x10 data:4byte diff --git a/config/GMPJ01_00/rels/mstoryDll/symbols.txt b/config/GMPJ01_00/rels/mstoryDll/symbols.txt index 56357717..f9dbaabb 100644 --- a/config/GMPJ01_00/rels/mstoryDll/symbols.txt +++ b/config/GMPJ01_00/rels/mstoryDll/symbols.txt @@ -390,7 +390,7 @@ lbl_1_data_138 = .data:0x00000138; // type:object size:0x10 scope:local data:str lbl_1_data_148 = .data:0x00000148; // type:object size:0x3 scope:local data:string lbl_1_data_14B = .data:0x0000014B; // type:object size:0x1A scope:local data:string lbl_1_data_165 = .data:0x00000165; // type:object size:0x1A scope:local data:string -lbl_1_data_17F = .data:0x0000017F; // type:object size:0x11 +lbl_1_data_17F = .data:0x0000017F; // type:object size:0x11 scope:local lbl_1_data_190 = .data:0x00000190; // type:object size:0x50 lbl_1_data_1E0 = .data:0x000001E0; // type:object size:0x3C lbl_1_data_21C = .data:0x0000021C; // type:object size:0x16 scope:local data:string @@ -406,7 +406,7 @@ lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x1C scope:local data:str lbl_1_data_2F5 = .data:0x000002F5; // type:object size:0x1D scope:local data:string lbl_1_data_312 = .data:0x00000312; // type:object size:0x17 scope:local data:string lbl_1_data_329 = .data:0x00000329; // type:object size:0xF scope:local data:string -lbl_1_data_338 = .data:0x00000338; // type:object size:0x1C +lbl_1_data_338 = .data:0x00000338; // type:object size:0x1C scope:local lbl_1_data_354 = .data:0x00000354; // type:object size:0x34 lbl_1_data_388 = .data:0x00000388; // type:object size:0x50 lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x3C @@ -424,7 +424,7 @@ lbl_1_data_4E8 = .data:0x000004E8; // type:object size:0x1D scope:local data:str lbl_1_data_505 = .data:0x00000505; // type:object size:0xF scope:local data:string lbl_1_data_514 = .data:0x00000514; // type:object size:0x1B scope:local data:string lbl_1_data_52F = .data:0x0000052F; // type:object size:0x8 scope:local data:string -lbl_1_data_537 = .data:0x00000537; // type:object size:0x9 +lbl_1_data_537 = .data:0x00000537; // type:object size:0x9 scope:local lbl_1_data_540 = .data:0x00000540; // type:object size:0x30 lbl_1_data_570 = .data:0x00000570; // type:object size:0x3C0 lbl_1_data_930 = .data:0x00000930; // type:object size:0x50 @@ -445,7 +445,7 @@ lbl_1_data_ABA = .data:0x00000ABA; // type:object size:0xF scope:local data:stri lbl_1_data_AC9 = .data:0x00000AC9; // type:object size:0x11 scope:local data:string lbl_1_data_ADA = .data:0x00000ADA; // type:object size:0xA scope:local data:string lbl_1_data_AE4 = .data:0x00000AE4; // type:object size:0x9 scope:local data:string -lbl_1_data_AED = .data:0x00000AED; // type:object size:0xB +lbl_1_data_AED = .data:0x00000AED; // type:object size:0xB scope:local lbl_1_data_AF8 = .data:0x00000AF8; // type:object size:0x3C lbl_1_data_B34 = .data:0x00000B34; // type:object size:0x15 scope:local data:string lbl_1_data_B49 = .data:0x00000B49; // type:object size:0x14 scope:local data:string @@ -459,7 +459,7 @@ lbl_1_data_BD8 = .data:0x00000BD8; // type:object size:0xF scope:local data:stri lbl_1_data_BE7 = .data:0x00000BE7; // type:object size:0x1C scope:local data:string lbl_1_data_C03 = .data:0x00000C03; // type:object size:0x1D scope:local data:string lbl_1_data_C20 = .data:0x00000C20; // type:object size:0xF scope:local data:string -lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x21 +lbl_1_data_C2F = .data:0x00000C2F; // type:object size:0x21 scope:local lbl_1_data_C50 = .data:0x00000C50; // type:object size:0x48 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:4byte diff --git a/config/GMPP01_00/rels/mstory2Dll/splits.txt b/config/GMPP01_00/rels/mstory2Dll/splits.txt index 531cd645..cb297417 100644 --- a/config/GMPP01_00/rels/mstory2Dll/splits.txt +++ b/config/GMPP01_00/rels/mstory2Dll/splits.txt @@ -5,3 +5,50 @@ Sections: .rodata type:rodata align:8 .data type:data align:8 .bss type:bss align:8 + +REL/mstory2Dll/main.c: + .text start:0x00000000 end:0x00007DB0 + .rodata start:0x00000000 end:0x00000118 + .data start:0x00000000 end:0x000003A0 + .bss start:0x00000000 end:0x00000078 + +REL/mstory2Dll/board_entrance.c: + .text start:0x00007DB0 end:0x0000B37C + .rodata start:0x00000118 end:0x000001A8 + .data start:0x000003A0 end:0x00000520 + .bss start:0x00000078 end:0x00000298 + +REL/mstory2Dll/board_clear.c: + .text start:0x0000B37C end:0x0000E570 + .rodata start:0x000001A8 end:0x00000248 + .data start:0x00000520 end:0x00000698 + .bss start:0x00000298 end:0x000004E0 + +REL/mstory2Dll/board_miss.c: + .text start:0x0000E570 end:0x000123C8 + .rodata start:0x00000248 end:0x00000310 + .data start:0x00000698 end:0x00000850 + .bss start:0x000004E0 end:0x00000790 + +REL/mstory2Dll/mg_clear.c: + .text start:0x000123C8 end:0x00016060 + .rodata start:0x00000310 end:0x000003D0 + .data start:0x00000850 end:0x00000DB8 + .bss start:0x00000790 end:0x00000968 + +REL/mstory2Dll/mg_miss.c: + .text start:0x00016060 end:0x000186D0 + .rodata start:0x000003D0 end:0x00000438 + .data start:0x00000DB8 end:0x00000EF8 + .bss start:0x00000968 end:0x00000B38 + +REL/mstory2Dll/ending.c: + .text start:0x000186D0 end:0x0001B5A4 + .rodata start:0x00000438 end:0x000004B8 + .data start:0x00000EF8 end:0x00001113 + .bss start:0x00000B38 end:0x00000D10 + +REL/mstory2Dll/save.c: + .text start:0x0001B5A4 end:0x0001B9A0 + .rodata start:0x000004B8 end:0x000004C8 + .bss start:0x00000D10 end:0x00000D18 diff --git a/config/GMPP01_00/rels/mstory2Dll/symbols.txt b/config/GMPP01_00/rels/mstory2Dll/symbols.txt index 67aae470..331d554e 100644 --- a/config/GMPP01_00/rels/mstory2Dll/symbols.txt +++ b/config/GMPP01_00/rels/mstory2Dll/symbols.txt @@ -5,7 +5,7 @@ _prolog = .text:0x00000344; // type:function size:0x54 scope:global _epilog = .text:0x00000398; // type:function size:0x4C scope:global fn_1_3E4 = .text:0x000003E4; // type:function size:0x110 fn_1_4F4 = .text:0x000004F4; // type:function size:0x1B8 -fn_1_6AC = .text:0x000006AC; // type:function size:0x1B8 +ObjectSetup = .text:0x000006AC; // type:function size:0x1B8 fn_1_864 = .text:0x00000864; // type:function size:0x28 fn_1_88C = .text:0x0000088C; // type:function size:0x20 fn_1_8AC = .text:0x000008AC; // type:function size:0xD8 @@ -240,420 +240,420 @@ fn_1_18E7C = .text:0x00018E7C; // type:function size:0x48 fn_1_18EC4 = .text:0x00018EC4; // type:function size:0x274 fn_1_19138 = .text:0x00019138; // type:function size:0x1FC fn_1_19334 = .text:0x00019334; // type:function size:0x6B0 -fn_1_199E4 = .text:0x000199E4; // type:function size:0x248 -fn_1_19C2C = .text:0x00019C2C; // type:function size:0x84 -fn_1_19CB0 = .text:0x00019CB0; // type:function size:0x2A8 -fn_1_19F58 = .text:0x00019F58; // type:function size:0xB4 -fn_1_1A00C = .text:0x0001A00C; // type:function size:0x198 -fn_1_1A1A4 = .text:0x0001A1A4; // type:function size:0x208 -fn_1_1A3AC = .text:0x0001A3AC; // type:function size:0x1D0 -fn_1_1A57C = .text:0x0001A57C; // type:function size:0x40 -fn_1_1A5BC = .text:0x0001A5BC; // type:function size:0x254 -fn_1_1A810 = .text:0x0001A810; // type:function size:0x204 -fn_1_1AA14 = .text:0x0001AA14; // type:function size:0xE4 -fn_1_1AAF8 = .text:0x0001AAF8; // type:function size:0x288 -fn_1_1AD80 = .text:0x0001AD80; // type:function size:0xE4 -fn_1_1AE64 = .text:0x0001AE64; // type:function size:0x1B4 -fn_1_1B018 = .text:0x0001B018; // type:function size:0x110 -fn_1_1B128 = .text:0x0001B128; // type:function size:0x234 -fn_1_1B35C = .text:0x0001B35C; // type:function size:0x8C -fn_1_1B3E8 = .text:0x0001B3E8; // type:function size:0x8C -fn_1_1B474 = .text:0x0001B474; // type:function size:0x130 -fn_1_1B5A4 = .text:0x0001B5A4; // type:function size:0xEC -fn_1_1B690 = .text:0x0001B690; // type:function size:0x224 -fn_1_1B8B4 = .text:0x0001B8B4; // type:function size:0x9C -fn_1_1B950 = .text:0x0001B950; // type:function size:0x50 +fn_1_199A0 = .text:0x000199E4; // type:function size:0x248 +fn_1_19BE8 = .text:0x00019C2C; // type:function size:0x84 +fn_1_19C6C = .text:0x00019CB0; // type:function size:0x2A8 +fn_1_19F14 = .text:0x00019F58; // type:function size:0xB4 +fn_1_19FC8 = .text:0x0001A00C; // type:function size:0x198 +fn_1_1A160 = .text:0x0001A1A4; // type:function size:0x208 +fn_1_1A368 = .text:0x0001A3AC; // type:function size:0x1D0 +fn_1_1A538 = .text:0x0001A57C; // type:function size:0x40 +fn_1_1A578 = .text:0x0001A5BC; // type:function size:0x254 +fn_1_1A7CC = .text:0x0001A810; // type:function size:0x204 +fn_1_1A9D0 = .text:0x0001AA14; // type:function size:0xE4 +fn_1_1AAB4 = .text:0x0001AAF8; // type:function size:0x288 +fn_1_1AD3C = .text:0x0001AD80; // type:function size:0xE4 +fn_1_1AE20 = .text:0x0001AE64; // type:function size:0x1B4 +fn_1_1AFD4 = .text:0x0001B018; // type:function size:0x110 +fn_1_1B0E4 = .text:0x0001B128; // type:function size:0x234 +fn_1_1B318 = .text:0x0001B35C; // type:function size:0x8C +fn_1_1B3A4 = .text:0x0001B3E8; // type:function size:0x8C +fn_1_1B430 = .text:0x0001B474; // type:function size:0x130 +fn_1_1B560 = .text:0x0001B5A4; // type:function size:0xEC +fn_1_1B64C = .text:0x0001B690; // type:function size:0x224 +fn_1_1B870 = .text:0x0001B8B4; // type:function size:0x9C +fn_1_1B90C = .text:0x0001B950; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC data:4byte -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC data:4byte -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC data:4byte -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 data:byte -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC data:4byte -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 data:byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC data:4byte -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC data:4byte -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C data:4byte -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 data:byte -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC data:4byte -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC data:4byte -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC data:4byte -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 data:byte -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC data:4byte -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC data:4byte -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC data:4byte -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 data:byte -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 data:double -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 data:byte -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC data:4byte -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte -lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 data:string -lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 data:string -lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 data:string -lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 data:string -lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 data:string -lbl_1_data_135 = .data:0x00000135; // type:object size:0xF +lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 scope:local data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 scope:local data:string +lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 scope:local data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0xF scope:local lbl_1_data_144 = .data:0x00000144; // type:object size:0x18 -lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 data:string -lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 data:string -lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 data:string +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 scope:local data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 scope:local data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 scope:local data:string jumptable_1_data_19C = .data:0x0000019C; // type:object size:0x54 scope:local jumptable_1_data_1F0 = .data:0x000001F0; // type:object size:0x54 scope:local -lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A data:string -lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A data:string -lbl_1_data_278 = .data:0x00000278; // type:object size:0xE data:string -lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 data:string -lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 data:string -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 data:string -lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 data:string -lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 data:string -lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 data:string -lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 data:string -lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 +lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A scope:local data:string +lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A scope:local data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0xE scope:local data:string +lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 scope:local data:string +lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 scope:local data:string +lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 scope:local data:string +lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 scope:local data:string +lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 scope:local lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 lbl_1_data_328 = .data:0x00000328; // type:object size:0x60 -lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 data:string -lbl_1_data_399 = .data:0x00000399; // type:object size:0x33 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 scope:local data:string +lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 scope:local data:string lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10 lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte -lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 data:string -lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 data:string -lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 data:string -lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 data:string -lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 data:string -lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 data:string -lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 data:string -lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 data:string -lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 data:string -lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 data:string -lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 data:string -lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA data:string -lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C data:string -lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D data:string -lbl_1_data_50C = .data:0x0000050C; // type:object size:0x14 -lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 data:string -lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 data:string -lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 data:string -lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 data:string -lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 data:string -lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 data:string -lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 data:string -lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 data:string -lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 data:string -lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 data:string -lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA data:string -lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C data:string -lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D data:string -lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 data:string -lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C data:string +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 scope:local data:string +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 scope:local data:string +lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 scope:local data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 scope:local data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 scope:local data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 scope:local data:string +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 scope:local data:string +lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 scope:local data:string +lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA scope:local data:string +lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C scope:local data:string +lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D scope:local data:string +lbl_1_data_50C = .data:0x0000050C; // type:object size:0x14 scope:local +lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 scope:local data:string +lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 scope:local data:string +lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 scope:local data:string +lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 scope:local data:string +lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 scope:local data:string +lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 scope:local data:string +lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 scope:local data:string +lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 scope:local data:string +lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA scope:local data:string +lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C scope:local data:string +lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D scope:local data:string +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 scope:local data:string +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C scope:local data:string lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 lbl_1_data_698 = .data:0x00000698; // type:object size:0x3C -lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 data:string -lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 data:string -lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 data:string -lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 data:string -lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 data:string -lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 data:string -lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 data:string -lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 data:string -lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 data:string -lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 data:string -lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA data:string -lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C data:string -lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D data:string -lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 data:string -lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 scope:local data:string +lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 scope:local data:string +lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 scope:local data:string +lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 scope:local data:string +lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 scope:local data:string +lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 scope:local data:string +lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 scope:local data:string +lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 scope:local data:string +lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 scope:local data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 scope:local data:string +lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA scope:local data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C scope:local data:string +lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D scope:local data:string +lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 scope:local data:string +lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C scope:local lbl_1_data_81C = .data:0x0000081C; // type:object size:0x34 lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0 lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10 lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte lbl_1_data_C24 = .data:0x00000C24; // type:object size:0x8 data:4byte -lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 data:string -lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 data:string -lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 data:string -lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 data:string -lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 data:string -lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 data:string -lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 data:string -lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 data:string -lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 data:string -lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 data:string -lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 data:string -lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA data:string -lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C data:string -lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D data:string -lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C data:string -lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 data:string -lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 data:string -lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0xB -lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 data:string -lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 data:string -lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 data:string -lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 data:string -lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 data:string -lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 data:string -lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 data:string -lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 data:string -lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 data:string -lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 data:string -lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA data:string -lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C data:string -lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D data:string -lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 data:string -lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x20 +lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 scope:local data:string +lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 scope:local data:string +lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 scope:local data:string +lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 scope:local data:string +lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 scope:local data:string +lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 scope:local data:string +lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 scope:local data:string +lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 scope:local data:string +lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 scope:local data:string +lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 scope:local data:string +lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 scope:local data:string +lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA scope:local data:string +lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C scope:local data:string +lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D scope:local data:string +lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C scope:local data:string +lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 scope:local data:string +lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 scope:local data:string +lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0xB scope:local +lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 scope:local data:string +lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 scope:local data:string +lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 scope:local data:string +lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 scope:local data:string +lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 scope:local data:string +lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 scope:local data:string +lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 scope:local data:string +lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 scope:local data:string +lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 scope:local data:string +lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 scope:local data:string +lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA scope:local data:string +lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C scope:local data:string +lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D scope:local data:string +lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 scope:local data:string +lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x20 scope:local lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10 lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte lbl_1_data_F14 = .data:0x00000F14; // type:object size:0x4 data:4byte -lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 data:string -lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 data:string -lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 data:string -lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 data:string -lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 data:string -lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 data:string -lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 data:string -lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 data:string -lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 data:string -lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 data:string -lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 data:string -lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA data:string -lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C data:string -lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D data:string -lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 data:string -lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 data:string -lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 data:string -lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 data:string -lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 data:string -lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 data:string -lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 data:string -lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 data:string +lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 scope:local data:string +lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 scope:local data:string +lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 scope:local data:string +lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 scope:local data:string +lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 scope:local data:string +lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 scope:local data:string +lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 scope:local data:string +lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 scope:local data:string +lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 scope:local data:string +lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 scope:local data:string +lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 scope:local data:string +lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA scope:local data:string +lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C scope:local data:string +lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D scope:local data:string +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 scope:local data:string +lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 scope:local data:string +lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 scope:local data:string +lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 scope:local data:string +lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 scope:local data:string +lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 scope:local data:string +lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 scope:local data:string +lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 scope:local data:string lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20 -lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF data:string +lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x24 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x54 data:float lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x10 data:4byte diff --git a/config/GMPP01_00/rels/w06Dll/symbols.txt b/config/GMPP01_00/rels/w06Dll/symbols.txt index 43936054..aad0e22c 100644 --- a/config/GMPP01_00/rels/w06Dll/symbols.txt +++ b/config/GMPP01_00/rels/w06Dll/symbols.txt @@ -3,371 +3,371 @@ _prolog = .text:0x00000030; // type:function size:0x64 scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global BoardCreate = .text:0x000000E0; // type:function size:0x4C4 BoardDestroy = .text:0x000005A4; // type:function size:0x18C -fn_1_730 = .text:0x00000730; // type:function size:0x6C -fn_1_79C = .text:0x0000079C; // type:function size:0x20 -fn_1_7BC = .text:0x000007BC; // type:function size:0x144 -fn_1_900 = .text:0x00000900; // type:function size:0x84 -fn_1_984 = .text:0x00000984; // type:function size:0x3C -fn_1_9C0 = .text:0x000009C0; // type:function size:0x168 -fn_1_B28 = .text:0x00000B28; // type:function size:0x34 -fn_1_B5C = .text:0x00000B5C; // type:function size:0x214 +fn_1_730 = .text:0x00000730; // type:function size:0x6C scope:local +fn_1_79C = .text:0x0000079C; // type:function size:0x20 scope:local +fn_1_7BC = .text:0x000007BC; // type:function size:0x144 scope:local +fn_1_900 = .text:0x00000900; // type:function size:0x84 scope:local +fn_1_984 = .text:0x00000984; // type:function size:0x3C scope:local +fn_1_9C0 = .text:0x000009C0; // type:function size:0x168 scope:local +fn_1_B28 = .text:0x00000B28; // type:function size:0x34 scope:local +fn_1_B5C = .text:0x00000B5C; // type:function size:0x214 scope:local fn_1_D70 = .text:0x00000D70; // type:function size:0x1FC fn_1_F6C = .text:0x00000F6C; // type:function size:0xE8 fn_1_1054 = .text:0x00001054; // type:function size:0x90 -fn_1_10E4 = .text:0x000010E4; // type:function size:0x64 -fn_1_1148 = .text:0x00001148; // type:function size:0x68 -fn_1_11B0 = .text:0x000011B0; // type:function size:0xF0 -fn_1_12A0 = .text:0x000012A0; // type:function size:0x32C -fn_1_15CC = .text:0x000015CC; // type:function size:0x614 -fn_1_1BE0 = .text:0x00001BE0; // type:function size:0xD0 -fn_1_1CB0 = .text:0x00001CB0; // type:function size:0xAC -fn_1_1D5C = .text:0x00001D5C; // type:function size:0xD4 -fn_1_1E30 = .text:0x00001E30; // type:function size:0xD8 -fn_1_1F08 = .text:0x00001F08; // type:function size:0x140 -fn_1_2048 = .text:0x00002048; // type:function size:0x84 -fn_1_20CC = .text:0x000020CC; // type:function size:0xA8 -fn_1_2174 = .text:0x00002174; // type:function size:0x58 -fn_1_21CC = .text:0x000021CC; // type:function size:0x54 -fn_1_2220 = .text:0x00002220; // type:function size:0x21C -fn_1_243C = .text:0x0000243C; // type:function size:0x5E0 -fn_1_2A1C = .text:0x00002A1C; // type:function size:0x144 -fn_1_2B60 = .text:0x00002B60; // type:function size:0xB8 -fn_1_2C18 = .text:0x00002C18; // type:function size:0x178 -fn_1_2D90 = .text:0x00002D90; // type:function size:0x40 -fn_1_2DD0 = .text:0x00002DD0; // type:function size:0x48 -fn_1_2E18 = .text:0x00002E18; // type:function size:0xDC -fn_1_2EF4 = .text:0x00002EF4; // type:function size:0x57C -fn_1_3470 = .text:0x00003470; // type:function size:0xF0 -fn_1_3560 = .text:0x00003560; // type:function size:0x5C -fn_1_35BC = .text:0x000035BC; // type:function size:0x48 -fn_1_3604 = .text:0x00003604; // type:function size:0x94 -fn_1_3698 = .text:0x00003698; // type:function size:0x2DC -fn_1_3974 = .text:0x00003974; // type:function size:0x6FC -fn_1_4070 = .text:0x00004070; // type:function size:0xB4 -fn_1_4124 = .text:0x00004124; // type:function size:0x70 -fn_1_4194 = .text:0x00004194; // type:function size:0x118 -fn_1_42AC = .text:0x000042AC; // type:function size:0x130 -fn_1_43DC = .text:0x000043DC; // type:function size:0x84 -fn_1_4460 = .text:0x00004460; // type:function size:0x418 +fn_1_10E4 = .text:0x000010E4; // type:function size:0x64 scope:local +fn_1_1148 = .text:0x00001148; // type:function size:0x68 scope:local +fn_1_11B0 = .text:0x000011B0; // type:function size:0xF0 scope:local +fn_1_12A0 = .text:0x000012A0; // type:function size:0x32C scope:local +fn_1_15CC = .text:0x000015CC; // type:function size:0x614 scope:local +fn_1_1BE0 = .text:0x00001BE0; // type:function size:0xD0 scope:local +fn_1_1CB0 = .text:0x00001CB0; // type:function size:0xAC scope:local +fn_1_1D5C = .text:0x00001D5C; // type:function size:0xD4 scope:local +fn_1_1E30 = .text:0x00001E30; // type:function size:0xD8 scope:local +fn_1_1F08 = .text:0x00001F08; // type:function size:0x140 scope:local +fn_1_2048 = .text:0x00002048; // type:function size:0x84 scope:local +fn_1_20CC = .text:0x000020CC; // type:function size:0xA8 scope:local +fn_1_2174 = .text:0x00002174; // type:function size:0x58 scope:local +fn_1_21CC = .text:0x000021CC; // type:function size:0x54 scope:local +fn_1_2220 = .text:0x00002220; // type:function size:0x21C scope:local +fn_1_243C = .text:0x0000243C; // type:function size:0x5E0 scope:local +fn_1_2A1C = .text:0x00002A1C; // type:function size:0x144 scope:local +fn_1_2B60 = .text:0x00002B60; // type:function size:0xB8 scope:local +fn_1_2C18 = .text:0x00002C18; // type:function size:0x178 scope:local +fn_1_2D90 = .text:0x00002D90; // type:function size:0x40 scope:local +fn_1_2DD0 = .text:0x00002DD0; // type:function size:0x48 scope:local +fn_1_2E18 = .text:0x00002E18; // type:function size:0xDC scope:local +fn_1_2EF4 = .text:0x00002EF4; // type:function size:0x57C scope:local +fn_1_3470 = .text:0x00003470; // type:function size:0xF0 scope:local +fn_1_3560 = .text:0x00003560; // type:function size:0x5C scope:local +fn_1_35BC = .text:0x000035BC; // type:function size:0x48 scope:local +fn_1_3604 = .text:0x00003604; // type:function size:0x94 scope:local +fn_1_3698 = .text:0x00003698; // type:function size:0x2DC scope:local +fn_1_3974 = .text:0x00003974; // type:function size:0x6FC scope:local +fn_1_4070 = .text:0x00004070; // type:function size:0xB4 scope:local +fn_1_4124 = .text:0x00004124; // type:function size:0x70 scope:local +fn_1_4194 = .text:0x00004194; // type:function size:0x118 scope:local +fn_1_42AC = .text:0x000042AC; // type:function size:0x130 scope:local +fn_1_43DC = .text:0x000043DC; // type:function size:0x84 scope:local +fn_1_4460 = .text:0x00004460; // type:function size:0x418 scope:local fn_1_4878 = .text:0x00004878; // type:function size:0x198 fn_1_4A10 = .text:0x00004A10; // type:function size:0x50 fn_1_4A60 = .text:0x00004A60; // type:function size:0xA0 -fn_1_4B00 = .text:0x00004B00; // type:function size:0xA0 -fn_1_4BA0 = .text:0x00004BA0; // type:function size:0x58 -fn_1_4BF8 = .text:0x00004BF8; // type:function size:0x3C0 -fn_1_4FB8 = .text:0x00004FB8; // type:function size:0x1E4 -fn_1_519C = .text:0x0000519C; // type:function size:0x204 -fn_1_53A0 = .text:0x000053A0; // type:function size:0xF0 -fn_1_5490 = .text:0x00005490; // type:function size:0x23C -fn_1_56CC = .text:0x000056CC; // type:function size:0x110 -fn_1_57DC = .text:0x000057DC; // type:function size:0xA0 -fn_1_587C = .text:0x0000587C; // type:function size:0x80 -fn_1_58FC = .text:0x000058FC; // type:function size:0x6C -fn_1_5968 = .text:0x00005968; // type:function size:0x68 -fn_1_59D0 = .text:0x000059D0; // type:function size:0x13C -fn_1_5B0C = .text:0x00005B0C; // type:function size:0x48 -fn_1_5B54 = .text:0x00005B54; // type:function size:0x190 -fn_1_5CE4 = .text:0x00005CE4; // type:function size:0x1D8 -fn_1_5EBC = .text:0x00005EBC; // type:function size:0x40 -fn_1_5EFC = .text:0x00005EFC; // type:function size:0x5C -fn_1_5F58 = .text:0x00005F58; // type:function size:0x114 -fn_1_606C = .text:0x0000606C; // type:function size:0x9A0 -fn_1_6A0C = .text:0x00006A0C; // type:function size:0x240 -fn_1_6C4C = .text:0x00006C4C; // type:function size:0x244 -fn_1_6E90 = .text:0x00006E90; // type:function size:0x60 +fn_1_4B00 = .text:0x00004B00; // type:function size:0xA0 scope:local +fn_1_4BA0 = .text:0x00004BA0; // type:function size:0x58 scope:local +fn_1_4BF8 = .text:0x00004BF8; // type:function size:0x3C0 scope:local +fn_1_4FB8 = .text:0x00004FB8; // type:function size:0x1E4 scope:local +fn_1_519C = .text:0x0000519C; // type:function size:0x204 scope:local +fn_1_53A0 = .text:0x000053A0; // type:function size:0xF0 scope:local +fn_1_5490 = .text:0x00005490; // type:function size:0x23C scope:local +fn_1_56CC = .text:0x000056CC; // type:function size:0x110 scope:local +fn_1_57DC = .text:0x000057DC; // type:function size:0xA0 scope:local +fn_1_587C = .text:0x0000587C; // type:function size:0x80 scope:local +fn_1_58FC = .text:0x000058FC; // type:function size:0x6C scope:local +fn_1_5968 = .text:0x00005968; // type:function size:0x68 scope:local +fn_1_59D0 = .text:0x000059D0; // type:function size:0x13C scope:local +fn_1_5B0C = .text:0x00005B0C; // type:function size:0x48 scope:local +fn_1_5B54 = .text:0x00005B54; // type:function size:0x190 scope:local +fn_1_5CE4 = .text:0x00005CE4; // type:function size:0x1D8 scope:local +fn_1_5EBC = .text:0x00005EBC; // type:function size:0x40 scope:local +fn_1_5EFC = .text:0x00005EFC; // type:function size:0x5C scope:local +fn_1_5F58 = .text:0x00005F58; // type:function size:0x114 scope:local +fn_1_606C = .text:0x0000606C; // type:function size:0x9A0 scope:local +fn_1_6A0C = .text:0x00006A0C; // type:function size:0x240 scope:local +fn_1_6C4C = .text:0x00006C4C; // type:function size:0x244 scope:local +fn_1_6E90 = .text:0x00006E90; // type:function size:0x60 scope:local fn_1_6EF0 = .text:0x00006EF0; // type:function size:0x90 -fn_1_6F80 = .text:0x00006F80; // type:function size:0x290 -fn_1_7210 = .text:0x00007210; // type:function size:0x94 -fn_1_72A4 = .text:0x000072A4; // type:function size:0x28 -fn_1_72CC = .text:0x000072CC; // type:function size:0x120 -fn_1_73EC = .text:0x000073EC; // type:function size:0xD0 -fn_1_74BC = .text:0x000074BC; // type:function size:0xB8 -fn_1_7574 = .text:0x00007574; // type:function size:0x120 -fn_1_7694 = .text:0x00007694; // type:function size:0xEC -fn_1_7780 = .text:0x00007780; // type:function size:0x1E4 -fn_1_7964 = .text:0x00007964; // type:function size:0x26C +fn_1_6F80 = .text:0x00006F80; // type:function size:0x290 scope:local +fn_1_7210 = .text:0x00007210; // type:function size:0x94 scope:local +fn_1_72A4 = .text:0x000072A4; // type:function size:0x28 scope:local +fn_1_72CC = .text:0x000072CC; // type:function size:0x120 scope:local +fn_1_73EC = .text:0x000073EC; // type:function size:0xD0 scope:local +fn_1_74BC = .text:0x000074BC; // type:function size:0xB8 scope:local +fn_1_7574 = .text:0x00007574; // type:function size:0x120 scope:local +fn_1_7674 = .text:0x00007694; // type:function size:0xEC scope:local +fn_1_7760 = .text:0x00007780; // type:function size:0x1E4 scope:local +fn_1_7944 = .text:0x00007964; // type:function size:0x26C scope:local fn_1_7BB0 = .text:0x00007BD0; // type:function size:0x38C fn_1_7F3C = .text:0x00007F5C; // type:function size:0x68 fn_1_7FA4 = .text:0x00007FC4; // type:function size:0x2C0 fn_1_8264 = .text:0x00008284; // type:function size:0xBC -fn_1_8340 = .text:0x00008340; // type:function size:0x100 -fn_1_8440 = .text:0x00008440; // type:function size:0x70 -fn_1_84B0 = .text:0x000084B0; // type:function size:0x5C8 -fn_1_8A78 = .text:0x00008A78; // type:function size:0x4C8 +fn_1_8320 = .text:0x00008340; // type:function size:0x100 scope:local +fn_1_8420 = .text:0x00008440; // type:function size:0x70 scope:local +fn_1_8490 = .text:0x000084B0; // type:function size:0x5C8 scope:local +fn_1_8A58 = .text:0x00008A78; // type:function size:0x4C8 scope:local fn_1_8F20 = .text:0x00008F40; // type:function size:0x2B8 fn_1_91D8 = .text:0x000091F8; // type:function size:0xBC fn_1_9294 = .text:0x000092B4; // type:function size:0x44 fn_1_92D8 = .text:0x000092F8; // type:function size:0xF0 -fn_1_93E8 = .text:0x000093E8; // type:function size:0x10C -fn_1_94F4 = .text:0x000094F4; // type:function size:0xD8 -fn_1_95CC = .text:0x000095CC; // type:function size:0x8B0 -fn_1_9E7C = .text:0x00009E7C; // type:function size:0x5AC -fn_1_A428 = .text:0x0000A428; // type:function size:0x744 -fn_1_AB6C = .text:0x0000AB6C; // type:function size:0x730 -fn_1_B29C = .text:0x0000B29C; // type:function size:0x424 -fn_1_B6C0 = .text:0x0000B6C0; // type:function size:0x240 -fn_1_B900 = .text:0x0000B900; // type:function size:0x230 -fn_1_BB30 = .text:0x0000BB30; // type:function size:0x1F8 -fn_1_BD28 = .text:0x0000BD28; // type:function size:0x3C -fn_1_BD64 = .text:0x0000BD64; // type:function size:0x48 -fn_1_BDAC = .text:0x0000BDAC; // type:function size:0x37C +fn_1_93C8 = .text:0x000093E8; // type:function size:0x10C scope:local +fn_1_94D4 = .text:0x000094F4; // type:function size:0xD8 scope:local +fn_1_95AC = .text:0x000095CC; // type:function size:0x8B0 scope:local +fn_1_9E5C = .text:0x00009E7C; // type:function size:0x5AC scope:local +fn_1_A408 = .text:0x0000A428; // type:function size:0x744 scope:local +fn_1_AB4C = .text:0x0000AB6C; // type:function size:0x730 scope:local +fn_1_B27C = .text:0x0000B29C; // type:function size:0x424 scope:local +fn_1_B6A0 = .text:0x0000B6C0; // type:function size:0x240 scope:local +fn_1_B8E0 = .text:0x0000B900; // type:function size:0x230 scope:local +fn_1_BB10 = .text:0x0000BB30; // type:function size:0x1F8 scope:local +fn_1_BD08 = .text:0x0000BD28; // type:function size:0x3C scope:local +fn_1_BD44 = .text:0x0000BD64; // type:function size:0x48 scope:local +fn_1_BD8C = .text:0x0000BDAC; // type:function size:0x37C scope:local fn_1_C108 = .text:0x0000C128; // type:function size:0x1AC fn_1_C2B4 = .text:0x0000C2D4; // type:function size:0x158 -fn_1_C42C = .text:0x0000C42C; // type:function size:0x5B0 -fn_1_C9DC = .text:0x0000C9DC; // type:function size:0xD0 -fn_1_CAAC = .text:0x0000CAAC; // type:function size:0x40 -fn_1_CAEC = .text:0x0000CAEC; // type:function size:0x1C4 +fn_1_C40C = .text:0x0000C42C; // type:function size:0x5B0 scope:local +fn_1_C9BC = .text:0x0000C9DC; // type:function size:0xD0 scope:local +fn_1_CA8C = .text:0x0000CAAC; // type:function size:0x40 scope:local +fn_1_CACC = .text:0x0000CAEC; // type:function size:0x1C4 scope:local fn_1_CC90 = .text:0x0000CCB0; // type:function size:0x7C fn_1_CD0C = .text:0x0000CD2C; // type:function size:0x398 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:4byte -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:4byte -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x1 data:byte -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x1 data:byte -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x6 data:2byte -lbl_1_rodata_9A = .rodata:0x0000009A; // type:object size:0x1 data:byte -lbl_1_rodata_9E = .rodata:0x0000009E; // type:object size:0x6 data:2byte -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x5 -lbl_1_rodata_F5 = .rodata:0x000000F5; // type:object size:0x7 -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0xC data:4byte -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0xF0 -lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x2 data:2byte -lbl_1_data_F2 = .data:0x000000F2; // type:object size:0x2 data:2byte -lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x2 data:2byte -lbl_1_data_F6 = .data:0x000000F6; // type:object size:0x2 data:2byte -lbl_1_data_F8 = .data:0x000000F8; // type:object size:0x8 -lbl_1_data_100 = .data:0x00000100; // type:object size:0x8 -lbl_1_data_108 = .data:0x00000108; // type:object size:0xA0 -lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x2 data:2byte -lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x1 data:byte -lbl_1_data_1AD = .data:0x000001AD; // type:object size:0x3 -lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x2 data:2byte -lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0xC -lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x5 data:string -lbl_1_data_1C5 = .data:0x000001C5; // type:object size:0x13 -lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x2 data:2byte -lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 data:2byte -lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x2 data:2byte -lbl_1_data_1DE = .data:0x000001DE; // type:object size:0x6 -lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x24 -lbl_1_data_208 = .data:0x00000208; // type:object size:0x20 -lbl_1_data_228 = .data:0x00000228; // type:object size:0x1 data:byte -lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 data:2byte -lbl_1_data_22C = .data:0x0000022C; // type:object size:0x2 data:2byte -lbl_1_data_230 = .data:0x00000230; // type:object size:0x38 -lbl_1_data_268 = .data:0x00000268; // type:object size:0x5 data:string -lbl_1_data_26D = .data:0x0000026D; // type:object size:0xE -lbl_1_data_27B = .data:0x0000027B; // type:object size:0x4 -lbl_1_data_27F = .data:0x0000027F; // type:object size:0x8 -lbl_1_data_287 = .data:0x00000287; // type:object size:0x12 data:string -lbl_1_data_299 = .data:0x00000299; // type:object size:0x11 data:string -lbl_1_data_2AA = .data:0x000002AA; // type:object size:0x18 data:string -lbl_1_data_2C2 = .data:0x000002C2; // type:object size:0x17 data:string -lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x16 data:string -lbl_1_data_2EF = .data:0x000002EF; // type:object size:0x10 data:string -lbl_1_data_2FF = .data:0x000002FF; // type:object size:0x10 data:string -lbl_1_data_30F = .data:0x0000030F; // type:object size:0x11 data:string -lbl_1_data_320 = .data:0x00000320; // type:object size:0x15 data:string -lbl_1_data_335 = .data:0x00000335; // type:object size:0x15 data:string -lbl_1_data_34A = .data:0x0000034A; // type:object size:0x10 data:string -lbl_1_data_35A = .data:0x0000035A; // type:object size:0x13 data:string -lbl_1_data_36D = .data:0x0000036D; // type:object size:0x13 data:string -lbl_1_data_380 = .data:0x00000380; // type:object size:0x98 -lbl_1_data_418 = .data:0x00000418; // type:object size:0x2 data:2byte -lbl_1_data_41C = .data:0x0000041C; // type:object size:0x18 -lbl_1_data_434 = .data:0x00000434; // type:object size:0x18 -lbl_1_data_44C = .data:0x0000044C; // type:object size:0xC -lbl_1_data_458 = .data:0x00000458; // type:object size:0x20 -lbl_1_data_478 = .data:0x00000478; // type:object size:0x20 -lbl_1_data_498 = .data:0x00000498; // type:object size:0x2 data:2byte -lbl_1_data_49A = .data:0x0000049A; // type:object size:0x2 data:2byte -lbl_1_data_49C = .data:0x0000049C; // type:object size:0x2 data:2byte -lbl_1_data_49E = .data:0x0000049E; // type:object size:0x2 data:2byte -lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x2 data:2byte -lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x2 data:2byte -lbl_1_data_4A4 = .data:0x000004A4; // type:object size:0x8 -lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x20 -lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x20 -lbl_1_data_4EC = .data:0x000004EC; // type:object size:0x24 -lbl_1_data_510 = .data:0x00000510; // type:object size:0x20 -lbl_1_data_530 = .data:0x00000530; // type:object size:0x6 data:string -lbl_1_data_536 = .data:0x00000536; // type:object size:0xB data:string +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x6 scope:local data:2byte +lbl_1_rodata_9A = .rodata:0x0000009A; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_9E = .rodata:0x0000009E; // type:object size:0x6 scope:local data:2byte +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x5 scope:local +lbl_1_rodata_F5 = .rodata:0x000000F5; // type:object size:0x7 scope:local +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0xF0 scope:local +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F2 = .data:0x000000F2; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F6 = .data:0x000000F6; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F8 = .data:0x000000F8; // type:object size:0x8 scope:local +lbl_1_data_100 = .data:0x00000100; // type:object size:0x8 scope:local +lbl_1_data_108 = .data:0x00000108; // type:object size:0xA0 scope:local +lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x2 scope:local data:2byte +lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x1 scope:local data:byte +lbl_1_data_1AD = .data:0x000001AD; // type:object size:0x3 scope:local +lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x2 scope:local data:2byte +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0xC scope:local +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x5 scope:local data:string +lbl_1_data_1C5 = .data:0x000001C5; // type:object size:0x13 scope:local +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x2 scope:local data:2byte +lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 scope:local data:2byte +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x2 scope:local data:2byte +lbl_1_data_1DE = .data:0x000001DE; // type:object size:0x6 scope:local +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x24 scope:local +lbl_1_data_208 = .data:0x00000208; // type:object size:0x20 scope:local +lbl_1_data_228 = .data:0x00000228; // type:object size:0x1 scope:local data:byte +lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 scope:local data:2byte +lbl_1_data_22C = .data:0x0000022C; // type:object size:0x2 scope:local data:2byte +lbl_1_data_230 = .data:0x00000230; // type:object size:0x38 scope:local +lbl_1_data_268 = .data:0x00000268; // type:object size:0x5 scope:local data:string +lbl_1_data_26D = .data:0x0000026D; // type:object size:0xE scope:local +lbl_1_data_27B = .data:0x0000027B; // type:object size:0x4 scope:local +lbl_1_data_27F = .data:0x0000027F; // type:object size:0x8 scope:local +lbl_1_data_287 = .data:0x00000287; // type:object size:0x12 scope:local data:string +lbl_1_data_299 = .data:0x00000299; // type:object size:0x11 scope:local data:string +lbl_1_data_2AA = .data:0x000002AA; // type:object size:0x18 scope:local data:string +lbl_1_data_2C2 = .data:0x000002C2; // type:object size:0x17 scope:local data:string +lbl_1_data_2D9 = .data:0x000002D9; // type:object size:0x16 scope:local data:string +lbl_1_data_2EF = .data:0x000002EF; // type:object size:0x10 scope:local data:string +lbl_1_data_2FF = .data:0x000002FF; // type:object size:0x10 scope:local data:string +lbl_1_data_30F = .data:0x0000030F; // type:object size:0x11 scope:local data:string +lbl_1_data_320 = .data:0x00000320; // type:object size:0x15 scope:local data:string +lbl_1_data_335 = .data:0x00000335; // type:object size:0x15 scope:local data:string +lbl_1_data_34A = .data:0x0000034A; // type:object size:0x10 scope:local data:string +lbl_1_data_35A = .data:0x0000035A; // type:object size:0x13 scope:local data:string +lbl_1_data_36D = .data:0x0000036D; // type:object size:0x13 scope:local data:string +lbl_1_data_380 = .data:0x00000380; // type:object size:0x98 scope:local +lbl_1_data_418 = .data:0x00000418; // type:object size:0x2 scope:local data:2byte +lbl_1_data_41C = .data:0x0000041C; // type:object size:0x18 scope:local +lbl_1_data_434 = .data:0x00000434; // type:object size:0x18 scope:local +lbl_1_data_44C = .data:0x0000044C; // type:object size:0xC scope:local +lbl_1_data_458 = .data:0x00000458; // type:object size:0x20 scope:local +lbl_1_data_478 = .data:0x00000478; // type:object size:0x20 scope:local +lbl_1_data_498 = .data:0x00000498; // type:object size:0x2 scope:local data:2byte +lbl_1_data_49A = .data:0x0000049A; // type:object size:0x2 scope:local data:2byte +lbl_1_data_49C = .data:0x0000049C; // type:object size:0x2 scope:local data:2byte +lbl_1_data_49E = .data:0x0000049E; // type:object size:0x2 scope:local data:2byte +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x2 scope:local data:2byte +lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x2 scope:local data:2byte +lbl_1_data_4A4 = .data:0x000004A4; // type:object size:0x8 scope:local +lbl_1_data_4AC = .data:0x000004AC; // type:object size:0x20 scope:local +lbl_1_data_4CC = .data:0x000004CC; // type:object size:0x20 scope:local +lbl_1_data_4EC = .data:0x000004EC; // type:object size:0x24 scope:local +lbl_1_data_510 = .data:0x00000510; // type:object size:0x20 scope:local +lbl_1_data_530 = .data:0x00000530; // type:object size:0x6 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0xB scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:2byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x1 data:byte -lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte -lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte -lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x1 data:byte -lbl_1_bss_33 = .bss:0x00000033; // type:object size:0x1 data:byte -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x2 data:2byte -lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x6 -lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC data:2byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte -lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte -lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte -lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x1 data:byte -lbl_1_bss_59 = .bss:0x00000059; // type:object size:0x1 data:byte -lbl_1_bss_5A = .bss:0x0000005A; // type:object size:0x1 data:byte -lbl_1_bss_5B = .bss:0x0000005B; // type:object size:0x31 -lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte -lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x28 data:4byte -lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 data:4byte -lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 data:4byte -lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x2 data:2byte -lbl_1_bss_C2 = .bss:0x000000C2; // type:object size:0x4 -lbl_1_bss_C6 = .bss:0x000000C6; // type:object size:0x1 data:byte -lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte -lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 data:4byte -lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x6 -lbl_1_bss_D6 = .bss:0x000000D6; // type:object size:0xC -lbl_1_bss_E2 = .bss:0x000000E2; // type:object size:0x2 data:2byte -lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x2 data:2byte -lbl_1_bss_E6 = .bss:0x000000E6; // type:object size:0x1 data:byte -lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x4 data:4byte -lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0x4 data:4byte -lbl_1_bss_F0 = .bss:0x000000F0; // type:object size:0x4 data:4byte -lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x1 data:byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x1 scope:local data:byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x1 scope:local data:byte +lbl_1_bss_33 = .bss:0x00000033; // type:object size:0x1 scope:local data:byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_36 = .bss:0x00000036; // type:object size:0x6 scope:local +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC scope:local data:2byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x1 scope:local data:byte +lbl_1_bss_59 = .bss:0x00000059; // type:object size:0x1 scope:local data:byte +lbl_1_bss_5A = .bss:0x0000005A; // type:object size:0x1 scope:local data:byte +lbl_1_bss_5B = .bss:0x0000005B; // type:object size:0x31 scope:local +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x28 scope:local data:4byte +lbl_1_bss_B8 = .bss:0x000000B8; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_BC = .bss:0x000000BC; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_C0 = .bss:0x000000C0; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_C2 = .bss:0x000000C2; // type:object size:0x4 scope:local +lbl_1_bss_C6 = .bss:0x000000C6; // type:object size:0x1 scope:local data:byte +lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x6 scope:local +lbl_1_bss_D6 = .bss:0x000000D6; // type:object size:0xC scope:local +lbl_1_bss_E2 = .bss:0x000000E2; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_E6 = .bss:0x000000E6; // type:object size:0x1 scope:local data:byte +lbl_1_bss_E8 = .bss:0x000000E8; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_EC = .bss:0x000000EC; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_F0 = .bss:0x000000F0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x1 scope:local data:byte diff --git a/config/GMPP01_02/rels/mstory2Dll/splits.txt b/config/GMPP01_02/rels/mstory2Dll/splits.txt index 531cd645..4359ae61 100644 --- a/config/GMPP01_02/rels/mstory2Dll/splits.txt +++ b/config/GMPP01_02/rels/mstory2Dll/splits.txt @@ -5,3 +5,50 @@ Sections: .rodata type:rodata align:8 .data type:data align:8 .bss type:bss align:8 + +REL/mstory2Dll/main.c: + .text start:0x00000000 end:0x00007DB0 + .rodata start:0x00000000 end:0x00000118 + .data start:0x00000000 end:0x000003A0 + .bss start:0x00000000 end:0x00000078 + +REL/mstory2Dll/board_entrance.c: + .text start:0x00007DB0 end:0x0000B37C + .rodata start:0x00000118 end:0x000001A8 + .data start:0x000003A0 end:0x00000520 + .bss start:0x00000078 end:0x00000298 + +REL/mstory2Dll/board_clear.c: + .text start:0x0000B37C end:0x0000E570 + .rodata start:0x000001A8 end:0x00000248 + .data start:0x00000520 end:0x00000698 + .bss start:0x00000298 end:0x000004E0 + +REL/mstory2Dll/board_miss.c: + .text start:0x0000E570 end:0x000123C8 + .rodata start:0x00000248 end:0x00000310 + .data start:0x00000698 end:0x00000850 + .bss start:0x000004E0 end:0x00000790 + +REL/mstory2Dll/mg_clear.c: + .text start:0x000123C8 end:0x00016060 + .rodata start:0x00000310 end:0x000003D0 + .data start:0x00000850 end:0x00000DB8 + .bss start:0x00000790 end:0x00000968 + +REL/mstory2Dll/mg_miss.c: + .text start:0x00016060 end:0x000186D0 + .rodata start:0x000003D0 end:0x00000438 + .data start:0x00000DB8 end:0x00000EF8 + .bss start:0x00000968 end:0x00000B38 + +REL/mstory2Dll/ending.c: + .text start:0x000186D0 end:0x0001B5A4 + .rodata start:0x00000438 end:0x000004B8 + .data start:0x00000EF8 end:0x00001113 + .bss start:0x00000B38 end:0x00000D10 + +REL/mstory2Dll/save.c: + .text start:0x0001B5A4 end:0x0001B9B8 + .rodata start:0x000004B8 end:0x000004C8 + .bss start:0x00000D10 end:0x00000D18 diff --git a/config/GMPP01_02/rels/mstory2Dll/symbols.txt b/config/GMPP01_02/rels/mstory2Dll/symbols.txt index a43c0850..7c85e645 100644 --- a/config/GMPP01_02/rels/mstory2Dll/symbols.txt +++ b/config/GMPP01_02/rels/mstory2Dll/symbols.txt @@ -5,7 +5,7 @@ _prolog = .text:0x00000344; // type:function size:0x54 scope:global _epilog = .text:0x00000398; // type:function size:0x4C scope:global fn_1_3E4 = .text:0x000003E4; // type:function size:0x110 fn_1_4F4 = .text:0x000004F4; // type:function size:0x1B8 -fn_1_6AC = .text:0x000006AC; // type:function size:0x1B8 +ObjectSetup = .text:0x000006AC; // type:function size:0x1B8 fn_1_864 = .text:0x00000864; // type:function size:0x28 fn_1_88C = .text:0x0000088C; // type:function size:0x20 fn_1_8AC = .text:0x000008AC; // type:function size:0xD8 @@ -209,8 +209,8 @@ fn_1_16060 = .text:0x00016060; // type:function size:0x118 fn_1_16178 = .text:0x00016178; // type:function size:0x8C fn_1_16204 = .text:0x00016204; // type:function size:0x3AC fn_1_165B0 = .text:0x000165B0; // type:function size:0x5C -fn_1_1660C = .text:0x0001660C; // type:function size:0x110 -fn_1_1671C = .text:0x0001671C; // type:function size:0x194 +fn_1_1661C = .text:0x0001660C; // type:function size:0x110 +fn_1_1670C = .text:0x0001671C; // type:function size:0x194 fn_1_168B0 = .text:0x000168B0; // type:function size:0xD4 fn_1_16984 = .text:0x00016984; // type:function size:0x50 fn_1_169D4 = .text:0x000169D4; // type:function size:0x4 @@ -240,420 +240,420 @@ fn_1_18E7C = .text:0x00018E7C; // type:function size:0x48 fn_1_18EC4 = .text:0x00018EC4; // type:function size:0x274 fn_1_19138 = .text:0x00019138; // type:function size:0x1FC fn_1_19334 = .text:0x00019334; // type:function size:0x6B0 -fn_1_199E4 = .text:0x000199E4; // type:function size:0x248 -fn_1_19C2C = .text:0x00019C2C; // type:function size:0x84 -fn_1_19CB0 = .text:0x00019CB0; // type:function size:0x2A8 -fn_1_19F58 = .text:0x00019F58; // type:function size:0xB4 -fn_1_1A00C = .text:0x0001A00C; // type:function size:0x198 -fn_1_1A1A4 = .text:0x0001A1A4; // type:function size:0x208 -fn_1_1A3AC = .text:0x0001A3AC; // type:function size:0x1D0 -fn_1_1A57C = .text:0x0001A57C; // type:function size:0x40 -fn_1_1A5BC = .text:0x0001A5BC; // type:function size:0x254 -fn_1_1A810 = .text:0x0001A810; // type:function size:0x204 -fn_1_1AA14 = .text:0x0001AA14; // type:function size:0xE4 -fn_1_1AAF8 = .text:0x0001AAF8; // type:function size:0x288 -fn_1_1AD80 = .text:0x0001AD80; // type:function size:0xE4 -fn_1_1AE64 = .text:0x0001AE64; // type:function size:0x1B4 -fn_1_1B018 = .text:0x0001B018; // type:function size:0x110 -fn_1_1B128 = .text:0x0001B128; // type:function size:0x234 -fn_1_1B35C = .text:0x0001B35C; // type:function size:0x8C -fn_1_1B3E8 = .text:0x0001B3E8; // type:function size:0x8C -fn_1_1B474 = .text:0x0001B474; // type:function size:0x130 -fn_1_1B5A4 = .text:0x0001B5A4; // type:function size:0xEC -fn_1_1B690 = .text:0x0001B690; // type:function size:0x23C -fn_1_1B8CC = .text:0x0001B8CC; // type:function size:0x9C -fn_1_1B968 = .text:0x0001B968; // type:function size:0x50 +fn_1_199A0 = .text:0x000199E4; // type:function size:0x248 +fn_1_19BE8 = .text:0x00019C2C; // type:function size:0x84 +fn_1_19C6C = .text:0x00019CB0; // type:function size:0x2A8 +fn_1_19F14 = .text:0x00019F58; // type:function size:0xB4 +fn_1_19FC8 = .text:0x0001A00C; // type:function size:0x198 +fn_1_1A160 = .text:0x0001A1A4; // type:function size:0x208 +fn_1_1A368 = .text:0x0001A3AC; // type:function size:0x1D0 +fn_1_1A538 = .text:0x0001A57C; // type:function size:0x40 +fn_1_1A578 = .text:0x0001A5BC; // type:function size:0x254 +fn_1_1A7CC = .text:0x0001A810; // type:function size:0x204 +fn_1_1A9D0 = .text:0x0001AA14; // type:function size:0xE4 +fn_1_1AAB4 = .text:0x0001AAF8; // type:function size:0x288 +fn_1_1AD3C = .text:0x0001AD80; // type:function size:0xE4 +fn_1_1AE20 = .text:0x0001AE64; // type:function size:0x1B4 +fn_1_1AFD4 = .text:0x0001B018; // type:function size:0x110 +fn_1_1B0E4 = .text:0x0001B128; // type:function size:0x234 +fn_1_1B318 = .text:0x0001B35C; // type:function size:0x8C +fn_1_1B3A4 = .text:0x0001B3E8; // type:function size:0x8C +fn_1_1B430 = .text:0x0001B474; // type:function size:0x130 +fn_1_1B560 = .text:0x0001B5A4; // type:function size:0xEC +fn_1_1B64C = .text:0x0001B690; // type:function size:0x23C +fn_1_1B870 = .text:0x0001B8CC; // type:function size:0x9C +fn_1_1B90C = .text:0x0001B968; // type:function size:0x50 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC data:4byte -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC data:4byte -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC data:4byte -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 data:byte -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC data:4byte -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 data:byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC data:4byte -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC data:4byte -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C data:4byte -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 data:byte -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC data:4byte -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC data:4byte -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC data:4byte -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 data:byte -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC data:4byte -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC data:4byte -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC data:4byte -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 data:byte -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 data:double -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 data:byte -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC data:4byte -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte -lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 data:string -lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 data:string -lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 data:string -lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 data:string -lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 data:string -lbl_1_data_135 = .data:0x00000135; // type:object size:0xF +lbl_1_data_70 = .data:0x00000070; // type:object size:0x29 scope:local data:string +lbl_1_data_99 = .data:0x00000099; // type:object size:0x26 scope:local data:string +lbl_1_data_BF = .data:0x000000BF; // type:object size:0x25 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x29 scope:local data:string +lbl_1_data_10D = .data:0x0000010D; // type:object size:0x28 scope:local data:string +lbl_1_data_135 = .data:0x00000135; // type:object size:0xF scope:local lbl_1_data_144 = .data:0x00000144; // type:object size:0x18 -lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 data:string -lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 data:string -lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 data:string +lbl_1_data_15C = .data:0x0000015C; // type:object size:0x28 scope:local data:string +lbl_1_data_184 = .data:0x00000184; // type:object size:0x3 scope:local data:string +lbl_1_data_187 = .data:0x00000187; // type:object size:0x15 scope:local data:string jumptable_1_data_19C = .data:0x0000019C; // type:object size:0x54 scope:local jumptable_1_data_1F0 = .data:0x000001F0; // type:object size:0x54 scope:local -lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A data:string -lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A data:string -lbl_1_data_278 = .data:0x00000278; // type:object size:0xE data:string -lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 data:string -lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 data:string -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 data:string -lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 data:string -lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 data:string -lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 data:string -lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 data:string -lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 +lbl_1_data_244 = .data:0x00000244; // type:object size:0x1A scope:local data:string +lbl_1_data_25E = .data:0x0000025E; // type:object size:0x1A scope:local data:string +lbl_1_data_278 = .data:0x00000278; // type:object size:0xE scope:local data:string +lbl_1_data_286 = .data:0x00000286; // type:object size:0x10 scope:local data:string +lbl_1_data_296 = .data:0x00000296; // type:object size:0x10 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x10 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x10 scope:local data:string +lbl_1_data_2C6 = .data:0x000002C6; // type:object size:0x10 scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0x10 scope:local data:string +lbl_1_data_2E6 = .data:0x000002E6; // type:object size:0x10 scope:local data:string +lbl_1_data_2F6 = .data:0x000002F6; // type:object size:0x12 scope:local lbl_1_data_308 = .data:0x00000308; // type:object size:0x20 lbl_1_data_328 = .data:0x00000328; // type:object size:0x60 -lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 data:string -lbl_1_data_399 = .data:0x00000399; // type:object size:0x33 +lbl_1_data_388 = .data:0x00000388; // type:object size:0x11 scope:local data:string +lbl_1_data_399 = .data:0x00000399; // type:object size:0x2 scope:local data:string lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x10 lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x4 data:4byte lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x8 data:4byte -lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 data:string -lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 data:string -lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 data:string -lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 data:string -lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 data:string -lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 data:string -lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 data:string -lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 data:string -lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 data:string -lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 data:string -lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 data:string -lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA data:string -lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C data:string -lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D data:string -lbl_1_data_50C = .data:0x0000050C; // type:object size:0x14 -lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 data:string -lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 data:string -lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 data:string -lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 data:string -lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 data:string -lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 data:string -lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 data:string -lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 data:string -lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 data:string -lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 data:string -lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA data:string -lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C data:string -lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D data:string -lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 data:string -lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C data:string +lbl_1_data_3E8 = .data:0x000003E8; // type:object size:0x14 scope:local data:string +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0x15 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x14 scope:local data:string +lbl_1_data_425 = .data:0x00000425; // type:object size:0x15 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0x14 scope:local data:string +lbl_1_data_44E = .data:0x0000044E; // type:object size:0x15 scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0x14 scope:local data:string +lbl_1_data_477 = .data:0x00000477; // type:object size:0x15 scope:local data:string +lbl_1_data_48C = .data:0x0000048C; // type:object size:0x14 scope:local data:string +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0x15 scope:local data:string +lbl_1_data_4B5 = .data:0x000004B5; // type:object size:0x14 scope:local data:string +lbl_1_data_4C9 = .data:0x000004C9; // type:object size:0xA scope:local data:string +lbl_1_data_4D3 = .data:0x000004D3; // type:object size:0x1C scope:local data:string +lbl_1_data_4EF = .data:0x000004EF; // type:object size:0x1D scope:local data:string +lbl_1_data_50C = .data:0x0000050C; // type:object size:0x14 scope:local +lbl_1_data_520 = .data:0x00000520; // type:object size:0x16 scope:local data:string +lbl_1_data_536 = .data:0x00000536; // type:object size:0x15 scope:local data:string +lbl_1_data_54B = .data:0x0000054B; // type:object size:0x16 scope:local data:string +lbl_1_data_561 = .data:0x00000561; // type:object size:0x15 scope:local data:string +lbl_1_data_576 = .data:0x00000576; // type:object size:0x16 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x15 scope:local data:string +lbl_1_data_5A1 = .data:0x000005A1; // type:object size:0x16 scope:local data:string +lbl_1_data_5B7 = .data:0x000005B7; // type:object size:0x15 scope:local data:string +lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x17 scope:local data:string +lbl_1_data_5E3 = .data:0x000005E3; // type:object size:0x16 scope:local data:string +lbl_1_data_5F9 = .data:0x000005F9; // type:object size:0xA scope:local data:string +lbl_1_data_603 = .data:0x00000603; // type:object size:0x1C scope:local data:string +lbl_1_data_61F = .data:0x0000061F; // type:object size:0x1D scope:local data:string +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x10 scope:local data:string +lbl_1_data_64C = .data:0x0000064C; // type:object size:0x1C scope:local data:string lbl_1_data_668 = .data:0x00000668; // type:object size:0x30 lbl_1_data_698 = .data:0x00000698; // type:object size:0x3C -lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 data:string -lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 data:string -lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 data:string -lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 data:string -lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 data:string -lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 data:string -lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 data:string -lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 data:string -lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 data:string -lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 data:string -lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA data:string -lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C data:string -lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D data:string -lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 data:string -lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C +lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x16 scope:local data:string +lbl_1_data_6EA = .data:0x000006EA; // type:object size:0x15 scope:local data:string +lbl_1_data_6FF = .data:0x000006FF; // type:object size:0x16 scope:local data:string +lbl_1_data_715 = .data:0x00000715; // type:object size:0x15 scope:local data:string +lbl_1_data_72A = .data:0x0000072A; // type:object size:0x16 scope:local data:string +lbl_1_data_740 = .data:0x00000740; // type:object size:0x15 scope:local data:string +lbl_1_data_755 = .data:0x00000755; // type:object size:0x16 scope:local data:string +lbl_1_data_76B = .data:0x0000076B; // type:object size:0x15 scope:local data:string +lbl_1_data_780 = .data:0x00000780; // type:object size:0x17 scope:local data:string +lbl_1_data_797 = .data:0x00000797; // type:object size:0x16 scope:local data:string +lbl_1_data_7AD = .data:0x000007AD; // type:object size:0xA scope:local data:string +lbl_1_data_7B7 = .data:0x000007B7; // type:object size:0x1C scope:local data:string +lbl_1_data_7D3 = .data:0x000007D3; // type:object size:0x1D scope:local data:string +lbl_1_data_7F0 = .data:0x000007F0; // type:object size:0x10 scope:local data:string +lbl_1_data_800 = .data:0x00000800; // type:object size:0x1C scope:local lbl_1_data_81C = .data:0x0000081C; // type:object size:0x34 lbl_1_data_850 = .data:0x00000850; // type:object size:0x3C0 lbl_1_data_C10 = .data:0x00000C10; // type:object size:0x10 lbl_1_data_C20 = .data:0x00000C20; // type:object size:0x4 data:4byte lbl_1_data_C24 = .data:0x00000C24; // type:object size:0x8 data:4byte -lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 data:string -lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 data:string -lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 data:string -lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 data:string -lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 data:string -lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 data:string -lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 data:string -lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 data:string -lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 data:string -lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 data:string -lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 data:string -lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA data:string -lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C data:string -lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D data:string -lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C data:string -lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 data:string -lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 data:string -lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0xB -lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 data:string -lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 data:string -lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 data:string -lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 data:string -lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 data:string -lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 data:string -lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 data:string -lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 data:string -lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 data:string -lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 data:string -lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA data:string -lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C data:string -lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D data:string -lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 data:string -lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x20 +lbl_1_data_C2C = .data:0x00000C2C; // type:object size:0x14 scope:local data:string +lbl_1_data_C40 = .data:0x00000C40; // type:object size:0x15 scope:local data:string +lbl_1_data_C55 = .data:0x00000C55; // type:object size:0x14 scope:local data:string +lbl_1_data_C69 = .data:0x00000C69; // type:object size:0x15 scope:local data:string +lbl_1_data_C7E = .data:0x00000C7E; // type:object size:0x14 scope:local data:string +lbl_1_data_C92 = .data:0x00000C92; // type:object size:0x15 scope:local data:string +lbl_1_data_CA7 = .data:0x00000CA7; // type:object size:0x14 scope:local data:string +lbl_1_data_CBB = .data:0x00000CBB; // type:object size:0x15 scope:local data:string +lbl_1_data_CD0 = .data:0x00000CD0; // type:object size:0x14 scope:local data:string +lbl_1_data_CE4 = .data:0x00000CE4; // type:object size:0x15 scope:local data:string +lbl_1_data_CF9 = .data:0x00000CF9; // type:object size:0x14 scope:local data:string +lbl_1_data_D0D = .data:0x00000D0D; // type:object size:0xA scope:local data:string +lbl_1_data_D17 = .data:0x00000D17; // type:object size:0x1C scope:local data:string +lbl_1_data_D33 = .data:0x00000D33; // type:object size:0x1D scope:local data:string +lbl_1_data_D50 = .data:0x00000D50; // type:object size:0x1C scope:local data:string +lbl_1_data_D6C = .data:0x00000D6C; // type:object size:0x31 scope:local data:string +lbl_1_data_D9D = .data:0x00000D9D; // type:object size:0x10 scope:local data:string +lbl_1_data_DAD = .data:0x00000DAD; // type:object size:0xB scope:local +lbl_1_data_DB8 = .data:0x00000DB8; // type:object size:0x15 scope:local data:string +lbl_1_data_DCD = .data:0x00000DCD; // type:object size:0x14 scope:local data:string +lbl_1_data_DE1 = .data:0x00000DE1; // type:object size:0x15 scope:local data:string +lbl_1_data_DF6 = .data:0x00000DF6; // type:object size:0x14 scope:local data:string +lbl_1_data_E0A = .data:0x00000E0A; // type:object size:0x15 scope:local data:string +lbl_1_data_E1F = .data:0x00000E1F; // type:object size:0x14 scope:local data:string +lbl_1_data_E33 = .data:0x00000E33; // type:object size:0x15 scope:local data:string +lbl_1_data_E48 = .data:0x00000E48; // type:object size:0x14 scope:local data:string +lbl_1_data_E5C = .data:0x00000E5C; // type:object size:0x15 scope:local data:string +lbl_1_data_E71 = .data:0x00000E71; // type:object size:0x14 scope:local data:string +lbl_1_data_E85 = .data:0x00000E85; // type:object size:0xA scope:local data:string +lbl_1_data_E8F = .data:0x00000E8F; // type:object size:0x1C scope:local data:string +lbl_1_data_EAB = .data:0x00000EAB; // type:object size:0x1D scope:local data:string +lbl_1_data_EC8 = .data:0x00000EC8; // type:object size:0x10 scope:local data:string +lbl_1_data_ED8 = .data:0x00000ED8; // type:object size:0x20 scope:local lbl_1_data_EF8 = .data:0x00000EF8; // type:object size:0x10 lbl_1_data_F08 = .data:0x00000F08; // type:object size:0x4 data:4byte lbl_1_data_F0C = .data:0x00000F0C; // type:object size:0x8 data:4byte lbl_1_data_F14 = .data:0x00000F14; // type:object size:0x4 data:4byte -lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 data:string -lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 data:string -lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 data:string -lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 data:string -lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 data:string -lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 data:string -lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 data:string -lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 data:string -lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 data:string -lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 data:string -lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 data:string -lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA data:string -lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C data:string -lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D data:string -lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 data:string -lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 data:string -lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 data:string -lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 data:string -lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 data:string -lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 data:string -lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 data:string -lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 data:string +lbl_1_data_F18 = .data:0x00000F18; // type:object size:0x14 scope:local data:string +lbl_1_data_F2C = .data:0x00000F2C; // type:object size:0x15 scope:local data:string +lbl_1_data_F41 = .data:0x00000F41; // type:object size:0x14 scope:local data:string +lbl_1_data_F55 = .data:0x00000F55; // type:object size:0x15 scope:local data:string +lbl_1_data_F6A = .data:0x00000F6A; // type:object size:0x14 scope:local data:string +lbl_1_data_F7E = .data:0x00000F7E; // type:object size:0x15 scope:local data:string +lbl_1_data_F93 = .data:0x00000F93; // type:object size:0x14 scope:local data:string +lbl_1_data_FA7 = .data:0x00000FA7; // type:object size:0x15 scope:local data:string +lbl_1_data_FBC = .data:0x00000FBC; // type:object size:0x14 scope:local data:string +lbl_1_data_FD0 = .data:0x00000FD0; // type:object size:0x15 scope:local data:string +lbl_1_data_FE5 = .data:0x00000FE5; // type:object size:0x14 scope:local data:string +lbl_1_data_FF9 = .data:0x00000FF9; // type:object size:0xA scope:local data:string +lbl_1_data_1003 = .data:0x00001003; // type:object size:0x1C scope:local data:string +lbl_1_data_101F = .data:0x0000101F; // type:object size:0x1D scope:local data:string +lbl_1_data_103C = .data:0x0000103C; // type:object size:0x15 scope:local data:string +lbl_1_data_1051 = .data:0x00001051; // type:object size:0x15 scope:local data:string +lbl_1_data_1066 = .data:0x00001066; // type:object size:0x15 scope:local data:string +lbl_1_data_107B = .data:0x0000107B; // type:object size:0x15 scope:local data:string +lbl_1_data_1090 = .data:0x00001090; // type:object size:0x15 scope:local data:string +lbl_1_data_10A5 = .data:0x000010A5; // type:object size:0x15 scope:local data:string +lbl_1_data_10BA = .data:0x000010BA; // type:object size:0x15 scope:local data:string +lbl_1_data_10CF = .data:0x000010CF; // type:object size:0x15 scope:local data:string lbl_1_data_10E4 = .data:0x000010E4; // type:object size:0x20 -lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF data:string +lbl_1_data_1104 = .data:0x00001104; // type:object size:0xF scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x24 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x54 data:float lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x10 data:4byte diff --git a/configure.py b/configure.py index 015fa960..73ab159e 100644 --- a/configure.py +++ b/configure.py @@ -1370,14 +1370,14 @@ config.libs = [ Rel( "mstory2Dll", objects={ - Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/main.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/board_entrance.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/board_clear.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/board_miss.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/mg_clear.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/mg_miss.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/ending.c"), - Object(MatchingFor("GMPE01_00"), "REL/mstory2Dll/save.c"), + Object(Matching, "REL/mstory2Dll/main.c"), + Object(Matching, "REL/mstory2Dll/board_entrance.c"), + Object(Matching, "REL/mstory2Dll/board_clear.c"), + Object(Matching, "REL/mstory2Dll/board_miss.c"), + Object(Matching, "REL/mstory2Dll/mg_clear.c"), + Object(Matching, "REL/mstory2Dll/mg_miss.c"), + Object(Matching, "REL/mstory2Dll/ending.c"), + Object(Matching, "REL/mstory2Dll/save.c"), }, ), Rel( diff --git a/src/REL/mstory2Dll/board_clear.c b/src/REL/mstory2Dll/board_clear.c index b4013800..3073e986 100644 --- a/src/REL/mstory2Dll/board_clear.c +++ b/src/REL/mstory2Dll/board_clear.c @@ -308,21 +308,21 @@ void fn_1_C4C0(void) void fn_1_C574(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660052); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52)); object->motion[1] = Hu3DMotionIDGet(object->model[1]); Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); fn_1_1DFC(object, 1, 1, 0, 1); - object->model[2] = Hu3DModelCreateFile(0x660053); - object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); - object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); fn_1_1DFC(object, 2, 2, 0, 2); - object->model[5] = Hu3DModelCreateFile(0x660059); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x59)); object->motion[5] = Hu3DMotionIDGet(object->model[5]); Hu3DModelPosSet(object->model[5], 0, 80, 460); Hu3DModelAttrSet(object->model[5], 1); Hu3DModelShadowSet(object->model[5]); fn_1_1DFC(object, 5, 5, 0, 2); - object->model[6] = Hu3DModelCreateFile(0x66005A); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5A)); object->motion[6] = Hu3DMotionIDGet(object->model[6]); Hu3DModelHookSet(object->model[5], "koopasgbox_fix-effect_fook2", object->model[6]); Hu3DModelAttrSet(object->model[6], 1); @@ -354,10 +354,10 @@ void fn_1_C858(void) void fn_1_CB0C(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660062); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); - object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660066); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660069); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C)); Hu3DModelPosSet(object->model[1], 0, 0, 150); Hu3DModelRotSet(object->model[1], 0, 0, 0); Hu3DModelScaleSet(object->model[1], 1.25f, 1.25f, 1.25f); @@ -404,12 +404,12 @@ void fn_1_CD78(void) void fn_1_D030(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x66007D); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x66007E); - object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660080); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660081); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660084); - object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660085); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x80 : 0x7D)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x81 : 0x7E)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x84 : 0x7F)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x85 : 0x80)); Hu3DModelPosSet(object->model[1], -300, 0, 890); Hu3DModelRotSet(object->model[1], 0, 30, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); @@ -518,7 +518,7 @@ void fn_1_D898(omObjData *object, int player) Hu3DModelScaleSet(object->model[1], 1, 1, 1); Hu3DModelShadowSet(object->model[1]); fn_1_1DFC(object, 1, 1, 0, 1); - object->model[2] = Hu3DModelCreateFile(0x660056); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x56)); Hu3DModelPosSet( object->model[2], lbl_1_data_668[playerNo].x, lbl_1_data_668[lbl_1_bss_3DC.unk30[playerNo].unk18 - 1].y, lbl_1_data_668[playerNo].z); if (lbl_1_bss_3DC.unk30[playerNo].unk18 == 4) { diff --git a/src/REL/mstory2Dll/board_entrance.c b/src/REL/mstory2Dll/board_entrance.c index c1b93643..e69abcfd 100644 --- a/src/REL/mstory2Dll/board_entrance.c +++ b/src/REL/mstory2Dll/board_entrance.c @@ -16,7 +16,6 @@ #include "game/window.h" #include "game/wipe.h" - typedef struct { /* 0x000 */ s32 unk00; /* 0x004 */ s32 unk04; @@ -382,15 +381,15 @@ void fn_1_9768(void) void fn_1_981C(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660050); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x50)); object->motion[0] = Hu3DMotionIDGet(object->model[1]); fn_1_1DFC(object, 1, 0, 0, 2); Hu3DModelShadowMapObjSet(object->model[1], "base_fix9-base"); - object->model[2] = Hu3DModelCreateFile(0x660053); - object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); - object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); fn_1_1DFC(object, 2, 3, 0, 2); - object->model[4] = Hu3DModelCreateFile(0x660051); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x51)); } void fn_1_9954(omObjData *arg0, StructBss16C *arg1) @@ -441,10 +440,10 @@ void fn_1_9CB8(omObjData *object) object->model[1] = CharModelCreate(charNo, 1); object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35)); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660018 + charNo); - object->motion[7] = Hu3DJointMotionFile(object->model[1], 0x660048 + charNo); - object->motion[8] = Hu3DJointMotionFile(object->model[1], 0x660040 + charNo); - object->motion[9] = Hu3DJointMotionFile(object->model[1], 0x660020 + charNo); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x18) + charNo); + object->motion[7] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x48) + charNo); + object->motion[8] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x40) + charNo); + object->motion[9] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x20) + charNo); object->motion[10] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x12)); CharModelMotionDataClose(charNo); Hu3DModelPosSet(object->model[1], 120, 0, 800); @@ -488,13 +487,13 @@ void fn_1_9FDC(void) void fn_1_A288(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660072); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660073); - object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660075); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660076); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x66007A); - object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x66007B); - object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x660079); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x72 : 0x73)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x73 : 0x74)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x75)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x76)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7A : 0x78)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7B : 0x79)); + object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x79 : 0x77)); Hu3DModelPosSet(object->model[1], 0, 0, 460); Hu3DModelRotSet(object->model[1], 0, 0, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); @@ -532,15 +531,15 @@ void fn_1_A58C(void) void fn_1_A848(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660062); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); - object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660065); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660066); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660069); - object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660068); - object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x66006C); - object->motion[7] = Hu3DJointMotionFile(object->model[1], 0x66006D); - object->motion[8] = Hu3DJointMotionFile(object->model[1], 0x660064); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x65 : 0x69)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x68 : 0x6B)); + object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6C : 0x6D)); + object->motion[7] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6D : 0x6E)); + object->motion[8] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x64 : 0x68)); Hu3DModelPosSet(object->model[1], -120, 0, 800); Hu3DModelRotSet(object->model[1], 0, 90, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); diff --git a/src/REL/mstory2Dll/board_miss.c b/src/REL/mstory2Dll/board_miss.c index 89c73938..c509b9d0 100644 --- a/src/REL/mstory2Dll/board_miss.c +++ b/src/REL/mstory2Dll/board_miss.c @@ -471,21 +471,21 @@ void fn_1_FDFC(void) void fn_1_FEB0(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660052); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52)); object->motion[1] = Hu3DMotionIDGet(object->model[1]); Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); fn_1_1DFC(object, 1, 1, 0, 1); - object->model[2] = Hu3DModelCreateFile(0x660053); - object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); - object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); fn_1_1DFC(object, 2, 2, 0, 2); - object->model[5] = Hu3DModelCreateFile(0x660057); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x57)); object->motion[5] = Hu3DMotionIDGet(object->model[5]); Hu3DModelPosSet(object->model[5], 0, 80, 460); Hu3DModelAttrSet(object->model[5], 1); Hu3DModelShadowSet(object->model[5]); fn_1_1DFC(object, 5, 5, 0, 2); - object->model[6] = Hu3DModelCreateFile(0x660058); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x58)); object->motion[6] = Hu3DMotionIDGet(object->model[6]); Hu3DModelHookSet(object->model[5], "koopabox_fix-effect_fook2", object->model[6]); Hu3DModelAttrSet(object->model[6], 1); @@ -517,11 +517,11 @@ void fn_1_10194(void) void fn_1_10448(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660062); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); - object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660065); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660069); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660066); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x65 : 0x69)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A)); Hu3DModelPosSet(object->model[1], -180, 0, 800); Hu3DModelRotSet(object->model[1], 0, 60, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); @@ -598,12 +598,12 @@ void fn_1_1094C(void) void fn_1_10C00(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x66007D); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x66007E); - object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660080); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660081); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660084); - object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660085); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x80 : 0x7D)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x81 : 0x7E)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x84 : 0x7F)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x85 : 0x80)); Hu3DModelPosSet(object->model[1], -300, 0, 890); Hu3DModelRotSet(object->model[1], 0, 30, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); @@ -714,7 +714,7 @@ void fn_1_1154C(omObjData *object, int player) object->motion[3] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05)); object->motion[4] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A)); object->motion[5] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6D)); - object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x660018 + charNo); + object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x18) + charNo); CharModelMotionDataClose(charNo); Hu3DModelPosSet( object->model[1], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18 - 1].y + 90, lbl_1_data_81C[playerNo].z); @@ -722,7 +722,7 @@ void fn_1_1154C(omObjData *object, int player) Hu3DModelScaleSet(object->model[1], 1, 1, 1); Hu3DModelShadowSet(object->model[1]); fn_1_1DFC(object, 1, 1, 0, 1); - object->model[2] = Hu3DModelCreateFile(0x660056); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x56)); Hu3DModelPosSet( object->model[2], lbl_1_data_81C[playerNo].x, lbl_1_data_81C[lbl_1_bss_688.unk30[playerNo].unk18 - 1].y, lbl_1_data_81C[playerNo].z); if (lbl_1_bss_688.unk30[playerNo].unk18 == 4) { diff --git a/src/REL/mstory2Dll/ending.c b/src/REL/mstory2Dll/ending.c index 5e1a9b17..c8adbc76 100644 --- a/src/REL/mstory2Dll/ending.c +++ b/src/REL/mstory2Dll/ending.c @@ -9,6 +9,7 @@ #include "game/hsfanim.h" #include "game/hsfman.h" #include "game/hsfmotion.h" +#include "game/memory.h" #include "game/minigame_seq.h" #include "game/objsub.h" #include "game/pad.h" @@ -17,6 +18,11 @@ #include "game/window.h" #include "game/wipe.h" +#ifndef __MWERKS__ +#include "game/audio.h" +#include "game/saveload.h" +#include "game/thpmain.h" +#endif typedef struct { /* 0x000 */ s32 unk00; @@ -308,15 +314,36 @@ void fn_1_19334(void) fn_1_BE8(60); { int time = 0; +#if VERSION_PAL + s32 languageOffset = 0; +#endif int gid = HuSprGrpCreate(3); int sprid = HuTHPSprCreate(lbl_1_data_10E4[lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10], FALSE, 1000); HuSprGrpMemberSet(gid, 0, sprid); HuSprPosSet(gid, 0, 288, 240); - sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(0x660060, 0x10000000)), 950, 0); +#if VERSION_PAL + switch (GWGameStat.language) { + case 2: + languageOffset = 1; + break; + case 3: + languageOffset = 2; + break; + case 4: + languageOffset = 3; + break; + case 5: + languageOffset = 4; + break; + } + sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x60) + languageOffset, MEMORY_DEFAULT_NUM)), 950, 0); +#else + sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x60), MEMORY_DEFAULT_NUM)), 950, 0); +#endif HuSprGrpMemberSet(gid, 1, sprid); HuSprPosSet(gid, 1, 288, 226); HuSprAttrSet(gid, 1, HUSPR_ATTR_DISPOFF); - sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(0x660061, 0x10000000)), 950, 0); + sprid = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x61 : 0x65), MEMORY_DEFAULT_NUM)), 950, 0); HuSprGrpMemberSet(gid, 2, sprid); HuSprBankSet(gid, 2, lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10); if (GWLanguageGet() == 0 && lbl_1_bss_C0C.unk30[lbl_1_bss_C0C.unk00].unk10 == 5) { @@ -331,7 +358,7 @@ void fn_1_19334(void) HuPrcVSleep(); } while (!HuTHPEndCheck()) { - if (time >= 3300) { + if (time >= (VERSION_NTSC ? 3300 : 2725)) { HuSprAttrReset(gid, 1, HUSPR_ATTR_DISPOFF); HuSprAttrReset(gid, 2, HUSPR_ATTR_DISPOFF); } @@ -455,17 +482,17 @@ void fn_1_19F14(void) void fn_1_19FC8(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660050); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x50)); object->motion[0] = Hu3DMotionIDGet(object->model[1]); fn_1_1DFC(object, 1, 0, 0, 2); Hu3DModelShadowMapObjSet(object->model[1], "base_fix9-base"); Hu3DModelAttrSet(object->model[1], 1); - object->model[2] = Hu3DModelCreateFile(0x660053); - object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); - object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); Hu3DModelAttrSet(object->model[2], 1); fn_1_1DFC(object, 2, 3, 0, 2); - object->model[4] = Hu3DModelCreateFile(0x660051); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x51)); Hu3DModelAttrSet(object->model[4], 1); Hu3DModelPosSet(object->model[1], 0, -1000, 0); } @@ -486,10 +513,10 @@ void fn_1_1A160(void) void fn_1_1A368(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660062); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); - object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660070); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660071); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x70 : 0x71)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x71 : 0x72)); Hu3DModelPosSet(object->model[1], 0, 0, 600); Hu3DModelRotSet(object->model[1], 0, 180, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); @@ -524,12 +551,12 @@ void fn_1_1A578(void) void fn_1_1A7CC(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660072); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660073); - object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660075); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660076); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x66007C); - object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660079); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x72 : 0x73)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x73 : 0x74)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x75)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x76)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7C : 0x7A)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x79 : 0x77)); Hu3DModelPosSet(object->model[1], 0, 0, 460); Hu3DModelRotSet(object->model[1], 0, 0, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); @@ -590,8 +617,8 @@ void fn_1_1AE20(omObjData *object) object->model[1] = CharModelCreate(charNo, 1); object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x35)); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660010 + charNo); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660008 + charNo); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x10) + charNo); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x08) + charNo); CharModelMotionDataClose(charNo); Hu3DModelPosSet(object->model[1], 120, 0, 800); Hu3DModelRotSet(object->model[1], 0, -135, 0); diff --git a/src/REL/mstory2Dll/main.c b/src/REL/mstory2Dll/main.c index 058b2e4e..73dcc832 100644 --- a/src/REL/mstory2Dll/main.c +++ b/src/REL/mstory2Dll/main.c @@ -1235,4 +1235,8 @@ void fn_1_7384(int modelId, int charNo, float ofs, s32 maxTime, BOOL flag) Hu3DMotionNoMotReset(modelId, "c002m1-ske_hair1", lbl_1_data_328[charNo][0]); } } -} \ No newline at end of file +} + +#if VERSION_PAL +// lbl_1_data_399 +#endif diff --git a/src/REL/mstory2Dll/mg_clear.c b/src/REL/mstory2Dll/mg_clear.c index 524869fe..c06762b9 100644 --- a/src/REL/mstory2Dll/mg_clear.c +++ b/src/REL/mstory2Dll/mg_clear.c @@ -497,24 +497,24 @@ void fn_1_13C6C(omObjData *object) Hu3DModelShadowSet(object->model[7]); fn_1_1DFC(object, 7, 7, 0, 2); HuDataDirClose(DATADIR_MSTORY4); - object->model[1] = Hu3DModelCreateFile(0x660052); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52)); object->motion[1] = Hu3DMotionIDGet(object->model[1]); Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); fn_1_1DFC(object, 1, 1, 0, 1); - object->model[2] = Hu3DModelCreateFile(0x660053); - object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); - object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); fn_1_1DFC(object, 2, 3, 0, 2); - object->model[5] = Hu3DModelCreateFile(0x66005B); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5B)); Hu3DModelPosSet(object->model[5], 0, 125, 800); Hu3DModelAttrSet(object->model[5], 1); Hu3DModelShadowSet(object->model[5]); - object->model[6] = Hu3DModelCreateFile(0x66005D); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5D)); object->motion[6] = Hu3DMotionIDGet(object->model[6]); Hu3DModelPosSet(object->model[6], 25, 125, 900); Hu3DModelAttrSet(object->model[6], 1); fn_1_1DFC(object, 6, 6, 0, 2); - object->model[8] = Hu3DModelCreateFile(0x66005F); + object->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5F)); object->motion[8] = Hu3DMotionIDGet(object->model[8]); Hu3DModelAttrSet(object->model[8], 1); fn_1_1DFC(object, 8, 8, 0, 1); @@ -586,12 +586,12 @@ void fn_1_1449C(void) void fn_1_14868(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660062); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); - object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660064); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x66006E); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x66006F); - object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660069); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x64 : 0x68)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6E : 0x6F)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x6F : 0x70)); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C)); Hu3DModelPosSet(object->model[1], -180, 0, 800); Hu3DModelRotSet(object->model[1], 0, 60, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); @@ -650,11 +650,11 @@ void fn_1_14C40(void) void fn_1_14F6C(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x66007D); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x66007E); - object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660080); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660081); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660086); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x80 : 0x7D)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x81 : 0x7E)); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x86 : 0x81)); Hu3DModelPosSet(object->model[1], -600, 0, 800); Hu3DModelRotSet(object->model[1], 0, 60, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); @@ -741,10 +741,10 @@ void fn_1_1574C(omObjData *object) object->model[1] = CharModelCreate(charNo, 1); object->motion[1] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00)); object->motion[2] = CharModelMotionCreate(charNo, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02)); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660028 + charNo); - object->motion[4] = Hu3DJointMotionFile(object->model[1], 0x660030 + charNo); - object->motion[5] = Hu3DJointMotionFile(object->model[1], 0x660038 + charNo); - object->motion[6] = Hu3DJointMotionFile(object->model[1], 0x660000 + charNo); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x28) + charNo); + object->motion[4] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x30) + charNo); + object->motion[5] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x38) + charNo); + object->motion[6] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x00) + charNo); CharModelMotionDataClose(charNo); Hu3DModelPosSet(object->model[1], 120, 0, 800); Hu3DModelRotSet(object->model[1], 0, -60, 0); diff --git a/src/REL/mstory2Dll/mg_miss.c b/src/REL/mstory2Dll/mg_miss.c index cc329a56..e7bf2b00 100644 --- a/src/REL/mstory2Dll/mg_miss.c +++ b/src/REL/mstory2Dll/mg_miss.c @@ -264,20 +264,20 @@ void fn_1_16FC0(void) void fn_1_17074(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660052); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x52)); object->motion[1] = Hu3DMotionIDGet(object->model[1]); Hu3DModelShadowMapObjSet(object->model[1], "base_story-base"); fn_1_1DFC(object, 1, 1, 0, 1); - object->model[2] = Hu3DModelCreateFile(0x660053); - object->motion[2] = Hu3DJointMotionFile(object->model[2], 0x660054); - object->motion[3] = Hu3DJointMotionFile(object->model[2], 0x660055); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x53)); + object->motion[2] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x54)); + object->motion[3] = Hu3DJointMotionFile(object->model[2], DATA_MAKE_NUM(DATADIR_MSTORY2, 0x55)); fn_1_1DFC(object, 2, 2, 0, 2); - object->model[5] = Hu3DModelCreateFile(0x660059); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x59)); object->motion[5] = Hu3DMotionIDGet(object->model[5]); Hu3DModelPosSet(object->model[5], 0, 80, 460); Hu3DModelShadowSet(object->model[5]); fn_1_1DFC(object, 5, 5, 0, 2); - object->model[6] = Hu3DModelCreateFile(0x66005A); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, 0x5A)); object->motion[6] = Hu3DMotionIDGet(object->model[6]); Hu3DModelHookSet(object->model[5], "koopasgbox_fix-effect_fook2", object->model[6]); fn_1_1DFC(object, 6, 6, 0, 2); @@ -308,10 +308,10 @@ void fn_1_17338(void) void fn_1_175CC(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x660062); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x660063); - object->motion[2] = Hu3DJointMotionFile(object->model[1], 0x660066); - object->motion[3] = Hu3DJointMotionFile(object->model[1], 0x660069); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x62 : 0x66)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x63 : 0x67)); + object->motion[2] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x66 : 0x6A)); + object->motion[3] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x69 : 0x6C)); Hu3DModelPosSet(object->model[1], 0, 0, 200); Hu3DModelRotSet(object->model[1], 0, 0, 0); Hu3DModelScaleSet(object->model[1], 1.6f, 1.6f, 1.6f); @@ -356,8 +356,8 @@ void fn_1_177F8(void) void fn_1_17A70(omObjData *object) { - object->model[1] = Hu3DModelCreateFile(0x66007D); - object->motion[1] = Hu3DJointMotionFile(object->model[1], 0x66007E); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7D : 0x7B)); + object->motion[1] = Hu3DJointMotionFile(object->model[1], DATA_MAKE_NUM(DATADIR_MSTORY2, VERSION_NTSC ? 0x7E : 0x7C)); Hu3DModelPosSet(object->model[1], -120, 0, 800); Hu3DModelRotSet(object->model[1], 0, 135, 0); Hu3DModelScaleSet(object->model[1], 1, 1, 1); diff --git a/src/REL/mstory2Dll/save.c b/src/REL/mstory2Dll/save.c index 8bdf3535..cc52073c 100644 --- a/src/REL/mstory2Dll/save.c +++ b/src/REL/mstory2Dll/save.c @@ -74,7 +74,10 @@ void fn_1_1B64C(void) HuWinExAnimOut(var_r31); HuWinExCleanup(var_r31); if (SLSaveFlagGet() == 1 && temp_r30 == 0) { - if(omovlstat) { +#if VERSION_REV1 + GWGameStat.story_continue = 1; +#endif + if (omovlstat) { GWGameStat.story_continue = 0; } SLCommonSet(); @@ -100,9 +103,10 @@ void fn_1_1B870(void) do { fn_1_BC8(); } while (lbl_1_bss_D14 != 1); - if(omovlstat == 0) { + if (omovlstat == 0) { omOvlGotoEx(OVL_MSTORY2, 1, 4, 0); - } else { + } + else { omOvlReturnEx(omovlhisidx, 1); } HuPrcEnd(); From a79294aac0d319b07486377a1a9ad82a354bc779 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sun, 12 Jan 2025 04:12:01 +0100 Subject: [PATCH 15/24] Match m433Dll main.c and map.c (#524) * Match m433Dll main.c and map.c * Delete accidental lines from mstory2 --- config/GMPE01_00/rels/m433Dll/symbols.txt | 599 ++++++++-------- configure.py | 4 +- include/REL/m433Dll.h | 43 ++ src/REL/m433Dll/main.c | 476 +++++++++++++ src/REL/m433Dll/map.c | 827 ++++++++++++++++++++++ src/REL/mstory2Dll/main.c | 4 - 6 files changed, 1649 insertions(+), 304 deletions(-) create mode 100644 include/REL/m433Dll.h create mode 100644 src/REL/m433Dll/main.c create mode 100644 src/REL/m433Dll/map.c diff --git a/config/GMPE01_00/rels/m433Dll/symbols.txt b/config/GMPE01_00/rels/m433Dll/symbols.txt index 528cefb2..df299b4f 100644 --- a/config/GMPE01_00/rels/m433Dll/symbols.txt +++ b/config/GMPE01_00/rels/m433Dll/symbols.txt @@ -119,287 +119,287 @@ fn_1_11098 = .text:0x00011098; // type:function size:0x98 fn_1_11130 = .text:0x00011130; // type:function size:0x1B0 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x10 data:4byte -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0xC0 -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x10 data:4byte -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x10 data:4byte -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x10 data:4byte -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x10 data:4byte -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 data:double -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 data:double -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x10 data:4byte -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 data:double -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 data:double -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x18 data:4byte -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x18 data:4byte -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x8 data:double -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x8 data:double -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:4byte -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x8 data:double -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 data:double -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float -lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x24 data:4byte -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:4byte -lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 data:4byte -lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x8 data:4byte -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float -lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float -lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float -lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float -lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float -lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float -lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x8 data:4byte -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:double -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:4byte -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float -lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 data:double -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 data:float -lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 data:float -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float -lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float -lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:double -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x4 data:float -lbl_1_rodata_604 = .rodata:0x00000604; // type:object size:0x4 data:float -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 data:float -lbl_1_rodata_60C = .rodata:0x0000060C; // type:object size:0x4 data:float -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 data:float -lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 data:float -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float -lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 data:float -lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 data:float -lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 data:float -lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 data:float -lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 data:float -lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 data:float -lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float -lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 data:float -lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 data:float -lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float -lbl_1_rodata_644 = .rodata:0x00000644; // type:object size:0x4 data:float -lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x4 data:float -lbl_1_rodata_64C = .rodata:0x0000064C; // type:object size:0x4 data:float -lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 data:float -lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 data:float -lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 data:float -lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 data:float -lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 data:float -lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 data:float -lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x4 data:float -lbl_1_rodata_66C = .rodata:0x0000066C; // type:object size:0x4 data:float -lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x4 data:float -lbl_1_rodata_674 = .rodata:0x00000674; // type:object size:0x4 data:float -lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 data:float -lbl_1_rodata_67C = .rodata:0x0000067C; // type:object size:0x4 data:float -lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x4 data:float -lbl_1_rodata_684 = .rodata:0x00000684; // type:object size:0x4 data:float -lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x4 data:float -lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 data:double -lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 data:float -lbl_1_rodata_69C = .rodata:0x0000069C; // type:object size:0x4 data:float -lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x4 data:float -lbl_1_rodata_6A4 = .rodata:0x000006A4; // type:object size:0x4 data:float -lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0xC0 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x8 scope:local data:double +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x8 scope:local data:double +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x4 scope:local data:float +lbl_1_rodata_604 = .rodata:0x00000604; // type:object size:0x4 scope:local data:float +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60C = .rodata:0x0000060C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 scope:local data:float +lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 scope:local data:float +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x4 scope:local data:float +lbl_1_rodata_624 = .rodata:0x00000624; // type:object size:0x4 scope:local data:float +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 scope:local data:float +lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 scope:local data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float +lbl_1_rodata_644 = .rodata:0x00000644; // type:object size:0x4 scope:local data:float +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64C = .rodata:0x0000064C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x4 scope:local data:float +lbl_1_rodata_654 = .rodata:0x00000654; // type:object size:0x4 scope:local data:float +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 scope:local data:float +lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 scope:local data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 scope:local data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x4 scope:local data:float +lbl_1_rodata_66C = .rodata:0x0000066C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x4 scope:local data:float +lbl_1_rodata_674 = .rodata:0x00000674; // type:object size:0x4 scope:local data:float +lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x4 scope:local data:float +lbl_1_rodata_67C = .rodata:0x0000067C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x4 scope:local data:float +lbl_1_rodata_684 = .rodata:0x00000684; // type:object size:0x4 scope:local data:float +lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x4 scope:local data:float +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x8 scope:local data:double +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 scope:local data:float +lbl_1_rodata_69C = .rodata:0x0000069C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A4 = .rodata:0x000006A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0xC lbl_1_data_C = .data:0x0000000C; // type:object size:0xC lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float @@ -421,26 +421,26 @@ lbl_1_data_1C4 = .data:0x000001C4; // type:object size:0x44 lbl_1_data_208 = .data:0x00000208; // type:object size:0x44 lbl_1_data_24C = .data:0x0000024C; // type:object size:0x1A4 lbl_1_data_3F0 = .data:0x000003F0; // type:object size:0x38 -lbl_1_data_428 = .data:0x00000428; // type:object size:0x9 data:string -lbl_1_data_431 = .data:0x00000431; // type:object size:0x9 data:string -lbl_1_data_43A = .data:0x0000043A; // type:object size:0xB data:string -lbl_1_data_445 = .data:0x00000445; // type:object size:0xB data:string +lbl_1_data_428 = .data:0x00000428; // type:object size:0x9 scope:local data:string +lbl_1_data_431 = .data:0x00000431; // type:object size:0x9 scope:local data:string +lbl_1_data_43A = .data:0x0000043A; // type:object size:0xB scope:local data:string +lbl_1_data_445 = .data:0x00000445; // type:object size:0xB scope:local data:string lbl_1_data_450 = .data:0x00000450; // type:object size:0x18 lbl_1_data_468 = .data:0x00000468; // type:object size:0x24 lbl_1_data_48C = .data:0x0000048C; // type:object size:0x48 lbl_1_data_4D4 = .data:0x000004D4; // type:object size:0x6C lbl_1_data_540 = .data:0x00000540; // type:object size:0x24 -lbl_1_data_564 = .data:0x00000564; // type:object size:0x2 data:string -lbl_1_data_566 = .data:0x00000566; // type:object size:0x15 data:string -lbl_1_data_57B = .data:0x0000057B; // type:object size:0x15 data:string -lbl_1_data_590 = .data:0x00000590; // type:object size:0x15 data:string -lbl_1_data_5A5 = .data:0x000005A5; // type:object size:0x15 data:string -lbl_1_data_5BA = .data:0x000005BA; // type:object size:0x18 data:string -lbl_1_data_5D2 = .data:0x000005D2; // type:object size:0x18 data:string -lbl_1_data_5EA = .data:0x000005EA; // type:object size:0x15 data:string -lbl_1_data_5FF = .data:0x000005FF; // type:object size:0x15 data:string -lbl_1_data_614 = .data:0x00000614; // type:object size:0x15 data:string -lbl_1_data_629 = .data:0x00000629; // type:object size:0x15 data:string +lbl_1_data_564 = .data:0x00000564; // type:object size:0x2 scope:local data:string +lbl_1_data_566 = .data:0x00000566; // type:object size:0x15 scope:local data:string +lbl_1_data_57B = .data:0x0000057B; // type:object size:0x15 scope:local data:string +lbl_1_data_590 = .data:0x00000590; // type:object size:0x15 scope:local data:string +lbl_1_data_5A5 = .data:0x000005A5; // type:object size:0x15 scope:local data:string +lbl_1_data_5BA = .data:0x000005BA; // type:object size:0x18 scope:local data:string +lbl_1_data_5D2 = .data:0x000005D2; // type:object size:0x18 scope:local data:string +lbl_1_data_5EA = .data:0x000005EA; // type:object size:0x15 scope:local data:string +lbl_1_data_5FF = .data:0x000005FF; // type:object size:0x15 scope:local data:string +lbl_1_data_614 = .data:0x00000614; // type:object size:0x15 scope:local data:string +lbl_1_data_629 = .data:0x00000629; // type:object size:0x15 scope:local data:string lbl_1_data_63E = .data:0x0000063E; // type:object size:0x16 jumptable_1_data_654 = .data:0x00000654; // type:object size:0x20 scope:local lbl_1_data_674 = .data:0x00000674; // type:object size:0xC @@ -458,10 +458,13 @@ lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte -lbl_1_bss_16 = .bss:0x00000016; // type:object size:0xA data:2byte +lbl_1_bss_16 = .bss:0x00000016; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:2byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0xC data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:4byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x6F0 lbl_1_bss_728 = .bss:0x00000728; // type:object size:0x80 diff --git a/configure.py b/configure.py index 73ab159e..545739bb 100644 --- a/configure.py +++ b/configure.py @@ -1108,8 +1108,8 @@ config.libs = [ Rel( "m433Dll", # Beach Volley Folly objects={ - Object(NonMatching, "REL/m433Dll/main.c"), - Object(NonMatching, "REL/m433Dll/map.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m433Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m433Dll/map.c"), Object(NonMatching, "REL/m433Dll/player.c"), }, ), diff --git a/include/REL/m433Dll.h b/include/REL/m433Dll.h new file mode 100644 index 00000000..e2a18da8 --- /dev/null +++ b/include/REL/m433Dll.h @@ -0,0 +1,43 @@ +#ifndef M4303LL_H +#define M4303LL_H + +#include "game/object.h" + +typedef struct M433DllWork { + u32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + s32 unk_14; + s32 unk_18; + u32 unk_1C; + u32 unk_20; + s32 unk_24; + u32 unk_28; + s32 unk_2C[2]; + u32 unk_34; + s32 unk_38; + s32 unk_3C; +} M433DllWork; /* size = 0x40 */ + +void fn_1_584(omObjData *object); +void fn_1_618(omObjData *object); +s32 fn_1_216C(void); +s32 fn_1_2184(void); +void fn_1_219C(s32 arg0, s32 arg1, s32 arg2); +void fn_1_21E4(s32 arg0); +void fn_1_2214(s32 arg0); +s32 fn_1_2244(void); +float fn_1_26C4(float arg8, float arg9, float argA); + +void fn_1_2894(Process *process); +void fn_1_2984(void); +omObjFunc fn_1_29A4(Process *process, omObjData *object); +void fn_1_58D8(s32); + +void fn_1_5904(Process *process); +void fn_1_5B74(void); +s32 fn_1_10FA4(s32 arg0); + +#endif diff --git a/src/REL/m433Dll/main.c b/src/REL/m433Dll/main.c new file mode 100644 index 00000000..6e8975db --- /dev/null +++ b/src/REL/m433Dll/main.c @@ -0,0 +1,476 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m433Dll.h" + +void fn_1_4C0(omObjData *object); +void fn_1_618(omObjData *object); +void fn_1_798(omObjData *object); +void fn_1_AD4(omObjData *object); +void fn_1_E2C(omObjData *object); +void fn_1_1040(omObjData *object); +void fn_1_13FC(omObjData *object); +void fn_1_16D0(omObjData *object); +omObjFunc fn_1_1A3C(Process *process, omObjData *object); +void fn_1_1A48(omObjData *object); +float fn_1_26C4(float arg8, float arg9, float argA); + +Vec lbl_1_data_0 = { 100.0f, 800.0f, -100.0f }; +Vec lbl_1_data_C = { 0.3f, -0.8f, 0.3f }; +Vec lbl_1_data_18 = { 10.0f, 45.0f, 3500.0f }; +GXColor lbl_1_data_24 = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_28 = { 50.0f, 150000.0f, 50.0f }; +Vec lbl_1_data_34 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_40 = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_4C = { 0.0f, 170.0f, 0.0f }; +Vec lbl_1_data_58 = { 0.0f, -22.0f, 850.0f }; + +char lbl_1_bss_34[0x4]; +char lbl_1_bss_30[0x4]; +char lbl_1_bss_2C[0x4]; +Process *lbl_1_bss_28; +omObjData *lbl_1_bss_24; +omObjData *lbl_1_bss_20; +char lbl_1_bss_18[8]; +s16 lbl_1_bss_16; +s16 lbl_1_bss_14; +s16 lbl_1_bss_12; +s16 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +void ObjectSetup(void) +{ + Vec sp14; + Vec sp8; + Process *var_r31; + LightData *var_r30; + + HuAudSndGrpSet(0x3A); + lbl_1_bss_C = lbl_1_bss_8 = -1; + lbl_1_bss_4 = lbl_1_bss_0 = -1; + lbl_1_data_28.x = 200.0f; + lbl_1_data_28.y = 1200.0f; + lbl_1_data_28.z = 160.0f; + lbl_1_data_34.x = 0.0f; + lbl_1_data_34.y = 1.0f; + lbl_1_data_34.z = 0.0f; + lbl_1_data_40.x = 0.0f; + lbl_1_data_40.y = 0.0f; + lbl_1_data_40.z = 0.0f; + Hu3DShadowCreate(30.0f, 20.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&lbl_1_data_28, &lbl_1_data_34, &lbl_1_data_40); + lbl_1_bss_16 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24); + Hu3DGLightInfinitytSet(lbl_1_bss_16); + var_r30 = &Hu3DGlobalLight[lbl_1_bss_16]; + var_r30->unk_00 |= 0x8000; + lbl_1_data_18.x = 55.74f; + lbl_1_data_18.y = 0.0f; + lbl_1_data_18.z = 3500.0f; + sp14.x = sp14.y = sp14.z = 0.0f; + sp8.x = sp8.z = 0.0f; + sp8.y = lbl_1_data_18.z; + sp8.x = 0.0f; + sp8.y = 3480.0002f; + sp8.z = 900.00006f; + Hu3DGLightPosAimSetV(lbl_1_bss_16, &sp8, &sp14); + Hu3DShadowPosSet(&sp8, &lbl_1_data_34, &sp14); + lbl_1_bss_14 = lbl_1_bss_12 = lbl_1_bss_10 = -1; + var_r31 = omInitObjMan(0x32, 0x2000); + lbl_1_bss_28 = var_r31; + omGameSysInit(var_r31); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, -1.0f, 10.0f, 10000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + lbl_1_bss_20 = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_24 = omAddObjEx(var_r31, 0xA, 0, 0, -1, fn_1_4C0); + fn_1_2894(var_r31); + fn_1_5904(var_r31); +} + +void fn_1_4C0(omObjData *object) +{ + M433DllWork *work; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433DllWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M433DllWork)); + work->unk_00 = 0; + work->unk_04 = 0; + work->unk_0C = 0; + work->unk_10 = 0; + work->unk_14 = 0; + work->unk_18 = 0; + work->unk_24 = 0; + work->unk_28 = 0; + work->unk_08 = 0; + work->unk_34 = 2; + work->unk_38 = 0; + work->unk_3C = 0; + object->func = fn_1_798; +} + +void fn_1_584(omObjData *object) +{ + M433DllWork *work = object->data; + work->unk_04++; + work->unk_10++; + work->unk_18++; + work->unk_28++; + if ((omSysExitReq != 0) && (work->unk_00 != 5)) { + work->unk_00 = 4; + fn_1_618(object); + } +} + +void fn_1_618(omObjData *object) +{ + M433DllWork *work = object->data; + if (work->unk_08 == 0) { + switch (work->unk_00) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + Hu3DCameraPerspectiveSet(1, 41.5f, 10.0f, 10000.0f, 1.2f); + lbl_1_bss_C = HuAudFXPlay(0x6AC); + work->unk_00 = 1; + work->unk_10 = 0; + object->func = fn_1_29A4(lbl_1_bss_28, object); + break; + case 1: + work->unk_00 = 2; + work->unk_18 = 0; + object->func = fn_1_1040; + break; + case 2: + work->unk_00 = 3; + work->unk_28 = 0; + object->func = fn_1_1A3C(lbl_1_bss_28, object); + break; + case 3: + case 4: + work->unk_08 = 1; + work->unk_00 = 5; + object->func = fn_1_AD4; + break; + case 5: + default: + work->unk_00 = 5; + object->func = fn_1_E2C; + break; + } + work->unk_04 = 0; + } +} + +void fn_1_798(omObjData *object) +{ + fn_1_584(object); + fn_1_618(object); +} + +void fn_1_AD4(omObjData *object) +{ + M433DllWork *work = object->data; + + fn_1_584(object); + if (WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + work->unk_08 = 0; + fn_1_618(object); + } +} + +void fn_1_E2C(omObjData *object) +{ + fn_1_584(object); + if (WipeStatGet() == 0) { + fn_1_5B74(); + fn_1_2984(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_1040(omObjData *object) +{ + M433DllWork *work = object->data; + fn_1_584(object); + switch (work->unk_14) { + case 0: + HuAudFXFadeOut(lbl_1_bss_C, 0x1E); + work->unk_1C = 0x1E; + work->unk_20 = 0x3C; + lbl_1_bss_14 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_14, 320.0f, 240.0f); + Center.x = 0.0f; + Center.y = 200.0f; + Center.z = 0.0f; + CRot.x = -30.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + CZoom = 1900.0f; + work->unk_14 = 1; + work->unk_18 = 0; + break; + case 1: + if ((lbl_1_bss_4 < 0) && ((MGSeqStatGet(lbl_1_bss_14) & 0x10) != 0)) { + lbl_1_bss_4 = HuAudSeqPlay(0x47); + } + if ((MGSeqStatGet(lbl_1_bss_14) == 0) && (work->unk_08 == 0)) { + work->unk_14 = 2; + work->unk_18 = 0; + object->func = fn_1_13FC; + } + break; + } +} + +void fn_1_13FC(omObjData *object) +{ + + M433DllWork *work = object->data; + s32 var_r27 = 0; + fn_1_584(object); + work->unk_20++; + if (--work->unk_20 == 0) { + work->unk_20 = 0x3C; + work->unk_1C--; + if (work->unk_1C == 0) { + var_r27 = 1; + } + } + if (work->unk_34 != 2) { + var_r27 = 1; + } + if (var_r27 != 0) { + lbl_1_bss_12 = MGSeqCreate(3, 1); + MGSeqPosSet(lbl_1_bss_12, 320.0f, 240.0f); + HuAudSeqFadeOut(lbl_1_bss_4, 0x64); + work->unk_14 = 3; + work->unk_18 = 0; + if (work->unk_08 == 0) { + object->func = fn_1_16D0; + } + lbl_1_bss_8 = HuAudFXPlay(0x6AC); + } +} + +void fn_1_16D0(omObjData *object) +{ + M433DllWork *work = object->data; + fn_1_584(object); + if ((MGSeqStatGet(lbl_1_bss_12) == 0) && ((work->unk_38 + 0xFFFF0000) == 0x1111)) { + work->unk_14 = 4; + work->unk_18 = 0; + fn_1_618(object); + } +} + +omObjFunc fn_1_1A3C(Process *process, omObjData *object) +{ + return fn_1_1A48; +} + +static inline s32 fn_1_1A48_inline(void) +{ + return GWSystem.mg_type; +} + +void fn_1_1A48(omObjData *object) +{ + M433DllWork *work = object->data; + float var_f31 = lbl_1_data_58.y; + if (fn_1_10FA4(1) != 0) { + var_f31 *= -1.0f; + } + Center.x += 0.15f * (lbl_1_data_4C.x - Center.x); + Center.y += 0.15f * (lbl_1_data_4C.y - Center.y); + Center.z += 0.15f * (lbl_1_data_4C.z - Center.z); + CRot.x = fn_1_26C4(CRot.x, lbl_1_data_58.x, 0.15f); + CRot.y = fn_1_26C4(CRot.y, var_f31, 0.15f); + CZoom += 0.15f * (lbl_1_data_58.z - CZoom); + fn_1_584(object); + work->unk_24 = 1; + if (lbl_1_bss_0 < 0) { + lbl_1_bss_0 = HuAudSStreamPlay(1); + } + if (lbl_1_bss_10 < 0) { + s32 spC[4] = { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }; + s32 var_r26; + s32 var_r25 = 0; + s32 var_r24; + for (var_r26 = 0; var_r26 < 2; var_r26++) { + if (work->unk_2C[var_r26] >= 0) { + spC[var_r25++] = GWPlayerCfg[work->unk_2C[var_r26]].character; + GWPlayerCoinWinAdd(work->unk_2C[var_r26], 10); + } + } + if (spC[0] == -1) { + lbl_1_bss_10 = MGSeqCreate(5, 2); + return; + } + var_r24 = 3; + if (fn_1_1A48_inline() == 0) { + if (fn_1_10FA4(0) != 0) { + var_r24 = 5; + } + } + lbl_1_bss_10 = MGSeqCreate(5, var_r24, spC[0], spC[1], spC[2], spC[3]); + return; + } + if ((MGSeqStatGet(lbl_1_bss_10) == 0) && (work->unk_28 >= 210.0f)) { + HuAudFXFadeOut(lbl_1_bss_8, 0x1E); + work->unk_24 = 2; + fn_1_618(object); + } +} + +s32 fn_1_213C(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_00; +} + +s32 fn_1_2154(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_0C; +} + +s32 fn_1_216C(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_14; +} + +s32 fn_1_2184(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_24; +} + +void fn_1_219C(s32 arg0, s32 arg1, s32 arg2) +{ + M433DllWork *work = lbl_1_bss_24->data; + work->unk_34 = arg0; + work->unk_2C[0] = arg1; + work->unk_2C[1] = arg2; +} + +s32 fn_1_21CC(void) +{ + return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_34; +} + +void fn_1_21E4(s32 arg0) +{ + OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_38 |= (1 << ((arg0 & 7) * 4)); +} + +void fn_1_2214(s32 arg0) +{ + OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_3C |= (1 << ((arg0 & 3) * 4)); +} + +s32 fn_1_2244(void) +{ + return MGSeqStatGet(lbl_1_bss_12) == 0; +} + +void fn_1_227C(Vec *arg0, Vec *arg1) +{ + Vec sp10; + + PSVECSubtract(arg1, arg0, &sp10); + Center = *arg1; + CRot.x = atan2d(sp10.y, sqrtf((sp10.x * sp10.x) + (sp10.z * sp10.z))); + CRot.y = atan2d(-sp10.x, -sp10.z); + CRot.z = 0.0f; + CZoom = PSVECMag(&sp10); +} + +void fn_1_2484(float arg8, float arg9, float argA, float argB, float argC, float argD) +{ + Vec sp3C; + Vec sp30; + + sp3C.x = arg8; + sp3C.y = arg9; + sp3C.z = argA; + sp30.x = argB; + sp30.y = argC; + sp30.z = argD; + fn_1_227C(&sp3C, &sp30); +} + +float fn_1_26C4(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f29; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + var_f29 = fmod(arg8 + (argA * var_f31), 360.0); + var_f31 = var_f29; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +float fn_1_27E0(float arg8, float arg9) +{ + float var_f31; + float var_f30; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} + +s32 lbl_1_data_64[] = { + 0x00000000, + 0x00000000, + 0x45ABE000, + 0xC576E000, + 0x00000000, + 0xBF333333, + 0x3F19999A, + 0xFFFFFFFF, + 0x00000000, + 0x45ABE000, + 0xC576E000, + 0x00000000, + 0x3F800000, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, +}; diff --git a/src/REL/m433Dll/map.c b/src/REL/m433Dll/map.c new file mode 100644 index 00000000..57695003 --- /dev/null +++ b/src/REL/m433Dll/map.c @@ -0,0 +1,827 @@ +#include "dolphin/mtx.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m433Dll.h" + +typedef struct M433DllBss38Struct { + /* 0x00 */ u8 unk_00; + /* 0x01 */ char unk01[2]; + /* 0x03 */ u8 unk_03; + /* 0x04 */ u8 unk_04; + /* 0x05 */ char unk05[3]; + /* 0x08 */ float unk_08; + /* 0x0C */ Vec unk_0C; + /* 0x18 */ Vec unk_18; + /* 0x24 */ Vec unk_24; + /* 0x30 */ Vec unk_30; + /* 0x3C */ char unk3C[0xC]; + /* 0x48 */ Vec unk_48; + union { + struct { + /* 0x54 */ float unk_54; + /* 0x58 */ float unk_58; + char unk5C[4]; + /* 0x60 */ float unk_60; + }; + struct { + /* 0x54 */ s16 unk_54_s16[0x20]; + }; + }; +} M433DllBss38Struct; /* size = 0x94 */ + +typedef struct M433DllMapWork { + char unk00; + u8 unk_01; + u8 unk_02; + char unk03; + u8 unk_04; + char unk08[4]; + Vec unk_0C; + Vec unk_18; + char unk24[0xC]; + Vec unk_30; + Vec unk_3C; + char unk48[0xC]; + s16 unk_54; + char unk56[0x3E]; +} M433DllMapWork; /* size 0x94 */ + +typedef struct M433DllMapWork2 { + u8 unk_00; + Vec unk_04; + Vec unk_10; + Vec unk_1C; + Vec unk_28; + Vec unk_34; + Vec unk_40; + char unk4C[0xE4]; + float unk_130; + float unk_134; + float unk_138; + char unk13C[4]; + float unk_140; + float unk_144; + float unk_148; + float unk_14C[3]; + float unk_158[3]; + float unk_164[3]; + float unk_170[3]; + float unk_17C[3]; + u16 unk_188[3]; +} M433DllMapWork2; /* size 0x190 */ + +typedef struct M433DllUnkStruct { + s16 unk_00; + s16 unk_02; + s16 unk_04; + char unk06[0x42]; +} M433DllUnkStruct; /* size 0x48 */ + +void fn_1_2AC4(omObjData *object); +void fn_1_2CE0(omObjData *object); +void fn_1_32CC(omObjData *object); +void fn_1_39AC(omObjData *object); +void fn_1_3C1C(omObjData *object); +s16 fn_1_3E5C(s32 arg0, s16 arg1, ParticleHook arg2); +void fn_1_3F14(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_4A94(omObjData *object); +void fn_1_4BA0(omObjData *object); +void fn_1_4ED4(float arg8, Vec *arg0, Vec *arg1, float arg9); +void fn_1_5068(void); +void *fn_1_50A8(s32 arg0); +void fn_1_51DC(void); +s32 fn_1_5260(void); +float fn_1_52B4(float arg8, float arg9, float argA); +void fn_1_541C(Mtx arg0, float arg8, float arg9, float argA); +void fn_1_553C(Mtx arg0, Vec *arg1); +extern s32 lbl_1_bss_34; + +omObjData *lbl_1_bss_7B0; +omObjData *lbl_1_bss_7AC; +omObjData *lbl_1_bss_7A8; +void *lbl_1_bss_728[0x20]; +M433DllBss38Struct lbl_1_bss_38[0xC]; + +void fn_1_2894(Process *process) +{ + s32 var_r31; + s32 var_r29; + + lbl_1_bss_34 = 1; + lbl_1_bss_7AC = omAddObjEx(process, 0x1E, 8, 0, -1, fn_1_2CE0); + lbl_1_bss_7A8 = omAddObjEx(process, 0x1F, 3, 6, -1, fn_1_39AC); + lbl_1_bss_7B0 = omAddObjEx(process, 0x1D, 1, 0, -1, fn_1_4A94); + var_r29 = frand() & 0x1F; + for (var_r31 = 0; var_r31 < var_r29; var_r31++) { + fn_1_5260(); + } + fn_1_5068(); +} + +void fn_1_2984(void) +{ + fn_1_51DC(); +} + +omObjFunc fn_1_29A4(Process *process, omObjData *object) +{ + M433DllWork *work = object->data; + CRot.x = 54.3f; + CRot.y = 22.3f; + CRot.z = 0.0f; + Center.x = -130.1f; + Center.y = 885.0f; + Center.z = -900.3f; + CZoom = 1100.0f; + fn_1_4ED4(0.0f, &Center, &CRot, CZoom); + object->work[0] = 0xB4; + work->unk_0C = 1; + return fn_1_2AC4; +} + +void fn_1_2AC4(omObjData *object) +{ + Vec sp14; + Vec sp8; + float var_f31; + M433DllWork *work = object->data; + + fn_1_584(object); + if (object->work[0] == 120.0f) { + sp14.x = 0.0f; + sp14.y = -10.0f; + sp14.z = -207.5f; + sp8.x = -26.5f; + sp8.y = 0.0f; + sp8.z = 0.0f; + var_f31 = 1400.0f; + fn_1_4ED4(90.0f, &sp14, &sp8, var_f31); + } + if (object->work[0] == 48.0f) { + sp14.x = 0.0f; + sp14.y = 200.0f; + sp14.z = 0.0f; + sp8.x = -30.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + var_f31 = 1900.0f; + fn_1_4ED4(object->work[0], &sp14, &sp8, var_f31); + } + if (--object->work[0] == 0) { + work->unk_0C = 2; + fn_1_618(object); + lbl_1_bss_7B0->func = NULL; + } +} + +void fn_1_2CE0(omObjData *object) +{ + Vec sp8[0x10] = { + { 475.0f, 800.0f, -1400.0f }, + { -300.0f, 700.0f, -1400.0f }, + { 300.0f, 875.0f, -1450.0f }, + { -575.0f, 850.0f, -1550.0f }, + { 350.0f, 750.0f, -1500.0f }, + { -450.0f, 775.0f, -1550.0f }, + { 325.0f, 725.0f, -1450.0f }, + { -525.0f, 725.0f, -1500.0f }, + { 575.0f, 850.0f, -1550.0f }, + { -350.0f, 750.0f, -1500.0f }, + { 450.0f, 775.0f, -1550.0f }, + { -325.0f, 725.0f, -1450.0f }, + { 525.0f, 725.0f, -1500.0f }, + { -475.0f, 800.0f, -1400.0f }, + { 300.0f, 700.0f, -1400.0f }, + { -300.0f, 875.0f, -1450.0f }, + }; + M433DllBss38Struct *var_r31; + s32 var_r30; + M433DllUnkStruct *var_r28; + s32 i; + s32 var_r26; + + var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0xCD)); + object->model[0] = var_r30; + var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0xCE)); + object->model[1] = var_r30; + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(var_r30, 0.5f); + var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0xCF)); + object->model[2] = var_r30; + Hu3DModelAttrSet(var_r30, HU3D_MOTATTR_LOOP); + var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M425, 0x05), 1, fn_1_3F14); + object->model[3] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28->unk_02 = 0; + HuDataDirClose(DATA_MAKE_NUM(DATADIR_M425, 0x05)); + var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M433, 0xD3), 0xA, fn_1_3F14); + object->model[4] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28->unk_02 = 1; + var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M433, 0xD2), 4, fn_1_3F14); + object->model[5] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28->unk_02 = 2; + var_r30 = fn_1_3E5C(DATA_MAKE_NUM(DATADIR_M433, 0xD1), 6, fn_1_3F14); + object->model[6] = var_r30; + Hu3DParticleBlendModeSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 6); + var_r28 = ((ParticleData *)Hu3DData[var_r30].unk_120)->unk_1C; + var_r28->unk_02 = 3; + for (i = 0; i < 0xC; i++) { + var_r31 = &lbl_1_bss_38[i]; + var_r30 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M425, 0x02)); + var_r31->unk_00 = var_r30; + var_r31->unk_0C.x = sp8[i].x; + var_r31->unk_0C.y = sp8[i].y - 300.0f; + var_r31->unk_0C.z = 800.0f + sp8[i].z; + Hu3DModelPosSet(var_r30, var_r31->unk_0C.x, var_r31->unk_0C.y, var_r31->unk_0C.z); + Hu3DMotionSpeedSet(var_r30, 6.0f); + var_r31->unk_03 = var_r31->unk_04 = 0; + var_r31->unk_18.x = var_r31->unk_18.y = var_r31->unk_18.z = 0.0f; + var_r31->unk_24.x = var_r31->unk_24.y = var_r31->unk_24.z = 1.0f; + var_r31->unk_48.x = var_r31->unk_48.y = var_r31->unk_48.z = 0.0f; + var_r31->unk_30.x = var_r31->unk_0C.x; + var_r31->unk_30.y = var_r31->unk_0C.y; + var_r31->unk_30.z = var_r31->unk_0C.z; + if ((i & 1) != 0) { + var_r31->unk_18.y = 90.0f; + var_r31->unk_0C.y += 650.0; + var_r31->unk_0C.x -= 1000.0 + (200.0f * ((fn_1_5260() - 0x8000) / 32768.0f)); + } + else { + var_r31->unk_18.y = 90.0f; + var_r31->unk_0C.x += 200.0f * ((fn_1_5260() - 0x8000) / 32768.0f); + } + var_r31->unk_18.y += 10.0f * ((fn_1_5260() - 0x8000) / 32768.0f); + var_r31->unk_0C.z = var_r31->unk_0C.z - 400.0; + var_r31->unk_08 = 100.0f * (0.1f + (0.02f * (fn_1_5260() / 65536.0f))); + for (var_r26 = 0; var_r26 < 0x20; var_r26++) { + var_r31->unk_54_s16[var_r26] = 0; + } + var_r31->unk_60 = var_r31->unk_08; + } + HuDataDirClose(DATA_MAKE_NUM(DATADIR_M425, 0x02)); + HuAudFXPlayVol(0x6A3, 0x41); + object->func = fn_1_32CC; +} + +void fn_1_32CC(omObjData *object) +{ + Mtx sp14; + Vec sp8; + M433DllBss38Struct *var_r31; + s32 i; + + for (i = 0; i < 0xC; i++) { + var_r31 = &lbl_1_bss_38[i]; + switch (var_r31->unk_04) { + case 0: + if (var_r31->unk_08 < var_r31->unk_60) { + var_r31->unk_08 += 0.4f; + } + if ((s32)(64.0f * (fn_1_5260() / 65536.0f)) == 0) { + Hu3DMotionTimeSet(var_r31->unk_00, 0.0f); + } + if (Hu3DMotionEndCheck(var_r31->unk_00) != 0) { + var_r31->unk_48.y = -3.8933334f; + } + else { + var_r31->unk_48.y = -1.2166667f; + } + var_r31->unk_54 += 0.1f * ((fn_1_5260() - 0x8000) / 32768.0f); + var_r31->unk_58 += var_r31->unk_54; + if (var_r31->unk_58 > 180.0f) { + var_r31->unk_58 -= 180.0f; + } + if (var_r31->unk_58 < -180.0f) { + var_r31->unk_58 += 180.0f; + } + var_r31->unk_18.x = -30.0 * sind(var_r31->unk_58) * sind(var_r31->unk_18.y); + var_r31->unk_18.z = -30.0 * sind(var_r31->unk_58) * cosd(var_r31->unk_18.y); + if (var_r31->unk_0C.y <= 500.0f || fabs(var_r31->unk_0C.x) > 1600.0) { + var_r31->unk_48.y = 0.0f; + var_r31->unk_54_s16[6] = 0xB4; + var_r31->unk_08 *= 0.75f; + var_r31->unk_04++; + } + break; + case 1: + var_r31->unk_18.y += 1.0f; + var_r31->unk_18.x = 0.0f; + var_r31->unk_18.z = 60.0 * sind(var_r31->unk_54_s16[6]) * cosd(var_r31->unk_18.y); + if (--var_r31->unk_54_s16[6] == 0) { + Hu3DModelAttrSet(var_r31->unk_00, HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(var_r31->unk_00, 6.0f); + var_r31->unk_48.y = 4.866667f; + var_r31->unk_04++; + } + break; + case 2: + if (var_r31->unk_08 > 4.0f) { + var_r31->unk_08 -= 0.1f; + var_r31->unk_48.y += 0.73f; + } + var_r31->unk_48.y += -0.5475f; + if (var_r31->unk_48.y < 0.0f) { + Hu3DModelAttrReset(var_r31->unk_00, HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(var_r31->unk_00, 2.0f); + var_r31->unk_60 = 100.0f * (0.1f + (0.02f * (fn_1_5260() / 65536.0f))); + var_r31->unk_04 = 0; + } + break; + } + var_r31->unk_48.x = var_r31->unk_08 * sind(var_r31->unk_18.y); + var_r31->unk_48.z = var_r31->unk_08 * cosd(var_r31->unk_18.y); + var_r31->unk_0C.x += var_r31->unk_48.x; + var_r31->unk_0C.y += var_r31->unk_48.y; + var_r31->unk_0C.z += var_r31->unk_48.z; + if (var_r31->unk_0C.z >= -500.0f) { + var_r31->unk_0C.z = -500.0f; + } + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_0C.x, var_r31->unk_0C.y, var_r31->unk_0C.z); + fn_1_541C(sp14, var_r31->unk_18.x, -var_r31->unk_18.y, var_r31->unk_18.z); + fn_1_553C(sp14, &sp8); + Hu3DModelRotSetV(var_r31->unk_00, &sp8); + } +} + +void fn_1_39AC(omObjData *object) +{ + s32 var_r29; + s32 var_r28; + + s32 sp18[4] = { 0x004000D4, 0x004000D5, 0x004000D6, 0x004000D7 }; + s32 sp8[4] = { 0x0040000C, 0x00400010, 0x0040000F, 0x0040000E }; + M433DllMapWork *work = fn_1_50A8(sizeof(M433DllMapWork)); + object->data = work; + if (lbl_1_bss_34 != 0) { + var_r28 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0x0B)); + } + else { + var_r28 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0x62)); + } + object->model[0] = var_r28; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (lbl_1_bss_34 != 0) { + object->motion[var_r29] = Hu3DJointMotionFile(var_r28, sp8[var_r29]); + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(var_r28, sp18[var_r29]); + } + } + Hu3DMotionSet(var_r28, object->motion[0]); + Hu3DModelAttrSet(var_r28, HU3D_MOTATTR_LOOP); + work->unk_01 = work->unk_02 = 0; + work->unk_04 = 0; + work->unk_54 = 0; + work->unk_0C.x = 0.0f; + work->unk_0C.y = 180.0f; + work->unk_0C.z = -490.0f; + work->unk_30 = work->unk_0C; + work->unk_18.x = work->unk_18.y = work->unk_18.z = 0.0f; + work->unk_3C = work->unk_18; + omSetTra(object, work->unk_0C.x, work->unk_0C.y, work->unk_0C.z); + omSetRot(object, work->unk_18.x, work->unk_18.y, work->unk_18.z); + object->func = fn_1_3C1C; +} + +void fn_1_3C1C(omObjData *object) +{ + M433DllMapWork *work; + s32 var_r29; + s32 var_r28; + + work = object->data; + var_r28 = object->model[0]; + switch (work->unk_04) { + case 0: + work->unk_01 = 0; + var_r29 = 0x40000001; + break; + case 1: + work->unk_3C.y = 0.0f; + work->unk_01 = 1; + var_r29 = 0x40000001; + if (work->unk_54++ >= 0x5A) { + work->unk_54 = 0; + work->unk_04 = 0; + } + break; + case 2: + work->unk_3C.y = 0.0f; + work->unk_01 = 2; + var_r29 = 0; + if (Hu3DMotionEndCheck(var_r28) != 0) { + work->unk_04 = 0; + } + break; + case 3: + work->unk_3C.y = 0.0f; + work->unk_01 = 3; + var_r29 = 0x40000001; + break; + case 4: + work->unk_3C.y = 0.0f; + work->unk_04 = 0; + break; + case 5: + work->unk_3C.y = 50.0f; + work->unk_04 = 0; + break; + case 6: + work->unk_3C.y = -50.0f; + work->unk_04 = 0; + break; + } + if (work->unk_01 != work->unk_02) { + work->unk_02 = work->unk_01; + Hu3DMotionShiftSet(var_r28, object->motion[work->unk_01], 0.0f, 8.0f, var_r29); + switch (work->unk_01) { + case 1: + HuAudFXPlay(0x43); + break; + case 2: + HuAudFXPlay(0x45); + break; + } + } + work->unk_18.y = fn_1_52B4(work->unk_18.y, work->unk_3C.y, 0.9f); + omSetTra(object, work->unk_0C.x, work->unk_0C.y, work->unk_0C.z); + omSetRot(object, work->unk_18.x, work->unk_18.y, work->unk_18.z); +} + +s16 fn_1_3E5C(s32 sp8, s16 spC, ParticleHook sp10) +{ + M433DllUnkStruct *var_r31; + s32 var_r30; + ParticleData *var_r29; + AnimData *var_r28; + + var_r28 = HuSprAnimRead(HuDataReadNum(sp8, MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r28, spC); + Hu3DParticleHookSet(var_r30, sp10); + var_r29 = Hu3DData[var_r30].unk_120; + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433DllUnkStruct), MEMORY_DEFAULT_NUM); + var_r29->unk_1C = var_r31; + var_r31->unk_00 = var_r30; + var_r31->unk_04 = 0; + return var_r30; +} + +void fn_1_3F14(ModelData *model, ParticleData *var_r30, Mtx matrix) +{ + float var_f29; + float var_f26; + float var_f25; + float var_f24; + HsfanimStruct01 *var_r31; + s32 var_r28; + float sp54[4] = { 1000.0f, 200.0f, 600.0f, 1200.0f }; + float sp44[4] = { 1.0f, 0.6f, 0.3f, 0.425f }; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + s16 sp8 = 0; + M433DllUnkStruct *var_r29 = var_r30->unk_1C; + switch (var_r29->unk_04) { + case 0: + var_r30->unk_00 = 0x54; + var_r31 = var_r30->unk_48; + if (var_r29->unk_02 != 0) { + sp14.x = 0.0f; + sp14.y = -4700.0f; + sp14.z = 4450.0f; + var_f29 = 1.0f / sqrtf((sp14.z * sp14.z) + ((sp14.x * sp14.x) + (sp14.y * sp14.y))); + sp14.x *= var_f29; + sp14.y *= var_f29; + sp14.z *= var_f29; + var_f24 = 4000.0f / var_r30->unk_30; + for (var_r28 = 0; var_r28 < var_r30->unk_30; var_r28++, var_r31++) { + var_f26 = 500.0f + ((var_f24 * var_r28) + (0.25f * var_f24 * (fn_1_5260() / 65536.0f))); + var_f25 = var_f26 / 4000.0f; + var_r31->unk14.x = var_f26; + var_r31->unk34.x = var_f26 * sp14.x; + var_r31->unk34.y = 5500.0f + (var_f26 * sp14.y); + var_r31->unk34.z = -3950.0f + (var_f26 * sp14.z); + var_r31->unk2C = (0.3f + (0.7f * (var_f25 * var_f25))) * (sp54[var_r29->unk_02] * (0.7f + (0.3f * (fn_1_5260() / 65536.0f)))); + var_r31->unk40.r = (s32)(160.0f * (fn_1_5260() / 65536.0f)) + 0x20; + var_r31->unk40.g = (s32)(96.0f * (fn_1_5260() / 65536.0f)) + 0x20; + var_r31->unk40.b = (s32)(128.0f * (fn_1_5260() / 65536.0f)) + 0x20; + var_r31->unk40.a = ((1.0 - (0.4 * var_f25)) * (255.0f * sp44[var_r29->unk_02])) - (s32)(16.0f * (fn_1_5260() / 65536.0f)); + } + var_r29->unk_04++; + } + else { + var_r31->unk34.x = 0.0f; + var_r31->unk34.y = 5500.0f; + var_r31->unk34.z = -3950.0f; + var_r31->unk2C = 1000.0f; + } + break; + case 1: + sp38.x = sind(CRot.y) * cosd(CRot.x); + sp38.y = -sind(CRot.x); + sp38.z = cosd(CRot.y) * cosd(CRot.x); + sp2C.x = -(Center.x + (1.25f * (sp38.x * CZoom))); + sp2C.y = 5500.0f - (Center.y + (sp38.y * CZoom)); + sp2C.z = -3950.0f - (Center.z + (1.25f * (sp38.z * CZoom))); + var_f29 = 1.0f / sqrtf((sp2C.z * sp2C.z) + ((sp2C.x * sp2C.x) + (sp2C.y * sp2C.y))); + sp2C.x *= var_f29; + sp2C.y *= var_f29; + sp2C.z *= var_f29; + var_f29 = -((-sp2C.z * -sp38.z) + ((-sp2C.x * -sp38.x) + (-sp2C.y * -sp38.y))); + sp20.x = -sp38.x + (-2.0f * sp2C.x * var_f29); + sp20.y = -sp38.y + (-2.0f * sp2C.y * var_f29); + sp20.z = -sp38.z + (-2.0f * sp2C.z * var_f29); + for (var_r31 = var_r30->unk_48, var_r28 = 0; var_r28 < var_r30->unk_30; var_r28++, var_r31++) { + var_r31->unk34.x = sp20.x * var_r31->unk14.x; + var_r31->unk34.y = 5500.0f + (sp20.y * var_r31->unk14.x); + var_r31->unk34.z = -3950.0f + (sp20.z * var_r31->unk14.x); + if (var_r30->unk_00 < 0xA) { + var_r31->unk40.a *= 0.8f; + } + } + var_r30->unk_00--; + if (var_r30->unk_00 == 0) { + Hu3DModelAttrReset(var_r29->unk_00, HU3D_ATTR_PARTICLE_KILL); + Hu3DModelKill(var_r29->unk_00); + return; + } + break; + } + DCFlushRange(var_r30->unk_48, var_r30->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_4A94(omObjData *var_r30) +{ + M433DllMapWork2 *work = fn_1_50A8(sizeof(M433DllMapWork2)); + var_r30->data = work; + work->unk_148 = work->unk_144 = 0.0f; + work->unk_140 = 1.0f; + work->unk_10.x = work->unk_28.x = -30.0f; + work->unk_10.y = work->unk_28.y = 0.0f; + work->unk_10.z = work->unk_28.z = 0.0f; + work->unk_04.x = work->unk_1C.x = 0.0f; + work->unk_04.y = work->unk_1C.y = 200.0f; + work->unk_04.z = work->unk_1C.z = 0.0f; + work->unk_130 = work->unk_134 = 1900.0f; + work->unk_188[0] = work->unk_188[1] = work->unk_188[2] = 0; + var_r30->func = fn_1_4BA0; +} + +void fn_1_4BA0(omObjData *object) +{ + float var_f31; + s32 var_r30; + M433DllMapWork2 *work = object->data; + if (work->unk_148 > 0.0f) { + work->unk_148 = work->unk_148 - work->unk_140; + var_f31 = (work->unk_144 - work->unk_148) / work->unk_144; + var_f31 = sind((90.0f * var_f31)); + if (work->unk_00 == 0) { + work->unk_04.x = work->unk_1C.x + (var_f31 * (work->unk_34.x - work->unk_1C.x)); + work->unk_04.y = work->unk_1C.y + (var_f31 * (work->unk_34.y - work->unk_1C.y)); + work->unk_04.z = work->unk_1C.z + (var_f31 * (work->unk_34.z - work->unk_1C.z)); + work->unk_10.x = work->unk_28.x + (var_f31 * (work->unk_40.x - work->unk_28.x)); + work->unk_10.y = work->unk_28.y + (var_f31 * (work->unk_40.y - work->unk_28.y)); + work->unk_10.z = work->unk_28.z + (var_f31 * (work->unk_40.z - work->unk_28.z)); + work->unk_130 = work->unk_134 + (var_f31 * (work->unk_138 - work->unk_134)); + } + } + CRot.x = work->unk_10.x; + CRot.y = work->unk_10.y; + CRot.z = work->unk_10.z; + Center.x = work->unk_04.x; + Center.y = work->unk_04.y; + Center.z = work->unk_04.z; + CZoom = work->unk_130; + for (var_r30 = 0; var_r30 < 3; var_r30++) { + work->unk_17C[var_r30] = 0.0f; + if (work->unk_188[var_r30] != 0) { + work->unk_17C[var_r30] = work->unk_14C[var_r30] * sind(work->unk_164[var_r30]); + work->unk_164[var_r30] += work->unk_170[var_r30]; + work->unk_14C[var_r30] *= work->unk_158[var_r30]; + work->unk_188[var_r30] -= 1; + } + } + Center.x += work->unk_17C[0]; + Center.y += work->unk_17C[1]; + Center.z += work->unk_17C[2]; +} + +void fn_1_4ED4(float arg8, Vec *arg0, Vec *arg1, float arg9) +{ + M433DllMapWork2 *work = lbl_1_bss_7B0->data; + work->unk_00 = 0; + work->unk_144 = arg8; + work->unk_148 = arg8; + if (arg8 == 0.0f) { + work->unk_04.x = arg0->x; + work->unk_04.y = arg0->y; + work->unk_04.z = arg0->z; + work->unk_10.x = arg1->x; + work->unk_10.y = arg1->y; + work->unk_10.z = arg1->z; + work->unk_130 = arg9; + return; + } + work->unk_1C = work->unk_04; + work->unk_34.x = arg0->x; + work->unk_34.y = arg0->y; + work->unk_34.z = arg0->z; + work->unk_28 = work->unk_10; + work->unk_40.x = arg1->x; + work->unk_40.y = arg1->y; + work->unk_40.z = arg1->z; + work->unk_134 = work->unk_130; + work->unk_138 = arg9; +} + +void fn_1_4FC0(float arg8) +{ + M433DllMapWork2 *var_r31 = lbl_1_bss_7B0->data; + var_r31->unk_140 = arg8; +} + +void fn_1_4FE8(u8 arg0, u16 arg1, float arg8, float arg9, float argA) +{ + M433DllMapWork2 *var_r31 = lbl_1_bss_7B0->data; + var_r31->unk_188[arg0] = arg1; + var_r31->unk_14C[arg0] = arg8; + var_r31->unk_158[arg0] = arg9; + var_r31->unk_170[arg0] = argA; + var_r31->unk_164[arg0] = 90.0f; +} + +void fn_1_5068(void) +{ + s32 i; + for (i = 0; i < 0x20; i++) { + lbl_1_bss_728[i] = NULL; + } +} + +void *fn_1_50A8(s32 arg0) +{ + s32 i; + + for (i = 0; i < 0x20; i++) { + if (!lbl_1_bss_728[i]) { + break; + } + } + if (i == 0x20) { + return NULL; + } + lbl_1_bss_728[i] = HuMemDirectMallocNum(HEAP_SYSTEM, arg0, MEMORY_DEFAULT_NUM); + return lbl_1_bss_728[i]; +} + +void fn_1_5148(u32 sp8) +{ + s32 i; + + for (i = 0; i < 0x20; i++) { + if (lbl_1_bss_728[i] == (void *)sp8) { + break; + } + } + if (i != 0x20) { + HuMemDirectFree(lbl_1_bss_728[i]); + lbl_1_bss_728[i] = NULL; + } +} + +void fn_1_51DC(void) +{ + s32 i; + + for (i = 0; i < 0x20; i++) { + if (lbl_1_bss_728[i]) { + HuMemDirectFree(lbl_1_bss_728[i]); + lbl_1_bss_728[i] = NULL; + } + } +} + +u32 lbl_1_data_C4 = 0x41C64E6D; + +s32 fn_1_5260(void) +{ + lbl_1_data_C4 *= 0x41C64E6D; + lbl_1_data_C4 += 0x3039; + return lbl_1_data_C4 >> 0x10; +} + +float fn_1_52B4(float arg8, float arg9, float argA) +{ + float var_f31; + + if (arg8 > 180.0f) { + arg8 -= 360.0f; + } + else if (arg8 <= -180.0f) { + arg8 += 360.0f; + } + if (arg9 > 180.0f) { + arg9 -= 360.0f; + } + else if (arg9 <= -180.0f) { + arg9 += 360.0f; + } + var_f31 = arg8 - arg9; + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + else if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + arg8 = arg9 + (var_f31 * argA); + if (arg8 > 180.0f) { + return arg8 - 360.0f; + } + if (arg8 <= -180.0f) { + arg8 += 360.0f; + } + return arg8; +} + +void fn_1_541C(Mtx arg0, float arg8, float arg9, float argA) +{ + Mtx sp38; + Mtx sp8; + + if (argA != 0.0f) { + PSMTXRotRad(arg0, 0x5A, MTXDegToRad(argA)); + } + else { + PSMTXIdentity(arg0); + } + if (arg8 != 0.0f) { + PSMTXRotRad(sp38, 0x58, MTXDegToRad(arg8)); + PSMTXConcat(sp38, arg0, arg0); + } + if (arg9 != 0.0f) { + PSMTXRotRad(sp8, 0x59, MTXDegToRad(arg9)); + PSMTXConcat(sp8, arg0, arg0); + } +} + +void fn_1_553C(Mtx arg0, Vec *arg1) +{ + float var_f29; + float var_f28; + + arg1->x = atan2d(arg0[1][2], arg0[2][2]); + if (arg1->x < 0.0f) { + arg1->x += 360.0f; + } + arg1->z = atan2d(arg0[0][1], arg0[0][0]); + if (arg1->z < 0.0f) { + arg1->z += 360.0f; + } + var_f29 = -arg0[0][2]; + var_f28 = sqrtf((1.0 - (var_f29 * var_f29)) < 0.0 ? (-(1.0 - (var_f29 * var_f29))) : (1.0 - (var_f29 * var_f29))); + if ((arg1->x > 90.0f) && (arg1->x < 270.0f) && (arg1->z > 90.0f) && (arg1->z < 270.0f)) { + arg1->x = fmod(180.0f + arg1->x, 360.0); + arg1->z = fmod(180.0f + arg1->z, 360.0); + var_f28 = -var_f28; + } + arg1->y = atan2d(var_f29, var_f28); + if (arg1->y < 0.0f) { + arg1->y += 360.0f; + } +} + +void fn_1_58D8(s32 arg0) +{ + M433DllMapWork *work = lbl_1_bss_7A8->data; + work->unk_04 = arg0; +} diff --git a/src/REL/mstory2Dll/main.c b/src/REL/mstory2Dll/main.c index 73dcc832..c8277e06 100644 --- a/src/REL/mstory2Dll/main.c +++ b/src/REL/mstory2Dll/main.c @@ -1236,7 +1236,3 @@ void fn_1_7384(int modelId, int charNo, float ofs, s32 maxTime, BOOL flag) } } } - -#if VERSION_PAL -// lbl_1_data_399 -#endif From cdb1d1fc37144ce8b15d202dcf40b61409d1eb29 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Sun, 12 Jan 2025 15:11:23 +0100 Subject: [PATCH 16/24] Import gx, PadClamp, rest of mtx, TRK 2.6 and MSL (#525) * Match mtx and Padclamp.c * Match the rest of GX * Import TRK 2.6 * Import MSL headers and files * Merge some MSL headers into ours --- config/GMPE01_00/splits.txt | 4 +- config/GMPE01_01/splits.txt | 4 +- configure.py | 59 +- include/OdemuExi2/odemuexi/DebuggerDriver.h | 24 + include/PowerPC_EABI_Support/MetroTRK/trk.h | 381 ++++ .../Msl/MSL_C/MSL_Common/FILE_POS.h | 18 + .../Msl/MSL_C/MSL_Common/abort_exit.h | 17 + .../Msl/MSL_C/MSL_Common/alloc.h | 16 + .../Msl/MSL_C/MSL_Common/ansi_files.h | 133 ++ .../Msl/MSL_C/MSL_Common/ansi_fp.h | 36 + .../Msl/MSL_C/MSL_Common/arith.h | 19 + .../Msl/MSL_C/MSL_Common/buffer_io.h | 11 + .../Msl/MSL_C/MSL_Common/char_io.h | 17 + .../Msl/MSL_C/MSL_Common/critical_regions.h | 30 + .../Msl/MSL_C/MSL_Common/ctype.h | 76 + .../Msl/MSL_C/MSL_Common/direct_io.h | 17 + .../Msl/MSL_C/MSL_Common/errno.h | 20 + .../Msl/MSL_C/MSL_Common/extras.h | 15 + .../Msl/MSL_C/MSL_Common/file_io.h | 18 + .../Msl/MSL_C/MSL_Common/float.h | 92 + .../Msl/MSL_C/MSL_Common/limits.h | 93 + .../Msl/MSL_C/MSL_Common/math.h | 106 + .../Msl/MSL_C/MSL_Common/mbstring.h | 16 + .../Msl/MSL_C/MSL_Common/mem_funcs.h | 19 + .../Msl/MSL_C/MSL_Common/misc_io.h | 14 + .../Msl/MSL_C/MSL_Common/printf.h | 22 + .../Msl/MSL_C/MSL_Common/scanf.h | 43 + .../Msl/MSL_C/MSL_Common/signal.h | 16 + .../Msl/MSL_C/MSL_Common/stdio.h | 13 + .../Msl/MSL_C/MSL_Common/stdlib.h | 9 + .../Msl/MSL_C/MSL_Common/strtoul.h | 18 + .../Msl/MSL_C/MSL_Common/wchar_io.h | 12 + .../MSL_C/MSL_Common_Embedded/Math/fdlibm.h | 234 ++ .../PowerPC_EABI_Support/Runtime/MWCPlusLib.h | 44 + .../Runtime/NMWException.h | 43 + include/PowerPC_EABI_Support/Runtime/__mem.h | 17 + .../Runtime/__ppc_eabi_linker.h | 72 + .../MetroTRK/Portable/dispatch.h | 35 + .../MetroTRK/Portable/main_TRK.h | 16 + .../MetroTRK/Portable/mainloop.h | 14 + .../MetroTRK/Portable/mem_TRK.h | 17 + .../MetroTRK/Portable/msg.h | 24 + .../MetroTRK/Portable/msgbuf.h | 50 + .../MetroTRK/Portable/msghndlr.h | 31 + .../MetroTRK/Portable/mutex_TRK.h | 10 + .../MetroTRK/Portable/notify.h | 16 + .../MetroTRK/Portable/nubevent.h | 37 + .../MetroTRK/Portable/nubinit.h | 21 + .../MetroTRK/Portable/serpoll.h | 23 + .../MetroTRK/Portable/support.h | 29 + .../Os/dolphin/dolphin_trk.h | 24 + .../Os/dolphin/dolphin_trk_glue.h | 45 + .../TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h | 16 + .../TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h | 14 + .../ppc/Generic/flush_cache.h | 16 + .../ppc/Generic/mpc_7xx_603e.h | 16 + .../TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h | 190 ++ include/amcstubs/AmcExi2Stubs.h | 27 + include/dolphin/math.h | 85 + include/dolphin/mtx.h | 2 +- include/stdarg.h | 42 +- include/stddef.h | 7 +- include/string.h | 19 +- src/MSL_C.PPCEABI.bare.H/abort_exit.c | 55 + src/MSL_C.PPCEABI.bare.H/ansi_files.c | 95 + src/MSL_C.PPCEABI.bare.H/buffer_io.c | 41 + src/MSL_C.PPCEABI.bare.H/ctype.c | 85 + src/MSL_C.PPCEABI.bare.H/direct_io.c | 114 + src/MSL_C.PPCEABI.bare.H/e_asin.c | 3 + src/MSL_C.PPCEABI.bare.H/e_atan2.c | 145 ++ src/MSL_C.PPCEABI.bare.H/errno.c | 3 + src/MSL_C.PPCEABI.bare.H/float.c | 5 + src/MSL_C.PPCEABI.bare.H/mbstring.c | 18 + src/MSL_C.PPCEABI.bare.H/mem.c | 75 + src/MSL_C.PPCEABI.bare.H/mem_funcs.c | 221 ++ src/MSL_C.PPCEABI.bare.H/misc_io.c | 1 + src/MSL_C.PPCEABI.bare.H/printf.c | 1076 +++++++++ src/MSL_C.PPCEABI.bare.H/rand.c | 13 + src/MSL_C.PPCEABI.bare.H/s_atan.c | 148 ++ src/MSL_C.PPCEABI.bare.H/s_frexp.c | 58 + src/MSL_C.PPCEABI.bare.H/scanf.c | 34 + src/MSL_C.PPCEABI.bare.H/string.c | 257 +++ src/MSL_C.PPCEABI.bare.H/strtoul.c | 199 ++ src/MSL_C.PPCEABI.bare.H/w_atan2.c | 39 + src/MSL_C.PPCEABI.bare.H/wchar_io.c | 22 + src/TRK_MINNOW_DOLPHIN/__exception.s | 2018 +++++++++++++++++ src/TRK_MINNOW_DOLPHIN/dispatch.c | 43 + src/TRK_MINNOW_DOLPHIN/dolphin_trk.c | 137 ++ src/TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c | 116 + src/TRK_MINNOW_DOLPHIN/flush_cache.c | 26 + src/TRK_MINNOW_DOLPHIN/main_TRK.c | 17 + src/TRK_MINNOW_DOLPHIN/mainloop.c | 70 + src/TRK_MINNOW_DOLPHIN/mem_TRK.c | 83 + src/TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c | 248 ++ src/TRK_MINNOW_DOLPHIN/msg.c | 9 + src/TRK_MINNOW_DOLPHIN/msgbuf.c | 359 +++ src/TRK_MINNOW_DOLPHIN/msghndlr.c | 689 ++++++ src/TRK_MINNOW_DOLPHIN/mutex_TRK.c | 7 + src/TRK_MINNOW_DOLPHIN/notify.c | 40 + src/TRK_MINNOW_DOLPHIN/nubevent.c | 72 + src/TRK_MINNOW_DOLPHIN/nubinit.c | 80 + src/TRK_MINNOW_DOLPHIN/serpoll.c | 82 + src/TRK_MINNOW_DOLPHIN/support.c | 177 ++ src/TRK_MINNOW_DOLPHIN/targcont.c | 12 + src/TRK_MINNOW_DOLPHIN/targimpl.c | 1177 ++++++++++ src/TRK_MINNOW_DOLPHIN/usr_put.c | 5 + src/dolphin/gx/GXFifo.c | 36 +- src/dolphin/gx/GXFrameBuf.c | 31 +- src/dolphin/gx/GXInit.c | 254 +-- src/dolphin/mtx/mtx.c | 299 ++- src/dolphin/mtx/quat.c | 130 ++ src/dolphin/mtx/vec.c | 26 +- src/dolphin/pad/Padclamp.c | 39 +- 113 files changed, 11219 insertions(+), 394 deletions(-) create mode 100644 include/OdemuExi2/odemuexi/DebuggerDriver.h create mode 100644 include/PowerPC_EABI_Support/MetroTRK/trk.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/FILE_POS.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/alloc.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_fp.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/arith.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/buffer_io.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/char_io.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/critical_regions.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/extras.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/limits.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mbstring.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/misc_io.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/printf.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/signal.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdio.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdlib.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/strtoul.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h create mode 100644 include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h create mode 100644 include/PowerPC_EABI_Support/Runtime/MWCPlusLib.h create mode 100644 include/PowerPC_EABI_Support/Runtime/NMWException.h create mode 100644 include/PowerPC_EABI_Support/Runtime/__mem.h create mode 100644 include/PowerPC_EABI_Support/Runtime/__ppc_eabi_linker.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h create mode 100644 include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h create mode 100644 include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h create mode 100644 include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h create mode 100644 include/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h create mode 100644 include/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h create mode 100644 include/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h create mode 100644 include/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h create mode 100644 include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h create mode 100644 include/amcstubs/AmcExi2Stubs.h create mode 100644 include/dolphin/math.h create mode 100644 src/MSL_C.PPCEABI.bare.H/abort_exit.c create mode 100644 src/MSL_C.PPCEABI.bare.H/ansi_files.c create mode 100644 src/MSL_C.PPCEABI.bare.H/buffer_io.c create mode 100644 src/MSL_C.PPCEABI.bare.H/ctype.c create mode 100644 src/MSL_C.PPCEABI.bare.H/direct_io.c create mode 100644 src/MSL_C.PPCEABI.bare.H/e_asin.c create mode 100644 src/MSL_C.PPCEABI.bare.H/e_atan2.c create mode 100644 src/MSL_C.PPCEABI.bare.H/errno.c create mode 100644 src/MSL_C.PPCEABI.bare.H/float.c create mode 100644 src/MSL_C.PPCEABI.bare.H/mbstring.c create mode 100644 src/MSL_C.PPCEABI.bare.H/mem.c create mode 100644 src/MSL_C.PPCEABI.bare.H/mem_funcs.c create mode 100644 src/MSL_C.PPCEABI.bare.H/misc_io.c create mode 100644 src/MSL_C.PPCEABI.bare.H/printf.c create mode 100644 src/MSL_C.PPCEABI.bare.H/rand.c create mode 100644 src/MSL_C.PPCEABI.bare.H/s_atan.c create mode 100644 src/MSL_C.PPCEABI.bare.H/s_frexp.c create mode 100644 src/MSL_C.PPCEABI.bare.H/scanf.c create mode 100644 src/MSL_C.PPCEABI.bare.H/string.c create mode 100644 src/MSL_C.PPCEABI.bare.H/strtoul.c create mode 100644 src/MSL_C.PPCEABI.bare.H/w_atan2.c create mode 100644 src/MSL_C.PPCEABI.bare.H/wchar_io.c create mode 100644 src/TRK_MINNOW_DOLPHIN/__exception.s create mode 100644 src/TRK_MINNOW_DOLPHIN/dispatch.c create mode 100644 src/TRK_MINNOW_DOLPHIN/dolphin_trk.c create mode 100644 src/TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c create mode 100644 src/TRK_MINNOW_DOLPHIN/flush_cache.c create mode 100644 src/TRK_MINNOW_DOLPHIN/main_TRK.c create mode 100644 src/TRK_MINNOW_DOLPHIN/mainloop.c create mode 100644 src/TRK_MINNOW_DOLPHIN/mem_TRK.c create mode 100644 src/TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c create mode 100644 src/TRK_MINNOW_DOLPHIN/msg.c create mode 100644 src/TRK_MINNOW_DOLPHIN/msgbuf.c create mode 100644 src/TRK_MINNOW_DOLPHIN/msghndlr.c create mode 100644 src/TRK_MINNOW_DOLPHIN/mutex_TRK.c create mode 100644 src/TRK_MINNOW_DOLPHIN/notify.c create mode 100644 src/TRK_MINNOW_DOLPHIN/nubevent.c create mode 100644 src/TRK_MINNOW_DOLPHIN/nubinit.c create mode 100644 src/TRK_MINNOW_DOLPHIN/serpoll.c create mode 100644 src/TRK_MINNOW_DOLPHIN/support.c create mode 100644 src/TRK_MINNOW_DOLPHIN/targcont.c create mode 100644 src/TRK_MINNOW_DOLPHIN/targimpl.c create mode 100644 src/TRK_MINNOW_DOLPHIN/usr_put.c diff --git a/config/GMPE01_00/splits.txt b/config/GMPE01_00/splits.txt index 6b38187f..fc3ba2b8 100644 --- a/config/GMPE01_00/splits.txt +++ b/config/GMPE01_00/splits.txt @@ -1186,7 +1186,7 @@ TRK_MINNOW_DOLPHIN/serpoll.c: .text start:0x800ECC5C end:0x800ED028 .bss start:0x801A9110 end:0x801A9128 -TRK_MINNOW_DOLPHIN/usrput.c: +TRK_MINNOW_DOLPHIN/usr_put.c: .text start:0x800ED028 end:0x800ED0B4 TRK_MINNOW_DOLPHIN/dispatch.c: @@ -1224,7 +1224,7 @@ TRK_MINNOW_DOLPHIN/targimpl.c: TRK_MINNOW_DOLPHIN/targsupp.c: .text start:0x800F1CF0 end:0x800F1D10 -TRK_MINNOW_DOLPHIN/__exception.c: +TRK_MINNOW_DOLPHIN/__exception.s: .init start:0x80003534 end:0x80005468 TRK_MINNOW_DOLPHIN/dolphin_trk.c: diff --git a/config/GMPE01_01/splits.txt b/config/GMPE01_01/splits.txt index 6b38187f..fc3ba2b8 100644 --- a/config/GMPE01_01/splits.txt +++ b/config/GMPE01_01/splits.txt @@ -1186,7 +1186,7 @@ TRK_MINNOW_DOLPHIN/serpoll.c: .text start:0x800ECC5C end:0x800ED028 .bss start:0x801A9110 end:0x801A9128 -TRK_MINNOW_DOLPHIN/usrput.c: +TRK_MINNOW_DOLPHIN/usr_put.c: .text start:0x800ED028 end:0x800ED0B4 TRK_MINNOW_DOLPHIN/dispatch.c: @@ -1224,7 +1224,7 @@ TRK_MINNOW_DOLPHIN/targimpl.c: TRK_MINNOW_DOLPHIN/targsupp.c: .text start:0x800F1CF0 end:0x800F1D10 -TRK_MINNOW_DOLPHIN/__exception.c: +TRK_MINNOW_DOLPHIN/__exception.s: .init start:0x80003534 end:0x80005468 TRK_MINNOW_DOLPHIN/dolphin_trk.c: diff --git a/configure.py b/configure.py index 545739bb..22c85a12 100644 --- a/configure.py +++ b/configure.py @@ -242,6 +242,9 @@ cflags_trk = [ "-sdata 0", "-sdata2 0", "-inline auto,deferred", + "-pool off", + "-enum min", + "-sdatathreshold 0" ] cflags_odemuexi = [ @@ -344,6 +347,16 @@ def DolphinLib(lib_name, objects): } +def DolphinLibUnpatched(lib_name, objects): + return { + "lib": lib_name, + "mw_version": "GC/1.2.5", + "cflags": cflags_dolphin, + "host": False, + "objects": objects, + } + + def MusyX(objects, mw_version="GC/1.3.2", debug=False, major=1, minor=5, patch=4): cflags = cflags_musyx if not debug else cflags_musyx_debug return { @@ -514,14 +527,14 @@ config.libs = [ Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/db.c"), ], ), - DolphinLib( + DolphinLibUnpatched( "mtx", [ - Object(NonMatching, "dolphin/mtx/mtx.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/mtx.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/mtxvec.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/mtx44.c"), - Object(NonMatching, "dolphin/mtx/vec.c"), - Object(NonMatching, "dolphin/mtx/quat.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/vec.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/quat.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/mtx/psmtx.c"), ], ), @@ -554,7 +567,7 @@ config.libs = [ DolphinLib( "pad", [ - Object(NonMatching, "dolphin/pad/Padclamp.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/pad/Padclamp.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/pad/Pad.c"), ], ), @@ -582,12 +595,12 @@ config.libs = [ DolphinLib( "gx", [ - Object(NonMatching, "dolphin/gx/GXInit.c"), - Object(NonMatching, "dolphin/gx/GXFifo.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXInit.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXFifo.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXAttr.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXMisc.c"), - Object(NonMatching, "dolphin/gx/GXGeometry.c"), - Object(NonMatching, "dolphin/gx/GXFrameBuf.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXGeometry.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXFrameBuf.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXLight.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXTexture.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "dolphin/gx/GXBump.c"), @@ -669,7 +682,7 @@ config.libs = [ "objects": [ Object(NonMatching, "MSL_C.PPCEABI.bare.H/abort_exit.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/alloc.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/errno.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/errno.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/ansi_files.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/ansi_fp.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/arith.c"), @@ -683,7 +696,7 @@ config.libs = [ Object(NonMatching, "MSL_C.PPCEABI.bare.H/mem_funcs.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/misc_io.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/printf.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/float.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/float.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/signal.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/string.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/uart_console_io.c"), @@ -702,14 +715,14 @@ config.libs = [ Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_copysign.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_cos.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_floor.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_frexp.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/s_frexp.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_ldexp.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_modf.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_sin.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/s_tan.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/w_acos.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/w_asin.c"), - Object(NonMatching, "MSL_C.PPCEABI.bare.H/w_atan2.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "MSL_C.PPCEABI.bare.H/w_atan2.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/w_fmod.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/w_pow.c"), Object(NonMatching, "MSL_C.PPCEABI.bare.H/math_ppc.c"), @@ -721,28 +734,28 @@ config.libs = [ "cflags": cflags_trk, "host": False, "objects": [ - Object(NonMatching, "TRK_MINNOW_DOLPHIN/mainloop.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/nubevent.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/nubinit.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mainloop.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/nubevent.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/nubinit.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/msg.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/msgbuf.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/serpoll.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/usrput.c"), + Object(NonMatching, "TRK_MINNOW_DOLPHIN/usr_put.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/dispatch.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/msghndlr.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/support.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/mutex_TRK.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mutex_TRK.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/notify.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/flush_cache.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/flush_cache.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/mem_TRK.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/targimpl.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/targsupp.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/__exception.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/__exception.s"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/dolphin_trk.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/main_TRK.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/main_TRK.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c"), - Object(NonMatching, "TRK_MINNOW_DOLPHIN/targcont.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "TRK_MINNOW_DOLPHIN/targcont.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/target_options.c"), Object(NonMatching, "TRK_MINNOW_DOLPHIN/mslsupp.c"), ], diff --git a/include/OdemuExi2/odemuexi/DebuggerDriver.h b/include/OdemuExi2/odemuexi/DebuggerDriver.h new file mode 100644 index 00000000..71a27ed3 --- /dev/null +++ b/include/OdemuExi2/odemuexi/DebuggerDriver.h @@ -0,0 +1,24 @@ +#ifndef ODEMUEXI_DEBUGGER_DRIVER_H +#define ODEMUEXI_DEBUGGER_DRIVER_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int Hu_IsStub(); + +void DBInitComm(volatile u8** param_1, __OSInterruptHandler param_2); +void DBInitInterrupts(void); +u32 DBQueryData(void); +int DBRead(void* data, u32 size); +int DBWrite(const void* data, u32 size); +void DBOpen(void); +void DBClose(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/PowerPC_EABI_Support/MetroTRK/trk.h b/include/PowerPC_EABI_Support/MetroTRK/trk.h new file mode 100644 index 00000000..c8814672 --- /dev/null +++ b/include/PowerPC_EABI_Support/MetroTRK/trk.h @@ -0,0 +1,381 @@ +#ifndef __METROTRK_TRK_H__ +#define __METROTRK_TRK_H__ + +#include "dolphin/types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +//////////// TRK ENUMS ///////////// +// Hardware types. +typedef enum { + HARDWARE_AMC_DDH = 0, + HARDWARE_GDEV = 1, + HARDWARE_BBA = 2, +} HardwareType; + +// DS Error returns. +enum { + DS_NoError = 0x0, + DS_StepError = 0x1, + DS_ParameterError = 0x2, + + DS_EventQueueFull = 0x100, + + DS_NoMessageBufferAvailable = 0x300, + DS_MessageBufferOverflow = 0x301, + DS_MessageBufferReadError = 0x302, + + DS_DispatchError = 0x500, + + DS_InvalidMemory = 0x700, + DS_InvalidRegister = 0x701, + DS_CWDSException = 0x702, + DS_UnsupportedError = 0x703, + DS_InvalidProcessID = 0x704, + DS_InvalidThreadID = 0x705, + DS_OSError = 0x706, + + DS_Error800 = 0x800, +}; + +typedef int DSError; + +// Where to read/write. +typedef enum { + DS_Stdin = 0, + DS_Stdout = 1, + DS_Stderr = 2, +} DSFileHandle; + +// IO returns. +typedef enum { + DS_IONoError = 0, + DS_IOError = 1, + DS_IOEOF = 2, +} DSIOResult; + +// Message command IDs +typedef enum { + DSMSG_Ping = 0x0, + DSMSG_Connect = 0x1, + DSMSG_Disconnect = 0x2, + DSMSG_Reset = 0x3, + DSMSG_Versions = 0x4, + DSMSG_SupportMask = 0x5, + DSMSG_Override = 0x7, + + DSMSG_ReadMemory = 0x10, + DSMSG_WriteMemory = 0x11, + DSMSG_ReadRegisters = 0x12, + DSMSG_WriteRegisters = 0x13, + DSMSG_SetOption = 0x17, + DSMSG_Continue = 0x18, + DSMSG_Step = 0x19, + DSMSG_Stop = 0x1A, + + DSMSG_ReplyACK = 0x80, + + DSMSG_NotifyStopped = 0x90, + DSMSG_NotifyException = 0x91, + + DSMSG_WriteFile = 0xD0, + DSMSG_ReadFile = 0xD1, + DSMSG_OpenFile = 0xD2, + DSMSG_CloseFile = 0xD3, + DSMSG_PositionFile = 0xD4, + + DSMSG_ReplyNAK = 0xFF, +} MessageCommandID; + +// Register commands. +typedef enum { + DSREG_Default = 0, + DSREG_FP = 1, + DSREG_Extended1 = 2, + DSREG_Extended2 = 3, +} DSMessageRegisterOptions; + +// Step commands. +typedef enum { + DSSTEP_IntoCount = 0x0, + DSSTEP_IntoRange = 0x1, + DSSTEP_OverCount = 0x10, + DSSTEP_OverRange = 0x11, +} DSMessageStepOptions; + +typedef enum { + DSREPLY_NoError = 0x0, + DSREPLY_Error = 0x1, + DSREPLY_PacketSizeError = 0x2, + DSREPLY_CWDSError = 0x3, + DSREPLY_EscapeError = 0x4, + DSREPLY_BadFCS = 0x5, + DSREPLY_Overflow = 0x6, + DSREPLY_SequenceMissing = 0x7, + + DSREPLY_UnsupportedCommandError = 0x10, + DSREPLY_ParameterError = 0x11, + DSREPLY_UnsupportedOptionError = 0x12, + DSREPLY_InvalidMemoryRange = 0x13, + DSREPLY_InvalidRegisterRange = 0x14, + DSREPLY_CWDSException = 0x15, + DSREPLY_NotStopped = 0x16, + DSREPLY_BreakpointsFull = 0x17, + DSREPLY_BreakpointConflict = 0x18, + + DSREPLY_OSError = 0x20, + DSREPLY_InvalidProcessID = 0x21, + DSREPLY_InvalidThreadID = 0x22, + DSREPLY_DebugSecurityError = 0x23, +} DSReplyError; + +typedef enum { + DSRECV_Wait = 0, + DSRECV_Found = 1, + DSRECV_InFrame = 2, + DSRECV_FrameOverflow = 3, +} ReceiverState; + +typedef enum { + DSMSGMEMORY_Segmented = 0x01, /* non-flat addr space */ + DSMSGMEMORY_Extended = 0x02, /* > 32-bit data addr */ + DSMSGMEMORY_Protected = 0x04, /* non-user memory */ + DSMSGMEMORY_Userview = 0x08, /* breakpoints are invisible */ + DSMSGMEMORY_Space_program = 0x00, + DSMSGMEMORY_Space_data = 0x40, + DSMSGMEMORY_Space_io = 0x80 +}; + +typedef enum { + NUBEVENT_Null = 0, + NUBEVENT_Shutdown = 1, + NUBEVENT_Request = 2, + NUBEVENT_Breakpoint = 3, + NUBEVENT_Exception = 4, + NUBEVENT_Support = 5, +} NubEventType; + +typedef enum { + VALIDMEM_Readable = 0, + VALIDMEM_Writeable = 1, +} ValidMemoryOptions; + +typedef enum { + MEMACCESS_UserMemory = 0, + MEMACCESS_DebuggerMemory = 1, +} MemoryAccessOptions; + +typedef int UARTError; + +typedef enum { + UART_NoError = 0, + UART_UnknownBaudRate = 1, + UART_ConfigurationError = 2, + UART_BufferOverflow = 3, // specified buffer was too small + UART_NoData = 4, // no data available from polling +} UARTErrorOptions; + +typedef enum { + kBaudHWSet = -1, // use HW settings such as DIP switches + kBaud300 = 300, // valid baud rates + kBaud600 = 600, + kBaud1200 = 1200, + kBaud1800 = 1800, + kBaud2000 = 2000, + kBaud2400 = 2400, + kBaud3600 = 3600, + kBaud4800 = 4800, + kBaud7200 = 7200, + kBaud9600 = 9600, + kBaud19200 = 19200, + kBaud38400 = 38400, + kBaud57600 = 57600, + kBaud115200 = 115200, + kBaud230400 = 230400 +} UARTBaudRate; + +//////////////////////////////////// + +typedef int MessageBufferID; + +#define TRKMSGBUF_SIZE (0x800 + 0x80) + +typedef struct TRKBuffer { + /* 0x00 */ u32 mutex; + /* 0x04 */ BOOL isInUse; + /* 0x08 */ u32 length; + /* 0x0C */ u32 position; + /* 0x10 */ u8 data[TRKMSGBUF_SIZE]; +} TRKBuffer; + +typedef struct TRKFramingState { + MessageBufferID msgBufID; // _00 + TRKBuffer* buffer; // _04 + ReceiverState receiveState; // _08 + BOOL isEscape; // _0C + u8 fcsType; // _10 +} TRKFramingState; + +typedef struct TRKState_PPC { + u32 GPR[32]; // 0x0 + u32 LR; // 0x80 + u32 CTR; // 0x84 + u32 XER; // 0x88 + u32 MSR; // 0x8c + u32 DAR; // 0x90 + u32 DSISR; // 0x94 + BOOL stopped; // 0x98 + BOOL inputActivated; // 0x9c + u8* inputPendingPtr; // 0xA0 +} TRKState_PPC; + +typedef struct CommandReply { + u32 _00; // _00 + union { + u8 b; + MessageCommandID m; + } commandID; // _04, use MessageCommandID enum + union { + u8 b; + DSReplyError r; + } replyError; // _08, use DSReplyError enum - should be enum type? check + // size. + u32 _0C; // _0C + u8 _10[0x30]; // _10, unknown +} CommandReply; + +typedef struct ProcessorRestoreFlags_PPC { + u8 TBR; + u8 DEC; + u8 linker_padding[0x9 - 0x2]; +} ProcessorRestoreFlags_PPC; + +void TRKSaveExtended1Block(); + +#define SPR_XER 1 +#define SPR_LR 8 +#define SPR_CTR 9 +#define SPR_DSISR 18 +#define SPR_DAR 19 +#define SPR_DEC 22 +#define SPR_SDR1 25 +#define SPR_SRR0 26 +#define SPR_SRR1 27 +#define SPR_SPRG0 272 +#define SPR_SPRG1 273 +#define SPR_SPRG2 274 +#define SPR_SPRG3 275 +#define SPR_EAR 282 +#define SPR_TBL 284 +#define SPR_TBU 285 +#define SPR_PVR 287 +#define SPR_IBAT0U 528 +#define SPR_IBAT0L 529 +#define SPR_IBAT1U 530 +#define SPR_IBAT1L 531 +#define SPR_IBAT2U 532 +#define SPR_IBAT2L 533 +#define SPR_IBAT3U 534 +#define SPR_IBAT3L 535 +#define SPR_IBAT4U 560 +#define SPR_IBAT4L 561 +#define SPR_IBAT5U 562 +#define SPR_IBAT5L 563 +#define SPR_IBAT6U 564 +#define SPR_IBAT6L 565 +#define SPR_IBAT7U 566 +#define SPR_IBAT7L 567 +#define SPR_DBAT0U 536 +#define SPR_DBAT0L 537 +#define SPR_DBAT1U 538 +#define SPR_DBAT1L 539 +#define SPR_DBAT2U 540 +#define SPR_DBAT2L 541 +#define SPR_DBAT3U 542 +#define SPR_DBAT3L 543 +#define SPR_DBAT4U 568 +#define SPR_DBAT4L 569 +#define SPR_DBAT5U 570 +#define SPR_DBAT5L 571 +#define SPR_DBAT6U 572 +#define SPR_DBAT6L 573 +#define SPR_DBAT7U 574 +#define SPR_DBAT7L 575 +#define SPR_GQR0 912 +#define SPR_GQR1 913 +#define SPR_GQR2 914 +#define SPR_GQR3 915 +#define SPR_GQR4 916 +#define SPR_GQR5 917 +#define SPR_GQR6 918 +#define SPR_GQR7 919 +#define SPR_HID2 920 +#define SPR_WPAR 921 +#define SPR_DMA_U 922 +#define SPR_DMA_L 923 +#define SPR_UMMCR0 936 +#define SPR_UPMC1 937 +#define SPR_UPMC2 938 +#define SPR_USIA 939 +#define SPR_UMMCR1 940 +#define SPR_UPMC3 941 +#define SPR_UPMC4 942 +#define SPR_USDA 943 +#define SPR_MMCR0 952 +#define SPR_PMC1 953 +#define SPR_PMC2 954 +#define SPR_SIA 955 +#define SPR_MMCR1 956 +#define SPR_PMC3 957 +#define SPR_PMC4 958 +#define SPR_SDA 959 +#define SPR_HID0 1008 +#define SPR_HID1 1009 +#define SPR_IABR 1010 +#define SPR_HID4 1011 +#define SPR_DABR 1013 +#define SPR_L2CR 1017 +#define SPR_ICTC 1019 +#define SPR_THRM1 1020 +#define SPR_THRM2 1021 +#define SPR_FPECR 1022 + +// PPC exceptions +// 0x000 is reserved +#define PPC_SystemReset 0x100 +#define PPC_MachineCheck 0x200 +#define PPC_DataStorage 0x300 +#define PPC_InstructionStorage 0x400 +#define PPC_ExternalInterrupt 0x500 +#define PPC_Alignment 0x600 +#define PPC_Program 0x700 +#define PPC_FloatingPointUnavaiable 0x800 +#define PPC_Decrementer 0x900 +// 0xA00-0xB00 are reserved +#define PPC_SystemCall 0xC00 +#define PPC_Trace 0xD00 +#define PPC_FloatingPointAssist 0xE00 // unimplemented in 750CL +#define PPC_PerformanceMonitor 0xF00 // Dolphin/Broadway specific +// 0x1000-0x1200 are unimplemented in 750CL +#define PPC_InstructionAddressBreakpoint 0x1300 // Dolphin/Broadway specific +// 0x1400-0x2F00 are reserved, but TRK uses some +#define PPC_SystemManagementInterrupt 0x1400 +// 0x1500-0x1600 are unimplemented in 750CL +#define PPC_ThermalManagementInterrupt 0x1700 +#define PPC_1800Exception 0x1800 +#define PPC_1900Exception 0x1900 +#define PPC_1A00Exception 0x1A00 +#define PPC_1B00Exception 0x1B00 +#define PPC_1C00Exception 0x1C00 // Data breakpoint? +#define PPC_1D00Exception 0x1D00 // Instruction breakpoint? +#define PPC_1E00Exception 0x1E00 // Peripheral breakpoint? +#define PPC_1F00Exception 0x1F00 // Non maskable development port? +#define PPC_2000Exception 0x2000 + +#ifdef __cplusplus +} +#endif + +#endif /* __METROTRK_TRK_H__ */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/FILE_POS.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/FILE_POS.h new file mode 100644 index 00000000..046471d5 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/FILE_POS.h @@ -0,0 +1,18 @@ +#ifndef _MSL_COMMON_FILE_POS_H +#define _MSL_COMMON_FILE_POS_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int fseek(FILE* file, unsigned long offset, int mode); +int _fseek(FILE* file, fpos_t offset, int mode); +long ftell(FILE* file); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_FILE_POS_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h new file mode 100644 index 00000000..7c62fe70 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h @@ -0,0 +1,17 @@ +#ifndef _MSL_COMMON_ABORT_EXIT_H +#define _MSL_COMMON_ABORT_EXIT_H + +#ifdef __cplusplus +extern "C" { +#endif + +void exit(int status); +void abort(void); + +extern void (*__stdio_exit)(void); + +#ifdef __cplusplus +}; +#endif + +#endif /* _MSL_COMMON_ABORT_EXIT_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/alloc.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/alloc.h new file mode 100644 index 00000000..6b08d6f9 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/alloc.h @@ -0,0 +1,16 @@ +#ifndef _MSL_COMMON_ALLOC_H +#define _MSL_COMMON_ALLOC_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void free(void* ptr); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_ALLOC_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h new file mode 100644 index 00000000..f06c55df --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h @@ -0,0 +1,133 @@ +#ifndef _MSL_COMMON_ANSI_FILES_H +#define _MSL_COMMON_ANSI_FILES_H + +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define SEEK_SET 0 +#define SEEK_CUR 1 +#define SEEK_END 2 + +typedef unsigned long __file_handle; +typedef unsigned long fpos_t; +#ifndef __cplusplus +typedef unsigned short wchar_t; +#endif + +#define set_error(file) \ + do { \ + (file)->file_state.error = 1; \ + (file)->buffer_length = 0; \ + } while (0) + +enum __file_kinds { + __closed_file, + __disk_file, + __console_file, + __string_file, + __unavailable_file, +}; + +enum __file_orientation { + /* 0x0 */ UNORIENTED, + /* 0x1 */ CHAR_ORIENTED, + /* 0x2 */ WIDE_ORIENTED, +}; + +typedef struct _file_modes { + unsigned int open_mode : 2; + unsigned int io_mode : 3; + unsigned int buffer_mode : 2; + unsigned int file_kind : 3; + unsigned int file_orientation : 2; + unsigned int binary_io : 1; +} file_modes; + +enum __io_modes { + __read = 1, + __write = 2, + __read_write = 3, + __append = 4, +}; + +enum __io_states { + __neutral, + __writing, + __reading, + __rereading, +}; + +enum __io_results { + __no_io_error, + __io_error, + __io_EOF, +}; + +typedef struct _file_states { + unsigned int io_state : 3; + unsigned int free_buffer : 1; + unsigned char eof; + unsigned char error; +} file_states; + +typedef void (*__idle_proc)(void); +typedef int (*__pos_proc)(__file_handle file, fpos_t* position, int mode, + __idle_proc idle_proc); +typedef int (*__io_proc)(__file_handle file, unsigned char* buff, size_t* count, + __idle_proc idle_proc); +typedef int (*__close_proc)(__file_handle file); + +typedef struct _FILE { + __file_handle handle; + file_modes file_mode; + file_states file_state; + + char char_buffer; + char char_buffer_overflow; + char ungetc_buffer[2]; + wchar_t ungetc_wide_buffer[2]; + + unsigned long position; + unsigned char* buffer; + unsigned long buffer_size; + unsigned char* buffer_ptr; + unsigned long buffer_length; + unsigned long buffer_alignment; + unsigned long save_buffer_length; + unsigned long buffer_position; + + __pos_proc position_fn; + __io_proc read_fn; + __io_proc write_fn; + __close_proc close_fn; + __idle_proc idle_fn; +} FILE; + +typedef struct _files { + FILE _stdin; + FILE _stdout; + FILE _stderr; +} files; + +#define _IONBF 0 +#define _IOLBF 1 +#define _IOFBF 2 + +extern files __files; +extern int __close_console(__file_handle file); +extern int __write_console(__file_handle file, unsigned char* buf, + size_t* count, __idle_proc idle_fn); +extern int __read_console(__file_handle file, unsigned char* buf, size_t* count, + __idle_proc idle_fn); + +unsigned int __flush_all(void); +void __close_all(void); + +#ifdef __cplusplus +}; +#endif + +#endif /* _MSL_COMMON_ANSI_FILES_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_fp.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_fp.h new file mode 100644 index 00000000..90ba7acf --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_fp.h @@ -0,0 +1,36 @@ +#ifndef _MSL_COMMON_ANSI_FP_H +#define _MSL_COMMON_ANSI_FP_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h" + +#define SIGDIGLEN 36 + +typedef struct decimal { + char sign; + char unk1; + short exp; + struct { + unsigned char length; + unsigned char text[36]; + unsigned char unk41; + } sig; +} decimal; + +typedef struct decform { + char style; + char unk1; + short digits; +} decform; + +/* void __ull2dec(decimal*, u64); +void __timesdec(decimal*, const decimal*, const decimal*); +void __str2dec(decimal*, const char*, short); +void __two_exp(decimal*, s16); +BOOL __equals_dec(const decimal*, const decimal*); +BOOL __less_dec(const decimal*, const decimal*); +void __minus_dec(decimal*, const decimal*, const decimal*); +void __num2dec_internal(decimal*, f64); +void __num2dec(const decform*, f64, decimal*); +f64 __dec2num(const decimal*); */ + +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/arith.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/arith.h new file mode 100644 index 00000000..317dfa0d --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/arith.h @@ -0,0 +1,19 @@ +#ifndef _MSL_COMMON_ARITH_H +#define _MSL_COMMON_ARITH_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + int quot; /* quotient */ + int rem; /* remainder */ +} div_t; + +div_t div(int numerator, int denominator); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_ARITH_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/buffer_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/buffer_io.h new file mode 100644 index 00000000..85ad160a --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/buffer_io.h @@ -0,0 +1,11 @@ +#ifndef _MSL_COMMON_BUFFER_IO_H +#define _MSL_COMMON_BUFFER_IO_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +enum { __align_buffer, __dont_align_buffer }; + +void __prep_buffer(FILE* file); +int __flush_buffer(FILE* file, size_t* bytes_flushed); + +#endif /* _MSL_COMMON_BUFFER_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/char_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/char_io.h new file mode 100644 index 00000000..e3733cf7 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/char_io.h @@ -0,0 +1,17 @@ +#ifndef _MSL_COMMON_CHAR_IO_H +#define _MSL_COMMON_CHAR_IO_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int fputs(const char* str, FILE* stream); +int __put_char(int c, FILE* stream); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_CHAR_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/critical_regions.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/critical_regions.h new file mode 100644 index 00000000..e4456725 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/critical_regions.h @@ -0,0 +1,30 @@ +#ifndef _MSL_COMMON_CRITICAL_REGIONS_H +#define _MSL_COMMON_CRITICAL_REGIONS_H + +#ifdef __cplusplus +extern "C" { +#endif + +enum critical_regions { + atexit_funcs_access, + malloc_pool_access, + stdin_access, + stdout_access, + stderr_access, + files_access, + console_status_access, + signal_funcs_access, + thread_access, + num_critical_regions +}; + +void __init_critical_regions(void); +void __kill_critical_regions(void); +void __begin_critical_region(int region); +void __end_critical_region(int region); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h new file mode 100644 index 00000000..0bb0356e --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h @@ -0,0 +1,76 @@ +#ifndef _MSL_COMMON_CTYPE_H +#define _MSL_COMMON_CTYPE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define EOF -1L + +extern const unsigned char __ctype_map[]; +extern const unsigned char __lower_map[]; +extern const unsigned char __upper_map[]; + +#define __control_char 0x01 +#define __motion_char 0x02 +#define __space_char 0x04 +#define __punctuation 0x08 +#define __digit 0x10 +#define __hex_digit 0x20 +#define __lower_case 0x40 +#define __upper_case 0x80 + +#define __letter (__lower_case | __upper_case) +#define __alphanumeric (__letter | __digit) +#define __graphic (__alphanumeric | __punctuation) +#define __printable (__graphic | __space_char) +#define __whitespace (__motion_char | __space_char) +#define __control (__motion_char | __control_char) +#define __zero_fill(c) ((int)(unsigned char)(c)) + +int tolower(int c); +int toupper(int c); + +inline int isalpha(int c) +{ + return (int)(__ctype_map[(unsigned char)c] & __letter); +} +inline int isdigit(int c) +{ + return (int)(__ctype_map[(unsigned char)c] & __digit); +} +inline int isspace(int c) +{ + return (int)(__ctype_map[(unsigned char)c] & __whitespace); +} +inline int isupper(int c) +{ + return (int)(__ctype_map[(unsigned char)c] & __upper_case); +} +inline int isxdigit(int c) +{ + return (int)(__ctype_map[(unsigned char)c] & __hex_digit); +} + +inline int _tolower(int c) +{ + return (c == -1 ? -1 : (int)__lower_map[(unsigned char)c]); +} + +#ifdef __cplusplus +}; + +namespace std { +inline int tolower(int c) +{ + return (c == -1 ? -1 : (int)__lower_map[(unsigned char)c]); +} +inline int toupper(int c) +{ + return (c == -1 ? -1 : (int)__upper_map[(unsigned char)c]); +} +}; // namespace std + +#endif + +#endif /* _MSL_COMMON_CTYPE_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h new file mode 100644 index 00000000..7e838551 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h @@ -0,0 +1,17 @@ +#ifndef _MSL_COMMON_DIRECT_IO_H +#define _MSL_COMMON_DIRECT_IO_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +size_t __fwrite(const void* buffer, size_t size, size_t count, FILE* stream); +size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_DIRECT_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h new file mode 100644 index 00000000..269d896d --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h @@ -0,0 +1,20 @@ +#ifndef MSL_COMMON_SRC_ERRNO_H +#define MSL_COMMON_SRC_ERRNO_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define ENOERR 0 +#define EDOM 33 +#define ERANGE 34 +#define EFPOS 40 +#define ESIGPARM 36 + +extern int errno; + +#ifdef __cplusplus +} +#endif + +#endif /* MSL_COMMON_SRC_ERRNO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/extras.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/extras.h new file mode 100644 index 00000000..4d8e8b62 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/extras.h @@ -0,0 +1,15 @@ +#ifndef _MSL_COMMON_EXTRAS_H +#define _MSL_COMMON_EXTRAS_H + +#ifdef __cplusplus +extern "C" { +#endif + +int strnicmp(const char* str1, const char* str2, int n); +int stricmp(const char* str1, const char* str2); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_EXTRAS_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h new file mode 100644 index 00000000..a06e7cef --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h @@ -0,0 +1,18 @@ +#ifndef _MSL_COMMON_FILE_IO_H +#define _MSL_COMMON_FILE_IO_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int __msl_strnicmp(const char* str1, const char* str2, int n); +int fflush(FILE* file); +int fclose(FILE* file); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_FILE_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h new file mode 100644 index 00000000..14d34342 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h @@ -0,0 +1,92 @@ +#ifndef _MSL_COMMON_FLOAT_H +#define _MSL_COMMON_FLOAT_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#define FP_SNAN 0 +#define FP_QNAN 1 +#define FP_INFINITE 2 +#define FP_ZERO 3 +#define FP_NORMAL 4 +#define FP_SUBNORMAL 5 + +#define FP_NAN FP_QNAN + +#define fpclassify(x) \ + ((sizeof(x) == sizeof(float)) ? __fpclassifyf(x) : __fpclassifyd(x)) +#define signbit(x) \ + ((sizeof(x) == sizeof(float)) ? __signbitf(x) : __signbitd(x)) +#define isfinite(x) ((fpclassify(x) > 2)) +#define isnan(x) ((fpclassify(x) == FP_NAN)) +#define isinf(x) ((fpclassify(x) == FP_INFINITE)) + +#define __signbitf(x) ((int)(__HI(x) & 0x80000000)) + +// TODO: OK? +#define __signbitd(x) ((int)(__HI(x) & 0x80000000)) + +extern unsigned long __float_nan[]; +extern unsigned long __float_huge[]; +extern unsigned long __float_max[]; +extern unsigned long __float_epsilon[]; + +inline int __fpclassifyf(float __value) +{ + unsigned long integer = *(unsigned long*)&__value; + + switch (integer & 0x7f800000) { + case 0x7f800000: + if ((integer & 0x7fffff) != 0) { + return FP_QNAN; + } + return FP_INFINITE; + + case 0: + if ((integer & 0x7fffff) != 0) { + return FP_SUBNORMAL; + } + return FP_ZERO; + } + + return FP_NORMAL; +} + +inline int __fpclassifyd(double __value) +{ + switch (__HI(__value) & 0x7ff00000) { + case 0x7ff00000: { + if ((__HI(__value) & 0x000fffff) || (__LO(__value) & 0xffffffff)) + return FP_QNAN; + else + return FP_INFINITE; + break; + } + case 0: { + if ((__HI(__value) & 0x000fffff) || (__LO(__value) & 0xffffffff)) + return FP_SUBNORMAL; + else + return FP_ZERO; + break; + } + } + return FP_NORMAL; +} + +#define FLT_MANT_DIG 24 +#define FLT_DIG 6 +#define FLT_MIN_EXP (-125) +#define FLT_MIN_10_EXP (-37) +#define FLT_MAX_EXP 128 +#define FLT_MAX_10_EXP 38 + +#define FLT_MAX 3.40282346638528860e+38f +#define FLT_EPSILON 1.1920928955078125e-07f + +#define DBL_MANT_DIG 53 +#define DBL_DIG 15 +#define DBL_MIN_EXP (-1021) +#define DBL_MIN_10_EXP (-308) +#define DBL_MAX_EXP 1024 +#define DBL_MAX_10_EXP 308 + +#endif /* _MSL_COMMON_FLOAT_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/limits.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/limits.h new file mode 100644 index 00000000..2b8b756f --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/limits.h @@ -0,0 +1,93 @@ +#ifndef _STD_LIMITS_H +#define _STD_LIMITS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define CHAR_BIT 8 + +#define SCHAR_MIN (-0x7F - 1) +#define SCHAR_MAX 0x7F +#define UCHAR_MAX 0xFF + +#define CHAR_MIN 0 +#define CHAR_MAX SCHAR_MAX + +#define SHRT_MIN (-0x7FFF - 1) +#define SHRT_MAX 0x7FFF +#define USHRT_MAX 0xFFFF + +#define INT_MIN (-0x7FFFFFFF - 1) +#define INT_MAX 0x7FFFFFFF +#define UINT_MAX 0xFFFFFFFF + +#define LONG_MIN (-0x7FFFFFFFL - 1) +#define LONG_MAX 0x7FFFFFFFL +#define ULONG_MAX 0xFFFFFFFFUL + +#define LLONG_MIN (-0x7FFFFFFFFFFFFFFFLL - 1) +#define LLONG_MAX 0x7FFFFFFFFFFFFFFFLL +#define ULLONG_MAX 0xFFFFFFFFFFFFFFFFULL + +#ifdef __cplusplus +} + +namespace std { +template class numeric_limits { +public: + inline static T min(); + inline static T max(); +}; + +template <> class numeric_limits { +public: + inline static char min() { return -0x80; } + inline static char max() { return 0x7F; } +}; + +template <> class numeric_limits { +public: + inline static short min() { return -0x8000; } + inline static short max() { return 0x7FFF; } +}; + +template <> class numeric_limits { +public: + inline static int min() { return -0x80000000; } + inline static int max() { return 0x7FFFFFFF; } +}; + +template <> class numeric_limits { +public: + inline static long min() { return -0x80000000; } + inline static long max() { return 0x7FFFFFFF; } +}; + +template <> class numeric_limits { +public: + inline static unsigned char min() { return 0x0; } + inline static unsigned char max() { return 0xFF; } +}; + +template <> class numeric_limits { +public: + inline static unsigned short min() { return 0x0; } + inline static unsigned short max() { return 0xFFFF; } +}; + +template <> class numeric_limits { +public: + inline static unsigned int min() { return 0x0; } + inline static unsigned int max() { return 0xFFFFFFFF; } +}; + +template <> class numeric_limits { +public: + inline static unsigned long min() { return 0x0; } + inline static unsigned long max() { return 0xFFFFFFFF; } +}; + +} // namespace std +#endif +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h new file mode 100644 index 00000000..e99949cc --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/math.h @@ -0,0 +1,106 @@ +#ifndef MSL_MATH_H_ +#define MSL_MATH_H_ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h" + +#define NAN (*(float*)__float_nan) +#define HUGE_VALF (*(float*)__float_huge) + +#define M_PI 3.14159265358979323846f +#define M_SQRT3 1.73205f + +#define DEG_TO_RAD(degrees) (degrees * (M_PI / 180.0f)) +#define RAD_TO_DEG(radians) \ + (radians \ + * (180.0f / M_PI + 0.000005f)) // the 0.000005f is probably a fakematch + +#ifdef __cplusplus +extern "C" { +#endif + +int abs(int); +double acos(double); +float acosf(float); +double asin(double); +double atan(double); +double atan2(double, double); +double ceil(double); +double copysign(double, double); +double cos(double); +float cosf(float); +double exp(double); + +extern double __fabs(double); +extern float __fabsf(float); +inline double fabs(double f) { return __fabs(f); } + +double __frsqrte(double); +float __fres(float); + +double floor(double); +double fmod(double, double); + +double frexp(double, int*); +double ldexp(double, int); +double modf(double, double*); +double pow(double, double); +double sin(double); +float sinf(float); +double tan(double); +float tanf(float); + +extern inline double sqrt(double x) +{ + if (x > 0.0) { + double guess = __frsqrte(x); /* returns an approximation to */ + guess + = .5 * guess * (3.0 - guess * guess * x); /* now have 8 sig bits */ + guess + = .5 * guess * (3.0 - guess * guess * x); /* now have 16 sig bits */ + guess + = .5 * guess * (3.0 - guess * guess * x); /* now have 32 sig bits */ + guess = .5 * guess + * (3.0 - guess * guess * x); /* now have > 53 sig bits */ + return x * guess; + } else if (x == 0) + return 0; + else if (x) + return NAN; + + return HUGE_VALF; +} + +#ifdef __cplusplus +}; + +namespace std { +inline float fabsf(float f) { return fabs(f); } +inline float abs(float f) { return fabsf(f); } +inline float fmodf(float x, float y) { return fmod(x, y); } +inline float atan2f(float y, float x) { return (float)atan2(y, x); } +inline float sinf(float x) { return sin(x); } +inline float cosf(float x) { return cos(x); } +inline float tanf(float x) { return tan(x); } + +extern inline float sqrtf(float x) +{ + const double _half = .5; + const double _three = 3.0; + volatile float y; + if (x > 0.0f) { + double guess = __frsqrte((double)x); // returns an approximation to + guess = _half * guess + * (_three - guess * guess * x); // now have 12 sig bits + guess = _half * guess + * (_three - guess * guess * x); // now have 24 sig bits + guess = _half * guess + * (_three - guess * guess * x); // now have 32 sig bits + y = (float)(x * guess); + return y; + } + return x; +} +}; // namespace std +#endif + +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mbstring.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mbstring.h new file mode 100644 index 00000000..2aa9f4ea --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mbstring.h @@ -0,0 +1,16 @@ +#ifndef _MSL_COMMON_MBSTRING_H +#define _MSL_COMMON_MBSTRING_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h" + +#ifdef __cplusplus +extern "C" { +#endif + +size_t wcstombs(char* dst, const wchar_t* src, size_t n); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_MBSTRING_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h new file mode 100644 index 00000000..0e245466 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h @@ -0,0 +1,19 @@ +#ifndef _MSL_COMMON_MEM_FUNCS_H +#define _MSL_COMMON_MEM_FUNCS_H + +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void __copy_longs_rev_unaligned(void* dst, const void* src, size_t n); +void __copy_longs_unaligned(void* dst, const void* src, size_t n); +void __copy_longs_rev_aligned(void* dst, const void* src, size_t n); +void __copy_longs_aligned(void* dst, const void* src, size_t n); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_MEM_FUNCS_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/misc_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/misc_io.h new file mode 100644 index 00000000..715f282a --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/misc_io.h @@ -0,0 +1,14 @@ +#ifndef _MSL_COMMON_MISC_IO_H +#define _MSL_COMMON_MISC_IO_H + +#ifdef __cplusplus +extern "C" { +#endif + +void __stdio_atexit(void); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_MISC_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/printf.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/printf.h new file mode 100644 index 00000000..e716867f --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/printf.h @@ -0,0 +1,22 @@ +#ifndef _MSL_COMMON_PRINTF_H +#define _MSL_COMMON_PRINTF_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" +#include "stdarg.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int fprintf(FILE* stream, const char* format, ...); +int printf(const char* format, ...); +int sprintf(char* s, const char* format, ...); +int snprintf(char* s, size_t n, const char* format, ...); +int vsnprintf(char* s, size_t n, const char* format, va_list arg); +int vprintf(const char* format, va_list arg); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_PRINTF_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h new file mode 100644 index 00000000..c6451e34 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h @@ -0,0 +1,43 @@ +#ifndef _MSL_COMMON_SCANF_H +#define _MSL_COMMON_SCANF_H + +#include "stddef.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum __ReadProcActions { __GetAChar, __UngetAChar, __TestForError }; + +enum __WReadProcActions { __GetAwChar, __UngetAwChar, __TestForwcsError }; + +typedef struct { + char* CharStr; + size_t MaxCharCount; + size_t CharsWritten; +} __OutStrCtrl; + +typedef struct { + char* NextChar; + int NullCharDetected; +} __InStrCtrl; + +typedef struct { + wchar_t* wCharStr; + size_t MaxCharCount; + size_t CharsWritten; +} __wOutStrCtrl; + +typedef struct { + wchar_t* wNextChar; + int wNullCharDetected; +} __wInStrCtrl; + +int __StringRead(void* str, int ch, int behavior); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_SCANF_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/signal.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/signal.h new file mode 100644 index 00000000..58fc22ab --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/signal.h @@ -0,0 +1,16 @@ +#ifndef _MSL_COMMON_SIGNAL_H +#define _MSL_COMMON_SIGNAL_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*__signal_func_ptr)(int); + +int raise(int sig); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_SIGNAL_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdio.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdio.h new file mode 100644 index 00000000..89806588 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdio.h @@ -0,0 +1,13 @@ +#ifndef MSL_STDIO_H_ +#define MSL_STDIO_H_ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/char_io.h" // IWYU pragma: export +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h" // IWYU pragma: export +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/printf.h" // IWYU pragma: export +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/extras.h" // IWYU pragma: export + +#define stdin (&__files._stdin) +#define stdout (&__files._stdout) +#define stderr (&__files._stderr) + +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdlib.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdlib.h new file mode 100644 index 00000000..9df0be5b --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdlib.h @@ -0,0 +1,9 @@ +#ifndef MSL_STDLIB_H_ +#define MSL_STDLIB_H_ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/arith.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mbstring.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/strtoul.h" + +#endif diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/strtoul.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/strtoul.h new file mode 100644 index 00000000..843ee863 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/strtoul.h @@ -0,0 +1,18 @@ +#ifndef _MSL_COMMON_STRTOUL_H +#define _MSL_COMMON_STRTOUL_H + +#ifdef __cplusplus +extern "C" { +#endif + +long strtol(const char* str, char** end, int base); +unsigned long strtoul(const char* str, char** end, int base); +unsigned long __strtoul(int base, int max_width, + int (*ReadProc)(void*, int, int), void* ReadProcArg, + int* chars_scanned, int* negative, int* overflow); + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_STRTOUL_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h new file mode 100644 index 00000000..90153f95 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h @@ -0,0 +1,12 @@ +#ifndef _MSL_COMMON_WCHAR_IO_H +#define _MSL_COMMON_WCHAR_IO_H + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +#ifndef __cplusplus +typedef unsigned short wchar_t; +#endif + +int fwide(FILE* file, int mode); + +#endif /* _MSL_COMMON_WCHAR_IO_H */ diff --git a/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h new file mode 100644 index 00000000..1f654aa7 --- /dev/null +++ b/include/PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h @@ -0,0 +1,234 @@ +#ifndef _FDLIBM_H +#define _FDLIBM_H + +/* @(#)fdlibm.h 1.5 04/04/22 */ +/** + * ==================================================== + * Copyright (C) 2004 by Sun Microsystems, Inc. All rights reserved. + * + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +#ifdef __cplusplus +extern "C" { +#endif // ifdef __cplusplus + +/* Sometimes it's necessary to define __LITTLE_ENDIAN explicitly + but these catch some common cases. */ + +#if defined(i386) || defined(i486) || defined(intel) || defined(x86) \ + || defined(i86pc) || defined(__alpha) || defined(__osf__) +#define __LITTLE_ENDIAN +#endif + +#ifdef __LITTLE_ENDIAN +#define __HI(x) *(1 + (int*)&x) +#define __LO(x) *(int*)&x +#define __HIp(x) *(1 + (int*)x) +#define __LOp(x) *(int*)x +#else +#define __HI(x) *(int*)&x +#define __LO(x) *(1 + (int*)&x) +#define __HIp(x) *(int*)x +#define __LOp(x) *(1 + (int*)x) +#endif + +// NOTE: should be enabled according to w_atan2.c +#define _IEEE_LIBM + +// TODO: should __STDC__ actually be defined? +// #ifdef __STDC__ +#define __P(p) p +// #else +// #define __P(p) () +// #endif + +/** + * ANSI/POSIX + */ + +extern int signgam; + +#define MAXFLOAT ((f32)3.40282346638528860e+38) + +enum fdversion { fdlibm_ieee = -1, fdlibm_svid, fdlibm_xopen, fdlibm_posix }; + +#define _LIB_VERSION_TYPE enum fdversion +#define _LIB_VERSION _fdlib_version + +/* if global variable _LIB_VERSION is not desirable, one may + * change the following to be a constant by: + * #define _LIB_VERSION_TYPE const enum version + * In that case, after one initializes the value _LIB_VERSION (see + * s_lib_version.c) during compile time, it cannot be modified + * in the middle of a program + */ +extern _LIB_VERSION_TYPE _LIB_VERSION; + +#define _IEEE_ fdlibm_ieee +#define _SVID_ fdlibm_svid +#define _XOPEN_ fdlibm_xopen +#define _POSIX_ fdlibm_posix + +struct exception { + int type; + char* name; + double arg1; + double arg2; + double retval; +}; + +#define HUGE MAXFLOAT + +/** + * set X_TLOSS = pi*2**52, which is possibly defined in + * (one may replace the following line by "#include ") + */ + +#define X_TLOSS 1.41484755040568800000e+16 + +#define DOMAIN 1 +#define SING 2 +#define OVERFLOW 3 +#define UNDERFLOW 4 +#define TLOSS 5 +#define PLOSS 6 + +/** + * ANSI/POSIX + */ +extern double acos __P((double)); +extern double asin __P((double)); +extern double atan __P((double)); +extern double atan2 __P((double, double)); +extern double cos __P((double)); +extern double sin __P((double)); +extern double tan __P((double)); + +extern double cosh __P((double)); +extern double sinh __P((double)); +extern double tanh __P((double)); + +extern double exp __P((double)); +extern double frexp __P((double, int*)); +extern double ldexp __P((double, int)); +extern double scalbn __P((double, int)); +extern double log __P((double)); +extern double log10 __P((double)); +extern double modf __P((double, double*)); + +extern double pow __P((double, double)); +extern double sqrt __P((double)); + +extern double ceil __P((double)); +extern double fabs __P((double)); +// NOTE: I have no idea how they got it to mangle like this +extern double fabs__Fd(double); +extern double floor __P((double)); +extern double fmod __P((double, double)); + +extern double erf __P((double)); +extern double erfc __P((double)); +extern double gamma __P((double)); +extern double hypot __P((double, double)); +extern int isnan __P((double)); +extern int finite __P((double)); +extern double j0 __P((double)); +extern double j1 __P((double)); +extern double jn __P((int, double)); +extern double lgamma __P((double)); +extern double y0 __P((double)); +extern double y1 __P((double)); +extern double yn __P((int, double)); + +extern double acosh __P((double)); +extern double asinh __P((double)); +extern double atanh __P((double)); +extern double cbrt __P((double)); +extern double logb __P((double)); +extern double nextafter __P((double, double)); +extern double remainder __P((double, double)); +#ifdef _SCALB_INT +extern double scalb __P((double, int)); +#else +extern double scalb __P((double, double)); +#endif + +extern int matherr __P((struct exception*)); + +/** + * IEEE Test Vector + */ +extern double significand __P((double)); + +/** + * Functions callable from C, intended to support IEEE arithmetic. + */ +extern double copysign __P((double, double)); +extern int ilogb __P((double)); +extern double rint __P((double)); +extern double scalbn __P((double, int)); + +/** + * BSD math library entry points + */ +extern double expm1 __P((double)); +extern double log1p __P((double)); + +/** + * Reentrant version of gamma & lgamma; passes signgam back by reference + * as the second argument; user must allocate space for signgam. + */ +#ifdef _REENTRANT +extern double gamma_r __P((double, int*)); +extern double lgamma_r __P((double, int*)); +#endif /* _REENTRANT */ + +/* ieee style elementary functions */ +extern double __ieee754_sqrt __P((double)); +extern double __ieee754_acos __P((double)); +extern double __ieee754_acosh __P((double)); +extern double __ieee754_log __P((double)); +extern double __ieee754_atanh __P((double)); +extern double __ieee754_asin __P((double)); +extern double __ieee754_atan2 __P((double, double)); +extern double __ieee754_exp __P((double)); +extern double __ieee754_cosh __P((double)); +extern double __ieee754_fmod __P((double, double)); +extern double __ieee754_pow __P((double, double)); +extern double __ieee754_lgamma_r __P((double, int*)); +extern double __ieee754_gamma_r __P((double, int*)); +extern double __ieee754_lgamma __P((double)); +extern double __ieee754_gamma __P((double)); +extern double __ieee754_log10 __P((double)); +extern double __ieee754_sinh __P((double)); +extern double __ieee754_hypot __P((double, double)); +extern double __ieee754_j0 __P((double)); +extern double __ieee754_j1 __P((double)); +extern double __ieee754_y0 __P((double)); +extern double __ieee754_y1 __P((double)); +extern double __ieee754_jn __P((int, double)); +extern double __ieee754_yn __P((int, double)); +extern double __ieee754_remainder __P((double, double)); +extern int __ieee754_rem_pio2 __P((double, double*)); +#ifdef _SCALB_INT +extern double __ieee754_scalb __P((double, int)); +#else +extern double __ieee754_scalb __P((double, double)); +#endif + +/* fdlibm kernel function */ +extern double __kernel_standard __P((double, double, int)); +extern double __kernel_sin __P((double, double, int)); +extern double __kernel_cos __P((double, double)); +extern double __kernel_tan __P((double, double, int)); +extern int __kernel_rem_pio2 __P((double*, double*, int, int, int, const int*)); + +#ifdef __cplusplus +}; +#endif // ifdef __cplusplus + +#endif diff --git a/include/PowerPC_EABI_Support/Runtime/MWCPlusLib.h b/include/PowerPC_EABI_Support/Runtime/MWCPlusLib.h new file mode 100644 index 00000000..8d78b551 --- /dev/null +++ b/include/PowerPC_EABI_Support/Runtime/MWCPlusLib.h @@ -0,0 +1,44 @@ +#ifndef _RUNTIME_MWCPLUSLIB_H +#define _RUNTIME_MWCPLUSLIB_H + +#include "stddef.h" + +#define CTORARG_TYPE int +#define CTORARG_PARTIAL (0) +#define CTORARG_COMPLETE (1) + +#define CTORCALL_COMPLETE(ctor, objptr) \ + (((void (*)(void*, CTORARG_TYPE))ctor)(objptr, CTORARG_COMPLETE)) + +#define DTORARG_TYPE int + +#define DTORCALL_COMPLETE(dtor, objptr) \ + (((void (*)(void*, DTORARG_TYPE))dtor)(objptr, -1)) +#define DTORCALL_PARTIAL(dtor, objptr) \ + (((void (*)(void*, DTORARG_TYPE))dtor)(objptr, 0)) + +typedef void* ConstructorDestructor; + +#ifdef __cplusplus +extern "C" { +#endif + +extern void* __copy(char* to, char* from, size_t size); + +extern void __construct_array(void* ptr, ConstructorDestructor ctor, + ConstructorDestructor dtor, size_t size, + size_t n); +extern void __destroy_arr(void* block, ConstructorDestructor* dtor, size_t size, + size_t n); +extern void* __construct_new_array(void* block, ConstructorDestructor ctor, + ConstructorDestructor dtor_arg, size_t size, + size_t n); +extern void __destroy_new_array(void* block, ConstructorDestructor dtor); +extern void __destroy_new_array2(); +extern void __destroy_new_array3(); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/PowerPC_EABI_Support/Runtime/NMWException.h b/include/PowerPC_EABI_Support/Runtime/NMWException.h new file mode 100644 index 00000000..2358f785 --- /dev/null +++ b/include/PowerPC_EABI_Support/Runtime/NMWException.h @@ -0,0 +1,43 @@ +#ifndef _NMWEXCEPTION +#define _NMWEXCEPTION + +typedef short vbase_ctor_arg_type; +typedef char local_cond_type; + +typedef struct CatchInfo { + void* location; + void* typeinfo; + void* dtor; + void* sublocation; + long pointercopy; + void* stacktop; +} CatchInfo; + +typedef struct DestructorChain { + struct DestructorChain* next; + void* destructor; + void* object; +} DestructorChain; + +#ifdef __cplusplus +extern "C" { +#endif + +extern void* __register_global_object(void* object, void* destructor, + void* registration); +extern void __destroy_global_chain(void); + +extern void __end__catch(CatchInfo* catchinfo); +extern void __throw(char* throwtype, void* location, void* dtor); +extern char __throw_catch_compare(const char* throwtype, const char* catchtype, + long* offset_result); +extern void __unexpected(CatchInfo* catchinfo); + +extern int __register_fragment(struct __eti_init_info* info, char* TOC); +extern void __unregister_fragment(int fragmentID); + +#ifdef __cplusplus +} +#endif + +#endif // _NMWEXCEPTION diff --git a/include/PowerPC_EABI_Support/Runtime/__mem.h b/include/PowerPC_EABI_Support/Runtime/__mem.h new file mode 100644 index 00000000..0a885b8f --- /dev/null +++ b/include/PowerPC_EABI_Support/Runtime/__mem.h @@ -0,0 +1,17 @@ +#ifndef _RUNTIME_MEM_H +#define _RUNTIME_MEM_H + +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +__declspec(section ".init") void* memcpy(void* dest, const void* src, size_t n); +__declspec(section ".init") void* memset(void* dest, int val, size_t count); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/PowerPC_EABI_Support/Runtime/__ppc_eabi_linker.h b/include/PowerPC_EABI_Support/Runtime/__ppc_eabi_linker.h new file mode 100644 index 00000000..a2fa3d63 --- /dev/null +++ b/include/PowerPC_EABI_Support/Runtime/__ppc_eabi_linker.h @@ -0,0 +1,72 @@ +#ifndef __PPC_EABI_LINKER +#define __PPC_EABI_LINKER + +__declspec(section ".init") extern char _stack_addr[]; +__declspec(section ".init") extern char _stack_end[]; +__declspec(section ".init") extern char _heap_addr[]; +__declspec(section ".init") extern char _heap_end[]; +__declspec(section ".init") extern const char _fextabindex_rom[]; +__declspec(section ".init") extern char _fextabindex[]; +__declspec(section ".init") extern char _eextabindex[]; + +__declspec(section ".init") extern char _SDA_BASE_[]; + +__declspec(section ".init") extern char _SDA2_BASE_[]; + +typedef struct __rom_copy_info { + char* rom; + char* addr; + unsigned int size; +} __rom_copy_info; + +__declspec(section ".init") extern __rom_copy_info _rom_copy_info[]; + +typedef struct __bss_init_info { + char* addr; + unsigned int size; +} __bss_init_info; + +__declspec(section ".init") extern __bss_init_info _bss_init_info[]; + +typedef struct __eti_init_info { + void* eti_start; + void* eti_end; + void* code_start; + unsigned long code_size; +} __eti_init_info; + +__declspec(section ".init") extern __eti_init_info _eti_init_info[]; +__declspec(section ".init") extern const char _f_init_rom[]; +__declspec(section ".init") extern char _f_init[]; +__declspec(section ".init") extern char _e_init[]; +__declspec(section ".init") extern const char _f_text_rom[]; +__declspec(section ".init") extern char _f_text[]; +__declspec(section ".init") extern char _e_text[]; +__declspec(section ".init") extern const char _f_rodata_rom[]; +__declspec(section ".init") extern char _f_rodata[]; +__declspec(section ".init") extern char _e_rodata[]; +__declspec(section ".init") extern const char _fextab_rom[]; +__declspec(section ".init") extern char _fextab[]; +__declspec(section ".init") extern char _eextab[]; +__declspec(section ".init") extern const char _f_data_rom[]; +__declspec(section ".init") extern char _f_data[]; +__declspec(section ".init") extern char _e_data[]; +__declspec(section ".init") extern char _f_bss[]; +__declspec(section ".init") extern char _e_bss[]; +__declspec(section ".init") extern const char _f_sdata_rom[]; +__declspec(section ".init") extern char _f_sdata[]; +__declspec(section ".init") extern char _e_sdata[]; +__declspec(section ".init") extern char _f_sbss[]; +__declspec(section ".init") extern char _e_sbss[]; +__declspec(section ".init") extern const char _f_sdata2_rom[]; +__declspec(section ".init") extern char _f_sdata2[]; +__declspec(section ".init") extern char _e_sdata2[]; +__declspec(section ".init") extern char _f_sbss2[]; +__declspec(section ".init") extern char _e_sbss2[]; +__declspec(section ".init") extern const char _f_PPC_EMB_sdata0_rom[]; +__declspec(section ".init") extern char _f_PPC_EMB_sdata0[]; +__declspec(section ".init") extern char _e_PPC_EMB_sdata0[]; +__declspec(section ".init") extern char _f_PPC_EMB_sbss0[]; +__declspec(section ".init") extern char _e_PPC_EMB_sbss0[]; + +#endif // __PPC_EABI_LINKER diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h new file mode 100644 index 00000000..0861cde2 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h @@ -0,0 +1,35 @@ +#ifndef METROTRK_PORTABLE_DISPATCH_H +#define METROTRK_PORTABLE_DISPATCH_H + +#include "dolphin/types.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define TRK_DISPATCH_CMD_CONNECT 1 /* Connect to the console */ +#define TRK_DISPATCH_CMD_DISCONNECT 2 /* Disconnect from the console */ +#define TRK_DISPATCH_CMD_RESET 3 /* Reset the debugger */ +#define TRK_DISPATCH_CMD_GETVERSION 4 /* Get debugger version */ +#define TRK_DISPATCH_CMD_GETSUPPORTMASK 5 /* Get Support Mask */ +#define TRK_DISPATCH_CMD_OVERRIDE 7 /* Override? */ +#define TRK_DISPATCH_CMD_READMEM 16 /* Reading from memory */ +#define TRK_DISPATCH_CMD_WRITEMEM 17 /* Writing to memory */ +#define TRK_DISPATCH_CMD_READREGS 18 /* Read a register value */ +#define TRK_DISPATCH_CMD_WRITEREGS 19 /* Set a register */ +#define TRK_DISPATCH_CMD_SETOPTION 23 /* Set an option? */ +#define TRK_DISPATCH_CMD_CONTINUE 24 /* Continue debugging */ +#define TRK_DISPATCH_CMD_STEP 25 /* Step through an instruction */ +#define TRK_DISPATCH_CMD_STOP 26 /* Stop the debugger */ + +typedef struct TRKBuffer TRKBuffer; + +DSError TRKInitializeDispatcher(); +BOOL TRKDispatchMessage(TRKBuffer* buffer); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_DISPATCH_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h new file mode 100644 index 00000000..9ff3a2da --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h @@ -0,0 +1,16 @@ +#ifndef METROTRK_PORTABLE_MAIN_TRK_H +#define METROTRK_PORTABLE_MAIN_TRK_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRK_main(void); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_MAIN_TRK_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h new file mode 100644 index 00000000..606a4437 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mainloop.h @@ -0,0 +1,14 @@ +#ifndef METROTRK_PORTABLE_MAINLOOP_H +#define METROTRK_PORTABLE_MAINLOOP_H + +#ifdef __cplusplus +extern "C" { +#endif + +void TRKNubMainLoop(void); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_MAINLOOP_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h new file mode 100644 index 00000000..aeef9c7d --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h @@ -0,0 +1,17 @@ +#ifndef METROTRK_PORTABLE_MEM_TRK_H +#define METROTRK_PORTABLE_MEM_TRK_H + +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void* TRK_memset(void* dst, int val, size_t n); +void* TRK_memcpy(void* dst, const void* src, size_t n); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_MEM_TRK_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h new file mode 100644 index 00000000..8433ef8d --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h @@ -0,0 +1,24 @@ +#ifndef METROTRK_PORTABLE_MSG_H +#define METROTRK_PORTABLE_MSG_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" +#include "dolphin/types.h" + +typedef struct _TRK_Msg { + u8 _00[8]; + u32 m_msgLength; + u32 _0C; + u32 m_msg; +} TRK_Msg; + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKMessageSend(TRK_Msg* msg); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_MSG_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h new file mode 100644 index 00000000..770d3886 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h @@ -0,0 +1,50 @@ +#ifndef METROTRK_PORTABLE_MSGBUF_H +#define METROTRK_PORTABLE_MSGBUF_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKInitializeMessageBuffers(void); + +DSError TRKSetBufferPosition(TRKBuffer* msg, u32 pos); +void* TRKGetBuffer(int); +void TRKResetBuffer(TRKBuffer* msg, BOOL keepData); +void* TRKGetBuffer(int idx); +void TRKReleaseBuffer(int idx); +DSError TRKGetFreeBuffer(int* msgID, TRKBuffer** outMsg); + +DSError TRKAppendBuffer(TRKBuffer* msg, const void* data, size_t length); +DSError TRKAppendBuffer1_ui8(TRKBuffer* buffer, const u8 data); +inline DSError TRKAppendBuffer1_ui8(TRKBuffer* buffer, const u8 data) +{ + if (buffer->position >= TRKMSGBUF_SIZE) { + return DS_MessageBufferOverflow; + } + + buffer->data[buffer->position++] = data; + buffer->length++; + return DS_NoError; +} +DSError TRKAppendBuffer1_ui16(TRKBuffer* buffer, const u16 data); +DSError TRKAppendBuffer1_ui32(TRKBuffer* buffer, const u32 data); +DSError TRKAppendBuffer1_ui64(TRKBuffer* buffer, const u64 data); +DSError TRKAppendBuffer_ui8(TRKBuffer* buffer, const u8* data, int count); +DSError TRKAppendBuffer_ui32(TRKBuffer* buffer, const u32* data, int count); + +DSError TRKReadBuffer1_ui8(TRKBuffer* buffer, u8* data); +DSError TRKReadBuffer1_ui16(TRKBuffer* buffer, u16* data); +DSError TRKReadBuffer1_ui32(TRKBuffer* buffer, u32* data); +DSError TRKReadBuffer1_ui64(TRKBuffer* buffer, u64* data); +DSError TRKReadBuffer_ui8(TRKBuffer* buffer, u8* data, int count); +DSError TRKReadBuffer_ui32(TRKBuffer* buffer, u32* data, int count); +DSError TRKReadBuffer(TRKBuffer* msg, void* data, size_t length); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_MSGBUF_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h new file mode 100644 index 00000000..aa8abff5 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h @@ -0,0 +1,31 @@ +#ifndef METROTRK_PORTABLE_MSGHNDLR_H +#define METROTRK_PORTABLE_MSGHNDLR_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +void SetTRKConnected(BOOL); +BOOL GetTRKConnected(void); +DSError TRKDoUnsupported(TRKBuffer*); +DSError TRKDoSetOption(TRKBuffer*); +DSError TRKDoStop(TRKBuffer*); +DSError TRKDoStep(TRKBuffer*); +DSError TRKDoContinue(TRKBuffer*); +DSError TRKDoWriteRegisters(TRKBuffer*); +DSError TRKDoReadRegisters(TRKBuffer*); +DSError TRKDoFlushCache(TRKBuffer*); +DSError TRKDoWriteMemory(TRKBuffer*); +DSError TRKDoReadMemory(TRKBuffer*); +DSError TRKDoSupportMask(TRKBuffer*); +DSError TRKDoVersions(TRKBuffer*); +DSError TRKDoSupportMask(TRKBuffer*); +DSError TRKDoCPUType(TRKBuffer*); +DSError TRKDoOverride(TRKBuffer*); +DSError TRKDoReset(TRKBuffer*); +DSError TRKDoDisconnect(TRKBuffer*); +DSError TRKDoConnect(TRKBuffer*); +DSError TRKStandardACK(TRKBuffer* buffer, MessageCommandID commandID, + DSReplyError replyError); + +void OutputData(void* data, int length); + +#endif /* METROTRK_PORTABLE_MSGHNDLR_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h new file mode 100644 index 00000000..7297cf18 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h @@ -0,0 +1,10 @@ +#ifndef METROTRK_PORTABLE_MUTEX_TRK_H +#define METROTRK_PORTABLE_MUTEX_TRK_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +DSError TRKInitializeMutex(void*); +DSError TRKAcquireMutex(void*); +DSError TRKReleaseMutex(void*); + +#endif /* METROTRK_PORTABLE_MUTEX_TRK_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.h new file mode 100644 index 00000000..459830f9 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.h @@ -0,0 +1,16 @@ +#ifndef METROTRK_PORTABLE_NOTIFY_H +#define METROTRK_PORTABLE_NOTIFY_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKDoNotifyStopped(MessageCommandID cmd); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_NOTIFY_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h new file mode 100644 index 00000000..da5a012b --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h @@ -0,0 +1,37 @@ +#ifndef METROTRK_PORTABLE_NUBEVENT_H +#define METROTRK_PORTABLE_NUBEVENT_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef u32 NubEventID; + +typedef struct TRKEvent { + NubEventType eventType; + NubEventID eventID; + MessageBufferID msgBufID; +} TRKEvent; + +typedef struct TRKEventQueue { + int _00; + int count; + int next; + TRKEvent events[2]; + NubEventID eventID; +} TRKEventQueue; +extern TRKEventQueue gTRKEventQueue; + +BOOL TRKGetNextEvent(TRKEvent* event); +void TRKDestructEvent(TRKEvent*); +void TRKConstructEvent(TRKEvent*, NubEventType); +DSError TRKPostEvent(TRKEvent*); +DSError TRKInitializeEventQueue(); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_NUBEVENT_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h new file mode 100644 index 00000000..9f1d4174 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h @@ -0,0 +1,21 @@ +#ifndef METROTRK_PORTABLE_NUBINIT_H +#define METROTRK_PORTABLE_NUBINIT_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void TRKNubWelcome(void); +void TRKNubMainLoop(void); +DSError TRKTerminateNub(void); +DSError TRKInitializeNub(void); + +extern BOOL gTRKBigEndian; + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_NUBINIT_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h new file mode 100644 index 00000000..40636776 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h @@ -0,0 +1,23 @@ +#ifndef METROTRK_PORTABLE_SERPOLL_H +#define METROTRK_PORTABLE_SERPOLL_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKInitializeSerialHandler(void); +DSError TRKTerminateSerialHandler(void); + +void TRKGetInput(void); +MessageBufferID TRKTestForPacket(); +void TRKProcessInput(int bufferIdx); + +extern void* gTRKInputPendingPtr; + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_SERPOLL_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h new file mode 100644 index 00000000..5f8e9fbc --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h @@ -0,0 +1,29 @@ +#ifndef METROTRK_PORTABLE_SUPPORT_H +#define METROTRK_PORTABLE_SUPPORT_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKSuppAccessFile(u32 file_handle, u8* data, size_t* count, + DSIOResult* io_result, BOOL need_reply, BOOL read); + +DSError TRKRequestSend(TRKBuffer* msgBuf, int* bufferId, u32 p1, u32 p2, + int p3); + +DSError HandleOpenFileSupportRequest(const char* path, u8 replyError, + u32* param_3, DSIOResult* ioResult); + +DSError HandleCloseFileSupportRequest(int replyError, DSIOResult* ioResult); + +DSError HandlePositionFileSupportRequest(DSReplyError replyErr, u32* param_2, + u8 param_3, DSIOResult* ioResult); + +#ifdef __cplusplus +} +#endif + +#endif /* METROTRK_PORTABLE_SUPPORT_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h new file mode 100644 index 00000000..fa3a575a --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h @@ -0,0 +1,24 @@ +#ifndef OS_DOLPHIN_DOLPHIN_TRK_H +#define OS_DOLPHIN_DOLPHIN_TRK_H + +#include "dolphin/types.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKInitializeTarget(); + +void EnableMetroTRKInterrupts(); +u32 TRKTargetTranslate(u32 param_0); +void TRK__read_aram(register int c, register u32 p2, void* p3); +void TRK__write_aram(register int c, register u32 p2, void* p3); + +void __TRK_copy_vectors(void); + +#ifdef __cplusplus +} +#endif + +#endif /* OS_DOLPHIN_DOLPHIN_TRK_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h new file mode 100644 index 00000000..550454cc --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h @@ -0,0 +1,45 @@ +#ifndef OS_DOLPHIN_DOLPHIN_TRK_GLUE_H +#define OS_DOLPHIN_DOLPHIN_TRK_GLUE_H + +#include "dolphin/os.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*DBCommFunc)(void); +typedef u32 (*DBPollFunc)(void); +typedef void (*DBCommInitFunc)(volatile u8**, __OSInterruptHandler); +typedef int (*DBCommReadFunc)(void*, size_t); +typedef int (*DBCommWriteFunc)(const void*, size_t); + +typedef struct DBCommTable { + DBCommInitFunc initialize_func; + DBCommFunc init_interrupts_func; + DBPollFunc peek_func; + DBCommReadFunc read_func; + DBCommWriteFunc write_func; + DBCommFunc open_func; + DBCommFunc close_func; +} DBCommTable; + +DSError TRKInitializeIntDrivenUART(u32 param_0, u32 param_1, u32 param_2, + volatile u8** param_3); + +void UnreserveEXI2Port(void); +void ReserveEXI2Port(void); +int TRKPollUART(void); +UARTError TRKReadUARTN(void* bytes, u32 length); +UARTError TRKWriteUARTN(const void* bytes, u32 length); +void TRKLoadContext(OSContext* ctx, u32 r4); +int InitMetroTRKCommTable(int hwId); +void EnableEXI2Interrupts(void); +void TRK_board_display(char* str); + +#ifdef __cplusplus +} +#endif + +#endif /* OS_DOLPHIN_DOLPHIN_TRK_GLUE_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h new file mode 100644 index 00000000..1d1c4417 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h @@ -0,0 +1,16 @@ +#ifndef OS_DOLPHIN_TARGCONT_H +#define OS_DOLPHIN_TARGCONT_H + +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +DSError TRKTargetContinue(void); + +#ifdef __cplusplus +} +#endif + +#endif /* OS_DOLPHIN_TARGCONT_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h new file mode 100644 index 00000000..d01cc0b1 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h @@ -0,0 +1,14 @@ +#ifndef OS_DOLPHIN_USR_PUT_H +#define OS_DOLPHIN_USR_PUT_H + +#ifdef __cplusplus +extern "C" { +#endif + +void usr_put_initialize(void); + +#ifdef __cplusplus +} +#endif + +#endif /* OS_DOLPHIN_USR_PUT_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h new file mode 100644 index 00000000..a512aacf --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h @@ -0,0 +1,16 @@ +#ifndef PPC_GENERIC_FLUSH_CACHE_H +#define PPC_GENERIC_FLUSH_CACHE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void TRK_flush_cache(void* param_1, int param_2); + +#ifdef __cplusplus +} +#endif + +#endif /* PPC_GENERIC_FLUSH_CACHE_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h new file mode 100644 index 00000000..ec764776 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h @@ -0,0 +1,16 @@ +#ifndef PPC_GENERIC_MPC_7XX_603E_H +#define PPC_GENERIC_MPC_7XX_603E_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +u32 TRKTargetCPUMinorType(void); + +#ifdef __cplusplus +} +#endif + +#endif /* PPC_GENERIC_MPC_7XX_603E_H */ diff --git a/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h new file mode 100644 index 00000000..e7ce7015 --- /dev/null +++ b/include/TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h @@ -0,0 +1,190 @@ +#ifndef PPC_GENERIC_TARGIMPL_H +#define PPC_GENERIC_TARGIMPL_H + +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h" +#include "stddef.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void TRKTargetSetInputPendingPtr(void* ptr); + +void TRKSwapAndGo(); +void TRKTargetSetStopped(unsigned int); +DSError TRKTargetInterrupt(TRKEvent*); +DSError TRKTargetSupportRequest(); +void TRKDestructEvent(TRKEvent*); +DSError TRKTargetFlushCache(u8, void* start, void* end); +BOOL TRKTargetStopped(void); +DSError TRKTargetAddStopInfo(TRKBuffer* b); +DSError TRKTargetAddExceptionInfo(TRKBuffer* b); +DSError TRKTargetAccessARAM(u32 p1, u32 p2, u32* p3, BOOL read); +DSError TRKTargetAccessMemory(void* data, u32 start, size_t* length, + MemoryAccessOptions accessOptions, BOOL read); +DSError TRKTargetAccessDefault(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registersLengthPtr, + BOOL read); +DSError TRKTargetAccessFP(u32 firstRegister, u32 lastRegister, TRKBuffer* b, + size_t* registersLengthPtr, BOOL read); +DSError TRKTargetAccessExtended1(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registersLengthPtr, + BOOL read); +DSError TRKTargetAccessExtended2(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registerStorageSize, + BOOL read); +u32 TRKTargetGetPC(); +DSError TRKTargetSingleStep(u32 count, BOOL stepOver); +DSError TRKTargetStepOutOfRange(u32 rangeStart, u32 rangeEnd, BOOL stepOver); +u32 TRKTargetStop(); +void TRKInterruptHandler(); +void TRKPostInterruptEvent(void); + +typedef struct DSVersions { + u8 kernelMajor; + u8 kernelMinor; + u8 protocolMajor; + u8 protocolMinor; +} DSVersions; + +DSError TRKTargetVersions(DSVersions* versions); +DSError TRKTargetSupportMask(u8 mask[32]); + +typedef struct DSCPUType { + u8 cpuMajor; + u8 cpuMinor; + u8 bigEndian; + u8 defaultTypeSize; + u8 fpTypeSize; + u8 extended1TypeSize; + u8 extended2TypeSize; +} DSCPUType; +DSError TRKTargetCPUType(DSCPUType* cpuType); + +typedef struct Default_PPC { + u32 GPR[32]; + u32 PC; + u32 LR; + u32 CR; + u32 CTR; + u32 XER; +} Default_PPC; + +typedef struct Float_PPC { + u64 FPR[32]; + u64 FPSCR; + u64 FPECR; +} Float_PPC; + +typedef struct Extended1_PPC_6xx_7xx { + u32 SR[16]; + u32 TBL; + u32 TBU; + u32 HID0; + u32 HID1; + u32 MSR; + u32 PVR; + u32 IBAT0U; + u32 IBAT0L; + u32 IBAT1U; + u32 IBAT1L; + u32 IBAT2U; + u32 IBAT2L; + u32 IBAT3U; + u32 IBAT3L; + u32 DBAT0U; + u32 DBAT0L; + u32 DBAT1U; + u32 DBAT1L; + u32 DBAT2U; + u32 DBAT2L; + u32 DBAT3U; + u32 DBAT3L; + u32 DMISS; + u32 DCMP; + u32 HASH1; + u32 HASH2; + u32 IMISS; + u32 ICMP; + u32 RPA; + u32 SDR1; + u32 DAR; + u32 DSISR; + u32 SPRG0; + u32 SPRG1; + u32 SPRG2; + u32 SPRG3; + u32 DEC; + u32 IABR; + u32 EAR; + u32 DABR; + u32 PMC1; + u32 PMC2; + u32 PMC3; + u32 PMC4; + u32 SIA; + u32 MMCR0; + u32 MMCR1; + u32 THRM1; + u32 THRM2; + u32 THRM3; + u32 ICTC; + u32 L2CR; + u32 UMMCR2; + u32 UBAMR; + u32 UMMCR0; + u32 UPMC1; + u32 UPMC2; + u32 USIA; + u32 UMMCR1; + u32 UPMC3; + u32 UPMC4; + u32 USDA; + u32 MMCR2; + u32 BAMR; + u32 SDA; + u32 MSSCR0; + u32 MSSCR1; + u32 PIR; + u32 exceptionID; + u32 GQR[8]; + u32 HID_G; + u32 WPAR; + u32 DMA_U; + u32 DMA_L; +} Extended1_PPC_6xx_7xx; + +typedef struct Extended2_PPC_6xx_7xx { + u32 PSR[32][2]; +} Extended2_PPC_6xx_7xx; + +typedef struct ProcessorState_PPC_6xx_7xx { + Default_PPC Default; + Float_PPC Float; + Extended1_PPC_6xx_7xx Extended1; + Extended2_PPC_6xx_7xx Extended2; + u32 transport_handler_saved_ra; +} ProcessorState_PPC_6xx_7xx; + +typedef ProcessorState_PPC_6xx_7xx ProcessorState_PPC; +extern ProcessorState_PPC gTRKCPUState; + +typedef struct TRKState { + u32 gpr[32]; // _00 + u32 lr; // _80 + u32 ctr; // _84 + u32 xer; // _88 + u32 msr; // _8C + u32 dar; // _90 + u32 dsisr; // _94 + BOOL isStopped; // _98 + BOOL inputActivated; // _9C + void* inputPendingPtr; // _A0 +} TRKState; +extern TRKState gTRKState; + +#ifdef __cplusplus +} +#endif + +#endif /* PPC_GENERIC_TARGIMPL_H */ diff --git a/include/amcstubs/AmcExi2Stubs.h b/include/amcstubs/AmcExi2Stubs.h new file mode 100644 index 00000000..48298c34 --- /dev/null +++ b/include/amcstubs/AmcExi2Stubs.h @@ -0,0 +1,27 @@ +#ifndef AMCEXI2STUBS_H +#define AMCEXI2STUBS_H + +#include "dolphin/os.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef __OSInterruptHandler AmcEXICallback; + +typedef enum { AMC_EXI_NO_ERROR = 0, AMC_EXI_UNSELECTED } AmcExiError; + +void EXI2_Init(volatile u8**, AmcEXICallback); +void EXI2_EnableInterrupts(void); +u32 EXI2_Poll(void); +int EXI2_ReadN(void*, u32); +int EXI2_WriteN(const void*, u32); +void EXI2_Reserve(void); +void EXI2_Unreserve(void); +BOOL AMC_IsStub(void); + +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/include/dolphin/math.h b/include/dolphin/math.h new file mode 100644 index 00000000..483d8081 --- /dev/null +++ b/include/dolphin/math.h @@ -0,0 +1,85 @@ +#ifndef _DOLPHIN_MATH +#define _DOLPHIN_MATH + +// this file is necessary to match mtx/quat.c + +#define M_PI 3.141592653589793 + +#ifndef _MATH_INLINE +#define _MATH_INLINE static inline +#endif + +extern int __float_nan[]; +extern int __float_huge[]; +extern int __double_huge[]; + +#define INFINITY (*(float *)__float_huge) +#define NAN (*(float *)__float_nan) +#define HUGE_VAL (*(double *)__double_huge) + +#ifdef __MWERKS__ +extern inline double sqrt(double x) +{ + if (x > 0.0) { + double guess = __frsqrte(x); /* returns an approximation to */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 8 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 16 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 32 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have > 53 sig bits */ + return x * guess; + } + else if (x == 0) + return 0; + else if (x) + return NAN; + + return INFINITY; +} + +extern inline float sqrtf(float x) +{ + const double _half = .5; + const double _three = 3.0; + volatile float y; + if (x > 0.0f) { + double guess = __frsqrte((double)x); // returns an approximation to + guess = _half * guess * (_three - guess * guess * x); // now have 12 sig bits + guess = _half * guess * (_three - guess * guess * x); // now have 24 sig bits + guess = _half * guess * (_three - guess * guess * x); // now have 32 sig bits + y = (float)(x * guess); + return y; + } + return x; +} +#else +double sqrt(double x); +float sqrtf(float x); +#endif + +double atan(double x); +double copysign(double x, double y); +double cos(double x); +double floor(double x); +double frexp(double x, int *exp); +double ldexp(double x, int exp); +double modf(double x, double *intpart); +double sin(double x); +double tan(double x); +double acos(double x); +double asin(double x); +double atan2(double y, double x); +double fmod(double x, double y); +double log(double x); +double pow(double x, double y); +float tanf(float x); + +#ifdef __MWERKS__ +extern inline double fabs(double x) +{ + return __fabs(x); +} +#else +double fabs(double x); +#endif + +#endif diff --git a/include/dolphin/mtx.h b/include/dolphin/mtx.h index 9aba8f15..49dc1b7e 100644 --- a/include/dolphin/mtx.h +++ b/include/dolphin/mtx.h @@ -118,7 +118,7 @@ void PSMTXScaleApply(const Mtx src, Mtx dst, f32 xS, f32 yS, f32 zS); void PSMTXRotRad(Mtx m, char axis, f32 rad); void PSMTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA); -void PSMTXRotAxisRad(Mtx m, const Vec* axis, f32 rad); +void PSMTXRotAxisRad(register Mtx m, const Vec* axis, register f32 rad); #endif #ifdef MTX_USE_PS diff --git a/include/stdarg.h b/include/stdarg.h index 1ca0f853..e2cceee7 100644 --- a/include/stdarg.h +++ b/include/stdarg.h @@ -1,19 +1,39 @@ -#ifndef STDARG_H -#define STDARG_H +#ifndef _MSL_COMMON_STDARG_H +#define _MSL_COMMON_STDARG_H +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __MWERKS__ typedef struct { - char gpr; - char fpr; - char reserved[2]; - char* input_arg_area; - char* reg_save_area; + char gpr; + char fpr; + char reserved[2]; + char* input_arg_area; + char* reg_save_area; } __va_list[1]; typedef __va_list va_list; +#ifndef __MWERKS__ +extern void __builtin_va_info(va_list*); +#endif + void* __va_arg(va_list v_list, unsigned char type); -#define va_start(ap, fmt) ((void) fmt, __builtin_va_info(&ap)) -#define va_arg(ap, t) (*((t*) __va_arg(ap, _var_arg_typeof(t)))) -#define va_end(ap) (void) 0 +#define va_start(ap, fmt) ((void)fmt, __builtin_va_info(&ap)) +#define va_arg(ap, t) (*((t*)__va_arg(ap, _var_arg_typeof(t)))) +#define va_end(ap) (void)0 -#endif \ No newline at end of file +#else +typedef __builtin_va_list va_list; +#define va_start(v, l) __builtin_va_start(v, l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v, l) __builtin_va_arg(v, l) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _MSL_COMMON_STDARG_H */ diff --git a/include/stddef.h b/include/stddef.h index 5a133946..71816c2b 100644 --- a/include/stddef.h +++ b/include/stddef.h @@ -10,8 +10,13 @@ extern "C" { /* These break 1.2.5 */ //typedef __typeof__(sizeof(0)) size_t; //typedef __typeof__((char*)0 - (char*)0) ptrdiff_t; +#ifdef __INTELLISENSE__ +typedef unsigned int size_t; +typedef int ptrdiff_t; +#else typedef unsigned long size_t; typedef long ptrdiff_t; +#endif #ifndef NULL #define NULL 0L #endif @@ -20,4 +25,4 @@ typedef long ptrdiff_t; } #endif -#endif \ No newline at end of file +#endif diff --git a/include/string.h b/include/string.h index 583a906d..92f8f122 100644 --- a/include/string.h +++ b/include/string.h @@ -1,11 +1,22 @@ #ifndef _STRING_H_ #define _STRING_H_ -typedef unsigned long size_t; +#include "stddef.h" -void* memcpy(void* dst, const void* src, size_t n); -void* memset(void* dst, int val, size_t n); +#ifdef __MWERKS__ +__declspec(section ".init") void* memcpy(void* dest, const void* src, size_t n); +__declspec(section ".init") void __fill_mem(void* dest, int val, size_t count); +__declspec(section ".init") void* memset(void* dest, int val, size_t count); +#else +void* memcpy(void* dest, const void* src, size_t n); +void __fill_mem(void* dest, int val, size_t count); +void* memset(void* dest, int val, size_t count); +#endif +int memcmp(const void* lhs, const void* rhs, size_t count); +void* __memrchr(const void* ptr, int ch, size_t count); +void* memchr(const void* ptr, int ch, size_t count); +void* memmove(void* dst, const void* src, size_t n); char* strrchr(const char* str, int c); char* strchr(const char* str, int c); int strncmp(const char* str1, const char* str2, size_t n); @@ -15,4 +26,4 @@ char* strncpy(char* dst, const char* src, size_t n); char* strcpy(char* dst, const char* src); size_t strlen(const char* str); -#endif \ No newline at end of file +#endif diff --git a/src/MSL_C.PPCEABI.bare.H/abort_exit.c b/src/MSL_C.PPCEABI.bare.H/abort_exit.c new file mode 100644 index 00000000..1c9ca4d2 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/abort_exit.c @@ -0,0 +1,55 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/abort_exit.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/critical_regions.h" +#include "stddef.h" +#include "PowerPC_EABI_Support/Runtime/NMWException.h" + +void _ExitProcess(); + +extern void (*_dtors[])(void); + +int __aborting = 0; + +static void (*atexit_funcs[64])(void); +static int atexit_curr_func = 0; + +static void (*__atexit_funcs[64])(void); +static int __atexit_curr_func = 0; + +void (*__stdio_exit)(void) = 0; +void (*__console_exit)(void) = 0; + +void abort(void) +{ + // TODO +} + +void exit(int status) +{ + int i; + void (**dtor)(void); + + if (!__aborting) { + __destroy_global_chain(); + + dtor = _dtors; + while (*dtor != NULL) { + (*dtor)(); + dtor++; + } + + if (__stdio_exit != NULL) { + __stdio_exit(); + __stdio_exit = NULL; + } + } + + while (__atexit_curr_func > 0) + __atexit_funcs[--__atexit_curr_func](); + + if (__console_exit != NULL) { + __console_exit(); + __console_exit = NULL; + } + + _ExitProcess(); +} diff --git a/src/MSL_C.PPCEABI.bare.H/ansi_files.c b/src/MSL_C.PPCEABI.bare.H/ansi_files.c new file mode 100644 index 00000000..f0113bf4 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/ansi_files.c @@ -0,0 +1,95 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/file_io.h" + +extern files __files = { + { + 0, + 0, + 1, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + { 0, 0 }, + { 0, 0 }, + 0, + (unsigned char*)&__files._stdin.char_buffer, + 1, + (unsigned char*)&__files._stdin.char_buffer, + 0, + 0, + 0, + 0, + NULL, + __read_console, + __write_console, + __close_console, + NULL, + }, + { + 0, + 0, + 2, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + { 0, 0 }, + { 0, 0 }, + 0, + (unsigned char*)&__files._stdout.char_buffer, + 1, + (unsigned char*)&__files._stdout.char_buffer, + 0, + 0, + 0, + 0, + NULL, + __read_console, + __write_console, + __close_console, + NULL, + }, + { + 0, + 0, + 2, + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + { 0, 0 }, + { 0, 0 }, + 0, + (unsigned char*)&__files._stderr.char_buffer, + 1, + (unsigned char*)&__files._stderr.char_buffer, + 0, + 0, + 0, + 0, + NULL, + __read_console, + __write_console, + __close_console, + NULL, + }, +}; diff --git a/src/MSL_C.PPCEABI.bare.H/buffer_io.c b/src/MSL_C.PPCEABI.bare.H/buffer_io.c new file mode 100644 index 00000000..5657680d --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/buffer_io.c @@ -0,0 +1,41 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_files.h" + +void __prep_buffer(FILE* file) +{ + file->buffer_ptr = file->buffer; + file->buffer_length = file->buffer_size; + file->buffer_length -= file->position & file->buffer_alignment; + file->buffer_position = file->position; +} + +void __convert_from_newlines(unsigned char* p, size_t* n) { } + +int __flush_buffer(FILE* file, size_t* bytes_flushed) +{ + size_t buffer_len; + int ioresult; + + buffer_len = file->buffer_ptr - file->buffer; + + if (buffer_len) { + file->buffer_length = buffer_len; + + if (!file->file_mode.binary_io) + __convert_from_newlines(file->buffer, &file->buffer_length); + + ioresult = (*file->write_fn)(file->handle, file->buffer, + &file->buffer_length, file->idle_fn); + + if (bytes_flushed) + *bytes_flushed = file->buffer_length; + + if (ioresult) + return ioresult; + + file->position += file->buffer_length; + } + + __prep_buffer(file); + + return __no_io_error; +} diff --git a/src/MSL_C.PPCEABI.bare.H/ctype.c b/src/MSL_C.PPCEABI.bare.H/ctype.c new file mode 100644 index 00000000..e0a797cb --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/ctype.c @@ -0,0 +1,85 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h" + +#define ctrl __control_char +#define motn __motion_char +#define spac __space_char +#define punc __punctuation +#define digi __digit +#define hexd __hex_digit +#define lowc __lower_case +#define uppc __upper_case +#define dhex (hexd | digi) +#define uhex (hexd | uppc) +#define lhex (hexd | lowc) + +const unsigned char __ctype_map[256] = { + // clang-format off + ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, motn, motn, motn, motn, motn, ctrl, ctrl, + ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, ctrl, + spac, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, punc, + dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, dhex, punc, punc, punc, punc, punc, punc, + punc, uhex, uhex, uhex, uhex, uhex, uhex, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, + uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, uppc, punc, punc, punc, punc, punc, + punc, lhex, lhex, lhex, lhex, lhex, lhex, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, + lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, lowc, punc, punc, punc, punc, ctrl, + // clang-format on +}; + +const unsigned char __lower_map[256] = { + // clang-format off + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + ' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '[', '\\', ']', '^', '_', + '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', + 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, + // clang-format on +}; + +const unsigned char __upper_map[256] = { + // clang-format off + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + ' ', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', + '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^', '_', + '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '{', '|', '}', '~', 0x7F, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, + 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, + 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0xDF, + 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, + 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, + // clang-format on +}; + +int tolower(int __c) +{ + if (__c == -1) + return -1; + + return __lower_map[__c & 0xff]; +} + +int toupper(int __c) +{ + + if (__c == -1) + return -1; + + return __upper_map[__c & 0xff]; +} diff --git a/src/MSL_C.PPCEABI.bare.H/direct_io.c b/src/MSL_C.PPCEABI.bare.H/direct_io.c new file mode 100644 index 00000000..51184220 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/direct_io.c @@ -0,0 +1,114 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/buffer_io.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/misc_io.h" +#include "string.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h" + +size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream) +{ + unsigned char* write_ptr; + size_t num_bytes, bytes_to_go, bytes_written; + int ioresult, always_buffer; + + if (fwide(stream, 0) == 0) + fwide(stream, -1); + + bytes_to_go = size * count; + + if (!bytes_to_go || stream->file_state.error + || stream->file_mode.file_kind == __closed_file) + return 0; + + if ((int)stream->file_mode.file_kind == __console_file) + __stdio_atexit(); + + always_buffer = !stream->file_mode.binary_io + || (int)stream->file_mode.file_kind == __string_file + || stream->file_mode.buffer_mode == _IOFBF + || stream->file_mode.buffer_mode == _IOLBF; + + if (stream->file_state.io_state == __neutral) { + if (stream->file_mode.io_mode & __write) { + stream->file_state.io_state = __writing; + + __prep_buffer(stream); + } + } + + if (stream->file_state.io_state != __writing) { + set_error(stream); + return 0; + } + + write_ptr = (unsigned char*)buffer; + bytes_written = 0; + + if (bytes_to_go + && (stream->buffer_ptr != stream->buffer || always_buffer)) { + stream->buffer_length + = stream->buffer_size - (stream->buffer_ptr - stream->buffer); + + do { + unsigned char* newline = NULL; + + num_bytes = stream->buffer_length; + + if (num_bytes > bytes_to_go) + num_bytes = bytes_to_go; + + if (num_bytes) { + memcpy(stream->buffer_ptr, write_ptr, num_bytes); + + write_ptr += num_bytes; + bytes_written += num_bytes; + bytes_to_go -= num_bytes; + + stream->buffer_ptr += num_bytes; + stream->buffer_length -= num_bytes; + } + + if (!stream->buffer_length + && (int)stream->file_mode.file_kind == __string_file) { + bytes_written += bytes_to_go; + break; + } + + if (!stream->buffer_length || newline != NULL + || (stream->file_mode.buffer_mode == _IONBF)) { + ioresult = __flush_buffer(stream, NULL); + + if (ioresult) { + set_error(stream); + bytes_to_go = 0; + break; + } + } + } while (bytes_to_go && always_buffer); + } + + if (bytes_to_go && !always_buffer) { + unsigned char* save_buffer = stream->buffer; + size_t save_size = stream->buffer_size; + + stream->buffer = write_ptr; + stream->buffer_size = bytes_to_go; + stream->buffer_ptr = write_ptr + bytes_to_go; + + if (__flush_buffer(stream, &num_bytes) != __no_io_error) + set_error(stream); + + bytes_written += num_bytes; + + stream->buffer = save_buffer; + stream->buffer_size = save_size; + + __prep_buffer(stream); + + stream->buffer_length = 0; + } + + if (stream->file_mode.buffer_mode != _IOFBF) + stream->buffer_length = 0; + + return ((bytes_written + size - 1) / size); +} diff --git a/src/MSL_C.PPCEABI.bare.H/e_asin.c b/src/MSL_C.PPCEABI.bare.H/e_asin.c new file mode 100644 index 00000000..bc5754f4 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/e_asin.c @@ -0,0 +1,3 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +double fabs__Fd(double v) { return __fabs(v); } diff --git a/src/MSL_C.PPCEABI.bare.H/e_atan2.c b/src/MSL_C.PPCEABI.bare.H/e_atan2.c new file mode 100644 index 00000000..43b99afd --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/e_atan2.c @@ -0,0 +1,145 @@ + +/* @(#)e_atan2.c 1.3 95/01/18 */ +/** + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* __ieee754_atan2(y,x) + * Method : + * 1. Reduce y to positive by atan2(y,x)=-atan2(-y,x). + * 2. Reduce x to positive by (if x and y are unexceptional): + * ARG (x+iy) = arctan(y/x) ... if x > 0, + * ARG (x+iy) = pi - arctan[y/(-x)] ... if x < 0, + * + * Special cases: + * + * ATAN2((anything), NaN ) is NaN; + * ATAN2(NAN , (anything) ) is NaN; + * ATAN2(+-0, +(anything but NaN)) is +-0 ; + * ATAN2(+-0, -(anything but NaN)) is +-pi ; + * ATAN2(+-(anything but 0 and NaN), 0) is +-pi/2; + * ATAN2(+-(anything but INF and NaN), +INF) is +-0 ; + * ATAN2(+-(anything but INF and NaN), -INF) is +-pi; + * ATAN2(+-INF,+INF ) is +-pi/4 ; + * ATAN2(+-INF,-INF ) is +-3pi/4; + * ATAN2(+-INF, (anything but,0,NaN, and INF)) is +-pi/2; + * + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif + tiny + = 1.0e-300, + zero = 0.0, pi_o_4 = 7.8539816339744827900E-01, /* 0x3FE921FB, 0x54442D18 */ + pi_o_2 = 1.5707963267948965580E+00, /* 0x3FF921FB, 0x54442D18 */ + pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */ + pi_lo = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */ + +#ifdef __STDC__ +double __ieee754_atan2(double y, double x) +#else +double __ieee754_atan2(y, x) +double y, x; +#endif +{ + double z; + int k, m, hx, hy, ix, iy; + unsigned lx, ly; + + hx = __HI(x); + ix = hx & 0x7fffffff; + lx = __LO(x); + hy = __HI(y); + iy = hy & 0x7fffffff; + ly = __LO(y); + if (((ix | ((lx | -lx) >> 31)) > 0x7ff00000) + || ((iy | ((ly | -ly) >> 31)) > 0x7ff00000)) /* x or y is NaN */ + return x + y; + if ((hx - 0x3ff00000 | lx) == 0) + return atan(y); /* x=1.0 */ + m = ((hy >> 31) & 1) | ((hx >> 30) & 2); /* 2*sign(x)+sign(y) */ + + /* when y = 0 */ + if ((iy | ly) == 0) { + switch (m) { + case 0: + case 1: + return y; /* atan(+-0,+anything)=+-0 */ + case 2: + return pi + tiny; /* atan(+0,-anything) = pi */ + case 3: + return -pi - tiny; /* atan(-0,-anything) =-pi */ + } + } + /* when x = 0 */ + if ((ix | lx) == 0) + return (hy < 0) ? -pi_o_2 - tiny : pi_o_2 + tiny; + + /* when x is INF */ + if (ix == 0x7ff00000) { + if (iy == 0x7ff00000) { + switch (m) { + case 0: + return pi_o_4 + tiny; /* atan(+INF,+INF) */ + case 1: + return -pi_o_4 - tiny; /* atan(-INF,+INF) */ + case 2: + return 3.0 * pi_o_4 + tiny; /*atan(+INF,-INF)*/ + case 3: + return -3.0 * pi_o_4 - tiny; /*atan(-INF,-INF)*/ + } + } else { + switch (m) { + case 0: + return zero; /* atan(+...,+INF) */ + case 1: + return -zero; /* atan(-...,+INF) */ + case 2: + return pi + tiny; /* atan(+...,-INF) */ + case 3: + return -pi - tiny; /* atan(-...,-INF) */ + } + } + } + /* when y is INF */ + if (iy == 0x7ff00000) + return (hy < 0) ? -pi_o_2 - tiny : pi_o_2 + tiny; + + /* compute y/x */ + k = (iy - ix) >> 20; + if (k > 60) + z = pi_o_2 + 0.5 * pi_lo; /* |y/x| > 2**60 */ + else if (hx < 0 && k < -60) + z = 0.0; /* |y|/x < -2**60 */ + else + z = atan(fabs__Fd(y / x)); /* safe to do y/x */ + switch (m) { + case 0: + return z; /* atan(+,+) */ + case 1: + __HI(z) ^= 0x80000000; + return z; /* atan(-,+) */ + case 2: + return pi - (z - pi_lo); /* atan(+,-) */ + default: /* case 3 */ + return (z - pi_lo) - pi; /* atan(-,-) */ + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/errno.c b/src/MSL_C.PPCEABI.bare.H/errno.c new file mode 100644 index 00000000..fb0a2b41 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/errno.c @@ -0,0 +1,3 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h" + +int errno; diff --git a/src/MSL_C.PPCEABI.bare.H/float.c b/src/MSL_C.PPCEABI.bare.H/float.c new file mode 100644 index 00000000..f07b2812 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/float.c @@ -0,0 +1,5 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/float.h" + +unsigned long __float_nan[] = { 0x7FFFFFFF }; + +unsigned long __float_huge[] = { 0x7F800000 }; diff --git a/src/MSL_C.PPCEABI.bare.H/mbstring.c b/src/MSL_C.PPCEABI.bare.H/mbstring.c new file mode 100644 index 00000000..fa77c660 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/mbstring.c @@ -0,0 +1,18 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mbstring.h" + +size_t wcstombs(char* s, const wchar_t* pwcs, size_t n) +{ + wchar_t next; + size_t chars_written; + int i; + + chars_written = 0; + for (i = 0; i < n; ++i) { + next = *pwcs++; + *s++ = (char)next; + if ((char)next == '\0') + break; + ++chars_written; + } + return chars_written; +} diff --git a/src/MSL_C.PPCEABI.bare.H/mem.c b/src/MSL_C.PPCEABI.bare.H/mem.c new file mode 100644 index 00000000..63a4434f --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/mem.c @@ -0,0 +1,75 @@ +#include "string.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h" + +void* memmove(void* dst, const void* src, size_t n) +{ + unsigned char* csrc; + unsigned char* cdst; + + int reverse = (unsigned int)src < (unsigned int)dst; + + if (n >= 32) { + if (((unsigned int)dst ^ (unsigned int)src) & 3) { + if (!reverse) { + __copy_longs_unaligned(dst, src, n); + } else { + __copy_longs_rev_unaligned(dst, src, n); + } + } else { + if (!reverse) { + __copy_longs_aligned(dst, src, n); + } else { + __copy_longs_rev_aligned(dst, src, n); + } + } + + return dst; + } else { + if (!reverse) { + csrc = ((unsigned char*)src) - 1; + cdst = ((unsigned char*)dst) - 1; + n++; + + while (--n > 0) { + *++cdst = *++csrc; + } + } else { + csrc = (unsigned char*)src + n; + cdst = (unsigned char*)dst + n; + n++; + + while (--n > 0) { + *--cdst = *--csrc; + } + } + } + + return dst; +} + +void* memchr(const void* ptr, int ch, size_t count) +{ + const unsigned char* p; + + unsigned long v = (ch & 0xff); + + for (p = (unsigned char*)ptr - 1, count++; --count;) + if ((*++p & 0xff) == v) + return (void*)p; + + return NULL; +} + +int memcmp(const void* lhs, const void* rhs, size_t count) +{ + const unsigned char* p1; + const unsigned char* p2; + + for (p1 = (const unsigned char*)lhs - 1, p2 = (const unsigned char*)rhs - 1, + count++; + --count;) + if (*++p1 != *++p2) + return ((*p1 < *p2) ? -1 : +1); + + return 0; +} diff --git a/src/MSL_C.PPCEABI.bare.H/mem_funcs.c b/src/MSL_C.PPCEABI.bare.H/mem_funcs.c new file mode 100644 index 00000000..a22984c4 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/mem_funcs.c @@ -0,0 +1,221 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/mem_funcs.h" + +#define cps ((unsigned char*)src) +#define cpd ((unsigned char*)dst) +#define lps ((unsigned long*)src) +#define lpd ((unsigned long*)dst) +#define deref_auto_inc(p) *++(p) + +void __copy_longs_aligned(void* dst, const void* src, size_t n) +{ + unsigned long i; + + i = (-(unsigned long)dst) & 3; + + cps = ((unsigned char*)src) - 1; + cpd = ((unsigned char*)dst) - 1; + + if (i) { + n -= i; + + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--i); + } + + lps = ((unsigned long*)(cps + 1)) - 1; + lpd = ((unsigned long*)(cpd + 1)) - 1; + + i = n >> 5; + + if (i) + do { + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + deref_auto_inc(lpd) = deref_auto_inc(lps); + } while (--i); + + i = (n & 31) >> 2; + + if (i) + do + deref_auto_inc(lpd) = deref_auto_inc(lps); + while (--i); + + cps = ((unsigned char*)(lps + 1)) - 1; + cpd = ((unsigned char*)(lpd + 1)) - 1; + + n &= 3; + + if (n) + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--n); + + return; +} + +void __copy_longs_rev_aligned(void* dst, const void* src, size_t n) +{ + unsigned long i; + + cps = ((unsigned char*)src) + n; + cpd = ((unsigned char*)dst) + n; + + i = ((unsigned long)cpd) & 3; + + if (i) { + n -= i; + + do + *--cpd = *--cps; + while (--i); + } + + i = n >> 5; + + if (i) + do { + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + *--lpd = *--lps; + } while (--i); + + i = (n & 31) >> 2; + + if (i) + do + *--lpd = *--lps; + while (--i); + + n &= 3; + + if (n) + do + *--cpd = *--cps; + while (--n); + + return; +} + +void __copy_longs_unaligned(void* dst, const void* src, size_t n) +{ + unsigned long i, v1, v2; + unsigned int src_offset, left_shift, right_shift; + + i = (-(unsigned long)dst) & 3; + + cps = ((unsigned char*)src) - 1; + cpd = ((unsigned char*)dst) - 1; + + if (i) { + n -= i; + + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--i); + } + + src_offset = ((unsigned int)(cps + 1)) & 3; + + left_shift = src_offset << 3; + right_shift = 32 - left_shift; + + cps -= src_offset; + + lps = ((unsigned long*)(cps + 1)) - 1; + lpd = ((unsigned long*)(cpd + 1)) - 1; + + i = n >> 3; + + v1 = deref_auto_inc(lps); + + do { + v2 = deref_auto_inc(lps); + deref_auto_inc(lpd) = (v1 << left_shift) | (v2 >> right_shift); + v1 = deref_auto_inc(lps); + deref_auto_inc(lpd) = (v2 << left_shift) | (v1 >> right_shift); + } while (--i); + + if (n & 4) { + v2 = deref_auto_inc(lps); + deref_auto_inc(lpd) = (v1 << left_shift) | (v2 >> right_shift); + } + + cps = ((unsigned char*)(lps + 1)) - 1; + cpd = ((unsigned char*)(lpd + 1)) - 1; + + n &= 3; + + if (n) { + cps -= 4 - src_offset; + do + deref_auto_inc(cpd) = deref_auto_inc(cps); + while (--n); + } + + return; +} + +void __copy_longs_rev_unaligned(void* dst, const void* src, size_t n) +{ + unsigned long i, v1, v2; + unsigned int src_offset, left_shift, right_shift; + + cps = ((unsigned char*)src) + n; + cpd = ((unsigned char*)dst) + n; + + i = ((unsigned long)cpd) & 3; + + if (i) { + n -= i; + + do + *--cpd = *--cps; + while (--i); + } + + src_offset = ((unsigned int)cps) & 3; + + left_shift = src_offset << 3; + right_shift = 32 - left_shift; + + cps += 4 - src_offset; + + i = n >> 3; + + v1 = *--lps; + + do { + v2 = *--lps; + *--lpd = (v2 << left_shift) | (v1 >> right_shift); + v1 = *--lps; + *--lpd = (v1 << left_shift) | (v2 >> right_shift); + } while (--i); + + if (n & 4) { + v2 = *--lps; + *--lpd = (v2 << left_shift) | (v1 >> right_shift); + } + + n &= 3; + + if (n) { + cps += src_offset; + do + *--cpd = *--cps; + while (--n); + } + + return; +} diff --git a/src/MSL_C.PPCEABI.bare.H/misc_io.c b/src/MSL_C.PPCEABI.bare.H/misc_io.c new file mode 100644 index 00000000..2b6c9913 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/misc_io.c @@ -0,0 +1 @@ +void __stdio_atexit(void) { } diff --git a/src/MSL_C.PPCEABI.bare.H/printf.c b/src/MSL_C.PPCEABI.bare.H/printf.c new file mode 100644 index 00000000..21d248da --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/printf.c @@ -0,0 +1,1076 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/printf.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ansi_fp.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/direct_io.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdio.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/stdlib.h" +#include "string.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h" +#include "stdarg.h" + +extern void __num2dec(const decform*, double, decimal*); + +#define TARGET_FLOAT_BITS 64 +#define TARGET_FLOAT_BYTES (TARGET_FLOAT_BITS / 8) +#define TARGET_FLOAT_MAX_EXP LDBL_MAX_EXP +#define TARGET_FLOAT_MANT_DIG LDBL_MANT_DIG +#define TARGET_FLOAT_IMPLICIT_J_BIT 1 +#define TARGET_FLOAT_MANT_BITS \ + (TARGET_FLOAT_MANT_DIG - TARGET_FLOAT_IMPLICIT_J_BIT) +#define TARGET_FLOAT_EXP_BITS (TARGET_FLOAT_BITS - TARGET_FLOAT_MANT_BITS - 1) + +enum justification_options { + left_justification, + right_justification, + zero_fill +}; + +enum sign_options { only_minus, sign_always, space_holder }; + +enum argument_options { + normal_argument, + char_argument, + short_argument, + long_argument, + long_long_argument, + long_double_argument, + wchar_argument +}; + +typedef struct { + unsigned char justification_options; + unsigned char sign_options; + unsigned char precision_specified; + unsigned char alternate_form; + unsigned char argument_options; + unsigned char conversion_char; + int field_width; + int precision; +} print_format; + +static const char* parse_format(const char* format_string, va_list* arg, + print_format* format) +{ + print_format f; + const char* s = format_string; + int c; + int flag_found; + f.justification_options = right_justification; + f.sign_options = only_minus; + f.precision_specified = 0; + f.alternate_form = 0; + f.argument_options = normal_argument; + f.field_width = 0; + f.precision = 0; + + if ((c = *++s) == '%') { + f.conversion_char = c; + *format = f; + return ((const char*)s + 1); + } + + for (;;) { + flag_found = 1; + + switch (c) { + case '-': + f.justification_options = left_justification; + break; + case '+': + f.sign_options = sign_always; + break; + case ' ': + if (f.sign_options != sign_always) { + f.sign_options = space_holder; + } + break; + case '#': + f.alternate_form = 1; + break; + case '0': + if (f.justification_options != left_justification) { + f.justification_options = zero_fill; + } + break; + default: + flag_found = 0; + break; + } + + if (flag_found) { + c = *++s; + } else { + break; + } + } + + if (c == '*') { + if ((f.field_width = va_arg(*arg, int)) < 0) { + f.justification_options = left_justification; + f.field_width = -f.field_width; + } + + c = *++s; + } else { + while (isdigit(c)) { + f.field_width = (f.field_width * 10) + (c - '0'); + c = *++s; + } + } + + if (f.field_width > 509) { + f.conversion_char = 0xFF; + *format = f; + return ((const char*)s + 1); + } + + if (c == '.') { + f.precision_specified = 1; + + if ((c = *++s) == '*') { + if ((f.precision = va_arg(*arg, int)) < 0) { + f.precision_specified = 0; + } + + c = *++s; + } else { + while (isdigit(c)) { + f.precision = (f.precision * 10) + (c - '0'); + c = *++s; + } + } + } + + flag_found = 1; + + switch (c) { + case 'h': + f.argument_options = short_argument; + + if (s[1] == 'h') { + f.argument_options = char_argument; + c = *++s; + } + + break; + + case 'l': + f.argument_options = long_argument; + + if (s[1] == 'l') { + f.argument_options = long_long_argument; + c = *++s; + } + + break; + + case 'L': + f.argument_options = long_double_argument; + break; + default: + flag_found = 0; + break; + } + + if (flag_found) { + c = *++s; + } + + f.conversion_char = c; + + switch (c) { + case 'd': + case 'i': + case 'u': + case 'o': + case 'x': + case 'X': + if (f.argument_options == long_double_argument) { + f.conversion_char = 0xFF; + break; + } + + if (!f.precision_specified) { + f.precision = 1; + } else if (f.justification_options == zero_fill) { + f.justification_options = right_justification; + } + break; + + case 'f': + if (f.argument_options == short_argument + || f.argument_options == long_long_argument) { + f.conversion_char = 0xFF; + break; + } + + if (!f.precision_specified) { + f.precision = 6; + } + break; + + case 'g': + case 'G': + if (!f.precision) { + f.precision = 1; + } + + case 'e': + case 'E': + if (f.argument_options == short_argument + || f.argument_options == long_long_argument + || f.argument_options == char_argument) { + f.conversion_char = 0xFF; + break; + } + + if (!f.precision_specified) { + f.precision = 6; + } + break; + + case 'p': + f.conversion_char = 'x'; + f.alternate_form = 1; + f.argument_options = long_argument; + f.precision = 8; + break; + + case 'c': + if (f.argument_options == long_argument) { + f.argument_options = wchar_argument; + } else { + if (f.precision_specified + || f.argument_options != normal_argument) { + f.conversion_char = 0xFF; + } + } + + break; + + case 's': + if (f.argument_options == long_argument) { + f.argument_options = wchar_argument; + } else { + if (f.argument_options != normal_argument) { + f.conversion_char = 0xFF; + } + } + + break; + + case 'n': + if (f.argument_options == long_double_argument) { + f.conversion_char = 0xFF; + } + + break; + + default: + f.conversion_char = 0xFF; + break; + } + + *format = f; + return ((const char*)s + 1); +} + +static char* long2str(signed long num, char* buff, print_format* format) +{ + unsigned long unsigned_num, base; + char* p; + int n, digits; + int minus = 0; + unsigned_num = num; + minus = 0; + + p = buff; + *--p = 0; + digits = 0; + + if (!num && !format->precision + && !(format->alternate_form && format->conversion_char == 'o')) { + return p; + } + + switch (format->conversion_char) { + case 'd': + case 'i': + base = 10; + + if (num < 0) { + unsigned_num = -unsigned_num; + minus = 1; + } + break; + + case 'o': + base = 8; + format->sign_options = only_minus; + break; + + case 'u': + base = 10; + format->sign_options = only_minus; + break; + + case 'x': + case 'X': + base = 16; + format->sign_options = only_minus; + break; + } + + do { + n = unsigned_num % base; + unsigned_num /= base; + + if (n < 10) { + n += '0'; + } else { + n -= 10; + + if (format->conversion_char == 'x') { + n += 'a'; + } else { + n += 'A'; + } + } + + *--p = n; + ++digits; + } while (unsigned_num != 0); + + if (base == 8 && format->alternate_form && *p != '0') { + *--p = '0'; + ++digits; + } + + if (format->justification_options == zero_fill) { + format->precision = format->field_width; + + if (minus || format->sign_options != only_minus) + --format->precision; + + if (base == 16 && format->alternate_form) + format->precision -= 2; + } + + if (buff - p + format->precision > 509) + return (0); + + while (digits < format->precision) { + *--p = '0'; + ++digits; + } + + if (base == 16 && format->alternate_form) { + *--p = format->conversion_char; + *--p = '0'; + } + + if (minus) { + *--p = '-'; + } else if (format->sign_options == sign_always) { + *--p = '+'; + } else if (format->sign_options == space_holder) { + *--p = ' '; + } + + return p; +} + +static char* longlong2str(signed long long num, char* pBuf, print_format* fmt) +{ + unsigned long long unsigned_num, base; + char* p; + int n, digits; + int minus = 0; + unsigned_num = num; + minus = 0; + p = pBuf; + *--p = 0; + digits = 0; + + if (!num && !fmt->precision + && !(fmt->alternate_form && fmt->conversion_char == 'o')) { + return p; + } + + switch (fmt->conversion_char) { + case 'd': + case 'i': + base = 10; + + if (num < 0) { + unsigned_num = -unsigned_num; + minus = 1; + } + break; + case 'o': + base = 8; + fmt->sign_options = only_minus; + break; + case 'u': + base = 10; + fmt->sign_options = only_minus; + break; + case 'x': + case 'X': + base = 16; + fmt->sign_options = only_minus; + break; + } + + do { + n = unsigned_num % base; + unsigned_num /= base; + + if (n < 10) { + n += '0'; + } else { + n -= 10; + if (fmt->conversion_char == 'x') { + n += 'a'; + } else { + n += 'A'; + } + } + + *--p = n; + ++digits; + } while (unsigned_num != 0); + + if (base == 8 && fmt->alternate_form && *p != '0') { + *--p = '0'; + ++digits; + } + + if (fmt->justification_options == zero_fill) { + fmt->precision = fmt->field_width; + + if (minus || fmt->sign_options != only_minus) { + --fmt->precision; + } + + if (base == 16 && fmt->alternate_form) { + fmt->precision -= 2; + } + } + + if (pBuf - p + fmt->precision > 509) { + return 0; + } + + while (digits < fmt->precision) { + *--p = '0'; + ++digits; + } + + if (base == 16 && fmt->alternate_form) { + *--p = fmt->conversion_char; + *--p = '0'; + } + + if (minus) { + *--p = '-'; + } else if (fmt->sign_options == sign_always) { + *--p = '+'; + } else if (fmt->sign_options == space_holder) { + *--p = ' '; + } + + return p; +} + +static void round_decimal(decimal* dec, int new_length) +{ + char c; + char* p; + int carry; + + if (new_length < 0) { + return_zero: + dec->sign = 0; + dec->exp = 0; + dec->sig.length = 1; + *dec->sig.text = '0'; + return; + } + + if (new_length >= dec->sig.length) { + return; + } + + p = (char*)dec->sig.text + new_length + 1; + c = *--p - '0'; + + if (c == 5) { + char* q = &((char*)dec->sig.text)[dec->sig.length]; + + while (--q > p && *q == '0') + ; + carry = (q == p) ? p[-1] & 1 : 1; + } else { + carry = (c > 5); + } + + while (new_length != 0) { + c = *--p - '0' + carry; + + if ((carry = (c > 9)) != 0 || c == 0) { + --new_length; + } else { + *p = c + '0'; + break; + } + } + + if (carry != 0) { + dec->exp += 1; + dec->sig.length = 1; + *dec->sig.text = '1'; + return; + } else if (new_length == 0) { + goto return_zero; + } + + dec->sig.length = new_length; +} + +static char* float2str(va_list arg, char* buff, print_format* format, + int vecIndex) +{ + decimal dec; + decform form; + char* p; + char* q; + int n, digits, sign; + int int_digits, frac_digits; + long double num; + + if (format->argument_options == long_double_argument) { + num = va_arg(arg, long double); + } else { + num = va_arg(arg, double); + } + + if (format->precision > 509) { + return 0; + } + + form.style = 0; + form.digits = 0x20; + __num2dec(&form, num, &dec); + p = (char*)dec.sig.text + dec.sig.length; + + while (dec.sig.length > 1 && *--p == '0') { + --dec.sig.length; + ++dec.exp; + } + + switch (*dec.sig.text) { + case '0': + dec.exp = 0; + break; + case 'I': + if (num < 0) { + p = buff - 5; + strcpy(p, "-Inf"); + } else { + p = buff - 4; + strcpy(p, "Inf"); + } + + return p; + + case 'N': + p = buff - 4; + strcpy(p, "NaN"); + return p; + } + + dec.exp += dec.sig.length - 1; + p = buff; + *--p = 0; + + switch (format->conversion_char) { + case 'g': + case 'G': + + if (dec.sig.length > format->precision) { + round_decimal(&dec, format->precision); + } + + if (dec.exp < -4 || dec.exp >= format->precision) { + if (format->alternate_form) { + --format->precision; + } else { + format->precision = dec.sig.length - 1; + } + + if (format->conversion_char == 'g') { + format->conversion_char = 'e'; + } else { + format->conversion_char = 'E'; + } + + goto e_format; + } + + if (format->alternate_form) { + format->precision -= dec.exp + 1; + } else { + if ((format->precision = dec.sig.length - (dec.exp + 1)) < 0) { + format->precision = 0; + } + } + + goto f_format; + + case 'e': + case 'E': + e_format: + + if (dec.sig.length > format->precision + 1) { + round_decimal(&dec, format->precision + 1); + } + + n = dec.exp; + sign = '+'; + + if (n < 0) { + n = -n; + sign = '-'; + } + + for (digits = 0; n || digits < 2; ++digits) { + *--p = n % 10 + '0'; + n /= 10; + } + + *--p = sign; + *--p = format->conversion_char; + + if (buff - p + format->precision > 509) { + return 0; + } + + if (dec.sig.length < format->precision + 1) { + for (n = format->precision + 1 - dec.sig.length + 1; --n;) { + *--p = '0'; + } + } + + for (n = dec.sig.length, q = (char*)dec.sig.text + dec.sig.length; + --n;) { + *--p = *--q; + } + + if (format->precision || format->alternate_form) { + *--p = '.'; + } + + *--p = *dec.sig.text; + + if (dec.sign) + *--p = '-'; + else if (format->sign_options == sign_always) + *--p = '+'; + else if (format->sign_options == space_holder) + *--p = ' '; + + break; + + case 'f': + f_format: + + if ((frac_digits = -dec.exp + dec.sig.length - 1) < 0) + frac_digits = 0; + + if (frac_digits > format->precision) { + round_decimal(&dec, + dec.sig.length - (frac_digits - format->precision)); + + if ((frac_digits = -dec.exp + dec.sig.length - 1) < 0) + frac_digits = 0; + } + + if ((int_digits = dec.exp + 1) < 0) + int_digits = 0; + + if (int_digits + frac_digits > 509) + return 0; + + q = (char*)dec.sig.text + dec.sig.length; + + for (digits = 0; digits < (format->precision - frac_digits); ++digits) + *--p = '0'; + + for (digits = 0; digits < frac_digits && digits < dec.sig.length; + ++digits) + *--p = *--q; + + for (; digits < frac_digits; ++digits) + *--p = '0'; + + if (format->precision || format->alternate_form) + *--p = '.'; + + if (int_digits) { + for (digits = 0; digits < int_digits - dec.sig.length; ++digits) { + *--p = '0'; + } + + for (; digits < int_digits; ++digits) { + *--p = *--q; + } + } else { + *--p = '0'; + } + + if (dec.sign) { + *--p = '-'; + } else if (format->sign_options == sign_always) { + *--p = '+'; + } else if (format->sign_options == space_holder) { + *--p = ' '; + } + + break; + } + + return p; +} + +static int __pformatter(void* (*WriteProc)(void*, const char*, size_t), + void* WriteProcArg, const char* format_str, va_list arg) +{ + int num_chars, chars_written, field_width; + const char* format_ptr; + const char* curr_format; + print_format format; + signed long long_num; + signed long long long_long_num; + char buff[512]; + char* buff_ptr; + char* string_end; + char fill_char = ' '; + + format_ptr = format_str; + chars_written = 0; + + while (*format_ptr) { + if (!(curr_format = strchr(format_ptr, '%'))) { + num_chars = strlen(format_ptr); + chars_written += num_chars; + + if (num_chars + && !(*WriteProc)(WriteProcArg, format_ptr, num_chars)) { + return -1; + } + + break; + } + + num_chars = curr_format - format_ptr; + chars_written += num_chars; + + if (num_chars && !(*WriteProc)(WriteProcArg, format_ptr, num_chars)) { + return -1; + } + + format_ptr = curr_format; + format_ptr = parse_format(format_ptr, (va_list*)arg, &format); + + switch (format.conversion_char) { + case 'd': + case 'i': + if (format.argument_options == long_argument) { + long_num = va_arg(arg, signed long); + } else if (format.argument_options == long_long_argument) { + long_long_num = va_arg(arg, signed long long); + } else { + long_num = va_arg(arg, int); + } + + if (format.argument_options == short_argument) { + long_num = (signed short)long_num; + } + + if (format.argument_options == char_argument) { + long_num = (signed char)long_num; + } + + if (format.argument_options == long_long_argument) { + if (!(buff_ptr + = longlong2str(long_long_num, buff + 512, &format))) { + goto conversion_error; + } + } else { + if (!(buff_ptr = long2str(long_num, buff + 512, &format))) { + goto conversion_error; + } + } + + num_chars = buff + 512 - 1 - buff_ptr; + break; + + case 'o': + case 'u': + case 'x': + case 'X': + if (format.argument_options == long_argument) { + long_num = va_arg(arg, unsigned long); + } else if (format.argument_options == long_long_argument) { + long_long_num = va_arg(arg, signed long long); + } else { + long_num = va_arg(arg, unsigned int); + } + + if (format.argument_options == short_argument) { + long_num = (unsigned short)long_num; + } + + if (format.argument_options == char_argument) { + long_num = (unsigned char)long_num; + } + + if (format.argument_options == long_long_argument) { + if (!(buff_ptr + = longlong2str(long_long_num, buff + 512, &format))) { + goto conversion_error; + } + } else { + if (!(buff_ptr = long2str(long_num, buff + 512, &format))) { + goto conversion_error; + } + } + + num_chars = buff + 512 - 1 - buff_ptr; + break; + + case 'f': + case 'e': + case 'E': + case 'g': + case 'G': + if (!(buff_ptr = float2str(arg, buff + 512, &format, 0))) { + goto conversion_error; + } + + num_chars = buff + 512 - 1 - buff_ptr; + break; + + case 's': + if (format.argument_options == wchar_argument) { + wchar_t* wcs_ptr = va_arg(arg, wchar_t*); + + if (wcs_ptr == NULL) { + wcs_ptr = L""; + } + + if ((num_chars = wcstombs(buff, wcs_ptr, sizeof(buff))) < 0) { + goto conversion_error; + } + + buff_ptr = &buff[0]; + } else { + buff_ptr = va_arg(arg, char*); + } + + if (buff_ptr == NULL) { + buff_ptr = ""; + } + + if (format.alternate_form) { + num_chars = (unsigned char)*buff_ptr++; + + if (format.precision_specified + && num_chars > format.precision) { + num_chars = format.precision; + } + } else if (format.precision_specified) { + num_chars = format.precision; + + if ((string_end + = (char*)memchr((unsigned char*)buff_ptr, 0, num_chars)) + != 0) { + num_chars = string_end - buff_ptr; + } + } else { + num_chars = strlen(buff_ptr); + } + + break; + + case 'n': + buff_ptr = va_arg(arg, char*); + + switch (format.argument_options) { + case normal_argument: + *(int*)buff_ptr = chars_written; + break; + case short_argument: + *(signed short*)buff_ptr = chars_written; + break; + case long_argument: + *(signed long*)buff_ptr = chars_written; + break; + case long_long_argument: + *(signed long long*)buff_ptr = chars_written; + break; + } + + continue; + + case 'c': + buff_ptr = buff; + *buff_ptr = va_arg(arg, int); + num_chars = 1; + break; + + case '%': + buff_ptr = buff; + *buff_ptr = '%'; + num_chars = 1; + break; + + case 0xFF: + default: + conversion_error: + num_chars = strlen(curr_format); + chars_written += num_chars; + + if (num_chars + && !(*WriteProc)(WriteProcArg, curr_format, num_chars)) { + return -1; + } + + return chars_written; + break; + } + + field_width = num_chars; + + if (format.justification_options != left_justification) { + fill_char = (format.justification_options == zero_fill) ? '0' : ' '; + + if (((*buff_ptr == '+') || (*buff_ptr == '-')) + && (fill_char == '0')) { + if ((*WriteProc)(WriteProcArg, buff_ptr, 1) == 0) { + return -1; + } + + ++buff_ptr; + num_chars--; + } + + while (field_width < format.field_width) { + if ((*WriteProc)(WriteProcArg, &fill_char, 1) == 0) { + return -1; + } + + ++field_width; + } + } + + if (num_chars && !(*WriteProc)(WriteProcArg, buff_ptr, num_chars)) { + return -1; + } + + if (format.justification_options == left_justification) { + while (field_width < format.field_width) { + char blank = ' '; + + if ((*WriteProc)(WriteProcArg, &blank, 1) == 0) { + return -1; + } + + ++field_width; + } + } + + chars_written += field_width; + } + + return chars_written; +} + +static void* __FileWrite(void* pFile, const char* pBuffer, size_t char_num) +{ + return (fwrite(pBuffer, 1, char_num, (FILE*)pFile) == char_num ? pFile : 0); +} + +static void* __StringWrite(void* pCtrl, const char* pBuffer, size_t char_num) +{ + size_t chars; + __OutStrCtrl* ctrl = (__OutStrCtrl*)pCtrl; + void* res; + + chars = ((ctrl->CharsWritten + char_num) <= ctrl->MaxCharCount) + ? char_num + : ctrl->MaxCharCount - ctrl->CharsWritten; + res = memcpy(ctrl->CharStr + ctrl->CharsWritten, pBuffer, chars); + ctrl->CharsWritten += chars; + return res; +} + +int printf(const char* format, ...) +{ + int res; + + if (fwide(stdout, -1) >= 0) { + return -1; + } + + { + va_list args; + va_start(args, format); + res = __pformatter(&__FileWrite, (void*)stdout, format, args); + } + + return res; +} + +int vprintf(const char* format, va_list arg) +{ + int ret; + + if (fwide(stdout, -1) >= 0) { + return -1; + } + + ret = __pformatter(&__FileWrite, (void*)stdout, format, arg); + return ret; +} + +int vsnprintf(char* s, size_t n, const char* format, va_list arg) +{ + int end; + __OutStrCtrl osc; + osc.CharStr = s; + osc.MaxCharCount = n; + osc.CharsWritten = 0; + + end = __pformatter(&__StringWrite, &osc, format, arg); + + s[(end < n) ? end : n - 1] = '\0'; + + return end; +} + +int snprintf(char* s, size_t n, const char* format, ...) +{ + va_list args; + va_start(args, format); + return vsnprintf(s, n, format, args); +} + +int sprintf(char* s, const char* format, ...) +{ + va_list args; + va_start(args, format); + return vsnprintf(s, 0xFFFFFFFF, format, args); +} diff --git a/src/MSL_C.PPCEABI.bare.H/rand.c b/src/MSL_C.PPCEABI.bare.H/rand.c new file mode 100644 index 00000000..4d57c3e5 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/rand.c @@ -0,0 +1,13 @@ +#include "dolphin.h" + +// rand.c from Runtime library + +u32 next = 1; + +u32 rand(void) +{ + next = 0x41C64E6D * next + 12345; + return (next >> 16) & 0x7FFF; +} + +void srand(u32 seed) { next = seed; } diff --git a/src/MSL_C.PPCEABI.bare.H/s_atan.c b/src/MSL_C.PPCEABI.bare.H/s_atan.c new file mode 100644 index 00000000..6d72b440 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/s_atan.c @@ -0,0 +1,148 @@ + +/* @(#)s_atan.c 1.3 95/01/18 */ +/** + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* atan(x) + * Method + * 1. Reduce x to positive by atan(x) = -atan(-x). + * 2. According to the integer k=4t+0.25 chopped, t=x, the argument + * is further reduced to one of the following intervals and the + * arctangent of t is evaluated by the corresponding formula: + * + * [0,7/16] atan(x) = t-t^3*(a1+t^2*(a2+...(a10+t^2*a11)...) + * [7/16,11/16] atan(x) = atan(1/2) + atan( (t-0.5)/(1+t/2) ) + * [11/16.19/16] atan(x) = atan( 1 ) + atan( (t-1)/(1+t) ) + * [19/16,39/16] atan(x) = atan(3/2) + atan( (t-1.5)/(1+1.5t) ) + * [39/16,INF] atan(x) = atan(INF) + atan( -1/t ) + * + * Constants: + * The hexadecimal values are the intended ones for the following + * constants. The decimal values may be used, provided that the + * compiler will convert from decimal to binary accurately enough + * to produce the hexadecimal values shown. + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const double atanhi[] = { +#else +static double atanhi[] = { +#endif + 4.63647609000806093515e-01, /* atan(0.5)hi 0x3FDDAC67, 0x0561BB4F */ + 7.85398163397448278999e-01, /* atan(1.0)hi 0x3FE921FB, 0x54442D18 */ + 9.82793723247329054082e-01, /* atan(1.5)hi 0x3FEF730B, 0xD281F69B */ + 1.57079632679489655800e+00, /* atan(inf)hi 0x3FF921FB, 0x54442D18 */ +}; + +#ifdef __STDC__ +static const double atanlo[] = { +#else +static double atanlo[] = { +#endif + 2.26987774529616870924e-17, /* atan(0.5)lo 0x3C7A2B7F, 0x222F65E2 */ + 3.06161699786838301793e-17, /* atan(1.0)lo 0x3C81A626, 0x33145C07 */ + 1.39033110312309984516e-17, /* atan(1.5)lo 0x3C700788, 0x7AF0CBBD */ + 6.12323399573676603587e-17, /* atan(inf)lo 0x3C91A626, 0x33145C07 */ +}; + +#ifdef __STDC__ +static const double aT[] = { +#else +static double aT[] = { +#endif + 3.33333333333329318027e-01, /* 0x3FD55555, 0x5555550D */ + -1.99999999998764832476e-01, /* 0xBFC99999, 0x9998EBC4 */ + 1.42857142725034663711e-01, /* 0x3FC24924, 0x920083FF */ + -1.11111104054623557880e-01, /* 0xBFBC71C6, 0xFE231671 */ + 9.09088713343650656196e-02, /* 0x3FB745CD, 0xC54C206E */ + -7.69187620504482999495e-02, /* 0xBFB3B0F2, 0xAF749A6D */ + 6.66107313738753120669e-02, /* 0x3FB10D66, 0xA0D03D51 */ + -5.83357013379057348645e-02, /* 0xBFADDE2D, 0x52DEFD9A */ + 4.97687799461593236017e-02, /* 0x3FA97B4B, 0x24760DEB */ + -3.65315727442169155270e-02, /* 0xBFA2B444, 0x2C6A6C2F */ + 1.62858201153657823623e-02, /* 0x3F90AD3A, 0xE322DA11 */ +}; + +#ifdef __STDC__ +static const double +#else +static double +#endif + one + = 1.0, + huge = 1.0e300; + +#ifdef __STDC__ +double atan(double x) +#else +double atan(x) +double x; +#endif +{ + double w, s1, s2, z; + int ix, hx, id; + + hx = __HI(x); + ix = hx & 0x7fffffff; + if (ix >= 0x44100000) { /* if |x| >= 2^66 */ + if (ix > 0x7ff00000 || (ix == 0x7ff00000 && (__LO(x) != 0))) + return x + x; /* NaN */ + if (hx > 0) + return atanhi[3] + atanlo[3]; + else + return -atanhi[3] - atanlo[3]; + } + if (ix < 0x3fdc0000) { /* |x| < 0.4375 */ + if (ix < 0x3e200000) { /* |x| < 2^-29 */ + if (huge + x > one) + return x; /* raise inexact */ + } + id = -1; + } else { + x = fabs__Fd(x); + if (ix < 0x3ff30000) { /* |x| < 1.1875 */ + if (ix < 0x3fe60000) { /* 7/16 <=|x|<11/16 */ + id = 0; + x = (2.0 * x - one) / (2.0 + x); + } else { /* 11/16<=|x|< 19/16 */ + id = 1; + x = (x - one) / (x + one); + } + } else { + if (ix < 0x40038000) { /* |x| < 2.4375 */ + id = 2; + x = (x - 1.5) / (one + 1.5 * x); + } else { /* 2.4375 <= |x| < 2^66 */ + id = 3; + x = -1.0 / x; + } + } + } + /* end of argument reduction */ + z = x * x; + w = z * z; + /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */ + s1 = z + * (aT[0] + + w + * (aT[2] + + w * (aT[4] + w * (aT[6] + w * (aT[8] + w * aT[10]))))); + s2 = w * (aT[1] + w * (aT[3] + w * (aT[5] + w * (aT[7] + w * aT[9])))); + if (id < 0) + return x - x * (s1 + s2); + else { + z = atanhi[id] - ((x * (s1 + s2) - atanlo[id]) - x); + return (hx < 0) ? -z : z; + } +} diff --git a/src/MSL_C.PPCEABI.bare.H/s_frexp.c b/src/MSL_C.PPCEABI.bare.H/s_frexp.c new file mode 100644 index 00000000..a7bb05c4 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/s_frexp.c @@ -0,0 +1,58 @@ +/* @(#)s_frexp.c 1.4 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + */ + +/* + * for non-zero x + * x = frexp(arg,&exp); + * return a double fp quantity x such that 0.5 <= |x| <1.0 + * and the corresponding binary exponent "exp". That is + * arg = x*2^exp. + * If arg is inf, 0.0, or NaN, then frexp(arg,&exp) returns arg + * with *exp=0. + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +static const double +#else +static double +#endif + two54 + = 1.80143985094819840000e+16; /* 0x43500000, 0x00000000 */ + +#ifdef __STDC__ +double frexp(double x, int* eptr) +#else +double frexp(x, eptr) +double x; +int* eptr; +#endif +{ + int hx, ix, lx; + hx = __HI(x); + ix = 0x7fffffff & hx; + lx = __LO(x); + *eptr = 0; + if (ix >= 0x7ff00000 || ((ix | lx) == 0)) + return x; /* 0,inf,nan */ + if (ix < 0x00100000) { /* subnormal */ + x *= two54; + hx = __HI(x); + ix = hx & 0x7fffffff; + *eptr = -54; + } + *eptr += (ix >> 20) - 1022; + hx = (hx & 0x800fffff) | 0x3fe00000; + __HI(x) = hx; + return x; +} diff --git a/src/MSL_C.PPCEABI.bare.H/scanf.c b/src/MSL_C.PPCEABI.bare.H/scanf.c new file mode 100644 index 00000000..a8f273ec --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/scanf.c @@ -0,0 +1,34 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h" + +int __StringRead(void* pPtr, int ch, int act) +{ + char ret; + __InStrCtrl* Iscp = (__InStrCtrl*)pPtr; + + switch (act) { + case __GetAChar: + ret = *(Iscp->NextChar); + + if (ret == '\0') { + Iscp->NullCharDetected = 1; + return -1; + } else { + Iscp->NextChar++; + return ret; + } + + case __UngetAChar: + if (Iscp->NullCharDetected == 0) { + Iscp->NextChar--; + } else { + Iscp->NullCharDetected = 0; + } + + return ch; + + case __TestForError: + return Iscp->NullCharDetected; + } + + return 0; +} diff --git a/src/MSL_C.PPCEABI.bare.H/string.c b/src/MSL_C.PPCEABI.bare.H/string.c new file mode 100644 index 00000000..833447df --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/string.c @@ -0,0 +1,257 @@ +#include "string.h" + +static int K1 = 0x80808080; +static int K2 = 0xFEFEFEFF; + +size_t strlen(const char* str) +{ + size_t len = -1; + unsigned char* p = (unsigned char*)str - 1; + + do { + len++; + } while (*++p); + + return len; +} + +char* strcpy(char* dst, const char* src) +{ + register unsigned char *destb, *fromb; + register unsigned long w, t, align; + register unsigned int k1; + register unsigned int k2; + + fromb = (unsigned char*)src; + destb = (unsigned char*)dst; + + if ((align = ((int)fromb & 3)) != ((int)destb & 3)) { + goto bytecopy; + } + + if (align) { + if ((*destb = *fromb) == 0) { + return dst; + } + + for (align = 3 - align; align; align--) { + if ((*(++destb) = *(++fromb)) == 0) { + return dst; + } + } + ++destb; + ++fromb; + } + + k1 = K1; + k2 = K2; + + w = *((int*)(fromb)); + + t = w + k2; + + t &= k1; + if (t) { + goto bytecopy; + } + --((int*)(destb)); + + do { + *(++((int*)(destb))) = w; + w = *(++((int*)(fromb))); + + t = w + k2; + t &= k1; + if (t) { + goto adjust; + } + } while (1); + +adjust: + ++((int*)(destb)); + +bytecopy: + if ((*destb = *fromb) == 0) { + return dst; + } + + do { + if ((*(++destb) = *(++fromb)) == 0) { + return dst; + } + } while (1); + + return dst; +} + +char* strncpy(char* dst, const char* src, size_t n) +{ + const unsigned char* p = (const unsigned char*)src - 1; + unsigned char* q = (unsigned char*)dst - 1; + + n++; + while (--n) { + if (!(*++q = *++p)) { + while (--n) { + *++q = 0; + } + break; + } + } + + return dst; +} + +char* strcat(char* dst, const char* src) +{ + const unsigned char* p = (unsigned char*)src - 1; + unsigned char* q = (unsigned char*)dst - 1; + + while (*++q) { } + + q--; + + while (*++q = *++p) { } + + return dst; +} + +int strcmp(const char* str1, const char* str2) +{ + register unsigned char* left = (unsigned char*)str1; + register unsigned char* right = (unsigned char*)str2; + unsigned long align, l1, r1, x; + + l1 = *left; + r1 = *right; + if (l1 - r1) { + return l1 - r1; + } + + if ((align = ((int)left & 3)) != ((int)right & 3)) { + goto bytecopy; + } + + if (align) { + if (l1 == 0) { + return 0; + } + for (align = 3 - align; align; align--) { + l1 = *(++left); + r1 = *(++right); + if (l1 - r1) { + return l1 - r1; + } + if (l1 == 0) { + return 0; + } + } + left++; + right++; + } + + l1 = *(int*)left; + r1 = *(int*)right; + x = l1 + K2; + if (x & K1) { + goto adjust; + } + + while (l1 == r1) { + l1 = *(++((int*)(left))); + r1 = *(++((int*)(right))); + x = l1 + K2; + if (x & K1) { + goto adjust; + } + } + + if (l1 > r1) { + return 1; + } + return -1; + +adjust: + l1 = *left; + r1 = *right; + if (l1 - r1) { + return l1 - r1; + } + +bytecopy: + if (l1 == 0) { + return 0; + } + + do { + l1 = *(++left); + r1 = *(++right); + if (l1 - r1) { + return l1 - r1; + } + if (l1 == 0) { + return 0; + } + } while (1); +} + +char* strchr(const char* str, int c) +{ + const unsigned char* p = (unsigned char*)str - 1; + unsigned long chr = (c & 0xFF); + + unsigned long ch; + while (ch = *++p) { + if (ch == chr) { + return (char*)p; + } + } + + return chr ? NULL : (char*)p; +} + +char* strrchr(const char* str, int c) +{ + const unsigned char* p = (unsigned char*)str - 1; + const unsigned char* q = NULL; + unsigned long chr = (c & 0xFF); + + unsigned long ch; + while (ch = *++p) { + if (ch == chr) { + q = p; + } + } + + if (q != NULL) { + return (char*)q; + } + + return chr ? NULL : (char*)p; +} + +char* strstr(const char* str, const char* pat) +{ + const unsigned char* s1 = (const unsigned char*)str - 1; + const unsigned char* p1 = (const unsigned char*)pat - 1; + unsigned long firstc, c1, c2; + + if ((pat == 0) || (!(firstc = *++p1))) { + return (char*)str; + } + + while (c1 = *++s1) { + if (c1 == firstc) { + const unsigned char* s2 = s1 - 1; + const unsigned char* p2 = p1 - 1; + + while ((c1 = *++s2) == (c2 = *++p2) && c1) + ; + + if (!c2) + return (char*)s1; + } + } + + return NULL; +} diff --git a/src/MSL_C.PPCEABI.bare.H/strtoul.c b/src/MSL_C.PPCEABI.bare.H/strtoul.c new file mode 100644 index 00000000..e40b9fac --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/strtoul.c @@ -0,0 +1,199 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/strtoul.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/ctype.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/errno.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/limits.h" +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/scanf.h" + +enum scan_states { + start = 0x01, + check_for_zero = 0x02, + leading_zero = 0x04, + need_digit = 0x08, + digit_loop = 0x10, + finished = 0x20, + failure = 0x40 +}; + +#define final_state(scan_state) (scan_state & (finished | failure)) +#define success(scan_state) \ + (scan_state & (leading_zero | digit_loop | finished)) +#define fetch() (count++, (*ReadProc)(ReadProcArg, 0, __GetAChar)) +#define unfetch(c) (*ReadProc)(ReadProcArg, c, __UngetAChar) + +unsigned long __strtoul(int base, int max_width, + int (*ReadProc)(void*, int, int), void* ReadProcArg, + int* chars_scanned, int* negative, int* overflow) +{ + int scan_state = start; + int count = 0; + unsigned long value = 0; + unsigned long value_max = 0; + int c; + + *negative = *overflow = 0; + + if (base < 0 || base == 1 || base > 36 || max_width < 1) { + scan_state = failure; + } else { + c = fetch(); + } + + if (base != 0) + value_max = ULONG_MAX / base; + + while (count <= max_width && c != -1 && !final_state(scan_state)) { + switch (scan_state) { + case start: + if (isspace(c)) { + c = fetch(); + break; + } + + if (c == '+') { + c = fetch(); + } else if (c == '-') { + c = fetch(); + *negative = 1; + } + + scan_state = check_for_zero; + break; + + case check_for_zero: + if (base == 0 || base == 16) { + if (c == '0') { + scan_state = leading_zero; + c = fetch(); + break; + } + } + + scan_state = need_digit; + break; + + case 4: + if (c == 'X' || c == 'x') { + base = 16; + scan_state = need_digit; + c = fetch(); + break; + } + + if (base == 0) + base = 8; + + scan_state = digit_loop; + break; + + case need_digit: + case digit_loop: + if (base == 0) + base = 10; + + if (!value_max) { + value_max = ULONG_MAX / base; + } + + if (isdigit(c)) { + if ((c -= '0') >= base) { + if (scan_state == digit_loop) + scan_state = finished; + else + scan_state = failure; + + c += '0'; + break; + } + } else if (!isalpha(c) || (toupper(c) - 'A' + 10) >= base) { + if (scan_state == digit_loop) + scan_state = finished; + else + scan_state = failure; + + break; + } else { + c = toupper(c) - 'A' + 10; + } + + if (value > value_max) + *overflow = 1; + + value *= base; + + if (c > (ULONG_MAX - value)) + *overflow = 1; + + value += c; + scan_state = digit_loop; + c = fetch(); + break; + } + } + + if (!success(scan_state)) { + value = 0; + count = 0; + } else { + count--; + } + + *chars_scanned = count; + + unfetch(c); + + return value; +} + +unsigned long strtoul(const char* str, char** end, int base) +{ + unsigned long value; + int count, negative, overflow; + + __InStrCtrl isc; + isc.NextChar = (char*)str; + isc.NullCharDetected = 0; + + value = __strtoul(base, 0x7FFFFFFF, &__StringRead, (void*)&isc, &count, + &negative, &overflow); + + if (end) { + *end = (char*)str + count; + } + + if (overflow) { + value = ULONG_MAX; + errno = 0x22; + } else if (negative) { + value = -value; + } + + return value; +} + +long strtol(const char* str, char** end, int base) +{ + unsigned long uvalue; + long svalue; + int count, negative, overflow; + + __InStrCtrl isc; + isc.NextChar = (char*)str; + isc.NullCharDetected = 0; + + uvalue = __strtoul(base, 0x7FFFFFFF, &__StringRead, (void*)&isc, &count, + &negative, &overflow); + + if (end) { + *end = (char*)str + count; + } + + if (overflow || (!negative && uvalue > LONG_MAX) + || (negative && uvalue > -LONG_MIN)) { + svalue = (negative ? -LONG_MIN : LONG_MAX); + errno = ERANGE; + } else { + svalue = (negative ? (long)-uvalue : (long)uvalue); + } + + return svalue; +} diff --git a/src/MSL_C.PPCEABI.bare.H/w_atan2.c b/src/MSL_C.PPCEABI.bare.H/w_atan2.c new file mode 100644 index 00000000..42f1b297 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/w_atan2.c @@ -0,0 +1,39 @@ +/* @(#)w_atan2.c 1.3 95/01/18 */ +/* + * ==================================================== + * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. + * + * Developed at SunSoft, a Sun Microsystems, Inc. business. + * Permission to use, copy, modify, and distribute this + * software is freely granted, provided that this notice + * is preserved. + * ==================================================== + * + */ + +/* + * wrapper atan2(y,x) + */ + +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common_Embedded/Math/fdlibm.h" + +#ifdef __STDC__ +double atan2(double y, double x) /* wrapper atan2 */ +#else +double atan2(y, x) /* wrapper atan2 */ +double y, x; +#endif +{ +#ifdef _IEEE_LIBM + return __ieee754_atan2(y, x); +#else + double z; + z = __ieee754_atan2(y, x); + if (_LIB_VERSION == _IEEE_ || isnan(x) || isnan(y)) + return z; + if (x == 0.0 && y == 0.0) { + return __kernel_standard(y, x, 3); /* atan2(+-0,+-0) */ + } else + return z; +#endif +} diff --git a/src/MSL_C.PPCEABI.bare.H/wchar_io.c b/src/MSL_C.PPCEABI.bare.H/wchar_io.c new file mode 100644 index 00000000..4d5d32b5 --- /dev/null +++ b/src/MSL_C.PPCEABI.bare.H/wchar_io.c @@ -0,0 +1,22 @@ +#include "PowerPC_EABI_Support/Msl/MSL_C/MSL_Common/wchar_io.h" + +int fwide(FILE* file, int mode) +{ + if (file->file_mode.file_kind == __closed_file) { + return 0; + } + + switch (file->file_mode.file_orientation) { + case UNORIENTED: + if (mode > 0) { + file->file_mode.file_orientation = WIDE_ORIENTED; + } else if (mode < 0) { + file->file_mode.file_orientation = CHAR_ORIENTED; + } + return mode; + case WIDE_ORIENTED: + return 1; + case CHAR_ORIENTED: + return -1; + } +} diff --git a/src/TRK_MINNOW_DOLPHIN/__exception.s b/src/TRK_MINNOW_DOLPHIN/__exception.s new file mode 100644 index 00000000..a5c63065 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/__exception.s @@ -0,0 +1,2018 @@ +.include "macros.inc" +.file "__exception.s" + +# 0x80003534..0x80005468 | size: 0x1F34 +.section .init, "ax" +.balign 4 +# .init:0x0 | 0x80003534 | size: 0x0 +.sym gTRKInterruptVectorTable, global + +# .init:0x0 | 0x80003534 | size: 0x1F34 +.fn pad_00_80003534_init, local +.4byte 0x4D657472 +xoris r23, r27, 0x6572 +xori r19, r27, 0x2054 +ori r18, r11, 0x6765 +andis. r0, r1, 0x5265 +andi. r9, r27, 0x6465 +xoris r20, r19, 0x204b +oris r18, r11, 0x6e65 +xoris r0, r1, 0x666f +andi. r0, r17, 0x506f +andis. r5, r27, 0x7250 +.L_80003560: + .4byte 0x43000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + b 0x1e34 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mfsrr0 r2 + icbi r0, r2 + mfdar r2 + dcbi r0, r2 + mfsprg r2, 1 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x200 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x300 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 +# .init:0x348 | 0x8000387C | size: 0x0 +.sym lbl_8000387C, global + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 +# .init:0x3AC | 0x800038E0 | size: 0x0 +.sym lbl_800038E0, global + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x400 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x500 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x600 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x700 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x800 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x900 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0xc00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0xd00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0xe00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + b .L_80004488 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0xf20 + rfi +.L_80004488: + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0xf00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mfcr r2 + mtsprg 2, r2 + mfmsr r2 + andis. r2, r2, 0x2 + beq .L_80004564 + mfmsr r2 + xoris r2, r2, 0x2 + sync + mtmsr r2 + sync + mtsprg 1, r2 +.L_80004564: + mfsprg r2, 2 + mtcrf 255, r2 + mfsprg r2, 1 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1000 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mfcr r2 + mtsprg 2, r2 + mfmsr r2 + andis. r2, r2, 0x2 + beq .L_80004664 + mfmsr r2 + xoris r2, r2, 0x2 + sync + mtmsr r2 + sync + mtsprg 1, r2 +.L_80004664: + mfsprg r2, 2 + mtcrf 255, r2 + mfsprg r2, 1 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1100 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mfcr r2 + mtsprg 2, r2 + mfmsr r2 + andis. r2, r2, 0x2 + beq .L_80004764 + mfmsr r2 + xoris r2, r2, 0x2 + sync + mtmsr r2 + sync + mtsprg 1, r2 +.L_80004764: + mfsprg r2, 2 + mtcrf 255, r2 + mfsprg r2, 1 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1200 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1300 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1400 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1600 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1700 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1c00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1d00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1e00 + rfi + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + .4byte 0x00000000 + mtsprg 1, r2 + mtsprg 2, r3 + mtsprg 3, r4 + mfsrr0 r2 + mfsrr1 r4 + mfmsr r3 + ori r3, r3, 0x30 + mtsrr1 r3 + lis r3, 0x800f + ori r3, r3, 0x4a0 + mtsrr0 r3 + li r3, 0x1f00 + rfi +.endfn pad_00_80003534_init diff --git a/src/TRK_MINNOW_DOLPHIN/dispatch.c b/src/TRK_MINNOW_DOLPHIN/dispatch.c new file mode 100644 index 00000000..76014bb6 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/dispatch.c @@ -0,0 +1,43 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" + +u32 gTRKDispatchTableSize; + +struct DispatchEntry { + int (*fn)(TRKBuffer*); +}; + +struct DispatchEntry gTRKDispatchTable[33] = { + { &TRKDoUnsupported }, { &TRKDoConnect }, { &TRKDoDisconnect }, + { &TRKDoReset }, { &TRKDoVersions }, { &TRKDoSupportMask }, + { &TRKDoCPUType }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, + { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, + { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, + { &TRKDoUnsupported }, { &TRKDoReadMemory }, { &TRKDoWriteMemory }, + { &TRKDoReadRegisters }, { &TRKDoWriteRegisters }, { &TRKDoUnsupported }, + { &TRKDoUnsupported }, { &TRKDoFlushCache }, { &TRKDoUnsupported }, + { &TRKDoContinue }, { &TRKDoStep }, { &TRKDoStop }, + { &TRKDoUnsupported }, { &TRKDoUnsupported }, { &TRKDoUnsupported }, + { &TRKDoUnsupported }, { &TRKDoUnsupported }, +}; + +DSError TRKInitializeDispatcher() +{ + gTRKDispatchTableSize = 32; + return DS_NoError; +} + +DSError TRKDispatchMessage(TRKBuffer* buffer) +{ + DSError error; + u8 command; + + error = DS_DispatchError; + TRKSetBufferPosition(buffer, 0); + TRKReadBuffer1_ui8(buffer, &command); + if (command < gTRKDispatchTableSize) { + error = gTRKDispatchTable[command].fn(buffer); + } + return error; +} diff --git a/src/TRK_MINNOW_DOLPHIN/dolphin_trk.c b/src/TRK_MINNOW_DOLPHIN/dolphin_trk.c new file mode 100644 index 00000000..31153cd6 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/dolphin_trk.c @@ -0,0 +1,137 @@ +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h" +#include "dolphin/ar.h" +#include "stddef.h" + +#define EXCEPTIONMASK_ADDR 0x80000044 + +static u32 lc_base; + +static u32 TRK_ISR_OFFSETS[15] = { PPC_SystemReset, + PPC_MachineCheck, + PPC_DataStorage, + PPC_InstructionStorage, + PPC_ExternalInterrupt, + PPC_Alignment, + PPC_Program, + PPC_FloatingPointUnavaiable, + PPC_Decrementer, + PPC_SystemCall, + PPC_Trace, + PPC_PerformanceMonitor, + PPC_InstructionAddressBreakpoint, + PPC_SystemManagementInterrupt, + PPC_ThermalManagementInterrupt }; + +__declspec(section ".init") void __TRK_reset(void) { __TRK_copy_vectors(); } + +asm void InitMetroTRK() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + + addi r1, r1, -4 + stw r3, 0(r1) + lis r3, gTRKCPUState@h + ori r3, r3, gTRKCPUState@l + stmw r0, ProcessorState_PPC.Default.GPR(r3) //Save the gprs + lwz r4, 0(r1) + addi r1, r1, 4 + stw r1, ProcessorState_PPC.Default.GPR[1](r3) + stw r4, ProcessorState_PPC.Default.GPR[3](r3) + mflr r4 + stw r4, ProcessorState_PPC.Default.LR(r3) + stw r4, ProcessorState_PPC.Default.PC(r3) + mfcr r4 + stw r4, ProcessorState_PPC.Default.CR(r3) + //??? + mfmsr r4 + ori r3, r4, (1 << (31 - 16)) + xori r3, r3, (1 << (31 - 16)) + mtmsr r3 + mtsrr1 r4 //Copy msr to srr1 + //Save misc registers to gTRKCPUState + bl TRKSaveExtended1Block + lis r3, gTRKCPUState@h + ori r3, r3, gTRKCPUState@l + lmw r0, ProcessorState_PPC.Default.GPR(r3) //Restore the gprs + //Reset IABR and DABR + li r0, 0 + mtspr 0x3f2, r0 + mtspr 0x3f5, r0 + //Restore stack pointer + lis r1, 0x80426008@h + ori r1, r1, 0x80426008@l + mr r3, r5 + bl InitMetroTRKCommTable //Initialize comm table + /* + If InitMetroTRKCommTable returned 1 (failure), an invalid hardware + id or the id for GDEV was somehow passed. Since only BBA or NDEV + are supported, we return early. Otherwise, we proceed with + starting up TRK. + */ + cmpwi r3, 1 + bne initCommTableSuccess + /* + BUG: The code probably orginally reloaded gTRKCPUState here, but + as is it will read the returned value of InitMetroTRKCommTable + as a TRKCPUState struct pointer, causing the CPU to return to + a garbage code address. + */ + lwz r4, ProcessorState_PPC.Default.LR(r3) + mtlr r4 + lmw r0, ProcessorState_PPC.Default.GPR(r3) //Restore the gprs + blr +initCommTableSuccess: + b TRK_main //Jump to TRK_main +#endif // clang-format on +} + +void EnableMetroTRKInterrupts(void) { EnableEXI2Interrupts(); } + +u32 TRKTargetTranslate(u32 param_0) +{ + if (param_0 >= lc_base) { + if ((param_0 < lc_base + 0x4000) + && ((gTRKCPUState.Extended1.DBAT3U & 3) != 0)) { + return param_0; + } + } + + return param_0 & 0x3FFFFFFF | 0x80000000; +} + +extern u8 gTRKInterruptVectorTable[]; + +void TRK_copy_vector(u32 offset) +{ + void* destPtr = (void*)TRKTargetTranslate(offset); + TRK_memcpy(destPtr, gTRKInterruptVectorTable + offset, 0x100); + TRK_flush_cache(destPtr, 0x100); +} + +void __TRK_copy_vectors(void) +{ + int i; + u32 mask; + + mask = *(u32*)TRKTargetTranslate(0x44); + + for (i = 0; i <= 14; ++i) { + if (mask & (1 << i)) { + TRK_copy_vector(TRK_ISR_OFFSETS[i]); + } + } +} + +DSError TRKInitializeTarget() +{ + gTRKState.isStopped = TRUE; + gTRKState.msr = __TRK_get_MSR(); + lc_base = 0xE0000000; + return DS_NoError; +} diff --git a/src/TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c b/src/TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c new file mode 100644 index 00000000..9a55362b --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/dolphin_trk_glue.c @@ -0,0 +1,116 @@ +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" +#include "OdemuExi2/odemuexi/DebuggerDriver.h" +#include "amcstubs/AmcExi2Stubs.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +DBCommTable gDBCommTable = {}; + +asm void TRKLoadContext(OSContext* ctx, u32) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + lwz r0, OSContext.gpr[0](r3) + lwz r1, OSContext.gpr[1](r3) + lwz r2, OSContext.gpr[2](r3) + lhz r5, OSContext.state(r3) + rlwinm. r6, r5, 0, 0x1e, 0x1e + beq lbl_80371C1C + rlwinm r5, r5, 0, 0x1f, 0x1d + sth r5, OSContext.state(r3) + lmw r5, OSContext.gpr[5](r3) + b lbl_80371C20 +lbl_80371C1C: + lmw r13, OSContext.gpr[13](r3) +lbl_80371C20: + mr r31, r3 + mr r3, r4 + lwz r4, OSContext.cr(r31) + mtcrf 0xff, r4 + lwz r4, OSContext.lr(r31) + mtlr r4 + lwz r4, OSContext.ctr(r31) + mtctr r4 + lwz r4, OSContext.xer(r31) + mtxer r4 + mfmsr r4 + rlwinm r4, r4, 0, 0x11, 0xf //Turn off external exceptions + rlwinm r4, r4, 0, 0x1f, 0x1d //Turn off recoverable exception flag + mtmsr r4 + mtsprg 1, r2 + lwz r4, OSContext.gpr[3](r31) + mtsprg 2, r4 + lwz r4, OSContext.gpr[4](r31) + mtsprg 3, r4 + lwz r2, OSContext.srr0(r31) + lwz r4, OSContext.srr1(r31) + lwz r31, OSContext.gpr[31](r31) + b TRKInterruptHandler +#endif // clang-format on +} + +void TRKEXICallBack(__OSInterrupt param_0, OSContext* ctx) +{ + OSEnableScheduler(); + TRKLoadContext(ctx, 0x500); +} + +int InitMetroTRKCommTable(int hwId) +{ + int result; + + if (hwId == HARDWARE_GDEV) { + result = Hu_IsStub(); + + gDBCommTable.initialize_func = DBInitComm; + gDBCommTable.init_interrupts_func = DBInitInterrupts; + gDBCommTable.peek_func = DBQueryData; + gDBCommTable.read_func = DBRead; + gDBCommTable.write_func = DBWrite; + gDBCommTable.open_func = DBOpen; + gDBCommTable.close_func = DBClose; + } else { + result = AMC_IsStub(); + + gDBCommTable.initialize_func = EXI2_Init; + gDBCommTable.init_interrupts_func = EXI2_EnableInterrupts; + gDBCommTable.peek_func = EXI2_Poll; + gDBCommTable.read_func = EXI2_ReadN; + gDBCommTable.write_func = EXI2_WriteN; + gDBCommTable.open_func = EXI2_Reserve; + gDBCommTable.close_func = EXI2_Unreserve; + } + + return result; +} + +void TRKUARTInterruptHandler() { } + +DSError TRKInitializeIntDrivenUART(u32 param_0, u32 param_1, u32 param_2, + volatile u8** param_3) +{ + gDBCommTable.initialize_func(param_3, TRKEXICallBack); + return DS_NoError; +} + +void EnableEXI2Interrupts(void) { gDBCommTable.init_interrupts_func(); } + +int TRKPollUART(void) { return gDBCommTable.peek_func(); } + +UARTError TRKReadUARTN(void* bytes, u32 length) +{ + int readErr = gDBCommTable.read_func(bytes, length); + return readErr == 0 ? 0 : -1; +} + +UARTError TRKWriteUARTN(const void* bytes, u32 length) +{ + int writeErr = gDBCommTable.write_func(bytes, length); + return writeErr == 0 ? 0 : -1; +} + +void ReserveEXI2Port(void) { gDBCommTable.open_func(); } + +void UnreserveEXI2Port(void) { gDBCommTable.close_func(); } + +void TRK_board_display(char* str) { OSReport(str); } diff --git a/src/TRK_MINNOW_DOLPHIN/flush_cache.c b/src/TRK_MINNOW_DOLPHIN/flush_cache.c new file mode 100644 index 00000000..116d8d72 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/flush_cache.c @@ -0,0 +1,26 @@ +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h" + +asm void TRK_flush_cache(register void* param_1, register int param_2) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + + lis r5, 0xFFFF + ori r5, r5, 0xFFF1 + and r5, r5, param_1 + subf r3, r5, param_1 + add r4, param_2, r3 + +loop: + dcbst 0, r5 + dcbf 0, r5 + sync + icbi 0, r5 + addic r5, r5, 8 + addic. r4, r4, -8 + bge loop + + isync + blr +#endif // clang-format on +} diff --git a/src/TRK_MINNOW_DOLPHIN/main_TRK.c b/src/TRK_MINNOW_DOLPHIN/main_TRK.c new file mode 100644 index 00000000..0ce137a8 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/main_TRK.c @@ -0,0 +1,17 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/main_TRK.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h" + +static DSError TRK_mainError; + +DSError TRK_main(void) +{ + TRK_mainError = TRKInitializeNub(); + + if (TRK_mainError == DS_NoError) { + TRKNubWelcome(); + TRKNubMainLoop(); + } + + TRK_mainError = TRKTerminateNub(); + return TRK_mainError; +} diff --git a/src/TRK_MINNOW_DOLPHIN/mainloop.c b/src/TRK_MINNOW_DOLPHIN/mainloop.c new file mode 100644 index 00000000..62783f82 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/mainloop.c @@ -0,0 +1,70 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" + +void TRKHandleRequestEvent(TRKEvent* event) +{ + TRKBuffer* buffer = TRKGetBuffer(event->msgBufID); + TRKDispatchMessage(buffer); +} + +void TRKHandleSupportEvent(TRKEvent* event) { TRKTargetSupportRequest(); } + +void TRKIdle() +{ + if (TRKTargetStopped() == FALSE) { + TRKTargetContinue(); + } +} + +void TRKNubMainLoop(void) +{ + void* msg; + TRKEvent event; + BOOL isShutdownRequested; + BOOL isNewInput; + + isShutdownRequested = FALSE; + isNewInput = FALSE; + while (isShutdownRequested == FALSE) { + if (TRKGetNextEvent(&event) != FALSE) { + isNewInput = FALSE; + + switch (event.eventType) { + case NUBEVENT_Null: + break; + + case NUBEVENT_Request: + TRKHandleRequestEvent(&event); + break; + + case NUBEVENT_Shutdown: + isShutdownRequested = TRUE; + break; + + case NUBEVENT_Breakpoint: + case NUBEVENT_Exception: + TRKTargetInterrupt(&event); + break; + + case NUBEVENT_Support: + TRKHandleSupportEvent(&event); + break; + } + + TRKDestructEvent(&event); + continue; + } + + if ((isNewInput == FALSE) || (*(u8*)gTRKInputPendingPtr != '\0')) { + isNewInput = TRUE; + TRKGetInput(); + continue; + } + + TRKIdle(); + isNewInput = FALSE; + } +} diff --git a/src/TRK_MINNOW_DOLPHIN/mem_TRK.c b/src/TRK_MINNOW_DOLPHIN/mem_TRK.c new file mode 100644 index 00000000..b25259fe --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/mem_TRK.c @@ -0,0 +1,83 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h" +#include "dolphin/types.h" + +void TRK_fill_mem(void *dest, int value, unsigned long length) +{ +#define cDest ((unsigned char *)dest) +#define lDest ((unsigned long *)dest) + unsigned long val = (unsigned char)value; + unsigned long i; + lDest = (unsigned long *)dest; + cDest = (unsigned char *)dest; + + cDest--; + + if (length >= 32) { + i = ~(unsigned long)dest & 3; + + if (i) { + length -= i; + do { + *++cDest = val; + } while (--i); + } + + if (val) { + val |= val << 24 | val << 16 | val << 8; + } + + lDest = (unsigned long *)(cDest + 1) - 1; + + i = length >> 5; + if (i) { + do { + *++lDest = val; + *++lDest = val; + *++lDest = val; + *++lDest = val; + *++lDest = val; + *++lDest = val; + *++lDest = val; + *++lDest = val; + } while (--i); + } + + i = (length & 31) >> 2; + + if (i) { + do { + *++lDest = val; + } while (--i); + } + + cDest = (unsigned char *)(lDest + 1) - 1; + + length &= 3; + } + + if (length) { + do { + *++cDest = val; + } while (--length); + } + +#undef cDest +#undef lDest +} + +__declspec(section ".init") void *TRK_memcpy(void *dst, const void *src, size_t n) +{ + const char *p; + char *q; + + for (p = (const char *)src - 1, q = (char *)dst - 1, n++; --n;) + *++q = *++p; + + return dst; +} + +__declspec(section ".init") void *TRK_memset(void *dst, int val, size_t n) +{ + TRK_fill_mem(dst, val, n); + return dst; +} diff --git a/src/TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c b/src/TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c new file mode 100644 index 00000000..04d4d3a9 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/mpc_7xx_603e.c @@ -0,0 +1,248 @@ +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" + +extern u8 gTRKRestoreFlags[9 + 3 /* padding */]; + +asm void TRKSaveExtended1Block() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + lis r2, gTRKCPUState@h /* 0x8044F338@h */ + ori r2, r2, gTRKCPUState@l /* 0x8044F338@l */ + mfsr r16, 0 + mfsr r17, 1 + mfsr r18, 2 + mfsr r19, 3 + mfsr r20, 4 + mfsr r21, 5 + mfsr r22, 6 + mfsr r23, 7 + mfsr r24, 8 + mfsr r25, 9 + mfsr r26, 0xa + mfsr r27, 0xb + mfsr r28, 0xc + mfsr r29, 0xd + mfsr r30, 0xe + mfsr r31, 0xf + stmw r16, 0x1a8(r2) + mftb r10, 0x10c + mftbu r11 + mfspr r12, 0x3f0 + mfspr r13, 0x3f1 + mfspr r14, 0x1b + mfpvr r15 + mfibatu r16, 0 + mfibatl r17, 0 + mfibatu r18, 1 + mfibatl r19, 1 + mfibatu r20, 2 + mfibatl r21, 2 + mfibatu r22, 3 + mfibatl r23, 3 + mfdbatu r24, 0 + mfdbatl r25, 0 + mfdbatu r26, 1 + mfdbatl r27, 1 + mfdbatu r28, 2 + mfdbatl r29, 2 + mfdbatu r30, 3 + mfdbatl r31, 3 + stmw r10, 0x1e8(r2) + mfspr r22, 0x19 + mfdar r23 + mfdsisr r24 + mfspr r25, 0x110 + mfspr r26, 0x111 + mfspr r27, 0x112 + mfspr r28, 0x113 + li r29, 0 + mfspr r30, 0x3f2 + mfspr r31, 0x11a + stmw r22, 0x25c(r2) + mfspr r20, 0x390 + mfspr r21, 0x391 + mfspr r22, 0x392 + mfspr r23, 0x393 + mfspr r24, 0x394 + mfspr r25, 0x395 + mfspr r26, 0x396 + mfspr r27, 0x397 + mfspr r28, 0x398 + mfspr r29, 0x399 + mfspr r30, 0x39a + mfspr r31, 0x39b + stmw r20, 0x2fc(r2) + b lbl_80371340 + mfspr r16, 0x3a0 + mfspr r17, 0x3a7 + mfspr r18, 0x3a8 + mfspr r19, 0x3a9 + mfspr r20, 0x3aa + mfspr r21, 0x3ab + mfspr r22, 0x3ac + mfspr r23, 0x3ad + mfspr r24, 0x3ae + mfspr r25, 0x3af + mfspr r26, 0x3b0 + mfspr r27, 0x3b7 + mfspr r28, 0x3bf + mfspr r29, 0x3f6 + mfspr r30, 0x3f7 + mfspr r31, 0x3ff + stmw r16, 0x2b8(r2) + +lbl_80371340: + mfspr r19, 0x3f5 + mfspr r20, 0x3b9 + mfspr r21, 0x3ba + mfspr r22, 0x3bd + mfspr r23, 0x3be + mfspr r24, 0x3bb + mfspr r25, 0x3b8 + mfspr r26, 0x3bc + mfspr r27, 0x3fc + mfspr r28, 0x3fd + mfspr r29, 0x3fe + mfspr r30, 0x3FB + mfspr r31, 0x3f9 + stmw r19, 0x284(r2) + b end + + mfspr r25, 0x3d0 + mfspr r26, 0x3d1 + mfspr r27, 0x3d2 + mfspr r28, 0x3d3 + mfspr r29, 0x3D4 + mfspr r30, 0x3D5 + mfspr r31, 0x3d6 + stmw r25, 0x240(r2) + mfspr r31, 0x16 + stw r31, 0x278(r2) +end: + blr +#endif // clang-format on +} + +asm void TRKRestoreExtended1Block() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + lis r2, gTRKCPUState@h /* 0x8044F338@h */ + ori r2, r2, gTRKCPUState@l /* 0x8044F338@l */ + lis r5, gTRKRestoreFlags@h /* 0x803D3238@h */ + ori r5, r5, gTRKRestoreFlags@l /* 0x803D3238@l */ + lbz r3, 0(r5) + lbz r6, 1(r5) + li r0, 0 + stb r0, 0(r5) + stb r0, 1(r5) + cmpwi r3, 0 + beq lbl_803713E4 + lwz r24, 0x1e8(r2) + lwz r25, 0x1ec(r2) + mttbl r24 + mttbu r25 +lbl_803713E4: + lmw r20, 0x2fc(r2) + mtspr 0x390, r20 + mtspr 0x391, r21 + mtspr 0x392, r22 + mtspr 0x393, r23 + mtspr 0x394, r24 + mtspr 0x395, r25 + mtspr 0x396, r26 + mtspr 0x397, r27 + mtspr 0x398, r28 + mtspr 0x39a, r30 + mtspr 0x39b, r31 + b lbl_80371430 + lmw r26, 0x2e0(r2) + mtspr 0x3b0, r26 + mtspr 0x3b7, r27 + mtspr 0x3f6, r29 + mtspr 0x3f7, r30 + mtspr 0x3ff, r31 +lbl_80371430: + lmw r19, 0x284(r2) + mtspr 0x3f5, r19 + mtspr 0x3b9, r20 + mtspr 0x3ba, r21 + mtspr 0x3bd, r22 + mtspr 0x3be, r23 + mtspr 0x3bb, r24 + mtspr 0x3b8, r25 + mtspr 0x3bc, r26 + mtspr 0x3fc, r27 + mtspr 0x3fd, r28 + mtspr 0x3fe, r29 + mtspr 0x3FB, r30 + mtspr 0x3f9, r31 + b lbl_8037149C + cmpwi r6, 0 + beq lbl_8037147C + lwz r26, 0x278(r2) + mtspr 0x16, r26 +lbl_8037147C: + lmw r25, 0x240(r2) + mtspr 0x3d0, r25 + mtspr 0x3d1, r26 + mtspr 0x3d2, r27 + mtspr 0x3d3, r28 + mtspr 0x3D4, r29 + mtspr 0x3D5, r30 + mtspr 0x3d6, r31 +lbl_8037149C: + lmw r16, 0x1a8(r2) + mtsr 0, r16 + mtsr 1, r17 + mtsr 2, r18 + mtsr 3, r19 + mtsr 4, r20 + mtsr 5, r21 + mtsr 6, r22 + mtsr 7, r23 + mtsr 8, r24 + mtsr 9, r25 + mtsr 0xa, r26 + mtsr 0xb, r27 + mtsr 0xc, r28 + mtsr 0xd, r29 + mtsr 0xe, r30 + mtsr 0xf, r31 + lmw r12, 0x1f0(r2) + mtspr 0x3f0, r12 + mtspr 0x3f1, r13 + mtspr 0x1b, r14 + mtspr 0x11f, r15 + mtibatu 0, r16 + mtibatl 0, r17 + mtibatu 1, r18 + mtibatl 1, r19 + mtibatu 2, r20 + mtibatl 2, r21 + mtibatu 3, r22 + mtibatl 3, r23 + mtdbatu 0, r24 + mtdbatl 0, r25 + mtdbatu 1, r26 + mtdbatl 1, r27 + mtdbatu 2, r28 + mtdbatl 2, r29 + mtdbatu 3, r30 + mtdbatl 3, r31 + lmw r22, 0x25c(r2) + mtspr 0x19, r22 + mtdar r23 + mtdsisr r24 + mtspr 0x110, r25 + mtspr 0x111, r26 + mtspr 0x112, r27 + mtspr 0x113, r28 + mtspr 0x3f2, r30 + mtspr 0x11a, r31 + blr +#endif // clang-format on +} + +u32 TRKTargetCPUMinorType(void) { return 0x54; } diff --git a/src/TRK_MINNOW_DOLPHIN/msg.c b/src/TRK_MINNOW_DOLPHIN/msg.c new file mode 100644 index 00000000..0ae376eb --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/msg.c @@ -0,0 +1,9 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +DSError TRKMessageSend(TRK_Msg* msg) +{ + DSError write_err = TRKWriteUARTN(&msg->m_msg, msg->m_msgLength); + return DS_NoError; +} diff --git a/src/TRK_MINNOW_DOLPHIN/msgbuf.c b/src/TRK_MINNOW_DOLPHIN/msgbuf.c new file mode 100644 index 00000000..8eb7031c --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/msgbuf.c @@ -0,0 +1,359 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h" +#include "stddef.h" + +TRKBuffer gTRKMsgBufs[3]; + +void TRKSetBufferUsed(TRKBuffer* msg, BOOL state) { msg->isInUse = state; } + +DSError TRKInitializeMessageBuffers(void) +{ + int i; + for (i = 0; i < 3; i++) { + TRKInitializeMutex(&gTRKMsgBufs[i]); + TRKAcquireMutex(&gTRKMsgBufs[i]); + TRKSetBufferUsed(&gTRKMsgBufs[i], FALSE); + TRKReleaseMutex(&gTRKMsgBufs[i]); + } + + return DS_NoError; +} + +DSError TRKGetFreeBuffer(int* msgID, TRKBuffer** outMsg) +{ + TRKBuffer* buf; + DSError error = DS_NoMessageBufferAvailable; + int i; + + *outMsg = NULL; + + for (i = 0; i < 3; i++) { + buf = TRKGetBuffer(i); + + TRKAcquireMutex(buf); + if (!buf->isInUse) { + TRKResetBuffer(buf, TRUE); + TRKSetBufferUsed(buf, TRUE); + error = DS_NoError; + *outMsg = buf; + *msgID = i; + i = 3; // why not break? weird choice + } + TRKReleaseMutex(buf); + } + + return error; +} + +void* TRKGetBuffer(int idx) +{ + TRKBuffer* buf = NULL; + if (idx >= 0 && idx < 3) { + buf = &gTRKMsgBufs[idx]; + } + + return buf; +} + +void TRKReleaseBuffer(int idx) +{ + TRKBuffer* msg; + if (idx != -1 && idx >= 0 && idx < 3) { + msg = &gTRKMsgBufs[idx]; + TRKAcquireMutex(msg); + TRKSetBufferUsed(msg, FALSE); + TRKReleaseMutex(msg); + } +} + +void TRKResetBuffer(TRKBuffer* msg, BOOL keepData) +{ + msg->length = 0; + msg->position = 0; + + if (!keepData) { + TRK_memset(msg->data, 0, TRKMSGBUF_SIZE); + } +} + +DSError TRKSetBufferPosition(TRKBuffer* msg, u32 pos) +{ + DSError error = DS_NoError; + + if (pos > 0x880) { + error = DS_MessageBufferOverflow; + } else { + msg->position = pos; + // If the new position is past the current length, + // update the length + if (pos > msg->length) { + msg->length = pos; + } + } + + return error; +} + +DSError TRKAppendBuffer(TRKBuffer* msg, const void* data, size_t length) +{ + DSError error = DS_NoError; // r31 + u32 bytesLeft; + + // Return if no bytes to append + if (length == 0) { + return DS_NoError; + } + + bytesLeft = 0x880 - msg->position; + + // If there isn't enough space left in the buffer, change the number + // of bytes to append to the remaning number of bytes + if (bytesLeft < length) { + error = DS_MessageBufferOverflow; + length = bytesLeft; + } + + if (length == 1) { + // If the length of bytes to append is 1, just copy the byte over + msg->data[msg->position] = ((u8*)data)[0]; + } else { + // Otherwise, use memcpy + TRK_memcpy(msg->data + msg->position, data, length); + } + + // Update the position and length + msg->position += length; + msg->length = msg->position; + + return error; +} + +DSError TRKReadBuffer(TRKBuffer* msg, void* data, size_t length) +{ + DSError error = DS_NoError; + unsigned int + bytesLeft; // this has to be unsigned int not u32 to match lmfao. + + // Return if no bytes to read + if (length == 0) { + return DS_NoError; + } + + bytesLeft = msg->length - msg->position; + + // If the number of bytes to read exceeds the buffer length, change + // the length to the remaining number of bytes + if (length > bytesLeft) { + error = DS_MessageBufferReadError; + length = bytesLeft; + } + + TRK_memcpy(data, msg->data + msg->position, length); + msg->position += length; + return error; +} + +DSError TRKAppendBuffer1_ui16(TRKBuffer* buffer, const u16 data) +{ + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)&data; + } else { + byteData = (u8*)&data; + bigEndianData = swapBuffer; + + bigEndianData[0] = byteData[1]; + bigEndianData[1] = byteData[0]; + } + + return TRKAppendBuffer(buffer, (const void*)bigEndianData, sizeof(data)); +} + +DSError TRKAppendBuffer1_ui32(TRKBuffer* buffer, const u32 data) +{ + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)&data; + } else { + byteData = (u8*)&data; + bigEndianData = swapBuffer; + + bigEndianData[0] = byteData[3]; + bigEndianData[1] = byteData[2]; + bigEndianData[2] = byteData[1]; + bigEndianData[3] = byteData[0]; + } + + return TRKAppendBuffer(buffer, (const void*)bigEndianData, sizeof(data)); +} + +DSError TRKAppendBuffer1_ui64(TRKBuffer* buffer, const u64 data) +{ + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + if (gTRKBigEndian) { + bigEndianData = (u8*)&data; + } else { + byteData = (u8*)&data; + bigEndianData = swapBuffer; + + bigEndianData[0] = byteData[7]; + bigEndianData[1] = byteData[6]; + bigEndianData[2] = byteData[5]; + bigEndianData[3] = byteData[4]; + bigEndianData[4] = byteData[3]; + bigEndianData[5] = byteData[2]; + bigEndianData[6] = byteData[1]; + bigEndianData[7] = byteData[0]; + } + + return TRKAppendBuffer(buffer, (const void*)bigEndianData, sizeof(data)); +} + +DSError TRKAppendBuffer_ui8(TRKBuffer* buffer, const u8* data, int count) +{ + DSError err; + int i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKAppendBuffer1_ui8(buffer, data[i]); + } + + return err; +} + +DSError TRKAppendBuffer_ui32(TRKBuffer* buffer, const u32* data, int count) +{ + DSError err; + int i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKAppendBuffer1_ui32(buffer, data[i]); + } + + return err; +} + +DSError TRKReadBuffer1_ui8(TRKBuffer* buffer, u8* data) +{ + return TRKReadBuffer(buffer, (void*)data, 1); +} + +DSError TRKReadBuffer1_ui16(TRKBuffer* buffer, u16* data) +{ + DSError err; + + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)data; + } else { + bigEndianData = swapBuffer; + } + + err = TRKReadBuffer(buffer, (void*)bigEndianData, sizeof(*data)); + + if (!gTRKBigEndian && err == DS_NoError) { + byteData = (u8*)data; + + byteData[0] = bigEndianData[1]; + byteData[1] = bigEndianData[0]; + } + + return err; +} + +DSError TRKReadBuffer1_ui32(TRKBuffer* buffer, u32* data) +{ + DSError err; + + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)data; + } else { + bigEndianData = swapBuffer; + } + + err = TRKReadBuffer(buffer, (void*)bigEndianData, sizeof(*data)); + + if (!gTRKBigEndian && err == DS_NoError) { + byteData = (u8*)data; + + byteData[0] = bigEndianData[3]; + byteData[1] = bigEndianData[2]; + byteData[2] = bigEndianData[1]; + byteData[3] = bigEndianData[0]; + } + + return err; +} + +DSError TRKReadBuffer1_ui64(TRKBuffer* buffer, u64* data) +{ + DSError err; + + u8* bigEndianData; + u8* byteData; + u8 swapBuffer[sizeof(data)]; + + if (gTRKBigEndian) { + bigEndianData = (u8*)data; + } else { + bigEndianData = swapBuffer; + } + + err = TRKReadBuffer(buffer, (void*)bigEndianData, sizeof(*data)); + + if (!gTRKBigEndian && err == 0) { + byteData = (u8*)data; + + byteData[0] = bigEndianData[7]; + byteData[1] = bigEndianData[6]; + byteData[2] = bigEndianData[5]; + byteData[3] = bigEndianData[4]; + byteData[4] = bigEndianData[3]; + byteData[5] = bigEndianData[2]; + byteData[6] = bigEndianData[1]; + byteData[7] = bigEndianData[0]; + } + + return err; +} + +DSError TRKReadBuffer_ui8(TRKBuffer* buffer, u8* data, int count) +{ + DSError err; + int i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKReadBuffer1_ui8(buffer, &(data[i])); + } + + return err; +} + +DSError TRKReadBuffer_ui32(TRKBuffer* buffer, u32* data, int count) +{ + DSError err; + s32 i; + + for (i = 0, err = DS_NoError; err == DS_NoError && i < count; i++) { + err = TRKReadBuffer1_ui32(buffer, &(data[i])); + } + + return err; +} diff --git a/src/TRK_MINNOW_DOLPHIN/msghndlr.c b/src/TRK_MINNOW_DOLPHIN/msghndlr.c new file mode 100644 index 00000000..35c91822 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/msghndlr.c @@ -0,0 +1,689 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +BOOL IsTRKConnected; + +BOOL GetTRKConnected() +{ + return IsTRKConnected; +} + +void SetTRKConnected(BOOL connected) +{ + IsTRKConnected = connected; +} + +static void TRKMessageIntoReply(TRKBuffer* buffer, u8 ackCmd, + DSReplyError errSentInAck) +{ + TRKResetBuffer(buffer, 1); + + TRKAppendBuffer1_ui8(buffer, ackCmd); + TRKAppendBuffer1_ui8(buffer, errSentInAck); +} + +DSError TRKSendACK(TRKBuffer* buffer) +{ + DSError err; + int ackTries; + + ackTries = 3; + do { + err = TRKMessageSend((TRK_Msg*)buffer); + --ackTries; + } while (err != DS_NoError && ackTries > 0); + + return err; +} + +DSError TRKStandardACK(TRKBuffer* buffer, MessageCommandID commandID, + DSReplyError replyError) +{ + TRKMessageIntoReply(buffer, commandID, replyError); + TRKSendACK(buffer); + return; +} + +DSError TRKDoUnsupported(TRKBuffer* buffer) +{ + return TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_UnsupportedCommandError); +} + +DSError TRKDoConnect(TRKBuffer* buffer) +{ + SetTRKConnected(TRUE); + return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError); +} + +DSError TRKDoDisconnect(TRKBuffer* buffer) +{ + DSError error = DS_NoError; + TRKEvent event; + SetTRKConnected(FALSE); + + if ((error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError)) + == DS_NoError) { + TRKConstructEvent(&event, 1); + TRKPostEvent(&event); + } + return error; +} + +DSError TRKDoReset(TRKBuffer* buffer) +{ + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + __TRK_reset(); + return DS_NoError; +} + +DSError TRKDoVersions(TRKBuffer* buffer) +{ + DSError error; + DSVersions versions; + + if (buffer->length != 1) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + } else { + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + error = TRKTargetVersions(&versions); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, versions.kernelMajor); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, versions.kernelMinor); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, versions.protocolMajor); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, versions.protocolMinor); + + if (error != DS_NoError) + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError); + else + error = TRKSendACK(buffer); + } + return error; +} + +DSError TRKDoSupportMask(TRKBuffer* buffer) +{ + DSError error; + u8 mask[32]; + + if (buffer->length != 1) { + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + } else { + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + error = TRKTargetSupportMask(mask); + + if (error == DS_NoError) + error = TRKAppendBuffer(buffer, mask, 32); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, 2); + + if (error != DS_NoError) + TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError); + else + TRKSendACK(buffer); + } +} + +DSError TRKDoCPUType(TRKBuffer* buffer) +{ + DSError error; + DSCPUType cputype; + + if (buffer->length != 1) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return error; + } + + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + error = TRKTargetCPUType(&cputype); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.cpuMajor); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.cpuMinor); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.bigEndian); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.defaultTypeSize); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.fpTypeSize); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.extended1TypeSize); + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, cputype.extended2TypeSize); + + if (error != DS_NoError) + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_CWDSError); + else + error = TRKSendACK(buffer); + + return error; +} + +DSError TRKDoReadMemory(TRKBuffer* buffer) +{ + DSError error; + DSReplyError replyError; + u8 tempBuf[0x800]; + u32 length; + u32 msg_start; + u16 msg_length; + u8 msg_options; + u8 msg_command; + + if (buffer->length != 8) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return error; + } + + TRKSetBufferPosition(buffer, DSREPLY_NoError); + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_length); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_start); + + if (msg_options & 2) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_UnsupportedOptionError); + return error; + } + + if (msg_length > 0x800) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError); + return error; + } + + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + if (error == DS_NoError) { + length = (u32)msg_length; + error = TRKTargetAccessMemory( + tempBuf, msg_start, &length, + (msg_options & 8) ? MEMACCESS_UserMemory : MEMACCESS_DebuggerMemory, + 1); + msg_length = (u16)length; + if (error == DS_NoError) + error = TRKAppendBuffer1_ui16(buffer, msg_length); + if (error == DS_NoError) + error = TRKAppendBuffer(buffer, tempBuf, length); + } + + if (error != DS_NoError) { + switch (error) { + case DS_CWDSException: + replyError = DSREPLY_CWDSException; + break; + case DS_InvalidMemory: + replyError = DSREPLY_InvalidMemoryRange; + break; + case DS_InvalidProcessID: + replyError = DSREPLY_InvalidProcessID; + break; + case DS_InvalidThreadID: + replyError = DSREPLY_InvalidThreadID; + break; + case DS_OSError: + replyError = DSREPLY_OSError; + break; + default: + replyError = DSREPLY_CWDSError; + break; + } + error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError); + } else { + error = TRKSendACK(buffer); + } + + return error; +} + +DSError TRKDoWriteMemory(TRKBuffer* buffer) +{ + DSError error; + DSReplyError replyError; + u8 tmpBuffer[0x800]; + u32 length; + u32 msg_start; + u16 msg_length; + u8 msg_options; + u8 msg_command; + + if (buffer->length <= 8) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return error; + } + + TRKSetBufferPosition(buffer, DSREPLY_NoError); + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_length); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_start); + + if (msg_options & 2) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_UnsupportedOptionError); + return error; + } + + if ((buffer->length != msg_length + 8) || (msg_length > 0x800)) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError); + } else { + if (error == DS_NoError) { + length = (u32)msg_length; + error = TRKReadBuffer(buffer, tmpBuffer, length); + if (error == DS_NoError) { + error = TRKTargetAccessMemory(tmpBuffer, msg_start, &length, + (msg_options & 8) + ? MEMACCESS_UserMemory + : MEMACCESS_DebuggerMemory, + FALSE); + } + msg_length = (u16)length; + } + + if (error == DS_NoError) + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui16(buffer, msg_length); + + if (error != DS_NoError) { + switch (error) { + case DS_CWDSException: + replyError = DSREPLY_CWDSException; + break; + case DS_InvalidMemory: + replyError = DSREPLY_InvalidMemoryRange; + break; + case DS_InvalidProcessID: + replyError = DSREPLY_InvalidProcessID; + break; + case DS_InvalidThreadID: + replyError = DSREPLY_InvalidThreadID; + break; + case DS_OSError: + replyError = DSREPLY_OSError; + break; + default: + replyError = DSREPLY_CWDSError; + break; + } + error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError); + } else { + error = TRKSendACK(buffer); + } + } + + return error; +} + +DSError TRKDoReadRegisters(TRKBuffer* buffer) +{ + DSError error; + DSReplyError replyError; + DSMessageRegisterOptions options; + u32 registerDataLength; + u16 msg_lastRegister; + u16 msg_firstRegister; + u8 msg_options; + u8 msg_command; + + if (buffer->length != 6) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return error; + } + TRKSetBufferPosition(buffer, DSREPLY_NoError); + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_firstRegister); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_lastRegister); + + if (msg_firstRegister > msg_lastRegister) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_InvalidRegisterRange); + return error; + } + + if (error == DS_NoError) + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + options = (DSMessageRegisterOptions)msg_options; + switch (options) { + case DSREG_Default: + error = TRKTargetAccessDefault(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, TRUE); + break; + case DSREG_FP: + error = TRKTargetAccessFP(msg_firstRegister, msg_lastRegister, buffer, + ®isterDataLength, TRUE); + break; + case DSREG_Extended1: + error = TRKTargetAccessExtended1(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, TRUE); + break; + case DSREG_Extended2: + error = TRKTargetAccessExtended2(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, TRUE); + break; + default: + error = DS_UnsupportedError; + break; + } + + if (error != DS_NoError) { + switch (error) { + case DS_UnsupportedError: + replyError = DSREPLY_UnsupportedOptionError; + break; + case DS_InvalidRegister: + replyError = DSREPLY_InvalidRegisterRange; + break; + case DS_CWDSException: + replyError = DSREPLY_CWDSException; + break; + case DS_InvalidProcessID: + replyError = DSREPLY_InvalidProcessID; + break; + case DS_InvalidThreadID: + replyError = DSREPLY_InvalidThreadID; + break; + case DS_OSError: + replyError = DSREPLY_OSError; + break; + default: + replyError = DSREPLY_CWDSError; + } + + error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError); + } else { + error = TRKSendACK(buffer); + } + + return error; +} + +DSError TRKDoWriteRegisters(TRKBuffer* buffer) +{ + DSError error; + DSReplyError replyError; + DSMessageRegisterOptions options; + u32 registerDataLength; + u16 msg_lastRegister; + u16 msg_firstRegister; + u8 msg_options; + u8 msg_command; + + if (buffer->length <= 6) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return error; + } + TRKSetBufferPosition(buffer, DSREPLY_NoError); + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_firstRegister); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(buffer, &msg_lastRegister); + + if (msg_firstRegister > msg_lastRegister) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_InvalidRegisterRange); + return error; + } + + options = (DSMessageRegisterOptions)msg_options; + switch (options) { + case DSREG_Default: + error = TRKTargetAccessDefault(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, FALSE); + break; + case DSREG_FP: + error = TRKTargetAccessFP(msg_firstRegister, msg_lastRegister, buffer, + ®isterDataLength, FALSE); + break; + case DSREG_Extended1: + error = TRKTargetAccessExtended1(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, FALSE); + break; + case DSREG_Extended2: + error = TRKTargetAccessExtended2(msg_firstRegister, msg_lastRegister, + buffer, ®isterDataLength, FALSE); + break; + default: + error = DS_UnsupportedError; + break; + } + + if (error == DS_NoError) + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + if (error != DS_NoError) { + switch (error) { + case DS_UnsupportedError: + replyError = DSREPLY_UnsupportedOptionError; + break; + case DS_InvalidRegister: + replyError = DSREPLY_InvalidRegisterRange; + break; + case DS_MessageBufferReadError: + replyError = DSREPLY_PacketSizeError; + break; + case DS_CWDSException: + replyError = DSREPLY_CWDSException; + break; + case DS_InvalidProcessID: + replyError = DSREPLY_InvalidProcessID; + break; + case DS_InvalidThreadID: + replyError = DSREPLY_InvalidThreadID; + break; + case DS_OSError: + replyError = DSREPLY_OSError; + break; + default: + replyError = DSREPLY_CWDSError; + } + + error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyError); + } else { + error = TRKSendACK(buffer); + } + + return error; +} + +DSError TRKDoFlushCache(TRKBuffer* buffer) +{ + DSError error; + DSReplyError replyErr; + u32 msg_end; + u32 msg_start; + u8 msg_options; + u8 msg_command; + + if (buffer->length != 10) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + return error; + } + + TRKSetBufferPosition(buffer, DSREPLY_NoError); + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_start); + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_end); + + if (msg_start > msg_end) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_InvalidMemoryRange); + return error; + } + + if (error == DS_NoError) + error = TRKTargetFlushCache(msg_options, (void*)msg_start, + (void*)msg_end); + + if (error == DS_NoError) + TRKMessageIntoReply(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + + if (error != DS_NoError) { + switch (error) { + case DS_UnsupportedError: + replyErr = DSREPLY_UnsupportedOptionError; + break; + default: + replyErr = DSREPLY_CWDSError; + break; + } + + error = TRKStandardACK(buffer, DSMSG_ReplyACK, replyErr); + } else { + error = TRKSendACK(buffer); + } + + return error; +} + +DSError TRKDoContinue(TRKBuffer* buffer) +{ + DSError error; + + error = TRKTargetStopped(); + if (error == DS_NoError) { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped); + return error; + } + + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + if (error == DS_NoError) + error = TRKTargetContinue(); + + return error; +} + +DSError TRKDoStep(TRKBuffer* buffer) +{ + DSError error; + u8 msg_command; + u8 msg_options; + u8 msg_count; + u32 msg_rangeStart; + u32 msg_rangeEnd; + u32 pc; + + if (buffer->length < 3) + return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_PacketSizeError); + + TRKSetBufferPosition(buffer, DSREPLY_NoError); + + error = TRKReadBuffer1_ui8(buffer, &msg_command); + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(buffer, &msg_options); + + switch (msg_options) { + case DSSTEP_IntoCount: + case DSSTEP_OverCount: + if (error == DS_NoError) + TRKReadBuffer1_ui8(buffer, &msg_count); + if (msg_count >= 1) { + break; + } + return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError); + case DSSTEP_IntoRange: + case DSSTEP_OverRange: + if (buffer->length != 10) + return TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_PacketSizeError); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_rangeStart); + if (error == DS_NoError) + error = TRKReadBuffer1_ui32(buffer, &msg_rangeEnd); + + pc = TRKTargetGetPC(); + if (pc >= msg_rangeStart && pc <= msg_rangeEnd) { + break; + } + return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_ParameterError); + default: + return TRKStandardACK(buffer, DSMSG_ReplyACK, + DSREPLY_UnsupportedOptionError); + } + + if (!TRKTargetStopped()) { + return TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NotStopped); + } else { + error = TRKStandardACK(buffer, DSMSG_ReplyACK, DSREPLY_NoError); + if (error == DS_NoError) + switch (msg_options) { + case DSSTEP_IntoCount: + case DSSTEP_OverCount: + error = TRKTargetSingleStep(msg_count, + (msg_options == DSSTEP_OverCount)); + break; + case DSSTEP_IntoRange: + case DSSTEP_OverRange: + error = TRKTargetStepOutOfRange( + msg_rangeStart, msg_rangeEnd, + (msg_options == DSSTEP_OverRange)); + break; + } + + return error; + } +} + +DSError TRKDoStop(TRKBuffer* b) +{ + DSReplyError replyError; + + switch (TRKTargetStop()) { + case DS_NoError: + replyError = DSREPLY_NoError; + break; + case DS_InvalidProcessID: + replyError = DSREPLY_InvalidProcessID; + break; + case DS_InvalidThreadID: + replyError = DSREPLY_InvalidThreadID; + break; + case DS_OSError: + replyError = DSREPLY_OSError; + break; + default: + replyError = DSREPLY_Error; + break; + } + + return TRKStandardACK(b, DSMSG_ReplyACK, replyError); +} diff --git a/src/TRK_MINNOW_DOLPHIN/mutex_TRK.c b/src/TRK_MINNOW_DOLPHIN/mutex_TRK.c new file mode 100644 index 00000000..37e09501 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/mutex_TRK.c @@ -0,0 +1,7 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h" + +DSError TRKInitializeMutex(void*) { return DS_NoError; } + +DSError TRKAcquireMutex(void*) { return DS_NoError; } + +DSError TRKReleaseMutex(void*) { return DS_NoError; } diff --git a/src/TRK_MINNOW_DOLPHIN/notify.c b/src/TRK_MINNOW_DOLPHIN/notify.c new file mode 100644 index 00000000..7dce4537 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/notify.c @@ -0,0 +1,40 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +DSError TRKDoNotifyStopped(MessageCommandID cmd) +{ + DSError err; + int reqIdx; + int bufIdx; + TRKBuffer* msg; + + err = TRKGetFreeBuffer(&bufIdx, &msg); + if (err == DS_NoError) { + if (msg->position >= 0x880) { + err = DS_MessageBufferOverflow; + } else { + msg->data[msg->position++] = cmd; + ++msg->length; + err = 0; + } + + if (err == DS_NoError) { + if (cmd == DSMSG_NotifyStopped) { + TRKTargetAddStopInfo(msg); + } else { + TRKTargetAddExceptionInfo(msg); + } + } + + err = TRKRequestSend(msg, &reqIdx, 2, 3, 1); + if (err == DS_NoError) { + TRKReleaseBuffer(reqIdx); + } + TRKReleaseBuffer(bufIdx); + } + + return err; +} diff --git a/src/TRK_MINNOW_DOLPHIN/nubevent.c b/src/TRK_MINNOW_DOLPHIN/nubevent.c new file mode 100644 index 00000000..a35a43cd --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/nubevent.c @@ -0,0 +1,72 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mutex_TRK.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/mem_TRK.h" + +TRKEventQueue gTRKEventQueue; + +DSError TRKInitializeEventQueue() +{ + TRKInitializeMutex(&gTRKEventQueue); + TRKAcquireMutex(&gTRKEventQueue); + gTRKEventQueue.count = 0; + gTRKEventQueue.next = 0; + gTRKEventQueue.eventID = 0x100; + TRKReleaseMutex(&gTRKEventQueue); + return DS_NoError; +} + +void TRKCopyEvent(TRKEvent* dstEvent, const TRKEvent* srcEvent) +{ + TRK_memcpy(dstEvent, srcEvent, sizeof(TRKEvent)); +} + +BOOL TRKGetNextEvent(TRKEvent* event) +{ + BOOL status = 0; + TRKAcquireMutex(&gTRKEventQueue); + if (0 < gTRKEventQueue.count) { + TRKCopyEvent(event, &gTRKEventQueue.events[gTRKEventQueue.next]); + gTRKEventQueue.count--; + gTRKEventQueue.next++; + if (gTRKEventQueue.next == 2) + gTRKEventQueue.next = 0; + + status = 1; + } + TRKReleaseMutex(&gTRKEventQueue); + return status; +} + +DSError TRKPostEvent(TRKEvent* event) +{ + DSError ret = DS_NoError; + int nextEventID; + + TRKAcquireMutex(&gTRKEventQueue); + + if (gTRKEventQueue.count == 2) { + ret = DS_EventQueueFull; + } else { + nextEventID = (gTRKEventQueue.next + gTRKEventQueue.count) % 2; + TRKCopyEvent(&gTRKEventQueue.events[nextEventID], event); + gTRKEventQueue.events[nextEventID].eventID = gTRKEventQueue.eventID; + gTRKEventQueue.eventID++; + if (gTRKEventQueue.eventID < 0x100) + gTRKEventQueue.eventID = 0x100; + + gTRKEventQueue.count++; + } + + TRKReleaseMutex(&gTRKEventQueue); + return ret; +} + +void TRKConstructEvent(TRKEvent* event, NubEventType eventType) +{ + event->eventType = eventType; + event->eventID = 0; + event->msgBufID = -1; +} + +void TRKDestructEvent(TRKEvent* event) { TRKReleaseBuffer(event->msgBufID); } diff --git a/src/TRK_MINNOW_DOLPHIN/nubinit.c b/src/TRK_MINNOW_DOLPHIN/nubinit.c new file mode 100644 index 00000000..fc08e85e --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/nubinit.c @@ -0,0 +1,80 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubinit.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/dispatch.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" + +BOOL gTRKBigEndian; + +BOOL TRKInitializeEndian(void); + +DSError TRKInitializeNub(void) +{ + DSError ret; + DSError uartErr; + + ret = TRKInitializeEndian(); + + if (ret == DS_NoError) + usr_put_initialize(); + if (ret == DS_NoError) + ret = TRKInitializeEventQueue(); + if (ret == DS_NoError) + ret = TRKInitializeMessageBuffers(); + if (ret == DS_NoError) + ret = TRKInitializeDispatcher(); + + if (ret == DS_NoError) { + uartErr = TRKInitializeIntDrivenUART(0x0000e100, 1, 0, + (volatile u8**)&gTRKInputPendingPtr); + TRKTargetSetInputPendingPtr(gTRKInputPendingPtr); + if (uartErr != DS_NoError) { + ret = uartErr; + } + } + + if (ret == DS_NoError) + ret = TRKInitializeSerialHandler(); + if (ret == DS_NoError) + ret = TRKInitializeTarget(); + + return ret; +} + +DSError TRKTerminateNub(void) +{ + TRKTerminateSerialHandler(); + return DS_NoError; +} + +void TRKNubWelcome(void) +{ + TRK_board_display("MetroTRK for GAMECUBE v0.10"); + return; +} + +BOOL TRKInitializeEndian(void) +{ + u8 bendian[4]; + BOOL result = FALSE; + gTRKBigEndian = TRUE; + + bendian[0] = 0x12; + bendian[1] = 0x34; + bendian[2] = 0x56; + bendian[3] = 0x78; + + if (*(u32*)bendian == 0x12345678) { + gTRKBigEndian = TRUE; + } else if (*(u32*)bendian == 0x78563412) { + gTRKBigEndian = FALSE; + } else { + result = TRUE; + } + return result; +} diff --git a/src/TRK_MINNOW_DOLPHIN/serpoll.c b/src/TRK_MINNOW_DOLPHIN/serpoll.c new file mode 100644 index 00000000..831644fa --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/serpoll.c @@ -0,0 +1,82 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/nubevent.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +static TRKFramingState gTRKFramingState; + +void* gTRKInputPendingPtr; + +MessageBufferID TRKTestForPacket() +{ + int bytes; + int batch; + int err; + TRKBuffer* b; + int id; + + bytes = TRKPollUART(); + if (bytes > 0) { + TRKGetFreeBuffer(&id, &b); + if (bytes > TRKMSGBUF_SIZE) { + for (; bytes > 0; bytes -= batch) { + batch = bytes > TRKMSGBUF_SIZE ? TRKMSGBUF_SIZE : bytes; + TRKReadUARTN(b->data, batch); + } + TRKStandardACK(b, 0xff, 6); + } else { + err = TRKReadUARTN(b->data, bytes); + if (err == 0) { + b->length = bytes; + return id; + } + } + } + if (id != -1) { + TRKReleaseBuffer(id); + } + return -1; +} + +void TRKGetInput(void) +{ + MessageBufferID id; + TRKBuffer* msgBuffer; + u8 command; + + id = TRKTestForPacket(); + if (id == -1) + return; + + msgBuffer = TRKGetBuffer(id); + TRKSetBufferPosition(msgBuffer, 0); + TRKReadBuffer1_ui8(msgBuffer, &command); + if (command < DSMSG_ReplyACK) { + TRKProcessInput(id); + } else { + TRKReleaseBuffer(id); + } +} + +void TRKProcessInput(int bufferIdx) +{ + TRKEvent event; + + TRKConstructEvent(&event, NUBEVENT_Request); + gTRKFramingState.msgBufID = -1; + event.msgBufID = bufferIdx; + TRKPostEvent(&event); +} + +DSError TRKInitializeSerialHandler(void) +{ + gTRKFramingState.msgBufID = -1; + gTRKFramingState.receiveState = DSRECV_Wait; + gTRKFramingState.isEscape = FALSE; + + return DS_NoError; +} + +DSError TRKTerminateSerialHandler(void) { return DS_NoError; } diff --git a/src/TRK_MINNOW_DOLPHIN/support.c b/src/TRK_MINNOW_DOLPHIN/support.c new file mode 100644 index 00000000..0d31ca10 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/support.c @@ -0,0 +1,177 @@ +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msg.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/serpoll.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" +#include "stddef.h" +#include "string.h" + +DSError TRKSuppAccessFile(u32 file_handle, u8* data, size_t* count, + DSIOResult* io_result, BOOL need_reply, BOOL read) +{ + DSError error; + int replyBufferId; + TRKBuffer* replyBuffer; + int bufferId; + TRKBuffer* buffer; + u32 length; + u32 done; + u8 replyIOResult; + u16 replyLength; + BOOL exit; + + if (data == NULL || *count == 0) { + return DS_ParameterError; + } + + exit = FALSE; + *io_result = DS_IONoError; + done = 0; + error = DS_NoError; + while (!exit && done < *count && error == DS_NoError && *io_result == 0) { + if (*count - done > 0x800) { + length = 0x800; + } else { + length = *count - done; + } + + error = TRKGetFreeBuffer(&bufferId, &buffer); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui8(buffer, read ? DSMSG_ReadFile + : DSMSG_WriteFile); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui32(buffer, file_handle); + + if (error == DS_NoError) + error = TRKAppendBuffer1_ui16(buffer, length); + + if (!read && error == DS_NoError) + error = TRKAppendBuffer_ui8(buffer, data + done, length); + + if (error == DS_NoError) { + if (need_reply) { + replyLength = 0; + replyIOResult = 0; + + error = TRKRequestSend(buffer, &replyBufferId, read ? 5 : 5, 3, + !(read && file_handle == 0)); + if (error == DS_NoError) { + replyBuffer = (TRKBuffer*)TRKGetBuffer(replyBufferId); + TRKSetBufferPosition(replyBuffer, 2); + } + + if (error == DS_NoError) + error = TRKReadBuffer1_ui8(replyBuffer, &replyIOResult); + + if (error == DS_NoError) + error = TRKReadBuffer1_ui16(replyBuffer, &replyLength); + + if (read && error == DS_NoError) { + if (replyBuffer->length != replyLength + 5) { + replyLength = replyBuffer->length - 5; + if (replyIOResult == 0) + replyIOResult = 1; + } + + if (replyLength <= length) + error = TRKReadBuffer_ui8(replyBuffer, data + done, + replyLength); + } + + if (replyLength != length) { + if ((!read || replyLength >= length) && replyIOResult == 0) + replyIOResult = 1; + length = replyLength; + exit = TRUE; + } + + *io_result = (DSIOResult)replyIOResult; + TRKReleaseBuffer(replyBufferId); + } else { + error = TRKMessageSend((TRK_Msg*)buffer); + } + } + + TRKReleaseBuffer(bufferId); + done += length; + } + + *count = done; + return error; +} + +DSError TRKRequestSend(TRKBuffer* msgBuf, int* bufferId, u32 p1, u32 p2, int p3) +{ + int error = DS_NoError; + TRKBuffer* buffer; + u32 timer; + int tries; + u8 msg_command; + u8 msg_error; + BOOL badReply = TRUE; + + *bufferId = -1; + + for (tries = p2 + 1; tries != 0 && *bufferId == -1 && error == DS_NoError; + tries--) { + error = TRKMessageSend((TRK_Msg*)msgBuf); + if (error == DS_NoError) { + if (p3) { + timer = 0; + } + + while (TRUE) { + do { + *bufferId = TRKTestForPacket(); + if (*bufferId != -1) + break; + } while (!p3 || ++timer < 79999980); + + if (*bufferId == -1) + break; + + badReply = FALSE; + + buffer = TRKGetBuffer(*bufferId); + TRKSetBufferPosition(buffer, 0); + + if ((error = TRKReadBuffer1_ui8(buffer, &msg_command)) + != DS_NoError) + break; + + if (msg_command >= DSMSG_ReplyACK) + break; + + TRKProcessInput(*bufferId); + *bufferId = -1; + } + + if (*bufferId != -1) { + if (buffer->length < p1) { + badReply = TRUE; + } + if (error == DS_NoError && !badReply) { + error = TRKReadBuffer1_ui8(buffer, &msg_error); + } + if (error == DS_NoError && !badReply) { + if (msg_command != DSMSG_ReplyACK + || msg_error != DSREPLY_NoError) { + badReply = TRUE; + } + } + if (error != DS_NoError || badReply) { + TRKReleaseBuffer(*bufferId); + *bufferId = -1; + } + } + } + } + + if (*bufferId == -1) { + error = DS_Error800; + } + + return error; +} diff --git a/src/TRK_MINNOW_DOLPHIN/targcont.c b/src/TRK_MINNOW_DOLPHIN/targcont.c new file mode 100644 index 00000000..1827ae1a --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/targcont.c @@ -0,0 +1,12 @@ +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/targcont.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk_glue.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" + +DSError TRKTargetContinue(void) +{ + TRKTargetSetStopped(0); + UnreserveEXI2Port(); + TRKSwapAndGo(); + ReserveEXI2Port(); + return 0; +} diff --git a/src/TRK_MINNOW_DOLPHIN/targimpl.c b/src/TRK_MINNOW_DOLPHIN/targimpl.c new file mode 100644 index 00000000..858024a5 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/targimpl.c @@ -0,0 +1,1177 @@ +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/targimpl.h" +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/dolphin_trk.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/flush_cache.h" +#include "TRK_MINNOW_DOLPHIN/ppc/Generic/mpc_7xx_603e.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msgbuf.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/support.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/notify.h" +#include "stddef.h" +#include "string.h" + +typedef struct memRange { + u8* start; + u8* end; + BOOL readable; + BOOL writeable; +} memRange; + +const memRange gTRKMemMap[1] = { { (u8*)0, (u8*)-1, TRUE, TRUE } }; + +typedef struct StopInfo_PPC { + u32 PC; + u32 PCInstruction; + u16 exceptionID; +} StopInfo_PPC; + +typedef struct TRKExceptionStatus { + StopInfo_PPC exceptionInfo; + u8 inTRK; + u8 exceptionDetected; +} TRKExceptionStatus; + +typedef struct TRKStepStatus { + BOOL active; // 0x0 + DSMessageStepOptions type; // 0x4 + u32 count; // 0x8 + u32 rangeStart; // 0xC + u32 rangeEnd; // 0x10 +} TRKStepStatus; + +ProcessorRestoreFlags_PPC gTRKRestoreFlags = { FALSE, FALSE }; + +static TRKExceptionStatus gTRKExceptionStatus = { { 0, 0, 0 }, TRUE, 0 }; + +static TRKStepStatus gTRKStepStatus = { FALSE, DSSTEP_IntoCount, 0, 0 }; + +static u16 TRK_saved_exceptionID = 0; +ProcessorState_PPC gTRKCPUState; +TRKState gTRKState; + +typedef unsigned char u128[16]; +u128 TRKvalue128_temp; + +Default_PPC gTRKSaveState; + +// Instruction macros +#define INSTR_NOP 0x60000000 +#define INSTR_BLR 0x4E800020 +#define INSTR_PSQ_ST(psr, offset, rDest, w, gqr) \ + (0xF0000000 | (psr << 21) | (rDest << 16) | (w << 15) | (gqr << 12) \ + | offset) +#define INSTR_PSQ_L(psr, offset, rSrc, w, gqr) \ + (0xE0000000 | (psr << 21) | (rSrc << 16) | (w << 15) | (gqr << 12) | offset) +#define INSTR_STW(rSrc, offset, rDest) \ + (0x90000000 | (rSrc << 21) | (rDest << 16) | offset) +#define INSTR_LWZ(rDest, offset, rSrc) \ + (0x80000000 | (rDest << 21) | (rSrc << 16) | offset) +#define INSTR_STFD(fprSrc, offset, rDest) \ + (0xD8000000 | (fprSrc << 21) | (rDest << 16) | offset) +#define INSTR_LFD(fprDest, offset, rSrc) \ + (0xC8000000 | (fprDest << 21) | (rSrc << 16) | offset) +#define INSTR_MFSPR(rDest, spr) \ + (0x7C000000 | (rDest << 21) | ((spr & 0xFE0) << 6) | ((spr & 0x1F) << 16) \ + | 0x2A6) +#define INSTR_MTSPR(spr, rSrc) \ + (0x7C000000 | (rSrc << 21) | ((spr & 0xFE0) << 6) | ((spr & 0x1F) << 16) \ + | 0x3A6) + +#define DSFetch_u32(_p_) (*((u32*)_p_)) +#define DSFetch_u64(_p_) (*((u64*)_p_)) + +DSError TRKPPCAccessSPR(void* value, u32 spr_register_num, BOOL read); +DSError TRKPPCAccessPairedSingleRegister(void* srcDestPtr, u32 psr, BOOL read); +DSError TRKPPCAccessFPRegister(void* srcDestPtr, u32 fpr, BOOL read); +DSError TRKPPCAccessSpecialReg(void* value, u32* access_func, BOOL read); +static void TRKExceptionHandler(u16); +void TRKInterruptHandlerEnableInterrupts(void); +void WriteFPSCR(register f64*); +void ReadFPSCR(register f64*); +void __TRK_set_MSR(u32 msr); +u32 __TRK_get_MSR(); +static void TRK_ppc_memcpy(register void* dest, register const void* src, + register int n, register u32 param_4, + register u32 param_5); + +void TRKRestoreExtended1Block(); +void TRKUARTInterruptHandler(); + +static BOOL TRKTargetCheckStep(); + +asm u32 __TRK_get_MSR() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + mfmsr r3 + blr +#endif // clang-format on +} + +asm void __TRK_set_MSR(register u32 msr) { +#ifdef __MWERKS__ // clang-format off + nofralloc + mtmsr msr + blr +#endif // clang-format on +} + +DSError TRKValidMemory32(const void* addr, size_t length, + ValidMemoryOptions readWriteable) +{ + DSError err = DS_InvalidMemory; /* assume range is invalid */ + + const u8* start; + const u8* end; + + s32 i; + + /* + ** Get start and end addresses for the memory range and + ** verify that they are reasonable. + */ + + start = (const u8*)addr; + end = ((const u8*)addr + (length - 1)); + + if (end < start) + return DS_InvalidMemory; + + /* + ** Iterate through the gTRKMemMap array to determine if the requested + ** range falls within the valid ranges in the map. + */ + + for (i = 0; (i < (s32)(sizeof(gTRKMemMap) / sizeof(memRange))); i++) { + /* + ** If the requested range is not completely above + ** the valid range AND it is not completely below + ** the valid range then it must overlap somewhere. + ** If the requested range overlaps with one of the + ** valid ranges, do some additional checking. + ** + */ + + if ((start <= (const u8*)gTRKMemMap[i].end) + && (end >= (const u8*)gTRKMemMap[i].start)) { + /* + ** First, verify that the read/write attributes are + ** acceptable. If so, then recursively check any + ** part of the requested range that falls before or + ** after the valid range. + */ + + if (((readWriteable == VALIDMEM_Readable) + && !gTRKMemMap[i].readable) + || ((readWriteable == VALIDMEM_Writeable) + && !gTRKMemMap[i].writeable)) { + err = DS_InvalidMemory; + } else { + err = DS_NoError; + + /* + ** If a portion of the requested range falls before + ** the current valid range, then recursively + ** check it. + */ + + if (start < (const u8*)gTRKMemMap[i].start) + err = TRKValidMemory32( + start, (u32)((const u8*)gTRKMemMap[i].start - start), + readWriteable); + + /* + ** If a portion of the requested range falls after + ** the current valid range, then recursively + ** check it. + ** Note: Only do this step if the previous check + ** did not detect invalid access. + */ + + if ((err == DS_NoError) && (end > (const u8*)gTRKMemMap[i].end)) + err = TRKValidMemory32( + (const u8*)gTRKMemMap[i].end, + (u32)(end - (const u8*)gTRKMemMap[i].end), + readWriteable); + } + + break; + } + } + + return err; +} + +static asm void TRK_ppc_memcpy(register void* dest, register const void* src, + register int n, register u32 param_4, + register u32 param_5) { +#ifdef __MWERKS__ // clang-format off +#define msr r8 +#define byte r9 +#define count r10 + nofralloc + + mfmsr msr + li count, 0 + +top_loop: + cmpw count, n + beq out_loop + + mtmsr param_5 + sync + + lbzx byte, count, src + + mtmsr param_4 + sync + + stbx byte, count, dest + + addi count, count, 1 + + b top_loop +out_loop: + mtmsr msr + sync + + blr +#undef count +#undef byte +#undef msr +#endif // clang-format on +} + +DSError TRKTargetAccessMemory(void* data, u32 start, size_t* length, + MemoryAccessOptions accessOptions, BOOL read) +{ + DSError error; + u32 target_msr; + void* addr; + u32 trk_msr; + TRKExceptionStatus tempExceptionStatus = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + addr = (void*)TRKTargetTranslate(start); + error = TRKValidMemory32(addr, *length, + read ? VALIDMEM_Readable : VALIDMEM_Writeable); + + if (error != DS_NoError) { + *length = 0; + } else { + target_msr = __TRK_get_MSR(); + trk_msr = target_msr | gTRKCPUState.Extended1.MSR & 0x10; + + if (read) { + TRK_ppc_memcpy(data, addr, *length, target_msr, trk_msr); + } else { + TRK_ppc_memcpy(addr, data, *length, trk_msr, target_msr); + TRK_flush_cache(addr, *length); + if ((void*)start != addr) { + TRK_flush_cache((void*)start, *length); + } + } + } + + if (gTRKExceptionStatus.exceptionDetected) { + *length = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} + +DSError TRKTargetReadInstruction(void* data, u32 start) +{ + DSError error; + size_t registersLength = 4; + + error = TRKTargetAccessMemory(data, start, ®istersLength, + MEMACCESS_UserMemory, TRUE); + + if (error == DS_NoError && registersLength != 4) { + error = DS_InvalidMemory; + } + + return error; +} + +DSError TRKTargetAccessDefault(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registersLengthPtr, + BOOL read) +{ + DSError error; + u32 count; + u32* data; + TRKExceptionStatus tempExceptionStatus; + + if (lastRegister > 0x24) { + return DS_InvalidRegister; + } + + tempExceptionStatus = gTRKExceptionStatus; + + data = gTRKCPUState.Default.GPR + firstRegister; + + count = (lastRegister - firstRegister) + 1; + + gTRKExceptionStatus.exceptionDetected = FALSE; + + *registersLengthPtr = count * sizeof(u32); + + if (read) { + error = TRKAppendBuffer_ui32(b, data, count); + } else { + error = TRKReadBuffer_ui32(b, data, count); + } + + if (gTRKExceptionStatus.exceptionDetected) { + *registersLengthPtr = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} + +DSError TRKTargetAccessFP(u32 firstRegister, u32 lastRegister, TRKBuffer* b, + size_t* registersLengthPtr, BOOL read) +{ + u64 temp; + DSError error; + TRKExceptionStatus tempExceptionStatus; + u32 current; + + if (lastRegister > 0x21) { + return DS_InvalidRegister; + } + + tempExceptionStatus = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + __TRK_set_MSR(__TRK_get_MSR() | 0x2000); + + *registersLengthPtr = 0; + error = DS_NoError; + + for (current = firstRegister; + (current <= lastRegister) && (error == DS_NoError); + current++, *registersLengthPtr += sizeof(f64)) { + if (read) { + TRKPPCAccessFPRegister(&temp, current, read); + error = TRKAppendBuffer1_ui64(b, temp); + } else { + TRKReadBuffer1_ui64(b, &temp); + error = TRKPPCAccessFPRegister(&temp, current, read); + } + } + + if (gTRKExceptionStatus.exceptionDetected) { + *registersLengthPtr = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} + +DSError TRKTargetAccessExtended1(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registersLengthPtr, + BOOL read) +{ + TRKExceptionStatus tempExceptionStatus; + int error; + u32* data; + int count; + + if (lastRegister > 0x60) { + return DS_InvalidRegister; + } + + tempExceptionStatus = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + *registersLengthPtr = 0; + + if (firstRegister <= lastRegister) { + data = (u32*)&gTRKCPUState.Extended1 + firstRegister; + count = lastRegister - firstRegister + 1; + *registersLengthPtr += count * sizeof(u32); + + if (read) { + error = TRKAppendBuffer_ui32(b, data, count); + } else { + if (data <= &gTRKCPUState.Extended1.TBU + && (data + count - 1) >= &gTRKCPUState.Extended1.TBL) { + gTRKRestoreFlags.TBR = 1; + } + + if (data <= &gTRKCPUState.Extended1.DEC + && (data + count - 1) >= &gTRKCPUState.Extended1.DEC) { + gTRKRestoreFlags.DEC = 1; + } + error = TRKReadBuffer_ui32(b, data, count); + } + } + if (gTRKExceptionStatus.exceptionDetected) { + *registersLengthPtr = 0; + error = DS_CWDSException; + } + + gTRKExceptionStatus = tempExceptionStatus; + return error; +} + +DSError TRKTargetAccessExtended2(u32 firstRegister, u32 lastRegister, + TRKBuffer* b, size_t* registerStorageSize, + BOOL read) +{ + TRKExceptionStatus savedException; + u32 i; + u32 value_buf0[1]; + u32 value_buf[2]; + DSError err; + u32 access_func[10]; + + if (lastRegister > 0x1f) + return DS_InvalidRegister; + + /* + ** Save any existing exception status and clear the exception flag. + ** This allows detection of exceptions that occur ONLY within this + ** function. + */ + + savedException = gTRKExceptionStatus; + gTRKExceptionStatus.exceptionDetected = FALSE; + + TRKPPCAccessSPR(value_buf0, SPR_HID2, TRUE); + + value_buf0[0] |= 0xA0000000; + TRKPPCAccessSPR(value_buf0, SPR_HID2, FALSE); + + value_buf0[0] = 0; + TRKPPCAccessSPR(value_buf0, SPR_GQR0, FALSE); + + *registerStorageSize = 0; + err = DS_NoError; + + for (i = firstRegister; (i <= lastRegister) && (err == DS_NoError); i++) { + if (read) { + err = TRKPPCAccessPairedSingleRegister((u64*)value_buf, i, read); + err = TRKAppendBuffer1_ui64(b, *(u64*)value_buf); + } else { + err = TRKReadBuffer1_ui64(b, (u64*)value_buf); + err = TRKPPCAccessPairedSingleRegister((u64*)value_buf, i, read); + } + + *registerStorageSize += sizeof(u64); + } + + if (gTRKExceptionStatus.exceptionDetected) { + *registerStorageSize = 0; + err = DS_CWDSException; + } + + gTRKExceptionStatus = savedException; + + return err; +} + +DSError TRKTargetVersions(DSVersions* versions) +{ + versions->kernelMajor = 0; + versions->kernelMinor = 8; + versions->protocolMajor = 1; + versions->protocolMinor = 10; + return DS_NoError; +} + +DSError TRKTargetSupportMask(u8 mask[32]) +{ + mask[0] = 0x7a; + mask[1] = 0; + mask[2] = 0x4f; + mask[3] = 7; + mask[4] = 0; + mask[5] = 0; + mask[6] = 0; + mask[7] = 0; + mask[8] = 0; + mask[9] = 0; + mask[10] = 0; + mask[0xb] = 0; + mask[0xc] = 0; + mask[0xd] = 0; + mask[0xe] = 0; + mask[0xf] = 0; + mask[0x10] = 1; + mask[0x11] = 0; + mask[0x12] = 3; + mask[0x13] = 0; + mask[0x14] = 0; + mask[0x15] = 0; + mask[0x16] = 0; + mask[0x17] = 0; + mask[0x18] = 0; + mask[0x19] = 0; + mask[0x1a] = 3; + mask[0x1b] = 0; + mask[0x1c] = 0; + mask[0x1d] = 0; + mask[0x1e] = 0; + mask[0x1f] = 0x80; + return DS_NoError; +} + +extern BOOL gTRKBigEndian; + +DSError TRKTargetCPUType(DSCPUType* cpuType) +{ + cpuType->cpuMajor = 0; + cpuType->cpuMinor = TRKTargetCPUMinorType(); + cpuType->bigEndian = gTRKBigEndian; + cpuType->defaultTypeSize = 4; + cpuType->fpTypeSize = 8; + cpuType->extended1TypeSize = 4; + cpuType->extended2TypeSize = 8; + return DS_NoError; +} + +asm void TRKInterruptHandler() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + mtsrr0 r2 + mtsrr1 r4 + mfsprg r4, 3 + mfcr r2 + mtsprg 3, r2 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r2, TRKState_PPC.MSR(r2) + ori r2, r2, 0x8002 + xori r2, r2, 0x8002 + sync + mtmsr r2 + sync + lis r2, TRK_saved_exceptionID@h + ori r2, r2, TRK_saved_exceptionID@l + sth r3, 0(r2) + cmpwi r3, 0x500 + bne L_802CF694 + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + mflr r3 + stw r3, ProcessorState_PPC.transport_handler_saved_ra(r2) + bl TRKUARTInterruptHandler + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + lwz r3, ProcessorState_PPC.transport_handler_saved_ra(r2) + mtlr r3 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r2, TRKState_PPC.inputPendingPtr(r2) + lbz r2, TRKState_PPC.GPR[0](r2) + cmpwi r2, 0 + beq L_802CF678 + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + lbz r2, TRKExceptionStatus.inTRK(r2) + cmpwi r2, 1 + beq L_802CF678 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + li r3, 1 + stb r3, TRKState_PPC.inputActivated(r2) + b L_802CF694 +L_802CF678: + lis r2, gTRKSaveState@h + ori r2, r2, gTRKSaveState@l + lwz r3, Default_PPC.CR(r2) + mtcrf 0xff, r3 + lwz r3, Default_PPC.GPR[3](r2) + lwz r2, Default_PPC.GPR[2](r2) + rfi +L_802CF694: + lis r2, TRK_saved_exceptionID@h + ori r2, r2, TRK_saved_exceptionID@l + lhz r3, 0(r2) + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + lbz r2, TRKExceptionStatus.inTRK(r2) + cmpwi r2, 0 + bne TRKExceptionHandler + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + stw r0, ProcessorState_PPC.Default.GPR[0](r2) + stw r1, ProcessorState_PPC.Default.GPR[1](r2) + mfsprg r0, 1 + stw r0, ProcessorState_PPC.Default.GPR[2](r2) + sth r3, ProcessorState_PPC.Extended1.exceptionID(r2) + sth r3, (ProcessorState_PPC.Extended1.exceptionID + 2)(r2) + mfsprg r0, 2 + stw r0, ProcessorState_PPC.Default.GPR[3](r2) + stmw r4, ProcessorState_PPC.Default.GPR[4](r2) + mfsrr0 r27 + mflr r28 + mfsprg r29, 3 + mfctr r30 + mfxer r31 + stmw r27, ProcessorState_PPC.Default.PC(r2) + bl TRKSaveExtended1Block + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + li r3, 1 + stb r3, TRKExceptionStatus.inTRK(r2) + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r0, TRKState_PPC.MSR(r2) + sync + mtmsr r0 + sync + lwz r0, TRKState_PPC.LR(r2) + mtlr r0 + lwz r0, TRKState_PPC.CTR(r2) + mtctr r0 + lwz r0, TRKState_PPC.XER(r2) + mtxer r0 + lwz r0, TRKState_PPC.DSISR(r2) + mtdsisr r0 + lwz r0, TRKState_PPC.DAR(r2) + mtdar r0 + lmw r3, TRKState_PPC.GPR[3](r2) + lwz r0, TRKState_PPC.GPR[0](r2) + lwz r1, TRKState_PPC.GPR[1](r2) + lwz r2, TRKState_PPC.GPR[2](r2) + b TRKPostInterruptEvent +#endif // clang-format on +} + +static asm void TRKExceptionHandler(u16) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + sth r3, TRKExceptionStatus.exceptionInfo.exceptionID(r2) + mfsrr0 r3 + stw r3, TRKExceptionStatus.exceptionInfo.PC(r2) + lhz r3, TRKExceptionStatus.exceptionInfo.exceptionID(r2) + cmpwi r3, 0x200 + beq LAB_00010ba4 + cmpwi r3, 0x300 + beq LAB_00010ba4 + cmpwi r3, 0x400 + beq LAB_00010ba4 + cmpwi r3, 0x600 + beq LAB_00010ba4 + cmpwi r3, 0x700 + beq LAB_00010ba4 + cmpwi r3, 0x800 + beq LAB_00010ba4 + cmpwi r3, 0x1000 + beq LAB_00010ba4 + cmpwi r3, 0x1100 + beq LAB_00010ba4 + cmpwi r3, 0x1200 + beq LAB_00010ba4 + cmpwi r3, 0x1300 + beq LAB_00010ba4 + b LAB_00010bb0 +LAB_00010ba4: + mfsrr0 r3 + addi r3, r3, 0x4 + mtsrr0 r3 +LAB_00010bb0: + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + li r3, 0x1 + stb r3, TRKExceptionStatus.exceptionDetected(r2) + mfsprg r3, 3 + mtcrf 0xff, r3 + mfsprg r2, 1 + mfsprg r3, 2 + rfi +#endif // clang-format on +} + +void TRKPostInterruptEvent(void) +{ + NubEventType eventType; + u32 inst; + TRKEvent event; + + if (gTRKState.inputActivated) { + gTRKState.inputActivated = FALSE; + } else { + switch (gTRKCPUState.Extended1.exceptionID & 0xFFFF) { + case 0xd00: + case 0x700: + TRKTargetReadInstruction(&inst, gTRKCPUState.Default.PC); + + if (inst == 0xfe00000) { + eventType = NUBEVENT_Support; + } else { + eventType = NUBEVENT_Breakpoint; + } + break; + default: + eventType = NUBEVENT_Exception; + break; + } + + TRKConstructEvent(&event, eventType); + TRKPostEvent(&event); + } +} + +asm void TRKSwapAndGo() +{ +#ifdef __MWERKS__ // clang-format off + nofralloc + lis r3, gTRKState@h + ori r3, r3, gTRKState@l + stmw r0, TRKState_PPC.GPR[0](r3) + mfmsr r0 + stw r0, TRKState_PPC.MSR(r3) + mflr r0 + stw r0, TRKState_PPC.LR(r3) + mfctr r0 + stw r0, TRKState_PPC.CTR(r3) + mfxer r0 + stw r0, TRKState_PPC.XER(r3) + mfdsisr r0 + stw r0, TRKState_PPC.DSISR(r3) + mfdar r0 + stw r0, TRKState_PPC.DAR(r3) + li r1, -0x7ffe + nor r1, r1, r1 + mfmsr r3 + and r3, r3, r1 + mtmsr r3 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r2, TRKState_PPC.inputPendingPtr(r2) + lbz r2, TRKState_PPC.GPR[0](r2) + cmpwi r2, 0 + beq L_802CF930 + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + li r3, 1 + stb r3, TRKState_PPC.inputActivated(r2) + b TRKInterruptHandlerEnableInterrupts +L_802CF930: + lis r2, gTRKExceptionStatus@h + ori r2, r2, gTRKExceptionStatus@l + li r3, 0 + stb r3, 0xc(r2) + bl TRKRestoreExtended1Block + lis r2, gTRKCPUState@h + ori r2, r2, gTRKCPUState@l + lmw r27, ProcessorState_PPC.Default.PC(r2) + mtsrr0 r27 + mtlr r28 + mtcrf 0xff, r29 + mtctr r30 + mtxer r31 + lmw r3, ProcessorState_PPC.Default.GPR[3](r2) + lwz r0, ProcessorState_PPC.Default.GPR[0](r2) + lwz r1, ProcessorState_PPC.Default.GPR[1](r2) + lwz r2, ProcessorState_PPC.Default.GPR[2](r2) + rfi +#endif // clang-format on +} + +asm void TRKInterruptHandlerEnableInterrupts(void) +{ +#ifdef __MWERKS__ // clang-format off + nofralloc; + lis r2, gTRKState@h + ori r2, r2, gTRKState@l + lwz r0, TRKState_PPC.MSR(r2) + sync + mtmsr r0 + sync + lwz r0, TRKState_PPC.LR(r2) + mtlr r0 + lwz r0, TRKState_PPC.CTR(r2) + mtctr r0 + lwz r0, TRKState_PPC.XER(r2) + mtxer r0 + lwz r0, TRKState_PPC.DSISR(r2) + mtdsisr r0 + lwz r0, TRKState_PPC.DAR(r2) + mtdar r0 + lmw r3, TRKState_PPC.GPR[3](r2) + lwz r0, TRKState_PPC.GPR[0](r2) + lwz r1, TRKState_PPC.GPR[1](r2) + lwz r2, TRKState_PPC.GPR[2](r2) + b TRKPostInterruptEvent +#endif // clang-format on +} + +DSError TRKTargetInterrupt(TRKEvent* event) +{ + DSError error = DS_NoError; + switch (event->eventType) { + case NUBEVENT_Breakpoint: + case NUBEVENT_Exception: + if (TRKTargetCheckStep() == FALSE) { + TRKTargetSetStopped(TRUE); + error = TRKDoNotifyStopped(DSMSG_NotifyStopped); + } + break; + default: + break; + } + + return error; +} + +DSError TRKTargetAddStopInfo(TRKBuffer* buffer) +{ + DSError error; + u32 instruction; + + error = TRKAppendBuffer1_ui32(buffer, gTRKCPUState.Default.PC); + if (error == 0) { + error = TRKTargetReadInstruction(&instruction, gTRKCPUState.Default.PC); + } + if (error == 0) + error = TRKAppendBuffer1_ui32(buffer, instruction); + if (error == 0) + error + = TRKAppendBuffer1_ui16(buffer, gTRKCPUState.Extended1.exceptionID); + return error; +} + +DSError TRKTargetAddExceptionInfo(TRKBuffer* buffer) +{ + DSError error; + u32 local_10; + + error = TRKAppendBuffer1_ui32(buffer, gTRKExceptionStatus.exceptionInfo.PC); + if (error == 0) { + error = TRKTargetReadInstruction(&local_10, + gTRKExceptionStatus.exceptionInfo.PC); + } + if (error == 0) { + error = TRKAppendBuffer1_ui32(buffer, local_10); + } + if (error == 0) { + error = TRKAppendBuffer1_ui16( + buffer, gTRKExceptionStatus.exceptionInfo.exceptionID); + } + + return error; +} + +static DSError TRKTargetEnableTrace(BOOL val) +{ + if (val) { + gTRKCPUState.Extended1.MSR = (gTRKCPUState.Extended1.MSR | 0x400); + } else { + gTRKCPUState.Extended1.MSR = (gTRKCPUState.Extended1.MSR & ~0x400); + } + return DS_NoError; +} + +static BOOL TRKTargetStepDone() +{ + BOOL result = TRUE; + + if (gTRKStepStatus.active + && ((u16)gTRKCPUState.Extended1.exceptionID) == PPC_Trace) { + switch (gTRKStepStatus.type) { + case DSSTEP_IntoCount: + if (gTRKStepStatus.count > 0) { + result = FALSE; + } + break; + case DSSTEP_IntoRange: + if (gTRKCPUState.Default.PC >= gTRKStepStatus.rangeStart + && gTRKCPUState.Default.PC <= gTRKStepStatus.rangeEnd) { + result = FALSE; + } + break; + default: + break; + } + } + + return result; +} + +static DSError TRKTargetDoStep() +{ + gTRKStepStatus.active = TRUE; + TRKTargetEnableTrace(TRUE); + + if (gTRKStepStatus.type == DSSTEP_IntoCount + || gTRKStepStatus.type == DSSTEP_OverCount) { + gTRKStepStatus.count--; + } + + TRKTargetSetStopped(FALSE); + return DS_NoError; +} + +static BOOL TRKTargetCheckStep() +{ + if (gTRKStepStatus.active) { + TRKTargetEnableTrace(FALSE); + + if (TRKTargetStepDone()) { + gTRKStepStatus.active = FALSE; + } else { + TRKTargetDoStep(); + } + } + + return gTRKStepStatus.active; +} + +DSError TRKTargetSingleStep(u32 count, BOOL stepOver) +{ + DSError error = DS_NoError; + + if (stepOver) { + error = DS_UnsupportedError; + } else { + gTRKStepStatus.count = count; + gTRKStepStatus.type = DSSTEP_IntoCount; + error = TRKTargetDoStep(); + } + + return error; +} + +DSError TRKTargetStepOutOfRange(u32 rangeStart, u32 rangeEnd, BOOL stepOver) +{ + DSError error = DS_NoError; + + if (stepOver) { + // Stepping over isn't supported for PowerPC + error = DS_UnsupportedError; + } else { + gTRKStepStatus.type = DSSTEP_IntoRange; + // gTRKStepStatus.active = TRUE; + gTRKStepStatus.rangeStart = rangeStart; + gTRKStepStatus.rangeEnd = rangeEnd; + error = TRKTargetDoStep(); + } + + return error; +} + +u32 TRKTargetGetPC() { return gTRKCPUState.Default.PC; } + +DSError TRKTargetSupportRequest() +{ + DSError error; + size_t* length; + DSIOResult ioResult; + MessageCommandID commandId; + TRKEvent event; + + commandId = gTRKCPUState.Default.GPR[3]; + if (commandId != DSMSG_ReadFile && commandId != DSMSG_WriteFile) { + TRKConstructEvent(&event, 4); + TRKPostEvent(&event); + return DS_NoError; + } else { + length = (size_t*)gTRKCPUState.Default.GPR[5]; + error = TRKSuppAccessFile((u8)gTRKCPUState.Default.GPR[4], + (u8*)gTRKCPUState.Default.GPR[6], length, + &ioResult, TRUE, commandId == DSMSG_ReadFile); + + if (ioResult == DS_IONoError && error != DS_NoError) { + ioResult = DS_IOError; + } + + gTRKCPUState.Default.GPR[3] = ioResult; + + if (commandId == DSMSG_ReadFile) { + TRK_flush_cache((void*)gTRKCPUState.Default.GPR[6], *length); + } + } + + gTRKCPUState.Default.PC += 4; + return error; +} + +DSError TRKTargetFlushCache(u8, void* start, void* end) +{ + if (start < end) { + TRK_flush_cache(start, (u8*)end - (u8*)start); + return DS_NoError; + } + + return DS_InvalidMemory; +} + +BOOL TRKTargetStopped() { return gTRKState.isStopped; } + +void TRKTargetSetStopped(unsigned int stopped) +{ + gTRKState.isStopped = stopped; +} + +u32 TRKTargetStop() +{ + TRKTargetSetStopped(1); + return 0; +} + +DSError TRKPPCAccessSPR(void* value, u32 spr_register_num, BOOL read) +{ + /* Initialize instruction array with nop */ + + u32 access_func[5] + = { INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP }; + /* + ** Construct a small assembly function to perform the + ** requested access and call it. The read/write function + ** is in the form: + ** + ** read: + ** mfspr r4, spr_register_num + ** stw r4, 0(r3) + ** blr + ** + ** write: + ** lwz r4, 0(r3) + ** mtspr spr_register_num, r4 + ** blr + ** + */ + + if (read) { + access_func[0] = INSTR_MFSPR(4, spr_register_num); + access_func[1] = (u32)INSTR_STW(4, 0, 3); + } else { + access_func[0] = (u32)INSTR_LWZ(4, 0, 3); + access_func[1] = INSTR_MTSPR(spr_register_num, 4); + } + + return TRKPPCAccessSpecialReg(value, access_func, read); +} + +DSError TRKPPCAccessPairedSingleRegister(void* srcDestPtr, u32 psr, BOOL read) +{ + // all nop by default + u32 instructionData[] + = { INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP }; + + if (read) { + instructionData[0] + = INSTR_PSQ_ST(psr, 0, 3, 0, 0); // psq_st psr, 0(r3), 0, 0 + } else { + instructionData[0] + = INSTR_PSQ_L(psr, 0, 3, 0, 0); // psq_l psr, 0(r3), 0, 0 + } + + return TRKPPCAccessSpecialReg(srcDestPtr, instructionData, read); +} + +DSError TRKPPCAccessFPRegister(void* srcDestPtr, u32 fpr, BOOL read) +{ + DSError error = DS_NoError; + // all nop by default + u32 instructionData1[] + = { INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP, INSTR_NOP }; + + if (fpr < 0x20) { + if (read) { + instructionData1[0] = INSTR_STFD(fpr, 0, 3); // stfd fpr, 0(r3) + } else { + instructionData1[0] = INSTR_LFD(fpr, 0, 3); // lfd fpr, 0(r3) + } + + error = TRKPPCAccessSpecialReg(srcDestPtr, instructionData1, read); + } else if (fpr == 0x20) { + if (read) { + instructionData1[0] = INSTR_STFD(1, 0, 4); // stfd f1, 0(r4) + instructionData1[1] = 0xfc20048e; // mtfsf 0xff, f1 + instructionData1[2] = INSTR_STFD(1, 0, 3); // stfd f1, 0(r3) + instructionData1[3] = INSTR_LFD(1, 0, 4); // lfd f1, 0(r4) + } else { + instructionData1[0] = INSTR_STFD(1, 0, 4); // stfd f1, 0(r4) + instructionData1[1] = INSTR_LFD(1, 0, 3); // lfd f1, 0(r4) + instructionData1[2] = 0xfdfe0d8e; // mtfsf 0xff, f1 + instructionData1[3] = INSTR_LFD(1, 0, 4); // lfd f1, 0(r4) + } + error = TRKPPCAccessSpecialReg(srcDestPtr, instructionData1, read); + *(u64*)srcDestPtr &= 0xFFFFFFFF; + } else if (fpr == 0x21) { + if (!read) { + *(u32*)srcDestPtr = *((u32*)(srcDestPtr) + 1); + } + + error = TRKPPCAccessSPR(srcDestPtr, SPR_FPECR, read); + if (read) { + DSFetch_u64(srcDestPtr) = DSFetch_u32(srcDestPtr) & 0xffffffffLL; + } + } + + return error; +} + +#define DEBUG_VECTORREG_ACCESS 0 + +DSError TRKPPCAccessSpecialReg(void* value, u32* access_func, BOOL read) +{ + typedef void (*asm_access_type)(void*, void*); + + asm_access_type asm_access; + + /* + ** Construct a small assembly function to perform the + ** requested access and call it. The read/write function + ** is in the form: + ** + ** + ** blr + */ + + /* + ** Put blr instruction at the end of access function (it should be + ** a 5-instruction array w/the last one empty). + */ + + access_func[9] = INSTR_BLR; + + /* + ** Now that the instruction array is built, get a function pointer to it. + */ + + asm_access = (asm_access_type)access_func; + +#if DEBUG_VECTORREG_ACCESS + + __puts("\r\nasm_access: "); + __puthex8((u32)asm_access); + __puts(" access_func: "); + __puthex8((u32)access_func); + + for (i = 0; i < 10; i++) { + __puts("\r\ninst["); + __puthex2(i); + __puts("]: "); + __puthex8(access_func[i]); + __puts(" ; "); + __puthex8(*((u32*)asm_access + i)); + } + + __puts("\r\n"); + +#endif + + // Flush cache + TRK_flush_cache(access_func, (sizeof(access_func) * 10)); + (*asm_access)((u32*)value, (void*)&TRKvalue128_temp); + + return DS_NoError; +} + +void TRKTargetSetInputPendingPtr(void* ptr) { gTRKState.inputPendingPtr = ptr; } diff --git a/src/TRK_MINNOW_DOLPHIN/usr_put.c b/src/TRK_MINNOW_DOLPHIN/usr_put.c new file mode 100644 index 00000000..eda11e06 --- /dev/null +++ b/src/TRK_MINNOW_DOLPHIN/usr_put.c @@ -0,0 +1,5 @@ +#include "TRK_MINNOW_DOLPHIN/Os/dolphin/usr_put.h" +#include "TRK_MINNOW_DOLPHIN/MetroTRK/Portable/msghndlr.h" +#include "PowerPC_EABI_Support/MetroTRK/trk.h" + +void usr_put_initialize(void) { } diff --git a/src/dolphin/gx/GXFifo.c b/src/dolphin/gx/GXFifo.c index 963be184..583303a0 100644 --- a/src/dolphin/gx/GXFifo.c +++ b/src/dolphin/gx/GXFifo.c @@ -6,15 +6,15 @@ #include -static OSThread *__GXCurrentThread; +static struct __GXFifoObj* CPUFifo; +static struct __GXFifoObj* GPFifo; +static OSThread* __GXCurrentThread; static GXBool CPGPLinked; static BOOL GXOverflowSuspendInProgress; static GXBreakPtCallback BreakPointCB; static u32 __GXOverflowCount; -struct __GXFifoObj *CPUFifo; -struct __GXFifoObj *GPFifo; -void *__GXCurrentBP; +void* __GXCurrentBP; static void __GXFifoReadEnable(void); static void __GXFifoReadDisable(void); @@ -38,10 +38,10 @@ static void GXUnderflowHandler(s16 interrupt, OSContext *context) { ASSERTLINE(0x1A3, GXOverflowSuspendInProgress); - OSResumeThread(__GXCurrentThread); - GXOverflowSuspendInProgress = FALSE; - __GXWriteFifoIntReset(1U, 1U); - __GXWriteFifoIntEnable(1U, 0U); + OSResumeThread(__GXCurrentThread); + GXOverflowSuspendInProgress = FALSE; + __GXWriteFifoIntReset(1U, 1U); + __GXWriteFifoIntEnable(1U, 0U); } #define SOME_SET_REG_MACRO(reg, size, shift, val) \ @@ -51,17 +51,17 @@ static void GXUnderflowHandler(s16 interrupt, OSContext *context) static void GXBreakPointHandler(s16 interrupt, OSContext *context) { - OSContext exceptionContext; + OSContext exceptionContext; - SOME_SET_REG_MACRO(gx->cpEnable, 1, 5, 0); - GX_SET_CP_REG(1, gx->cpEnable); - if (BreakPointCB != NULL) { - OSClearContext(&exceptionContext); - OSSetCurrentContext(&exceptionContext); - BreakPointCB(); - OSClearContext(&exceptionContext); - OSSetCurrentContext(context); - } + gx->cpEnable = gx->cpEnable & 0xFFFFFFDF; + __cpReg[1] = gx->cpEnable; + if (BreakPointCB != NULL) { + OSClearContext(&exceptionContext); + OSSetCurrentContext(&exceptionContext); + BreakPointCB(); + OSClearContext(&exceptionContext); + OSSetCurrentContext(context); + } } static void GXCPInterruptHandler(s16 interrupt, OSContext *context) diff --git a/src/dolphin/gx/GXFrameBuf.c b/src/dolphin/gx/GXFrameBuf.c index 4c04abab..9c12a892 100644 --- a/src/dolphin/gx/GXFrameBuf.c +++ b/src/dolphin/gx/GXFrameBuf.c @@ -291,26 +291,25 @@ f32 GXGetYScaleFactor(u16 efbHeight, u16 xfbHeight) u32 GXSetDispCopyYScale(f32 vscale) { - u8 enable; - u32 iScale; - u32 ht; - u32 reg; + u32 scale; + GXBool check; + u32 height; + u32 reg; - CHECK_GXBEGIN(0x615, "GXSetDispCopyYScale"); + scale = (u32)(256.0f / vscale) & 0x1FF; + check = (scale != 0x100); - ASSERTMSGLINE(0x617, vscale >= 1.0f, "GXSetDispCopyYScale: Vertical scale must be >= 1.0"); + reg = 0; + SET_REG_FIELD(0, reg, 9, 0, scale); + SET_REG_FIELD(0, reg, 8, 24, 0x4E); + GX_WRITE_RAS_REG(reg); + gx->bpSentNot = GX_FALSE; - iScale = (u32)(256.0f / vscale) & 0x1FF; - enable = (iScale != 256); + SET_REG_FIELD(0, gx->cpDisp, 1, 10, check); - reg = 0; - SET_REG_FIELD(0x61E, reg, 9, 0, iScale); - SET_REG_FIELD(0x61E, reg, 8, 24, 0x4E); - GX_WRITE_RAS_REG(reg); - gx->bpSentNot = 0; - SET_REG_FIELD(0x623, gx->cpDisp, 1, 10, enable); - ht = GET_REG_FIELD(gx->cpDispSize, 10, 10) + 1; - return __GXGetNumXfbLines(ht, iScale); + height = (gx->cpDispSize >> 10 & 0x3FF) + 1; + + return __GXGetNumXfbLines(height, scale); } void GXSetCopyClear(GXColor clear_clr, u32 clear_z) diff --git a/src/dolphin/gx/GXInit.c b/src/dolphin/gx/GXInit.c index 82874fab..e6774ba7 100644 --- a/src/dolphin/gx/GXInit.c +++ b/src/dolphin/gx/GXInit.c @@ -65,150 +65,134 @@ static GXTlutRegion *__GXDefaultTlutRegionCallback(u32 idx) GXFifoObj FifoObj; -GXFifoObj *GXInit(void *base, u32 size) +GXFifoObj* GXInit(void* base, u32 size) { - u32 i; - u32 reg; - u32 freqBase; + u32 i; + u32 reg; + u32 freqBase; + char stack_padding[8]; - // OSRegisterVersion(__GXVersion); + gx->inDispList = FALSE; + gx->dlSaveContext = TRUE; - gx->inDispList = FALSE; - gx->dlSaveContext = TRUE; - // gx->abtWaitPECopy = 1; -#if DEBUG - __GXinBegin = FALSE; -#endif - gx->tcsManEnab = FALSE; - gx->tevTcEnab = FALSE; - - GXSetMisc(GX_MT_XF_FLUSH, 0); + gx->tcsManEnab = FALSE; + gx->tevTcEnab = 0; + GXSetMisc(GX_MT_XF_FLUSH, 0); + __piReg = OSPhysicalToUncached(0xC003000); + __cpReg = OSPhysicalToUncached(0xC000000); + __peReg = OSPhysicalToUncached(0xC001000); + __memReg = OSPhysicalToUncached(0xC004000); + __GXFifoInit(); + GXInitFifoBase(&FifoObj, base, size); + GXSetCPUFifo(&FifoObj); + GXSetGPFifo(&FifoObj); + __GXPEInit(); + EnableWriteGatherPipe(); - __piReg = OSPhysicalToUncached(0xC003000); - __cpReg = OSPhysicalToUncached(0xC000000); - __peReg = OSPhysicalToUncached(0xC001000); - __memReg = OSPhysicalToUncached(0xC004000); - // __GXFifoInit(); - // GXInitFifoBase(&FifoObj, base, size); - // GXSetCPUFifo(&FifoObj); - // GXSetGPFifo(&FifoObj); + gx->genMode = 0; + SET_REG_FIELD(0, gx->genMode, 8, 24, 0); + gx->bpMask = 255; + SET_REG_FIELD(0, gx->bpMask, 8, 24, 0x0F); + gx->lpSize = 0; + SET_REG_FIELD(0, gx->lpSize, 8, 24, 0x22); + for (i = 0; i < 16; ++i) { + gx->tevc[i] = 0; + gx->teva[i] = 0; + gx->tref[i / 2] = 0; + gx->texmapId[i] = GX_TEXMAP_NULL; + SET_REG_FIELD(0x2F2, gx->tevc[i], 8, 24, 0xC0 + i * 2); + SET_REG_FIELD(0x2F3, gx->teva[i], 8, 24, 0xC1 + i * 2); + SET_REG_FIELD(0x2F5, gx->tevKsel[i / 2], 8, 24, 0xF6 + i / 2); + SET_REG_FIELD(0x2F7, gx->tref[i / 2], 8, 24, 0x28 + i / 2); + } + gx->iref = 0; + SET_REG_FIELD(0, gx->iref, 8, 24, 0x27); + for (i = 0; i < 8; ++i) { + gx->suTs0[i] = 0; + gx->suTs1[i] = 0; + SET_REG_FIELD(0x300, gx->suTs0[i], 8, 24, 0x30 + i * 2); + SET_REG_FIELD(0x301, gx->suTs1[i], 8, 24, 0x31 + i * 2); + } + SET_REG_FIELD(0, gx->suScis0, 8, 24, 0x20); + SET_REG_FIELD(0, gx->suScis1, 8, 24, 0x21); + SET_REG_FIELD(0, gx->cmode0, 8, 24, 0x41); + SET_REG_FIELD(0, gx->cmode1, 8, 24, 0x42); + SET_REG_FIELD(0, gx->zmode, 8, 24, 0x40); + SET_REG_FIELD(0, gx->peCtrl, 8, 24, 0x43); + SET_REG_FIELD(0, gx->cpTex, 2, 7, 0); + gx->dirtyState = 0; + gx->dirtyVAT = FALSE; - // if (!resetFuncRegistered) { - // OSRegisterResetFunction(&GXResetFuncInfo); - // resetFuncRegistered = 1; - // } + freqBase = __OSBusClock / 500; + __GXFlushTextureState(); + reg = (freqBase >> 11) | 0x400 | 0x69000000; + GX_WRITE_RAS_REG(reg); - // __GXPEInit(); - // EnableWriteGatherPipe(); + __GXFlushTextureState(); + reg = (freqBase / 0x1080) | 0x200 | 0x46000000; + GX_WRITE_RAS_REG(reg); - gx->genMode = 0; - SET_REG_FIELD(0, gx->genMode, 8, 24, 0); - gx->bpMask = 255; - SET_REG_FIELD(0, gx->bpMask, 8, 24, 0x0F); - gx->lpSize = 0; - SET_REG_FIELD(0, gx->lpSize, 8, 24, 0x22); - for (i = 0; i < 16; ++i) { - gx->tevc[i] = 0; - gx->teva[i] = 0; - gx->tref[i / 2] = 0; - gx->texmapId[i] = GX_TEXMAP_NULL; - SET_REG_FIELD(0x46A, gx->tevc[i], 8, 24, 0xC0 + i * 2); - SET_REG_FIELD(0x46B, gx->teva[i], 8, 24, 0xC1 + i * 2); - SET_REG_FIELD(0x46D, gx->tevKsel[i / 2], 8, 24, 0xF6 + i / 2); - SET_REG_FIELD(0x46F, gx->tref[i / 2], 8, 24, 0x28 + i / 2); - } - gx->iref = 0; - SET_REG_FIELD(0, gx->iref, 8, 24, 0x27); - for (i = 0; i < 8; ++i) { - gx->suTs0[i] = 0; - gx->suTs1[i] = 0; - SET_REG_FIELD(0x478, gx->suTs0[i], 8, 24, 0x30 + i * 2); - SET_REG_FIELD(0x479, gx->suTs1[i], 8, 24, 0x31 + i * 2); - } - SET_REG_FIELD(0, gx->suScis0, 8, 24, 0x20); - SET_REG_FIELD(0, gx->suScis1, 8, 24, 0x21); - SET_REG_FIELD(0, gx->cmode0, 8, 24, 0x41); - SET_REG_FIELD(0, gx->cmode1, 8, 24, 0x42); - SET_REG_FIELD(0, gx->zmode, 8, 24, 0x40); - SET_REG_FIELD(0, gx->peCtrl, 8, 24, 0x43); - SET_REG_FIELD(0, gx->cpTex, 2, 7, 0); + for (i = GX_VTXFMT0; i < GX_MAX_VTXFMT; i++) { + SET_REG_FIELD(0, gx->vatA[i], 1, 30, 1); + SET_REG_FIELD(0, gx->vatB[i], 1, 31, 1); + do { + s32 regAddr; + GX_WRITE_U8(GX_LOAD_CP_REG); + GX_WRITE_U8(i | 0x80); + GX_WRITE_U32(gx->vatB[i]); + regAddr = i - 12; + } while (0); + } + { + u32 reg1 = 0; + u32 reg2 = 0; + SET_REG_FIELD(0, reg1, 1, 0, 1); + SET_REG_FIELD(0, reg1, 1, 1, 1); + SET_REG_FIELD(0, reg1, 1, 2, 1); + SET_REG_FIELD(0, reg1, 1, 3, 1); + SET_REG_FIELD(0, reg1, 1, 4, 1); + SET_REG_FIELD(0, reg1, 1, 5, 1); + GX_WRITE_XF_REG(0, reg1); + SET_REG_FIELD(0, reg2, 1, 0, 1); + GX_WRITE_XF_REG(0x12, reg2); + } + { + u32 reg = 0; + SET_REG_FIELD(0, reg, 1, 0, 1); + SET_REG_FIELD(0, reg, 1, 1, 1); + SET_REG_FIELD(0, reg, 1, 2, 1); + SET_REG_FIELD(0, reg, 1, 3, 1); + SET_REG_FIELD(0, reg, 8, 24, 0x58); + GX_WRITE_RAS_REG(reg); + } + for (i = 0; i < 8; i++) + GXInitTexCacheRegion(&gx->TexRegions[i], 0, i * 0x8000, 0, + 0x80000 + i * 0x8000, 0); + for (i = 0; i < 4; i++) + GXInitTexCacheRegion(&gx->TexRegionsCI[i], 0, (i * 2 + 8) * 0x8000, 0, + (i * 2 + 9) * 0x8000, 0); + for (i = 0; i < 16; i++) + GXInitTlutRegion(&gx->TlutRegions[i], 0xC0000 + i * 0x2000, 16); + for (i = 0; i < 4; i++) + GXInitTlutRegion(&gx->TlutRegions[i + 16], 0xE0000 + i * 0x8000, 64); + __cpReg[3] = 0; - // gx->zScale = 1.6777216E7f; - // gx->zOffset = 0.0f; - gx->dirtyState = 0; - gx->dirtyVAT = FALSE; -#if DEBUG - __gxVerif->verifyLevel = GX_WARN_NONE; - GXSetVerifyCallback((GXVerifyCallback)__GXDefaultVerifyCallback); - for (i = 0; i < 256; i++) { - SET_REG_FIELD(0, __gxVerif->rasRegs[i], 8, 24, 0xFF); - } - memset(__gxVerif->xfRegsDirty, 0, 0x50); - memset(__gxVerif->xfMtxDirty, 0, 0x100); - memset(__gxVerif->xfNrmDirty, 0, 0x60); - memset(__gxVerif->xfLightDirty, 0, 0x80); -#endif - freqBase = __OSBusClock / 500; - // __GXFlushTextureState(); - reg = (freqBase >> 11) | 0x400 | 0x69000000; - GX_WRITE_RAS_REG(reg); + { + SET_REG_FIELD(0, gx->perfSel, 4, 4, 0); + GX_WRITE_U8(GX_LOAD_CP_REG); + GX_WRITE_U8(0x20); + GX_WRITE_U32(gx->perfSel); + GX_WRITE_U8(GX_LOAD_XF_REG); + GX_WRITE_U32(0x1006); + GX_WRITE_U32(0); + GX_WRITE_RAS_REG(0x23000000); + GX_WRITE_RAS_REG(0x24000000); + GX_WRITE_RAS_REG(0x67000000); + } - // __GXFlushTextureState(); - reg = (freqBase / 0x1080) | 0x200 | 0x46000000; - GX_WRITE_RAS_REG(reg); - - // __GXInitRevisionBits(); - - // for (i = 0; i < 8; i++) { - // GXInitTexCacheRegion(&gx->TexRegions0[i], GX_FALSE, GXTexRegionAddrTable[i], - // GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 8], GX_TEXCACHE_32K); - // GXInitTexCacheRegion(&gx->TexRegions1[i], GX_FALSE, GXTexRegionAddrTable[i + 16], - // GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 24], GX_TEXCACHE_32K); - // GXInitTexCacheRegion(&gx->TexRegions2[i], GX_TRUE, GXTexRegionAddrTable[i + 32], - // GX_TEXCACHE_32K, GXTexRegionAddrTable[i + 40], GX_TEXCACHE_32K); - // } - - // for (i = 0; i < 16; i++) { - // GXInitTlutRegion(&gx->TlutRegions[i], 0xC0000 + 0x2000 * i, GX_TLUT_256); - // } - - // for (i = 0; i < 4; i++) { - // GXInitTlutRegion(&gx->TlutRegions[i + 16], 0xE0000 + 0x8000 * i, GX_TLUT_1K); - // } - - { - u32 reg = 0; -#if DEBUG - s32 regAddr; -#endif - GX_SET_CP_REG(3, reg); - - SET_REG_FIELD(0, gx->perfSel, 4, 4, 0); - GX_WRITE_U8(0x8); - GX_WRITE_U8(0x20); - GX_WRITE_U32(gx->perfSel); -#if DEBUG - regAddr = -12; -#endif - - reg = 0; - GX_WRITE_XF_REG(6, reg); - - reg = 0x23000000; - GX_WRITE_RAS_REG(reg); - - reg = 0x24000000; - GX_WRITE_RAS_REG(reg); - - reg = 0x67000000; - GX_WRITE_RAS_REG(reg); - } - - __GXSetIndirectMask(0); - __GXSetTmemConfig(2); - __GXInitGX(); - - return &FifoObj; + __GXSetTmemConfig(0); + __GXInitGX(); + return &FifoObj; } void __GXInitGX() diff --git a/src/dolphin/mtx/mtx.c b/src/dolphin/mtx/mtx.c index a8f2bb06..eb16a64f 100644 --- a/src/dolphin/mtx/mtx.c +++ b/src/dolphin/mtx/mtx.c @@ -3,6 +3,8 @@ static f32 Unit01[] = { 0.0f, 1.0f }; extern f32 sinf(f32); +extern f32 cosf(f32); +extern f32 tanf(f32); void C_MTXIdentity(Mtx mtx) { @@ -648,12 +650,12 @@ void C_MTXRotRad(Mtx m, char axis, f32 rad) #ifdef GEKKO void PSMTXRotRad(Mtx m, char axis, f32 rad) { - // f32 sinA, cosA; + f32 sinA, cosA; - // sinA = sinf(rad); - // cosA = cosf(rad); + sinA = sinf(rad); + cosA = cosf(rad); - // PSMTXRotTrig(m, axis, sinA, cosA); + PSMTXRotTrig(m, axis, sinA, cosA); } #endif @@ -717,68 +719,63 @@ void C_MTXRotTrig(Mtx m, char axis, f32 sinA, f32 cosA) #ifdef GEKKO void PSMTXRotTrig(register Mtx m, register char axis, register f32 sinA, register f32 cosA) { -// register f32 fc0, fc1, nsinA; -// register f32 fw0, fw1, fw2, fw3; -// // clang-format off -// asm -// { -// frsp sinA, sinA -// frsp cosA, cosA -// } + register f32 fc0, fc1, nsinA; + register f32 fw0, fw1, fw2, fw3; + // clang-format off -// fc0 = 0.0F; -// fc1 = 1.0F; -// asm -// { -// ori axis, axis, 0x20 -// ps_neg nsinA, sinA -// cmplwi axis, 'x' -// beq _case_x -// cmplwi axis, 'y' -// beq _case_y -// cmplwi axis, 'z' -// beq _case_z -// b _end + fc0 = 0.0F; + fc1 = 1.0F; + asm + { + ori axis, axis, 0x20 + ps_neg nsinA, sinA + cmplwi axis, 'x' + beq _case_x + cmplwi axis, 'y' + beq _case_y + cmplwi axis, 'z' + beq _case_z + b _end -// _case_x: -// psq_st fc1, 0(m), 1, 0 -// psq_st fc0, 4(m), 0, 0 -// ps_merge00 fw0, sinA, cosA -// psq_st fc0, 12(m), 0, 0 -// ps_merge00 fw1, cosA, nsinA -// psq_st fc0, 28(m), 0, 0 -// psq_st fc0, 44(m), 1, 0 -// psq_st fw0, 36(m), 0, 0 -// psq_st fw1, 20(m), 0, 0 -// b _end; +_case_x: + psq_st fc1, 0(m), 1, 0 + psq_st fc0, 4(m), 0, 0 + ps_merge00 fw0, sinA, cosA + psq_st fc0, 12(m), 0, 0 + ps_merge00 fw1, cosA, nsinA + psq_st fc0, 28(m), 0, 0 + psq_st fc0, 44(m), 1, 0 + psq_st fw0, 36(m), 0, 0 + psq_st fw1, 20(m), 0, 0 + b _end; -// _case_y: -// ps_merge00 fw0, cosA, fc0 -// ps_merge00 fw1, fc0, fc1 -// psq_st fc0, 24(m), 0, 0 -// psq_st fw0, 0(m), 0, 0 -// ps_merge00 fw2, nsinA, fc0 -// ps_merge00 fw3, sinA, fc0 -// psq_st fw0, 40(m), 0, 0; -// psq_st fw1, 16(m), 0, 0; -// psq_st fw3, 8(m), 0, 0; -// psq_st fw2, 32(m), 0, 0; -// b _end; +_case_y: + ps_merge00 fw0, cosA, fc0 + ps_merge00 fw1, fc0, fc1 + psq_st fc0, 24(m), 0, 0 + psq_st fw0, 0(m), 0, 0 + ps_merge00 fw2, nsinA, fc0 + ps_merge00 fw3, sinA, fc0 + psq_st fw0, 40(m), 0, 0; + psq_st fw1, 16(m), 0, 0; + psq_st fw3, 8(m), 0, 0; + psq_st fw2, 32(m), 0, 0; + b _end; -// _case_z: -// psq_st fc0, 8(m), 0, 0 -// ps_merge00 fw0, sinA, cosA -// ps_merge00 fw2, cosA, nsinA -// psq_st fc0, 24(m), 0, 0 -// psq_st fc0, 32(m), 0, 0 -// ps_merge00 fw1, fc1, fc0 -// psq_st fw0, 16(m), 0, 0 -// psq_st fw2, 0(m), 0, 0 -// psq_st fw1, 40(m), 0, 0 +_case_z: + psq_st fc0, 8(m), 0, 0 + ps_merge00 fw0, sinA, cosA + ps_merge00 fw2, cosA, nsinA + psq_st fc0, 24(m), 0, 0 + psq_st fc0, 32(m), 0, 0 + ps_merge00 fw1, fc1, fc0 + psq_st fw0, 16(m), 0, 0 + psq_st fw2, 0(m), 0, 0 + psq_st fw1, 40(m), 0, 0 -// _end: -// } -// // clang-format on +_end: + } + // clang-format on } #endif @@ -822,70 +819,58 @@ void C_MTXRotAxisRad(Mtx m, const Vec *axis, f32 rad) } #ifdef GEKKO -static void __PSMTXRotAxisRadInternal(register Mtx m, const register Vec *axis, register f32 sT, register f32 cT) +#define qr0 0 + +void PSMTXRotAxisRad(register Mtx m, const Vec *axis, register f32 rad) { - register f32 tT, fc0; register f32 tmp0, tmp1, tmp2, tmp3, tmp4; register f32 tmp5, tmp6, tmp7, tmp8, tmp9; - tmp9 = 0.5F; - tmp8 = 3.0F; - // clang-format off - asm - { - frsp cT, cT - psq_l tmp0, 0(axis), 0, 0 - frsp sT, sT - lfs tmp1, 8(axis) - ps_mul tmp2, tmp0, tmp0 - fadds tmp7, tmp9, tmp9 - ps_madd tmp3, tmp1, tmp1, tmp2 - fsubs fc0, tmp9, tmp9 - ps_sum0 tmp4, tmp3, tmp1, tmp2 - fsubs tT, tmp7, cT - frsqrte tmp5, tmp4 - fmuls tmp2, tmp5, tmp5 - fmuls tmp3, tmp5, tmp9 - fnmsubs tmp2, tmp2, tmp4, tmp8 - fmuls tmp5, tmp2, tmp3 - ps_merge00 cT, cT, cT - ps_muls0 tmp0, tmp0, tmp5 - ps_muls0 tmp1, tmp1, tmp5 - ps_muls0 tmp4, tmp0, tT - ps_muls0 tmp9, tmp0, sT - ps_muls0 tmp5, tmp1, tT - ps_muls1 tmp3, tmp4, tmp0 - ps_muls0 tmp2, tmp4, tmp0 - ps_muls0 tmp4, tmp4, tmp1 - fnmsubs tmp6, tmp1, sT, tmp3 - fmadds tmp7, tmp1, sT, tmp3 - ps_neg tmp0, tmp9 - ps_sum0 tmp8, tmp4, fc0, tmp9 - ps_sum0 tmp2, tmp2, tmp6, cT - ps_sum1 tmp3, cT, tmp7, tmp3 - ps_sum0 tmp6, tmp0, fc0 ,tmp4 - psq_st tmp8, 8(m), 0, 0 - ps_sum0 tmp0, tmp4, tmp4, tmp0 - psq_st tmp2, 0(m), 0, 0 - ps_muls0 tmp5, tmp5, tmp1 - psq_st tmp3, 16(m), 0, 0 - ps_sum1 tmp4, tmp9, tmp0, tmp4 - psq_st tmp6, 24(m), 0, 0 - ps_sum0 tmp5, tmp5, fc0, cT - psq_st tmp4, 32(m), 0, 0 - psq_st tmp5, 40(m), 0, 0 + register f32 sT; + register f32 cT; + register f32 oneMinusCosT; + register f32 zero; + Vec axisNormalized; + register Vec *axisNormalizedPtr; + + zero = 0.0f; + axisNormalizedPtr = &axisNormalized; + sT = sinf(rad); + cT = cosf(rad); + oneMinusCosT = 1.0f - cT; + + PSVECNormalize(axis, axisNormalizedPtr); + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l rad, 0x0(axisNormalizedPtr), 0, qr0 + lfs tmp1, 0x8(axisNormalizedPtr) + ps_merge00 tmp0, cT, cT + ps_muls0 tmp4, rad, oneMinusCosT + ps_muls0 tmp5, tmp1, oneMinusCosT + ps_muls1 tmp3, tmp4, rad + ps_muls0 tmp2, tmp4, rad + ps_muls0 rad, rad, sT + ps_muls0 tmp4, tmp4, tmp1 + fnmsubs tmp6, tmp1, sT, tmp3 + fmadds tmp7, tmp1, sT, tmp3 + ps_neg tmp9, rad + ps_sum0 tmp8, tmp4, zero, rad + ps_sum0 tmp2, tmp2, tmp6, tmp0 + ps_sum1 tmp3, tmp0, tmp7, tmp3 + ps_sum0 tmp6, tmp9, zero, tmp4 + ps_sum0 tmp9, tmp4, tmp4, tmp9 + psq_st tmp8, 0x8(m), 0, qr0 + ps_muls0 tmp5, tmp5, tmp1 + psq_st tmp2, 0x0(m), 0, qr0 + ps_sum1 tmp4, rad, tmp9, tmp4 + psq_st tmp3, 0x10(m), 0, qr0 + ps_sum0 tmp5, tmp5, zero, tmp0 + psq_st tmp6, 0x18(m), 0, qr0 + psq_st tmp4, 0x20(m), 0, qr0 + psq_st tmp5, 0x28(m), 0, qr0 } - // clang-format on -} - -void PSMTXRotAxisRad(Mtx m, const Vec *axis, f32 rad) -{ - // f32 sinT, cosT; - - // sinT = sinf(rad); - // cosT = cosf(rad); - - // __PSMTXRotAxisRadInternal(m, axis, sinT, cosT); +#endif // clang-format on } #endif @@ -1219,30 +1204,30 @@ void PSMTXReflect(register Mtx m, const register Vec *p, const register Vec *n) void C_MTXLookAt(Mtx m, const Point3d *camPos, const Vec *camUp, const Point3d *target) { - // Vec vLook, vRight, vUp; + Vec vLook, vRight, vUp; - // vLook.x = camPos->x - target->x; - // vLook.y = camPos->y - target->y; - // vLook.z = camPos->z - target->z; - // VECNormalize(&vLook, &vLook); - // VECCrossProduct(camUp, &vLook, &vRight); - // VECNormalize(&vRight, &vRight); - // VECCrossProduct(&vLook, &vRight, &vUp); + vLook.x = camPos->x - target->x; + vLook.y = camPos->y - target->y; + vLook.z = camPos->z - target->z; + VECNormalize(&vLook, &vLook); + VECCrossProduct(camUp, &vLook, &vRight); + VECNormalize(&vRight, &vRight); + VECCrossProduct(&vLook, &vRight, &vUp); - // m[0][0] = vRight.x; - // m[0][1] = vRight.y; - // m[0][2] = vRight.z; - // m[0][3] = -(camPos->x * vRight.x + camPos->y * vRight.y + camPos->z * vRight.z); + m[0][0] = vRight.x; + m[0][1] = vRight.y; + m[0][2] = vRight.z; + m[0][3] = -(camPos->x * vRight.x + camPos->y * vRight.y + camPos->z * vRight.z); - // m[1][0] = vUp.x; - // m[1][1] = vUp.y; - // m[1][2] = vUp.z; - // m[1][3] = -(camPos->x * vUp.x + camPos->y * vUp.y + camPos->z * vUp.z); + m[1][0] = vUp.x; + m[1][1] = vUp.y; + m[1][2] = vUp.z; + m[1][3] = -(camPos->x * vUp.x + camPos->y * vUp.y + camPos->z * vUp.z); - // m[2][0] = vLook.x; - // m[2][1] = vLook.y; - // m[2][2] = vLook.z; - // m[2][3] = -(camPos->x * vLook.x + camPos->y * vLook.y + camPos->z * vLook.z); + m[2][0] = vLook.x; + m[2][1] = vLook.y; + m[2][2] = vLook.z; + m[2][3] = -(camPos->x * vLook.x + camPos->y * vLook.y + camPos->z * vLook.z); } void C_MTXLightFrustum(Mtx m, float t, float b, float l, float r, float n, float scaleS, float scaleT, float transS, float transT) @@ -1269,28 +1254,28 @@ void C_MTXLightFrustum(Mtx m, float t, float b, float l, float r, float n, float void C_MTXLightPerspective(Mtx m, f32 fovY, f32 aspect, float scaleS, float scaleT, float transS, float transT) { - // f32 angle; - // f32 cot; + f32 angle; + f32 cot; - // angle = fovY * 0.5f; - // angle = MTXDegToRad(angle); + angle = fovY * 0.5f; + angle = MTXDegToRad(angle); - // cot = 1.0f / tanf(angle); + cot = 1.0f / tanf(angle); - // m[0][0] = (cot / aspect) * scaleS; - // m[0][1] = 0.0f; - // m[0][2] = -transS; - // m[0][3] = 0.0f; + m[0][0] = (cot / aspect) * scaleS; + m[0][1] = 0.0f; + m[0][2] = -transS; + m[0][3] = 0.0f; - // m[1][0] = 0.0f; - // m[1][1] = cot * scaleT; - // m[1][2] = -transT; - // m[1][3] = 0.0f; + m[1][0] = 0.0f; + m[1][1] = cot * scaleT; + m[1][2] = -transT; + m[1][3] = 0.0f; - // m[2][0] = 0.0f; - // m[2][1] = 0.0f; - // m[2][2] = -1.0f; - // m[2][3] = 0.0f; + m[2][0] = 0.0f; + m[2][1] = 0.0f; + m[2][2] = -1.0f; + m[2][3] = 0.0f; } void C_MTXLightOrtho(Mtx m, f32 t, f32 b, f32 l, f32 r, float scaleS, float scaleT, float transS, float transT) diff --git a/src/dolphin/mtx/quat.c b/src/dolphin/mtx/quat.c index 66964bf0..f3e15a87 100644 --- a/src/dolphin/mtx/quat.c +++ b/src/dolphin/mtx/quat.c @@ -1,3 +1,4 @@ +#include "dolphin/math.h" #include "dolphin/mtx.h" float acosf(float x); @@ -5,6 +6,28 @@ float acosf(float x); float sinf(float x); float cosf(float x); +void C_QUATAdd(const Quaternion *p, const Quaternion *q, Qtrn *r) +{ + r->x = p->x + q->x; + r->y = p->y + q->y; + r->z = p->z + q->z; + r->w = p->w + q->w; +} + +void PSQUATAdd(register const Quaternion *p, register const Quaternion *q, register Quaternion *r) +{ + asm { + psq_l f0, 0x0(r3), 0, 0 + psq_l f1, 0x0(r4), 0, 0 + ps_add f0, f0, f1 + psq_st f0, 0x0(r5), 0, 0 + psq_l f0, 0x8(r3), 0, 0 + psq_l f1, 0x8(r4), 0, 0 + ps_add f0, f0, f1 + psq_st f0, 0x8(r5), 0, 0 + } +} + void PSQUATMultiply(register const Quaternion *a, register const Quaternion *b, register Quaternion *ab) { asm { @@ -33,6 +56,77 @@ void PSQUATMultiply(register const Quaternion *a, register const Quaternion *b, } } +void PSQUATNormalize(const register Quaternion *src, register Quaternion *unit) +{ + // sdata2 + (void)0.00001f; + (void)0.0f; + (void)0.5; + (void)3.0; + (void)1.0f; + (void)0.5f; + (void)3.0f; + { + register f32 vv1, vv2, vv3; + register f32 vv4, vv5, vv6; + register f32 vv7, vv8; + register f32 vv9 = 0.00001f; + register f32 vvA = 0.5F; + register f32 vvB = 3.0F; + asm + { + psq_l vv1, 0(src), 0, 0; + ps_mul vv3, vv1, vv1; + psq_l vv2, 8(src), 0, 0; + ps_sub vv6, vv9, vv9; + ps_madd vv3, vv2, vv2, vv3; + ps_sum0 vv3, vv3, vv3, vv3; + frsqrte vv4, vv3; + ps_sub vv5, vv3, vv9; + fmul vv7, vv4, vv4; + fmul vv8, vv4, vvA; + fnmsub vv7, vv7, vv3, vvB; + fmul vv4, vv7, vv8; + ps_sel vv4, vv5, vv4, vv6; + ps_muls0 vv1, vv1, vv4; + ps_muls0 vv2, vv2, vv4; + psq_st vv1, 0(unit), 0, 0; + psq_st vv2, 8(unit), 0, 0; + } + } +} + +void PSQUATInverse(const register Quaternion *src, register Quaternion *inv) +{ + register f32 vv1, vv2, vv3, vv4; + register f32 vv5, vv6, vv7, vv8, vv9, vvA, vvB; + register f32 vvC = 1.0F; + asm { + psq_l vv1, 0(src), 0, 0; + ps_mul vv5, vv1, vv1; + psq_l vv2, 8(src), 0, 0; + ps_madd vv5, vv2, vv2, vv5; + ps_add vvA, vvC, vvC; + ps_sum0 vv5, vv5, vv5, vv5; + fres vv7, vv5; + ps_neg vv6, vv5; + ps_nmsub vv9, vv5, vv7, vvA; + ps_mul vv7, vv7, vv9; + ps_sel vv7, vv6, vvC, vv7 + b loc1; + loc0: + fmr vv7, vvC; + loc1: + ps_neg vv8, vv7; + ps_muls1 vv4, vv7, vv2; + ps_muls0 vv1, vv1, vv8; + psq_st vv4, 12(inv), 1, 0; + ps_muls0 vv3, vv2, vv8; + psq_st vv1, 0(inv), 0, 0; + psq_st vv3, 8(inv), 1, 0; + } +} + void C_QUATRotAxisRad(Quaternion *q, const Vec *axis, f32 rad) { f32 tmp, tmp2, tmp3; @@ -52,6 +146,42 @@ void C_QUATRotAxisRad(Quaternion *q, const Vec *axis, f32 rad) q->w = tmp3; } +void C_QUATMtx(Quaternion *r, const Mtx m) +{ + f32 vv0, vv1; + s32 i, j, k; + s32 idx[3] = { 1, 2, 0 }; + f32 vec[3]; + vv0 = m[0][0] + m[1][1] + m[2][2]; + if (vv0 > 0.0f) { + vv1 = (f32)sqrtf(vv0 + 1.0f); + r->w = vv1 * 0.5f; + vv1 = 0.5f / vv1; + r->x = (m[2][1] - m[1][2]) * vv1; + r->y = (m[0][2] - m[2][0]) * vv1; + r->z = (m[1][0] - m[0][1]) * vv1; + } + else { + i = 0; + if (m[1][1] > m[0][0]) + i = 1; + if (m[2][2] > m[i][i]) + i = 2; + j = idx[i]; + k = idx[j]; + vv1 = (f32)sqrtf((m[i][i] - (m[j][j] + m[k][k])) + 1.0f); + vec[i] = vv1 * 0.5f; + if (vv1 != 0.0f) + vv1 = 0.5f / vv1; + r->w = (m[k][j] - m[j][k]) * vv1; + vec[j] = (m[i][j] + m[j][i]) * vv1; + vec[k] = (m[i][k] + m[k][i]) * vv1; + r->x = vec[0]; + r->y = vec[1]; + r->z = vec[2]; + } +} + void C_QUATSlerp(const Quaternion *p, const Quaternion *q, Quaternion *r, f32 t) { f32 ratioA, ratioB; diff --git a/src/dolphin/mtx/vec.c b/src/dolphin/mtx/vec.c index 985a6196..de5ad450 100644 --- a/src/dolphin/mtx/vec.c +++ b/src/dolphin/mtx/vec.c @@ -210,23 +210,23 @@ void C_VECHalfAngle(const Vec *a, const Vec *b, Vec *half) void C_VECReflect(const Vec *src, const Vec *normal, Vec *dst) { - // Vec a0; - // Vec b0; - // f32 dot; + Vec a0; + Vec b0; + f32 dot; - // a0.x = -src->x; - // a0.y = -src->y; - // a0.z = -src->z; + a0.x = -src->x; + a0.y = -src->y; + a0.z = -src->z; - // VECNormalize(&a0, &a0); - // VECNormalize(normal, &b0); + VECNormalize(&a0, &a0); + VECNormalize(normal, &b0); - // dot = VECDotProduct(&a0, &b0); - // dst->x = b0.x * 2.0f * dot - a0.x; - // dst->y = b0.y * 2.0f * dot - a0.y; - // dst->z = b0.z * 2.0f * dot - a0.z; + dot = VECDotProduct(&a0, &b0); + dst->x = b0.x * 2.0f * dot - a0.x; + dst->y = b0.y * 2.0f * dot - a0.y; + dst->z = b0.z * 2.0f * dot - a0.z; - // VECNormalize(dst, dst); + VECNormalize(dst, dst); } asm f32 PSVECSquareDistance(register const Vec *a, register const Vec *b) { diff --git a/src/dolphin/pad/Padclamp.c b/src/dolphin/pad/Padclamp.c index a96d75c4..bdc9af39 100644 --- a/src/dolphin/pad/Padclamp.c +++ b/src/dolphin/pad/Padclamp.c @@ -103,17 +103,34 @@ static void ClampTrigger(u8 *trigger, u8 min, u8 max) } } -void PADClamp(PADStatus *status) +void PADClamp(PADStatus* status) { - // int i; - // for (i = 0; i < PAD_CHANMAX; i++, status++) { - // if (status->err != PAD_ERR_NONE) { - // continue; - // } + int i; + for (i = 0; i < PAD_CHANMAX; i++, status++) { + if (status->err != PAD_ERR_NONE) { + continue; + } - // ClampStick(&status->stickX, &status->stickY, ClampRegion.maxStick, ClampRegion.xyStick, ClampRegion.minStick); - // ClampStick(&status->substickX, &status->substickY, ClampRegion.maxSubstick, ClampRegion.xySubstick, ClampRegion.minSubstick); - // ClampTrigger(&status->triggerL, ClampRegion.minTrigger, ClampRegion.maxTrigger); - // ClampTrigger(&status->triggerR, ClampRegion.minTrigger, ClampRegion.maxTrigger); - // } + ClampStick(&status->stickX, &status->stickY, ClampRegion.maxStick, + ClampRegion.xyStick, ClampRegion.minStick); + ClampStick(&status->substickX, &status->substickY, + ClampRegion.maxSubstick, ClampRegion.xySubstick, + ClampRegion.minSubstick); + if (status->triggerL <= ClampRegion.minTrigger) { + status->triggerL = 0; + } else { + if (ClampRegion.maxTrigger < status->triggerL) { + status->triggerL = ClampRegion.maxTrigger; + } + status->triggerL -= ClampRegion.minTrigger; + } + if (status->triggerR <= ClampRegion.minTrigger) { + status->triggerR = 0; + } else { + if (ClampRegion.maxTrigger < status->triggerR) { + status->triggerR = ClampRegion.maxTrigger; + } + status->triggerR -= ClampRegion.minTrigger; + } + } } From f812abd06f3aeeaa79a02271df75c11fbc933f2c Mon Sep 17 00:00:00 2001 From: mrshigure Date: Mon, 13 Jan 2025 06:48:07 -0800 Subject: [PATCH 17/24] Matched most of msmse and msmmus (3 functions left) (#526) * Matched most of msmse (1 function left) * Matched most of msmmus (2 functions left) --- configure.py | 2 +- include/game/msm.h | 10 +- include/msm/msmmus.h | 19 +- include/msm/msmse.h | 21 +- include/msm/msmsys.h | 122 ++++++++++ src/msm/msmmus.c | 342 ++++++++++++++++++++++++++++ src/msm/msmse.c | 514 +++++++++++++++++++++++++++++++++++++++++++ src/msm/msmsys.c | 111 +--------- 8 files changed, 1022 insertions(+), 119 deletions(-) create mode 100755 include/msm/msmsys.h create mode 100755 src/msm/msmmus.c create mode 100755 src/msm/msmse.c diff --git a/configure.py b/configure.py index 22c85a12..5c54e7fc 100644 --- a/configure.py +++ b/configure.py @@ -834,7 +834,7 @@ config.libs = [ }, { "lib": "msm", - "mw_version": "GC/1.2.5n", + "mw_version": "GC/1.2.5", "cflags": cflags_msm, "host": False, "objects": [ diff --git a/include/game/msm.h b/include/game/msm.h index 9ab79e8e..5d7dfa11 100644 --- a/include/game/msm.h +++ b/include/game/msm.h @@ -42,9 +42,11 @@ #define MSM_ERR_INITFAIL -20 #define MSM_ERR_INVALID_AUXPARAM -31 #define MSM_ERR_PLAYFAIL -33 +#define MSM_ERR_22 -34 #define MSM_ERR_STREAMALLOC_FAIL -35 #define MSM_ERR_INSTALLED -36 #define MSM_ERR_GRP_NOTLOADED -103 +#define MSM_ERR_6F -111 #define MSM_ERR_INVALIDID -120 #define MSM_ERR_INVALIDFILE -121 #define MSM_ERR_REMOVEDID -122 @@ -173,7 +175,7 @@ s32 msmSysDelGroupBase(s32 grpNum); s32 msmSeSetParam(int seNo, MSM_SEPARAM *param); int msmSePlay(int seId, MSM_SEPARAM *param); s32 msmSeStop(int seNo, s32 speed); -s32 msmSePauseAll(BOOL pause, s32 speed); +void msmSePauseAll(BOOL pause, s32 speed); s32 msmSePause(int seNo, BOOL pause, s32 speed); void msmSeStopAll(BOOL checkGrp, s32 speed); s32 msmSeSetListener(Vec *pos, Vec *heading, float sndDist, float sndSpeed, MSM_SELISTENER *listener); @@ -181,11 +183,11 @@ s32 msmSeUpdataListener(Vec *pos, Vec *heading); void msmSeDelListener(void); s32 msmSeGetStatus(int seNo); s32 msmSeGetNumPlay(BOOL baseGrp); -s32 msmSeGetEntryID(s16 seId, int *seNo); +s32 msmSeGetEntryID(s32 seId, int *seNo); int msmMusPlay(int musId, MSM_MUSPARAM *musParam); s32 msmMusStop(int musNo, s32 speed); -s32 msmMusPauseAll(BOOL pause, s32 speed); +void msmMusPauseAll(BOOL pause, s32 speed); s32 msmMusPause(int musNo, BOOL pause, s32 speed); s32 msmMusGetMidiCtrl(int musNo, s32 channel, s32 ctrl); void msmMusStopAll(BOOL checkGrp, s32 speed); @@ -200,4 +202,4 @@ s32 msmStreamPause(int streamNo, BOOL pause, s32 speed); void msmStreamStopAll(s32 speed); s32 msmStreamGetStatus(int streamNo); -#endif \ No newline at end of file +#endif diff --git a/include/msm/msmmus.h b/include/msm/msmmus.h index 8d3554fc..a6951063 100644 --- a/include/msm/msmmus.h +++ b/include/msm/msmmus.h @@ -1,10 +1,23 @@ #ifndef MSMMUS_H #define MSMMUS_H -#include "dolphin.h" -#include "dolphin/types.h" +#include "game/msm.h" +#include "msm/msmsys.h" -s32 msmMusInit(s32 *, DVDFileInfo *); +#include "dolphin.h" + +void msmMusFdoutEnd(void); void msmMusPeriodicProc(void); +s32 msmMusGetMidiCtrl(int musNo, s32 channel, s32 ctrl); +s32 msmMusGetNumPlay(BOOL baseGrp); +s32 msmMusGetStatus(int musNo); +void msmMusSetMasterVolume(s32 arg0); +s32 msmMusSetParam(s32 arg0, MSM_MUSPARAM* arg1); +void msmMusPauseAll(BOOL pause, s32 speed); +s32 msmMusPause(int musNo, BOOL pause, s32 speed); +void msmMusStopAll(BOOL checkGrp, s32 speed); +s32 msmMusStop(int musNo, s32 speed); +int msmMusPlay(int musId, MSM_MUSPARAM* musParam); +s32 msmMusInit(sysData* arg0, DVDFileInfo* arg1); #endif diff --git a/include/msm/msmse.h b/include/msm/msmse.h index 10242362..e017f67e 100644 --- a/include/msm/msmse.h +++ b/include/msm/msmse.h @@ -1,10 +1,25 @@ #ifndef MSMSE_H #define MSMSE_H -#include "dolphin.h" -#include "dolphin/types.h" +#include "game/msm.h" +#include "msm/msmsys.h" + +#include "dolphin.h" -s32 msmSeInit(s32 *, DVDFileInfo *); void msmSePeriodicProc(void); +MSMSE* msmSeGetIndexPtr(s32 arg0); +void msmSeDelListener(void); +s32 msmSeUpdataListener(Vec* pos, Vec* heading); +s32 msmSeSetListener(Vec* pos, Vec* heading, float sndDist, float sndSpeed, MSM_SELISTENER* listener); +s32 msmSeGetEntryID(s32 seId, int* seNo); +s32 msmSeGetNumPlay(BOOL baseGrp); +s32 msmSeGetStatus(int seNo); +void msmSeSetMasterVolume(s32 arg0); +s32 msmSeSetParam(int seNo, MSM_SEPARAM* param); +void msmSePauseAll(BOOL pause, s32 speed); +void msmSeStopAll(BOOL checkGrp, s32 speed); +s32 msmSeStop(int seNo, s32 speed); +int msmSePlay(int seId, MSM_SEPARAM *param); +s32 msmSeInit(sysData* arg0, DVDFileInfo* arg1); #endif diff --git a/include/msm/msmsys.h b/include/msm/msmsys.h new file mode 100755 index 00000000..fbd36f7e --- /dev/null +++ b/include/msm/msmsys.h @@ -0,0 +1,122 @@ +#ifndef MSMSYS_H +#define MSMSYS_H + +#include "dolphin.h" + +typedef struct _unkSubStruct { + s8 unk0; + union { + f32 unk4f[9]; + s32 unk4s[9]; + }; +} unkSubStruct; + +typedef struct _unkSubStruct2 { + char unk[0x3C]; + s32 unk3C; + s32 unk40; + s32 unk44; + s32 unk48; + s32 unk4C; + s32 unk50; + s32 unk54; + s32 unk58; + s32 unk5C; + char unk60[0x30]; + s32 unk90; + s32 unk94; + s32 unk98; + char unk9C[0xA0]; + u8 unk13C; + f32 unk140; + f32 unk144; + f32 unk148; + f32 unk14C; + f32 unk150; + char unk154[0x70]; + u8 unk1C4; + f32 unk1C8; + f32 unk1CC; + f32 unk1D0; + f32 unk1D4; + f32 unk1D8; + f32 unk1DC; +} unkSubStruct2; // sizeof unk1E0 + +typedef struct _unkSubStruct3 { + char unk[0x4]; + s32 unk4; + char unk8[0x8]; + s32 unk10; // offset + u32 unk14; // length + s32 unk18; // offset + u32 unk1C; // length + char unk20[8]; + s32 unk28; + s32 unk2C; + s32 unk30; + s32 unk34; + s32 unk38; + char unk3C[4]; + s32 unk40; + char unk44[4]; + s32 unk48; + char unk4C[0x14]; +} unkSubStruct3; // sizeof 0x60 + +typedef struct _unkStruct3 { + s32 unk0; + s32 unk4; + s32 unk8; +} unkStruct3; + +typedef struct _sndInitData { + s8 unk0; + s8 unk1; + s8 unk2; + char unk3[1]; + s16 unk4; + s16 unk6; + s8 unk8; + char unk9[5]; + s8 unkE; + s8 unkF; + u32 unk10; + s32 unk14; + char unk18[8]; + s32 unk20; + char unk24[5]; + s8 unk29[10]; // size unknown +} sndInitData; + +typedef struct _sysData { + s32 unk0; + s8 unk4; + s8 unk5; + s8 unk6; + s8 unk7; + s32 unk8; + unkSubStruct3 *unkC; + sndInitData *unk10; + unkSubStruct *unk14; + s8 unk18; + s8 unk19; + s8 unk1A; + s8 unk1B; + unkSubStruct2 unk1C; // userA + unkSubStruct2 unk1FC; // userB + char unk3DC[0x8]; + s32 unk3E4; + s32 unk3E8; + s32 unk3EC; + s32 unk3F0; + s8 unk3F4; + unkStruct3 *unk3F8; + char unk3FC[0xF0]; + s32 unk4EC; + BOOL unk4F0; + AIDCallback unk4F4; + s32 unk4F8; +} sysData; + +#endif diff --git a/src/msm/msmmus.c b/src/msm/msmmus.c new file mode 100755 index 00000000..8f87e7a5 --- /dev/null +++ b/src/msm/msmmus.c @@ -0,0 +1,342 @@ +#include "msm/msmmus.h" + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s8 unk02; + /* 0x03 */ s8 unk03; + /* 0x04 */ s8 unk04; + /* 0x05 */ s8 unk05; + /* 0x06 */ char unk06[2]; + /* 0x08 */ SND_SEQID unk08; + /* 0x0C */ void* unk0C; + /* 0x10 */ void* unk10; + /* 0x14 */ volatile s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s8 unk1C; + /* 0x1D */ char unk1D[3]; + /* 0x20 */ volatile s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ s8 unk28; + /* 0x29 */ char unk29[3]; + /* 0x2C */ volatile s32 unk2C; + /* 0x30 */ s32 unk30; + /* 0x34 */ char unk34[1]; + /* 0x35 */ volatile s8 unk35; + /* 0x36 */ s8 unk36; + /* 0x37 */ char unk37[1]; + /* 0x38 */ SND_PLAYPARA unk38; +} msmMusStruct00; // Size 0x58 + +typedef struct { + /* 0x00 */ u16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s8 unk0C; + /* 0x0D */ s8 unk0D; + /* 0x0E */ char unk0E[2]; +} msmMusStruct01; // Size 0x10 + +typedef struct { + /* 0x000 */ s16 unk00; + /* 0x002 */ s8 unk02; + /* 0x003 */ s8 unk03; + /* 0x004 */ s8 unk04; + /* 0x005 */ char unk05[3]; + /* 0x008 */ s32 unk08; + /* 0x00C */ msmMusStruct01* unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ void* unk14; + /* 0x018 */ msmMusStruct00 unk18[1]; // unknown length + /* 0x01C */ char unk70[0x108]; +} msmMusStruct02; // Size 0x178 + +static msmMusStruct02 mus; + +static void msmMusPauseSub(msmMusStruct00* arg0, BOOL pause, s32 speed) { + s32 temp_r30; + + temp_r30 = speed / 15; + if (pause) { + if (arg0->unk04 == 2) { + if (temp_r30 != 0) { + arg0->unk24 = temp_r30; + arg0->unk20 = temp_r30; + arg0->unk28 = 0x7F; + } else { + sndSeqPause(arg0->unk08); + arg0->unk28 = 0; + } + arg0->unk04 = 3; + } + } else { + if (arg0->unk04 == 3) { + if (temp_r30 != 0) { + if (arg0->unk20 != 0) { + arg0->unk20 = -temp_r30; + } else { + sndSeqContinue(arg0->unk08); + arg0->unk20 = -temp_r30; + arg0->unk24 = 0; + arg0->unk28 = 0; + } + } else { + sndSeqContinue(arg0->unk08); + arg0->unk28 = 0x7F; + sndSeqVolume(arg0->unk02 * arg0->unk03 * arg0->unk1C * arg0->unk28 / 2048383, 0, arg0->unk08, 0); + } + arg0->unk04 = 2; + } + } +} + +static void msmMusPauseFade(msmMusStruct00* arg0) { + if (arg0->unk20 > 0) { + if (--arg0->unk24 == 0) { + arg0->unk20 = 0; + arg0->unk28 = 0; + sndSeqPause(arg0->unk08); + } else { + arg0->unk28 = arg0->unk24 * 0x7F / arg0->unk20; + sndSeqVolume(arg0->unk02 * arg0->unk03 * arg0->unk1C * arg0->unk28 / 2048383, 0, arg0->unk08, 0); + } + } else if (arg0->unk20 < 0) { + if (++arg0->unk24 >= -arg0->unk20) { + arg0->unk20 = 0; + arg0->unk28 = 0x7F; + } else { + arg0->unk28 = arg0->unk24 * 0x7F / -arg0->unk20; + } + sndSeqVolume(arg0->unk02 * arg0->unk03 * arg0->unk1C * arg0->unk28 / 2048383, 0, arg0->unk08, 0); + } +} + +static void msmMusFade(msmMusStruct00* arg0) { + if (arg0->unk04 != 2) { + return; + } + if (arg0->unk14 > 0) { + if (--arg0->unk18 == 0) { + if (arg0->unk04 != 0) { + arg0->unk14 = 0; + if (arg0->unk14 != 0) { + arg0->unk18 = arg0->unk14; + arg0->unk1C = 0x7F; + } else { + sndSeqStop(arg0->unk08); + arg0->unk04 = 1; + } + } + } else { + arg0->unk1C = arg0->unk18 * 0x7F / arg0->unk14; + sndSeqVolume(arg0->unk02 * arg0->unk03 * arg0->unk1C * arg0->unk28 / 2048383, 0, arg0->unk08, 0); + } + } else if (arg0->unk14 < 0) { + if (++arg0->unk18 >= -arg0->unk14) { + arg0->unk14 = 0; + arg0->unk1C = 0x7F; + } else { + arg0->unk1C = arg0->unk18 * 0x7F / -arg0->unk14; + } + sndSeqVolume(arg0->unk02 * arg0->unk03 * arg0->unk1C * arg0->unk28 / 2048383, 0, arg0->unk08, 0); + } +} + +void msmMusFdoutEnd(void) { +} + +void msmMusPeriodicProc(void) { + s32 var_r26; + msmMusStruct00* temp_r25; + + mus.unk04 = mus.unk03 = 0; + for (var_r26 = 0; var_r26 < mus.unk02; var_r26++) { + temp_r25 = &mus.unk18[var_r26]; + if (temp_r25->unk05 != 0) { + continue; + } + switch (temp_r25->unk04) { + case 1: + case 2: + if (sndSeqGetValid(temp_r25->unk08) == FALSE) { + temp_r25->unk04 = 0; + } + break; + } + if (temp_r25->unk04 == 0) { + continue; + } + if (msmSysCheckBaseGroup(mus.unk0C[temp_r25->unk00].unk00) != 0) { + mus.unk04++; + } else { + mus.unk03++; + } + msmMusPauseFade(temp_r25); + if (temp_r25->unk04 == 2 && temp_r25->unk2C != 0) { + if (++temp_r25->unk30 >= temp_r25->unk2C) { + temp_r25->unk2C = 0; + temp_r25->unk02 = temp_r25->unk36; + } else { + temp_r25->unk02 = temp_r25->unk35 + temp_r25->unk30 * (temp_r25->unk36 - temp_r25->unk35) / temp_r25->unk2C; + } + sndSeqVolume(temp_r25->unk02 * temp_r25->unk03 * temp_r25->unk1C * temp_r25->unk28 / 2048383, 0, temp_r25->unk08, 0); + } + msmMusFade(temp_r25); + } +} + +s32 msmMusGetMidiCtrl(int musNo, s32 channel, s32 ctrl) { + msmMusStruct00* temp_ptr; + + if (musNo < 0 || musNo >= mus.unk02) { + return MSM_ERR_OUTOFMUS; + } + temp_ptr = &mus.unk18[musNo]; + if (sndSeqGetValid(temp_ptr->unk08) == TRUE) { + return sndSeqGetMidiCtrl(temp_ptr->unk08, channel & 0xF, ctrl); + } + return 0; +} + +s32 msmMusGetNumPlay(BOOL baseGrp) { + msmMusStruct02* mus_ptr = &mus; + + switch (baseGrp) { + case FALSE: + return mus_ptr->unk03 + mus_ptr->unk04; + default: + return mus_ptr->unk03; + } +} + +s32 msmMusGetStatus(int musNo) { + if (musNo < 0 || musNo >= mus.unk02) { + return MSM_ERR_OUTOFMUS; + } + return mus.unk18[musNo].unk04; +} + +void msmMusSetMasterVolume(s32 arg0) { + sndMasterVolume(arg0 & 0x7F, 0, 1, 0); +} + +s32 msmMusSetParam(s32 arg0, MSM_MUSPARAM* arg1) { + msmMusStruct00* temp_r31; + + if (arg0 < 0 || arg0 >= mus.unk02) { + return MSM_ERR_OUTOFMUS; + } + temp_r31 = &mus.unk18[arg0]; + if (arg1->flag & 2) { + temp_r31->unk2C = arg1->fadeSpeed / 15; + if (temp_r31->unk2C != 0) { + temp_r31->unk05 = 1; + temp_r31->unk30 = 0; + temp_r31->unk35 = temp_r31->unk02; + temp_r31->unk36 = arg1->vol & 0x7F; + temp_r31->unk05 = 0; + } else { + temp_r31->unk02 = arg1->vol & 0x7F; + sndSeqVolume(temp_r31->unk02 * temp_r31->unk03 * temp_r31->unk1C * temp_r31->unk28 / 2048383, 0, temp_r31->unk08, 0); + } + } + if (arg1->flag & 0x10) { + sndSeqSpeed(temp_r31->unk08, (arg1->speed << 8) / 100); + } + return 0; +} + +void msmMusPauseAll(BOOL pause, s32 speed) { + s32 var_r27; + msmMusStruct00* temp_r26; + + for (var_r27 = 0; var_r27 < mus.unk02; var_r27++) { + temp_r26 = &mus.unk18[var_r27]; + if (temp_r26->unk04 != 0) { + temp_r26->unk05 = 1; + msmMusPauseSub(temp_r26, pause, speed); + temp_r26->unk05 = 0; + } + } +} + +s32 msmMusPause(int musNo, BOOL pause, s32 speed) { + msmMusStruct00* temp_r31; + + if (musNo < 0 || musNo >= mus.unk02) { + return MSM_ERR_OUTOFMUS; + } + temp_r31 = &mus.unk18[musNo]; + temp_r31->unk05 = 1; + msmMusPauseSub(temp_r31, pause, speed); + temp_r31->unk05 = 0; + return 0; +} + +void msmMusStopAll(BOOL checkGrp, s32 speed) { + s32 var_r28; + msmMusStruct00* temp_r27; + + for (var_r28 = 0; var_r28 < mus.unk02; var_r28++) { + temp_r27 = &mus.unk18[var_r28]; + if (temp_r27->unk04 == 0) { + continue; + } + temp_r27->unk05 = 1; + switch (checkGrp) { + case FALSE: + if (temp_r27->unk04 != 0) { + temp_r27->unk14 = speed / 15; + if (temp_r27->unk14 != 0) { + temp_r27->unk18 = temp_r27->unk14; + temp_r27->unk1C = 0x7F; + } else { + sndSeqStop(temp_r27->unk08); + temp_r27->unk04 = 1; + } + } + break; + default: + if (msmSysCheckBaseGroup(mus.unk0C[temp_r27->unk00].unk00) == 0 && temp_r27->unk04 != 0) { + temp_r27->unk14 = speed / 15; + if (temp_r27->unk14 != 0) { + temp_r27->unk18 = temp_r27->unk14; + temp_r27->unk1C = 0x7F; + } else { + sndSeqStop(temp_r27->unk08); + temp_r27->unk04 = 1; + } + } + break; + } + temp_r27->unk05 = 0; + } +} + +s32 msmMusStop(int musNo, s32 speed) { + msmMusStruct00* temp_r30; + + if (musNo < 0 || musNo >= mus.unk02) { + return MSM_ERR_OUTOFMUS; + } + temp_r30 = &mus.unk18[musNo]; + temp_r30->unk05 = 1; + if (temp_r30->unk04 != 0) { + temp_r30->unk14 = speed / 15; + if (temp_r30->unk14 != 0) { + temp_r30->unk18 = temp_r30->unk14; + temp_r30->unk1C = 0x7F; + } else { + sndSeqStop(temp_r30->unk08); + temp_r30->unk04 = 1; + } + } + temp_r30->unk05 = 0; + return 0; +} + +// TODO: https://decomp.me/scratch/PGpbJ +// msmMusPlay + +// TODO: https://decomp.me/scratch/24daZ +// msmMusInit diff --git a/src/msm/msmse.c b/src/msm/msmse.c new file mode 100755 index 00000000..6582a572 --- /dev/null +++ b/src/msm/msmse.c @@ -0,0 +1,514 @@ +#include "msm/msmse.h" +#include "msm/msmfio.h" +#include "msm/msmmem.h" + +typedef struct { + /* 0x00 */ SND_VOICEID unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s16 unk08; + /* 0x0A */ s8 unk0A; + /* 0x0B */ s8 unk0B; + /* 0x0C */ s8 unk0C; + /* 0x0D */ s8 unk0D; + /* 0x0E */ s16 unk0E; + /* 0x10 */ s8 unk10; + /* 0x11 */ s8 unk11; + /* 0x12 */ s8 unk12; + /* 0x13 */ u8 unk13; + /* 0x14 */ SND_PARAMETER_INFO unk14; + /* 0x1C */ SND_PARAMETER unk1C[5]; + /* 0x30 */ s8 unk30; + /* 0x31 */ s8 unk31; + /* 0x32 */ s16 unk32; + /* 0x34 */ volatile s32 unk34; + /* 0x38 */ s32 unk38; + /* 0x3C */ s8 unk3C; + /* 0x3D */ char unk3D[3]; + /* 0x40 */ volatile s32 unk40; + /* 0x44 */ s32 unk44; + /* 0x48 */ s8 unk48; + /* 0x49 */ char unk49[3]; + /* 0x4C */ SND_EMITTER unk4C; + /* 0x9C */ SND_FVECTOR unk9C; + /* 0xA8 */ SND_FVECTOR unkA8; + /* 0xB4 */ s8 unkB4; + /* 0xB5 */ char unkB5[3]; +} msmSeStruct00; // Size 0xB8 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s8 unk04; + /* 0x05 */ s8 unk05; + /* 0x06 */ s8 unk06; + /* 0x07 */ char unk07[1]; + /* 0x08 */ s32 unk08; + /* 0x0C */ MSMSE* unk0C; + /* 0x10 */ msmSeStruct00* unk10; + /* 0x14 */ SND_LISTENER unk14; + /* 0xA4 */ SND_FVECTOR unkA4; + /* 0xB0 */ SND_FVECTOR unkB0; + /* 0xBC */ SND_FVECTOR unkBC; + /* 0xC8 */ SND_FVECTOR unkC8; + /* 0xD4 */ float unkD4; + /* 0xD8 */ u16 unkD8; + /* 0xDA */ u16 unkDA; +} msmSeStruct02; // Size 0xDC + +msmSeStruct02 se; + +static void msmSeFade(msmSeStruct00* arg0) { + u8 temp_r3; + + if (arg0->unk0A == 3) { + return; + } + if (arg0->unk34 > 0) { + if (--arg0->unk38 == 0) { + arg0->unk34 = 0; + arg0->unk34 = 0; + if (arg0->unk34 != 0) { + arg0->unk38 = arg0->unk34; + arg0->unk3C = 0x7F; + } else { + arg0->unk0A = 1; + if ((arg0->unk13 & 1) && arg0->unkB4 == 1) { + sndRemoveEmitter(&arg0->unk4C); + } else { + sndFXKeyOff(arg0->unk00); + } + } + } else { + arg0->unk3C = arg0->unk38 * 0x7F / arg0->unk34; + temp_r3 = arg0->unk0C * arg0->unk30 * arg0->unk3C * arg0->unk48 / 2048383; + if ((arg0->unk13 & 1) && arg0->unkB4 == 1) { + arg0->unkA8.x = arg0->unkA8.y = arg0->unkA8.z = 0.0f; + sndUpdateEmitter(&arg0->unk4C, &arg0->unk9C, &arg0->unkA8, temp_r3, NULL); + } else { + sndFXVolume(arg0->unk00, temp_r3); + } + } + } else if (arg0->unk34 < 0) { + if (++arg0->unk38 >= -arg0->unk34) { + arg0->unk34 = 0; + arg0->unk3C = 0x7F; + } else { + arg0->unk3C = arg0->unk38 * 0x7F / -arg0->unk34; + } + temp_r3 = arg0->unk0C * arg0->unk30 * arg0->unk3C * arg0->unk48 / 2048383; + if ((arg0->unk13 & 1) && arg0->unkB4 == 1) { + arg0->unkA8.x = arg0->unkA8.y = arg0->unkA8.z = 0.0f; + sndUpdateEmitter(&arg0->unk4C, &arg0->unk9C, &arg0->unkA8, temp_r3, NULL); + } else { + sndFXVolume(arg0->unk00, temp_r3); + } + } +} + +static void msmSePauseSub(msmSeStruct00* arg0, BOOL pause, s32 speed) { + s32 temp_r3; + + temp_r3 = speed / 15; + if (pause) { + if (arg0->unk0A == 2) { + if (temp_r3 != 0) { + arg0->unk40 = arg0->unk44 = temp_r3; + arg0->unk48 = 0x7F; + } else { + arg0->unk48 = 0; + sndFXVolume(arg0->unk00, arg0->unk0C * arg0->unk30 * arg0->unk3C * arg0->unk48 / 2048383); + } + arg0->unk0A = 3; + } + } else { + if (arg0->unk0A == 3) { + if (temp_r3 != 0) { + if (arg0->unk40 != 0) { + arg0->unk40 = -temp_r3; + } else { + arg0->unk40 = -temp_r3; + arg0->unk44 = 0; + arg0->unk48 = 0; + } + } else { + arg0->unk48 = 0x7F; + sndFXVolume(arg0->unk00, arg0->unk0C * arg0->unk30 * arg0->unk3C * arg0->unk48 / 2048383); + } + arg0->unk0A = 2; + } + } +} + +void msmSePeriodicProc(void) { + s32 var_r26; + msmSeStruct00* temp_r3; + u8 temp_r3_3; + + se.unk05 = se.unk06 = 0; + for (var_r26 = 0; var_r26 < se.unk04; var_r26++) { + temp_r3 = &se.unk10[var_r26]; + if (temp_r3->unk0B != 0) { + continue; + } + switch (temp_r3->unk0A) { + case 1: + case 2: + if ((temp_r3->unk13 & 1) && temp_r3->unkB4 == 1) { + if (!sndCheckEmitter(&temp_r3->unk4C)) { + temp_r3->unk0A = 0; + } + } else { + if (sndFXCheck(temp_r3->unk00) == SND_ID_ERROR) { + temp_r3->unk0A = 0; + } + } + break; + } + if (temp_r3->unk0A == 0) { + continue; + } + if (msmSysCheckBaseGroup(se.unk0C[temp_r3->unk08].groupId) != 0) { + se.unk05++; + } else { + se.unk06++; + } + if (temp_r3->unk40 > 0) { + if (--temp_r3->unk44 == 0) { + temp_r3->unk40 = 0; + temp_r3->unk48 = 0; + } else { + temp_r3->unk48 = temp_r3->unk44 * 0x7F / temp_r3->unk40; + } + } else if (temp_r3->unk40 < 0) { + if (++temp_r3->unk44 >= -temp_r3->unk40) { + temp_r3->unk40 = 0; + temp_r3->unk48 = 0x7F; + } else { + temp_r3->unk48 = temp_r3->unk44 * 0x7F / -temp_r3->unk40; + } + } + temp_r3_3 = temp_r3->unk0C * temp_r3->unk30 * temp_r3->unk3C * temp_r3->unk48 / 2048383; + if ((temp_r3->unk13 & 1) && temp_r3->unkB4 == 1) { + temp_r3->unkA8.x = temp_r3->unkA8.y = temp_r3->unkA8.z = 0.0f; + sndUpdateEmitter(&temp_r3->unk4C, &temp_r3->unk9C, &temp_r3->unkA8, temp_r3_3, NULL); + } else { + sndFXVolume(temp_r3->unk00, temp_r3_3); + } + msmSeFade(temp_r3); + } +} + +MSMSE* msmSeGetIndexPtr(s32 arg0) { + if (arg0 < 0 || arg0 >= se.unk00) { + return NULL; + } + return &se.unk0C[arg0]; +} + +void msmSeDelListener(void) { + if (se.unkDA != 0) { + sndRemoveListener(&se.unk14); + se.unkDA = 0; + } +} + +s32 msmSeUpdataListener(Vec* pos, Vec* heading) { + if (se.unkDA == 0) { + return MSM_ERR_22; + } + se.unkB0.x = pos->x - se.unkA4.x; + se.unkB0.y = pos->y - se.unkA4.y; + se.unkB0.z = pos->z - se.unkA4.z; + se.unkA4.x = pos->x; + se.unkA4.y = pos->y; + se.unkA4.z = pos->z; + se.unkBC.x = heading->x; + se.unkBC.y = heading->y; + se.unkBC.z = heading->z; + if (!sndUpdateListener(&se.unk14, &se.unkA4, &se.unkB0, &se.unkBC, &se.unkC8, 0x7F, NULL)) { + return MSM_ERR_22; + } + return 0; +} + +s32 msmSeSetListener(Vec* pos, Vec* heading, float sndDist, float sndSpeed, MSM_SELISTENER* listener) { + msmSeStruct02* se_ptr = &se; + SND_FVECTOR* temp_b0; + SND_FVECTOR* temp_a4; + SND_FVECTOR* temp_c8; + SND_FVECTOR* temp_bc; + s32 var_r3; + float var_f4; + float var_f0; + float var_f0_2; + + temp_a4 = &se_ptr->unkA4; + temp_c8 = &se_ptr->unkC8; + temp_bc = &se_ptr->unkBC; + temp_b0 = &se_ptr->unkB0; + temp_a4->x = pos->x; + temp_a4->y = pos->y; + temp_a4->z = pos->z; + temp_c8->x = temp_c8->z = 0.0f; + temp_c8->y = 1.0f; + temp_bc->x = heading->x; + temp_bc->y = heading->y; + temp_bc->z = heading->z; + temp_b0->x = temp_b0->y = temp_b0->z = 0.0f; + se_ptr->unkD4 = sndDist; + var_r3 = (listener != NULL) ? listener->flag : 0; + var_f4 = (var_r3 & 1) ? listener->startDis : 0.0f; + var_f0 = (var_r3 & 2) ? listener->frontSurDis : (var_f4 + sndDist * 0.25f); + var_f0_2 = (var_r3 & 4) ? listener->backSurDis : (var_f4 + sndDist * 0.25f); + if ((s32) sndAddListenerEx(&se_ptr->unk14, temp_a4, temp_b0, temp_bc, temp_c8, + var_f0, var_f0_2, sndSpeed, -var_f4, 1, 0x7F, NULL) == FALSE) + { + se_ptr->unkDA = 0; + return MSM_ERR_22; + } + se_ptr->unkDA = 1; + return 0; +} + +s32 msmSeGetEntryID(s32 seId, int* seNo) { + msmSeStruct00* temp_r8; + s32 var_r9; + s32 var_r10; + + for (var_r9 = var_r10 = 0; var_r9 < se.unk04; var_r9++) { + temp_r8 = &se.unk10[var_r9]; + if (temp_r8->unk0A != 0 && temp_r8->unk08 == seId) { + if (seNo != NULL) { + seNo[var_r10] = temp_r8->unk04; + } + var_r10++; + } + } + return var_r10; +} + +s32 msmSeGetNumPlay(BOOL baseGrp) { + msmSeStruct02* se_ptr = &se; + + switch (baseGrp) { + case FALSE: + return se_ptr->unk06 + se_ptr->unk05; + default: + return se_ptr->unk06; + } +} + +static inline msmSeStruct00* msmSeGetStatus_inline(s32 seNo) { + msmSeStruct00* var_r4; + s32 var_ctr; + + for (var_ctr = 0; var_ctr < se.unk04; var_ctr++) { + var_r4 = &se.unk10[var_ctr]; + if (var_r4->unk0A != 0 && var_r4->unk04 == seNo) { + return var_r4; + } + } + return NULL; +} + +s32 msmSeGetStatus(int seNo) { + msmSeStruct00* var_r4; + + var_r4 = msmSeGetStatus_inline(seNo); + if (var_r4 == NULL) { + return 0; + } + return var_r4->unk0A; +} + +void msmSeSetMasterVolume(s32 arg0) { + sndMasterVolume(arg0 & 0x7F, 0, 0, 1); +} + +s32 msmSeSetParam(int seNo, MSM_SEPARAM* param) { + msmSeStruct00* var_r31; + s32 temp_r3; + s32 var_r0; + s32 var_r4; + + var_r31 = msmSeGetStatus_inline(seNo); + if (var_r31 == NULL) { + return MSM_ERR_6F; + } + if (param->flag & 1) { + var_r31->unk0B = 1; + var_r31->unk0C = param->vol; + if (!(var_r31->unk13 & 1) || var_r31->unkB4 != 1) { + sndFXVolume(var_r31->unk00, var_r31->unk0C * var_r31->unk30 * var_r31->unk3C * var_r31->unk48 / 2048383); + } + var_r31->unk0B = 0; + } + if (!(var_r31->unk13 & 1)) { + if (param->flag & 2) { + var_r31->unk0D = param->pan; + temp_r3 = var_r31->unk0D + var_r31->unk31 - 0x40; // TODO: inline? + var_r0 = temp_r3; + if (temp_r3 < 0) { + var_r0 = 0; + } + if (var_r0 > 0x7F) { + var_r0 = 0x7F; + } + sndFXPanning(var_r31->unk00, var_r0); + } + if (param->flag & 4) { + var_r31->unk0E = param->pitch; + var_r4 = var_r31->unk0E + var_r31->unk32 + 0x2000; + if (var_r4 < 0) { + var_r4 = 0; + } + if (var_r4 > 0x3FFF) { + var_r4 = 0x3FFF; + } + sndFXPitchBend(var_r31->unk00, var_r4); + } + if (param->flag & 8) { + var_r31->unk10 = param->span; + sndFXSurroundPanning(var_r31->unk00, var_r31->unk10); + } + } else if (var_r31->unkB4 == 1) { + var_r31->unk00 = sndEmitterVoiceID(&var_r31->unk4C); + if (param->flag & 0x40) { + var_r31->unk0B = 1; + var_r31->unkA8.x = param->pos.x - var_r31->unk9C.x; + var_r31->unkA8.y = param->pos.y - var_r31->unk9C.y; + var_r31->unkA8.z = param->pos.z - var_r31->unk9C.z; + var_r31->unk9C.x = param->pos.x; + var_r31->unk9C.y = param->pos.y; + var_r31->unk9C.z = param->pos.z; + sndUpdateEmitter(&var_r31->unk4C, &var_r31->unk9C, &var_r31->unkA8, var_r31->unk0C * var_r31->unk30 * var_r31->unk3C * var_r31->unk48 / 2048383, NULL); + var_r31->unk0B = 0; + } + } + if (param->flag & 0x10) { + var_r31->unk11 = param->auxAVol; + sndFXReverb(var_r31->unk00, var_r31->unk11); + } + if (param->flag & 0x20) { + var_r31->unk12 = param->auxBVol; + sndFXChorus(var_r31->unk00, var_r31->unk12); + } + if (param->flag & 0x80) { + sndSendMessage(var_r31->unk00, param->pad); + } + return 0; +} + +void msmSePauseAll(BOOL pause, s32 speed) { + s32 var_r27; + msmSeStruct00* temp_r26; + + for (var_r27 = 0; var_r27 < se.unk04; var_r27++) { + temp_r26 = &se.unk10[var_r27]; + temp_r26->unk0B = 1; + msmSePauseSub(temp_r26, pause, speed); + temp_r26->unk0B = 0; + } +} + +void msmSeStopAll(BOOL checkGrp, s32 speed) { + msmSeStruct02* se_ptr = &se; + msmSeStruct00* temp_r28; + s32 var_r27; + + for (var_r27 = 0; var_r27 < se_ptr->unk04; var_r27++) { + temp_r28 = &se_ptr->unk10[var_r27]; + if (temp_r28->unk0A == 0) { + continue; + } + temp_r28->unk0B = 1; + switch (checkGrp) { + case FALSE: + temp_r28->unk34 = speed / 15; + if (temp_r28->unk34 != 0) { + temp_r28->unk38 = temp_r28->unk34; + temp_r28->unk3C = 0x7F; + } else { + temp_r28->unk0A = 1; + if ((temp_r28->unk13 & 1) && temp_r28->unkB4 == 1) { + sndRemoveEmitter(&temp_r28->unk4C); + } else { + sndFXKeyOff(temp_r28->unk00); + } + } + break; + default: + if (msmSysCheckBaseGroup(se_ptr->unk0C[temp_r28->unk08].groupId) == 0) { + temp_r28->unk34 = speed / 15; + if (temp_r28->unk34 != 0) { + temp_r28->unk38 = temp_r28->unk34; + temp_r28->unk3C = 0x7F; + } else { + temp_r28->unk0A = 1; + if ((temp_r28->unk13 & 1) && temp_r28->unkB4 == 1) { + sndRemoveEmitter(&temp_r28->unk4C); + } else { + sndFXKeyOff(temp_r28->unk00); + } + } + } + break; + } + temp_r28->unk0B = 0; + } +} + +s32 msmSeStop(int seNo, s32 speed) { + msmSeStruct00* var_r31; + + var_r31 = msmSeGetStatus_inline(seNo); + if (var_r31 == NULL) { + return MSM_ERR_6F; + } + var_r31->unk0B = 1; + // TODO: this pattern could be an inline. + var_r31->unk34 = speed / 15; + if (var_r31->unk34 != 0) { + var_r31->unk38 = var_r31->unk34; + var_r31->unk3C = 0x7F; + } else { + var_r31->unk0A = 1; + if ((var_r31->unk13 & 1) && var_r31->unkB4 == 1) { + sndRemoveEmitter(&var_r31->unk4C); + } else { + sndFXKeyOff(var_r31->unk00); + } + } + var_r31->unk0B = 0; + return 0; +} + +// TODO: https://decomp.me/scratch/uhYSL +// msmSePlay + +s32 msmSeInit(sysData* arg0, DVDFileInfo* arg1) { + s32 temp_r29; + + se.unk04 = 0; + se.unk00 = 0; + se.unk05 = 0; + se.unk06 = 0; + se.unkDA = 0; + if (arg0->unk10->unk6 == 0) { + return 0; + } + if ((se.unk0C = msmMemAlloc(arg0->unkC->unk34)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(arg1, se.unk0C, arg0->unkC->unk34, arg0->unkC->unk30) < 0) { + return MSM_ERR_READFAIL; + } + temp_r29 = arg0->unk10->unk2 * sizeof(*se.unk10); + if ((se.unk10 = msmMemAlloc(temp_r29)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + memset(se.unk10, 0, temp_r29); + se.unk00 = arg0->unk10->unk6; + se.unk04 = arg0->unk10->unk2; + se.unk08 = 1; + return 0; +} diff --git a/src/msm/msmsys.c b/src/msm/msmsys.c index 9c9aedda..b3165461 100644 --- a/src/msm/msmsys.c +++ b/src/msm/msmsys.c @@ -1,5 +1,4 @@ -#include "dolphin.h" -#include "dolphin/ai.h" +#include "msm/msmsys.h" #include "msm/msmfio.h" #include "msm/msmmem.h" #include "msm/msmmus.h" @@ -9,61 +8,6 @@ #include "game/msm.h" // TODO remove, only for decomp -typedef struct _unkSubStruct { - s8 unk0; - union { - f32 unk4f[9]; - s32 unk4s[9]; - }; -} unkSubStruct; - -typedef struct _unkSubStruct2 { - char unk[0x3C]; - s32 unk3C; - s32 unk40; - s32 unk44; - s32 unk48; - s32 unk4C; - s32 unk50; - s32 unk54; - s32 unk58; - s32 unk5C; - char unk60[0x30]; - s32 unk90; - s32 unk94; - s32 unk98; - char unk9C[0xA0]; - u8 unk13C; - f32 unk140; - f32 unk144; - f32 unk148; - f32 unk14C; - f32 unk150; - char unk154[0x70]; - u8 unk1C4; - f32 unk1C8; - f32 unk1CC; - f32 unk1D0; - f32 unk1D4; - f32 unk1D8; - f32 unk1DC; -} unkSubStruct2; // sizeof unk1E0 - -typedef struct _unkSubStruct3 { - char unk[0x4]; - s32 unk4; - char unk8[0x8]; - s32 unk10; // offset - u32 unk14; // length - s32 unk18; // offset - u32 unk1C; // length - char unk20[0x18]; - s32 unk38; - char unk3C[4]; - s32 unk40; - char unk44[0x1C]; -} unkSubStruct3; // sizeof 0x60 - typedef struct _unkStruct2 { char *unk0; s32 unk4; @@ -74,12 +18,6 @@ typedef struct _unkStruct2 { void *unk18; } unkStruct2; -typedef struct _unkStruct3 { - s32 unk0; - s32 unk4; - s32 unk8; -} unkStruct3; - typedef struct _unkStruct4 { SND_GROUPID unk0; s32 unk4; @@ -88,49 +26,6 @@ typedef struct _unkStruct4 { s32 unk10; } unkStruct4; -typedef struct _sndInitData { - s8 unk0; - s8 unk1; - s8 unk2; - char unk3[0xB]; - s8 unkE; - s8 unkF; - u32 unk10; - s32 unk14; - char unk18[0x11]; - s8 unk29[10]; // size unknown -} sndInitData; - -typedef struct _sysData { - s32 unk0; - s8 unk4; - s8 unk5; - s8 unk6; - s8 unk7; - s32 unk8; - unkSubStruct3 *unkC; - sndInitData *unk10; - unkSubStruct *unk14; - s8 unk18; - s8 unk19; - s8 unk1A; - s8 unk1B; - unkSubStruct2 unk1C; // userA - unkSubStruct2 unk1FC; // userB - char unk3DC[0x8]; - s32 unk3E4; - s32 unk3E8; - s32 unk3EC; - s32 unk3F0; - s8 unk3F4; - unkStruct3 *unk3F8; - char unk3FC[0xF0]; - s32 unk4EC; - BOOL unk4F0; - AIDCallback unk4F4; - s32 unk4F8; -} sysData; - static sysData sys; void msmSysServer(void) @@ -372,12 +267,12 @@ s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram) msmFioClose(&sp10); return var_r26; } - var_r26 = msmMusInit(&sys.unk0, &sp10); + var_r26 = msmMusInit(&sys, &sp10); if (var_r26 != 0) { msmFioClose(&sp10); return var_r26; } - var_r26 = msmSeInit(&sys.unk0, &sp10); + var_r26 = msmSeInit(&sys, &sp10); if (var_r26 != 0) { msmFioClose(&sp10); return var_r26; From 6284cb61163c01e675c37b1a3e7b6ceb18595394 Mon Sep 17 00:00:00 2001 From: mrshigure Date: Mon, 13 Jan 2025 20:07:10 -0800 Subject: [PATCH 18/24] Matched most of msmsys (5 functions left) (#528) --- include/game/msm.h | 4 +- include/msm/msmstream.h | 2 +- include/msm/msmsys.h | 141 +++++++---- src/msm/msmsys.c | 512 +++++++++++++++++++++++++++++++--------- 4 files changed, 491 insertions(+), 168 deletions(-) diff --git a/include/game/msm.h b/include/game/msm.h index 5d7dfa11..c99b7eb4 100644 --- a/include/game/msm.h +++ b/include/game/msm.h @@ -40,7 +40,9 @@ #define MSM_ERR_OUTOFMEM -10 #define MSM_ERR_OUTOFAMEM -20 #define MSM_ERR_INITFAIL -20 +#define MSM_ERR_1E -30 #define MSM_ERR_INVALID_AUXPARAM -31 +#define MSM_ERR_20 -32 #define MSM_ERR_PLAYFAIL -33 #define MSM_ERR_22 -34 #define MSM_ERR_STREAMALLOC_FAIL -35 @@ -166,7 +168,7 @@ typedef struct msmStreamParam_s { } MSM_STREAMPARAM; s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram); -void msmSysSetOutputMode(SND_OUTPUTMODE mode); +s32 msmSysSetOutputMode(SND_OUTPUTMODE mode); s32 msmSysDelGroupAll(void); s32 msmSysLoadGroup(s32 grp, void *buf, BOOL flag); s32 msmSysGetSampSize(BOOL baseGrp); diff --git a/include/msm/msmstream.h b/include/msm/msmstream.h index c21347b0..d1818803 100644 --- a/include/msm/msmstream.h +++ b/include/msm/msmstream.h @@ -4,7 +4,7 @@ #include "dolphin/types.h" void msmStreamPeriodicProc(void); -void msmStreamSetOutputMode(s8); +void msmStreamSetOutputMode(s32); void msmStreamAmemFree(void); s32 msmStreamAmemAlloc(void); s32 msmStreamInit(char *); diff --git a/include/msm/msmsys.h b/include/msm/msmsys.h index fbd36f7e..af06396f 100755 --- a/include/msm/msmsys.h +++ b/include/msm/msmsys.h @@ -1,47 +1,47 @@ #ifndef MSMSYS_H #define MSMSYS_H +#include "musyx/musyx.h" + #include "dolphin.h" +typedef struct { + u32 tempDisableFX; + f32 coloration; + f32 mix; + f32 time; + f32 damping; + f32 preDelay; + f32 crosstalk; +} SubStructRev; + +typedef struct { + u32 baseDelay; + u32 variation; + u32 period; +} SubStructCh; + +typedef struct { + u32 delay[3]; + u32 feedback[3]; + u32 output[3]; +} SubDelay; + typedef struct _unkSubStruct { s8 unk0; union { - f32 unk4f[9]; - s32 unk4s[9]; + SubStructRev rev; + SubStructCh ch; + SubDelay delay; }; } unkSubStruct; -typedef struct _unkSubStruct2 { - char unk[0x3C]; - s32 unk3C; - s32 unk40; - s32 unk44; - s32 unk48; - s32 unk4C; - s32 unk50; - s32 unk54; - s32 unk58; - s32 unk5C; - char unk60[0x30]; - s32 unk90; - s32 unk94; - s32 unk98; - char unk9C[0xA0]; - u8 unk13C; - f32 unk140; - f32 unk144; - f32 unk148; - f32 unk14C; - f32 unk150; - char unk154[0x70]; - u8 unk1C4; - f32 unk1C8; - f32 unk1CC; - f32 unk1D0; - f32 unk1D4; - f32 unk1D8; - f32 unk1DC; -} unkSubStruct2; // sizeof unk1E0 +typedef union { + SND_AUX_REVERBHI revHi; + SND_AUX_REVERBSTD revStd; + SND_AUX_CHORUS ch; + SND_AUX_DELAY delay; +} UnkSndAuxUnion; // Size 0x1E0 typedef struct _unkSubStruct3 { char unk[0x4]; @@ -51,7 +51,8 @@ typedef struct _unkSubStruct3 { u32 unk14; // length s32 unk18; // offset u32 unk1C; // length - char unk20[8]; + s32 unk20; + s32 unk24; s32 unk28; s32 unk2C; s32 unk30; @@ -61,7 +62,10 @@ typedef struct _unkSubStruct3 { s32 unk40; char unk44[4]; s32 unk48; - char unk4C[0x14]; + char unk4C[4]; + s32 unk50; + s32 unk54; + char unk58[8]; } unkSubStruct3; // sizeof 0x60 typedef struct _unkStruct3 { @@ -74,21 +78,44 @@ typedef struct _sndInitData { s8 unk0; s8 unk1; s8 unk2; - char unk3[1]; + s8 unk3; s16 unk4; s16 unk6; s8 unk8; - char unk9[5]; + s8 unk9; + s8 unkA; + s8 unkB; + char unkC[2]; s8 unkE; s8 unkF; u32 unk10; s32 unk14; - char unk18[8]; + s32 unk18; + s32 unk1C; s32 unk20; - char unk24[5]; + char unk24[4]; + s8 unk28; s8 unk29[10]; // size unknown } sndInitData; +typedef struct { + /* 0x00 */ s8 unk00; + /* 0x01 */ s8 unk01; + /* 0x02 */ char unk02[2]; + /* 0x04 */ u32 unk04; + /* 0x08 */ void *unk08; +} UnkStructSys43C; // Size 0xC + +typedef struct _unkStruct4 { + SND_GROUPID unk0; + s8 unk2; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + char unk14[0xC]; +} unkStruct4; // Size 0x20 + typedef struct _sysData { s32 unk0; s8 unk4; @@ -99,20 +126,34 @@ typedef struct _sysData { unkSubStruct3 *unkC; sndInitData *unk10; unkSubStruct *unk14; - s8 unk18; - s8 unk19; + s8 unk18[2]; s8 unk1A; s8 unk1B; - unkSubStruct2 unk1C; // userA - unkSubStruct2 unk1FC; // userB - char unk3DC[0x8]; - s32 unk3E4; - s32 unk3E8; - s32 unk3EC; - s32 unk3F0; + UnkSndAuxUnion unk1C[2]; // 0: userA, 1: userB + s8 unk3DC; + char unk3DD[3]; + s32 unk3E0; + u32 unk3E4; + u32 unk3E8; + unkStruct4 *unk3EC; + void *unk3F0; s8 unk3F4; - unkStruct3 *unk3F8; - char unk3FC[0xF0]; + unkStruct3 *unk3F8[1]; // unknown array length + char unk3FC[0x38]; + s8 unk434; + s8 unk435; + s8 unk436; + char unk437[1]; + void *unk438; + UnkStructSys43C unk43C[1]; // unknown array length + char unk448[0x24]; + s8 unk46C; + s8 unk46D; + s8 unk46E; + char unk46F[1]; + void *unk470; + UnkStructSys43C unk474[1]; // unknown array length + char unk480[0x6C]; s32 unk4EC; BOOL unk4F0; AIDCallback unk4F4; diff --git a/src/msm/msmsys.c b/src/msm/msmsys.c index b3165461..2df1b11b 100644 --- a/src/msm/msmsys.c +++ b/src/msm/msmsys.c @@ -4,31 +4,12 @@ #include "msm/msmmus.h" #include "msm/msmse.h" #include "msm/msmstream.h" -#include "musyx/musyx.h" #include "game/msm.h" // TODO remove, only for decomp -typedef struct _unkStruct2 { - char *unk0; - s32 unk4; - void *unk8; - void *unkC; - void *unk10; - u32 unk14; - void *unk18; -} unkStruct2; - -typedef struct _unkStruct4 { - SND_GROUPID unk0; - s32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; -} unkStruct4; - static sysData sys; -void msmSysServer(void) +static void msmSysServer(void) { if (sndIsInstalled() == 1) { if (--sys.unk4F8 == 0) { @@ -41,127 +22,190 @@ void msmSysServer(void) sys.unk4F4(); } -s32 msmSysSetAuxParam(s32 arg0, s32 arg1) +static s32 msmSysSetAuxParam(s32 arg0, s32 arg1) { - SND_AUX_CALLBACK sp24; - SND_AUX_CALLBACK sp20; - void **var_r26; - s32 var_r23; - unkSubStruct2 *temp_r3; - sysData *var_r25; - sysData *var_r27; - unkSubStruct *temp_r5; - u32 var_r0; - u8 temp_r5_2; + s32 unused_1[2]; + SND_AUX_CALLBACK sp20[2]; + s32 unused_2[2]; unkSubStruct *temp_r4_2; + UnkSndAuxUnion *temp_r3; + u32 var_r0; + s32 var_r23; - if ((sys.unk18 != -2) && (arg0 >= 0)) { - sys.unk18 = arg0; + if (sys.unk18[0] != -2 && arg0 >= 0) { + sys.unk18[0] = arg0; } - if ((sys.unk19 != -2) && (arg1 >= 0)) { - temp_r5->unk0 = arg1; + if (sys.unk18[1] != -2 && arg1 >= 0) { + sys.unk18[1] = arg1; } - if ((sys.unk18 < 0) && (temp_r5->unk0 < 0)) { + if (sys.unk18[0] < 0 && sys.unk18[1] < 0) { return 0; } - var_r27 = &sys; - var_r25 = &sys; - var_r26 = &sp20; - - // the for loop first sets sp20 and then sp24 - for (var_r23 = 0; var_r23 < 2; var_r23++, var_r27++, var_r26++, var_r25++) { - if (var_r27->unk18 < 0) { - *var_r26 = NULL; + for (var_r23 = 0; var_r23 < 2; var_r23++) { + if (sys.unk18[var_r23] < 0) { + sp20[var_r23] = NULL; continue; } - temp_r4_2 = &sys.unk14[var_r27->unk18]; - temp_r3 = &var_r25->unk1C; + temp_r4_2 = &sys.unk14[sys.unk18[var_r23]]; + temp_r3 = &sys.unk1C[var_r23]; switch (temp_r4_2->unk0) { case 0: - *var_r26 = &sndAuxCallbackReverbHI; - temp_r3->unk1C4 = temp_r4_2->unk4s[0]; - temp_r3->unk1C8 = temp_r4_2->unk4f[1]; - temp_r3->unk1CC = temp_r4_2->unk4f[2]; - temp_r3->unk1D0 = temp_r4_2->unk4f[3]; - temp_r3->unk1D4 = temp_r4_2->unk4f[4]; - temp_r3->unk1D8 = temp_r4_2->unk4f[5]; - temp_r3->unk1DC = temp_r4_2->unk4f[6]; - // var_r0 = sndAuxCallbackPrepareReverbHI(); + sp20[var_r23] = sndAuxCallbackReverbHI; + temp_r3->revHi.tempDisableFX = temp_r4_2->rev.tempDisableFX; + temp_r3->revHi.coloration = temp_r4_2->rev.coloration; + temp_r3->revHi.mix = temp_r4_2->rev.mix; + temp_r3->revHi.time = temp_r4_2->rev.time; + temp_r3->revHi.damping = temp_r4_2->rev.damping; + temp_r3->revHi.preDelay = temp_r4_2->rev.preDelay; + temp_r3->revHi.crosstalk = temp_r4_2->rev.crosstalk; + var_r0 = sndAuxCallbackPrepareReverbHI(&temp_r3->revHi); break; case 1: - *var_r26 = &sndAuxCallbackReverbSTD; - temp_r3->unk13C = temp_r4_2->unk4s[0]; - temp_r3->unk140 = temp_r4_2->unk4f[1]; - temp_r3->unk144 = temp_r4_2->unk4f[2]; - temp_r3->unk148 = temp_r4_2->unk4f[3]; - temp_r3->unk14C = temp_r4_2->unk4f[4]; - temp_r3->unk150 = temp_r4_2->unk4f[5]; - // var_r0 = sndAuxCallbackPrepareReverbSTD(); + sp20[var_r23] = sndAuxCallbackReverbSTD; + temp_r3->revStd.tempDisableFX = temp_r4_2->rev.tempDisableFX; + temp_r3->revStd.coloration = temp_r4_2->rev.coloration; + temp_r3->revStd.mix = temp_r4_2->rev.mix; + temp_r3->revStd.time = temp_r4_2->rev.time; + temp_r3->revStd.damping = temp_r4_2->rev.damping; + temp_r3->revStd.preDelay = temp_r4_2->rev.preDelay; + var_r0 = sndAuxCallbackPrepareReverbSTD(&temp_r3->revStd); break; case 2: - *var_r26 = &sndAuxCallbackChorus; - temp_r3->unk90 = temp_r4_2->unk4s[0]; - temp_r3->unk94 = temp_r4_2->unk4s[1]; - temp_r3->unk98 = temp_r4_2->unk4s[2]; - // var_r0 = sndAuxCallbackPrepareChorus(); + sp20[var_r23] = sndAuxCallbackChorus; + temp_r3->ch.baseDelay = temp_r4_2->ch.baseDelay; + temp_r3->ch.variation = temp_r4_2->ch.variation; + temp_r3->ch.period = temp_r4_2->ch.period; + var_r0 = sndAuxCallbackPrepareChorus(&temp_r3->ch); break; case 3: - *var_r26 = &sndAuxCallbackDelay; - temp_r3->unk3C = temp_r4_2->unk4s[0]; - temp_r3->unk48 = temp_r4_2->unk4s[3]; - temp_r3->unk54 = temp_r4_2->unk4s[6]; - temp_r3->unk40 = temp_r4_2->unk4s[1]; - temp_r3->unk4C = temp_r4_2->unk4s[4]; - temp_r3->unk58 = temp_r4_2->unk4s[7]; - temp_r3->unk44 = temp_r4_2->unk4s[2]; - temp_r3->unk50 = temp_r4_2->unk4s[5]; - temp_r3->unk5C = temp_r4_2->unk4s[8]; - // var_r0 = sndAuxCallbackPrepareDelay(); + sp20[var_r23] = sndAuxCallbackDelay; + temp_r3->delay.delay[0] = temp_r4_2->delay.delay[0]; + temp_r3->delay.feedback[0] = temp_r4_2->delay.feedback[0]; + temp_r3->delay.output[0] = temp_r4_2->delay.output[0]; + temp_r3->delay.delay[1] = temp_r4_2->delay.delay[1]; + temp_r3->delay.feedback[1] = temp_r4_2->delay.feedback[1]; + temp_r3->delay.output[1] = temp_r4_2->delay.output[1]; + temp_r3->delay.delay[2] = temp_r4_2->delay.delay[2]; + temp_r3->delay.feedback[2] = temp_r4_2->delay.feedback[2]; + temp_r3->delay.output[2] = temp_r4_2->delay.output[2]; + var_r0 = sndAuxCallbackPrepareDelay(&temp_r3->delay); break; } if (var_r0 == 0) { return 1; } } - sndSetAuxProcessingCallbacks(0, sp20, &sys.unk1C, 0xFF, 0, sp24, &sys.unk1FC, 0xFF, 0); + sndSetAuxProcessingCallbacks(0, sp20[0], &sys.unk1C[0], 0xFF, 0, sp20[1], &sys.unk1C[1], 0xFF, 0); return 0; } -s8 msmSysLoadBaseGroup(void *arg0) +static s8 msmSysLoadBaseGroup(void *arg0) { DVDFileInfo spC; - sysData *var_r30; s32 var_r28; unkStruct3 *temp_r27; unkStruct4 *temp_r25; if (msmFioOpen(sys.unk0, &spC) != 1) { - return -1; + return MSM_ERR_OPENFAIL; } - var_r30 = &sys; - for (var_r28 = 0; var_r28 < sys.unk3F4; var_r30 = (sysData *)((s32)var_r30 + 4), var_r28++, sys.unk8 += temp_r25->unk10) { - temp_r27 = var_r30->unk3F8; - temp_r25 = (unkStruct4 *)(sys.unk3EC + (sys.unk10->unk29[var_r28] << 5)); + for (var_r28 = 0; var_r28 < sys.unk3F4; var_r28++) { + temp_r27 = sys.unk3F8[var_r28]; + temp_r25 = &sys.unk3EC[sys.unk10->unk29[var_r28]]; if (msmFioRead(&spC, temp_r27, temp_r25->unk8, temp_r25->unk4 + sys.unkC->unk38) < 0) { msmFioClose(&spC); - return -2; + return MSM_ERR_READFAIL; } if (msmFioRead(&spC, arg0, temp_r25->unk10, temp_r25->unkC + sys.unkC->unk40) < 0) { msmFioClose(&spC); - return -2; + return MSM_ERR_READFAIL; } - if (sndPushGroup((void *)(temp_r27->unk4 + (s32)temp_r27), temp_r25->unk0, arg0, (void *)(temp_r27->unk8 + (s32)temp_r27), - (void *)(temp_r27->unk0 + (s32)temp_r27)) - == 0U) { + if (!sndPushGroup((void*) (temp_r27->unk4 + (u32) temp_r27), temp_r25->unk0, arg0, + (void*) (temp_r27->unk8 + (u32) temp_r27), (void*) (temp_r27->unk0 + (u32) temp_r27))) + { msmFioClose(&spC); - return -0x20; + return MSM_ERR_20; } + sys.unk8 += temp_r25->unk10; } msmFioClose(&spC); return 0; } -s32 msmSysGroupInit(DVDFileInfo *arg0); +// TODO: https://decomp.me/scratch/NWiuL +// msmSysSearchGroupStack + +s32 msmSysGroupInit(DVDFileInfo *arg0) +{ + s32 var_r7; + UnkStructSys43C *temp_43C; + unkStruct4 *temp_r20; + + sys.unk3DC = sys.unk10->unk3; + sys.unk3E0 = 1; + sys.unk3F4 = sys.unk10->unk28; + sys.unk434 = sys.unk10->unk9; + sys.unk435 = 0; + sys.unk436 = 0; + sys.unk46C = sys.unk10->unkA; + sys.unk46D = 0; + sys.unk46E = 0; + if ((sys.unk3EC = msmMemAlloc(sys.unkC->unk24)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(arg0, sys.unk3EC, sys.unkC->unk24, sys.unkC->unk20) < 0) { + return MSM_ERR_READFAIL; + } + if ((sys.unk438 = msmMemAlloc(sys.unk10->unk18 * sys.unk434)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if ((sys.unk470 = msmMemAlloc(sys.unk10->unk1C * sys.unk46C)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (sys.unkC->unk54) { + if ((sys.unk3F0 = msmMemAlloc(sys.unkC->unk54)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(arg0, sys.unk3F0, sys.unkC->unk54, sys.unkC->unk50) < 0) { + return MSM_ERR_READFAIL; + } + } else { + sys.unk3F0 = NULL; + } + for (var_r7 = 0; var_r7 < sys.unk434; var_r7++) { + temp_43C = &sys.unk43C[var_r7]; + temp_43C->unk00 = temp_43C->unk01 = 0; + temp_43C->unk04 = 0; + temp_43C->unk08 = (void*) ((u32) sys.unk438 + sys.unk10->unk18 * var_r7); + } + for (var_r7 = 0; var_r7 < sys.unk46C; var_r7++) { + temp_43C = &sys.unk474[var_r7]; + temp_43C->unk00 = temp_43C->unk01 = 0; + temp_43C->unk04 = 0; + temp_43C->unk08 = (void*) ((u32) sys.unk470 + sys.unk10->unk1C * var_r7); + } + sys.unk3E4 = 0; + for (var_r7 = 0; var_r7 < sys.unk3F4; var_r7++) { + temp_r20 = &sys.unk3EC[sys.unk10->unk29[var_r7]]; + if ((sys.unk3F8[var_r7] = msmMemAlloc(temp_r20->unk8)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (sys.unk3E4 < temp_r20->unk10) { + sys.unk3E4 = temp_r20->unk10; + } + temp_r20->unk10 *= -1; + } + sys.unk3E8 = 0; + for (var_r7 = 1; var_r7 < sys.unk3DC; var_r7++) { + temp_r20 = &sys.unk3EC[var_r7]; + if (temp_r20->unk10 < 0) { + temp_r20->unk10 *= -1; + } else if (sys.unk3E8 < temp_r20->unk10) { + sys.unk3E8 = temp_r20->unk10; + } + } + return 0; +} void msmSysIrqDisable(void) { @@ -179,13 +223,138 @@ void msmSysIrqEnable(void) } } -void msmSysRegularProc(void); +BOOL msmSysCheckBaseGroup(s32 arg0) +{ + s32 var_r6; + + for (var_r6 = 0; var_r6 < sys.unk3F4 + sys.unk436 + sys.unk46E; var_r6++) { + if (sys.unk3EC[sys.unk10->unk29[var_r6]].unk0 == arg0) { + return TRUE; + } + } + return FALSE; +} + +void *msmSysGetGroupDataPtr(s32 arg0) +{ + UnkStructSys43C *temp_43C; + s32 var_r6; + + for (var_r6 = 0; var_r6 < sys.unk3F4; var_r6++) { + if (sys.unk10->unk29[var_r6] == arg0) { + return sys.unk3F8[var_r6]; + } + } + for (var_r6 = 0; var_r6 < sys.unk434; var_r6++) { + temp_43C = &sys.unk43C[var_r6]; + if (temp_43C->unk04 != 0 && temp_43C->unk00 == arg0) { + return temp_43C->unk08; + } + } + for (var_r6 = 0; var_r6 < sys.unk46C; var_r6++) { + temp_43C = &sys.unk474[var_r6]; + if (temp_43C->unk04 != 0 && temp_43C->unk00 == arg0) { + return temp_43C->unk08; + } + } + return NULL; +} + +BOOL msmSysCheckLoadGroupID(s32 arg0) +{ + UnkStructSys43C *temp_43C; + s32 var_r6; + + for (var_r6 = 0; var_r6 < sys.unk3F4 + sys.unk436 + sys.unk46E; var_r6++) { + if (sys.unk3EC[sys.unk10->unk29[var_r6]].unk0 == arg0) { + return TRUE; + } + } + for (var_r6 = 0; var_r6 < sys.unk434; var_r6++) { + temp_43C = &sys.unk43C[var_r6]; + if (temp_43C->unk04 != 0 && sys.unk3EC[temp_43C->unk00].unk0 == arg0) { + return TRUE; + } + } + for (var_r6 = 0; var_r6 < sys.unk46C; var_r6++) { + temp_43C = &sys.unk474[var_r6]; + if (temp_43C->unk04 != 0 && sys.unk3EC[temp_43C->unk00].unk0 == arg0) { + return TRUE; + } + } + return FALSE; +} + +void msmSysRegularProc(void) +{ +} s32 msmSysGetOutputMode(void) { return sys.unk4; } +s32 msmSysSetOutputMode(SND_OUTPUTMODE mode) +{ + SND_OUTPUTMODE var_r3; + s32 var_r30; + + var_r30 = 0; + sys.unk4 = mode; + switch (mode) { + case SND_OUTPUTMODE_MONO: + var_r3 = SND_OUTPUTMODE_MONO; + break; + case SND_OUTPUTMODE_SURROUND: + if (sys.unk10->unkB != 0) { + var_r3 = SND_OUTPUTMODE_SURROUND; + } else { + sys.unk4 = SND_OUTPUTMODE_STEREO; + var_r3 = SND_OUTPUTMODE_STEREO; + var_r30 = 1; + } + break; + case SND_OUTPUTMODE_STEREO: + default: + var_r3 = SND_OUTPUTMODE_STEREO; + break; + } + sndOutputMode(var_r3); + msmStreamSetOutputMode(sys.unk4); + OSSetSoundMode((mode != SND_OUTPUTMODE_MONO) ? 1 : 0); + return var_r30; +} + +s32 msmSysSetAux(s32 arg0, s32 arg1) +{ + s32 var_r28; + + sndSetAuxProcessingCallbacks(0, NULL, NULL, 0, 0, NULL, NULL, 0, 0); + for (var_r28 = 1; var_r28 >= 0; var_r28--) { + if (sys.unk18[var_r28] < 0) { + continue; + } + switch (sys.unk14[sys.unk18[var_r28]].unk0) { + case 0: + sndAuxCallbackShutdownReverbHI(&sys.unk1C[var_r28].revHi); + break; + case 1: + sndAuxCallbackShutdownReverbSTD(&sys.unk1C[var_r28].revStd); + break; + case 2: + sndAuxCallbackShutdownChorus(&sys.unk1C[var_r28].ch); + break; + case 3: + sndAuxCallbackShutdownDelay(&sys.unk1C[var_r28].delay); + break; + } + } + if (msmSysSetAuxParam(arg0, arg1) != 0) { + return MSM_ERR_INVALID_AUXPARAM; + } + return 0; +} + s32 msmSysGetSampSize(BOOL baseGrp) { if (baseGrp != 0) { @@ -194,6 +363,118 @@ s32 msmSysGetSampSize(BOOL baseGrp) return sys.unk3E4; } +s32 msmSysDelGroupAll(void) +{ + UnkStructSys43C *temp_r28; + s32 var_r29; + + for (var_r29 = 0; var_r29 < sys.unk46C; var_r29++) { + temp_r28 = &sys.unk474[var_r29]; + if (temp_r28->unk04 != 0 && temp_r28->unk01 == 0) { + temp_r28->unk04 = 0; + sndPopGroup(); + sys.unk8 -= sys.unk3EC[temp_r28->unk00].unk10; + sys.unk46D--; + } + } + for (var_r29 = 0; var_r29 < sys.unk434; var_r29++) { + temp_r28 = &sys.unk43C[var_r29]; + if (temp_r28->unk04 != 0 && temp_r28->unk01 == 0) { + temp_r28->unk04 = 0; + sndPopGroup(); + sys.unk8 -= sys.unk3EC[temp_r28->unk00].unk10; + sys.unk435--; + } + } + return 0; +} + +s32 msmSysDelGroupBase(s32 grpNum) +{ + s32 var_r4; + UnkStructSys43C *temp_r26; + s32 var_r27; + s8 var_r31; + s8 var_r25; + s32 var_r6; + + if (sys.unk436 + sys.unk46E == 0) { + return 0; + } + if (grpNum >= sys.unk436 + sys.unk46E) { + grpNum = 0; + } + if (grpNum != 0) { + msmSysDelGroupAll(); + for (var_r27 = 0; var_r27 < grpNum; var_r27++) { + var_r6 = 0; + for (var_r4 = 0; var_r4 < sys.unk434; var_r4++) { + temp_r26 = &sys.unk43C[var_r4]; + if (temp_r26->unk04 > var_r6) { + var_r6 = temp_r26->unk04; + var_r31 = var_r4; + var_r25 = 0; + } + } + for (var_r4 = 0; var_r4 < sys.unk46C; var_r4++) { + temp_r26 = &sys.unk474[var_r4]; + if (temp_r26->unk04 > var_r6) { + var_r6 = temp_r26->unk04; + var_r31 = var_r4; + var_r25 = 1; + } + } + if (var_r25 == 0) { + temp_r26 = &sys.unk43C[var_r31]; + sys.unk435--; + sys.unk436--; + } else { + temp_r26 = &sys.unk474[var_r31]; + sys.unk46D--; + sys.unk46E--; + } + sndPopGroup(); + sys.unk8 -= sys.unk3EC[temp_r26->unk00].unk10; + temp_r26->unk01 = 0; + temp_r26->unk04 = 0; + } + } else { + for (var_r27 = 0; var_r27 < sys.unk434; var_r27++) { + temp_r26 = &sys.unk43C[var_r27]; + if (temp_r26->unk04 != 0) { + sndPopGroup(); + sys.unk8 -= sys.unk3EC[temp_r26->unk00].unk10; + temp_r26->unk01 = 0; + temp_r26->unk04 = 0; + } + } + for (var_r27 = 0; var_r27 < sys.unk46C; var_r27++) { + temp_r26 = &sys.unk474[var_r27]; + if (temp_r26->unk04 != 0) { + sndPopGroup(); + sys.unk8 -= sys.unk3EC[temp_r26->unk00].unk10; + temp_r26->unk01 = 0; + temp_r26->unk04 = 0; + } + } + sys.unk46E = 0; + sys.unk46D = 0; + sys.unk436 = 0; + sys.unk435 = 0; + } + return 0; +} + +// TODO: https://decomp.me/scratch/zexTY +// msmSysLoadGroupBase + +// msmSysLoadGroupSet + +// msmSysLoadGroupSub + +// TODO: https://decomp.me/scratch/AhvXa +// msmSysLoadGroup + void msmSysCheckInit(void) { sndIsInstalled(); @@ -202,13 +483,12 @@ void msmSysCheckInit(void) s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram) { s32 var_r26; - s32 temp_r3; void *temp_r3_8; SND_HOOKS sp4C = { msmMemAlloc, msmMemFree }; DVDFileInfo sp10; if (sndIsInstalled() == 1) { - return -0x24; + return MSM_ERR_INSTALLED; } var_r26 = 0; // retErr sys.unk4EC = 0; @@ -216,30 +496,30 @@ s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram) msmFioInit(init->open, init->read, init->close); sys.unk0 = DVDConvertPathToEntrynum(init->msmPath); if (sys.unk0 < 0) { - return -1; + return MSM_ERR_OPENFAIL; } if (msmFioOpen(sys.unk0, &sp10) != 1) { - return -1; + return MSM_ERR_OPENFAIL; } if ((sys.unkC = msmMemAlloc(0x60)) == NULL) { msmFioClose(&sp10); - return -0xA; + return MSM_ERR_OUTOFMEM; } if (msmFioRead(&sp10, sys.unkC, 0x60, 0) < 0) { msmFioClose(&sp10); - return -2; + return MSM_ERR_READFAIL; } if (sys.unkC->unk4 != 2) { msmFioClose(&sp10); - return -0x79; + return MSM_ERR_INVALIDFILE; } if ((sys.unk10 = msmMemAlloc(sys.unkC->unk14)) == NULL) { msmFioClose(&sp10); - return -0xA; + return MSM_ERR_OUTOFMEM; } if (msmFioRead(&sp10, sys.unk10, sys.unkC->unk14, sys.unkC->unk10) < 0) { msmFioClose(&sp10); - return -2; + return MSM_ERR_READFAIL; } if (aram != NULL) { if (aram->skipARInit == 0) { @@ -248,14 +528,14 @@ s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram) aram = (MSM_ARAM *)ARAlloc(sys.unk10->unk14); if ((u32)aram != ARGetBaseAddress()) { msmFioClose(&sp10); - return -0x14; + return MSM_ERR_OUTOFAMEM; } sys.unk7 = 0; } else { if ((sys.unk10->unk14 + ARGetBaseAddress()) > aram->aramEnd) { msmFioClose(&sp10); - return -0x14; + return MSM_ERR_OUTOFAMEM; } ARInit(NULL, 0); ARQInit(); @@ -277,18 +557,18 @@ s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram) msmFioClose(&sp10); return var_r26; } - sys.unk18 = sys.unk10->unkE == -2 ? -2 : -1; - sys.unk19 = sys.unk10->unkF == -2 ? -2 : -1; + sys.unk18[0] = sys.unk10->unkE == -2 ? -2 : -1; + sys.unk18[1] = sys.unk10->unkF == -2 ? -2 : -1; if ((s32)sys.unkC->unk1C == 0) { var_r26 = 0; } else { if ((sys.unk14 = msmMemAlloc(sys.unkC->unk1C)) == NULL) { - var_r26 = -0xA; + var_r26 = MSM_ERR_OUTOFMEM; } else { if (msmFioRead(&sp10, sys.unk14, sys.unkC->unk1C, sys.unkC->unk18) < 0) { - var_r26 = -2; + var_r26 = MSM_ERR_READFAIL; } else { var_r26 = 0; @@ -300,14 +580,14 @@ s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram) return var_r26; } msmFioClose(&sp10); - temp_r3 = msmStreamInit(init->pdtPath); - if (temp_r3 < 0) { - return temp_r3; + var_r26 = msmStreamInit(init->pdtPath); + if (var_r26 < 0) { + return var_r26; } AIInit(NULL); sndSetHooks(&sp4C); if (sndInit(sys.unk10->unk0, sys.unk10->unk1, sys.unk10->unk2, 1, 0, sys.unk10->unk14) != 0) { - return -0x1E; + return MSM_ERR_1E; } sys.unk4F4 = AIRegisterDMACallback(msmSysServer); sys.unk4F8 = 1; @@ -322,14 +602,14 @@ s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram) if (temp_r3_8 == NULL) { msmStreamAmemFree(); sndQuit(); - return -0xA; + return MSM_ERR_OUTOFMEM; } msmMemFree(temp_r3_8); } if (msmSysSetAuxParam(sys.unk10->unkE, sys.unk10->unkF) != 0) { msmStreamAmemFree(); sndQuit(); - return -0x1F; + return MSM_ERR_INVALID_AUXPARAM; } msmSysSetOutputMode(OSGetSoundMode() == 0 ? SND_OUTPUTMODE_MONO : SND_OUTPUTMODE_STEREO); sndVolume(0x7F, 0, 0xFF); From 3edd72d33e3577f8c0ed7ae89ba34eba83b625b2 Mon Sep 17 00:00:00 2001 From: mrshigure Date: Tue, 14 Jan 2025 06:44:01 -0800 Subject: [PATCH 19/24] Matched msmsys (#529) --- configure.py | 2 +- include/game/msm.h | 3 +- include/msm/msmsys.h | 13 +- src/msm/msmsys.c | 316 +++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 318 insertions(+), 16 deletions(-) diff --git a/configure.py b/configure.py index 5c54e7fc..fdbbbc1a 100644 --- a/configure.py +++ b/configure.py @@ -838,7 +838,7 @@ config.libs = [ "cflags": cflags_msm, "host": False, "objects": [ - Object(NonMatching, "msm/msmsys.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmsys.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmmem.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmfio.c"), Object(NonMatching, "msm/msmmus.c"), diff --git a/include/game/msm.h b/include/game/msm.h index c99b7eb4..030dd77c 100644 --- a/include/game/msm.h +++ b/include/game/msm.h @@ -47,6 +47,8 @@ #define MSM_ERR_22 -34 #define MSM_ERR_STREAMALLOC_FAIL -35 #define MSM_ERR_INSTALLED -36 +#define MSM_ERR_64 -100 +#define MSM_ERR_65 -101 #define MSM_ERR_GRP_NOTLOADED -103 #define MSM_ERR_6F -111 #define MSM_ERR_INVALIDID -120 @@ -170,7 +172,6 @@ typedef struct msmStreamParam_s { s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram); s32 msmSysSetOutputMode(SND_OUTPUTMODE mode); s32 msmSysDelGroupAll(void); -s32 msmSysLoadGroup(s32 grp, void *buf, BOOL flag); s32 msmSysGetSampSize(BOOL baseGrp); s32 msmSysDelGroupBase(s32 grpNum); diff --git a/include/msm/msmsys.h b/include/msm/msmsys.h index af06396f..ffd86bae 100755 --- a/include/msm/msmsys.h +++ b/include/msm/msmsys.h @@ -109,6 +109,7 @@ typedef struct { typedef struct _unkStruct4 { SND_GROUPID unk0; s8 unk2; + s8 unk3; s32 unk4; s32 unk8; s32 unkC; @@ -116,6 +117,12 @@ typedef struct _unkStruct4 { char unk14[0xC]; } unkStruct4; // Size 0x20 +typedef struct { + /* 0x00 */ s8 unk00; + /* 0x01 */ s8 unk01; + /* 0x02 */ s8 unk02[1]; // unknown array length +} UnkSys3F0Struct; // Size unknown + typedef struct _sysData { s32 unk0; s8 unk4; @@ -136,19 +143,19 @@ typedef struct _sysData { u32 unk3E4; u32 unk3E8; unkStruct4 *unk3EC; - void *unk3F0; + UnkSys3F0Struct *unk3F0; s8 unk3F4; unkStruct3 *unk3F8[1]; // unknown array length char unk3FC[0x38]; s8 unk434; - s8 unk435; + u8 unk435; s8 unk436; char unk437[1]; void *unk438; UnkStructSys43C unk43C[1]; // unknown array length char unk448[0x24]; s8 unk46C; - s8 unk46D; + u8 unk46D; s8 unk46E; char unk46F[1]; void *unk470; diff --git a/src/msm/msmsys.c b/src/msm/msmsys.c index 2df1b11b..726a3a29 100644 --- a/src/msm/msmsys.c +++ b/src/msm/msmsys.c @@ -99,7 +99,7 @@ static s32 msmSysSetAuxParam(s32 arg0, s32 arg1) return 0; } -static s8 msmSysLoadBaseGroup(void *arg0) +static s32 msmSysLoadBaseGroup(void *buf) { DVDFileInfo spC; s32 var_r28; @@ -116,11 +116,11 @@ static s8 msmSysLoadBaseGroup(void *arg0) msmFioClose(&spC); return MSM_ERR_READFAIL; } - if (msmFioRead(&spC, arg0, temp_r25->unk10, temp_r25->unkC + sys.unkC->unk40) < 0) { + if (msmFioRead(&spC, buf, temp_r25->unk10, temp_r25->unkC + sys.unkC->unk40) < 0) { msmFioClose(&spC); return MSM_ERR_READFAIL; } - if (!sndPushGroup((void*) (temp_r27->unk4 + (u32) temp_r27), temp_r25->unk0, arg0, + if (!sndPushGroup((void*) (temp_r27->unk4 + (u32) temp_r27), temp_r25->unk0, buf, (void*) (temp_r27->unk8 + (u32) temp_r27), (void*) (temp_r27->unk0 + (u32) temp_r27))) { msmFioClose(&spC); @@ -132,8 +132,40 @@ static s8 msmSysLoadBaseGroup(void *arg0) return 0; } -// TODO: https://decomp.me/scratch/NWiuL -// msmSysSearchGroupStack +s32 msmSysSearchGroupStack(s32 arg0, s32 arg1) +{ + UnkStructSys43C *var_r3; + u32 var_r5; + s32 var_r6; + s32 var_r7; + s32 var_r8; + s32 var_r9; + s32 var_r0; + + var_r8 = -1; + var_r9 = 0; + if (sys.unk3EC[arg0].unk2 == 0) { + var_r3 = sys.unk43C; + var_r0 = sys.unk434; + } else { + var_r3 = sys.unk474; + var_r0 = sys.unk46C; + } + for (var_r6 = 0; var_r6 < var_r0; var_r3++, var_r6++) { + if (var_r6 == arg1) { + continue; + } + if ((var_r5 = var_r3->unk04) != 0) { + if (var_r3->unk01 == 0 && var_r5 > var_r9) { + var_r9 = var_r5; + var_r7 = -(var_r6 + 1); + } + } else { + var_r8 = var_r6; + } + } + return (var_r8 < 0) ? var_r7 : var_r8; +} s32 msmSysGroupInit(DVDFileInfo *arg0) { @@ -223,6 +255,18 @@ void msmSysIrqEnable(void) } } +static inline BOOL msmSysInline00(s32 arg0) +{ + s32 var_r6; + + for (var_r6 = 0; var_r6 < sys.unk3F4 + sys.unk436 + sys.unk46E; var_r6++) { + if (sys.unk10->unk29[var_r6] == arg0) { + return TRUE; + } + } + return FALSE; +} + BOOL msmSysCheckBaseGroup(s32 arg0) { s32 var_r6; @@ -465,15 +509,265 @@ s32 msmSysDelGroupBase(s32 grpNum) return 0; } -// TODO: https://decomp.me/scratch/zexTY -// msmSysLoadGroupBase +static inline s32 msmSysPushGroup(DVDFileInfo *arg0, void *buf, UnkStructSys43C *arg2, s32 arg3) +{ + unkStruct4 *temp_r30; + unkStruct3 *temp_r7; -// msmSysLoadGroupSet + temp_r30 = &sys.unk3EC[arg3]; + if (msmFioRead(arg0, arg2->unk08, temp_r30->unk8, temp_r30->unk4 + sys.unkC->unk38) < 0) { + return MSM_ERR_READFAIL; + } + if (msmFioRead(arg0, buf, temp_r30->unk10, temp_r30->unkC + sys.unkC->unk40) < 0) { + return MSM_ERR_READFAIL; + } + temp_r7 = arg2->unk08; + if (!sndPushGroup((void*) (temp_r7->unk4 + (u32) temp_r7), temp_r30->unk0, buf, + (void*) (temp_r7->unk8 + (u32) temp_r7), (void*) (temp_r7->unk0 + (u32) temp_r7))) + { + return MSM_ERR_20; + } + sys.unk8 += temp_r30->unk10; + arg2->unk00 = arg3; + arg2->unk04 = sys.unk3E0++; + return 0; +} -// msmSysLoadGroupSub +s32 msmSysLoadGroupBase(s32 arg0, void *arg1) +{ + s32 temp_r29; + s32 temp_r28; + s32 var_r23; + s32 temp_r3_2; + UnkStructSys43C *var_r24; + DVDFileInfo sp10; -// TODO: https://decomp.me/scratch/AhvXa -// msmSysLoadGroup + if (arg0 < 1 || arg0 >= sys.unk3DC) { + return MSM_ERR_64; + } + var_r23 = msmSysDelGroupAll(); + if (var_r23 != 0) { + return var_r23; + } + temp_r29 = sys.unk3F4 + sys.unk436 + sys.unk46E; + if (msmSysInline00(arg0)) { + return 0; + } + if (temp_r29 >= 0xF) { + return MSM_ERR_65; + } + temp_r3_2 = msmSysSearchGroupStack(arg0, -1); + if (temp_r3_2 < 0) { + return MSM_ERR_65; + } + temp_r28 = sys.unk3EC[arg0].unk2; + if (!temp_r28) { + var_r24 = &sys.unk43C[temp_r3_2]; + } else { + var_r24 = &sys.unk474[temp_r3_2]; + } + if (msmFioOpen(sys.unk0, &sp10) != 1) { + return MSM_ERR_OPENFAIL; + } + var_r23 = msmSysPushGroup(&sp10, arg1, var_r24, arg0); + if (var_r23 != 0) { + msmFioClose(&sp10); + return var_r23; + } + msmFioClose(&sp10); + sys.unk10->unk29[temp_r29] = arg0; + var_r24->unk01 = 1; + if (temp_r28 == 0) { + sys.unk436++; + sys.unk435++; + } else { + sys.unk46E++; + sys.unk46D++; + } + return 0; +} + +static inline s32 msmSysInline01(void) +{ + if (sys.unk3F0 != NULL) { + return sys.unk3F0->unk00; + } + return 0; +} + +s32 msmSysLoadGroupSet(s32 arg0, void *arg1) +{ + s8 sp4C[12]; // unknown length (5..12 works) + DVDFileInfo sp10; + s32 temp_r3; + s32 temp_r3_2; + s32 var_r19; + s32 var_r24; + s32 var_r31; + s8 *var_r19_2; + + if (msmSysInline01() == 0) { + return 0; + } + temp_r3 = msmSysDelGroupAll(); + if (temp_r3 != 0) { + return temp_r3; + } + var_r19_2 = &sys.unk3F0->unk02[sys.unk3F0->unk01 * arg0]; + if (msmFioOpen(sys.unk0, &sp10) != TRUE) { + return MSM_ERR_OPENFAIL; + } + sys.unk435 = sys.unk436; + var_r31 = 0; + for (; *var_r19_2 != 0; var_r19_2++) { + if (msmSysInline00(*var_r19_2)) { + continue; + } + if (sys.unk3EC[(s8) *var_r19_2].unk2 == 1) { + sp4C[var_r31++] = *var_r19_2; + } else { + temp_r3_2 = msmSysSearchGroupStack(*var_r19_2, -1); + if (temp_r3_2 < 0) { + msmFioClose(&sp10); + return MSM_ERR_65; + } + var_r19 = msmSysPushGroup(&sp10, arg1, &sys.unk43C[temp_r3_2], *var_r19_2); + if (var_r19 != 0) { + msmFioClose(&sp10); + return var_r19; + } + sys.unk435++; + } + } + sys.unk46D = sys.unk46E; + for (var_r24 = 0; var_r24 < var_r31; var_r24++) { + temp_r3_2 = msmSysSearchGroupStack(sp4C[var_r24], -1); + if (temp_r3_2 < 0) { + msmFioClose(&sp10); + return MSM_ERR_65; + } + var_r19 = msmSysPushGroup(&sp10, arg1, &sys.unk474[temp_r3_2], sp4C[var_r24]); + if (var_r19 != 0) { + msmFioClose(&sp10); + return var_r19; + } + sys.unk46D++; + } + msmFioClose(&sp10); + return 0; +} + +static s32 msmSysLoadGroupSub(DVDFileInfo *arg0, s32 arg1, void *arg2) +{ + s32 var_r30; + s32 var_r18; + s32 var_r19; + s32 var_r3; + u8 *var_r29; + UnkStructSys43C *var_r28; + unkStruct4 *temp_r23; + + var_r30 = 0; + temp_r23 = &sys.unk3EC[arg1]; + if (temp_r23->unk2 == 0) { + var_r28 = sys.unk43C; + var_r29 = &sys.unk435; + } else { + var_r28 = sys.unk474; + var_r29 = &sys.unk46D; + } + if (temp_r23->unk3 != 0) { + if (!msmSysCheckBaseGroup(sys.unk3EC[temp_r23->unk3].unk0)) { + var_r19 = -1; + for (var_r18 = 0; var_r18 < 2; var_r18++) { + var_r19 = msmSysSearchGroupStack(temp_r23->unk3, var_r19); + if (var_r19 < 0) { + var_r19 = -(var_r19 + 1); + (*var_r29)--; + sndPopGroup(); + sys.unk8 -= sys.unk3EC[var_r28[var_r19].unk00].unk10; + var_r30 = var_r28[var_r19].unk00; + var_r28[var_r19].unk04 = 0; + } + } + var_r3 = msmSysPushGroup(arg0, arg2, &var_r28[var_r19], temp_r23->unk3); + if (var_r3 != 0) { + return var_r3; + } + (*var_r29)++; + } + } + var_r19 = msmSysSearchGroupStack(arg1, -1); + if (var_r19 < 0) { + var_r19 = -(var_r19 + 1); + (*var_r29)--; + sndPopGroup(); + sys.unk8 -= sys.unk3EC[var_r28[var_r19].unk00].unk10; + var_r30 = var_r28[var_r19].unk00; + } + var_r3 = msmSysPushGroup(arg0, arg2, &var_r28[var_r19], arg1); + if (var_r3 == 0) { + var_r3 = var_r30; + } + (*var_r29)++; + return var_r3; +} + +static inline void msmSysPopGroup(s32 arg0) +{ + UnkStructSys43C *temp_r23; + + temp_r23 = &sys.unk474[arg0]; + if (temp_r23->unk04 != 0 && temp_r23->unk01 == 0) { + sndPopGroup(); + sys.unk8 -= sys.unk3EC[temp_r23->unk00].unk10; + } +} + +s32 msmSysLoadGroup(s32 grp, void *buf) +{ + UnkStructSys43C *temp_r23; + unkStruct4 *temp_r22; + s32 var_r31; + s32 var_r22; + s32 var_r21; + DVDFileInfo sp14; + s32 unused; + + if (buf == NULL) { + return 0; + } + if (grp == 0) { + return msmSysLoadBaseGroup(buf); + } + temp_r22 = &sys.unk3EC[grp]; + if (msmSysCheckLoadGroupID(temp_r22->unk0)) { + return 0; + } + if (msmFioOpen(sys.unk0, &sp14) != 1) { + return MSM_ERR_OPENFAIL; + } + if (temp_r22->unk2 == 0) { + for (var_r22 = 0; var_r22 < sys.unk46C; var_r22++) { + msmSysPopGroup(var_r22); + } + var_r21 = msmSysLoadGroupSub(&sp14, grp, buf); + for (var_r22 = 0; var_r22 < sys.unk46C; var_r22++) { + temp_r23 = &sys.unk474[var_r22]; + if (temp_r23->unk04 != 0 && temp_r23->unk01 == 0) { + var_r31 = msmSysPushGroup(&sp14, buf, temp_r23, temp_r23->unk00); + if (var_r31 != 0) { + msmFioClose(&sp14); + return var_r31; + } + } + } + } else { + var_r21 = msmSysLoadGroupSub(&sp14, grp, buf); + } + msmFioClose(&sp14); + return var_r21; +} void msmSysCheckInit(void) { From 58925bcf5d6d4a9781ca77dd505781c1980112a3 Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Tue, 14 Jan 2025 21:29:03 +0300 Subject: [PATCH 20/24] Fix vertex attributes (#527) * Use proper enum types for vertex attributes descriptions Positions, normals and texture coordinates are always given in integer or floating point formats, never as RGB. Also replace a couple of constants with sizeof(). * Use proper function names when specifying vertex attributes --- include/dolphin/gx/GXVert.h | 6 ++ src/game/hsfdraw.c | 150 ++++++++++++++++++------------------ 2 files changed, 81 insertions(+), 75 deletions(-) diff --git a/include/dolphin/gx/GXVert.h b/include/dolphin/gx/GXVert.h index 34745aaa..d57943b3 100644 --- a/include/dolphin/gx/GXVert.h +++ b/include/dolphin/gx/GXVert.h @@ -114,6 +114,12 @@ static inline void GXPosition3f32(const f32 x, const f32 y, const f32 z) { GXWGFifo.f32 = z; } +static inline void GXNormal3s16(const s16 x, const s16 y, const s16 z) { + GXWGFifo.s16 = x; + GXWGFifo.s16 = y; + GXWGFifo.s16 = z; +} + static inline void GXNormal3f32(const f32 x, const f32 y, const f32 z) { GXWGFifo.f32 = x; GXWGFifo.f32 = y; diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index 5320607c..fce142dd 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -482,15 +482,15 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { vtxModeBak = var_r22; GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, temp_r28->data.vertex->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r28->data.vertex->data, 3 * sizeof(float)); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r29->hsfData->cenvCnt == 0) { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3 * sizeof(float)); } if (var_r22 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); @@ -555,24 +555,24 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { vtxModeBak = var_r22; GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, temp_r28->data.vertex->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r28->data.vertex->data, 3 * sizeof(float)); if (var_r22 & 2) { GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_RGBA4, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_S16, 8); } else { GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r29->hsfData->cenvCnt == 0) { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3 * sizeof(float)); } } GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_TEX0, temp_r28->data.st->data, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, temp_r28->data.st->data, 2 * sizeof(float)); if (var_r22 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); @@ -1643,15 +1643,15 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { vtxModeBak = var_r30; GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, temp_r31->data.vertex->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r31->data.vertex->data, 3 * sizeof(float)); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r28->hsfData->cenvCnt == 0) { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S8, 0); GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3 * sizeof(float)); } if (var_r30 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); @@ -1676,24 +1676,24 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { vtxModeBak = var_r30; GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_POS, temp_r31->data.vertex->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r31->data.vertex->data, 3 * sizeof(float)); if (var_r30 & 2) { GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_RGBA4, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_S16, 8); } else { GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r28->hsfData->cenvCnt == 0) { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); - GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 0xC); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3 * sizeof(float)); } } GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); - GXSetArray(GX_VA_TEX0, temp_r31->data.st->data, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, temp_r31->data.st->data, 2 * sizeof(float)); if (var_r30 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); @@ -2523,53 +2523,53 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { case 2: GXBegin(GX_TRIANGLES, GX_VTXFMT0, faceNumBuf[drawCnt]); for (var_r27 = 0; var_r27 < faceNumBuf[drawCnt] / 3; var_r27++, arg1++) { - GXUnknownu16(arg1->indices[0][0]); + GXPosition1x16(arg1->indices[0][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[0][1]); + GXNormal1x16(arg1->indices[0][1]); } else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[0][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[0][3]); + GXTexCoord1x16(arg1->indices[0][3]); } - GXUnknownu16(arg1->indices[2][0]); + GXPosition1x16(arg1->indices[2][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[2][1]); + GXNormal1x16(arg1->indices[2][1]); } else { MakeNBT(arg0, arg1, 2, 0); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[2][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[2][3]); + GXTexCoord1x16(arg1->indices[2][3]); } - GXUnknownu16(arg1->indices[1][0]); + GXPosition1x16(arg1->indices[1][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[1][1]); + GXNormal1x16(arg1->indices[1][1]); } else { MakeNBT(arg0, arg1, 1, 2); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[1][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[1][3]); + GXTexCoord1x16(arg1->indices[1][3]); } } faceCnt = faceNumBuf[drawCnt] / 3; @@ -2577,140 +2577,140 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { case 3: GXBegin(GX_QUADS, GX_VTXFMT0, faceNumBuf[drawCnt]); for (var_r27 = 0; var_r27 < faceNumBuf[drawCnt] / 4; var_r27++, arg1++) { - GXUnknownu16(arg1->indices[0][0]); + GXPosition1x16(arg1->indices[0][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[0][1]); + GXNormal1x16(arg1->indices[0][1]); } else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[0][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[0][3]); + GXTexCoord1x16(arg1->indices[0][3]); } - GXUnknownu16(arg1->indices[2][0]); + GXPosition1x16(arg1->indices[2][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[2][1]); + GXNormal1x16(arg1->indices[2][1]); } else { MakeNBT(arg0, arg1, 2, 0); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[2][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[2][3]); + GXTexCoord1x16(arg1->indices[2][3]); } - GXUnknownu16(arg1->indices[3][0]); + GXPosition1x16(arg1->indices[3][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[3][1]); + GXNormal1x16(arg1->indices[3][1]); } else { MakeNBT(arg0, arg1, 3, 2); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[3][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[3][3]); + GXTexCoord1x16(arg1->indices[3][3]); } - GXUnknownu16(arg1->indices[1][0]); + GXPosition1x16(arg1->indices[1][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[1][1]); + GXNormal1x16(arg1->indices[1][1]); } else { MakeNBT(arg0, arg1, 1, 3); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[1][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[1][3]); + GXTexCoord1x16(arg1->indices[1][3]); } } faceCnt = faceNumBuf[drawCnt] / 4; break; case 4: GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, faceNumBuf[drawCnt]); - GXUnknownu16(arg1->indices[0][0]); + GXPosition1x16(arg1->indices[0][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[0][1]); + GXNormal1x16(arg1->indices[0][1]); } else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[0][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[0][3]); + GXTexCoord1x16(arg1->indices[0][3]); } - GXUnknownu16(arg1->indices[2][0]); + GXPosition1x16(arg1->indices[2][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[2][1]); + GXNormal1x16(arg1->indices[2][1]); } else { MakeNBT(arg0, arg1, 2, 0); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[2][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[2][3]); + GXTexCoord1x16(arg1->indices[2][3]); } - GXUnknownu16(arg1->indices[1][0]); + GXPosition1x16(arg1->indices[1][0]); if (var_r26 == -1) { - GXUnknownu16(arg1->indices[1][1]); + GXNormal1x16(arg1->indices[1][1]); } else { MakeNBT(arg0, arg1, 1, 2); } if (temp_r30->vtxMode == 5) { temp_r28 = arg1->indices[1][2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(arg1->indices[1][3]); + GXTexCoord1x16(arg1->indices[1][3]); } var_r24 = arg1->strip.data; for (var_r27 = 0; var_r27 < arg1->strip.count; var_r27++, var_r24 += 4) { - GXUnknownu16(var_r24[0]); + GXPosition1x16(var_r24[0]); if (var_r26 == -1) { - GXUnknownu16(var_r24[1]); + GXNormal1x16(var_r24[1]); } else { MakeCalcNBT(arg0, arg1, 0, 1); } if (temp_r30->vtxMode == 5) { temp_r28 = var_r24[2]; - GXUnknownu16(temp_r28); + GXColor1x16(temp_r28); if (((GXColor*) arg0->data.color->data)[temp_r28].a != 0xFF) { Hu3DObjInfoP->flags |= 0x4001; } } if (var_r25 != 0) { - GXUnknownu16(var_r24[3]); + GXTexCoord1x16(var_r24[3]); } } faceCnt = arg1->strip.count + 1; @@ -2755,9 +2755,9 @@ static s32 MakeCalcNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { NBTB.z = temp_r31[temp_r25].z - temp_r31[temp_r24].z; VECNormalize(&NBTB, &NBTB); VECCrossProduct(&NBTB, &sp10, &NBTT); - GXPosition3s16(sp10.x * 256.0f, sp10.y * 256.0f, sp10.z * 256.0f); - GXPosition3s16(NBTB.x * 256.0f, NBTB.y * 256.0f, NBTB.z * 256.0f); - GXPosition3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f); + GXNormal3s16(sp10.x * 256.0f, sp10.y * 256.0f, sp10.z * 256.0f); + GXNormal3s16(NBTB.x * 256.0f, NBTB.y * 256.0f, NBTB.z * 256.0f); + GXNormal3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f); } static s32 MakeNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { @@ -2781,9 +2781,9 @@ static s32 MakeNBT(HsfObject *arg0, HsfFace *arg1, s16 arg2, s16 arg3) { sp10.z = temp_r29[temp_r28][2]; VECNormalize(&sp10, &sp10); } - GXPosition3s16(sp10.x * 256.0f, sp10.y * 256.0f, sp10.z * 256.0f); - GXPosition3s16(NBTB.x * 256.0f, NBTB.y * 256.0f, NBTB.z * 256.0f); - GXPosition3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f); + GXNormal3s16(sp10.x * 256.0f, sp10.y * 256.0f, sp10.z * 256.0f); + GXNormal3s16(NBTB.x * 256.0f, NBTB.y * 256.0f, NBTB.z * 256.0f); + GXNormal3s16(NBTT.x * 256.0f, NBTT.y * 256.0f, NBTT.z * 256.0f); } static void MDFaceCnt(HsfObject *arg0, HsfFace *arg1) { From c621824464d7574ff610227fc0f094eaf80e2f36 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Tue, 14 Jan 2025 22:36:09 +0100 Subject: [PATCH 21/24] Change back string.c/h, fix m434Dll, work on m433Dll/player.c (#530) * Change back string.h as the change breaks things * Fix m434Dll * Work on m433Dll/player.c --- config/GMPE01_00/rels/m433Dll/symbols.txt | 10 +- config/GMPE01_00/rels/m434Dll/symbols.txt | 6 +- config/GMPP01_00/rels/m434Dll/symbols.txt | 8 +- configure.py | 2 +- include/REL/m433Dll.h | 4 +- include/string.h | 17 +- src/MSL_C.PPCEABI.bare.H/string.c | 1 + src/REL/m433Dll/main.c | 4 +- src/REL/m433Dll/player.c | 4091 +++++++++++++++++++++ src/REL/m434Dll/player.c | 1 + 10 files changed, 4113 insertions(+), 31 deletions(-) create mode 100644 src/REL/m433Dll/player.c diff --git a/config/GMPE01_00/rels/m433Dll/symbols.txt b/config/GMPE01_00/rels/m433Dll/symbols.txt index df299b4f..11a976cf 100644 --- a/config/GMPE01_00/rels/m433Dll/symbols.txt +++ b/config/GMPE01_00/rels/m433Dll/symbols.txt @@ -242,7 +242,7 @@ lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data: lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x8 scope:local data:double lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x10 scope:local data:float lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float @@ -264,8 +264,8 @@ lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data: lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x18 scope:local data:4byte -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x18 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x18 scope:local data:float lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float @@ -311,7 +311,7 @@ lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data: lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 scope:local data:double lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x8 scope:local data:double -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:4byte +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 scope:local data:4byte lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x8 scope:local data:double lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 scope:local data:double lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float @@ -441,7 +441,7 @@ lbl_1_data_5EA = .data:0x000005EA; // type:object size:0x15 scope:local data:str lbl_1_data_5FF = .data:0x000005FF; // type:object size:0x15 scope:local data:string lbl_1_data_614 = .data:0x00000614; // type:object size:0x15 scope:local data:string lbl_1_data_629 = .data:0x00000629; // type:object size:0x15 scope:local data:string -lbl_1_data_63E = .data:0x0000063E; // type:object size:0x16 +lbl_1_data_63E = .data:0x0000063E; // type:object size:0x16 data:string jumptable_1_data_654 = .data:0x00000654; // type:object size:0x20 scope:local lbl_1_data_674 = .data:0x00000674; // type:object size:0xC lbl_1_data_680 = .data:0x00000680; // type:object size:0x8 diff --git a/config/GMPE01_00/rels/m434Dll/symbols.txt b/config/GMPE01_00/rels/m434Dll/symbols.txt index 63082c5e..288bd0ad 100644 --- a/config/GMPE01_00/rels/m434Dll/symbols.txt +++ b/config/GMPE01_00/rels/m434Dll/symbols.txt @@ -303,9 +303,9 @@ lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x8 lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x18 lbl_1_data_1FC = .data:0x000001FC; // type:object size:0x28 lbl_1_data_224 = .data:0x00000224; // type:object size:0x90 -lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x3 data:string -lbl_1_data_2B7 = .data:0x000002B7; // type:object size:0x3 data:string -lbl_1_data_2BA = .data:0x000002BA; // type:object size:0x3 data:string +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x3 scope:local data:string +lbl_1_data_2B7 = .data:0x000002B7; // type:object size:0x3 scope:local data:string +lbl_1_data_2BA = .data:0x000002BA; // type:object size:0x3 scope:local data:string lbl_1_data_2C0 = .data:0x000002C0; // type:object size:0x8 lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte diff --git a/config/GMPP01_00/rels/m434Dll/symbols.txt b/config/GMPP01_00/rels/m434Dll/symbols.txt index 185c6a51..c3cfd4b9 100644 --- a/config/GMPP01_00/rels/m434Dll/symbols.txt +++ b/config/GMPP01_00/rels/m434Dll/symbols.txt @@ -187,7 +187,7 @@ lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data: lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float @@ -300,9 +300,9 @@ lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x8 lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x18 lbl_1_data_1FC = .data:0x000001FC; // type:object size:0x28 lbl_1_data_224 = .data:0x00000224; // type:object size:0x90 -lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x3 data:string -lbl_1_data_2B7 = .data:0x000002B7; // type:object size:0x3 data:string -lbl_1_data_2BA = .data:0x000002BA; // type:object size:0x3 data:string +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x3 scope:local data:string +lbl_1_data_2B7 = .data:0x000002B7; // type:object size:0x3 scope:local data:string +lbl_1_data_2BA = .data:0x000002BA; // type:object size:0x3 scope:local data:string lbl_1_data_2C0 = .data:0x000002C0; // type:object size:0x8 lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index fdbbbc1a..e6026c86 100644 --- a/configure.py +++ b/configure.py @@ -1131,7 +1131,7 @@ config.libs = [ objects={ Object(Matching, "REL/m434Dll/main.c"), Object(Matching, "REL/m434Dll/map.c"), - Object(NonMatching, "REL/m434Dll/player.c"), + Object(Matching, "REL/m434Dll/player.c"), Object(Matching, "REL/m434Dll/fish.c"), }, ), diff --git a/include/REL/m433Dll.h b/include/REL/m433Dll.h index e2a18da8..5028045a 100644 --- a/include/REL/m433Dll.h +++ b/include/REL/m433Dll.h @@ -23,8 +23,8 @@ typedef struct M433DllWork { void fn_1_584(omObjData *object); void fn_1_618(omObjData *object); -s32 fn_1_216C(void); -s32 fn_1_2184(void); +u32 fn_1_216C(void); +u32 fn_1_2184(void); void fn_1_219C(s32 arg0, s32 arg1, s32 arg2); void fn_1_21E4(s32 arg0); void fn_1_2214(s32 arg0); diff --git a/include/string.h b/include/string.h index 92f8f122..6ba311ed 100644 --- a/include/string.h +++ b/include/string.h @@ -1,22 +1,11 @@ #ifndef _STRING_H_ #define _STRING_H_ -#include "stddef.h" +typedef unsigned long size_t; -#ifdef __MWERKS__ -__declspec(section ".init") void* memcpy(void* dest, const void* src, size_t n); -__declspec(section ".init") void __fill_mem(void* dest, int val, size_t count); -__declspec(section ".init") void* memset(void* dest, int val, size_t count); -#else -void* memcpy(void* dest, const void* src, size_t n); -void __fill_mem(void* dest, int val, size_t count); -void* memset(void* dest, int val, size_t count); -#endif +void* memcpy(void* dst, const void* src, size_t n); +void* memset(void* dst, int val, size_t n); -int memcmp(const void* lhs, const void* rhs, size_t count); -void* __memrchr(const void* ptr, int ch, size_t count); -void* memchr(const void* ptr, int ch, size_t count); -void* memmove(void* dst, const void* src, size_t n); char* strrchr(const char* str, int c); char* strchr(const char* str, int c); int strncmp(const char* str1, const char* str2, size_t n); diff --git a/src/MSL_C.PPCEABI.bare.H/string.c b/src/MSL_C.PPCEABI.bare.H/string.c index 833447df..4fbb776f 100644 --- a/src/MSL_C.PPCEABI.bare.H/string.c +++ b/src/MSL_C.PPCEABI.bare.H/string.c @@ -1,4 +1,5 @@ #include "string.h" +#include "stddef.h" static int K1 = 0x80808080; static int K2 = 0xFEFEFEFF; diff --git a/src/REL/m433Dll/main.c b/src/REL/m433Dll/main.c index 6e8975db..df35b851 100644 --- a/src/REL/m433Dll/main.c +++ b/src/REL/m433Dll/main.c @@ -353,12 +353,12 @@ s32 fn_1_2154(void) return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_0C; } -s32 fn_1_216C(void) +u32 fn_1_216C(void) { return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_14; } -s32 fn_1_2184(void) +u32 fn_1_2184(void) { return OM_GET_DATA_PTR(lbl_1_bss_24, M433DllWork)->unk_24; } diff --git a/src/REL/m433Dll/player.c b/src/REL/m433Dll/player.c new file mode 100644 index 00000000..cbe26c9a --- /dev/null +++ b/src/REL/m433Dll/player.c @@ -0,0 +1,4091 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#include "REL/m433Dll.h" + +#ifndef __MWERKS__ +#include "game/esprite.h" +#include "game/frand.h" +#endif + +typedef struct M433PlayerWork { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + char unk10[4]; + u32 unk_14; + u32 unk_18; + u32 unk_1C; + s32 unk_20; + float unk_24; + float unk_28; + s32 unk_2C; + s32 unk_30; + s32 unk_34; + s32 unk_38; + s32 unk_3C; + s32 unk_40; + s32 unk_44; + s32 unk_48; + s32 unk_4C; + char unk50[4]; + s32 unk_54; + char unk58[4]; + s32 unk_5C; + s32 unk_60; + s32 unk_64; + s32 unk_68; + s32 unk_6C; + s32 unk_70; + u32 unk_74; + u32 unk_78; + u32 unk_7C; + u32 unk_80; + u32 unk_84; + u32 unk_88; + s32 unk_8C; + u32 unk_90; + char unk94[4]; + float unk_98; + s16 unk_9C; + char unk9E[6]; + float unk_A4; + float unk_A8; + float unk_AC; + float unk_B0; + float unk_B4; + float unk_B8; + float unk_BC; + float unk_C0; + char unkC4[0x08]; + u32 unk_CC; + u32 unk_D0; + u32 unk_D4; + u32 unk_D8; + float unk_DC; + float unk_E0; + s32 unk_E4; + s32 unk_E8; + s32 unk_EC; + s32 unk_F0; + s32 unk_F4; + u32 unk_F8; + Vec unk_FC; + Vec unk_108; + Vec unk_114; + float unk_120; + float unk_124; + Vec unk_128; + Vec unk_134; + Vec unk_140; + omObjData *unk_14C; +} M433PlayerWork; /* size = 0x150 */ + +typedef struct M433PlayerWork2 { + char unk00[0x18]; + s16 unk_18; + char unk1A[0x16]; + float unk_30; + float unk_34; + float unk_38; + char unk3C[0x7C]; + float unk_B8; + float unk_BC; + float unk_C0; + float unk_C4; + Mtx unk_C8; + char unkF8[0x44]; +} M433PlayerWork2; /* size = 0x13C */ + +typedef struct M433PlayerWork3SubStruct { + char unk00[2]; + s16 unk_02[5]; +} M433PlayerWork3SubStruct; /* size = 0xC */ + +typedef struct M433PlayerWork3SubStruct2 { + char unk00[0x78]; + s16 unk_78; + s16 unk_7A; + char unk7C[0x28]; + s16 unk_A4; + s16 unk_A6; + char unkA8[0x3E8]; + s32 unk_490[2]; + char unk498[8]; +} M433PlayerWork3SubStruct2; /* size = 0x4A0 */ + +typedef struct M433PlayerWork3 { + s32 unk_00; + s32 unk_04; + s32 unk_08; + char unk0C[0xC]; + s32 unk_18; + s32 unk_1C; + char unk20[0xC]; + s32 unk_2C; + s32 unk_30; + char unk34[0x18]; + M433PlayerWork3SubStruct unk_4C[2]; + M433PlayerWork3SubStruct2 unk_64; +} M433PlayerWork3; /* size = 0x504 */ + +typedef struct M433DllPlayerData24CStruct { + /* 0x00 */ u16 unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ u32 unk_10; +} M433DllPlayerData24CStruct; /* size = 0x14 */ + +typedef struct M433DllPlayerData6C0Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ char pad_04[0xC]; /* maybe part of unk_00[4]? */ +} M433DllPlayerData6C0Struct; /* size = 0x10 */ + +typedef struct M433DllPlayerData794Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; +} M433DllPlayerData794Struct; /* size = 0x0C */ + +void fn_1_10130(Vec *arg0, u32 arg1); +void fn_1_10260(float arg8, float arg9, u32 arg0, s32 arg1, Vec *arg2); +s32 fn_1_10614(Vec *arg0); +void fn_1_1070C(void); +u32 fn_1_10740(Vec *arg0); +u32 fn_1_107B0(Vec *arg0); +float fn_1_10848(void); +u32 fn_1_108C4(void); +u32 fn_1_10900(void); +float fn_1_10B20(float arg8, Vec *arg0); +s32 fn_1_10D24(Vec *arg0); +u32 fn_1_10EA4(void); +u32 fn_1_10ECC(u32 arg0); +s32 fn_1_10F00(u32 arg0); +u32 fn_1_10F38(u32 arg0); +s32 fn_1_10F6C(u32 arg0); +u32 fn_1_10FDC(void); +s32 fn_1_11004(u32 arg0, s32 arg1); +s32 fn_1_11060(u32 arg0); +float fn_1_11130(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3); +void fn_1_5B98(omObjData *object); +void fn_1_6070(omObjData *object); +void fn_1_60C0(omObjData *object); +void fn_1_682C(omObjData *object); +void fn_1_722C(omObjData *object); +void fn_1_74D4(omObjData *object); +void fn_1_8408(omObjData *object); +void fn_1_873C(omObjData *object); +s32 fn_1_8938(u32 arg0, Vec *arg1); +void fn_1_8BD0(omObjData *object); +void fn_1_8F80(omObjData *object); +void fn_1_9688(omObjData *object); +void fn_1_A618(omObjData *object); +void fn_1_AB88(omObjData *object); +void fn_1_B194(omObjData *object); +void fn_1_B4D4(omObjData *object, u32 arg1); +s32 fn_1_B6E0(omObjData *object); +s32 fn_1_B7AC(omObjData *object); +s32 fn_1_BAE0(omObjData *object, u32 arg1); +void fn_1_BD48(omObjData *object); +void fn_1_C240(omObjData *object); +void fn_1_C6AC(omObjData *object); +s32 fn_1_C6B0(omObjData *object); +void fn_1_CB98(omObjData *object); +void fn_1_CDB8(float *arg0, Vec *arg1, Vec *arg2, u32 arg3, float arg8); +void fn_1_D180(float *arg0); +void fn_1_D338(float *arg0); +s32 fn_1_D4E0(float *arg0, Vec *arg1, Vec *arg2, float arg8); +void fn_1_D6A8(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_D888(Vec *arg0, float arg8); +void fn_1_DD70(Vec *arg0); +void fn_1_DE28(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_DF44(omObjData *object); +void fn_1_E11C(omObjData *object); +void fn_1_E5C0(M433PlayerWork3SubStruct *arg0, M433PlayerWork3SubStruct2 *arg1); +void fn_1_ECFC(void *arg0, void *arg1); +void fn_1_FE64(void *arg0, s32 arg1, s32 arg2, u32 arg3); +void fn_1_FE8C(Vec *arg0, u32 arg1, u32 arg2, s32 arg3); + +float lbl_1_data_E0[0xE] = { + 130.0f, + 130.0f, + 160.0f, + 130.0f, + 130.0f, + 160.0f, + 160.0f, + 180.0f, + 240.00002f, + 100.0f, + 130.0f, + 130.0f, + 120.00001f, + 130.0f, +}; +float lbl_1_data_118[0xE] = { + 50.0f, + 50.0f, + 50.0f, + 50.0f, + 50.0f, + 70.0f, + 50.0f, + 70.0f, + 110.0f, + 50.0f, + 50.0f, + 50.0f, + 50.0f, + 50.0f, +}; +s32 lbl_1_data_150[6][2] = { + { 0x3A, 0x3B }, + { 0x36, 0x38 }, + { 0x40, 0x42 }, + { 0x4B, 0x4D }, + { 0x46, 0x48 }, + { 0x3E, 0x3F }, +}; +s32 lbl_1_data_180[0x11] = { + 0x400061, + 0x400062, + 0x400063, + 0x400064, + 0x400065, + 0x400066, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, +}; +u32 lbl_1_data_1C4[0x11] = { + 0, + 2, + 3, + 0x400011, + 0x400019, + 0x400021, + 0x400029, + 0x400031, + 0x400039, + 0x400041, + 0x400049, + 0x400051, + 0x400059, + 0x17, + 0x18, + 0x48, + 0x49, +}; +s32 lbl_1_data_208[0x11] = { + 0x400067, + 0x40006D, + 0x400073, + 0x400079, + 0x40007F, + 0x400085, + 0x40008B, + 0x400091, + 0x400097, + 0x40009D, + 0x4000A3, + 0x4000A9, + 0x4000AF, + 0x4000B5, + 0x4000C1, + 0x4000BB, + 0x4000C7, +}; +M433DllPlayerData24CStruct lbl_1_data_24C[0x15] = { + { 0, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 1, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 2, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 3, 0.15f, 0.0f, 0.0f, 0 }, + { 3, 0.02f, 0.0f, -1.0f, 0 }, + { 4, 0.02f, 0.2f, -1.0f, 0 }, + { 5, 0.05f, 0.25f, -1.0f, 0 }, + { 6, 0.1f, 0.0f, -1.0f, 0 }, + { 7, 0.02f, 0.0f, -1.0f, 0 }, + { 0xB, 0.02f, 0.4f, -1.0f, 0 }, + { 0xC, 0.02f, 0.36666667f, -1.0f, 0 }, + { 8, 0.01f, 0.2f, -1.0f, 0 }, + { 9, 0.02f, 0.0f, -1.0f, 0 }, + { 0xA, 0.02f, 0.0f, -1.0f, 0 }, + { 5, 0.08f, 0.0f, 0.25f, 0 }, + { 0xB, 0.2f, 0.0f, 0.4f, 0 }, + { 0xC, 0.08f, 0.0f, 0.3f, 0 }, + { 0xD, 0.2f, 0.0f, -1.0f, 0 }, + { 0xE, 0.2f, 0.0f, -1.0f, 0 }, + { 0xF, 0.2f, 0.0f, -1.0f, 0 }, + { 0x10, 0.2f, 0.0f, -1.0f, 0 }, +}; +u32 lbl_1_data_3F0[0xE] = { + 0x32, + 0x32, + 0x3C, + 0x32, + 0x32, + 0x5A, + 0x32, + 0x3C, + 0x64, + 0x1E, + 0x32, + 0x1E, + 0x28, + 0x32, +}; +char *lbl_1_data_450[6] = { + "itemhook_R", + "itemhook_r", + "itemhook_R", + "itemhook_R", + "itemhook_r", + "itemhook_r", +}; +s32 lbl_1_data_468[9] = { 0, 0, 1, 1, 1, 1, 1, 0, 1 }; +float lbl_1_data_48C[0x12] = { + 0.0f, + 0.6666667f, + 2.1666667f, + 2.0f, + 1.0f, + 7.0000005f, + 1.5000001f, + 1.5000001f, + 3.0000002f, + 0.0f, + 0.0f, + 1e-45f, + 0.0f, + 0.0f, + 1e-45f, + 0.0f, + 0.0f, + 1e-45f, +}; +Vec lbl_1_data_4D4[9] = { + { 0.0f, 0.0f, 1.0f }, + { 0.0f, 1.5f, 1.0f }, + { 236.5f, 0.0f, 1300.0f }, + { 0.0f, 1.5f, 1.0f }, + { 0.0f, 1.8f, 1.0f }, + { 231.0f, 0.0f, 1500.0f }, + { 231.0f, 0.0f, 1000.0f }, + { 0.0f, 1.2f, 1.0f }, + { 0.0f, 0.8f, 1.0f }, +}; +float lbl_1_data_540[9] = { 1.0f, 1.0f, 3.0f, 1.0f, 1.0f, 4.0f, 2.0f, 1.0f, 1.0f }; +s8 lbl_1_data_564 = 0xA; +u16 lbl_1_data_674[6] = { 0, 1, 2, 3, 3, 0 }; +s32 lbl_1_data_680[2] = { 0x61001E, 0x61001F }; +Vec2f lbl_1_data_688[5] = { + { 0.0f, 0.0f }, + { 0.0f, 0.0f }, + { -23.0f, 0.0f }, + { 1.0f, 0.0f }, + { 21.0f, 0.0f }, +}; +Vec2f lbl_1_data_6B0[2] = { { 72.0f, 56.0f }, { 504.0f, 56.0f } }; +M433DllPlayerData6C0Struct lbl_1_data_6C0[0xB] = { + { 0x13000B }, + { 0x13000C }, + { 0x13000D }, + { 0x13000E }, + { 0x13000F }, + { 0x130010 }, + { 0x130011 }, + { 0x130012 }, + { 0x130013 }, + { 0x130014 }, + { 0x130099 }, +}; +s32 lbl_1_data_770[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; +M433DllPlayerData794Struct lbl_1_data_794[9] = { + { 0, 0, 0 }, + { 0, 0, 0 }, + { 1, 1, 0 }, + { 1, 0, 1 }, + { 1, 0, 1 }, + { 1, 1, 0 }, + { 1, 1, 0 }, + { 1, 0, 1 }, + { 1, 0, 1 }, +}; +u32 lbl_1_data_800[9] = { 0, 1, 2, 1, 1, 2, 1, 1, 1 }; + +// M433PlayerWork +omObjData *lbl_1_bss_7D0[5]; +// M433PlayerWork2 +omObjData *lbl_1_bss_7CC; +// M433PlayerWork3 +omObjData *lbl_1_bss_7C8; +u32 lbl_1_bss_7B8[4]; + +void fn_1_5904(Process *process) +{ + u32 sp18[4]; + s32 sp8[4]; + + s16 var_r31; + s16 var_r30; + u32 var_r28; + omObjData *var_r27; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp18[var_r31] = GWPlayerCfg[var_r31].group; + sp8[var_r31] = var_r31; + } + for (var_r31 = 0; var_r31 < 3; var_r31++) { + for (var_r30 = var_r31 + 1; var_r30 < 4; var_r30++) { + if (sp18[var_r31] > sp18[var_r30]) { + var_r28 = sp18[var_r31]; + sp18[var_r31] = sp18[var_r30]; + sp18[var_r30] = var_r28; + var_r28 = sp8[var_r31]; + sp8[var_r31] = sp8[var_r30]; + sp8[var_r30] = var_r28; + } + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_7B8[sp8[var_r31]] = var_r31; + } + lbl_1_bss_7C8 = omAddObjEx(process, 0x14, 0, 0, 0, fn_1_DF44); + lbl_1_bss_7CC = omAddObjEx(process, 0x15, 0x1F, 0, 0, fn_1_BD48); + omMakeGroupEx(process, 0, 4); + omGetGroupMemberListEx(process, 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r27 = lbl_1_bss_7D0[var_r31] = omAddObjEx(process, 0x28, 2, 0x11, 0, fn_1_5B98); + var_r27->work[0] = var_r31; + } +} + +void fn_1_5B74(void) +{ + CharModelKill(-1); +} + +void fn_1_5B98(omObjData *object) +{ + s32 sp8; + M433PlayerWork *work; + s16 var_r29; + u32 var_r28; + s32 var_r27; + + float spC[4] = { 0.25f, 0.5f, 0.75f, 1.0f }; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433PlayerWork), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M433PlayerWork)); + var_r27 = object->work[0]; + var_r28 = GWPlayerCfg[var_r27].character; + work->unk_00 = var_r28; + work->unk_04 = -1; + if (var_r28 >= 8) { + work->unk_04 = var_r28 - 8; + } + sp8 = work->unk_08 = 0; + work->unk_14 = (lbl_1_bss_7B8[object->work[0]] >> 1) & 1; + work->unk_18 = lbl_1_bss_7B8[object->work[0]] & 1; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r29 != object->work[0]) && (work->unk_14 == ((lbl_1_bss_7B8[var_r29] >> 1) & 1))) { + break; + } + } + work->unk_14C = lbl_1_bss_7D0[var_r29]; + work->unk_C0 = spC[GWPlayerCfg[var_r27].diff & 3]; + work->unk_2C = GWPlayerCfg[object->work[0]].iscom; + if (work->unk_04 < 0) { + object->model[0] = CharModelCreate(var_r28, 4); + CharModelStepTypeSet(var_r28, 2); + } + else { + object->model[0] = Hu3DModelCreateFile(lbl_1_data_180[work->unk_04]); + } + Hu3DModelShadowSet(object->model[0]); + object->model[1] = Hu3DModelCreateFile(0x400008); + Hu3DModelLayerSet(object->model[1], 1); + for (var_r29 = 0; var_r29 < 0x11; var_r29++) { + if (work->unk_04 < 0) { + if (lbl_1_data_1C4[var_r29] < 0x10000) { + object->motion[var_r29] = CharModelMotionCreate(var_r28, lbl_1_data_1C4[var_r29]); + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], var_r28 + lbl_1_data_1C4[var_r29]); + } + } + else { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], work->unk_04 + lbl_1_data_208[var_r29]); + } + } + if (work->unk_04 < 0) { + CharModelVoiceEnableSet(var_r28, object->motion[16], 0); + CharModelMotionDataClose(var_r28); + } + else { + CharModelEffectNpcInitSilent(object->model[0], object->motion[1], 0); + CharModelEffectNpcInitSilent(object->model[0], object->motion[2], 1); + } + object->trans.x = work->unk_128.x = (0.4f * (700.0f * (object->work[0] + 1))) - 700.0f; + object->trans.y = work->unk_128.y = 0.0f; + object->trans.z = work->unk_128.z = 0.0f; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_A4 = work->unk_A8 = 0.0f; + work->unk_AC = 0.0f; + work->unk_B0 = 0.02f; + work->unk_120 = lbl_1_data_118[var_r28]; + work->unk_0C = -1; + work->unk_70 = -1; + fn_1_B4D4(object, 0); + work->unk_74 = 0; + object->func = fn_1_6070; +} + +void fn_1_6070(omObjData *object) +{ + M433PlayerWork *work = object->data; + fn_1_722C(object); + work->unk_74 = 0; + object->func = fn_1_60C0; +} + +void fn_1_60C0(omObjData *object) +{ + Vec spC; + float var_f31; + float var_f30; + + M433PlayerWork *work; + s32 var_r29; + M433PlayerWork *var_r28; + + work = object->data; + var_r29 = 0; + var_r28 = work->unk_14C->data; + work->unk_1C = 0; + work->unk_20 = 0; + work->unk_28 = 0.0f; + work->unk_24 = 0.0f; + if ((work->unk_30 == 0) && (work->unk_70 != fn_1_10ECC(work->unk_14))) { + work->unk_70 = fn_1_10ECC(work->unk_14); + switch (fn_1_10ECC(work->unk_14)) { + case 0: + work->unk_6C = 0; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_74 = 0; + work->unk_38 = 0; + work->unk_3C = work->unk_40 = 0; + work->unk_128.y = 0.0f; + if (work->unk_18 == fn_1_10F38(work->unk_14)) { + if (fn_1_10F00(work->unk_14) != 0) { + work->unk_128.z = 0.0f; + work->unk_128.x = 840.00006f; + work->unk_74 = 1; + work->unk_38 = 1; + } + else { + work->unk_128.z = 140.0f; + work->unk_128.x = 540.2f; + } + } + else { + work->unk_128.z = -140.0f; + work->unk_128.x = 385.1f; + } + work->unk_A4 = work->unk_A8 = -90.0f; + work->unk_AC = 1.0f; + work->unk_B0 = 1.0f; + if (work->unk_14 == 0) { + work->unk_128.x *= -1.0f; + work->unk_A4 = work->unk_A8 = 90.0f; + } + work->unk_0C = -1; + work->unk_34 = 1; + work->unk_88 = work->unk_8C = 0; + work->unk_7C = work->unk_78 = work->unk_80 = 0; + break; + case 1: + case 2: + if (work->unk_74 == 1) { + work->unk_34 = 0; + }; + break; + case 3: + work->unk_74 = 2; + work->unk_7C = work->unk_78 = work->unk_80 = 0; + work->unk_34 = 0; + break; + case 4: + case 5: + work->unk_74 = 3; + break; + case 6: + case 7: + if (fn_1_10F6C(work->unk_14) != 0) { + fn_1_B4D4(object, 0x13); + if (work->unk_04 >= 0) { + HuAudFXPlay(lbl_1_data_150[work->unk_04][0]); + } + PSVECSubtract(&var_r28->unk_128, &work->unk_128, &spC); + work->unk_A8 = atan2d(spC.x, spC.z); + work->unk_AC = 0.15f; + work->unk_B0 = 0.0f; + } + else { + fn_1_B4D4(object, 0x14); + } + work->unk_74 = 4; + break; + default: + break; + } + } + if (fn_1_216C() == 2) { + if (work->unk_2C != 0) { + fn_1_74D4(object); + } + else { + work->unk_20 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; + work->unk_1C = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; + var_f31 = HuPadStkX[GWPlayerCfg[object->work[0]].pad_idx]; + var_f30 = -HuPadStkY[GWPlayerCfg[object->work[0]].pad_idx]; + work->unk_28 = atan2d(var_f31, var_f30); + work->unk_24 = 0.013888889f * sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (work->unk_24 > 1.0f) { + work->unk_24 = 1.0f; + } + } + } + switch (work->unk_74) { + case 0: + fn_1_B4D4(object, 0); + var_r29 = 1; + break; + case 1: + fn_1_8F80(object); + break; + case 2: + fn_1_8BD0(object); + fn_1_AB88(object); + fn_1_9688(object); + break; + case 3: + fn_1_8BD0(object); + fn_1_A618(object); + fn_1_9688(object); + break; + case 4: + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_30 = 0; + if (fn_1_B6E0(object) != 0) { + work->unk_30 = 0; + work->unk_74 = 0; + } + break; + } + PSVECAdd(&work->unk_128, &work->unk_134, &work->unk_128); + if (fn_1_10ECC(work->unk_14) >= 2) { + fn_1_B194(object); + } + fn_1_722C(object); + if ((fn_1_216C() == 3) && (var_r29 != 0)) { + work->unk_74 = 0; + object->func = fn_1_682C; + } +} + +void fn_1_682C(omObjData *object) +{ + Vec sp1C; + Vec sp10; + float sp8[2]; + float var_f31; + M433PlayerWork *var_r30; + M433PlayerWork *var_r29; + M433PlayerWork *var_r27; + Vec *var_r26; + s32 var_r25; + M433PlayerWork *var_r24; + s32 var_r23; + + M433PlayerWork *work = object->data; + { + Vec sp40[2] = { { 130.0f, 0.0f, -50.0f }, { 250.0f, 0.0f, 50.0f } }; + Vec sp28[2] = { { 150.0f, 0.0f, 100.0f }, { 300.0f, 0.0f, -100.0f } }; + var_r27 = work->unk_14C->data; + PSVECAdd(&work->unk_128, &work->unk_134, &work->unk_128); + fn_1_B194(object); + fn_1_722C(object); + switch (work->unk_74) { + case 0: + fn_1_B4D4(object, 0); + if (fn_1_2244() != 0) { + if (work->unk_18 == 0) { + var_r23 = 1; + if (work->unk_14 == 0) { + sp40[0].x *= -1.0f; + sp40[1].x *= -1.0f; + sp28[0].x *= -1.0f; + sp28[1].x *= -1.0f; + } + var_r30 = work; + var_r29 = var_r27; + var_r26 = sp40; + work->unk_84 = var_r27->unk_84 = 0; + if (lbl_1_data_3F0[var_r30->unk_00] != lbl_1_data_3F0[var_r29->unk_00]) { + if (lbl_1_data_3F0[var_r30->unk_00] < lbl_1_data_3F0[var_r29->unk_00]) { + var_r24 = var_r30; + var_r30 = var_r29; + var_r29 = var_r24; + } + var_f31 = fn_1_11130(&var_r30->unk_128, &sp40[0], &var_r29->unk_128, &sp40[1]); + sp8[0] = 0.8f * (var_r30->unk_120 + var_r29->unk_120); + if (var_f31 < sp8[0]) { + var_r26 = sp28; + work->unk_84 = var_r27->unk_84 = 1; + OSReport("Escape!\n"); + } + else { + var_r23 = 0; + OSReport("Direct!\n"); + } + } + if (var_r23 != 0) { + var_r30 = work; + var_r29 = var_r27; + for (var_r25 = 0; var_r25 < 2; var_r25++) { + sp8[var_r25] = fn_1_11130(&var_r30->unk_128, &var_r26[var_r25 & 1], &var_r29->unk_128, &var_r26[(var_r25 + 1) & 1]); + } + if (sp8[0] < sp8[1]) { + var_r24 = var_r30; + var_r30 = var_r29; + var_r29 = var_r24; + } + } + var_r30->unk_140 = var_r26[0]; + var_r30->unk_140.z -= var_r30->unk_120; + var_r29->unk_140 = var_r26[1]; + } + work->unk_30 = work->unk_60 = work->unk_34 = 0; + if (work->unk_84 != 0) { + work->unk_74++; + } + else { + work->unk_74 += 2; + } + work->unk_88 = 0; + break; + } + break; + case 1: + if (work->unk_84 == 1) { + PSVECSubtract(&work->unk_140, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = PSVECMag(&sp10); + if (var_f31 < 20.0f) { + var_f31 = 0.01f; + work->unk_84++; + } + else { + if (PSVECMag(&sp10) >= 100.0f) { + var_f31 = 100.0f; + } + var_f31 = 0.2f + (0.008f * var_f31); + } + work->unk_28 = 180.0 * (atan2(sp10.x, sp10.z) / 3.141592653589793); + work->unk_24 = var_f31; + fn_1_8BD0(object); + } + else if (work->unk_84 == 2) { + fn_1_BAE0(object, 0); + if ((work->unk_18 == 0) && (var_r27->unk_84 != 0)) { + if (work->unk_14 == 0) { + sp40[0].x *= -1.0f; + sp40[1].x *= -1.0f; + } + var_r30 = work; + var_r29 = var_r27; + if (lbl_1_data_3F0[var_r30->unk_00] < lbl_1_data_3F0[var_r29->unk_00]) { + var_r24 = var_r30; + var_r30 = var_r29; + var_r29 = var_r24; + } + var_r30->unk_140 = sp40[0]; + var_r30->unk_140.z -= var_r30->unk_120; + var_r29->unk_140 = sp40[1]; + work->unk_84 = var_r27->unk_84 = 3; + } + } + if (work->unk_84 == 3) { + work->unk_74++; + work->unk_88 = 0; + return; + } + break; + case 2: + PSVECSubtract(&work->unk_140, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = PSVECMag(&sp10); + if (var_f31 < 10.0f) { + var_f31 = 0.01f; + } + else { + if (PSVECMag(&sp10) >= 100.0f) { + var_f31 = 100.0f; + } + var_f31 = 0.2f + (0.008f * var_f31); + } + work->unk_28 = atan2d(sp10.x, sp10.z); + work->unk_24 = var_f31; + fn_1_8BD0(object); + if ((work->unk_24 < 0.02f) || (work->unk_88 > 300.0f)) { + work->unk_A8 = 0.0f; + work->unk_AC = 0.15f; + work->unk_B0 = 0.0f; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + fn_1_21E4(object->work[0]); + work->unk_74++; + return; + } + break; + case 3: + if (fn_1_2184() == 1) { + if (fn_1_10FA4(work->unk_14) != 0) { + fn_1_B4D4(object, 0x11); + if (work->unk_04 >= 0) { + HuAudFXPlay(lbl_1_data_150[work->unk_04][0]); + } + } + else { + fn_1_B4D4(object, 0x12); + if (work->unk_04 >= 0) { + HuAudFXPlay(lbl_1_data_150[work->unk_04][1]); + } + } + work->unk_74++; + return; + } + fn_1_BAE0(object, 0); + return; + case 4: + if (fn_1_10FA4(work->unk_14) != 0) { + sp1C.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); + sp1C.y = Center.y + (CZoom * -sind(CRot.x)); + sp1C.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x))); + PSVECSubtract(&sp1C, &work->unk_128, &sp10); + work->unk_A8 = atan2d(sp10.x, sp10.z); + } + if (fn_1_B6E0(object) != 0) { + fn_1_2214(object->work[0]); + work->unk_74++; + } + break; + } + } +} + +void fn_1_722C(omObjData *object) +{ + Vec sp8; + + M433PlayerWork *work = object->data; + work->unk_9C++; + work->unk_88++; + object->trans.x = work->unk_128.x; + object->trans.y = work->unk_128.y; + object->trans.z = work->unk_128.z; + work->unk_AC = work->unk_AC + work->unk_B0; + if (work->unk_AC > 0.45f) { + work->unk_AC = 0.45f; + } + work->unk_A4 = fn_1_26C4(work->unk_A4, work->unk_A8, work->unk_AC); + object->rot.y = work->unk_A4; + Hu3DModelPosSet(object->model[1], work->unk_128.x, 11.0f, work->unk_128.z); + work->unk_BC += 3.0000002f; + if (work->unk_BC >= 360.0f) { + work->unk_BC -= 360.0f; + } + Hu3DModelRotSet(object->model[1], 0.0f, work->unk_BC, 0.0f); + work->unk_B8 = 0.0f; + if (fn_1_216C() == 2) { + if (((fn_1_10EA4() == 4) || (fn_1_10EA4() == 3)) && (work->unk_14 == fn_1_10740(&sp8)) && (fn_1_10FDC() != 0) && (fn_1_10FDC() < 3) + && (work->unk_60 == 0) && (fn_1_11004(work->unk_14, work->unk_18) != 0)) { + work->unk_B8 = 1.0f; + } + if (work->unk_74 == 1) { + work->unk_B8 = 1.0f; + } + } + work->unk_B4 += 0.1f * (work->unk_B8 - work->unk_B4); + Hu3DModelScaleSet(object->model[1], work->unk_B4, 1.0f, work->unk_B4); + if ((work->unk_B8 <= 0.0f) && (work->unk_B4 < 0.1f)) { + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); + work->unk_B4 = 0.0f; + return; + } + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); +} + +void fn_1_74D4(omObjData *object) +{ + Vec sp1C; + Vec sp10; + M433PlayerWork *spC; + s32 sp8; + float var_f31; + s32 var_r29; + + M433PlayerWork *work = object->data; + var_r29 = 1; + sp8 = 0; + spC = work->unk_14C->data; + switch (work->unk_74) { + case 0: + work->unk_6C = 0; + fn_1_873C(object); + break; + case 1: + if (work->unk_3C != 0) { + work->unk_1C = work->unk_1C | 0x100; + work->unk_DC = frandmod(0x168); + work->unk_E0 = 0.3f + (0.00040000002f * (work->unk_C0 * frandmod(0x3E8))); + work->unk_E4 = 0; + if (frandmod(0x3E8) > (300.0f + (500.0f * work->unk_C0))) { + work->unk_E4 = 1; + } + } + if (fn_1_10614(&sp1C) != 0) { + if (work->unk_E4 != 0) { + if ((fabs(sp1C.z) > 1.100000023841858) || (sp1C.x > 1.1f)) { + work->unk_E0 = 0.0f; + } + } + else { + if ((fabs(sp1C.z) > 0.949999988079071) || (sp1C.x > 0.95f)) { + work->unk_E0 = 0.0f; + } + } + } + work->unk_28 = work->unk_DC; + work->unk_24 = work->unk_E0; + if (work->unk_40 != 0) { + if (work->unk_D0++ >= work->unk_CC) { + work->unk_1C = work->unk_1C | 0x100; + } + } + else if (work->unk_60 != 0) { + work->unk_CC = ((60.0f * (0.35f * work->unk_C0)) / 1000.0f) * frandmod(0x3E8); + work->unk_D0 = 0; + } + fn_1_873C(object); + break; + case 2: + work->unk_F0 = 0; + if (frandmod(0x3E8) < (300.0f * work->unk_C0)) { + work->unk_F0 = 1; + } + fn_1_8408(object); + if (work->unk_F4 != 0) { + if (fn_1_10EA4() == 2) { + work->unk_F4 = 0; + work->unk_F8 = 0; + } + if (work->unk_14 == fn_1_107B0(&sp1C)) { + work->unk_D8++; + } + if ((work->unk_14 == fn_1_107B0(&sp1C)) && (work->unk_F8 == 0)) { + fn_1_10B20(0.9f, &work->unk_108); + work->unk_108.x = 115.0f; + if (work->unk_14 == 0) { + work->unk_108.x *= -1.0f; + } + work->unk_F8++; + } + if (work->unk_F8 == 1) { + if ((work->unk_D8 >= (0.5f * work->unk_D4)) && (fn_1_10D24(&work->unk_108) != 0)) { + work->unk_108.x = 115.0f; + if (work->unk_14 == 0) { + work->unk_108.x *= -1.0f; + } + work->unk_F8++; + } + } + else if ((work->unk_F8 == 2) && ((work->unk_D8 >= work->unk_D4) || (work->unk_14 == fn_1_10740(&sp1C)))) { + work->unk_1C = work->unk_1C | 0x200; + work->unk_F4 = 0; + work->unk_F8 = 0; + } + } + if ((work->unk_14 == fn_1_107B0(&sp1C)) && (fn_1_10900() >= (60.0f * (0.8f - (0.4f * work->unk_C0)))) && (work->unk_6C != 0)) { + PSVECSubtract(&sp1C, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = PSVECMag(&sp10); + if (PSVECMag(&sp10) >= 20.0f) { + if (var_f31 >= 50.0f) { + var_f31 = 50.0f; + } + work->unk_28 = atan2d(sp10.x, sp10.z); + work->unk_24 = var_f31 / 50.0f; + } + if ((fn_1_10848() < (0.8f - (0.6f * work->unk_C0))) && ((work->unk_44 != 0) || ((work->unk_48 != 0) && (work->unk_EC != 0)))) { + work->unk_1C = work->unk_1C | 0x100; + } + var_r29 = 0; + } + if (work->unk_F8 != 0) { + PSVECSubtract(&work->unk_108, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = PSVECMag(&sp10); + if (var_f31 >= 10.0f) { + if (var_f31 >= 50.0f) { + var_f31 = 50.0f; + } + work->unk_28 = atan2d(sp10.x, sp10.z); + work->unk_24 = var_f31 / 50.0f; + } + else { + work->unk_28 = 90.0f; + if (work->unk_14 != 0) { + work->unk_28 *= -1.0f; + } + work->unk_24 = 0.01f; + } + var_r29 = 0; + } + if (var_r29 != 0) { + PSVECSubtract(&work->unk_FC, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = PSVECMag(&sp10); + var_f31 -= 100.0f * (1.25f * (2.0f - work->unk_C0)); + if (var_f31 >= 10.0f) { + if (var_f31 >= 70.0f) { + var_f31 = 70.0f; + } + work->unk_28 = atan2d(sp10.x, sp10.z); + work->unk_24 = var_f31 / 70.0f; + break; + } + work->unk_28 = 90.0f; + if (work->unk_14 != 0) { + work->unk_28 *= -1.0f; + break; + } + } + break; + case 3: + fn_1_8408(object); + fn_1_873C(object); + if (work->unk_14 == fn_1_10740(&sp1C)) { + if (work->unk_68 == 0) { + if (fn_1_11004(work->unk_14, work->unk_18) != 0) { + PSVECSubtract(&sp1C, &work->unk_128, &sp10); + sp10.y = 0.0f; + var_f31 = PSVECMag(&sp10); + if (var_f31 >= 30.000002f) { + if (var_f31 >= 70.0f) { + var_f31 = 70.0f; + } + work->unk_24 = var_f31 / 70.0f; + work->unk_28 = atan2d(sp10.x, sp10.z); + } + } + if ((((work->unk_6C == 0) && (fn_1_10EA4() == 3) && (work->unk_F0 != 0)) || ((work->unk_6C != 0) && (fn_1_10EA4() == 4))) + && (work->unk_5C != 0)) { + work->unk_1C = work->unk_1C | 0x200; + work->unk_E8 = 0; + if (frandmod(0x3E8) < (s32)(300.0f * (work->unk_C0 - 0.4f))) { + work->unk_E8 = fn_1_8938(work->unk_14, &work->unk_114); + work->unk_DC = 0.0f; + work->unk_E0 = 0.0f; + work->unk_E4 = 0; + } + if (work->unk_E8 == 0) { + work->unk_DC = frandmod(0x168); + work->unk_E0 = 0.3f + (0.00040000002f * (work->unk_C0 * frandmod(0x3E8))); + work->unk_E4 = 0; + if (frandmod(0x3E8) > (300.0f + (500.0f * work->unk_C0))) { + work->unk_E4 = 1; + } + } + } + if ((work->unk_4C != 0) || (work->unk_44 != 0) || (work->unk_48 != 0)) { + work->unk_1C = work->unk_1C | 0x100; + break; + } + } + else { + if (fn_1_10614(&sp1C) != 0) { + if (work->unk_E8 != 0) { + PSVECSubtract(&work->unk_114, &sp1C, &sp10); + sp10.y = 0.0f; + var_f31 = PSVECMag(&sp10); + if (var_f31 < 0.05f) { + work->unk_DC = 0.0f; + work->unk_E0 = 0.0f; + } + else { + if (work->unk_14 != 0) { + sp10.x *= -1.0f; + } + work->unk_DC = atan2d(sp10.x, sp10.z); + work->unk_E0 = 1.0f; + } + } + if (work->unk_E4 != 0) { + if ((fabs(sp1C.z) > 1.100000023841858) || (sp1C.x > 1.1f)) { + work->unk_E0 = 0.0f; + } + } + else { + if ((fabs(sp1C.z) > 0.949999988079071) || (sp1C.x > 0.95f)) { + work->unk_E0 = 0.0f; + } + } + } + work->unk_28 = work->unk_DC; + work->unk_24 = work->unk_E0; + if (work->unk_54 != 0) { + if (work->unk_D0++ >= work->unk_CC) { + work->unk_1C |= 0x100; + break; + } + } + else { + work->unk_CC = ((60.0f * (0.35f * work->unk_C0)) / 1000.0f) * frandmod(0x3E8); + work->unk_D0 = 0; + } + } + } + break; + } +} + +void fn_1_8408(omObjData *object) +{ + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + + M433PlayerWork *work = object->data; + M433PlayerWork *var_r30 = work->unk_14C->data; + + if (var_r30->unk_2C == 0) { + var_r30->unk_C0 = work->unk_C0 - 0.1f; + } + if ((work->unk_14 == fn_1_107B0(&sp14)) && (fn_1_108C4() >= 12.0f)) { + if (((var_r30->unk_6C == 0) && (work->unk_6C == 0)) || (fn_1_108C4() < 0x3E8)) { + if ((work->unk_30 == 0) || (var_r30->unk_30 == 0)) { + PSVECSubtract(&sp14, &work->unk_128, &sp8); + sp8.y = 0.0f; + var_f31 = PSVECMag(&sp8) - (100.0f * (2.0f * work->unk_C0)); + PSVECSubtract(&sp14, &var_r30->unk_128, &sp8); + sp8.y = 0.0f; + var_f30 = PSVECMag(&sp8) - (100.0f * (2.0f * var_r30->unk_C0)); + if ((work->unk_30 != 0) || (work->unk_60 != 0)) { + var_f31 = 2000.0f; + } + if ((var_r30->unk_30 != 0) || (var_r30->unk_60 != 0)) { + var_f30 = 2000.0f; + } + if (var_f31 >= 300.0f) { + var_r30->unk_F4 = 0; + } + if (var_f30 >= 300.0f) { + work->unk_F4 = 0; + } + if (work->unk_F4 != 0) { + var_f31 += 300.0f; + } + if (var_r30->unk_F4 != 0) { + var_f30 += 300.0f; + } + var_r30->unk_6C = work->unk_6C = 0; + if (var_f31 <= var_f30) { + work->unk_6C = 1; + work->unk_F4 = 0; + } + else { + var_r30->unk_6C = 1; + var_r30->unk_F4 = 0; + } + if (work->unk_F4 == 0) { + work->unk_F8 = 0; + } + if (var_r30->unk_F4 == 0) { + var_r30->unk_F8 = 0; + } + } + } + else if (fn_1_10FDC() == 1) { + work->unk_6C = fn_1_11004(work->unk_14, work->unk_18) == 0; + var_r30->unk_6C = work->unk_6C == 0; + } + } + else if (work->unk_14 != fn_1_10740(&sp14)) { + var_r30->unk_6C = work->unk_6C = 0; + } +} + +void fn_1_873C(omObjData *object) +{ + M433PlayerWork *work = object->data; + work->unk_EC = 0; + if (frandmod(0x3E8) < (600.0f * work->unk_C0)) { + work->unk_EC = 1; + } + work->unk_F4 = 0; + work->unk_F8 = 0; + if ((work->unk_18 != fn_1_10F38(work->unk_14)) && (work->unk_74 != 0) && (frandmod(0x3E8) < (500.0f * work->unk_C0))) { + work->unk_F4 = 1; + work->unk_D4 = ((60.0f * (0.5f * work->unk_C0)) / 1000.0f) * frandmod(0x3E8); + work->unk_D8 = 0; + } + if (work->unk_18 == fn_1_10F38(work->unk_14)) { + work->unk_FC.z = 140.0f; + work->unk_FC.x = 540.2f; + } + else { + work->unk_FC.z = -140.0f; + work->unk_FC.x = 300.5f; + } + if (work->unk_14 == 0) { + work->unk_FC.x *= -1.0f; + } +} + +s32 fn_1_8938(u32 var_r27, Vec *var_r29) +{ + Vec sp2C[2]; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + u32 var_r31; + u32 var_r30; + M433PlayerWork *work; + + for (var_r31 = 0, var_r30 = 0; (var_r30 < 4) && (var_r31 < 2); var_r30++) { + work = lbl_1_bss_7D0[var_r30]->data; + if (work->unk_14 != var_r27) { + sp2C[var_r31] = work->unk_128; + sp2C[var_r31].y = 0.0f; + var_r31++; + } + } + if (var_r31 < 2) { + return 0; + } + if (var_r27 == 1) { + sp2C[0].x *= -1.0f; + sp2C[1].x *= -1.0f; + } + var_f29 = 47.0f; + var_f28 = 70.0f; + var_f30 = -1.0f; + sp14.z = -350.0f; + sp14.y = 0.0f; + for (var_r30 = 0; var_r30 <= 0xA; var_r30++) { + sp14.x = 230.0f; + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + PSVECSubtract(&sp14, &sp2C[0], &sp20); + var_f31 = PSVECMag(&sp20); + PSVECSubtract(&sp14, &sp2C[1], &sp20); + var_f31 *= PSVECMag(&sp20); + if (var_f31 > var_f30) { + var_f30 = var_f31; + sp8 = sp14; + } + sp14.x += var_f29; + } + sp14.z += var_f28; + } + *var_r29 = sp8; + var_r29->x -= 465.0f; + var_r29->x *= 0.004255319f; + var_r29->z *= 0.0028571428f; + return 1; +} + +void fn_1_8BD0(omObjData *object) +{ + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + s32 var_r29; + + M433PlayerWork *work = object->data; + var_r29 = 1; + if ((work->unk_30 == 0) && (work->unk_60 == 0)) { + if ((work->unk_24 > 0.0f) && (work->unk_34 == 0)) { + work->unk_A8 = work->unk_28; + } + if ((work->unk_24 > 0.05f) && (work->unk_34 == 0)) { + work->unk_134.x = 0.01666666753590107 * (550.0 * (work->unk_24 * sind(work->unk_28))); + work->unk_134.z = 0.01666666753590107 * (550.0 * (work->unk_24 * cosd(work->unk_28))); + if (work->unk_2C != 0) { + work->unk_AC = 0.1f; + } + else { + work->unk_AC = 0.2f; + } + work->unk_B0 = 0.0f; + if (fn_1_B7AC(object) != 0) { + var_f30 = 0.5f; + if (work->unk_0C == 2) { + var_f30 = 0.45f; + } + if (work->unk_24 > var_f30) { + fn_1_B4D4(object, 2); + var_f31 = work->unk_24; + } + else { + fn_1_B4D4(object, 1); + var_f31 = work->unk_24 / var_f30; + } + if (work->unk_04 < 0) { + CharModelMotionSpeedSet(work->unk_00, var_f31); + } + else { + Hu3DMotionSpeedSet(object->model[0], var_f31); + } + } + if ((work->unk_24 > 0.5f) && (((work->unk_88 + 0xF) & 0xF) == 0)) { + fn_1_D888(&work->unk_128, 0.2f); + } + } + else { + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + if ((work->unk_5C != 0) && (fn_1_10FDC() >= 2)) { + fn_1_B4D4(object, 0x10); + } + else if (work->unk_4C != 0) { + fn_1_B4D4(object, 0xF); + } + else if (work->unk_44 != 0) { + fn_1_B4D4(object, 0xE); + } + else { + fn_1_BAE0(object, 0); + } + if ((var_r29 != 0) && (work->unk_24 == 0.0f)) { + fn_1_10B20(0.0f, &sp14); + PSVECSubtract(&sp14, &work->unk_128, &sp8); + work->unk_A8 = atan2d(sp8.x, sp8.z); + work->unk_AC = 0.1f; + work->unk_B0 = 0.0f; + } + } + } +} + +void fn_1_8F80(omObjData *object) +{ + Vec sp1C; + Vec sp10; + float var_f31; + float var_f30; + s32 var_r29; + char *var_r28; + + M433PlayerWork *work = object->data; + var_r29 = work->unk_40; + { + s32 sp8[2] = { 0x6A4, 0x6A5 }; + work->unk_3C = 0; + work->unk_40 = 0; + if (work->unk_04 < 0) { + var_r28 = CharModelHookNameGet(work->unk_00, 4, 0); + Hu3DModelObjPosGet(object->model[0], var_r28, &sp10); + } + else { + Hu3DModelObjPosGet(object->model[0], lbl_1_data_450[work->unk_04], &sp10); + } + switch (work->unk_8C) { + case 0: + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_8C++; + work->unk_88 = 0; + + case 1: + work->unk_30 = 0; + work->unk_38 = 1; + fn_1_B4D4(object, 3); + fn_1_FE8C(&sp10, 0, work->unk_14, work->unk_18); + if (fn_1_10ECC(work->unk_14) != 1) { + work->unk_88 = 0; + break; + } + if (work->unk_34 == 0) { + work->unk_3C = 1; + if ((work->unk_1C & 0x100) || (work->unk_88 > 300.0f)) { + fn_1_B4D4(object, 4); + work->unk_30 = 1; + work->unk_8C++; + work->unk_88 = 0; + } + } + break; + case 2: + if (work->unk_60 == 0) { + work->unk_134.x = 1.6666667461395264 * (2.0 * sind((10.0f + (4.285714f * work->unk_88)))); + if (work->unk_14 != 0) { + work->unk_134.x *= -1.0f; + } + } + if ((work->unk_88 >= 9.0f) && (work->unk_38 != 0)) { + if (work->unk_14 != 0) { + var_f30 = -1.0f; + } + else { + var_f30 = 1.0f; + } + sp1C.x = object->trans.x + (250.0f * var_f30); + sp1C.y = 80.0f + object->trans.y; + sp1C.z = sp10.z; + fn_1_FE8C(&sp1C, 1, work->unk_14, work->unk_18); + work->unk_38 = 0; + } + else if (work->unk_88 >= 28.0f) { + var_f31 = 0.5f; + work->unk_124 = (2.0f * -(350.0f - lbl_1_data_E0[work->unk_00])) / (var_f31 * var_f31); + work->unk_134.y = 0.016666668f * (-work->unk_124 * var_f31); + work->unk_60 = 1; + work->unk_8C++; + work->unk_88 = 0; + fn_1_D888(&work->unk_128, 0.5f); + } + if (work->unk_38 == 0) { + fn_1_10260(work->unk_28, work->unk_24, work->unk_14, 0, &sp1C); + break; + } + fn_1_FE8C(&sp10, 0, work->unk_14, work->unk_18); + break; + case 3: + work->unk_134.y += 0.016666668f * (0.016666668f * work->unk_124); + if ((work->unk_88 > 27.0f) && (work->unk_88 < 51.0f)) { + work->unk_40 = 1; + } + fn_1_10260(work->unk_28, work->unk_24, work->unk_14, work->unk_40, &sp1C); + if (((work->unk_40 != 0) && ((work->unk_1C & 0x100) != 0)) || ((work->unk_40 == 0) && (var_r29 != 0))) { + fn_1_B4D4(object, 5); + if (work->unk_40 == 0) { + fn_1_1070C(); + } + fn_1_FE8C(&sp1C, 2, work->unk_14, work->unk_18); + work->unk_40 = 0; + work->unk_8C = 5; + work->unk_88 = 0; + HuAudFXPlay(sp8[work->unk_14]); + } + break; + case 4: + if (work->unk_88 >= 12.0f) { + work->unk_60 = 0; + work->unk_8C = 1; + work->unk_88 = 0; + } + break; + case 5: + work->unk_134.y += 0.016666668f * (0.016666668f * work->unk_124); + if (work->unk_128.y <= 0.0f) { + work->unk_60 = 0; + fn_1_D888(&work->unk_128, 0.5f); + work->unk_30 = 0; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + } + break; + } + } +} + +void fn_1_9688(omObjData *object) +{ + Vec sp2C; + Vec sp20; + s32 sp14; + s32 sp10; + s32 spC; + s32 sp8; + float var_f31; + float var_f30; + float var_f29; + M433PlayerWork *work; + M433PlayerWork *var_r29; + + work = object->data; + { + s32 sp38[3][3] = { { 3, 4, 6 }, { 3, 4, 6 }, { 3, 4, 7 } }; + s32 sp18[2] = { 0x6AD, 0x6AE }; + s32 sp10[2] = { 0x6A6, 0x6A7 }; + s32 sp8[2] = { 0x6AA, 0x6AB }; + var_r29 = work->unk_14C->data; + work->unk_4C = 0; + work->unk_44 = 0; + work->unk_48 = 0; + if (work->unk_60 == 0) { + switch (work->unk_7C) { + case 0: + if ((work->unk_7C == 0) && (work->unk_78 == 0) && (work->unk_80 == 0) + && (work->unk_30 = 0, work->unk_64 = 0, ((work->unk_34 == 0) != 0)) && (work->unk_14 == fn_1_10740(&sp2C)) + && (fn_1_11004(work->unk_14, work->unk_18) != 0) && (fn_1_10FDC() < 3)) { + work->unk_140 = sp2C; + var_f31 = fn_1_10848(); + if ((var_f31 <= 0.8f) && (var_f31 >= 0.02f) && (var_r29->unk_64 == 0)) { + PSVECSubtract(&sp2C, &work->unk_128, &sp20); + sp20.y = 0.0f; + var_f30 = PSVECMag(&sp20); + work->unk_98 = var_f30; + if (var_f30 <= 200.0f) { + if ((var_f31 >= 0.2f) && (var_f30 <= 70.0f) && (var_f31 >= (0.2f + (0.001f * var_f30))) && (fn_1_10FDC() >= 1)) { + work->unk_4C = 1; + } + if ((var_f31 >= 0.02f) && (var_f30 <= 100.0f) && (var_f31 >= (0.02f + (0.001f * var_f30)))) { + work->unk_44 = 1; + } + if ((var_f31 >= 0.1f) && (var_f31 <= 0.3f) && (var_f30 > 100.0f) && (var_f30 <= 200.0f) + && (var_f31 >= (0.1f + (0.0002f * (var_f30 - 100.0f))))) { + work->unk_48 = 1; + } + } + } + if ((work->unk_1C & 0x100) != 0) { + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + if (work->unk_4C != 0) { + work->unk_7C = 1; + var_f31 -= 0.12f; + work->unk_98 *= 0.014285714f; + fn_1_B4D4(object, 0xF); + fn_1_10B20(0.0f, &sp2C); + } + else if (work->unk_44 != 0) { + work->unk_7C = 2; + var_f31 -= 0.03f; + work->unk_98 *= 0.01f; + fn_1_B4D4(object, 0xE); + fn_1_10B20(0.0f, &sp2C); + } + else if (work->unk_48 != 0) { + work->unk_7C = 3; + var_f31 -= 0.03f; + work->unk_98 *= 0.005f; + fn_1_B4D4(object, 7); + fn_1_D888(&work->unk_128, 0.75f); + HuAudFXPlay(sp8[work->unk_14]); + } + else { + if (fn_1_10FDC() >= 1) { + fn_1_B4D4(object, 9); + } + else { + fn_1_B4D4(object, 6); + } + work->unk_7C = 4; + } + if (work->unk_7C < 4) { + work->unk_64 = 1; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + work->unk_90 = 60.0f * var_f31; + } + PSVECSubtract(&sp2C, &work->unk_128, &sp20); + work->unk_A8 = atan2d(sp20.x, sp20.z); + work->unk_AC = 0.2f; + work->unk_B0 = 0.0f; + work->unk_30 = 1; + work->unk_88 = 0; + } + } + break; + case 1: + if (work->unk_88 >= work->unk_90) { + if (work->unk_64 != 0) { + if (fn_1_10FDC() >= 2) { + sp2C.x = 350.0f; + sp2C.y = 11.0f; + sp2C.z = 0.0f; + if (work->unk_14 != 0) { + sp2C.x *= -1.0f; + } + } + else { + sp2C = var_r29->unk_128; + sp2C.y = 11.0f; + sp2C.x *= 0.5f; + } + var_f29 = frandmod(0x168); + var_f30 = 200.0f * work->unk_98; + sp2C.x += var_f30 * sind(var_f29); + sp2C.z += var_f30 * cosd(var_f29); + if (fn_1_10FDC() < 2) { + fn_1_10130(&sp2C, work->unk_14); + } + fn_1_FE8C(&sp2C, sp38[0][fn_1_10FDC()], work->unk_14, work->unk_18); + fn_1_D888(&work->unk_128, 0.0f); + HuAudFXPlay(sp10[work->unk_14]); + } + work->unk_64 = 0; + fn_1_B4D4(object, 9); + PSVECSubtract(&sp2C, &work->unk_128, &sp20); + work->unk_A8 = atan2d(sp20.x, sp20.z); + work->unk_AC = 0.1f; + work->unk_90 = 0x186A0; + work->unk_88 = 0; + break; + } + if (work->unk_90 < 0x2710) { + work->unk_134.x = 0.07f * (work->unk_140.x - work->unk_128.x); + work->unk_134.z = 0.07f * (work->unk_140.z - work->unk_128.z); + if (work->unk_64 == 0) { + work->unk_90 = 0; + } + } + else { + work->unk_134.x *= 0.7f; + work->unk_134.z *= 0.7f; + if (fn_1_B6E0(object) != 0) { + work->unk_7C = 0; + } + } + break; + case 2: + if (work->unk_88 >= work->unk_90) { + if (work->unk_64 != 0) { + switch (fn_1_10FDC()) { + case 0: + sp2C = var_r29->unk_128; + sp2C.y = 11.0f; + break; + case 1: + sp2C = var_r29->unk_128; + sp2C.y = 11.0f; + sp2C.x *= 0.5f; + break; + case 2: + default: + sp2C.x = 350.0f; + sp2C.y = 11.0f; + sp2C.z = 0.0f; + if (work->unk_14 != 0) { + sp2C.x *= -1.0f; + } + break; + } + var_f29 = frandmod(0x168); + var_f30 = 200.0f * work->unk_98; + sp2C.x += var_f30 * sind(var_f29); + sp2C.z += var_f30 * cosd(var_f29); + if (fn_1_10FDC() < 2) { + fn_1_10130(&sp2C, work->unk_14); + } + fn_1_FE8C(&sp2C, sp38[1][fn_1_10FDC()], work->unk_14, work->unk_18); + fn_1_D888(&work->unk_128, 0.0f); + if (fn_1_10FDC() < 1) { + HuAudFXPlay(sp18[work->unk_14]); + } + else { + HuAudFXPlay(sp10[work->unk_14]); + } + } + work->unk_64 = 0; + fn_1_B4D4(object, 6); + PSVECSubtract(&sp2C, &work->unk_128, &sp20); + work->unk_A8 = atan2d(sp20.x, sp20.z); + work->unk_AC = 0.1f; + work->unk_90 = 0x186A0; + work->unk_88 = 0; + break; + } + if (work->unk_90 < 0x2710) { + work->unk_134.x = 0.07f * (work->unk_140.x - work->unk_128.x); + work->unk_134.z = 0.07f * (work->unk_140.z - work->unk_128.z); + if (work->unk_64 == 0) { + work->unk_90 = 0; + break; + } + } + else { + work->unk_134.x *= 0.7f; + work->unk_134.z *= 0.7f; + if (fn_1_B6E0(object) != 0) { + work->unk_7C = 0; + break; + } + } + break; + case 3: + if (work->unk_88 >= work->unk_90) { + if (work->unk_64 != 0) { + sp2C = work->unk_128; + sp2C.y = 11.0f; + PSVECSubtract(&var_r29->unk_128, &work->unk_128, &sp20); + var_f29 = 180.0 + (atan2d(sp20.x, sp20.z)); + var_f29 += frandmod(0xB4) - 90.0f; + var_f30 = 200.0f * work->unk_98; + sp2C.x += var_f30 * sind(var_f29); + sp2C.z += var_f30 * cosd(var_f29); + fn_1_10130(&sp2C, work->unk_14); + fn_1_FE8C(&sp2C, sp38[2][fn_1_10FDC()], work->unk_14, work->unk_18); + if (fn_1_10FDC() < 1) { + HuAudFXPlay(sp18[work->unk_14]); + } + else { + HuAudFXPlay(sp10[work->unk_14]); + } + } + work->unk_64 = 0; + work->unk_90 = 0x186A0; + work->unk_88 = 0; + fn_1_D888(&work->unk_128, 1.3f); + break; + } + if (work->unk_90 < 0x2710) { + work->unk_134.x = 0.15f * (work->unk_140.x - work->unk_128.x); + work->unk_134.z = 0.15f * (work->unk_140.z - work->unk_128.z); + break; + } + work->unk_134.x *= 0.95f; + work->unk_134.z *= 0.95f; + if (fn_1_B6E0(object) != 0) { + fn_1_B4D4(object, 8); + work->unk_7C = 4; + } + break; + case 4: + work->unk_134.x *= 0.95f; + work->unk_134.z *= 0.95f; + if (fn_1_B6E0(object) != 0) { + work->unk_7C = 0; + } + break; + } + } + } +} + +struct _m2c_reg_fn_1_A618 { + M433PlayerWork *var_r31; + M433PlayerWork *sp8; +}; + +void fn_1_A618(omObjData *object) +{ + Vec sp20; + Vec sp14; + M433PlayerWork *sp8; + float var_f31; + float var_f30; + float var_f29; + M433PlayerWork *work = object->data; + { + s32 spC[2] = { 0x6A8, 0x6A9 }; + sp8 = work->unk_14C->data; + work->unk_54 = 0; + work->unk_5C = 0; + switch (work->unk_80) { + case 0: + if ((work->unk_7C == 0) && (work->unk_78 == 0) && (work->unk_80 == 0) + && (work->unk_30 = 0, work->unk_68 = 0, ((work->unk_34 == 0) != 0)) && (fn_1_11004(work->unk_14, work->unk_18) != 0) + && (fn_1_10FDC() < 3) && (work->unk_14 == fn_1_10740(&sp20))) { + PSVECSubtract(&sp20, &work->unk_128, &sp14); + sp14.y = 0.0f; + if (!(PSVECMag(&sp14) > 500.0f)) { + fn_1_10B20(0.5f, &sp20); + sp20.y -= lbl_1_data_E0[work->unk_00]; + PSVECSubtract(&sp20, &work->unk_128, &sp14); + sp14.y = 0.0f; + if ((PSVECMag(&sp14) < 200.0f) && (sp20.y >= 50.0f)) { + work->unk_5C = 1; + } + if (((work->unk_1C & 0x200) != 0) && (work->unk_5C != 0)) { + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + fn_1_B4D4(object, 0xA); + work->unk_80 = 1; + work->unk_88 = 0; + work->unk_30 = 1; + if (work->unk_5C != 0) { + var_f30 = 0.5f; + work->unk_124 = (2.0f * -sp20.y) / (var_f30 * var_f30); + work->unk_134.y = 0.016666668f * (-work->unk_124 * var_f30); + PSVECSubtract(&sp20, &work->unk_128, &sp14); + sp14.y = 0.0f; + work->unk_134.x = 0.016666668f * (sp14.x / 0.5f); + work->unk_134.z = 0.016666668f * (sp14.z / 0.5f); + if (work->unk_14 != 0) { + var_f29 = -90.0f; + } + else { + var_f29 = 90.0f; + } + work->unk_A8 = var_f29; + work->unk_AC = 0.2f; + work->unk_B0 = 0.0f; + work->unk_68 = 1; + } + else { + work->unk_134.y = 14.833334f; + } + work->unk_60 = 1; + fn_1_D888(&work->unk_128, 0.75f); + } + } + } + break; + case 1: + work->unk_134.y += 0.016666668f * (0.016666668f * work->unk_124); + if (work->unk_68 != 0) { + var_f31 = (0.016666668f * work->unk_88) - 0.35f; + if ((var_f31 >= 0.0f) && (var_f31 < 0.4)) { + work->unk_54 = 1; + if ((work->unk_1C & 0x100) != 0) { + fn_1_B4D4(object, 0xB); + fn_1_10260(work->unk_28, work->unk_24, work->unk_14, work->unk_54, &sp20); + fn_1_FE8C(&sp20, 5, work->unk_14, work->unk_18); + work->unk_68 = 0; + work->unk_54 = 0; + HuAudFXPlay(spC[work->unk_14]); + } + } + else if (var_f31 > 0.0f) { + work->unk_68 = 0; + work->unk_54 = 0; + } + fn_1_10260(work->unk_28, work->unk_24, work->unk_14, work->unk_54, &sp20); + } + if (work->unk_128.y <= 0.0f) { + fn_1_D888(&work->unk_128, 0.75f); + work->unk_30 = 0; + work->unk_80 = 0; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_60 = 0; + work->unk_68 = 0; + } + break; + } + } +} + +// void fn_1_AB88(omObjData *object) +// { +// Vec sp1C; /* compiler-managed */ +// Vec sp10; +// s32 spC; +// s32 sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// float var_f28; +// void *var_r31; +// s32 var_r30; +// omObjData *var_r29; +// void *var_r28; +// s32 temp_r0; + +// var_r29 = object; +// var_r31 = var_r29->data; +// var_r30 = 0; +// sp8 = lbl_1_rodata_5A0.unk_00; +// spC = lbl_1_rodata_5A0.unk_04; +// var_r28 = var_r31->unk_14C->unk_5C; +// var_r31->unk_58 = 0; +// temp_r0 = var_r31->unk_78; +// switch (temp_r0) { +// case 0: +// if ((var_r31->unk_7C == 0) && (var_r31->unk_78 == 0) && (var_r31->unk_80 == 0) +// && (var_r31->unk_30 = 0, var_r31->unk_68 = 0, ((var_r31->unk_34 == 0) != 0)) && (var_r31->unk_14 == fn_1_107B0(&sp1C)) +// && (fn_1_11060(var_r31->unk_14) == 0)) { +// var_f31 = var_r31->unk_128; +// if (var_r31->unk_14 == 0) { +// var_f31 *= -1.0f; +// } +// if (!(var_f31 > 230.0f) && (fn_1_10EA4() != 2)) { +// if (fn_1_10D24(&sp1C) != 0) { +// var_r30 = 1; +// } +// if (var_r30 != 0) { +// var_f31 = sp1C.z - var_r31->unk_130; +// if (var_f31 > 100.0f) { +// var_f31 = 100.0f; +// } +// else if (var_f31 < -100.0f) { +// var_f31 = -100.0f; +// } +// else { +// var_r31->unk_58 = 1; +// } +// } +// if ((var_r31->unk_1C & 0x200) != 0) { +// var_r31->unk_13C = 0.0f; +// var_r31->unk_138 = 0.0f; +// var_r31->unk_134 = 0.0f; +// fn_1_B4D4(var_r29, 0xA); +// var_r31->unk_78 = 1; +// var_r31->unk_88 = 0; +// var_r31->unk_30 = 1; +// if (var_r31->unk_14 != 0) { +// var_f28 = -90.0f; +// } +// else { +// var_f28 = 90.0f; +// } +// var_r31->unk_A8 = var_f28; +// var_r31->unk_AC = 0.2f; +// var_r31->unk_B0 = 0.0f; +// fn_1_D888(&var_r31->unk_128, 0.75f); +// var_f30 = 0.5f; +// var_r31->unk_124 = (2.0f * -(350.0f - lbl_1_data_E0[var_r31->unk_00])) / (0.5f * 0.5f); +// var_r31->unk_138 = 0.016666668f * (-var_r31->unk_124 * 0.5f); +// var_r31->unk_134 = 0.016666668f * (-var_r31->unk_128 / 0.75f); +// if (var_r30 != 0) { +// var_r31->unk_13C = 0.016666668f * (var_f31 / 0.5f); +// } +// var_r31->unk_60 = 1; +// var_r31->unk_58 = 0; +// return; +// } +// } +// } +// else { +// return; +// } +// break; +// case 1: +// var_r31->unk_138 = var_r31->unk_138 + (0.016666668f * (0.016666668f * var_r31->unk_124)); +// if ((var_r31->unk_14 == fn_1_10740(&sp1C)) && (fn_1_10FDC() == 0)) { +// fn_1_10B20(0.0f, &sp1C); +// if ((sp1C * var_r31->unk_128) > 0.0f) { +// sp1C.y = var_r31->unk_12C; +// PSVECSubtract(&sp1C, &var_r31->unk_128, &sp10); +// if (PSVECMag(&sp10) < 60.000004f) { +// if (frandmod(0x64) < 0x1E) { +// fn_1_10740(&sp1C); +// sp1C = sp1C * -0.5f; +// fn_1_FE8C(&sp1C, 5, var_r31->unk_14, var_r31->unk_18); +// HuAudFXPlay((&sp8)[var_r31->unk_14]); +// } +// else { +// fn_1_10740(&sp1C); +// var_f29 = frandmod(0x168); +// sp1C = sp1C + (100.0 * (2.0 * sind(var_f29))); +// sp1C.z = sp1C.z + (100.0 * (2.0 * cosd(var_f29))); +// fn_1_10130(&sp1C, var_r31->unk_14); +// fn_1_FE8C(&sp1C, 8, var_r31->unk_14, var_r31->unk_18); +// HuAudFXPlay((&sp8)[var_r31->unk_14]); +// } +// fn_1_B4D4(var_r29, 0xD); +// var_r28->unk_64 = 0; +// } +// } +// } +// if (var_r31->unk_12C <= 0.0f) { +// fn_1_D888(&var_r31->unk_128, 0.75f); +// var_r31->unk_30 = 0; +// var_r31->unk_78 = 0; +// var_r31->unk_13C = 0.0f; +// var_r31->unk_138 = 0.0f; +// var_r31->unk_134 = 0.0f; +// var_r31->unk_60 = 0; +// } +// break; +// } +// } + +// void fn_1_B194(omObjData *object) +// { +// Vec sp8; +// float var_f31; +// void *var_r31; +// void *var_r30; +// s32 var_r29; +// s32 var_r28; +// s32 var_r27; + +// for (var_r27 = 0; var_r27 < 2; var_r27++) { +// for (var_r29 = 0; var_r29 < 4; var_r29++) { +// var_r31 = lbl_1_bss_7D0[var_r29]->data; +// for (var_r28 = 0; var_r28 < 4; var_r28++) { +// if (var_r29 != var_r28) { +// var_r30 = lbl_1_bss_7D0[var_r28]->data; +// PSVECSubtract(&var_r31->unk_128, var_r30 + 0x128, &sp8); +// sp8.y = 0.0f; +// var_f31 = PSVECMag(&sp8); +// if (var_f31 < (var_r31->unk_120 + var_r30->unk_120)) { +// if (var_f31 > 0.0f) { +// var_f31 = 0.5f * ((var_r31->unk_120 + var_r30->unk_120) - var_f31); +// } +// else { +// var_f31 = 0.5f * (var_r31->unk_120 + var_r30->unk_120); +// sp8 = frandmod(0x3E8) - 0x1F4; +// sp8.z = frandmod(0x3E8) - 0x1F4; +// } +// PSVECNormalize(&sp8, &sp8); +// PSVECScale(&sp8, &sp8, var_f31); +// PSVECAdd(&var_r31->unk_128, &sp8, &var_r31->unk_128); +// PSVECSubtract(var_r30 + 0x128, &sp8, var_r30 + 0x128); +// } +// } +// } +// if (var_r31->unk_12C < 0.0f) { +// var_r31->unk_12C = 0.0f; +// } +// if ((var_r31->unk_130 - var_r31->unk_120) < -500.0f) { +// var_r31->unk_130 = -500.0f + var_r31->unk_120; +// } +// else if ((var_r31->unk_130 + var_r31->unk_120) > 500.0f) { +// var_r31->unk_130 = 500.0f - var_r31->unk_120; +// } +// if (var_r31->unk_14 == 0) { +// var_r31->unk_128 = var_r31->unk_128 * -1.0f; +// } +// if ((var_r31->unk_128 - var_r31->unk_120) < 20.0f) { +// var_r31->unk_128 = 20.0f + var_r31->unk_120; +// } +// else if ((60.000004f + var_r31->unk_128) > 800.0f) { +// var_r31->unk_128 = 740.0f; +// } +// if (var_r31->unk_14 == 0) { +// var_r31->unk_128 = var_r31->unk_128 * -1.0f; +// } +// } +// } +// } + +// void fn_1_B4D4(omObjData *object, u32 arg1) +// { +// float var_f31; +// void *var_r31; +// u32 var_r30; +// omObjData *var_r29; + +// var_r29 = object; +// var_r30 = arg1; +// var_r31 = var_r29->data; +// if ((var_r31->unk_0C != var_r30) && (var_r30 < 0x15)) { +// var_f31 = 60.0f * lbl_1_data_24C[var_r30].unk_04; +// if (var_r31->unk_0C < 0) { +// var_f31 = 0.0f; +// } +// var_r31->unk_0C = var_r30; +// if (var_r31->unk_04 < 0) { +// CharModelMotionShiftSet(var_r31->unk_00, var_r29->motion[lbl_1_data_24C[var_r30].unk_00], 60.0f * lbl_1_data_24C[var_r30].unk_08, +// var_f31, +// lbl_1_data_24C[var_r30].unk_10); +// } +// else { +// Hu3DMotionShiftSet(var_r29->model[0], var_r29->motion[lbl_1_data_24C[var_r30].unk_00], 60.0f * lbl_1_data_24C[var_r30].unk_08, var_f31, +// lbl_1_data_24C[var_r30].unk_10); +// } +// if (lbl_1_data_24C[var_r30].unk_0C >= 0.0f) { +// Hu3DMotionShiftStartEndSet(var_r29->model[0], 60.0f * lbl_1_data_24C[var_r30].unk_08, 60.0f * lbl_1_data_24C[var_r30].unk_0C); +// } +// var_r31->unk_10 = 0; +// } +// } + +// s32 fn_1_B6E0(omObjData *object) +// { +// void *var_r31; +// omObjData *var_r30; +// s32 var_r29; + +// var_r30 = object; +// var_r31 = var_r30->data; +// var_r29 = 0; +// if (var_r31->unk_04 < 0) { +// if (((CharModelMotionEndCheck(var_r31->unk_00) != 0) || (var_r31->unk_10 != 0)) && (CharModelMotionShiftIDGet(var_r31->unk_00) < 0)) { +// var_r29 = 1; +// } +// } +// else if (((Hu3DMotionEndCheck(var_r30->model[0]) != 0) || (var_r31->unk_10 != 0)) && (Hu3DMotionShiftIDGet(var_r30->model[0]) < 0)) { +// var_r29 = 1; +// } +// return var_r29; +// } + +// s32 fn_1_B7AC(omObjData *object) +// { +// void *var_r31; +// s32 var_r30; +// omObjData *var_r29; + +// var_r29 = object; +// var_r31 = var_r29->data; +// var_r30 = 0; +// if (var_r31->unk_04 < 0) { +// if (CharModelMotionShiftIDGet(var_r31->unk_00) < 0) { +// var_r30 = 1; +// } +// } +// else if (Hu3DMotionShiftIDGet(var_r29->model[0]) < 0) { +// var_r30 = 1; +// } +// return var_r30; +// } + +// s32 fn_1_B838(void *arg0, u32 arg1) +// { +// float var_f31; +// void *var_r31; +// void *var_r30; +// u32 var_r29; +// void *var_r28; +// s32 var_r27; +// s32 var_r26; + +// var_r31 = arg0; +// var_r29 = arg1; +// var_r26 = 0; +// var_r28 = var_r31->unk_5C; +// var_r27 = 0; +// if (var_r28->unk_04 < 0) { +// if (((CharModelMotionEndCheck(var_r28->unk_00) != 0) || (var_r28->unk_10 != 0)) && (CharModelMotionShiftIDGet(var_r28->unk_00) < 0)) { +// var_r27 = 1; +// } +// } +// else if (((Hu3DMotionEndCheck(*var_r31->unk_40) != 0) || (var_r28->unk_10 != 0)) && (Hu3DMotionShiftIDGet(*var_r31->unk_40) < 0)) { +// var_r27 = 1; +// } +// if (var_r27 != 0) { +// var_r30 = var_r31->unk_5C; +// if ((var_r30->unk_0C != var_r29) && (var_r29 < 0x15)) { +// var_f31 = 60.0f * lbl_1_data_24C[var_r29].unk_04; +// if (var_r30->unk_0C < 0) { +// var_f31 = 0.0f; +// } +// var_r30->unk_0C = var_r29; +// if (var_r30->unk_04 < 0) { +// CharModelMotionShiftSet(var_r30->unk_00, *(var_r31->unk_48 + (lbl_1_data_24C[var_r29].unk_00 * 2)), +// 60.0f * lbl_1_data_24C[var_r29].unk_08, var_f31, lbl_1_data_24C[var_r29].unk_10); +// } +// else { +// Hu3DMotionShiftSet(*var_r31->unk_40, *(var_r31->unk_48 + (lbl_1_data_24C[var_r29].unk_00 * 2)), +// 60.0f * lbl_1_data_24C[var_r29].unk_08, var_f31, lbl_1_data_24C[var_r29].unk_10); +// } +// if (lbl_1_data_24C[var_r29].unk_0C >= 0.0f) { +// Hu3DMotionShiftStartEndSet(*var_r31->unk_40, 60.0f * lbl_1_data_24C[var_r29].unk_08, 60.0f * lbl_1_data_24C[var_r29].unk_0C); +// } +// var_r30->unk_10 = 0; +// } +// var_r26 = 1; +// } +// return var_r26; +// } + +// s32 fn_1_BAE0(omObjData *object, u32 arg1) +// { +// float var_f31; +// omObjData *var_r31; +// void *var_r30; +// u32 var_r29; +// void *var_r28; +// s32 var_r27; +// s32 var_r26; + +// var_r31 = object; +// var_r29 = arg1; +// var_r26 = 0; +// var_r28 = var_r31->data; +// var_r27 = 0; +// if (var_r28->unk_04 < 0) { +// if (CharModelMotionShiftIDGet(var_r28->unk_00) < 0) { +// var_r27 = 1; +// } +// } +// else if (Hu3DMotionShiftIDGet(var_r31->model[0]) < 0) { +// var_r27 = 1; +// } +// if (var_r27 != 0) { +// var_r30 = var_r31->data; +// if ((var_r30->unk_0C != var_r29) && (var_r29 < 0x15)) { +// var_f31 = 60.0f * lbl_1_data_24C[var_r29].unk_04; +// if (var_r30->unk_0C < 0) { +// var_f31 = 0.0f; +// } +// var_r30->unk_0C = var_r29; +// if (var_r30->unk_04 < 0) { +// CharModelMotionShiftSet(var_r30->unk_00, var_r31->motion[lbl_1_data_24C[var_r29].unk_00], 60.0f * lbl_1_data_24C[var_r29].unk_08, +// var_f31, lbl_1_data_24C[var_r29].unk_10); +// } +// else { +// Hu3DMotionShiftSet(var_r31->model[0], var_r31->motion[lbl_1_data_24C[var_r29].unk_00], 60.0f * lbl_1_data_24C[var_r29].unk_08, +// var_f31, lbl_1_data_24C[var_r29].unk_10); +// } +// if (lbl_1_data_24C[var_r29].unk_0C >= 0.0f) { +// Hu3DMotionShiftStartEndSet(var_r31->model[0], 60.0f * lbl_1_data_24C[var_r29].unk_08, 60.0f * lbl_1_data_24C[var_r29].unk_0C); +// } +// var_r30->unk_10 = 0; +// } +// var_r26 = 1; +// } +// return var_r26; +// } + +void fn_1_BD48(omObjData *object) +{ + M433PlayerWork2 *work; + s32 var_r29; + s32 var_r28; + HsfanimStruct01 *var_r27; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433PlayerWork2), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M433PlayerWork2)); + object->model[0] = Hu3DModelCreateFile(0x400000); + Hu3DModelShadowSet(object->model[0]); + object->model[1] = Hu3DModelCreateFile(0x400004); + Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_LOOP); + object->model[2] = Hu3DModelCreateFile(0x400004); + Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_LOOP); + object->model[3] = Hu3DModelCreateFile(0x400003); + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + object->model[4] = Hu3DModelCreateFile(0x400007); + Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF); + object->model[6] = Hu3DModelCreateFile(0x400005); + Hu3DModelAttrSet(object->model[6], HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(object->model[6], 0.75f, 0.75f, 0.75f); + Hu3DModelLayerSet(object->model[6], 2); + object->model[7] = Hu3DModelCreateFile(0x400006); + Hu3DModelAttrSet(object->model[7], HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(object->model[7], 0.75f, 0.75f, 0.75f); + Hu3DModelLayerSet(object->model[7], 2); + var_r28 = Hu3DParticleCreate(HuSprAnimRead(HuDataReadNum(0x120002, 0x10000000)), 1); + object->model[8] = var_r28; + Hu3DModelLayerSet(var_r28, 2); + Hu3DParticleHookSet(var_r28, fn_1_DE28); + Hu3DModelAttrSet(var_r28, HU3D_ATTR_DISPOFF); + var_r28 = Hu3DParticleCreate(HuSprAnimReadFile(0x400009), 0xC8); + object->model[5] = var_r28; + Hu3DModelLayerSet(var_r28, 2); + Hu3DParticleHookSet(var_r28, fn_1_D6A8); + for (var_r27 = ((ParticleData *)Hu3DData[var_r28].unk_120)->unk_48, var_r29 = 0; var_r29 < 0xC8; var_r29++, var_r27++) { + var_r27->unk2C = 0.0f; + var_r27->unk40.a = 0; + var_r27->unk00_s16 = 0; + } + object->model[9] = Hu3DModelCreateFile(0x400002); + Hu3DModelScaleSet(object->model[9], 1.05f, 1.05f, 1.05f); + Hu3DModelAttrSet(object->model[9], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[9], 1); + Hu3DModelShadowSet(object->model[9]); + for (var_r29 = 1; var_r29 < 0x15; var_r29++) { + if (var_r29 == 0xA) { + object->model[var_r29 + 9] = Hu3DModelCreateFile(0x400001); + } + else { + object->model[var_r29 + 9] = Hu3DModelLink(object->model[9]); + Hu3DModelLayerSet(object->model[var_r29 + 9], 1); + } + Hu3DModelShadowSet(object->model[var_r29 + 9]); + Hu3DModelScaleSet(object->model[var_r29 + 9], 1.05f, 1.05f, 1.05f); + Hu3DModelAttrSet(object->model[var_r29 + 9], HU3D_ATTR_DISPOFF); + } + object->trans.x = work->unk_30 = 0.0f; + object->trans.y = work->unk_34 = 0.0f; + object->trans.z = work->unk_38 = 0.0f; + work->unk_B8 = 0.0f; + work->unk_BC = work->unk_C0 = 0.0f; + work->unk_C4 = 1.0f; + PSMTXIdentity(work->unk_C8); + work->unk_18 = 0; + object->func = fn_1_C240; +} + +// void fn_1_C240(omObjData *object) +// { +// s32 sp8; +// s32 temp_r4; +// void *var_r31; +// omObjData *var_r30; +// s32 var_r29; +// u16 temp_r0; + +// var_r30 = object; +// var_r31 = var_r30->data; +// sp8 = 0; +// var_r31->unk_00 = 0; +// temp_r0 = var_r31->unk_18; +// switch (temp_r0) { +// case 0: +// var_r31->unk_04 = 1; +// break; +// case 1: +// var_r31->unk_B8 = 0.0f; +// var_r31->unk_C0 = 0.0f; +// var_r31->unk_BC = 0.0f; +// var_r31->unk_C4 = 1.0f; +// PSMTXIdentity(var_r31 + 0xC8); +// var_r31->unk_00 = 1; +// break; +// case 10: +// var_r31->unk_00 = 1; +// break; +// } +// var_r31->unk_8C++; +// if (var_r31->unk_90 != 0) { +// var_r31->unk_A0 = 1.0f; +// if (var_r31->unk_94 == 2) { +// var_r31->unk_A4 = var_r31->unk_A4 + 12.000001f; +// if (var_r31->unk_A4 >= 360.0f) { +// var_r31->unk_A4 = var_r31->unk_A4 - 360.0f; +// } +// var_r31->unk_A0 = 1.5f; +// var_r31->unk_A8 = var_r31->unk_A8 + 0.015000001f; +// Hu3DMotionSpeedSet(var_r30->model->unk_06, 2.5f); +// } +// else { +// Hu3DMotionTimeSet(var_r30->model->unk_06, 0.0f); +// Hu3DMotionSpeedSet(var_r30->model->unk_06, 0.0f); +// } +// Hu3DModelRotSet(var_r30->model->unk_06, 0.0f, var_r31->unk_A4, 0.0f); +// Hu3DModelAttrReset(var_r30->model->unk_06, HU3D_ATTR_DISPOFF); +// Hu3DModelPosSet(var_r30->model->unk_06, var_r31->unk_AC, 3.0f + var_r31->unk_B0, var_r31->unk_B4); +// var_r31->unk_98++; +// var_r31->unk_90 = 0; +// } +// else if (var_r31->unk_94 != 0) { +// var_r31->unk_94 = 0; +// var_r31->unk_A0 = 0.0f; +// } +// var_r31->unk_9C = var_r31->unk_9C + (0.2f * (var_r31->unk_A0 - var_r31->unk_9C)); +// Hu3DModelScaleSet(var_r30->model->unk_06, var_r31->unk_9C, 1.0f, var_r31->unk_9C); +// if ((var_r31->unk_A0 <= 0.0f) && (var_r31->unk_9C < 0.1f)) { +// Hu3DModelAttrSet(var_r30->model->unk_06, HU3D_ATTR_DISPOFF); +// var_r31->unk_9C = 0.0f; +// } +// for (var_r29 = 0; var_r29 < 2; var_r29++) { +// temp_r4 = (var_r29 * 4) + 0x7C; +// *(var_r31 + temp_r4) = *(var_r31 + temp_r4) + (0.3f * (*(var_r31 + ((var_r29 * 4) + 0x84)) - *(var_r31 + ((var_r29 * 4) + 0x7C)))); +// if (*(var_r31 + ((var_r29 * 4) + 0x84)) > 0.0f) { +// Hu3DModelAttrReset(var_r30->model[var_r29 + 1], HU3D_ATTR_DISPOFF); +// } +// else if (*(var_r31 + ((var_r29 * 4) + 0x7C)) < 0.1f) { +// Hu3DModelAttrSet(var_r30->model[var_r29 + 1], HU3D_ATTR_DISPOFF); +// } +// Hu3DModelScaleSet(var_r30->model[var_r29 + 1], *(var_r31 + ((var_r29 * 4) + 0x7C)), 1.0f, *(var_r31 + ((var_r29 * 4) + 0x7C))); +// } +// fn_1_C6B0(var_r30); +// fn_1_CB98(var_r30); +// var_r30->trans.x = var_r31->unk_30; +// var_r30->trans.y = var_r31->unk_34; +// var_r30->trans.z = var_r31->unk_38; +// if ((fn_1_216C() >= 3) && (var_r31->unk_04 != 0) && (fn_1_2244() != 0)) { +// fn_1_DD70(var_r31 + 0x30); +// Hu3DModelAttrSet(var_r30->model->unk_00, HU3D_ATTR_DISPOFF); +// var_r30->func = fn_1_C6AC; +// } +// } + +// void fn_1_C6AC(omObjData *object) { } + +// s32 fn_1_C6B0(omObjData *object) +// { +// Vec sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// float var_f28; +// float var_f27; +// float var_f26; +// void *var_r31; +// omObjData *var_r30; +// void *var_r29; +// s32 var_r28; + +// var_r30 = object; +// var_r31 = var_r30->data; +// if ((var_r31->unk_00 == 0) && (var_r31->unk_04 == 0) && (var_r31->unk_08 == 0)) { +// if (var_r31->unk_10 == 0) { +// fn_1_CDB8(var_r31 + 0xF8, var_r31 + 0x30, var_r31 + 0x3C, var_r31->unk_6C, var_r31->unk_A8); +// fn_1_D338(var_r31 + 0xF8); +// fn_1_D180(var_r31 + 0xF8); +// var_r31->unk_B8 = var_r31->unk_A8 * (8.0f * lbl_1_data_48C[var_r31->unk_6C]); +// PSVECSubtract(var_r31 + 0x3C, var_r31 + 0x30, &sp8); +// sp8.y = 0.0f; +// if (PSVECMag(&sp8) <= 0.0f) { +// var_r31->unk_C0 = 0.0f; +// var_r31->unk_BC = 0.0f; +// var_r31->unk_C4 = 1.0f; +// } +// else { +// PSVECNormalize(&sp8, &sp8); +// var_r31->unk_BC = -sp8.z; +// var_r31->unk_C0 = 0.0f; +// var_r31->unk_C4 = sp8; +// } +// var_r31->unk_48 = 0.0f; +// var_r28 = 0; +// if (var_r31->unk_84 > 0.0f) { +// var_r28 = 1; +// } +// Hu3DModelPosSet(var_r30->model[var_r28 + 1], var_r31->unk_130, 3.0f + var_r31->unk_134, var_r31->unk_138); +// if (var_r31->unk_9C <= 0.0f) { +// var_r31->unk_8C = 9; +// } +// if (lbl_1_data_468[var_r31->unk_6C] != 0) { +// *(var_r31 + ((var_r28 * 4) + 0x84)) = 1.0f; +// } +// *(var_r31 + (((1 - var_r28) * 4) + 0x84)) = 0.0f; +// } +// var_r31->unk_10 = 1; +// if (var_r31->unk_B8 != 0.0f) { +// PSMTXRotAxisRad(&sp14[0], var_r31 + 0xBC, 0.017453292f * var_r31->unk_B8); +// PSMTXConcat(&sp14[0], var_r31 + 0xC8, var_r31 + 0xC8); +// PSMTXCopy(var_r31 + 0xC8, Hu3DData[var_r30->model->unk_00].unk_F0[0]); +// } +// var_r31->unk_48 = var_r31->unk_48 + 0.016666668f; +// var_r31->unk_08 = fn_1_D4E0(var_r31 + 0xF8, var_r31 + 0x30, var_r31 + 0x4C, var_r31->unk_48); +// if (var_r31->unk_08 != 0) { +// var_r31->unk_88 = 0.0f; +// var_r31->unk_84 = 0.0f; +// if (var_r31->unk_34 <= 12.0f) { +// var_r29 = lbl_1_bss_7C8->data; +// var_r31->unk_78 = 0; +// Hu3DModelPosSetV(var_r30->model->unk_08, var_r31 + 0x30); +// Hu3DMotionTimeSet(var_r30->model->unk_08, 0.0f); +// if ((var_r31->unk_6C == 5) || (var_r31->unk_6C == 2)) { +// Hu3DMotionSpeedSet(var_r30->model->unk_08, 1.5f); +// fn_1_D888(var_r31 + 0x30, 1.0f); +// } +// else { +// Hu3DMotionSpeedSet(var_r30->model->unk_08, 1.0f); +// fn_1_D888(var_r31 + 0x30, 0.5f); +// var_r31->unk_34 = var_r31->unk_34 + 11.0f; +// } +// var_r31->unk_6C = 0; +// var_r31->unk_04 = 1; +// var_r29->unk_2C = 1; +// var_r29->unk_38 = -1; +// var_f31 = var_r31->unk_38; +// var_f29 = fabs(var_f31); +// var_f28 = var_f29; +// if (var_f28 < 350.0) { +// var_f30 = var_r31->unk_30; +// var_f27 = fabs(var_f30); +// var_f26 = var_f27; +// if (var_f26 < 700.0) { +// var_r29->unk_38 = 0; +// if (var_r31->unk_30 >= 0.0f) { +// var_r29->unk_38 = 1; +// } +// } +// } +// } +// } +// } +// else { +// var_r31->unk_10 = 0; +// } +// return var_r31->unk_08; +// } + +// void fn_1_CB98(omObjData *object) +// { +// Vec sp14; +// Vec sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// float var_f28; +// void *var_r31; +// omObjData *var_r30; +// s32 var_r29; + +// var_r30 = object; +// var_r31 = var_r30->data; +// if (var_r31->unk_78 != 0) { +// Hu3DModelAttrSet(var_r30->model[0], HU3D_ATTR_DISPOFF); +// var_f30 = var_r31->unk_FC; +// var_f29 = var_f30; +// var_f31 = var_f29 - (0.020000001f * var_r31->unk_A8); +// if (var_f31 < 0.0f) { +// var_f31 = 0.0f; +// } +// var_f31 = (var_f30 - var_f31) / 21.0f; +// PSMTXCopy(var_r31 + 0xC8, &sp20[0]); +// var_f28 = (var_r31->unk_B8 * (1.2f * var_r31->unk_A8)) / 21.0f; +// PSMTXRotAxisRad(&sp50[0], var_r31 + 0xBC, 0.017453292f * -var_f28); +// for (var_r29 = 0; var_r29 < 0x15; var_r29++) { +// Hu3DModelAttrReset(var_r30->model[var_r29 + 9], HU3D_ATTR_DISPOFF); +// fn_1_D4E0(var_r31 + 0xF8, &sp14, &sp8, var_f30); +// Hu3DModelPosSetV(var_r30->model[var_r29 + 9], &sp14); +// PSMTXCopy(&sp20[0], Hu3DData[var_r30->model[var_r29 + 9]].unk_F0[0]); +// PSMTXConcat(&sp50[0], &sp20[0], &sp20[0]); +// var_f30 -= var_f31; +// } +// var_r31->unk_FC = var_f29; +// return; +// } +// Hu3DModelAttrReset(var_r30->model[0], HU3D_ATTR_DISPOFF); +// for (var_r29 = 0; var_r29 < 0x15; var_r29++) { +// Hu3DModelAttrSet(var_r30->model[var_r29 + 9], HU3D_ATTR_DISPOFF); +// } +// } + +// void fn_1_CDB8(float *arg0, Vec *arg1, Vec *arg2, u32 arg3, float arg8) +// { +// Vec sp18; +// float sp14; +// float sp10; +// float spC; +// float sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// float var_f28; +// double var_f27; +// double var_f26; +// float *var_r31; +// Vec *var_r30; +// Vec *var_r29; +// u32 var_r28; + +// var_r31 = arg0; +// var_r30 = arg1; +// var_r29 = arg2; +// var_r28 = arg3; +// sp8 = arg8; +// var_r31->unk_0C = 0.0f; +// var_r31->unk_08 = 0.0f; +// var_f31 = lbl_1_data_4D4[var_r28].y; +// var_r31->unk_00 = var_f31; +// if (var_r31->unk_00 <= 0.0f) { +// if (((var_r29->x * var_r30->x) < 0.0f) && (var_r30->x != 0.0f) && (lbl_1_data_4D4[var_r28].x > 0.0f)) { +// var_r31->unk_0C = lbl_1_data_4D4[var_r28].x; +// var_f28 = var_r30->x / (var_r29->x - var_r30->x); +// var_f27 = fabs(var_f28); +// var_f26 = var_f27; +// var_r31->unk_08 = var_f26; +// var_f29 = var_r30->y + (var_r31->unk_08 * (var_r29->y - var_r30->y)); +// if (var_f29 < var_r31->unk_0C) { +// spC = var_r30->x + (var_r31->unk_08 * (var_r29->x - var_r30->x)); +// sp10 = var_r31->unk_0C; +// sp14 = var_r30->z + (var_r31->unk_08 * (var_r29->z - var_r30->z)); +// PSVECSubtract(var_r29, &spC, &sp18); +// var_f30 = PSVECMag(&sp18); +// PSVECSubtract(&spC, var_r30, &sp18); +// var_f30 += PSVECMag(&sp18); +// } +// else { +// PSVECSubtract(var_r29, var_r30, &sp18); +// var_f30 = PSVECMag(&sp18); +// } +// } +// else { +// PSVECSubtract(var_r29, var_r30, &sp18); +// var_f30 = PSVECMag(&sp18); +// } +// var_f31 = var_f30 / (sp8 * lbl_1_data_4D4[var_r28].z); +// var_r31->unk_00 = var_f31; +// } +// var_r31->unk_04 = 0.0f; +// var_r31->unk_2C = var_r30->x; +// var_r31->unk_30 = var_r30->y; +// var_r31->unk_34 = var_r30->z; +// var_r31->unk_38 = var_r29->x; +// var_r31->unk_3C = var_r29->y; +// var_r31->unk_40 = var_r29->z; +// var_r31->unk_1C = var_r29->y - var_r30->y; +// var_r31->unk_24 = -980.0f; +// PSVECSubtract(var_r29, var_r30, &sp18); +// sp18.y = 0.0f; +// var_r31->unk_10 = PSVECMag(&sp18); +// var_r31->unk_18 = 0.0f; +// if (var_f31 > 0.0f) { +// var_r31->unk_20 = (var_r31->unk_1C - (0.5f * (-980.0f * (var_f31 * var_f31)))) / var_f31; +// var_r31->unk_14 = var_r31->unk_10 / var_f31; +// } +// else { +// var_r31->unk_20 = var_r31->unk_1C; +// var_r31->unk_14 = var_r31->unk_10; +// } +// var_r31->unk_28 = lbl_1_data_540[var_r28]; +// } + +// void fn_1_D180(float *arg0) +// { +// float sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// float var_f28; +// float var_f27; +// float var_f26; +// float var_f25; +// s32 var_r31; + +// if (!(arg0->unk_0C <= 0.0f)) { +// var_f31 = arg0->unk_00; +// var_f28 = arg0->unk_00; +// var_f27 = 10.0f * arg0->unk_00; +// for (var_r31 = 0; var_r31 < 0x10; var_r31++) { +// var_f30 = 1.0f / var_f31; +// sp8 = arg0->unk_10 * var_f30; +// var_f26 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * var_f31); +// var_f29 = arg0->unk_08 * var_f31; +// var_f25 = arg0->unk_30 + ((var_f29 * (0.5f * arg0->unk_24 * var_f29)) + (var_f26 * var_f29)); +// if (arg0->unk_0C > var_f25) { +// var_f28 = var_f31; +// } +// else { +// var_f27 = var_f31; +// } +// var_f31 = 0.5f * (var_f28 + var_f27); +// } +// var_f30 = 1.0f / var_f31; +// arg0->unk_00 = var_f31; +// arg0->unk_14 = arg0->unk_10 * var_f30; +// arg0->unk_20 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * var_f31); +// } +// } + +// void fn_1_D338(float *arg0) +// { +// float sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// float var_f28; +// float var_f27; +// float var_f26; +// float var_f25; +// s32 var_r31; + +// if (!(arg0->unk_0C <= 0.0f)) { +// var_f29 = arg0->unk_08 * arg0->unk_00; +// var_f30 = 1.0f / arg0->unk_00; +// var_f31 = arg0->unk_24; +// var_f28 = arg0->unk_24; +// var_f27 = arg0->unk_24 * arg0->unk_28; +// for (var_r31 = 0; var_r31 < 0x10; var_r31++) { +// sp8 = arg0->unk_10 * var_f30; +// var_f26 = (arg0->unk_1C * var_f30) - (0.5f * var_f31 * arg0->unk_00); +// var_f25 = arg0->unk_30 + ((var_f29 * (0.5f * var_f31 * var_f29)) + (var_f26 * var_f29)); +// if (arg0->unk_0C > var_f25) { +// var_f28 = var_f31; +// } +// else { +// var_f27 = var_f31; +// } +// var_f31 = 0.5f * (var_f28 + var_f27); +// } +// arg0->unk_24 = var_f31; +// arg0->unk_14 = arg0->unk_10 * var_f30; +// arg0->unk_20 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * arg0->unk_00); +// } +// } + +// s32 fn_1_D4E0(float *arg0, Vec *arg1, Vec *arg2, float arg8) +// { +// float sp20; +// float sp1C; +// float sp18; +// Vec spC; +// Vec *sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// float *var_r31; +// Vec *var_r30; + +// var_r31 = arg0; +// var_r30 = arg1; +// sp8 = arg2; +// var_f31 = arg8; +// if (var_f31 < 0.0f) { +// var_f31 = 0.0f; +// } +// if (var_f31 > var_r31->unk_00) { +// var_f31 = var_r31->unk_00; +// } +// var_r31->unk_04 = var_f31; +// if (var_r31->unk_10 > 0.0f) { +// PSVECSubtract(var_r31 + 0x38, var_r31 + 0x2C, &spC); +// spC.y = 0.0f; +// PSVECNormalize(&spC, &spC); +// } +// else { +// spC.z = 0.0f; +// spC.y = 0.0f; +// spC = 0.0f; +// } +// sp18 = var_r30->x; +// sp1C = var_r30->y; +// sp20 = var_r30->z; +// var_f30 = (var_f31 * (0.5f * var_r31->unk_18 * var_f31)) + (var_r31->unk_14 * var_f31); +// var_f29 = (var_f31 * (0.5f * var_r31->unk_24 * var_f31)) + (var_r31->unk_20 * var_f31); +// var_r30->x = var_r31->unk_2C + (spC * var_f30); +// var_r30->y = var_r31->unk_30 + var_f29; +// var_r30->z = var_r31->unk_34 + (spC.z * var_f30); +// PSVECSubtract(var_r30, &sp18, sp8); +// if (var_f31 >= var_r31->unk_00) { +// return 1; +// } +// return 0; +// } + +// void fn_1_D6A8(ModelData *model, ParticleData *particle, Mtx matrix) +// { +// HsfanimStruct01 *var_r31; +// ParticleData *var_r30; +// s32 var_r29; +// u16 temp_r0; + +// var_r30 = particle; +// for (var_r31 = var_r30->unk_48, var_r29 = 0; var_r31 < var_r30->unk_30; var_r29++, var_r31 += 0x44) { +// if (var_r31->unk00 != 0) { +// PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); +// var_r31->unk08.x *= 0.92f; +// var_r31->unk08.z *= 0.92f; +// var_r31->unk08.y += -0.27222225f; +// var_r31->unk2C += 2.0f; +// var_r31->unk40.a = var_r31->unk40.a * 0.99f; +// if (var_r31->unk00 < 24.0f) { +// var_r31->unk40.a = 0.9f * var_r31->unk40.a; +// } +// temp_r0 = var_r31->unk00 - 1; +// var_r31->unk00 = temp_r0; +// if (temp_r0 == 0) { +// var_r31->unk00 = 0; +// var_r31->unk2C = 0.0f; +// var_r31->unk40.a = 0; +// } +// } +// } +// DCStoreRange(var_r30->unk_48, var_r30->unk_30 * 0x44); +// } + +// void fn_1_D888(Vec *arg0, float arg8) +// { +// float sp10; +// float spC; +// float sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// void *var_r31; +// Vec *var_r30; +// s32 var_r29; +// u32 var_r28; + +// var_r30 = arg0; +// var_f29 = arg8; +// var_r31 = Hu3DData[lbl_1_bss_7CC->model->unk_0A].unk_120->unk_48; +// var_r28 = 3.0f + (12.0f * var_f29); +// var_r29 = 0; +// loop_4: +// if (var_r29 < 0xC8) { +// if ((var_r31->unk_00 != 0) +// || (var_r31->unk_00 = 60.0f * (0.6f + (0.0006f * frandmod(0x3E8))), var_f30 = frandmod(0x168), sp8 = sind(var_f30) / 180.0), +// spC = 0.0f, +// sp10 = cos((3.141592653589793 * var_f30), var_f31 = 0.030000001f * frandmod(0x3E8), var_r31->unk_34 = var_r30->x + (sp8 * var_f31), +// var_r31->unk_38 = 10.0f + (var_r30->y + (0.030000001f * frandmod(0x3E8))), var_r31->unk_3C = var_r30->z + (sp10 * var_f31), +// var_f31 = 0.8333334f + (0.0016666667f * frandmod(0x3E8)), var_f31 *= 1.0f + var_f29, var_r31->unk_08 = sp8 * var_f31, +// var_r31->unk_10 = sp10 * var_f31, var_r31->unk_0C = 0.50000006f + (0.0011666667f * frandmod(0x3E8)), +// var_r31->unk_0C = var_r31->unk_0C * (1.0f + var_f29), var_r31->unk_30 = frandmod(0x168), var_r31->unk_2C = 60.0f + frandmod(0x1E), +// var_r31->unk_43 = frandmod(0x64) + 0x78, var_f31 = 0.001f * frandmod(0x3E8), var_r31->unk_40 = 235.0f + (20.0f * var_f31), +// var_r31->unk_41 = 180.0f + (75.0f * var_f31), var_r31->unk_42 = 155.0f + (100.0f * var_f31), var_r28--, ((var_r28 < 1) == 0))) { +// var_r29++; +// var_r31 += 0x44; +// goto loop_4; +// } +// } +// } + +// void fn_1_DD70(Vec *arg0) +// { +// void *var_r31; +// void *var_r30; +// Vec *var_r29; + +// var_r29 = arg0; +// var_r31 = Hu3DData[lbl_1_bss_7CC->model->unk_10].unk_120; +// Hu3DModelAttrReset(lbl_1_bss_7CC->model->unk_10, HU3D_ATTR_DISPOFF); +// var_r30 = var_r31->unk_48; +// var_r31->unk_00 = 0; +// var_r31->unk_02 = 0x3C; +// var_r30->unk_2C = 100.0f; +// var_r30->unk_34 = var_r29->x; +// var_r30->unk_38 = var_r29->y; +// var_r30->unk_3C = var_r29->z; +// } + +// void fn_1_DE28(ModelData *model, ParticleData *particle, Mtx matrix) +// { +// ParticleData *var_r31; +// HsfanimStruct01 **var_r30; +// s32 var_r29; +// s8 var_r28; +// ModelData *var_r27; +// s16 temp_r0; + +// var_r27 = model; +// var_r31 = particle; +// if (var_r31->unk_00 == 0) { +// var_r31->unk_00 = 1; +// for (var_r30 = &var_r31->unk_48, var_r29 = 0; var_r30 < var_r31->unk_30; var_r29++, var_r30 += 0x44) { +// var_r30->unk_2C = 0.0f; +// } +// } +// var_r28 = 0.016666668f * (var_r31->unk_02 * 0xFF); +// for (var_r30 = var_r31->unk_48, var_r29 = 0; var_r30 < var_r31->unk_30; var_r29++, var_r30 += 0x44) { +// var_r30->unk_43 = var_r28; +// } +// temp_r0 = var_r31->unk_02 - 1; +// var_r31->unk_02 = temp_r0; +// if (temp_r0 == 0) { +// var_r27->attr |= 1; +// } +// DCStoreRange(var_r31->unk_48, var_r31->unk_30 * 0x44); +// } + +void fn_1_DF44(omObjData *var_r30) +{ + M433PlayerWork3 *var_r31; + + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433PlayerWork3), MEMORY_DEFAULT_NUM); + var_r31 = var_r30->data; + memset(var_r31, 0, sizeof(M433PlayerWork3)); + var_r31->unk_00 = 0; + var_r31->unk_04 = -1; + var_r31->unk_08 = 0; + var_r31->unk_18 = var_r31->unk_1C = 0; + var_r31->unk_2C = var_r31->unk_30 = 0; + fn_1_E5C0(var_r31->unk_4C, &var_r31->unk_64); + var_r30->func = fn_1_E11C; +} + +// void fn_1_DFE4(void *arg0) +// { +// void *var_r31; +// void *var_r30; + +// var_r30 = arg0; +// var_r31 = var_r30->unk_5C; +// OSReport("\n"); +// OSReport("uGameEvent %d\n", var_r31->unk_00); +// OSReport("sWinGrp %d\n", var_r31->unk_04); +// OSReport("uServeGrp %d\n", var_r31->unk_08); +// OSReport("uPointGrp %d\n", var_r31->unk_0C); +// OSReport("auServeCel[2] %d,%d\n", var_r31->unk_10, var_r31->unk_14); +// OSReport("auEvents[2] %d,%d\n", var_r31->unk_18, var_r31->unk_1C); +// OSReport("uContactCnt %d\n", var_r31->unk_34); +// OSReport("sGroundGrp %d\n", var_r31->unk_38); +// OSReport("uContactGrp %d\n", var_r31->unk_3C); +// OSReport("sContactCel %d\n", var_r31->unk_40); +// OSReport(lbl_1_data_63E, var_r31->unk_44); +// OSReport("\n"); +// } + +// void fn_1_E11C(omObjData *arg0) +// { +// s32 sp8; +// s32 temp_r4; +// void *var_r31; +// u32 var_r30; +// s32 var_r29; +// s32 var_r28; +// s32 var_r27; +// s16 var_r26; +// s16 var_r25; +// omObjData *var_r24; +// u32 temp_r0; +// s32 temp_r0_2; + +// var_r24 = arg0; +// var_r31 = var_r24->data; +// sp8 = 0; +// var_r28 = 0; +// var_r31->unk_28++; +// var_r31->unk_4C = var_r31->unk_20; +// var_r31->unk_58 = var_r31->unk_24; +// if (fn_1_216C() >= 2) { +// fn_1_ECFC(var_r31 + 0x4C, var_r31 + 0x64); +// } +// temp_r0 = var_r31->unk_00; +// switch (temp_r0) { +// case 0: +// var_r31->unk_34 = 0; +// var_r31->unk_40 = -1; +// if (var_r31->unk_28 == 0xC) { +// fn_1_58D8(1); +// } +// if ((var_r31->unk_28 >= 30.0f) && (fn_1_216C() >= 2)) { +// var_r31->unk_00 = 1; +// var_r31->unk_28 = 0; +// var_r31->unk_1C = 1; +// var_r31->unk_18 = 1; +// } +// break; +// case 1: +// if (var_r31->unk_30 != 0) { +// var_r31->unk_48 = 0; +// var_r31->unk_40 = -1; +// var_r31->unk_34 = 0; +// var_r31->unk_00 = 2; +// var_r31->unk_28 = 0; +// var_r31->unk_1C = 3; +// var_r31->unk_18 = 3; +// if (var_r31->unk_44 != 0) { +// var_r26 = 5; +// } +// else { +// var_r26 = 6; +// } +// fn_1_58D8(var_r26); +// } +// break; +// case 2: +// case 5: +// if (var_r31->unk_30 != 0) { +// if (var_r31->unk_34 != 0) { +// var_r31->unk_48++; +// var_r31->unk_00 = 3; +// *(var_r31 + ((var_r31->unk_3C * 4) + 0x18)) = 4; +// if ((var_r31->unk_48 >= 6) && ((var_r31->unk_48 % 3) == 0)) { +// fn_1_58D8(3); +// } +// } +// var_r31->unk_28 = 0; +// } +// var_r28 = 1; +// break; +// case 3: +// case 4: +// if (var_r31->unk_30 != 0) { +// if (var_r31->unk_3C == var_r31->unk_44) { +// var_r31->unk_00 = 4; +// *(var_r31 + ((var_r31->unk_3C * 4) + 0x18)) = 5; +// } +// else { +// var_r31->unk_40 = -1; +// var_r31->unk_34 = 0; +// var_r31->unk_00 = 5; +// *(var_r31 + ((var_r31->unk_3C * 4) + 0x18)) = 3; +// if (var_r31->unk_44 != 0) { +// var_r25 = 5; +// } +// else { +// var_r25 = 6; +// } +// fn_1_58D8(var_r25); +// } +// var_r31->unk_28 = 0; +// } +// var_r28 = 1; +// break; +// case 6: +// if (var_r31->unk_28 >= 120.0f) { +// var_r31->unk_00 = 0; +// var_r31->unk_28 = 0; +// var_r31->unk_1C = 0; +// var_r31->unk_18 = 0; +// } +// break; +// } +// if ((var_r31->unk_2C != 0) && (var_r28 != 0)) { +// if (var_r31->unk_38 >= 0) { +// var_r30 = 1 - var_r31->unk_38; +// fn_1_58D8(1); +// } +// else { +// var_r30 = 1 - var_r31->unk_3C; +// fn_1_58D8(2); +// } +// var_r31->unk_0C = var_r30; +// temp_r4 = (var_r30 * 4) + 0x20; +// *(var_r31 + temp_r4) = *(var_r31 + temp_r4) + 1; +// if (var_r31->unk_08 != var_r30) { +// var_r31->unk_08 = var_r30; +// *(var_r31 + ((var_r31->unk_08 * 4) + 0x10)) = 1 - *(var_r31 + ((var_r31->unk_08 * 4) + 0x10)); +// } +// if (*(var_r31 + ((var_r30 * 4) + 0x20)) >= 5) { +// var_r31->unk_04 = var_r30; +// var_r31->unk_00 = 7; +// var_r31->unk_1C = 7; +// var_r31->unk_18 = 7; +// var_r27 = 0; +// for (var_r29 = 0; var_r29 < 4; var_r29++) { +// spC[var_r29] = -1; +// if (var_r31->unk_04 == lbl_1_bss_7D0[var_r29]->data->unk_14) { +// temp_r0_2 = var_r27; +// var_r27++; +// spC[temp_r0_2] = lbl_1_bss_7D0[var_r29]->work[0]; +// } +// } +// fn_1_219C(1, spC[0], sp10); +// fn_1_21E4(4); +// } +// else { +// var_r31->unk_00 = 6; +// var_r31->unk_1C = 6; +// var_r31->unk_18 = 6; +// fn_1_FE64(var_r31 + 0x64, var_r31->unk_20, var_r31->unk_24, var_r30); +// HuAudFXPlay(0x16); +// } +// var_r31->unk_28 = 0; +// } +// var_r31->unk_2C = 0; +// var_r31->unk_30 = 0; +// } + +void fn_1_E5C0(M433PlayerWork3SubStruct *var_r30, M433PlayerWork3SubStruct2 *var_r29) +{ + u32 var_r31; + s32 var_r28; + s32 var_r27; + + for (var_r28 = 0; var_r28 < 2; var_r28++, var_r30++) { + for (var_r31 = 0; var_r31 < 5; var_r31++) { + switch (lbl_1_data_674[var_r31]) { + case 0: + var_r30->unk_02[var_r31] = espEntry(lbl_1_data_680[var_r28], 1, 0); + espPriSet(var_r30->unk_02[var_r31], 0x100); + break; + case 1: + var_r30->unk_02[var_r31] = espEntry(0x610020, 1, 0); + espPriSet(var_r30->unk_02[var_r31], 0x101); + espColorSet(var_r30->unk_02[var_r31], 0, 0, 0); + espTPLvlSet(var_r30->unk_02[var_r31], 0.5); + break; + case 2: + var_r30->unk_02[var_r31] = espEntry(0x40000A, 1, 0); + espPriSet(var_r30->unk_02[var_r31], 0xFF); + break; + case 3: + var_r30->unk_02[var_r31] = espEntry(0x610033, 1, 0); + espPriSet(var_r30->unk_02[var_r31], 0xFF); + break; + } + espDispOff(var_r30->unk_02[var_r31]); + espDrawNoSet(var_r30->unk_02[var_r31], 0); + espAttrSet(var_r30->unk_02[var_r31], HUSPR_ATTR_NOANIM); + espAttrSet(var_r30->unk_02[var_r31], HUSPR_ATTR_LINEAR); + espPosSet(var_r30->unk_02[var_r31], lbl_1_data_6B0[var_r28].x + lbl_1_data_688[var_r31].x, + lbl_1_data_6B0[var_r28].y + lbl_1_data_688[var_r31].y); + } + } + HuDataDirClose(0x610000); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + for (var_r31 = 0; var_r31 < 0x14; var_r31++) { + for (var_r27 = 0; var_r27 < 2; var_r27++) { + // if (*(&lbl_1_data_6C0[var_r31 % 10] + (var_r27 * 4)) != 0) { + // *(var_r29 + ((var_r28 * 0x140) + (var_r31 * 0x10) + (var_r27 * 4) + 0xD0)) + // = espEntry(*(&lbl_1_data_6C0[var_r31 % 10] + (var_r27 * 4)), 2, 0); + // espAttrSet(*(var_r29 + ((var_r28 * 0x140) + (var_r31 * 0x10) + (var_r27 * 4) + 0xD0)), HUSPR_ATTR_LINEAR); + // espDispOff(*(var_r29 + ((var_r28 * 0x140) + (var_r31 * 0x10) + (var_r27 * 4) + 0xD0))); + // } + // else { + // *(var_r29 + ((var_r28 * 0x140) + (var_r31 * 0x10) + (var_r27 * 4) + 0xD0)) = -1; + // } + } + } + } + for (var_r27 = 0; var_r27 < 2; var_r27++) { + // if ((lbl_1_data_6C0 + (var_r27 * 4))->unk_A0 != 0) { + // var_r29->unk_490[var_r27] = espEntry((lbl_1_data_6C0 + (var_r27 * 4))->unk_A0, 2, 0); + // espAttrSet(var_r29->unk_490[var_r27], HUSPR_ATTR_LINEAR); + // espDispOff(var_r29->unk_490[var_r27]); + // } + // else { + // var_r29->unk_490[var_r27] = -1; + // } + } + for (var_r28 = 0; var_r28 < 2; var_r28++) { + // *(var_r29 + ((var_r28 * 0x2C) + 0x20)) = -1; + // *(var_r29 + ((var_r28 * 0x2C) + 0x22)) = -1; + } + var_r29->unk_78 = -1; + var_r29->unk_7A = -1; + var_r29->unk_A4 = -1; + var_r29->unk_A6 = -1; + HuDataDirClose(lbl_1_data_6C0->unk_00); +} + +// void fn_1_EA8C(void *arg0) +// { +// double var_f31; +// double var_f30; +// void *var_r31; +// s32 var_r30; + +// var_r31 = arg0; +// for (var_r30 = 0; var_r30 < 2; var_r30++) { +// if (*(var_r31 + (var_r30 * 2)) >= 0) { +// espDispOn(*(var_r31 + (var_r30 * 2))); +// var_f31 = (*(var_r31 + ((var_r30 * 4) + 4)) * var_r31->unk_1C) * cosd(var_r31->unk_28); +// var_f31 = var_f31; +// var_f30 = (*(var_r31 + ((var_r30 * 4) + 4)) * var_r31->unk_1C) * sind(var_r31->unk_28); +// var_f30 = var_f30; +// espPosSet(*(var_r31 + (var_r30 * 2)), var_r31->unk_0C + var_f31, var_r31->unk_10 + var_f30); +// espZRotSet(*(var_r31 + (var_r30 * 2)), var_r31->unk_28); +// espScaleSet(*(var_r31 + (var_r30 * 2)), var_r31->unk_1C, var_r31->unk_20); +// espTPLvlSet(*(var_r31 + (var_r30 * 2)), var_r31->unk_24); +// } +// } +// } + +// void fn_1_EBE4(s32 arg0, void *arg1, s32 arg2) +// { +// s32 var_r31; +// u32 var_r30; + +// var_r31 = arg2 % 10; +// var_r30 = arg2 / 10; +// if (var_r30 == 0) { +// arg1->unk_00 = *(arg0 + (var_r31 * 0x10)); +// arg1->unk_02 = -1; +// arg1->unk_04 = 0.0f; +// } +// else { +// arg1->unk_00 = *(arg0 + ((var_r30 + 0xA) * 0x10)); +// arg1->unk_02 = *(arg0 + (var_r31 * 0x10)); +// arg1->unk_04 = -23.039999f; +// arg1->unk_08 = 23.039999f; +// } +// arg1->unk_10 = 0.0f; +// arg1->unk_0C = 0.0f; +// arg1->unk_18 = 0.0f; +// arg1->unk_14 = 0.0f; +// arg1->unk_20 = 1.5f; +// arg1->unk_1C = 1.5f; +// arg1->unk_24 = 1.0f; +// arg1->unk_28 = 0.0f; +// } + +// void fn_1_ECFC(void *arg0, void *arg1) +// { +// s32 sp1C; +// u32 sp18; +// s32 sp14; +// u32 sp10; +// s32 spC; +// s32 sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// float var_f28; +// double var_f27; +// double var_f26; +// double var_f25; +// double var_f24; +// double var_f23; +// double var_f22; +// double var_f21; +// double var_f20; +// void *var_r31; +// void *var_r30; +// void *var_r29; +// s32 var_r28; +// s32 var_r27; +// s32 var_r26; +// s32 var_r25; +// s32 var_r24; +// void *var_r23; +// s32 var_r22; +// u32 var_r21; +// s32 var_r20; +// s32 var_r19; +// u32 var_r18; +// s32 var_r17; +// s32 temp_r0; + +// var_r23 = arg0; +// var_r31 = arg1; +// var_r28 = 0; +// loop_5: +// if (var_r28 < 2) { +// for (var_r22 = 0; var_r22 < 5; var_r22++) { +// espDispOn(*(var_r23 + ((var_r22 * 2) + 2))); +// } +// espBankSet(var_r23->unk_08, var_r23->unk_00 / 10); +// espBankSet(var_r23->unk_0A, var_r23->unk_00 % 10); +// var_r28++; +// var_r23 += 0xC; +// goto loop_5; +// } +// var_f28 = 2.88f; +// if (var_r31->unk_1C == 0) { +// var_r30 = var_r31 + 0x20; +// } +// else { +// var_r30 = var_r31 + 0x4C; +// var_f28 = 2.88f * -1.0f; +// } +// temp_r0 = var_r31->unk_00; +// switch (temp_r0) { +// case 1: +// var_r19 = var_r31->unk_0C; +// var_r20 = var_r31->unk_0C % 10; +// var_r21 = var_r31->unk_0C / 10; +// if (var_r21 == 0) { +// var_r31->unk_20 = (var_r31 + (var_r20 * 0x10))->unk_D0; +// var_r31->unk_22 = -1; +// var_r31->unk_24 = 0.0f; +// } +// else { +// var_r31->unk_20 = (var_r31 + ((var_r21 + 0xA) * 0x10))->unk_D0; +// var_r31->unk_22 = (var_r31 + (var_r20 * 0x10))->unk_D0; +// var_r31->unk_24 = -23.039999f; +// var_r31->unk_28 = 23.039999f; +// } +// var_r31->unk_30 = 0.0f; +// var_r31->unk_2C = 0.0f; +// var_r31->unk_38 = 0.0f; +// var_r31->unk_34 = 0.0f; +// var_r31->unk_40 = 1.5f; +// var_r31->unk_3C = 1.5f; +// var_r31->unk_44 = 1.0f; +// var_r31->unk_48 = 0.0f; +// sp1C = var_r31->unk_10; +// var_r17 = sp1C % 10; +// var_r18 = sp1C / 10; +// if (var_r18 == 0) { +// var_r31->unk_4C = (var_r31 + (var_r17 * 0x10))->unk_210; +// var_r31->unk_4E = -1; +// var_r31->unk_50 = 0.0f; +// } +// else { +// var_r31->unk_4C = (var_r31 + ((var_r18 + 0xA) * 0x10))->unk_210; +// var_r31->unk_4E = (var_r31 + (var_r17 * 0x10))->unk_210; +// var_r31->unk_50 = -23.039999f; +// var_r31->unk_54 = 23.039999f; +// } +// var_r31->unk_5C = 0.0f; +// var_r31->unk_58 = 0.0f; +// var_r31->unk_64 = 0.0f; +// var_r31->unk_60 = 0.0f; +// var_r31->unk_6C = 1.5f; +// var_r31->unk_68 = 1.5f; +// var_r31->unk_70 = 1.0f; +// var_r31->unk_74 = 0.0f; +// sp14 = 0; +// sp18 = 0; +// if (sp18 == 0) { +// var_r31->unk_78 = (var_r31 + (sp14 * 0x10))->unk_490; +// var_r31->unk_7A = -1; +// var_r31->unk_7C = 0.0f; +// } +// else { +// var_r31->unk_78 = (var_r31 + ((sp18 + 0xA) * 0x10))->unk_490; +// var_r31->unk_7A = (var_r31 + (sp14 * 0x10))->unk_490; +// var_r31->unk_7C = -23.039999f; +// var_r31->unk_80 = 23.039999f; +// } +// var_r31->unk_88 = 0.0f; +// var_r31->unk_84 = 0.0f; +// var_r31->unk_90 = 0.0f; +// var_r31->unk_8C = 0.0f; +// var_r31->unk_98 = 1.5f; +// var_r31->unk_94 = 1.5f; +// var_r31->unk_9C = 1.0f; +// var_r31->unk_A0 = 0.0f; +// sp8 = *(var_r31 + ((var_r31->unk_1C * 4) + 0x14)); +// spC = sp8 % 10; +// sp10 = sp8 / 10; +// if (sp10 == 0) { +// var_r31->unk_A4 = (var_r31 + (spC * 0x10))->unk_350; +// var_r31->unk_A6 = -1; +// var_r31->unk_A8 = 0.0f; +// } +// else { +// var_r31->unk_A4 = (var_r31 + ((sp10 + 0xA) * 0x10))->unk_350; +// var_r31->unk_A6 = (var_r31 + (spC * 0x10))->unk_350; +// var_r31->unk_A8 = -23.039999f; +// var_r31->unk_AC = 23.039999f; +// } +// var_r31->unk_B4 = 0.0f; +// var_r31->unk_B0 = 0.0f; +// var_r31->unk_BC = 0.0f; +// var_r31->unk_B8 = 0.0f; +// var_r31->unk_C4 = 1.5f; +// var_r31->unk_C0 = 1.5f; +// var_r31->unk_C8 = 1.0f; +// var_r31->unk_CC = 0.0f; +// var_f30 = -48.0f; +// var_r31->unk_2C = 172.8f; +// var_r31->unk_30 = 360.0f - -48.0f; +// var_r31->unk_58 = 403.19998f; +// var_r31->unk_5C = 360.0f - -48.0f; +// var_r31->unk_84 = 288.0f; +// var_r31->unk_88 = 360.0f - -48.0f; +// var_r31->unk_9C = 0.0f; +// var_r31->unk_70 = 0.0f; +// var_r31->unk_44 = 0.0f; +// var_f30 = -48.0f / 19.199999f; +// var_r31->unk_38 = var_f30; +// var_r31->unk_64 = var_f30; +// var_r31->unk_90 = var_f30; +// var_r31->unk_B0 = 806.39996f; +// var_r31->unk_B4 = 144.0f; +// var_r31->unk_C0 = var_r31->unk_C0 + 0.5f; +// var_r31->unk_C4 = var_r31->unk_C4 - 0.5f; +// var_r31->unk_B8 = (403.19998f - var_r31->unk_B0) / 24.0f; +// var_r31->unk_BC = (360.0f - var_r31->unk_B4) / 24.0f; +// if (var_r31->unk_1C == 0) { +// var_r31->unk_B0 = -230.40001f; +// var_r31->unk_B8 = var_r31->unk_B8 * -1.0f; +// } +// var_r31->unk_00++; +// var_r31->unk_04 = 0; +// break; +// case 2: +// var_f31 = var_r31->unk_44; +// var_f31 += 0.055555556f; +// if (var_f31 > 0.95f) { +// var_f31 = 1.0f; +// } +// var_r31->unk_9C = var_f31; +// var_r31->unk_70 = var_f31; +// var_r31->unk_44 = var_f31; +// var_r31->unk_30 = var_r31->unk_30 + var_r31->unk_38; +// var_r31->unk_5C = var_r31->unk_5C + var_r31->unk_64; +// var_r31->unk_88 = var_r31->unk_88 + var_r31->unk_90; +// var_r31->unk_B0 = var_r31->unk_B0 + var_r31->unk_B8; +// var_r31->unk_B4 = var_r31->unk_B4 + var_r31->unk_BC; +// if (var_r31->unk_04 >= 19.199999f) { +// var_r30->unk_14 = var_f28; +// var_r30->unk_18 = -16.0f; +// var_r31->unk_00++; +// var_r31->unk_08 = 0; +// } +// break; +// case 3: +// if (var_r31->unk_04 <= 24.0f) { +// var_r31->unk_B0 = var_r31->unk_B0 + var_r31->unk_B8; +// var_r31->unk_B4 = var_r31->unk_B4 + var_r31->unk_BC; +// } +// if (var_r31->unk_08 < 24.0f) { +// var_r31->unk_08++; +// var_f31 = 33.75f * var_r31->unk_08; +// var_f29 = 0.041666668f * var_r31->unk_08; +// var_f29 = 0.5f * (1.0f - (var_f29 * var_f29)); +// if (var_r31->unk_08 == 24.0f) { +// var_f29 = 0.0f; +// } +// var_r31->unk_C0 = 1.5 + (var_f29 * cosd(var_f31)); +// var_r31->unk_C4 = 1.5 + (var_f29 * sind((var_f31 - 90.0f))); +// } +// var_r30->unk_1C = var_r31->unk_C4; +// var_r30->unk_20 = var_r31->unk_C0; +// var_r30->unk_0C = var_r30->unk_0C + var_r30->unk_14; +// var_r30->unk_10 = var_r30->unk_10 + var_r30->unk_18; +// var_r30->unk_18 = var_r30->unk_18 + 0.80000013f; +// var_r30->unk_28 = var_r30->unk_28 + 8.333334f; +// var_r30->unk_24 = var_r30->unk_24 - 0.017833335f; +// if (var_r30->unk_24 < 0.0f) { +// var_r30->unk_24 = 0.0f; +// } +// if (fn_1_10EA4() == 0) { +// var_r31->unk_00++; +// var_r31->unk_04 = 0; +// } +// break; +// case 4: +// var_f31 = var_r31->unk_C8; +// var_f31 -= 0.055555556f; +// if (var_f31 < 0.05f) { +// var_f31 = 0.0f; +// var_r31->unk_00++; +// var_r31->unk_04 = 0; +// } +// var_r31->unk_C8 = var_f31; +// var_r31->unk_9C = var_f31; +// var_r31->unk_70 = var_f31; +// var_r31->unk_44 = var_f31; +// break; +// default: +// for (var_r28 = 0; var_r28 < 2; var_r28++) { +// *(var_r31 + ((var_r28 * 0x2C) + 0x20)) = -1; +// *(var_r31 + ((var_r28 * 0x2C) + 0x22)) = -1; +// } +// var_r31->unk_78 = -1; +// var_r31->unk_7A = -1; +// var_r31->unk_A4 = -1; +// var_r31->unk_A6 = -1; +// var_r31->unk_00 = 0; +// break; +// } +// for (var_r28 = 0; var_r28 < 3; var_r28++) { +// var_r29 = (var_r28 * 0x140) + 0xD0; +// var_r29 += var_r31; +// var_r22 = 0; +// loop_60: +// if (var_r22 < 0x14) { +// if (var_r29->unk_00 >= 0) { +// espDispOff(var_r29->unk_00); +// } +// if (var_r29->unk_04 >= 0) { +// espDispOff(var_r29->unk_04); +// } +// var_r22++; +// var_r29 += 0x10; +// goto loop_60; +// } +// } +// var_r29 = var_r31 + 0x490; +// if (var_r29->unk_00 >= 0) { +// espDispOff(var_r29->unk_00); +// } +// if (var_r29->unk_04 >= 0) { +// espDispOff(var_r29->unk_04); +// } +// for (var_r27 = 0; var_r27 < 2; var_r27++) { +// if ((var_r31 + (var_r27 * 2))->unk_20 >= 0) { +// espDispOn((var_r31 + (var_r27 * 2))->unk_20); +// var_f26 = ((var_r31 + (var_r27 * 4))->unk_24 * var_r31->unk_3C) * cosd(var_r31->unk_48); +// var_f26 = var_f26; +// var_f27 = ((var_r31 + (var_r27 * 4))->unk_24 * var_r31->unk_3C) * sind(var_r31->unk_48); +// var_f27 = var_f27; +// espPosSet((var_r31 + (var_r27 * 2))->unk_20, var_r31->unk_2C + var_f26, var_r31->unk_30 + var_f27); +// espZRotSet((var_r31 + (var_r27 * 2))->unk_20, var_r31->unk_48); +// espScaleSet((var_r31 + (var_r27 * 2))->unk_20, var_r31->unk_3C, var_r31->unk_40); +// espTPLvlSet((var_r31 + (var_r27 * 2))->unk_20, var_r31->unk_44); +// } +// } +// for (var_r26 = 0; var_r26 < 2; var_r26++) { +// if ((var_r31 + (var_r26 * 2))->unk_4C >= 0) { +// espDispOn((var_r31 + (var_r26 * 2))->unk_4C); +// var_f24 = ((var_r31 + (var_r26 * 4))->unk_50 * var_r31->unk_68) * cosd(var_r31->unk_74); +// var_f24 = var_f24; +// var_f25 = ((var_r31 + (var_r26 * 4))->unk_50 * var_r31->unk_68) * sind(var_r31->unk_74); +// var_f25 = var_f25; +// espPosSet((var_r31 + (var_r26 * 2))->unk_4C, var_r31->unk_58 + var_f24, var_r31->unk_5C + var_f25); +// espZRotSet((var_r31 + (var_r26 * 2))->unk_4C, var_r31->unk_74); +// espScaleSet((var_r31 + (var_r26 * 2))->unk_4C, var_r31->unk_68, var_r31->unk_6C); +// espTPLvlSet((var_r31 + (var_r26 * 2))->unk_4C, var_r31->unk_70); +// } +// } +// for (var_r25 = 0; var_r25 < 2; var_r25++) { +// if ((var_r31 + (var_r25 * 2))->unk_78 >= 0) { +// espDispOn((var_r31 + (var_r25 * 2))->unk_78); +// var_f22 = ((var_r31 + (var_r25 * 4))->unk_7C * var_r31->unk_94) * cosd(var_r31->unk_A0); +// var_f22 = var_f22; +// var_f23 = ((var_r31 + (var_r25 * 4))->unk_7C * var_r31->unk_94) * sind(var_r31->unk_A0); +// var_f23 = var_f23; +// espPosSet((var_r31 + (var_r25 * 2))->unk_78, var_r31->unk_84 + var_f22, var_r31->unk_88 + var_f23); +// espZRotSet((var_r31 + (var_r25 * 2))->unk_78, var_r31->unk_A0); +// espScaleSet((var_r31 + (var_r25 * 2))->unk_78, var_r31->unk_94, var_r31->unk_98); +// espTPLvlSet((var_r31 + (var_r25 * 2))->unk_78, var_r31->unk_9C); +// } +// } +// for (var_r24 = 0; var_r24 < 2; var_r24++) { +// if ((var_r31 + (var_r24 * 2))->unk_A4 >= 0) { +// espDispOn((var_r31 + (var_r24 * 2))->unk_A4); +// var_f20 = ((var_r31 + (var_r24 * 4))->unk_A8 * var_r31->unk_C0) * cosd(var_r31->unk_CC); +// var_f20 = var_f20; +// var_f21 = ((var_r31 + (var_r24 * 4))->unk_A8 * var_r31->unk_C0) * sind(var_r31->unk_CC); +// var_f21 = var_f21; +// espPosSet((var_r31 + (var_r24 * 2))->unk_A4, var_r31->unk_B0 + var_f20, var_r31->unk_B4 + var_f21); +// espZRotSet((var_r31 + (var_r24 * 2))->unk_A4, var_r31->unk_CC); +// espScaleSet((var_r31 + (var_r24 * 2))->unk_A4, var_r31->unk_C0, var_r31->unk_C4); +// espTPLvlSet((var_r31 + (var_r24 * 2))->unk_A4, var_r31->unk_C8); +// } +// } +// var_r31->unk_04++; +// } + +// void fn_1_FE64(void *arg0, s32 arg1, s32 arg2, u32 arg3) +// { +// arg0->unk_00 = 1; +// arg0->unk_0C = arg0->unk_14; +// arg0->unk_10 = arg0->unk_18; +// arg0->unk_14 = arg1; +// arg0->unk_18 = arg2; +// arg0->unk_1C = arg3; +// } + +// void fn_1_FE8C(Vec *arg0, u32 arg1, u32 arg2, s32 arg3) +// { +// void *var_r31; +// void *var_r30; +// u32 var_r29; +// s32 var_r28; +// u32 var_r27; +// s32 var_r26; +// Vec *var_r25; + +// var_r25 = arg0; +// var_r29 = arg1; +// var_r27 = arg2; +// var_r26 = arg3; +// var_r31 = lbl_1_bss_7CC->data; +// var_r31->unk_18 = 0; +// if (var_r29 < 9) { +// var_r31->unk_18 = lbl_1_data_770[var_r29]; +// if (lbl_1_data_794[var_r29].unk_00 != 0) { +// var_r30 = lbl_1_bss_7C8->data; +// var_r30->unk_30 = 1; +// var_r30->unk_3C = var_r27; +// var_r30->unk_40 = var_r26; +// var_r30->unk_44 = var_r27; +// if (lbl_1_data_794[var_r29].unk_04 != 0) { +// var_r30->unk_44 = 1 - var_r30->unk_44; +// } +// if (lbl_1_data_794[var_r29].unk_08 != 0) { +// var_r30->unk_34++; +// } +// } +// } +// if (var_r29 == 5) { +// var_r28 = 6; +// if (var_r31->unk_6C == 5) { +// var_r28 = 7; +// } +// Hu3DModelPosSetV(lbl_1_bss_7CC->model[var_r28], var_r31 + 0x30); +// Hu3DModelAttrReset(lbl_1_bss_7CC->model[var_r28], HU3D_ATTR_DISPOFF); +// Hu3DMotionTimeSet(lbl_1_bss_7CC->model[var_r28], 0.0f); +// Hu3DMotionShapeTimeSet(lbl_1_bss_7CC->model[var_r28], 0.0f); +// } +// else if (var_r29 != 2) { +// var_r31->unk_A8 = 1.0f; +// } +// var_r31->unk_0C = 1; +// var_r31->unk_10 = 0; +// var_r31->unk_04 = 0; +// var_r31->unk_08 = 0; +// var_r31->unk_6C = var_r29; +// var_r31->unk_70 = var_r27; +// var_r31->unk_74 = var_r26; +// if (lbl_1_data_800[var_r29] != 0) { +// var_r31->unk_78 = lbl_1_data_800[var_r29]; +// } +// else if (var_r31->unk_78 != 0) { +// var_r31->unk_78--; +// } +// var_r31->unk_3C = var_r25->x; +// var_r31->unk_40 = var_r25->y; +// var_r31->unk_44 = var_r25->z; +// if (var_r29 == 0) { +// var_r31->unk_30 = var_r31->unk_3C; +// var_r31->unk_34 = var_r31->unk_40; +// var_r31->unk_38 = var_r31->unk_44; +// } +// var_r31->unk_F8 = 1.0f; +// var_r31->unk_F8 = 0.0f; +// } + +// void fn_1_10130(Vec *arg0, u32 arg1) +// { +// float var_f31; + +// var_f31 = 44.0f; +// if ((arg0->z - 44.0f) < -500.0f) { +// arg0->z = -500.0f + 44.0f; +// } +// else if ((arg0->z + 44.0f) > 500.0f) { +// arg0->z = 500.0f - 44.0f; +// } +// if (arg1 == 0) { +// arg0->x *= -1.0f; +// } +// if ((arg0->x - 44.0f) < 20.0f) { +// arg0->x = 20.0f + 44.0f; +// } +// else if ((arg0->x + 44.0f) > 800.0f) { +// arg0->x = 800.0f - 44.0f; +// } +// if (arg1 == 0) { +// arg0->x *= -1.0f; +// } +// } + +// void fn_1_10260(u32 arg0, s32 arg1, Vec *arg2, float arg8, float arg9) +// { +// s32 sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// void *var_r31; +// u32 var_r30; +// Vec *var_r29; + +// var_f29 = arg8; +// var_f30 = arg9; +// var_r30 = arg0; +// sp8 = arg1; +// var_r29 = arg2; +// var_r31 = lbl_1_bss_7CC->data; +// if (var_f30 > 1.0f) { +// var_f30 = 1.0f; +// } +// if (var_r31->unk_94 == 0) { +// var_r31->unk_AC = 465.0f; +// var_r31->unk_B0 = 11.0f; +// var_r31->unk_B4 = 0.0f; +// if (var_r30 != 0) { +// var_r31->unk_AC = var_r31->unk_AC * -1.0f; +// } +// var_r31->unk_94 = 1; +// var_r31->unk_98 = 0; +// var_r31->unk_A4 = 0.0f; +// var_r31->unk_8C = 0; +// var_r31->unk_A8 = 1.0f; +// } +// if (sp8 != 0) { +// var_r31->unk_94 = 2; +// var_f30 *= 1.5f; +// } +// var_r31->unk_90 = 1; +// var_r31->unk_AC = var_r31->unk_AC + (0.01666666753590107 * (800.0 * (var_f30 * sind(var_f29)))); +// var_r31->unk_B4 = var_r31->unk_B4 + (0.01666666753590107 * (800.0 * (var_f30 * cosd(var_f29)))); +// if (var_r30 != 0) { +// var_r31->unk_AC = var_r31->unk_AC * -1.0f; +// } +// if (var_r31->unk_AC < 230.0f) { +// var_r31->unk_AC = 230.0f; +// } +// if (var_r30 != 0) { +// var_r31->unk_AC = var_r31->unk_AC * -1.0f; +// } +// var_f31 = 44.0f; +// if ((var_r31->unk_B4 - 44.0f) < -500.0f) { +// var_r31->unk_B4 = -500.0f + 44.0f; +// } +// else if ((var_r31->unk_B4 + 44.0f) > 500.0f) { +// var_r31->unk_B4 = 500.0f - 44.0f; +// } +// if ((1 - var_r30) == 0) { +// var_r31->unk_AC = var_r31->unk_AC * -1.0f; +// } +// if ((var_r31->unk_AC - 44.0f) < 20.0f) { +// var_r31->unk_AC = 20.0f + 44.0f; +// } +// else if ((var_r31->unk_AC + 44.0f) > 800.0f) { +// var_r31->unk_AC = 800.0f - 44.0f; +// } +// if ((1 - var_r30) == 0) { +// var_r31->unk_AC = var_r31->unk_AC * -1.0f; +// } +// var_r29->x = var_r31->unk_AC; +// var_r29->y = var_r31->unk_B0; +// var_r29->z = var_r31->unk_B4; +// } + +// s32 fn_1_10614(Vec *arg0) +// { +// float var_f31; +// double var_f30; +// double var_f29; +// void *var_r31; + +// var_r31 = lbl_1_bss_7CC->data; +// arg0->z = 0.0f; +// arg0->y = 0.0f; +// arg0->x = 0.0f; +// if (var_r31->unk_94 == 0) { +// return 0; +// } +// arg0->x = var_r31->unk_AC; +// arg0->y = var_r31->unk_B0; +// arg0->z = var_r31->unk_B4; +// var_f31 = arg0->x; +// var_f30 = fabs(var_f31); +// var_f29 = var_f30; +// arg0->x = var_f29; +// arg0->x -= 465.0f; +// arg0->x *= 0.004255319f; +// arg0->z *= 0.0028571428f; +// return 1; +// } + +// void fn_1_1070C(void) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7CC->data; +// var_r31->unk_A8 = 1.0f; +// } + +// u32 fn_1_10740(Vec *arg0) +// { +// void *var_r31; +// u32 var_r30; + +// var_r31 = lbl_1_bss_7CC->data; +// arg0->x = var_r31->unk_3C; +// arg0->y = var_r31->unk_40; +// arg0->z = var_r31->unk_44; +// if (var_r31->unk_3C >= 0.0f) { +// var_r30 = 1; +// } +// else { +// var_r30 = 0; +// } +// return var_r30; +// } + +// u32 fn_1_107B0(Vec *arg0) +// { +// void *var_r31; +// u32 var_r30; + +// var_r31 = lbl_1_bss_7CC->data; +// if (var_r31->unk_94 != 0) { +// arg0->x = var_r31->unk_AC; +// arg0->y = var_r31->unk_B0; +// arg0->z = var_r31->unk_B4; +// } +// else { +// arg0->x = var_r31->unk_3C; +// arg0->y = var_r31->unk_40; +// arg0->z = var_r31->unk_44; +// } +// if (arg0->x >= 0.0f) { +// var_r30 = 1; +// } +// else { +// var_r30 = 0; +// } +// return var_r30; +// } + +// float fn_1_10848(void) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7CC->data; +// return var_r31->unk_F8 - var_r31->unk_FC; +// } + +// float fn_1_10878(void) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7CC->data; +// if (var_r31->unk_94 != 0) { +// return 1.5f; +// } +// return var_r31->unk_F8 - var_r31->unk_FC; +// } + +// u32 fn_1_108C4(void) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7CC->data; +// if (var_r31->unk_94 != 0) { +// return var_r31->unk_98; +// } +// return 0x2710; +// } + +// u32 fn_1_10900(void) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7CC->data; +// return var_r31->unk_8C; +// } + +// float fn_1_10928(float arg8) +// { +// float sp8; +// double var_f31; +// float var_f30; +// float var_f29; +// float var_f28; +// float var_f27; +// float var_f26; +// void *var_r31; +// void *var_r30; + +// var_r30 = lbl_1_bss_7CC->data; +// var_r31 = var_r30 + 0xF8; +// var_f28 = 1.0f / var_r31->unk_24; +// var_f30 = -var_r31->unk_20 * var_f28; +// var_f26 = var_r31->unk_30 + ((var_f30 * (0.5f * var_r31->unk_24 * var_f30)) + (var_r31->unk_20 * var_f30)); +// if (arg8 > var_f26) { +// return -1.0f; +// } +// var_f29 = (var_r31->unk_20 * var_r31->unk_20) - (2.0f * var_r31->unk_24 * (var_r31->unk_30 - arg8)); +// if (var_f29 > 0.0f) { +// var_f31 = __frsqrte(var_f29); +// var_f31 = 0.5 * var_f31 * (3.0 - (var_f29 * (var_f31 * var_f31))); +// var_f31 = 0.5 * var_f31 * (3.0 - (var_f29 * (var_f31 * var_f31))); +// var_f31 = 0.5 * var_f31 * (3.0 - (var_f29 * (var_f31 * var_f31))); +// sp8 = var_f29 * var_f31; +// var_f27 = sp8; +// } +// else { +// var_f27 = var_f29; +// } +// var_f30 = var_f28 * (-var_r31->unk_20 - var_f27); +// var_f30 -= var_r31->unk_04; +// return var_f30; +// } + +// float fn_1_10B20(float arg8, Vec *arg0) +// { +// Vec sp20; +// Vec sp14; +// float sp10; +// float spC; +// float sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// float var_f28; +// float var_f27; +// void *var_r31; +// Vec *var_r30; +// void *var_r29; + +// var_f27 = arg8; +// var_r30 = arg0; +// var_r29 = lbl_1_bss_7CC->data; +// var_r31 = var_r29 + 0xF8; +// var_f30 = var_r31->unk_04; +// var_f31 = var_f30 + var_f27; +// if (var_f31 < 0.0f) { +// var_f31 = 0.0f; +// } +// if (var_f31 > var_r31->unk_00) { +// var_f31 = var_r31->unk_00; +// } +// var_r31->unk_04 = var_f31; +// if (var_r31->unk_10 > 0.0f) { +// PSVECSubtract(var_r31 + 0x38, var_r31 + 0x2C, &sp14); +// sp14.y = 0.0f; +// PSVECNormalize(&sp14, &sp14); +// } +// else { +// sp14.z = 0.0f; +// sp14.y = 0.0f; +// sp14 = 0.0f; +// } +// sp8 = var_r30->x; +// spC = var_r30->y; +// sp10 = var_r30->z; +// var_f29 = (var_f31 * (0.5f * var_r31->unk_18 * var_f31)) + (var_r31->unk_14 * var_f31); +// var_f28 = (var_f31 * (0.5f * var_r31->unk_24 * var_f31)) + (var_r31->unk_20 * var_f31); +// var_r30->x = var_r31->unk_2C + (sp14 * var_f29); +// var_r30->y = var_r31->unk_30 + var_f28; +// var_r30->z = var_r31->unk_34 + (sp14.z * var_f29); +// PSVECSubtract(var_r30, &sp8, &sp20); +// var_r31->unk_04 = var_f30; +// return var_f30 + var_f27; +// } + +// s32 fn_1_10D24(Vec *arg0) +// { +// Vec sp18; +// s32 sp14; +// s32 sp10; +// float spC; +// Vec *sp8; +// float var_f31; +// float var_f30; +// double var_f29; +// double var_f28; +// void *var_r31; +// void *var_r30; + +// sp8 = arg0; +// var_r31 = lbl_1_bss_7CC->data; +// var_r30 = lbl_1_bss_7CC->data; +// if (var_r30->unk_94 != 0) { +// spC = var_r30->unk_AC; +// sp10 = var_r30->unk_B0; +// sp14 = var_r30->unk_B4; +// } +// else { +// spC = var_r30->unk_3C; +// sp10 = var_r30->unk_40; +// sp14 = var_r30->unk_44; +// } +// PSVECSubtract(&spC, var_r31 + 0x30, &sp18); +// if ((spC * var_r31->unk_30) >= 0.0f) { +// return 0; +// } +// if ((var_r31->unk_30 == 0.0f) || (sp18 == 0.0f)) { +// return 0; +// } +// var_f30 = var_r31->unk_30 / sp18; +// var_f29 = fabs(var_f30); +// var_f28 = var_f29; +// var_f31 = var_f28; +// PSVECScale(&sp18, &sp18, var_f31); +// PSVECAdd(var_r31 + 0x30, &sp18, sp8); +// return 1; +// } + +// u32 fn_1_10EA4(void) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7C8->data; +// return *var_r31; +// } + +// u32 fn_1_10ECC(u32 arg0) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7C8->data; +// return *(var_r31 + (((arg0 & 1) * 4) + 0x18)); +// } + +// s32 fn_1_10F00(u32 arg0) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7C8->data; +// return (arg0 & 1) == var_r31->unk_08; +// } + +// u32 fn_1_10F38(u32 arg0) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7C8->data; +// return *(var_r31 + (((arg0 & 1) * 4) + 0x10)); +// } + +// s32 fn_1_10F6C(u32 arg0) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7C8->data; +// return (arg0 & 1) == var_r31->unk_0C; +// } + +// s32 fn_1_10FA4(s32 arg0) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7C8->data; +// return (arg0 & 1) == var_r31->unk_04; +// } + +// u32 fn_1_10FDC(void) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7C8->data; +// return var_r31->unk_34; +// } + +// s32 fn_1_11004(u32 arg0, s32 arg1) +// { +// void *var_r31; +// s32 var_r30; + +// var_r31 = lbl_1_bss_7C8->data; +// var_r30 = 0; +// if ((var_r31->unk_3C == (arg0 & 1)) && (var_r31->unk_40 == (arg1 & 1))) { +// var_r30 = 1; +// } +// return var_r30 == 0; +// } + +// s32 fn_1_11060(u32 arg0) +// { +// void *var_r31; + +// var_r31 = lbl_1_bss_7C8->data; +// return (arg0 & 1) == var_r31->unk_3C; +// } + +// float fn_1_11098(Vec *arg0, Vec *arg1, Vec *arg2) +// { +// Vec sp10; +// Vec *spC; +// Vec *sp8; +// float var_f31; +// float var_f30; +// Vec *var_r31; + +// sp8 = arg0; +// spC = arg1; +// var_r31 = arg2; +// PSVECSubtract(spC, sp8, &sp10); +// var_f31 = PSVECDotProduct(&sp10, var_r31); +// var_f30 = -PSVECSquareMag(var_r31); +// if (var_f30 != 0.0f) { +// var_f31 /= var_f30; +// } +// return var_f31; +// } + +// float fn_1_11130(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3) +// { +// float sp3C; +// float sp38; +// float sp34; +// Vec sp28; +// Vec sp1C; +// Vec sp10; +// Vec *spC; +// Vec *sp8; +// float var_f31; +// float var_f30; +// float var_f29; +// float var_f28; +// Vec *var_r31; +// Vec *var_r30; + +// var_r31 = arg0; +// sp8 = arg1; +// var_r30 = arg2; +// spC = arg3; +// PSVECSubtract(sp8, var_r31, &sp28); +// PSVECSubtract(spC, var_r30, &sp1C); +// PSVECSubtract(&sp28, &sp1C, &sp28); +// if (PSVECMag(&sp28) <= 0.0f) { +// sp34 = var_r31->x; +// sp38 = var_r31->y; +// sp3C = var_r31->z; +// } +// else { +// PSVECSubtract(var_r31, var_r30, &sp10); +// var_f30 = PSVECDotProduct(&sp10, &sp28); +// var_f29 = -PSVECSquareMag(&sp28); +// if (var_f29 != 0.0f) { +// var_f30 /= var_f29; +// } +// var_f28 = var_f30; +// var_f31 = var_f28; +// if (var_f31 < 0.0f) { +// var_f31 = 0.0f; +// } +// else if (var_f31 > 1.0f) { +// var_f31 = 1.0f; +// } +// PSVECScale(&sp28, &sp1C, var_f31); +// PSVECAdd(var_r31, &sp1C, &sp34); +// } +// PSVECSubtract(var_r30, &sp34, &sp28); +// return (bitwise s32)PSVECMag(&sp28); +// } diff --git a/src/REL/m434Dll/player.c b/src/REL/m434Dll/player.c index c2dd1f93..e08b307e 100644 --- a/src/REL/m434Dll/player.c +++ b/src/REL/m434Dll/player.c @@ -1,6 +1,7 @@ #include "game/audio.h" #include "game/chrman.h" #include "game/hsfman.h" +#include "game/hsfdraw.h" #include "game/hsfmotion.h" #include "game/object.h" #include "game/objsub.h" From ac43740d3dfb471b95b4d6a30259c3da29fd2a32 Mon Sep 17 00:00:00 2001 From: mrshigure Date: Tue, 14 Jan 2025 15:57:30 -0800 Subject: [PATCH 22/24] Matched msmse (US) (#531) --- configure.py | 2 +- include/game/msm.h | 4 +- include/msm/msmse.h | 2 +- src/msm/msmse.c | 171 +++++++++++++++++++++++++++++++++++++++----- 4 files changed, 157 insertions(+), 22 deletions(-) diff --git a/configure.py b/configure.py index e6026c86..9115554a 100644 --- a/configure.py +++ b/configure.py @@ -842,7 +842,7 @@ config.libs = [ Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmmem.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmfio.c"), Object(NonMatching, "msm/msmmus.c"), - Object(NonMatching, "msm/msmse.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmse.c"), Object(NonMatching, "msm/msmstream.c"), ], }, diff --git a/include/game/msm.h b/include/game/msm.h index 030dd77c..6a11b94a 100644 --- a/include/game/msm.h +++ b/include/game/msm.h @@ -12,6 +12,7 @@ #define MSM_SEPARAM_AUXVOLA (1 << 4) #define MSM_SEPARAM_AUXVOLB (1 << 5) #define MSM_SEPARAM_POS (1 << 6) +#define MSM_SEPARAM_PAD (1 << 7) #define MSM_LISTENER_NONE 0 #define MSM_LISTENER_STARTDIS (1 << 0) @@ -50,6 +51,7 @@ #define MSM_ERR_64 -100 #define MSM_ERR_65 -101 #define MSM_ERR_GRP_NOTLOADED -103 +#define MSM_ERR_6E -110 #define MSM_ERR_6F -111 #define MSM_ERR_INVALIDID -120 #define MSM_ERR_INVALIDFILE -121 @@ -138,7 +140,7 @@ typedef struct msmSe_s { u8 span; u8 reverb; u8 chorus; - u8 doppler; + s8 doppler; s8 comp; u8 pad[3]; } MSMSE; diff --git a/include/msm/msmse.h b/include/msm/msmse.h index e017f67e..383a3ebb 100644 --- a/include/msm/msmse.h +++ b/include/msm/msmse.h @@ -19,7 +19,7 @@ s32 msmSeSetParam(int seNo, MSM_SEPARAM* param); void msmSePauseAll(BOOL pause, s32 speed); void msmSeStopAll(BOOL checkGrp, s32 speed); s32 msmSeStop(int seNo, s32 speed); -int msmSePlay(int seId, MSM_SEPARAM *param); +int msmSePlay(int seId, MSM_SEPARAM* param); s32 msmSeInit(sysData* arg0, DVDFileInfo* arg1); #endif diff --git a/src/msm/msmse.c b/src/msm/msmse.c index 6582a572..33c906ab 100755 --- a/src/msm/msmse.c +++ b/src/msm/msmse.c @@ -326,15 +326,14 @@ void msmSeSetMasterVolume(s32 arg0) { s32 msmSeSetParam(int seNo, MSM_SEPARAM* param) { msmSeStruct00* var_r31; - s32 temp_r3; - s32 var_r0; + int temp_r3; s32 var_r4; var_r31 = msmSeGetStatus_inline(seNo); if (var_r31 == NULL) { return MSM_ERR_6F; } - if (param->flag & 1) { + if (param->flag & MSM_SEPARAM_VOL) { var_r31->unk0B = 1; var_r31->unk0C = param->vol; if (!(var_r31->unk13 & 1) || var_r31->unkB4 != 1) { @@ -343,19 +342,18 @@ s32 msmSeSetParam(int seNo, MSM_SEPARAM* param) { var_r31->unk0B = 0; } if (!(var_r31->unk13 & 1)) { - if (param->flag & 2) { + if (param->flag & MSM_SEPARAM_PAN) { var_r31->unk0D = param->pan; - temp_r3 = var_r31->unk0D + var_r31->unk31 - 0x40; // TODO: inline? - var_r0 = temp_r3; + temp_r3 = var_r31->unk0D + var_r31->unk31 - 0x40; if (temp_r3 < 0) { - var_r0 = 0; + temp_r3 = 0; } - if (var_r0 > 0x7F) { - var_r0 = 0x7F; + if (temp_r3 > 0x7F) { + temp_r3 = 0x7F; } - sndFXPanning(var_r31->unk00, var_r0); + sndFXPanning(var_r31->unk00, temp_r3); } - if (param->flag & 4) { + if (param->flag & MSM_SEPARAM_PITCH) { var_r31->unk0E = param->pitch; var_r4 = var_r31->unk0E + var_r31->unk32 + 0x2000; if (var_r4 < 0) { @@ -366,13 +364,13 @@ s32 msmSeSetParam(int seNo, MSM_SEPARAM* param) { } sndFXPitchBend(var_r31->unk00, var_r4); } - if (param->flag & 8) { + if (param->flag & MSM_SEPARAM_SPAN) { var_r31->unk10 = param->span; sndFXSurroundPanning(var_r31->unk00, var_r31->unk10); } } else if (var_r31->unkB4 == 1) { var_r31->unk00 = sndEmitterVoiceID(&var_r31->unk4C); - if (param->flag & 0x40) { + if (param->flag & MSM_SEPARAM_POS) { var_r31->unk0B = 1; var_r31->unkA8.x = param->pos.x - var_r31->unk9C.x; var_r31->unkA8.y = param->pos.y - var_r31->unk9C.y; @@ -384,15 +382,15 @@ s32 msmSeSetParam(int seNo, MSM_SEPARAM* param) { var_r31->unk0B = 0; } } - if (param->flag & 0x10) { + if (param->flag & MSM_SEPARAM_AUXVOLA) { var_r31->unk11 = param->auxAVol; sndFXReverb(var_r31->unk00, var_r31->unk11); } - if (param->flag & 0x20) { + if (param->flag & MSM_SEPARAM_AUXVOLB) { var_r31->unk12 = param->auxBVol; sndFXChorus(var_r31->unk00, var_r31->unk12); } - if (param->flag & 0x80) { + if (param->flag & MSM_SEPARAM_PAD) { sndSendMessage(var_r31->unk00, param->pad); } return 0; @@ -465,7 +463,6 @@ s32 msmSeStop(int seNo, s32 speed) { return MSM_ERR_6F; } var_r31->unk0B = 1; - // TODO: this pattern could be an inline. var_r31->unk34 = speed / 15; if (var_r31->unk34 != 0) { var_r31->unk38 = var_r31->unk34; @@ -482,8 +479,144 @@ s32 msmSeStop(int seNo, s32 speed) { return 0; } -// TODO: https://decomp.me/scratch/uhYSL -// msmSePlay +static inline BOOL msmSeInline00(msmSeStruct02* arg0, msmSeStruct00* arg1, MSM_SEPARAM* param) { + BOOL var_r0 = FALSE; + + if (param != NULL) { + if (param->flag & MSM_SEPARAM_VOL) { + arg1->unk0C = param->vol; + } + if (param->flag & MSM_SEPARAM_PAN) { + arg1->unk0D = param->pan; + } + if (param->flag & MSM_SEPARAM_PITCH) { + arg1->unk0E = param->pitch; + } + if (param->flag & MSM_SEPARAM_SPAN) { + arg1->unk10 = param->span; + } + if (param->flag & MSM_SEPARAM_AUXVOLA) { + arg1->unk11 = param->auxAVol; + } + if (param->flag & MSM_SEPARAM_AUXVOLB) { + arg1->unk12 = param->auxBVol; + } + if ((param->flag & MSM_SEPARAM_POS) && arg0->unkDA != 0) { + var_r0 = TRUE; + } + } + arg1->unk14.paraArray = arg1->unk1C; + return var_r0; +} + +int msmSePlay(int seId, MSM_SEPARAM* param) { + msmSeStruct00* var_r30; + SND_EMITTER* var_r29; + msmSeStruct02* se_ptr = &se; + MSMSE* temp_r9; + int var_r3_2; + s32 var_r4; + s32 var_r6; + s32 var_r6_2; + + if (seId < 0 || seId >= se.unk00) { + return MSM_ERR_INVALIDID; + } + temp_r9 = &se.unk0C[seId]; + if (temp_r9->groupId == 0xFFFF) { + return MSM_ERR_REMOVEDID; + } + for (var_r6 = 0; var_r6 < se.unk04; var_r6++) { + var_r30 = &se.unk10[var_r6]; + if (var_r30->unk0A == 0) { + break; + } + } + if (var_r6 == se.unk04) { + return MSM_ERR_6E; + } + var_r30->unk30 = temp_r9->vol; + var_r30->unk31 = temp_r9->pan; + var_r30->unk32 = temp_r9->pitchBend; + var_r30->unk0C = 0x7F; + var_r30->unk0D = 0x40; + var_r30->unk10 = temp_r9->span; + var_r30->unk0E = 0; + var_r30->unk11 = temp_r9->reverb; + var_r30->unk12 = temp_r9->chorus; + var_r30->unk40 = 0; + var_r30->unk34 = 0; + var_r30->unk48 = 0x7F; + var_r30->unk3C = 0x7F; + var_r30->unkB4 = 0; + if (msmSeInline00(se_ptr, var_r30, param)) { + var_r30->unk9C.x = param->pos.x; + var_r30->unk9C.y = param->pos.y; + var_r30->unk9C.z = param->pos.z; + var_r30->unk1C[0].ctrl = SND_MIDICTRL_REVERB; + var_r30->unk1C[0].paraData.value7 = var_r30->unk11; + var_r30->unk1C[1].ctrl = SND_MIDICTRL_CHORUS; + var_r30->unk1C[1].paraData.value7 = var_r30->unk12; + var_r30->unk14.numPara = 2; + var_r30->unkA8.x = var_r30->unkA8.y = var_r30->unkA8.z = 0.0f; + if (temp_r9->doppler == 1) { + var_r29 = &var_r30->unk4C; + var_r6_2 = 9; + } else { + var_r29 = NULL; + var_r6_2 = 8; + } + var_r30->unkB4 = temp_r9->doppler; + var_r30->unk00 = sndAddEmitterParaEx(var_r29, &var_r30->unk9C, &var_r30->unkA8, se_ptr->unkD4, temp_r9->comp / 127.0f, var_r6_2, temp_r9->fxId, se_ptr->unkD8++, var_r30->unk0C * var_r30->unk30 / 127, 0, NULL, &var_r30->unk14); + if (var_r29 != NULL) { + if (!sndCheckEmitter(var_r29)) { + return MSM_ERR_PLAYFAIL; + } + } else { + if (var_r30->unk00 == -1) { + return MSM_ERR_PLAYFAIL; + } + } + var_r30->unk13 |= 1; + } else { + var_r30->unk1C[0].ctrl = SND_MIDICTRL_VOLUME; + var_r30->unk1C[0].paraData.value14 = (var_r30->unk0C * var_r30->unk30 / 127) * 0x81; + var_r4 = var_r30->unk0D + var_r30->unk31 - 0x40; + if (var_r4 < 0) { + var_r4 = 0; + } + if (var_r4 > 0x7F) { + var_r4 = 0x7F; + } + var_r30->unk1C[1].ctrl = SND_MIDICTRL_PANNING; + var_r30->unk1C[1].paraData.value14 = var_r4 * 0x81; + var_r30->unk1C[2].ctrl = SND_MIDICTRL_REVERB; + var_r30->unk1C[2].paraData.value7 = var_r30->unk11; + var_r30->unk1C[3].ctrl = SND_MIDICTRL_CHORUS; + var_r30->unk1C[3].paraData.value7 = var_r30->unk12; + var_r3_2 = var_r30->unk0E + var_r30->unk32 + 0x2000; + if (var_r3_2 > 0x3FFF) { + var_r3_2 = 0x3FFF; + } else if (var_r3_2 < 0) { + var_r3_2 = 0; + } + var_r30->unk1C[4].ctrl = SND_MIDICTRL_PITCHBEND; + var_r30->unk1C[4].paraData.value14 = var_r3_2; + var_r30->unk14.numPara = 5; + var_r30->unk00 = sndFXStartParaInfo(temp_r9->fxId, 0xFF, 0xFF, 0, &var_r30->unk14); + if (var_r30->unk00 == -1) { + return MSM_ERR_PLAYFAIL; + } + sndFXSurroundPanning(var_r30->unk00, var_r30->unk10); + var_r30->unk13 &= ~1; + } + var_r30->unk0B = 1; + var_r30->unk08 = seId; + var_r30->unk04 = se_ptr->unk08++; + var_r30->unk0A = 2; + var_r30->unk0B = 0; + return var_r30->unk04; +} s32 msmSeInit(sysData* arg0, DVDFileInfo* arg1) { s32 temp_r29; From 897ff7b281fddd45459eefd6d3d38e36b9a5d9bd Mon Sep 17 00:00:00 2001 From: mrshigure Date: Wed, 15 Jan 2025 05:49:34 -0800 Subject: [PATCH 23/24] Fully matched msm (US) (#532) --- configure.py | 4 +- include/game/msm.h | 1 + include/msm/msmmus.h | 2 - include/msm/msmse.h | 2 - include/msm/msmstream.h | 16 +- include/msm/msmsys.h | 21 +- src/msm/msmmem.c | 3 - src/msm/msmmus.c | 144 +++++- src/msm/msmse.c | 55 +- src/msm/msmstream.c | 1057 +++++++++++++++++++++++++++++++++++++++ src/msm/msmsys.c | 2 - 11 files changed, 1252 insertions(+), 55 deletions(-) create mode 100755 src/msm/msmstream.c diff --git a/configure.py b/configure.py index 9115554a..83d74200 100644 --- a/configure.py +++ b/configure.py @@ -841,9 +841,9 @@ config.libs = [ Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmsys.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmmem.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmfio.c"), - Object(NonMatching, "msm/msmmus.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmmus.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmse.c"), - Object(NonMatching, "msm/msmstream.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "msm/msmstream.c"), ], }, { diff --git a/include/game/msm.h b/include/game/msm.h index 6a11b94a..e7ae2ae2 100644 --- a/include/game/msm.h +++ b/include/game/msm.h @@ -58,6 +58,7 @@ #define MSM_ERR_REMOVEDID -122 #define MSM_ERR_MUSGRP_NOTLOADED -123 #define MSM_ERR_OUTOFMUS -130 +#define MSM_ERR_8C -140 #define MSM_VOL_MAX 127 #define MSM_PAN_LEFT 32 diff --git a/include/msm/msmmus.h b/include/msm/msmmus.h index a6951063..6428b067 100644 --- a/include/msm/msmmus.h +++ b/include/msm/msmmus.h @@ -4,8 +4,6 @@ #include "game/msm.h" #include "msm/msmsys.h" -#include "dolphin.h" - void msmMusFdoutEnd(void); void msmMusPeriodicProc(void); s32 msmMusGetMidiCtrl(int musNo, s32 channel, s32 ctrl); diff --git a/include/msm/msmse.h b/include/msm/msmse.h index 383a3ebb..feb1e462 100644 --- a/include/msm/msmse.h +++ b/include/msm/msmse.h @@ -4,8 +4,6 @@ #include "game/msm.h" #include "msm/msmsys.h" -#include "dolphin.h" - void msmSePeriodicProc(void); MSMSE* msmSeGetIndexPtr(s32 arg0); void msmSeDelListener(void); diff --git a/include/msm/msmstream.h b/include/msm/msmstream.h index d1818803..fb1bd9cd 100644 --- a/include/msm/msmstream.h +++ b/include/msm/msmstream.h @@ -1,12 +1,22 @@ #ifndef MSMSTREAM_H #define MSMSTREAM_H -#include "dolphin/types.h" +#include "game/msm.h" +s32 msmStreamGetStatus(int streamNo); +void msmStreamSetMasterVolume(s32 arg0); +void msmStreamStopAll(s32 speed); +s32 msmStreamStop(int streamNo, s32 speed); +int msmStreamPlay(int streamId, MSM_STREAMPARAM* streamParam); void msmStreamPeriodicProc(void); -void msmStreamSetOutputMode(s32); +void msmStreamSetOutputMode(s32 arg0); void msmStreamAmemFree(void); s32 msmStreamAmemAlloc(void); -s32 msmStreamInit(char *); +s32 msmStreamInit(char* arg0); +void msmStreamPauseOff(s32 arg0); +void msmStreamPauseOn(s32 streamNo, s32 arg1); +s32 msmStreamPackStartStereo(s32 arg0, MSM_STREAMPARAM* arg1, s32 arg2); +s32 msmStreamPackStartMono(s32 arg0, MSM_STREAMPARAM* arg1, s32 arg2); +void msmStreamSlotOff(s32 streamNo); #endif diff --git a/include/msm/msmsys.h b/include/msm/msmsys.h index ffd86bae..3ed5e134 100755 --- a/include/msm/msmsys.h +++ b/include/msm/msmsys.h @@ -1,7 +1,7 @@ #ifndef MSMSYS_H #define MSMSYS_H -#include "musyx/musyx.h" +#include "game/msm.h" // TODO remove, only for decomp #include "dolphin.h" @@ -167,4 +167,23 @@ typedef struct _sysData { s32 unk4F8; } sysData; +s32 msmSysSearchGroupStack(s32 arg0, s32 arg1); +s32 msmSysGroupInit(DVDFileInfo *arg0); +void msmSysIrqDisable(void); +void msmSysIrqEnable(void); +BOOL msmSysCheckBaseGroup(s32 arg0); +void *msmSysGetGroupDataPtr(s32 arg0); +BOOL msmSysCheckLoadGroupID(s32 arg0); +void msmSysRegularProc(void); +s32 msmSysGetOutputMode(void); +s32 msmSysSetOutputMode(SND_OUTPUTMODE mode); +s32 msmSysSetAux(s32 arg0, s32 arg1); +s32 msmSysGetSampSize(BOOL baseGrp); +s32 msmSysDelGroupAll(void); +s32 msmSysDelGroupBase(s32 grpNum); +s32 msmSysLoadGroupBase(s32 arg0, void *arg1); +s32 msmSysLoadGroupSet(s32 arg0, void *arg1); +void msmSysCheckInit(void); +s32 msmSysInit(MSM_INIT *init, MSM_ARAM *aram); + #endif diff --git a/src/msm/msmmem.c b/src/msm/msmmem.c index e8d52a88..cbe6e2be 100644 --- a/src/msm/msmmem.c +++ b/src/msm/msmmem.c @@ -54,15 +54,12 @@ void msmMemFree(void* arg0) { } void* msmMemAlloc(u32 arg0) { - unkMemStruct* memC; s32 temp_r0; u32 var_r5; u32 var_r7; unkStruct* temp_r5; unkStruct* var_r8; unkStruct* temp_r9; - unkStruct* temp_r6; - unkStruct* temp_r4; var_r7 = arg0 + 0x20; temp_r0 = var_r7 & 0x1F; diff --git a/src/msm/msmmus.c b/src/msm/msmmus.c index 8f87e7a5..3b70662d 100755 --- a/src/msm/msmmus.c +++ b/src/msm/msmmus.c @@ -1,4 +1,5 @@ #include "msm/msmmus.h" +#include "msm/msmmem.h" typedef struct { /* 0x00 */ s16 unk00; @@ -51,6 +52,11 @@ typedef struct { /* 0x01C */ char unk70[0x108]; } msmMusStruct02; // Size 0x178 +typedef struct { + /* 0x00 */ char unk00[0xC]; + /* 0x0C */ s32 unk0C; +} UnkGroupDataPtr; // Size unknown + static msmMusStruct02 mus; static void msmMusPauseSub(msmMusStruct00* arg0, BOOL pause, s32 speed) { @@ -199,13 +205,11 @@ s32 msmMusGetMidiCtrl(int musNo, s32 channel, s32 ctrl) { } s32 msmMusGetNumPlay(BOOL baseGrp) { - msmMusStruct02* mus_ptr = &mus; - switch (baseGrp) { case FALSE: - return mus_ptr->unk03 + mus_ptr->unk04; + return mus.unk03 + mus.unk04; default: - return mus_ptr->unk03; + return mus.unk03; } } @@ -227,7 +231,7 @@ s32 msmMusSetParam(s32 arg0, MSM_MUSPARAM* arg1) { return MSM_ERR_OUTOFMUS; } temp_r31 = &mus.unk18[arg0]; - if (arg1->flag & 2) { + if (arg1->flag & MSM_MUSPARAM_VOL) { temp_r31->unk2C = arg1->fadeSpeed / 15; if (temp_r31->unk2C != 0) { temp_r31->unk05 = 1; @@ -240,7 +244,7 @@ s32 msmMusSetParam(s32 arg0, MSM_MUSPARAM* arg1) { sndSeqVolume(temp_r31->unk02 * temp_r31->unk03 * temp_r31->unk1C * temp_r31->unk28 / 2048383, 0, temp_r31->unk08, 0); } } - if (arg1->flag & 0x10) { + if (arg1->flag & MSM_MUSPARAM_SPEED) { sndSeqSpeed(temp_r31->unk08, (arg1->speed << 8) / 100); } return 0; @@ -335,8 +339,128 @@ s32 msmMusStop(int musNo, s32 speed) { return 0; } -// TODO: https://decomp.me/scratch/PGpbJ -// msmMusPlay +int msmMusPlay(int musId, MSM_MUSPARAM* musParam) { + s32 var_r30; + int var_r29; + s32 temp_r3_3; + UnkGroupDataPtr* temp_r3_2; + msmMusStruct01* temp_r28; + msmMusStruct00* temp_r27; + DVDFileInfo sp10; -// TODO: https://decomp.me/scratch/24daZ -// msmMusInit + if (musId < 0 || musId >= mus.unk00) { + return MSM_ERR_INVALIDID; + } + temp_r28 = &mus.unk0C[musId]; + if (temp_r28->unk00 == 0xFFFF) { + return MSM_ERR_REMOVEDID; + } + if (msmSysCheckLoadGroupID(temp_r28->unk00) == 0) { + return MSM_ERR_GRP_NOTLOADED; + } + var_r30 = (musParam != NULL) ? musParam->flag : 0; + var_r29 = (var_r30 & MSM_MUSPARAM_CHAN) ? musParam->chan : 0; + if (var_r29 < 0 || var_r29 >= mus.unk02) { + return MSM_ERR_OUTOFMUS; + } + temp_r27 = &mus.unk18[var_r29]; + if (temp_r27->unk04 != 0) { + sndSeqStop(temp_r27->unk08); + } + if (temp_r28->unk0C < 0) { + if (temp_r27->unk00 != musId) { + if (msmFioOpen(mus.unk08, &sp10) != 1) { + return MSM_ERR_OPENFAIL; + } + if (msmFioRead(&sp10, temp_r27->unk0C, temp_r28->unk08, temp_r28->unk04 + mus.unk10) < 0) { + msmFioClose(&sp10); + return MSM_ERR_READFAIL; + } + msmFioClose(&sp10); + temp_r27->unk10 = temp_r27->unk0C; + } + } else { + temp_r3_2 = msmSysGetGroupDataPtr(temp_r28->unk0C); + if (temp_r3_2 == NULL) { + return MSM_ERR_MUSGRP_NOTLOADED; + } + temp_r27->unk10 = (void*) ((u32) temp_r3_2 + temp_r3_2->unk0C + temp_r28->unk04); + } + temp_r27->unk05 = 1; + temp_r27->unk03 = temp_r28->unk0D; + temp_r27->unk2C = 0; + temp_r27->unk20 = 0; + temp_r27->unk14 = 0; + temp_r27->unk28 = 0x7F; + temp_r27->unk1C = 0x7F; + temp_r27->unk38.flags = 4; + temp_r27->unk38.volume.time = 0; + temp_r27->unk02 = (var_r30 & MSM_MUSPARAM_VOL) ? musParam->vol : 0x7F; + temp_r27->unk38.volume.target = temp_r27->unk03 * temp_r27->unk1C * temp_r27->unk02 / 16129; + if (var_r30 & MSM_MUSPARAM_PAUSE) { + temp_r27->unk38.flags |= 0x10; + } + if (var_r30 & MSM_MUSPARAM_SPEED) { + temp_r27->unk38.flags |= 2; + temp_r27->unk38.speed = musParam->speed * 256 / 100; + } + if (var_r30 & MSM_MUSPARAM_FADESPEED) { + temp_r27->unk14 = -(musParam->fadeSpeed / 15); + if (temp_r27->unk14 != 0) { + temp_r27->unk18 = 0; + temp_r27->unk1C = 0; + temp_r27->unk38.volume.target = 0; + } + } + temp_r3_3 = sndSeqPlayEx(temp_r28->unk00, temp_r28->unk02, temp_r27->unk10, &temp_r27->unk38, 0); + if (temp_r3_3 == SND_ID_ERROR) { + temp_r27->unk05 = 0; + return MSM_ERR_PLAYFAIL; + } + temp_r27->unk08 = temp_r3_3; + temp_r27->unk00 = musId; + temp_r27->unk04 = (temp_r27->unk38.flags & 0x10) ? 3 : 2; + temp_r27->unk05 = 0; + return var_r29; +} + +s32 msmMusInit(sysData* arg0, DVDFileInfo* arg1) { + s32 temp_r4; + s32 var_r8; + + mus.unk00 = 0; + mus.unk02 = 0; + mus.unk04 = 0; + mus.unk03 = 0; + if (arg0->unk10->unk4 == 0) { + return 0; + } + temp_r4 = arg0->unkC->unk2C; + if (temp_r4 == 0) { + return 0; + } + if ((mus.unk0C = msmMemAlloc(temp_r4)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(arg1, mus.unk0C, arg0->unkC->unk2C, arg0->unkC->unk28) < 0) { + return MSM_ERR_READFAIL; + } + temp_r4 = arg0->unk10->unk20; + if (temp_r4 != 0) { + if ((mus.unk14 = msmMemAlloc(temp_r4 * arg0->unk10->unk8)) == NULL) { + return MSM_ERR_OUTOFMEM; + } + } else { + mus.unk14 = NULL; + } + mus.unk00 = arg0->unk10->unk4; + mus.unk02 = arg0->unk10->unk8; + mus.unk10 = arg0->unkC->unk48; + mus.unk08 = arg0->unk0; + for (var_r8 = 0; var_r8 < mus.unk02; var_r8++) { + mus.unk18[var_r8].unk0C = (void*) ((u32) mus.unk14 + arg0->unk10->unk20 * var_r8); + mus.unk18[var_r8].unk00 = -1; + mus.unk18[var_r8].unk05 = 0; + } + return 0; +} diff --git a/src/msm/msmse.c b/src/msm/msmse.c index 33c906ab..1d6481ce 100755 --- a/src/msm/msmse.c +++ b/src/msm/msmse.c @@ -231,7 +231,6 @@ s32 msmSeUpdataListener(Vec* pos, Vec* heading) { } s32 msmSeSetListener(Vec* pos, Vec* heading, float sndDist, float sndSpeed, MSM_SELISTENER* listener) { - msmSeStruct02* se_ptr = &se; SND_FVECTOR* temp_b0; SND_FVECTOR* temp_a4; SND_FVECTOR* temp_c8; @@ -241,10 +240,10 @@ s32 msmSeSetListener(Vec* pos, Vec* heading, float sndDist, float sndSpeed, MSM_ float var_f0; float var_f0_2; - temp_a4 = &se_ptr->unkA4; - temp_c8 = &se_ptr->unkC8; - temp_bc = &se_ptr->unkBC; - temp_b0 = &se_ptr->unkB0; + temp_a4 = &se.unkA4; + temp_c8 = &se.unkC8; + temp_bc = &se.unkBC; + temp_b0 = &se.unkB0; temp_a4->x = pos->x; temp_a4->y = pos->y; temp_a4->z = pos->z; @@ -254,18 +253,18 @@ s32 msmSeSetListener(Vec* pos, Vec* heading, float sndDist, float sndSpeed, MSM_ temp_bc->y = heading->y; temp_bc->z = heading->z; temp_b0->x = temp_b0->y = temp_b0->z = 0.0f; - se_ptr->unkD4 = sndDist; + se.unkD4 = sndDist; var_r3 = (listener != NULL) ? listener->flag : 0; var_f4 = (var_r3 & 1) ? listener->startDis : 0.0f; var_f0 = (var_r3 & 2) ? listener->frontSurDis : (var_f4 + sndDist * 0.25f); var_f0_2 = (var_r3 & 4) ? listener->backSurDis : (var_f4 + sndDist * 0.25f); - if ((s32) sndAddListenerEx(&se_ptr->unk14, temp_a4, temp_b0, temp_bc, temp_c8, + if ((s32) sndAddListenerEx(&se.unk14, temp_a4, temp_b0, temp_bc, temp_c8, var_f0, var_f0_2, sndSpeed, -var_f4, 1, 0x7F, NULL) == FALSE) { - se_ptr->unkDA = 0; + se.unkDA = 0; return MSM_ERR_22; } - se_ptr->unkDA = 1; + se.unkDA = 1; return 0; } @@ -287,13 +286,11 @@ s32 msmSeGetEntryID(s32 seId, int* seNo) { } s32 msmSeGetNumPlay(BOOL baseGrp) { - msmSeStruct02* se_ptr = &se; - switch (baseGrp) { case FALSE: - return se_ptr->unk06 + se_ptr->unk05; + return se.unk06 + se.unk05; default: - return se_ptr->unk06; + return se.unk06; } } @@ -409,12 +406,11 @@ void msmSePauseAll(BOOL pause, s32 speed) { } void msmSeStopAll(BOOL checkGrp, s32 speed) { - msmSeStruct02* se_ptr = &se; msmSeStruct00* temp_r28; s32 var_r27; - for (var_r27 = 0; var_r27 < se_ptr->unk04; var_r27++) { - temp_r28 = &se_ptr->unk10[var_r27]; + for (var_r27 = 0; var_r27 < se.unk04; var_r27++) { + temp_r28 = &se.unk10[var_r27]; if (temp_r28->unk0A == 0) { continue; } @@ -435,7 +431,7 @@ void msmSeStopAll(BOOL checkGrp, s32 speed) { } break; default: - if (msmSysCheckBaseGroup(se_ptr->unk0C[temp_r28->unk08].groupId) == 0) { + if (msmSysCheckBaseGroup(se.unk0C[temp_r28->unk08].groupId) == 0) { temp_r28->unk34 = speed / 15; if (temp_r28->unk34 != 0) { temp_r28->unk38 = temp_r28->unk34; @@ -479,40 +475,39 @@ s32 msmSeStop(int seNo, s32 speed) { return 0; } -static inline BOOL msmSeInline00(msmSeStruct02* arg0, msmSeStruct00* arg1, MSM_SEPARAM* param) { +static inline BOOL msmSeInline00(msmSeStruct00* arg0, MSM_SEPARAM* param) { BOOL var_r0 = FALSE; if (param != NULL) { if (param->flag & MSM_SEPARAM_VOL) { - arg1->unk0C = param->vol; + arg0->unk0C = param->vol; } if (param->flag & MSM_SEPARAM_PAN) { - arg1->unk0D = param->pan; + arg0->unk0D = param->pan; } if (param->flag & MSM_SEPARAM_PITCH) { - arg1->unk0E = param->pitch; + arg0->unk0E = param->pitch; } if (param->flag & MSM_SEPARAM_SPAN) { - arg1->unk10 = param->span; + arg0->unk10 = param->span; } if (param->flag & MSM_SEPARAM_AUXVOLA) { - arg1->unk11 = param->auxAVol; + arg0->unk11 = param->auxAVol; } if (param->flag & MSM_SEPARAM_AUXVOLB) { - arg1->unk12 = param->auxBVol; + arg0->unk12 = param->auxBVol; } - if ((param->flag & MSM_SEPARAM_POS) && arg0->unkDA != 0) { + if ((param->flag & MSM_SEPARAM_POS) && se.unkDA != 0) { var_r0 = TRUE; } } - arg1->unk14.paraArray = arg1->unk1C; + arg0->unk14.paraArray = arg0->unk1C; return var_r0; } int msmSePlay(int seId, MSM_SEPARAM* param) { msmSeStruct00* var_r30; SND_EMITTER* var_r29; - msmSeStruct02* se_ptr = &se; MSMSE* temp_r9; int var_r3_2; s32 var_r4; @@ -549,7 +544,7 @@ int msmSePlay(int seId, MSM_SEPARAM* param) { var_r30->unk48 = 0x7F; var_r30->unk3C = 0x7F; var_r30->unkB4 = 0; - if (msmSeInline00(se_ptr, var_r30, param)) { + if (msmSeInline00(var_r30, param)) { var_r30->unk9C.x = param->pos.x; var_r30->unk9C.y = param->pos.y; var_r30->unk9C.z = param->pos.z; @@ -567,7 +562,7 @@ int msmSePlay(int seId, MSM_SEPARAM* param) { var_r6_2 = 8; } var_r30->unkB4 = temp_r9->doppler; - var_r30->unk00 = sndAddEmitterParaEx(var_r29, &var_r30->unk9C, &var_r30->unkA8, se_ptr->unkD4, temp_r9->comp / 127.0f, var_r6_2, temp_r9->fxId, se_ptr->unkD8++, var_r30->unk0C * var_r30->unk30 / 127, 0, NULL, &var_r30->unk14); + var_r30->unk00 = sndAddEmitterParaEx(var_r29, &var_r30->unk9C, &var_r30->unkA8, se.unkD4, temp_r9->comp / 127.0f, var_r6_2, temp_r9->fxId, se.unkD8++, var_r30->unk0C * var_r30->unk30 / 127, 0, NULL, &var_r30->unk14); if (var_r29 != NULL) { if (!sndCheckEmitter(var_r29)) { return MSM_ERR_PLAYFAIL; @@ -612,7 +607,7 @@ int msmSePlay(int seId, MSM_SEPARAM* param) { } var_r30->unk0B = 1; var_r30->unk08 = seId; - var_r30->unk04 = se_ptr->unk08++; + var_r30->unk04 = se.unk08++; var_r30->unk0A = 2; var_r30->unk0B = 0; return var_r30->unk04; diff --git a/src/msm/msmstream.c b/src/msm/msmstream.c new file mode 100755 index 00000000..058835ab --- /dev/null +++ b/src/msm/msmstream.c @@ -0,0 +1,1057 @@ +#include "msm/msmstream.h" +#include "msm/msmmem.h" +#include "msm/msmsys.h" + +typedef struct { + /* 0x00 */ SND_STREAMID unk00; + /* 0x04 */ s16 unk04; + /* 0x06 */ u8 unk06; + /* 0x07 */ u8 unk07; + /* 0x08 */ u8 unk08; + /* 0x09 */ u8 unk09; + /* 0x0A */ u8 unk0A; + /* 0x0B */ u8 unk0B; + /* 0x0C */ u8 unk0C; + /* 0x0D */ u8 unk0D; + /* 0x0E */ s8 unk0E; + /* 0x0F */ s8 unk0F; + /* 0x10 */ u32 unk10; + /* 0x14 */ volatile s32 unk14; + /* 0x18 */ volatile s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ char unk20[4]; + /* 0x24 */ volatile s32 unk24; + /* 0x28 */ s32 unk28; + /* 0x2C */ s8 unk2C; + /* 0x2D */ s8 unk2D; + /* 0x2E */ s8 unk2E; + /* 0x2F */ char unk2F[1]; + /* 0x30 */ void* unk30; + /* 0x34 */ u32 unk34; + /* 0x38 */ u32 unk38; + /* 0x3C */ struct { + volatile u8 unk3C_0 : 1; + volatile u8 unk3C_1 : 1; + u8 unk3C_2 : 1; + u8 unk3C_3 : 1; + volatile u8 unk3C_4 : 1; + volatile u8 unk3C_5 : 1; + volatile u8 unk3C_6 : 1; + }; + /* 0x3D */ char unk3D[3]; + /* 0x40 */ s32 unk40; + /* 0x44 */ SND_ADPCMSTREAM_INFO* unk44; + /* 0x48 */ s32 unk48; + /* 0x4C */ u32 unk4C; + /* 0x50 */ u32 unk50; + /* 0X54 */ s32 unk54; + /* 0x58 */ u32 unk58; + /* 0x5C */ void* unk5C; + /* 0X60 */ s32 unk60; + /* 0x64 */ u32 unk64; + /* 0x68 */ s32 unk68; + /* 0x6C */ s32 unk6C; + /* 0x70 */ DVDFileInfo unk70; +} msmStreamUnk20Struct; // Size 0xAC + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ u32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s8 unk10; + /* 0x11 */ u8 unk11; + /* 0x12 */ u8 unk12; + /* 0x13 */ char unk13[1]; + /* 0x14 */ u32* unk14; + /* 0x18 */ s8* unk18; + /* 0x1C */ SND_ADPCMSTREAM_INFO* unk1C; + /* 0x20 */ msmStreamUnk20Struct* unk20; + /* 0x24 */ char unk24[0x1C]; + /* 0x40 */ s16 unk40; + /* 0x42 */ s16 unk42; + /* 0x44 */ s32 unk44; + /* 0x48 */ s32 unk48; + /* 0x4C */ s32 unk4C; + /* 0x50 */ s32 unk50; + /* 0x54 */ s32 unk54; + /* 0x58 */ s32 unk58; + /* 0x5C */ s32 unk5C; +} msmStreamStruct; // Size 0x60 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s16 unk04; + /* 0x06 */ char unk06[2]; +} StructSlotInitInnerArg1; // Size 8 + +typedef struct { + /* 0x00 */ s8 unk00; + /* 0x01 */ s8 unk01; + /* 0x02 */ s8 unk02; + /* 0x03 */ s8 unk03; + /* 0x04 */ s8 unk04; + /* 0x05 */ s8 unk05; + /* 0x06 */ u16 unk06; + /* 0x08 */ u32 unk08; + /* 0x0C */ u32 unk0C; + /* 0x10 */ StructSlotInitInnerArg1 unk10[2]; +} StructSlotInitArg1; // Size unknown + +typedef struct { + /* 0x00 */ u8 unk00; + /* 0x01 */ u8 unk01; + /* 0x02 */ u8 unk02; + /* 0x03 */ u8 unk03; + /* 0x04 */ u8 unk04; + /* 0x05 */ char unk05[3]; + /* 0x08 */ s32 unk08; +} StructSlotInitArg2; // Size unknown + +static void msmStreamPauseFade(s32 arg0); +static void msmStreamFade(s32 arg0); +static void msmStreamDvdCallback(s32 result, DVDFileInfo* fileInfo); +static void msmStreamStopSub(s32 streamNo, s32 speed); +static void msmStreamDvdCallback2(s32 arg0, DVDFileInfo* arg1); +static u32 msmStreamUpdateFunc(void* buffer1, u32 len1, void* buffer2, u32 len2, u32 user); +static s32 msmStreamSlotInit(msmStreamUnk20Struct* arg0, StructSlotInitArg1* arg1, StructSlotInitArg2* arg2, s32 arg3); + +static msmStreamStruct StreamInfo ATTRIBUTE_ALIGN(32); + +static inline void msmStreamInline00(s32 streamNo) { + msmStreamUnk20Struct* temp_ptr; + + temp_ptr = &StreamInfo.unk20[streamNo]; + DVDClose(&temp_ptr->unk70); + temp_ptr->unk06 = 0; +} + +s32 msmStreamGetStatus(int streamNo) { + msmStreamUnk20Struct* temp_r3; + s32 var_r4; + + if (streamNo < 0 || streamNo >= StreamInfo.unk44) { + return 0; + } + temp_r3 = &StreamInfo.unk20[streamNo]; + switch (temp_r3->unk06) { + case 4: + var_r4 = 2; + break; + case 2: + case 3: + var_r4 = 4; + break; + case 5: + var_r4 = 1; + break; + default: + var_r4 = 0; + break; + } + if (temp_r3->unk3C_5 == 1) { + var_r4 = 3; + } + if (var_r4 == 0 && temp_r3->unk0E != -1) { + var_r4 = msmStreamGetStatus(temp_r3->unk0E); + } + return var_r4; +} + +static inline void msmStreamInline04(msmStreamUnk20Struct* arg0) { + s32 var_r10; + s32 temp_var; + + if (StreamInfo.unk12 != 0) { + var_r10 = arg0->unk0C + arg0->unk0D - 0x40; + if (var_r10 < 0) { + var_r10 = 0; + } + if (var_r10 > 0x7F) { + var_r10 = 0x7F; + } + } else { + var_r10 = 0x40; + } + temp_var = arg0->unk08 * arg0->unk09 * arg0->unk0A * arg0->unk0B / 2048383; + sndStreamMixParameterEx(arg0->unk00, temp_var * StreamInfo.unk11 / 127, var_r10, arg0->unk2C, arg0->unk2D, arg0->unk2E); +} + +void msmStreamSetMasterVolume(s32 arg0) { + s32 var_r27; + + StreamInfo.unk11 = arg0 & 0x7F; + for (var_r27 = 0; var_r27 < StreamInfo.unk44; var_r27++) { + if (StreamInfo.unk20[var_r27].unk06 != 0) { + msmStreamInline04(&StreamInfo.unk20[var_r27]); + } + } +} + +static inline BOOL msmStreamInline01(msmStreamUnk20Struct* arg0) { + if (arg0->unk06 != 0 || arg0->unk3C_5 != 0) { + return TRUE; + } else { + return FALSE; + } +} + +void msmStreamStopAll(s32 speed) { + msmStreamUnk20Struct* temp_r29; + s32 var_r28; + + msmSysIrqDisable(); + for (var_r28 = 0; var_r28 < StreamInfo.unk44; var_r28++) { + if (var_r28 >= 0 && var_r28 < StreamInfo.unk44) { + temp_r29 = &StreamInfo.unk20[var_r28]; + if (msmStreamInline01(temp_r29)) { + msmSysIrqDisable(); + msmStreamStopSub(var_r28, speed); + if (temp_r29->unk0E != -1) { + msmStreamStopSub(temp_r29->unk0E, speed); + } + if (temp_r29->unk0F != -1) { + msmStreamStopSub(temp_r29->unk0F, speed); + } + msmSysIrqEnable(); + } + } + } + msmSysIrqEnable(); +} + +static inline void msmStreamInline03(int streamNo, s32 speed) { + msmStreamUnk20Struct* temp_ptr = &StreamInfo.unk20[streamNo]; + + if (temp_ptr->unk3C_5 != 0) { + temp_ptr->unk3C_5 = 0; + speed = 0; + } + temp_ptr->unk24 = speed / 15; + if (temp_ptr->unk24 != 0) { + temp_ptr->unk28 = temp_ptr->unk24; + temp_ptr->unk0A = 0x7F; + } else { + msmStreamSlotOff(streamNo); + } +} + +s32 msmStreamStop(int streamNo, s32 speed) { + msmStreamUnk20Struct* temp_r31; + s32 unused; + + if (streamNo < 0 || streamNo >= StreamInfo.unk44) { + return MSM_ERR_8C; + } + temp_r31 = &StreamInfo.unk20[streamNo]; + if (msmStreamInline01(temp_r31)) { + msmSysIrqDisable(); + msmStreamInline03(streamNo, speed); + if (temp_r31->unk0E != -1) { + msmStreamInline03(temp_r31->unk0E, speed); + } + if (temp_r31->unk0F != -1) { + msmStreamInline03(temp_r31->unk0F, speed); + } + msmSysIrqEnable(); + } + return 0; +} + +int msmStreamPlay(int streamId, MSM_STREAMPARAM* streamParam) { + if (streamId < 0 || streamId >= StreamInfo.unk42) { + return MSM_ERR_INVALIDID; + } + if (StreamInfo.unk14[streamId] == 0) { + return MSM_ERR_REMOVEDID; + } + if (StreamInfo.unk18[StreamInfo.unk14[streamId] - StreamInfo.unk58] & 1) { + return msmStreamPackStartStereo(streamId, streamParam, 0); + } else { + return msmStreamPackStartMono(streamId, streamParam, 0); + } +} + +void msmStreamPeriodicProc(void) { + msmStreamUnk20Struct* temp_r28; + s32 var_r27; + + StreamInfo.unk10 = 0; + for (var_r27 = 0; var_r27 < StreamInfo.unk44; var_r27++) { + temp_r28 = &StreamInfo.unk20[var_r27]; + msmStreamFade(var_r27); + msmStreamPauseOff(var_r27); + msmStreamPauseFade(var_r27); + if (temp_r28->unk06 != 0) { + StreamInfo.unk10++; + } + } +} + +void msmStreamSetOutputMode(s32 arg0) { + s32 var_r27; + + StreamInfo.unk12 = arg0; + for (var_r27 = 0; var_r27 < StreamInfo.unk44; var_r27++) { + if (StreamInfo.unk20[var_r27].unk06 != 0) { + msmStreamInline04(&StreamInfo.unk20[var_r27]); + } + } +} + +void msmStreamAmemFree(void) { + u32 var_r29; + + for (var_r29 = 0; var_r29 < StreamInfo.unk44; var_r29++) { + sndStreamFree(StreamInfo.unk20[var_r29].unk00); + } +} + +s32 msmStreamAmemAlloc(void) { + u32 var_r25; + msmStreamUnk20Struct* temp_r24; + + for (var_r25 = 0; var_r25 < StreamInfo.unk44; var_r25++) { + temp_r24 = &StreamInfo.unk20[var_r25]; + temp_r24->unk06 = 0; + temp_r24->unk0F = -1; + temp_r24->unk0E = -1; + temp_r24->unk30 = msmMemAlloc(StreamInfo.unk04); + if (temp_r24->unk30 == NULL) { + return MSM_ERR_OUTOFMEM; + } + temp_r24->unk34 = StreamInfo.unk04; + temp_r24->unk38 = StreamInfo.unk08; + temp_r24->unk00 = sndStreamAllocEx(0xFF, temp_r24->unk30, temp_r24->unk38, StreamInfo.unk48, 0, 0x40, 0, 0, 0, 0, 0x30001, msmStreamUpdateFunc, var_r25, NULL); + if (temp_r24->unk00 == -1) { + return MSM_ERR_STREAMALLOC_FAIL; + } + } + return StreamInfo.unk04 * StreamInfo.unk44; +} + +s32 msmStreamInit(char* arg0) { + DVDFileInfo spC; + s32 temp_r27; + + StreamInfo.unk42 = 0; + StreamInfo.unk44 = 0; + StreamInfo.unk11 = 0x7F; + StreamInfo.unk10 = 0; + if (arg0 == NULL) { + return 0; + } + StreamInfo.unk0C = DVDConvertPathToEntrynum(arg0); + if (StreamInfo.unk0C == -1) { + return MSM_ERR_OPENFAIL; + } + if (!msmFioOpen(StreamInfo.unk0C, &spC)) { + return MSM_ERR_OPENFAIL; + } + if (msmFioRead(&spC, &StreamInfo.unk40, 0x20, 0) < 0) { + msmFioClose(&spC); + return MSM_ERR_READFAIL; + } + if (StreamInfo.unk40 != 1) { + msmFioClose(&spC); + return MSM_ERR_INVALIDFILE; + } + if (StreamInfo.unk42 != 0) { + temp_r27 = (StreamInfo.unk54 - StreamInfo.unk50 + 0x1F) & ~0x1F; + StreamInfo.unk14 = msmMemAlloc(temp_r27); + if (StreamInfo.unk14 == NULL) { + msmFioClose(&spC); + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(&spC, StreamInfo.unk14, temp_r27, StreamInfo.unk50) < 0) { + msmFioClose(&spC); + return MSM_ERR_READFAIL; + } + temp_r27 = (StreamInfo.unk5C - StreamInfo.unk58 + 0x1F) & ~0x1F; + StreamInfo.unk18 = msmMemAlloc(temp_r27); + if (StreamInfo.unk18 == NULL) { + msmFioClose(&spC); + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(&spC, StreamInfo.unk18, temp_r27, StreamInfo.unk58) < 0) { + msmFioClose(&spC); + return MSM_ERR_READFAIL; + } + temp_r27 = StreamInfo.unk58 - StreamInfo.unk54; + StreamInfo.unk1C = msmMemAlloc(temp_r27); + if (StreamInfo.unk1C == NULL) { + msmFioClose(&spC); + return MSM_ERR_OUTOFMEM; + } + if (msmFioRead(&spC, StreamInfo.unk1C, temp_r27, StreamInfo.unk54) < 0) { + msmFioClose(&spC); + return MSM_ERR_READFAIL; + } + } + msmFioClose(&spC); + StreamInfo.unk00 = (StreamInfo.unk48 + 13) / 14; + StreamInfo.unk04 = (8 * StreamInfo.unk00 * StreamInfo.unk4C + 0x3F) & ~0x3F; + StreamInfo.unk08 = (StreamInfo.unk04 / 8) * 14; + StreamInfo.unk20 = msmMemAlloc(StreamInfo.unk44 * sizeof(*StreamInfo.unk20)); + memset(StreamInfo.unk20, 0, StreamInfo.unk44 * sizeof(*StreamInfo.unk20)); + return 0; +} + +void msmStreamPauseOff(s32 arg0) { + msmStreamUnk20Struct* temp_r31; + u32 temp_r3; + u32 var_r30; + + temp_r31 = &StreamInfo.unk20[arg0]; + if (temp_r31->unk14 == 0) { + return; + } + if (temp_r31->unk3C_5 == 0) { + temp_r31->unk14 = 0; + return; + } + if (temp_r31->unk18 != 0) { + temp_r31->unk18 = -(temp_r31->unk14 + 1); + if (temp_r31->unk18 == 0) { + temp_r31->unk0B = 0x7F; + msmStreamInline04(temp_r31); + } + temp_r31->unk14 = 0; + temp_r31->unk3C_5 = 0; + } else if (temp_r31->unk06 == 0 && DVDFastOpen(StreamInfo.unk0C, &temp_r31->unk70) == TRUE) { + if (--temp_r31->unk14 != 0) { + temp_r31->unk18 = -temp_r31->unk14; + temp_r31->unk1C = 0; + temp_r31->unk0B = 0; + } else { + temp_r31->unk0B = 0x7F; + } + temp_r31->unk14 = 0; + temp_r31->unk3C_1 = 1; + temp_r31->unk3C_2 = 0; + temp_r31->unk3C_4 = 0; + temp_r31->unk3C_5 = 0; + temp_r31->unk3C_6 = 0; + temp_r31->unk3C_0 = 1; + temp_r31->unk64 = temp_r31->unk68 = (temp_r31->unk10 / 8) * 14; + temp_r31->unk6C = 0; + temp_r31->unk4C = temp_r31->unk10; + var_r30 = temp_r31->unk34 / 2; + if ((temp_r3 = temp_r31->unk50 - temp_r31->unk4C) < temp_r31->unk34 / 2) { + var_r30 = temp_r3; + temp_r31->unk58 = temp_r31->unk34 / 2 - temp_r3; + temp_r31->unk5C = (void*) ((u32) temp_r31->unk30 + temp_r3); + memset(temp_r31->unk5C, 0, temp_r31->unk58); + } + temp_r31->unk06 = 2; + temp_r31->unk4C += var_r30; + temp_r31->unk3C_3 = 1; + DVDReadAsync(&temp_r31->unk70, temp_r31->unk30, var_r30, temp_r31->unk48 + (temp_r31->unk4C - var_r30), msmStreamDvdCallback); + } +} + +static inline void msmStreamInline05(s32 streamNo) { + msmStreamUnk20Struct* temp_r31; + + temp_r31 = &StreamInfo.unk20[streamNo]; + switch (temp_r31->unk06) { + case 2: + temp_r31->unk3C_4 = 1; + temp_r31->unk06 = 5; + break; + case 3: + msmStreamInline00(streamNo); + break; + case 4: + if (temp_r31->unk3C_2 == 0) { + sndStreamMixParameterEx(temp_r31->unk00, 0, 0x40, 0, 0, 0); + temp_r31->unk3C_2 = 1; + temp_r31->unk06 = 5; + } + break; + } +} + +void msmStreamPauseOn(s32 streamNo, s32 arg1) { + msmStreamUnk20Struct* temp_r31; + + temp_r31 = &StreamInfo.unk20[streamNo]; + temp_r31->unk14 = 0; + if (temp_r31->unk3C_5 != 0) { + return; + } + temp_r31->unk3C_5 = 1; + temp_r31->unk18 = arg1 / 15; + if (temp_r31->unk18 != 0) { + temp_r31->unk1C = temp_r31->unk18; + temp_r31->unk0B = 0x7F; + return; + } + temp_r31->unk10 = ((temp_r31->unk64 / 7) * 4) & ~7; + if (temp_r31->unk07 != 0) { + if (temp_r31->unk10 >= temp_r31->unk50 - temp_r31->unk34 / 4) { + temp_r31->unk10 = 0; + } + } else if (temp_r31->unk10 >= temp_r31->unk50) { + temp_r31->unk3C_5 = 0; + } + msmStreamInline05(streamNo); +} + +static void msmStreamPauseFade(s32 arg0) { + msmStreamUnk20Struct* temp_r5; + + temp_r5 = &StreamInfo.unk20[arg0]; + if (temp_r5->unk06 != 4) { + return; + } + if (temp_r5->unk18 > 0) { + if (--temp_r5->unk1C == 0) { + temp_r5->unk18 = 0; + temp_r5->unk3C_5 = 0; + msmStreamPauseOn(arg0, 0); + } else { + temp_r5->unk0B = temp_r5->unk1C * 0x7F / temp_r5->unk18; + msmStreamInline04(temp_r5); + } + } else if (temp_r5->unk18 < 0) { + if (++temp_r5->unk1C >= -temp_r5->unk18) { + temp_r5->unk18 = 0; + temp_r5->unk0B = 0x7F; + msmStreamInline04(temp_r5); + } else { + temp_r5->unk0B = temp_r5->unk1C * 0x7F / -temp_r5->unk18; + msmStreamInline04(temp_r5); + } + } +} + +static void msmStreamFade(s32 arg0) { + msmStreamUnk20Struct* temp_r5; + + temp_r5 = &StreamInfo.unk20[arg0]; + if (temp_r5->unk06 != 4) { + return; + } + if (temp_r5->unk24 > 0) { + if (--temp_r5->unk28 == 0) { + temp_r5->unk24 = 0; + msmStreamInline03(arg0, 0); + } else { + temp_r5->unk0A = temp_r5->unk28 * 0x7F / temp_r5->unk24; + msmStreamInline04(temp_r5); + } + } else if (temp_r5->unk24 < 0) { + if (++temp_r5->unk28 >= -temp_r5->unk24) { + temp_r5->unk24 = 0; + temp_r5->unk0A = 0x7F; + msmStreamInline04(temp_r5); + } else { + temp_r5->unk0A = temp_r5->unk28 * 0x7F / -temp_r5->unk24; + msmStreamInline04(temp_r5); + } + } +} + +static void msmStreamStopSub(s32 streamNo, s32 speed) { + msmStreamUnk20Struct* temp_r31; + s32 var_r4; + + var_r4 = speed; + temp_r31 = &StreamInfo.unk20[streamNo]; + if (temp_r31->unk3C_5 != 0) { + temp_r31->unk3C_5 = 0; + var_r4 = 0; + } + temp_r31->unk24 = var_r4 / 15; + if (temp_r31->unk24 != 0) { + temp_r31->unk28 = temp_r31->unk24; + temp_r31->unk0A = 0x7F; + return; + } + msmStreamInline05(streamNo); +} + +static void msmStreamSetParamSub(msmStreamUnk20Struct* arg0) { + int var_r10; + s32 temp_var; + + if (StreamInfo.unk12 != 0) { + var_r10 = arg0->unk0C + arg0->unk0D - 0x40; + if (var_r10 < 0) { + var_r10 = 0; + } + if (var_r10 > 0x7F) { + var_r10 = 0x7F; + } + } else { + var_r10 = 0x40; + } + temp_var = arg0->unk08 * arg0->unk09 * arg0->unk0A * arg0->unk0B / 2048383; + sndStreamMixParameterEx(arg0->unk00, temp_var * StreamInfo.unk11 / 127, var_r10, arg0->unk2C, arg0->unk2D, arg0->unk2E); +} + +s32 msmStreamPackStartStereo(s32 arg0, MSM_STREAMPARAM* arg1, s32 arg2) { + s32 var_r29; + s32 var_r28; + s32 var_r27; + u32 temp_r3_3; + u32 temp_r3_4; + StructSlotInitArg2 sp1C; + msmStreamUnk20Struct* temp_r25; + msmStreamUnk20Struct* temp_r24; + StructSlotInitArg1* temp_r23; + + var_r29 = (arg1 != NULL) ? arg1->flag : 0; + if (var_r29 & MSM_STREAMPARAM_CHAN) { + var_r28 = arg1->chan; + var_r27 = arg1->chan + 1; + if (var_r28 < 0 || var_r28 >= StreamInfo.unk44) { + return MSM_ERR_6E; + } + if (var_r27 < 0 || var_r27 >= StreamInfo.unk44) { + return MSM_ERR_6E; + } + if (msmStreamInline01(&StreamInfo.unk20[var_r28])) { + return MSM_ERR_6E; + } + if (msmStreamInline01(&StreamInfo.unk20[var_r27])) { + return MSM_ERR_6E; + } + } else { + for (var_r28 = 0; var_r28 < StreamInfo.unk44; var_r28++) { + if (!msmStreamInline01(&StreamInfo.unk20[var_r28])) { + break; + } + } + for (var_r27 = var_r28 + 1; var_r27 < StreamInfo.unk44; var_r27++) { + if (!msmStreamInline01(&StreamInfo.unk20[var_r27])) { + break; + } + } + if (var_r28 == StreamInfo.unk44 || var_r27 == StreamInfo.unk44) { + return MSM_ERR_6E; + } + } + temp_r25 = &StreamInfo.unk20[var_r28]; + temp_r24 = &StreamInfo.unk20[var_r27]; + temp_r23 = (StructSlotInitArg1*) ((u32) StreamInfo.unk18 + (StreamInfo.unk14[arg0] - StreamInfo.unk58)); + sp1C.unk00 = (var_r29 & MSM_STREAMPARAM_VOL) ? arg1->vol : 0x7F; + sp1C.unk02 = (var_r29 & MSM_STREAMPARAM_SPAN) ? arg1->span : (s32) temp_r23->unk03; + sp1C.unk03 = (var_r29 & MSM_STREAMPARAM_AUXA) ? arg1->auxA : (s32) temp_r23->unk04; + sp1C.unk04 = (var_r29 & MSM_STREAMPARAM_AUXB) ? arg1->auxB : (s32) temp_r23->unk05; + sp1C.unk08 = arg2; + msmSysIrqDisable(); + sp1C.unk01 = 0; + temp_r3_3 = msmStreamSlotInit(temp_r25, temp_r23, &sp1C, 0); + sp1C.unk01 = 0x7F; + temp_r3_4 = msmStreamSlotInit(temp_r24, temp_r23, &sp1C, 1); + temp_r25->unk04 = arg0; + temp_r24->unk04 = -1; + temp_r25->unk0E = var_r27; + temp_r24->unk0F = var_r28; + if ((var_r29 & MSM_STREAMPARAM_FADESPEED) && arg1->fadeSpeed != 0) { + temp_r25->unk24 = temp_r24->unk24 = -arg1->fadeSpeed / 15; + temp_r25->unk28 = temp_r24->unk28 = 0; + temp_r25->unk0A = temp_r24->unk0A = 0; + } + msmSysIrqEnable(); + if (temp_r3_3 == 0) { + return 0; + } + if (var_r29 & MSM_STREAMPARAM_PAUSE) { + temp_r25->unk3C_5 = temp_r24->unk3C_5 = 1; + temp_r25->unk06 = temp_r24->unk06 = 0; + return var_r28; + } + if (DVDFastOpen(StreamInfo.unk0C, &temp_r25->unk70) != 1) { + return MSM_ERR_OPENFAIL; + } + if (DVDFastOpen(StreamInfo.unk0C, &temp_r24->unk70) != 1) { + DVDClose(&temp_r25->unk70); + return MSM_ERR_OPENFAIL; + } + temp_r25->unk4C += temp_r3_3; + temp_r24->unk4C += temp_r3_4; + temp_r25->unk3C_3 = 1; + DVDReadAsync(&temp_r25->unk70, temp_r25->unk30, temp_r3_3, temp_r25->unk48 + (temp_r25->unk4C - temp_r3_3), msmStreamDvdCallback); + temp_r24->unk3C_3 = 1; + DVDReadAsync(&temp_r24->unk70, temp_r24->unk30, temp_r3_4, temp_r24->unk48 + (temp_r24->unk4C - temp_r3_4), msmStreamDvdCallback); + return var_r28; +} + +s32 msmStreamPackStartMono(s32 arg0, MSM_STREAMPARAM* arg1, s32 arg2) { + s32 var_r30; + s32 var_r29; + u32 temp_r3_2; + StructSlotInitArg2 sp18; + msmStreamUnk20Struct* temp_r27; + StructSlotInitArg1* temp_r25; + + var_r30 = (arg1 != NULL) ? arg1->flag : 0; + if (var_r30 & MSM_STREAMPARAM_CHAN) { + var_r29 = arg1->chan; + if (var_r29 < 0 || var_r29 >= StreamInfo.unk44) { + return MSM_ERR_6E; + } + if (msmStreamInline01(&StreamInfo.unk20[var_r29])) { + return MSM_ERR_6E; + } + } else { + for (var_r29 = 0; var_r29 < StreamInfo.unk44; var_r29++) { + if (!msmStreamInline01(&StreamInfo.unk20[var_r29])) { + break; + } + } + if (var_r29 == StreamInfo.unk44) { + return MSM_ERR_6E; + } + } + temp_r27 = &StreamInfo.unk20[var_r29]; + temp_r25 = (StructSlotInitArg1*) ((u32) StreamInfo.unk18 + (StreamInfo.unk14[arg0] - StreamInfo.unk58)); + sp18.unk00 = (var_r30 & MSM_STREAMPARAM_VOL) ? arg1->vol : 0x7F; + sp18.unk01 = (var_r30 & MSM_STREAMPARAM_PAN) ? arg1->pan : 0x40; + sp18.unk02 = (var_r30 & MSM_STREAMPARAM_SPAN) ? arg1->span : (s32) temp_r25->unk03; + sp18.unk03 = (var_r30 & MSM_STREAMPARAM_AUXA) ? arg1->auxA : (s32) temp_r25->unk04; + sp18.unk04 = (var_r30 & MSM_STREAMPARAM_AUXB) ? arg1->auxB : (s32) temp_r25->unk05; + sp18.unk08 = arg2; + msmSysIrqDisable(); + temp_r3_2 = msmStreamSlotInit(temp_r27, temp_r25, &sp18, 0); + temp_r27->unk04 = arg0; + if ((var_r30 & MSM_STREAMPARAM_FADESPEED) && arg1->fadeSpeed != 0) { + temp_r27->unk24 = -arg1->fadeSpeed / 15; + temp_r27->unk28 = 0; + temp_r27->unk0A = 0; + } + msmSysIrqEnable(); + if (temp_r3_2 == 0) { + return 0; + } + if (var_r30 & MSM_STREAMPARAM_PAUSE) { + temp_r27->unk3C_5 = 1; + temp_r27->unk06 = 0; + return var_r29; + } + if (DVDFastOpen(StreamInfo.unk0C, &temp_r27->unk70) != 1) { + return MSM_ERR_OPENFAIL; + } + temp_r27->unk4C += temp_r3_2; + temp_r27->unk3C_3 = 1; + DVDReadAsync(&temp_r27->unk70, temp_r27->unk30, temp_r3_2, temp_r27->unk48 + (temp_r27->unk4C - temp_r3_2), msmStreamDvdCallback); + return var_r29; +} + +// Note: identical to msmStreamInline05. +void msmStreamSlotOff(s32 streamNo) { + msmStreamUnk20Struct* temp_r31; + + temp_r31 = &StreamInfo.unk20[streamNo]; + switch (temp_r31->unk06) { + case 2: + temp_r31->unk3C_4 = 1; + temp_r31->unk06 = 5; + break; + case 3: + msmStreamInline00(streamNo); + break; + case 4: + if (temp_r31->unk3C_2 == 0) { + sndStreamMixParameterEx(temp_r31->unk00, 0, 0x40, 0, 0, 0); + temp_r31->unk3C_2 = 1; + temp_r31->unk06 = 5; + } + break; + } +} + +static inline void msmStreamInline06(s32 streamNo) { + msmStreamUnk20Struct* temp_r25; + + temp_r25 = &StreamInfo.unk20[streamNo]; + msmStreamSlotOff(streamNo); + sndStreamDeactivate(temp_r25->unk00); + if (temp_r25->unk3C_3 == 0) { + msmStreamInline00(streamNo); + } else { + temp_r25->unk3C_4 = 1; + } +} + +static void msmStreamData(s32 arg0) { + s32 temp_r5; + u32 var_r28; + void* var_r27; + msmStreamUnk20Struct* temp_r26; + s32 var_r24; + + temp_r26 = &StreamInfo.unk20[arg0]; + var_r28 = temp_r5 = temp_r26->unk34 / 2; + var_r27 = (temp_r26->unk3C_0 != 0) + ? (void*) ((u32) temp_r26->unk30 + temp_r5) + : temp_r26->unk30; + temp_r26->unk58 = var_r24 = 0; + if (temp_r26->unk4C + var_r28 > temp_r26->unk50) { + if (temp_r26->unk50 > temp_r26->unk4C) { + var_r28 = temp_r26->unk50 - temp_r26->unk4C; + temp_r26->unk58 = temp_r5 - var_r28; + temp_r26->unk5C = (void*) ((u32) var_r27 + var_r28); + } else if (temp_r26->unk07 != 0) { + temp_r26->unk4C = temp_r26->unk60; + } else { + memset(var_r27, 0, temp_r5); + if (temp_r26->unk3C_0 != 0) { + var_r24 = temp_r26->unk38 / 2; + } + sndStreamARAMUpdate(temp_r26->unk00, var_r24, temp_r26->unk38 / 2, 0, 0); + var_r28 = 0; + } + } + if (var_r28 != 0) { + if (DVDGetCommandBlockStatus(&temp_r26->unk70.cb) != 0) { + if (temp_r26->unk3C_6 != 1) { + temp_r26->unk3C_6 = 1; + sndStreamMixParameterEx(temp_r26->unk00, 0, 0x40, 0x40, 0, 0); + memset(temp_r26->unk30, 0, temp_r26->unk34); + sndStreamARAMUpdate(temp_r26->unk00, 0, temp_r26->unk38, 0, 0); + } + } else { + if (temp_r26->unk3C_6 == 1) { + temp_r26->unk3C_6 = 0; + msmStreamInline04(temp_r26); + } + temp_r26->unk4C += var_r28; + temp_r26->unk3C_3 = 1; + DVDReadAsync(&temp_r26->unk70, var_r27, var_r28, temp_r26->unk48 + (temp_r26->unk4C - var_r28), msmStreamDvdCallback); + } + } else if (temp_r26->unk3C_1 != 0) { + temp_r26->unk3C_1= 0; + } else { + msmStreamInline06(arg0); + } + temp_r26->unk3C_0 ^= 1; +} + +static inline BOOL msmStreamInline02(s32 streamNo) { + msmStreamUnk20Struct* temp_ptr; + + temp_ptr = &StreamInfo.unk20[streamNo]; + msmStreamSetParamSub(temp_ptr); + sndStreamFrq(temp_ptr->unk00, temp_ptr->unk40); + sndStreamADPCMParameter(temp_ptr->unk00, temp_ptr->unk44); + sndStreamARAMUpdate(temp_ptr->unk00, 0, temp_ptr->unk38 / 2, 0, 0); + if (sndStreamActivate(temp_ptr->unk00)) { + temp_ptr->unk06 = 4; + msmStreamData(streamNo); + return TRUE; + } else { + msmStreamInline00(streamNo); + return FALSE; + } +} + +static void msmStreamDvdCallback(s32 arg0, DVDFileInfo* arg1) { + s32 var_r28; + msmStreamUnk20Struct* temp_r27; + + for (var_r28 = 0; var_r28 < StreamInfo.unk44; var_r28++) { + if (&StreamInfo.unk20[var_r28].unk70 == arg1) { + break; + } + } + if (var_r28 == StreamInfo.unk44) { + return; + } + temp_r27 = &StreamInfo.unk20[var_r28]; + temp_r27->unk3C_3 = 0; + if (temp_r27->unk3C_4 != 0) { + temp_r27->unk3C_4 = 0; + msmStreamInline00(var_r28); + return; + } + if (DVDGetCommandBlockStatus(&arg1->cb) == 0) { + switch (temp_r27->unk06) { + case 2: + if (temp_r27->unk0E != -1) { + if (StreamInfo.unk20[temp_r27->unk0E].unk06 != 3) { + temp_r27->unk06 = 3; + break; + } + if (!msmStreamInline02(temp_r27->unk0E)) { + temp_r27->unk0E = -1; + } + } + if (temp_r27->unk0F != -1) { + if (StreamInfo.unk20[temp_r27->unk0F].unk06 != 3) { + temp_r27->unk06 = 3; + break; + } + if (!msmStreamInline02(temp_r27->unk0F)) { + temp_r27->unk0F = -1; + } + } + if (!msmStreamInline02(var_r28)) { + if (temp_r27->unk0E != -1) { + StreamInfo.unk20[temp_r27->unk0E].unk0F = -1; + } + if (temp_r27->unk0F != -1) { + StreamInfo.unk20[temp_r27->unk0F].unk0E = -1; + } + } + break; + case 4: + if (temp_r27->unk4C >= temp_r27->unk50) { + if (temp_r27->unk07 != 0) { + temp_r27->unk4C = temp_r27->unk60; + if (temp_r27->unk58 != 0) { + temp_r27->unk3C_3 = 1; + DVDReadAsync(arg1, temp_r27->unk5C, temp_r27->unk58, temp_r27->unk48 + temp_r27->unk4C, msmStreamDvdCallback2); + temp_r27->unk4C += temp_r27->unk58; + break; + } + } else if (temp_r27->unk58 != 0) { + memset(temp_r27->unk5C, 0, temp_r27->unk58); + } + } + sndStreamARAMUpdate(temp_r27->unk00, (temp_r27->unk3C_0 != 0) ? 0 : temp_r27->unk38 / 2, temp_r27->unk38 / 2, 0, 0); + break; + case 5: + temp_r27->unk3C_4 = 0; + msmStreamInline00(var_r28); + break; + } + } else { + if (temp_r27->unk06 == 4) { + sndStreamDeactivate(temp_r27->unk00); + } + msmStreamInline00(var_r28); + if (temp_r27->unk0E != -1) { + StreamInfo.unk20[temp_r27->unk0E].unk0F = -1; + } + if (temp_r27->unk0F != -1) { + StreamInfo.unk20[temp_r27->unk0F].unk0E = -1; + } + } +} + +static void msmStreamDvdCallback2(s32 arg0, DVDFileInfo* arg1) { + msmStreamUnk20Struct* var_r30; + s32 var_r28; + + for (var_r28 = 0; var_r28 < StreamInfo.unk44; var_r28++) { + var_r30 = &StreamInfo.unk20[var_r28]; + if (&var_r30->unk70 == arg1) { + break; + } + } + if (var_r28 == StreamInfo.unk44) { + return; + } + var_r30->unk3C_3 = 0; + if (var_r30->unk3C_4 != 0) { + var_r30->unk3C_4 = 0; + msmStreamInline00(var_r28); + } else if (DVDGetCommandBlockStatus(&arg1->cb) == 0) { + sndStreamARAMUpdate(var_r30->unk00, (var_r30->unk3C_0 != 0) ? 0 : var_r30->unk38 / 2, var_r30->unk38 / 2, 0, 0); + } else { + if (var_r30->unk06 == 4) { + sndStreamDeactivate(var_r30->unk00); + } + msmStreamInline00(var_r28); + if (var_r30->unk0E != -1) { + StreamInfo.unk20[var_r30->unk0E].unk0F = -1; + } + if (var_r30->unk0F != -1) { + StreamInfo.unk20[var_r30->unk0F].unk0E = -1; + } + } +} + +static u32 msmStreamUpdateFunc(void* buffer1, u32 len1, void* buffer2, u32 len2, u32 user) { + msmStreamUnk20Struct* temp_r31; + s32 temp_r4; + s32 temp_r0; + s32 var_r3; + + temp_r31 = &StreamInfo.unk20[user]; + if (temp_r31->unk3C_2 != 0) { + msmStreamInline06(user); + return 0; + } + temp_r0 = temp_r31->unk38 / 2; + if (len1 < temp_r0) { + var_r3 = 0; + temp_r31->unk64 = temp_r31->unk68 + (len1 - temp_r31->unk6C); + } else { + msmStreamData(user); + var_r3 = temp_r0; + temp_r4 = temp_r31->unk68 + (temp_r0 - temp_r31->unk6C); + temp_r31->unk68 = temp_r4; + temp_r31->unk64 = temp_r4; + temp_r31->unk6C = 0; + } + if (temp_r31->unk64 >= temp_r31->unk54) { + if (temp_r31->unk07 != 0) { + temp_r31->unk68 = 0; + temp_r31->unk64 -= temp_r31->unk54; + if (len1 < temp_r0) { + temp_r31->unk6C = len1 - temp_r31->unk64; + } + } else { + temp_r31->unk3C_2 = 1; + temp_r31->unk3C_5 = 0; + } + } + return var_r3; +} + +static s32 msmStreamSlotInit(msmStreamUnk20Struct* arg0, StructSlotInitArg1* arg1, StructSlotInitArg2* arg2, s32 arg3) { + StructSlotInitInnerArg1* temp_r10; + s32 temp_r3; + s32 var_r30; + + temp_r10 = &arg1->unk10[arg3]; + arg0->unk08 = arg1->unk01; + arg0->unk09 = arg2->unk00; + arg0->unk0A = arg0->unk0B = 0x7F; + arg0->unk0C = arg1->unk02; + arg0->unk0D = arg2->unk01; + arg0->unk2C = arg2->unk02; + arg0->unk2D = arg2->unk03; + arg0->unk2E = arg2->unk04; + arg0->unk07 = (arg1->unk00 >> 1) & 1; + arg0->unk48 = temp_r10->unk00; + arg0->unk60 = (arg1->unk0C >> 1) & ~7; + arg0->unk40 = arg1->unk06; + arg0->unk44 = &StreamInfo.unk1C[temp_r10->unk04]; + arg0->unk24 = 0; + arg0->unk18 = 0; + arg0->unk14 = 0; + arg0->unk10 = 0; + arg0->unk3C_1 = 1; + arg0->unk3C_2 = 0; + arg0->unk3C_4 = 0; + arg0->unk3C_5 = 0; + arg0->unk3C_6 = 0; + arg0->unk3C_0 = 1; + arg0->unk34 = (StreamInfo.unk48 * StreamInfo.unk4C * 8 / 14 + 0x3F) & ~0x3F; + if (arg0->unk34 > StreamInfo.unk04) { + arg0->unk34 = StreamInfo.unk04; + } + arg0->unk38 = (arg0->unk34 / 8) * 14; + arg0->unk50 = (arg1->unk08 >> 1) & ~0x1F; + arg0->unk54 = (arg0->unk50 / 8) * 14; + arg0->unk64 = arg0->unk68 = 0; + arg0->unk6C = 0; + arg0->unk0E = -1; + arg0->unk0F = -1; + arg0->unk4C = arg2->unk08; + var_r30 = arg0->unk34 / 2; + if ((temp_r3 = arg0->unk50 - arg0->unk4C) < arg0->unk34 / 2) { + var_r30 = temp_r3; + arg0->unk58 = arg0->unk34 / 2 - temp_r3; + arg0->unk5C = (void*) ((u32) arg0->unk30 + temp_r3); + memset(arg0->unk5C, 0, arg0->unk58); + } + arg0->unk06 = 2; + return var_r30; +} diff --git a/src/msm/msmsys.c b/src/msm/msmsys.c index 726a3a29..6dcd4ac9 100644 --- a/src/msm/msmsys.c +++ b/src/msm/msmsys.c @@ -5,8 +5,6 @@ #include "msm/msmse.h" #include "msm/msmstream.h" -#include "game/msm.h" // TODO remove, only for decomp - static sysData sys; static void msmSysServer(void) From ef9659fef21637911edcd09802a12d8ec69eeff1 Mon Sep 17 00:00:00 2001 From: dbalatoni13 <40299962+dbalatoni13@users.noreply.github.com> Date: Wed, 15 Jan 2025 23:14:44 +0100 Subject: [PATCH 24/24] Finish m433Dll (#533) * Remove TODO * Finish m433Dll --- config/GMPE01_00/rels/m433Dll/symbols.txt | 6 +- configure.py | 2 +- src/REL/m433Dll/player.c | 4599 +++++++++------------ src/REL/m434Dll/player.c | 2 - 4 files changed, 2050 insertions(+), 2559 deletions(-) diff --git a/config/GMPE01_00/rels/m433Dll/symbols.txt b/config/GMPE01_00/rels/m433Dll/symbols.txt index 11a976cf..092ebc7d 100644 --- a/config/GMPE01_00/rels/m433Dll/symbols.txt +++ b/config/GMPE01_00/rels/m433Dll/symbols.txt @@ -428,8 +428,8 @@ lbl_1_data_445 = .data:0x00000445; // type:object size:0xB scope:local data:stri lbl_1_data_450 = .data:0x00000450; // type:object size:0x18 lbl_1_data_468 = .data:0x00000468; // type:object size:0x24 lbl_1_data_48C = .data:0x0000048C; // type:object size:0x48 -lbl_1_data_4D4 = .data:0x000004D4; // type:object size:0x6C -lbl_1_data_540 = .data:0x00000540; // type:object size:0x24 +lbl_1_data_4D4 = .data:0x000004D4; // type:object size:0x6C data:float +lbl_1_data_540 = .data:0x00000540; // type:object size:0x24 data:float lbl_1_data_564 = .data:0x00000564; // type:object size:0x2 scope:local data:string lbl_1_data_566 = .data:0x00000566; // type:object size:0x15 scope:local data:string lbl_1_data_57B = .data:0x0000057B; // type:object size:0x15 scope:local data:string @@ -441,7 +441,7 @@ lbl_1_data_5EA = .data:0x000005EA; // type:object size:0x15 scope:local data:str lbl_1_data_5FF = .data:0x000005FF; // type:object size:0x15 scope:local data:string lbl_1_data_614 = .data:0x00000614; // type:object size:0x15 scope:local data:string lbl_1_data_629 = .data:0x00000629; // type:object size:0x15 scope:local data:string -lbl_1_data_63E = .data:0x0000063E; // type:object size:0x16 data:string +lbl_1_data_63E = .data:0x0000063E; // type:object size:0x16 scope:local data:string jumptable_1_data_654 = .data:0x00000654; // type:object size:0x20 scope:local lbl_1_data_674 = .data:0x00000674; // type:object size:0xC lbl_1_data_680 = .data:0x00000680; // type:object size:0x8 diff --git a/configure.py b/configure.py index 83d74200..e653b8d1 100644 --- a/configure.py +++ b/configure.py @@ -1123,7 +1123,7 @@ config.libs = [ objects={ Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m433Dll/main.c"), Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m433Dll/map.c"), - Object(NonMatching, "REL/m433Dll/player.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m433Dll/player.c"), }, ), Rel( diff --git a/src/REL/m433Dll/player.c b/src/REL/m433Dll/player.c index cbe26c9a..21b2ff60 100644 --- a/src/REL/m433Dll/player.c +++ b/src/REL/m433Dll/player.c @@ -1,3 +1,5 @@ +#include "datadir_enum.h" +#include "dolphin/mtx.h" #include "ext_math.h" #include "game/audio.h" #include "game/chrman.h" @@ -30,7 +32,7 @@ typedef struct M433PlayerWork { s32 unk_04; s32 unk_08; s32 unk_0C; - char unk10[4]; + u32 unk_10; u32 unk_14; u32 unk_18; u32 unk_1C; @@ -48,7 +50,7 @@ typedef struct M433PlayerWork { s32 unk_4C; char unk50[4]; s32 unk_54; - char unk58[4]; + s32 unk_58; s32 unk_5C; s32 unk_60; s32 unk_64; @@ -75,7 +77,7 @@ typedef struct M433PlayerWork { float unk_B8; float unk_BC; float unk_C0; - char unkC4[0x08]; + char unkC4[8]; u32 unk_CC; u32 unk_D0; u32 unk_D4; @@ -99,52 +101,112 @@ typedef struct M433PlayerWork { omObjData *unk_14C; } M433PlayerWork; /* size = 0x150 */ +typedef struct M433PlayerWork2Sub { + float unk_00; + float unk_04; + float unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; + Vec unk_2C; + Vec unk_38; +} M433PlayerWork2Sub; /* size = 0x44 */ + typedef struct M433PlayerWork2 { - char unk00[0x18]; - s16 unk_18; - char unk1A[0x16]; - float unk_30; - float unk_34; - float unk_38; - char unk3C[0x7C]; - float unk_B8; - float unk_BC; - float unk_C0; - float unk_C4; - Mtx unk_C8; - char unkF8[0x44]; -} M433PlayerWork2; /* size = 0x13C */ - -typedef struct M433PlayerWork3SubStruct { - char unk00[2]; - s16 unk_02[5]; -} M433PlayerWork3SubStruct; /* size = 0xC */ - -typedef struct M433PlayerWork3SubStruct2 { - char unk00[0x78]; - s16 unk_78; - s16 unk_7A; - char unk7C[0x28]; - s16 unk_A4; - s16 unk_A6; - char unkA8[0x3E8]; - s32 unk_490[2]; - char unk498[8]; -} M433PlayerWork3SubStruct2; /* size = 0x4A0 */ - -typedef struct M433PlayerWork3 { s32 unk_00; s32 unk_04; s32 unk_08; - char unk0C[0xC]; - s32 unk_18; - s32 unk_1C; - char unk20[0xC]; + s32 unk_0C; + s32 unk_10; + char unk14[4]; + u16 unk_18; + char unk1A[0x16]; + Vec unk_30; + Vec unk_3C; + float unk_48; + Vec unk_4C; + char unk58[0x14]; + u32 unk_6C; + s32 unk_70; + s32 unk_74; + u32 unk_78; + float unk_7C[2]; + float unk_84[2]; + s32 unk_8C; + u32 unk_90; + u32 unk_94; + s32 unk_98; + float unk_9C; + float unk_A0; + float unk_A4; + float unk_A8; + Vec unk_AC; + float unk_B8; + Vec unk_BC; + Mtx unk_C8; + M433PlayerWork2Sub unk_F8; +} M433PlayerWork2; /* size = 0x13C */ + +typedef struct M433PlayerWork3Sub { + s16 unk_00; + s16 unk_02[5]; +} M433PlayerWork3Sub; /* size = 0xC */ + +typedef struct M433PlayerWork3Sub2Sub { + s16 unk_00[2]; + float unk_04[2]; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; +} M433PlayerWork3Sub2Sub; /* size 0x2C */ + +typedef struct M433PlayerWork3Sub2Sub2 { + s32 unk_00[2]; + char unk08[8]; +} M433PlayerWork3Sub2Sub2; /* size 0x10 */ + +typedef struct M433PlayerWork3Sub2 { + s32 unk_00; + u32 unk_04; + u32 unk_08; + s32 unk_0C; + s32 unk_10; + s32 unk_14[2]; + u32 unk_1C; + M433PlayerWork3Sub2Sub unk_20[4]; + M433PlayerWork3Sub2Sub2 unk_D0[3][0x14]; + M433PlayerWork3Sub2Sub2 unk_490; +} M433PlayerWork3Sub2; /* size = 0x4A0 */ + +typedef struct M433PlayerWork3 { + u32 uGameEvent; + s32 sWinGrp; + u32 uServeGrp; + u32 uPointGrp; + u32 auServeCel[2]; + u32 auEvents[2]; + u32 unk_20[2]; + u32 unk_28; s32 unk_2C; s32 unk_30; - char unk34[0x18]; - M433PlayerWork3SubStruct unk_4C[2]; - M433PlayerWork3SubStruct2 unk_64; + u32 uContactCnt; + s32 sGroundGrp; + u32 uContactGrp; + u32 uContactCel; + u32 uTargetGrp; + u32 unk_48; + M433PlayerWork3Sub unk_4C[2]; + M433PlayerWork3Sub2 unk_64; } M433PlayerWork3; /* size = 0x504 */ typedef struct M433DllPlayerData24CStruct { @@ -155,11 +217,6 @@ typedef struct M433DllPlayerData24CStruct { /* 0x10 */ u32 unk_10; } M433DllPlayerData24CStruct; /* size = 0x14 */ -typedef struct M433DllPlayerData6C0Struct { - /* 0x00 */ s32 unk_00; - /* 0x04 */ char pad_04[0xC]; /* maybe part of unk_00[4]? */ -} M433DllPlayerData6C0Struct; /* size = 0x10 */ - typedef struct M433DllPlayerData794Struct { /* 0x00 */ s32 unk_00; /* 0x04 */ s32 unk_04; @@ -167,7 +224,7 @@ typedef struct M433DllPlayerData794Struct { } M433DllPlayerData794Struct; /* size = 0x0C */ void fn_1_10130(Vec *arg0, u32 arg1); -void fn_1_10260(float arg8, float arg9, u32 arg0, s32 arg1, Vec *arg2); +void fn_1_10260(float arg8, float arg9, u32 arg0, u32 arg1, Vec *arg2); s32 fn_1_10614(Vec *arg0); void fn_1_1070C(void); u32 fn_1_10740(Vec *arg0); @@ -210,21 +267,22 @@ void fn_1_C240(omObjData *object); void fn_1_C6AC(omObjData *object); s32 fn_1_C6B0(omObjData *object); void fn_1_CB98(omObjData *object); -void fn_1_CDB8(float *arg0, Vec *arg1, Vec *arg2, u32 arg3, float arg8); -void fn_1_D180(float *arg0); -void fn_1_D338(float *arg0); -s32 fn_1_D4E0(float *arg0, Vec *arg1, Vec *arg2, float arg8); +void fn_1_CDB8(M433PlayerWork2Sub *arg0, Vec *arg1, Vec *arg2, u32 arg3, float arg8); +void fn_1_D180(M433PlayerWork2Sub *arg0); +void fn_1_D338(M433PlayerWork2Sub *arg0); +s32 fn_1_D4E0(M433PlayerWork2Sub *arg0, Vec *arg1, Vec *arg2, float arg8); void fn_1_D6A8(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_D888(Vec *arg0, float arg8); void fn_1_DD70(Vec *arg0); void fn_1_DE28(ModelData *model, ParticleData *particle, Mtx matrix); void fn_1_DF44(omObjData *object); void fn_1_E11C(omObjData *object); -void fn_1_E5C0(M433PlayerWork3SubStruct *arg0, M433PlayerWork3SubStruct2 *arg1); -void fn_1_ECFC(void *arg0, void *arg1); -void fn_1_FE64(void *arg0, s32 arg1, s32 arg2, u32 arg3); +void fn_1_E5C0(M433PlayerWork3Sub *arg0, M433PlayerWork3Sub2 *arg1); +void fn_1_ECFC(M433PlayerWork3Sub *arg0, M433PlayerWork3Sub2 *arg1); +void fn_1_FE64(M433PlayerWork3Sub2 *arg0, s32 arg1, s32 arg2, u32 arg3); void fn_1_FE8C(Vec *arg0, u32 arg1, u32 arg2, s32 arg3); +s32 lbl_1_data_C8[6] = { 0, 1, 2, 3, 4, 5 }; float lbl_1_data_E0[0xE] = { 130.0f, 130.0f, @@ -266,12 +324,12 @@ s32 lbl_1_data_150[6][2] = { { 0x3E, 0x3F }, }; s32 lbl_1_data_180[0x11] = { - 0x400061, - 0x400062, - 0x400063, - 0x400064, - 0x400065, - 0x400066, + DATA_MAKE_NUM(DATADIR_M433, 97), + DATA_MAKE_NUM(DATADIR_M433, 98), + DATA_MAKE_NUM(DATADIR_M433, 99), + DATA_MAKE_NUM(DATADIR_M433, 100), + DATA_MAKE_NUM(DATADIR_M433, 101), + DATA_MAKE_NUM(DATADIR_M433, 102), 0, 0, 0, @@ -288,39 +346,39 @@ u32 lbl_1_data_1C4[0x11] = { 0, 2, 3, - 0x400011, - 0x400019, - 0x400021, - 0x400029, - 0x400031, - 0x400039, - 0x400041, - 0x400049, - 0x400051, - 0x400059, + DATA_MAKE_NUM(DATADIR_M433, 0x11), + DATA_MAKE_NUM(DATADIR_M433, 0x19), + DATA_MAKE_NUM(DATADIR_M433, 0x21), + DATA_MAKE_NUM(DATADIR_M433, 0x29), + DATA_MAKE_NUM(DATADIR_M433, 0x31), + DATA_MAKE_NUM(DATADIR_M433, 0x39), + DATA_MAKE_NUM(DATADIR_M433, 0x41), + DATA_MAKE_NUM(DATADIR_M433, 0x49), + DATA_MAKE_NUM(DATADIR_M433, 0x51), + DATA_MAKE_NUM(DATADIR_M433, 0x59), 0x17, 0x18, 0x48, 0x49, }; s32 lbl_1_data_208[0x11] = { - 0x400067, - 0x40006D, - 0x400073, - 0x400079, - 0x40007F, - 0x400085, - 0x40008B, - 0x400091, - 0x400097, - 0x40009D, - 0x4000A3, - 0x4000A9, - 0x4000AF, - 0x4000B5, - 0x4000C1, - 0x4000BB, - 0x4000C7, + DATA_MAKE_NUM(DATADIR_M433, 0x67), + DATA_MAKE_NUM(DATADIR_M433, 0x6D), + DATA_MAKE_NUM(DATADIR_M433, 0x73), + DATA_MAKE_NUM(DATADIR_M433, 0x79), + DATA_MAKE_NUM(DATADIR_M433, 0x7F), + DATA_MAKE_NUM(DATADIR_M433, 0x85), + DATA_MAKE_NUM(DATADIR_M433, 0x8B), + DATA_MAKE_NUM(DATADIR_M433, 0x91), + DATA_MAKE_NUM(DATADIR_M433, 0x97), + DATA_MAKE_NUM(DATADIR_M433, 0x9D), + DATA_MAKE_NUM(DATADIR_M433, 0xA3), + DATA_MAKE_NUM(DATADIR_M433, 0xA9), + DATA_MAKE_NUM(DATADIR_M433, 0xAF), + DATA_MAKE_NUM(DATADIR_M433, 0xB5), + DATA_MAKE_NUM(DATADIR_M433, 0xC1), + DATA_MAKE_NUM(DATADIR_M433, 0xBB), + DATA_MAKE_NUM(DATADIR_M433, 0xC7), }; M433DllPlayerData24CStruct lbl_1_data_24C[0x15] = { { 0, 0.2f, 0.0f, -1.0f, 0x40000001 }, @@ -361,84 +419,6 @@ u32 lbl_1_data_3F0[0xE] = { 0x28, 0x32, }; -char *lbl_1_data_450[6] = { - "itemhook_R", - "itemhook_r", - "itemhook_R", - "itemhook_R", - "itemhook_r", - "itemhook_r", -}; -s32 lbl_1_data_468[9] = { 0, 0, 1, 1, 1, 1, 1, 0, 1 }; -float lbl_1_data_48C[0x12] = { - 0.0f, - 0.6666667f, - 2.1666667f, - 2.0f, - 1.0f, - 7.0000005f, - 1.5000001f, - 1.5000001f, - 3.0000002f, - 0.0f, - 0.0f, - 1e-45f, - 0.0f, - 0.0f, - 1e-45f, - 0.0f, - 0.0f, - 1e-45f, -}; -Vec lbl_1_data_4D4[9] = { - { 0.0f, 0.0f, 1.0f }, - { 0.0f, 1.5f, 1.0f }, - { 236.5f, 0.0f, 1300.0f }, - { 0.0f, 1.5f, 1.0f }, - { 0.0f, 1.8f, 1.0f }, - { 231.0f, 0.0f, 1500.0f }, - { 231.0f, 0.0f, 1000.0f }, - { 0.0f, 1.2f, 1.0f }, - { 0.0f, 0.8f, 1.0f }, -}; -float lbl_1_data_540[9] = { 1.0f, 1.0f, 3.0f, 1.0f, 1.0f, 4.0f, 2.0f, 1.0f, 1.0f }; -s8 lbl_1_data_564 = 0xA; -u16 lbl_1_data_674[6] = { 0, 1, 2, 3, 3, 0 }; -s32 lbl_1_data_680[2] = { 0x61001E, 0x61001F }; -Vec2f lbl_1_data_688[5] = { - { 0.0f, 0.0f }, - { 0.0f, 0.0f }, - { -23.0f, 0.0f }, - { 1.0f, 0.0f }, - { 21.0f, 0.0f }, -}; -Vec2f lbl_1_data_6B0[2] = { { 72.0f, 56.0f }, { 504.0f, 56.0f } }; -M433DllPlayerData6C0Struct lbl_1_data_6C0[0xB] = { - { 0x13000B }, - { 0x13000C }, - { 0x13000D }, - { 0x13000E }, - { 0x13000F }, - { 0x130010 }, - { 0x130011 }, - { 0x130012 }, - { 0x130013 }, - { 0x130014 }, - { 0x130099 }, -}; -s32 lbl_1_data_770[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; -M433DllPlayerData794Struct lbl_1_data_794[9] = { - { 0, 0, 0 }, - { 0, 0, 0 }, - { 1, 1, 0 }, - { 1, 0, 1 }, - { 1, 0, 1 }, - { 1, 1, 0 }, - { 1, 1, 0 }, - { 1, 0, 1 }, - { 1, 0, 1 }, -}; -u32 lbl_1_data_800[9] = { 0, 1, 2, 1, 1, 2, 1, 1, 1 }; // M433PlayerWork omObjData *lbl_1_bss_7D0[5]; @@ -530,7 +510,7 @@ void fn_1_5B98(omObjData *object) object->model[0] = Hu3DModelCreateFile(lbl_1_data_180[work->unk_04]); } Hu3DModelShadowSet(object->model[0]); - object->model[1] = Hu3DModelCreateFile(0x400008); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 8)); Hu3DModelLayerSet(object->model[1], 1); for (var_r29 = 0; var_r29 < 0x11; var_r29++) { if (work->unk_04 < 0) { @@ -582,13 +562,9 @@ void fn_1_60C0(omObjData *object) float var_f31; float var_f30; - M433PlayerWork *work; - s32 var_r29; - M433PlayerWork *var_r28; - - work = object->data; - var_r29 = 0; - var_r28 = work->unk_14C->data; + M433PlayerWork *work = object->data; + s32 var_r29 = 0; + M433PlayerWork *var_r28 = work->unk_14C->data; work->unk_1C = 0; work->unk_20 = 0; work->unk_28 = 0.0f; @@ -911,6 +887,48 @@ void fn_1_682C(omObjData *object) } } +char *lbl_1_data_450[6] = { + "itemhook_R", + "itemhook_r", + "itemhook_R", + "itemhook_R", + "itemhook_r", + "itemhook_r", +}; +s32 lbl_1_data_468[9] = { 0, 0, 1, 1, 1, 1, 1, 0, 1 }; +float lbl_1_data_48C[0x12] = { + 0.0f, + 0.6666667f, + 2.1666667f, + 2.0f, + 1.0f, + 7.0000005f, + 1.5000001f, + 1.5000001f, + 3.0000002f, + 0.0f, + 0.0f, + 1e-45f, + 0.0f, + 0.0f, + 1e-45f, + 0.0f, + 0.0f, + 1e-45f, +}; +Vec lbl_1_data_4D4[9] = { + { 0.0f, 0.0f, 1.0f }, + { 0.0f, 1.5f, 1.0f }, + { 236.5f, 0.0f, 1300.0f }, + { 0.0f, 1.5f, 1.0f }, + { 0.0f, 1.8f, 1.0f }, + { 231.0f, 0.0f, 1500.0f }, + { 231.0f, 0.0f, 1000.0f }, + { 0.0f, 1.2f, 1.0f }, + { 0.0f, 0.8f, 1.0f }, +}; +float lbl_1_data_540[9] = { 1.0f, 1.0f, 3.0f, 1.0f, 1.0f, 4.0f, 2.0f, 1.0f, 1.0f }; + void fn_1_722C(omObjData *object) { Vec sp8; @@ -958,13 +976,11 @@ void fn_1_74D4(omObjData *object) Vec sp1C; Vec sp10; M433PlayerWork *spC; - s32 sp8; float var_f31; - s32 var_r29; M433PlayerWork *work = object->data; - var_r29 = 1; - sp8 = 0; + s32 var_r29 = 1; + s32 sp8 = 0; spC = work->unk_14C->data; switch (work->unk_74) { case 0: @@ -1293,10 +1309,9 @@ s32 fn_1_8938(u32 var_r27, Vec *var_r29) float var_f28; u32 var_r31; u32 var_r30; - M433PlayerWork *work; for (var_r31 = 0, var_r30 = 0; (var_r30 < 4) && (var_r31 < 2); var_r30++) { - work = lbl_1_bss_7D0[var_r30]->data; + M433PlayerWork *work = lbl_1_bss_7D0[var_r30]->data; if (work->unk_14 != var_r27) { sp2C[var_r31] = work->unk_128; sp2C[var_r31].y = 0.0f; @@ -1343,10 +1358,9 @@ void fn_1_8BD0(omObjData *object) Vec sp8; float var_f31; float var_f30; - s32 var_r29; M433PlayerWork *work = object->data; - var_r29 = 1; + s32 var_r29 = 1; if ((work->unk_30 == 0) && (work->unk_60 == 0)) { if ((work->unk_24 > 0.0f) && (work->unk_34 == 0)) { work->unk_A8 = work->unk_28; @@ -1416,17 +1430,15 @@ void fn_1_8F80(omObjData *object) Vec sp10; float var_f31; float var_f30; - s32 var_r29; - char *var_r28; M433PlayerWork *work = object->data; - var_r29 = work->unk_40; + s32 var_r29 = work->unk_40; { s32 sp8[2] = { 0x6A4, 0x6A5 }; work->unk_3C = 0; work->unk_40 = 0; if (work->unk_04 < 0) { - var_r28 = CharModelHookNameGet(work->unk_00, 4, 0); + char *var_r28 = CharModelHookNameGet(work->unk_00, 4, 0); Hu3DModelObjPosGet(object->model[0], var_r28, &sp10); } else { @@ -1534,272 +1546,260 @@ void fn_1_9688(omObjData *object) { Vec sp2C; Vec sp20; - s32 sp14; - s32 sp10; - s32 spC; - s32 sp8; float var_f31; float var_f30; float var_f29; - M433PlayerWork *work; - M433PlayerWork *var_r29; - work = object->data; - { - s32 sp38[3][3] = { { 3, 4, 6 }, { 3, 4, 6 }, { 3, 4, 7 } }; - s32 sp18[2] = { 0x6AD, 0x6AE }; - s32 sp10[2] = { 0x6A6, 0x6A7 }; - s32 sp8[2] = { 0x6AA, 0x6AB }; - var_r29 = work->unk_14C->data; - work->unk_4C = 0; - work->unk_44 = 0; - work->unk_48 = 0; - if (work->unk_60 == 0) { - switch (work->unk_7C) { - case 0: - if ((work->unk_7C == 0) && (work->unk_78 == 0) && (work->unk_80 == 0) - && (work->unk_30 = 0, work->unk_64 = 0, ((work->unk_34 == 0) != 0)) && (work->unk_14 == fn_1_10740(&sp2C)) - && (fn_1_11004(work->unk_14, work->unk_18) != 0) && (fn_1_10FDC() < 3)) { - work->unk_140 = sp2C; - var_f31 = fn_1_10848(); - if ((var_f31 <= 0.8f) && (var_f31 >= 0.02f) && (var_r29->unk_64 == 0)) { - PSVECSubtract(&sp2C, &work->unk_128, &sp20); - sp20.y = 0.0f; - var_f30 = PSVECMag(&sp20); - work->unk_98 = var_f30; - if (var_f30 <= 200.0f) { - if ((var_f31 >= 0.2f) && (var_f30 <= 70.0f) && (var_f31 >= (0.2f + (0.001f * var_f30))) && (fn_1_10FDC() >= 1)) { - work->unk_4C = 1; - } - if ((var_f31 >= 0.02f) && (var_f30 <= 100.0f) && (var_f31 >= (0.02f + (0.001f * var_f30)))) { - work->unk_44 = 1; - } - if ((var_f31 >= 0.1f) && (var_f31 <= 0.3f) && (var_f30 > 100.0f) && (var_f30 <= 200.0f) - && (var_f31 >= (0.1f + (0.0002f * (var_f30 - 100.0f))))) { - work->unk_48 = 1; - } + M433PlayerWork *work = object->data; + s32 sp38[3][3] = { { 3, 4, 6 }, { 3, 4, 6 }, { 3, 4, 7 } }; + s32 sp18[2] = { 0x6AD, 0x6AE }; + s32 sp10[2] = { 0x6A6, 0x6A7 }; + s32 sp8[2] = { 0x6AA, 0x6AB }; + M433PlayerWork *var_r29 = work->unk_14C->data; + + work->unk_4C = 0; + work->unk_44 = 0; + work->unk_48 = 0; + if (work->unk_60 == 0) { + switch (work->unk_7C) { + case 0: + if ((work->unk_7C == 0) && (work->unk_78 == 0) && (work->unk_80 == 0) + && (work->unk_30 = 0, work->unk_64 = 0, ((work->unk_34 == 0) != 0)) && (work->unk_14 == fn_1_10740(&sp2C)) + && (fn_1_11004(work->unk_14, work->unk_18) != 0) && (fn_1_10FDC() < 3)) { + work->unk_140 = sp2C; + var_f31 = fn_1_10848(); + if ((var_f31 <= 0.8f) && (var_f31 >= 0.02f) && (var_r29->unk_64 == 0)) { + PSVECSubtract(&sp2C, &work->unk_128, &sp20); + sp20.y = 0.0f; + var_f30 = PSVECMag(&sp20); + work->unk_98 = var_f30; + if (var_f30 <= 200.0f) { + if ((var_f31 >= 0.2f) && (var_f30 <= 70.0f) && (var_f31 >= (0.2f + (0.001f * var_f30))) && (fn_1_10FDC() >= 1)) { + work->unk_4C = 1; } - } - if ((work->unk_1C & 0x100) != 0) { - work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; - if (work->unk_4C != 0) { - work->unk_7C = 1; - var_f31 -= 0.12f; - work->unk_98 *= 0.014285714f; - fn_1_B4D4(object, 0xF); - fn_1_10B20(0.0f, &sp2C); + if ((var_f31 >= 0.02f) && (var_f30 <= 100.0f) && (var_f31 >= (0.02f + (0.001f * var_f30)))) { + work->unk_44 = 1; } - else if (work->unk_44 != 0) { - work->unk_7C = 2; - var_f31 -= 0.03f; - work->unk_98 *= 0.01f; - fn_1_B4D4(object, 0xE); - fn_1_10B20(0.0f, &sp2C); + if ((var_f31 >= 0.1f) && (var_f31 <= 0.3f) && (var_f30 > 100.0f) && (var_f30 <= 200.0f) + && (var_f31 >= (0.1f + (0.0002f * (var_f30 - 100.0f))))) { + work->unk_48 = 1; } - else if (work->unk_48 != 0) { - work->unk_7C = 3; - var_f31 -= 0.03f; - work->unk_98 *= 0.005f; - fn_1_B4D4(object, 7); - fn_1_D888(&work->unk_128, 0.75f); - HuAudFXPlay(sp8[work->unk_14]); - } - else { - if (fn_1_10FDC() >= 1) { - fn_1_B4D4(object, 9); - } - else { - fn_1_B4D4(object, 6); - } - work->unk_7C = 4; - } - if (work->unk_7C < 4) { - work->unk_64 = 1; - if (var_f31 < 0.0f) { - var_f31 = 0.0f; - } - work->unk_90 = 60.0f * var_f31; - } - PSVECSubtract(&sp2C, &work->unk_128, &sp20); - work->unk_A8 = atan2d(sp20.x, sp20.z); - work->unk_AC = 0.2f; - work->unk_B0 = 0.0f; - work->unk_30 = 1; - work->unk_88 = 0; } } + if ((work->unk_1C & 0x100) != 0) { + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + if (work->unk_4C != 0) { + work->unk_7C = 1; + var_f31 -= 0.12f; + work->unk_98 *= 0.014285714f; + fn_1_B4D4(object, 0xF); + fn_1_10B20(0.0f, &sp2C); + } + else if (work->unk_44 != 0) { + work->unk_7C = 2; + var_f31 -= 0.03f; + work->unk_98 *= 0.01f; + fn_1_B4D4(object, 0xE); + fn_1_10B20(0.0f, &sp2C); + } + else if (work->unk_48 != 0) { + work->unk_7C = 3; + var_f31 -= 0.03f; + work->unk_98 *= 0.005f; + fn_1_B4D4(object, 7); + fn_1_D888(&work->unk_128, 0.75f); + HuAudFXPlay(sp8[work->unk_14]); + } + else { + if (fn_1_10FDC() >= 1) { + fn_1_B4D4(object, 9); + } + else { + fn_1_B4D4(object, 6); + } + work->unk_7C = 4; + } + if (work->unk_7C < 4) { + work->unk_64 = 1; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + work->unk_90 = 60.0f * var_f31; + } + PSVECSubtract(&sp2C, &work->unk_128, &sp20); + work->unk_A8 = atan2d(sp20.x, sp20.z); + work->unk_AC = 0.2f; + work->unk_B0 = 0.0f; + work->unk_30 = 1; + work->unk_88 = 0; + } + } + break; + case 1: + if (work->unk_88 >= work->unk_90) { + if (work->unk_64 != 0) { + if (fn_1_10FDC() >= 2) { + sp2C.x = 350.0f; + sp2C.y = 11.0f; + sp2C.z = 0.0f; + if (work->unk_14 != 0) { + sp2C.x *= -1.0f; + } + } + else { + sp2C = var_r29->unk_128; + sp2C.y = 11.0f; + sp2C.x *= 0.5f; + } + var_f29 = frandmod(0x168); + var_f30 = 200.0f * work->unk_98; + sp2C.x += var_f30 * sind(var_f29); + sp2C.z += var_f30 * cosd(var_f29); + if (fn_1_10FDC() < 2) { + fn_1_10130(&sp2C, work->unk_14); + } + fn_1_FE8C(&sp2C, sp38[0][fn_1_10FDC()], work->unk_14, work->unk_18); + fn_1_D888(&work->unk_128, 0.0f); + HuAudFXPlay(sp10[work->unk_14]); + } + work->unk_64 = 0; + fn_1_B4D4(object, 9); + PSVECSubtract(&sp2C, &work->unk_128, &sp20); + work->unk_A8 = atan2d(sp20.x, sp20.z); + work->unk_AC = 0.1f; + work->unk_90 = 0x186A0; + work->unk_88 = 0; break; - case 1: - if (work->unk_88 >= work->unk_90) { - if (work->unk_64 != 0) { - if (fn_1_10FDC() >= 2) { + } + if (work->unk_90 < 0x2710) { + work->unk_134.x = 0.07f * (work->unk_140.x - work->unk_128.x); + work->unk_134.z = 0.07f * (work->unk_140.z - work->unk_128.z); + if (work->unk_64 == 0) { + work->unk_90 = 0; + } + } + else { + work->unk_134.x *= 0.7f; + work->unk_134.z *= 0.7f; + if (fn_1_B6E0(object) != 0) { + work->unk_7C = 0; + } + } + break; + case 2: + if (work->unk_88 >= work->unk_90) { + if (work->unk_64 != 0) { + switch (fn_1_10FDC()) { + case 0: + sp2C = var_r29->unk_128; + sp2C.y = 11.0f; + break; + case 1: + sp2C = var_r29->unk_128; + sp2C.y = 11.0f; + sp2C.x *= 0.5f; + break; + case 2: + default: sp2C.x = 350.0f; sp2C.y = 11.0f; sp2C.z = 0.0f; if (work->unk_14 != 0) { sp2C.x *= -1.0f; } - } - else { - sp2C = var_r29->unk_128; - sp2C.y = 11.0f; - sp2C.x *= 0.5f; - } - var_f29 = frandmod(0x168); - var_f30 = 200.0f * work->unk_98; - sp2C.x += var_f30 * sind(var_f29); - sp2C.z += var_f30 * cosd(var_f29); - if (fn_1_10FDC() < 2) { - fn_1_10130(&sp2C, work->unk_14); - } - fn_1_FE8C(&sp2C, sp38[0][fn_1_10FDC()], work->unk_14, work->unk_18); - fn_1_D888(&work->unk_128, 0.0f); + break; + } + var_f29 = frandmod(0x168); + var_f30 = 200.0f * work->unk_98; + sp2C.x += var_f30 * sind(var_f29); + sp2C.z += var_f30 * cosd(var_f29); + if (fn_1_10FDC() < 2) { + fn_1_10130(&sp2C, work->unk_14); + } + fn_1_FE8C(&sp2C, sp38[1][fn_1_10FDC()], work->unk_14, work->unk_18); + fn_1_D888(&work->unk_128, 0.0f); + if (fn_1_10FDC() < 1) { + HuAudFXPlay(sp18[work->unk_14]); + } + else { HuAudFXPlay(sp10[work->unk_14]); } - work->unk_64 = 0; - fn_1_B4D4(object, 9); - PSVECSubtract(&sp2C, &work->unk_128, &sp20); - work->unk_A8 = atan2d(sp20.x, sp20.z); - work->unk_AC = 0.1f; - work->unk_90 = 0x186A0; - work->unk_88 = 0; - break; - } - if (work->unk_90 < 0x2710) { - work->unk_134.x = 0.07f * (work->unk_140.x - work->unk_128.x); - work->unk_134.z = 0.07f * (work->unk_140.z - work->unk_128.z); - if (work->unk_64 == 0) { - work->unk_90 = 0; - } - } - else { - work->unk_134.x *= 0.7f; - work->unk_134.z *= 0.7f; - if (fn_1_B6E0(object) != 0) { - work->unk_7C = 0; - } } + work->unk_64 = 0; + fn_1_B4D4(object, 6); + PSVECSubtract(&sp2C, &work->unk_128, &sp20); + work->unk_A8 = atan2d(sp20.x, sp20.z); + work->unk_AC = 0.1f; + work->unk_90 = 0x186A0; + work->unk_88 = 0; break; - case 2: - if (work->unk_88 >= work->unk_90) { - if (work->unk_64 != 0) { - switch (fn_1_10FDC()) { - case 0: - sp2C = var_r29->unk_128; - sp2C.y = 11.0f; - break; - case 1: - sp2C = var_r29->unk_128; - sp2C.y = 11.0f; - sp2C.x *= 0.5f; - break; - case 2: - default: - sp2C.x = 350.0f; - sp2C.y = 11.0f; - sp2C.z = 0.0f; - if (work->unk_14 != 0) { - sp2C.x *= -1.0f; - } - break; - } - var_f29 = frandmod(0x168); - var_f30 = 200.0f * work->unk_98; - sp2C.x += var_f30 * sind(var_f29); - sp2C.z += var_f30 * cosd(var_f29); - if (fn_1_10FDC() < 2) { - fn_1_10130(&sp2C, work->unk_14); - } - fn_1_FE8C(&sp2C, sp38[1][fn_1_10FDC()], work->unk_14, work->unk_18); - fn_1_D888(&work->unk_128, 0.0f); - if (fn_1_10FDC() < 1) { - HuAudFXPlay(sp18[work->unk_14]); - } - else { - HuAudFXPlay(sp10[work->unk_14]); - } - } - work->unk_64 = 0; - fn_1_B4D4(object, 6); - PSVECSubtract(&sp2C, &work->unk_128, &sp20); - work->unk_A8 = atan2d(sp20.x, sp20.z); - work->unk_AC = 0.1f; - work->unk_90 = 0x186A0; - work->unk_88 = 0; + } + if (work->unk_90 < 0x2710) { + work->unk_134.x = 0.07f * (work->unk_140.x - work->unk_128.x); + work->unk_134.z = 0.07f * (work->unk_140.z - work->unk_128.z); + if (work->unk_64 == 0) { + work->unk_90 = 0; break; } - if (work->unk_90 < 0x2710) { - work->unk_134.x = 0.07f * (work->unk_140.x - work->unk_128.x); - work->unk_134.z = 0.07f * (work->unk_140.z - work->unk_128.z); - if (work->unk_64 == 0) { - work->unk_90 = 0; - break; - } - } - else { - work->unk_134.x *= 0.7f; - work->unk_134.z *= 0.7f; - if (fn_1_B6E0(object) != 0) { - work->unk_7C = 0; - break; - } - } - break; - case 3: - if (work->unk_88 >= work->unk_90) { - if (work->unk_64 != 0) { - sp2C = work->unk_128; - sp2C.y = 11.0f; - PSVECSubtract(&var_r29->unk_128, &work->unk_128, &sp20); - var_f29 = 180.0 + (atan2d(sp20.x, sp20.z)); - var_f29 += frandmod(0xB4) - 90.0f; - var_f30 = 200.0f * work->unk_98; - sp2C.x += var_f30 * sind(var_f29); - sp2C.z += var_f30 * cosd(var_f29); - fn_1_10130(&sp2C, work->unk_14); - fn_1_FE8C(&sp2C, sp38[2][fn_1_10FDC()], work->unk_14, work->unk_18); - if (fn_1_10FDC() < 1) { - HuAudFXPlay(sp18[work->unk_14]); - } - else { - HuAudFXPlay(sp10[work->unk_14]); - } - } - work->unk_64 = 0; - work->unk_90 = 0x186A0; - work->unk_88 = 0; - fn_1_D888(&work->unk_128, 1.3f); - break; - } - if (work->unk_90 < 0x2710) { - work->unk_134.x = 0.15f * (work->unk_140.x - work->unk_128.x); - work->unk_134.z = 0.15f * (work->unk_140.z - work->unk_128.z); - break; - } - work->unk_134.x *= 0.95f; - work->unk_134.z *= 0.95f; - if (fn_1_B6E0(object) != 0) { - fn_1_B4D4(object, 8); - work->unk_7C = 4; - } - break; - case 4: - work->unk_134.x *= 0.95f; - work->unk_134.z *= 0.95f; + } + else { + work->unk_134.x *= 0.7f; + work->unk_134.z *= 0.7f; if (fn_1_B6E0(object) != 0) { work->unk_7C = 0; + break; } + } + break; + case 3: + if (work->unk_88 >= work->unk_90) { + if (work->unk_64 != 0) { + sp2C = work->unk_128; + sp2C.y = 11.0f; + PSVECSubtract(&var_r29->unk_128, &work->unk_128, &sp20); + var_f29 = 180.0 + (atan2d(sp20.x, sp20.z)); + var_f29 += frandmod(0xB4) - 90.0f; + var_f30 = 200.0f * work->unk_98; + sp2C.x += var_f30 * sind(var_f29); + sp2C.z += var_f30 * cosd(var_f29); + fn_1_10130(&sp2C, work->unk_14); + fn_1_FE8C(&sp2C, sp38[2][fn_1_10FDC()], work->unk_14, work->unk_18); + if (fn_1_10FDC() < 1) { + HuAudFXPlay(sp18[work->unk_14]); + } + else { + HuAudFXPlay(sp10[work->unk_14]); + } + } + work->unk_64 = 0; + work->unk_90 = 0x186A0; + work->unk_88 = 0; + fn_1_D888(&work->unk_128, 1.3f); break; - } + } + if (work->unk_90 < 0x2710) { + work->unk_134.x = 0.15f * (work->unk_140.x - work->unk_128.x); + work->unk_134.z = 0.15f * (work->unk_140.z - work->unk_128.z); + break; + } + work->unk_134.x *= 0.95f; + work->unk_134.z *= 0.95f; + if (fn_1_B6E0(object) != 0) { + fn_1_B4D4(object, 8); + work->unk_7C = 4; + } + break; + case 4: + work->unk_134.x *= 0.95f; + work->unk_134.z *= 0.95f; + if (fn_1_B6E0(object) != 0) { + work->unk_7C = 0; + } + break; } } } -struct _m2c_reg_fn_1_A618 { - M433PlayerWork *var_r31; - M433PlayerWork *sp8; -}; - void fn_1_A618(omObjData *object) { Vec sp20; @@ -1809,448 +1809,330 @@ void fn_1_A618(omObjData *object) float var_f30; float var_f29; M433PlayerWork *work = object->data; - { - s32 spC[2] = { 0x6A8, 0x6A9 }; - sp8 = work->unk_14C->data; - work->unk_54 = 0; - work->unk_5C = 0; - switch (work->unk_80) { - case 0: - if ((work->unk_7C == 0) && (work->unk_78 == 0) && (work->unk_80 == 0) - && (work->unk_30 = 0, work->unk_68 = 0, ((work->unk_34 == 0) != 0)) && (fn_1_11004(work->unk_14, work->unk_18) != 0) - && (fn_1_10FDC() < 3) && (work->unk_14 == fn_1_10740(&sp20))) { + s32 spC[2] = { 0x6A8, 0x6A9 }; + sp8 = work->unk_14C->data; + work->unk_54 = 0; + work->unk_5C = 0; + switch (work->unk_80) { + case 0: + if ((work->unk_7C == 0) && (work->unk_78 == 0) && (work->unk_80 == 0) && (work->unk_30 = 0, work->unk_68 = 0, ((work->unk_34 == 0) != 0)) + && (fn_1_11004(work->unk_14, work->unk_18) != 0) && (fn_1_10FDC() < 3) && (work->unk_14 == fn_1_10740(&sp20))) { + PSVECSubtract(&sp20, &work->unk_128, &sp14); + sp14.y = 0.0f; + if (!(PSVECMag(&sp14) > 500.0f)) { + fn_1_10B20(0.5f, &sp20); + sp20.y -= lbl_1_data_E0[work->unk_00]; PSVECSubtract(&sp20, &work->unk_128, &sp14); sp14.y = 0.0f; - if (!(PSVECMag(&sp14) > 500.0f)) { - fn_1_10B20(0.5f, &sp20); - sp20.y -= lbl_1_data_E0[work->unk_00]; - PSVECSubtract(&sp20, &work->unk_128, &sp14); - sp14.y = 0.0f; - if ((PSVECMag(&sp14) < 200.0f) && (sp20.y >= 50.0f)) { - work->unk_5C = 1; - } - if (((work->unk_1C & 0x200) != 0) && (work->unk_5C != 0)) { - work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; - fn_1_B4D4(object, 0xA); - work->unk_80 = 1; - work->unk_88 = 0; - work->unk_30 = 1; - if (work->unk_5C != 0) { - var_f30 = 0.5f; - work->unk_124 = (2.0f * -sp20.y) / (var_f30 * var_f30); - work->unk_134.y = 0.016666668f * (-work->unk_124 * var_f30); - PSVECSubtract(&sp20, &work->unk_128, &sp14); - sp14.y = 0.0f; - work->unk_134.x = 0.016666668f * (sp14.x / 0.5f); - work->unk_134.z = 0.016666668f * (sp14.z / 0.5f); - if (work->unk_14 != 0) { - var_f29 = -90.0f; - } - else { - var_f29 = 90.0f; - } - work->unk_A8 = var_f29; - work->unk_AC = 0.2f; - work->unk_B0 = 0.0f; - work->unk_68 = 1; + if ((PSVECMag(&sp14) < 200.0f) && (sp20.y >= 50.0f)) { + work->unk_5C = 1; + } + if (((work->unk_1C & 0x200) != 0) && (work->unk_5C != 0)) { + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + fn_1_B4D4(object, 0xA); + work->unk_80 = 1; + work->unk_88 = 0; + work->unk_30 = 1; + if (work->unk_5C != 0) { + var_f30 = 0.5f; + work->unk_124 = (2.0f * -sp20.y) / (var_f30 * var_f30); + work->unk_134.y = 0.016666668f * (-work->unk_124 * var_f30); + PSVECSubtract(&sp20, &work->unk_128, &sp14); + sp14.y = 0.0f; + work->unk_134.x = 0.016666668f * (sp14.x / 0.5f); + work->unk_134.z = 0.016666668f * (sp14.z / 0.5f); + if (work->unk_14 != 0) { + var_f29 = -90.0f; } else { - work->unk_134.y = 14.833334f; + var_f29 = 90.0f; } - work->unk_60 = 1; - fn_1_D888(&work->unk_128, 0.75f); + work->unk_A8 = var_f29; + work->unk_AC = 0.2f; + work->unk_B0 = 0.0f; + work->unk_68 = 1; } + else { + work->unk_134.y = 14.833334f; + } + work->unk_60 = 1; + fn_1_D888(&work->unk_128, 0.75f); } } - break; - case 1: - work->unk_134.y += 0.016666668f * (0.016666668f * work->unk_124); - if (work->unk_68 != 0) { - var_f31 = (0.016666668f * work->unk_88) - 0.35f; - if ((var_f31 >= 0.0f) && (var_f31 < 0.4)) { - work->unk_54 = 1; - if ((work->unk_1C & 0x100) != 0) { - fn_1_B4D4(object, 0xB); - fn_1_10260(work->unk_28, work->unk_24, work->unk_14, work->unk_54, &sp20); - fn_1_FE8C(&sp20, 5, work->unk_14, work->unk_18); - work->unk_68 = 0; - work->unk_54 = 0; - HuAudFXPlay(spC[work->unk_14]); - } - } - else if (var_f31 > 0.0f) { + } + break; + case 1: + work->unk_134.y += 0.016666668f * (0.016666668f * work->unk_124); + if (work->unk_68 != 0) { + var_f31 = (0.016666668f * work->unk_88) - 0.35f; + if ((var_f31 >= 0.0f) && (var_f31 < 0.4)) { + work->unk_54 = 1; + if ((work->unk_1C & 0x100) != 0) { + fn_1_B4D4(object, 0xB); + fn_1_10260(work->unk_28, work->unk_24, work->unk_14, work->unk_54, &sp20); + fn_1_FE8C(&sp20, 5, work->unk_14, work->unk_18); work->unk_68 = 0; work->unk_54 = 0; + HuAudFXPlay(spC[work->unk_14]); } - fn_1_10260(work->unk_28, work->unk_24, work->unk_14, work->unk_54, &sp20); } - if (work->unk_128.y <= 0.0f) { - fn_1_D888(&work->unk_128, 0.75f); - work->unk_30 = 0; - work->unk_80 = 0; - work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; - work->unk_60 = 0; + else if (var_f31 > 0.0f) { work->unk_68 = 0; + work->unk_54 = 0; } - break; + fn_1_10260(work->unk_28, work->unk_24, work->unk_14, work->unk_54, &sp20); + } + if (work->unk_128.y <= 0.0f) { + fn_1_D888(&work->unk_128, 0.75f); + work->unk_30 = 0; + work->unk_80 = 0; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_60 = 0; + work->unk_68 = 0; + } + break; + } +} + +void fn_1_AB88(omObjData *object) +{ + Vec sp1C; + Vec sp10; + float var_f29; + float var_f28; + + M433PlayerWork *work = object->data; + s32 var_r30 = 0; + s32 sp8[2] = { 0x6A8, 0x6A9 }; + M433PlayerWork *var_r28 = work->unk_14C->data; + + work->unk_58 = 0; + switch (work->unk_78) { + case 0: + if ((work->unk_7C == 0) && (work->unk_78 == 0) && (work->unk_80 == 0) && (work->unk_30 = 0, work->unk_68 = 0, ((work->unk_34 == 0) != 0)) + && (work->unk_14 == fn_1_107B0(&sp1C)) && (fn_1_11060(work->unk_14) == 0)) { + float var_f31 = work->unk_128.x; + float var_f30; + if (work->unk_14 == 0) { + var_f31 *= -1.0f; + } + if (!(var_f31 > 230.0f) && (fn_1_10EA4() != 2)) { + if (fn_1_10D24(&sp1C) != 0) { + var_r30 = 1; + } + if (var_r30 != 0) { + var_f31 = sp1C.z - work->unk_128.z; + if (var_f31 > 100.0f) { + var_f31 = 100.0f; + } + else if (var_f31 < -100.0f) { + var_f31 = -100.0f; + } + else { + work->unk_58 = 1; + } + } + if ((work->unk_1C & 0x200) != 0) { + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + fn_1_B4D4(object, 0xA); + work->unk_78 = 1; + work->unk_88 = 0; + work->unk_30 = 1; + if (work->unk_14 != 0) { + var_f28 = -90.0f; + } + else { + var_f28 = 90.0f; + } + work->unk_A8 = var_f28; + work->unk_AC = 0.2f; + work->unk_B0 = 0.0f; + fn_1_D888(&work->unk_128, 0.75f); + var_f30 = 0.5f; + work->unk_124 = (2.0f * -(350.0f - lbl_1_data_E0[work->unk_00])) / (var_f30 * var_f30); + work->unk_134.y = 0.016666668f * (-work->unk_124 * var_f30); + work->unk_134.x = 0.016666668f * (-work->unk_128.x / 0.75f); + if (var_r30 != 0) { + work->unk_134.z = 0.016666668f * (var_f31 / 0.5f); + } + work->unk_60 = 1; + work->unk_58 = 0; + } + } + } + break; + case 1: + work->unk_134.y += 0.016666668f * (0.016666668f * work->unk_124); + if ((work->unk_14 == fn_1_10740(&sp1C)) && (fn_1_10FDC() == 0)) { + fn_1_10B20(0.0f, &sp1C); + if ((sp1C.x * work->unk_128.x) > 0.0f) { + sp1C.y = work->unk_128.y; + PSVECSubtract(&sp1C, &work->unk_128, &sp10); + if (PSVECMag(&sp10) < 60.000004f) { + if (frandmod(0x64) < 0x1E) { + fn_1_10740(&sp1C); + sp1C.x *= -0.5f; + fn_1_FE8C(&sp1C, 5, work->unk_14, work->unk_18); + HuAudFXPlay(sp8[work->unk_14]); + } + else { + fn_1_10740(&sp1C); + var_f29 = frandmod(0x168); + sp1C.x += 100.0 * (2.0 * sind(var_f29)); + sp1C.z += 100.0 * (2.0 * cosd(var_f29)); + fn_1_10130(&sp1C, work->unk_14); + fn_1_FE8C(&sp1C, 8, work->unk_14, work->unk_18); + HuAudFXPlay(sp8[work->unk_14]); + } + fn_1_B4D4(object, 0xD); + var_r28->unk_64 = 0; + } + } + } + if (work->unk_128.y <= 0.0f) { + fn_1_D888(&work->unk_128, 0.75f); + work->unk_30 = 0; + work->unk_78 = 0; + work->unk_134.x = work->unk_134.y = work->unk_134.z = 0.0f; + work->unk_60 = 0; + } + break; + } +} + +void fn_1_B194(omObjData *object) +{ + Vec sp8; + float var_f31; + M433PlayerWork *var_r31; + M433PlayerWork *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + for (var_r27 = 0; var_r27 < 2; var_r27++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = lbl_1_bss_7D0[var_r29]->data; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (var_r29 != var_r28) { + var_r30 = lbl_1_bss_7D0[var_r28]->data; + PSVECSubtract(&var_r31->unk_128, &var_r30->unk_128, &sp8); + sp8.y = 0.0f; + var_f31 = PSVECMag(&sp8); + if (var_f31 < (var_r31->unk_120 + var_r30->unk_120)) { + if (var_f31 > 0.0f) { + var_f31 = 0.5f * ((var_r31->unk_120 + var_r30->unk_120) - var_f31); + } + else { + var_f31 = 0.5f * (var_r31->unk_120 + var_r30->unk_120); + sp8.x = frandmod(0x3E8) - 0x1F4; + sp8.z = frandmod(0x3E8) - 0x1F4; + } + PSVECNormalize(&sp8, &sp8); + PSVECScale(&sp8, &sp8, var_f31); + PSVECAdd(&var_r31->unk_128, &sp8, &var_r31->unk_128); + PSVECSubtract(&var_r30->unk_128, &sp8, &var_r30->unk_128); + } + } + } + if (var_r31->unk_128.y < 0.0f) { + var_r31->unk_128.y = 0.0f; + } + if ((var_r31->unk_128.z - var_r31->unk_120) < -500.0f) { + var_r31->unk_128.z = -500.0f + var_r31->unk_120; + } + else if ((var_r31->unk_128.z + var_r31->unk_120) > 500.0f) { + var_r31->unk_128.z = 500.0f - var_r31->unk_120; + } + if (var_r31->unk_14 == 0) { + var_r31->unk_128.x *= -1.0f; + } + if ((var_r31->unk_128.x - var_r31->unk_120) < 20.0f) { + var_r31->unk_128.x = 20.0f + var_r31->unk_120; + } + else if ((60.000004f + var_r31->unk_128.x) > 800.0f) { + var_r31->unk_128.x = 740.0f; + } + if (var_r31->unk_14 == 0) { + var_r31->unk_128.x *= -1.0f; + } } } } -// void fn_1_AB88(omObjData *object) -// { -// Vec sp1C; /* compiler-managed */ -// Vec sp10; -// s32 spC; -// s32 sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// float var_f28; -// void *var_r31; -// s32 var_r30; -// omObjData *var_r29; -// void *var_r28; -// s32 temp_r0; +void fn_1_B4D4(omObjData *object, u32 arg1) +{ + M433PlayerWork *work = object->data; + if ((work->unk_0C != arg1) && (arg1 < 0x15)) { + float var_f31 = 60.0f * lbl_1_data_24C[arg1].unk_04; + if (work->unk_0C < 0) { + var_f31 = 0.0f; + } + work->unk_0C = arg1; + if (work->unk_04 < 0) { + CharModelMotionShiftSet( + work->unk_00, object->motion[lbl_1_data_24C[arg1].unk_00], 60.0f * lbl_1_data_24C[arg1].unk_08, var_f31, lbl_1_data_24C[arg1].unk_10); + } + else { + Hu3DMotionShiftSet(object->model[0], object->motion[lbl_1_data_24C[arg1].unk_00], 60.0f * lbl_1_data_24C[arg1].unk_08, var_f31, + lbl_1_data_24C[arg1].unk_10); + } + if (lbl_1_data_24C[arg1].unk_0C >= 0.0f) { + Hu3DMotionShiftStartEndSet(object->model[0], 60.0f * lbl_1_data_24C[arg1].unk_08, 60.0f * lbl_1_data_24C[arg1].unk_0C); + } + work->unk_10 = 0; + } +} -// var_r29 = object; -// var_r31 = var_r29->data; -// var_r30 = 0; -// sp8 = lbl_1_rodata_5A0.unk_00; -// spC = lbl_1_rodata_5A0.unk_04; -// var_r28 = var_r31->unk_14C->unk_5C; -// var_r31->unk_58 = 0; -// temp_r0 = var_r31->unk_78; -// switch (temp_r0) { -// case 0: -// if ((var_r31->unk_7C == 0) && (var_r31->unk_78 == 0) && (var_r31->unk_80 == 0) -// && (var_r31->unk_30 = 0, var_r31->unk_68 = 0, ((var_r31->unk_34 == 0) != 0)) && (var_r31->unk_14 == fn_1_107B0(&sp1C)) -// && (fn_1_11060(var_r31->unk_14) == 0)) { -// var_f31 = var_r31->unk_128; -// if (var_r31->unk_14 == 0) { -// var_f31 *= -1.0f; -// } -// if (!(var_f31 > 230.0f) && (fn_1_10EA4() != 2)) { -// if (fn_1_10D24(&sp1C) != 0) { -// var_r30 = 1; -// } -// if (var_r30 != 0) { -// var_f31 = sp1C.z - var_r31->unk_130; -// if (var_f31 > 100.0f) { -// var_f31 = 100.0f; -// } -// else if (var_f31 < -100.0f) { -// var_f31 = -100.0f; -// } -// else { -// var_r31->unk_58 = 1; -// } -// } -// if ((var_r31->unk_1C & 0x200) != 0) { -// var_r31->unk_13C = 0.0f; -// var_r31->unk_138 = 0.0f; -// var_r31->unk_134 = 0.0f; -// fn_1_B4D4(var_r29, 0xA); -// var_r31->unk_78 = 1; -// var_r31->unk_88 = 0; -// var_r31->unk_30 = 1; -// if (var_r31->unk_14 != 0) { -// var_f28 = -90.0f; -// } -// else { -// var_f28 = 90.0f; -// } -// var_r31->unk_A8 = var_f28; -// var_r31->unk_AC = 0.2f; -// var_r31->unk_B0 = 0.0f; -// fn_1_D888(&var_r31->unk_128, 0.75f); -// var_f30 = 0.5f; -// var_r31->unk_124 = (2.0f * -(350.0f - lbl_1_data_E0[var_r31->unk_00])) / (0.5f * 0.5f); -// var_r31->unk_138 = 0.016666668f * (-var_r31->unk_124 * 0.5f); -// var_r31->unk_134 = 0.016666668f * (-var_r31->unk_128 / 0.75f); -// if (var_r30 != 0) { -// var_r31->unk_13C = 0.016666668f * (var_f31 / 0.5f); -// } -// var_r31->unk_60 = 1; -// var_r31->unk_58 = 0; -// return; -// } -// } -// } -// else { -// return; -// } -// break; -// case 1: -// var_r31->unk_138 = var_r31->unk_138 + (0.016666668f * (0.016666668f * var_r31->unk_124)); -// if ((var_r31->unk_14 == fn_1_10740(&sp1C)) && (fn_1_10FDC() == 0)) { -// fn_1_10B20(0.0f, &sp1C); -// if ((sp1C * var_r31->unk_128) > 0.0f) { -// sp1C.y = var_r31->unk_12C; -// PSVECSubtract(&sp1C, &var_r31->unk_128, &sp10); -// if (PSVECMag(&sp10) < 60.000004f) { -// if (frandmod(0x64) < 0x1E) { -// fn_1_10740(&sp1C); -// sp1C = sp1C * -0.5f; -// fn_1_FE8C(&sp1C, 5, var_r31->unk_14, var_r31->unk_18); -// HuAudFXPlay((&sp8)[var_r31->unk_14]); -// } -// else { -// fn_1_10740(&sp1C); -// var_f29 = frandmod(0x168); -// sp1C = sp1C + (100.0 * (2.0 * sind(var_f29))); -// sp1C.z = sp1C.z + (100.0 * (2.0 * cosd(var_f29))); -// fn_1_10130(&sp1C, var_r31->unk_14); -// fn_1_FE8C(&sp1C, 8, var_r31->unk_14, var_r31->unk_18); -// HuAudFXPlay((&sp8)[var_r31->unk_14]); -// } -// fn_1_B4D4(var_r29, 0xD); -// var_r28->unk_64 = 0; -// } -// } -// } -// if (var_r31->unk_12C <= 0.0f) { -// fn_1_D888(&var_r31->unk_128, 0.75f); -// var_r31->unk_30 = 0; -// var_r31->unk_78 = 0; -// var_r31->unk_13C = 0.0f; -// var_r31->unk_138 = 0.0f; -// var_r31->unk_134 = 0.0f; -// var_r31->unk_60 = 0; -// } -// break; -// } -// } +s32 fn_1_B6E0(omObjData *object) +{ + M433PlayerWork *work = object->data; + s32 var_r29 = 0; + if (work->unk_04 < 0) { + if (((CharModelMotionEndCheck(work->unk_00) != 0) || (work->unk_10 != 0)) && (CharModelMotionShiftIDGet(work->unk_00) < 0)) { + var_r29 = 1; + } + } + else if (((Hu3DMotionEndCheck(object->model[0]) != 0) || (work->unk_10 != 0)) && (Hu3DMotionShiftIDGet(object->model[0]) < 0)) { + var_r29 = 1; + } + return var_r29; +} -// void fn_1_B194(omObjData *object) -// { -// Vec sp8; -// float var_f31; -// void *var_r31; -// void *var_r30; -// s32 var_r29; -// s32 var_r28; -// s32 var_r27; +s32 fn_1_B7AC(omObjData *object) +{ + M433PlayerWork *work = object->data; + s32 var_r30 = 0; + if (work->unk_04 < 0) { + if (CharModelMotionShiftIDGet(work->unk_00) < 0) { + var_r30 = 1; + } + } + else if (Hu3DMotionShiftIDGet(object->model[0]) < 0) { + var_r30 = 1; + } + return var_r30; +} -// for (var_r27 = 0; var_r27 < 2; var_r27++) { -// for (var_r29 = 0; var_r29 < 4; var_r29++) { -// var_r31 = lbl_1_bss_7D0[var_r29]->data; -// for (var_r28 = 0; var_r28 < 4; var_r28++) { -// if (var_r29 != var_r28) { -// var_r30 = lbl_1_bss_7D0[var_r28]->data; -// PSVECSubtract(&var_r31->unk_128, var_r30 + 0x128, &sp8); -// sp8.y = 0.0f; -// var_f31 = PSVECMag(&sp8); -// if (var_f31 < (var_r31->unk_120 + var_r30->unk_120)) { -// if (var_f31 > 0.0f) { -// var_f31 = 0.5f * ((var_r31->unk_120 + var_r30->unk_120) - var_f31); -// } -// else { -// var_f31 = 0.5f * (var_r31->unk_120 + var_r30->unk_120); -// sp8 = frandmod(0x3E8) - 0x1F4; -// sp8.z = frandmod(0x3E8) - 0x1F4; -// } -// PSVECNormalize(&sp8, &sp8); -// PSVECScale(&sp8, &sp8, var_f31); -// PSVECAdd(&var_r31->unk_128, &sp8, &var_r31->unk_128); -// PSVECSubtract(var_r30 + 0x128, &sp8, var_r30 + 0x128); -// } -// } -// } -// if (var_r31->unk_12C < 0.0f) { -// var_r31->unk_12C = 0.0f; -// } -// if ((var_r31->unk_130 - var_r31->unk_120) < -500.0f) { -// var_r31->unk_130 = -500.0f + var_r31->unk_120; -// } -// else if ((var_r31->unk_130 + var_r31->unk_120) > 500.0f) { -// var_r31->unk_130 = 500.0f - var_r31->unk_120; -// } -// if (var_r31->unk_14 == 0) { -// var_r31->unk_128 = var_r31->unk_128 * -1.0f; -// } -// if ((var_r31->unk_128 - var_r31->unk_120) < 20.0f) { -// var_r31->unk_128 = 20.0f + var_r31->unk_120; -// } -// else if ((60.000004f + var_r31->unk_128) > 800.0f) { -// var_r31->unk_128 = 740.0f; -// } -// if (var_r31->unk_14 == 0) { -// var_r31->unk_128 = var_r31->unk_128 * -1.0f; -// } -// } -// } -// } +s32 fn_1_B838(omObjData *object, u32 arg1) +{ + s32 var_r26 = 0; + if (fn_1_B6E0(object)) { + fn_1_B4D4(object, arg1); + var_r26 = 1; + } + return var_r26; +} -// void fn_1_B4D4(omObjData *object, u32 arg1) -// { -// float var_f31; -// void *var_r31; -// u32 var_r30; -// omObjData *var_r29; - -// var_r29 = object; -// var_r30 = arg1; -// var_r31 = var_r29->data; -// if ((var_r31->unk_0C != var_r30) && (var_r30 < 0x15)) { -// var_f31 = 60.0f * lbl_1_data_24C[var_r30].unk_04; -// if (var_r31->unk_0C < 0) { -// var_f31 = 0.0f; -// } -// var_r31->unk_0C = var_r30; -// if (var_r31->unk_04 < 0) { -// CharModelMotionShiftSet(var_r31->unk_00, var_r29->motion[lbl_1_data_24C[var_r30].unk_00], 60.0f * lbl_1_data_24C[var_r30].unk_08, -// var_f31, -// lbl_1_data_24C[var_r30].unk_10); -// } -// else { -// Hu3DMotionShiftSet(var_r29->model[0], var_r29->motion[lbl_1_data_24C[var_r30].unk_00], 60.0f * lbl_1_data_24C[var_r30].unk_08, var_f31, -// lbl_1_data_24C[var_r30].unk_10); -// } -// if (lbl_1_data_24C[var_r30].unk_0C >= 0.0f) { -// Hu3DMotionShiftStartEndSet(var_r29->model[0], 60.0f * lbl_1_data_24C[var_r30].unk_08, 60.0f * lbl_1_data_24C[var_r30].unk_0C); -// } -// var_r31->unk_10 = 0; -// } -// } - -// s32 fn_1_B6E0(omObjData *object) -// { -// void *var_r31; -// omObjData *var_r30; -// s32 var_r29; - -// var_r30 = object; -// var_r31 = var_r30->data; -// var_r29 = 0; -// if (var_r31->unk_04 < 0) { -// if (((CharModelMotionEndCheck(var_r31->unk_00) != 0) || (var_r31->unk_10 != 0)) && (CharModelMotionShiftIDGet(var_r31->unk_00) < 0)) { -// var_r29 = 1; -// } -// } -// else if (((Hu3DMotionEndCheck(var_r30->model[0]) != 0) || (var_r31->unk_10 != 0)) && (Hu3DMotionShiftIDGet(var_r30->model[0]) < 0)) { -// var_r29 = 1; -// } -// return var_r29; -// } - -// s32 fn_1_B7AC(omObjData *object) -// { -// void *var_r31; -// s32 var_r30; -// omObjData *var_r29; - -// var_r29 = object; -// var_r31 = var_r29->data; -// var_r30 = 0; -// if (var_r31->unk_04 < 0) { -// if (CharModelMotionShiftIDGet(var_r31->unk_00) < 0) { -// var_r30 = 1; -// } -// } -// else if (Hu3DMotionShiftIDGet(var_r29->model[0]) < 0) { -// var_r30 = 1; -// } -// return var_r30; -// } - -// s32 fn_1_B838(void *arg0, u32 arg1) -// { -// float var_f31; -// void *var_r31; -// void *var_r30; -// u32 var_r29; -// void *var_r28; -// s32 var_r27; -// s32 var_r26; - -// var_r31 = arg0; -// var_r29 = arg1; -// var_r26 = 0; -// var_r28 = var_r31->unk_5C; -// var_r27 = 0; -// if (var_r28->unk_04 < 0) { -// if (((CharModelMotionEndCheck(var_r28->unk_00) != 0) || (var_r28->unk_10 != 0)) && (CharModelMotionShiftIDGet(var_r28->unk_00) < 0)) { -// var_r27 = 1; -// } -// } -// else if (((Hu3DMotionEndCheck(*var_r31->unk_40) != 0) || (var_r28->unk_10 != 0)) && (Hu3DMotionShiftIDGet(*var_r31->unk_40) < 0)) { -// var_r27 = 1; -// } -// if (var_r27 != 0) { -// var_r30 = var_r31->unk_5C; -// if ((var_r30->unk_0C != var_r29) && (var_r29 < 0x15)) { -// var_f31 = 60.0f * lbl_1_data_24C[var_r29].unk_04; -// if (var_r30->unk_0C < 0) { -// var_f31 = 0.0f; -// } -// var_r30->unk_0C = var_r29; -// if (var_r30->unk_04 < 0) { -// CharModelMotionShiftSet(var_r30->unk_00, *(var_r31->unk_48 + (lbl_1_data_24C[var_r29].unk_00 * 2)), -// 60.0f * lbl_1_data_24C[var_r29].unk_08, var_f31, lbl_1_data_24C[var_r29].unk_10); -// } -// else { -// Hu3DMotionShiftSet(*var_r31->unk_40, *(var_r31->unk_48 + (lbl_1_data_24C[var_r29].unk_00 * 2)), -// 60.0f * lbl_1_data_24C[var_r29].unk_08, var_f31, lbl_1_data_24C[var_r29].unk_10); -// } -// if (lbl_1_data_24C[var_r29].unk_0C >= 0.0f) { -// Hu3DMotionShiftStartEndSet(*var_r31->unk_40, 60.0f * lbl_1_data_24C[var_r29].unk_08, 60.0f * lbl_1_data_24C[var_r29].unk_0C); -// } -// var_r30->unk_10 = 0; -// } -// var_r26 = 1; -// } -// return var_r26; -// } - -// s32 fn_1_BAE0(omObjData *object, u32 arg1) -// { -// float var_f31; -// omObjData *var_r31; -// void *var_r30; -// u32 var_r29; -// void *var_r28; -// s32 var_r27; -// s32 var_r26; - -// var_r31 = object; -// var_r29 = arg1; -// var_r26 = 0; -// var_r28 = var_r31->data; -// var_r27 = 0; -// if (var_r28->unk_04 < 0) { -// if (CharModelMotionShiftIDGet(var_r28->unk_00) < 0) { -// var_r27 = 1; -// } -// } -// else if (Hu3DMotionShiftIDGet(var_r31->model[0]) < 0) { -// var_r27 = 1; -// } -// if (var_r27 != 0) { -// var_r30 = var_r31->data; -// if ((var_r30->unk_0C != var_r29) && (var_r29 < 0x15)) { -// var_f31 = 60.0f * lbl_1_data_24C[var_r29].unk_04; -// if (var_r30->unk_0C < 0) { -// var_f31 = 0.0f; -// } -// var_r30->unk_0C = var_r29; -// if (var_r30->unk_04 < 0) { -// CharModelMotionShiftSet(var_r30->unk_00, var_r31->motion[lbl_1_data_24C[var_r29].unk_00], 60.0f * lbl_1_data_24C[var_r29].unk_08, -// var_f31, lbl_1_data_24C[var_r29].unk_10); -// } -// else { -// Hu3DMotionShiftSet(var_r31->model[0], var_r31->motion[lbl_1_data_24C[var_r29].unk_00], 60.0f * lbl_1_data_24C[var_r29].unk_08, -// var_f31, lbl_1_data_24C[var_r29].unk_10); -// } -// if (lbl_1_data_24C[var_r29].unk_0C >= 0.0f) { -// Hu3DMotionShiftStartEndSet(var_r31->model[0], 60.0f * lbl_1_data_24C[var_r29].unk_08, 60.0f * lbl_1_data_24C[var_r29].unk_0C); -// } -// var_r30->unk_10 = 0; -// } -// var_r26 = 1; -// } -// return var_r26; -// } +s32 fn_1_BAE0(omObjData *object, u32 arg1) +{ + s32 var_r26 = 0; + if (fn_1_B7AC(object)) { + fn_1_B4D4(object, arg1); + var_r26 = 1; + } + return var_r26; +} void fn_1_BD48(omObjData *object) { @@ -2262,30 +2144,30 @@ void fn_1_BD48(omObjData *object) object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433PlayerWork2), MEMORY_DEFAULT_NUM); work = object->data; memset(work, 0, sizeof(M433PlayerWork2)); - object->model[0] = Hu3DModelCreateFile(0x400000); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 0)); Hu3DModelShadowSet(object->model[0]); - object->model[1] = Hu3DModelCreateFile(0x400004); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 4)); Hu3DModelAttrSet(object->model[1], HU3D_MOTATTR_LOOP); - object->model[2] = Hu3DModelCreateFile(0x400004); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 4)); Hu3DModelAttrSet(object->model[2], HU3D_MOTATTR_LOOP); - object->model[3] = Hu3DModelCreateFile(0x400003); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 3)); Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); - object->model[4] = Hu3DModelCreateFile(0x400007); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 7)); Hu3DModelAttrSet(object->model[4], HU3D_ATTR_DISPOFF); - object->model[6] = Hu3DModelCreateFile(0x400005); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 5)); Hu3DModelAttrSet(object->model[6], HU3D_ATTR_DISPOFF); Hu3DModelScaleSet(object->model[6], 0.75f, 0.75f, 0.75f); Hu3DModelLayerSet(object->model[6], 2); - object->model[7] = Hu3DModelCreateFile(0x400006); + object->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 6)); Hu3DModelAttrSet(object->model[7], HU3D_ATTR_DISPOFF); Hu3DModelScaleSet(object->model[7], 0.75f, 0.75f, 0.75f); Hu3DModelLayerSet(object->model[7], 2); - var_r28 = Hu3DParticleCreate(HuSprAnimRead(HuDataReadNum(0x120002, 0x10000000)), 1); + var_r28 = Hu3DParticleCreate(HuSprAnimRead(HuDataReadNum(0x120002, MEMORY_DEFAULT_NUM)), 1); object->model[8] = var_r28; Hu3DModelLayerSet(var_r28, 2); Hu3DParticleHookSet(var_r28, fn_1_DE28); Hu3DModelAttrSet(var_r28, HU3D_ATTR_DISPOFF); - var_r28 = Hu3DParticleCreate(HuSprAnimReadFile(0x400009), 0xC8); + var_r28 = Hu3DParticleCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M433, 9)), 0xC8); object->model[5] = var_r28; Hu3DModelLayerSet(var_r28, 2); Hu3DParticleHookSet(var_r28, fn_1_D6A8); @@ -2294,14 +2176,14 @@ void fn_1_BD48(omObjData *object) var_r27->unk40.a = 0; var_r27->unk00_s16 = 0; } - object->model[9] = Hu3DModelCreateFile(0x400002); + object->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 2)); Hu3DModelScaleSet(object->model[9], 1.05f, 1.05f, 1.05f); Hu3DModelAttrSet(object->model[9], HU3D_ATTR_DISPOFF); Hu3DModelLayerSet(object->model[9], 1); Hu3DModelShadowSet(object->model[9]); for (var_r29 = 1; var_r29 < 0x15; var_r29++) { if (var_r29 == 0xA) { - object->model[var_r29 + 9] = Hu3DModelCreateFile(0x400001); + object->model[var_r29 + 9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M433, 1)); } else { object->model[var_r29 + 9] = Hu3DModelLink(object->model[9]); @@ -2311,1781 +2193,1392 @@ void fn_1_BD48(omObjData *object) Hu3DModelScaleSet(object->model[var_r29 + 9], 1.05f, 1.05f, 1.05f); Hu3DModelAttrSet(object->model[var_r29 + 9], HU3D_ATTR_DISPOFF); } - object->trans.x = work->unk_30 = 0.0f; - object->trans.y = work->unk_34 = 0.0f; - object->trans.z = work->unk_38 = 0.0f; + object->trans.x = work->unk_30.x = 0.0f; + object->trans.y = work->unk_30.y = 0.0f; + object->trans.z = work->unk_30.z = 0.0f; work->unk_B8 = 0.0f; - work->unk_BC = work->unk_C0 = 0.0f; - work->unk_C4 = 1.0f; + work->unk_BC.x = work->unk_BC.y = 0.0f; + work->unk_BC.z = 1.0f; PSMTXIdentity(work->unk_C8); work->unk_18 = 0; object->func = fn_1_C240; } -// void fn_1_C240(omObjData *object) -// { -// s32 sp8; -// s32 temp_r4; -// void *var_r31; -// omObjData *var_r30; -// s32 var_r29; -// u16 temp_r0; - -// var_r30 = object; -// var_r31 = var_r30->data; -// sp8 = 0; -// var_r31->unk_00 = 0; -// temp_r0 = var_r31->unk_18; -// switch (temp_r0) { -// case 0: -// var_r31->unk_04 = 1; -// break; -// case 1: -// var_r31->unk_B8 = 0.0f; -// var_r31->unk_C0 = 0.0f; -// var_r31->unk_BC = 0.0f; -// var_r31->unk_C4 = 1.0f; -// PSMTXIdentity(var_r31 + 0xC8); -// var_r31->unk_00 = 1; -// break; -// case 10: -// var_r31->unk_00 = 1; -// break; -// } -// var_r31->unk_8C++; -// if (var_r31->unk_90 != 0) { -// var_r31->unk_A0 = 1.0f; -// if (var_r31->unk_94 == 2) { -// var_r31->unk_A4 = var_r31->unk_A4 + 12.000001f; -// if (var_r31->unk_A4 >= 360.0f) { -// var_r31->unk_A4 = var_r31->unk_A4 - 360.0f; -// } -// var_r31->unk_A0 = 1.5f; -// var_r31->unk_A8 = var_r31->unk_A8 + 0.015000001f; -// Hu3DMotionSpeedSet(var_r30->model->unk_06, 2.5f); -// } -// else { -// Hu3DMotionTimeSet(var_r30->model->unk_06, 0.0f); -// Hu3DMotionSpeedSet(var_r30->model->unk_06, 0.0f); -// } -// Hu3DModelRotSet(var_r30->model->unk_06, 0.0f, var_r31->unk_A4, 0.0f); -// Hu3DModelAttrReset(var_r30->model->unk_06, HU3D_ATTR_DISPOFF); -// Hu3DModelPosSet(var_r30->model->unk_06, var_r31->unk_AC, 3.0f + var_r31->unk_B0, var_r31->unk_B4); -// var_r31->unk_98++; -// var_r31->unk_90 = 0; -// } -// else if (var_r31->unk_94 != 0) { -// var_r31->unk_94 = 0; -// var_r31->unk_A0 = 0.0f; -// } -// var_r31->unk_9C = var_r31->unk_9C + (0.2f * (var_r31->unk_A0 - var_r31->unk_9C)); -// Hu3DModelScaleSet(var_r30->model->unk_06, var_r31->unk_9C, 1.0f, var_r31->unk_9C); -// if ((var_r31->unk_A0 <= 0.0f) && (var_r31->unk_9C < 0.1f)) { -// Hu3DModelAttrSet(var_r30->model->unk_06, HU3D_ATTR_DISPOFF); -// var_r31->unk_9C = 0.0f; -// } -// for (var_r29 = 0; var_r29 < 2; var_r29++) { -// temp_r4 = (var_r29 * 4) + 0x7C; -// *(var_r31 + temp_r4) = *(var_r31 + temp_r4) + (0.3f * (*(var_r31 + ((var_r29 * 4) + 0x84)) - *(var_r31 + ((var_r29 * 4) + 0x7C)))); -// if (*(var_r31 + ((var_r29 * 4) + 0x84)) > 0.0f) { -// Hu3DModelAttrReset(var_r30->model[var_r29 + 1], HU3D_ATTR_DISPOFF); -// } -// else if (*(var_r31 + ((var_r29 * 4) + 0x7C)) < 0.1f) { -// Hu3DModelAttrSet(var_r30->model[var_r29 + 1], HU3D_ATTR_DISPOFF); -// } -// Hu3DModelScaleSet(var_r30->model[var_r29 + 1], *(var_r31 + ((var_r29 * 4) + 0x7C)), 1.0f, *(var_r31 + ((var_r29 * 4) + 0x7C))); -// } -// fn_1_C6B0(var_r30); -// fn_1_CB98(var_r30); -// var_r30->trans.x = var_r31->unk_30; -// var_r30->trans.y = var_r31->unk_34; -// var_r30->trans.z = var_r31->unk_38; -// if ((fn_1_216C() >= 3) && (var_r31->unk_04 != 0) && (fn_1_2244() != 0)) { -// fn_1_DD70(var_r31 + 0x30); -// Hu3DModelAttrSet(var_r30->model->unk_00, HU3D_ATTR_DISPOFF); -// var_r30->func = fn_1_C6AC; -// } -// } - -// void fn_1_C6AC(omObjData *object) { } - -// s32 fn_1_C6B0(omObjData *object) -// { -// Vec sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// float var_f28; -// float var_f27; -// float var_f26; -// void *var_r31; -// omObjData *var_r30; -// void *var_r29; -// s32 var_r28; - -// var_r30 = object; -// var_r31 = var_r30->data; -// if ((var_r31->unk_00 == 0) && (var_r31->unk_04 == 0) && (var_r31->unk_08 == 0)) { -// if (var_r31->unk_10 == 0) { -// fn_1_CDB8(var_r31 + 0xF8, var_r31 + 0x30, var_r31 + 0x3C, var_r31->unk_6C, var_r31->unk_A8); -// fn_1_D338(var_r31 + 0xF8); -// fn_1_D180(var_r31 + 0xF8); -// var_r31->unk_B8 = var_r31->unk_A8 * (8.0f * lbl_1_data_48C[var_r31->unk_6C]); -// PSVECSubtract(var_r31 + 0x3C, var_r31 + 0x30, &sp8); -// sp8.y = 0.0f; -// if (PSVECMag(&sp8) <= 0.0f) { -// var_r31->unk_C0 = 0.0f; -// var_r31->unk_BC = 0.0f; -// var_r31->unk_C4 = 1.0f; -// } -// else { -// PSVECNormalize(&sp8, &sp8); -// var_r31->unk_BC = -sp8.z; -// var_r31->unk_C0 = 0.0f; -// var_r31->unk_C4 = sp8; -// } -// var_r31->unk_48 = 0.0f; -// var_r28 = 0; -// if (var_r31->unk_84 > 0.0f) { -// var_r28 = 1; -// } -// Hu3DModelPosSet(var_r30->model[var_r28 + 1], var_r31->unk_130, 3.0f + var_r31->unk_134, var_r31->unk_138); -// if (var_r31->unk_9C <= 0.0f) { -// var_r31->unk_8C = 9; -// } -// if (lbl_1_data_468[var_r31->unk_6C] != 0) { -// *(var_r31 + ((var_r28 * 4) + 0x84)) = 1.0f; -// } -// *(var_r31 + (((1 - var_r28) * 4) + 0x84)) = 0.0f; -// } -// var_r31->unk_10 = 1; -// if (var_r31->unk_B8 != 0.0f) { -// PSMTXRotAxisRad(&sp14[0], var_r31 + 0xBC, 0.017453292f * var_r31->unk_B8); -// PSMTXConcat(&sp14[0], var_r31 + 0xC8, var_r31 + 0xC8); -// PSMTXCopy(var_r31 + 0xC8, Hu3DData[var_r30->model->unk_00].unk_F0[0]); -// } -// var_r31->unk_48 = var_r31->unk_48 + 0.016666668f; -// var_r31->unk_08 = fn_1_D4E0(var_r31 + 0xF8, var_r31 + 0x30, var_r31 + 0x4C, var_r31->unk_48); -// if (var_r31->unk_08 != 0) { -// var_r31->unk_88 = 0.0f; -// var_r31->unk_84 = 0.0f; -// if (var_r31->unk_34 <= 12.0f) { -// var_r29 = lbl_1_bss_7C8->data; -// var_r31->unk_78 = 0; -// Hu3DModelPosSetV(var_r30->model->unk_08, var_r31 + 0x30); -// Hu3DMotionTimeSet(var_r30->model->unk_08, 0.0f); -// if ((var_r31->unk_6C == 5) || (var_r31->unk_6C == 2)) { -// Hu3DMotionSpeedSet(var_r30->model->unk_08, 1.5f); -// fn_1_D888(var_r31 + 0x30, 1.0f); -// } -// else { -// Hu3DMotionSpeedSet(var_r30->model->unk_08, 1.0f); -// fn_1_D888(var_r31 + 0x30, 0.5f); -// var_r31->unk_34 = var_r31->unk_34 + 11.0f; -// } -// var_r31->unk_6C = 0; -// var_r31->unk_04 = 1; -// var_r29->unk_2C = 1; -// var_r29->unk_38 = -1; -// var_f31 = var_r31->unk_38; -// var_f29 = fabs(var_f31); -// var_f28 = var_f29; -// if (var_f28 < 350.0) { -// var_f30 = var_r31->unk_30; -// var_f27 = fabs(var_f30); -// var_f26 = var_f27; -// if (var_f26 < 700.0) { -// var_r29->unk_38 = 0; -// if (var_r31->unk_30 >= 0.0f) { -// var_r29->unk_38 = 1; -// } -// } -// } -// } -// } -// } -// else { -// var_r31->unk_10 = 0; -// } -// return var_r31->unk_08; -// } - -// void fn_1_CB98(omObjData *object) -// { -// Vec sp14; -// Vec sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// float var_f28; -// void *var_r31; -// omObjData *var_r30; -// s32 var_r29; - -// var_r30 = object; -// var_r31 = var_r30->data; -// if (var_r31->unk_78 != 0) { -// Hu3DModelAttrSet(var_r30->model[0], HU3D_ATTR_DISPOFF); -// var_f30 = var_r31->unk_FC; -// var_f29 = var_f30; -// var_f31 = var_f29 - (0.020000001f * var_r31->unk_A8); -// if (var_f31 < 0.0f) { -// var_f31 = 0.0f; -// } -// var_f31 = (var_f30 - var_f31) / 21.0f; -// PSMTXCopy(var_r31 + 0xC8, &sp20[0]); -// var_f28 = (var_r31->unk_B8 * (1.2f * var_r31->unk_A8)) / 21.0f; -// PSMTXRotAxisRad(&sp50[0], var_r31 + 0xBC, 0.017453292f * -var_f28); -// for (var_r29 = 0; var_r29 < 0x15; var_r29++) { -// Hu3DModelAttrReset(var_r30->model[var_r29 + 9], HU3D_ATTR_DISPOFF); -// fn_1_D4E0(var_r31 + 0xF8, &sp14, &sp8, var_f30); -// Hu3DModelPosSetV(var_r30->model[var_r29 + 9], &sp14); -// PSMTXCopy(&sp20[0], Hu3DData[var_r30->model[var_r29 + 9]].unk_F0[0]); -// PSMTXConcat(&sp50[0], &sp20[0], &sp20[0]); -// var_f30 -= var_f31; -// } -// var_r31->unk_FC = var_f29; -// return; -// } -// Hu3DModelAttrReset(var_r30->model[0], HU3D_ATTR_DISPOFF); -// for (var_r29 = 0; var_r29 < 0x15; var_r29++) { -// Hu3DModelAttrSet(var_r30->model[var_r29 + 9], HU3D_ATTR_DISPOFF); -// } -// } - -// void fn_1_CDB8(float *arg0, Vec *arg1, Vec *arg2, u32 arg3, float arg8) -// { -// Vec sp18; -// float sp14; -// float sp10; -// float spC; -// float sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// float var_f28; -// double var_f27; -// double var_f26; -// float *var_r31; -// Vec *var_r30; -// Vec *var_r29; -// u32 var_r28; - -// var_r31 = arg0; -// var_r30 = arg1; -// var_r29 = arg2; -// var_r28 = arg3; -// sp8 = arg8; -// var_r31->unk_0C = 0.0f; -// var_r31->unk_08 = 0.0f; -// var_f31 = lbl_1_data_4D4[var_r28].y; -// var_r31->unk_00 = var_f31; -// if (var_r31->unk_00 <= 0.0f) { -// if (((var_r29->x * var_r30->x) < 0.0f) && (var_r30->x != 0.0f) && (lbl_1_data_4D4[var_r28].x > 0.0f)) { -// var_r31->unk_0C = lbl_1_data_4D4[var_r28].x; -// var_f28 = var_r30->x / (var_r29->x - var_r30->x); -// var_f27 = fabs(var_f28); -// var_f26 = var_f27; -// var_r31->unk_08 = var_f26; -// var_f29 = var_r30->y + (var_r31->unk_08 * (var_r29->y - var_r30->y)); -// if (var_f29 < var_r31->unk_0C) { -// spC = var_r30->x + (var_r31->unk_08 * (var_r29->x - var_r30->x)); -// sp10 = var_r31->unk_0C; -// sp14 = var_r30->z + (var_r31->unk_08 * (var_r29->z - var_r30->z)); -// PSVECSubtract(var_r29, &spC, &sp18); -// var_f30 = PSVECMag(&sp18); -// PSVECSubtract(&spC, var_r30, &sp18); -// var_f30 += PSVECMag(&sp18); -// } -// else { -// PSVECSubtract(var_r29, var_r30, &sp18); -// var_f30 = PSVECMag(&sp18); -// } -// } -// else { -// PSVECSubtract(var_r29, var_r30, &sp18); -// var_f30 = PSVECMag(&sp18); -// } -// var_f31 = var_f30 / (sp8 * lbl_1_data_4D4[var_r28].z); -// var_r31->unk_00 = var_f31; -// } -// var_r31->unk_04 = 0.0f; -// var_r31->unk_2C = var_r30->x; -// var_r31->unk_30 = var_r30->y; -// var_r31->unk_34 = var_r30->z; -// var_r31->unk_38 = var_r29->x; -// var_r31->unk_3C = var_r29->y; -// var_r31->unk_40 = var_r29->z; -// var_r31->unk_1C = var_r29->y - var_r30->y; -// var_r31->unk_24 = -980.0f; -// PSVECSubtract(var_r29, var_r30, &sp18); -// sp18.y = 0.0f; -// var_r31->unk_10 = PSVECMag(&sp18); -// var_r31->unk_18 = 0.0f; -// if (var_f31 > 0.0f) { -// var_r31->unk_20 = (var_r31->unk_1C - (0.5f * (-980.0f * (var_f31 * var_f31)))) / var_f31; -// var_r31->unk_14 = var_r31->unk_10 / var_f31; -// } -// else { -// var_r31->unk_20 = var_r31->unk_1C; -// var_r31->unk_14 = var_r31->unk_10; -// } -// var_r31->unk_28 = lbl_1_data_540[var_r28]; -// } - -// void fn_1_D180(float *arg0) -// { -// float sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// float var_f28; -// float var_f27; -// float var_f26; -// float var_f25; -// s32 var_r31; - -// if (!(arg0->unk_0C <= 0.0f)) { -// var_f31 = arg0->unk_00; -// var_f28 = arg0->unk_00; -// var_f27 = 10.0f * arg0->unk_00; -// for (var_r31 = 0; var_r31 < 0x10; var_r31++) { -// var_f30 = 1.0f / var_f31; -// sp8 = arg0->unk_10 * var_f30; -// var_f26 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * var_f31); -// var_f29 = arg0->unk_08 * var_f31; -// var_f25 = arg0->unk_30 + ((var_f29 * (0.5f * arg0->unk_24 * var_f29)) + (var_f26 * var_f29)); -// if (arg0->unk_0C > var_f25) { -// var_f28 = var_f31; -// } -// else { -// var_f27 = var_f31; -// } -// var_f31 = 0.5f * (var_f28 + var_f27); -// } -// var_f30 = 1.0f / var_f31; -// arg0->unk_00 = var_f31; -// arg0->unk_14 = arg0->unk_10 * var_f30; -// arg0->unk_20 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * var_f31); -// } -// } - -// void fn_1_D338(float *arg0) -// { -// float sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// float var_f28; -// float var_f27; -// float var_f26; -// float var_f25; -// s32 var_r31; - -// if (!(arg0->unk_0C <= 0.0f)) { -// var_f29 = arg0->unk_08 * arg0->unk_00; -// var_f30 = 1.0f / arg0->unk_00; -// var_f31 = arg0->unk_24; -// var_f28 = arg0->unk_24; -// var_f27 = arg0->unk_24 * arg0->unk_28; -// for (var_r31 = 0; var_r31 < 0x10; var_r31++) { -// sp8 = arg0->unk_10 * var_f30; -// var_f26 = (arg0->unk_1C * var_f30) - (0.5f * var_f31 * arg0->unk_00); -// var_f25 = arg0->unk_30 + ((var_f29 * (0.5f * var_f31 * var_f29)) + (var_f26 * var_f29)); -// if (arg0->unk_0C > var_f25) { -// var_f28 = var_f31; -// } -// else { -// var_f27 = var_f31; -// } -// var_f31 = 0.5f * (var_f28 + var_f27); -// } -// arg0->unk_24 = var_f31; -// arg0->unk_14 = arg0->unk_10 * var_f30; -// arg0->unk_20 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * arg0->unk_00); -// } -// } - -// s32 fn_1_D4E0(float *arg0, Vec *arg1, Vec *arg2, float arg8) -// { -// float sp20; -// float sp1C; -// float sp18; -// Vec spC; -// Vec *sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// float *var_r31; -// Vec *var_r30; - -// var_r31 = arg0; -// var_r30 = arg1; -// sp8 = arg2; -// var_f31 = arg8; -// if (var_f31 < 0.0f) { -// var_f31 = 0.0f; -// } -// if (var_f31 > var_r31->unk_00) { -// var_f31 = var_r31->unk_00; -// } -// var_r31->unk_04 = var_f31; -// if (var_r31->unk_10 > 0.0f) { -// PSVECSubtract(var_r31 + 0x38, var_r31 + 0x2C, &spC); -// spC.y = 0.0f; -// PSVECNormalize(&spC, &spC); -// } -// else { -// spC.z = 0.0f; -// spC.y = 0.0f; -// spC = 0.0f; -// } -// sp18 = var_r30->x; -// sp1C = var_r30->y; -// sp20 = var_r30->z; -// var_f30 = (var_f31 * (0.5f * var_r31->unk_18 * var_f31)) + (var_r31->unk_14 * var_f31); -// var_f29 = (var_f31 * (0.5f * var_r31->unk_24 * var_f31)) + (var_r31->unk_20 * var_f31); -// var_r30->x = var_r31->unk_2C + (spC * var_f30); -// var_r30->y = var_r31->unk_30 + var_f29; -// var_r30->z = var_r31->unk_34 + (spC.z * var_f30); -// PSVECSubtract(var_r30, &sp18, sp8); -// if (var_f31 >= var_r31->unk_00) { -// return 1; -// } -// return 0; -// } - -// void fn_1_D6A8(ModelData *model, ParticleData *particle, Mtx matrix) -// { -// HsfanimStruct01 *var_r31; -// ParticleData *var_r30; -// s32 var_r29; -// u16 temp_r0; - -// var_r30 = particle; -// for (var_r31 = var_r30->unk_48, var_r29 = 0; var_r31 < var_r30->unk_30; var_r29++, var_r31 += 0x44) { -// if (var_r31->unk00 != 0) { -// PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); -// var_r31->unk08.x *= 0.92f; -// var_r31->unk08.z *= 0.92f; -// var_r31->unk08.y += -0.27222225f; -// var_r31->unk2C += 2.0f; -// var_r31->unk40.a = var_r31->unk40.a * 0.99f; -// if (var_r31->unk00 < 24.0f) { -// var_r31->unk40.a = 0.9f * var_r31->unk40.a; -// } -// temp_r0 = var_r31->unk00 - 1; -// var_r31->unk00 = temp_r0; -// if (temp_r0 == 0) { -// var_r31->unk00 = 0; -// var_r31->unk2C = 0.0f; -// var_r31->unk40.a = 0; -// } -// } -// } -// DCStoreRange(var_r30->unk_48, var_r30->unk_30 * 0x44); -// } - -// void fn_1_D888(Vec *arg0, float arg8) -// { -// float sp10; -// float spC; -// float sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// void *var_r31; -// Vec *var_r30; -// s32 var_r29; -// u32 var_r28; - -// var_r30 = arg0; -// var_f29 = arg8; -// var_r31 = Hu3DData[lbl_1_bss_7CC->model->unk_0A].unk_120->unk_48; -// var_r28 = 3.0f + (12.0f * var_f29); -// var_r29 = 0; -// loop_4: -// if (var_r29 < 0xC8) { -// if ((var_r31->unk_00 != 0) -// || (var_r31->unk_00 = 60.0f * (0.6f + (0.0006f * frandmod(0x3E8))), var_f30 = frandmod(0x168), sp8 = sind(var_f30) / 180.0), -// spC = 0.0f, -// sp10 = cos((3.141592653589793 * var_f30), var_f31 = 0.030000001f * frandmod(0x3E8), var_r31->unk_34 = var_r30->x + (sp8 * var_f31), -// var_r31->unk_38 = 10.0f + (var_r30->y + (0.030000001f * frandmod(0x3E8))), var_r31->unk_3C = var_r30->z + (sp10 * var_f31), -// var_f31 = 0.8333334f + (0.0016666667f * frandmod(0x3E8)), var_f31 *= 1.0f + var_f29, var_r31->unk_08 = sp8 * var_f31, -// var_r31->unk_10 = sp10 * var_f31, var_r31->unk_0C = 0.50000006f + (0.0011666667f * frandmod(0x3E8)), -// var_r31->unk_0C = var_r31->unk_0C * (1.0f + var_f29), var_r31->unk_30 = frandmod(0x168), var_r31->unk_2C = 60.0f + frandmod(0x1E), -// var_r31->unk_43 = frandmod(0x64) + 0x78, var_f31 = 0.001f * frandmod(0x3E8), var_r31->unk_40 = 235.0f + (20.0f * var_f31), -// var_r31->unk_41 = 180.0f + (75.0f * var_f31), var_r31->unk_42 = 155.0f + (100.0f * var_f31), var_r28--, ((var_r28 < 1) == 0))) { -// var_r29++; -// var_r31 += 0x44; -// goto loop_4; -// } -// } -// } - -// void fn_1_DD70(Vec *arg0) -// { -// void *var_r31; -// void *var_r30; -// Vec *var_r29; - -// var_r29 = arg0; -// var_r31 = Hu3DData[lbl_1_bss_7CC->model->unk_10].unk_120; -// Hu3DModelAttrReset(lbl_1_bss_7CC->model->unk_10, HU3D_ATTR_DISPOFF); -// var_r30 = var_r31->unk_48; -// var_r31->unk_00 = 0; -// var_r31->unk_02 = 0x3C; -// var_r30->unk_2C = 100.0f; -// var_r30->unk_34 = var_r29->x; -// var_r30->unk_38 = var_r29->y; -// var_r30->unk_3C = var_r29->z; -// } - -// void fn_1_DE28(ModelData *model, ParticleData *particle, Mtx matrix) -// { -// ParticleData *var_r31; -// HsfanimStruct01 **var_r30; -// s32 var_r29; -// s8 var_r28; -// ModelData *var_r27; -// s16 temp_r0; - -// var_r27 = model; -// var_r31 = particle; -// if (var_r31->unk_00 == 0) { -// var_r31->unk_00 = 1; -// for (var_r30 = &var_r31->unk_48, var_r29 = 0; var_r30 < var_r31->unk_30; var_r29++, var_r30 += 0x44) { -// var_r30->unk_2C = 0.0f; -// } -// } -// var_r28 = 0.016666668f * (var_r31->unk_02 * 0xFF); -// for (var_r30 = var_r31->unk_48, var_r29 = 0; var_r30 < var_r31->unk_30; var_r29++, var_r30 += 0x44) { -// var_r30->unk_43 = var_r28; -// } -// temp_r0 = var_r31->unk_02 - 1; -// var_r31->unk_02 = temp_r0; -// if (temp_r0 == 0) { -// var_r27->attr |= 1; -// } -// DCStoreRange(var_r31->unk_48, var_r31->unk_30 * 0x44); -// } - -void fn_1_DF44(omObjData *var_r30) +void fn_1_C240(omObjData *object) { - M433PlayerWork3 *var_r31; + s32 var_r29; - var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433PlayerWork3), MEMORY_DEFAULT_NUM); - var_r31 = var_r30->data; - memset(var_r31, 0, sizeof(M433PlayerWork3)); - var_r31->unk_00 = 0; - var_r31->unk_04 = -1; - var_r31->unk_08 = 0; - var_r31->unk_18 = var_r31->unk_1C = 0; - var_r31->unk_2C = var_r31->unk_30 = 0; - fn_1_E5C0(var_r31->unk_4C, &var_r31->unk_64); - var_r30->func = fn_1_E11C; + M433PlayerWork2 *work = object->data; + s32 sp8 = 0; + work->unk_00 = 0; + switch (work->unk_18) { + case 0: + work->unk_04 = 1; + break; + case 1: + work->unk_B8 = 0.0f; + work->unk_BC.x = work->unk_BC.y = 0.0f; + work->unk_BC.z = 1.0f; + PSMTXIdentity(work->unk_C8); + work->unk_00 = 1; + break; + case 10: + work->unk_00 = 1; + break; + } + work->unk_8C++; + if (work->unk_90 != 0) { + work->unk_A0 = 1.0f; + if (work->unk_94 == 2) { + work->unk_A4 += 12.000001f; + if (work->unk_A4 >= 360.0f) { + work->unk_A4 -= 360.0f; + } + work->unk_A0 = 1.5f; + work->unk_A8 += 0.015000001f; + Hu3DMotionSpeedSet(object->model[3], 2.5f); + } + else { + Hu3DMotionTimeSet(object->model[3], 0.0f); + Hu3DMotionSpeedSet(object->model[3], 0.0f); + } + Hu3DModelRotSet(object->model[3], 0.0f, work->unk_A4, 0.0f); + Hu3DModelAttrReset(object->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[3], work->unk_AC.x, 3.0f + work->unk_AC.y, work->unk_AC.z); + work->unk_98++; + work->unk_90 = 0; + } + else if (work->unk_94 != 0) { + work->unk_94 = 0; + work->unk_A0 = 0.0f; + } + work->unk_9C = work->unk_9C + (0.2f * (work->unk_A0 - work->unk_9C)); + Hu3DModelScaleSet(object->model[3], work->unk_9C, 1.0f, work->unk_9C); + if ((work->unk_A0 <= 0.0f) && (work->unk_9C < 0.1f)) { + Hu3DModelAttrSet(object->model[3], HU3D_ATTR_DISPOFF); + work->unk_9C = 0.0f; + } + for (var_r29 = 0; var_r29 < 2; var_r29++) { + work->unk_7C[var_r29] += (0.3f * (work->unk_84[var_r29] - work->unk_7C[var_r29])); + if (work->unk_84[var_r29] > 0.0f) { + Hu3DModelAttrReset(object->model[var_r29 + 1], HU3D_ATTR_DISPOFF); + } + else if (work->unk_7C[var_r29] < 0.1f) { + Hu3DModelAttrSet(object->model[var_r29 + 1], HU3D_ATTR_DISPOFF); + } + Hu3DModelScaleSet(object->model[var_r29 + 1], work->unk_7C[var_r29], 1.0f, work->unk_7C[var_r29]); + } + fn_1_C6B0(object); + fn_1_CB98(object); + object->trans.x = work->unk_30.x; + object->trans.y = work->unk_30.y; + object->trans.z = work->unk_30.z; + if ((fn_1_216C() >= 3) && (work->unk_04 != 0) && (fn_1_2244() != 0)) { + fn_1_DD70(&work->unk_30); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_1_C6AC; + } } -// void fn_1_DFE4(void *arg0) -// { -// void *var_r31; -// void *var_r30; +void fn_1_C6AC(omObjData *object) { } -// var_r30 = arg0; -// var_r31 = var_r30->unk_5C; -// OSReport("\n"); -// OSReport("uGameEvent %d\n", var_r31->unk_00); -// OSReport("sWinGrp %d\n", var_r31->unk_04); -// OSReport("uServeGrp %d\n", var_r31->unk_08); -// OSReport("uPointGrp %d\n", var_r31->unk_0C); -// OSReport("auServeCel[2] %d,%d\n", var_r31->unk_10, var_r31->unk_14); -// OSReport("auEvents[2] %d,%d\n", var_r31->unk_18, var_r31->unk_1C); -// OSReport("uContactCnt %d\n", var_r31->unk_34); -// OSReport("sGroundGrp %d\n", var_r31->unk_38); -// OSReport("uContactGrp %d\n", var_r31->unk_3C); -// OSReport("sContactCel %d\n", var_r31->unk_40); -// OSReport(lbl_1_data_63E, var_r31->unk_44); -// OSReport("\n"); -// } - -// void fn_1_E11C(omObjData *arg0) -// { -// s32 sp8; -// s32 temp_r4; -// void *var_r31; -// u32 var_r30; -// s32 var_r29; -// s32 var_r28; -// s32 var_r27; -// s16 var_r26; -// s16 var_r25; -// omObjData *var_r24; -// u32 temp_r0; -// s32 temp_r0_2; - -// var_r24 = arg0; -// var_r31 = var_r24->data; -// sp8 = 0; -// var_r28 = 0; -// var_r31->unk_28++; -// var_r31->unk_4C = var_r31->unk_20; -// var_r31->unk_58 = var_r31->unk_24; -// if (fn_1_216C() >= 2) { -// fn_1_ECFC(var_r31 + 0x4C, var_r31 + 0x64); -// } -// temp_r0 = var_r31->unk_00; -// switch (temp_r0) { -// case 0: -// var_r31->unk_34 = 0; -// var_r31->unk_40 = -1; -// if (var_r31->unk_28 == 0xC) { -// fn_1_58D8(1); -// } -// if ((var_r31->unk_28 >= 30.0f) && (fn_1_216C() >= 2)) { -// var_r31->unk_00 = 1; -// var_r31->unk_28 = 0; -// var_r31->unk_1C = 1; -// var_r31->unk_18 = 1; -// } -// break; -// case 1: -// if (var_r31->unk_30 != 0) { -// var_r31->unk_48 = 0; -// var_r31->unk_40 = -1; -// var_r31->unk_34 = 0; -// var_r31->unk_00 = 2; -// var_r31->unk_28 = 0; -// var_r31->unk_1C = 3; -// var_r31->unk_18 = 3; -// if (var_r31->unk_44 != 0) { -// var_r26 = 5; -// } -// else { -// var_r26 = 6; -// } -// fn_1_58D8(var_r26); -// } -// break; -// case 2: -// case 5: -// if (var_r31->unk_30 != 0) { -// if (var_r31->unk_34 != 0) { -// var_r31->unk_48++; -// var_r31->unk_00 = 3; -// *(var_r31 + ((var_r31->unk_3C * 4) + 0x18)) = 4; -// if ((var_r31->unk_48 >= 6) && ((var_r31->unk_48 % 3) == 0)) { -// fn_1_58D8(3); -// } -// } -// var_r31->unk_28 = 0; -// } -// var_r28 = 1; -// break; -// case 3: -// case 4: -// if (var_r31->unk_30 != 0) { -// if (var_r31->unk_3C == var_r31->unk_44) { -// var_r31->unk_00 = 4; -// *(var_r31 + ((var_r31->unk_3C * 4) + 0x18)) = 5; -// } -// else { -// var_r31->unk_40 = -1; -// var_r31->unk_34 = 0; -// var_r31->unk_00 = 5; -// *(var_r31 + ((var_r31->unk_3C * 4) + 0x18)) = 3; -// if (var_r31->unk_44 != 0) { -// var_r25 = 5; -// } -// else { -// var_r25 = 6; -// } -// fn_1_58D8(var_r25); -// } -// var_r31->unk_28 = 0; -// } -// var_r28 = 1; -// break; -// case 6: -// if (var_r31->unk_28 >= 120.0f) { -// var_r31->unk_00 = 0; -// var_r31->unk_28 = 0; -// var_r31->unk_1C = 0; -// var_r31->unk_18 = 0; -// } -// break; -// } -// if ((var_r31->unk_2C != 0) && (var_r28 != 0)) { -// if (var_r31->unk_38 >= 0) { -// var_r30 = 1 - var_r31->unk_38; -// fn_1_58D8(1); -// } -// else { -// var_r30 = 1 - var_r31->unk_3C; -// fn_1_58D8(2); -// } -// var_r31->unk_0C = var_r30; -// temp_r4 = (var_r30 * 4) + 0x20; -// *(var_r31 + temp_r4) = *(var_r31 + temp_r4) + 1; -// if (var_r31->unk_08 != var_r30) { -// var_r31->unk_08 = var_r30; -// *(var_r31 + ((var_r31->unk_08 * 4) + 0x10)) = 1 - *(var_r31 + ((var_r31->unk_08 * 4) + 0x10)); -// } -// if (*(var_r31 + ((var_r30 * 4) + 0x20)) >= 5) { -// var_r31->unk_04 = var_r30; -// var_r31->unk_00 = 7; -// var_r31->unk_1C = 7; -// var_r31->unk_18 = 7; -// var_r27 = 0; -// for (var_r29 = 0; var_r29 < 4; var_r29++) { -// spC[var_r29] = -1; -// if (var_r31->unk_04 == lbl_1_bss_7D0[var_r29]->data->unk_14) { -// temp_r0_2 = var_r27; -// var_r27++; -// spC[temp_r0_2] = lbl_1_bss_7D0[var_r29]->work[0]; -// } -// } -// fn_1_219C(1, spC[0], sp10); -// fn_1_21E4(4); -// } -// else { -// var_r31->unk_00 = 6; -// var_r31->unk_1C = 6; -// var_r31->unk_18 = 6; -// fn_1_FE64(var_r31 + 0x64, var_r31->unk_20, var_r31->unk_24, var_r30); -// HuAudFXPlay(0x16); -// } -// var_r31->unk_28 = 0; -// } -// var_r31->unk_2C = 0; -// var_r31->unk_30 = 0; -// } - -void fn_1_E5C0(M433PlayerWork3SubStruct *var_r30, M433PlayerWork3SubStruct2 *var_r29) +s32 fn_1_C6B0(omObjData *object) { - u32 var_r31; + Mtx sp14; + Vec sp8; + M433PlayerWork3 *var_r29; + s32 var_r28; + + M433PlayerWork2 *work = object->data; + if ((work->unk_00 == 0) && (work->unk_04 == 0) && (work->unk_08 == 0)) { + if (work->unk_10 == 0) { + fn_1_CDB8(&work->unk_F8, &work->unk_30, &work->unk_3C, work->unk_6C, work->unk_A8); + fn_1_D338(&work->unk_F8); + fn_1_D180(&work->unk_F8); + work->unk_B8 = work->unk_A8 * (8.0f * lbl_1_data_48C[work->unk_6C]); + PSVECSubtract(&work->unk_3C, &work->unk_30, &sp8); + sp8.y = 0.0f; + if (PSVECMag(&sp8) <= 0.0f) { + work->unk_BC.x = work->unk_BC.y = 0.0f; + work->unk_BC.z = 1.0f; + } + else { + PSVECNormalize(&sp8, &sp8); + work->unk_BC.x = -sp8.z; + work->unk_BC.y = 0.0f; + work->unk_BC.z = sp8.x; + } + work->unk_48 = 0.0f; + var_r28 = 0; + if (work->unk_84[0] > 0.0f) { + var_r28++; + } + Hu3DModelPosSet(object->model[var_r28 + 1], work->unk_F8.unk_38.x, 3.0f + work->unk_F8.unk_38.y, work->unk_F8.unk_38.z); + if (work->unk_9C <= 0.0f) { + work->unk_8C = 9; + } + if (lbl_1_data_468[work->unk_6C] != 0) { + work->unk_84[var_r28] = 1.0f; + } + work->unk_84[1 - var_r28] = 0.0f; + } + work->unk_10 = 1; + if (work->unk_B8 != 0.0f) { + PSMTXRotAxisRad(sp14, &work->unk_BC, 0.017453292f * work->unk_B8); + PSMTXConcat(sp14, work->unk_C8, work->unk_C8); + PSMTXCopy(work->unk_C8, Hu3DData[object->model[0]].unk_F0); + } + work->unk_48 += 0.016666668f; + work->unk_08 = fn_1_D4E0(&work->unk_F8, &work->unk_30, &work->unk_4C, work->unk_48); + if (work->unk_08 != 0) { + work->unk_84[0] = work->unk_84[1] = 0.0f; + if (work->unk_30.y <= 12.0f) { + var_r29 = lbl_1_bss_7C8->data; + work->unk_78 = 0; + Hu3DModelPosSetV(object->model[4], &work->unk_30); + Hu3DMotionTimeSet(object->model[4], 0.0f); + if ((work->unk_6C == 5) || (work->unk_6C == 2)) { + Hu3DMotionSpeedSet(object->model[4], 1.5f); + fn_1_D888(&work->unk_30, 1.0f); + } + else { + Hu3DMotionSpeedSet(object->model[4], 1.0f); + fn_1_D888(&work->unk_30, 0.5f); + work->unk_30.y += 11.0f; + } + work->unk_6C = 0; + work->unk_04 = 1; + var_r29->unk_2C = 1; + var_r29->sGroundGrp = -1; + if (fabs(work->unk_30.z) < 350.0) { + if (fabs(work->unk_30.x) < 700.0) { + var_r29->sGroundGrp = 0; + if (work->unk_30.x >= 0.0f) { + var_r29->sGroundGrp = 1; + } + } + } + } + } + } + else { + work->unk_10 = 0; + } + return work->unk_08; +} + +void fn_1_CB98(omObjData *object) +{ + Mtx sp50; + Mtx sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + s32 var_r29; + + M433PlayerWork2 *work = object->data; + if (work->unk_78 != 0) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + var_f30 = work->unk_F8.unk_04; + var_f29 = var_f30; + var_f31 = var_f29 - (0.020000001f * work->unk_A8); + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + var_f31 = (var_f30 - var_f31) / 21.0f; + PSMTXCopy(work->unk_C8, sp20); + var_f28 = (work->unk_B8 * (1.2f * work->unk_A8)) / 21.0f; + PSMTXRotAxisRad(sp50, &work->unk_BC, MTXDegToRad(-var_f28)); + for (var_r29 = 0; var_r29 < 0x15; var_r29++) { + Hu3DModelAttrReset(object->model[var_r29 + 9], HU3D_ATTR_DISPOFF); + fn_1_D4E0(&work->unk_F8, &sp14, &sp8, var_f30); + Hu3DModelPosSetV(object->model[var_r29 + 9], &sp14); + PSMTXCopy(sp20, Hu3DData[object->model[var_r29 + 9]].unk_F0); + PSMTXConcat(sp50, sp20, sp20); + var_f30 -= var_f31; + } + work->unk_F8.unk_04 = var_f29; + return; + } + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + for (var_r29 = 0; var_r29 < 0x15; var_r29++) { + Hu3DModelAttrSet(object->model[var_r29 + 9], HU3D_ATTR_DISPOFF); + } +} + +void fn_1_CDB8(M433PlayerWork2Sub *arg0, Vec *arg1, Vec *arg2, u32 arg3, float arg8) +{ + Vec sp18; + Vec spC; + float var_f31; + float var_f30; + float var_f29; + + arg0->unk_0C = 0.0f; + arg0->unk_08 = 0.0f; + var_f31 = lbl_1_data_4D4[arg3].y; + arg0->unk_00 = var_f31; + if (arg0->unk_00 <= 0.0f) { + if (((arg2->x * arg1->x) < 0.0f) && (arg1->x != 0.0f) && (lbl_1_data_4D4[arg3].x > 0.0f)) { + arg0->unk_0C = lbl_1_data_4D4[arg3].x; + arg0->unk_08 = fabs(arg1->x / (arg2->x - arg1->x)); + var_f29 = arg1->y + (arg0->unk_08 * (arg2->y - arg1->y)); + if (var_f29 < arg0->unk_0C) { + spC.x = arg1->x + (arg0->unk_08 * (arg2->x - arg1->x)); + spC.y = arg0->unk_0C; + spC.z = arg1->z + (arg0->unk_08 * (arg2->z - arg1->z)); + PSVECSubtract(arg2, &spC, &sp18); + var_f30 = PSVECMag(&sp18); + PSVECSubtract(&spC, arg1, &sp18); + var_f30 += PSVECMag(&sp18); + } + else { + PSVECSubtract(arg2, arg1, &sp18); + var_f30 = PSVECMag(&sp18); + } + } + else { + PSVECSubtract(arg2, arg1, &sp18); + var_f30 = PSVECMag(&sp18); + } + var_f31 = var_f30 / (arg8 * lbl_1_data_4D4[arg3].z); + arg0->unk_00 = var_f31; + } + arg0->unk_04 = 0.0f; + arg0->unk_2C = *arg1; + arg0->unk_38 = *arg2; + arg0->unk_1C = arg2->y - arg1->y; + arg0->unk_24 = -980.0f; + PSVECSubtract(arg2, arg1, &sp18); + sp18.y = 0.0f; + arg0->unk_10 = PSVECMag(&sp18); + arg0->unk_18 = 0.0f; + if (var_f31 > 0.0f) { + arg0->unk_20 = (arg0->unk_1C - (0.5f * (-980.0f * (var_f31 * var_f31)))) / var_f31; + arg0->unk_14 = arg0->unk_10 / var_f31; + } + else { + arg0->unk_20 = arg0->unk_1C; + arg0->unk_14 = arg0->unk_10; + } + arg0->unk_28 = lbl_1_data_540[arg3]; +} + +void fn_1_D180(M433PlayerWork2Sub *arg0) +{ + float sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + s32 var_r31; + + if (!(arg0->unk_0C <= 0.0f)) { + var_f31 = arg0->unk_00; + var_f28 = arg0->unk_00; + var_f27 = 10.0f * arg0->unk_00; + for (var_r31 = 0; var_r31 < 0x10; var_r31++) { + var_f30 = 1.0f / var_f31; + sp8 = arg0->unk_10 * var_f30; + var_f26 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * var_f31); + var_f29 = arg0->unk_08 * var_f31; + var_f25 = arg0->unk_2C.y + ((var_f29 * (0.5f * arg0->unk_24 * var_f29)) + (var_f26 * var_f29)); + if (arg0->unk_0C > var_f25) { + var_f28 = var_f31; + } + else { + var_f27 = var_f31; + } + var_f31 = 0.5f * (var_f28 + var_f27); + } + var_f30 = 1.0f / var_f31; + arg0->unk_00 = var_f31; + arg0->unk_14 = arg0->unk_10 * var_f30; + arg0->unk_20 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * var_f31); + } +} + +void fn_1_D338(M433PlayerWork2Sub *arg0) +{ + float sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + s32 var_r31; + + if (!(arg0->unk_0C <= 0.0f)) { + var_f29 = arg0->unk_08 * arg0->unk_00; + var_f30 = 1.0f / arg0->unk_00; + var_f31 = arg0->unk_24; + var_f28 = arg0->unk_24; + var_f27 = arg0->unk_24 * arg0->unk_28; + for (var_r31 = 0; var_r31 < 0x10; var_r31++) { + sp8 = arg0->unk_10 * var_f30; + var_f26 = (arg0->unk_1C * var_f30) - (0.5f * var_f31 * arg0->unk_00); + var_f25 = arg0->unk_2C.y + ((var_f29 * (0.5f * var_f31 * var_f29)) + (var_f26 * var_f29)); + if (arg0->unk_0C > var_f25) { + var_f28 = var_f31; + } + else { + var_f27 = var_f31; + } + var_f31 = 0.5f * (var_f28 + var_f27); + } + arg0->unk_24 = var_f31; + arg0->unk_14 = arg0->unk_10 * var_f30; + arg0->unk_20 = (arg0->unk_1C * var_f30) - (0.5f * arg0->unk_24 * arg0->unk_00); + } +} + +s32 fn_1_D4E0(M433PlayerWork2Sub *arg0, Vec *arg1, Vec *arg2, float arg8) +{ + Vec sp18; + Vec spC; + float var_f30; + float var_f29; + + if (arg8 < 0.0f) { + arg8 = 0.0f; + } + if (arg8 > arg0->unk_00) { + arg8 = arg0->unk_00; + } + arg0->unk_04 = arg8; + if (arg0->unk_10 > 0.0f) { + PSVECSubtract(&arg0->unk_38, &arg0->unk_2C, &spC); + spC.y = 0.0f; + PSVECNormalize(&spC, &spC); + } + else { + spC.x = spC.y = spC.z = 0.0f; + } + sp18 = *arg1; + var_f30 = (arg8 * (0.5f * arg0->unk_18 * arg8)) + (arg0->unk_14 * arg8); + var_f29 = (arg8 * (0.5f * arg0->unk_24 * arg8)) + (arg0->unk_20 * arg8); + arg1->x = arg0->unk_2C.x + (spC.x * var_f30); + arg1->y = arg0->unk_2C.y + var_f29; + arg1->z = arg0->unk_2C.z + (spC.z * var_f30); + PSVECSubtract(arg1, &sp18, arg2); + if (arg8 >= arg0->unk_00) { + return 1; + } + return 0; +} + +void fn_1_D6A8(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *var_r31; + s32 var_r29; + + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00_s16 != 0) { + PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + var_r31->unk08.x *= 0.92f; + var_r31->unk08.z *= 0.92f; + var_r31->unk08.y += -0.27222225f; + var_r31->unk2C += 2.0f; + var_r31->unk40.a *= 0.99f; + if (var_r31->unk00_s16 < 24.0f) { + var_r31->unk40.a = 0.9f * var_r31->unk40.a; + } + if (--var_r31->unk00_s16 == 0) { + var_r31->unk00_s16 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(particle->unk_48, particle->unk_30 * 0x44); +} + +void fn_1_D888(Vec *arg0, float arg8) +{ + Vec sp8; + float var_f31; + float var_f30; + HsfanimStruct01 *var_r31; + s32 var_r29; + u32 var_r28; + + var_r31 = ((ParticleData *)Hu3DData[lbl_1_bss_7CC->model[5]].unk_120)->unk_48; + var_r28 = 3.0f + (12.0f * arg8); + for (var_r29 = 0; var_r29 < 0xC8; var_r29++, var_r31++) { + if (var_r31->unk00_s16 == 0) { + var_r31->unk00_s16 = 60.0f * (0.6f + (0.0006f * frandmod(0x3E8))); + var_f30 = frandmod(0x168); + sp8.x = sind(var_f30); + sp8.y = 0.0f; + sp8.z = cosd(var_f30); + var_f31 = 0.030000001f * frandmod(0x3E8); + var_r31->unk34.x = arg0->x + (sp8.x * var_f31); + var_r31->unk34.y = 10.0f + (arg0->y + (0.030000001f * frandmod(0x3E8))); + var_r31->unk34.z = arg0->z + (sp8.z * var_f31); + var_f31 = 0.8333334f + (0.0016666667f * frandmod(0x3E8)); + var_f31 *= 1.0f + arg8; + var_r31->unk08.x = sp8.x * var_f31; + var_r31->unk08.z = sp8.z * var_f31; + var_r31->unk08.y = 0.50000006f + (0.0011666667f * frandmod(0x3E8)); + var_r31->unk08.y *= (1.0f + arg8); + var_r31->unk30 = frandmod(0x168); + var_r31->unk2C = 60.0f + frandmod(0x1E); + var_r31->unk40.a = frandmod(0x64) + 0x78; + var_f31 = 0.001f * frandmod(0x3E8); + var_r31->unk40.r = 235.0f + (20.0f * var_f31); + var_r31->unk40.g = 180.0f + (75.0f * var_f31); + var_r31->unk40.b = 155.0f + (100.0f * var_f31); + if (--var_r28 < 1) { + break; + } + } + } +} + +void fn_1_DD70(Vec *arg0) +{ + HsfanimStruct01 *var_r30; + + ParticleData *var_r31 = Hu3DData[lbl_1_bss_7CC->model[8]].unk_120; + Hu3DModelAttrReset(lbl_1_bss_7CC->model[8], HU3D_ATTR_DISPOFF); + var_r30 = var_r31->unk_48; + var_r31->unk_00 = 0; + var_r31->unk_02 = 0x3C; + var_r30->unk2C = 100.0f; + var_r30->unk34 = *arg0; +} + +void fn_1_DE28(ModelData *var_r27, ParticleData *var_r31, Mtx matrix) +{ + HsfanimStruct01 *var_r30; + s32 var_r29; + s8 var_r28; + + if (var_r31->unk_00 == 0) { + var_r31->unk_00 = 1; + for (var_r30 = (HsfanimStruct01 *)&var_r31->unk_48, var_r29 = 0; var_r29 < var_r31->unk_30; var_r29++, var_r30++) { + var_r30->unk2C = 0.0f; + } + } + var_r28 = 0.016666668f * (var_r31->unk_02 * 0xFF); + for (var_r30 = var_r31->unk_48, var_r29 = 0; var_r29 < var_r31->unk_30; var_r29++, var_r30++) { + var_r30->unk40.a = var_r28; + } + if (--var_r31->unk_02 == 0) { + var_r27->attr |= 1; + } + DCStoreRange(var_r31->unk_48, var_r31->unk_30 * sizeof(HsfanimStruct01)); +} + +void fn_1_DF44(omObjData *object) +{ + M433PlayerWork3 *work; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M433PlayerWork3), MEMORY_DEFAULT_NUM); + work = object->data; + memset(work, 0, sizeof(M433PlayerWork3)); + work->uGameEvent = 0; + work->sWinGrp = -1; + work->uServeGrp = 0; + work->auEvents[0] = work->auEvents[1] = 0; + work->unk_2C = work->unk_30 = 0; + fn_1_E5C0(work->unk_4C, &work->unk_64); + object->func = fn_1_E11C; +} + +void fn_1_DFE4(omObjData *var_r30) +{ + M433PlayerWork3 *work = var_r30->data; + OSReport("\n"); + OSReport("uGameEvent %d\n", work->uGameEvent); + OSReport("sWinGrp %d\n", work->sWinGrp); + OSReport("uServeGrp %d\n", work->uServeGrp); + OSReport("uPointGrp %d\n", work->uPointGrp); + OSReport("auServeCel[2] %d,%d\n", work->auServeCel[0], work->auServeCel[1]); + OSReport("auEvents[2] %d,%d\n", work->auEvents[0], work->auEvents[1]); + OSReport("uContactCnt %d\n", work->uContactCnt); + OSReport("sGroundGrp %d\n", work->sGroundGrp); + OSReport("uContactGrp %d\n", work->uContactGrp); + OSReport("sContactCel %d\n", work->uContactCel); + OSReport("uTargetGrp %d\n", work->uTargetGrp); + OSReport("\n"); +} + +void fn_1_E11C(omObjData *object) +{ + s32 spC[4]; + u32 var_r30; + s32 var_r29; + s32 var_r27; + s16 var_r26; + s16 var_r25; + + M433PlayerWork3 *work = object->data; + s32 sp8 = 0; + s32 var_r28 = 0; + work->unk_28++; + work->unk_4C[0].unk_00 = work->unk_20[0]; + work->unk_4C[1].unk_00 = work->unk_20[1]; + if (fn_1_216C() >= 2) { + fn_1_ECFC(work->unk_4C, &work->unk_64); + } + switch (work->uGameEvent) { + case 0: + work->uContactCnt = 0; + work->uContactCel = -1; + if (work->unk_28 == 0xC) { + fn_1_58D8(1); + } + if ((work->unk_28 >= 30.0f) && (fn_1_216C() >= 2)) { + work->uGameEvent = 1; + work->unk_28 = 0; + work->auEvents[0] = work->auEvents[1] = 1; + } + break; + case 1: + if (work->unk_30 != 0) { + work->unk_48 = 0; + work->uContactCel = -1; + work->uContactCnt = 0; + work->uGameEvent = 2; + work->unk_28 = 0; + work->auEvents[0] = work->auEvents[1] = 3; + if (work->uTargetGrp != 0) { + var_r26 = 5; + } + else { + var_r26 = 6; + } + fn_1_58D8(var_r26); + } + break; + case 2: + case 5: + if (work->unk_30 != 0) { + if (work->uContactCnt != 0) { + work->unk_48++; + work->uGameEvent = 3; + work->auEvents[work->uContactGrp] = 4; + if ((work->unk_48 >= 6) && ((work->unk_48 % 3) == 0)) { + fn_1_58D8(3); + } + } + work->unk_28 = 0; + } + var_r28 = 1; + break; + case 3: + case 4: + if (work->unk_30 != 0) { + if (work->uContactGrp == work->uTargetGrp) { + work->uGameEvent = 4; + work->auEvents[work->uContactGrp] = 5; + } + else { + work->uContactCel = -1; + work->uContactCnt = 0; + work->uGameEvent = 5; + work->auEvents[work->uContactGrp] = 3; + if (work->uTargetGrp != 0) { + var_r25 = 5; + } + else { + var_r25 = 6; + } + fn_1_58D8(var_r25); + } + work->unk_28 = 0; + } + var_r28 = 1; + break; + case 6: + if (work->unk_28 >= 120.0f) { + work->uGameEvent = 0; + work->unk_28 = 0; + work->auEvents[0] = work->auEvents[1] = 0; + } + break; + case 7: + break; + } + if ((work->unk_2C != 0) && (var_r28 != 0)) { + if (work->sGroundGrp >= 0) { + var_r30 = 1 - work->sGroundGrp; + fn_1_58D8(1); + } + else { + var_r30 = 1 - work->uContactGrp; + fn_1_58D8(2); + } + work->uPointGrp = var_r30; + work->unk_20[var_r30]++; + if (work->uServeGrp != var_r30) { + work->uServeGrp = var_r30; + work->auServeCel[work->uServeGrp] = 1 - work->auServeCel[work->uServeGrp]; + } + if (work->unk_20[var_r30] >= 5) { + work->sWinGrp = var_r30; + work->uGameEvent = 7; + work->auEvents[0] = work->auEvents[1] = 7; + var_r27 = 0; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + spC[var_r29] = -1; + if (work->sWinGrp == OM_GET_DATA_PTR(lbl_1_bss_7D0[var_r29], M433PlayerWork)->unk_14) { + spC[var_r27++] = lbl_1_bss_7D0[var_r29]->work[0]; + } + } + fn_1_219C(1, spC[0], spC[1]); + fn_1_21E4(4); + } + else { + work->uGameEvent = 6; + work->auEvents[0] = work->auEvents[1] = 6; + fn_1_FE64(&work->unk_64, work->unk_20[0], work->unk_20[1], var_r30); + HuAudFXPlay(0x16); + } + work->unk_28 = 0; + } + work->unk_2C = 0; + work->unk_30 = 0; +} + +u16 lbl_1_data_674[6] = { 0, 1, 2, 3, 3, 0 }; +s32 lbl_1_data_680[2] = { 0x61001E, 0x61001F }; +Vec2f lbl_1_data_688[5] = { + { 0.0f, 0.0f }, + { 0.0f, 0.0f }, + { -23.0f, 0.0f }, + { 1.0f, 0.0f }, + { 21.0f, 0.0f }, +}; +Vec2f lbl_1_data_6B0[2] = { { 72.0f, 56.0f }, { 504.0f, 56.0f } }; +s32 lbl_1_data_6C0[0xB][4] = { + { 0x13000B, 0, 0, 0 }, + { 0x13000C, 0, 0, 0 }, + { 0x13000D, 0, 0, 0 }, + { 0x13000E, 0, 0, 0 }, + { 0x13000F, 0, 0, 0 }, + { 0x130010, 0, 0, 0 }, + { 0x130011, 0, 0, 0 }, + { 0x130012, 0, 0, 0 }, + { 0x130013, 0, 0, 0 }, + { 0x130014, 0, 0, 0 }, + { 0x130099, 0, 0, 0 }, +}; +s32 lbl_1_data_770[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; +M433DllPlayerData794Struct lbl_1_data_794[9] = { + { 0, 0, 0 }, + { 0, 0, 0 }, + { 1, 1, 0 }, + { 1, 0, 1 }, + { 1, 0, 1 }, + { 1, 1, 0 }, + { 1, 1, 0 }, + { 1, 0, 1 }, + { 1, 0, 1 }, +}; +u32 lbl_1_data_800[9] = { 0, 1, 2, 1, 1, 2, 1, 1, 1 }; + +void fn_1_E5C0(M433PlayerWork3Sub *arg0, M433PlayerWork3Sub2 *arg1) +{ + s32 var_r31; s32 var_r28; s32 var_r27; - for (var_r28 = 0; var_r28 < 2; var_r28++, var_r30++) { - for (var_r31 = 0; var_r31 < 5; var_r31++) { + for (var_r28 = 0; var_r28 < 2; var_r28++, arg0++) { + for (var_r31 = 0; (u32)var_r31 < 5; var_r31++) { switch (lbl_1_data_674[var_r31]) { case 0: - var_r30->unk_02[var_r31] = espEntry(lbl_1_data_680[var_r28], 1, 0); - espPriSet(var_r30->unk_02[var_r31], 0x100); + arg0->unk_02[var_r31] = espEntry(lbl_1_data_680[var_r28], 1, 0); + espPriSet(arg0->unk_02[var_r31], 0x100); break; case 1: - var_r30->unk_02[var_r31] = espEntry(0x610020, 1, 0); - espPriSet(var_r30->unk_02[var_r31], 0x101); - espColorSet(var_r30->unk_02[var_r31], 0, 0, 0); - espTPLvlSet(var_r30->unk_02[var_r31], 0.5); + arg0->unk_02[var_r31] = espEntry(0x610020, 1, 0); + espPriSet(arg0->unk_02[var_r31], 0x101); + espColorSet(arg0->unk_02[var_r31], 0, 0, 0); + espTPLvlSet(arg0->unk_02[var_r31], 0.5); break; case 2: - var_r30->unk_02[var_r31] = espEntry(0x40000A, 1, 0); - espPriSet(var_r30->unk_02[var_r31], 0xFF); + arg0->unk_02[var_r31] = espEntry(DATA_MAKE_NUM(DATADIR_M433, 10), 1, 0); + espPriSet(arg0->unk_02[var_r31], 0xFF); break; case 3: - var_r30->unk_02[var_r31] = espEntry(0x610033, 1, 0); - espPriSet(var_r30->unk_02[var_r31], 0xFF); + arg0->unk_02[var_r31] = espEntry(0x610033, 1, 0); + espPriSet(arg0->unk_02[var_r31], 0xFF); break; } - espDispOff(var_r30->unk_02[var_r31]); - espDrawNoSet(var_r30->unk_02[var_r31], 0); - espAttrSet(var_r30->unk_02[var_r31], HUSPR_ATTR_NOANIM); - espAttrSet(var_r30->unk_02[var_r31], HUSPR_ATTR_LINEAR); - espPosSet(var_r30->unk_02[var_r31], lbl_1_data_6B0[var_r28].x + lbl_1_data_688[var_r31].x, - lbl_1_data_6B0[var_r28].y + lbl_1_data_688[var_r31].y); + espDispOff(arg0->unk_02[var_r31]); + espDrawNoSet(arg0->unk_02[var_r31], 0); + espAttrSet(arg0->unk_02[var_r31], HUSPR_ATTR_NOANIM); + espAttrSet(arg0->unk_02[var_r31], HUSPR_ATTR_LINEAR); + espPosSet( + arg0->unk_02[var_r31], lbl_1_data_6B0[var_r28].x + lbl_1_data_688[var_r31].x, lbl_1_data_6B0[var_r28].y + lbl_1_data_688[var_r31].y); } } HuDataDirClose(0x610000); for (var_r28 = 0; var_r28 < 3; var_r28++) { for (var_r31 = 0; var_r31 < 0x14; var_r31++) { for (var_r27 = 0; var_r27 < 2; var_r27++) { - // if (*(&lbl_1_data_6C0[var_r31 % 10] + (var_r27 * 4)) != 0) { - // *(var_r29 + ((var_r28 * 0x140) + (var_r31 * 0x10) + (var_r27 * 4) + 0xD0)) - // = espEntry(*(&lbl_1_data_6C0[var_r31 % 10] + (var_r27 * 4)), 2, 0); - // espAttrSet(*(var_r29 + ((var_r28 * 0x140) + (var_r31 * 0x10) + (var_r27 * 4) + 0xD0)), HUSPR_ATTR_LINEAR); - // espDispOff(*(var_r29 + ((var_r28 * 0x140) + (var_r31 * 0x10) + (var_r27 * 4) + 0xD0))); - // } - // else { - // *(var_r29 + ((var_r28 * 0x140) + (var_r31 * 0x10) + (var_r27 * 4) + 0xD0)) = -1; - // } + if (lbl_1_data_6C0[var_r31 % 10][var_r27] != 0) { + arg1->unk_D0[var_r28][var_r31].unk_00[var_r27] = espEntry(lbl_1_data_6C0[var_r31 % 10][var_r27], 2, 0); + espAttrSet(arg1->unk_D0[var_r28][var_r31].unk_00[var_r27], HUSPR_ATTR_LINEAR); + espDispOff(arg1->unk_D0[var_r28][var_r31].unk_00[var_r27]); + } + else { + arg1->unk_D0[var_r28][var_r31].unk_00[var_r27] = -1; + } } } } for (var_r27 = 0; var_r27 < 2; var_r27++) { - // if ((lbl_1_data_6C0 + (var_r27 * 4))->unk_A0 != 0) { - // var_r29->unk_490[var_r27] = espEntry((lbl_1_data_6C0 + (var_r27 * 4))->unk_A0, 2, 0); - // espAttrSet(var_r29->unk_490[var_r27], HUSPR_ATTR_LINEAR); - // espDispOff(var_r29->unk_490[var_r27]); - // } - // else { - // var_r29->unk_490[var_r27] = -1; - // } + if (lbl_1_data_6C0[10][var_r27] != 0) { + arg1->unk_490.unk_00[var_r27] = espEntry(lbl_1_data_6C0[10][var_r27], 2, 0); + espAttrSet(arg1->unk_490.unk_00[var_r27], HUSPR_ATTR_LINEAR); + espDispOff(arg1->unk_490.unk_00[var_r27]); + } + else { + arg1->unk_490.unk_00[var_r27] = -1; + } } for (var_r28 = 0; var_r28 < 2; var_r28++) { - // *(var_r29 + ((var_r28 * 0x2C) + 0x20)) = -1; - // *(var_r29 + ((var_r28 * 0x2C) + 0x22)) = -1; + arg1->unk_20[var_r28].unk_00[0] = -1; + arg1->unk_20[var_r28].unk_00[1] = -1; } - var_r29->unk_78 = -1; - var_r29->unk_7A = -1; - var_r29->unk_A4 = -1; - var_r29->unk_A6 = -1; - HuDataDirClose(lbl_1_data_6C0->unk_00); + arg1->unk_20[2].unk_00[0] = -1; + arg1->unk_20[2].unk_00[1] = -1; + arg1->unk_20[3].unk_00[0] = -1; + arg1->unk_20[3].unk_00[1] = -1; + HuDataDirClose(lbl_1_data_6C0[0][0]); } -// void fn_1_EA8C(void *arg0) -// { -// double var_f31; -// double var_f30; -// void *var_r31; -// s32 var_r30; +void fn_1_EA8C(M433PlayerWork3Sub2Sub *var_r31) +{ + float var_f31; + float var_f30; + s32 var_r30; -// var_r31 = arg0; -// for (var_r30 = 0; var_r30 < 2; var_r30++) { -// if (*(var_r31 + (var_r30 * 2)) >= 0) { -// espDispOn(*(var_r31 + (var_r30 * 2))); -// var_f31 = (*(var_r31 + ((var_r30 * 4) + 4)) * var_r31->unk_1C) * cosd(var_r31->unk_28); -// var_f31 = var_f31; -// var_f30 = (*(var_r31 + ((var_r30 * 4) + 4)) * var_r31->unk_1C) * sind(var_r31->unk_28); -// var_f30 = var_f30; -// espPosSet(*(var_r31 + (var_r30 * 2)), var_r31->unk_0C + var_f31, var_r31->unk_10 + var_f30); -// espZRotSet(*(var_r31 + (var_r30 * 2)), var_r31->unk_28); -// espScaleSet(*(var_r31 + (var_r30 * 2)), var_r31->unk_1C, var_r31->unk_20); -// espTPLvlSet(*(var_r31 + (var_r30 * 2)), var_r31->unk_24); -// } -// } -// } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + if (var_r31->unk_00[var_r30] >= 0) { + espDispOn(var_r31->unk_00[var_r30]); + var_f31 = (var_r31->unk_04[var_r30] * var_r31->unk_1C) * cosd(var_r31->unk_28); + var_f30 = (var_r31->unk_04[var_r30] * var_r31->unk_1C) * sind(var_r31->unk_28); + espPosSet(var_r31->unk_00[var_r30], var_r31->unk_0C + var_f31, var_r31->unk_10 + var_f30); + espZRotSet(var_r31->unk_00[var_r30], var_r31->unk_28); + espScaleSet(var_r31->unk_00[var_r30], var_r31->unk_1C, var_r31->unk_20); + espTPLvlSet(var_r31->unk_00[var_r30], var_r31->unk_24); + } + } +} -// void fn_1_EBE4(s32 arg0, void *arg1, s32 arg2) -// { -// s32 var_r31; -// u32 var_r30; +void fn_1_EBE4(M433PlayerWork3Sub2Sub2 *arg0, M433PlayerWork3Sub2Sub *arg1, u32 arg2) +{ + u32 var_r31; + u32 var_r30; -// var_r31 = arg2 % 10; -// var_r30 = arg2 / 10; -// if (var_r30 == 0) { -// arg1->unk_00 = *(arg0 + (var_r31 * 0x10)); -// arg1->unk_02 = -1; -// arg1->unk_04 = 0.0f; -// } -// else { -// arg1->unk_00 = *(arg0 + ((var_r30 + 0xA) * 0x10)); -// arg1->unk_02 = *(arg0 + (var_r31 * 0x10)); -// arg1->unk_04 = -23.039999f; -// arg1->unk_08 = 23.039999f; -// } -// arg1->unk_10 = 0.0f; -// arg1->unk_0C = 0.0f; -// arg1->unk_18 = 0.0f; -// arg1->unk_14 = 0.0f; -// arg1->unk_20 = 1.5f; -// arg1->unk_1C = 1.5f; -// arg1->unk_24 = 1.0f; -// arg1->unk_28 = 0.0f; -// } + var_r31 = arg2 % 10; + var_r30 = arg2 / 10; + if (var_r30 == 0) { + arg1->unk_00[0] = arg0[var_r31].unk_00[0]; + arg1->unk_00[1] = -1; + arg1->unk_04[0] = 0.0f; + } + else { + arg1->unk_00[0] = arg0[var_r30 + 0xA].unk_00[0]; + arg1->unk_00[1] = arg0[var_r31].unk_00[0]; + arg1->unk_04[0] = -23.039999f; + arg1->unk_04[1] = 23.039999f; + } + arg1->unk_0C = arg1->unk_10 = 0.0f; + arg1->unk_14 = arg1->unk_18 = 0.0f; + arg1->unk_1C = arg1->unk_20 = 1.5f; + arg1->unk_24 = 1.0f; + arg1->unk_28 = 0.0f; +} -// void fn_1_ECFC(void *arg0, void *arg1) -// { -// s32 sp1C; -// u32 sp18; -// s32 sp14; -// u32 sp10; -// s32 spC; -// s32 sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// float var_f28; -// double var_f27; -// double var_f26; -// double var_f25; -// double var_f24; -// double var_f23; -// double var_f22; -// double var_f21; -// double var_f20; -// void *var_r31; -// void *var_r30; -// void *var_r29; -// s32 var_r28; -// s32 var_r27; -// s32 var_r26; -// s32 var_r25; -// s32 var_r24; -// void *var_r23; -// s32 var_r22; -// u32 var_r21; -// s32 var_r20; -// s32 var_r19; -// u32 var_r18; -// s32 var_r17; -// s32 temp_r0; +void fn_1_ECFC(M433PlayerWork3Sub *arg0, M433PlayerWork3Sub2 *arg1) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + M433PlayerWork3Sub2Sub *var_r30; + M433PlayerWork3Sub2Sub2 *var_r29; + s32 var_r28; + s32 var_r22; -// var_r23 = arg0; -// var_r31 = arg1; -// var_r28 = 0; -// loop_5: -// if (var_r28 < 2) { -// for (var_r22 = 0; var_r22 < 5; var_r22++) { -// espDispOn(*(var_r23 + ((var_r22 * 2) + 2))); -// } -// espBankSet(var_r23->unk_08, var_r23->unk_00 / 10); -// espBankSet(var_r23->unk_0A, var_r23->unk_00 % 10); -// var_r28++; -// var_r23 += 0xC; -// goto loop_5; -// } -// var_f28 = 2.88f; -// if (var_r31->unk_1C == 0) { -// var_r30 = var_r31 + 0x20; -// } -// else { -// var_r30 = var_r31 + 0x4C; -// var_f28 = 2.88f * -1.0f; -// } -// temp_r0 = var_r31->unk_00; -// switch (temp_r0) { -// case 1: -// var_r19 = var_r31->unk_0C; -// var_r20 = var_r31->unk_0C % 10; -// var_r21 = var_r31->unk_0C / 10; -// if (var_r21 == 0) { -// var_r31->unk_20 = (var_r31 + (var_r20 * 0x10))->unk_D0; -// var_r31->unk_22 = -1; -// var_r31->unk_24 = 0.0f; -// } -// else { -// var_r31->unk_20 = (var_r31 + ((var_r21 + 0xA) * 0x10))->unk_D0; -// var_r31->unk_22 = (var_r31 + (var_r20 * 0x10))->unk_D0; -// var_r31->unk_24 = -23.039999f; -// var_r31->unk_28 = 23.039999f; -// } -// var_r31->unk_30 = 0.0f; -// var_r31->unk_2C = 0.0f; -// var_r31->unk_38 = 0.0f; -// var_r31->unk_34 = 0.0f; -// var_r31->unk_40 = 1.5f; -// var_r31->unk_3C = 1.5f; -// var_r31->unk_44 = 1.0f; -// var_r31->unk_48 = 0.0f; -// sp1C = var_r31->unk_10; -// var_r17 = sp1C % 10; -// var_r18 = sp1C / 10; -// if (var_r18 == 0) { -// var_r31->unk_4C = (var_r31 + (var_r17 * 0x10))->unk_210; -// var_r31->unk_4E = -1; -// var_r31->unk_50 = 0.0f; -// } -// else { -// var_r31->unk_4C = (var_r31 + ((var_r18 + 0xA) * 0x10))->unk_210; -// var_r31->unk_4E = (var_r31 + (var_r17 * 0x10))->unk_210; -// var_r31->unk_50 = -23.039999f; -// var_r31->unk_54 = 23.039999f; -// } -// var_r31->unk_5C = 0.0f; -// var_r31->unk_58 = 0.0f; -// var_r31->unk_64 = 0.0f; -// var_r31->unk_60 = 0.0f; -// var_r31->unk_6C = 1.5f; -// var_r31->unk_68 = 1.5f; -// var_r31->unk_70 = 1.0f; -// var_r31->unk_74 = 0.0f; -// sp14 = 0; -// sp18 = 0; -// if (sp18 == 0) { -// var_r31->unk_78 = (var_r31 + (sp14 * 0x10))->unk_490; -// var_r31->unk_7A = -1; -// var_r31->unk_7C = 0.0f; -// } -// else { -// var_r31->unk_78 = (var_r31 + ((sp18 + 0xA) * 0x10))->unk_490; -// var_r31->unk_7A = (var_r31 + (sp14 * 0x10))->unk_490; -// var_r31->unk_7C = -23.039999f; -// var_r31->unk_80 = 23.039999f; -// } -// var_r31->unk_88 = 0.0f; -// var_r31->unk_84 = 0.0f; -// var_r31->unk_90 = 0.0f; -// var_r31->unk_8C = 0.0f; -// var_r31->unk_98 = 1.5f; -// var_r31->unk_94 = 1.5f; -// var_r31->unk_9C = 1.0f; -// var_r31->unk_A0 = 0.0f; -// sp8 = *(var_r31 + ((var_r31->unk_1C * 4) + 0x14)); -// spC = sp8 % 10; -// sp10 = sp8 / 10; -// if (sp10 == 0) { -// var_r31->unk_A4 = (var_r31 + (spC * 0x10))->unk_350; -// var_r31->unk_A6 = -1; -// var_r31->unk_A8 = 0.0f; -// } -// else { -// var_r31->unk_A4 = (var_r31 + ((sp10 + 0xA) * 0x10))->unk_350; -// var_r31->unk_A6 = (var_r31 + (spC * 0x10))->unk_350; -// var_r31->unk_A8 = -23.039999f; -// var_r31->unk_AC = 23.039999f; -// } -// var_r31->unk_B4 = 0.0f; -// var_r31->unk_B0 = 0.0f; -// var_r31->unk_BC = 0.0f; -// var_r31->unk_B8 = 0.0f; -// var_r31->unk_C4 = 1.5f; -// var_r31->unk_C0 = 1.5f; -// var_r31->unk_C8 = 1.0f; -// var_r31->unk_CC = 0.0f; -// var_f30 = -48.0f; -// var_r31->unk_2C = 172.8f; -// var_r31->unk_30 = 360.0f - -48.0f; -// var_r31->unk_58 = 403.19998f; -// var_r31->unk_5C = 360.0f - -48.0f; -// var_r31->unk_84 = 288.0f; -// var_r31->unk_88 = 360.0f - -48.0f; -// var_r31->unk_9C = 0.0f; -// var_r31->unk_70 = 0.0f; -// var_r31->unk_44 = 0.0f; -// var_f30 = -48.0f / 19.199999f; -// var_r31->unk_38 = var_f30; -// var_r31->unk_64 = var_f30; -// var_r31->unk_90 = var_f30; -// var_r31->unk_B0 = 806.39996f; -// var_r31->unk_B4 = 144.0f; -// var_r31->unk_C0 = var_r31->unk_C0 + 0.5f; -// var_r31->unk_C4 = var_r31->unk_C4 - 0.5f; -// var_r31->unk_B8 = (403.19998f - var_r31->unk_B0) / 24.0f; -// var_r31->unk_BC = (360.0f - var_r31->unk_B4) / 24.0f; -// if (var_r31->unk_1C == 0) { -// var_r31->unk_B0 = -230.40001f; -// var_r31->unk_B8 = var_r31->unk_B8 * -1.0f; -// } -// var_r31->unk_00++; -// var_r31->unk_04 = 0; -// break; -// case 2: -// var_f31 = var_r31->unk_44; -// var_f31 += 0.055555556f; -// if (var_f31 > 0.95f) { -// var_f31 = 1.0f; -// } -// var_r31->unk_9C = var_f31; -// var_r31->unk_70 = var_f31; -// var_r31->unk_44 = var_f31; -// var_r31->unk_30 = var_r31->unk_30 + var_r31->unk_38; -// var_r31->unk_5C = var_r31->unk_5C + var_r31->unk_64; -// var_r31->unk_88 = var_r31->unk_88 + var_r31->unk_90; -// var_r31->unk_B0 = var_r31->unk_B0 + var_r31->unk_B8; -// var_r31->unk_B4 = var_r31->unk_B4 + var_r31->unk_BC; -// if (var_r31->unk_04 >= 19.199999f) { -// var_r30->unk_14 = var_f28; -// var_r30->unk_18 = -16.0f; -// var_r31->unk_00++; -// var_r31->unk_08 = 0; -// } -// break; -// case 3: -// if (var_r31->unk_04 <= 24.0f) { -// var_r31->unk_B0 = var_r31->unk_B0 + var_r31->unk_B8; -// var_r31->unk_B4 = var_r31->unk_B4 + var_r31->unk_BC; -// } -// if (var_r31->unk_08 < 24.0f) { -// var_r31->unk_08++; -// var_f31 = 33.75f * var_r31->unk_08; -// var_f29 = 0.041666668f * var_r31->unk_08; -// var_f29 = 0.5f * (1.0f - (var_f29 * var_f29)); -// if (var_r31->unk_08 == 24.0f) { -// var_f29 = 0.0f; -// } -// var_r31->unk_C0 = 1.5 + (var_f29 * cosd(var_f31)); -// var_r31->unk_C4 = 1.5 + (var_f29 * sind((var_f31 - 90.0f))); -// } -// var_r30->unk_1C = var_r31->unk_C4; -// var_r30->unk_20 = var_r31->unk_C0; -// var_r30->unk_0C = var_r30->unk_0C + var_r30->unk_14; -// var_r30->unk_10 = var_r30->unk_10 + var_r30->unk_18; -// var_r30->unk_18 = var_r30->unk_18 + 0.80000013f; -// var_r30->unk_28 = var_r30->unk_28 + 8.333334f; -// var_r30->unk_24 = var_r30->unk_24 - 0.017833335f; -// if (var_r30->unk_24 < 0.0f) { -// var_r30->unk_24 = 0.0f; -// } -// if (fn_1_10EA4() == 0) { -// var_r31->unk_00++; -// var_r31->unk_04 = 0; -// } -// break; -// case 4: -// var_f31 = var_r31->unk_C8; -// var_f31 -= 0.055555556f; -// if (var_f31 < 0.05f) { -// var_f31 = 0.0f; -// var_r31->unk_00++; -// var_r31->unk_04 = 0; -// } -// var_r31->unk_C8 = var_f31; -// var_r31->unk_9C = var_f31; -// var_r31->unk_70 = var_f31; -// var_r31->unk_44 = var_f31; -// break; -// default: -// for (var_r28 = 0; var_r28 < 2; var_r28++) { -// *(var_r31 + ((var_r28 * 0x2C) + 0x20)) = -1; -// *(var_r31 + ((var_r28 * 0x2C) + 0x22)) = -1; -// } -// var_r31->unk_78 = -1; -// var_r31->unk_7A = -1; -// var_r31->unk_A4 = -1; -// var_r31->unk_A6 = -1; -// var_r31->unk_00 = 0; -// break; -// } -// for (var_r28 = 0; var_r28 < 3; var_r28++) { -// var_r29 = (var_r28 * 0x140) + 0xD0; -// var_r29 += var_r31; -// var_r22 = 0; -// loop_60: -// if (var_r22 < 0x14) { -// if (var_r29->unk_00 >= 0) { -// espDispOff(var_r29->unk_00); -// } -// if (var_r29->unk_04 >= 0) { -// espDispOff(var_r29->unk_04); -// } -// var_r22++; -// var_r29 += 0x10; -// goto loop_60; -// } -// } -// var_r29 = var_r31 + 0x490; -// if (var_r29->unk_00 >= 0) { -// espDispOff(var_r29->unk_00); -// } -// if (var_r29->unk_04 >= 0) { -// espDispOff(var_r29->unk_04); -// } -// for (var_r27 = 0; var_r27 < 2; var_r27++) { -// if ((var_r31 + (var_r27 * 2))->unk_20 >= 0) { -// espDispOn((var_r31 + (var_r27 * 2))->unk_20); -// var_f26 = ((var_r31 + (var_r27 * 4))->unk_24 * var_r31->unk_3C) * cosd(var_r31->unk_48); -// var_f26 = var_f26; -// var_f27 = ((var_r31 + (var_r27 * 4))->unk_24 * var_r31->unk_3C) * sind(var_r31->unk_48); -// var_f27 = var_f27; -// espPosSet((var_r31 + (var_r27 * 2))->unk_20, var_r31->unk_2C + var_f26, var_r31->unk_30 + var_f27); -// espZRotSet((var_r31 + (var_r27 * 2))->unk_20, var_r31->unk_48); -// espScaleSet((var_r31 + (var_r27 * 2))->unk_20, var_r31->unk_3C, var_r31->unk_40); -// espTPLvlSet((var_r31 + (var_r27 * 2))->unk_20, var_r31->unk_44); -// } -// } -// for (var_r26 = 0; var_r26 < 2; var_r26++) { -// if ((var_r31 + (var_r26 * 2))->unk_4C >= 0) { -// espDispOn((var_r31 + (var_r26 * 2))->unk_4C); -// var_f24 = ((var_r31 + (var_r26 * 4))->unk_50 * var_r31->unk_68) * cosd(var_r31->unk_74); -// var_f24 = var_f24; -// var_f25 = ((var_r31 + (var_r26 * 4))->unk_50 * var_r31->unk_68) * sind(var_r31->unk_74); -// var_f25 = var_f25; -// espPosSet((var_r31 + (var_r26 * 2))->unk_4C, var_r31->unk_58 + var_f24, var_r31->unk_5C + var_f25); -// espZRotSet((var_r31 + (var_r26 * 2))->unk_4C, var_r31->unk_74); -// espScaleSet((var_r31 + (var_r26 * 2))->unk_4C, var_r31->unk_68, var_r31->unk_6C); -// espTPLvlSet((var_r31 + (var_r26 * 2))->unk_4C, var_r31->unk_70); -// } -// } -// for (var_r25 = 0; var_r25 < 2; var_r25++) { -// if ((var_r31 + (var_r25 * 2))->unk_78 >= 0) { -// espDispOn((var_r31 + (var_r25 * 2))->unk_78); -// var_f22 = ((var_r31 + (var_r25 * 4))->unk_7C * var_r31->unk_94) * cosd(var_r31->unk_A0); -// var_f22 = var_f22; -// var_f23 = ((var_r31 + (var_r25 * 4))->unk_7C * var_r31->unk_94) * sind(var_r31->unk_A0); -// var_f23 = var_f23; -// espPosSet((var_r31 + (var_r25 * 2))->unk_78, var_r31->unk_84 + var_f22, var_r31->unk_88 + var_f23); -// espZRotSet((var_r31 + (var_r25 * 2))->unk_78, var_r31->unk_A0); -// espScaleSet((var_r31 + (var_r25 * 2))->unk_78, var_r31->unk_94, var_r31->unk_98); -// espTPLvlSet((var_r31 + (var_r25 * 2))->unk_78, var_r31->unk_9C); -// } -// } -// for (var_r24 = 0; var_r24 < 2; var_r24++) { -// if ((var_r31 + (var_r24 * 2))->unk_A4 >= 0) { -// espDispOn((var_r31 + (var_r24 * 2))->unk_A4); -// var_f20 = ((var_r31 + (var_r24 * 4))->unk_A8 * var_r31->unk_C0) * cosd(var_r31->unk_CC); -// var_f20 = var_f20; -// var_f21 = ((var_r31 + (var_r24 * 4))->unk_A8 * var_r31->unk_C0) * sind(var_r31->unk_CC); -// var_f21 = var_f21; -// espPosSet((var_r31 + (var_r24 * 2))->unk_A4, var_r31->unk_B0 + var_f20, var_r31->unk_B4 + var_f21); -// espZRotSet((var_r31 + (var_r24 * 2))->unk_A4, var_r31->unk_CC); -// espScaleSet((var_r31 + (var_r24 * 2))->unk_A4, var_r31->unk_C0, var_r31->unk_C4); -// espTPLvlSet((var_r31 + (var_r24 * 2))->unk_A4, var_r31->unk_C8); -// } -// } -// var_r31->unk_04++; -// } + for (var_r28 = 0; var_r28 < 2; var_r28++, arg0++) { + for (var_r22 = 0; var_r22 < 5; var_r22++) { + espDispOn(arg0->unk_02[var_r22]); + } + espBankSet(arg0->unk_02[3], arg0->unk_00 / 10); + espBankSet(arg0->unk_02[4], arg0->unk_00 % 10); + } + var_f28 = 2.88f; + if (arg1->unk_1C == 0) { + var_r30 = arg1->unk_20; + } + else { + var_r30 = &arg1->unk_20[1]; + var_f28 *= -1.0f; + } + switch (arg1->unk_00) { + case 0: + break; + case 1: + fn_1_EBE4(&arg1->unk_D0[0][0], &arg1->unk_20[0], arg1->unk_0C); + fn_1_EBE4(&arg1->unk_D0[1][0], &arg1->unk_20[1], arg1->unk_10); + fn_1_EBE4(&arg1->unk_490, &arg1->unk_20[2], 0); + fn_1_EBE4(&arg1->unk_D0[2][0], &arg1->unk_20[3], arg1->unk_14[arg1->unk_1C]); -// void fn_1_FE64(void *arg0, s32 arg1, s32 arg2, u32 arg3) -// { -// arg0->unk_00 = 1; -// arg0->unk_0C = arg0->unk_14; -// arg0->unk_10 = arg0->unk_18; -// arg0->unk_14 = arg1; -// arg0->unk_18 = arg2; -// arg0->unk_1C = arg3; -// } + var_f30 = -48.0f; + arg1->unk_20[0].unk_0C = 172.8f; + arg1->unk_20[0].unk_10 = 360.0f - var_f30; + arg1->unk_20[1].unk_0C = 403.19998f; + arg1->unk_20[1].unk_10 = 360.0f - var_f30; + arg1->unk_20[2].unk_0C = 288.0f; + arg1->unk_20[2].unk_10 = 360.0f - var_f30; + arg1->unk_20[0].unk_24 = arg1->unk_20[1].unk_24 = arg1->unk_20[2].unk_24 = 0.0f; + var_f30 = var_f30 / 19.199999f; + arg1->unk_20[0].unk_18 = var_f30; + arg1->unk_20[1].unk_18 = var_f30; + arg1->unk_20[2].unk_18 = var_f30; + arg1->unk_20[3].unk_0C = 806.39996f; + arg1->unk_20[3].unk_10 = 144.0f; + arg1->unk_20[3].unk_1C += 0.5f; + arg1->unk_20[3].unk_20 -= 0.5f; + arg1->unk_20[3].unk_14 = (403.19998f - arg1->unk_20[3].unk_0C) / 24.0f; + arg1->unk_20[3].unk_18 = (360.0f - arg1->unk_20[3].unk_10) / 24.0f; + if (arg1->unk_1C == 0) { + arg1->unk_20[3].unk_0C = -230.40001f; + arg1->unk_20[3].unk_14 *= -1.0f; + } + arg1->unk_00++; + arg1->unk_04 = 0; + break; + case 2: + var_f31 = arg1->unk_20[0].unk_24; + var_f31 += 0.055555556f; + if (var_f31 > 0.95f) { + var_f31 = 1.0f; + } + arg1->unk_20[2].unk_24 = var_f31; + arg1->unk_20[1].unk_24 = var_f31; + arg1->unk_20[0].unk_24 = var_f31; + arg1->unk_20[0].unk_10 += arg1->unk_20[0].unk_18; + arg1->unk_20[1].unk_10 += arg1->unk_20[1].unk_18; + arg1->unk_20[2].unk_10 += arg1->unk_20[2].unk_18; + arg1->unk_20[3].unk_0C += arg1->unk_20[3].unk_14; + arg1->unk_20[3].unk_10 += arg1->unk_20[3].unk_18; + if (arg1->unk_04 >= 19.199999f) { + var_r30->unk_14 = var_f28; + var_r30->unk_18 = -16.0f; + arg1->unk_00++; + arg1->unk_08 = 0; + } + break; + case 3: + if (arg1->unk_04 <= 24.0f) { + arg1->unk_20[3].unk_0C += arg1->unk_20[3].unk_14; + arg1->unk_20[3].unk_10 += arg1->unk_20[3].unk_18; + } + if (arg1->unk_08 < 24.0f) { + arg1->unk_08++; + var_f31 = 33.75f * arg1->unk_08; + var_f29 = 0.041666668f * arg1->unk_08; + var_f29 = 0.5f * (1.0f - (var_f29 * var_f29)); + if (arg1->unk_08 == 24.0f) { + var_f29 = 0.0f; + } + arg1->unk_20[3].unk_1C = 1.5 + (var_f29 * cosd(var_f31)); + arg1->unk_20[3].unk_20 = 1.5 + (var_f29 * sind((var_f31 - 90.0f))); + } + var_r30->unk_1C = arg1->unk_20[3].unk_20; + var_r30->unk_20 = arg1->unk_20[3].unk_1C; + var_r30->unk_0C += var_r30->unk_14; + var_r30->unk_10 += var_r30->unk_18; + var_r30->unk_18 += 0.80000013f; + var_r30->unk_28 += 8.333334f; + var_r30->unk_24 -= 0.017833335f; + if (var_r30->unk_24 < 0.0f) { + var_r30->unk_24 = 0.0f; + } + if (fn_1_10EA4() == 0) { + arg1->unk_00++; + arg1->unk_04 = 0; + } + break; + case 4: + var_f31 = arg1->unk_20[3].unk_24; + var_f31 -= 0.055555556f; + if (var_f31 < 0.05f) { + var_f31 = 0.0f; + arg1->unk_00++; + arg1->unk_04 = 0; + } + arg1->unk_20[3].unk_24 = var_f31; + arg1->unk_20[2].unk_24 = var_f31; + arg1->unk_20[1].unk_24 = var_f31; + arg1->unk_20[0].unk_24 = var_f31; + break; + default: + for (var_r28 = 0; var_r28 < 2; var_r28++) { + arg1->unk_20[var_r28].unk_00[0] = -1; + arg1->unk_20[var_r28].unk_00[1] = -1; + } + arg1->unk_20[2].unk_00[0] = -1; + arg1->unk_20[2].unk_00[1] = -1; + arg1->unk_20[3].unk_00[0] = -1; + arg1->unk_20[3].unk_00[1] = -1; + arg1->unk_00 = 0; + break; + } + for (var_r28 = 0; var_r28 < 3; var_r28++) { + var_r29 = &arg1->unk_D0[var_r28][0]; + for (var_r22 = 0; var_r22 < 0x14; var_r22++, var_r29++) { + if (var_r29->unk_00[0] >= 0) { + espDispOff(var_r29->unk_00[0]); + } + if (var_r29->unk_00[1] >= 0) { + espDispOff(var_r29->unk_00[1]); + } + } + } + var_r29 = &arg1->unk_490; + if (var_r29->unk_00[0] >= 0) { + espDispOff(var_r29->unk_00[0]); + } + if (var_r29->unk_00[1] >= 0) { + espDispOff(var_r29->unk_00[1]); + } + fn_1_EA8C(&arg1->unk_20[0]); + fn_1_EA8C(&arg1->unk_20[1]); + fn_1_EA8C(&arg1->unk_20[2]); + fn_1_EA8C(&arg1->unk_20[3]); + arg1->unk_04++; +} -// void fn_1_FE8C(Vec *arg0, u32 arg1, u32 arg2, s32 arg3) -// { -// void *var_r31; -// void *var_r30; -// u32 var_r29; -// s32 var_r28; -// u32 var_r27; -// s32 var_r26; -// Vec *var_r25; +void fn_1_FE64(M433PlayerWork3Sub2 *arg0, s32 arg1, s32 arg2, u32 arg3) +{ + arg0->unk_00 = 1; + arg0->unk_0C = arg0->unk_14[0]; + arg0->unk_10 = arg0->unk_14[1]; + arg0->unk_14[0] = arg1; + arg0->unk_14[1] = arg2; + arg0->unk_1C = arg3; +} -// var_r25 = arg0; -// var_r29 = arg1; -// var_r27 = arg2; -// var_r26 = arg3; -// var_r31 = lbl_1_bss_7CC->data; -// var_r31->unk_18 = 0; -// if (var_r29 < 9) { -// var_r31->unk_18 = lbl_1_data_770[var_r29]; -// if (lbl_1_data_794[var_r29].unk_00 != 0) { -// var_r30 = lbl_1_bss_7C8->data; -// var_r30->unk_30 = 1; -// var_r30->unk_3C = var_r27; -// var_r30->unk_40 = var_r26; -// var_r30->unk_44 = var_r27; -// if (lbl_1_data_794[var_r29].unk_04 != 0) { -// var_r30->unk_44 = 1 - var_r30->unk_44; -// } -// if (lbl_1_data_794[var_r29].unk_08 != 0) { -// var_r30->unk_34++; -// } -// } -// } -// if (var_r29 == 5) { -// var_r28 = 6; -// if (var_r31->unk_6C == 5) { -// var_r28 = 7; -// } -// Hu3DModelPosSetV(lbl_1_bss_7CC->model[var_r28], var_r31 + 0x30); -// Hu3DModelAttrReset(lbl_1_bss_7CC->model[var_r28], HU3D_ATTR_DISPOFF); -// Hu3DMotionTimeSet(lbl_1_bss_7CC->model[var_r28], 0.0f); -// Hu3DMotionShapeTimeSet(lbl_1_bss_7CC->model[var_r28], 0.0f); -// } -// else if (var_r29 != 2) { -// var_r31->unk_A8 = 1.0f; -// } -// var_r31->unk_0C = 1; -// var_r31->unk_10 = 0; -// var_r31->unk_04 = 0; -// var_r31->unk_08 = 0; -// var_r31->unk_6C = var_r29; -// var_r31->unk_70 = var_r27; -// var_r31->unk_74 = var_r26; -// if (lbl_1_data_800[var_r29] != 0) { -// var_r31->unk_78 = lbl_1_data_800[var_r29]; -// } -// else if (var_r31->unk_78 != 0) { -// var_r31->unk_78--; -// } -// var_r31->unk_3C = var_r25->x; -// var_r31->unk_40 = var_r25->y; -// var_r31->unk_44 = var_r25->z; -// if (var_r29 == 0) { -// var_r31->unk_30 = var_r31->unk_3C; -// var_r31->unk_34 = var_r31->unk_40; -// var_r31->unk_38 = var_r31->unk_44; -// } -// var_r31->unk_F8 = 1.0f; -// var_r31->unk_F8 = 0.0f; -// } +void fn_1_FE8C(Vec *arg0, u32 arg1, u32 arg2, s32 arg3) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + var_r31->unk_18 = 0; + if (arg1 < 9) { + var_r31->unk_18 = lbl_1_data_770[arg1]; + if (lbl_1_data_794[arg1].unk_00 != 0) { + M433PlayerWork3 *var_r30 = lbl_1_bss_7C8->data; + var_r30->unk_30 = 1; + var_r30->uContactGrp = arg2; + var_r30->uContactCel = arg3; + var_r30->uTargetGrp = arg2; + if (lbl_1_data_794[arg1].unk_04 != 0) { + var_r30->uTargetGrp = 1 - var_r30->uTargetGrp; + } + if (lbl_1_data_794[arg1].unk_08 != 0) { + var_r30->uContactCnt++; + } + } + } + if (arg1 == 5) { + s32 var_r28 = 6; + if (var_r31->unk_6C == 5) { + var_r28++; + } + Hu3DModelPosSetV(lbl_1_bss_7CC->model[var_r28], &var_r31->unk_30); + Hu3DModelAttrReset(lbl_1_bss_7CC->model[var_r28], HU3D_ATTR_DISPOFF); + Hu3DMotionTimeSet(lbl_1_bss_7CC->model[var_r28], 0.0f); + Hu3DMotionShapeTimeSet(lbl_1_bss_7CC->model[var_r28], 0.0f); + } + else if (arg1 != 2) { + var_r31->unk_A8 = 1.0f; + } + var_r31->unk_0C = 1; + var_r31->unk_10 = 0; + var_r31->unk_04 = 0; + var_r31->unk_08 = 0; + var_r31->unk_6C = arg1; + var_r31->unk_70 = arg2; + var_r31->unk_74 = arg3; + if (lbl_1_data_800[arg1] != 0) { + var_r31->unk_78 = lbl_1_data_800[arg1]; + } + else if (var_r31->unk_78 != 0) { + var_r31->unk_78--; + } + var_r31->unk_3C = *arg0; + if (arg1 == 0) { + var_r31->unk_30 = var_r31->unk_3C; + } + var_r31->unk_F8.unk_00 = 1.0f; + var_r31->unk_F8.unk_00 = 0.0f; +} -// void fn_1_10130(Vec *arg0, u32 arg1) -// { -// float var_f31; +void fn_1_10130(Vec *arg0, u32 arg1) +{ + float var_f31 = 44.0f; + if ((arg0->z - var_f31) < -500.0f) { + arg0->z = -500.0f + var_f31; + } + else if ((arg0->z + var_f31) > 500.0f) { + arg0->z = 500.0f - var_f31; + } + if (arg1 == 0) { + arg0->x *= -1.0f; + } + if ((arg0->x - var_f31) < 20.0f) { + arg0->x = 20.0f + var_f31; + } + else if ((arg0->x + var_f31) > 800.0f) { + arg0->x = 800.0f - var_f31; + } + if (arg1 == 0) { + arg0->x *= -1.0f; + } +} -// var_f31 = 44.0f; -// if ((arg0->z - 44.0f) < -500.0f) { -// arg0->z = -500.0f + 44.0f; -// } -// else if ((arg0->z + 44.0f) > 500.0f) { -// arg0->z = 500.0f - 44.0f; -// } -// if (arg1 == 0) { -// arg0->x *= -1.0f; -// } -// if ((arg0->x - 44.0f) < 20.0f) { -// arg0->x = 20.0f + 44.0f; -// } -// else if ((arg0->x + 44.0f) > 800.0f) { -// arg0->x = 800.0f - 44.0f; -// } -// if (arg1 == 0) { -// arg0->x *= -1.0f; -// } -// } +void fn_1_10260(float var_f29, float var_f30, u32 var_r30, u32 sp8, Vec *var_r29) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + if (var_f30 > 1.0f) { + var_f30 = 1.0f; + } + if (var_r31->unk_94 == 0) { + var_r31->unk_AC.x = 465.0f; + var_r31->unk_AC.y = 11.0f; + var_r31->unk_AC.z = 0.0f; + if (var_r30 != 0) { + var_r31->unk_AC.x *= -1.0f; + } + var_r31->unk_94 = 1; + var_r31->unk_98 = 0; + var_r31->unk_A4 = 0.0f; + var_r31->unk_8C = 0; + var_r31->unk_A8 = 1.0f; + } + if (sp8 != 0) { + var_r31->unk_94 = 2; + var_f30 *= 1.5f; + } + var_r31->unk_90 = 1; + var_r31->unk_AC.x += 0.01666666753590107 * (800.0 * (var_f30 * sind(var_f29))); + var_r31->unk_AC.z += 0.01666666753590107 * (800.0 * (var_f30 * cosd(var_f29))); + if (var_r30 != 0) { + var_r31->unk_AC.x *= -1.0f; + } + if (var_r31->unk_AC.x < 230.0f) { + var_r31->unk_AC.x = 230.0f; + } + if (var_r30 != 0) { + var_r31->unk_AC.x *= -1.0f; + } + fn_1_10130(&var_r31->unk_AC, 1 - var_r30); + *var_r29 = var_r31->unk_AC; +} -// void fn_1_10260(u32 arg0, s32 arg1, Vec *arg2, float arg8, float arg9) -// { -// s32 sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// void *var_r31; -// u32 var_r30; -// Vec *var_r29; +s32 fn_1_10614(Vec *arg0) +{ + M433PlayerWork2 *work = lbl_1_bss_7CC->data; -// var_f29 = arg8; -// var_f30 = arg9; -// var_r30 = arg0; -// sp8 = arg1; -// var_r29 = arg2; -// var_r31 = lbl_1_bss_7CC->data; -// if (var_f30 > 1.0f) { -// var_f30 = 1.0f; -// } -// if (var_r31->unk_94 == 0) { -// var_r31->unk_AC = 465.0f; -// var_r31->unk_B0 = 11.0f; -// var_r31->unk_B4 = 0.0f; -// if (var_r30 != 0) { -// var_r31->unk_AC = var_r31->unk_AC * -1.0f; -// } -// var_r31->unk_94 = 1; -// var_r31->unk_98 = 0; -// var_r31->unk_A4 = 0.0f; -// var_r31->unk_8C = 0; -// var_r31->unk_A8 = 1.0f; -// } -// if (sp8 != 0) { -// var_r31->unk_94 = 2; -// var_f30 *= 1.5f; -// } -// var_r31->unk_90 = 1; -// var_r31->unk_AC = var_r31->unk_AC + (0.01666666753590107 * (800.0 * (var_f30 * sind(var_f29)))); -// var_r31->unk_B4 = var_r31->unk_B4 + (0.01666666753590107 * (800.0 * (var_f30 * cosd(var_f29)))); -// if (var_r30 != 0) { -// var_r31->unk_AC = var_r31->unk_AC * -1.0f; -// } -// if (var_r31->unk_AC < 230.0f) { -// var_r31->unk_AC = 230.0f; -// } -// if (var_r30 != 0) { -// var_r31->unk_AC = var_r31->unk_AC * -1.0f; -// } -// var_f31 = 44.0f; -// if ((var_r31->unk_B4 - 44.0f) < -500.0f) { -// var_r31->unk_B4 = -500.0f + 44.0f; -// } -// else if ((var_r31->unk_B4 + 44.0f) > 500.0f) { -// var_r31->unk_B4 = 500.0f - 44.0f; -// } -// if ((1 - var_r30) == 0) { -// var_r31->unk_AC = var_r31->unk_AC * -1.0f; -// } -// if ((var_r31->unk_AC - 44.0f) < 20.0f) { -// var_r31->unk_AC = 20.0f + 44.0f; -// } -// else if ((var_r31->unk_AC + 44.0f) > 800.0f) { -// var_r31->unk_AC = 800.0f - 44.0f; -// } -// if ((1 - var_r30) == 0) { -// var_r31->unk_AC = var_r31->unk_AC * -1.0f; -// } -// var_r29->x = var_r31->unk_AC; -// var_r29->y = var_r31->unk_B0; -// var_r29->z = var_r31->unk_B4; -// } + arg0->x = arg0->y = arg0->z = 0.0f; + if (work->unk_94 == 0) { + return 0; + } + *arg0 = work->unk_AC; + arg0->x = fabs(arg0->x); + arg0->x -= 465.0f; + arg0->x *= 0.004255319f; + arg0->z *= 0.0028571428f; + return 1; +} -// s32 fn_1_10614(Vec *arg0) -// { -// float var_f31; -// double var_f30; -// double var_f29; -// void *var_r31; +void fn_1_1070C(void) +{ + M433PlayerWork2 *work = lbl_1_bss_7CC->data; + work->unk_A8 = 1.0f; +} -// var_r31 = lbl_1_bss_7CC->data; -// arg0->z = 0.0f; -// arg0->y = 0.0f; -// arg0->x = 0.0f; -// if (var_r31->unk_94 == 0) { -// return 0; -// } -// arg0->x = var_r31->unk_AC; -// arg0->y = var_r31->unk_B0; -// arg0->z = var_r31->unk_B4; -// var_f31 = arg0->x; -// var_f30 = fabs(var_f31); -// var_f29 = var_f30; -// arg0->x = var_f29; -// arg0->x -= 465.0f; -// arg0->x *= 0.004255319f; -// arg0->z *= 0.0028571428f; -// return 1; -// } +u32 fn_1_10740(Vec *arg0) +{ + u32 var_r30; + M433PlayerWork2 *work = lbl_1_bss_7CC->data; + *arg0 = work->unk_3C; + if (work->unk_3C.x >= 0.0f) { + var_r30 = 1; + } + else { + var_r30 = 0; + } + return var_r30; +} -// void fn_1_1070C(void) -// { -// void *var_r31; +u32 fn_1_107B0(Vec *arg0) +{ + u32 var_r30; + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + if (var_r31->unk_94 != 0) { + *arg0 = var_r31->unk_AC; + } + else { + *arg0 = var_r31->unk_3C; + } + if (arg0->x >= 0.0f) { + var_r30 = 1; + } + else { + var_r30 = 0; + } + return var_r30; +} -// var_r31 = lbl_1_bss_7CC->data; -// var_r31->unk_A8 = 1.0f; -// } +float fn_1_10848(void) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + return var_r31->unk_F8.unk_00 - var_r31->unk_F8.unk_04; +} -// u32 fn_1_10740(Vec *arg0) -// { -// void *var_r31; -// u32 var_r30; +float fn_1_10878(void) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + if (var_r31->unk_94 != 0) { + return 1.5f; + } + return var_r31->unk_F8.unk_00 - var_r31->unk_F8.unk_04; +} -// var_r31 = lbl_1_bss_7CC->data; -// arg0->x = var_r31->unk_3C; -// arg0->y = var_r31->unk_40; -// arg0->z = var_r31->unk_44; -// if (var_r31->unk_3C >= 0.0f) { -// var_r30 = 1; -// } -// else { -// var_r30 = 0; -// } -// return var_r30; -// } +u32 fn_1_108C4(void) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + if (var_r31->unk_94 != 0) { + return var_r31->unk_98; + } + return 0x2710; +} -// u32 fn_1_107B0(Vec *arg0) -// { -// void *var_r31; -// u32 var_r30; +u32 fn_1_10900(void) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + return var_r31->unk_8C; +} -// var_r31 = lbl_1_bss_7CC->data; -// if (var_r31->unk_94 != 0) { -// arg0->x = var_r31->unk_AC; -// arg0->y = var_r31->unk_B0; -// arg0->z = var_r31->unk_B4; -// } -// else { -// arg0->x = var_r31->unk_3C; -// arg0->y = var_r31->unk_40; -// arg0->z = var_r31->unk_44; -// } -// if (arg0->x >= 0.0f) { -// var_r30 = 1; -// } -// else { -// var_r30 = 0; -// } -// return var_r30; -// } +float fn_1_10928(float arg8) +{ + float var_f30; + float var_f28; + float var_f26; + M433PlayerWork2Sub *var_r31; + M433PlayerWork2 *var_r30; -// float fn_1_10848(void) -// { -// void *var_r31; + var_r30 = lbl_1_bss_7CC->data; + var_r31 = &var_r30->unk_F8; + var_f28 = 1.0f / var_r31->unk_24; + var_f30 = -var_r31->unk_20 * var_f28; + var_f26 = var_r31->unk_2C.y + ((var_f30 * (0.5f * var_r31->unk_24 * var_f30)) + (var_r31->unk_20 * var_f30)); + if (arg8 > (var_f26)) { + return -1.0f; + } + var_f30 = var_f28 * (-var_r31->unk_20 - sqrtf((var_r31->unk_20 * var_r31->unk_20) - (2.0f * var_r31->unk_24 * (var_r31->unk_2C.y - arg8)))); + var_f30 -= var_r31->unk_04; + return var_f30; +} -// var_r31 = lbl_1_bss_7CC->data; -// return var_r31->unk_F8 - var_r31->unk_FC; -// } +float fn_1_10B20(float arg8, Vec *arg0) +{ + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + M433PlayerWork2Sub *var_r31; + M433PlayerWork2 *var_r29; -// float fn_1_10878(void) -// { -// void *var_r31; + var_r29 = lbl_1_bss_7CC->data; + var_r31 = &var_r29->unk_F8; + var_f30 = var_r31->unk_04; + var_f31 = var_f30 + arg8; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + if (var_f31 > var_r31->unk_00) { + var_f31 = var_r31->unk_00; + } + var_r31->unk_04 = var_f31; + if (var_r31->unk_10 > 0.0f) { + PSVECSubtract(&var_r31->unk_38, &var_r31->unk_2C, &sp14); + sp14.y = 0.0f; + PSVECNormalize(&sp14, &sp14); + } + else { + sp14.x = sp14.y = sp14.z = 0.0f; + } + sp8 = *arg0; + var_f29 = (var_f31 * (0.5f * var_r31->unk_18 * var_f31)) + (var_r31->unk_14 * var_f31); + var_f28 = (var_f31 * (0.5f * var_r31->unk_24 * var_f31)) + (var_r31->unk_20 * var_f31); + arg0->x = var_r31->unk_2C.x + (sp14.x * var_f29); + arg0->y = var_r31->unk_2C.y + var_f28; + arg0->z = var_r31->unk_2C.z + (sp14.z * var_f29); + PSVECSubtract(arg0, &sp8, &sp20); + var_f31 >= var_r31->unk_00; + var_r31->unk_04 = var_f30; + return var_f30 + arg8; +} -// var_r31 = lbl_1_bss_7CC->data; -// if (var_r31->unk_94 != 0) { -// return 1.5f; -// } -// return var_r31->unk_F8 - var_r31->unk_FC; -// } +static inline float fn_1_10D24_inline(Vec *arg0) +{ + M433PlayerWork2 *var_r31 = lbl_1_bss_7CC->data; + if (var_r31->unk_94 != 0) { + *arg0 = var_r31->unk_AC; + } + else { + *arg0 = var_r31->unk_3C; + } +} -// u32 fn_1_108C4(void) -// { -// void *var_r31; +s32 fn_1_10D24(Vec *sp8) +{ + Vec sp18; + Vec spC; + float var_f31; + float var_f30; + M433PlayerWork2 *var_r31; + M433PlayerWork2 *var_r30; -// var_r31 = lbl_1_bss_7CC->data; -// if (var_r31->unk_94 != 0) { -// return var_r31->unk_98; -// } -// return 0x2710; -// } + var_r31 = lbl_1_bss_7CC->data; + fn_1_10D24_inline(&spC); + PSVECSubtract(&spC, &var_r31->unk_30, &sp18); + if ((spC.x * var_r31->unk_30.x) >= 0.0f) { + return 0; + } + if ((var_r31->unk_30.x == 0.0f) || (sp18.x == 0.0f)) { + return 0; + } + var_f31 = fabs(var_r31->unk_30.x / sp18.x); + PSVECScale(&sp18, &sp18, var_f31); + PSVECAdd(&var_r31->unk_30, &sp18, sp8); + return 1; +} -// u32 fn_1_10900(void) -// { -// void *var_r31; +u32 fn_1_10EA4(void) +{ + M433PlayerWork3 *var_r31 = lbl_1_bss_7C8->data; + return var_r31->uGameEvent; +} -// var_r31 = lbl_1_bss_7CC->data; -// return var_r31->unk_8C; -// } +u32 fn_1_10ECC(u32 arg0) +{ + M433PlayerWork3 *work = lbl_1_bss_7C8->data; + return work->auEvents[arg0 & 1]; +} -// float fn_1_10928(float arg8) -// { -// float sp8; -// double var_f31; -// float var_f30; -// float var_f29; -// float var_f28; -// float var_f27; -// float var_f26; -// void *var_r31; -// void *var_r30; +s32 fn_1_10F00(u32 arg0) +{ + M433PlayerWork3 *var_r31 = lbl_1_bss_7C8->data; + return var_r31->uServeGrp == (arg0 & 1); +} -// var_r30 = lbl_1_bss_7CC->data; -// var_r31 = var_r30 + 0xF8; -// var_f28 = 1.0f / var_r31->unk_24; -// var_f30 = -var_r31->unk_20 * var_f28; -// var_f26 = var_r31->unk_30 + ((var_f30 * (0.5f * var_r31->unk_24 * var_f30)) + (var_r31->unk_20 * var_f30)); -// if (arg8 > var_f26) { -// return -1.0f; -// } -// var_f29 = (var_r31->unk_20 * var_r31->unk_20) - (2.0f * var_r31->unk_24 * (var_r31->unk_30 - arg8)); -// if (var_f29 > 0.0f) { -// var_f31 = __frsqrte(var_f29); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f29 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f29 * (var_f31 * var_f31))); -// var_f31 = 0.5 * var_f31 * (3.0 - (var_f29 * (var_f31 * var_f31))); -// sp8 = var_f29 * var_f31; -// var_f27 = sp8; -// } -// else { -// var_f27 = var_f29; -// } -// var_f30 = var_f28 * (-var_r31->unk_20 - var_f27); -// var_f30 -= var_r31->unk_04; -// return var_f30; -// } +u32 fn_1_10F38(u32 arg0) +{ + M433PlayerWork3 *var_r31 = lbl_1_bss_7C8->data; + return var_r31->auServeCel[arg0 & 1]; +} -// float fn_1_10B20(float arg8, Vec *arg0) -// { -// Vec sp20; -// Vec sp14; -// float sp10; -// float spC; -// float sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// float var_f28; -// float var_f27; -// void *var_r31; -// Vec *var_r30; -// void *var_r29; +s32 fn_1_10F6C(u32 arg0) +{ + M433PlayerWork3 *work = lbl_1_bss_7C8->data; + return work->uPointGrp == (arg0 & 1); +} -// var_f27 = arg8; -// var_r30 = arg0; -// var_r29 = lbl_1_bss_7CC->data; -// var_r31 = var_r29 + 0xF8; -// var_f30 = var_r31->unk_04; -// var_f31 = var_f30 + var_f27; -// if (var_f31 < 0.0f) { -// var_f31 = 0.0f; -// } -// if (var_f31 > var_r31->unk_00) { -// var_f31 = var_r31->unk_00; -// } -// var_r31->unk_04 = var_f31; -// if (var_r31->unk_10 > 0.0f) { -// PSVECSubtract(var_r31 + 0x38, var_r31 + 0x2C, &sp14); -// sp14.y = 0.0f; -// PSVECNormalize(&sp14, &sp14); -// } -// else { -// sp14.z = 0.0f; -// sp14.y = 0.0f; -// sp14 = 0.0f; -// } -// sp8 = var_r30->x; -// spC = var_r30->y; -// sp10 = var_r30->z; -// var_f29 = (var_f31 * (0.5f * var_r31->unk_18 * var_f31)) + (var_r31->unk_14 * var_f31); -// var_f28 = (var_f31 * (0.5f * var_r31->unk_24 * var_f31)) + (var_r31->unk_20 * var_f31); -// var_r30->x = var_r31->unk_2C + (sp14 * var_f29); -// var_r30->y = var_r31->unk_30 + var_f28; -// var_r30->z = var_r31->unk_34 + (sp14.z * var_f29); -// PSVECSubtract(var_r30, &sp8, &sp20); -// var_r31->unk_04 = var_f30; -// return var_f30 + var_f27; -// } +s32 fn_1_10FA4(s32 arg0) +{ + M433PlayerWork3 *work = lbl_1_bss_7C8->data; + return work->sWinGrp == (arg0 & 1); +} -// s32 fn_1_10D24(Vec *arg0) -// { -// Vec sp18; -// s32 sp14; -// s32 sp10; -// float spC; -// Vec *sp8; -// float var_f31; -// float var_f30; -// double var_f29; -// double var_f28; -// void *var_r31; -// void *var_r30; +u32 fn_1_10FDC(void) +{ + M433PlayerWork3 *var_r31 = lbl_1_bss_7C8->data; + return var_r31->uContactCnt; +} -// sp8 = arg0; -// var_r31 = lbl_1_bss_7CC->data; -// var_r30 = lbl_1_bss_7CC->data; -// if (var_r30->unk_94 != 0) { -// spC = var_r30->unk_AC; -// sp10 = var_r30->unk_B0; -// sp14 = var_r30->unk_B4; -// } -// else { -// spC = var_r30->unk_3C; -// sp10 = var_r30->unk_40; -// sp14 = var_r30->unk_44; -// } -// PSVECSubtract(&spC, var_r31 + 0x30, &sp18); -// if ((spC * var_r31->unk_30) >= 0.0f) { -// return 0; -// } -// if ((var_r31->unk_30 == 0.0f) || (sp18 == 0.0f)) { -// return 0; -// } -// var_f30 = var_r31->unk_30 / sp18; -// var_f29 = fabs(var_f30); -// var_f28 = var_f29; -// var_f31 = var_f28; -// PSVECScale(&sp18, &sp18, var_f31); -// PSVECAdd(var_r31 + 0x30, &sp18, sp8); -// return 1; -// } +s32 fn_1_11004(u32 arg0, s32 arg1) +{ + M433PlayerWork3 *work = lbl_1_bss_7C8->data; + return !((work->uContactGrp == (arg0 & 1)) && (work->uContactCel == (arg1 & 1))); +} -// u32 fn_1_10EA4(void) -// { -// void *var_r31; +s32 fn_1_11060(u32 arg0) +{ + M433PlayerWork3 *work = lbl_1_bss_7C8->data; + return work->uContactGrp == (arg0 & 1); +} -// var_r31 = lbl_1_bss_7C8->data; -// return *var_r31; -// } +float fn_1_11098(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Vec sp10; + float var_f31; + float var_f30; -// u32 fn_1_10ECC(u32 arg0) -// { -// void *var_r31; + PSVECSubtract(arg1, arg0, &sp10); + var_f31 = PSVECDotProduct(&sp10, arg2); + var_f30 = -PSVECSquareMag(arg2); + if (var_f30 != 0.0f) { + var_f31 /= var_f30; + } + return var_f31; +} -// var_r31 = lbl_1_bss_7C8->data; -// return *(var_r31 + (((arg0 & 1) * 4) + 0x18)); -// } +float fn_1_11130(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + float var_f31; + float var_f30; + float var_f29; + float var_f28; -// s32 fn_1_10F00(u32 arg0) -// { -// void *var_r31; - -// var_r31 = lbl_1_bss_7C8->data; -// return (arg0 & 1) == var_r31->unk_08; -// } - -// u32 fn_1_10F38(u32 arg0) -// { -// void *var_r31; - -// var_r31 = lbl_1_bss_7C8->data; -// return *(var_r31 + (((arg0 & 1) * 4) + 0x10)); -// } - -// s32 fn_1_10F6C(u32 arg0) -// { -// void *var_r31; - -// var_r31 = lbl_1_bss_7C8->data; -// return (arg0 & 1) == var_r31->unk_0C; -// } - -// s32 fn_1_10FA4(s32 arg0) -// { -// void *var_r31; - -// var_r31 = lbl_1_bss_7C8->data; -// return (arg0 & 1) == var_r31->unk_04; -// } - -// u32 fn_1_10FDC(void) -// { -// void *var_r31; - -// var_r31 = lbl_1_bss_7C8->data; -// return var_r31->unk_34; -// } - -// s32 fn_1_11004(u32 arg0, s32 arg1) -// { -// void *var_r31; -// s32 var_r30; - -// var_r31 = lbl_1_bss_7C8->data; -// var_r30 = 0; -// if ((var_r31->unk_3C == (arg0 & 1)) && (var_r31->unk_40 == (arg1 & 1))) { -// var_r30 = 1; -// } -// return var_r30 == 0; -// } - -// s32 fn_1_11060(u32 arg0) -// { -// void *var_r31; - -// var_r31 = lbl_1_bss_7C8->data; -// return (arg0 & 1) == var_r31->unk_3C; -// } - -// float fn_1_11098(Vec *arg0, Vec *arg1, Vec *arg2) -// { -// Vec sp10; -// Vec *spC; -// Vec *sp8; -// float var_f31; -// float var_f30; -// Vec *var_r31; - -// sp8 = arg0; -// spC = arg1; -// var_r31 = arg2; -// PSVECSubtract(spC, sp8, &sp10); -// var_f31 = PSVECDotProduct(&sp10, var_r31); -// var_f30 = -PSVECSquareMag(var_r31); -// if (var_f30 != 0.0f) { -// var_f31 /= var_f30; -// } -// return var_f31; -// } - -// float fn_1_11130(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3) -// { -// float sp3C; -// float sp38; -// float sp34; -// Vec sp28; -// Vec sp1C; -// Vec sp10; -// Vec *spC; -// Vec *sp8; -// float var_f31; -// float var_f30; -// float var_f29; -// float var_f28; -// Vec *var_r31; -// Vec *var_r30; - -// var_r31 = arg0; -// sp8 = arg1; -// var_r30 = arg2; -// spC = arg3; -// PSVECSubtract(sp8, var_r31, &sp28); -// PSVECSubtract(spC, var_r30, &sp1C); -// PSVECSubtract(&sp28, &sp1C, &sp28); -// if (PSVECMag(&sp28) <= 0.0f) { -// sp34 = var_r31->x; -// sp38 = var_r31->y; -// sp3C = var_r31->z; -// } -// else { -// PSVECSubtract(var_r31, var_r30, &sp10); -// var_f30 = PSVECDotProduct(&sp10, &sp28); -// var_f29 = -PSVECSquareMag(&sp28); -// if (var_f29 != 0.0f) { -// var_f30 /= var_f29; -// } -// var_f28 = var_f30; -// var_f31 = var_f28; -// if (var_f31 < 0.0f) { -// var_f31 = 0.0f; -// } -// else if (var_f31 > 1.0f) { -// var_f31 = 1.0f; -// } -// PSVECScale(&sp28, &sp1C, var_f31); -// PSVECAdd(var_r31, &sp1C, &sp34); -// } -// PSVECSubtract(var_r30, &sp34, &sp28); -// return (bitwise s32)PSVECMag(&sp28); -// } + PSVECSubtract(arg1, arg0, &sp28); + PSVECSubtract(arg3, arg2, &sp1C); + PSVECSubtract(&sp28, &sp1C, &sp28); + if (PSVECMag(&sp28) <= 0.0f) { + sp34 = *arg0; + } + else { + PSVECSubtract(arg0, arg2, &sp10); + var_f30 = PSVECDotProduct(&sp10, &sp28); + var_f29 = -PSVECSquareMag(&sp28); + if (var_f29 != 0.0f) { + var_f30 /= var_f29; + } + var_f28 = var_f30; + var_f31 = var_f28; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + else if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + PSVECScale(&sp28, &sp1C, var_f31); + PSVECAdd(arg0, &sp1C, &sp34); + } + PSVECSubtract(arg2, &sp34, &sp28); + return PSVECMag(&sp28); +} diff --git a/src/REL/m434Dll/player.c b/src/REL/m434Dll/player.c index e08b307e..55ae04c8 100644 --- a/src/REL/m434Dll/player.c +++ b/src/REL/m434Dll/player.c @@ -212,8 +212,6 @@ void fn_1_64C0(omObjData *object); float fn_1_67AC(float arg0, float arg1); -// Issues with assignment of temp_f30 -// Scratch is at https://decomp.me/scratch/EqCuG void fn_1_4E50(omObjData *object) { float temp_f31;