From e430a302e23219f27df6c0cba5a38edfc6782db6 Mon Sep 17 00:00:00 2001 From: CreateSource Date: Tue, 22 Oct 2024 17:18:13 -0400 Subject: [PATCH 1/7] start work on m443Dll --- include/REL/m443Dll.h | 6 ++++++ src/REL/m443Dll/main.c | 1 + src/REL/m443Dll/map.c | 1 + src/REL/m443Dll/player.c | 1 + 4 files changed, 9 insertions(+) create mode 100644 include/REL/m443Dll.h create mode 100644 src/REL/m443Dll/main.c create mode 100644 src/REL/m443Dll/map.c create mode 100644 src/REL/m443Dll/player.c diff --git a/include/REL/m443Dll.h b/include/REL/m443Dll.h new file mode 100644 index 00000000..41a9e3fb --- /dev/null +++ b/include/REL/m443Dll.h @@ -0,0 +1,6 @@ +#ifndef M443DLL_H +#define M443DLL_H + +#include "dolphin.h" + +#endif \ No newline at end of file diff --git a/src/REL/m443Dll/main.c b/src/REL/m443Dll/main.c new file mode 100644 index 00000000..eb768e83 --- /dev/null +++ b/src/REL/m443Dll/main.c @@ -0,0 +1 @@ +#include "m443Dll.h" \ No newline at end of file diff --git a/src/REL/m443Dll/map.c b/src/REL/m443Dll/map.c new file mode 100644 index 00000000..eb768e83 --- /dev/null +++ b/src/REL/m443Dll/map.c @@ -0,0 +1 @@ +#include "m443Dll.h" \ No newline at end of file diff --git a/src/REL/m443Dll/player.c b/src/REL/m443Dll/player.c new file mode 100644 index 00000000..eb768e83 --- /dev/null +++ b/src/REL/m443Dll/player.c @@ -0,0 +1 @@ +#include "m443Dll.h" \ No newline at end of file From f14e4bf84b4e010a6689ec544925c142dda7cc90 Mon Sep 17 00:00:00 2001 From: CreateSource Date: Tue, 29 Oct 2024 17:00:36 -0400 Subject: [PATCH 2/7] fix malloc convention --- src/REL/m415Dll/main.c | 4 ++-- src/REL/m415Dll/map.c | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/REL/m415Dll/main.c b/src/REL/m415Dll/main.c index 2fc185c3..cdf5850f 100644 --- a/src/REL/m415Dll/main.c +++ b/src/REL/m415Dll/main.c @@ -388,7 +388,7 @@ void fn_1_15D0(omObjData* object) { Hu3DModelRotSetV(var_r31, &sp8); lbl_1_bss_338 = Hu3DAnimCreate(HuDataReadNum(0x2E000A, 0x10000000), var_r31, "dummy"); var_r28 = 0x57E40; - lbl_1_bss_334 = HuMemDirectMallocNum(HEAP_DATA, var_r28, 0x10000000); + lbl_1_bss_334 = HuMemDirectMallocNum(HEAP_DATA, var_r28, MEMORY_DEFAULT_NUM); memset(lbl_1_bss_334, 0, var_r28); (void)var_r28; memset(&lbl_1_bss_234, 0, 0x100); @@ -1459,7 +1459,7 @@ void* fn_1_63A8(s32 arg0) { if (var_r31 == 0x80) { return NULL; } - lbl_1_bss_34[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, arg0, 0x10000000); + lbl_1_bss_34[var_r31] = HuMemDirectMallocNum(HEAP_SYSTEM, arg0, MEMORY_DEFAULT_NUM); return lbl_1_bss_34[var_r31]; } diff --git a/src/REL/m415Dll/map.c b/src/REL/m415Dll/map.c index c28e549d..45a83c57 100644 --- a/src/REL/m415Dll/map.c +++ b/src/REL/m415Dll/map.c @@ -12,9 +12,9 @@ void fn_1_8780(s16 arg0, s16 arg1) { lbl_1_bss_36C.unk34 = Hu3DHookFuncCreate(fn_1_95C0); Hu3DModelLayerSet(lbl_1_bss_36C.unk34, 6); lbl_1_bss_36C.unk30 = arg0; - lbl_1_bss_36C.unk40 = var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkSubStruct2), 0x10000000); + lbl_1_bss_36C.unk40 = var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkSubStruct2), MEMORY_DEFAULT_NUM); lbl_1_bss_36C.unk32 = arg1; - lbl_1_bss_36C.unk3C = var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkSubStruct3), 0x10000000); + lbl_1_bss_36C.unk3C = var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkSubStruct3), MEMORY_DEFAULT_NUM); for (var_r31 = 0; var_r31 < arg0; var_r31++, var_r29++) { var_r29->unk8 = 0; @@ -293,7 +293,7 @@ void fn_1_9750(unkStruct6** arg0, s16 arg1, f32 arg8, f32 arg9) { s32 var_r30; unkStruct6* var_r31; - var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct6), 0x10000000); + var_r31 = *arg0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * sizeof(unkStruct6), MEMORY_DEFAULT_NUM); for (var_r30 = 0; var_r30 < arg1; var_r31++, var_r30++) { var_r31->unk0.x = (-0.5f * arg8); @@ -546,15 +546,15 @@ s16 fn_1_A2D0(u8 arg0, u8 arg1) { var_r31->unk30 = NULL; var_r31->unk2 = arg0; var_r31->unk4 = arg1; - var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkSubStruct), 0x10000000); + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkSubStruct), MEMORY_DEFAULT_NUM); var_r31->unk3C = var_r30; - var_r31->unk34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * 2, 0x10000000); + var_r31->unk34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * 2, MEMORY_DEFAULT_NUM); var_r31->unk48 = 0; - var_r31->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkType), 0x10000000); - var_r31->unk50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec[4]), 0x10000000); - var_r31->unk54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkType2), 0x10000000); - var_r31->unk58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec), 0x10000000); - var_r31->unk5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (arg0 * sizeof(unkSubStruct4)), 0x10000000); + var_r31->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkType), MEMORY_DEFAULT_NUM); + var_r31->unk50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec[4]), MEMORY_DEFAULT_NUM); + var_r31->unk54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(unkType2), MEMORY_DEFAULT_NUM); + var_r31->unk58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * sizeof(Vec), MEMORY_DEFAULT_NUM); + var_r31->unk5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg1 * (arg0 * sizeof(unkSubStruct4)), MEMORY_DEFAULT_NUM); DCFlushRangeNoSync(var_r31->unk4C, arg0 << 8); var_r31->unkC.x = var_r31->unkC.y = var_r31->unkC.z = 0.0f; var_r31->unk18.x = var_r31->unk18.y = var_r31->unk18.z = 0.0f; @@ -606,7 +606,7 @@ s16 fn_1_A2D0(u8 arg0, u8 arg1) { var_r31->unk48 += var_r30->unk38; } temp_r25 = var_r31->unk4C; - var_r31->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk48, 0x10000000); + var_r31->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk48, MEMORY_DEFAULT_NUM); memcpy(var_r31->unk4C, temp_r25, var_r31->unk48); HuMemDirectFree(temp_r25); DCFlushRangeNoSync(var_r31->unk50, arg0 * 0x30); @@ -692,7 +692,7 @@ s16 fn_1_A94C(u32 arg0, s16 arg1, s16 arg2) { var_r31->unk6 = 1; if (((arg0 & 0xFFFF0000) + 0x10000) == 0U) { var_r30 = HuSprAnimMake(arg1, arg2, 2); - var_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg2 * (arg1 * 2), 0x10000000); + var_r30->bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg2 * (arg1 * 2), MEMORY_DEFAULT_NUM); arg1 = arg2 = 0; } else { var_r30 = HuSprAnimRead(HuDataReadNum(arg0, 0x10000000)); From daa833827f1bd768a3ac1a71a76809432f111dfe Mon Sep 17 00:00:00 2001 From: CreateSource Date: Tue, 29 Oct 2024 17:32:08 -0400 Subject: [PATCH 3/7] symbol fix --- config/GMPE01_00/rels/m456Dll/symbols.txt | 214 +++++++++++----------- 1 file changed, 107 insertions(+), 107 deletions(-) diff --git a/config/GMPE01_00/rels/m456Dll/symbols.txt b/config/GMPE01_00/rels/m456Dll/symbols.txt index 1f2502e9..4321bb34 100644 --- a/config/GMPE01_00/rels/m456Dll/symbols.txt +++ b/config/GMPE01_00/rels/m456Dll/symbols.txt @@ -110,111 +110,111 @@ lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 data:double -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 data:double -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:double -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float lbl_1_data_38 = .data:0x00000038; // type:object size:0xC data:float lbl_1_data_44 = .data:0x00000044; // type:object size:0xC data:float @@ -237,8 +237,8 @@ lbl_1_data_230 = .data:0x00000230; // type:object size:0xB8 lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x30 lbl_1_data_318 = .data:0x00000318; // type:object size:0x1 data:byte lbl_1_data_31C = .data:0x0000031C; // type:object size:0x50 -lbl_1_data_36C = .data:0x0000036C; // type:object size:0x7 data:string -lbl_1_data_373 = .data:0x00000373; // type:object size:0x7 data:string +lbl_1_data_36C = .data:0x0000036C; // type:object size:0x7 scope:local data:string +lbl_1_data_373 = .data:0x00000373; // type:object size:0x7 scope:local data:string lbl_1_data_37A = .data:0x0000037A; // type:object size:0x1 data:byte lbl_1_data_37E = .data:0x0000037E; // type:object size:0x1 data:byte lbl_1_data_382 = .data:0x00000382; // type:object size:0x6 data:byte From 513f0af5e1ffe3fe36846fca893f4cd8cefdf525 Mon Sep 17 00:00:00 2001 From: CreateSource Date: Tue, 29 Oct 2024 21:28:20 -0400 Subject: [PATCH 4/7] start m443Dll --- .gitignore | 1 + .vscode/settings.json | 10 +- config/GMPE01_00/rels/m443Dll/symbols.txt | 3 +- include/REL/m443Dll.h | 48 +++++++ src/REL/m443Dll/player.c | 161 ++++++++++++++++++++++ 5 files changed, 219 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 275db754..c8875b51 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # IDE folders .idea/ .vs/ +.vscode/ # Caches __pycache__ diff --git a/.vscode/settings.json b/.vscode/settings.json index e0b63102..3b7f3945 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,8 +13,14 @@ "files.insertFinalNewline": true, "files.trimFinalNewlines": true, "files.associations": { + "*.csv": "plaintext", + "*.s": "plaintext", + "*.json": "jsonc", + "*.c": "c", "*.inc": "c", - ".clangd": "yaml" + ".clangd": "yaml", + "m443dll.h": "c", + "object.h": "c" }, "search.useIgnoreFiles": false, "search.exclude": { @@ -27,7 +33,5 @@ "report.json": true, "compile_commands.json": true, }, - // Disable C/C++ IntelliSense, use clangd instead - "C_Cpp.intelliSenseEngine": "disabled", "cmake.ignoreCMakeListsMissing": true, } diff --git a/config/GMPE01_00/rels/m443Dll/symbols.txt b/config/GMPE01_00/rels/m443Dll/symbols.txt index 2c1f25ca..80477002 100644 --- a/config/GMPE01_00/rels/m443Dll/symbols.txt +++ b/config/GMPE01_00/rels/m443Dll/symbols.txt @@ -292,7 +292,8 @@ lbl_1_data_208 = .data:0x00000208; // type:object size:0x4 data:byte lbl_1_data_20C = .data:0x0000020C; // type:object size:0x1A scope:local data:string lbl_1_data_226 = .data:0x00000226; // type:object size:0x19 scope:local data:string lbl_1_data_240 = .data:0x00000240; // type:object size:0x14 -lbl_1_data_264 = .data:0x00000258; // type:object size:0x20 +lbl_1_data_258 = .data:0x00000258; // type:object size:0xB scope:local data:string +lbl_1_data_264 = .data:0x00000264; // type:object size:0x20 lbl_1_data_284 = .data:0x00000284; // type:object size:0x40 lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0x10 lbl_1_data_2D4 = .data:0x000002D4; // type:object size:0x50 diff --git a/include/REL/m443Dll.h b/include/REL/m443Dll.h index 72b89689..ac7b9c58 100644 --- a/include/REL/m443Dll.h +++ b/include/REL/m443Dll.h @@ -29,6 +29,54 @@ typedef struct M443DllCameraStruct { u32 unk_A0; } M443DllCameraStruct; /* size = 0xA4 */ +typedef struct M443DllWorkStruct { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + char unk10[0xC]; + s32 unk1C; + s32 unk20; + s32 unk24; + char unk28[0xC]; + s16 unk34; + char unk3A[0x12]; + f32 unk48; + f32 unk4C; + f32 unk50; + f32 unk54; + f32 unk58; + f32 unk5C; + s32 unk60; + char unk64[0x4]; + s32 unk68; + char unk6C[0x14]; + s32 unk80; + char unk84[0x4]; + f32 unk88; + char unk8C[0x4]; + f32 unk90; + char unk94[0x4]; + f32 unk98; + f32 unk9C; + f32 unkA0; + f32 unkA4; + s32 unkA8; + s32 unkAC; + s32 unkB0; + s32 unkB4; + s32 unkB8; + f32 unkBC; + f32 unkC0; + Vec unkC4; + Vec unkD0; + Vec unkDC; + Vec unkE8; + char unkF4[0xC]; + M443DllCameraStruct* unk100; + M443DllCameraStruct* unk104; +} M443DllWorkStruct; /* size = 0x134 */ + void fn_1_3FE8(u32 arg0); u32 fn_1_3FFC(void); M443DllCameraStruct *fn_1_40AC(s32 arg0); diff --git a/src/REL/m443Dll/player.c b/src/REL/m443Dll/player.c index 98e6f793..0d5fda09 100644 --- a/src/REL/m443Dll/player.c +++ b/src/REL/m443Dll/player.c @@ -14,3 +14,164 @@ #endif #include "REL/m443Dll.h" + +s32 lbl_1_bss_78[6]; +omObjData* lbl_1_bss_90[4]; + +char* lbl_1_data_264[0x8] = { + "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", + "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r" +}; + +u32 lbl_1_data_284[8][2] = { + {0x4A0005, 0x4A0006}, {0x4A0007, 0x4A0008}, + {0x4A0009, 0x4A000A}, {0x4A000B, 0x4A000C}, + {0x4A000D, 0x4A000E}, {0x4A000F, 0x4A0010}, + {0x4A0011, 0x4A0012}, {0x4A0013, 0x4A0014}, +}; + +s32 lbl_1_data_2C4[4] = { + 0, 0x4A0020, 0x17, 0x72 +}; + +s32 lbl_1_data_324[4] = { + 0x727, 0x728, 0x729, 0x72A, +}; +s32 lbl_1_data_334[4] = { + 0x72B, 0x72C, 0x72D, 0x72E, +}; + +///// +void fn_1_5680(omObjData* object); +void fn_1_5BD4(omObjData*); +void fn_1_8508(omObjData*); +f32 fn_1_8C8C(s32, f32); +///// + +void fn_1_5444(Process* arg0) { + u32 sp18[4]; + u32 sp8[4]; + omObjData* var_r28; + u32 var_r29; + s16 var_r30; + s16 var_r31; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp18[var_r31] = GWPlayerCfg[var_r31].group; + sp8[var_r31] = var_r31; + } + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + for (var_r30 = var_r31 + 1; var_r30 < 4; var_r30++) { + if (sp18[var_r31] > sp18[var_r30]) { + var_r29 = sp18[var_r31]; + sp18[var_r31] = sp18[var_r30]; + sp18[var_r30] = var_r29; + var_r29 = sp8[var_r31]; + sp8[var_r31] = sp8[var_r30]; + sp8[var_r30] = var_r29; + } + } + } + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_78[sp8[var_r31]] = (s16)var_r31; + } + omMakeGroupEx(arg0, 0, 4); + omGetGroupMemberListEx(arg0, 0); + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r28 = lbl_1_bss_90[var_r31] = omAddObjEx(arg0, 0x28, 5, 4, 0, fn_1_5680); + var_r28->work[0] = var_r31; + } +} + +void fn_1_565C(void) { + CharModelKill(-1); +} + +void fn_1_5680(omObjData* object) { + f32 spC[4] = {0.25f, 0.5f, 0.75f, 1.0f}; + s32 sp8; + f32 temp_f0; + s32 temp_r27; + s32 temp_r3; + s32 var_r29; + u32 temp_r25; + M443DllWorkStruct* temp_r31; + HsfanimStruct01* var_r28; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x134, MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + memset(temp_r31, 0, 0x134); + object->stat |= 0x100; + temp_r25 = object->work[0]; + temp_r27 = GWPlayerCfg[temp_r25].character; + temp_r31->unk0 = temp_r27; + sp8 = temp_r31->unk4 = 0; + temp_r31->unkC = lbl_1_bss_78[object->work[0]]; + temp_r31->unk5C = spC[GWPlayerCfg[temp_r25].diff & 3]; + temp_r31->unk24 = GWPlayerCfg[object->work[0]].iscom; + object->model[0] = CharModelCreate(temp_r27, 8); + Hu3DModelLayerSet(object->model[0], 4); + object->model[1] = Hu3DModelCreateFile(lbl_1_data_284[temp_r27][0]); + Hu3DModelLayerSet(object->model[1], 4); + Hu3DMotionSpeedSet(object->model[1], 0.0f); + object->model[2] = Hu3DModelCreateFile(lbl_1_data_284[temp_r27][1]); + Hu3DModelLayerSet(object->model[2], 4); + Hu3DMotionSpeedSet(object->model[2], 0.0f); + Hu3DModelAttrSet(object->model[2], 1); + + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (lbl_1_data_2C4[var_r29] < 0x10000) { + object->motion[var_r29] = CharModelMotionCreate(temp_r27, lbl_1_data_2C4[var_r29]); + } else { + object->motion[var_r29] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(temp_r27 + lbl_1_data_2C4[var_r29], 0x10000000, HEAP_DATA)); + } + } + CharModelMotionDataClose(temp_r27); + temp_r3 = Hu3DParticleCreate(HuSprAnimReadFile(0x4A001D), 0xC8); + object->model[3] = temp_r3; + Hu3DModelLayerSet(temp_r3, 4); + var_r28 = ((ParticleData*)Hu3DData[temp_r3].unk_120)->unk_48; + + for (var_r29 = 0; var_r29 < 0xC8; var_r29++, var_r28++) { + var_r28->unk2C = 0.0f; + var_r28->unk40.a = 0; + var_r28->unk00 = 0; + } + + + object->trans.x = temp_r31->unkC4.x = temp_r31->unkDC.x = (100.0f * (4.0f * object->work[0])) - 600.0f; + object->trans.y = temp_r31->unkC4.y = temp_r31->unkDC.y = 0.0f; + object->trans.z = temp_r31->unkC4.z = temp_r31->unkDC.z = 0.0f; + + temp_r31->unkD0.x = temp_r31->unkD0.y = temp_r31->unkD0.z = 0.0f; + temp_r31->unkE8.x = temp_r31->unkE8.y = temp_r31->unkE8.z = 0.0f; + temp_r31->unk48 = temp_r31->unk4C = 0.0f; + temp_r31->unk50 = 0.0f; + temp_r31->unk54 = 0.02f; + temp_r31->unk58 = 180.0f; + temp_r31->unkC0 = 50.0f; + temp_r31->unkBC = 350.0f; + temp_r31->unk8 = -1; + temp_r31->unk1C = 1; + temp_r31->unk20 = 0; + temp_r31->unk9C = 1.0f; + temp_r31->unk98 = 0.0f; + temp_r31->unkA0 = 0.0f; + temp_r31->unkA4 = 0.0f; + temp_r31->unk88 = 1000.0f; + temp_r31->unk90 = fn_1_8C8C(temp_r31->unk80, temp_r31->unk88); + temp_r31->unkA8 = temp_r31->unkAC = -1; + temp_r31->unkB0 = temp_r31->unkB4 = temp_r31->unkB8 = -1; + temp_r31->unkB4 = HuAudFXPlay(lbl_1_data_334[object->work[0]]); + temp_r31->unk68 = -1; + temp_r31->unk60 = 0; + temp_r31->unk100 = fn_1_4148(object->work[0] + 1); + temp_r31->unk104 = fn_1_41B0(object->work[0] + 1); + temp_r31->unk100->unk_00 = 0; + fn_1_8508(object); + temp_r31->unk34 = 0; + object->func = fn_1_5BD4; +} From 7289b7aaeda187573fd5ab73da65cad556a4bfad Mon Sep 17 00:00:00 2001 From: CreateSource Date: Thu, 31 Oct 2024 13:19:45 -0400 Subject: [PATCH 5/7] continued player.c --- .vscode/settings.json | 2 + include/REL/m443Dll.h | 58 +---- src/REL/m443Dll/main.c | 4 +- src/REL/m443Dll/player.c | 500 ++++++++++++++++++++++++++++++++++++++- 4 files changed, 500 insertions(+), 64 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 3b7f3945..b4546cc9 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -34,4 +34,6 @@ "compile_commands.json": true, }, "cmake.ignoreCMakeListsMissing": true, + "editor.fontFamily": "Fira Code", + "editor.fontLigatures": true } diff --git a/include/REL/m443Dll.h b/include/REL/m443Dll.h index ac7b9c58..ba09dc8a 100644 --- a/include/REL/m443Dll.h +++ b/include/REL/m443Dll.h @@ -21,7 +21,11 @@ typedef struct M443DllCameraStruct { float unk_48; float unk_4C; float unk_50; - char unk54[0x24]; + Vec unk_54; + char unk_60[0xC]; + float unk_6C; + float unk_70; + char unk74[0x4]; float unk_78; float unk_7C; float unk_80; @@ -29,63 +33,15 @@ typedef struct M443DllCameraStruct { u32 unk_A0; } M443DllCameraStruct; /* size = 0xA4 */ -typedef struct M443DllWorkStruct { - s32 unk0; - s32 unk4; - s32 unk8; - s32 unkC; - char unk10[0xC]; - s32 unk1C; - s32 unk20; - s32 unk24; - char unk28[0xC]; - s16 unk34; - char unk3A[0x12]; - f32 unk48; - f32 unk4C; - f32 unk50; - f32 unk54; - f32 unk58; - f32 unk5C; - s32 unk60; - char unk64[0x4]; - s32 unk68; - char unk6C[0x14]; - s32 unk80; - char unk84[0x4]; - f32 unk88; - char unk8C[0x4]; - f32 unk90; - char unk94[0x4]; - f32 unk98; - f32 unk9C; - f32 unkA0; - f32 unkA4; - s32 unkA8; - s32 unkAC; - s32 unkB0; - s32 unkB4; - s32 unkB8; - f32 unkBC; - f32 unkC0; - Vec unkC4; - Vec unkD0; - Vec unkDC; - Vec unkE8; - char unkF4[0xC]; - M443DllCameraStruct* unk100; - M443DllCameraStruct* unk104; -} M443DllWorkStruct; /* size = 0x134 */ - void fn_1_3FE8(u32 arg0); u32 fn_1_3FFC(void); M443DllCameraStruct *fn_1_40AC(s32 arg0); M443DllCameraStruct *fn_1_4148(u32 arg0); M443DllCameraStruct *fn_1_41B0(u32 arg0); void fn_1_421C(s32 arg0, s32 arg1); -s32 fn_1_42CC(void); +u32 fn_1_42CC(void); u32 fn_1_42E4(void); -s32 fn_1_42FC(void); +u32 fn_1_42FC(void); void fn_1_4314(s32 arg0, float arg8); s32 fn_1_4368(s32 arg0); void fn_1_43AC(s32 arg0); diff --git a/src/REL/m443Dll/main.c b/src/REL/m443Dll/main.c index 9c939016..f949fe1f 100644 --- a/src/REL/m443Dll/main.c +++ b/src/REL/m443Dll/main.c @@ -1040,7 +1040,7 @@ s32 fn_1_42B4(void) return ((M443DllWork *)lbl_1_bss_70->data)->unk_00; } -s32 fn_1_42CC(void) +u32 fn_1_42CC(void) { return ((M443DllWork *)lbl_1_bss_70->data)->unk_0C; } @@ -1050,7 +1050,7 @@ u32 fn_1_42E4(void) return ((M443DllWork *)lbl_1_bss_70->data)->unk_14; } -s32 fn_1_42FC(void) +u32 fn_1_42FC(void) { return ((M443DllWork *)lbl_1_bss_70->data)->unk_28; } diff --git a/src/REL/m443Dll/player.c b/src/REL/m443Dll/player.c index 0d5fda09..2ccd186f 100644 --- a/src/REL/m443Dll/player.c +++ b/src/REL/m443Dll/player.c @@ -10,11 +10,84 @@ #ifndef __MWERKS__ #include "game/esprite.h" -#include "game/frand.h" #endif #include "REL/m443Dll.h" +typedef struct M443DllWorkStruct { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + f32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + char unk28[0xC]; + u16 unk34; + s32 unk38; + char unk3C[0x4]; + s16 unk40; + f32 unk44; + f32 unk48; + f32 unk4C; + f32 unk50; + f32 unk54; + f32 unk58; + f32 unk5C; + s32 unk60; + f32 unk64; + u32 unk68; + f32 unk6C; + f32 unk70; + u32 unk74; + f32 unk78; + f32 unk7C; + s32 unk80; + char unk84[0x4]; + f32 unk88; + char unk8C[0x4]; + f32 unk90; + char unk94[0x4]; + f32 unk98; + f32 unk9C; + f32 unkA0; + f32 unkA4; + s32 unkA8; + s32 unkAC; + s32 unkB0; + s32 unkB4; + s32 unkB8; + f32 unkBC; + f32 unkC0; + Vec unkC4; + Vec unkD0; + Vec unkDC; + Vec unkE8; + char unkF4[0xC]; + M443DllCameraStruct* unk100; + M443DllCameraStruct* unk104; + s32 unk108; + char unk10C[0x28]; +} M443DllWorkStruct; /* size = 0x134 */ + +void fn_1_5680(omObjData* object); +void fn_1_5BD4(omObjData* object); +void fn_1_6458(omObjData* object); +void fn_1_6674(omObjData* object); +void fn_1_6750(omObjData* object); +void fn_1_69B4(omObjData* object); +void fn_1_6DA8(omObjData* object); +void fn_1_7130(omObjData* object); +void fn_1_7340(omObjData* object); +void fn_1_8138(omObjData*, s32); +s32 fn_1_82C4(omObjData* object); +void fn_1_8508(omObjData*); +f32 fn_1_8C8C(s32, f32); +void fn_1_95A4(u32); + s32 lbl_1_bss_78[6]; omObjData* lbl_1_bss_90[4]; @@ -22,15 +95,13 @@ char* lbl_1_data_264[0x8] = { "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r" }; - u32 lbl_1_data_284[8][2] = { {0x4A0005, 0x4A0006}, {0x4A0007, 0x4A0008}, {0x4A0009, 0x4A000A}, {0x4A000B, 0x4A000C}, {0x4A000D, 0x4A000E}, {0x4A000F, 0x4A0010}, {0x4A0011, 0x4A0012}, {0x4A0013, 0x4A0014}, }; - -s32 lbl_1_data_2C4[4] = { +u32 lbl_1_data_2C4[4] = { 0, 0x4A0020, 0x17, 0x72 }; @@ -40,13 +111,30 @@ s32 lbl_1_data_324[4] = { s32 lbl_1_data_334[4] = { 0x72B, 0x72C, 0x72D, 0x72E, }; - -///// -void fn_1_5680(omObjData* object); -void fn_1_5BD4(omObjData*); -void fn_1_8508(omObjData*); -f32 fn_1_8C8C(s32, f32); -///// +s32 lbl_1_data_344[4] = { + 0x72F, 0x730, 0x731, 0x732, +}; +s32 lbl_1_data_354[4] = { + 0x736, 0x737, 0x738, 0x739, +}; +Vec lbl_1_data_364[4] = { + { 0.0f, 180.0f, 500.0f }, + { -150.0f, 110.0f, 500.0f }, + { 170.0f, 80.0f, 500.0f }, + { 350.0f, 0.0f, 500.0f } +}; +Vec lbl_1_data_394[4] = { + { -225.0f, 0.0f, 1000.0f }, + { -75.0f, 0.0f, 1000.0f }, + { 75.0f, 0.0f, 1000.0f }, + { 225.0f, 0.0f, 1000.0f } +}; +Vec lbl_1_data_3C4[4] = { + { 250.0f, 0.0f, -1000.0f }, + { -350.0f, 0.0f, -1700.0f }, + { 450.0f, 0.0f, -2200.0f }, + { 0.0f, 0.0f, -3000.0f } +}; void fn_1_5444(Process* arg0) { u32 sp18[4]; @@ -175,3 +263,393 @@ void fn_1_5680(omObjData* object) { temp_r31->unk34 = 0; object->func = fn_1_5BD4; } + +void fn_1_5BD4(omObjData* object) { + Vec sp8; + f32 var_f29; + f32 var_f30; + f32 var_f31; + M443DllWorkStruct* temp_r31; + + temp_r31 = object->data; + temp_r31->unk10 = 0; + temp_r31->unk14 = 0; + temp_r31->unk18 = 0.0f; + if (temp_r31->unk108 != 0) { + if (temp_r31->unk24 != 0) { + fn_1_6DA8(object); + } else { + temp_r31->unk14 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; + temp_r31->unk10 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; + var_f29 = HuPadTrigR[GWPlayerCfg[object->work[0]].pad_idx]; + if (var_f29 > 140.0f) { + var_f29 = 140.0f; + } + temp_r31->unk18 = (1.0f / 140.0f) * var_f29; + } + } + switch (temp_r31->unk34) { + case 0: + temp_r31->unk100->unk_1C = temp_r31->unkDC; + temp_r31->unk100->unk_54.y = 150.0f; + temp_r31->unk100->unk_1C.y += temp_r31->unk100->unk_54.y; + temp_r31->unk100->unk_28.x = -30.0f; + temp_r31->unk100->unk_28.y = 90.0f; + temp_r31->unk100->unk_34 = 500.0f; + temp_r31->unk100->unk_6C = -20.0f - frandmod(10); + temp_r31->unk100->unk_70 = 160.0f + frandmod(0x28); + temp_r31->unk100->unk_78 = temp_r31->unk100->unk_44; + temp_r31->unk100->unk_7C = temp_r31->unk100->unk_48; + temp_r31->unk100->unk_80 = temp_r31->unk100->unk_40; + if ((temp_r31->unk40 < 120.0f) && ((temp_r31->unk40 % 60) > 10)) { + temp_r31->unk18 = 1.0f; + } + if (fn_1_3FFC() == 2) { + temp_r31->unk34++; + temp_r31->unk40 = 0; + temp_r31->unkB0 = HuAudFXPlay(lbl_1_data_324[object->work[0]]); + } + break; + case 1: + temp_r31->unk100->unk_00 = 1; + var_f31 = (5.0f / 600.0f) * temp_r31->unk40; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + var_f30 = 2.0f * (var_f31 - 0.5f); + if (var_f30 < 0.0f) { + var_f30 = 0.0f; + } + var_f30 = var_f30 * var_f30; + sp8.x = 320.0 + (160.0 * (var_f31 * cos(M_PI * ((450.0f * var_f31) + (90.0f * object->work[0])) / 180.0))); + sp8.y = 240.0 + (120.0 * (var_f31 * sin(M_PI * ((450.0f * var_f31) + (90.0f * object->work[0])) / 180.0))); + temp_r31->unk100->unk_44 = sp8.x + (var_f30 * (temp_r31->unk100->unk_78 - sp8.x)); + temp_r31->unk100->unk_48 = sp8.y + (var_f30 * (temp_r31->unk100->unk_7C - sp8.y)); + temp_r31->unk100->unk_40 = 0.01f + ((temp_r31->unk100->unk_80 - 0.01f) * var_f31); + temp_r31->unk100->unk_28.y = 90.0f + ((temp_r31->unk100->unk_70 - 90.0f) * var_f31); + temp_r31->unk100->unk_34 = 500.0f + (-200.0f * var_f30); + if (var_f31 >= 1.0f) { + temp_r31->unk108 = 1; + if (temp_r31->unk40 >= 150.0f) { + fn_1_3FE8(4); + temp_r31->unk34++; + temp_r31->unk40 = 0; + } + } + break; + case 2: + var_f31 = (5.0f / 600.0f) * temp_r31->unk40; + if (var_f31 > 0.2f) { + var_f31 = 0.2f; + } + temp_r31->unk100->unk_28.x = fn_1_488C(temp_r31->unk100->unk_28.x, -12.0f, var_f31); + temp_r31->unk100->unk_28.y = fn_1_488C(temp_r31->unk100->unk_28.y, 0.0f, var_f31); + temp_r31->unk100->unk_34 += ((1000.0f - temp_r31->unk100->unk_34) * (0.5f * var_f31)); + break; + } + fn_1_7340(object); + PSVECAdd(&temp_r31->unkC4, &temp_r31->unkD0, &temp_r31->unkC4); + fn_1_7130(object); + fn_1_69B4(object); + + if (fn_1_42CC() == 2) { + temp_r31->unk100->unk_1C = temp_r31->unkDC; + temp_r31->unk100->unk_1C.y += 150.0f; + temp_r31->unk100->unk_54.y = 150.0f; + temp_r31->unk100->unk_28.x = -12.0f; + temp_r31->unk100->unk_28.y = 0.0f; + temp_r31->unk100->unk_34 = 1000.0f; + temp_r31->unk34 = 0; + object->func = &fn_1_6458; + } +} + +void fn_1_6458(omObjData* object) { + f32 var_f31; + s32 var_r29; + M443DllWorkStruct* temp_r31; + void* temp_r4; + + temp_r31 = object->data; + var_r29 = 0; + temp_r31->unk10 = 0; + temp_r31->unk14 = 0; + temp_r31->unk18 = 0.0f; + if (temp_r31->unk24 != 0) { + fn_1_6DA8(object); + } else { + temp_r31->unk14 = HuPadBtn[GWPlayerCfg[object->work[0]].pad_idx]; + temp_r31->unk10 = HuPadBtnDown[GWPlayerCfg[object->work[0]].pad_idx]; + var_f31 = HuPadTrigR[GWPlayerCfg[object->work[0]].pad_idx]; + if (var_f31 > 140.0f) { + var_f31 = 140.0f; + } + temp_r31->unk18 = (1.0f / 140.0f) * var_f31; + } + switch (temp_r31->unk34) { + case 0: + fn_1_8138(object, 1); + var_r29 = 1; + } + fn_1_7340(object); + PSVECAdd(&temp_r31->unkC4, &temp_r31->unkD0, &temp_r31->unkC4); + fn_1_7130(object); + fn_1_69B4(object); + temp_r31->unk100->unk_1C = temp_r31->unkDC; + PSVECAdd(&temp_r31->unk100->unk_1C, &temp_r31->unk100->unk_54, &temp_r31->unk100->unk_1C); + if ((fn_1_42E4() == 3) && (var_r29 != 0)) { + fn_1_43AC(object->work[0]); + temp_r31->unk108 = 0; + temp_r31->unk34 = 0; + object->func = fn_1_6674; + } +} + +void fn_1_6674(omObjData* object) { + M443DllWorkStruct* temp_r31; + void* temp_r4; + + temp_r31 = object->data; + temp_r31->unk10 = 0; + temp_r31->unk14 = 0; + temp_r31->unk18 = 0.0f; + fn_1_7340(object); + PSVECAdd(&temp_r31->unkC4, &temp_r31->unkD0, &temp_r31->unkC4); + fn_1_7130(object); + fn_1_69B4(object); + temp_r31->unk100->unk_1C = temp_r31->unkDC; + PSVECAdd(&temp_r31->unk100->unk_1C, &temp_r31->unk100->unk_54, &temp_r31->unk100->unk_1C); + if (fn_1_42E4() == 5) { + temp_r31->unk1C = 0; + temp_r31->unk34 = 0; + object->func = fn_1_6750; + } +} + +void fn_1_6750(omObjData* object) { + M443DllWorkStruct* temp_r31; + + temp_r31 = object->data; + PSVECAdd(&temp_r31->unkC4, &temp_r31->unkD0, &temp_r31->unkC4); + fn_1_7130(object); + fn_1_69B4(object); + switch (temp_r31->unk34) { + case 0: + Hu3DModelAttrSet(object->model[2], 1); + Hu3DModelAttrSet(object->model[3], 1); + fn_1_95A4(object->work[0]); + Hu3DModelShadowSet(object->model[0]); + temp_r31->unk8 = -1; + fn_1_8138(object, 0); + if (fn_1_4368(object->work[0]) >= 0) { + temp_r31->unkC4 = lbl_1_data_364[fn_1_4368(object->work[0])]; + temp_r31->unkDC = lbl_1_data_3C4[fn_1_4368(object->work[0])]; + temp_r31->unk58 = 30.0f; + } else { + Hu3DModelAttrSet(object->model[1], 1); + temp_r31->unkC4 = lbl_1_data_394[object->work[0]]; + } + temp_r31->unk34++; + break; + case 1: + temp_r31->unk4C = 0.0f; + temp_r31->unk50 = 0.15f; + temp_r31->unk54 = 0.0f; + temp_r31->unkD0.x = temp_r31->unkD0.y = temp_r31->unkD0.z = 0.0f; + fn_1_43AC(object->work[0]); + temp_r31->unk34++; + break; + case 2: + if (fn_1_42FC() == 1) { + if (fn_1_4368(object->work[0]) == 0) { + fn_1_8138(object, 2); + } else { + fn_1_8138(object, 3); + } + temp_r31->unk34++; + } + break; + case 3: + if (fn_1_82C4(object) != 0) { + fn_1_43DC(object->work[0]); + temp_r31->unk34++; + } + break; + } +} + +void fn_1_69B4(omObjData* object) { + M443DllWorkStruct* temp_r31; + + temp_r31 = object->data; + temp_r31->unk40++; + temp_r31->unk38++; + object->trans.x = temp_r31->unkC4.x; + object->trans.y = temp_r31->unkC4.y; + object->trans.z = temp_r31->unkC4.z; + temp_r31->unk50 += temp_r31->unk54; + if (temp_r31->unk50 > 0.45f) { + temp_r31->unk50 = 0.45f; + } + temp_r31->unk48 = fn_1_488C(temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + object->rot.y = temp_r31->unk48; + if (temp_r31->unk1C != 0) { + if (temp_r31->unk20 == 0) { + Hu3DModelHookSet(object->model[1], "hook", object->model[0]); + } + + temp_r31->unkDC.z = temp_r31->unkC4.z= -(temp_r31->unk78 - temp_r31->unkBC); + fn_1_8138(object, 1); + } else { + if (temp_r31->unk20 != 0) { + Hu3DModelHookReset(object->model[1]); + } + Hu3DModelPosSetV(object->model[0], &temp_r31->unkC4); + Hu3DModelRotSet(object->model[0], 0.0f, temp_r31->unk48, 0.0f); + } + temp_r31->unk20 = temp_r31->unk1C; + Hu3DModelPosSetV(object->model[1], &temp_r31->unkDC); + Hu3DModelRotSet(object->model[1], 0.0f, temp_r31->unk58, 0.0f); + Hu3DModelPosSetV(object->model[2], &temp_r31->unkDC); + Hu3DModelRotSet(object->model[2], 0.0f, temp_r31->unk58, 0.0f); +} + +void fn_1_6B90(omObjData* object) { + M443DllWorkStruct* temp_r29; + M443DllWorkStruct* temp_r27 = object->data; + s32 sp28[4][4] = { + { 0, 1, 2, 3 }, + { 1, 0, 1, 2 }, + { 2, 1, 0, 1 }, + { 3, 2, 1, 0 }, + }; + f32 sp18[4] = { + 0.0f, -700.0f, 600.0f, 1200.0f + }; + s32 sp14; + s32 sp10; + s32 spC; + s32 sp8[4] = { 2, 4, 8, 16 }; + f32 var_f31; + s32 var_r28; + u32 var_r30; + + var_r28 = sp8[object->work[0]] | 1; + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r30 != object->work[0]) { + temp_r29 = lbl_1_bss_90[var_r30]->data; + var_f31 = temp_r29->unk78; + if (temp_r29->unk74 != temp_r27->unk74) { + var_f31 += 1.6666667f * temp_r29->unk7C; + } + var_f31 = temp_r27->unk78 - var_f31; + if (var_f31 > sp18[sp28[object->work[0]][var_r30]]) { + var_r28 |= sp8[var_r30]; + } + } + } + fn_1_421C(object->model[0], var_r28); + fn_1_421C(object->model[1], var_r28); + fn_1_421C(object->model[2], var_r28); + fn_1_421C(object->model[3], var_r28); +} + +void fn_1_6DA8(omObjData* object) { + f32 var_f31; + M443DllWorkStruct* temp_r31; + + temp_r31 = object->data; + switch (temp_r31->unk60) { + case 0: + var_f31 = 1.25f - temp_r31->unk5C; + var_f31 *= 0.6f + (0.00040000002f * frandmod(0x3E8)); + if (frandmod(0x3E8) < 0x1F4) { + var_f31 *= -1.0f; + } + temp_r31->unk64 = (3000.0f + (2000.0f * var_f31)); + temp_r31->unk60++; + /* fallthrough */ + case 1: + if (temp_r31->unk88 < temp_r31->unk64) { + temp_r31->unk18 = 1.0f; + } + if (temp_r31->unkA0 >= 1.0f) { + temp_r31->unk60 = (s32) (temp_r31->unk60 + 1); + } + break; + case 2: + temp_r31->unk18 = 1.0f; + if (temp_r31->unk80 != temp_r31->unk68) { + temp_r31->unk6C = temp_r31->unk70 = 0.0f; + if (frandmod(0x3E8) < 0x1F4) { + var_f31 = 1.2f - temp_r31->unk5C; + var_f31 *= (0.5f + 0.0005f * frandmod(0x3E8)); + temp_r31->unk6C = 8000.0f - 1500.0f * var_f31; + } else { + var_f31 = 1.2f - temp_r31->unk5C; + var_f31 *= (0.5f + 0.0005f * frandmod(0x3E8)); + temp_r31->unk70 = 0.016666668f + var_f31; + } + } + temp_r31->unk68 = temp_r31->unk80; + if (temp_r31->unk6C > 0.0f) { + if (temp_r31->unk88 > temp_r31->unk6C) { + temp_r31->unk10 = (s32) (temp_r31->unk10 | 0x100); + temp_r31->unk6C = 0.0f; + break; + } + } else if (temp_r31->unk70 > 0.0f) { + if (temp_r31->unk88 >= 8000.0f) { + temp_r31->unk70 = (temp_r31->unk70 - 0.016666668f); + if (temp_r31->unk70 <= 0.0f) { + temp_r31->unk10 = (s32) (temp_r31->unk10 | 0x100); + temp_r31->unk70 = 0.0f; + } + } + } + break; + } +} + +void fn_1_7130(omObjData* object) { + Vec sp8; + f32 var_f31; + s32 var_r27; + s32 var_r29; + s32 var_r28; + M443DllWorkStruct* temp_r30; + M443DllWorkStruct* temp_r31; + + + for (var_r27 = 0; var_r27 < 2; var_r27++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + temp_r31 = lbl_1_bss_90[var_r29]->data; + + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (var_r29 != var_r28) { + temp_r30 = lbl_1_bss_90[var_r28]->data; + PSVECSubtract(&temp_r31->unkC4, &temp_r30->unkC4, &sp8); + sp8.y = 0.0f; + var_f31 = PSVECMag(&sp8); + if (var_f31 < (temp_r31->unkC0 + temp_r30->unkC0)) { + if (var_f31 > 0.0f) { + var_f31 = 0.5f * ((temp_r31->unkC0 + temp_r30->unkC0) - var_f31); + } else { + var_f31 = 0.5f * (temp_r31->unkC0 + temp_r30->unkC0); + sp8.x = (frandmod(0x3E8) - 0x1F4); + sp8.z = (frandmod(0x3E8) - 0x1F4); + } + PSVECNormalize(&sp8, &sp8); + PSVECScale(&sp8, &sp8, var_f31); + PSVECAdd(&temp_r31->unkC4, &sp8, &temp_r31->unkC4); + PSVECSubtract(&temp_r30->unkC4, &sp8, &temp_r30->unkC4); + } + } + } + if (temp_r31->unkC4.y < 0.0f) { + temp_r31->unkC4.y = 0.0f; + } + } + } +} From 3eb6855600a3135a8240b5b955696d9255a5c44a Mon Sep 17 00:00:00 2001 From: CreateSource Date: Fri, 1 Nov 2024 21:54:27 -0400 Subject: [PATCH 6/7] Complete m443/player.c --- config/GMPE01_00/rels/m443Dll/symbols.txt | 8 +- configure.py | 2 +- src/REL/m443Dll/player.c | 554 +++++++++++++++++++++- 3 files changed, 551 insertions(+), 13 deletions(-) diff --git a/config/GMPE01_00/rels/m443Dll/symbols.txt b/config/GMPE01_00/rels/m443Dll/symbols.txt index 80477002..66c15dad 100644 --- a/config/GMPE01_00/rels/m443Dll/symbols.txt +++ b/config/GMPE01_00/rels/m443Dll/symbols.txt @@ -304,10 +304,10 @@ lbl_1_data_354 = .data:0x00000354; // type:object size:0x10 lbl_1_data_364 = .data:0x00000364; // type:object size:0x30 lbl_1_data_394 = .data:0x00000394; // type:object size:0x30 lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x30 -lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x5 data:string -lbl_1_data_3F9 = .data:0x000003F9; // type:object size:0x7 data:string -lbl_1_data_400 = .data:0x00000400; // type:object size:0x7 data:string -lbl_1_data_407 = .data:0x00000407; // type:object size:0x9 +lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x5 scope:local data:string +lbl_1_data_3F9 = .data:0x000003F9; // type:object size:0x7 scope:local data:string +lbl_1_data_400 = .data:0x00000400; // type:object size:0x7 scope:local data:string +lbl_1_data_407 = .data:0x00000407; // type:object size:0x9 scope:local data:string lbl_1_data_410 = .data:0x00000410; // type:object size:0x58 lbl_1_data_468 = .data:0x00000468; // type:object size:0x20 lbl_1_data_488 = .data:0x00000488; // type:object size:0x58 diff --git a/configure.py b/configure.py index 0e09d5e4..4b8c9979 100644 --- a/configure.py +++ b/configure.py @@ -1145,7 +1145,7 @@ config.libs = [ objects={ Object(Matching, "REL/m443Dll/main.c"), Object(Matching, "REL/m443Dll/map.c"), - Object(NonMatching, "REL/m443Dll/player.c"), + Object(Matching, "REL/m443Dll/player.c"), }, ), Rel( diff --git a/src/REL/m443Dll/player.c b/src/REL/m443Dll/player.c index 2ccd186f..a251d1bd 100644 --- a/src/REL/m443Dll/player.c +++ b/src/REL/m443Dll/player.c @@ -14,12 +14,20 @@ #include "REL/m443Dll.h" +typedef struct M443DllUnkStruct { + s32 unk0; + s32 unk4; + s32 unk8; + Vec2f unkC; + s16 unk14[11]; +} M443DllUnkStruct; + typedef struct M443DllWorkStruct { s32 unk0; s32 unk4; s32 unk8; s32 unkC; - s32 unk10; + u32 unk10; s32 unk14; f32 unk18; s32 unk1C; @@ -45,12 +53,12 @@ typedef struct M443DllWorkStruct { u32 unk74; f32 unk78; f32 unk7C; - s32 unk80; - char unk84[0x4]; + u32 unk80; + u32 unk84; f32 unk88; char unk8C[0x4]; f32 unk90; - char unk94[0x4]; + f32 unk94; f32 unk98; f32 unk9C; f32 unkA0; @@ -69,27 +77,48 @@ typedef struct M443DllWorkStruct { char unkF4[0xC]; M443DllCameraStruct* unk100; M443DllCameraStruct* unk104; - s32 unk108; - char unk10C[0x28]; + union { + M443DllUnkStruct unk108s; + struct { + s32 unk108; + s32 unk10C; + }; + }; } M443DllWorkStruct; /* size = 0x134 */ +typedef struct M443DllStruct8 { + u16 unk0; + f32 unk4; + f32 unk8; + f32 unkC; + u32 unk10; +} M443DllStruct8; // copy of UnkM417Struct8 + void fn_1_5680(omObjData* object); void fn_1_5BD4(omObjData* object); void fn_1_6458(omObjData* object); void fn_1_6674(omObjData* object); void fn_1_6750(omObjData* object); void fn_1_69B4(omObjData* object); +void fn_1_6B90(omObjData* object); void fn_1_6DA8(omObjData* object); void fn_1_7130(omObjData* object); void fn_1_7340(omObjData* object); -void fn_1_8138(omObjData*, s32); +void fn_1_8138(omObjData*, u32); s32 fn_1_82C4(omObjData* object); void fn_1_8508(omObjData*); +void fn_1_8680(omObjData* object); +f32 fn_1_8AC8(u32, f32); +f32 fn_1_8C68(f32); f32 fn_1_8C8C(s32, f32); +f32 fn_1_8D00(u32, f32); +f32 fn_1_8D74(f32); +void fn_1_8E34(s32); +void fn_1_8FFC(u32, Vec*, f32, f32); void fn_1_95A4(u32); -s32 lbl_1_bss_78[6]; omObjData* lbl_1_bss_90[4]; +s32 lbl_1_bss_78[6]; char* lbl_1_data_264[0x8] = { "itemhook-r", "itemhook-r", "itemhook-r", "itemhook-r", @@ -105,6 +134,13 @@ u32 lbl_1_data_2C4[4] = { 0, 0x4A0020, 0x17, 0x72 }; +M443DllStruct8 lbl_1_data_2D4[4] = { + { 0x0, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 0x1, 0.2f, 0.0f, -1.0f, 0x40000001 }, + { 0x2, 0.2f, 0.0f, -1.0f, 0x0 }, + { 0x3, 0.2f, 0.0f, -1.0f, 0x0 } +}; + s32 lbl_1_data_324[4] = { 0x727, 0x728, 0x729, 0x72A, }; @@ -653,3 +689,505 @@ void fn_1_7130(omObjData* object) { } } } + +void fn_1_7340(omObjData* object) { + M443DllWorkStruct* temp_r31 = object->data; + HsfObject* var_r29; + f32 sp28[8] = { + 0.0f, 40.0f, 0.0f, 0.0f, + -16.0f, 40.0f, -16.0f, 0.0f + }; + f32 var_f31; + f32 var_f29; + u32 temp_r24; + + temp_r24 = temp_r31->unk80; + if (temp_r31->unk88 > 3300.0f) { + if (fn_1_42E4() == 2) { + temp_r31->unk10C = 0; + if (temp_r31->unk84 == 0) { + if ((temp_r31->unk10 & 0x100) != 0) { + if (temp_r31->unk80 < 3) { + temp_r31->unk80++; + temp_r31->unk84 = 30; + } + } else { + if (temp_r31->unk88 >= 8000.0f) { + temp_r31->unk10C = 1; + } + } + } else { + temp_r31->unk84--; + } + } + } else if ((temp_r31->unk88 < 1500.0f) && (temp_r31->unk80 != 0)) { + temp_r31->unk80--; + temp_r31->unk84 = 30; + } + if (temp_r31->unk80 != temp_r24) { + temp_r31->unk88 = fn_1_8D00(temp_r31->unk80, temp_r31->unk90); + omVibrate(object->work[0], 0xC, 4, 2); + } + var_f31 = (1.5f * temp_r31->unk18) - 0.5f; + if (var_f31 < -0.4f) { + var_f31 = -1.0f; + } + var_f29 = 0.75f; + if ((var_f31 > -0.5f) && (temp_r31->unkA0 < 1.0f)) { + var_f29 += 0.25f * (1.0f - temp_r31->unkA0); + } + var_f31 = var_f31 * fn_1_8AC8(temp_r31->unk80, temp_r31->unk88); + var_f31 -= temp_r31->unkA0 * fn_1_8D74(fn_1_8C8C(temp_r31->unk80, temp_r31->unk88)); + var_f31 = var_f29 * fn_1_8C68(var_f31); + temp_r31->unk90 += 0.016666668f * var_f31; + temp_r31->unk7C += temp_r31->unkA0 * (temp_r31->unk90 - temp_r31->unk7C); + var_f31 = temp_r31->unk90 + temp_r31->unkA0 * (temp_r31->unk7C - temp_r31->unk90); + temp_r31->unk88 = fn_1_8D00(temp_r31->unk80, var_f31); + if (fn_1_42E4() <= 2) { + if (fn_1_42E4() == 2) { + if (temp_r31->unk18 <= 0.0f) { + temp_r31->unk90 *= 0.98f; + } + } + if ((temp_r31->unk88 > 8000.0f) && ((temp_r31->unk40 & 0xF) == 0)) { + omVibrate(object->work[0], 0xC, 6, 6); + } + } + if (temp_r31->unk88 > 9500.0f) { + temp_r31->unk88 = 9000.0f; + temp_r31->unk90 = fn_1_8C8C(temp_r31->unk80, temp_r31->unk88); + } else if (temp_r31->unk88 < 1000.0f) { + temp_r31->unk88 = 1000.0f; + temp_r31->unk90 = fn_1_8C8C(temp_r31->unk80, temp_r31->unk88); + } + temp_r31->unk94 = (0.31206876f * temp_r31->unk90); + if (temp_r31->unkA0 < 1.0f) { + var_f31 = temp_r31->unk90 - temp_r31->unk7C; + if (var_f31 > 2.0f) { + var_f31 = 1.0f - (0.02f * var_f31); + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + var_f31 = (1.0f - var_f31 * var_f31); + temp_r31->unkA0 += (1.0f / 3000.0f) * (1.0f - 1.5f * var_f31); + if (temp_r31->unkA0 > 0.9f) { + temp_r31->unkA0 = 1.0f; + } + if (temp_r31->unkA0 < 0.0001f) { + temp_r31->unkA0 = 0.0001f; + } + } else { + temp_r31->unkA0 = 1.0f; + } + } + temp_r31->unk78 += 1.6666667f * temp_r31->unk7C; + if (fn_1_42E4() < 2) { + temp_r31->unk7C = 0.0f; + temp_r31->unk78 = 0.0f; + temp_r31->unkA0 = 0.0f; + } + if (temp_r31->unk78 >= 40000.0f) { + if (temp_r31->unk7C >= 30.0f) { + Hu3DMotionSpeedSet(object->model[2], 1.0f); + Hu3DModelAttrReset(object->model[2], 1U); + if (fn_1_42E4() == 2) { + HuAudFXPlay(0x733); + } + } + } + fn_1_8680(object); + temp_r31->unk74 = 1 - temp_r31->unk74; + var_f31 = 22.5f * (temp_r31->unk40 & 0xF); + var_r29 = Hu3DModelObjPtrGet(object->model[2], "ballon"); + var_r29->data.base.rot.z = var_f31; + var_r29 = Hu3DModelObjPtrGet(object->model[1], "r_tire"); + if ((temp_r31->unk7C <= 0.0f) && (temp_r31->unk94 < 1.5f)) { + temp_r31->unk94 = 0.0f; + } + var_r29->data.base.rot.x += 6.0000005f * temp_r31->unk94; + var_r29->data.base.rot.x = fmod(var_r29->data.base.rot.x, 360.0); + var_r29 = Hu3DModelObjPtrGet(object->model[1], "f_tire"); + var_r29->data.base.rot.x += 6.0000005f * (0.003978877f * (100.0f * temp_r31->unk7C)); + var_r29->data.base.rot.x = fmod(var_r29->data.base.rot.x, 360.0); + var_f31 = 0.110999994f * temp_r31->unk94; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + Hu3DMotionTimeSet(object->model[1], 30.0f * var_f31); + fn_1_4314(object->work[0], temp_r31->unk78); + fn_1_6B90(object); + if (temp_r31->unkA0 < 1.0f) { + var_f31 = (320.4422f * temp_r31->unk94) - (100.0f * temp_r31->unk7C); + if (var_f31 > 0.0f) { + var_f31 *= 0.0002f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + fn_1_8FFC(object->work[0], &temp_r31->unkDC, var_f31, 100.0f * temp_r31->unk7C); + } + } + fn_1_8E34(object->model[3]); + if (temp_r31->unkB4 >= 0) { + HuAudFXPitchSet(temp_r31->unkB4, (8191.0f * (0.0001f * temp_r31->unk88))); + if (fn_1_42E4() >= 5) { + HuAudFXFadeOut(temp_r31->unkB4, 0x3C); + temp_r31->unkB4 = -1; + } + } + if (fn_1_42E4() < 2) { + if (temp_r31->unkA8 < 0) { + temp_r31->unkA8 = HuAudFXPlay(lbl_1_data_344[object->work[0]]); + } + if (temp_r31->unkA8 >= 0) { + var_f31 = fn_1_8C8C(temp_r31->unk80, 10000.0f); + var_f31 = (1.0f / (0.31206876f * var_f31)); + HuAudFXPitchSet(temp_r31->unkA8, (8191.0f * (temp_r31->unk94 * var_f31))); + var_f31 = 127.0f; + if (temp_r31->unk94 < 0.1f) { + var_f31 = 0.0f; + } + HuAudFXVolSet(temp_r31->unkA8, var_f31); + } + } else if (fn_1_42E4() <= 2) { + if (temp_r31->unkA8 < 0) { + temp_r31->unkA8 = HuAudFXPlay(lbl_1_data_344[object->work[0]]); + } + if (temp_r31->unkA8 >= 0) { + HuAudFXPitchSet(temp_r31->unkA8, (8191.0f * (0.0001f * temp_r31->unk88) * (1.0f - temp_r31->unkA0))); + var_f31 = 127.0f; + if (temp_r31->unkA0 >= 1.0f) { + var_f31 = 0.0f; + } + HuAudFXVolSet(temp_r31->unkA8, var_f31); + } + } else if (temp_r31->unkA8 >= 0) { + HuAudFXStop(temp_r31->unkA8); + temp_r31->unkA8 = -1; + } + if ((fn_1_42E4() >= 1) && (temp_r31->unkB0 >= 0)) { + HuAudFXFadeOut(temp_r31->unkB0, 30); + temp_r31->unkB0 = -1; + } + if ((fn_1_42E4() == 2) && (temp_r31->unkB8 < 0)) { + temp_r31->unkB8 = HuAudFXPlay(lbl_1_data_354[object->work[0]]); + } + if (temp_r31->unkB8 >= 0) { + var_f31 = 0.012048192f * temp_r31->unk7C; + HuAudFXPitchSet(temp_r31->unkB8, ((2.0f * (8191.0f * var_f31)) - 8191.0f)); + HuAudFXVolSet(temp_r31->unkB8, (127.0f * var_f31)); + if (fn_1_42E4() >= 5U) { + HuAudFXFadeOut(temp_r31->unkB8, 0x3C); + temp_r31->unkB8 = -1; + } + } +} + +void fn_1_8138(omObjData* object, u32 arg1) { // near replica of fn_1_B8A0 of m417Dll + f32 var_f31; + M443DllWorkStruct* temp_r30; + + temp_r30 = object->data; + if ((temp_r30->unk8 != arg1) && (arg1 < 4)) { + var_f31 = 60.0f * lbl_1_data_2D4[arg1].unk4; + if (temp_r30->unk8 < 0) { + var_f31 = 0.0f; + } + temp_r30->unk8 = arg1; + CharModelMotionShiftSet(temp_r30->unk0, object->motion[lbl_1_data_2D4[arg1].unk0], 60.0f * lbl_1_data_2D4[arg1].unk8, var_f31, lbl_1_data_2D4[arg1].unk10); + if (lbl_1_data_2D4[arg1].unkC >= 0.0f) { + Hu3DMotionShiftStartEndSet(object->model[0], 60.0f * lbl_1_data_2D4[arg1].unk8, 60.0f * lbl_1_data_2D4[arg1].unkC); + } + } +} + +s32 fn_1_82C4(omObjData* object) { + s32 var_r30; + M443DllWorkStruct* temp_r31; + + temp_r31 = object->data; + var_r30 = 0; + if ((CharModelMotionEndCheck(temp_r31->unk0) != 0) && (CharModelMotionShiftIDGet(temp_r31->unk0) < 0)) { + var_r30 = 1; + } + return var_r30; +} + +s32 fn_1_8338(omObjData* object, u32 arg1) { + s32 var_r27; + s32 var_r26; + M443DllWorkStruct* temp_r31; + + var_r27 = 0; + temp_r31 = object->data; + var_r26 = 0; + if ((CharModelMotionEndCheck(temp_r31->unk0) != 0) && (CharModelMotionShiftIDGet(temp_r31->unk0) < 0)) { + var_r26 = 1; + } + + if (var_r26 != 0) { + fn_1_8138(object, arg1); + var_r27 = 1; + } + return var_r27; +} + +u32 lbl_1_data_410[11][2] = { + { 0x4A0015, 0xFA }, + { 0x4A0016, 0xF0 }, + { 0x4A0017, 0xE6 }, + { 0x4A0018, 0xF0 }, + { 0x4A0019, 0xF0 }, + { 0x4A001A, 0xF0 }, + { 0x4A001B, 0xF0 }, + { 0x61002E, 0xF0 }, + { 0x61002E, 0xF0 }, + { 0x61002E, 0xF0 }, + { 0x4A001C, 0xF0 }, +}; + +Vec2f lbl_1_data_468[4] = { + { 64.0f, 54.0f }, + { 46.0f, 54.0f }, + { 64.0f, 44.0f }, + { 46.0f, 44.0f }, +}; + +void fn_1_8508(omObjData* object) { + s32 var_r30; + M443DllWorkStruct* temp_r28; + M443DllUnkStruct* temp_r31; + f32* temp_r4; + + temp_r28 = object->data; + temp_r31 = &temp_r28->unk108s; + + for (var_r30 = 0; var_r30 < 11; var_r30++) { + temp_r31->unk14[var_r30] = -1; + if (lbl_1_data_410[var_r30][0] != 0) { + temp_r31->unk14[var_r30] = espEntry(lbl_1_data_410[var_r30][0], lbl_1_data_410[var_r30][1], 0); + espAttrSet(temp_r31->unk14[var_r30], 8); + espDispOff(temp_r31->unk14[var_r30]); + } + } + espColorSet(temp_r31->unk14[0], 0, 0, 0); + espTPLvlSet(temp_r31->unk14[0], 0.5); + espScaleSet(temp_r31->unk14[1], 0.75, 0.75); + espScaleSet(temp_r31->unk14[2], 0.75, 0.75); + temp_r31->unkC = lbl_1_data_468[object->work[0]]; +} + +f32 lbl_1_data_488[][2] = { + { 20.0f, 4.0f }, + { 18.0f, 6.0f }, + { 46.0f, 33.0f }, + { 72.0f, 32.0f }, + { 72.0f, 14.0f }, + { 72.0f, -4.0f }, + { 72.0f, -22.0f }, + { -140.0f, 32.0f }, + { -158.0f, 32.0f }, + { -176.0f, 32.0f }, + { -96.0f, 32.0f }, +}; + +void fn_1_8680(omObjData* object) { + f32 var_f31; + s32 var_r27; + s32 var_r30; + u32 var_r28; + M443DllWorkStruct* temp_r29; + M443DllUnkStruct* temp_r31; + + temp_r29 = object->data; + temp_r31 = &temp_r29->unk108s; + temp_r31->unk8++; + + for (var_r30 = 0; var_r30 < 11; var_r30++) { + if (temp_r31->unk14[var_r30] >= 0) { + if (temp_r31->unk0 == 0) { + espDispOff(temp_r31->unk14[var_r30]); + } else { + espDispOn(temp_r31->unk14[var_r30]); + espPosSet( + temp_r31->unk14[var_r30], + 0.9f * (temp_r29->unk104->unk_44 + temp_r31->unkC.x + lbl_1_data_488[var_r30][0]), + temp_r29->unk104->unk_48 + temp_r31->unkC.y + lbl_1_data_488[var_r30][1] + ); + } + } + } + var_f31 = 0.0f; + if (temp_r29->unk88 > 8000.0f) { + var_f31 = (0.004f * frandmod(0x3E8)) - 2.0f; + } + espZRotSet(temp_r31->unk14[2], (90.0f * (0.0001f * temp_r29->unk88)) + var_f31); + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r27 = 0; + if (temp_r29->unk80 == var_r30) { + var_r27 = 2; + } else if (((temp_r29->unk80 + 1) == var_r30) && (temp_r31->unk4 != 0)) { + var_r27 += (temp_r31->unk8 >> 1) & 1; + } + espBankSet(temp_r31->unk14[var_r30 + 3], var_r27); + } + var_r28 = (3.6f * temp_r29->unk7C); + var_r30 = var_r28 % 10; + espBankSet(temp_r31->unk14[7], var_r30); + var_r28 = (var_r28 - var_r30) / 10; + var_r30 = var_r28 % 10; + espBankSet(temp_r31->unk14[8], var_r30); + var_r28 = (var_r28 - var_r30) / 10; + var_r30 = var_r28 % 10; + espBankSet(temp_r31->unk14[9], var_r30); +} + +f32 lbl_1_data_4E0[4] = { + 18.5f, 9.25f, 6.66f, 5.55f +}; + +f32 fn_1_8958(u32 arg0) { + if (arg0 >= 4) { + if (arg0 >= 4) { + } + } + return lbl_1_data_4E0[arg0]; +} + +f32 fn_1_8990(f32 arg8) { + f32 var_f30; + f32 var_f31; + + var_f30 = 0.8f * (0.00016666666f * (6000.0f - arg8)); + var_f30 = 0.6f * (1.0f - (var_f30 * var_f30)); + var_f31 = 0.000400000002f * (6500.0f - arg8); + var_f31 = 0.4f * (1.0f - (var_f31 * var_f31)); + if (var_f31 > 0.0f) { + var_f30 += var_f31; + } + var_f31 = arg8 - 8000.0f; + if (var_f31 > 0.0f) { + var_f31 = 1.0f - (0.00033333333f * var_f31); + var_f30 = var_f31 * (var_f30 * var_f31); + } + return 55.0f * var_f30; +} + +f32 fn_1_8AC8(u32 arg0, f32 arg1) { + return 1.7647059f * (fn_1_8990(arg1) * fn_1_8958(arg0)); +} + +f32 fn_1_8C68(f32 arg0) { + return 9.8f * (0.0012820513f * arg0); +} + +f32 fn_1_8C8C(s32 arg0, f32 arg1) { + return 3.204422f * ((0.016666668f * arg1) / fn_1_8958(arg0)); +} + +f32 fn_1_8D00(u32 arg0, f32 arg1) { + return 0.31206876f * (60.0f * arg1) * fn_1_8958(arg0); +} + +f32 fn_1_8D74(f32 arg0) { + return 0.024899999f * (arg0 * arg0); +} + +f32 fn_1_8D8C(u32 arg0, f32 arg8) { + return arg8 / fn_1_8958(arg0); +} +f32 fn_1_8DE0(u32 arg0, f32 arg8) { + return arg8 * fn_1_8958(arg0); +} + +void fn_1_8E34(s32 arg0) { + s32 var_r29; + ParticleData* temp_r30; + HsfanimStruct01* var_r31; + + temp_r30 = Hu3DData[arg0].unk_120; + var_r31 = temp_r30->unk_48; + + for (var_r29 = 0; var_r29 < temp_r30->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00_s16 != 0) { + PSVECAdd(&var_r31->unk34, &var_r31->unk08, &var_r31->unk34); + var_r31->unk08.z -= 0.3f; + var_r31->unk2C += 2.0f; + var_r31->unk40.a *= 0.98f; + if (var_r31->unk00_s16 < 24.0f) { + var_r31->unk40.a = var_r31->unk40.a * 0.9f; + } + if (--var_r31->unk00_s16 == 0) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } + } + } + DCStoreRange(temp_r30->unk_48, temp_r30->unk_30 * 0x44); +} + +static inline f32 isEven(u32 arg) { + if ((arg & 1) != 0) { + return 1.0f; + } else { + return -1.0f; + } +} + +void fn_1_8FFC(u32 arg0, Point3d* arg1, f32 arg2, f32 arg3) { + f32 temp_f31; + f32 var_f29; + ParticleData* temp_r29; + s32 var_r28; + u32 var_r27; + HsfanimStruct01* var_r31; + + temp_r29 = Hu3DData[lbl_1_bss_90[arg0]->model[3]].unk_120; + if (frandmod(0x3E8) > 1000.0f * arg2) return; + + var_r27 = 2; + var_r31 = temp_r29->unk_48; + + for (var_r28 = 0; var_r28 < temp_r29->unk_30; var_r28++, var_r31++) { + if (var_r31->unk00_s16 != 0) continue; + + var_r31->unk00_s16 = (60.0f * (0.6f + (0.0005f * frandmod(0x3E8)))); + var_f29 = isEven(var_r27); + temp_f31 = 0.030000001f * frandmod(0x3E8); + var_r31->unk34.x = arg1->x + var_f29 * (70.0f + (0.07f * frandmod(0x3E8))); + var_r31->unk34.y = 10.0f + (arg1->y + (0.02f * frandmod(0x3E8))); + var_r31->unk34.z = (250.0f + arg1->z); + temp_f31 = 0.8333334f + 0.0016666667f * frandmod(0x3E8); + temp_f31 *= 1.0f + arg2; + var_r31->unk08.x = (0.0025f * frandmod(0x3E8) - 1.25f); + var_r31->unk08.y = (3.3333335f + 0.0016666667f * frandmod(0x3E8)); + var_r31->unk08.z = ((4.166667f + (0.0016666667f * frandmod(0x3E8))) - (0.016666668f * (0.5f * arg3))); + var_r31->unk30 = frandmod(0x168); + temp_f31 = 0.001f * frandmod(0x3E8); + var_r31->unk2C = (50.0f + (100.0f * temp_f31)); + var_r31->unk40.a = (70.0f + (80.0f * (1.0f - temp_f31))); + var_r31->unk40.r = (50.0f + (145.0f * temp_f31)); + var_r31->unk40.g = (55.0f + (140.0f * temp_f31)); + var_r31->unk40.b = (70.0f + (125.0f * temp_f31)); + if (--var_r27 < 1) break; + } +} + +void fn_1_95A4(u32 arg0) { + s32 var_r29; + ParticleData* temp_r30; + HsfanimStruct01* var_r31; + + temp_r30 = Hu3DData[lbl_1_bss_90[arg0]->model[3]].unk_120; + var_r31 = temp_r30->unk_48; + + for (var_r29 = 0; var_r29 < temp_r30->unk_30; var_r29++, var_r31++) { + var_r31->unk00 = 0; + var_r31->unk2C = 0.0f; + var_r31->unk40.a = 0; + } +} From 12c93762c9c6f6f1daa7c462f4dddee4fc4b687c Mon Sep 17 00:00:00 2001 From: CreateSource Date: Fri, 1 Nov 2024 21:57:05 -0400 Subject: [PATCH 7/7] fix symbol processing in m641Dll --- config/GMPE01_00/rels/m461Dll/symbols.txt | 174 +++++++++++----------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/config/GMPE01_00/rels/m461Dll/symbols.txt b/config/GMPE01_00/rels/m461Dll/symbols.txt index 04ac5e69..27492436 100644 --- a/config/GMPE01_00/rels/m461Dll/symbols.txt +++ b/config/GMPE01_00/rels/m461Dll/symbols.txt @@ -74,90 +74,90 @@ ObjectSetup = .text:0x0000CBB0; // type:function size:0xB5C fn_1_D70C = .text:0x0000D70C; // type:function size:0xD0 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 lbl_1_data_10 = .data:0x00000010; // type:object size:0x20 lbl_1_data_30 = .data:0x00000030; // type:object size:0x28 lbl_1_data_58 = .data:0x00000058; // type:object size:0x28 -lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F data:string +lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F scope:local data:string lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xC data:4byte lbl_1_data_AC = .data:0x000000AC; // type:object size:0xC lbl_1_data_B8 = .data:0x000000B8; // type:object size:0xC data:4byte @@ -179,14 +179,14 @@ lbl_1_data_240 = .data:0x00000240; // type:object size:0x24 lbl_1_data_264 = .data:0x00000264; // type:object size:0xC data:4byte lbl_1_data_270 = .data:0x00000270; // type:object size:0x80 lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x30 -lbl_1_data_320 = .data:0x00000320; // type:object size:0x23 data:string -lbl_1_data_343 = .data:0x00000343; // type:object size:0x9 data:string -lbl_1_data_34C = .data:0x0000034C; // type:object size:0x6 data:string -lbl_1_data_352 = .data:0x00000352; // type:object size:0x1D data:string -lbl_1_data_36F = .data:0x0000036F; // type:object size:0x1D data:string -lbl_1_data_38C = .data:0x0000038C; // type:object size:0x1B data:string +lbl_1_data_320 = .data:0x00000320; // type:object size:0x23 scope:local data:string +lbl_1_data_343 = .data:0x00000343; // type:object size:0x9 scope:local data:string +lbl_1_data_34C = .data:0x0000034C; // type:object size:0x6 scope:local data:string +lbl_1_data_352 = .data:0x00000352; // type:object size:0x1D scope:local data:string +lbl_1_data_36F = .data:0x0000036F; // type:object size:0x1D scope:local data:string +lbl_1_data_38C = .data:0x0000038C; // type:object size:0x1B scope:local data:string jumptable_1_data_3A8 = .data:0x000003A8; // type:object size:0x20 scope:local -lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x24 data:string +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float