From aa65939684b984d0465c0e43aae9f1d54ac68ab1 Mon Sep 17 00:00:00 2001 From: Rainchus Date: Fri, 5 Apr 2024 12:39:00 -0500 Subject: [PATCH] match m407/score.c --- config/GMPE01_00/rels/m407dll/symbols.txt | 22 +-- configure.py | 8 +- src/REL/m407dll/score.c | 188 ++++++++++++++++++++++ 3 files changed, 203 insertions(+), 15 deletions(-) create mode 100644 src/REL/m407dll/score.c diff --git a/config/GMPE01_00/rels/m407dll/symbols.txt b/config/GMPE01_00/rels/m407dll/symbols.txt index edfc4c98..f78e0ce5 100644 --- a/config/GMPE01_00/rels/m407dll/symbols.txt +++ b/config/GMPE01_00/rels/m407dll/symbols.txt @@ -197,17 +197,17 @@ lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data: lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC scope:local data:4byte lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC scope:local data:4byte lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size: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:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x100 lbl_1_data_100 = .data:0x00000100; // type:object size:0x20 lbl_1_data_120 = .data:0x00000120; // type:object size:0x19 data:string diff --git a/configure.py b/configure.py index 2c998e93..f8ebc4dc 100644 --- a/configure.py +++ b/configure.py @@ -841,7 +841,7 @@ config.libs = [ Object(Matching, "REL/m407dll/whomp_score.c"), Object(Matching, "REL/m407dll/effect.c"), Object(Matching, "REL/m407dll/main.c"), - Object(NonMatching, "REL/m407dll/score.c"), + Object(Matching, "REL/m407dll/score.c"), } ), Rel('m408Dll', @@ -1055,7 +1055,7 @@ config.libs = [ Object(Matching, "REL/executor.c"), Object(NonMatching, "REL/resultDll/main.c"), Object(NonMatching, "REL/resultDll/battle.c"), - Object(Matching, "REL/resultDll/datalist.c"), + Object(NonMatching, "REL/resultDll/datalist.c"), } ), Rel('safDll', @@ -1141,8 +1141,8 @@ config.libs = [ Object(Matching, "REL/w06Dll/main.c"), Object(Matching, "REL/w06Dll/mg_item.c"), Object(Matching, "REL/w06Dll/mg_coin.c"), - Object(Matching, "REL/w06Dll/fire.c"), - Object(Matching, "REL/w06Dll/bridge.c"), + Object(NonMatching, "REL/w06Dll/fire.c"), + Object(NonMatching, "REL/w06Dll/bridge.c"), Object(NonMatching, "REL/w06Dll/bowser.c"), } ), diff --git a/src/REL/m407dll/score.c b/src/REL/m407dll/score.c new file mode 100644 index 00000000..5d0ebd84 --- /dev/null +++ b/src/REL/m407dll/score.c @@ -0,0 +1,188 @@ +#include "game/process.h" +#include "game/object.h" +#include "game/esprite.h" + +typedef struct unkDominationData6 { +/* 0x00 */ s32 unk_00; +/* 0x04 */ s32 unk_04; +/* 0x08 */ s16 unk_08; +/* 0x0A */ s16 unk_0A; +/* 0x0C */ s16 unk_0C[8]; //what size is this?? +/* 0x1C */ s32 unk_1C; +/* 0x20 */ f32 unk_20; +} unkDominationData6; //sizeof 0x24 + +//func signatures +void fn_1_61A0(void); +void fn_1_6218(void); +void fn_1_62A0(void); +void fn_1_5FE4(omObjData* arg0); +void fn_1_5FB4(s32 arg0); +s16 fn_1_28D4(void); + +//bss +Process* lbl_1_bss_398C; +omObjData* lbl_1_bss_3988; + +//data +typedef void (*ObjFuncs)(void); + +ObjFuncs lbl_1_data_360[] = { + fn_1_61A0, + fn_1_6218, + fn_1_62A0 +}; + +void fn_1_5C5C(Process* arg0, s16 arg1) { + unkDominationData6* temp_r31; + u32 i; + + lbl_1_bss_398C = arg0; + lbl_1_bss_3988 = omAddObjEx(lbl_1_bss_398C, 0x800, 0U, 0U, 7, fn_1_5FE4); + lbl_1_bss_3988->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x24, 0x10000000U); + temp_r31 = lbl_1_bss_3988->data; + temp_r31->unk_08 = arg1; + temp_r31->unk_0A = 0; + temp_r31->unk_0C[6] = espEntry(0x260025, 2, 0); + espTPLvlSet(temp_r31->unk_0C[6], 0.5f); + espPosSet(temp_r31->unk_0C[6], 508.0f, 64.0f); + temp_r31->unk_0C[7] = espEntry(0x260022, 1, 0); + espPosSet(temp_r31->unk_0C[7], 480.0f, 56.0f); + + for (i = 0; i < 3; i++) { + temp_r31->unk_0C[i] = espEntry(0x26001F, 0, 0); + espPosSet(temp_r31->unk_0C[i], i * 16 + 0x1F4, 56.0f); + espDispOff(temp_r31->unk_0C[i]); + } + + for (i = 0; i < 3; i++) { + temp_r31->unk_0C[i+3] = espEntry(0x260020, 1, 0); + espPosSet(temp_r31->unk_0C[i+3], i * 16 + 0x1F4, 74.0f); + } + + for (i = 0; i < 8; i++) { + espDispOff(temp_r31->unk_0C[i]); + } + + fn_1_5FB4(0); +} + +void fn_1_5ECC(void) { + s32 i; + unkDominationData6* temp_r30; + + temp_r30 = lbl_1_bss_3988->data; + for (i = 0; i < 7; i++) { + espKill(temp_r30->unk_0C[i]); + } + + HuMemDirectFree(lbl_1_bss_3988->data); +} + +void fn_1_5F40(s32 arg0) { + switch (arg0) { + case 0: + fn_1_5FB4(1); + break; + case 1: + fn_1_5FB4(2); + break; + } +} + +void fn_1_5F90(void) { + fn_1_5FB4(0); +} + +//this function is an inline for other TUs, but not this one +void fn_1_5FB4(s32 arg0) { + unkDominationData6* temp_r31; + + temp_r31 = lbl_1_bss_3988->data; + temp_r31->unk_00 = arg0; + temp_r31->unk_04 = 0; +} + +void fn_1_5FE4(omObjData* arg0) { + s16 temp_r31; + unkDominationData6* temp_r30; + + temp_r30 = lbl_1_bss_3988->data; + lbl_1_data_360[temp_r30->unk_00](); + temp_r31 = temp_r30->unk_08; + espBankSet(temp_r30->unk_0C[0], temp_r31 / 100); + temp_r31 = (temp_r31 - ((temp_r31 / 100) * 100)); + espBankSet(temp_r30->unk_0C[1], (temp_r31 / 10)); + temp_r31 = (temp_r31 - ((temp_r31 / 10) * 10)); + espBankSet(temp_r30->unk_0C[2], temp_r31); + temp_r31 = temp_r30->unk_0A; + espBankSet(temp_r30->unk_0C[3], (temp_r31 / 100)); + temp_r31 = (temp_r31 - ((temp_r31 / 100) * 100)); + espBankSet(temp_r30->unk_0C[4], (temp_r31 / 10)); + temp_r31 = (temp_r31 - ((temp_r31 / 10) * 10)); + espBankSet(temp_r30->unk_0C[5], temp_r31); +} + +void fn_1_61A0(void) { + s32 i; + unkDominationData6* temp_r31; + + temp_r31 = lbl_1_bss_3988->data; + + if (temp_r31->unk_04 == 0) { + for (i = 0; i < 8; i++) { + espDispOff(temp_r31->unk_0C[i]); + } + temp_r31->unk_04++; + } +} + +void fn_1_6218(void) { + s16 i; + unkDominationData6* temp_r31; + + temp_r31 = lbl_1_bss_3988->data; + + if (temp_r31->unk_04 == 0) { + for (i = 0; i < 8; i++) { + espDispOn(temp_r31->unk_0C[i]); + } + temp_r31->unk_04++; + } + + temp_r31->unk_0A = fn_1_28D4(); +} + +void fn_1_62A0(void) { + s32 i; + unkDominationData6* temp_r31; + + temp_r31 = lbl_1_bss_3988->data; + + if (temp_r31->unk_04 == 0) { + temp_r31->unk_1C = 0; + temp_r31->unk_20 = 1.0f; + if (temp_r31->unk_0A > temp_r31->unk_08) { + temp_r31->unk_08 = temp_r31->unk_0A; + } + temp_r31->unk_04++; + } + + if (temp_r31->unk_1C == 0) { + if ((temp_r31->unk_20 += 0.02f) >= 1.2f) { + temp_r31->unk_20 = 1.2f; + temp_r31->unk_1C = 1; + } + } else { + if ((temp_r31->unk_20 -= 0.04f) <= 1.0f) { + temp_r31->unk_20 = 1.0f; + temp_r31->unk_1C = 0; + } + } + + for (i = 0; i <= 2; i++) { + espScaleSet(temp_r31->unk_0C[i], temp_r31->unk_20, temp_r31->unk_20); + } + + espScaleSet(temp_r31->unk_0C[7], temp_r31->unk_20, temp_r31->unk_20); +}