From 4734201c6df61783a3c048304a8d328cfeb4e418 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 7 Mar 2025 14:35:34 +0100 Subject: [PATCH] dungeon map documentation done --- asm/code_2.s | 2 +- asm/code_8009804.s | 4 +- asm/code_8045A00.s | 2 +- asm/code_805D8C8.s | 2 +- asm/code_805D8C8_1.s | 2 +- asm/code_80A26CC_1.s | 2 +- include/dungeon_map.h | 12 +- include/structs/map.h | 3 + include/structs/str_dungeon.h | 28 ++-- include/text.h | 8 +- src/code_8009804.c | 12 +- src/code_803E46C.c | 6 +- src/code_803E724.c | 32 ++--- src/code_8040094.c | 8 +- src/code_8042B34.c | 8 +- src/code_80450F8.c | 2 +- src/code_805D8C8_1.c | 17 ++- src/code_8069D4C.c | 6 +- src/code_8069E0C.c | 4 +- src/code_8077274_1.c | 10 +- src/code_807CD9C.c | 16 +-- src/code_80848F0.c | 4 +- src/dungeon_cutscenes.c | 10 +- src/dungeon_items.c | 4 +- src/dungeon_map.c | 242 ++++++++++++++++++---------------- src/dungeon_map_access.c | 14 +- src/dungeon_message.c | 2 +- src/dungeon_serializer.c | 4 +- src/friend_areas_map_util.c | 4 +- src/status.c | 8 +- src/status_actions.c | 6 +- src/text.c | 66 +++++----- src/tile_types.c | 6 +- src/trap.c | 4 +- src/world_map.c | 4 +- 35 files changed, 297 insertions(+), 267 deletions(-) diff --git a/asm/code_2.s b/asm/code_2.s index d7baabfaa..90a2a9524 100644 --- a/asm/code_2.s +++ b/asm/code_2.s @@ -111,7 +111,7 @@ _0800070C: .4byte gLoadScreenBackgroundPaletteFileNames _08000710: .4byte 0x00005b20 _08000714: .4byte gTitleMenuFileArchive _08000718: .4byte gTitlePaletteFile -_0800071C: .4byte gUnknown_202B038 +_0800071C: .4byte gBgTilemaps _08000720: .4byte 0x06008000 _08000724: .4byte 0x00004b20 thumb_func_end LoadTitleScreen diff --git a/asm/code_8009804.s b/asm/code_8009804.s index 0d9b13a6c..417ff23df 100644 --- a/asm/code_8009804.s +++ b/asm/code_8009804.s @@ -142,7 +142,7 @@ _08009B6E: adds r4, r1, 0 b _08009B82 .align 2, 0 -_08009B74: .4byte gUnknown_202B038 +_08009B74: .4byte gBgTilemaps _08009B78: .4byte gUnknown_202D2A0 _08009B7C: .4byte 0x000003ff _08009B80: @@ -264,6 +264,6 @@ _08009C36: bx r0 .align 2, 0 _08009C54: .4byte gUnknown_202D2A0 -_08009C58: .4byte gUnknown_202B038 +_08009C58: .4byte gBgTilemaps thumb_func_end sub_8009BE4 diff --git a/asm/code_8045A00.s b/asm/code_8045A00.s index 86e17e07e..c7aac6f24 100644 --- a/asm/code_8045A00.s +++ b/asm/code_8045A00.s @@ -1108,7 +1108,7 @@ _08046644: mov r4, sp movs r2, 0x2 ldrsh r1, [r4, r2] - bl sub_80402AC + bl ShowDungeonMapAtPos mov r0, sp movs r3, 0 ldrsh r0, [r0, r3] diff --git a/asm/code_805D8C8.s b/asm/code_805D8C8.s index 8f37278ce..5b37919c1 100644 --- a/asm/code_805D8C8.s +++ b/asm/code_805D8C8.s @@ -6426,7 +6426,7 @@ _08064D36: bne _08064D4C b _08064C14 _08064D4C: - bl sub_8040A84 + bl ShowWholeRevealedDungeonMap movs r0, 0 movs r1, 0 bl sub_803EAF0 diff --git a/asm/code_805D8C8_1.s b/asm/code_805D8C8_1.s index 1030d0ad7..711da9c4a 100644 --- a/asm/code_805D8C8_1.s +++ b/asm/code_805D8C8_1.s @@ -917,7 +917,7 @@ _08069018: ldrsh r0, [r2, r3] movs r3, 0x6 ldrsh r1, [r2, r3] - bl sub_80402AC + bl ShowDungeonMapAtPos movs r5, 0 adds r6, r7, 0 adds r6, 0xC8 diff --git a/asm/code_80A26CC_1.s b/asm/code_80A26CC_1.s index 5cac0b91e..23ce59134 100644 --- a/asm/code_80A26CC_1.s +++ b/asm/code_80A26CC_1.s @@ -107,7 +107,7 @@ _080A2BFC: .4byte 0x0000052c _080A2C00: .4byte 0x00000534 _080A2C04: .4byte 0x00000554 _080A2C08: .4byte 0x00000536 -_080A2C0C: .4byte gUnknown_202B038 +_080A2C0C: .4byte gBgTilemaps _080A2C10: .4byte 0x0000053c _080A2C14: .4byte 0x0000054c _080A2C18: .4byte 0x0000053a diff --git a/include/dungeon_map.h b/include/dungeon_map.h index fa5350853..ad9a5519b 100644 --- a/include/dungeon_map.h +++ b/include/dungeon_map.h @@ -1,7 +1,7 @@ #ifndef GUARD_DUNGEON_MAP_H #define GUARD_DUNGEON_MAP_H -extern bool8 gUnknown_202EE00; +extern bool8 gShowMonsterDotsInDungeonMap; extern bool8 gShowDungeonMap; void SetDungeonMapToNotShown(void); @@ -9,12 +9,12 @@ void OpenDungeonMapFile(void); void InitDungeonMap(bool8 a0); void CloseDungeonMapFile(void); void LoadDungeonMapPalette(void); -void sub_80402AC(s32 x, s32 y); -void sub_8040788(void); +void ShowDungeonMapAtPos(s32 x, s32 y); +void CopyDungeonMapToVram(void); void ShowPlayerDotOnMap(void); void ResetMapPlayerDotFrames(void); -void sub_8040A84(void); -void sub_8040ABC(bool8 a0); -void sub_8040B60(void); +void ShowWholeRevealedDungeonMap(void); +void UpdateBgTilemapForDungeonMap(bool8 a0); +void TryResetDungeonMapTilesScheduledForCopy(void); #endif diff --git a/include/structs/map.h b/include/structs/map.h index 8e98ced99..b57cb5428 100644 --- a/include/structs/map.h +++ b/include/structs/map.h @@ -52,6 +52,9 @@ enum SpawnFlags SPAWN_FLAG_UNK7 = 1 << 7, // 0x80 - Not fully understood field. In the dungeon algorithm, it is set to true for all tiles in a Divider secondary structure room. }; +#define VISIBILITY_FLAG_REVEALED 1 // When using Luminous Orb - whole layout is shown, but grayed-out +#define VISIBILITY_FLAG_VISITED 2 // Tile was visited, show filled/white layout + // size: 0x18 typedef struct Tile { diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index b35aafff6..1e37b126e 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -82,7 +82,7 @@ typedef struct UnkDungeonGlobal_unk181E8_sub u8 priority; // x20 /* 0x18209 */ u8 visibilityRange; // x21 Dungeon light level. /* 0x1820A */ bool8 blinded; // x22 Blacks out the screen when the player has the Blinker status. - bool8 unk1820B; // x23 + bool8 allTilesRevealed; // x23 bool8 unk1820C; // x24 bool8 unk1820D; // x25 bool8 showAllFloorItems; // x26 @@ -338,25 +338,27 @@ struct UnkDungeonGlobal_1822C_Sub u32 arr[8]; }; -#define UNK1822C_ARR_COUNT (DUNGEON_MAX_SIZE_Y / 2) -#define UNK1822C_ARR_COUNT_2 (DUNGEON_MAX_SIZE_X / 2) +#define DUNGEON_MAP_MAX_Y (DUNGEON_MAX_SIZE_Y / 2) +#define DUNGEON_MAP_MAX_X (DUNGEON_MAX_SIZE_X / 2) -struct UnkDungeonGlobal_unk1BBEC +struct DungeonMapVramCopy { - u32 *ptr1; - u32 *ptr2; + u32 *vramPtr; + u32 *mapArrayPtr; bool8 *boolPtr; }; +#define MAX_SCHEDULED_DUNGEON_MAP_COPIES 40 + struct DungeonMap { - struct UnkDungeonGlobal_1822C_Sub dungeonMap[UNK1822C_ARR_COUNT][UNK1822C_ARR_COUNT_2]; - bool8 unk1BA2C[UNK1822C_ARR_COUNT][UNK1822C_ARR_COUNT_2]; - struct UnkDungeonGlobal_unk1BBEC unk1BBEC[40]; - s32 unk1BDCC; - u8 unk1BDD0; - u8 unk1BDD1; - u8 unk1BDD2; + struct UnkDungeonGlobal_1822C_Sub perTile[DUNGEON_MAP_MAX_Y][DUNGEON_MAP_MAX_X]; + bool8 tileScheduledForCopy[DUNGEON_MAP_MAX_Y][DUNGEON_MAP_MAX_X]; + struct DungeonMapVramCopy vramCopies[MAX_SCHEDULED_DUNGEON_MAP_COPIES]; + s32 scheduledVramCopiesCount; + bool8 copyToVram; + bool8 copyAllAtOnce; + bool8 resetTilesScheduledForCopy; }; // size: 0x1CEDC diff --git a/include/text.h b/include/text.h index eab07f382..b961b1bb3 100644 --- a/include/text.h +++ b/include/text.h @@ -52,7 +52,13 @@ struct UnkDrawStringStruct extern UnkTextStruct1 gUnknown_2027370[4]; extern u8 gUnknown_202749A[11]; extern bool8 gUnknown_20274A5; -extern u16 gUnknown_202B038[4][32][32]; // Usage points to these dimensions +// These should probably go to code_8009804.h +#define TILEMAP_TILE_NUM(num)(num & 0x3FF) // bits 0-9 +#define TILEMAP_FLIP_HORIZONTAL(f)((f & 1) << 10) // bit 10 +#define TILEMAP_FLIP_VERTICAL(f)((f & 1) << 11) // bit 11 +#define TILEMAP_PAL(pal)((pal & 0xF) << 12) // bits 12-15 +extern u16 gBgTilemaps[4][32][32]; // 4 bgs, 32x32 tiles, y dimension goes before x [bgId][y][x] + extern void (*gIwramTextFunc1)(s32 a0); extern void (*gIwramTextFunc2)(s32 a0); extern void (*gIwramTextFunc3)(s32 a0); diff --git a/src/code_8009804.c b/src/code_8009804.c index 0ba651473..f0d9f4fae 100644 --- a/src/code_8009804.c +++ b/src/code_8009804.c @@ -123,26 +123,26 @@ void sub_8009908(void) gUnknown_202D23C = 0; if (gUnknown_202D238[0] != 0) { gUnknown_202D238[0] = 0; - CpuCopy(BG_SCREEN_ADDR(12), gUnknown_202B038[0], BG_SCREEN_SIZE); + CpuCopy(BG_SCREEN_ADDR(12), gBgTilemaps[0], BG_SCREEN_SIZE); } if (gUnknown_202D238[1] != 0) { gUnknown_202D238[1] = 0; - CpuCopy(BG_SCREEN_ADDR(13), gUnknown_202B038[1], BG_SCREEN_SIZE); + CpuCopy(BG_SCREEN_ADDR(13), gBgTilemaps[1], BG_SCREEN_SIZE); } if (gUnknown_202D238[2] != 0) { gUnknown_202D238[2] = 0; - CpuCopy(BG_SCREEN_ADDR(14), gUnknown_202B038[2], BG_SCREEN_SIZE); + CpuCopy(BG_SCREEN_ADDR(14), gBgTilemaps[2], BG_SCREEN_SIZE); } if (gUnknown_202D238[3] != 0) { gUnknown_202D238[3] = 0; - CpuCopy(BG_SCREEN_ADDR(15), gUnknown_202B038[3], BG_SCREEN_SIZE); + CpuCopy(BG_SCREEN_ADDR(15), gBgTilemaps[3], BG_SCREEN_SIZE); } } void sub_80099C0(void) { - CpuCopy(BG_SCREEN_ADDR(12), gUnknown_202B038[0], BG_SCREEN_SIZE); - CpuCopy(BG_SCREEN_ADDR(13), gUnknown_202B038[1], BG_SCREEN_SIZE); + CpuCopy(BG_SCREEN_ADDR(12), gBgTilemaps[0], BG_SCREEN_SIZE); + CpuCopy(BG_SCREEN_ADDR(13), gBgTilemaps[1], BG_SCREEN_SIZE); } void SetFontsBaseColor(RGB a0) diff --git a/src/code_803E46C.c b/src/code_803E46C.c index 2f36b5a4c..ce548ed02 100644 --- a/src/code_803E46C.c +++ b/src/code_803E46C.c @@ -36,8 +36,6 @@ void sub_803ECE0(); void sub_803EDF0(); void sub_800E90C(); void sub_8042E5C(); -void sub_8040B60(); -void sub_8040788(); void sub_800F7D0(DungeonPos *); void sub_803E874(s32, s32); void sub_803EAF0(s32, s32); @@ -107,13 +105,13 @@ void sub_803E490(u32 unused) TransferBGPaletteBuffer(); sub_8009908(); xxx_call_update_bg_vram(); - sub_8040788(); + CopyDungeonMapToVram(); xxx_call_update_bg_sound_input(); gDungeon->unk181e8.unk18213 = 0; UpdateDungeonMusic(); sub_8011860(); - sub_8040B60(); + TryResetDungeonMapTilesScheduledForCopy(); ResetSprites(FALSE); nullsub_10(FALSE); gUnknown_202EDD4--; diff --git a/src/code_803E724.c b/src/code_803E724.c index e6334780e..9af53fb06 100644 --- a/src/code_803E724.c +++ b/src/code_803E724.c @@ -14,6 +14,7 @@ #include "dungeon_map_access.h" #include "sprite.h" #include "bg_control.h" +#include "dungeon_map.h" #include "game_options.h" #include "code_800558C.h" #include "dungeon_range.h" @@ -54,15 +55,14 @@ extern u8 gUnknown_20274A5; extern s32 gUnknown_202EDCC; -extern void sub_8040A84(); +extern void ShowWholeRevealedDungeonMap(); extern void sub_8083D44(void); -extern void sub_8040A84(void); +extern void ShowWholeRevealedDungeonMap(void); extern void sub_80400D4(void); extern void sub_8041888(u8 param_1); -extern void sub_80402AC(s32, s32); +extern void ShowDungeonMapAtPos(s32, s32); void sub_803EC94(void); -void sub_8040ABC(u8 a0); s32 sub_803EF90(s32 a0, u8 a1); void sub_803F580(u8 a0); void sub_803F7BC(void); @@ -279,14 +279,14 @@ void sub_803EAF0(u32 a0, u8 *a1) sub_803EC94(); ShowWindows(NULL, TRUE, TRUE); if (gUnknown_203B40C != 0) { - sub_8040A84(); - sub_8040ABC(0); + ShowWholeRevealedDungeonMap(); + UpdateBgTilemapForDungeonMap(FALSE); } break; case 3: ShowWindows(&gUnknown_80F62B0, TRUE, TRUE); if (gUnknown_203B40C != 0) { - sub_8040ABC(1); + UpdateBgTilemapForDungeonMap(TRUE); } break; case 6: @@ -690,7 +690,7 @@ void sub_803F27C(bool8 a0) strPtr->unk1820D = FALSE; strPtr->unk18211 = 0; strPtr->showAllFloorItems = FALSE; - strPtr->unk1820B = 0; + strPtr->allTilesRevealed = 0; strPtr->unk1820C = 0; } @@ -742,7 +742,7 @@ bool8 sub_803F428(DungeonPos *pos) Entity *cameraEntity = strPtr->cameraTarget; if (abs(strPtr->cameraPos.x - pos->x) <= 6 && abs(strPtr->cameraPos.y - pos->y) <= 5) { - if (strPtr->unk1820B == 0 && strPtr->unk1820C == 0 && cameraEntity != NULL) { + if (strPtr->allTilesRevealed == 0 && strPtr->unk1820C == 0 && cameraEntity != NULL) { return IsPositionActuallyInSight(&strPtr->cameraPos, pos); } return TRUE; @@ -795,7 +795,7 @@ void sub_803F508(Entity *a0) sub_806CD90(); } sub_8049ED4(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } void sub_803F580(u8 a0) @@ -875,7 +875,7 @@ void sub_803F580(u8 a0) if (before != strPtr->showInvisibleTrapsMonsters) { sub_8049ED4(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); sub_8041888(0); } @@ -905,7 +905,7 @@ void sub_803F580(u8 a0) for (i = 0; i < DUNGEON_MAX_POKEMON; i++) { Entity *mon = gDungeon->activePokemon[i]; if (EntityIsValid(mon)) { - sub_80402AC(mon->pos.x, mon->pos.y); + ShowDungeonMapAtPos(mon->pos.x, mon->pos.y); } } } @@ -921,7 +921,7 @@ void sub_803F7BC(void) const Tile *tile = GetTile(strPtr->cameraPos.x, strPtr->cameraPos.y); u32 roomId = tile->room; - if (strPtr->unk1820B != 0 || strPtr->unk1820C != 0 || strPtr->unk18217 != 0) { + if (strPtr->allTilesRevealed != 0 || strPtr->unk1820C != 0 || strPtr->unk18217 != 0) { sub_8005838(NULL, 0); } else if (roomId == CORRIDOR_ROOM) { @@ -1010,7 +1010,7 @@ void sub_803F9CC(void) if (!r5) { for (i = 1; i < 30; i++) { - gUnknown_202B038[0][0][i] = 0; + gBgTilemaps[0][0][i] = 0; } sub_803F38C(); } @@ -1151,7 +1151,7 @@ void sub_803FB74(void) nullsub_5(0xFF, &gFontPalette[15 + r6]); } - arrPtr = gUnknown_202B038[0][0]; + arrPtr = gBgTilemaps[0][0]; unkFloor = gDungeon->unk14 + gDungeon->unk644.dungeonLocation.floor; if (strPtr->unk3A != unkFloor) { strPtr->unk3A = unkFloor; @@ -1203,7 +1203,7 @@ void sub_803FB74(void) } for (i = 0; i < 12; i++) { - gUnknown_202B038[0][0][18 + i] = (0x2CC + i) | 0xF000; + gBgTilemaps[0][0][18 + i] = (0x2CC + i) | 0xF000; } } diff --git a/src/code_8040094.c b/src/code_8040094.c index db7a90417..278031a6e 100644 --- a/src/code_8040094.c +++ b/src/code_8040094.c @@ -17,7 +17,7 @@ extern struct FileArchive gDungeonFileArchive; extern void sub_803F7BC(void); extern void sub_803F580(u32); -extern void sub_8040A84(); +extern void ShowWholeRevealedDungeonMap(); extern const char *gUnknown_80FD040; // It became brighter on the floor @@ -27,19 +27,19 @@ void HandleLuminousOrbAction(Entity *pokemon) int XCoord; int YCoord; - gDungeon->unk181e8.unk1820B = 1; + gDungeon->unk181e8.allTilesRevealed = TRUE; for(YCoord = 0; YCoord < DUNGEON_MAX_SIZE_Y; YCoord++) { for(XCoord = 0; XCoord < DUNGEON_MAX_SIZE_X; XCoord++) { Tile *mapTile = GetTileMut(XCoord, YCoord); - mapTile->spawnOrVisibilityFlags |= 1; + mapTile->spawnOrVisibilityFlags |= VISIBILITY_FLAG_REVEALED; } } sub_803F580(0); sub_8049ED4(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); LogMessageByIdWithPopupCheckUser(pokemon, gUnknown_80FD040); } diff --git a/src/code_8042B34.c b/src/code_8042B34.c index 2aa84f8c5..d76bfeea6 100644 --- a/src/code_8042B34.c +++ b/src/code_8042B34.c @@ -288,7 +288,7 @@ extern void sub_8071DA4(Entity *); extern void sub_803E748(void); extern void sub_8083D68(void); extern void sub_803E7C8(void); -extern void sub_8040A84(void); +extern void ShowWholeRevealedDungeonMap(void); extern void sub_807E5AC(void); extern void TriggerWeatherAbilities(void); extern void sub_807E88C(void); @@ -432,7 +432,7 @@ void RunDungeon(struct UnkStruct_RunDungeon *r8) } if (!r6) { - gDungeon->unk181e8.unk1820B = 1; + gDungeon->unk181e8.allTilesRevealed = 1; gDungeon->unk181e8.unk1820C = 1; if (gDungeon->unk644.unk34 == 1) { gDungeon->unk644.dungeonLocation.id = r8->unk14.unk0; @@ -659,7 +659,7 @@ void RunDungeon(struct UnkStruct_RunDungeon *r8) sub_8040094(0); sub_803EAF0(0, 0); InitDungeonMap(r6); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); gDungeon->unkB8 = NULL; gDungeon->unk644.unk28 = 0; gDungeon->unk644.unk29 = 0; @@ -683,7 +683,7 @@ void RunDungeon(struct UnkStruct_RunDungeon *r8) } else { sub_803F4A0(GetLeader()); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } } diff --git a/src/code_80450F8.c b/src/code_80450F8.c index b7e22fe5f..6428ade4a 100644 --- a/src/code_80450F8.c +++ b/src/code_80450F8.c @@ -220,7 +220,7 @@ bool8 sub_8045804(Entity *ent) if (!saveTyping->showInvisibleTrapsMonsters && monInfo->invisibleClassStatus.status == STATUS_INVISIBLE) return FALSE; - if (saveTyping->unk1820B || saveTyping->unk1820D) + if (saveTyping->allTilesRevealed || saveTyping->unk1820D) return TRUE; if (camTarget != NULL) diff --git a/src/code_805D8C8_1.c b/src/code_805D8C8_1.c index 1cc91377c..7fe39989b 100644 --- a/src/code_805D8C8_1.c +++ b/src/code_805D8C8_1.c @@ -81,7 +81,7 @@ void sub_805E804(void); void sub_8064BE0(void); void sub_8075680(u32); void sub_8094C88(void); -void sub_8040A84(void); +void ShowWholeRevealedDungeonMap(void); void sub_8047158(void); void sub_806A914(u8 a0, u8 a1, u8 a2); void sub_8044C10(u8 a0); @@ -118,7 +118,6 @@ extern bool8 sub_8071A8C(Entity *pokemon); extern void sub_80643AC(Entity *pokemon); extern u8 sub_8062F90(Entity *, u32, u32, u32, u32); -extern u8 gUnknown_202EE00; extern Entity *gLeaderPointer; extern const u8 *gUnknown_80F8A84; @@ -424,15 +423,15 @@ void DungeonHandlePlayerInput(void) } // SELECT button - if (!gDungeon->unk181e8.blinded && gGameOptionsRef->mapOption != 6 && gRealInputs.pressed & SELECT_BUTTON) { + if (!gDungeon->unk181e8.blinded && gGameOptionsRef->mapOption != TOP_MAP_AND_TEAM_NO_BOTTOM && gRealInputs.pressed & SELECT_BUTTON) { s32 prevMapOption = gGameOptionsRef->mapOption; - gUnknown_202EE00 = 1; + gShowMonsterDotsInDungeonMap = TRUE; gDungeon->unk181e8.inFloorMapMode = TRUE; if (!sub_8094C48()) { sub_8094C88(); } sub_8052210(1); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); SetBGOBJEnableFlags(0x1E); sub_803E708(0xA, 0x2F); while (1) { @@ -443,14 +442,14 @@ void DungeonHandlePlayerInput(void) break; if (gRealInputs.pressed & A_BUTTON) { - gUnknown_202EE00 = (gUnknown_202EE00 == 0) ? 1 : 0; // Flip - sub_8040A84(); + gShowMonsterDotsInDungeonMap = (gShowMonsterDotsInDungeonMap == FALSE) ? TRUE : FALSE; // Flip + ShowWholeRevealedDungeonMap(); } } gDungeon->unk181e8.inFloorMapMode = FALSE; gGameOptionsRef->mapOption = prevMapOption; - gUnknown_202EE00 = 1; - sub_8040A84(); + gShowMonsterDotsInDungeonMap = TRUE; + ShowWholeRevealedDungeonMap(); SetBGOBJEnableFlags(0); sub_803E46C(0x2F); sub_803E46C(0x2F); diff --git a/src/code_8069D4C.c b/src/code_8069D4C.c index 9694c2ffd..9ba6b93b2 100644 --- a/src/code_8069D4C.c +++ b/src/code_8069D4C.c @@ -21,7 +21,7 @@ extern DungeonPos gPlayerDotMapPosition; extern DungeonPos gUnknown_202EE0C; s32 sub_806A4DC(EntityInfo *info); bool8 sub_8070F80(Entity * pokemon, s32 direction); -void sub_80402AC(s32, s32); +void ShowDungeonMapAtPos(s32, s32); void sub_80694C0(Entity *target,s32 x,int y,char param_4) { @@ -44,7 +44,7 @@ void sub_80694C0(Entity *target,s32 x,int y,char param_4) if (tile2->monster == target) { tile2->monster = NULL; } - sub_80402AC((target->pos).x,(target->pos).y); + ShowDungeonMapAtPos((target->pos).x,(target->pos).y); } (target->prevPos).x = (target->pos).x; (target->prevPos).y = (target->pos).y; @@ -60,7 +60,7 @@ void sub_80694C0(Entity *target,s32 x,int y,char param_4) gUnknown_202EE0C.y = y; gDungeon->unk1 = 0; } - sub_80402AC(x,y); + ShowDungeonMapAtPos(x,y); switch(param_4) { diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index e74b9d09c..d79c82f84 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -80,7 +80,7 @@ extern void sub_8042EC8(Entity *a0, s32 a1); extern Entity *sub_804550C(s16 a); extern Entity *sub_80453AC(s16 id); extern void sub_803F580(s32); -extern void sub_8040A84(void); +extern void ShowWholeRevealedDungeonMap(void); extern void sub_806B678(void); extern void EntityUpdateStatusSprites(Entity *); extern Entity *sub_80696A8(Entity *a0); @@ -543,7 +543,7 @@ void sub_806A6E8(Entity *entity) else { if (info->heldItem.id == ITEM_X_RAY_SPECS || info->unk64 == ITEM_X_RAY_SPECS) { sub_803F580(1); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } } sub_807AA30(); diff --git a/src/code_8077274_1.c b/src/code_8077274_1.c index 24550b07c..25944ff33 100644 --- a/src/code_8077274_1.c +++ b/src/code_8077274_1.c @@ -147,7 +147,7 @@ extern u8 *gUnknown_80FBF28[]; extern u8 *gUnknown_80FBF68[]; extern u8 *gUnknown_80FBF84[]; -extern void sub_8040A84(); +extern void ShowWholeRevealedDungeonMap(); extern void EntityUpdateStatusSprites(Entity *); extern void sub_8042A74(Entity *r0); extern void sub_807EC28(bool8); @@ -372,7 +372,7 @@ void BlindTarget(Entity *pokemon, Entity *target) TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FB7F4); sub_803E46C(0x31); sub_8049ED4(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } else { @@ -399,7 +399,7 @@ void CrossEyeVisionTarget(Entity *pokemon, Entity *target) entityInfo->blinkerClassStatus.turns = CalculateStatusTurns(target,gCrossEyedTurnRange, TRUE) + 1; sub_803F580(0x1); sub_8049ED4(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } else { @@ -425,7 +425,7 @@ void RestoreVisionTarget(Entity *pokemon, Entity *target) TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FB880); sub_803E46C(0x31); sub_8049ED4(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } else { @@ -1508,7 +1508,7 @@ void SendEyesightEndMessage(Entity * pokemon,Entity * target) if (entityInfo->isTeamLeader) { sub_803E46C(0x31); sub_8049ED4(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } } diff --git a/src/code_807CD9C.c b/src/code_807CD9C.c index 1edaa4117..a8db22a03 100644 --- a/src/code_807CD9C.c +++ b/src/code_807CD9C.c @@ -60,7 +60,7 @@ EWRAM_INIT u32 gUnknown_203B444[3] = {0x28, 0x28, 0x50}; void sub_804EB30(); bool8 ExposeTrap(s32 x, s32 y); -void sub_8040A84(); +void ShowWholeRevealedDungeonMap(); void sub_8049ED4(); void sub_806A5B8(Entity *); u8 sub_8045888(Entity *); @@ -76,7 +76,7 @@ bool8 sub_808384C(DungeonPos *, DungeonPos *); u8 sub_8083660(DungeonPos *); void sub_80460F8(DungeonPos *, Item *, u32); void sub_80462AC(Entity * ,u32, u32, u8, u32); -extern void sub_80402AC(s32, s32); +extern void ShowDungeonMapAtPos(s32, s32); void BlowAwayTarget(Entity *pokemon, Entity *target, u32 direction) { @@ -385,7 +385,7 @@ void sub_807D3CC(Entity *param_1) } if (flag) { LogMessageByIdWithPopupCheckUser(param_1,*gUnknown_80FD2F8); // All traps were exposed - sub_8040A84(); + ShowWholeRevealedDungeonMap(); sub_8049ED4(); } else { @@ -503,7 +503,7 @@ void HandleTrawlOrbAction(Entity *user, Entity *target) for (i = 0; i < itemsCount; i++) { if (EntityIsValid(&itemEntities[i])) { sub_80461C8(&itemEntities[i].pos, 1); - sub_80402AC(itemEntities[i].pos.x, itemEntities[i].pos.y); + ShowDungeonMapAtPos(itemEntities[i].pos.x, itemEntities[i].pos.y); itemVelocity[i].x = (((targetTilePos[i].x * 24 + 4) * 256) - itemEntities[i].pixelPos.x) / 60; itemVelocity[i].y = (((targetTilePos[i].y * 24 + 4) * 256) - itemEntities[i].pixelPos.y) / 60; } @@ -534,7 +534,7 @@ void HandleTrawlOrbAction(Entity *user, Entity *target) for (i = 0; i < itemsCount; i++) { if (targetTilePos[i].x >= 0) { sub_80460F8(&targetTilePos[i], GetItemData(&itemEntities[i]), 1); - sub_80402AC(targetTilePos[i].x, targetTilePos[i].y); + ShowDungeonMapAtPos(targetTilePos[i].x, targetTilePos[i].y); hasTrawled = TRUE; } } @@ -652,7 +652,7 @@ void HandleDroughtOrbAction(Entity *pokemon, Entity *target) { } gDungeon->unk644.unk2C = 1; sub_806CF60(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); sub_8049ED4(); } @@ -757,7 +757,7 @@ void HandleOneRoomOrb(Entity *pokemon, Entity *target) { sub_804AAD4(); sub_8049884(); sub_806CF60(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); sub_8049ED4(); LogMessageByIdWithPopupCheckUser(pokemon,*gUnknown_80FD3A0); sub_803E708(0x28,0x2b); @@ -861,7 +861,7 @@ void HandleExplosion(Entity *pokemon,Entity *target,DungeonPos *param_3,s32 para sub_8049BB0(x,y); } } - sub_8040A84(); + ShowWholeRevealedDungeonMap(); sub_8049ED4(); } } diff --git a/src/code_80848F0.c b/src/code_80848F0.c index bc881ff3f..c96ed81b1 100644 --- a/src/code_80848F0.c +++ b/src/code_80848F0.c @@ -14,7 +14,7 @@ #include "structs/str_806B7F8.h" extern const DungeonPos gUnknown_80F4598[]; -extern void sub_8040A84(void); +extern void ShowWholeRevealedDungeonMap(void); struct unkData_8107234 { @@ -32,7 +32,7 @@ void sub_80847D4(void) gDungeon->unk3A0D = 0; gDungeon->unk1356C = 0; - sub_8040A84(); + ShowWholeRevealedDungeonMap(); for(index = 0; index < 0x3e7 && gUnknown_8107234[index].unk0[0] != 0; index++) { fixedRoomNumber = gDungeon->fixedRoomNumber; if (fixedRoomNumber - 0x1c < 0x16) { diff --git a/src/dungeon_cutscenes.c b/src/dungeon_cutscenes.c index 010fe490c..45cb831d1 100644 --- a/src/dungeon_cutscenes.c +++ b/src/dungeon_cutscenes.c @@ -374,7 +374,7 @@ extern void BgColorCallNullsub4(void); extern void sub_8085EB0(void); extern void sub_8049884(void); extern void sub_8049B8C(void); -extern void sub_8040A84(void); +extern void ShowWholeRevealedDungeonMap(void); extern void sub_8086A54(Entity *); extern void ResetMonEntityData(EntityInfo *, u32); extern void sub_808BBA8(Entity * ); @@ -3721,7 +3721,7 @@ void sub_808B1CC(u8 itemID) sub_80460F8(&pos,&item,1); } sub_8049ED4(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } void SetupRegiFacingDirection(Entity *regiEntity) @@ -3812,7 +3812,7 @@ void sub_808B3E4(u8 param_1, u8 param_2, u8 param_3) sub_808B50C(); } gDungeon->unk1356C = uVar1; - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } } } @@ -4181,7 +4181,7 @@ void CreateJirachiWishWarpTile(void) sub_8049884(); sub_8049B8C(); sub_8049ED4(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } void EnableJirachiWishWarpTile(void) @@ -4197,7 +4197,7 @@ void EnableJirachiWishWarpTile(void) sub_8049884(); sub_8049B8C(); sub_8049ED4(); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } u8 JirachiFriendAreaSearch(void) diff --git a/src/dungeon_items.c b/src/dungeon_items.c index 2e12ed8fd..1d894a191 100644 --- a/src/dungeon_items.c +++ b/src/dungeon_items.c @@ -24,7 +24,7 @@ extern void sub_80416E0(PixelPos *r0, u32, bool8); extern void sub_80855E4(void *); extern void PlaySoundEffect(u32); extern void sub_804178C(u32); -extern void sub_8040A84(void); +extern void ShowWholeRevealedDungeonMap(void); static void MusicBoxCreation(void); static u8 sub_8046D70(void); @@ -157,7 +157,7 @@ void MusicBoxCreation(void) sub_803E708(10,0x41); sub_804178C(1); gDungeon->unk1356C = 0; - sub_8040A84(); + ShowWholeRevealedDungeonMap(); } } diff --git a/src/dungeon_map.c b/src/dungeon_map.c index 0edb8ab89..091063fbe 100644 --- a/src/dungeon_map.c +++ b/src/dungeon_map.c @@ -41,11 +41,11 @@ struct DungeonMapGfx RGB *pal; }; -EWRAM_DATA bool8 gUnknown_202EE00 = FALSE; +EWRAM_DATA bool8 gShowMonsterDotsInDungeonMap = FALSE; EWRAM_DATA bool8 gShowDungeonMap = FALSE; EWRAM_DATA static u8 sPlayerDotFrames = 0; EWRAM_DATA static OpenedFile *sDungeonMapGfxFile = NULL; -EWRAM_DATA static void *gUnknown_202EE08 = NULL; +EWRAM_DATA static void *sDungeonMapVramDst = NULL; void SetDungeonMapToNotShown(void) { @@ -61,10 +61,10 @@ void InitDungeonMap(bool8 a0) { s32 i, j; - for (i = 0; i < UNK1822C_ARR_COUNT; i++) { - for (j = 0; j < UNK1822C_ARR_COUNT_2; j++) { - CpuClear(&gDungeon->dungeonMap.dungeonMap[i][j], sizeof(struct UnkDungeonGlobal_1822C_Sub)); - gDungeon->dungeonMap.unk1BA2C[i][j] = FALSE; + for (i = 0; i < DUNGEON_MAP_MAX_Y; i++) { + for (j = 0; j < DUNGEON_MAP_MAX_X; j++) { + CpuClear(&gDungeon->dungeonMap.perTile[i][j], sizeof(struct UnkDungeonGlobal_1822C_Sub)); + gDungeon->dungeonMap.tileScheduledForCopy[i][j] = FALSE; } } @@ -73,11 +73,11 @@ void InitDungeonMap(bool8 a0) gPlayerDotMapPosition.y = 100; } - gDungeon->dungeonMap.unk1BDCC = 0; - gDungeon->dungeonMap.unk1BDD0 = 1; - gDungeon->dungeonMap.unk1BDD2 = 0; - gUnknown_202EE00 = 1; - gUnknown_202EE08 = (void *) VRAM + 0x1700; + gDungeon->dungeonMap.scheduledVramCopiesCount = 0; + gDungeon->dungeonMap.copyToVram = TRUE; + gDungeon->dungeonMap.resetTilesScheduledForCopy = FALSE; + gShowMonsterDotsInDungeonMap = TRUE; + sDungeonMapVramDst = (void *) VRAM + 0x1700; gShowDungeonMap = TRUE; LoadDungeonMapPalette(); } @@ -90,7 +90,7 @@ void CloseDungeonMapFile(void) SetDungeonMapToNotShown(); } -// Used in Pmd's Blue version. Stores different Vram address in gUnknown_202EE08(maybe?), depending on TOP_MAP_AND_TEAM_NO_BOTTOM map option. +// Used in Pmd's Blue version. Stores different Vram address in sDungeonMapVramDst(maybe?), depending on TOP_MAP_AND_TEAM_NO_BOTTOM map option. UNUSED static void nullsub_203(void) { @@ -117,7 +117,29 @@ void LoadDungeonMapPalette(void) } } -void sub_80402AC(s32 x, s32 y) +enum { + MAP_GFX_NOTHING, + MAP_GFX_UNK1, // Appears to be nothing too + MAP_GFX_ENEMY, + MAP_GFX_ITEM, + MAP_GFX_TRAP, + MAP_GFX_SPECIAL_STAIRS, + MAP_GFX_STAIRS, + MAP_GFX_WONDER_TILE, + MAP_GFX_PLAYER, + MAP_GFX_WHITE_SQUARE, // Possibly unused? It's like Stairs, but white instead of blue + MAP_GFX_ALLY, + MAP_GFX_GREEN_DOT, // Used when hallucinating +}; + +#define MAP_GFX_TERRAIN_TILES_VISITED 0x10 +#define MAP_GFX_TERRAIN_TILES_REVEALED 0x20 +#define MAP_GFX_TERRAIN_LINE_UP 0x1 +#define MAP_GFX_TERRAIN_LINE_RIGHT 0x2 +#define MAP_GFX_TERRAIN_LINE_DOWN 0x4 +#define MAP_GFX_TERRAIN_LINE_LEFT 0x8 + +void ShowDungeonMapAtPos(s32 x, s32 y) { s32 yAdd = 0; const Tile *tile; @@ -127,17 +149,17 @@ void sub_80402AC(s32 x, s32 y) bool8 hallucinating; bool8 showItems; bool8 showHiddenTraps; - bool8 r0; + bool8 allTilesRevealed; bool8 var_24; - bool8 r7; - s32 r6; + bool8 tileKnown; + s32 mapGfxType; s32 xDiv2, yDiv2; u32 *src, *dst; - bool8 r10; + bool8 lookForMapObject; s32 r3, yMinus; dungeon = gDungeon; - r10 = TRUE; + lookForMapObject = TRUE; if (sDungeonMapGfxFile == NULL) return; @@ -169,17 +191,17 @@ void sub_80402AC(s32 x, s32 y) blinded = gDungeon->unk181e8.blinded; showHiddenTraps = gDungeon->unk181e8.showInvisibleTrapsMonsters; showItems = gDungeon->unk181e8.showAllFloorItems; - r0 = gDungeon->unk181e8.unk1820B; + allTilesRevealed = gDungeon->unk181e8.allTilesRevealed; if (blinded) { - r7 = tile->spawnOrVisibilityFlags & 1; + tileKnown = tile->spawnOrVisibilityFlags & VISIBILITY_FLAG_REVEALED; var_24 = FALSE; } else { - if (r0) { - r7 = TRUE; + if (allTilesRevealed) { + tileKnown = TRUE; } else { - r7 = tile->spawnOrVisibilityFlags & 1; + tileKnown = tile->spawnOrVisibilityFlags & VISIBILITY_FLAG_REVEALED; } if (GetFloorType() == FLOOR_TYPE_NORMAL) { @@ -191,159 +213,159 @@ void sub_80402AC(s32 x, s32 y) } if (sub_8094C48() && !gDungeon->unk1356C) { - r6 = 0; + mapGfxType = MAP_GFX_NOTHING; if (!blinded) { Entity *entity = tile->monster; if (entity != NULL) { s32 entType = GetEntityType(entity); - if (gUnknown_202EE00 && entType == ENTITY_MONSTER && sub_8045804(entity)) { + if (gShowMonsterDotsInDungeonMap && entType == ENTITY_MONSTER && sub_8045804(entity)) { EntityInfo *entInfo = GetEntInfo(entity); if (IsExperienceLocked(entInfo->joinedAt.id) || entInfo->monsterBehavior == 1 || entInfo->monsterBehavior == 4) { - r6 = 10; + mapGfxType = MAP_GFX_ALLY; } else { if (entInfo->isNotTeamMember) { - r6 = 2; + mapGfxType = MAP_GFX_ENEMY; } else if (entInfo->isTeamLeader) { gPlayerDotMapPosition.x = x; gPlayerDotMapPosition.y = y; if (gDungeon->unk181e8.inFloorMapMode) { - r6 = 8; + mapGfxType = MAP_GFX_PLAYER; } } else { - r6 = 10; + mapGfxType = MAP_GFX_ALLY; } } - r10 = FALSE; + lookForMapObject = FALSE; } } } - if (r10 && !blinded) { + if (lookForMapObject && !blinded) { Entity *entity = tile->object; if (entity != NULL) { s32 entType = GetEntityType(entity); - if (!r7) { - r6 = 0; + if (!tileKnown) { + mapGfxType = MAP_GFX_NOTHING; if (entType == ENTITY_ITEM) { if ((showItems || (tile->spawnOrVisibilityFlags & 2)) && terrainType != TERRAIN_TYPE_WALL) { - r6 = 3; + mapGfxType = MAP_GFX_ITEM; } } - r10 = FALSE; + lookForMapObject = FALSE; } else { if (entType == ENTITY_TRAP) { if (entity->isVisible || showHiddenTraps) { Trap *trap = GetTrapData(entity); - r6 = gUnknown_80F65F0[trap->id]; - r10 = FALSE; + mapGfxType = gUnknown_80F65F0[trap->id]; + lookForMapObject = FALSE; } } } - if (r10) { + if (lookForMapObject) { if (entType == ENTITY_ITEM) { if ((showItems || (tile->spawnOrVisibilityFlags & 2)) && terrainType != TERRAIN_TYPE_WALL) { - r6 = 3; - r10 = FALSE; + mapGfxType = MAP_GFX_ITEM; + lookForMapObject = FALSE; } } } - if (r10) { + if (lookForMapObject) { if (terrainType != TERRAIN_TYPE_NORMAL) { - r6 = 0; - r10 = FALSE; + mapGfxType = MAP_GFX_NOTHING; + lookForMapObject = FALSE; } } } else { - if (!r7) { + if (!tileKnown) { if (var_24 && (tile->terrainType & TERRAIN_TYPE_STAIRS)) { if (GetFloorType() == FLOOR_TYPE_NORMAL) { - r6 = 6; + mapGfxType = MAP_GFX_STAIRS; } else { - r6 = 5; + mapGfxType = MAP_GFX_SPECIAL_STAIRS; } - r10 = FALSE; + lookForMapObject = FALSE; } } else { if ((tile->terrainType & TERRAIN_TYPE_STAIRS)) { if (GetFloorType() == FLOOR_TYPE_NORMAL) { - r6 = 6; + mapGfxType = MAP_GFX_STAIRS; } else { - r6 = 5; + mapGfxType = MAP_GFX_SPECIAL_STAIRS; } - r10 = FALSE; + lookForMapObject = FALSE; } } } } - if (!r10) { + if (!lookForMapObject) { if (hallucinating) { - if (r6 != 0) { - r6 = 11; + if (mapGfxType != MAP_GFX_NOTHING) { + mapGfxType = MAP_GFX_GREEN_DOT; } } } - if (r6 == 0) { - if (!r7) { - r6 = 1; + if (mapGfxType == MAP_GFX_NOTHING) { + if (!tileKnown) { + mapGfxType = 1; } else if (terrainType != TERRAIN_TYPE_NORMAL) { - r6 = 1; + mapGfxType = 1; } else { - s32 r4 = 1 | 2 | 4 | 8; + s32 terrainLine = MAP_GFX_TERRAIN_LINE_UP | MAP_GFX_TERRAIN_LINE_RIGHT | MAP_GFX_TERRAIN_LINE_DOWN | MAP_GFX_TERRAIN_LINE_LEFT; if (y < DUNGEON_MAX_SIZE_Y - 1) { const Tile *adjacentTile = GetTile(x, y + 1); if (GetTerrainType(adjacentTile) == TERRAIN_TYPE_NORMAL) { - r4 &= ~(1); + terrainLine &= ~(MAP_GFX_TERRAIN_LINE_UP); } } if (y >= 1) { const Tile *adjacentTile = GetTile(x, y - 1); if (GetTerrainType(adjacentTile) == TERRAIN_TYPE_NORMAL) { - r4 &= ~(4); + terrainLine &= ~(MAP_GFX_TERRAIN_LINE_DOWN); } } if (x < DUNGEON_MAX_SIZE_X - 1) { const Tile *adjacentTile = GetTile(x + 1, y); if (GetTerrainType(adjacentTile) == TERRAIN_TYPE_NORMAL) { - r4 &= ~(2); + terrainLine &= ~(MAP_GFX_TERRAIN_LINE_RIGHT); } } if (x >= 1) { const Tile *adjacentTile = GetTile(x - 1, y); if (GetTerrainType(adjacentTile) == TERRAIN_TYPE_NORMAL) { - r4 &= ~(8); + terrainLine &= ~(MAP_GFX_TERRAIN_LINE_LEFT); } } - r6 = (s16) r4; - if (tile->spawnOrVisibilityFlags & 2) { - r6 = (s16) (r6 + 16); + mapGfxType = (s16) terrainLine; + if (tile->spawnOrVisibilityFlags & VISIBILITY_FLAG_VISITED) { + mapGfxType = (s16) (mapGfxType + MAP_GFX_TERRAIN_TILES_VISITED); } else { - r6 = (s16) (r6 + 32); + mapGfxType = (s16) (mapGfxType + MAP_GFX_TERRAIN_TILES_REVEALED); } } } // Not possible on GBA. if (gGameOptionsRef->mapOption == TOP_MAP_AND_TEAM_NO_BOTTOM) { - r6 = (s16) (r6 + 128); + mapGfxType = (s16) (mapGfxType + 128); } else if (DoesNotHaveShadedMap() == TRUE) { - r6 = (s16) (r6 + 64); + mapGfxType = (s16) (mapGfxType + 64); } } else { - r6 = 1; + mapGfxType = 1; gPlayerDotMapPosition.x = 100; } @@ -352,10 +374,10 @@ void sub_80402AC(s32 x, s32 y) yDiv2 = (yMinus / 2); r3 = x - (xDiv2 * 2); r3 += (yMinus - (yDiv2 * 2)) * 2; - dst = dungeon->dungeonMap.dungeonMap[yDiv2][xDiv2].arr; + dst = dungeon->dungeonMap.perTile[yDiv2][xDiv2].arr; { struct DungeonMapGfx *ptr = ((struct DungeonMapGfx *)(&sDungeonMapGfxFile->data)); - src = ptr->gfx->unk0[r6 * 4 + r3]; + src = ptr->gfx->unk0[mapGfxType * 4 + r3]; } dst[0] = (dst[0] & src[0]) | src[1]; @@ -367,39 +389,39 @@ void sub_80402AC(s32 x, s32 y) dst[6] = (dst[6] & src[12]) | src[13]; dst[7] = (dst[7] & src[14]) | src[15]; - if (!dungeon->dungeonMap.unk1BDD1 && !dungeon->dungeonMap.unk1BA2C[yDiv2][xDiv2]) { + if (!dungeon->dungeonMap.copyAllAtOnce && !dungeon->dungeonMap.tileScheduledForCopy[yDiv2][xDiv2]) { s32 id; - dungeon->dungeonMap.unk1BA2C[yDiv2][xDiv2] = TRUE; - id = dungeon->dungeonMap.unk1BDCC; - if (id < 40) { - dungeon->dungeonMap.unk1BBEC[id].ptr1 = gUnknown_202EE08 + ((xDiv2 + yDiv2 * 28) * 32); - dungeon->dungeonMap.unk1BBEC[id].ptr2 = dst; - dungeon->dungeonMap.unk1BBEC[id].boolPtr = &dungeon->dungeonMap.unk1BA2C[yDiv2][xDiv2]; - dungeon->dungeonMap.unk1BDCC++; + dungeon->dungeonMap.tileScheduledForCopy[yDiv2][xDiv2] = TRUE; + id = dungeon->dungeonMap.scheduledVramCopiesCount; + if (id < MAX_SCHEDULED_DUNGEON_MAP_COPIES) { + dungeon->dungeonMap.vramCopies[id].vramPtr = sDungeonMapVramDst + ((xDiv2 + yDiv2 * DUNGEON_MAP_MAX_X) * sizeof(struct UnkDungeonGlobal_1822C_Sub)); + dungeon->dungeonMap.vramCopies[id].mapArrayPtr = dst; + dungeon->dungeonMap.vramCopies[id].boolPtr = &dungeon->dungeonMap.tileScheduledForCopy[yDiv2][xDiv2]; + dungeon->dungeonMap.scheduledVramCopiesCount++; } else { - dungeon->dungeonMap.unk1BDD1 = 1; + dungeon->dungeonMap.copyAllAtOnce = TRUE; } } } -void sub_8040788(void) +void CopyDungeonMapToVram(void) { s32 i; Dungeon *dungeon = gDungeon; if (dungeon == NULL) return; - if (!dungeon->dungeonMap.unk1BDD0) + if (!dungeon->dungeonMap.copyToVram) return; if (sub_800EC74()) return; - if (!dungeon->dungeonMap.unk1BDD1) { - for (i = 0; i < dungeon->dungeonMap.unk1BDCC; i++) { - struct UnkDungeonGlobal_unk1BBEC *ptr = &dungeon->dungeonMap.unk1BBEC[i]; - u32 *src = ptr->ptr2; - u32 *dst = ptr->ptr1; + if (!dungeon->dungeonMap.copyAllAtOnce) { + for (i = 0; i < dungeon->dungeonMap.scheduledVramCopiesCount; i++) { + struct DungeonMapVramCopy *ptr = &dungeon->dungeonMap.vramCopies[i]; + u32 *src = ptr->mapArrayPtr; + u32 *dst = ptr->vramPtr; if (gUnknown_202EDD0 == 0 || gUnknown_202EDD0 == 3) { *dst++ = *src++; @@ -417,9 +439,9 @@ void sub_8040788(void) else { void *dst, *src; - dungeon->dungeonMap.unk1BDD1 = FALSE; - dst = gUnknown_202EE08; - src = dungeon->dungeonMap.dungeonMap[0][0].arr; + dungeon->dungeonMap.copyAllAtOnce = FALSE; + dst = sDungeonMapVramDst; + src = dungeon->dungeonMap.perTile[0][0].arr; for (i = 0; i < DUNGEON_MAX_SIZE_X * 8; i += 8) { if (gUnknown_202EDD0 == 0 || gUnknown_202EDD0 == 3) { @@ -428,9 +450,9 @@ void sub_8040788(void) dst += 0x100; src += 0x100; } - dungeon->dungeonMap.unk1BDD2 = 1; + dungeon->dungeonMap.resetTilesScheduledForCopy = TRUE; } - dungeon->dungeonMap.unk1BDCC = 0; + dungeon->dungeonMap.scheduledVramCopiesCount = 0; } void ShowPlayerDotOnMap(void) @@ -476,24 +498,24 @@ void ResetMapPlayerDotFrames(void) sPlayerDotFrames = 0; } -void sub_8040A84(void) +void ShowWholeRevealedDungeonMap(void) { s32 x, y; - gDungeon->dungeonMap.unk1BDD1 = TRUE; + gDungeon->dungeonMap.copyAllAtOnce = TRUE; for (y = 0; y < DUNGEON_MAX_SIZE_Y; y++) { for (x = 0; x < DUNGEON_MAX_SIZE_X; x++) { - sub_80402AC(x, y); + ShowDungeonMapAtPos(x, y); } } } -void sub_8040ABC(bool8 a0) +void UpdateBgTilemapForDungeonMap(bool8 a0) { s32 id, count1, count2; s32 i, j; - u16 val; + u16 tilemapValue; if (gGameOptionsRef->mapOption == TOP_MAP_AND_TEAM_NO_BOTTOM) { count1 = 15; @@ -508,44 +530,44 @@ void sub_8040ABC(bool8 a0) count2 = 3; } - val = 0xE0B8; + tilemapValue = TILEMAP_TILE_NUM(0xB8) | TILEMAP_PAL(14); id = 1; for (i = 0; i < count1; i++) { - u16 *ptr = &gUnknown_202B038[0][id][1]; + u16 *ptr = &gBgTilemaps[0][id][1]; for (j = 0; j < 28; j++) { - *ptr++ = val++; + *ptr++ = tilemapValue++; } id++; } for (i = 0; i < count2; i++) { - u16 *ptr = &gUnknown_202B038[0][id][1]; + u16 *ptr = &gBgTilemaps[0][id][1]; for (j = 0; j < 28; j++) { - *ptr++ = 0xE000; + *ptr++ = TILEMAP_TILE_NUM(0) | TILEMAP_PAL(14); } id++; } } -// BUG: Overflowing into unk1BBEC. They forgot that the array size is max X/Y divided by two... -void sub_8040B60(void) +// BUG: Overflowing into vramCopies. They forgot that the array size is max X/Y divided by two... +void TryResetDungeonMapTilesScheduledForCopy(void) { s32 x, y; Dungeon *dungeon = gDungeon; - if (dungeon->dungeonMap.unk1BDD2) { + if (dungeon->dungeonMap.resetTilesScheduledForCopy) { #ifdef BUGFIX - for (y = 0; y < UNK1822C_ARR_COUNT; y++) { - for (x = 0; x < UNK1822C_ARR_COUNT_2; x++) { - dungeon->dungeonMap.unk1BA2C[y][x] = FALSE; + for (y = 0; y < DUNGEON_MAP_MAX_Y; y++) { + for (x = 0; x < DUNGEON_MAP_MAX_X; x++) { + dungeon->dungeonMap.tileScheduledForCopy[y][x] = FALSE; } } #else for (y = 0; y < DUNGEON_MAX_SIZE_Y; y++) { for (x = 0; x < DUNGEON_MAX_SIZE_X; x++) { - dungeon->dungeonMap.unk1BA2C[y][x] = FALSE; + dungeon->dungeonMap.tileScheduledForCopy[y][x] = FALSE; } } #endif // BUGFIX - dungeon->dungeonMap.unk1BDD2 = FALSE; + dungeon->dungeonMap.resetTilesScheduledForCopy = FALSE; } } diff --git a/src/dungeon_map_access.c b/src/dungeon_map_access.c index 18190d39e..fd1ebe87e 100644 --- a/src/dungeon_map_access.c +++ b/src/dungeon_map_access.c @@ -37,7 +37,7 @@ EWRAM_DATA Tile gOutOfBoundsTileData = {0}; EWRAM_INIT const Tile *gCurTilesetOobTile = {NULL}; extern u8 sub_8043CE4(u32); -extern void sub_80402AC(s32, s32); +extern void ShowDungeonMapAtPos(s32, s32); extern int sprintf(char *, const char *, ...); const Tile *GetTile(s32 x, s32 y) @@ -503,7 +503,7 @@ void sub_8049ED4(void) for (j = 0; j < 23; j++) { y &= 0x1F; - gUnknown_202B038[3][y][x] = *src; + gBgTilemaps[3][y][x] = *src; src += 3; y++; r8++; @@ -618,7 +618,7 @@ void sub_804A1F0(s32 a0, s32 a1) for (i = 0; i < 23; i++) { x &= 0x1F; y &= 0x1F; - gUnknown_202B038[3][y][x] = *src; + gBgTilemaps[3][y][x] = *src; src += 3; y++; r8++; @@ -719,7 +719,7 @@ void sub_804A49C(s32 a0, s32 a1) for (i = 0; i < 31; i++) { x &= 0x1F; y &= 0x1F; - gUnknown_202B038[3][y][x] = *src; + gBgTilemaps[3][y][x] = *src; src++; x++; r9++; @@ -833,7 +833,7 @@ void sub_804A728(DungeonPos *pos, s32 a1, u8 a2, u8 a3) for (j = 0; j < 21; j++) { x &= 0x1F; y &= 0x1F; - gUnknown_202B038[2][y][x] = *src; + gBgTilemaps[2][y][x] = *src; src += 3; y++; var_34++; @@ -893,7 +893,7 @@ void sub_804AA60(void) { for(j = 0; j < 0x20; j++) { - gUnknown_202B038[2][i][j] = 0; + gBgTilemaps[2][i][j] = 0; } } sub_80098F8(2); @@ -1023,7 +1023,7 @@ void sub_804AC20(DungeonPos *pos) for (x = xMin; x <= xMax; x++) { tile = GetTileMut(x,y); tile->spawnOrVisibilityFlags |= 3; - sub_80402AC(x,y); + ShowDungeonMapAtPos(x,y); } } } diff --git a/src/dungeon_message.c b/src/dungeon_message.c index f731400f4..ce445f182 100644 --- a/src/dungeon_message.c +++ b/src/dungeon_message.c @@ -735,7 +735,7 @@ void sub_8052FB8(const u8 *str) { s32 i; for (i = 1; i < 30; i++) { - gUnknown_202B038[0][0][i] = 0; + gBgTilemaps[0][0][i] = 0; } } diff --git a/src/dungeon_serializer.c b/src/dungeon_serializer.c index 179d945a4..6f3530849 100644 --- a/src/dungeon_serializer.c +++ b/src/dungeon_serializer.c @@ -450,7 +450,7 @@ static void WriteDungeonVisibility(DataSerializer *seri) WriteU8(seri, gDungeon->unk181e8.priority); WriteU8(seri, gDungeon->unk181e8.visibilityRange); WriteBool8(seri, gDungeon->unk181e8.blinded); - WriteBool8(seri, gDungeon->unk181e8.unk1820B); + WriteBool8(seri, gDungeon->unk181e8.allTilesRevealed); WriteBool8(seri, gDungeon->unk181e8.unk1820C); WriteBool8(seri, gDungeon->unk181e8.unk1820D); WriteBool8(seri, gDungeon->unk181e8.showAllFloorItems); @@ -847,7 +847,7 @@ static void ReadDungeonVisibility(DataSerializer *seri) gDungeon->unk181e8.priority = ReadU8(seri); gDungeon->unk181e8.visibilityRange = ReadU8(seri); gDungeon->unk181e8.blinded = ReadBool8(seri); - gDungeon->unk181e8.unk1820B = ReadBool8(seri); + gDungeon->unk181e8.allTilesRevealed = ReadBool8(seri); gDungeon->unk181e8.unk1820C = ReadBool8(seri); gDungeon->unk181e8.unk1820D = ReadBool8(seri); gDungeon->unk181e8.showAllFloorItems = ReadBool8(seri); diff --git a/src/friend_areas_map_util.c b/src/friend_areas_map_util.c index 5d88a9508..837ce5c89 100644 --- a/src/friend_areas_map_util.c +++ b/src/friend_areas_map_util.c @@ -153,8 +153,8 @@ void FriendAreasMap_UpdateBg(void) x1 &= 0x1F; y1 &= 0x1F; - gUnknown_202B038[2][y1][x1] = gFriendAreasMapPtr->unk2014[y2][x2]; - gUnknown_202B038[3][y1][x1] = gFriendAreasMapPtr->unk14[y2][x2]; + gBgTilemaps[2][y1][x1] = gFriendAreasMapPtr->unk2014[y2][x2]; + gBgTilemaps[3][y1][x1] = gFriendAreasMapPtr->unk14[y2][x2]; x2++; x1++; } diff --git a/src/status.c b/src/status.c index f6ca6db60..b0581100c 100644 --- a/src/status.c +++ b/src/status.c @@ -140,7 +140,7 @@ extern void nullsub_84(Entity *); extern void nullsub_85(Entity *); extern void sub_803F580(u32); -extern void sub_8040A84(void); +extern void ShowWholeRevealedDungeonMap(void); extern void sub_8041D9C(Entity *); extern void sub_8041DB0(Entity *pokemon); extern void sub_8041CA8(Entity *); @@ -713,7 +713,7 @@ void HandleScannerOrb(Entity* pokemon, Entity* target) SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], target, 0); TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FAEA0); // Item locations became evident sub_803F580(0); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); EntityUpdateStatusSprites(target); } } @@ -738,7 +738,7 @@ void HandleStairsOrb(Entity* pokemon, Entity* target) SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0); TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FAEC8); sub_803F580(0); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); EntityUpdateStatusSprites(target); } } @@ -758,7 +758,7 @@ void HandleRadarOrb(Entity* pokemon, Entity* target) SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0); TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FAFAC); sub_803F580(0); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); EntityUpdateStatusSprites(target); } } diff --git a/src/status_actions.c b/src/status_actions.c index c623a8a77..de33f439a 100644 --- a/src/status_actions.c +++ b/src/status_actions.c @@ -43,7 +43,7 @@ extern void sub_8068FE0(Entity *, u32, Entity *r2); extern void sub_806F370(Entity *r0, Entity *r1, u32, u32, u8 *, u8, s32, u32, u32, u32); extern void sub_807FC3C(DungeonPos *, u32, u32); extern void sub_8042A64(DungeonPos *); -extern void sub_8040A84(void); +extern void ShowWholeRevealedDungeonMap(void); extern void sub_80498A8(s32, s32); extern void sub_8042A54(DungeonPos *); extern void sub_8049BB0(s32, s32); @@ -954,7 +954,7 @@ bool8 TrapbustOrbAction(Entity * pokemon,Entity * target, Move *move, s32 param_ } if (foundTrap) { TryDisplayDungeonLoggableMessage3(pokemon, target, *gUnknown_80FD1B0); - sub_8040A84(); + ShowWholeRevealedDungeonMap(); sub_8049ED4(); } else { @@ -1106,7 +1106,7 @@ bool8 FillInOrbAction(Entity *pokemon,Entity *target, Move *move, s32 param_4) else { TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FD0B8); } - sub_8040A84(); + ShowWholeRevealedDungeonMap(); sub_8049ED4(); return filledInTile; } diff --git a/src/text.c b/src/text.c index 8a2abacde..89ec26f3b 100644 --- a/src/text.c +++ b/src/text.c @@ -39,7 +39,7 @@ EWRAM_DATA static s32 sUnknown_202B024 = 0; EWRAM_DATA static s32 sCharHeight[2] = {0}; EWRAM_DATA static u32 sTextShadowMask = 0; // Some text color info is stored; retrieve via "& 0xF" EWRAM_DATA static u8 sDrawTextShadow = 0; -EWRAM_DATA ALIGNED(4) u16 gUnknown_202B038[4][32][32] = {0}; +EWRAM_DATA ALIGNED(4) u16 gBgTilemaps[4][32][32] = {0}; IWRAM_DATA static s16 gUnknown_3000E94[161] = {0}; @@ -190,12 +190,12 @@ void LoadCharmaps(void) sCharacterSpacing = 0; for (i = 0; i < 20; i++) { - gUnknown_202B038[0][i][0] = 0xf279; - gUnknown_202B038[1][i][0] = 0xf27a; + gBgTilemaps[0][i][0] = 0xf279; + gBgTilemaps[1][i][0] = 0xf27a; for (j = 1; j < 32; j++) { - gUnknown_202B038[0][i][j] = 0; - gUnknown_202B038[1][i][j] = 0xf27a; + gBgTilemaps[0][i][j] = 0; + gBgTilemaps[1][i][j] = 0xf27a; } } @@ -297,7 +297,7 @@ static void SaveUnkTextStructAndXXX_8006438(const Windows *a0, bool8 a1, bool8 a sUnknown_202AFC0.id[i] = a0->id[i]; if (a0->id[i].width) { - sub_8006554(gUnknown_2027370, (u32 *)VRAM, sUnknown_20274B4, &gUnknown_202B038[0][0][0], gUnknown_80B8804[i], &a0->id[i], a1, r9, a3, 0); + sub_8006554(gUnknown_2027370, (u32 *)VRAM, sUnknown_20274B4, &gBgTilemaps[0][0][0], gUnknown_80B8804[i], &a0->id[i], a1, r9, a3, 0); sub_80089AC(&a0->id[i], a3); r9 += a0->id[i].width * a0->id[i].unk10; } @@ -1471,8 +1471,8 @@ void sub_8007334(s32 a0) for (i = 0; i < textStructPtr->unk6; i++) { s32 id = textStructPtr->unk0; for (j = 0; j < textStructPtr->unk4; j++) { - gUnknown_202B038[0][r6][id] &= ~0x3ff; - gUnknown_202B038[0][r6][id] |= r5; + gBgTilemaps[0][r6][id] &= ~0x3ff; + gBgTilemaps[0][r6][id] |= r5; id++; r5++; } @@ -2278,7 +2278,7 @@ static void sub_8007D00(UnkTextStruct1 *a0, u32 a1, s32 x, s32 y, s32 a4, s32 co void sub_8007E20(u32 a0, u32 a1, u32 a2, u32 a3, u32 a4, u32 *a5, u32 a6) { - sub_8007E64(gUnknown_2027370, gUnknown_202B038[0], a0, a1, a2, a3, a4, a5, a6); + sub_8007E64(gUnknown_2027370, gBgTilemaps[0], a0, a1, a2, a3, a4, a5, a6); } UNUSED static void nullsub_160(void) @@ -2355,7 +2355,7 @@ static u32 FlipPixelsHorizontally(u32 a0) UNUSED static void sub_8007FEC(u32 a0, u32 a1, u32 a2, u32 a3, u32 a4, u32 *a5, u32 a6) { - sub_8008030(gUnknown_2027370, gUnknown_202B038[0], a0, a1, a2, a3, a4, a5, a6); + sub_8008030(gUnknown_2027370, gBgTilemaps[0], a0, a1, a2, a3, a4, a5, a6); } UNUSED static void nullsub_161(void) @@ -2459,7 +2459,7 @@ UNUSED static void sub_80081A4(s32 a0, s32 a3, s32 a4, s32 a7Id) void DisplayMonPortraitSprite(s32 a0, const u8 *compressedData, s32 a2) { - DisplayMonPortrait(gUnknown_2027370, gUnknown_202B038[0], a0, compressedData, a2); + DisplayMonPortrait(gUnknown_2027370, gBgTilemaps[0], a0, compressedData, a2); } UNUSED static void nullsub_162(void) @@ -2550,7 +2550,7 @@ static void DisplayMonPortraitFlipped(UnkTextStruct1 *a0, s32 a1, const u8 *comp UNUSED static void sub_8008468(u32 a0, u32 a1, u32 a2, u32 a3, u32 a4, u32 a6) { - sub_80084A4(gUnknown_2027370, gUnknown_202B038[0], a0, a1, a2, a3, a4, a6); + sub_80084A4(gUnknown_2027370, gBgTilemaps[0], a0, a1, a2, a3, a4, a6); } UNUSED static void nullsub_164(void) @@ -3083,14 +3083,14 @@ UNUSED static bool8 sub_8008DA8(void) UNUSED static void sub_8008DAC(s32 a0, s32 a1, s32 a2) { - gUnknown_202B038[0][a1][a0] = a2; + gBgTilemaps[0][a1][a0] = a2; gUnknown_20274A5 = TRUE; } void sub_8008DC8(s32 a0, s32 a1, u16 a2, s32 a3) { - gUnknown_202B038[0][a1][a0] = a2; - gUnknown_202B038[1][a1][a0] = a3; + gBgTilemaps[0][a1][a0] = a2; + gBgTilemaps[1][a1][a0] = a3; gUnknown_20274A5 = TRUE; } @@ -3106,7 +3106,7 @@ UNUSED static void sub_8008DF4(s32 a0, s32 a1, u8 *a2) if (r1 >= 97 && r1 <= 122) { r1 -= 32; } - gUnknown_202B038[0][a1][a0] = 0xF000 | (r1 + 0x258); + gBgTilemaps[0][a1][a0] = 0xF000 | (r1 + 0x258); a2++; a0++; } @@ -3128,7 +3128,7 @@ UNUSED static void sub_8008E58(s32 a0, s32 a1, u8 *a2, s32 a3) if (r1 >= 97 && r1 <= 122) { r1 -= 32; } - gUnknown_202B038[0][a1][a0] = 0xF000 | (r1 + 0x258); + gBgTilemaps[0][a1][a0] = 0xF000 | (r1 + 0x258); a2++; a0++; a3--; @@ -3432,14 +3432,14 @@ static void sub_8009388(void) { s32 i, j; - gUnknown_202B038[0][0][0] = 0xF279; - gUnknown_202B038[1][0][0] = 0xF27A; + gBgTilemaps[0][0][0] = 0xF279; + gBgTilemaps[1][0][0] = 0xF27A; for (i = sUnknown_202B020; i < sUnknown_202B024; i++) { - gUnknown_202B038[0][i][0] = 0xF279; - gUnknown_202B038[1][i][0] = 0xF27A; + gBgTilemaps[0][i][0] = 0xF279; + gBgTilemaps[1][i][0] = 0xF27A; for (j = 1; j < 32; j++) { - gUnknown_202B038[0][i][j] = 0; - gUnknown_202B038[1][i][j] = 0xF27A; + gBgTilemaps[0][i][j] = 0; + gBgTilemaps[1][i][j] = 0xF27A; } } } @@ -3448,14 +3448,14 @@ void sub_8009408(s32 from, s32 to) { s32 i, j; - gUnknown_202B038[0][0][0] = 0xF279; - gUnknown_202B038[1][0][0] = 0xF27A; + gBgTilemaps[0][0][0] = 0xF279; + gBgTilemaps[1][0][0] = 0xF27A; for (i = from; i < to; i++) { - gUnknown_202B038[0][i][0] = 0xF279; - gUnknown_202B038[1][i][0] = 0xF27A; + gBgTilemaps[0][i][0] = 0xF279; + gBgTilemaps[1][i][0] = 0xF27A; for (j = 1; j < 32; j++) { - gUnknown_202B038[0][i][j] = 0; - gUnknown_202B038[1][i][j] = 0xF27A; + gBgTilemaps[0][i][j] = 0; + gBgTilemaps[1][i][j] = 0xF27A; } } gUnknown_20274A5 = TRUE; @@ -3471,8 +3471,8 @@ UNUSED static void sub_8009488(s32 strArrId) for (i = 0; i < strPtr->unk6; i++) { id1 = strPtr->unk0; for (j = 0; j < strPtr->unk4; j++) { - gUnknown_202B038[0][id0][id1] &= 0xFC00; - gUnknown_202B038[1][id0][id1] = 0xF27A; + gBgTilemaps[0][id0][id1] &= 0xFC00; + gBgTilemaps[1][id0][id1] = 0xF27A; id1++; } id0++; @@ -3492,8 +3492,8 @@ void sub_8009524(s32 strArrId) for (i = 0; i < strPtr->unk6 + 2; i++) { s32 id1 = strPtr->unk0 - 1; for (j = 0; j < strPtr->unk4 + 2; j++) { - gUnknown_202B038[0][id0][id1] &= 0xFC00; - gUnknown_202B038[1][id0][id1] = 0xF27A; + gBgTilemaps[0][id0][id1] &= 0xFC00; + gBgTilemaps[1][id0][id1] = 0xF27A; id1++; } id0++; diff --git a/src/tile_types.c b/src/tile_types.c index ac0b9dbd4..3ee74f822 100644 --- a/src/tile_types.c +++ b/src/tile_types.c @@ -84,7 +84,7 @@ const u8 gDungeonWaterType[76] = { DUNGEON_WATER_TYPE_NONE, }; -extern void sub_80402AC(s32, s32); +extern void ShowDungeonMapAtPos(s32, s32); extern void sub_8049BB0(s32, s32); void sub_8042A14(DungeonPos *); @@ -136,7 +136,7 @@ bool8 sub_804AD34(DungeonPos *pos) { sub_80498A8(x + pos->x, y + pos->y); sub_8049BB0(x + pos->x, y + pos->y); - sub_80402AC(x + pos->x, y + pos->y); + ShowDungeonMapAtPos(x + pos->x, y + pos->y); } } } @@ -198,7 +198,7 @@ void sub_804AE84(DungeonPos *pos) for(x = -1; x < 2; x++) { sub_80498A8(x + pos->x, y + pos->y); - sub_80402AC(x + pos->x, y + pos->y); + ShowDungeonMapAtPos(x + pos->x, y + pos->y); } } diff --git a/src/trap.c b/src/trap.c index 2d5dca55f..036f18b2a 100644 --- a/src/trap.c +++ b/src/trap.c @@ -58,7 +58,7 @@ extern u32 gUnknown_8106A50; void sub_806A9B4(Entity *, u32); void sub_80461C8(DungeonPos *, u32); -void sub_80402AC(s32, s32); +void ShowDungeonMapAtPos(s32, s32); s16 sub_803D970(u32); bool8 sub_806AA0C(s32, s32); void sub_80421EC(DungeonPos *, u32); @@ -771,7 +771,7 @@ void HandlePokemonTrap(Entity *param_1,DungeonPos *pos) counter++; } } - sub_80402AC(x,y); + ShowDungeonMapAtPos(x,y); } } } diff --git a/src/world_map.c b/src/world_map.c index 50032c5a1..c47ca543a 100644 --- a/src/world_map.c +++ b/src/world_map.c @@ -367,8 +367,8 @@ static void UpdateBg(void) x1 &= 0x1F; y1 &= 0x1F; - gUnknown_202B038[2][y1][x1] = sWorldMapPtr->unk3114[y2][x2]; - gUnknown_202B038[3][y1][x1] = sWorldMapPtr->unk1114[y2][x2]; + gBgTilemaps[2][y1][x1] = sWorldMapPtr->unk3114[y2][x2]; + gBgTilemaps[3][y1][x1] = sWorldMapPtr->unk1114[y2][x2]; x2++; x1++; }