diff --git a/include/structs/str_dungeon_setup.h b/include/structs/str_dungeon_setup.h index 24b263017..c22c15612 100644 --- a/include/structs/str_dungeon_setup.h +++ b/include/structs/str_dungeon_setup.h @@ -7,7 +7,8 @@ #include "structs/str_pokemon.h" #include "structs/str_wonder_mail.h" -typedef struct DungeonSetupInfo +// Apparently used in Dungeon and World Map SetUp Structs +typedef struct DungeonSetupSubstruct { DungeonLocation unk0; u8 unk4; @@ -20,6 +21,11 @@ typedef struct DungeonSetupInfo u8 unkB; u8 unkC; u8 unkD; +} DungeonSetupSubstruct; + +typedef struct DungeonSetupInfo +{ + DungeonSetupSubstruct sub0; // TODO: find a better name DungeonMailSeed dungeonSeed; PokemonStruct1 unk18; u8 *unk74; diff --git a/src/ground_main.c b/src/ground_main.c index 79bbafea4..10eccf673 100644 --- a/src/ground_main.c +++ b/src/ground_main.c @@ -759,7 +759,7 @@ const char *sub_80990B8(void) static inline bool8 sub_80990EC_sub(struct DungeonSetupInfo *iVar1, u32 iVar2) { bool8 flag = FALSE; - iVar1->unkB = 0; + iVar1->sub0.unkB = 0; if ((u16)(iVar2 - 0x25) < 3) flag = TRUE; @@ -775,21 +775,20 @@ u8 sub_80990EC(struct DungeonSetupInfo *param_1, s16 param_2) const DungeonInfo *iVar1; u8 auStack_98 [24]; u8 nameBuffer [24]; - u8 r5; u8 dungeonIndex; iVar1 = GetDungeonInfo_80A2608(param_2); dungeonIndex = iVar1->dungeonIndex; - r5 = 0; - param_1->unk0.id = dungeonIndex; - param_1->unk0.floor = 1; - param_1->unkC = r5; + + param_1->sub0.unk0.id = dungeonIndex; + param_1->sub0.unk0.floor = 1; + param_1->sub0.unkC = 0; switch(sub_80A2750(param_2)) { case 1: if (sub_80990EC_sub(param_1, param_2)) { - param_1->unkC = 1; + param_1->sub0.unkC = 1; sub_80A8EC0(auStack_98, 0x5b); BoundedCopyStringtoBuffer(nameBuffer, auStack_98, POKEMON_NAME_LENGTH); { @@ -813,14 +812,14 @@ u8 sub_80990EC(struct DungeonSetupInfo *param_1, s16 param_2) } break; case 4: - param_1->unkB = 0; + param_1->sub0.unkB = 0; break; case 2: - param_1->unkB = 2; + param_1->sub0.unkB = 2; break; } - param_1->unk4 = 0; - param_1->unkD = 0; + param_1->sub0.unk4 = 0; + param_1->sub0.unkD = 0; return iVar1->unk11; } @@ -862,8 +861,8 @@ void sub_809927C(u8 param_1) SetScriptVarValue(0x0,DUNGEON_ENTER,0x50); SetScriptVarValue(0x0,DUNGEON_ENTER_INDEX,gUnknown_2039950); sub_8095494(&gUnknown_20398C8.dungeonSeed,param_1); - gUnknown_20398C8.unkB = 1; - gUnknown_20398C8.unkC = 0; - gUnknown_20398C8.unk4 = 0; - gUnknown_20398C8.unkD = 0; + gUnknown_20398C8.sub0.unkB = 1; + gUnknown_20398C8.sub0.unkC = 0; + gUnknown_20398C8.sub0.unk4 = 0; + gUnknown_20398C8.sub0.unkD = 0; } diff --git a/src/ground_script.c b/src/ground_script.c index 05a8fa911..8b60f13fd 100644 --- a/src/ground_script.c +++ b/src/ground_script.c @@ -1040,7 +1040,7 @@ s16 HandleAction(Action *action, DebugLocation *debug) s32 val; sub_8099220(&unkStruct, dungeonEnter); val = sub_80023E4(6); - res = sub_809034C(unkStruct.unk0.id, 0, gUnknown_203B4B0, val, 0); + res = sub_809034C(unkStruct.sub0.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 5260bc08b..3f9a6574e 100644 --- a/src/main_loops.c +++ b/src/main_loops.c @@ -45,6 +45,7 @@ #include "text_2.h" #include "text_3.h" #include "text_util.h" +#include "structs/str_dungeon_setup.h" typedef struct unkTalkTable { @@ -71,7 +72,7 @@ static void LoadTitleScreen(void); static void NDS_LoadOverlay_GroundMain(); static u32 sub_80009D0(u32 param_1); /* static */ // TODO: Uncomment -void sub_80011E8(u8 *param_1); +void sub_80011E8(DungeonSetupSubstruct *info); static void LoadAndRunDungeon_Async(DungeonSetupStruct *r0); /* static */ // TODO: Uncomment u32 xxx_script_related_8001334(u32 r0); @@ -1234,7 +1235,7 @@ void LoadAndRunQuickSaveDungeon_Async(DungeonSetupStruct *param_1) param_1->info.unk74 = MemoryAlloc(local_1c, 7); // size: 0x4800 param_1->info.unk78 = MemoryAlloc(local_18, 7); // size: sizeof(Dungeon) - if (param_1->info.unk4) { + if (param_1->info.sub0.unk4) { PrepareQuickSaveRead(param_1->info.unk74, local_1c); while (TRUE) { @@ -1375,35 +1376,33 @@ u8 sub_8001170(void) // arm9.bin::0200CDA4 /* static */ // TODO: Uncomment -void sub_80011CC(u8 *param_1, u8 param_2) +void sub_80011CC(DungeonSetupSubstruct *info, u8 dungId) { - u32 zero = 0; + info->unk0.id = dungId; + info->unk0.floor = 0; - param_1[0] = param_2; - param_1[1] = zero; + sub_80011E8(info); - sub_80011E8(param_1); - - param_1[11] = 0; - param_1[4] = 0; - param_1[12] = 0; - param_1[13] = 0; + info->unkB = 0; + info->unk4 = 0; + info->unkC = 0; + info->unkD = 0; } // arm9.bin::0200CD1C /* static */ // TODO: Uncomment -void sub_80011E8(u8 *param_1) +void sub_80011E8(DungeonSetupSubstruct *info) { - param_1[5] = sub_80023E4(8); - param_1[6] = sub_80023E4(3); - param_1[8] = sub_80023E4(7); - param_1[9] = sub_80023E4(0); - param_1[10] = sub_80023E4(5); + info->unk5 = sub_80023E4(8); + info->unk6 = sub_80023E4(3); + info->unk8 = sub_80023E4(7); + info->unk9 = sub_80023E4(0); + info->unkA = sub_80023E4(5); if (sub_80023E4(24) && sub_80023E4(25) && sub_80023E4(26)) - param_1[7] = 1; + info->unk7 = 1; else - param_1[7] = 0; + info->unk7 = 0; } // arm9.bin::0200CC4C