From 3ec12aaa448182f0c2bc3ab64948c3228c037f84 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 29 May 2025 19:08:09 +0200 Subject: [PATCH] Get rid of unkStruct_20398C8 --- include/ground_main.h | 16 ------- include/run_dungeon.h | 4 +- ..._dungeon_8042F6C.h => str_dungeon_setup.h} | 30 +++++++------ src/ground_main.c | 21 +++++----- src/ground_script.c | 7 ++-- src/main_loops.c | 42 +++++++++---------- src/run_dungeon.c | 2 +- 7 files changed, 57 insertions(+), 65 deletions(-) rename include/structs/{str_dungeon_8042F6C.h => str_dungeon_setup.h} (56%) diff --git a/include/ground_main.h b/include/ground_main.h index e7714f3c4..d1d81757d 100644 --- a/include/ground_main.h +++ b/include/ground_main.h @@ -4,22 +4,6 @@ #include "structs/str_pokemon.h" #include "structs/str_wonder_mail.h" -struct unkStruct_20398C8 -{ - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - u8 unk4; - u8 fill5[0xB - 0x5]; - u8 unkB; - u8 unkC; - u8 unkD; - DungeonMailSeed unk10; - PokemonStruct1 unk18; - u8 fill70[0x88 - 0x70]; -}; - // size: 0xC typedef struct GroundConversionStruct { diff --git a/include/run_dungeon.h b/include/run_dungeon.h index 85e904cbd..8ea9e16fa 100644 --- a/include/run_dungeon.h +++ b/include/run_dungeon.h @@ -1,7 +1,7 @@ #ifndef GUARD_RUN_DUNGEON_H #define GUARD_RUN_DUNGEON_H -#include "structs/str_dungeon_8042F6C.h" +#include "structs/str_dungeon_setup.h" struct UnkStruct_203B414 { @@ -15,7 +15,7 @@ struct UnkStruct_203B414 extern struct UnkStruct_203B414 *gUnknown_203B414; -void RunDungeon_Async(UnkStruct_RunDungeon *r8); +void RunDungeon_Async(DungeonSetupStruct *r8); void sub_8043CD8(void); bool8 sub_8043CE4(s32 dungeonId); u8 GetFloorType(void); diff --git a/include/structs/str_dungeon_8042F6C.h b/include/structs/str_dungeon_setup.h similarity index 56% rename from include/structs/str_dungeon_8042F6C.h rename to include/structs/str_dungeon_setup.h index 8be703b70..24b263017 100644 --- a/include/structs/str_dungeon_8042F6C.h +++ b/include/structs/str_dungeon_setup.h @@ -1,5 +1,5 @@ -#ifndef GUARD_STR_DUNGEON_8042F6C_H -#define GUARD_STR_DUNGEON_8042F6C_H +#ifndef GUARD_STR_DUNGEON_SETUP_H +#define GUARD_STR_DUNGEON_SETUP_H #include "structs/str_dungeon.h" #include "structs/str_dungeon_location.h" @@ -7,28 +7,34 @@ #include "structs/str_pokemon.h" #include "structs/str_wonder_mail.h" -typedef struct UnkStruct_RunDungeon +typedef struct DungeonSetupInfo { - u8 unk0; - DungeonLocation unk4; + DungeonLocation unk0; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; u8 unk8; u8 unk9; u8 unkA; u8 unkB; u8 unkC; u8 unkD; - u8 unkE; - u8 unkF; - u8 unk10; - u8 unk11; DungeonMailSeed dungeonSeed; - PokemonStruct1 unk1C; + PokemonStruct1 unk18; u8 *unk74; Dungeon *unk78; s16 unk7C; // Set to 5 if the dungeon was skipped (quicksave read failed) u8 unk7E; DungeonLocation unk80; DungeonMailSeed unk84; -} UnkStruct_RunDungeon; +} DungeonSetupInfo; -#endif // GUARD_STR_DUNGEON_8042F6C_H +typedef struct DungeonSetupStruct +{ + s32 unk0; + DungeonSetupInfo info; + u8 fill8C[44]; +} DungeonSetupStruct; + +#endif // GUARD_STR_DUNGEON_SETUP_H diff --git a/src/ground_main.c b/src/ground_main.c index 2686fa4a4..79bbafea4 100644 --- a/src/ground_main.c +++ b/src/ground_main.c @@ -2,6 +2,7 @@ #include "constants/dungeon.h" #include "constants/move_id.h" #include "structs/str_wonder_mail.h" +#include "structs/str_dungeon_setup.h" #include "code_8009804.h" #include "code_800C9CC.h" #include "code_80118A4.h" @@ -29,7 +30,7 @@ EWRAM_DATA u16 gUnknown_20398BC = {0}; EWRAM_DATA s16 gUnknown_20398BE = {0}; EWRAM_DATA u32 gUnknown_20398C0 = {0}; EWRAM_DATA s16 gUnknown_20398C4 = {0}; -EWRAM_DATA struct unkStruct_20398C8 gUnknown_20398C8 = {0}; +EWRAM_DATA struct DungeonSetupInfo gUnknown_20398C8 = {0}; EWRAM_DATA u8 gUnknown_2039950 = 0; EWRAM_INIT bool8 gUnknown_203B49C = {0}; @@ -755,7 +756,7 @@ const char *sub_80990B8(void) } } -static inline bool8 sub_80990EC_sub(struct unkStruct_20398C8 *iVar1, u32 iVar2) +static inline bool8 sub_80990EC_sub(struct DungeonSetupInfo *iVar1, u32 iVar2) { bool8 flag = FALSE; iVar1->unkB = 0; @@ -769,7 +770,7 @@ static inline bool8 sub_80990EC_sub(struct unkStruct_20398C8 *iVar1, u32 iVar2) extern void sub_80A8EC0(u8 *, u32); -u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s16 param_2) +u8 sub_80990EC(struct DungeonSetupInfo *param_1, s16 param_2) { const DungeonInfo *iVar1; u8 auStack_98 [24]; @@ -780,8 +781,8 @@ u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s16 param_2) iVar1 = GetDungeonInfo_80A2608(param_2); dungeonIndex = iVar1->dungeonIndex; r5 = 0; - param_1->unk0 = dungeonIndex; - param_1->unk1 = 1; + param_1->unk0.id = dungeonIndex; + param_1->unk0.floor = 1; param_1->unkC = r5; switch(sub_80A2750(param_2)) @@ -823,11 +824,11 @@ u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s16 param_2) return iVar1->unk11; } -u8 sub_80991E0(struct unkStruct_20398C8 *param_1,short *param_2) +u8 sub_80991E0(struct DungeonSetupInfo *param_1,short *param_2) { *param_2 = gUnknown_20398C4; if (gUnknown_203B49C) { - memcpy(param_1, &gUnknown_20398C8, sizeof(struct unkStruct_20398C8)); + memcpy(param_1, &gUnknown_20398C8, sizeof(struct DungeonSetupInfo)); return TRUE; } else { @@ -835,7 +836,7 @@ u8 sub_80991E0(struct unkStruct_20398C8 *param_1,short *param_2) } } -void sub_8099220(struct unkStruct_20398C8 *param_1, s16 param_2) +void sub_8099220(struct DungeonSetupInfo *param_1, s16 param_2) { s32 param_2_s32 = (s16)param_2; if (param_1 != NULL) @@ -843,7 +844,7 @@ void sub_8099220(struct unkStruct_20398C8 *param_1, s16 param_2) gUnknown_203B49C = TRUE; gUnknown_203B49D = 0; gUnknown_20398C4 = param_2_s32; - memcpy(&gUnknown_20398C8, param_1, sizeof(struct unkStruct_20398C8)); + memcpy(&gUnknown_20398C8, param_1, sizeof(struct DungeonSetupInfo)); } else { gUnknown_203B49C = FALSE; @@ -860,7 +861,7 @@ void sub_809927C(u8 param_1) gUnknown_2039950 = param_1; SetScriptVarValue(0x0,DUNGEON_ENTER,0x50); SetScriptVarValue(0x0,DUNGEON_ENTER_INDEX,gUnknown_2039950); - sub_8095494(&gUnknown_20398C8.unk10,param_1); + sub_8095494(&gUnknown_20398C8.dungeonSeed,param_1); gUnknown_20398C8.unkB = 1; gUnknown_20398C8.unkC = 0; gUnknown_20398C8.unk4 = 0; diff --git a/src/ground_script.c b/src/ground_script.c index 3567d2993..05a8fa911 100644 --- a/src/ground_script.c +++ b/src/ground_script.c @@ -39,6 +39,7 @@ #include "pokemon.h" #include "wigglytuff_shop1.h" #include "wonder_mail.h" +#include "structs/str_dungeon_setup.h" void GroundMap_Select(s16); @@ -140,7 +141,7 @@ bool8 sub_809B18C(s32 *sp); bool8 sub_809AFFC(u8 *); bool8 sub_809D234(void); s32 sub_80A14E8(Action *, u8, u32, s32); -u8 sub_80990EC(struct unkStruct_20398C8 *param_1, s32 param_2); +u8 sub_80990EC(struct DungeonSetupInfo *param_1, s32 param_2); extern char gUnknown_81165D4[]; extern char gUnknown_81165F4[]; @@ -1033,13 +1034,13 @@ s16 HandleAction(Action *action, DebugLocation *debug) if (action->scriptData.branchDiscriminant == 1) { s32 dungeonEnter; u32 res; - struct unkStruct_20398C8 unkStruct; + struct DungeonSetupInfo unkStruct; dungeonEnter = (s16)GetScriptVarValue(NULL, 19); if (sub_80990EC(&unkStruct, dungeonEnter)) { s32 val; sub_8099220(&unkStruct, dungeonEnter); val = sub_80023E4(6); - res = sub_809034C(unkStruct.unk0, 0, gUnknown_203B4B0, val, 0); + res = sub_809034C(unkStruct.unk0.id, 0, gUnknown_203B4B0, val, 0); gUnknown_2039DA4 = res; switch (res) { case 2: { diff --git a/src/main_loops.c b/src/main_loops.c index 2dcaeefbd..5260bc08b 100644 --- a/src/main_loops.c +++ b/src/main_loops.c @@ -2,7 +2,7 @@ #include "globaldata.h" #include "constants/bg_music.h" #include "constants/main_menu.h" -#include "structs/str_dungeon_8042F6C.h" +#include "structs/str_dungeon_setup.h" #include "bg_control.h" #include "bg_palette_buffer.h" #include "code_800558C.h" @@ -72,7 +72,7 @@ static void NDS_LoadOverlay_GroundMain(); static u32 sub_80009D0(u32 param_1); /* static */ // TODO: Uncomment void sub_80011E8(u8 *param_1); -static void LoadAndRunDungeon_Async(UnkStruct_RunDungeon *r0); +static void LoadAndRunDungeon_Async(DungeonSetupStruct *r0); /* static */ // TODO: Uncomment u32 xxx_script_related_8001334(u32 r0); static void MainLoops_RunFrameActions(u32 unused); @@ -1217,7 +1217,7 @@ static u32 sub_80009D0(u32 param_1) // It'd also be cool to see what happens if a quicksave load fails and the dungeon is skipped entirely // arm9.bin::0200D01C /* static */ // TODO: Uncomment -void LoadAndRunQuickSaveDungeon_Async(UnkStruct_RunDungeon *param_1) +void LoadAndRunQuickSaveDungeon_Async(DungeonSetupStruct *param_1) { u8 quickSaveValid; s32 quickSaveStatus; @@ -1231,11 +1231,11 @@ void LoadAndRunQuickSaveDungeon_Async(UnkStruct_RunDungeon *param_1) sub_8014144(); sub_8043D50(&local_1c, &local_18); - param_1->unk74 = MemoryAlloc(local_1c, 7); // size: 0x4800 - param_1->unk78 = MemoryAlloc(local_18, 7); // size: sizeof(Dungeon) + param_1->info.unk74 = MemoryAlloc(local_1c, 7); // size: 0x4800 + param_1->info.unk78 = MemoryAlloc(local_18, 7); // size: sizeof(Dungeon) - if (param_1->unk8) { - PrepareQuickSaveRead(param_1->unk74, local_1c); + if (param_1->info.unk4) { + PrepareQuickSaveRead(param_1->info.unk74, local_1c); while (TRUE) { if (!ReadQuickSave()) @@ -1267,26 +1267,26 @@ void LoadAndRunQuickSaveDungeon_Async(UnkStruct_RunDungeon *param_1) sub_8099690(0); } else - param_1->unk7C = 5; + param_1->info.unk7C = 5; - if (param_1->unk7C == -2) - sub_809542C(¶m_1->unk84); + if (param_1->info.unk7C == -2) + sub_809542C(¶m_1->info.unk84); - if (param_1->unk7C == 3 || param_1->unk7C == -2) { - SetDungeonLocationInfo(¶m_1->unk80); + if (param_1->info.unk7C == 3 || param_1->info.unk7C == -2) { + SetDungeonLocationInfo(¶m_1->info.unk80); xxx_call_stop_bgm(); - if (param_1->unk7C == -2) - PrepareQuickSaveWrite(param_1->unk74, local_1c, 1); + if (param_1->info.unk7C == -2) + PrepareQuickSaveWrite(param_1->info.unk74, local_1c, 1); else - PrepareQuickSaveWrite(param_1->unk74, local_1c, 0); + PrepareQuickSaveWrite(param_1->info.unk74, local_1c, 0); while ((quickSaveStatus = WriteQuickSave(), (quickSaveStatus != 2))) { if (quickSaveStatus == 3) break; if (quickSaveStatus == 1) { - MemoryFree(param_1->unk78); - MemoryFree(param_1->unk74); + MemoryFree(param_1->info.unk78); + MemoryFree(param_1->info.unk74); } MainLoops_RunFrameActions(0); @@ -1295,8 +1295,8 @@ void LoadAndRunQuickSaveDungeon_Async(UnkStruct_RunDungeon *param_1) } else { sub_808ED00(); - MemoryFree(param_1->unk78); - MemoryFree(param_1->unk74); + MemoryFree(param_1->info.unk78); + MemoryFree(param_1->info.unk74); } } @@ -1456,7 +1456,7 @@ static void NDS_LoadOverlay_GroundMain() } // arm9.bin::0200CADC -static void nullsub_2(UnkStruct_RunDungeon *r0) +static void nullsub_2(DungeonSetupStruct *r0) { // (not a nullsub in the NDS) // Probably loads the dungeon overlay? @@ -1470,7 +1470,7 @@ u32 xxx_script_related_8001334(u32 r0) } // arm9.bin::0200CA1C -static void LoadAndRunDungeon_Async(UnkStruct_RunDungeon *r0) +static void LoadAndRunDungeon_Async(DungeonSetupStruct *r0) { nullsub_2(r0); RunDungeon_Async(r0); diff --git a/src/run_dungeon.c b/src/run_dungeon.c index 6804c2a3f..8c4c5650a 100644 --- a/src/run_dungeon.c +++ b/src/run_dungeon.c @@ -141,7 +141,7 @@ static const s16 sDeoxysForms[4] = {MONSTER_DEOXYS_NORMAL, MONSTER_DEOXYS_ATTACK // This functions is the main 'loop' when the player is in a Dungeon. It runs from the moment the player enters a dungeon, until they leave(by completing or by fainting). // arm9.bin::0206A848 -void RunDungeon_Async(UnkStruct_RunDungeon *r8) +void RunDungeon_Async(DungeonSetupStruct *r8) { bool8 check; Entity *leader;