From 512abb2d123c64cf6f5582f296e830cdd2293456 Mon Sep 17 00:00:00 2001 From: kabiskac Date: Tue, 30 Apr 2024 22:27:13 +0200 Subject: [PATCH] Fixed things up in e3setup/main.c --- config/GMPE01_00/rels/E3setupDLL/symbols.txt | 2 +- include/REL/E3SetupDLL.h | 85 +- src/REL/E3setupDLL/mgselect.c | 788 +++++++++---------- 3 files changed, 424 insertions(+), 451 deletions(-) diff --git a/config/GMPE01_00/rels/E3setupDLL/symbols.txt b/config/GMPE01_00/rels/E3setupDLL/symbols.txt index 85cff679..aabb4f0e 100644 --- a/config/GMPE01_00/rels/E3setupDLL/symbols.txt +++ b/config/GMPE01_00/rels/E3setupDLL/symbols.txt @@ -42,7 +42,7 @@ InitCamera = .text:0x000056A8; // type:function size:0x7C scope:local UpdateCamera = .text:0x00005724; // type:function size:0x12C scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_2_rodata_0 = .rodata:0x00000000; // type:object size:0xA +lbl_2_rodata_0 = .rodata:0x00000000; // type:object size:0x10 lbl_2_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float lbl_2_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float lbl_2_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float diff --git a/include/REL/E3SetupDLL.h b/include/REL/E3SetupDLL.h index 651af661..a873ccf2 100644 --- a/include/REL/E3SetupDLL.h +++ b/include/REL/E3SetupDLL.h @@ -13,70 +13,43 @@ typedef struct e3pad { } E3Pad; typedef struct mgInterface { - /* 0x00 */ AnimData *unk00[2]; - /* 0x08 */ s32 pad; - /* 0x0C */ s32 pad2; - /* 0x10 */ s32 pad3; - /* 0x14 */ s32 pad4; - /* 0x18 */ s32 pad5; + /* 0x00 */ AnimData *unk_00[2]; + /* 0x08 */ s32 unk08[5]; /* 0x1C */ s16 group; /* 0x1E */ s16 group2; - /* 0x20 */ s32 pad6; - /* 0x24 */ s32 pad7; - /* 0x28 */ s32 pad8; - /* 0x2C */ s16 unk2C; - /* 0x2E */ s32 pad9; - /* the struct is 0x34 big */ + /* 0x20 */ s32 unk20[3]; + /* 0x2C */ s16 unk_2C; + /* 0x30 */ s32 unk30; } mgInterface; typedef struct mgPic { - /* 0x00 */ AnimData *unk00[2]; - /* 0x08 */ s32 pad; - /* 0x0C */ s32 pad2; - /* 0x10 */ s32 pad3; - /* 0x14 */ s32 pad4; - /* 0x18 */ s32 pad5; - /* 0x1C */ s16 pad6; - /* 0x1E */ s16 pad7; - /* 0x20 */ s32 pad8; - /* 0x24 */ s32 pad9; - /* 0x28 */ s32 pad10; - /* 0x2C */ s16 unk2C; - /* 0x2E */ s32 pad11; - /* 0x32 */ s32 pad12; - /* 0x36 */ s32 pad13; - /* 0x3A */ s32 pad14; - /* 0x40 */ s16 unk40; - /* 0x44 */ s32 pad15; - /* 0x48 */ s32 pad16; - /* 0x4C */ s32 unk4C; - /* 0x50 */ s32 pad18; - /* the struct is 0x54 big */ + /* 0x00 */ AnimData *unk_00[2]; + /* 0x08 */ s32 unk08[9]; + /* 0x2C */ s16 unk_2C; + /* 0x2E */ s32 unk2E[4]; + /* 0x40 */ s16 unk_40; + /* 0x44 */ s32 unk44[2]; + /* 0x4C */ s32 unk_4C; + /* 0x50 */ s32 unk50; } mgPic; typedef struct mgSelect { - /* 0x00 */ AnimData *unk00[4]; - /* 0x10 */ s32 pad3; - /* 0x14 */ s32 pad4; - /* 0x18 */ s32 pad5; - /* 0x1C */ s16 unk1C; - /* 0x1E */ s16 unk1E; - /* 0x20 */ s16 unk20; - /* 0x22 */ s16 pad20; - /* 0x24 */ s32 pad9; - /* 0x28 */ s32 pad10; - /* 0x2C */ s16 unk2C; - /* 0x2E */ s16 unk2E[4]; - /* 0x36 */ s16 pad13; - /* 0x38 */ s16 unk38[4]; - /* 0x40 */ s16 pad15; - /* 0x42 */ s16 unk42; - /* 0x44 */ s16 unk44; - /* 0x46 */ s16 unk46; - /* 0x48 */ s32 pad17; - /* 0x4C */ s32 pad18; - /* 0x50 */ s32 pad19; - /* the struct is 0x54 big */ + /* 0x00 */ AnimData *unk_00[4]; + /* 0x10 */ s32 unk10[3]; + /* 0x1C */ s16 unk_1C; + /* 0x1E */ s16 unk_1E; + /* 0x20 */ s16 unk_20; + /* 0x22 */ s16 unk22; + /* 0x24 */ s32 unk24[2]; + /* 0x2C */ s16 unk_2C; + /* 0x2E */ s16 unk_2E[4]; + /* 0x36 */ s16 unk36; + /* 0x38 */ s16 unk_38[4]; + /* 0x40 */ s16 unk40; + /* 0x42 */ s16 unk_42; + /* 0x44 */ s16 unk_44; + /* 0x46 */ s16 unk_46; + /* 0x48 */ s32 unk48[3]; } mgSelect; extern E3Pad e3PadData[4]; diff --git a/src/REL/E3setupDLL/mgselect.c b/src/REL/E3setupDLL/mgselect.c index adfc9082..73e333da 100644 --- a/src/REL/E3setupDLL/mgselect.c +++ b/src/REL/E3setupDLL/mgselect.c @@ -32,80 +32,80 @@ static void CreateMGInterface(omObjData *object); void E3MGSelectInit() { - s32 var_r29; - s32 var_r30; - Process *var_r31; + s32 var_r29; + s32 var_r30; + Process *var_r31; - for (var_r29 = 0, var_r30 = 0; var_r29 < 4; var_r29++) { - if (HuPadStatGet(var_r29) == 0) { - var_r30 += 1; - } - } - e3ConfigPlayerCnt = var_r30; - if (var_r30 <= 0) { - OSReport("No pad detected\n"); - var_r30 += 1; - } - mgDefault = 0; - HuSysVWaitSet(1); - var_r31 = omInitObjMan(0x50, 0x2000); - HuWinInit(1); - CRot.x = -4.0f; - CRot.y = 0.0f; - CRot.z = 0.0f; - Center.x = 0.0f; - Center.y = 160.0f; - Center.z = 0.0f; - CZoom = 1960.0; - e3CameraFov = 40.0f; - Hu3DCameraCreate(1); - Hu3DCameraPerspectiveSet(1, e3CameraFov, 100.0f, 25000.0f, 4.0f / 3.0f); - e3ViewObj = omAddObjEx(var_r31, 32730, 0, 0, -1, omOutView); - e3OvlWatchObj = omAddObjEx(var_r31, 200, 0, 0, -1, E3OvlWatchInit); - e3MenuMainObj = omAddObjEx(var_r31, 10, 0, 0, -1, StartMGSelect); - e3BGObj = omAddObjEx(var_r31, 0x14, 0, 0, -1, E3BGCreate); - mgInterfaceObj = omAddObjEx(var_r31, 20, 0, 0, -1, CreateMGInterface); - mgSelectObj = omAddObjEx(var_r31, 30, 0, 0, -1, CreateMGSelect); - mgPicObj = omAddObjEx(var_r31, 31, 0, 0, -1, CreateMGPic); - mgPicObj->work[0] = mgDefault; - E3LightInit(); - WipeCreate(1, 0, -1); + for (var_r29 = 0, var_r30 = 0; var_r29 < 4; var_r29++) { + if (HuPadStatGet(var_r29) == 0) { + var_r30++; + } + } + e3ConfigPlayerCnt = var_r30; + if (var_r30 <= 0) { + OSReport("No pad detected\n"); + var_r30++; + } + mgDefault = 0; + HuSysVWaitSet(1); + var_r31 = omInitObjMan(0x50, 0x2000); + HuWinInit(1); + CRot.x = -4.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 160.0f; + Center.z = 0.0f; + CZoom = 1960.0; + e3CameraFov = 40.0f; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, e3CameraFov, 100.0f, 25000.0f, 4.0f / 3.0f); + e3ViewObj = omAddObjEx(var_r31, 32730, 0, 0, -1, omOutView); + e3OvlWatchObj = omAddObjEx(var_r31, 200, 0, 0, -1, E3OvlWatchInit); + e3MenuMainObj = omAddObjEx(var_r31, 10, 0, 0, -1, StartMGSelect); + e3BGObj = omAddObjEx(var_r31, 0x14, 0, 0, -1, E3BGCreate); + mgInterfaceObj = omAddObjEx(var_r31, 20, 0, 0, -1, CreateMGInterface); + mgSelectObj = omAddObjEx(var_r31, 30, 0, 0, -1, CreateMGSelect); + mgPicObj = omAddObjEx(var_r31, 31, 0, 0, -1, CreateMGPic); + mgPicObj->work[0] = mgDefault; + E3LightInit(); + WipeCreate(1, 0, -1); } s16 lbl_2_data_36[] = { 0x0023, 0x0026, 0x0029, 0x002C }; static s16 mgOvlTbl[] = { - 11, - 12, - 15, - 18, - 20, - 23, - 26, - 27, - 33, - 34, - 39, - 44, - 46, + 11, + 12, + 15, + 18, + 20, + 23, + 26, + 27, + 33, + 34, + 39, + 44, + 46, }; static s16 mgIdTbl[] = { 403, 404, 407, 410, 412, 415, 418, 419, 425, 426, 431, 436, 438, 0 }; static s32 mgNameTbl[] = { - 0x00170003, - 0x00170004, - 0x00170007, - 0x0017000A, - 0x0017000C, - 0x0017000F, - 0x00170012, - 0x00170013, - 0x00170019, - 0x0017001A, - 0x0017001F, - 0x00170024, - 0x00170026, + 0x00170003, + 0x00170004, + 0x00170007, + 0x0017000A, + 0x0017000C, + 0x0017000F, + 0x00170012, + 0x00170013, + 0x00170019, + 0x0017001A, + 0x0017001F, + 0x00170024, + 0x00170026, }; char lbl_2_data_A8[] = "\013TEST MINIGAME NAME01\n test"; @@ -120,382 +120,382 @@ char lbl_2_data_151[] = "\013TEST MINIGAME NAME09"; char lbl_2_data_167[] = "\013TEST MINIGAME NAME10"; char lbl_2_data_17D[] = "\013TEST MINIGAME NAME11"; char lbl_2_data_193[] = "\013TEST MINIGAME NAME12"; -char lbl_2_data_1A9[] = "\013TEST MINIGAME NAME13\000"; +char lbl_2_data_1A9[] = "\013TEST MINIGAME NAME13"; static char *mgNameTestTbl[] = { - lbl_2_data_A8, - lbl_2_data_C9, - lbl_2_data_DF, - lbl_2_data_F5, - lbl_2_data_10B, - lbl_2_data_118, - lbl_2_data_12E, - lbl_2_data_13B, - lbl_2_data_151, - lbl_2_data_167, - lbl_2_data_17D, - lbl_2_data_193, - lbl_2_data_1A9, + lbl_2_data_A8, + lbl_2_data_C9, + lbl_2_data_DF, + lbl_2_data_F5, + lbl_2_data_10B, + lbl_2_data_118, + lbl_2_data_12E, + lbl_2_data_13B, + lbl_2_data_151, + lbl_2_data_167, + lbl_2_data_17D, + lbl_2_data_193, + lbl_2_data_1A9, }; static float cursorYOfsTbl[] = { -100.0f, -50.0f, 0.0f, 50.0f, 100.0f }; static s32 mgPicTbl[] = { 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 }; -static char startText[] = "\013\016\r PRESS START\000\000\000\000"; +static char startText[] = "\013\016\r PRESS START"; static void StartMGSelect(omObjData *object) { - HuAudSeqPlay(0x2B); - lbl_2_bss_14 = 0; - lbl_2_bss_10 = -1; - lbl_2_bss_C = 0x1E; - lbl_2_bss_A = 0; - object->func = UpdatePad; - worstVcount = 0; - object->work[0] = 0; - object->work[1] = 0; + HuAudSeqPlay(0x2B); + lbl_2_bss_14 = 0; + lbl_2_bss_10 = -1; + lbl_2_bss_C = 0x1E; + lbl_2_bss_A = 0; + object->func = UpdatePad; + worstVcount = 0; + object->work[0] = 0; + object->work[1] = 0; } static void UpdatePad(omObjData *object) { - s32 i; - s32 players; + s32 i; + s32 players; - if (e3ExitEnableF == 0) { - for (i = 0, players = 0; i < 4; i++) { - E3PadUpdate(i, &e3PadData[i]); - if (!e3PadData[i].enable) { - players++; - } - } - e3ConfigPlayerCnt = players; - } + if (e3ExitEnableF == 0) { + for (i = 0, players = 0; i < 4; i++) { + E3PadUpdate(i, &e3PadData[i]); + if (!e3PadData[i].enable) { + players++; + } + } + e3ConfigPlayerCnt = players; + } } static void UpdateMGSelect(omObjData *object) { - mgSelect *var_r31; - s32 var_r30; - u32 var_r28; - s16 var_r27; - s16 var_r26; - s16 var_r25; - s16 var_r24; - u16 var_r23; - s16 var_r22; - s32 var_r21; - float sp8[2]; + mgSelect *var_r31; + s32 var_r30; + u32 var_r28; + s16 var_r27; + s16 var_r26; + s16 var_r25; + s16 var_r24; + u16 var_r23; + s16 var_r22; + s32 var_r21; + float sp8[2]; - var_r31 = object->data; - var_r23 = e3PadData[e3PadCtrl].btnDown; - if (object->work[3] != 0) { - if ((var_r23 & 0x1100) != 0) { - HuAudFXPlay(1); - mgDefault = var_r31->unk44; - var_r21 = mgIdTbl[var_r31->unk44]; - GWMGAvailSet(var_r21); - GWSystem.mg_next = var_r21 - 401; - e3NextOvl = 3; - e3NextEvent = 0; - e3ExitMode = 2; - e3ExitEnableF = 1; - var_r28 = mgOvlTbl[var_r31->unk44]; + var_r31 = object->data; + var_r23 = e3PadData[e3PadCtrl].btnDown; + if (object->work[3] != 0) { + if ((var_r23 & 0x1100) != 0) { + HuAudFXPlay(1); + mgDefault = var_r31->unk_44; + var_r21 = mgIdTbl[var_r31->unk_44]; + GWMGAvailSet(var_r21); + GWSystem.mg_next = var_r21 - 401; + e3NextOvl = 3; + e3NextEvent = 0; + e3ExitMode = 2; + e3ExitEnableF = 1; + var_r28 = mgOvlTbl[var_r31->unk_44]; - for (var_r30 = 0; var_r30 < 50; var_r30++) { - if (var_r28 == mgInfoTbl[var_r30].ovl) { - break; - } - } - if (var_r30 >= 50) { - e3ExitMode = 0; - e3NextOvl = 0; - }; - switch (mgInfoTbl[var_r30].type) { - case 0: - case 3: - case 4: - case 5: - case 6: - for (var_r30 = 0; var_r30 < 4; var_r30++) { - GWPlayerCfg[var_r30].group = var_r30; - } - break; - case 1: - var_r28 = frand(); - var_r28 &= 3; - for (var_r30 = 0; var_r30 < 4; var_r30++) { - if (var_r28 == var_r30) { - GWPlayerCfg[var_r30].group = 0; - } else { - GWPlayerCfg[var_r30].group = 1; - } - } - break; - case 2: - for (var_r30 = 0; var_r30 < 2; var_r30++) { - GWPlayerCfg[var_r30].group = 0; - } - for (var_r30 = 2; var_r30 < 4; var_r30++) { - GWPlayerCfg[var_r30].group = 1; - } - break; - } - object->work[3] = 0; - return; - } - if ((var_r23 & 0x200) != 0) { - HuAudFXPlay(3); - e3ExitMode = 0; - e3NextOvl = 0; - e3NextEvent = 0; - e3ExitEnableF = 1; - object->work[3] = 0; - return; - } - if (object->work[3] != 0) { - if ((var_r23 & 8) != 0) { - HuAudFXPlay(0); - var_r31->unk44--; - if (var_r31->unk44 < 0) { - var_r31->unk44 = 0xC; - } - } else if ((var_r23 & 4) != 0) { - HuAudFXPlay(0); - var_r31->unk44++; - if (var_r31->unk44 >= 13) { - var_r31->unk44 = 0; - } - } - if (var_r31->unk46 != var_r31->unk44) { - mgPicObj->work[0] = var_r31->unk44; - var_r27 = var_r31->unk44 - var_r31->unk46; - if ((var_r27 > 1) || (var_r27 < -1)) { - if (var_r27 < 0) { - var_r27 = 1; - } else { - var_r27 = -1; - } - } - var_r25 = var_r31->unk42 + var_r27; - if ((var_r25 < 0) || (var_r25 >= 5)) { - for (var_r30 = 0; var_r30 < 5; var_r30++) { - var_r22 = var_r31->unk2E[var_r30]; - var_r26 = var_r31->unk38[var_r30]; - var_r24 = var_r26 - var_r27; - if ((var_r24 < 0) || (var_r24 >= 5)) { - var_r28 = mgNameTbl[var_r31->unk44]; - HuWinMesSizeCancelCRSet(1); - HuWinMesMaxSizeGet(1, sp8, var_r28); - HuWinCenterPosSet(var_r22, (296.0f - sp8[0]) / -2.0f, (68.0f - sp8[1]) / -2.0f); - HuWinMesSet(var_r22, var_r28); - if (var_r24 < 0) { - var_r26 = 4; - } else { - var_r26 = 0; - } - } else { - var_r26 = var_r24; - } - HuWinPosSet(var_r22, 36.0f, 237.0f + cursorYOfsTbl[var_r26]); - var_r31->unk38[var_r30] = var_r26; - } - } else { - var_r31->unk42 = var_r25; - HuSprPosSet(var_r31->unk1C, 1, 0.0f, cursorYOfsTbl[var_r25]); - } - var_r31->unk46 = var_r31->unk44; - } - } - } + for (var_r30 = 0; var_r30 < 50; var_r30++) { + if (var_r28 == mgInfoTbl[var_r30].ovl) { + break; + } + } + if (var_r30 >= 50) { + e3ExitMode = 0; + e3NextOvl = 0; + }; + switch (mgInfoTbl[var_r30].type) { + case 0: + case 3: + case 4: + case 5: + case 6: + for (var_r30 = 0; var_r30 < 4; var_r30++) { + GWPlayerCfg[var_r30].group = var_r30; + } + break; + case 1: + var_r28 = frand(); + var_r28 &= 3; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r28 == var_r30) { + GWPlayerCfg[var_r30].group = 0; + } else { + GWPlayerCfg[var_r30].group = 1; + } + } + break; + case 2: + for (var_r30 = 0; var_r30 < 2; var_r30++) { + GWPlayerCfg[var_r30].group = 0; + } + for (var_r30 = 2; var_r30 < 4; var_r30++) { + GWPlayerCfg[var_r30].group = 1; + } + break; + } + object->work[3] = 0; + return; + } + if ((var_r23 & 0x200) != 0) { + HuAudFXPlay(3); + e3ExitMode = 0; + e3NextOvl = 0; + e3NextEvent = 0; + e3ExitEnableF = 1; + object->work[3] = 0; + return; + } + if (object->work[3] != 0) { + if ((var_r23 & 8) != 0) { + HuAudFXPlay(0); + var_r31->unk_44--; + if (var_r31->unk_44 < 0) { + var_r31->unk_44 = 0xC; + } + } else if ((var_r23 & 4) != 0) { + HuAudFXPlay(0); + var_r31->unk_44++; + if (var_r31->unk_44 >= 13) { + var_r31->unk_44 = 0; + } + } + if (var_r31->unk_46 != var_r31->unk_44) { + mgPicObj->work[0] = var_r31->unk_44; + var_r27 = var_r31->unk_44 - var_r31->unk_46; + if ((var_r27 > 1) || (var_r27 < -1)) { + if (var_r27 < 0) { + var_r27 = 1; + } else { + var_r27 = -1; + } + } + var_r25 = var_r31->unk_42 + var_r27; + if ((var_r25 < 0) || (var_r25 >= 5)) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + var_r22 = var_r31->unk_2E[var_r30]; + var_r26 = var_r31->unk_38[var_r30]; + var_r24 = var_r26 - var_r27; + if ((var_r24 < 0) || (var_r24 >= 5)) { + var_r28 = mgNameTbl[var_r31->unk_44]; + HuWinMesSizeCancelCRSet(1); + HuWinMesMaxSizeGet(1, sp8, var_r28); + HuWinCenterPosSet(var_r22, (296.0f - sp8[0]) / -2.0f, (68.0f - sp8[1]) / -2.0f); + HuWinMesSet(var_r22, var_r28); + if (var_r24 < 0) { + var_r26 = 4; + } else { + var_r26 = 0; + } + } else { + var_r26 = var_r24; + } + HuWinPosSet(var_r22, 36.0f, 237.0f + cursorYOfsTbl[var_r26]); + var_r31->unk_38[var_r30] = var_r26; + } + } else { + var_r31->unk_42 = var_r25; + HuSprPosSet(var_r31->unk_1C, 1, 0.0f, cursorYOfsTbl[var_r25]); + } + var_r31->unk_46 = var_r31->unk_44; + } + } + } } static void CreateMGSelect(omObjData *object) { - mgSelect *temp_r31; - s16 temp_r30; - s16 temp_r29; - s32 var_r28; - s16 var_r26; - s16 index2; - u32 temp_r22; - s32 temp_r21; - AnimData *temp_r25; - AnimData *temp_r23; - float sp8[2]; + mgSelect *temp_r31; + s16 temp_r30; + s16 temp_r29; + s32 var_r28; + s16 var_r26; + s16 index2; + u32 temp_r22; + s32 temp_r21; + AnimData *temp_r25; + AnimData *temp_r23; + float sp8[2]; - omSetStatBit(object, OM_STAT_MODEL_PAUSED); - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x48, MEMORY_DEFAULT_NUM); - temp_r31 = object->data; - index2 = 0; - temp_r30 = HuSprGrpCreate(3); - temp_r31->unk1C = temp_r30; - HuSprGrpPosSet(temp_r30, 174.0f, 271.0f); - temp_r25 = HuSprAnimRead(HuDataReadNum(0x21, MEMORY_DEFAULT_NUM)); - temp_r31->unk00[index2] = temp_r25; - temp_r29 = HuSprCreate(temp_r25, 0x7540, 0); - HuSprGrpMemberSet(temp_r30, index2, temp_r29); - index2++; - temp_r25 = HuSprAnimRead(HuDataReadNum(0x27, MEMORY_DEFAULT_NUM)); - temp_r31->unk00[index2] = temp_r25; - temp_r29 = HuSprCreate(temp_r25, 0x64, 0); - HuSprGrpMemberSet(temp_r30, index2, temp_r29); - HuSprScaleSet(temp_r30, index2, 1.1f, 1.0f); - HuSprTPLvlSet(temp_r30, index2, 0.5f); - temp_r31->unk42 = 0; - HuSprPosSet(temp_r30, index2, 0.0f, cursorYOfsTbl[temp_r31->unk42]); - index2++; - temp_r25 = HuSprAnimRead(HuDataReadNum(0x35, MEMORY_DEFAULT_NUM)); - temp_r31->unk00[index2++] = temp_r25; - temp_r23 = HuSprAnimRead(HuDataReadNum(0x36, MEMORY_DEFAULT_NUM)); - temp_r31->unk00[index2++] = temp_r23; - temp_r30 = HuSprGrpCreate(2); - temp_r31->unk1E = temp_r30; - HuSprGrpPosSet(temp_r30, 174.0f, 128.0f); - temp_r29 = HuSprCreate(temp_r25, 4, 0); - HuSprGrpMemberSet(temp_r30, 0, temp_r29); - temp_r29 = HuSprCreate(temp_r23, 6, 0); - HuSprGrpMemberSet(temp_r30, 1, temp_r29); - HuSprTPLvlSet(temp_r30, 1, 0.7f); - HuSprPosSet(temp_r30, 1, 0.0f, -4.0f); - temp_r30 = HuSprGrpCreate(2); - temp_r31->unk20 = temp_r30; - HuSprGrpPosSet(temp_r30, 174.0f, 414.0f); - temp_r29 = HuSprCreate(temp_r25, 4, 1); - HuSprGrpMemberSet(temp_r30, 0, temp_r29); - temp_r29 = HuSprCreate(temp_r23, 6, 1); - HuSprGrpMemberSet(temp_r30, 1, temp_r29); - HuSprTPLvlSet(temp_r30, 1, 0.7f); - HuSprPosSet(temp_r30, 1, 0.0f, -4.0f); + omSetStatBit(object, OM_STAT_MODEL_PAUSED); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x48, MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + index2 = 0; + temp_r30 = HuSprGrpCreate(3); + temp_r31->unk_1C = temp_r30; + HuSprGrpPosSet(temp_r30, 174.0f, 271.0f); + temp_r25 = HuSprAnimRead(HuDataReadNum(0x21, MEMORY_DEFAULT_NUM)); + temp_r31->unk_00[index2] = temp_r25; + temp_r29 = HuSprCreate(temp_r25, 0x7540, 0); + HuSprGrpMemberSet(temp_r30, index2, temp_r29); + index2++; + temp_r25 = HuSprAnimRead(HuDataReadNum(0x27, MEMORY_DEFAULT_NUM)); + temp_r31->unk_00[index2] = temp_r25; + temp_r29 = HuSprCreate(temp_r25, 0x64, 0); + HuSprGrpMemberSet(temp_r30, index2, temp_r29); + HuSprScaleSet(temp_r30, index2, 1.1f, 1.0f); + HuSprTPLvlSet(temp_r30, index2, 0.5f); + temp_r31->unk_42 = 0; + HuSprPosSet(temp_r30, index2, 0.0f, cursorYOfsTbl[temp_r31->unk_42]); + index2++; + temp_r25 = HuSprAnimRead(HuDataReadNum(0x35, MEMORY_DEFAULT_NUM)); + temp_r31->unk_00[index2++] = temp_r25; + temp_r23 = HuSprAnimRead(HuDataReadNum(0x36, MEMORY_DEFAULT_NUM)); + temp_r31->unk_00[index2++] = temp_r23; + temp_r30 = HuSprGrpCreate(2); + temp_r31->unk_1E = temp_r30; + HuSprGrpPosSet(temp_r30, 174.0f, 128.0f); + temp_r29 = HuSprCreate(temp_r25, 4, 0); + HuSprGrpMemberSet(temp_r30, 0, temp_r29); + temp_r29 = HuSprCreate(temp_r23, 6, 0); + HuSprGrpMemberSet(temp_r30, 1, temp_r29); + HuSprTPLvlSet(temp_r30, 1, 0.7f); + HuSprPosSet(temp_r30, 1, 0.0f, -4.0f); + temp_r30 = HuSprGrpCreate(2); + temp_r31->unk_20 = temp_r30; + HuSprGrpPosSet(temp_r30, 174.0f, 414.0f); + temp_r29 = HuSprCreate(temp_r25, 4, 1); + HuSprGrpMemberSet(temp_r30, 0, temp_r29); + temp_r29 = HuSprCreate(temp_r23, 6, 1); + HuSprGrpMemberSet(temp_r30, 1, temp_r29); + HuSprTPLvlSet(temp_r30, 1, 0.7f); + HuSprPosSet(temp_r30, 1, 0.0f, -4.0f); - temp_r21 = GWSystem.mg_next + 401; - var_r26 = temp_r21; - for (var_r28 = 0; var_r28 < 13;) { - if (var_r26 != mgIdTbl[var_r28]) { - var_r28++; - } else { - break; - } - } - if (var_r28 >= 13) { - var_r28 = 0; - } - mgDefault = var_r28; - var_r26 = mgDefault; - mgPicObj->work[0] = var_r26; - temp_r31->unk44 = var_r26; - temp_r31->unk46 = var_r26; + temp_r21 = GWSystem.mg_next + 401; + var_r26 = temp_r21; + for (var_r28 = 0; var_r28 < 13;) { + if (var_r26 != mgIdTbl[var_r28]) { + var_r28++; + } else { + break; + } + } + if (var_r28 >= 13) { + var_r28 = 0; + } + mgDefault = var_r28; + var_r26 = mgDefault; + mgPicObj->work[0] = var_r26; + temp_r31->unk_44 = var_r26; + temp_r31->unk_46 = var_r26; - for (var_r28 = 0; var_r28 < 5;) { - if (var_r26 >= 13) { - var_r26 = 0; - } - temp_r29 = HuWinCreate(36.0f, 237.0f + cursorYOfsTbl[var_r28], 0x128, 0x44, 0x4E20); - temp_r31->unk2E[var_r28] = temp_r29; - temp_r31->unk38[var_r28] = var_r28; - HuWinBGTPLvlSet(temp_r29, 0.0f); - HuWinMesSpeedSet(temp_r29, 0); - temp_r22 = mgNameTbl[var_r26]; - HuWinAttrSet(temp_r29, 0x100); - HuWinMesSizeCancelCRSet(1); - HuWinMesMaxSizeGet(1, sp8, temp_r22); - HuWinCenterPosSet(temp_r29, (296.0f - sp8[0]) / -2.0f, (68.0f - sp8[1]) / -2.0f); - HuWinMesSet(temp_r29, temp_r22); - var_r28++; - var_r26++; - } - object->work[3] = 1; - object->func = &UpdateMGSelect; + for (var_r28 = 0; var_r28 < 5;) { + if (var_r26 >= 13) { + var_r26 = 0; + } + temp_r29 = HuWinCreate(36.0f, 237.0f + cursorYOfsTbl[var_r28], 0x128, 0x44, 0x4E20); + temp_r31->unk_2E[var_r28] = temp_r29; + temp_r31->unk_38[var_r28] = var_r28; + HuWinBGTPLvlSet(temp_r29, 0.0f); + HuWinMesSpeedSet(temp_r29, 0); + temp_r22 = mgNameTbl[var_r26]; + HuWinAttrSet(temp_r29, 0x100); + HuWinMesSizeCancelCRSet(1); + HuWinMesMaxSizeGet(1, sp8, temp_r22); + HuWinCenterPosSet(temp_r29, (296.0f - sp8[0]) / -2.0f, (68.0f - sp8[1]) / -2.0f); + HuWinMesSet(temp_r29, temp_r22); + var_r28++; + var_r26++; + } + object->work[3] = 1; + object->func = &UpdateMGSelect; } static void UpdateMGPic(omObjData *object) { - mgPic *temp_r30 = (mgPic *)object->data; - s16 temp_r29; + mgPic *temp_r30 = (mgPic *)object->data; + s16 temp_r29; - if (object->work[1] != object->work[0]) { - temp_r29 = temp_r30->unk40; - HuSprAttrSet(temp_r29, object->work[1], 4); - HuSprAttrReset(temp_r29, object->work[0], 4); - object->work[1] = object->work[0]; - } + if (object->work[1] != object->work[0]) { + temp_r29 = temp_r30->unk_40; + HuSprAttrSet(temp_r29, object->work[1], 4); + HuSprAttrReset(temp_r29, object->work[0], 4); + object->work[1] = object->work[0]; + } } static void CreateMGPic(omObjData *object) { - mgPic *temp_r28; - AnimData *temp_r3_2; - s16 temp_r3; - s32 var_r30; - s32 index; - s16 index2; - s16 group; + mgPic *temp_r28; + AnimData *temp_r3_2; + s16 temp_r3; + s32 var_r30; + s32 index; + s16 index2; + s16 group; - omSetStatBit(object, OM_STAT_MODEL_PAUSED); - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(mgPic), MEMORY_DEFAULT_NUM); - temp_r28 = object->data; - index2 = 0; - temp_r3 = HuSprGrpCreate(14); - temp_r28->unk40 = temp_r3; - HuSprGrpPosSet(temp_r3, 444.0f, 228.0f); + omSetStatBit(object, OM_STAT_MODEL_PAUSED); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(mgPic), MEMORY_DEFAULT_NUM); + temp_r28 = object->data; + index2 = 0; + temp_r3 = HuSprGrpCreate(14); + temp_r28->unk_40 = temp_r3; + HuSprGrpPosSet(temp_r3, 444.0f, 228.0f); - for (var_r30 = 0; var_r30 < 13; var_r30++) { - temp_r3_2 = HuSprAnimRead(HuDataReadNum(mgPicTbl[var_r30], MEMORY_DEFAULT_NUM)); - temp_r28->unk00[var_r30] = temp_r3_2; - group = HuSprCreate(temp_r3_2, 0x2710, 0); - HuSprGrpMemberSet(temp_r3, var_r30, group); - HuSprScaleSet(temp_r3, var_r30, 0.6f, 0.6f); - HuSprAttrSet(temp_r3, var_r30, 4); - } - index2 = var_r30; - temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x22, MEMORY_DEFAULT_NUM)); - temp_r28->unk00[index2] = temp_r3_2; - group = HuSprCreate(temp_r3_2, 0x7540, 0); - HuSprGrpMemberSet(temp_r3, index2, group); - HuSprTPLvlSet(temp_r3, index2, 0.7f); - index2++; - object->work[1] = object->work[0]; - HuSprAttrReset(temp_r3, object->work[1], 4); - object->func = &UpdateMGPic; + for (var_r30 = 0; var_r30 < 13; var_r30++) { + temp_r3_2 = HuSprAnimRead(HuDataReadNum(mgPicTbl[var_r30], MEMORY_DEFAULT_NUM)); + temp_r28->unk_00[var_r30] = temp_r3_2; + group = HuSprCreate(temp_r3_2, 0x2710, 0); + HuSprGrpMemberSet(temp_r3, var_r30, group); + HuSprScaleSet(temp_r3, var_r30, 0.6f, 0.6f); + HuSprAttrSet(temp_r3, var_r30, 4); + } + index2 = var_r30; + temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x22, MEMORY_DEFAULT_NUM)); + temp_r28->unk_00[index2] = temp_r3_2; + group = HuSprCreate(temp_r3_2, 0x7540, 0); + HuSprGrpMemberSet(temp_r3, index2, group); + HuSprTPLvlSet(temp_r3, index2, 0.7f); + index2++; + object->work[1] = object->work[0]; + HuSprAttrReset(temp_r3, object->work[1], 4); + object->func = &UpdateMGPic; } static void UpdateMGInterface(omObjData *object) { void *sp8 = object->data; } static void CreateMGInterface(omObjData *object) { - mgInterface *unkStruct; - s16 index; - s16 group; - s16 index2; - AnimData *temp_r3_2; - float sp8[2]; + mgInterface *unkStruct; + s16 index; + s16 group; + s16 index2; + AnimData *temp_r3_2; + float sp8[2]; - omSetStatBit(object, OM_STAT_MODEL_PAUSED); - object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(mgInterface), MEMORY_DEFAULT_NUM); - unkStruct = object->data; - index2 = 0; - group = HuSprGrpCreate(1); - unkStruct->group = group; - HuSprGrpPosSet(group, 288.0f, 64.0f); - temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x24, MEMORY_DEFAULT_NUM)); - unkStruct->unk00[index2] = temp_r3_2; - index = HuSprCreate(temp_r3_2, 0x2710, 0); - HuSprGrpMemberSet(group, 0, index); - index2++; - group = HuSprGrpCreate(1); - unkStruct->group2 = group; - HuSprGrpPosSet(group, 444.0f, 384.0f); - temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x23, MEMORY_DEFAULT_NUM)); - unkStruct->unk00[index2] = temp_r3_2; - index = HuSprCreate(temp_r3_2, 0x271A, 0); - HuSprGrpMemberSet(group, 0, index); - index2++; - HuWinMesMaxSizeGet(1, sp8, &startText); - index = HuWinCreate(340.0f, 362.0f, sp8[0], sp8[1], 0); - unkStruct->unk2C = index; - HuWinMesColSet(index, 0); - HuWinBGTPLvlSet(index, 0.0f); - HuWinMesSpeedSet(index, 0); - HuWinMesSet(index, MAKE_MESSID_PTR(startText)); - object->func = UpdateMGInterface; + omSetStatBit(object, OM_STAT_MODEL_PAUSED); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(mgInterface), MEMORY_DEFAULT_NUM); + unkStruct = object->data; + index2 = 0; + group = HuSprGrpCreate(1); + unkStruct->group = group; + HuSprGrpPosSet(group, 288.0f, 64.0f); + temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x24, MEMORY_DEFAULT_NUM)); + unkStruct->unk_00[index2] = temp_r3_2; + index = HuSprCreate(temp_r3_2, 0x2710, 0); + HuSprGrpMemberSet(group, 0, index); + index2++; + group = HuSprGrpCreate(1); + unkStruct->group2 = group; + HuSprGrpPosSet(group, 444.0f, 384.0f); + temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x23, MEMORY_DEFAULT_NUM)); + unkStruct->unk_00[index2] = temp_r3_2; + index = HuSprCreate(temp_r3_2, 0x271A, 0); + HuSprGrpMemberSet(group, 0, index); + index2++; + HuWinMesMaxSizeGet(1, sp8, &startText); + index = HuWinCreate(340.0f, 362.0f, sp8[0], sp8[1], 0); + unkStruct->unk_2C = index; + HuWinMesColSet(index, 0); + HuWinBGTPLvlSet(index, 0.0f); + HuWinMesSpeedSet(index, 0); + HuWinMesSet(index, MAKE_MESSID_PTR(startText)); + object->func = UpdateMGInterface; }