summaryrefslogtreecommitdiff
path: root/src/pokenav_region_map.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pokenav_region_map.c')
-rwxr-xr-xsrc/pokenav_region_map.c524
1 files changed, 266 insertions, 258 deletions
diff --git a/src/pokenav_region_map.c b/src/pokenav_region_map.c
index be30ca94d..59eaf6b71 100755
--- a/src/pokenav_region_map.c
+++ b/src/pokenav_region_map.c
@@ -13,23 +13,27 @@
#include "task.h"
#include "text_window.h"
#include "window.h"
+#include "constants/rgb.h"
#include "constants/songs.h"
+#include "constants/region_map_sections.h"
+
+#define NUM_CITY_MAPS 22
struct Pokenav5Struct
{
u8 filler0[0xC];
- bool32 unkC;
- u32 (*unk10)(struct Pokenav5Struct *);
+ bool32 zoomDisabled;
+ u32 (*callback)(struct Pokenav5Struct *);
};
struct Pokenav5Struct_2
{
- bool32 (*unk0)(void);
- u32 unk4;
- u16 unk8;
- struct Sprite *cityFeatureTextSprites[3];
- u8 unk18[0x800];
- u8 cityZoomPics[22][0xC8];
+ bool32 (*isTaskActiveCB)(void);
+ u32 loopTaskId;
+ u16 infoWindowId;
+ struct Sprite *cityZoomTextSprites[3];
+ u8 tilemapBuffer[0x800];
+ u8 cityZoomPics[NUM_CITY_MAPS][200];
};
struct CityMapEntry
@@ -39,45 +43,43 @@ struct CityMapEntry
const u32 *tilemap;
};
-static u32 sub_81CC568(struct Pokenav5Struct *);
-static u32 sub_81CC5B4(struct Pokenav5Struct *);
-static u32 sub_81CC5DC(struct Pokenav5Struct *);
-static u32 sub_81CC6F4(s32);
-static u32 sub_81CCD34(s32);
-static bool32 sub_81CC6BC(void);
-static void sub_81CC9EC(void);
-static void sub_81CC9C0(void);
-static void sub_81CCD10(void);
-static bool32 sub_81CCD24(void);
-static void sub_81CCA1C(struct Pokenav5Struct_2 *);
-static bool32 sub_81CCAFC(void);
-static void sub_81CCB0C(struct Pokenav5Struct_2 *);
-static bool32 sub_81CCC4C(struct Pokenav5Struct_2 *);
-static void sub_81CCC5C(int);
-static bool32 sub_81CCC88(void);
-static void sub_81CCE58(void);
-static void sub_81CCD70(struct Pokenav5Struct_2 *, int, int);
-static void sub_81CCDE8(struct Pokenav5Struct_2 *, int, int);
-static void sub_81CCFA4(int);
-static void sub_81CCC9C(u8 taskId);
-static void sub_81CCF78(void);
-void sub_81CCEF4(struct Sprite *sprite);
-u32 sub_81CC848(s32);
-u32 sub_81CC878(s32);
-u32 sub_81CC8D8(s32);
-u32 sub_81CC95C(s32);
-
-extern const u16 gHoennMapZoomIcons_Pal[];
-extern const struct SpriteTemplate gUnknown_086231D0;
-extern const u32 gHoennMapZoomIcons_Gfx[];
-
-const u16 gUnknown_08622868[] = INCBIN_U16("graphics/pokenav/8622868.gbapal");
-const u32 gUnknown_08622888[] = INCBIN_U32("graphics/pokenav/zoom_tiles.4bpp.lz");
+static u32 HandleRegionMapInput(struct Pokenav5Struct *);
+static u32 HandleRegionMapInputZoomDisabled(struct Pokenav5Struct *);
+static u32 GetExitRegionMapMenuId(struct Pokenav5Struct *);
+static u32 LoopedTask_OpenRegionMap(s32);
+static u32 LoopedTask_DecompressCityMaps(s32);
+static bool32 GetCurrentLoopedTaskActive(void);
+static void FreeCityZoomViewGfx(void);
+static void LoadCityZoomViewGfx(void);
+static void DecompressCityMaps(void);
+static bool32 IsDecompressCityMapsActive(void);
+static void LoadPokenavRegionMapGfx(struct Pokenav5Struct_2 *);
+static bool32 TryFreeTempTileDataBuffers(void);
+static void UpdateMapSecInfoWindow(struct Pokenav5Struct_2 *);
+static bool32 IsDma3ManagerBusyWithBgCopy_(struct Pokenav5Struct_2 *);
+static void ChangeBgYForZoom(bool32);
+static bool32 IsChangeBgYForZoomActive(void);
+static void CreateCityZoomTextSprites(void);
+static void DrawCityMap(struct Pokenav5Struct_2 *, int, int);
+static void PrintLandmarkNames(struct Pokenav5Struct_2 *, int, int);
+static void SetCityZoomTextInvisibility(bool32);
+static void Task_ChangeBgYForZoom(u8 taskId);
+static void UpdateCityZoomTextPosition(void);
+static void SpriteCB_CityZoomText(struct Sprite *sprite);
+static u32 LoopedTask_UpdateInfoAfterCursorMove(s32);
+static u32 LoopedTask_RegionMapZoomOut(s32);
+static u32 LoopedTask_RegionMapZoomIn(s32);
+static u32 LoopedTask_ExitRegionMap(s32);
+
+extern const u16 gRegionMapCityZoomTiles_Pal[];
+extern const u32 gRegionMapCityZoomText_Gfx[];
+
+static const u16 sMapSecInfoWindow_Pal[] = INCBIN_U16("graphics/pokenav/region_map_info_window.gbapal");
+static const u32 sRegionMapCityZoomTiles_Gfx[] = INCBIN_U32("graphics/pokenav/city_zoom_tiles.4bpp.lz");
#include "data/region_map/city_map_tilemaps.h"
-
-const struct BgTemplate gUnknown_086230D8[3] =
+static const struct BgTemplate sRegionMapBgTemplates[3] =
{
{
.bg = 1,
@@ -108,27 +110,27 @@ const struct BgTemplate gUnknown_086230D8[3] =
},
};
-const LoopedTask gUnknown_086230E4[] =
+static const LoopedTask sRegionMapLoopTaskFuncs[] =
{
- NULL,
- sub_81CC848,
- sub_81CC878,
- sub_81CC8D8,
- sub_81CC95C
+ [POKENAV_MAP_FUNC_NONE] = NULL,
+ [POKENAV_MAP_FUNC_CURSOR_MOVED] = LoopedTask_UpdateInfoAfterCursorMove,
+ [POKENAV_MAP_FUNC_ZOOM_OUT] = LoopedTask_RegionMapZoomOut,
+ [POKENAV_MAP_FUNC_ZOOM_IN] = LoopedTask_RegionMapZoomIn,
+ [POKENAV_MAP_FUNC_EXIT] = LoopedTask_ExitRegionMap
};
-const struct CompressedSpriteSheet gUnknown_086230F8[1] =
+static const struct CompressedSpriteSheet sCityZoomTextSpriteSheet[1] =
{
- {gHoennMapZoomIcons_Gfx, 0x800, 6}
+ {gRegionMapCityZoomText_Gfx, 0x800, 6}
};
-const struct SpritePalette gUnknown_08623100[] =
+static const struct SpritePalette sCityZoomTilesSpritePalette[] =
{
- {gHoennMapZoomIcons_Pal, 11},
+ {gRegionMapCityZoomTiles_Pal, 11},
{}
};
-const struct WindowTemplate gUnknown_08623110 =
+static const struct WindowTemplate sMapSecInfoWindowTemplate =
{
.bg = 1,
.tilemapLeft = 17,
@@ -141,7 +143,7 @@ const struct WindowTemplate gUnknown_08623110 =
#include "data/region_map/city_map_entries.h"
-const struct OamData gUnknown_086231C8 =
+const struct OamData sCityZoomTextSprite_OamData =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -155,18 +157,18 @@ const struct OamData gUnknown_086231C8 =
.paletteNum = 0,
};
-const struct SpriteTemplate gUnknown_086231D0 =
+static const struct SpriteTemplate sCityZoomTextSpriteTemplate =
{
.tileTag = 6,
.paletteTag = 11,
- .oam = &gUnknown_086231C8,
+ .oam = &sCityZoomTextSprite_OamData,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_81CCEF4,
+ .callback = SpriteCB_CityZoomText,
};
-u32 PokenavCallback_Init_6(void)
+u32 PokenavCallback_Init_RegionMap(void)
{
struct Pokenav5Struct *state = AllocSubstruct(3, sizeof(struct Pokenav5Struct));
if (!state)
@@ -175,105 +177,105 @@ u32 PokenavCallback_Init_6(void)
if (!AllocSubstruct(16, sizeof(struct RegionMap)))
return FALSE;
- state->unkC = sub_8124668(gMapHeader.regionMapSectionId);
- if (!state->unkC)
- state->unk10 = sub_81CC568;
+ state->zoomDisabled = IsEventIslandMapSecId(gMapHeader.regionMapSectionId);
+ if (!state->zoomDisabled)
+ state->callback = HandleRegionMapInput;
else
- state->unk10 = sub_81CC5B4;
+ state->callback = HandleRegionMapInputZoomDisabled;
return TRUE;
}
-void sub_81CC524(void)
+void FreeRegionMapSubstruct1(void)
{
- gSaveBlock2Ptr->regionMapZoom = sub_8124658();
+ gSaveBlock2Ptr->regionMapZoom = IsRegionMapZoomed();
FreePokenavSubstruct(16);
FreePokenavSubstruct(3);
}
-u32 sub_81CC554(void)
+u32 GetRegionMapCallback(void)
{
struct Pokenav5Struct *state = GetSubstructPtr(3);
- return state->unk10(state);
+ return state->callback(state);
}
-static u32 sub_81CC568(struct Pokenav5Struct *state)
+static u32 HandleRegionMapInput(struct Pokenav5Struct *state)
{
- switch (sub_81230AC())
+ switch (DoRegionMapInputCallback())
{
- case 3:
- return 1;
- case 4:
- if (!sub_8124658())
- return 3;
- return 2;
- case 5:
- state->unk10 = sub_81CC5DC;
- return 4;
+ case MAP_INPUT_MOVE_END:
+ return POKENAV_MAP_FUNC_CURSOR_MOVED;
+ case MAP_INPUT_A_BUTTON:
+ if (!IsRegionMapZoomed())
+ return POKENAV_MAP_FUNC_ZOOM_IN;
+ return POKENAV_MAP_FUNC_ZOOM_OUT;
+ case MAP_INPUT_B_BUTTON:
+ state->callback = GetExitRegionMapMenuId;
+ return POKENAV_MAP_FUNC_EXIT;
}
- return 0;
+ return POKENAV_MAP_FUNC_NONE;
}
-static u32 sub_81CC5B4(struct Pokenav5Struct *state)
+static u32 HandleRegionMapInputZoomDisabled(struct Pokenav5Struct *state)
{
if (gMain.newKeys & B_BUTTON)
{
- state->unk10 = sub_81CC5DC;
- return 4;
+ state->callback = GetExitRegionMapMenuId;
+ return POKENAV_MAP_FUNC_EXIT;
}
- return 0;
+ return POKENAV_MAP_FUNC_NONE;
}
-static u32 sub_81CC5DC(struct Pokenav5Struct *state)
+static u32 GetExitRegionMapMenuId(struct Pokenav5Struct *state)
{
- return POKENAV_MENU_1;
+ return POKENAV_MAIN_MENU_CURSOR_ON_MAP;
}
-bool32 sub_81CC5E4(void)
+bool32 GetZoomDisabled(void)
{
struct Pokenav5Struct *state = GetSubstructPtr(3);
- return state->unkC;
+ return state->zoomDisabled;
}
-bool32 sub_81CC5F4(void)
+bool32 OpenPokenavRegionMap(void)
{
struct Pokenav5Struct_2 *state = AllocSubstruct(4, sizeof(struct Pokenav5Struct_2));
if (!state)
return FALSE;
- state->unk4 = CreateLoopedTask(sub_81CC6F4, 1);
- state->unk0 = sub_81CC6BC;
+ state->loopTaskId = CreateLoopedTask(LoopedTask_OpenRegionMap, 1);
+ state->isTaskActiveCB = GetCurrentLoopedTaskActive;
return TRUE;
}
-void sub_81CC62C(s32 index)
+void CreateRegionMapLoopedTask(s32 index)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
- state->unk4 = CreateLoopedTask(gUnknown_086230E4[index], 1);
- state->unk0 = sub_81CC6BC;
+ state->loopTaskId = CreateLoopedTask(sRegionMapLoopTaskFuncs[index], 1);
+ state->isTaskActiveCB = GetCurrentLoopedTaskActive;
}
-u32 sub_81CC65C(void)
+bool32 IsRegionMapLoopedTaskActive(void)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
- return state->unk0();
+ return state->isTaskActiveCB();
}
-void sub_81CC670(void)
+void FreeRegionMapSubstruct2(void)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
FreeRegionMapIconResources();
- sub_81CC9EC();
- RemoveWindow(state->unk8);
+ FreeCityZoomViewGfx();
+ RemoveWindow(state->infoWindowId);
FreePokenavSubstruct(16);
FreePokenavSubstruct(4);
SetPokenavVBlankCallback();
SetBgMode(0);
}
-static void sub_81CC6A4(void)
+static void VBlankCB_RegionMap(void)
{
TransferPlttBuffer();
LoadOam();
@@ -281,23 +283,23 @@ static void sub_81CC6A4(void)
UpdateRegionMapVideoRegs();
}
-static bool32 sub_81CC6BC(void)
+static bool32 GetCurrentLoopedTaskActive(void)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
- return IsLoopedTaskActive(state->unk4);
+ return IsLoopedTaskActive(state->loopTaskId);
}
-static bool8 sub_81CC6D0(void)
+static bool8 ShouldOpenRegionMapZoomed(void)
{
- if (sub_81CC5E4())
+ if (GetZoomDisabled())
return FALSE;
- return gSaveBlock2Ptr->regionMapZoom == 1;
+ return gSaveBlock2Ptr->regionMapZoom == TRUE;
}
-static u32 sub_81CC6F4(s32 taskState)
+static u32 LoopedTask_OpenRegionMap(s32 taskState)
{
- int var0;
+ int menuGfxId;
struct RegionMap *regionMap;
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
switch (taskState)
@@ -308,209 +310,209 @@ static u32 sub_81CC6F4(s32 taskState)
HideBg(2);
HideBg(3);
SetBgMode(1);
- InitBgTemplates(gUnknown_086230D8, ARRAY_COUNT(gUnknown_086230D8) - 1);
+ InitBgTemplates(sRegionMapBgTemplates, ARRAY_COUNT(sRegionMapBgTemplates) - 1);
regionMap = GetSubstructPtr(16);
- sub_8122CF8(regionMap, &gUnknown_086230D8[1], sub_81CC6D0());
- sub_81CC9C0();
- return 0;
+ InitRegionMapData(regionMap, &sRegionMapBgTemplates[1], ShouldOpenRegionMapZoomed());
+ LoadCityZoomViewGfx();
+ return LT_INC_AND_PAUSE;
case 1:
- if (sub_8122DB0())
- return 2;
+ if (LoadRegionMapGfx())
+ return LT_PAUSE;
- if (!sub_81CC5E4())
+ if (!GetZoomDisabled())
{
CreateRegionMapPlayerIcon(4, 9);
CreateRegionMapCursor(5, 10);
- sub_812454C();
+ TrySetPlayerIconBlink();
}
else
{
- sub_8123030(0, 6);
+ sub_8123030(RGB_BLACK, 6);
}
- return 0;
+ return LT_INC_AND_PAUSE;
case 2:
- sub_81CCD10();
- return 1;
+ DecompressCityMaps();
+ return LT_INC_AND_CONTINUE;
case 3:
- if (sub_81CCD24())
- return 2;
+ if (IsDecompressCityMapsActive())
+ return LT_PAUSE;
- sub_81CCA1C(state);
- return 1;
+ LoadPokenavRegionMapGfx(state);
+ return LT_INC_AND_CONTINUE;
case 4:
- if (sub_81CCAFC())
- return 2;
+ if (TryFreeTempTileDataBuffers())
+ return LT_PAUSE;
- sub_81CCB0C(state);
+ UpdateMapSecInfoWindow(state);
sub_81C7B40();
- return 0;
+ return LT_INC_AND_PAUSE;
case 5:
- if (sub_81CCC4C(state))
- return 2;
+ if (IsDma3ManagerBusyWithBgCopy_(state))
+ return LT_PAUSE;
ShowBg(1);
ShowBg(2);
- SetVBlankCallback_(sub_81CC6A4);
- return 0;
+ SetVBlankCallback_(VBlankCB_RegionMap);
+ return LT_INC_AND_PAUSE;
case 6:
- if (!sub_81CC6D0())
- var0 = 4;
+ if (!ShouldOpenRegionMapZoomed())
+ menuGfxId = POKENAV_GFX_MAP_MENU_ZOOMED_OUT;
else
- var0 = 5;
+ menuGfxId = POKENAV_GFX_MAP_MENU_ZOOMED_IN;
- LoadLeftHeaderGfxForIndex(var0);
- sub_81C7FA0(var0, 1, 1);
- sub_81C7AC0(1);
- return 0;
+ LoadLeftHeaderGfxForIndex(menuGfxId);
+ sub_81C7FA0(menuGfxId, 1, 1);
+ PokenavFadeScreen(1);
+ return LT_INC_AND_PAUSE;
case 7:
if (IsPaletteFadeActive() || sub_81C8010())
- return 2;
- return 1;
+ return LT_PAUSE;
+ return LT_INC_AND_CONTINUE;
default:
- return 4;
+ return LT_FINISH;
}
}
-u32 sub_81CC848(s32 taskState)
+static u32 LoopedTask_UpdateInfoAfterCursorMove(s32 taskState)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
switch (taskState)
{
case 0:
- sub_81CCB0C(state);
- return 0;
+ UpdateMapSecInfoWindow(state);
+ return LT_INC_AND_PAUSE;
case 1:
- if (sub_81CCC4C(state))
- return 2;
+ if (IsDma3ManagerBusyWithBgCopy_(state))
+ return LT_PAUSE;
break;
}
- return 4;
+ return LT_FINISH;
}
-u32 sub_81CC878(s32 taskState)
+static u32 LoopedTask_RegionMapZoomOut(s32 taskState)
{
switch (taskState)
{
case 0:
PlaySE(SE_SELECT);
- sub_81CCC5C(0);
- sub_8123418();
- return 0;
+ ChangeBgYForZoom(FALSE);
+ SetRegionMapDataForZoom();
+ return LT_INC_AND_PAUSE;
case 1:
- if (sub_8123514() || sub_81CCC88())
- return 2;
+ if (UpdateRegionMapZoom() || IsChangeBgYForZoomActive())
+ return LT_PAUSE;
PrintHelpBarText(HELPBAR_MAP_ZOOMED_OUT);
- return 0;
+ return LT_INC_AND_PAUSE;
case 2:
if (WaitForHelpBar())
- return 2;
+ return LT_PAUSE;
- sub_81C7E14(4);
+ sub_81C7E14(POKENAV_GFX_MAP_MENU_ZOOMED_OUT);
break;
}
- return 4;
+ return LT_FINISH;
}
-u32 sub_81CC8D8(s32 taskState)
+static u32 LoopedTask_RegionMapZoomIn(s32 taskState)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
switch (taskState)
{
case 0:
PlaySE(SE_SELECT);
- sub_81CCB0C(state);
- return 0;
+ UpdateMapSecInfoWindow(state);
+ return LT_INC_AND_PAUSE;
case 1:
- if (sub_81CCC4C(state))
- return 2;
+ if (IsDma3ManagerBusyWithBgCopy_(state))
+ return LT_PAUSE;
- sub_81CCC5C(1);
- sub_8123418();
- return 0;
+ ChangeBgYForZoom(TRUE);
+ SetRegionMapDataForZoom();
+ return LT_INC_AND_PAUSE;
case 2:
- if (sub_8123514() || sub_81CCC88())
- return 2;
+ if (UpdateRegionMapZoom() || IsChangeBgYForZoomActive())
+ return LT_PAUSE;
PrintHelpBarText(HELPBAR_MAP_ZOOMED_IN);
- return 0;
+ return LT_INC_AND_PAUSE;
case 3:
if (WaitForHelpBar())
- return 2;
+ return LT_PAUSE;
- sub_81C7E14(5);
+ sub_81C7E14(POKENAV_GFX_MAP_MENU_ZOOMED_IN);
break;
}
- return 4;
+ return LT_FINISH;
}
-u32 sub_81CC95C(s32 taskState)
+static u32 LoopedTask_ExitRegionMap(s32 taskState)
{
switch (taskState)
{
case 0:
PlaySE(SE_SELECT);
- sub_81C7AC0(0);
- return 0;
+ PokenavFadeScreen(0);
+ return LT_INC_AND_PAUSE;
case 1:
if (IsPaletteFadeActive())
- return 2;
+ return LT_PAUSE;
sub_81C7FDC();
sub_81C78A0();
- return 0;
+ return LT_INC_AND_PAUSE;
case 2:
if (MainMenuLoopedTaskIsBusy())
- return 2;
+ return LT_PAUSE;
HideBg(1);
HideBg(2);
HideBg(3);
- return 0;
+ return LT_INC_AND_PAUSE;
}
- return 4;
+ return LT_FINISH;
}
-static void sub_81CC9C0(void)
+static void LoadCityZoomViewGfx(void)
{
int i;
- for (i = 0; i < ARRAY_COUNT(gUnknown_086230F8); i++)
- LoadCompressedSpriteSheet(&gUnknown_086230F8[i]);
+ for (i = 0; i < ARRAY_COUNT(sCityZoomTextSpriteSheet); i++)
+ LoadCompressedSpriteSheet(&sCityZoomTextSpriteSheet[i]);
- Pokenav_AllocAndLoadPalettes(gUnknown_08623100);
- sub_81CCE58();
+ Pokenav_AllocAndLoadPalettes(sCityZoomTilesSpritePalette);
+ CreateCityZoomTextSprites();
}
-static void sub_81CC9EC(void)
+static void FreeCityZoomViewGfx(void)
{
int i;
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
FreeSpriteTilesByTag(6);
FreeSpritePaletteByTag(11);
- for (i = 0; i < 3; i++)
- DestroySprite(state->cityFeatureTextSprites[i]);
+ for (i = 0; i < (int)ARRAY_COUNT(state->cityZoomTextSprites); i++)
+ DestroySprite(state->cityZoomTextSprites[i]);
}
-static void sub_81CCA1C(struct Pokenav5Struct_2 *state)
+static void LoadPokenavRegionMapGfx(struct Pokenav5Struct_2 *state)
{
sub_8199DF0(1, PIXEL_FILL(0), 0x40, 1);
sub_8199DF0(1, PIXEL_FILL(1), 0x41, 1);
- CpuFill16(0x1040, state->unk18, 0x800);
- SetBgTilemapBuffer(1, state->unk18);
- state->unk8 = AddWindow(&gUnknown_08623110);
- LoadUserWindowBorderGfx_(state->unk8, 0x42, 0x40);
- DrawTextBorderOuter(state->unk8, 0x42, 4);
- decompress_and_copy_tile_data_to_vram(1, gUnknown_08622888, 0, 0, 0);
- FillWindowPixelBuffer(state->unk8, PIXEL_FILL(1));
- PutWindowTilemap(state->unk8);
- CopyWindowToVram(state->unk8, 3);
- CopyPaletteIntoBufferUnfaded(gUnknown_08622868, 0x10, 0x20);
- CopyPaletteIntoBufferUnfaded(gHoennMapZoomIcons_Pal, 0x30, 0x20);
- if (!sub_8124658())
+ CpuFill16(0x1040, state->tilemapBuffer, 0x800);
+ SetBgTilemapBuffer(1, state->tilemapBuffer);
+ state->infoWindowId = AddWindow(&sMapSecInfoWindowTemplate);
+ LoadUserWindowBorderGfx_(state->infoWindowId, 0x42, 0x40);
+ DrawTextBorderOuter(state->infoWindowId, 0x42, 4);
+ decompress_and_copy_tile_data_to_vram(1, sRegionMapCityZoomTiles_Gfx, 0, 0, 0);
+ FillWindowPixelBuffer(state->infoWindowId, PIXEL_FILL(1));
+ PutWindowTilemap(state->infoWindowId);
+ CopyWindowToVram(state->infoWindowId, 3);
+ CopyPaletteIntoBufferUnfaded(sMapSecInfoWindow_Pal, 0x10, 0x20);
+ CopyPaletteIntoBufferUnfaded(gRegionMapCityZoomTiles_Pal, 0x30, 0x20);
+ if (!IsRegionMapZoomed())
ChangeBgY(1, -0x6000, 0);
else
ChangeBgY(1, 0, 0);
@@ -518,68 +520,70 @@ static void sub_81CCA1C(struct Pokenav5Struct_2 *state)
ChangeBgX(1, 0, 0);
}
-static bool32 sub_81CCAFC(void)
+static bool32 TryFreeTempTileDataBuffers(void)
{
return free_temp_tile_data_buffers_if_possible();
}
-static void sub_81CCB0C(struct Pokenav5Struct_2 *state)
+static void UpdateMapSecInfoWindow(struct Pokenav5Struct_2 *state)
{
struct RegionMap *regionMap = GetSubstructPtr(16);
- switch (regionMap->iconDrawType)
+ switch (regionMap->mapSecType)
{
case MAPSECTYPE_CITY_CANFLY:
- FillWindowPixelBuffer(state->unk8, PIXEL_FILL(1));
- PutWindowRectTilemap(state->unk8, 0, 0, 12, 2);
- AddTextPrinterParameterized(state->unk8, 7, regionMap->mapSecName, 0, 1, TEXT_SPEED_FF, NULL);
- sub_81CCD70(state, regionMap->mapSecId, regionMap->posWithinMapSec);
- CopyWindowToVram(state->unk8, 3);
- sub_81CCFA4(0);
+ FillWindowPixelBuffer(state->infoWindowId, PIXEL_FILL(1));
+ PutWindowRectTilemap(state->infoWindowId, 0, 0, 12, 2);
+ AddTextPrinterParameterized(state->infoWindowId, 7, regionMap->mapSecName, 0, 1, TEXT_SPEED_FF, NULL);
+ DrawCityMap(state, regionMap->mapSecId, regionMap->posWithinMapSec);
+ CopyWindowToVram(state->infoWindowId, 3);
+ SetCityZoomTextInvisibility(FALSE);
break;
case MAPSECTYPE_CITY_CANTFLY:
- FillWindowPixelBuffer(state->unk8, PIXEL_FILL(1));
- PutWindowRectTilemap(state->unk8, 0, 0, 12, 2);
- AddTextPrinterParameterized(state->unk8, 7, regionMap->mapSecName, 0, 1, TEXT_SPEED_FF, NULL);
+ FillWindowPixelBuffer(state->infoWindowId, PIXEL_FILL(1));
+ PutWindowRectTilemap(state->infoWindowId, 0, 0, 12, 2);
+ AddTextPrinterParameterized(state->infoWindowId, 7, regionMap->mapSecName, 0, 1, TEXT_SPEED_FF, NULL);
FillBgTilemapBufferRect(1, 0x1041, 17, 6, 12, 11, 17);
- CopyWindowToVram(state->unk8, 3);
- sub_81CCFA4(1);
+ CopyWindowToVram(state->infoWindowId, 3);
+ SetCityZoomTextInvisibility(TRUE);
break;
- case MAPSECTYPE_PLAIN:
+ case MAPSECTYPE_ROUTE:
case MAPSECTYPE_BATTLE_FRONTIER:
- FillWindowPixelBuffer(state->unk8, PIXEL_FILL(1));
- PutWindowTilemap(state->unk8);
- AddTextPrinterParameterized(state->unk8, 7, regionMap->mapSecName, 0, 1, TEXT_SPEED_FF, NULL);
- sub_81CCDE8(state, regionMap->mapSecId, regionMap->posWithinMapSec);
- CopyWindowToVram(state->unk8, 3);
- sub_81CCFA4(1);
+ FillWindowPixelBuffer(state->infoWindowId, PIXEL_FILL(1));
+ PutWindowTilemap(state->infoWindowId);
+ AddTextPrinterParameterized(state->infoWindowId, 7, regionMap->mapSecName, 0, 1, TEXT_SPEED_FF, NULL);
+ PrintLandmarkNames(state, regionMap->mapSecId, regionMap->posWithinMapSec);
+ CopyWindowToVram(state->infoWindowId, 3);
+ SetCityZoomTextInvisibility(TRUE);
break;
case MAPSECTYPE_NONE:
FillBgTilemapBufferRect(1, 0x1041, 17, 4, 12, 13, 17);
CopyBgTilemapBufferToVram(1);
- sub_81CCFA4(1);
+ SetCityZoomTextInvisibility(TRUE);
break;
}
}
-static bool32 sub_81CCC4C(struct Pokenav5Struct_2 *state)
+static bool32 IsDma3ManagerBusyWithBgCopy_(struct Pokenav5Struct_2 *state)
{
return IsDma3ManagerBusyWithBgCopy();
}
-static void sub_81CCC5C(int arg0)
+#define tZoomIn data[0]
+
+static void ChangeBgYForZoom(bool32 zoomIn)
{
- u8 taskId = CreateTask(sub_81CCC9C, 3);
- gTasks[taskId].data[0] = arg0;
+ u8 taskId = CreateTask(Task_ChangeBgYForZoom, 3);
+ gTasks[taskId].tZoomIn = zoomIn;
}
-static bool32 sub_81CCC88(void)
+static bool32 IsChangeBgYForZoomActive(void)
{
- return FuncIsActiveTask(sub_81CCC9C);
+ return FuncIsActiveTask(Task_ChangeBgYForZoom);
}
-static void sub_81CCC9C(u8 taskId)
+static void Task_ChangeBgYForZoom(u8 taskId)
{
- if (gTasks[taskId].data[0])
+ if (gTasks[taskId].tZoomIn)
{
if (ChangeBgY(1, 0x480, 1) >= 0)
{
@@ -587,7 +591,7 @@ static void sub_81CCC9C(u8 taskId)
DestroyTask(taskId);
}
- sub_81CCF78();
+ UpdateCityZoomTextPosition();
}
else
{
@@ -597,46 +601,48 @@ static void sub_81CCC9C(u8 taskId)
DestroyTask(taskId);
}
- sub_81CCF78();
+ UpdateCityZoomTextPosition();
}
}
-static void sub_81CCD10(void)
+#undef tZoomIn
+
+static void DecompressCityMaps(void)
{
- CreateLoopedTask(sub_81CCD34, 1);
+ CreateLoopedTask(LoopedTask_DecompressCityMaps, 1);
}
-static bool32 sub_81CCD24(void)
+static bool32 IsDecompressCityMapsActive(void)
{
- return FuncIsActiveLoopedTask(sub_81CCD34);
+ return FuncIsActiveLoopedTask(LoopedTask_DecompressCityMaps);
}
-static u32 sub_81CCD34(s32 taskState)
+static u32 LoopedTask_DecompressCityMaps(s32 taskState)
{
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
- if (taskState < (int)ARRAY_COUNT(gPokenavCityMaps))
+ if (taskState < NUM_CITY_MAPS)
{
- LZ77UnCompWram(gPokenavCityMaps[taskState].tilemap, state->cityZoomPics[taskState]);
- return 1;
+ LZ77UnCompWram(sPokenavCityMaps[taskState].tilemap, state->cityZoomPics[taskState]);
+ return LT_INC_AND_CONTINUE;
}
- return 4;
+ return LT_FINISH;
}
-static void sub_81CCD70(struct Pokenav5Struct_2 *state, int mapSecId, int pos)
+static void DrawCityMap(struct Pokenav5Struct_2 *state, int mapSecId, int pos)
{
int i;
- for (i = 0; i < (int)ARRAY_COUNT(gPokenavCityMaps) && (gPokenavCityMaps[i].mapSecId != mapSecId || gPokenavCityMaps[i].index != pos); i++)
+ for (i = 0; i < NUM_CITY_MAPS && (sPokenavCityMaps[i].mapSecId != mapSecId || sPokenavCityMaps[i].index != pos); i++)
;
- if (i == ARRAY_COUNT(gPokenavCityMaps))
+ if (i == NUM_CITY_MAPS)
return;
FillBgTilemapBufferRect_Palette0(1, 0x1041, 17, 6, 12, 11);
CopyToBgTilemapBufferRect(1, state->cityZoomPics[i], 18, 6, 10, 10);
}
-static void sub_81CCDE8(struct Pokenav5Struct_2 *state, int mapSecId, int pos)
+static void PrintLandmarkNames(struct Pokenav5Struct_2 *state, int mapSecId, int pos)
{
int i = 0;
while (1)
@@ -646,26 +652,27 @@ static void sub_81CCDE8(struct Pokenav5Struct_2 *state, int mapSecId, int pos)
break;
StringCopyPadded(gStringVar1, landmarkName, CHAR_SPACE, 12);
- AddTextPrinterParameterized(state->unk8, 7, gStringVar1, 0, i * 16 + 17, TEXT_SPEED_FF, NULL);
+ AddTextPrinterParameterized(state->infoWindowId, 7, gStringVar1, 0, i * 16 + 17, TEXT_SPEED_FF, NULL);
i++;
}
}
-static void sub_81CCE58(void)
+static void CreateCityZoomTextSprites(void)
{
int i;
int y;
struct Sprite *sprite;
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
- if (!sub_8124658())
+ // When not zoomed in the text is still created but its pushed off screen
+ if (!IsRegionMapZoomed())
y = 228;
else
y = 132;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < (int)ARRAY_COUNT(state->cityZoomTextSprites); i++)
{
- u8 spriteId = CreateSprite(&gUnknown_086231D0, 152 + i * 32, y, 8);
+ u8 spriteId = CreateSprite(&sCityZoomTextSpriteTemplate, 152 + i * 32, y, 8);
sprite = &gSprites[spriteId];
sprite->data[0] = 0;
sprite->data[1] = i * 4;
@@ -673,11 +680,12 @@ static void sub_81CCE58(void)
sprite->data[3] = 150;
sprite->data[4] = i * 4;
sprite->oam.tileNum += i * 4;
- state->cityFeatureTextSprites[i] = sprite;
+ state->cityZoomTextSprites[i] = sprite;
}
}
-void sub_81CCEF4(struct Sprite *sprite)
+// Slide and cycle through the text key showing what the features on the zoomed city map are
+static void SpriteCB_CityZoomText(struct Sprite *sprite)
{
if (sprite->data[3])
{
@@ -711,19 +719,19 @@ void sub_81CCEF4(struct Sprite *sprite)
}
}
-static void sub_81CCF78(void)
+static void UpdateCityZoomTextPosition(void)
{
int i;
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
int y = 132 - (GetBgY(1) >> 8);
- for (i = 0; i < 3; i++)
- state->cityFeatureTextSprites[i]->pos1.y = y;
+ for (i = 0; i < (int)ARRAY_COUNT(state->cityZoomTextSprites); i++)
+ state->cityZoomTextSprites[i]->pos1.y = y;
}
-static void sub_81CCFA4(int invisible)
+static void SetCityZoomTextInvisibility(bool32 invisible)
{
int i;
struct Pokenav5Struct_2 *state = GetSubstructPtr(4);
- for (i = 0; i < 3; i++)
- state->cityFeatureTextSprites[i]->invisible = invisible;
+ for (i = 0; i < (int)ARRAY_COUNT(state->cityZoomTextSprites); i++)
+ state->cityZoomTextSprites[i]->invisible = invisible;
}