From fa17948b84e2378ecce42117ee00e9d3a5d24a48 Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Tue, 23 Apr 2024 23:33:05 -0500 Subject: [PATCH 1/2] Start on m401dll --- config/GMPE01_00/rels/m401Dll/symbols.txt | 10 +- include/REL/m401Dll.h | 19 + src/REL/m401Dll/m401Dll.c | 533 ------------------- src/REL/m401Dll/m401Dll.h | 198 ------- src/REL/m401Dll/main.c | 613 ++++++++++++++++++++++ 5 files changed, 638 insertions(+), 735 deletions(-) create mode 100644 include/REL/m401Dll.h delete mode 100644 src/REL/m401Dll/m401Dll.c delete mode 100644 src/REL/m401Dll/m401Dll.h create mode 100644 src/REL/m401Dll/main.c diff --git a/config/GMPE01_00/rels/m401Dll/symbols.txt b/config/GMPE01_00/rels/m401Dll/symbols.txt index 371068fb..b74724ac 100644 --- a/config/GMPE01_00/rels/m401Dll/symbols.txt +++ b/config/GMPE01_00/rels/m401Dll/symbols.txt @@ -436,15 +436,16 @@ lbl_2_data_48 = .data:0x00000048; // type:object size:0xC data:float lbl_2_data_54 = .data:0x00000054; // type:object size:0x1B data:string lbl_2_data_6F = .data:0x0000006F; // type:object size:0x11 lbl_2_data_80 = .data:0x00000080; // type:object size:0x20 -lbl_2_data_A0 = .data:0x000000A0; // type:object size:0x14 -lbl_2_data_B4 = .data:0x000000B4; // type:object size:0x18 +lbl_2_data_A0 = .data:0x000000A0; // type:object size:0x14 data:float +lbl_2_data_B4 = .data:0x000000B4; // type:object size:0x18 data:float lbl_2_data_CC = .data:0x000000CC; // type:object size:0x28 lbl_2_data_F4 = .data:0x000000F4; // type:object size:0x9 data:string lbl_2_data_FD = .data:0x000000FD; // type:object size:0x9 data:string lbl_2_data_106 = .data:0x00000106; // type:object size:0x9 data:string lbl_2_data_10F = .data:0x0000010F; // type:object size:0x9 data:string lbl_2_data_118 = .data:0x00000118; // type:object size:0xC -lbl_2_data_124 = .data:0x00000124; // type:object size:0x34 data:4byte +lbl_2_data_124 = .data:0x00000124; // type:object size:0x14 data:4byte +lbl_2_data_138 = .data:0x00000138; // type:object size:0x20 data:4byte lbl_2_data_158 = .data:0x00000158; // type:object size:0x140 lbl_2_data_298 = .data:0x00000298; // type:object size:0x30 lbl_2_data_2C8 = .data:0x000002C8; // type:object size:0x30 @@ -466,7 +467,8 @@ lbl_2_bss_10 = .bss:0x00000010; // type:object size:0x4 data:float lbl_2_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte lbl_2_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte lbl_2_bss_1A = .bss:0x0000001A; // type:object size:0x2 data:2byte -lbl_2_bss_1C = .bss:0x0000001C; // type:object size:0x10 data:4byte +lbl_2_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte +lbl_2_bss_20 = .bss:0x00000020; // type:object size:0xC data:4byte lbl_2_bss_2C = .bss:0x0000002C; // type:object size:0xC data:float lbl_2_bss_38 = .bss:0x00000038; // type:object size:0xC data:float lbl_2_bss_44 = .bss:0x00000044; // type:object size:0xC data:float diff --git a/include/REL/m401Dll.h b/include/REL/m401Dll.h new file mode 100644 index 00000000..085cd726 --- /dev/null +++ b/include/REL/m401Dll.h @@ -0,0 +1,19 @@ +#ifndef M401DLL_H +#define M401DLL_H + +#include "game/object.h" +#include "dolphin.h" + +extern float lbl_2_bss_12C; +extern float lbl_2_bss_128; +extern float lbl_2_bss_124; +extern s16 lbl_2_bss_120; + +void fn_2_10240(Vec *arg0, Vec *arg1); +void fn_2_1041C(void); +void fn_2_10710(void); + +void fn_2_1079C(void); +omObjData *fn_2_14640(Process *objman); + +#endif \ No newline at end of file diff --git a/src/REL/m401Dll/m401Dll.c b/src/REL/m401Dll/m401Dll.c deleted file mode 100644 index 3c19e79f..00000000 --- a/src/REL/m401Dll/m401Dll.c +++ /dev/null @@ -1,533 +0,0 @@ -#include "m401Dll.h" - -void M401ObjectSetup(void) { - s32 i; - unkStructBSS114 *temp_r30; - unkStruct18BFC0 *temp_r29; - s16* temp_r28; - - OSReport("**** M401ObjectSetup ****\n"); - HuMemHeapDump(HuMemHeapPtrGet(0), -1); - HuMemHeapDump(HuMemHeapPtrGet(2), -1); - HuMemHeapDump(HuMemHeapPtrGet(3), -1); - lbl_2_bss_1C = omInitObjMan(0x3C, 0x2000); - omGameSysInit(lbl_2_bss_1C); - lbl_2_bss_A8 = Hu3DGLightCreateV(&lbl_2_data_14, &lbl_2_data_20, &lbl_2_data_2C); - Hu3DGLightInfinitytSet(lbl_2_bss_A8); - temp_r28 = &lbl_8018C8FC[lbl_2_bss_A8].unk_00; - *temp_r28 |= 0x8000; - Hu3DCameraCreate(1); - temp_r29 = &lbl_8018BFC0; - Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0, 480.0, 0.0f, 1.0f); - lbl_2_bss_114 = omAddObjEx(lbl_2_bss_1C, 0x3E8, 3, 0, -1, &fn_2_BD90); - *lbl_2_bss_114->model = 0; - lbl_2_bss_110 = omAddObjEx(lbl_2_bss_1C, 0xA, 0, 0, -1, &fn_2_70C); - omMakeGroupEx(lbl_2_bss_1C, 0, 4); - lbl_2_bss_118[0] = omGetGroupMemberListEx(lbl_2_bss_1C, 0); - omMakeGroupEx(lbl_2_bss_1C, 1, 0x1C); - for (i = 0; i < 4; i++) { - temp_r30 = omAddObjEx(lbl_2_bss_1C, 0x4B0, 4, 0xA, 0, &fn_2_3B24); - temp_r30->unk_4C = i; - } - lbl_2_bss_12C = 60.0f; - lbl_2_bss_128 = 50.0f; - lbl_2_bss_124 = 25000.0f; - Hu3DShadowCreate(30.0f, 30.0f, 20.0f); - Hu3DShadowTPLvlSet(0.35f); - lbl_2_data_30.y = (f32) (1500.0f + lbl_2_bss_60.y); - lbl_2_data_30.z = (f32) (500.0f + lbl_2_bss_60.z); - lbl_2_data_48.y = (f32) lbl_2_bss_60.y; - lbl_2_data_48.z = (f32) (500.0f + lbl_2_bss_60.z); - Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); - lbl_2_bss_10C = omAddObjEx(lbl_2_bss_1C, 0x1F4, 0xC, 3, -1, &fn_2_2FA4); - lbl_2_bss_108 = omAddObjEx(lbl_2_bss_1C, 0x44C, 1, 1, -1, &fn_2_7CB4); - lbl_2_bss_100.unk_00 = omAddObjEx(lbl_2_bss_1C, 0x456, 1, 1, -1, &fn_2_8E74); - lbl_2_bss_100.unk_04 = omAddObjEx(lbl_2_bss_1C, 0x456, 1, 1, -1, &fn_2_8E74); - lbl_2_bss_FC = omAddObjEx(lbl_2_bss_1C, 0x460, 1, 2, -1, &fn_2_95E4); - lbl_2_bss_C8 = omAddObjEx(lbl_2_bss_1C, 0x64, 0, 0, -1, &fn_2_D088); - lbl_2_bss_E0 = omAddObjEx(lbl_2_bss_1C, 0x5DC, 0, 0, -1, &fn_2_C1C); - fn_2_DBCC(0x5A); - lbl_2_bss_F8 = omAddObjEx(lbl_2_bss_1C, 0x1F4, 9, 0, -1, &fn_2_C6DC); - fn_2_9D00(lbl_2_bss_1C); - fn_2_1041C(); - fn_2_1079C(); - lbl_2_bss_F4 = fn_2_14640(lbl_2_bss_1C); - lbl_2_bss_50 = 0.0f; - lbl_2_bss_54.unk_00 = temp_r29->unk_14; - Hu3DReflectNoSet(0); - lbl_2_bss_120 = 0; - lbl_2_bss_BE = 0; - lbl_2_bss_BA = 0; - Hu3DFogSet(3000.0f, 10000.0f, 0xAU, 0x3CU, 0xA0U); - Hu3DBGColorSet(0xAU, 0x3CU, 0xA0U); - lbl_2_bss_88 = 3000.0f; - lbl_2_bss_84 = 142000.0f; - lbl_2_bss_11C = HuAudFXPlay(0x50A); -} - -void fn_2_70C(unkStructBSS114* arg0) { - s16 var_r29; - unkSubstructBSS114* temp_r30_2; - s32 i; - - switch (lbl_2_bss_120) { - case 0: - break; - case 1: - if (lbl_2_bss_BE == 1) { - lbl_2_bss_120 = 2; - lbl_2_bss_C0 = MGSeqCreate(3, 1); - HuAudSeqFadeOut(lbl_2_bss_A4, 0x64); - } - break; - case 2: - if (lbl_2_bss_114 == NULL) { - lbl_2_bss_114 = omAddObjEx(HuPrcCurrentGet(), 0x3E8, 0, 0, -1, &fn_2_C130); - *lbl_2_bss_114->model = 0; - var_r29 = 0; - lbl_2_bss_BA = 0; - for (i = 0; i < 4; i++) { - temp_r30_2 = lbl_2_bss_118[i]->unk_5C; - lbl_2_bss_118[i]->unk_14 = &fn_2_48A0; - temp_r30_2->unk_00[0] = 5; - temp_r30_2->unk_68[0][0] = 0; - if (temp_r30_2->unk_68[1][2] > var_r29) { - var_r29 = temp_r30_2->unk_68[1][2]; - } - lbl_2_bss_B2[i] = -1; - lbl_2_bss_AA[i] = -1; - } - if ((s16) var_r29 > 0) { - for (i = 0; i < 4; i++) { - temp_r30_2 = lbl_2_bss_118[i]->unk_5C; - if (temp_r30_2->unk_68[1][2] == var_r29) { - lbl_2_bss_AA[lbl_2_bss_BA] = lbl_8018FC10[i].unk_00; - lbl_2_bss_B2[lbl_2_bss_BA++] = i; - temp_r30_2->unk_68[0][0] = 1; - } - } - } - OSReport(lbl_2_data_6F, lbl_2_bss_BA); - } - break; - } - if (lbl_801D3CC2 != 0) { - WipeCreate(2, 0, 0x3C); - HuAudSeqFadeOut(lbl_2_bss_A4, 0x64); - HuAudFXStop(lbl_2_bss_11C); - arg0->unk_14 = &fn_2_A10; - } -} - -void fn_2_A10(void) { - s32 i; - - if (WipeStatGet() == 0) { - fn_2_10710(); - for (i = 0; i < 4; i++) { - fn_8004D6F4(lbl_2_data_4[lbl_8018FC10[i].unk_00]); - } - - HuAudFXListnerKill(); - omOvlReturnEx(1, 1); - } -} - -void M401SetFogAndBG(void) { - Hu3DFogSet(174.0f, 271.0f, 0xA, 0x3C, 0xA0); - Hu3DBGColorSet(0xAU, 0x3CU, 0xA0U); -} - -void M401SetSpriteDisp(s16 arg0) { - s32 j; - s32 i; - unkSubstructBSS114* temp_r31; - - temp_r31 = lbl_2_bss_E0->unk_5C; - if (arg0 != 0) { - for (i = 0; i < 4; i++) { - espDispOn(temp_r31->unk_00[i]); - espDispOn(temp_r31->unk_80[i]); - espDispOn(temp_r31->unk_88[i]); - for (j = 0; j < 2; j++) { - espDispOn(temp_r31->unk_08[i][j]); - } - } - return; - } - for (i = 0; i < 4; i++) { - espDispOff(temp_r31->unk_00[i]); - espDispOff(temp_r31->unk_80[i]); - espDispOff(temp_r31->unk_88[i]); - for (j = 0; j < 2; j++) { - espDispOff(temp_r31->unk_08[i][j]); - } - } -} - -void fn_2_C1C(unkStructBSS114* arg0) { - s16 temp_r0; - s32 temp_r0_2; - s32 temp_r0_3; - s32 temp_r0_4; - s32 j; - s32 i; - unkSubstructBSS114* temp_r31; - - arg0->unk_5C = HuMemDirectMallocNum(0, 0x148, 0x10000000U); - temp_r31 = arg0->unk_5C; - for (i = 0; i < 4; i++) { - temp_r31->unk_00[i] = espEntry(lbl_2_data_80[lbl_8018FC10[i].unk_00], 2, 0); - espDispOff(temp_r31->unk_00[i]); - espDrawNoSet(temp_r31->unk_00[i], 0); - espPosSet(temp_r31->unk_00[i], (f32) ((i & 1) * 0x1B6 + 0x25), ((i>1)*0x166)+0x3B); - temp_r31->unk_80[i] = espEntry(0x20002F, 3, 0); - espDispOff(temp_r31->unk_80[i]); - espDrawNoSet(temp_r31->unk_80[i], 0); - espPosSet(temp_r31->unk_80[i], (f32) (((i & 1) * 0x1B6) + 0x49), (((i>1) * 0x166) + 0x3D)); - temp_r31->unk_88[i] = espEntry(0x200030, 4, 0); - espDispOff(temp_r31->unk_88[i]); - espDrawNoSet(temp_r31->unk_88[i], 0); - espPosSet(temp_r31->unk_88[i], (f32) (((i & 1) * 0x1B6) + 0x49), (((i>1) * 0x166) + 0x3D)); - espColorSet(temp_r31->unk_88[i], 0, 0, 0); - espTPLvlSet(temp_r31->unk_88[i], 0.5f); - for (j = 0; j < 2; j++) { - temp_r31->unk_08[i][j] = espEntry(0x20002E, 1, 0); - espDispOff(temp_r31->unk_08[i][j]); - espDrawNoSet(temp_r31->unk_08[i][j], 0); - espPosSet(temp_r31->unk_08[i][j], 0x45 + ((i & 1) * 0x1B6) + (j * 0x14), ((i>1) * 0x166) + 0x3F); - espAttrSet(temp_r31->unk_08[i][j], 1); - } - for (j = 0; j < 3; j++) { - temp_r31->unk_50[i][j] = espEntry(0x20002D, 0, 0); - espDispOff(temp_r31->unk_50[i][j]); - espDrawNoSet(temp_r31->unk_50[i][j], 0); - espAttrSet(temp_r31->unk_50[i][j], 1); - temp_r31->unk_68[i][j] = espEntry(0x20002D, 0, 0); - espDispOff(temp_r31->unk_68[i][j]); - espDrawNoSet(temp_r31->unk_68[i][j], 0); - espAttrSet(temp_r31->unk_68[i][j], 1); - } - espBankSet(temp_r31->unk_50[i][0], 0xA); - espBankSet(temp_r31->unk_68[i][0], 0xB); - temp_r31->unk_90[i] = 1.0f; - temp_r31->unk_A0[i] = 1.0f; - temp_r31->unk_130[i] = 0; - temp_r31->unk_138[i] = 0; - } - arg0->unk_14 = &fn_2_11D0; -} - -void fn_2_11D0(unkStructBSS114* arg0) { - unkStructBSS114* sp1C; - Vec sp18; - Vec spC; - unkSubstructBSS114* sp8; - unkSubstructBSS114* temp_r31; - s32 i; - s32 j; - unkStructBSS114* temp_r28; - s16 temp; - - temp_r31 = arg0->unk_5C; - - for (i = 0; i < 4; i++) { - sp8 = lbl_2_bss_118[i]->unk_5C; - if (temp_r31->unk_130[i] != 0) { - temp_r28 = lbl_2_bss_118[i]; - sp18.x = temp_r28->unk_18.x; - sp18.y = temp_r28->unk_18.y; - sp18.z = temp_r28->unk_18.z; - fn_2_10240(&sp18, &spC); - - for (j = 0; j < 3; j++) { - espPosSet(temp_r31->unk_50[i][j], -20.0f + spC.x + temp_r31->unk_F0[i] + (f32) (j * 0x10), 20.0f + spC.y + temp_r31->unk_100[i]); - espTPLvlSet(temp_r31->unk_50[i][j], temp_r31->unk_90[i]); - } - - temp_r31->unk_C0[i] -= 0.5f; - temp_r31->unk_100[i] -= 1.0f; - if (temp_r31->unk_130[i] < 15) { - temp_r31->unk_90[i] -= 2.0f / 30.0f; - } - - if (--temp_r31->unk_130[i] == 0) { - espDispOff(temp_r31->unk_50[i][0]); - espDispOff(temp_r31->unk_50[i][1]); - } - } - if (temp_r31->unk_138[i] != 0) { - temp_r28 = lbl_2_bss_118[i]; - sp18.x = temp_r28->unk_18.x; - sp18.y = temp_r28->unk_18.y; - sp18.z = temp_r28->unk_18.z; - fn_2_10240(&sp18, &spC); - - for (j = 0; j < 2; j++) { - espPosSet(temp_r31->unk_68[i][j], -20.0f + spC.x + temp_r31->unk_110[i] + (f32) (j * 0x10), -20.0f + spC.y + temp_r31->unk_120[i]); - espTPLvlSet(temp_r31->unk_68[i][j], temp_r31->unk_A0[i]); - } - - temp_r31->unk_E0[i] += 0.5f; - temp_r31->unk_120[i] += 1.0f; - if (temp_r31->unk_138[i] < 0xF) { - temp_r31->unk_A0[i] -= 2.0f / 30.0f; - } - - if (--temp_r31->unk_138[i] == 0) { - espDispOff(temp_r31->unk_68[i][0]); - espDispOff(temp_r31->unk_68[i][1]); - } - } - fn_2_15C4(i); - } -} - -void fn_2_15C4(s16 arg0) { - s32 temp_r30; - unkSubstructBSS114* temp_r31; - unkSubstructBSS114* temp_r29; - - temp_r31 = lbl_2_bss_E0->unk_5C; - temp_r29 = lbl_2_bss_118[arg0]->unk_5C; - temp_r30 = temp_r29->unk_68[1][2]; - espBankSet(temp_r31->unk_08[arg0][0], temp_r30 / 10); - espBankSet(temp_r31->unk_08[arg0][1], temp_r30 % 10); -} - -void fn_2_169C(s16 arg0) { - s32 i; - unkSubstructBSS114* temp_r28; - unkSubstructBSS114* temp_r31; - - temp_r31 = lbl_2_bss_E0->unk_5C; - temp_r28 = lbl_2_bss_118[arg0]->unk_5C; - for (i = 0; i < 2; i++) { - espDispOn(temp_r31->unk_50[arg0][i]); - } - temp_r31->unk_90[arg0] = 1.0f; - temp_r31->unk_C0[arg0] = ((arg0 > 1) * 0x18E) + 0x34; - temp_r31->unk_B0[arg0] = ((arg0 & 1) * 0x1BA) + 0x29; - temp_r31->unk_100[arg0] = 0.0f; - temp_r31->unk_F0[arg0] = 0.0f; - espBankSet(temp_r31->unk_50[arg0][1], temp_r28->unk_68[2][0]); - temp_r31->unk_130[arg0] = 0x2D; -} - -void fn_2_1858(s16 arg0, s16 arg1) { - s16 temp_r4; - s32 temp_r0; - s32 var_r28; - unkSubstructBSS114* temp_r29; - unkSubstructBSS114* temp_r31; - - temp_r31 = lbl_2_bss_E0->unk_5C; - temp_r29 = lbl_2_bss_118[arg0]->unk_5C; - for (var_r28 = 0; var_r28 < 2; var_r28++) { - espDispOn(temp_r31->unk_68[arg0][var_r28]); - } - temp_r31->unk_A0[arg0] = 1.0f; - temp_r31->unk_E0[arg0] = ((arg0 > 1) * 0x18E) + 0x14; - temp_r31->unk_D0[arg0] = ((arg0 & 1) * 0x1BA) + 0x29; - temp_r31->unk_120[arg0] = 0.0f; - temp_r31->unk_110[arg0] = 0.0f; - espBankSet(temp_r31->unk_68[arg0][1], arg1); - temp_r31->unk_138[arg0] = 0x2D; - temp_r31->unk_140[arg0] = arg1; - temp_r29->unk_68[1][2] -= arg1; - if (temp_r29->unk_68[1][2] < 0) { - temp_r29->unk_68[1][2] = 0; - } -} - -// void fn_2_1A38(unkStructBSS114* arg0) { -// Vec sp20; -// Vec sp14; -// Vec sp8; -// unkStructBSS114 *temp; -// unkStructBSS114 *temp2; - -// temp = Hu3DModelObjPtrGet(arg0->unk_40->unk_00[0], lbl_2_data_124); -// temp->unk_04 = 2; - -// sp20.x = -2500.0f; -// sp20.y = 150.0f; -// sp20.z = -6800.0f; -// sp14.x = 50.0f; -// sp14.y = 50.0f; -// sp14.z = 50.0f; -// sp8.x = 1500.0f; -// sp8.y = 150.0f; -// sp8.z = -4800.0f; -// temp2 = fn_2_FC40(0x12, &sp20, &sp14, &sp8); -// fn_2_E6BC(temp2->unk_4C, 5.0f, 1.5f, 0.2f, 0.8f, 3.0f); -// } - -// void fn_2_1B80(unkStructBSS114* arg0) { -// Vec sp14; -// Vec sp8; -// unkStructBSS114* temp; -// unkStructBSS114* temp2; - -// temp = Hu3DModelObjPtrGet(arg0->unk_40->unk_00[0], lbl_2_data_124[1]); -// temp->unk_04 = 2; -// sp14.x = -1000.0f; -// sp14.y = 0.0f; -// sp14.z = -9100.0f; -// sp8.x = 150.0f; -// sp8.y = 100.0f; -// sp8.z = 100.0f; -// temp2 = fn_2_FC40(0xE, &sp14, &sp8, &sp14); -// omSetRot(temp2, 3.0f, 0.0f, 0.0f); -// fn_8002FB30(temp2, 0.0f, 0.0f, 50.0f); -// fn_2_E6BC(temp2->unk_4C, 4.5f, 2.5f, 0.08f, 0.9f, 1.0f); -// } - -// void fn_2_1CF0(unkStructBSS114* arg0) { -// Vec sp20; -// Vec sp14; -// Vec sp8; -// unkStructBSS114 *temp; - -// temp = Hu3DModelObjPtrGet(arg0->unk_40->unk_00[0], lbl_2_data_124[2]); -// temp->unk_04 = 2; -// sp20.x = 500.0f; -// sp20.y = 0.0f; -// sp20.z = -24300.0f; -// sp14.x = 200.0f; -// sp14.y = 100.0f; -// sp14.z = 100.0f; -// sp8.x = 1000.0f; -// sp8.y = 0.0f; -// sp8.z = -16300.0f; -// fn_2_FC40(0x28, &sp20, &sp14, &sp8); -// } - -// void fn_2_1DE8(unkStructBSS114* arg0) { -// Vec sp2C; -// Vec sp20; -// Vec sp14; -// Vec sp8; -// unkStructBSS114 *temp2; -// unkStructBSS114 *temp; - -// temp = Hu3DModelObjPtrGet(arg0->unk_40->unk_00[0], lbl_2_data_124[3]); -// temp->unk_04 = 2; -// sp2C.x = 0.0f; -// sp2C.y = -150.0f + 0.003921569f * (300.0f * frand()); -// sp2C.z = -23000.0f; -// fn_2_91AC(lbl_2_bss_100.unk_00, &sp2C); -// sp2C.x = 0.0f; -// sp2C.y = -150.0f + 0.003921569f * (300.0f * frand()); -// sp2C.z = -25000.0f; -// fn_2_91AC(lbl_2_bss_100.unk_04, &sp2C); -// sp2C.x = 5500.0f; -// sp2C.y = 0.0f; -// sp2C.z = -29800.0f; -// sp20.x = 100.0f; -// sp20.y = 100.0f; -// sp20.z = 100.0f; -// sp14.x = -1500.0f; -// sp14.y = 0.0f; -// sp14.z = -24900.0f; -// temp2 = fn_2_FC40(0x14, &sp2C, &sp20, &sp14); -// fn_2_E6BC(temp2->unk_4C, 6.0f, 1.5f, 0.2f, 0.8f, 3.5f); -// sp8.x = -650.0f; -// sp8.y = -360.0f; -// sp8.z = -26300.0f; -// lbl_2_bss_D0 = fn_2_10A88(&sp8, 3); -// lbl_2_bss_90[0] = HuAudFXEmiterPlay(0x50B, &sp8); -// } - -// void fn_2_20B0(omObjData* arg0) { -// Vec sp8; -// omObjData* temp; - -// temp = Hu3DModelObjPtrGet(arg0->model[0], lbl_2_data_124[4]); -// temp->unk_04 = 2; -// Hu3DModelAttrReset(arg0->unk_40->unk_08[1][0], 1); -// sp8.x = 0.0f; -// sp8.y = -370.0f; -// sp8.z = -43000.0f; -// lbl_2_bss_8 = fn_2_10A88(&sp8, 3); -// lbl_2_bss_90[1] = HuAudFXEmiterPlay(0x50B, &sp8); -// sp8.x = 380.0f; -// sp8.y = -440.0f; -// sp8.z = -32000.0f; -// lbl_2_bss_CC = fn_2_10A88(&sp8, 3); -// lbl_2_bss_90[2] = HuAudFXEmiterPlay(0x50B, &sp8); -// Hu3DModelAttrReset(arg0->unk_40->unk_00[2], 1); -// Hu3DModelAttrSet(arg0->unk_40->unk_00[2], -0x3FFFFFFF); -// } - -// void fn_2_21F8(omObjData* arg0) { -// Vec sp2C; -// Vec sp20; -// Vec sp14; -// Vec sp8; -// s32 i; -// s32 var_r30_2; -// unkStructBSS114* temp; - -// temp = Hu3DModelObjPtrGet(arg0->model[0], *lbl_2_data_124); -// temp->unk_04 = 2; - -// Hu3DModelAttrReset(arg0->model[0], 1); -// Hu3DModelAttrReset(arg0->model[1], 1); -// Hu3DModelAttrSet(arg0->model[0], 0x40000001); -// Hu3DModelAttrSet(arg0->model[1], 0x40000001); -// Hu3DModelAttrReset(arg0->model[3], 1); -// lbl_2_bss_44.x = 0.0f; -// lbl_2_bss_44.y = 100.0f; -// lbl_2_bss_44.z = 0.0f; -// lbl_2_bss_38.x = 0.0f; -// lbl_2_bss_38.y = 1000.0f; -// lbl_2_bss_38.z = -1500.0f; -// lbl_2_bss_2C.x = 0.0f; -// lbl_2_bss_2C.y = 1.0f; -// lbl_2_bss_2C.z = 0.0f; -// Hu3DCameraPosSetV(1, &lbl_2_bss_44, &lbl_2_bss_2C, &lbl_2_bss_38); -// Hu3DCameraPerspectiveSet(1, lbl_2_bss_12C, lbl_2_bss_128, lbl_2_bss_124, 1.2f); -// lbl_2_bss_54.unk_00 = lbl_2_bss_44; -// fn_2_D088(NULL); -// sp20 = lbl_2_bss_44; -// PSVECSubtract(&lbl_2_bss_38, &lbl_2_bss_44, &sp2C); -// PSVECNormalize(&sp2C, &sp2C); -// fn_80032D3C(&sp20, &sp2C, lbl_2_bss_88, lbl_2_bss_84, 0x12C, 0x12C, 0x12C); -// sp14.x = 300.0f; -// sp14.y = -450.0f; -// sp14.z = -3100.0f; -// lbl_2_bss_D8 = fn_2_10A88(&sp14, 3); -// lbl_2_bss_90[0] = HuAudFXEmiterPlay(0x50B, &sp14); -// sp14.x = -300.0f; -// sp14.y = -340.0f; -// sp14.z = -4720.0f; -// lbl_2_bss_D4 = fn_2_10A88(&sp14, 3); -// lbl_2_bss_90[1] = HuAudFXEmiterPlay(0x50B, &sp14); -// Hu3DModelAttrReset(arg0->model[2], 1); -// Hu3DModelAttrSet(arg0->model[2], -0x3FFFFFFF); - -// var_r30_2 = 4; -// for (i = 0; i < var_r30_2; i++) { -// sp8.x = -340.0f + (0.003921569f * (680.0f * frand())); -// sp8.y = -250.0f + (0.003921569f * (500.0f * frand())); -// sp8.z = ((-1550.0f - (f32) (i * 0x104)) - 40.0f) + (0.003921569f * (80.0f * frand())); -// fn_2_10A88(&sp8, 0); -// } -// } - -void fn_2_33B4(omObjData* arg0) { - fn_800210CC(arg0->model[3], 110.0f, 5.0 * fn_800EB910(M_PI * (f64) lbl_2_bss_10 / 180.0), -1500.0); - lbl_2_bss_10 += 2.0f; - if (lbl_2_bss_10 >= 360.0f) { - lbl_2_bss_10 -= 360.0f; - } -} - -void fn_2_14738(omObjData* arg0) { - omSetTra(arg0, lbl_2_bss_6C.x, lbl_2_bss_6C.y, lbl_2_bss_6C.z); - if (arg0->work[0] == 1U) { - Hu3DModelAttrSet(*arg0->model, 1); - omDelObjEx(HuPrcCurrentGet(), arg0); - } -} diff --git a/src/REL/m401Dll/m401Dll.h b/src/REL/m401Dll/m401Dll.h deleted file mode 100644 index 0bf29f61..00000000 --- a/src/REL/m401Dll/m401Dll.h +++ /dev/null @@ -1,198 +0,0 @@ -#include "unsplit.h" -#include "REL/executor.h" -#include -#include "game/objsub.h" -#include "game/object.h" - -// global data // -typedef struct unkStruct18FC10 { - s16 unk_00; - char unk_02[8]; -} unkStruct18FC10; -typedef struct unkSubstructBSS114 { - s16 unk_00[4]; - s16 unk_08[4][3]; - char unk_20[0x30]; - s16 unk_50[4][3]; - s16 unk_68[4][3]; - s16 unk_80[4]; - s16 unk_88[4]; - f32 unk_90[4]; - f32 unk_A0[4]; - char unk_B0[0x10]; - f32 unk_C0[4]; - f32 unk_D0[4]; - f32 unk_E0[4]; - f32 unk_F0[4]; - f32 unk_100[4]; - f32 unk_110[4]; - f32 unk_120[4]; - s16 unk_130[4]; - s16 unk_138[4]; - s16 unk_140[4]; -} unkSubstructBSS114; -typedef struct unkStructBSS114 { - char unk_00[4]; - s32 unk_04; - char unk_08[0xC]; - void *unk_14; - Vec unk_18; - char unk_24[0x1C]; - unkSubstructBSS114 *unk_40; - char unk_44[0x8]; - s32 unk_4C; - u32 unk_50; - char unk_54[0x8]; - unkSubstructBSS114 *unk_5C; -} unkStructBSS114; -typedef struct unkStruct18BFC0 { - char unk_00[0x14]; - Vec unk_14; -} unkStruct18BFC0; -typedef struct unkStruct18C8FC { - s16 unk_00; - char unk_02[0x42]; -} unkStruct18C8FC; - -extern unkStruct18FC10 lbl_8018FC10[]; -extern unkStruct18BFC0 lbl_8018BFC0; -extern unkStruct18C8FC lbl_8018C8FC[]; -extern s16 lbl_801D3CC2; - -extern void Hu3DModelAttrSet(s16, s32); -extern void Hu3DModelAttrReset(s16, s32); -extern omObjData* Hu3DModelObjPtrGet(s16, s32); -extern void Hu3DCameraPosSetV(s32, Vec*, Vec*, Vec*); -extern s16 Hu3DGLightCreateV(Vec*, Vec*, s32*); -extern void Hu3DGLightInfinitytSet(s16); -extern void Hu3DReflectNoSet(s16); -extern void Hu3DShadowCreate(f32, f32, f32); -extern void Hu3DShadowPosSet(Vec*, Vec*, Vec*); -extern void Hu3DShadowTPLvlSet(f32); -extern void Hu3DFogSet(f32, f32, u8, u8, u8); -extern void omOvlReturnEx(s16, s16); -extern omObjData* omAddObjEx(void*, s16, s16, s16, s16, void*); -extern void omDelObjEx(s32*, omObjData*); -extern void omMakeGroupEx(omObjData*, s16, s16); -extern omObjData* omGetGroupMemberListEx(omObjData*, s16); -extern void omSetTra(omObjData*, f32, f32, f32); -extern void omSetRot(omObjData*, f32, f32, f32); -extern void omSetSca(omObjData*, f32, f32, f32); -extern u8 frand(void); -extern s32 HuAudFXPlay(s32); -extern void HuAudFXStop(s32); -extern s32 HuAudFXEmiterPlay(s32, Vec*); -extern void HuAudFXListnerKill(void); -extern void HuAudSeqFadeOut(s32, s32); -extern s16 MGSeqCreate(s32, ...); -extern s16 espEntry(s32, s16, s16); -extern void espDispOn(s16); -extern void espDispOff(s16); -extern void espAttrSet(s16, s16); -extern void espPosSet(s16, f32, f32); -extern void espTPLvlSet(s16, f32); -extern void espColorSet(s16, s8, s8, s8); -extern void espBankSet(s16, s16); -extern void espDrawNoSet(s16, s16); -extern void WipeCreate(s16, s16, s16); -extern u8 WipeStatGet(void); -extern f32 PSVECNormalize(Vec*, Vec*); - -// local data // -typedef struct unkStructBSS54 { - Vec unk_00; -} unkStructBSS54; -typedef struct unkStructBSS100 { - void *unk_00; - void *unk_04; -} unkStructBSS100; - -extern f32 lbl_2_data_0 = -7.1875f; -extern s16 lbl_2_data_4[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; -extern Vec lbl_2_data_14 = { 1500.0f, 2500.0f, 1500.0f }; -extern Vec lbl_2_data_20 = { 0.0f, -1.0f, 0.0f }; -extern s32 lbl_2_data_2C = -1; -extern Vec lbl_2_data_30 = { 0.0f, 2500.0f, 0.0f }; -extern Vec lbl_2_data_3C = { 0.0f, 1.0f, -1.0f }; -extern Vec lbl_2_data_48 = { 0.0f, 0.0f, 0.0f }; -extern char lbl_2_data_6F[] = "winnercnt:%d"; -extern s32 lbl_2_data_80[8] = { 0x610000, 0x610001, 0x610002, 0x610003, 0x610004, 0x610005, 0x610006, 0x610007 }; -extern s32 lbl_2_data_124[5]; - -extern s32 lbl_2_bss_8; -extern f32 lbl_2_bss_10; -extern unkStruct18FC10* lbl_2_bss_1C; -extern Vec lbl_2_bss_2C; -extern Vec lbl_2_bss_38; -extern Vec lbl_2_bss_44; -extern f32 lbl_2_bss_50; -extern unkStructBSS54 lbl_2_bss_54; -extern Vec lbl_2_bss_60; -extern Vec lbl_2_bss_6C; -extern f32 lbl_2_bss_84; -extern f32 lbl_2_bss_88; -extern s32 lbl_2_bss_90[4]; -extern s32 lbl_2_bss_A4; -extern s16 lbl_2_bss_A8; -extern s16 lbl_2_bss_AA[]; -extern s16 lbl_2_bss_B2[]; -extern s16 lbl_2_bss_BA; -extern s16 lbl_2_bss_BE; -extern s16 lbl_2_bss_C0; -extern void* lbl_2_bss_C8; -extern s32 lbl_2_bss_CC; -extern s32 lbl_2_bss_D0; -extern s32 lbl_2_bss_D4; -extern s32 lbl_2_bss_D8; -extern unkStructBSS114* lbl_2_bss_E0; -extern s32 lbl_2_bss_F4; -extern omObjData* lbl_2_bss_F8; -extern omObjData* lbl_2_bss_FC; -extern unkStructBSS100 lbl_2_bss_100; -extern omObjData* lbl_2_bss_108; -extern omObjData* lbl_2_bss_10C; -extern omObjData* lbl_2_bss_110; -extern omObjData* lbl_2_bss_114; -extern unkStructBSS114** lbl_2_bss_118; -extern s32 lbl_2_bss_11C; -extern s16 lbl_2_bss_120; -extern f32 lbl_2_bss_124; -extern f32 lbl_2_bss_128; -extern f32 lbl_2_bss_12C; - -void M401ObjectSetup(void); -void fn_2_70C(unkStructBSS114*); -void fn_2_A10(void); -void M401SetFogAndBG(void); -void M401SetSpriteDisp(s16); -void fn_2_C1C(unkStructBSS114*); -void fn_2_11D0(unkStructBSS114*); -void fn_2_15C4(s16); -void fn_2_169C(s16); -void fn_2_1858(s16, s16); -void fn_2_1A38(unkStructBSS114*); -void fn_2_1B80(unkStructBSS114*); -void fn_2_1CF0(unkStructBSS114*); -void fn_2_1DE8(unkStructBSS114*); -void fn_2_20B0(unkStructBSS114*); -void fn_2_2FA4(void*); -void fn_2_3B24(void*); -void fn_2_48A0(void*); -void fn_2_7CB4(void*); -void fn_2_8E74(void*); -void fn_2_95E4(void*); -void fn_2_91AC(void*, Vec*); -void fn_2_9D00(void*); -void fn_2_BD90(void*); -void fn_2_C6DC(void*); -void fn_2_C130(void); -void fn_2_D088(void*); -void fn_2_DBCC(s16); -void fn_2_E6BC(s32, f32, f32, f32, f32, f32); -unkStructBSS114* fn_2_FC40(s32, Vec*, Vec*, Vec*); -void fn_2_10240(Vec*, Vec*); -void fn_2_1041C(void); -s32 fn_2_14640(void*); -void fn_2_10710(void); -s16 fn_2_1079C(void); -s32 fn_2_10A88(Vec*, s16); diff --git a/src/REL/m401Dll/main.c b/src/REL/m401Dll/main.c new file mode 100644 index 00000000..909b04b1 --- /dev/null +++ b/src/REL/m401Dll/main.c @@ -0,0 +1,613 @@ +#include "game/object.h" +#include "game/memory.h" +#include "game/hsfman.h" +#include "game/objsub.h" +#include "game/minigame_seq.h" +#include "game/gamework_data.h" +#include "game/wipe.h" +#include "game/esprite.h" +#include "game/sprite.h" + +#include "REL/m401Dll.h" + +#include "rel_sqrt_consts.h" + +float lbl_2_data_0 = -7.1875f; + +s16 lbl_2_data_4[] = { + 0, 1, 2, 3, + 4, 5, 6, 7 +}; + +Vec lbl_2_data_14 = { + 1500, 2500, 1500 +}; + +Vec lbl_2_data_20 = { + 0, -1, 0 +}; + +GXColor lbl_2_data_2C = { + 255, 255, 255, 255 +}; + +Vec lbl_2_data_30 = { + 0, 2500, 0 +}; + +Vec lbl_2_data_3C = { + 0, 1, -1 +}; + +Vec lbl_2_data_48 = { + 0, 0, 0 +}; + +s32 lbl_2_bss_11C; +omObjData **lbl_2_bss_118; +omObjData *lbl_2_bss_114; +omObjData *lbl_2_bss_110; +omObjData *lbl_2_bss_10C; +omObjData *lbl_2_bss_108; +omObjData *lbl_2_bss_100[2]; +omObjData *lbl_2_bss_FC; +omObjData *lbl_2_bss_F8; +omObjData *lbl_2_bss_F4; +omObjData *lbl_2_bss_E4[4]; +omObjData *lbl_2_bss_E0; +omObjData *lbl_2_bss_DC; +omObjData *lbl_2_bss_D8; +omObjData *lbl_2_bss_D4; +omObjData *lbl_2_bss_D0; +omObjData *lbl_2_bss_CC; +omObjData *lbl_2_bss_C8; +omObjData *lbl_2_bss_C4; +s16 lbl_2_bss_C0; +s16 lbl_2_bss_BE; +s16 lbl_2_bss_BC; +s16 lbl_2_bss_BA; +s16 lbl_2_bss_B2[4]; +s16 lbl_2_bss_AA[4]; +s16 lbl_2_bss_A8; +s32 lbl_2_bss_A4; +s32 lbl_2_bss_90[5]; +s32 lbl_2_bss_8C; +float lbl_2_bss_88; +float lbl_2_bss_84; +Vec lbl_2_bss_78; +Vec lbl_2_bss_6C; +Vec lbl_2_bss_60; +Vec lbl_2_bss_54; +float lbl_2_bss_50; +Vec lbl_2_bss_44; +Vec lbl_2_bss_38; +Vec lbl_2_bss_2C; +Vec lbl_2_bss_20; +Process *lbl_2_bss_1C; +s16 lbl_2_bss_1A; +s16 lbl_2_bss_18; +s32 lbl_2_bss_14; +float lbl_2_bss_10; +s16 lbl_2_bss_E; +s16 lbl_2_bss_C; +omObjData *lbl_2_bss_8; +omObjData *lbl_2_bss_4; +omObjData *lbl_2_bss_0; + +void fn_2_70C(omObjData *object); +void fn_2_A10(omObjData *object); +void fn_2_C1C(omObjData *object); +void fn_2_11D0(omObjData *object); + +void fn_2_2FA4(omObjData *object); +void fn_2_3B24(omObjData *object); +void fn_2_48A0(omObjData *object); +void fn_2_7CB4(omObjData *object); +void fn_2_8E74(omObjData *object); +void fn_2_95E4(omObjData *object); +void fn_2_9D00(Process *objman); +void fn_2_BD90(omObjData *object); +void fn_2_C130(omObjData *object); +void fn_2_C6DC(omObjData *object); +void fn_2_D088(omObjData *object); + +void fn_2_DBCC(s32 arg0); + +void ModuleProlog(void) +{ + s32 i; + omObjData *object; + CameraData *camera; + LightData *light; + OSReport("**** M401ObjectSetup ****\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_SYSTEM), -1); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_DATA), -1); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_DVD), -1); + lbl_2_bss_1C = omInitObjMan(60, 8192); + omGameSysInit(lbl_2_bss_1C); + lbl_2_bss_A8 = Hu3DGLightCreateV(&lbl_2_data_14, &lbl_2_data_20, &lbl_2_data_2C); + Hu3DGLightInfinitytSet(lbl_2_bss_A8); + light = &Hu3DGlobalLight[lbl_2_bss_A8]; + light->unk_00 |= 0x8000; + Hu3DCameraCreate(1); + camera = &Hu3DCamera[0]; + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + lbl_2_bss_114 = omAddObjEx(lbl_2_bss_1C, 1000, 3, 0, -1, fn_2_BD90); + lbl_2_bss_114->work[0] = 0; + lbl_2_bss_110 = omAddObjEx(lbl_2_bss_1C, 10, 0, 0, -1, fn_2_70C); + omMakeGroupEx(lbl_2_bss_1C, 0, 4); + lbl_2_bss_118 = omGetGroupMemberListEx(lbl_2_bss_1C, 0); + omMakeGroupEx(lbl_2_bss_1C, 1, 28); + for(i=0; i<4; i++) { + object = omAddObjEx(lbl_2_bss_1C, 1200, 4, 10, 0, fn_2_3B24); + object->work[0] = i; + } + lbl_2_bss_12C = 60; + lbl_2_bss_128 = 50; + lbl_2_bss_124 = 25000; + Hu3DShadowCreate(30, 20, 5000); + Hu3DShadowTPLvlSet(0.35f); + lbl_2_data_30.y = lbl_2_bss_60.y + 1500.0f; + lbl_2_data_30.z = lbl_2_bss_60.z + 500.0f; + lbl_2_data_48.y = lbl_2_bss_60.y; + lbl_2_data_48.z = lbl_2_bss_60.z + 500.0f; + Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); + lbl_2_bss_10C = omAddObjEx(lbl_2_bss_1C, 500, 12, 3, -1, fn_2_2FA4); + lbl_2_bss_108 = omAddObjEx(lbl_2_bss_1C, 1100, 1, 1, -1, fn_2_7CB4); + lbl_2_bss_100[0] = omAddObjEx(lbl_2_bss_1C, 1110, 1, 1, -1, fn_2_8E74); + lbl_2_bss_100[1] = omAddObjEx(lbl_2_bss_1C, 1110, 1, 1, -1, fn_2_8E74); + lbl_2_bss_FC = omAddObjEx(lbl_2_bss_1C, 1120, 1, 2, -1, fn_2_95E4); + lbl_2_bss_C8 = omAddObjEx(lbl_2_bss_1C, 100, 0, 0, -1, fn_2_D088); + lbl_2_bss_E0 = omAddObjEx(lbl_2_bss_1C, 1500, 0, 0, -1, fn_2_C1C); + fn_2_DBCC(90); + lbl_2_bss_F8 = omAddObjEx(lbl_2_bss_1C, 500, 9, 0, -1, fn_2_C6DC); + fn_2_9D00(lbl_2_bss_1C); + fn_2_1041C(); + fn_2_1079C(); + lbl_2_bss_F4 = fn_2_14640(lbl_2_bss_1C); + lbl_2_bss_50 = 0; + lbl_2_bss_54 = camera->pos; + Hu3DReflectNoSet(0); + lbl_2_bss_120 = 0; + lbl_2_bss_BE = 0; + lbl_2_bss_BA = 0; + Hu3DFogSet(3000, 10000, 10, 60, 160); + Hu3DBGColorSet(10, 60, 160); + lbl_2_bss_88 = 3000; + lbl_2_bss_84 = 142000; + lbl_2_bss_11C = HuAudFXPlay(1290); +} + +typedef struct work_70C { + s16 unk0; + u8 unk2[0x66]; + s16 unk68; + u8 unk6A[8]; + s16 unk72; + s16 unk74; +} Work70C; + +void fn_2_70C(omObjData *object) +{ + s32 temp_r31; + Work70C *temp_r30; + s16 temp_r29; + switch(lbl_2_bss_120) { + case 0: + break; + + case 1: + if(lbl_2_bss_BE == 1) { + lbl_2_bss_120 = 2; + lbl_2_bss_C0 = MGSeqFinishCreate(); + HuAudSeqFadeOut(lbl_2_bss_A4, 100); + } + break; + + case 2: + if(lbl_2_bss_114 == NULL) { + lbl_2_bss_114 = omAddObjEx(HuPrcCurrentGet(), 1000, 0, 0, -1, fn_2_C130); + lbl_2_bss_114->work[0] = 0; + temp_r29 = 0; + lbl_2_bss_BA = 0; + for(temp_r31=0; temp_r31<4; temp_r31++) { + temp_r30 = lbl_2_bss_118[temp_r31]->data; + lbl_2_bss_118[temp_r31]->func = fn_2_48A0; + temp_r30->unk0 = 5; + temp_r30->unk68 = 0; + if(temp_r30->unk72 > temp_r29) { + temp_r29 = temp_r30->unk72; + } + lbl_2_bss_B2[temp_r31] = -1; + lbl_2_bss_AA[temp_r31] = -1; + } + if(temp_r29 > 0) { + for(temp_r31=0; temp_r31<4; temp_r31++) { + temp_r30 = lbl_2_bss_118[temp_r31]->data; + if(temp_r30->unk72 == temp_r29) { + lbl_2_bss_AA[lbl_2_bss_BA] = GWPlayerCfg[temp_r31].character; + lbl_2_bss_B2[lbl_2_bss_BA++] = temp_r31; + temp_r30->unk68 = 1; + } + } + } + OSReport("winnercnt:%d\n", lbl_2_bss_BA); + } + break; + } + if(omSysExitReq) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudSeqFadeOut(lbl_2_bss_A4, 100); + HuAudFXStop(lbl_2_bss_11C); + object->func = fn_2_A10; + } +} + +void fn_2_A10(omObjData *object) +{ + s32 i; + if(!WipeStatGet()) { + fn_2_10710(); + for(i=0; i<4; i++) { + CharModelKill(lbl_2_data_4[GWPlayerCfg[i].character]); + } + HuAudFXListnerKill(); + omOvlReturnEx(1, 1); + } +} + +void fn_2_A98(void) +{ + Hu3DFogSet(3000, 10000, 10, 60, 160); + Hu3DBGColorSet(10, 60, 160); +} + +typedef struct work_AEC { + s16 unk0[4]; + s16 unk8[4][3]; + u8 unk20[0x30]; + s16 unk50[4][3]; + s16 unk68[4][3]; + s16 unk80[4]; + s16 unk88[4]; + float unk90[4]; + float unkA0[4]; + float unkB0[4]; + float unkC0[4]; + float unkD0[4]; + float unkE0[4]; + float unkF0[4]; + float unk100[4]; + float unk110[4]; + float unk120[4]; + s16 unk130[4]; + s16 unk138[4]; + s16 unk140[4]; +} WorkAEC; + +void fn_2_AEC(s16 arg0) +{ + WorkAEC *temp_r31; + s32 i; + s32 j; + temp_r31 = lbl_2_bss_E0->data; + if(arg0) { + for(i=0; i<4; i++) { + espDispOn(temp_r31->unk0[i]); + espDispOn(temp_r31->unk80[i]); + espDispOn(temp_r31->unk88[i]); + for(j=0; j<2; j++) { + espDispOn(temp_r31->unk8[i][j]); + } + } + } else { + for(i=0; i<4; i++) { + espDispOff(temp_r31->unk0[i]); + espDispOff(temp_r31->unk80[i]); + espDispOff(temp_r31->unk88[i]); + for(j=0; j<2; j++) { + espDispOff(temp_r31->unk8[i][j]); + } + } + } +} + +s32 lbl_2_data_80[] = { + 0x610000, + 0x610001, + 0x610002, + 0x610003, + 0x610004, + 0x610005, + 0x610006, + 0x610007 +}; + +#define PLAYER_POS_X(index, left, width) ((((index)&1)*width)+left) +#define PLAYER_POS_Y(index, top, height) ((((index)>1)*height)+top) + +void fn_2_C1C(omObjData *object) +{ + WorkAEC *temp_r31; + s32 i; + s32 j; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkAEC), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + for(i=0; i<4; i++) { + temp_r31->unk0[i] = espEntry(lbl_2_data_80[GWPlayerCfg[i].character], 2, 0); + espDispOff(temp_r31->unk0[i]); + espDrawNoSet(temp_r31->unk0[i], 0); + espPosSet(temp_r31->unk0[i], PLAYER_POS_X(i, 37, 438), PLAYER_POS_Y(i, 59, 358)); + temp_r31->unk80[i] = espEntry(0x20002F, 3, 0); + espDispOff(temp_r31->unk80[i]); + espDrawNoSet(temp_r31->unk80[i], 0); + espPosSet(temp_r31->unk80[i], PLAYER_POS_X(i, 73, 438), PLAYER_POS_Y(i, 61, 358)); + temp_r31->unk88[i] = espEntry(0x200030, 4, 0); + espDispOff(temp_r31->unk88[i]); + espDrawNoSet(temp_r31->unk88[i], 0); + espPosSet(temp_r31->unk88[i], PLAYER_POS_X(i, 73, 438), PLAYER_POS_Y(i, 61, 358)); + espColorSet(temp_r31->unk88[i], 0, 0, 0); + espTPLvlSet(temp_r31->unk88[i], 0.5f); + for(j=0; j<2; j++) { + temp_r31->unk8[i][j] = espEntry(0x20002E, 1, 0); + espDispOff(temp_r31->unk8[i][j]); + espDrawNoSet(temp_r31->unk8[i][j], 0); + espPosSet(temp_r31->unk8[i][j], PLAYER_POS_X(i, 69+(j*20), 438), PLAYER_POS_Y(i, 63, 358)); + espAttrSet(temp_r31->unk8[i][j], HUSPR_ATTR_NOANIM); + } + for(j=0; j<3; j++) { + temp_r31->unk50[i][j] = espEntry(0x20002D, 0, 0); + espDispOff(temp_r31->unk50[i][j]); + espDrawNoSet(temp_r31->unk50[i][j], 0); + espAttrSet(temp_r31->unk50[i][j], HUSPR_ATTR_NOANIM); + temp_r31->unk68[i][j] = espEntry(0x20002D, 0, 0); + espDispOff(temp_r31->unk68[i][j]); + espDrawNoSet(temp_r31->unk68[i][j], 0); + espAttrSet(temp_r31->unk68[i][j], HUSPR_ATTR_NOANIM); + } + espBankSet(temp_r31->unk50[i][0], 10); + espBankSet(temp_r31->unk68[i][0], 11); + temp_r31->unk90[i] = 1.0f; + temp_r31->unkA0[i] = 1.0f; + temp_r31->unk130[i] = 0; + temp_r31->unk138[i] = 0; + } + object->func = fn_2_11D0; +} + +void fn_2_15C4(s16 arg0); + +void fn_2_11D0(omObjData *object) +{ + WorkAEC *temp_r31; + s32 i; + s32 j; + omObjData *temp_r28; + Vec sp18; + Vec spC; + Work70C *sp8; + temp_r31 = object->data; + for(i=0; i<4; i++) { + sp8 = lbl_2_bss_118[i]->data; + if(temp_r31->unk130[i]) { + temp_r28 = lbl_2_bss_118[i]; + sp18.x = temp_r28->trans.x; + sp18.y = temp_r28->trans.y; + sp18.z = temp_r28->trans.z; + fn_2_10240(&sp18, &spC); + for(j=0; j<3; j++) { + espPosSet(temp_r31->unk50[i][j], (-20.0f+spC.x+temp_r31->unkF0[i])+(j*16), 20.0f+spC.y+temp_r31->unk100[i]); + espTPLvlSet(temp_r31->unk50[i][j], temp_r31->unk90[i]); + } + temp_r31->unkC0[i] -= 0.5f; + temp_r31->unk100[i] -= 1.0f; + if(temp_r31->unk130[i] < 15) { + temp_r31->unk90[i] -= 1.0f/15.0f; + } + if(--temp_r31->unk130[i] == 0) { + espDispOff(temp_r31->unk50[i][0]); + espDispOff(temp_r31->unk50[i][1]); + } + } + if(temp_r31->unk138[i]) { + temp_r28 = lbl_2_bss_118[i]; + sp18.x = temp_r28->trans.x; + sp18.y = temp_r28->trans.y; + sp18.z = temp_r28->trans.z; + fn_2_10240(&sp18, &spC); + for(j=0; j<2; j++) { + espPosSet(temp_r31->unk68[i][j], (-20.0f+spC.x+temp_r31->unk110[i])+(j*16), -20.0f+spC.y+temp_r31->unk120[i]); + espTPLvlSet(temp_r31->unk68[i][j], temp_r31->unkA0[i]); + } + temp_r31->unkE0[i] += 0.5f; + temp_r31->unk120[i] += 1.0f; + if(temp_r31->unk138[i] < 15) { + temp_r31->unkA0[i] -= 1.0f/15.0f; + } + if(--temp_r31->unk138[i] == 0) { + espDispOff(temp_r31->unk68[i][0]); + espDispOff(temp_r31->unk68[i][1]); + } + } + fn_2_15C4(i); + } +} + +void fn_2_15C4(s16 arg0) +{ + WorkAEC *temp_r31; + s32 temp_r30; + Work70C *temp_r29; + temp_r31 = lbl_2_bss_E0->data; + temp_r29 = lbl_2_bss_118[arg0]->data; + temp_r30 = temp_r29->unk72; + espBankSet(temp_r31->unk8[arg0][0], temp_r30/10); + espBankSet(temp_r31->unk8[arg0][1], temp_r30%10); +} + +void fn_2_169C(s16 arg0) +{ + WorkAEC *temp_r31; + s32 i; + Work70C *temp_r28; + temp_r31 = lbl_2_bss_E0->data; + temp_r28 = lbl_2_bss_118[arg0]->data; + for(i=0; i<2; i++ ){ + espDispOn(temp_r31->unk50[arg0][i]); + } + temp_r31->unk90[arg0] = 1; + temp_r31->unkC0[arg0] = PLAYER_POS_Y(arg0, 52, 398); + temp_r31->unkB0[arg0] = PLAYER_POS_X(arg0, 41, 442); + temp_r31->unk100[arg0] = 0; + temp_r31->unkF0[arg0] = 0; + espBankSet(temp_r31->unk50[arg0][1], temp_r28->unk74); + temp_r31->unk130[arg0] = 45; +} + +void fn_2_1858(s16 arg0, s16 arg1) +{ + WorkAEC *temp_r31; + Work70C *temp_r29; + s32 i; + temp_r31 = lbl_2_bss_E0->data; + temp_r29 = lbl_2_bss_118[arg0]->data; + for(i=0; i<2; i++ ){ + espDispOn(temp_r31->unk68[arg0][i]); + } + temp_r31->unkA0[arg0] = 1; + temp_r31->unkE0[arg0] = PLAYER_POS_Y(arg0, 20, 398); + temp_r31->unkD0[arg0] = PLAYER_POS_X(arg0, 41, 442); + temp_r31->unk120[arg0] = 0; + temp_r31->unk110[arg0] = 0; + espBankSet(temp_r31->unk68[arg0][1], arg1); + temp_r31->unk138[arg0] = 45; + temp_r31->unk140[arg0] = arg1; + temp_r29->unk72 -= arg1; + if(temp_r29->unk72 < 0) { + temp_r29->unk72 = 0; + } +} + +float lbl_2_data_A0[] = { + -500, + -8500, + -17500, + -26500, + -99000 +}; + +float lbl_2_data_B4[] = { + -9100, + -18100, + -27100, + -36100, + -45100, + -100000 +}; + +void fn_2_1A38(omObjData *object); +void fn_2_1B80(omObjData *object); +void fn_2_1CF0(omObjData *object); +void fn_2_1DE8(omObjData *object); +void fn_2_1DE8(omObjData *object); +void fn_2_20B0(omObjData *object); +void fn_2_2CBC(omObjData *object); +void fn_2_2D64(omObjData *object); +void fn_2_2DCC(omObjData *object); +void fn_2_2E20(omObjData *object); +void fn_2_2ED0(omObjData *object); + +omObjFunc lbl_2_data_CC[] = { + fn_2_1A38, + fn_2_2CBC, + fn_2_1B80, + fn_2_2D64, + fn_2_1CF0, + fn_2_2DCC, + fn_2_1DE8, + fn_2_2E20, + fn_2_20B0, + fn_2_2ED0 +}; + +char *lbl_2_data_124[] = { + "kaitei01", + "kaitei02", + "kaitei03", + "kaitei04", + "kaitei05" +}; + +s32 lbl_2_data_138[] = { + 0x5C0002, + 0x5C0002, + 0x5C0002, + 0x5C0002, + 0x5C0002, + 0x5C0002, + 0x5C0002, + 0x5C0002, +}; + +omObjData *fn_2_FC40(s16 arg0, Vec *arg1, Vec *arg2, Vec *arg3); +void fn_2_E6BC(omObjData *object, float arg2, float arg3, float arg4, float arg5, float arg6); + +void fn_2_1A38(omObjData *object) +{ + Vec sp20; + Vec sp14; + Vec sp8; + HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[0]); + omObjData *temp_r30; + temp_r31->type = 2; + sp20.x = -2500; + sp20.y = 150; + sp20.z = -6800; + sp14.x = 50; + sp14.y = 50; + sp14.z = 50; + sp8.x = 1500; + sp8.y = 150; + sp8.z = -4800; + temp_r30 = fn_2_FC40(18, &sp20, &sp14, &sp8); + fn_2_E6BC((omObjData *)temp_r30->work[0], 5, 1.5, 0.2, 0.8, 3); +} + +void fn_2_1B80(omObjData *object) +{ + Vec sp14; + Vec sp8; + omObjData *temp_r31; + HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[1]); + + temp_r30->type = 2; + sp14.x = -1000; + sp14.y = 0; + sp14.z = -9100; + sp8.x = 150; + sp8.y = 100; + sp8.z = 100; + temp_r31 = fn_2_FC40(14, &sp14, &sp8, &sp14); + omSetRot(temp_r31, 3, 0, 0); + omSetSca(temp_r31, 0, 0, 50); + fn_2_E6BC((omObjData *)temp_r31->work[0], 4.5, 2.5, 0.08, 0.9, 1); +} + +void fn_2_1CF0(omObjData *object) +{ + Vec sp20; + Vec sp14; + Vec sp8; + HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[2]); + temp_r31->type = 2; + sp20.x = 500; + sp20.y = 0; + sp20.z = -24300; + sp14.x = 200; + sp14.y = 100; + sp14.z = 100; + sp8.x = 1000; + sp8.y = 0; + sp8.z = -16300; + fn_2_FC40(40, &sp20, &sp14, &sp8); +} \ No newline at end of file From cc98e58a98282dcc149007ae120ac54a13a5172d Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Tue, 23 Apr 2024 23:38:05 -0500 Subject: [PATCH 2/2] Replace names with slightly better ones --- src/REL/m401Dll/main.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/REL/m401Dll/main.c b/src/REL/m401Dll/main.c index 909b04b1..308cd7a8 100644 --- a/src/REL/m401Dll/main.c +++ b/src/REL/m401Dll/main.c @@ -178,19 +178,19 @@ void ModuleProlog(void) lbl_2_bss_11C = HuAudFXPlay(1290); } -typedef struct work_70C { +typedef struct m401_work_player { s16 unk0; u8 unk2[0x66]; s16 unk68; u8 unk6A[8]; s16 unk72; s16 unk74; -} Work70C; +} M401WorkPlayer; void fn_2_70C(omObjData *object) { s32 temp_r31; - Work70C *temp_r30; + M401WorkPlayer *temp_r30; s16 temp_r29; switch(lbl_2_bss_120) { case 0: @@ -262,7 +262,7 @@ void fn_2_A98(void) Hu3DBGColorSet(10, 60, 160); } -typedef struct work_AEC { +typedef struct m401_work_2d { s16 unk0[4]; s16 unk8[4][3]; u8 unk20[0x30]; @@ -283,11 +283,11 @@ typedef struct work_AEC { s16 unk130[4]; s16 unk138[4]; s16 unk140[4]; -} WorkAEC; +} M401Work2D; void fn_2_AEC(s16 arg0) { - WorkAEC *temp_r31; + M401Work2D *temp_r31; s32 i; s32 j; temp_r31 = lbl_2_bss_E0->data; @@ -328,10 +328,10 @@ s32 lbl_2_data_80[] = { void fn_2_C1C(omObjData *object) { - WorkAEC *temp_r31; + M401Work2D *temp_r31; s32 i; s32 j; - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkAEC), MEMORY_DEFAULT_NUM); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M401Work2D), MEMORY_DEFAULT_NUM); temp_r31 = object->data; for(i=0; i<4; i++) { temp_r31->unk0[i] = espEntry(lbl_2_data_80[GWPlayerCfg[i].character], 2, 0); @@ -379,13 +379,13 @@ void fn_2_15C4(s16 arg0); void fn_2_11D0(omObjData *object) { - WorkAEC *temp_r31; + M401Work2D *temp_r31; s32 i; s32 j; omObjData *temp_r28; Vec sp18; Vec spC; - Work70C *sp8; + M401WorkPlayer *sp8; temp_r31 = object->data; for(i=0; i<4; i++) { sp8 = lbl_2_bss_118[i]->data; @@ -435,9 +435,9 @@ void fn_2_11D0(omObjData *object) void fn_2_15C4(s16 arg0) { - WorkAEC *temp_r31; + M401Work2D *temp_r31; s32 temp_r30; - Work70C *temp_r29; + M401WorkPlayer *temp_r29; temp_r31 = lbl_2_bss_E0->data; temp_r29 = lbl_2_bss_118[arg0]->data; temp_r30 = temp_r29->unk72; @@ -447,9 +447,9 @@ void fn_2_15C4(s16 arg0) void fn_2_169C(s16 arg0) { - WorkAEC *temp_r31; + M401Work2D *temp_r31; s32 i; - Work70C *temp_r28; + M401WorkPlayer *temp_r28; temp_r31 = lbl_2_bss_E0->data; temp_r28 = lbl_2_bss_118[arg0]->data; for(i=0; i<2; i++ ){ @@ -466,8 +466,8 @@ void fn_2_169C(s16 arg0) void fn_2_1858(s16 arg0, s16 arg1) { - WorkAEC *temp_r31; - Work70C *temp_r29; + M401Work2D *temp_r31; + M401WorkPlayer *temp_r29; s32 i; temp_r31 = lbl_2_bss_E0->data; temp_r29 = lbl_2_bss_118[arg0]->data;