From 3e8fbfa719c74b3ce627240aab73fd4cc85ed7d5 Mon Sep 17 00:00:00 2001 From: kabiskac Date: Wed, 26 Jun 2024 04:11:28 +0200 Subject: [PATCH] staffDll.h refactor and fixes --- config/GMPE01_00/rels/staffDll/symbols.txt | 6 +- include/REL/staffDll.h | 15 -- src/REL/staffDll/main.c | 180 +++++++++++---------- 3 files changed, 99 insertions(+), 102 deletions(-) delete mode 100644 include/REL/staffDll.h diff --git a/config/GMPE01_00/rels/staffDll/symbols.txt b/config/GMPE01_00/rels/staffDll/symbols.txt index ad21899f..f614cc9d 100644 --- a/config/GMPE01_00/rels/staffDll/symbols.txt +++ b/config/GMPE01_00/rels/staffDll/symbols.txt @@ -9,10 +9,8 @@ ShowPicture = .text:0x00000BCC; // type:function size:0x1C4 scope:local MainProc = .text:0x00000D90; // type:function size:0x500 scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_0 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float -lbl_1_rodata_4 = .rodata:0x00000004; // type:object size:0x4 scope:local data:float -lbl_1_rodata_8 = .rodata:0x00000008; // type:object size:0x4 scope:local data:float -lbl_1_rodata_C = .rodata:0x0000000C; // type:object size:0x4 scope:local data:float +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float diff --git a/include/REL/staffDll.h b/include/REL/staffDll.h deleted file mode 100644 index 21e81970..00000000 --- a/include/REL/staffDll.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef STAFFDLL_H -#define STAFFDLL_H - -#include "dolphin/types.h" - -typedef struct UnkStaffDllStruct { - /* 0x00 */ u32 unk_00; - /* 0x04 */ s32 unk_04; - /* 0x08 */ float unk_08; - /* 0x0C */ u32 unk_0C; - /* 0x10 */ s32 unk_10; - /* 0x14 */ s32 unk_14; -} UnkStaffDllStruct; - -#endif diff --git a/src/REL/staffDll/main.c b/src/REL/staffDll/main.c index 13bd4fad..a1ddf7e0 100644 --- a/src/REL/staffDll/main.c +++ b/src/REL/staffDll/main.c @@ -9,9 +9,17 @@ #include "game/window.h" #include "game/wipe.h" -#include "REL/staffDll.h" #include "rel_sqrt_consts.h" +typedef struct StaffData { + /* 0x00 */ u32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ u32 unk_0C; + /* 0x10 */ s32 logoGroupIdx; + /* 0x14 */ s32 unk_14; +} StaffData; + static s16 imgGroup[26]; static s16 staffLogoGroup[3]; static s16 thpGroup; @@ -20,7 +28,7 @@ static s32 staffSide; static s32 currImg; static omObjData *multiViewObj; -static UnkStaffDllStruct staffData[] = { +static StaffData staffData[] = { { 0x00340001, 0, 0.0f, 0, 0, 0 }, { 0x00350000, 2, 0.0f, 0, 0, 0 }, { -3, 0, 72.0f, 0, 0, 0 }, @@ -207,6 +215,7 @@ static UnkStaffDllStruct staffData[] = { { -2, 0, 0.0f, 0, 0, 0 }, { -1, 0, 0.0f, 0, 0, 0 }, }; + static float staffLogoPosTbl[] = { 460.0f, 293.0f, 293.0f }; static void MainProc(void); @@ -215,17 +224,16 @@ static void ShowPicture(void); void ModuleProlog(void) { - Process *var_r31; - s32 var_lr; + Process *process; - var_r31 = omInitObjMan(0x32, 0x2000); - omGameSysInit(var_r31); + process = omInitObjMan(0x32, 0x2000); + omGameSysInit(process); HuWinInit(1); Hu3DCameraCreate(1); Hu3DCameraPerspectiveSet(1, 20.0f, 20.0f, 10000.0f, 1.2f); Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); Hu3DCameraScissorSet(1, 0, 0, 640, 480); - multiViewObj = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutViewMulti); + multiViewObj = omAddObjEx(process, 0x7FDA, 0, 0, -1, omOutViewMulti); multiViewObj->work[0] = 1; CRotM[0].x = -35.0f; CRotM[0].y = 0.0f; @@ -282,14 +290,15 @@ static void CreateStaff(void) currImg = 0; for (var_r31 = 0; var_r31 < 26; var_r31++) { - var_r29 = HuDataSelHeapReadNum(var_r31 + 0x730000, MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_STAFF, var_r31), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r28 = HuSprAnimRead(var_r29); var_r30 = HuSprCreate(var_r28, 16386, 0); imgGroup[var_r31] = HuSprGrpCreate(1); HuSprGrpMemberSet(imgGroup[var_r31], 0, var_r30); if (staffSide != 0) { HuSprGrpPosSet(imgGroup[var_r31], 380.0f, 240.0f); - } else { + } + else { HuSprGrpPosSet(imgGroup[var_r31], 200.0f, 240.0f); } HuSprAttrSet(imgGroup[var_r31], 0, HUSPR_ATTR_DISPOFF); @@ -325,66 +334,65 @@ static void CreateStaff(void) static void MoveStaff(void) { float sp8[2]; - Process *temp_ret; float var_f30; float var_f31; s16 var_r30; u32 var_r29; - UnkStaffDllStruct *var_r31; + StaffData *var_r31; var_r31 = HuPrcCurrentGet()->user_data; var_r31->unk_14 = 0; switch (var_r31->unk_00) { - case -2: - HuSprAttrReset(staffLogoGroup[var_r31->unk_10], 0, HUSPR_ATTR_DISPOFF); - var_f31 = staffLogoPosTbl[var_r31->unk_10]; - var_f30 = 576.0f; - break; - default: - HuWinMesMaxSizeGet(1, sp8, var_r31->unk_00); - var_r29 = 0; - switch (var_r31->unk_04) { - case 3: - var_f31 = 320.0f - (0.75f * sp8[0]) / 2; - break; - case 0: - var_f31 = 10.0f; - if (!staffSide) { - var_f31 += 240.0f; - } - break; - case 1: - var_f31 = 30.0f; - if (!staffSide) { - var_f31 += 240.0f; - } - break; - case 2: - var_f31 = 550.0f - (0.75f * sp8[0]); - if (staffSide) { - var_f31 -= 240.0f; - } - var_r29 = 0x1000; - break; - } - var_f30 = 476.0f; - var_r30 = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 1); - HuWinAttrSet(var_r30, var_r29); - HuWinPriSet(var_r30, 256); - HuWinBGTPLvlSet(var_r30, 0.0f); - HuWinMesSpeedSet(var_r30, 0); - HuWinMesSet(var_r30, var_r31->unk_00); - HuWinScaleSet(var_r30, 0.75f, 0.75f); - switch (var_r31->unk_04) { - case 0: - case 1: - HuWinMesPalSet(var_r30, 7, 96, 240, 255); - break; - default: - HuWinMesPalSet(var_r30, 7, 255, 255, 255); - break; - } - break; + case -2: + HuSprAttrReset(staffLogoGroup[var_r31->logoGroupIdx], 0, HUSPR_ATTR_DISPOFF); + var_f31 = staffLogoPosTbl[var_r31->logoGroupIdx]; + var_f30 = 576.0f; + break; + default: + HuWinMesMaxSizeGet(1, sp8, var_r31->unk_00); + var_r29 = 0; + switch (var_r31->unk_04) { + case 3: + var_f31 = 320.0f - (0.75f * sp8[0]) / 2; + break; + case 0: + var_f31 = 10.0f; + if (staffSide == 0) { + var_f31 += 240.0f; + } + break; + case 1: + var_f31 = 30.0f; + if (staffSide == 0) { + var_f31 += 240.0f; + } + break; + case 2: + var_f31 = 550.0f - (0.75f * sp8[0]); + if (staffSide != 0) { + var_f31 -= 240.0f; + } + var_r29 = 0x1000; + break; + } + var_f30 = 476.0f; + var_r30 = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 1); + HuWinAttrSet(var_r30, var_r29); + HuWinPriSet(var_r30, 256); + HuWinBGTPLvlSet(var_r30, 0.0f); + HuWinMesSpeedSet(var_r30, 0); + HuWinMesSet(var_r30, var_r31->unk_00); + HuWinScaleSet(var_r30, 0.75f, 0.75f); + switch (var_r31->unk_04) { + case 0: + case 1: + HuWinMesPalSet(var_r30, 7, 96, 240, 255); + break; + default: + HuWinMesPalSet(var_r30, 7, 255, 255, 255); + break; + } + break; } while (TRUE) { var_f30 -= 0.4f; @@ -392,20 +400,23 @@ static void MoveStaff(void) if (var_f30 < -114.0f) { break; } - } else if (var_f30 < -24.0f) { + } + else if (var_f30 < -24.0f) { break; } if (var_r31->unk_00 == -2) { - HuSprGrpPosSet(staffLogoGroup[var_r31->unk_10], var_f31, var_f30); - } else { + HuSprGrpPosSet(staffLogoGroup[var_r31->logoGroupIdx], var_f31, var_f30); + } + else { HuWinPosSet(var_r30, var_f31, var_f30); } HuPrcVSleep(); } var_r31->unk_14 = 1; if (var_r31->unk_00 == -2) { - HuSprAttrSet(staffLogoGroup[var_r31->unk_10], 0, HUSPR_ATTR_DISPOFF); - } else { + HuSprAttrSet(staffLogoGroup[var_r31->logoGroupIdx], 0, HUSPR_ATTR_DISPOFF); + } + else { HuWinKill(var_r30); } HuPrcVSleep(); @@ -423,7 +434,8 @@ static void HidePicture(void) currImg++; if (staffSide != 0) { HuSprGrpPosSet(imgGroup[currImg], 380.0f, 240.0f); - } else { + } + else { HuSprGrpPosSet(imgGroup[currImg], 200.0f, 240.0f); } HuSprAttrSet(imgGroup[prevImg], 0, HUSPR_ATTR_DISPOFF); @@ -452,7 +464,8 @@ static void ShowPicture(void) while (TRUE) { if (currImg >= 24) { HuPrcSleep(430); - } else { + } + else { HuPrcSleep(550); } if (currImg >= 25) { @@ -476,7 +489,7 @@ static void ShowPicture(void) static void MainProc(void) { s32 var_r31; - UnkStaffDllStruct *var_r30; + StaffData *var_r30; s32 var_r29; Process *var_r28; s32 var_r27; @@ -494,20 +507,21 @@ static void MainProc(void) } switch (var_r30->unk_00) { - case -3: - HuPrcSleep(var_r30->unk_08 / 0.4f); - break; - default: - var_r28 = HuPrcChildCreate(MoveStaff, 0x1000, 0x2000, 0, HuPrcCurrentGet()); - var_r28->user_data = var_r30; - if (var_r30->unk_0C == 1) { - staffSide++; - staffSide &= 1; - HuPrcChildCreate(HidePicture, 0x1000, 0x2000, 0, HuPrcCurrentGet()); - } else { - HuPrcSleep(60); - } - break; + case -3: + HuPrcSleep(var_r30->unk_08 / 0.4f); + break; + default: + var_r28 = HuPrcChildCreate(MoveStaff, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + var_r28->user_data = var_r30; + if (var_r30->unk_0C == 1) { + staffSide++; + staffSide &= 1; + HuPrcChildCreate(HidePicture, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + } + else { + HuPrcSleep(60); + } + break; } } var_r30 = &staffData[var_r31 - 1];