From a144a790f1b32eda6a2a8c28ced32cd2906a0303 Mon Sep 17 00:00:00 2001 From: CreateSource Date: Sun, 2 Feb 2025 20:44:39 -0500 Subject: [PATCH 1/3] map progress --- .vscode/settings.json | 4 +- include/REL/m427Dll.h | 1 + src/REL/m427Dll/map.c | 890 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 894 insertions(+), 1 deletion(-) create mode 100644 src/REL/m427Dll/map.c diff --git a/.vscode/settings.json b/.vscode/settings.json index 3322a6d7..77816237 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -60,7 +60,9 @@ "float.h": "c", "corecrt_math_defines.h": "c", "math_ppc.h": "c", - "errno.h": "c" + "errno.h": "c", + "m427dll.h": "c", + "sprite.h": "c" }, "search.useIgnoreFiles": false, "search.exclude": { diff --git a/include/REL/m427Dll.h b/include/REL/m427Dll.h index fe879974..cef5b491 100644 --- a/include/REL/m427Dll.h +++ b/include/REL/m427Dll.h @@ -5,6 +5,7 @@ void fn_1_32F4(Process*); void fn_1_3A88(void); void fn_1_E98C(Process*); void fn_1_EC54(void); +s32 fn_1_10FE8(s16, s32*); void fn_1_110E8(s32, s32*); void fn_1_111C0(s32, s32*); void fn_1_11298(f32); diff --git a/src/REL/m427Dll/map.c b/src/REL/m427Dll/map.c new file mode 100644 index 00000000..acbbb20e --- /dev/null +++ b/src/REL/m427Dll/map.c @@ -0,0 +1,890 @@ +#include "REL/m427Dll.h" + +#include "ext_math.h" +#include "game/animdata.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/sprite.h" + +#define FABS(value) ((value < 0) ? -(value) : (value)) + +typedef struct M427DllStruct { + s32 unk0; + s32 unk4; +} M427DllStruct; + +typedef struct M427DllStruct2 { + s32 unk0[3]; + s32 unkC; + s32 unk10; + s32 unk14[7]; + s32 unk30[7]; + HsfVector2f unk4C[7]; + f32 unk84; + f32 unk88; + s32 unk8C; + f32 unk90; + f32 unk94; + f32 unk98; + s32 unk9C; + s32 unkA0; +} M427DllStruct2; // sizeof 0xA4 + +typedef struct M427DllStruct3 { + Vec rot; + Vec cen; + f32 zoom; +} M427DllStruct3; + +typedef struct M427DllMapStruct { + char unk_0[0x2]; + s16 unk2; + s16 unk4; + char unk_6[0x2]; + AnimData* unk8; + char unk_C[0x74]; + void* unk80; + char unk_84[0x14]; +} M427DllMapStruct; // sizeof 0x98 + +typedef struct M427DllMapStruct2 { + s8 unk0; + s16 unk2; + s16 unk4; +} M427DllMapStruct2; + +typedef struct M427DllMapSubstruct { + s16 unk0; + Vec unk4; +} M427DllMapSubstruct; // sizeof 0x10 + +typedef struct M427DllMapSubstruct2 { + s16 unk0; + Vec unk4; + s16 unk10; + s16 unk12; + s16 unk14[4]; +} M427DllMapSubstruct2; // sizeof 0x1C + +typedef struct M427DllMapSubstruct4 { + char unk[0x28]; + AnimData* unk28; +} M427DllMapSubstruct4; + +typedef struct M427DllMapSubstruct7 { + s16 unk0; + s32 unk4; + void* unk8; +} M427DllMapSubstruct7; + +typedef struct M427DllMapUNKBA { + s16 unk0; + char unk[0x2E]; +} M427DllMapUNKBA; + +typedef struct M427DllMapUNK180 { + s16 unk0; + s16 unk2; +} M427DllMapUNK180; + +typedef struct M427DllMapSubstruct3 { + s16 unk0; + s16 unk2[11]; + s16 unk18; + s16 unk1A; + s16 unk1C; + s16 unk1E; + s16 unk20; + char unk_22[0x3A]; + s16 unk5C; + char unk_5E[0x1A]; + Vec unk78; + Vec unk84; + f32 unk90; + char unk_94[0x4]; + void* unk98; + M427DllMapSubstruct7* unk9C; + char unk_A0[0xC]; + M427DllMapSubstruct4* unkAC; + char unk_B0[0xA]; + M427DllMapUNKBA unkBA[2][2]; + char unk_17A[0x6]; + M427DllMapUNK180 unk180[2][2]; + char unk_190[0x8]; +} M427DllMapSubstruct3; // sizeof 0x198 + +typedef struct M427DllMapStruct3 { + u8 unk0; + M427DllMapSubstruct3 unk4[2]; + AnimData* unk334; + AnimData* unk338; + char unk_33C[0x10]; + M427DllMapSubstruct2 unk34C[3]; + M427DllMapSubstruct unk3A0[5]; +} M427DllMapStruct3; // sizeof 0x3F0 + +typedef struct M427DllMapSubstruct5 { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; + Vec unk8; + char unk[0x8]; +} M427DllMapSubstruct5; + +typedef struct M427DllMapStruct4 { + s16 unk0; + Vec* unk4; + Vec2f* unk8; + Vec* unkC; + GXColor* unk10; + s16 unk14; + s16 unk16; + s16 unk18; + M427DllMapSubstruct5* unk1C; + void* unk20; + u32 unk24; + void* unk28; + u32 unk2C; + void* unk30; + u32 unk34; + f32 unk38; + f32 unk3C; + f32 unk40; + f32 unk44; + s16 unk48[1]; + s16 unk4A; +} M427DllMapStruct4; + +typedef struct M427DllMapStruct5 { + f32 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + f32 unk10; +} M427DllMapStruct5; // sizeof 0x14 + +omObjData* lbl_1_bss_548; +M427DllMapStruct3 lbl_1_bss_158; +M427DllMapStruct2 lbl_1_bss_F8[0x10]; +M427DllMapStruct* lbl_1_bss_F0; +s16 lbl_1_bss_EC[2]; +s16 lbl_1_bss_E8[2]; +M427DllMapStruct5* lbl_1_bss_E4; +M427DllMapStruct4 lbl_1_bss_98; +f32 lbl_1_bss_94; + +void fn_1_372C(void); +void fn_1_4218(omObjData*); +void fn_1_44F4(f32, f32, f32, f32, f32); +void fn_1_48EC(ModelData*, Mtx); +void fn_1_4D7C(ModelData*, Mtx); +void fn_1_50A0(ModelData*, Mtx); +void fn_1_510C(s32, s16, s16); +void fn_1_558C(M427DllMapStruct4*); +void fn_1_618C(ModelData*, Mtx); +void fn_1_6760(omObjData*); +void fn_1_C2C8(Vec*, Vec*, Vec*, void*); +void fn_1_D22C(void); +s16 fn_1_D63C(AnimData*, s32, f32, s32, s32); +void fn_1_DB80(s16); +void fn_1_DC64(s16, void (*)(void)); +void fn_1_DC9C(s16, s32); + + +void fn_1_32F4(Process* arg0) { + s16 var_r31; + AnimData* temp_r30; + s32 var_r29; + s32 var_r28; + + lbl_1_bss_158.unk0 = 0; + lbl_1_bss_548 = omAddObjEx(arg0, 0x7F, 0, 0, -1, fn_1_6760); + lbl_1_bss_F0 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10 * sizeof(M427DllMapStruct), 0x10000000); + + for (var_r31 = 0; var_r31 < 0x10; var_r31++) { + lbl_1_bss_F0[var_r31].unk2 = -1; + } + temp_r30 = HuSprAnimRead(HuDataReadNum(0x3A0017, MEMORY_DEFAULT_NUM)); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + lbl_1_bss_EC[var_r31] = fn_1_D63C(temp_r30, 0x200, 80.0f, 0x40, 0x40); + fn_1_DC64(lbl_1_bss_EC[var_r31], &fn_1_D22C); + fn_1_DC9C(lbl_1_bss_EC[var_r31], 1); + Hu3DModelLayerSet(lbl_1_bss_EC[var_r31], 7); + if (var_r31 == 0) { + var_r29 = 1; + } else { + var_r29 = 2; + } + Hu3DModelCameraSet(lbl_1_bss_EC[var_r31], var_r29); + } + temp_r30 = HuSprAnimRead(HuDataReadNum(0x3A001A, MEMORY_DEFAULT_NUM)); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + lbl_1_bss_E8[var_r31] = fn_1_D63C(temp_r30, 4, 120.0f, 0, 0); + fn_1_DC9C(lbl_1_bss_E8[var_r31], 1); + Hu3DModelLayerSet(lbl_1_bss_E8[var_r31], 7); + if (var_r31 == 0) { + var_r28 = 1; + } else { + var_r28 = 2; + } + Hu3DModelCameraSet(lbl_1_bss_E8[var_r31], var_r28); + } + fn_1_372C(); + + for (var_r31 = 0; var_r31 < 0x10; var_r31++) { + lbl_1_bss_F8[var_r31].unk0 = -1; + lbl_1_bss_F8[var_r31].unk2 = Hu3DModelCreateFile(0x3A0012); + Hu3DModelAttrSet(lbl_1_bss_F8[var_r31].unk2, 1); + Hu3DModelScaleSet(lbl_1_bss_F8[var_r31].unk2, 0.75f, 0.75f, 0.75f); + Hu3DModelLayerSet(lbl_1_bss_F8[var_r31].unk2, 4); + Hu3DMotionSpeedSet(lbl_1_bss_F8[var_r31].unk2, 2.0f); + lbl_1_bss_F8[var_r31].unk4 = Hu3DAnimCreate(HuDataReadNum(0x3A001B, MEMORY_DEFAULT_NUM), lbl_1_bss_F8[var_r31].unk2, "db91"); + Hu3DAnimSpeedSet(lbl_1_bss_F8[var_r31].unk4, 2.0f); + } +} + +void fn_1_372C(void) { + M427DllMapSubstruct* var_r29 = &lbl_1_bss_158.unk3A0[0]; + M427DllMapSubstruct2* var_r30 = &lbl_1_bss_158.unk34C[0]; + s16 sp1A[5] = { 0, 0, 1, 1, 0 }; + Vec sp60[5] = { + { -700.0f, -150.0f, -7000.0f }, + { 0.0f, -300.0f, -12000.0f }, + { 800.0f, -350.0f, -12700.0f }, + { 600.0f, -350.0f, -13700.0f }, + { 825.0f, -450.0f, -15000.0f } + }; + s16 sp8[3] = { 1, 1, 0 }; + s16 spE[3][2] = { { 4, 5 }, { 8, -1 }, { 9, -1 } }; + s16 sp24[3][4] = { + { 180, 120, 60, 60 }, + { 90, 180, 60, 60 }, + { 90, 180, 60, 60 } + }; + Vec sp3C[3] = { + -350.0f, -300.0f, -10000.0f, + -700.0f, -600.0f, -17000.0f, + 700.0f, -600.0f, -19000.0f + }; + s16 var_r28; + s16 var_r31; + + for (var_r31 = 0; var_r31 < 5; var_r31++, var_r29++) { + var_r29->unk0 = sp1A[var_r31]; + var_r29->unk4.x = sp60[var_r31].x; + var_r29->unk4.y = sp60[var_r31].y; + var_r29->unk4.z = sp60[var_r31].z; + } + + for (var_r31 = 0; var_r31 < 3; var_r31++, var_r30++) { + var_r30->unk0 = sp8[var_r31]; + var_r30->unk4.x = sp3C[var_r31].x; + var_r30->unk4.y = sp3C[var_r31].y; + var_r30->unk4.z = sp3C[var_r31].z; + var_r30->unk10 = spE[var_r31][0]; + var_r30->unk12 = spE[var_r31][1]; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r30->unk14[var_r28] = sp24[var_r31][var_r28]; + } + } +} + +void fn_1_3A88(void) { + M427DllMapStruct* sp8; + s16 var_r30; + M427DllMapSubstruct3* var_r31; + + sp8 = lbl_1_bss_F0; + HuSprAnimKill(lbl_1_bss_158.unk334); + HuSprAnimKill(lbl_1_bss_158.unk338); + + for (var_r30 = 0, var_r31 = &lbl_1_bss_158.unk4[0]; var_r30 < 2; var_r30++, var_r31++) { + if (var_r31->unk98) { + HuMemDirectFree(var_r31->unk98); + } + } +} + +void fn_1_3B20(s8 arg0, s16 arg1) { + M427DllMapStruct2* var_r31 = &lbl_1_bss_F8[0]; + M427DllMapSubstruct3* temp_r30 = &lbl_1_bss_158.unk4[arg1]; + Vec sp54[4] = { + { 110.0f, -20.0f, 0.0f }, + { -110.0f, -20.0f, 0.0f }, + { 110.0f, -20.0f, 190.0f }, + { -110.0f, -20.0f, 190.0f } + }; + Mtx sp24; + f32 sp14[4] = { 135.0f, 225.0f, 45.0f, 315.0f }; + Point3d sp8; + f32 temp_f31; + s16 var_r29; + s32 var_r27; + + for (var_r29 = 0; var_r29 < 0x10; var_r29++, var_r31++) { + if (var_r31->unk0 == -1) break; + } + if (var_r29 != 0x10) { + var_r31->unk0 = arg0; + temp_f31 = temp_r30->unk90; + PSMTXRotRad(sp24, 0x59, MTXDegToRad(temp_f31)); + PSMTXMultVec(sp24, &sp54[arg0], &sp8); + sp8.x += temp_r30->unk84.x; + sp8.y += temp_r30->unk84.y; + sp8.z += temp_r30->unk84.z; + Hu3DModelAttrReset(var_r31->unk2, 1); + if (arg1 == 0) { + var_r27 = 1; + } else { + var_r27 = 2; + } + Hu3DModelCameraSet(var_r31->unk2, var_r27); + Hu3DModelPosSet(var_r31->unk2, sp8.x, sp8.y, sp8.z); + Hu3DModelRotSet(var_r31->unk2, 0.0f, temp_f31 + sp14[arg0], 0.0f); + Hu3DMotionTimeSet(var_r31->unk2, 0.0f); + if (arg0 < 2) { + Hu3DModelAmbSet(var_r31->unk2, 1.0f, 1.0f, 1.0f); + } else { + Hu3DModelAmbSet(var_r31->unk2, 0.5f, 0.5f, 0.5f); + } + Hu3DAnimBankSet(var_r31->unk4, 0); + } +} + +void fn_1_3DBC(void) { + M427DllMapStruct2* var_r31; + s16 var_r30; + f32 temp_f31; + + var_r31 = &lbl_1_bss_F8[0]; + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (var_r31->unk0 != -1) { + temp_f31 = Hu3DMotionMaxTimeGet(var_r31->unk2); + if (Hu3DMotionTimeGet(var_r31->unk2) >= temp_f31) { + var_r31->unk0 = -1; + Hu3DModelAttrSet(var_r31->unk2, 1U); + } + } + } +} + +void fn_1_3E58(omObjData* arg0) { + s32 sp8[8]; + M427DllMapStruct* var_r26; + M427DllMapSubstruct3* var_r31; + ModelData* temp_r25; + s16 var_r30; + M427DllMapStruct4* var_r29; + s16 var_r28; + s16 var_r27; + + var_r29 = &lbl_1_bss_98; + for (var_r28 = 0, var_r31 = lbl_1_bss_158.unk4; var_r28 < 2; var_r28++, var_r31++) { + var_r27 = fn_1_10FE8(var_r31->unk0, &sp8[0]); + + for (var_r30 = 0; var_r30 < var_r27; var_r30++) { + temp_r25 = &Hu3DData[sp8[var_r30]]; + temp_r25->unk_38[4] = temp_r25->unk_38[5] = temp_r25->unk_38[6] = temp_r25->unk_38[7] = -1; + } + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + for (var_r27 = 0; var_r27 < 2; var_r27++) { + Hu3DModelKill(var_r31->unk180[var_r30][var_r27].unk0); + } + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + for (var_r27 = 0; var_r27 < 2; var_r27++) { + Hu3DModelKill(var_r31->unkBA[var_r30][var_r27].unk0); + } + } + HuSprAnimKill(var_r31->unkAC->unk28); + Hu3DModelKill(var_r31->unk1A); + Hu3DModelKill(var_r31->unk1C); + HuMemDirectFree(var_r31->unk98); + var_r31->unk98 = NULL; + fn_1_DB80(lbl_1_bss_EC[var_r28]); + fn_1_DB80(lbl_1_bss_E8[var_r28]); + + for (var_r30 = 0; var_r30 < 11; var_r30++) { + Hu3DModelKill(var_r31->unk2[var_r30]); + } + Hu3DModelKill(var_r31->unk1E); + Hu3DModelKill(var_r31->unk20); + } + for (var_r28 = 0, var_r26 = lbl_1_bss_F0; var_r28 < 0x10; var_r28++, var_r26++) { + if (var_r26->unk2 != -1) { + Hu3DModelKill(var_r26->unk4); + HuSprAnimKill(var_r26->unk8); + HuMemDirectFree(var_r26->unk80); + } + } + HuMemDirectFree(lbl_1_bss_F0); + Hu3DFogClear(); + var_r30 = Hu3DModelCreateFile(0x3A0011); + Hu3DModelCameraSet(var_r30, 1); + Hu3DModelLayerSet(var_r30, 1); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + var_r29->unk0 = Hu3DModelCreateFile(0x3A0010); + Hu3DModelCameraSet(var_r29->unk0, 1); + Hu3DModelLayerSet(var_r29->unk0, 3); + Hu3DModelPosSet(var_r29->unk0, 0.0f, 0.0f, 0.0f); + lbl_1_bss_158.unk0 = 1; + var_r29->unk48[0] = 0; + var_r29->unk4A = 0; + var_r29->unk4 = 0; + lbl_1_bss_E4 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10 * sizeof(M427DllMapStruct5), MEMORY_DEFAULT_NUM); + for (var_r28 = 0; var_r28 < 0x10; var_r28++) { + lbl_1_bss_E4[var_r28].unk10 = -1.0f; + } + fn_1_510C(0, 0x32, 0x32); + arg0->func = fn_1_4218; +} + +void fn_1_4218(omObjData* arg0) { + f32 var_f31; + f32 temp_f30; + f32 var_f29; + M427DllMapStruct5* var_r31; + s16 var_r30; + M427DllMapStruct4* var_r29; + s32 temp_r28; + + var_r29 = &lbl_1_bss_98; + var_r31 = &lbl_1_bss_E4[0]; + for (var_r30 = 0; var_r30 < 1; var_r30++) { + if (--var_r29->unk48[var_r30] < 0.0f) { + var_r29->unk48[var_r30] = (f32)((((rand8() << 8) | rand8()) % 241) + 0x78); + var_f31 = ((((rand8() << 8) | rand8()) % 4001) - 0x7D0); + temp_f30 = -3000.0f; + var_f29 = ((((rand8() << 8) | rand8()) % 21) + 0xA); + fn_1_44F4(var_f31, 0.0f, temp_f30, var_f29, 0.0f); + } + } + + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (-1.0f != var_r31->unk10) { + var_r31->unkC += 20.0f; + var_r31->unk10 -= 0.2f; + if (var_r31->unk10 < 0.0f) { + var_r31->unk10 = -1.0f; + } + } + } +} + +void fn_1_44F4(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) { + M427DllMapStruct5* var_r31; + s16 var_r30; + + var_r31 = &lbl_1_bss_E4[0]; + + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (-1.0f == var_r31->unk10) break; + } + if (var_r30 != 0x10) { + var_r31->unk0 = arg0; + var_r31->unk4 = arg1; + var_r31->unk8 = arg2; + var_r31->unkC = arg4; + var_r31->unk10 = arg3; + } +} + +f32 lbl_1_data_F4 = 450.0f; + +f32 fn_1_4570(Vec* arg0) { + f32 temp_f31; + f32 temp_f30; + f32 var_f28; + f32 var_f27; + f32 var_f23; + M427DllMapStruct5* var_r31; + s16 var_r30; + + var_r31 = &lbl_1_bss_E4[0]; + var_f27 = 0.0f; + + for (var_r30 = 0; var_r30 < 0x10; var_r30++, var_r31++) { + if (-1.0f != var_r31->unk10) { + temp_f31 = arg0->x - var_r31->unk0; + temp_f30 = arg0->z - var_r31->unk8; + if (FABS(temp_f31) > (var_r31->unkC + lbl_1_data_F4)) { + if (FABS(temp_f30) > (var_r31->unkC + lbl_1_data_F4)) { + continue; + } + } + var_f28 = sqrtf((temp_f31 * temp_f31) + (temp_f30 * temp_f30)); + var_f23 = FABS(var_f28 - var_r31->unkC); + var_f28 = 1.0f - (var_f23 / lbl_1_data_F4); + if (var_f28 < 0.0f) { + var_f28 = 0.0f; + } + var_f27 += var_r31->unk10 * sind(90.0f * var_f28); + } + } + return var_f27; +} + +void fn_1_48EC(ModelData* arg0, Mtx arg1) { + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + f32 sp8; + f32 temp_f29; + f32 temp_f30; + f32 temp_f31; + + sp3C.x = CenterM->x; + sp3C.y = CenterM->y; + sp3C.z = CenterM->z; + sp30.x = CRotM->x; + sp30.y = CRotM->y; + sp30.z = CRotM->z; + temp_f29 = *CZoomM; + CenterM->x = -CenterM->x; + CenterM->y = -CenterM->y; + CenterM->z = CenterM->z; + CRotM->x = 180.0f + CRotM->x; + CRotM->y = 180.0f + -CRotM->y; + CRotM->z = CRotM->z; + *CZoomM = *CZoomM; + temp_f31 = CRotM->x; + temp_f30 = CRotM->y; + sp8 = CRotM->z; + sp24.x = (CenterM->x + (*CZoomM * (sind(temp_f30) * cosd(temp_f31)))); + sp24.y = (CenterM->y + (*CZoomM * -sind(temp_f31))); + sp24.z = (CenterM->z + (*CZoomM * (cosd(temp_f30) * cosd(temp_f31)))); + spC.x = CenterM->x; + spC.y = CenterM->y; + spC.z = CenterM->z; + sp18.x = (sind(temp_f30) * sind(temp_f31)); + sp18.y = cosd(temp_f31); + sp18.z = (cosd(temp_f30) * sind(temp_f31)); + Hu3DCameraPosSetV(1, &sp24, &sp18, &spC); + CenterM->x = sp3C.x; + CenterM->y = sp3C.y; + CenterM->z = sp3C.z; + CRotM->x = sp30.x; + CRotM->y = sp30.y; + CRotM->z = sp30.z; + *CZoomM = temp_f29; +} + +void fn_1_4D7C(ModelData* arg0, Mtx arg1) { + Vec sp24; + Vec sp18; + Vec spC; + f32 sp8; + f32 temp_f30; + f32 temp_f31; + + temp_f31 = CRotM->x; + temp_f30 = CRotM->y; + sp8 = CRotM->z; + sp24.x = CenterM->x + sind(temp_f30) * cosd(temp_f31) * *CZoomM; + sp24.y = CenterM->y + *CZoomM * -sind(temp_f31); + sp24.z = CenterM->z + cosd(temp_f30) * cosd(temp_f31) * *CZoomM; + sp18.x = CenterM->x; + sp18.y = CenterM->y; + sp18.z = CenterM->z; + spC.x = sind(temp_f30) * sind(temp_f31); + spC.y = cosd(temp_f31); + spC.z = cosd(temp_f30) * sind(temp_f31); + Hu3DCameraPosSetV(1, &sp24, &spC, &sp18); + if (lbl_1_bss_98.unk30) { + GXSetTexCopySrc(0, 0, 0x280, 0x1E0); + GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGB5A3, 0); + GXCopyTex(lbl_1_bss_98.unk30, 1); + } +} + +void fn_1_50A0(ModelData* arg0, Mtx arg1) { + if (lbl_1_bss_98.unk28) { + GXSetTexCopySrc(0, 0, 0x280, 0x1E0); + GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGB5A3, 0); + GXCopyTex(lbl_1_bss_98.unk28, 0); + } +} + +void fn_1_510C(s32 arg0, s16 arg1, s16 arg2) { + s16 sp12; + s16 sp10; + s16 spE; + s16 spC; + s16 spA; + s16 sp8; + M427DllMapStruct4* var_r31; + M427DllMapSubstruct5* var_r30; + s16 var_r29; + ModelData* temp_r28; + s16 var_r27; + M427DllMapSubstruct5* var_r26; + M427DllMapSubstruct5* var_r23; + + var_r31 = &lbl_1_bss_98; + var_r29 = Hu3DHookFuncCreate(fn_1_618C); + Hu3DModelCameraSet(var_r29, 1); + Hu3DModelLayerSet(var_r29, 5); + temp_r28 = &Hu3DData[var_r29]; + var_r29 = Hu3DHookFuncCreate(fn_1_48EC); + Hu3DModelCameraSet(var_r29, 1); + Hu3DModelLayerSet(var_r29, 0); + var_r29 = Hu3DHookFuncCreate(fn_1_4D7C); + Hu3DModelCameraSet(var_r29, 1); + Hu3DModelLayerSet(var_r29, 2); + var_r29 = Hu3DHookFuncCreate(fn_1_50A0); + Hu3DModelCameraSet(var_r29, 1); + Hu3DModelLayerSet(var_r29, 4); + var_r31->unk38 = var_r31->unk3C = 0.0f; + var_r31->unk34 = GXGetTexBufferSize(0x280, 0x1E0, 5, 0, 0); + var_r31->unk30 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk34, temp_r28->unk_48); + var_r31->unk2C = GXGetTexBufferSize(0x280, 0x1E0, 5, 0, 0); + var_r31->unk28 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk2C, temp_r28->unk_48); + var_r31->unk16 = arg1 + 1; + var_r31->unk18 = arg2 + 1; + var_r31->unk14 = var_r31->unk16 * var_r31->unk18; + var_r31->unk4 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48); + var_r31->unk8 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec2f), temp_r28->unk_48); + var_r31->unkC = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48); + var_r31->unk10 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * sizeof(Vec), temp_r28->unk_48); + var_r31->unk1C = HuMemDirectMallocNum(HEAP_DATA, arg2 * (arg1 * sizeof(M427DllMapSubstruct5)), temp_r28->unk_48); + var_r30 = var_r31->unk1C; + var_r23 = var_r26 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, temp_r28->unk_48); + DCFlushRange(var_r26, 0x20000); + GXBeginDisplayList(var_r23, 0x20000); + GXBegin(GX_QUADS, GX_VTXFMT0, (arg1 * arg2 * 4)); + + for (var_r29 = 0; var_r29 < arg2; var_r29++) { + for (var_r27 = 0; var_r27 < arg1; var_r30++, var_r27++) { + var_r30->unk0 = var_r27 + var_r29 * var_r31->unk16; + var_r30->unk2 = (var_r29 * var_r31->unk16) + var_r27 + 1; + var_r30->unk4 = ((var_r29 + 1) * var_r31->unk16) + var_r27 + 1; + var_r30->unk6 = var_r27 + ((var_r29 + 1) * var_r31->unk16); + GXPosition1x16(var_r30->unk0); + GXPosition1x16(var_r30->unk0); + GXPosition1x16(var_r30->unk0); + GXPosition1x16(var_r30->unk2); + GXPosition1x16(var_r30->unk2); + GXPosition1x16(var_r30->unk2); + GXPosition1x16(var_r30->unk4); + GXPosition1x16(var_r30->unk4); + GXPosition1x16(var_r30->unk4); + GXPosition1x16(var_r30->unk6); + GXPosition1x16(var_r30->unk6); + GXPosition1x16(var_r30->unk6); + fn_1_C2C8(&var_r31->unk4[var_r30->unk0], &var_r31->unk4[var_r30->unk2], &var_r31->unk4[var_r30->unk4], &var_r30->unk8); + } + } + var_r31->unk24 = GXEndDisplayList(); + var_r31->unk20 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk24, temp_r28->unk_48); + memcpy(var_r31->unk20, var_r26, var_r31->unk24); + DCFlushRange(var_r31->unk20, var_r31->unk24); + HuMemDirectFree(var_r26); + fn_1_558C(var_r31); +} + +f32 lbl_1_data_F8 = -1.0f; + +void fn_1_558C(M427DllMapStruct4* arg0) { + Mtx spAC; + Mtx sp7C; + Mtx sp4C; + Vec2f sp44; + Vec2f sp3C; + Vec2f sp34; + Vec2f sp2C; + f32 sp28; + f32 sp24; + f32 sp20; + f32 var_f26; + f32 var_f25; + f32 var_f20; + M427DllMapSubstruct5* var_r30; + Vec* var_r29; + Vec* var_r28; + s16 var_r27; + M427DllMapStruct5* var_r26; + Vec2f* var_r25; + s16 var_r24; + CameraData* var_r23; + s16 var_r22; + + var_r23 = &Hu3DCamera[0]; + if (lbl_1_data_F8 == -1.0f) { + lbl_1_bss_94 = 720.0f / arg0->unk16; + lbl_1_data_F8 = 1440.0f / arg0->unk18; + } + if (omPauseChk() == 0) { + arg0->unk40 += 1.0f; + arg0->unk44 += 1.5f; + } + if (arg0->unk40 >= 360.0f) { + arg0->unk40 -= 360.0f; + } + if (arg0->unk44 >= 360.0f) { + arg0->unk44 -= 360.0f; + } + var_r28 = arg0->unk4; + var_r29 = arg0->unkC; + sp3C.x = 2000.0f; + sp3C.y = -2000.0f; + sp44.x = 1000.0f; + sp44.y = -2500.0f; + sp2C.x = sp44.x; + sp2C.y = (sp44.y - sp44.x) / (arg0->unk18 - 1); + var_f25 = arg0->unk44; + + for (var_r27 = 0; var_r27 < arg0->unk18; var_r27++) { + sp34.x = sp3C.x; + sp34.y = (sp3C.y - sp3C.x) / (arg0->unk16 - 1); + var_f26 = arg0->unk40; + + for (var_r24 = 0; var_r24 < arg0->unk16; var_r28++, var_r29++, var_r24++) { + var_r28->x = sp34.x; + var_r28->z = sp2C.x; + sp24 = 5.0 * sind(var_f26) + 10.0 * sind(var_f25); + sp34.x += sp34.y; + var_f26 += lbl_1_bss_94; + if (var_f26 >= 360.0f) { + var_f26 -= 360.0f; + } + var_r28->y = sp24 + fn_1_4570(var_r28); + var_r29->x = var_r29->y = var_r29->z = 0.0f; + } + sp2C.x += sp2C.y; + var_f25 += lbl_1_data_F8; + if (var_f25 >= 360.0f) { + var_f25 -= 360.0f; + } + } + var_r30 = arg0->unk1C; + var_r24 = (arg0->unk16 - 1) * (arg0->unk18 - 1); + + for (var_r27 = 0; var_r27 < var_r24; var_r27++, var_r30++) { + fn_1_C2C8(&arg0->unk4[var_r30->unk0], &arg0->unk4[var_r30->unk2], &arg0->unk4[var_r30->unk4], &var_r30->unk8); + arg0->unkC[var_r30->unk0].x += var_r30->unk8.x; + arg0->unkC[var_r30->unk0].y += var_r30->unk8.y; + arg0->unkC[var_r30->unk0].z += var_r30->unk8.z; + arg0->unkC[var_r30->unk2].x += var_r30->unk8.x; + arg0->unkC[var_r30->unk2].y += var_r30->unk8.y; + arg0->unkC[var_r30->unk2].z += var_r30->unk8.z; + arg0->unkC[var_r30->unk4].x += var_r30->unk8.x; + arg0->unkC[var_r30->unk4].y += var_r30->unk8.y; + arg0->unkC[var_r30->unk4].z += var_r30->unk8.z; + arg0->unkC[var_r30->unk6].x += var_r30->unk8.x; + arg0->unkC[var_r30->unk6].y += var_r30->unk8.y; + arg0->unkC[var_r30->unk6].z += var_r30->unk8.z; + } + + var_r29 = arg0->unkC; + for (var_r27 = 0; var_r27 < arg0->unk14; var_r27++, var_r29++) { + var_f20 = sqrtf((var_r29->x * var_r29->x) + (var_r29->y * var_r29->y) + (var_r29->z * var_r29->z)); + var_r29->x /= var_f20; + var_r29->y /= var_f20; + var_r29->z /= var_f20; + } + var_r28 = arg0->unk4; + var_r25 = arg0->unk8; + C_MTXLookAt(spAC, &var_r23->pos, &var_r23->up, &var_r23->target); + GXGetProjectionv(&sp7C[0][0]); + GXGetViewportv(&sp4C[0][0]); + + for (var_r27 = 0; var_r27 < arg0->unk14; var_r27++, var_r28++, var_r25++) { + GXProject(var_r28->x, var_r28->y, var_r28->z, spAC, &sp7C[0][0], &sp4C[0][0], &sp28, &sp24, &sp20); + var_r25->x = 0.0015625f * sp28; + var_r25->y = 0.0020833f * sp24; + var_r25->x += 0.05f * arg0->unkC[var_r27].x; + var_r25->y += 0.05f * arg0->unkC[var_r27].z; + arg0->unk10[var_r27].r = 0xFF; + arg0->unk10[var_r27].g = 0xFF; + arg0->unk10[var_r27].b = 0xFF; + arg0->unk10[var_r27].a = 0xFF; + } + DCFlushRangeNoSync(arg0->unk4, arg0->unk14 * 0xC); + DCFlushRangeNoSync(arg0->unkC, arg0->unk14 * 0xC); + DCFlushRangeNoSync(arg0->unk8, arg0->unk14 * 8); + DCFlushRangeNoSync(arg0->unk10, arg0->unk14 * 4); + PPCSync(); +} + +void fn_1_618C(ModelData* arg0, Mtx arg1) { + Mtx sp64; + Mtx sp34; + GXTexObj sp14; + GXColor spC; + M427DllMapStruct4* var_r31 = &lbl_1_bss_98; + AnimData** var_r30 = &lbl_1_bss_158.unk334; + + fn_1_558C(var_r31); + GXLoadPosMtxImm(arg1, 0); + 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->unk4, 0xC); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_TEX0, var_r31->unk8, 8); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, var_r31->unk10, 4); + GXInitTexObj(&sp14, var_r31->unk30, 0x280, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); + GXInitTexObjLOD(&sp14, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1); + GXLoadTexObj(&sp14, GX_TEXMAP0); + GXInitTexObj(&sp14, var_r31->unk28, 0x280, 0x1E0, GX_TF_RGB5A3, GX_CLAMP, GX_CLAMP, 0); + GXInitTexObjLOD(&sp14, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1); + GXLoadTexObj(&sp14, GX_TEXMAP1); + HuSprTexLoad(*var_r30, 0, 2, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTevStages(3); + spC.r = 0; + spC.g = 0x10; + spC.b = 0x1E; + spC.a = 0x4C; + GXSetTevColor(GX_TEVREG2, spC); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVREG0); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVREG0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_TEXC, GX_CC_C0, GX_CC_A2, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVREG1); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVREG1); + GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE2, GX_CC_C1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C2); + GXSetTevColorOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD1, GX_TEXMAP2); + GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, 1, 0, GX_ITM_0); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + PSMTXScale(sp64, -0.1f, 0.0f, 1.0f); + GXSetIndTexMtx(GX_ITM_0, (f32(*)[3])(sp64), 0); + GXSetNumTexGens(2); + if (omPauseChk() == 0) { + var_r31->unk38 += 0.001f; + var_r31->unk3C += 0.0005f; + } + PSMTXRotRad(sp64, 0x58, 1.5707964f); + PSMTXScale(sp34, 0.001f, 0.001f, 0.001f); + PSMTXConcat(sp64, sp34, sp64); + mtxTransCat(sp64, var_r31->unk38, var_r31->unk3C, 0.0f); + GXLoadTexMtxImm(sp64, 0x1E, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, 0, 0x7D); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, 0x1E, 0, 0x7D); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetZMode(1, GX_LEQUAL, 1); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(0); + GXSetBlendMode(GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXCallDisplayList(var_r31->unk20, var_r31->unk24); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); +} From 1b37639dc67ca803871f38125bda72c5b36dde40 Mon Sep 17 00:00:00 2001 From: CreateSource Date: Mon, 3 Feb 2025 18:38:17 -0500 Subject: [PATCH 2/3] fix build error --- include/REL/m427Dll.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/REL/m427Dll.h b/include/REL/m427Dll.h index 1678efc2..c8290376 100644 --- a/include/REL/m427Dll.h +++ b/include/REL/m427Dll.h @@ -13,7 +13,7 @@ void fn_1_91E0(s16 arg0, float arg8, float arg9, float argA, float argB); float fn_1_AE78(s16 arg0, float arg8, float arg9); void fn_1_E98C(Process*); void fn_1_EC54(void); -s32 fn_1_10FE8(s16, s32*); +s32 fn_1_10FE8(s32 arg0, s32 *arg1); void fn_1_110E8(s32, s32*); void fn_1_111C0(s32, s32*); void fn_1_11298(f32); From ea1d89dbde05e647edfd7e01086f7ced154d62ec Mon Sep 17 00:00:00 2001 From: CreateSource Date: Mon, 3 Feb 2025 22:32:48 -0500 Subject: [PATCH 3/3] start naming m463 --- src/REL/m463Dll/main.c | 757 +++++++++++++++++++++-------------------- 1 file changed, 379 insertions(+), 378 deletions(-) diff --git a/src/REL/m463Dll/main.c b/src/REL/m463Dll/main.c index 8304c1b3..a483b214 100755 --- a/src/REL/m463Dll/main.c +++ b/src/REL/m463Dll/main.c @@ -1,3 +1,5 @@ +// Panel Panic 9 Player + #include "game/audio.h" #include "game/chrman.h" #include "game/data.h" @@ -31,20 +33,18 @@ typedef struct { } StructBss35C; // Size 0x10 typedef struct { - /* 0x00 */ s32 unk00; - /* 0x00 */ s32 unk04; - /* 0x08 */ s32 unk08; - /* 0x0C */ s32 unk0C; - /* 0x10 */ s32 unk10; + /* 0x00 */ s32 player; + /* 0x00 */ s32 playerCfg; + /* 0x08 */ s32 character; + /* 0x0C */ s32 padIdx; + /* 0x10 */ s32 diff; /* 0x14 */ s32 unk14; /* 0x18 */ s32 unk18; /* 0x1C */ s32 unk1C; /* 0x20 */ s32 unk20; /* 0x24 */ s32 unk24; /* 0x28 */ float unk28; - /* 0x2C */ float unk2C; - /* 0x30 */ char unk30[4]; - /* 0x34 */ float unk34; + /* 0x2C */ Vec unk2C; /* 0x38 */ s32 unk38; /* 0x3C */ s32 unk3C; /* 0x40 */ s32 unk40; @@ -52,11 +52,10 @@ typedef struct { /* 0x48 */ s32 unk48; /* 0x48 */ s32 unk4C; /* 0x50 */ s32 unk50; - /* 0x54 */ s16 unk54; - /* 0x56 */ char unk56[2]; - /* 0x58 */ s32 unk58; + /* 0x54 */ s16 particle; + /* 0x58 */ s32 particleTimer; /* 0x5C */ s32 unk5C; -} StructBss330Data; // Size 0x60 +} M463PlayerData; // Size 0x60 typedef struct { /* 0x00 */ s32 unk00; @@ -74,12 +73,12 @@ StructBss51C lbl_1_bss_51C[9]; StructBss35C lbl_1_bss_35C[28]; omObjData *lbl_1_bss_358; omObjData *lbl_1_bss_354; -omObjData *lbl_1_bss_330[9]; +omObjData *playerObjs[9]; omObjData *lbl_1_bss_32C; HsfanimStruct00 lbl_1_bss_5C[9]; s32 lbl_1_bss_58; s32 lbl_1_bss_54; -s32 lbl_1_bss_50; +s32 lbl_1_bss_50; //// TODO: setup enum when what this is gets figured out char lbl_1_bss_4C[4]; // unused s32 lbl_1_bss_48; s32 lbl_1_bss_44; @@ -143,9 +142,9 @@ float lbl_1_data_158[] = { -90.0f, 0.0f, 525.0f, 180.0f, 90.0f, 0.0f, 525.0f, 18 void fn_1_A0(void) { if (HuPadBtnDown[0] & PAD_BUTTON_B) { - Center.x = lbl_1_bss_330[0]->trans.x; - Center.y = lbl_1_bss_330[0]->trans.y; - Center.z = lbl_1_bss_330[0]->trans.z; + Center.x = playerObjs[0]->trans.x; + Center.y = playerObjs[0]->trans.y; + Center.z = playerObjs[0]->trans.z; } Center.x += 10.0 * (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) - ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0)); Center.z -= 10.0 * (((HuPadBtn[0] & PAD_BUTTON_UP) != 0) - ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0)); @@ -160,10 +159,10 @@ void fn_1_A0(void) s32 lbl_1_data_184 = -1; -void fn_1_4C8(omObjData *arg0) +void fn_1_4C8(omObjData *object) { - ModelData *temp_r24; - ModelData *temp_r29; + ModelData *model; + ModelData *model2; float temp_f31; float temp_f30; float var_f28; @@ -175,18 +174,18 @@ void fn_1_4C8(omObjData *arg0) float var_f22; float var_f21; float var_f20; - StructBss330Data *temp_r31; + M463PlayerData *data; s16 var_r28; s32 temp_r27; s32 var_r26; s32 var_r25; s32 var_r23; s32 var_r22; - StructBss330Data *temp_r21; + M463PlayerData *iPlayerData; s32 var_r20; s32 var_r19; - StructBss330Data *temp_r18; - s32 var_r17; + M463PlayerData *temp_r18; + s32 player; float sp180[2]; s32 spE0; s32 spDC; @@ -195,122 +194,122 @@ void fn_1_4C8(omObjData *arg0) s32 spD0; s32 spCC; s32 spC8; - StructBss330Data *spC4; + M463PlayerData *spC4; s32 spC0; s32 spBC; - StructBss330Data *spB8; + M463PlayerData *spB8; s32 spB4; u32 spB0; float spAC; s32 spA8; s32 spA4; s32 spA0; - StructBss330Data *sp9C; + M463PlayerData *sp9C; ModelData *sp98; float sp94; float sp90; s32 sp8C; s32 sp88; - temp_r31 = arg0->data; + data = object->data; var_f23 = 0.0f; var_f22 = 0.0f; var_f28 = 0.0f; var_r22 = 0; var_r28 = -1; - temp_r31->unk2C = temp_r31->unk34 = 0.0f; - if (lbl_1_bss_50 == 1005 && temp_r31->unk18 == 3 && temp_r31->unk1C >= 360) { - if (temp_r31->unk1C == 360) { - temp_r31->unk14 = rand8() % 15; + data->unk2C.x = data->unk2C.z = 0.0f; + if (lbl_1_bss_50 == 1005 && data->unk18 == 3 && data->unk1C >= 360) { + if (data->unk1C == 360) { + data->unk14 = rand8() % 15; } - if (temp_r31->unk0C != -1) { - var_r22 = (HuPadBtnDown[temp_r31->unk0C] & PAD_BUTTON_A) ? 1 : 0; + if (data->padIdx != -1) { + var_r22 = (HuPadBtnDown[data->padIdx] & PAD_BUTTON_A) ? 1 : 0; } else { - temp_r31->unk14 += (temp_r31->unk14 < 0x10000); - if (temp_r31->unk14 == 30) { + data->unk14 += (data->unk14 < 0x10000); + if (data->unk14 == 30) { var_r22 = 1; } } } - if (temp_r31->unk00 < 4 && lbl_1_bss_50 == 1002) { + if (data->player < 4 && lbl_1_bss_50 == 1002) { var_r26 = 0; var_r25 = 0; - if (temp_r31->unk0C != -1) { - var_r26 = (HuPadStkX[temp_r31->unk0C] < -20) ? -1 : (HuPadStkX[temp_r31->unk0C] > 20) ? 1 : 0; - var_r25 = (-HuPadStkY[temp_r31->unk0C] < -20) ? -1 : (-HuPadStkY[temp_r31->unk0C] > 20) ? 1 : 0; - var_r22 = (HuPadBtnDown[temp_r31->unk0C] & PAD_BUTTON_A) ? 1 : 0; + if (data->padIdx != -1) { + var_r26 = (HuPadStkX[data->padIdx] < -20) ? -1 : (HuPadStkX[data->padIdx] > 20) ? 1 : 0; + var_r25 = (-HuPadStkY[data->padIdx] < -20) ? -1 : (-HuPadStkY[data->padIdx] > 20) ? 1 : 0; + var_r22 = (HuPadBtnDown[data->padIdx] & PAD_BUTTON_A) ? 1 : 0; } else { if (lbl_1_bss_54 == 1) { - temp_r31->unk14 = rand8() % 64 + 30; + data->unk14 = rand8() % 64 + 30; } - temp_r31->unk14 -= (temp_r31->unk14 > 0); - if (temp_r31->unk14 == 1) { - var_r26 = (temp_r31->unk3C > 0 ? -1 : 1) * (rand8() % 2); - var_r25 = (temp_r31->unk40 > 0 ? -1 : 1) * (rand8() % 2); + data->unk14 -= (data->unk14 > 0); + if (data->unk14 == 1) { + var_r26 = (data->unk3C > 0 ? -1 : 1) * (rand8() % 2); + var_r25 = (data->unk40 > 0 ? -1 : 1) * (rand8() % 2); } - if (temp_r31->unk14 == 0) { + if (data->unk14 == 0) { var_r22 = (rand8() % 64 == 1) ? 1 : 0; } } - if (lbl_1_bss_54 >= 50 || temp_r31->unk50 != 0) { + if (lbl_1_bss_54 >= 50 || data->unk50 != 0) { var_r26 = var_r25 = 0; } - for (var_r17 = 0; var_r17 < 4; var_r17++) { - temp_r21 = lbl_1_bss_330[var_r17]->data; + for (player = 0; player < 4; player++) { + iPlayerData = playerObjs[player]->data; spD0 = 0; spCC = 0; - if (var_r17 != temp_r31->unk00) { - if (fabs(500.0 * temp_r31->unk3C - arg0->trans.x) < 10.0) { - spE0 = spDC = (arg0->trans.x < -250.0) ? -1 : (arg0->trans.x > 250.0) ? 1 : 0; + if (player != data->player) { + if (fabs(500.0 * data->unk3C - object->trans.x) < 10.0) { + spE0 = spDC = (object->trans.x < -250.0) ? -1 : (object->trans.x > 250.0) ? 1 : 0; } else { - spE0 = (arg0->trans.x < 0.0f) ? -1 : 0; + spE0 = (object->trans.x < 0.0f) ? -1 : 0; spDC = spE0 + 1; } - if (fabs(500.0 * temp_r31->unk40 - arg0->trans.z) < 10.0) { - spD8 = spD4 = (arg0->trans.z < -250.0) ? -1 : (arg0->trans.z > 250.0) ? 1 : 0; + if (fabs(500.0 * data->unk40 - object->trans.z) < 10.0) { + spD8 = spD4 = (object->trans.z < -250.0) ? -1 : (object->trans.z > 250.0) ? 1 : 0; } else { - spD8 = (arg0->trans.z < 0.0f) ? -1 : 0; + spD8 = (object->trans.z < 0.0f) ? -1 : 0; spD4 = spD8 + 1; } for (var_r20 = spE0; var_r20 <= spDC; var_r20++) { for (var_r19 = spD8; var_r19 <= spD4; var_r19++) { - if (temp_r21->unk38 == (1 + var_r20 + var_r26) + (1 + var_r19 + var_r25) * 3) { + if (iPlayerData->unk38 == (1 + var_r20 + var_r26) + (1 + var_r19 + var_r25) * 3) { var_r26 = var_r25 = 0; } - if (temp_r21->unk38 == (1 + var_r20 + var_r26) + (1 + var_r19) * 3) { + if (iPlayerData->unk38 == (1 + var_r20 + var_r26) + (1 + var_r19) * 3) { var_r26 = 0; } - if (temp_r21->unk38 == (1 + var_r20) + (1 + var_r19 + var_r25) * 3) { + if (iPlayerData->unk38 == (1 + var_r20) + (1 + var_r19 + var_r25) * 3) { var_r25 = 0; } } } } } - if (var_r26 * (500.0 * temp_r31->unk3C - arg0->trans.x) < 0.0) { - temp_r31->unk3C += var_r26; + if (var_r26 * (500.0 * data->unk3C - object->trans.x) < 0.0) { + data->unk3C += var_r26; } - if (fabs(500.0 * temp_r31->unk3C - arg0->trans.x) < 10.0 && var_r26 != 0 && temp_r31->unk3C + var_r26 >= -1 - && temp_r31->unk3C + var_r26 <= 1) { - temp_r31->unk3C += var_r26; + if (fabs(500.0 * data->unk3C - object->trans.x) < 10.0 && var_r26 != 0 && data->unk3C + var_r26 >= -1 + && data->unk3C + var_r26 <= 1) { + data->unk3C += var_r26; } - var_f23 = ((500.0 * temp_r31->unk3C - arg0->trans.x) / 0.25) / 1.75; - if (var_r25 * (500.0 * temp_r31->unk40 - arg0->trans.z) < 0.0) { - temp_r31->unk40 += var_r25; + var_f23 = ((500.0 * data->unk3C - object->trans.x) / 0.25) / 1.75; + if (var_r25 * (500.0 * data->unk40 - object->trans.z) < 0.0) { + data->unk40 += var_r25; } - if (fabs(500.0 * temp_r31->unk40 - arg0->trans.z) < 10.0 && var_r25 != 0 && temp_r31->unk40 + var_r25 >= -1 - && temp_r31->unk40 + var_r25 <= 1) { - temp_r31->unk40 += var_r25; + if (fabs(500.0 * data->unk40 - object->trans.z) < 10.0 && var_r25 != 0 && data->unk40 + var_r25 >= -1 + && data->unk40 + var_r25 <= 1) { + data->unk40 += var_r25; } - var_f22 = ((500.0 * temp_r31->unk40 - arg0->trans.z) / -0.25) / 1.75; - temp_r31->unk38 = (temp_r31->unk3C + 1) + (temp_r31->unk40 + 1) * 3; + var_f22 = ((500.0 * data->unk40 - object->trans.z) / -0.25) / 1.75; + data->unk38 = (data->unk3C + 1) + (data->unk40 + 1) * 3; } - if (temp_r31->unk18 == 0) { - if (lbl_1_bss_50 > (temp_r31->unk00 < 4 ? 1001 : 1003) && lbl_1_bss_50 < 1006) { + if (data->unk18 == 0) { + if (lbl_1_bss_50 > (data->player < 4 ? 1001 : 1003) && lbl_1_bss_50 < 1006) { temp_f31 = 0.25 * var_f23; temp_f30 = 0.25 * -var_f22; { @@ -326,19 +325,19 @@ void fn_1_4C8(omObjData *arg0) var_f28 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30); if (var_f28 >= 0.5f) { if (var_f28 < 10.0f) { - temp_r31->unk2C = temp_f31; - temp_r31->unk34 += temp_f30; + data->unk2C.x = temp_f31; + data->unk2C.z += temp_f30; } else { temp_f31 /= var_f28; temp_f30 /= var_f28; var_f28 = 10.0f; - temp_r31->unk2C = temp_f31 * var_f28; - temp_r31->unk34 = temp_f30 * var_f28; + data->unk2C.x = temp_f31 * var_f28; + data->unk2C.z = temp_f30 * var_f28; } - temp_r31->unk28 = var_f28; - arg0->rot.y = atan2d(temp_r31->unk2C, temp_r31->unk34); - if (temp_r31->unk28 >= 8.0f) { + data->unk28 = var_f28; + object->rot.y = atan2d(data->unk2C.x, data->unk2C.z); + if (data->unk28 >= 8.0f) { var_r28 = 2; } else { @@ -351,65 +350,65 @@ void fn_1_4C8(omObjData *arg0) } } } - arg0->trans.x += 1.75f * temp_r31->unk2C; - arg0->trans.z += 1.75f * temp_r31->unk34; + object->trans.x += 1.75f * data->unk2C.x; + object->trans.z += 1.75f * data->unk2C.z; switch (lbl_1_bss_50) { case 1001: case 1003: - if (lbl_1_bss_50 != (temp_r31->unk00 < 4 ? 1001 : 1003)) { + if (lbl_1_bss_50 != (data->player < 4 ? 1001 : 1003)) { break; } if (lbl_1_bss_54 == 0) { - Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); - if (temp_r31->unk00 < 4) { - temp_r31->unk38 = (temp_r31->unk00 == 0) ? 0 : (temp_r31->unk00 == 1) ? 2 : (temp_r31->unk00 == 2) ? 6 : 8; - temp_r31->unk3C = temp_r31->unk38 % 3 - 1; - temp_r31->unk40 = temp_r31->unk38 / 3 - 1; - arg0->trans.x = 500.0 * temp_r31->unk3C; - arg0->trans.z = 500.0 * temp_r31->unk40; + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + if (data->player < 4) { + data->unk38 = (data->player == 0) ? 0 : (data->player == 1) ? 2 : (data->player == 2) ? 6 : 8; + data->unk3C = data->unk38 % 3 - 1; + data->unk40 = data->unk38 / 3 - 1; + object->trans.x = 500.0 * data->unk3C; + object->trans.z = 500.0 * data->unk40; } else { do { - temp_r31->unk38 = rand8() % 9; - for (spC8 = 0; spC8 < temp_r31->unk00; spC8++) { - spC4 = lbl_1_bss_330[spC8]->data; - if (temp_r31->unk38 == spC4->unk38) { + data->unk38 = rand8() % 9; + for (spC8 = 0; spC8 < data->player; spC8++) { + spC4 = playerObjs[spC8]->data; + if (data->unk38 == spC4->unk38) { break; } } - } while (spC8 != temp_r31->unk00); - temp_r31->unk3C = temp_r31->unk38 % 3 - 1; - temp_r31->unk40 = temp_r31->unk38 / 3 - 1; - arg0->trans.x = 500.0 * temp_r31->unk3C; - arg0->trans.z = 500.0 * temp_r31->unk40; + } while (spC8 != data->player); + data->unk3C = data->unk38 % 3 - 1; + data->unk40 = data->unk38 / 3 - 1; + object->trans.x = 500.0 * data->unk3C; + object->trans.z = 500.0 * data->unk40; } } if (lbl_1_bss_54 <= 30) { - if (temp_r31->unk08 == -1) { - Hu3DMotionTimeSet(arg0->model[0], 138.0f); + if (data->character == -1) { + Hu3DMotionTimeSet(object->model[0], 138.0f); } - arg0->trans.y = 2400.0 * (1.0 - lbl_1_bss_54 / 30.0); + object->trans.y = 2400.0 * (1.0 - lbl_1_bss_54 / 30.0); } - if (temp_r31->unk08 != -1 && lbl_1_bss_54 == 30) { + if (data->character != -1 && lbl_1_bss_54 == 30) { var_r28 = 4; } - if (lbl_1_bss_54 == (temp_r31->unk08 != -1 ? 10 : 60) + 30) { + if (lbl_1_bss_54 == (data->character != -1 ? 10 : 60) + 30) { var_r28 = 0; } if (lbl_1_bss_54 == 30) { lbl_1_data_134.unk04 += 50; } - if (lbl_1_bss_54 == 30 && (temp_r31->unk00 == 0 || temp_r31->unk00 == 4)) { + if (lbl_1_bss_54 == 30 && (data->player == 0 || data->player == 4)) { HuAudFXPlay(0x33D); } break; case 1002: - if (lbl_1_bss_54 != 0 && temp_r31->unk00 < 4 && (var_r22 != 0 || lbl_1_bss_0 == 0) && temp_r31->unk50 == 0) { - temp_r31->unk50 = 1; + if (lbl_1_bss_54 != 0 && data->player < 4 && (var_r22 != 0 || lbl_1_bss_0 == 0) && data->unk50 == 0) { + data->unk50 = 1; lbl_1_bss_14++; - lbl_1_bss_51C[temp_r31->unk38].unk08 = 83.333336f; + lbl_1_bss_51C[data->unk38].unk08 = 83.333336f; } - if (temp_r31->unk00 != 0) { + if (data->player != 0) { break; } if (lbl_1_bss_54 == 0) { @@ -433,9 +432,9 @@ void fn_1_4C8(omObjData *arg0) } if (lbl_1_bss_54 == 50) { for (var_r23 = 0; var_r23 < 4; var_r23++) { - temp_r18 = lbl_1_bss_330[var_r23]->data; - if (!(fabs(500.0 * temp_r18->unk3C - lbl_1_bss_330[var_r23]->trans.x) < 1.0) - || !(fabs(500.0 * temp_r18->unk40 - lbl_1_bss_330[var_r23]->trans.z) < 1.0) || temp_r18->unk20 != 0) { + temp_r18 = playerObjs[var_r23]->data; + if (!(fabs(500.0 * temp_r18->unk3C - playerObjs[var_r23]->trans.x) < 1.0) + || !(fabs(500.0 * temp_r18->unk40 - playerObjs[var_r23]->trans.z) < 1.0) || temp_r18->unk20 != 0) { break; } } @@ -445,132 +444,132 @@ void fn_1_4C8(omObjData *arg0) } break; case 1005: - if (temp_r31->unk5C != 0) { - if (arg0->trans.y < -15000.0f) { - Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + if (data->unk5C != 0) { + if (object->trans.y < -15000.0f) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); } else { - arg0->trans.y -= 77.0f; + object->trans.y -= 77.0f; } } break; case 1006: if (lbl_1_bss_54 <= 1) { - Hu3DModelAttrSet(arg0->model[temp_r31->unk44 + 2], HU3D_ATTR_DISPOFF); - lbl_1_bss_51C[temp_r31->unk44].unk0C = 0; + Hu3DModelAttrSet(object->model[data->unk44 + 2], HU3D_ATTR_DISPOFF); + lbl_1_bss_51C[data->unk44].unk0C = 0; } - if (lbl_1_bss_51C[temp_r31->unk38].unk0C != 0 || temp_r31->unk5C != 0) { + if (lbl_1_bss_51C[data->unk38].unk0C != 0 || data->unk5C != 0) { break; } if (lbl_1_bss_54 == 120) { - Hu3DModelAttrReset(lbl_1_bss_32C->model[temp_r31->unk38 + 1], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_32C->model[data->unk38 + 1], HU3D_MOTATTR_PAUSE); } if (lbl_1_bss_54 == 153) { - Hu3DModelAttrSet(lbl_1_bss_32C->model[temp_r31->unk38 + 1], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(lbl_1_bss_32C->model[data->unk38 + 1], HU3D_MOTATTR_PAUSE); } if (lbl_1_bss_54 == 183) { - Hu3DModelAttrReset(lbl_1_bss_32C->model[temp_r31->unk38 + 1], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(lbl_1_bss_32C->model[data->unk38 + 1], HU3D_MOTATTR_PAUSE); } if (lbl_1_bss_54 == 210) { spBC = 0; for (spC0 = 0; spC0 < 9; spC0++) { - spB8 = lbl_1_bss_330[spC0]->data; + spB8 = playerObjs[spC0]->data; spBC += (lbl_1_bss_51C[spB8->unk38].unk0C == 0 && spB8->unk5C == 0); } var_r28 = 7; - HuAudFXPlayVol(0x7F7 + (temp_r31->unk08 != -1 ? temp_r31->unk08 : 8), 1651 / (spBC + 12)); + HuAudFXPlayVol(0x7F7 + (data->character != -1 ? data->character : 8), 1651 / (spBC + 12)); } if (lbl_1_bss_54 >= 210 && lbl_1_bss_54 <= 214) { s32 sp1AC[] = { 0, -12, -36, 0, 0, -12, -36, -48, 0 }; float sp194[] = { 150.0f, 175.0f, 205.0f }; float sp188[] = { 100.0f, 170.0f, 260.0f }; - spB4 = temp_r31->unk38 % 3 - 1; - spB0 = temp_r31->unk38 / 3; + spB4 = data->unk38 % 3 - 1; + spB0 = data->unk38 / 3; spAC = (lbl_1_bss_54 - 210) / 4.0; temp_f26 = (lbl_1_bss_54 - 210) / 4.0; temp_f26 = (temp_f26 > 1.0f) ? 1.0f : temp_f26; - espAttrReset(lbl_1_data_24[temp_r31->unk38], HUSPR_ATTR_DISPOFF); - espPosSet(lbl_1_data_24[temp_r31->unk38], 290.0f + spB4 * sp194[spB0], - sp188[spB0] + 0.5 * (64.0f * (1.0f - spAC) * 0.5 + sp1AC[temp_r31->unk08 != -1 ? temp_r31->unk08 : 8])); - espScaleSet(lbl_1_data_24[temp_r31->unk38], 0.5 * temp_f26, 0.5 * temp_f26); + espAttrReset(lbl_1_data_24[data->unk38], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_data_24[data->unk38], 290.0f + spB4 * sp194[spB0], + sp188[spB0] + 0.5 * (64.0f * (1.0f - spAC) * 0.5 + sp1AC[data->character != -1 ? data->character : 8])); + espScaleSet(lbl_1_data_24[data->unk38], 0.5 * temp_f26, 0.5 * temp_f26); } if (lbl_1_bss_54 == 270) { - Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE); - espAttrSet(lbl_1_data_24[temp_r31->unk38], HUSPR_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + espAttrSet(lbl_1_data_24[data->unk38], HUSPR_ATTR_DISPOFF); } if (lbl_1_bss_54 == 290) { spA0 = 0; for (spA4 = 0; spA4 < 9; spA4++) { - sp9C = lbl_1_bss_330[spA4]->data; + sp9C = playerObjs[spA4]->data; spA0 += (lbl_1_bss_51C[sp9C->unk38].unk0C == 0 && sp9C->unk5C == 0); } - spA8 = HuAudFXPlayVol(0x800 + (temp_r31->unk08 != -1 ? temp_r31->unk08 : 8), 1651 / (spA0 + 12)); + spA8 = HuAudFXPlayVol(0x800 + (data->character != -1 ? data->character : 8), 1651 / (spA0 + 12)); HuAudFXFadeOut(spA8, 0x9C4); } if (lbl_1_bss_54 >= 315) { - arg0->trans.y -= 77.0f; + object->trans.y -= 77.0f; } break; case 1007: - if (temp_r31->unk00 == lbl_1_bss_38) { + if (data->player == lbl_1_bss_38) { var_r28 = 8; - if (temp_r31->unk00 >= 4 && temp_r31->unk08 != -1 && lbl_1_bss_54 == 1) { - HuAudFXPlay(0x809 + temp_r31->unk08); + if (data->player >= 4 && data->character != -1 && lbl_1_bss_54 == 1) { + HuAudFXPlay(0x809 + data->character); } - if (temp_r31->unk08 == -1 && lbl_1_bss_54 == 1) { + if (data->character == -1 && lbl_1_bss_54 == 1) { HuAudFXPlay(0x3A); } } - else if (arg0->trans.y < -40000.0f) { - Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + else if (object->trans.y < -40000.0f) { + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); } else { - arg0->trans.y -= 77.0f; + object->trans.y -= 77.0f; } break; } - switch (temp_r31->unk18) { + switch (data->unk18) { case 0: - temp_r31->unk1C++; + data->unk1C++; break; case 1: - temp_r31->unk1C++; - if (temp_r31->unk1C <= 60) { - arg0->rot.y = -180.0 * (temp_r31->unk1C / 60.0); + data->unk1C++; + if (data->unk1C <= 60) { + object->rot.y = -180.0 * (data->unk1C / 60.0); } else { - Hu3DMotionTimeSet(arg0->model[0], 120.0f); + Hu3DMotionTimeSet(object->model[0], 120.0f); var_r28 = 0; - temp_r31->unk18 = 0; - temp_r31->unk1C = 0; + data->unk18 = 0; + data->unk1C = 0; } break; case 2: - temp_r31->unk1C++; + data->unk1C++; break; case 3: - if (temp_r31->unk1C == 0) { - temp_r31->unk48 = 6; - temp_r31->unk4C = 0; + if (data->unk1C == 0) { + data->unk48 = 6; + data->unk4C = 0; } - if (temp_r31->unk1C < 360) { - temp_r24 = &Hu3DData[arg0->model[1]]; - if (temp_r31->unk1C == 0) { - Hu3DModelAttrReset(arg0->model[1], HU3D_ATTR_DISPOFF); - Hu3DModelPosSet(arg0->model[1], arg0->trans.x, arg0->trans.y + 625.0f, arg0->trans.z); - Hu3DModelScaleSet(arg0->model[1], 0.1f, 0.1f, 0.1f); - Hu3DModelTPLvlSet(arg0->model[1], 1.0f); - temp_r31->unk4C = 0; + if (data->unk1C < 360) { + model = &Hu3DData[object->model[1]]; + if (data->unk1C == 0) { + Hu3DModelAttrReset(object->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[1], object->trans.x, object->trans.y + 625.0f, object->trans.z); + Hu3DModelScaleSet(object->model[1], 0.1f, 0.1f, 0.1f); + Hu3DModelTPLvlSet(object->model[1], 1.0f); + data->unk4C = 0; if (lbl_1_bss_18 == 0) { HuAudFXPlay(0x7F4); lbl_1_data_184 = HuAudFXPlay(0x7F3); } lbl_1_bss_18++; } - temp_r24->rot.y = temp_r31->unk4C % 360; - temp_r31->unk4C += 25; - if (temp_r31->unk1C < 180) { + model->rot.y = data->unk4C % 360; + data->unk4C += 25; + if (data->unk1C < 180) { var_f20 = 0.0f; var_f21 = 1.0f; } @@ -578,46 +577,46 @@ void fn_1_4C8(omObjData *arg0) var_f20 = 1.0f; var_f21 = 0.5f; } - temp_r24->scale.x = var_f20 + var_f21 * sind((float)(temp_r31->unk1C % 180)); - temp_r24->scale.y = temp_r24->scale.z = temp_r24->scale.x; - if (temp_r31->unk1C < 180) { - temp_r31->unk1C += 6; + model->scale.x = var_f20 + var_f21 * sind((float)(data->unk1C % 180)); + model->scale.y = model->scale.z = model->scale.x; + if (data->unk1C < 180) { + data->unk1C += 6; } else { - temp_r31->unk1C += 18; + data->unk1C += 18; } - if (temp_r31->unk1C >= 360) { - temp_r31->unk1C = 360; - Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + if (data->unk1C >= 360) { + data->unk1C = 360; + Hu3DModelRotSet(object->model[1], 0.0f, 0.0f, 0.0f); } } else { - sp98 = &Hu3DData[arg0->model[1]]; - temp_r31->unk1C += 4; - if (temp_r31->unk1C > 720) { - temp_r31->unk1C -= 360; + sp98 = &Hu3DData[object->model[1]]; + data->unk1C += 4; + if (data->unk1C > 720) { + data->unk1C -= 360; } - sp98->pos.y += 0.2f * sind(temp_r31->unk1C - 360); + sp98->pos.y += 0.2f * sind(data->unk1C - 360); if (var_r22 != 0 || lbl_1_bss_0 == 0) { lbl_1_bss_54 = 50; - temp_r31->unk18 = 4; - temp_r31->unk1C = 0; + data->unk18 = 4; + data->unk1C = 0; var_r28 = 5; } } break; case 4: - temp_r31->unk1C++; - if (temp_r31->unk1C < 27) { + data->unk1C++; + if (data->unk1C < 27) { break; } - temp_r29 = &Hu3DData[arg0->model[1]]; - temp_r27 = temp_r31->unk1C - 27; + model2 = &Hu3DData[object->model[1]]; + temp_r27 = data->unk1C - 27; if (temp_r27 == 0) { - if (temp_r31->unk04 != -1) { - omVibrate(temp_r31->unk04, 12, 4, 2); + if (data->playerCfg != -1) { + omVibrate(data->playerCfg, 12, 4, 2); } - temp_r31->unk48 = -1; + data->unk48 = -1; lbl_1_bss_18--; if (lbl_1_bss_18 == 0 && lbl_1_data_184 != -1) { HuAudFXStop(lbl_1_data_184); @@ -626,17 +625,17 @@ void fn_1_4C8(omObjData *arg0) HuAudFXPlay(0x7F5); } if (temp_r27 == 8) { - if (temp_r31->unk54 == -1) { - lbl_1_bss_58 = temp_r31->unk00; - temp_r31->unk54 = fn_1_4474(); - Hu3DParManPosSet(temp_r31->unk54, temp_r29->pos.x, temp_r29->pos.y, temp_r29->pos.z); - temp_r31->unk58 = 150; + if (data->particle == -1) { + lbl_1_bss_58 = data->player; + data->particle = fn_1_4474(); + Hu3DParManPosSet(data->particle, model2->pos.x, model2->pos.y, model2->pos.z); + data->particleTimer = 150; } - Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[1], HU3D_ATTR_DISPOFF); } else if (temp_r27 > 8) { - if (temp_r31->unk20 == 5) { - if (Hu3DMotionTimeGet(arg0->model[0]) >= Hu3DMotionMaxTimeGet(arg0->model[0])) { + if (data->unk20 == 5) { + if (Hu3DMotionTimeGet(object->model[0]) >= Hu3DMotionMaxTimeGet(object->model[0])) { var_r28 = 0; } } @@ -644,106 +643,106 @@ void fn_1_4C8(omObjData *arg0) temp_f27 = (temp_r27 - 8) / 10.0; sp94 = (temp_r27 - 8) * 18; temp_f27 = (temp_f27 > 1.0f) ? 2.5 : (2.5 * temp_f27); - Hu3DModelAttrReset(arg0->model[temp_r31->unk44 + 2], HU3D_ATTR_DISPOFF); - Hu3DModelPosSet(arg0->model[temp_r31->unk44 + 2], temp_r29->pos.x, temp_r29->pos.y, temp_r29->pos.z); - Hu3DModelScaleSet(arg0->model[temp_r31->unk44 + 2], temp_f27, temp_f27, temp_f27); + Hu3DModelAttrReset(object->model[data->unk44 + 2], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[data->unk44 + 2], model2->pos.x, model2->pos.y, model2->pos.z); + Hu3DModelScaleSet(object->model[data->unk44 + 2], temp_f27, temp_f27, temp_f27); } if (temp_r27 >= 45 && temp_r27 <= 65) { temp_f25 = (temp_r27 - 45) / 5.0; sp90 = (temp_r27 - 45) * 18; temp_f25 = (temp_f25 > 1.0f) ? 1.0f : temp_f25; temp_f25 = 0.0f; - Hu3DModelAttrReset(arg0->model[temp_r31->unk44 + 2], HU3D_ATTR_DISPOFF); - Hu3DModelPosSet(arg0->model[temp_r31->unk44 + 2], temp_r29->pos.x, temp_r29->pos.y - 30.0f * temp_f25, temp_r29->pos.z); - temp_r31->unk1C += 5; + Hu3DModelAttrReset(object->model[data->unk44 + 2], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[data->unk44 + 2], model2->pos.x, model2->pos.y - 30.0f * temp_f25, model2->pos.z); + data->unk1C += 5; } if (temp_r27 == 158) { - temp_r31->unk18 = 0; - temp_r31->unk1C = 0; + data->unk18 = 0; + data->unk1C = 0; } } else { if (temp_r27 < 4) { - temp_r29->pos.y += 10.0f + 0.5f * temp_r27; - temp_r29->scale.x += 0.1f * sind(4.0f * temp_r27); - temp_r29->scale.y = temp_r29->scale.z = temp_r29->scale.x; + model2->pos.y += 10.0f + 0.5f * temp_r27; + model2->scale.x += 0.1f * sind(4.0f * temp_r27); + model2->scale.y = model2->scale.z = model2->scale.x; } else { var_f24 = 255 - (temp_r27 << 5); var_f24 = var_f24 * (1.0f / 255); - Hu3DModelTPLvlSet(arg0->model[1], var_f24); + Hu3DModelTPLvlSet(object->model[1], var_f24); } - temp_r29->pos.y += -0.49f * temp_r27 * temp_r27; + model2->pos.y += -0.49f * temp_r27 * temp_r27; } break; case 5: - if (temp_r31->unk1C == 0) { - Hu3DModelAttrReset(lbl_1_bss_32C->model[temp_r31->unk44 + 1], HU3D_MOTATTR_PAUSE); - lbl_1_bss_51C[temp_r31->unk44].unk0C = 0; + if (data->unk1C == 0) { + Hu3DModelAttrReset(lbl_1_bss_32C->model[data->unk44 + 1], HU3D_MOTATTR_PAUSE); + lbl_1_bss_51C[data->unk44].unk0C = 0; if (lbl_1_bss_35C->unk00 < 3) { lbl_1_bss_35C->unk04[lbl_1_bss_35C->unk00] = 0.0f; lbl_1_bss_35C->unk00++; } } - temp_r31->unk1C++; - if (temp_r31->unk1C == 60 && temp_r31->unk54 != -1) { - Hu3DParManKill(temp_r31->unk54); - temp_r31->unk54 = -1; + data->unk1C++; + if (data->unk1C == 60 && data->particle != -1) { + Hu3DParManKill(data->particle); + data->particle = -1; } - if (temp_r31->unk1C == 33) { - Hu3DModelAttrSet(lbl_1_bss_32C->model[temp_r31->unk44 + 1], HU3D_MOTATTR_PAUSE); + if (data->unk1C == 33) { + Hu3DModelAttrSet(lbl_1_bss_32C->model[data->unk44 + 1], HU3D_MOTATTR_PAUSE); } - if (temp_r31->unk1C == 63) { - Hu3DModelAttrReset(lbl_1_bss_32C->model[temp_r31->unk44 + 1], HU3D_MOTATTR_PAUSE); + if (data->unk1C == 63) { + Hu3DModelAttrReset(lbl_1_bss_32C->model[data->unk44 + 1], HU3D_MOTATTR_PAUSE); } - if (temp_r31->unk1C == 68 && lbl_1_bss_35C[1].unk00 < 3) { + if (data->unk1C == 68 && lbl_1_bss_35C[1].unk00 < 3) { lbl_1_bss_35C[1].unk04[lbl_1_bss_35C[1].unk00] = 0.0f; lbl_1_bss_35C[1].unk00++; } - if (temp_r31->unk1C == 130) { - temp_r31->unk18 = 0; - temp_r31->unk1C = 0; + if (data->unk1C == 130) { + data->unk18 = 0; + data->unk1C = 0; } break; } - if ((temp_r31->unk18 == 3 || temp_r31->unk18 == 4) && temp_r31->unk48 >= 0) { - temp_r31->unk48++; - if (temp_r31->unk48 >= 6) { - sp88 = temp_r31->unk44; + if ((data->unk18 == 3 || data->unk18 == 4) && data->unk48 >= 0) { + data->unk48++; + if (data->unk48 >= 6) { + sp88 = data->unk44; for (sp8C = 0; sp8C < 50; sp8C++) { do { - temp_r31->unk44 = rand8() % 9; - if (temp_r31->unk44 >= 9) { + data->unk44 = rand8() % 9; + if (data->unk44 >= 9) { break; } - } while (lbl_1_bss_51C[temp_r31->unk44].unk0C == 0); - if (sp88 != temp_r31->unk44) { + } while (lbl_1_bss_51C[data->unk44].unk0C == 0); + if (sp88 != data->unk44) { break; } } - sp88 = temp_r31->unk44; - temp_r31->unk48 = 0; - Hu3DMotionTimeSet(arg0->model[1], 0.5 + sp88); + sp88 = data->unk44; + data->unk48 = 0; + Hu3DMotionTimeSet(object->model[1], 0.5 + sp88); } } - if (temp_r31->unk24 >= 0) { - var_r28 = temp_r31->unk24; + if (data->unk24 >= 0) { + var_r28 = data->unk24; } - if (var_r28 >= 0 && var_r28 != temp_r31->unk20) { - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[var_r28], lbl_1_data_EC[var_r28], - (temp_r31->unk08 != -1) ? lbl_1_data_C8[var_r28] : lbl_1_data_110[var_r28], + if (var_r28 >= 0 && var_r28 != data->unk20) { + Hu3DMotionShiftSet(object->model[0], object->motion[var_r28], lbl_1_data_EC[var_r28], + (data->character != -1) ? lbl_1_data_C8[var_r28] : lbl_1_data_110[var_r28], (var_r28 == 7) ? HU3D_MOTATTR_PAUSE - : (temp_r31->unk08 != -1 ? lbl_1_data_B4[var_r28] : lbl_1_data_BD[var_r28]) ? 0 + : (data->character != -1 ? lbl_1_data_B4[var_r28] : lbl_1_data_BD[var_r28]) ? 0 : HU3D_MOTATTR_LOOP); - temp_r31->unk20 = var_r28; + data->unk20 = var_r28; } - temp_r31->unk58 -= (temp_r31->unk58 > -1); - if (temp_r31->unk58 == 0) { - if (temp_r31->unk54 != -1) { - Hu3DParManKill(temp_r31->unk54); - temp_r31->unk54 = -1; + data->particleTimer -= (data->particleTimer > -1); + if (data->particleTimer == 0) { + if (data->particle != -1) { + Hu3DParManKill(data->particle); + data->particle = -1; } - temp_r31->unk58 = -1; + data->particleTimer = -1; } } @@ -753,14 +752,81 @@ float lbl_1_data_1B8 = 3500.0f; float lbl_1_data_1BC = 100.0f; float lbl_1_data_1C0 = -59.0f; +static inline void fn3264_unkInline(void) { + float var_f31; + s32 var_r26 = lbl_1_data_1B4; + float sp30[][6] = { { 3500.0f, 0.0f, 100.0f, 0.0f, -59.0f, 0.0f }, { 3200.0f, 0.0f, 100.0f, 0.0f, -30.0f, 0.0f }, + { 3800.0f, 0.0f, 100.0f, 0.0f, -30.0f, 0.0f }, { 2000.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f }, + { 4000.0f, 0.0f, 200.0f, 0.0f, -89.0f, 0.0f }, { 2700.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f } }; + + if (lbl_1_bss_38 != -1 && lbl_1_bss_38 != 9) { + sp30[5][1] = playerObjs[lbl_1_bss_38]->trans.x; + sp30[5][3] = playerObjs[lbl_1_bss_38]->trans.z; + } + if (lbl_1_data_1B4 == -1) { + lbl_1_data_1B4 = 0; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 1.0f; + } + if (lbl_1_data_1B4 == 0) { + lbl_1_data_1B4 = 1; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 0.5f; + } + if (lbl_1_bss_50 == 1004 && lbl_1_bss_54 >= 1 && lbl_1_data_1B4 == 1) { + lbl_1_data_1B4 = 2; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if (lbl_1_bss_50 == 1006 && lbl_1_bss_54 >= 270 && lbl_1_data_1B4 == 2) { + lbl_1_data_1B4 = 4; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 1.0f; + } + if (lbl_1_bss_50 == 1005 && lbl_1_data_1B4 == 4) { + lbl_1_data_1B4 = 2; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if (lbl_1_bss_50 == 1007 && lbl_1_bss_38 != 9 && lbl_1_data_1B4 == 4) { + lbl_1_data_1B4 = 5; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if (var_r26 != lbl_1_data_1B4 && var_r26 != -1) { + lbl_1_data_1B8 = CZoom; + lbl_1_data_1BC = Center.y; + lbl_1_bss_28 = Center.z; + lbl_1_data_1C0 = CRot.x; + lbl_1_bss_2C = CRot.y; + } + if (lbl_1_bss_20 <= 1.0f) { + if (lbl_1_bss_1C == 0) { + lbl_1_bss_20 = 1.0 - 0.95 * (1.0f - lbl_1_bss_20); + var_f31 = lbl_1_bss_20; + } + else { + lbl_1_bss_20 += 0.008333333333333333; + lbl_1_bss_20 = (lbl_1_bss_20 > 1.0f) ? 1.0f : lbl_1_bss_20; + var_f31 = 0.5 + -0.5 * cosd(180.0f * lbl_1_bss_20); + } + lbl_1_bss_20 = (lbl_1_bss_20 > 1.0f) ? 1.0f : lbl_1_bss_20; + CZoom = var_f31 * sp30[lbl_1_data_1B4][0] + lbl_1_data_1B8 * (1.0f - var_f31); + Center.x = var_f31 * sp30[lbl_1_data_1B4][1] + lbl_1_bss_24 * (1.0f - var_f31); + Center.y = var_f31 * sp30[lbl_1_data_1B4][2] + lbl_1_data_1BC * (1.0f - var_f31); + Center.z = var_f31 * sp30[lbl_1_data_1B4][3] + lbl_1_bss_28 * (1.0f - var_f31); + CRot.x = var_f31 * sp30[lbl_1_data_1B4][4] + lbl_1_data_1C0 * (1.0f - var_f31); + CRot.y = var_f31 * sp30[lbl_1_data_1B4][5] + lbl_1_bss_2C * (1.0f - var_f31); + } +} + void fn_1_3264(omObjData *arg0) { float temp_f29; - float var_f31; float temp_f26; float temp_f27; float temp_f28; - StructBss330Data *spC[9]; + M463PlayerData *spC[9]; ModelData *temp_r29; ModelData *temp_r28; s32 var_r27; @@ -768,7 +834,7 @@ void fn_1_3264(omObjData *arg0) s32 j; for (i = 0; i < 9; i++) { - spC[i] = lbl_1_bss_330[i]->data; + spC[i] = playerObjs[i]->data; } lbl_1_bss_4++; switch (lbl_1_bss_50) { @@ -789,8 +855,8 @@ void fn_1_3264(omObjData *arg0) HuAudFXPlay(0x7F6); } temp_r29->pos.y = 0.9 * temp_r29->pos.y + 0.1 * lbl_1_bss_51C[spC[i]->unk38].unk08; - lbl_1_bss_330[i]->trans.y = temp_r29->pos.y - -16.666666666666668; - lbl_1_bss_330[i]->rot.y = 0.0f; + playerObjs[i]->trans.y = temp_r29->pos.y - -16.666666666666668; + playerObjs[i]->rot.y = 0.0f; } break; case 1004: @@ -806,81 +872,16 @@ void fn_1_3264(omObjData *arg0) 0.9 * temp_r28->pos.y + 0.1 * lbl_1_bss_51C[spC[0]->unk38].unk08, (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk04 - 1)); for (j = 0; j < 9; j++) { if (i == spC[j]->unk38) { - lbl_1_bss_330[j]->trans.x = (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk00 - 1); - lbl_1_bss_330[j]->trans.y = temp_r28->pos.y - -16.666666666666668; - lbl_1_bss_330[j]->trans.z = (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk04 - 1); + playerObjs[j]->trans.x = (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk00 - 1); + playerObjs[j]->trans.y = temp_r28->pos.y - -16.666666666666668; + playerObjs[j]->trans.z = (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk04 - 1); } } } } break; } - { - s32 var_r26 = lbl_1_data_1B4; - float sp30[][6] = { { 3500.0f, 0.0f, 100.0f, 0.0f, -59.0f, 0.0f }, { 3200.0f, 0.0f, 100.0f, 0.0f, -30.0f, 0.0f }, - { 3800.0f, 0.0f, 100.0f, 0.0f, -30.0f, 0.0f }, { 2000.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f }, - { 4000.0f, 0.0f, 200.0f, 0.0f, -89.0f, 0.0f }, { 2700.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f } }; - - if (lbl_1_bss_38 != -1 && lbl_1_bss_38 != 9) { - sp30[5][1] = lbl_1_bss_330[lbl_1_bss_38]->trans.x; - sp30[5][3] = lbl_1_bss_330[lbl_1_bss_38]->trans.z; - } - if (lbl_1_data_1B4 == -1) { - lbl_1_data_1B4 = 0; - lbl_1_bss_1C = 1; - lbl_1_bss_20 = 1.0f; - } - if (lbl_1_data_1B4 == 0) { - lbl_1_data_1B4 = 1; - lbl_1_bss_1C = 1; - lbl_1_bss_20 = 0.5f; - } - if (lbl_1_bss_50 == 1004 && lbl_1_bss_54 >= 1 && lbl_1_data_1B4 == 1) { - lbl_1_data_1B4 = 2; - lbl_1_bss_1C = 0; - lbl_1_bss_20 = 0.0f; - } - if (lbl_1_bss_50 == 1006 && lbl_1_bss_54 >= 270 && lbl_1_data_1B4 == 2) { - lbl_1_data_1B4 = 4; - lbl_1_bss_1C = 1; - lbl_1_bss_20 = 1.0f; - } - if (lbl_1_bss_50 == 1005 && lbl_1_data_1B4 == 4) { - lbl_1_data_1B4 = 2; - lbl_1_bss_1C = 0; - lbl_1_bss_20 = 0.0f; - } - if (lbl_1_bss_50 == 1007 && lbl_1_bss_38 != 9 && lbl_1_data_1B4 == 4) { - lbl_1_data_1B4 = 5; - lbl_1_bss_1C = 0; - lbl_1_bss_20 = 0.0f; - } - if (var_r26 != lbl_1_data_1B4 && var_r26 != -1) { - lbl_1_data_1B8 = CZoom; - lbl_1_data_1BC = Center.y; - lbl_1_bss_28 = Center.z; - lbl_1_data_1C0 = CRot.x; - lbl_1_bss_2C = CRot.y; - } - if (lbl_1_bss_20 <= 1.0f) { - if (lbl_1_bss_1C == 0) { - lbl_1_bss_20 = 1.0 - 0.95 * (1.0f - lbl_1_bss_20); - var_f31 = lbl_1_bss_20; - } - else { - lbl_1_bss_20 += 0.008333333333333333; - lbl_1_bss_20 = (lbl_1_bss_20 > 1.0f) ? 1.0f : lbl_1_bss_20; - var_f31 = 0.5 + -0.5 * cosd(180.0f * lbl_1_bss_20); - } - lbl_1_bss_20 = (lbl_1_bss_20 > 1.0f) ? 1.0f : lbl_1_bss_20; - CZoom = var_f31 * sp30[lbl_1_data_1B4][0] + lbl_1_data_1B8 * (1.0f - var_f31); - Center.x = var_f31 * sp30[lbl_1_data_1B4][1] + lbl_1_bss_24 * (1.0f - var_f31); - Center.y = var_f31 * sp30[lbl_1_data_1B4][2] + lbl_1_data_1BC * (1.0f - var_f31); - Center.z = var_f31 * sp30[lbl_1_data_1B4][3] + lbl_1_bss_28 * (1.0f - var_f31); - CRot.x = var_f31 * sp30[lbl_1_data_1B4][4] + lbl_1_data_1C0 * (1.0f - var_f31); - CRot.y = var_f31 * sp30[lbl_1_data_1B4][5] + lbl_1_bss_2C * (1.0f - var_f31); - } - } + fn3264_unkInline(); if (lbl_1_bss_50 == 1001 || lbl_1_bss_50 == 1003) { temp_f26 = 0.0f; temp_f27 = 0.0f; @@ -932,7 +933,7 @@ s16 fn_1_4474(void) void fn_1_45F8(omObjData *arg0) { - StructBss330Data *sp14[9]; + M463PlayerData *sp14[9]; float spC[2]; s32 sp8; s32 var_r29; @@ -954,7 +955,7 @@ void fn_1_45F8(omObjData *arg0) } } for (i = 0; i < 9; i++) { - sp14[i] = lbl_1_bss_330[i]->data; + sp14[i] = playerObjs[i]->data; } if (omSysExitReq != 0 && WipeStatGet() == 0) { WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); @@ -968,9 +969,9 @@ void fn_1_45F8(omObjData *arg0) lbl_1_bss_50++; lbl_1_bss_54 = 0; for (i = 0; i < 9; i++) { - if (sp14[i]->unk54 != -1) { - Hu3DParManKill(sp14[i]->unk54); - sp14[i]->unk54 = -1; + if (sp14[i]->particle != -1) { + Hu3DParManKill(sp14[i]->particle); + sp14[i]->particle = -1; } } break; @@ -996,9 +997,9 @@ void fn_1_45F8(omObjData *arg0) break; case 1003: lbl_1_bss_54++; - if (lbl_1_bss_54 == (sp14[1]->unk08 == -1 ? 120 : 60) + 30) { + if (lbl_1_bss_54 == (sp14[1]->character == -1 ? 120 : 60) + 30) { lbl_1_bss_50++; - if (sp14[1]->unk08 == -1) { + if (sp14[1]->character == -1) { lbl_1_bss_50++; } lbl_1_bss_54 = 0; @@ -1120,8 +1121,8 @@ void fn_1_45F8(omObjData *arg0) else { HuAudSStreamPlay(1); } - if (lbl_1_bss_38 < 4 && sp14[lbl_1_bss_38]->unk04 != -1) { - GWPlayerCoinWinSet(sp14[lbl_1_bss_38]->unk04, 10); + if (lbl_1_bss_38 < 4 && sp14[lbl_1_bss_38]->playerCfg != -1) { + GWPlayerCoinWinSet(sp14[lbl_1_bss_38]->playerCfg, 10); } } else if (lbl_1_bss_38 == 9) { @@ -1143,11 +1144,11 @@ void fn_1_45F8(omObjData *arg0) void fn_1_53A0(omObjData *arg0) { - StructBss330Data *sp50[9]; + M463PlayerData *sp50[9]; s32 i; for (i = 0; i < 9; i++) { - sp50[i] = lbl_1_bss_330[i]->data; + sp50[i] = playerObjs[i]->data; } arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M458, 8)); Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); @@ -1185,7 +1186,7 @@ s32 lbl_1_data_1E4[] = { DATA_MAKE_NUM(DATADIR_M458, 19), DATA_MAKE_NUM(DATADIR_ void fn_1_5850(omObjData *arg0) { - StructBss330Data *temp_r31; + M463PlayerData *data; s32 sp10[] = { 0, 1, 2, 3 }; s32 var_r25; s32 var_r28; @@ -1193,21 +1194,21 @@ void fn_1_5850(omObjData *arg0) s32 j; var_r25 = 0; - temp_r31 = arg0->data; - memset(temp_r31, 0, sizeof(*temp_r31)); - temp_r31->unk00 = arg0->work[0]; - if (temp_r31->unk00 >= 4) { + data = arg0->data; + memset(data, 0, sizeof(*data)); + data->player = arg0->work[0]; + if (data->player >= 4) { var_r28 = -1; - for (i = 0; i <= temp_r31->unk00 - 4; i++) { + for (i = 0; i <= data->player - 4; i++) { do { var_r28++; } while (GWPlayerCfg[0].character == var_r28 || GWPlayerCfg[1].character == var_r28 || GWPlayerCfg[2].character == var_r28 || GWPlayerCfg[3].character == var_r28); } - temp_r31->unk08 = (var_r28 == 8) ? -1 : var_r28; - temp_r31->unk0C = -1; - temp_r31->unk04 = -1; - temp_r31->unk10 = 0; + data->character = (var_r28 == 8) ? -1 : var_r28; + data->padIdx = -1; + data->playerCfg = -1; + data->diff = 0; } else { for (i = 0; i < 4; i++) { @@ -1218,52 +1219,52 @@ void fn_1_5850(omObjData *arg0) } } } - temp_r31->unk00 = arg0->work[0]; - temp_r31->unk04 = sp10[temp_r31->unk00]; - if (temp_r31->unk04 == 4) { + data->player = arg0->work[0]; + data->playerCfg = sp10[data->player]; + if (data->playerCfg == 4) { OSReport("m463:wrong player group\n"); - temp_r31->unk04 = temp_r31->unk00; + data->playerCfg = data->player; } - temp_r31->unk08 = GWPlayerCfg[temp_r31->unk04].character; - temp_r31->unk0C = (temp_r31->unk08 == -1 || GWPlayerCfg[temp_r31->unk04].iscom) ? -1 : GWPlayerCfg[temp_r31->unk04].pad_idx; - temp_r31->unk10 = (temp_r31->unk0C != -1) ? 0 : GWPlayerCfg[temp_r31->unk04].diff; + data->character = GWPlayerCfg[data->playerCfg].character; + data->padIdx = (data->character == -1 || GWPlayerCfg[data->playerCfg].iscom) ? -1 : GWPlayerCfg[data->playerCfg].pad_idx; + data->diff = (data->padIdx != -1) ? 0 : GWPlayerCfg[data->playerCfg].diff; } - temp_r31->unk18 = 0; - temp_r31->unk20 = 3; - temp_r31->unk24 = -1; - temp_r31->unk48 = -1; - if (temp_r31->unk08 != -1) { - arg0->model[0] = CharModelCreate(temp_r31->unk08, 4); + data->unk18 = 0; + data->unk20 = 3; + data->unk24 = -1; + data->unk48 = -1; + if (data->character != -1) { + arg0->model[0] = CharModelCreate(data->character, 4); } else { arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_BKOOPA, 7)); } - omSetTra(arg0, 0.0f, temp_r31->unk00 == 0 ? 0 : 300, 0.0f); - if (temp_r31->unk08 != -1) { + omSetTra(arg0, 0.0f, data->player == 0 ? 0 : 300, 0.0f); + if (data->character != -1) { omSetSca(arg0, 2.5f, 2.5f, 2.5f); } else { omSetSca(arg0, 2.0f, 2.0f, 2.0f); } for (i = 0; i < 9; i++) { - if (temp_r31->unk08 != -1) { - if (temp_r31->unk00 < 4 || (i != 1 && i != 2)) { - arg0->motion[i] = CharModelMotionCreate(temp_r31->unk08, lbl_1_data_48[i] + (lbl_1_data_6C[i] ? temp_r31->unk08 : 0)); + if (data->character != -1) { + if (data->player < 4 || (i != 1 && i != 2)) { + arg0->motion[i] = CharModelMotionCreate(data->character, lbl_1_data_48[i] + (lbl_1_data_6C[i] ? data->character : 0)); } } else if (lbl_1_data_90[i] != 0) { arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_90[i]); } } - Hu3DMotionSet(arg0->model[0], arg0->motion[temp_r31->unk20]); + Hu3DMotionSet(arg0->model[0], arg0->motion[data->unk20]); Hu3DMotionTimeSet(arg0->model[0], 10.0f); Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); Hu3DModelShadowSet(arg0->model[0]); Hu3DModelAttrSet(arg0->model[0], 1U); Hu3DModelLayerSet(arg0->model[0], 1); CharModelLayerSetAll2(1); - if (temp_r31->unk08 != -1) { - CharModelDataClose(temp_r31->unk08); + if (data->character != -1) { + CharModelDataClose(data->character); } arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M458, 9)); Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_LOOP); @@ -1272,20 +1273,20 @@ void fn_1_5850(omObjData *arg0) Hu3DModelLayerSet(arg0->model[1], 1); Hu3DMotionSpeedSet(arg0->model[1], 0.0f); for (i = 0; i < 9; i++) { - if (temp_r31->unk00 == 0) { + if (data->player == 0) { arg0->model[i + 2] = Hu3DModelCreateFile(lbl_1_data_1E4[i]); } else { - arg0->model[i + 2] = Hu3DModelLink(lbl_1_bss_330[0]->model[i + 2]); + arg0->model[i + 2] = Hu3DModelLink(playerObjs[0]->model[i + 2]); } Hu3DMotionTimeSet(arg0->model[i + 2], 10.0f); Hu3DMotionSpeedSet(arg0->model[i + 2], 0.0f); Hu3DModelAttrSet(arg0->model[i + 2], HU3D_ATTR_DISPOFF); Hu3DModelLayerSet(arg0->model[i + 2], 1); } - lbl_1_bss_58 = temp_r31->unk00; - temp_r31->unk54 = fn_1_4474(); - Hu3DParManPosSet(temp_r31->unk54, 10000.0f, -10000.0f, 10000.0f); + lbl_1_bss_58 = data->player; + data->particle = fn_1_4474(); + Hu3DParManPosSet(data->particle, 10000.0f, -10000.0f, 10000.0f); arg0->func = fn_1_4C8; } @@ -1351,8 +1352,8 @@ void ObjectSetup(void) HuWinInit(1); lbl_1_bss_32C = omAddObjEx(lbl_1_bss_40, 0x65, 10, 0, 1, fn_1_53A0); for (i = 0; i < 9; i++) { - var_r30 = lbl_1_bss_330[i] = omAddObjEx(lbl_1_bss_40, 100, 11, 9, 0, fn_1_5850); - var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StructBss330Data), MEMORY_DEFAULT_NUM); + var_r30 = playerObjs[i] = omAddObjEx(lbl_1_bss_40, 100, 11, 9, 0, fn_1_5850); + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M463PlayerData), MEMORY_DEFAULT_NUM); var_r30->work[0] = i; } lbl_1_bss_354 = omAddObjEx(lbl_1_bss_40, 0x7FDA, 0, 0, -1, omOutView); @@ -1361,21 +1362,21 @@ void ObjectSetup(void) void fn_1_659C(omObjData *arg0) { - StructBss330Data *spC[9]; + M463PlayerData *spC[9]; void *sp8; s32 var_r31; s32 var_r30; for (var_r31 = 0; var_r31 < 9; var_r31++) { - spC[var_r31] = lbl_1_bss_330[var_r31]->data; - if (spC[var_r31]->unk54 != -1) { - Hu3DParManKill(spC[var_r31]->unk54); - spC[var_r31]->unk54 = -1; + spC[var_r31] = playerObjs[var_r31]->data; + if (spC[var_r31]->particle != -1) { + Hu3DParManKill(spC[var_r31]->particle); + spC[var_r31]->particle = -1; } } if (WipeStatGet() == 0) { for (var_r30 = 0; var_r30 < 9; var_r30++) { - sp8 = lbl_1_bss_330[var_r30]->data; + sp8 = playerObjs[var_r30]->data; } if (lbl_1_data_14C >= 0) { MGSeqKill(lbl_1_data_14C);