diff --git a/include/friend_areas_map.h b/include/friend_areas_map.h index 8a9eac10e..a35c02dbc 100644 --- a/include/friend_areas_map.h +++ b/include/friend_areas_map.h @@ -93,17 +93,17 @@ struct FriendAreasMap extern struct FriendAreasMap *gFriendAreasMapPtr; -struct struct_unk800F990 +struct FriendAreasMapSetupStruct { u32 unk0; u8 startingFriendAreaId; u8 unk5; struct FriendAreasMap *friendAreasMapPtr; - u8 unkC; + u8 chosenAreaId; u8 fillD[168]; }; -void ShowFriendAreasMap_Async(struct struct_unk800F990 *param_1); +void ShowFriendAreasMap_Async(struct FriendAreasMapSetupStruct *setupPtr); void PrintFriendAreaNameInMap(u8 *strBuffer, u8 index); bool8 IsFriendAreaShownOnMap(u8 friendAreaId); diff --git a/include/structs/str_dungeon_setup.h b/include/structs/str_dungeon_setup.h index c22c15612..bdba5a548 100644 --- a/include/structs/str_dungeon_setup.h +++ b/include/structs/str_dungeon_setup.h @@ -27,9 +27,9 @@ typedef struct DungeonSetupInfo { DungeonSetupSubstruct sub0; // TODO: find a better name DungeonMailSeed dungeonSeed; - PokemonStruct1 unk18; + PokemonStruct1 mon; u8 *unk74; - Dungeon *unk78; + Dungeon *dungeon; s16 unk7C; // Set to 5 if the dungeon was skipped (quicksave read failed) u8 unk7E; DungeonLocation unk80; diff --git a/include/world_map.h b/include/world_map.h index 3865f575e..30dbda41f 100644 --- a/include/world_map.h +++ b/include/world_map.h @@ -33,23 +33,23 @@ struct WorldMap u8 unk5E98[1500]; }; -struct UnkStruct_sub_8010494 +struct WorldMapInfo { - DungeonLocation unk0; + DungeonLocation startLocation; DungeonSetupSubstruct unk4; PokemonStruct1 mon; u8 unk6C; u8 unk6D[63]; }; -struct UnkStruct_sub_8010268 +struct WorldMapSetupStruct { u8 fill0[4]; - struct UnkStruct_sub_8010494 unk4; - struct WorldMap *unkB0; - u8 unkB4; + struct WorldMapInfo info; + struct WorldMap *worldMap; + bool8 dungeonEntered; // Some dungeons have specific requirements, where it's not always possible to enter chosen dungeon. }; -void ShowWorldMap_Async(struct UnkStruct_sub_8010268 *r5); +void ShowWorldMap_Async(struct WorldMapSetupStruct *setupPtr); #endif diff --git a/src/friend_areas_map.c b/src/friend_areas_map.c index e77d4eecb..e18ca7eb4 100644 --- a/src/friend_areas_map.c +++ b/src/friend_areas_map.c @@ -35,18 +35,18 @@ static u8 GetChosenDirection(void); static void InitMapLocations(u8 startingFriendAreaId); static void MoveToNewLocation_Async(s32 destLocationId, s32 direction, s32 nFrames); -void ShowFriendAreasMap_Async(struct struct_unk800F990 *param_1) +void ShowFriendAreasMap_Async(struct FriendAreasMapSetupStruct *setupPtr) { - gFriendAreasMapPtr = param_1->friendAreasMapPtr; + gFriendAreasMapPtr = setupPtr->friendAreasMapPtr; gUnknown_2026E4E = 0x1010; sub_80095CC(0, 20); UpdateFadeInTile(2); gFriendAreasMapPtr->locationsInfo = sFriendAreaLocations[0]; - gFriendAreasMapPtr->unk4A2C = param_1->unk5; + gFriendAreasMapPtr->unk4A2C = setupPtr->unk5; FriendAreasMap_InitGfx(); gFriendAreasMapPtr->unk4A28 = -1; gFriendAreasMapPtr->unk4A1C = -1; - InitMapLocations(param_1->startingFriendAreaId); + InitMapLocations(setupPtr->startingFriendAreaId); gFriendAreasMapPtr->locationIdOnBPress = gFriendAreasMapPtr->teamBaseLocationId; sCurrDirection = 0xff; sHeldDpadCounter = 0; @@ -63,12 +63,12 @@ void ShowFriendAreasMap_Async(struct struct_unk800F990 *param_1) else if (inputRet == 2) { if (!ChooseAreaInLocation_Async()) continue; - param_1->unkC = gFriendAreasMapPtr->chosenFriendAreaId; + setupPtr->chosenAreaId = gFriendAreasMapPtr->chosenFriendAreaId; break; } else if (inputRet == 3) { if (gFriendAreasMapPtr->currLocationId == gFriendAreasMapPtr->locationIdOnBPress) { - param_1->unkC = 0; + setupPtr->chosenAreaId = FRIEND_AREA_NONE; break; } MoveToNewLocation_Async(gFriendAreasMapPtr->locationIdOnBPress, DIRECTION_SOUTH, 10); diff --git a/src/ground_main.c b/src/ground_main.c index 10eccf673..d1c32f282 100644 --- a/src/ground_main.c +++ b/src/ground_main.c @@ -807,7 +807,7 @@ u8 sub_80990EC(struct DungeonSetupInfo *param_1, s16 param_2) .currExp = 25000, }; - sub_808D144(¶m_1->unk18, &stack); + sub_808D144(¶m_1->mon, &stack); } } break; diff --git a/src/main_loops.c b/src/main_loops.c index 5cb3c82ec..f96dc9a94 100644 --- a/src/main_loops.c +++ b/src/main_loops.c @@ -48,6 +48,7 @@ #include "world_map.h" #include "friend_areas_map.h" #include "structs/str_dungeon_setup.h" +#include "constants/friend_area.h" typedef struct unkTalkTable { @@ -77,8 +78,8 @@ static void sub_80011CC(DungeonSetupSubstruct *info, u8 dungId); static void sub_80011E8(DungeonSetupSubstruct *info); static void LoadAndRunQuickSaveDungeon_Async(DungeonSetupStruct *param_1); static u8 sub_8001170(void); -static void sub_8001248(void); -static void sub_80012C0(void); +static void RemoveMoneyAndRandomItems(void); +static void RemoveAllMoneyAndItems(void); static void LoadAndRunDungeon_Async(DungeonSetupStruct *r0); static u32 xxx_script_related_8001334(u32 r0); static void MainLoops_RunFrameActions(u32 unused); @@ -594,163 +595,163 @@ static void sub_80008C0_Async(u32 errorKind) } // arm9.bin::0200D1E0 -u32 sub_80009D0(u32 a0) +static u32 sub_80009D0(u32 a0) { - s32 r7 = GetScriptVarValue(NULL, 0x18); + s32 mode = GetScriptVarValue(NULL, START_MODE); bool8 ret = FALSE; sub_801180C(); FadeOutAllMusic(0x10); - if (r7 == 7) { + if (mode == 7) { if (a0 == 2) { - r7 = 8; + mode = 8; } else if (a0 == 3) { - r7 = 11; - SetScriptVarValue(NULL, 0x18, 0xB); + mode = 11; + SetScriptVarValue(NULL, START_MODE, 11); sub_8096BD0(); QuickSave_Async(3); } } - else if (r7 != 0 && r7 != 11) { - r7 = 1; + else if (mode != 0 && mode != 11) { + mode = 1; } - ClearScriptVarArray(NULL, 0x41); + ClearScriptVarArray(NULL, EVENT_S08E01); while (1) { s32 r5; - struct struct_unk800F990 friendAreasSetup; - struct UnkStruct_sub_8010268 worldMapSetup; + struct FriendAreasMapSetupStruct friendAreasSetup; + struct WorldMapSetupStruct worldMapSetup; DungeonSetupStruct dungeonSetup; s16 sp552; - if (r7 == 4) { - u8 mapId = sub_8002658(GetScriptVarValue(NULL,0xd)); + if (mode == 4) { + u8 mapId = sub_8002658(GetScriptVarValue(NULL,GROUND_ENTER)); - friendAreasSetup.friendAreasMapPtr = MemoryAlloc(0x4e30,8); + friendAreasSetup.friendAreasMapPtr = MemoryAlloc(sizeof(*friendAreasSetup.friendAreasMapPtr),8); friendAreasSetup.startingFriendAreaId = mapId; friendAreasSetup.unk5 = sub_80023E4(9); ShowFriendAreasMap_Async(&friendAreasSetup); MemoryFree(friendAreasSetup.friendAreasMapPtr); - if (friendAreasSetup.unkC != 0x3A) { + if (friendAreasSetup.chosenAreaId != NUM_FRIEND_AREAS) { s32 val; - u8 a = friendAreasSetup.unkC; - if (a != 0) { - val = sub_8002694(a); + u32 areaId = friendAreasSetup.chosenAreaId; + if (areaId != FRIEND_AREA_NONE) { + val = sub_8002694(areaId); } else { val = 9; } - SetScriptVarValue(NULL,0xd,val); - SetScriptVarValue(NULL,0xe,0); + SetScriptVarValue(NULL,GROUND_ENTER,val); + SetScriptVarValue(NULL,GROUND_ENTER_LINK,0); } - r7 = 2; + mode = 2; continue; } - else if (r7 == 5) { + else if (mode == 5) { s32 i; - s32 r8 = (s16) GetScriptVarValue(NULL, 0x12); - u8 r6 = sub_80A2740(r8); + s32 dungId = (s16) GetScriptVarValue(NULL, DUNGEON_SELECT); + u8 r6 = sub_80A2740(dungId); for (i = 0; i < 63; i++) { - worldMapSetup.unk4.unk6D[i] = sub_80A28F0(i); + worldMapSetup.info.unk6D[i] = sub_80A28F0(i); } if (r6 == 99) { - r7 = 2; + mode = 2; continue; } - worldMapSetup.unk4.unk0.id = DUNGEON_OUT_ON_RESCUE; - sub_80011CC(&worldMapSetup.unk4.unk4, r6); - worldMapSetup.unk4.unk6C = worldMapSetup.unk4.unk4.unk5; - switch ((s16) sub_80A2750(r8)) { + worldMapSetup.info.startLocation.id = DUNGEON_OUT_ON_RESCUE; + sub_80011CC(&worldMapSetup.info.unk4, r6); + worldMapSetup.info.unk6C = worldMapSetup.info.unk4.unk5; + switch ((s16) sub_80A2750(dungId)) { case 1: - if (sub_80990EC(&dungeonSetup.info, r8)) { - worldMapSetup.unk4.unk4.unkC = dungeonSetup.info.sub0.unkC; - worldMapSetup.unk4.mon = dungeonSetup.info.unk18; + if (sub_80990EC(&dungeonSetup.info, dungId)) { + worldMapSetup.info.unk4.unkC = dungeonSetup.info.sub0.unkC; + worldMapSetup.info.mon = dungeonSetup.info.mon; } break; case 2: - if (sub_8096A08(worldMapSetup.unk4.unk4.unk0.id, &worldMapSetup.unk4.mon)) { - worldMapSetup.unk4.unk4.unkC = 1; + if (sub_8096A08(worldMapSetup.info.unk4.unk0.id, &worldMapSetup.info.mon)) { + worldMapSetup.info.unk4.unkC = 1; } else { - worldMapSetup.unk4.unk4.unkC = 0; + worldMapSetup.info.unk4.unkC = 0; } break; } - worldMapSetup.unkB0 = MemoryAlloc(sizeof(*worldMapSetup.unkB0), 8); + worldMapSetup.worldMap = MemoryAlloc(sizeof(*worldMapSetup.worldMap), 8); ShowWorldMap_Async(&worldMapSetup); - MemoryFree(worldMapSetup.unkB0); - if (worldMapSetup.unkB4 == 0) { - r7 = 2; + MemoryFree(worldMapSetup.worldMap); + if (!worldMapSetup.dungeonEntered) { + mode = 2; continue; } - SetScriptVarValue(NULL, 0x13, r8); + SetScriptVarValue(NULL, DUNGEON_ENTER, dungId); sUnknown_203B03C = 2; sub_800A8F8(4); r5 = xxx_script_related_8001334(5); } - else if (r7 == 8) { + else if (mode == 8) { r5 = 0; } - else if (r7 == 7) { + else if (mode == 7) { r5 = 2; } else { - if (r7 == 11) { - sub_80012C0(); + if (mode == 11) { + RemoveAllMoneyAndItems(); } - else if (r7 == 12) { - sub_8001248(); + else if (mode == 12) { + RemoveMoneyAndRandomItems(); } sUnknown_203B03C = 2; sub_800A8F8(4); - r5 = xxx_script_related_8001334(r7); + r5 = xxx_script_related_8001334(mode); if (r5 == 14) { break; } else if (r5 == 5) { - r7 = 4; + mode = 4; continue; } else if (r5 == 6) { - r7 = 5; + mode = 5; continue; } } dungeonSetup.info.sub0.unkD = 0; dungeonSetup.info.sub0.unkC = 0; - MemoryFill8(&dungeonSetup.info.unk18, 0, sizeof(dungeonSetup.info.unk18)); - dungeonSetup.info.unk18.speciesNum = 0; + MemoryFill8(&dungeonSetup.info.mon, 0, sizeof(dungeonSetup.info.mon)); + dungeonSetup.info.mon.speciesNum = 0; if (r5 == 7) { if (!sub_80991E0(&dungeonSetup.info, &sp552)) { r5 = 13; - r7 = 9; + mode = 9; } } else if (r5 == 8) { if (!sub_80991E0(&dungeonSetup.info, &sp552)) { r5 = 13; - r7 = 9; + mode = 9; } - else if (sub_8096A08(dungeonSetup.info.sub0.unk0.id, &dungeonSetup.info.unk18)) { + else if (sub_8096A08(dungeonSetup.info.sub0.unk0.id, &dungeonSetup.info.mon)) { dungeonSetup.info.sub0.unkC = 1; } } else if (r5 == 10) { if (!sub_80991E0(&dungeonSetup.info, &sp552)) { r5 = 13; - r7 = 9; + mode = 9; } } else if (r5 == 9) { if (!sub_80991E0(&dungeonSetup.info, &sp552)) { r5 = 11; - r7 = 12; + mode = 12; } } else if (r5 == 0) { @@ -761,7 +762,7 @@ u32 sub_80009D0(u32 a0) dungeonSetup.info.sub0.unkB = 0; if (gUnknown_203B484->unk4.speciesNum != 0) { dungeonSetup.info.sub0.unkC = 1; - dungeonSetup.info.unk18 = gUnknown_203B484->unk4; + dungeonSetup.info.mon = gUnknown_203B484->unk4; } else { dungeonSetup.info.sub0.unkC = 0; @@ -771,12 +772,12 @@ u32 sub_80009D0(u32 a0) } else if (var == 0xF1208) { r5 = 1; - r7 = 11; + mode = 11; sub_8096BD0(); } else { r5 = 1; - r7 = 11; + mode = 11; sub_8096BD0(); } @@ -795,12 +796,12 @@ u32 sub_80009D0(u32 a0) } else if (var == 0xF1208) { r5 = 1; - r7 = 11; + mode = 11; sub_8096BD0(); } else { r5 = 1; - r7 = 11; + mode = 11; sub_8096BD0(); } } @@ -811,16 +812,16 @@ u32 sub_80009D0(u32 a0) if (r5 == 3) { u8 r4 = sub_8001170(); r5 = 1; - r7 = 11; + mode = 11; sub_8096BD0(); if (r4 != 63 && r4 != 99 && IsEnterWithoutGameSave(r4)) { if (sub_8011C1C() == 2) { r5 = 3; - r7 = 7; + mode = 7; } else { r5 = 12; - r7 = 10; + mode = 10; } } @@ -830,12 +831,12 @@ u32 sub_80009D0(u32 a0) } else if (r5 == 4) { r5 = 1; - r7 = 11; + mode = 11; sub_8096BD0(); sub_80008C0_Async(1); } else if (r5 == 1) { - r7 = 11; + mode = 11; sub_8096BD0(); } } @@ -880,22 +881,22 @@ u32 sub_80009D0(u32 a0) switch (dungeonSetup.info.unk7C) { case 1: case 4: - r7 = 9; + mode = 9; SetScriptVarArrayValue(NULL, 0x41, 0, (dungeonSetup.info.unk7E != 0) ? 2 : 1); break; case 2: - r7 = 10; + mode = 10; break; case -1: - r7 = 12; + mode = 12; sub_8096BD0(); break; case 5: - r7 = 11; + mode = 11; sub_8096BD0(); break; default: - r7 = 11; + mode = 11; sub_8096BD0(); break; } @@ -914,17 +915,17 @@ static void LoadAndRunQuickSaveDungeon_Async(DungeonSetupStruct *param_1) u8 quickSaveValid; s32 quickSaveStatus; s32 local_1c; // 0x4800 - s32 local_18; // sizeof(Dungeon) + s32 dungeonStructSize; // sizeof(Dungeon) quickSaveValid = TRUE; sUnknown_203B03C = 1; sub_800A8F8(3); sub_8014144(); - sub_8043D50(&local_1c, &local_18); + sub_8043D50(&local_1c, &dungeonStructSize); param_1->info.unk74 = MemoryAlloc(local_1c, 7); // size: 0x4800 - param_1->info.unk78 = MemoryAlloc(local_18, 7); // size: sizeof(Dungeon) + param_1->info.dungeon = MemoryAlloc(dungeonStructSize, 7); // size: sizeof(Dungeon) if (param_1->info.sub0.unk4) { PrepareQuickSaveRead(param_1->info.unk74, local_1c); @@ -977,7 +978,7 @@ static void LoadAndRunQuickSaveDungeon_Async(DungeonSetupStruct *param_1) if (quickSaveStatus == 3) break; if (quickSaveStatus == 1) { - MemoryFree(param_1->info.unk78); + MemoryFree(param_1->info.dungeon); MemoryFree(param_1->info.unk74); } @@ -987,7 +988,7 @@ static void LoadAndRunQuickSaveDungeon_Async(DungeonSetupStruct *param_1) } else { sub_808ED00(); - MemoryFree(param_1->info.unk78); + MemoryFree(param_1->info.dungeon); MemoryFree(param_1->info.unk74); } } @@ -1094,19 +1095,19 @@ static void sub_80011E8(DungeonSetupSubstruct *info) } // arm9.bin::0200CC4C -static void sub_8001248(void) +static void RemoveMoneyAndRandomItems(void) { - s32 index; + s32 i; - for (index = 0; index < INVENTORY_SIZE; index++) { + for (i = 0; i < INVENTORY_SIZE; i++) { if (RandInt(100) < 50) - ZeroOutItem(&gTeamInventoryRef->teamItems[index]); + ZeroOutItem(&gTeamInventoryRef->teamItems[i]); } FillInventoryGaps(); - for (index = 0; index < NUM_MONSTERS; index++) { - PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[index]; + for (i = 0; i < NUM_MONSTERS; i++) { + PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[i]; if (PokemonFlag1(mon) && PokemonFlag2(mon)) mon->heldItem.id = ITEM_NOTHING; } @@ -1115,18 +1116,18 @@ static void sub_8001248(void) } // arm9.bin::0200CB88 -static void sub_80012C0(void) +static void RemoveAllMoneyAndItems(void) { - s32 index; + s32 i; - for (index = 0; index < INVENTORY_SIZE; index++) { - ZeroOutItem(&gTeamInventoryRef->teamItems[index]); + for (i = 0; i < INVENTORY_SIZE; i++) { + ZeroOutItem(&gTeamInventoryRef->teamItems[i]); } FillInventoryGaps(); - for (index = 0; index < NUM_MONSTERS; index++) { - PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[index]; + for (i = 0; i < NUM_MONSTERS; i++) { + PokemonStruct1 *mon = &gRecruitedPokemonRef->pokemon[i]; if (PokemonFlag1(mon) && PokemonFlag2(mon)) mon->heldItem.id = ITEM_NOTHING; } @@ -1154,10 +1155,10 @@ static u32 xxx_script_related_8001334(u32 r0) } // arm9.bin::0200CA1C -static void LoadAndRunDungeon_Async(DungeonSetupStruct *r0) +static void LoadAndRunDungeon_Async(DungeonSetupStruct *setupPtr) { - nullsub_2(r0); - RunDungeon_Async(r0); + nullsub_2(setupPtr); + RunDungeon_Async(setupPtr); NDS_LoadOverlay_GroundMain(); } diff --git a/src/run_dungeon.c b/src/run_dungeon.c index 8c4c5650a..6b7c44f91 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(DungeonSetupStruct *r8) +void RunDungeon_Async(DungeonSetupStruct *setupPtr) { bool8 check; Entity *leader; @@ -154,11 +154,11 @@ void RunDungeon_Async(DungeonSetupStruct *r8) RGB color; gUnknown_203B40C = 0; - r6 = r8->unk8; - r9 = r8->unk11; - r10 = r8->unk10; - gSerializedData_203B41C = r8->unk74; - gDungeon = r8->unk78; + r6 = setupPtr->info.sub0.unk4; + r9 = setupPtr->info.sub0.unkD; + r10 = setupPtr->info.sub0.unkC; + gSerializedData_203B41C = setupPtr->info.unk74; + gDungeon = setupPtr->info.dungeon; if (!r6) { *gSerializedData_203B41C = 0; } @@ -173,20 +173,20 @@ void RunDungeon_Async(DungeonSetupStruct *r8) gPlayerDotMapPosition.x = 100; if (!r6) { - gDungeon->unk644.unk34 = r8->unkF; - gDungeon->unk644.dungeonSeed = r8->dungeonSeed; - gDungeon->unk644.windTurns = GetTurnLimit(r8->unk4.id); + gDungeon->unk644.unk34 = setupPtr->info.sub0.unkB; + gDungeon->unk644.dungeonSeed = setupPtr->info.dungeonSeed; + gDungeon->unk644.windTurns = GetTurnLimit(setupPtr->info.sub0.unk0.id); gDungeon->unk644.unk36 = 0; - gDungeon->unk644.unk37 = GetRescuesAllowed(r8->unk4.id); + gDungeon->unk644.unk37 = GetRescuesAllowed(setupPtr->info.sub0.unk0.id); } gDungeon->unk644.unk54 = 0; gDungeon->unk644.unk55 = 0; - gDungeon->unk644.unk18 = r8->unk9; - gDungeon->unk644.unk16 = r8->unkC; - gDungeon->unk644.canRecruit = r8->unkA; - gDungeon->unk644.unk15 = r8->unkB; - gDungeon->unk644.hasInventory = r8->unkD; - gDungeon->unk644.unk19 = r8->unkE; + gDungeon->unk644.unk18 = setupPtr->info.sub0.unk5; + gDungeon->unk644.unk16 = setupPtr->info.sub0.unk8; + gDungeon->unk644.canRecruit = setupPtr->info.sub0.unk6; + gDungeon->unk644.unk15 = setupPtr->info.sub0.unk7; + gDungeon->unk644.hasInventory = setupPtr->info.sub0.unk9; + gDungeon->unk644.unk19 = setupPtr->info.sub0.unkA; StopDungeonBGM(); sub_803D4AC(); sub_804513C(); @@ -216,11 +216,11 @@ void RunDungeon_Async(DungeonSetupStruct *r8) gDungeon->unk181e8.allTilesRevealed = 1; gDungeon->unk181e8.unk1820C = 1; if (gDungeon->unk644.unk34 == 1) { - gDungeon->unk644.dungeonLocation.id = r8->dungeonSeed.location.id; + gDungeon->unk644.dungeonLocation.id = setupPtr->info.dungeonSeed.location.id; gDungeon->unk644.dungeonLocation.floor = 1; } else { - gDungeon->unk644.dungeonLocation = r8->unk4; + gDungeon->unk644.dungeonLocation = setupPtr->info.sub0.unk0; } gDungeon->unk644.unk30 = 0; @@ -228,7 +228,7 @@ void RunDungeon_Async(DungeonSetupStruct *r8) } if (!r6) { if (gDungeon->unk644.unk34 == 1) { - gDungeon->unk644.unk38 = r8->dungeonSeed.seed; + gDungeon->unk644.unk38 = setupPtr->info.dungeonSeed.seed; } else { gDungeon->unk644.unk38 = Rand32Bit() & 0xFFFFFF; @@ -253,11 +253,11 @@ void RunDungeon_Async(DungeonSetupStruct *r8) } if (r10) { - r8->unk1C.heldItem.id = 0; + setupPtr->info.mon.heldItem.id = 0; if (IsLevelResetTo1(gDungeon->unk644.dungeonLocation.id)) { - sub_808D0D8(&r8->unk1C); + sub_808D0D8(&setupPtr->info.mon); } - sub_8068A84(&r8->unk1C); + sub_8068A84(&setupPtr->info.mon); if (r6) { sub_806B404(); } @@ -561,8 +561,8 @@ void RunDungeon_Async(DungeonSetupStruct *r8) if (gDungeon->unk3 != 0) { SaveDungeonState(gSerializedData_203B41C, 0x4800); - r8->unk7C = 3; - r8->unk80 = gDungeon->unk644.dungeonLocation; + setupPtr->info.unk7C = 3; + setupPtr->info.unk80 = gDungeon->unk644.dungeonLocation; check = FALSE; } else @@ -648,7 +648,7 @@ void RunDungeon_Async(DungeonSetupStruct *r8) // See comment above FAKEMATCH: gUnknown_203B40C = 0; - r8->unk7E = 0; + setupPtr->info.unk7E = 0; sub_8097FF8(); sub_80095CC(1, 0x14); sub_803E13C(); @@ -659,33 +659,33 @@ void RunDungeon_Async(DungeonSetupStruct *r8) if (sub_8083C24()) { if (gDungeon->unk6 != 0) { - r8->unk7C = -2; - memset(&r8->unk84, 0, sizeof(r8->unk84)); - r8->unk80 = gDungeon->unk644.dungeonLocation; - r8->unk84.location = gDungeon->unk644.dungeonLocation; - r8->unk84.seed = gDungeon->unk644.unk38; + setupPtr->info.unk7C = -2; + memset(&setupPtr->info.unk84, 0, sizeof(setupPtr->info.unk84)); + setupPtr->info.unk80 = gDungeon->unk644.dungeonLocation; + setupPtr->info.unk84.location = gDungeon->unk644.dungeonLocation; + setupPtr->info.unk84.seed = gDungeon->unk644.unk38; } else { - r8->unk7C = -1; + setupPtr->info.unk7C = -1; } } else if (sub_8083C50()) { if (gDungeon->unk644.unk34 == 1) { - r8->unk7C = 4; + setupPtr->info.unk7C = 4; } else if (gDungeon->unk644.unk34 == 0) { - r8->unk7C = 1; + setupPtr->info.unk7C = 1; sub_8084424(); } else { - r8->unk7C = 1; + setupPtr->info.unk7C = 1; sub_8084424(); } - r8->unk7E = gDungeon->unk644.unk30; + setupPtr->info.unk7E = gDungeon->unk644.unk30; } else { - r8->unk7C = 2; + setupPtr->info.unk7C = 2; sub_8084424(); } } @@ -694,14 +694,14 @@ void RunDungeon_Async(DungeonSetupStruct *r8) sub_803E214(); nullsub_56(); CloseDungeonMapFile(); - if (r8->unk7C == 1 || r8->unk7C == 4 || r8->unk7C == 2) { + if (setupPtr->info.unk7C == 1 || setupPtr->info.unk7C == 4 || setupPtr->info.unk7C == 2) { CleanUpInventoryItems(); } - if (r8->unk7C == 1 || r8->unk7C == -2 || r8->unk7C == 4 || r8->unk7C == -1 || r8->unk7C == 2) { - if (r8->unk7C == 1 || r8->unk7C == 4 || r8->unk7C == 2) { + if (setupPtr->info.unk7C == 1 || setupPtr->info.unk7C == -2 || setupPtr->info.unk7C == 4 || setupPtr->info.unk7C == -1 || setupPtr->info.unk7C == 2) { + if (setupPtr->info.unk7C == 1 || setupPtr->info.unk7C == 4 || setupPtr->info.unk7C == 2) { sub_8068BDC(1); } - else if (r8->unk7C == -2) { + else if (setupPtr->info.unk7C == -2) { sub_8068BDC(0); } else { diff --git a/src/world_map.c b/src/world_map.c index e16342ac8..7ef959c18 100644 --- a/src/world_map.c +++ b/src/world_map.c @@ -59,7 +59,7 @@ static void nullsub_24(void); static void WorldMap_RunFrameActions(void); static void UpdateMonSpritePosition(void); static void UpdateBg(void); -static void sub_8010494(struct UnkStruct_sub_8010494 *r9); +static void sub_8010494(struct WorldMapInfo *r9); static void AnimateMonPath_Async(u8 id1, u8 id2); static void sub_801059C(void); static bool8 PlayerEnterDungeonPrompt_Async(u8 *str); @@ -70,52 +70,52 @@ static void PrintDungeonName(DungeonLocation *dungLocation); // Code is very similar to the functions in friend_areas_map_util.c -void ShowWorldMap_Async(struct UnkStruct_sub_8010268 *r5) +void ShowWorldMap_Async(struct WorldMapSetupStruct *setupPtr) { - s32 i, speciesId, var; + s32 i, speciesId, dungeonEnter; u8 text[1000]; - sWorldMapPtr = r5->unkB0; + sWorldMapPtr = setupPtr->worldMap; gUnknown_2026E4E = 2566; sub_80095CC(0, 0x14); UpdateFadeInTile(2); sub_801059C(); - sub_8010494(&r5->unk4); + sub_8010494(&setupPtr->info); sub_801178C(); // 60 frame delay for (i = 0; i < 60; i++) WorldMap_RunFrameActions(); - AnimateMonPath_Async(r5->unk4.unk0.id, r5->unk4.unk4.unk0.id); - PrintDungeonName(&r5->unk4.unk4.unk0); + AnimateMonPath_Async(setupPtr->info.startLocation.id, setupPtr->info.unk4.unk0.id); + PrintDungeonName(&setupPtr->info.unk4.unk0); // 60 frame delay for (i = 0; i < 60; i++) WorldMap_RunFrameActions(); - if (r5->unk4.unk4.unkC) { - speciesId = r5->unk4.mon.speciesNum; + if (setupPtr->info.unk4.unkC) { + speciesId = setupPtr->info.mon.speciesNum; ASM_MATCH_TRICK(speciesId); } else { speciesId = 0; } - var = sub_809034C(r5->unk4.unk4.unk0.id, speciesId, text, r5->unk4.unk6C, FALSE); - if (var == 0) { - r5->unkB4 = 1; + dungeonEnter = sub_809034C(setupPtr->info.unk4.unk0.id, speciesId, text, setupPtr->info.unk6C, FALSE); + if (dungeonEnter == 0) { + setupPtr->dungeonEntered = TRUE; } - else if (var == 1) { + else if (dungeonEnter == 1) { PrintDialogueMessage_Async(text); - r5->unkB4 = 0; + setupPtr->dungeonEntered = FALSE; } - else if (var == 2) { + else if (dungeonEnter == 2) { if (PlayerEnterDungeonPrompt_Async(text)) { - r5->unkB4 = 1; + setupPtr->dungeonEntered = TRUE; } else { - r5->unkB4 = 0; + setupPtr->dungeonEntered = FALSE; } } @@ -231,7 +231,7 @@ static void AnimateMonPath_Async(u8 id1, u8 id2) WorldMap_RunFrameActions(); } -static void sub_8010494(struct UnkStruct_sub_8010494 *r9) +static void sub_8010494(struct WorldMapInfo *info) { s32 i; for (i = 0; i < 64; i++) { @@ -239,7 +239,7 @@ static void sub_8010494(struct UnkStruct_sub_8010494 *r9) u8 r0; if (i < 63) { - r0 = r9->unk6D[i]; + r0 = info->unk6D[i]; } else { r0 = 1; @@ -256,7 +256,7 @@ static void sub_8010494(struct UnkStruct_sub_8010494 *r9) } AxResInitFile(&sWorldMapPtr->monAxSprite, sWorldMapPtr->unk1100[3], 0, 0, 0, 0, TRUE); - sWorldMapPtr->monSpritePos = gDungeonCoordinates[r9->unk0.id]; + sWorldMapPtr->monSpritePos = gDungeonCoordinates[info->startLocation.id]; sWorldMapPtr->bgPos.x = sWorldMapPtr->monSpritePos.x - 120; sWorldMapPtr->bgPos.y = sWorldMapPtr->monSpritePos.y - 80; UpdateMonSpritePosition();