Document src/region-map.c

This commit is contained in:
cbt6
2022-11-20 08:11:13 +08:00
parent dfa2bfc5e5
commit 97987bc1b7
2 changed files with 139 additions and 134 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ enum {
u8 *GetMapName(u8 *dest, u16 mapsec, u16 fill); u8 *GetMapName(u8 *dest, u16 mapsec, u16 fill);
u8 *GetMapNameGeneric(u8 *dest, u16 mapsec); u8 *GetMapNameGeneric(u8 *dest, u16 mapsec);
u8 *GetMapNameGeneric_(u8 *dest, u16 mapsec); u8 *GetMapNameGeneric_(u8 *dest, u16 mapsec);
void InitRegionMapWithExitCB(u8 a0, void (*a1)(void)); void InitRegionMapWithExitCB(u8 type, void (*callback)(void));
void CB2_OpenFlyMap(void); void CB2_OpenFlyMap(void);
#endif // GUARD_REGION_MAP_H #endif // GUARD_REGION_MAP_H
+138 -133
View File
@@ -76,6 +76,15 @@ enum {
MAPPERM_COUNT MAPPERM_COUNT
}; };
enum {
MAPEDGE_TOP_LEFT,
MAPEDGE_MID_LEFT,
MAPEDGE_BOT_LEFT,
MAPEDGE_TOP_RIGHT,
MAPEDGE_MID_RIGHT,
MAPEDGE_BOT_RIGHT,
};
#define FREE_IF_NOT_NULL(ptr) ({ \ #define FREE_IF_NOT_NULL(ptr) ({ \
if (ptr) { \ if (ptr) { \
FREE_AND_SET_NULL(ptr); \ FREE_AND_SET_NULL(ptr); \
@@ -264,7 +273,7 @@ struct RegionMapGpuRegs
struct FlyMap struct FlyMap
{ {
u8 state; u8 state;
u8 unknown; // Never read u8 unused; // Never read
bool8 selectedDestination; bool8 selectedDestination;
}; };
@@ -302,9 +311,9 @@ static u8 GetSelectedRegionMap(void);
static void InitSwitchMapMenu(u8, u8, TaskFunc); static void InitSwitchMapMenu(u8, u8, TaskFunc);
static void Task_SwitchMapMenu(u8); static void Task_SwitchMapMenu(u8);
static void FreeSwitchMapMenu(u8); static void FreeSwitchMapMenu(u8);
static bool8 sub_80C12EC(void); static bool8 BrightenScreenForSwitchMapMenu(void);
static void LoadSwitchMapTilemap(u8, u16 *); static void LoadSwitchMapTilemap(u8, u16 *);
static void DrawSwitchMapSelectionHighlight(void); static void SetGpuRegsToDimScreen(void);
static bool8 DimScreenForSwitchMapMenu(void); static bool8 DimScreenForSwitchMapMenu(void);
static bool8 HandleSwitchMapInput(void); static bool8 HandleSwitchMapInput(void);
static bool8 CreateSwitchMapCursor(void); static bool8 CreateSwitchMapCursor(void);
@@ -324,7 +333,7 @@ static void Task_MapOpenAnim(u8);
static void FreeMapOpenCloseAnim(void); static void FreeMapOpenCloseAnim(void);
static void FreeMapEdgeSprites(void); static void FreeMapEdgeSprites(void);
static bool8 MoveMapEdgesOutward(void); static bool8 MoveMapEdgesOutward(void);
static void sub_80C2B48(void); static void SetGpuWindowDimsToMapEdges(void);
static void DoMapCloseAnim(u8); static void DoMapCloseAnim(u8);
static void Task_MapCloseAnim(u8); static void Task_MapCloseAnim(u8);
static bool8 MoveMapEdgesInward(void); static bool8 MoveMapEdgesInward(void);
@@ -387,12 +396,7 @@ static const u16 sPlayerIcon_RedPal[] = INCBIN_U16("graphics/region_map/player_i
static const u16 sPlayerIcon_LeafPal[] = INCBIN_U16("graphics/region_map/player_icon_leaf.gbapal"); static const u16 sPlayerIcon_LeafPal[] = INCBIN_U16("graphics/region_map/player_icon_leaf.gbapal");
static const u16 sMiscIcon_Pal[] = INCBIN_U16("graphics/region_map/misc_icon.gbapal"); // For dungeon and fly icons static const u16 sMiscIcon_Pal[] = INCBIN_U16("graphics/region_map/misc_icon.gbapal"); // For dungeon and fly icons
static const u16 sRegionMap_Pal[] = INCBIN_U16("graphics/region_map/region_map.gbapal"); static const u16 sRegionMap_Pal[] = INCBIN_U16("graphics/region_map/region_map.gbapal");
static const u16 unref_83EF37C[] = { static const u16 sUnusedPalette[] = { RGB(0, 0, 31), RGB(0, 12, 31), RGB_WHITE, RGB_WHITE };
RGB(0, 0, 31),
RGB(0, 12, 31),
RGB_WHITE,
RGB_WHITE
};
static const u16 sSwitchMapCursor_Pal[] = INCBIN_U16("graphics/region_map/switch_map_cursor.gbapal"); static const u16 sSwitchMapCursor_Pal[] = INCBIN_U16("graphics/region_map/switch_map_cursor.gbapal");
static const u16 sMapEdge_Pal[] = INCBIN_U16("graphics/region_map/map_edge.gbapal"); static const u16 sMapEdge_Pal[] = INCBIN_U16("graphics/region_map/map_edge.gbapal");
static const u32 sSwitchMapCursorLeft_Gfx[] = INCBIN_U32("graphics/region_map/switch_map_cursor_left.4bpp.lz"); static const u32 sSwitchMapCursorLeft_Gfx[] = INCBIN_U32("graphics/region_map/switch_map_cursor_left.4bpp.lz");
@@ -727,7 +731,7 @@ static const union AnimCmd *const sAnims_MapEdge[] = {
sAnim_MapEdge sAnim_MapEdge
}; };
static const struct GpuWindowParams gUnknown_83F1C34 = { static const struct GpuWindowParams sMapWindowDim = {
.left = 24, .left = 24,
.top = 16, .top = 16,
.right = 216, .right = 216,
@@ -952,12 +956,12 @@ static void RegionMap_DarkenPalette(u16 *pal, u16 size, u16 tint)
} }
} }
static void sub_80BFEA0(void) static void TintMapEdgesPalette(void)
{ {
u16 pal[16]; u16 mapEdgesPal[16];
CpuCopy16(&sRegionMap_Pal[32], pal, sizeof(pal)); CpuCopy16(&sRegionMap_Pal[0x20], mapEdgesPal, sizeof(mapEdgesPal));
RegionMap_DarkenPalette(pal, NELEMS(pal), 95); RegionMap_DarkenPalette(mapEdgesPal, NELEMS(mapEdgesPal), 95);
LoadPalette(pal, 32, sizeof(pal)); LoadPalette(mapEdgesPal, 0x20, sizeof(mapEdgesPal));
LoadPalette(&sRegionMap_Pal[0x2F], 0x2F, sizeof(sRegionMap_Pal[0x2F])); LoadPalette(&sRegionMap_Pal[0x2F], 0x2F, sizeof(sRegionMap_Pal[0x2F]));
} }
@@ -1105,7 +1109,7 @@ static bool8 LoadRegionMapGfx(void)
break; break;
case 1: case 1:
LoadPalette(sRegionMap_Pal, 0, sizeof(sRegionMap_Pal)); LoadPalette(sRegionMap_Pal, 0, sizeof(sRegionMap_Pal));
sub_80BFEA0(); TintMapEdgesPalette();
if (sRegionMap->type != REGIONMAP_TYPE_NORMAL) if (sRegionMap->type != REGIONMAP_TYPE_NORMAL)
{ {
LoadPalette(&sTopBar_Pal[15], 16 * 0, sizeof(sTopBar_Pal[15])); LoadPalette(&sTopBar_Pal[15], 16 * 0, sizeof(sTopBar_Pal[15]));
@@ -1276,7 +1280,7 @@ static void Task_RegionMap(u8 taskId)
DoMapCloseAnim(taskId); DoMapCloseAnim(taskId);
// FIXME: goto required to match // FIXME: goto required to match
// sRegionMap->mainState++; // sRegionMap->mainState++;
goto _080C0798; goto INCREMENT_MAIN_STATE_AND_BREAK;
} }
else else
{ {
@@ -1285,7 +1289,7 @@ static void Task_RegionMap(u8 taskId)
break; break;
case 5: case 5:
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
_080C0798: INCREMENT_MAIN_STATE_AND_BREAK:
sRegionMap->mainState++; sRegionMap->mainState++;
break; break;
default: default:
@@ -1420,7 +1424,9 @@ static void UpdateMapsecNameBox(void)
ResetGpuRegs(); ResetGpuRegs();
SetBldCnt(0, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_OBJ, BLDCNT_EFFECT_DARKEN); SetBldCnt(0, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_OBJ, BLDCNT_EFFECT_DARKEN);
SetBldY(BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2); SetBldY(BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2);
SetWinIn(57, 57); SetWinIn(
(WININ_WIN0_BG0 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR),
(WININ_WIN1_BG0 | WININ_WIN1_BG3 | WININ_WIN1_OBJ | WININ_WIN1_CLR) >> 8);
SetWinOut(WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ); SetWinOut(WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ);
SetGpuWindowDims(WIN_MAP_NAME, &sMapsecNameWindowDims[WIN_MAP_NAME]); SetGpuWindowDims(WIN_MAP_NAME, &sMapsecNameWindowDims[WIN_MAP_NAME]);
SetGpuWindowDims(WIN_DUNGEON_NAME, &sMapsecNameWindowDims[WIN_DUNGEON_NAME]); SetGpuWindowDims(WIN_DUNGEON_NAME, &sMapsecNameWindowDims[WIN_DUNGEON_NAME]);
@@ -1589,7 +1595,7 @@ static void ResetGpuRegsForSwitchMapMenu(void)
SetBldAlpha(16 - sSwitchMapMenu->alpha, sSwitchMapMenu->alpha); SetBldAlpha(16 - sSwitchMapMenu->alpha, sSwitchMapMenu->alpha);
} }
static bool8 sub_80C1014(void) static bool8 FadeSwitchMapMenuIn(void)
{ {
if (sSwitchMapMenu->alpha < 16) if (sSwitchMapMenu->alpha < 16)
{ {
@@ -1603,7 +1609,7 @@ static bool8 sub_80C1014(void)
} }
} }
static bool8 sub_80C1058(void) static bool8 FadeSwitchMapMenuOut(void)
{ {
if (sSwitchMapMenu->alpha >= 2) if (sSwitchMapMenu->alpha >= 2)
{ {
@@ -1649,9 +1655,9 @@ static void Task_SwitchMapMenu(u8 taskId)
sSwitchMapMenu->mainState++; sSwitchMapMenu->mainState++;
break; break;
case 6: case 6:
if (sub_80C1014() == TRUE) if (FadeSwitchMapMenuIn() == TRUE)
{ {
DrawSwitchMapSelectionHighlight(); SetGpuRegsToDimScreen();
sSwitchMapMenu->mainState++; sSwitchMapMenu->mainState++;
} }
break; break;
@@ -1681,7 +1687,7 @@ static void Task_SwitchMapMenu(u8 taskId)
} }
break; break;
case 10: case 10:
if (sub_80C12EC() == TRUE) if (BrightenScreenForSwitchMapMenu() == TRUE)
{ {
FreeSwitchMapCursor(); FreeSwitchMapCursor();
ResetGpuRegsForSwitchMapMenu(); ResetGpuRegsForSwitchMapMenu();
@@ -1689,7 +1695,7 @@ static void Task_SwitchMapMenu(u8 taskId)
} }
break; break;
case 11: case 11:
if (sub_80C1058() == TRUE) if (FadeSwitchMapMenuOut() == TRUE)
{ {
sSwitchMapMenu->mainState++; sSwitchMapMenu->mainState++;
} }
@@ -1716,7 +1722,7 @@ static void FreeSwitchMapMenu(u8 taskId)
FREE_IF_NOT_NULL(sSwitchMapMenu); FREE_IF_NOT_NULL(sSwitchMapMenu);
} }
static bool8 sub_80C12EC(void) static bool8 BrightenScreenForSwitchMapMenu(void)
{ {
if (sSwitchMapMenu->blendY != 0) if (sSwitchMapMenu->blendY != 0)
{ {
@@ -1748,7 +1754,7 @@ static void LoadSwitchMapTilemap(u8 bg, u16 *map)
} }
} }
static void DrawSwitchMapSelectionHighlight(void) static void SetGpuRegsToDimScreen(void)
{ {
struct GpuWindowParams data; struct GpuWindowParams data;
data.left = sSwitchMapMenu->highlight.left = 72; data.left = sSwitchMapMenu->highlight.left = 72;
@@ -1757,7 +1763,7 @@ static void DrawSwitchMapSelectionHighlight(void)
data.bottom = sSwitchMapMenu->highlight.bottom = sSwitchMapMenu->highlight.top + 32; data.bottom = sSwitchMapMenu->highlight.bottom = sSwitchMapMenu->highlight.top + 32;
ResetGpuRegs(); ResetGpuRegs();
SetBldCnt(0, (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_OBJ), BLDCNT_EFFECT_DARKEN); SetBldCnt(0, (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_OBJ), BLDCNT_EFFECT_DARKEN);
SetWinIn(31, 21); SetWinIn((WININ_WIN0_BG_ALL | WININ_WIN0_OBJ), (WININ_WIN1_BG0 | WININ_WIN1_BG2 | WININ_WIN1_OBJ) >> 8);
SetWinOut(WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); SetWinOut(WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
SetDispCnt(1, FALSE); SetDispCnt(1, FALSE);
SetGpuWindowDims(1, &data); SetGpuWindowDims(1, &data);
@@ -1765,7 +1771,7 @@ static void DrawSwitchMapSelectionHighlight(void)
static bool8 DimScreenForSwitchMapMenu(void) static bool8 DimScreenForSwitchMapMenu(void)
{ {
if (sSwitchMapMenu->blendY < (BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2)) if (sSwitchMapMenu->blendY < 6)
{ {
sSwitchMapMenu->blendY++; sSwitchMapMenu->blendY++;
SetBldY(sSwitchMapMenu->blendY); SetBldY(sSwitchMapMenu->blendY);
@@ -1797,7 +1803,7 @@ static bool8 HandleSwitchMapInput(void)
sSwitchMapMenu->currentSelection++; sSwitchMapMenu->currentSelection++;
changedSelection = TRUE; changedSelection = TRUE;
} }
if (JOY_NEW(A_BUTTON) && sSwitchMapMenu->blendY == (BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2)) if (JOY_NEW(A_BUTTON) && sSwitchMapMenu->blendY == 6)
{ {
PlaySE(SE_M_SWIFT); PlaySE(SE_M_SWIFT);
sSwitchMapMenu->chosenRegion = sSwitchMapMenu->currentSelection; sSwitchMapMenu->chosenRegion = sSwitchMapMenu->currentSelection;
@@ -2111,7 +2117,7 @@ static void InitScreenForDungeonMapPreview(void)
ResetGpuRegs(); ResetGpuRegs();
SetBldCnt(0, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_OBJ, BLDCNT_EFFECT_DARKEN); SetBldCnt(0, BLDCNT_TGT1_BG0 | BLDCNT_TGT1_OBJ, BLDCNT_EFFECT_DARKEN);
SetBldY(sDungeonMapPreview->blendY); SetBldY(sDungeonMapPreview->blendY);
SetWinIn(0, 13); SetWinIn(0, (WININ_WIN1_BG0 | WININ_WIN1_BG2 | WININ_WIN1_BG3) >> 8);
SetWinOut(WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR); SetWinOut(WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR);
SetDispCnt(1, FALSE); SetDispCnt(1, FALSE);
x = GetMapCursorX(); x = GetMapCursorX();
@@ -2126,7 +2132,7 @@ static void InitScreenForDungeonMapPreview(void)
sDungeonMapPreview->bottomIncrement = (136 - sDungeonMapPreview->bottom) / 8; sDungeonMapPreview->bottomIncrement = (136 - sDungeonMapPreview->bottom) / 8;
} }
static bool8 UpdateDungeonMapPreview(bool8 a0) static bool8 UpdateDungeonMapPreview(bool8 a0) // todo: rename a0
{ {
struct GpuWindowParams data; struct GpuWindowParams data;
@@ -2139,7 +2145,7 @@ static bool8 UpdateDungeonMapPreview(bool8 a0)
sDungeonMapPreview->right += sDungeonMapPreview->rightIncrement; sDungeonMapPreview->right += sDungeonMapPreview->rightIncrement;
sDungeonMapPreview->bottom += sDungeonMapPreview->bottomIncrement; sDungeonMapPreview->bottom += sDungeonMapPreview->bottomIncrement;
sDungeonMapPreview->updateCounter++; sDungeonMapPreview->updateCounter++;
if (sDungeonMapPreview->blendY < (BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2)) if (sDungeonMapPreview->blendY < 6)
sDungeonMapPreview->blendY++; sDungeonMapPreview->blendY++;
} }
else else
@@ -2175,7 +2181,6 @@ static bool8 UpdateDungeonMapPreview(bool8 a0)
static void SpriteCB_MapEdge(struct Sprite *sprite) static void SpriteCB_MapEdge(struct Sprite *sprite)
{ {
} }
static void CreateMapEdgeSprite(u8 mapEdgeNum, u8 tileTag, u8 palTag) static void CreateMapEdgeSprite(u8 mapEdgeNum, u8 tileTag, u8 palTag)
@@ -2249,28 +2254,28 @@ static bool8 LoadMapEdgeGfx(void)
switch (sMapOpenCloseAnim->loadGfxState) switch (sMapOpenCloseAnim->loadGfxState)
{ {
case 0: case 0:
LZ77UnCompWram(sMapEdge_TopLeft, sMapOpenCloseAnim->mapEdges[0]->tiles); LZ77UnCompWram(sMapEdge_TopLeft, sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->tiles);
CreateMapEdgeSprite(0, 4, 4); CreateMapEdgeSprite(MAPEDGE_TOP_LEFT, 4, 4);
break; break;
case 1: case 1:
LZ77UnCompWram(sMapEdge_MidLeft, sMapOpenCloseAnim->mapEdges[1]->tiles); LZ77UnCompWram(sMapEdge_MidLeft, sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_LEFT]->tiles);
CreateMapEdgeSprite(1, 5, 5); CreateMapEdgeSprite(MAPEDGE_MID_LEFT, 5, 5);
break; break;
case 2: case 2:
LZ77UnCompWram(sMapEdge_BottomLeft, sMapOpenCloseAnim->mapEdges[2]->tiles); LZ77UnCompWram(sMapEdge_BottomLeft, sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_LEFT]->tiles);
CreateMapEdgeSprite(2, 6, 6); CreateMapEdgeSprite(MAPEDGE_BOT_LEFT, 6, 6);
break; break;
case 3: case 3:
LZ77UnCompWram(sMapEdge_TopRight, sMapOpenCloseAnim->mapEdges[3]->tiles); LZ77UnCompWram(sMapEdge_TopRight, sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->tiles);
CreateMapEdgeSprite(3, 7, 7); CreateMapEdgeSprite(MAPEDGE_TOP_RIGHT, 7, 7);
break; break;
case 4: case 4:
LZ77UnCompWram(sMapEdge_MidRight, sMapOpenCloseAnim->mapEdges[4]->tiles); LZ77UnCompWram(sMapEdge_MidRight, sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_RIGHT]->tiles);
CreateMapEdgeSprite(4, 8, 8); CreateMapEdgeSprite(MAPEDGE_MID_RIGHT, 8, 8);
break; break;
case 5: case 5:
LZ77UnCompWram(sMapEdge_BottomRight, sMapOpenCloseAnim->mapEdges[5]->tiles); LZ77UnCompWram(sMapEdge_BottomRight, sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_RIGHT]->tiles);
CreateMapEdgeSprite(5, 9, 9); CreateMapEdgeSprite(MAPEDGE_BOT_RIGHT, 9, 9);
break; break;
case 6: case 6:
LZ77UnCompWram(sMapEdge_Gfx, sMapOpenCloseAnim->tiles); LZ77UnCompWram(sMapEdge_Gfx, sMapOpenCloseAnim->tiles);
@@ -2291,24 +2296,24 @@ static bool8 LoadMapEdgeGfx(void)
static void InitScreenForMapOpenAnim(void) static void InitScreenForMapOpenAnim(void)
{ {
struct GpuWindowParams data; struct GpuWindowParams data;
data.left = sMapOpenCloseAnim->mapEdges[0]->x + 8; data.left = sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->x + 8;
data.top = 16; data.top = 16;
data.right = sMapOpenCloseAnim->mapEdges[3]->x - 8; data.right = sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->x - 8;
data.bottom = 160; data.bottom = 160;
SetBldCnt(0, BLDCNT_TGT1_BG1, BLDCNT_EFFECT_NONE); SetBldCnt(0, BLDCNT_TGT1_BG1, BLDCNT_EFFECT_NONE);
SetWinIn(18, 0); SetWinIn((WININ_WIN0_BG1 | WININ_WIN0_OBJ), 0);
SetWinOut(WINOUT_WIN01_OBJ); SetWinOut(WINOUT_WIN01_OBJ);
SetGpuWindowDims(0, &data); SetGpuWindowDims(0, &data);
SetDispCnt(0, FALSE); SetDispCnt(0, FALSE);
} }
static void sub_80C253C(void) static void SetGpuRegsToFadeMapToWhite(void)
{ {
struct GpuWindowParams data = gUnknown_83F1C34; struct GpuWindowParams data = sMapWindowDim;
ResetGpuRegs(); ResetGpuRegs();
SetBldCnt(BLDCNT_TGT2_BG1 >> 8, (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_BD), BLDCNT_EFFECT_LIGHTEN); SetBldCnt(BLDCNT_TGT2_BG1 >> 8, (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG3 | BLDCNT_TGT1_BD), BLDCNT_EFFECT_LIGHTEN);
SetBldY(sMapOpenCloseAnim->blendY); SetBldY(sMapOpenCloseAnim->blendY);
SetWinIn(55, 0); SetWinIn((WININ_WIN0_ALL & ~WININ_WIN0_BG3), 0);
SetWinOut(WINOUT_WIN01_BG1 | WINOUT_WIN01_OBJ); SetWinOut(WINOUT_WIN01_BG1 | WINOUT_WIN01_OBJ);
SetGpuWindowDims(0, &data); SetGpuWindowDims(0, &data);
SetDispCnt(0, FALSE); SetDispCnt(0, FALSE);
@@ -2374,7 +2379,7 @@ static void Task_MapOpenAnim(u8 taskId)
ShowBg(3); ShowBg(3);
ShowBg(1); ShowBg(1);
SetMapEdgeInvisibility(NELEMS(sMapOpenCloseAnim->mapEdges), FALSE); SetMapEdgeInvisibility(NELEMS(sMapOpenCloseAnim->mapEdges), FALSE);
sub_80C2B48(); SetGpuWindowDimsToMapEdges();
sMapOpenCloseAnim->openState++; sMapOpenCloseAnim->openState++;
break; break;
case 5: case 5:
@@ -2394,8 +2399,8 @@ static void Task_MapOpenAnim(u8 taskId)
sMapOpenCloseAnim->openState++; sMapOpenCloseAnim->openState++;
break; break;
case 8: case 8:
sMapOpenCloseAnim->blendY = (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3); sMapOpenCloseAnim->blendY = 15;
sub_80C253C(); SetGpuRegsToFadeMapToWhite();
SetBg0andBg3Hidden(FALSE); SetBg0andBg3Hidden(FALSE);
SetFlyIconInvisibility(GetSelectedRegionMap(), NELEMS(sMapIcons->flyIcons), FALSE); SetFlyIconInvisibility(GetSelectedRegionMap(), NELEMS(sMapIcons->flyIcons), FALSE);
SetDungeonIconInvisibility(GetSelectedRegionMap(), NELEMS(sMapIcons->dungeonIcons), FALSE); SetDungeonIconInvisibility(GetSelectedRegionMap(), NELEMS(sMapIcons->dungeonIcons), FALSE);
@@ -2430,7 +2435,7 @@ static void Task_MapOpenAnim(u8 taskId)
sMapOpenCloseAnim->openState++; sMapOpenCloseAnim->openState++;
break; break;
case 12: case 12:
if (sMapOpenCloseAnim->blendY == BLDCNT_TGT1_BG1) if (sMapOpenCloseAnim->blendY == 2)
{ {
SetMapEdgeInvisibility(NELEMS(sMapOpenCloseAnim->mapEdges), TRUE); SetMapEdgeInvisibility(NELEMS(sMapOpenCloseAnim->mapEdges), TRUE);
sMapOpenCloseAnim->openState++; sMapOpenCloseAnim->openState++;
@@ -2456,79 +2461,79 @@ static void Task_MapOpenAnim(u8 taskId)
static bool8 MoveMapEdgesOutward(void) static bool8 MoveMapEdgesOutward(void)
{ {
sub_80C2B48(); SetGpuWindowDimsToMapEdges();
if (sMapOpenCloseAnim->mapEdges[0]->sprite->x == 0) if (sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x == 0)
{ {
return TRUE; return TRUE;
} }
else if (sMapOpenCloseAnim->moveState > 17) else if (sMapOpenCloseAnim->moveState > 17)
{ {
sMapOpenCloseAnim->mapEdges[0]->sprite->x -= 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x -= 1;
sMapOpenCloseAnim->mapEdges[1]->sprite->x -= 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_LEFT]->sprite->x -= 1;
sMapOpenCloseAnim->mapEdges[2]->sprite->x -= 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_LEFT]->sprite->x -= 1;
sMapOpenCloseAnim->mapEdges[3]->sprite->x += 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->sprite->x += 1;
sMapOpenCloseAnim->mapEdges[4]->sprite->x += 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_RIGHT]->sprite->x += 1;
sMapOpenCloseAnim->mapEdges[5]->sprite->x += 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_RIGHT]->sprite->x += 1;
} }
else if (sMapOpenCloseAnim->moveState > 14) else if (sMapOpenCloseAnim->moveState > 14)
{ {
sMapOpenCloseAnim->mapEdges[0]->sprite->x -= 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x -= 2;
sMapOpenCloseAnim->mapEdges[1]->sprite->x -= 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_LEFT]->sprite->x -= 2;
sMapOpenCloseAnim->mapEdges[2]->sprite->x -= 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_LEFT]->sprite->x -= 2;
sMapOpenCloseAnim->mapEdges[3]->sprite->x += 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->sprite->x += 2;
sMapOpenCloseAnim->mapEdges[4]->sprite->x += 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_RIGHT]->sprite->x += 2;
sMapOpenCloseAnim->mapEdges[5]->sprite->x += 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_RIGHT]->sprite->x += 2;
} }
else if (sMapOpenCloseAnim->moveState > 10) else if (sMapOpenCloseAnim->moveState > 10)
{ {
sMapOpenCloseAnim->mapEdges[0]->sprite->x -= 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x -= 3;
sMapOpenCloseAnim->mapEdges[1]->sprite->x -= 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_LEFT]->sprite->x -= 3;
sMapOpenCloseAnim->mapEdges[2]->sprite->x -= 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_LEFT]->sprite->x -= 3;
sMapOpenCloseAnim->mapEdges[3]->sprite->x += 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->sprite->x += 3;
sMapOpenCloseAnim->mapEdges[4]->sprite->x += 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_RIGHT]->sprite->x += 3;
sMapOpenCloseAnim->mapEdges[5]->sprite->x += 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_RIGHT]->sprite->x += 3;
} }
else if (sMapOpenCloseAnim->moveState > 6) else if (sMapOpenCloseAnim->moveState > 6)
{ {
sMapOpenCloseAnim->mapEdges[0]->sprite->x -= 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x -= 5;
sMapOpenCloseAnim->mapEdges[1]->sprite->x -= 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_LEFT]->sprite->x -= 5;
sMapOpenCloseAnim->mapEdges[2]->sprite->x -= 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_LEFT]->sprite->x -= 5;
sMapOpenCloseAnim->mapEdges[3]->sprite->x += 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->sprite->x += 5;
sMapOpenCloseAnim->mapEdges[4]->sprite->x += 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_RIGHT]->sprite->x += 5;
sMapOpenCloseAnim->mapEdges[5]->sprite->x += 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_RIGHT]->sprite->x += 5;
} }
else else
{ {
sMapOpenCloseAnim->mapEdges[0]->sprite->x -= 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x -= 8;
sMapOpenCloseAnim->mapEdges[1]->sprite->x -= 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_LEFT]->sprite->x -= 8;
sMapOpenCloseAnim->mapEdges[2]->sprite->x -= 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_LEFT]->sprite->x -= 8;
sMapOpenCloseAnim->mapEdges[3]->sprite->x += 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->sprite->x += 8;
sMapOpenCloseAnim->mapEdges[4]->sprite->x += 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_RIGHT]->sprite->x += 8;
sMapOpenCloseAnim->mapEdges[5]->sprite->x += 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_RIGHT]->sprite->x += 8;
} }
sMapOpenCloseAnim->moveState++; sMapOpenCloseAnim->moveState++;
return FALSE; return FALSE;
} }
static void sub_80C2B48(void) static void SetGpuWindowDimsToMapEdges(void)
{ {
struct GpuWindowParams data; struct GpuWindowParams data;
data.left = sMapOpenCloseAnim->mapEdges[0]->sprite->x; data.left = sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x;
data.top = 16; data.top = 16;
data.right = sMapOpenCloseAnim->mapEdges[3]->sprite->x; data.right = sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->sprite->x;
data.bottom = 160; data.bottom = 160;
SetGpuWindowDims(0, &data); SetGpuWindowDims(0, &data);
} }
static void sub_80C2B9C(void) static void InitScreenForMapCloseAnim(void)
{ {
struct GpuWindowParams data; struct GpuWindowParams data;
data.left = sMapOpenCloseAnim->mapEdges[0]->x + 16; data.left = sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->x + 16;
data.top = 16; data.top = 16;
data.right = sMapOpenCloseAnim->mapEdges[3]->x - 16; data.right = sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->x - 16;
data.bottom = 160; data.bottom = 160;
SetBldCnt(0, BLDCNT_TGT1_BG1, BLDCNT_EFFECT_NONE); SetBldCnt(0, BLDCNT_TGT1_BG1, BLDCNT_EFFECT_NONE);
SetWinIn(18, 0); SetWinIn((WININ_WIN0_BG1 | WININ_WIN0_OBJ), 0);
SetWinOut(WINOUT_WIN01_OBJ); SetWinOut(WINOUT_WIN01_OBJ);
SetGpuWindowDims(0, &data); SetGpuWindowDims(0, &data);
SetDispCnt(0, FALSE); SetDispCnt(0, FALSE);
@@ -2578,11 +2583,11 @@ static void Task_MapCloseAnim(u8 taskId)
sMapOpenCloseAnim->closeState++; sMapOpenCloseAnim->closeState++;
break; break;
case 4: case 4:
sub_80C253C(); SetGpuRegsToFadeMapToWhite();
sMapOpenCloseAnim->closeState++; sMapOpenCloseAnim->closeState++;
break; break;
case 5: case 5:
if (sMapOpenCloseAnim->blendY == (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3)) if (sMapOpenCloseAnim->blendY == 15)
{ {
SetBldY(sMapOpenCloseAnim->blendY); SetBldY(sMapOpenCloseAnim->blendY);
sMapOpenCloseAnim->closeState++; sMapOpenCloseAnim->closeState++;
@@ -2594,8 +2599,8 @@ static void Task_MapCloseAnim(u8 taskId)
} }
break; break;
case 6: case 6:
sub_80C2B9C(); InitScreenForMapCloseAnim();
sub_80C2B48(); SetGpuWindowDimsToMapEdges();
PlaySE(SE_CARD_FLIPPING); PlaySE(SE_CARD_FLIPPING);
sMapOpenCloseAnim->closeState++; sMapOpenCloseAnim->closeState++;
break; break;
@@ -2612,55 +2617,55 @@ static void Task_MapCloseAnim(u8 taskId)
static bool8 MoveMapEdgesInward(void) static bool8 MoveMapEdgesInward(void)
{ {
sub_80C2B48(); SetGpuWindowDimsToMapEdges();
if (sMapOpenCloseAnim->mapEdges[0]->sprite->x == 104) if (sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x == 104)
{ {
return TRUE; return TRUE;
} }
else if (sMapOpenCloseAnim->moveState > 17) else if (sMapOpenCloseAnim->moveState > 17)
{ {
sMapOpenCloseAnim->mapEdges[0]->sprite->x += 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x += 1;
sMapOpenCloseAnim->mapEdges[1]->sprite->x += 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_LEFT]->sprite->x += 1;
sMapOpenCloseAnim->mapEdges[2]->sprite->x += 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_LEFT]->sprite->x += 1;
sMapOpenCloseAnim->mapEdges[3]->sprite->x -= 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->sprite->x -= 1;
sMapOpenCloseAnim->mapEdges[4]->sprite->x -= 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_RIGHT]->sprite->x -= 1;
sMapOpenCloseAnim->mapEdges[5]->sprite->x -= 1; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_RIGHT]->sprite->x -= 1;
} }
else if (sMapOpenCloseAnim->moveState > 14) else if (sMapOpenCloseAnim->moveState > 14)
{ {
sMapOpenCloseAnim->mapEdges[0]->sprite->x += 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x += 2;
sMapOpenCloseAnim->mapEdges[1]->sprite->x += 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_LEFT]->sprite->x += 2;
sMapOpenCloseAnim->mapEdges[2]->sprite->x += 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_LEFT]->sprite->x += 2;
sMapOpenCloseAnim->mapEdges[3]->sprite->x -= 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->sprite->x -= 2;
sMapOpenCloseAnim->mapEdges[4]->sprite->x -= 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_RIGHT]->sprite->x -= 2;
sMapOpenCloseAnim->mapEdges[5]->sprite->x -= 2; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_RIGHT]->sprite->x -= 2;
} }
else if (sMapOpenCloseAnim->moveState > 10) else if (sMapOpenCloseAnim->moveState > 10)
{ {
sMapOpenCloseAnim->mapEdges[0]->sprite->x += 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x += 3;
sMapOpenCloseAnim->mapEdges[1]->sprite->x += 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_LEFT]->sprite->x += 3;
sMapOpenCloseAnim->mapEdges[2]->sprite->x += 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_LEFT]->sprite->x += 3;
sMapOpenCloseAnim->mapEdges[3]->sprite->x -= 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->sprite->x -= 3;
sMapOpenCloseAnim->mapEdges[4]->sprite->x -= 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_RIGHT]->sprite->x -= 3;
sMapOpenCloseAnim->mapEdges[5]->sprite->x -= 3; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_RIGHT]->sprite->x -= 3;
} }
else if (sMapOpenCloseAnim->moveState > 6) else if (sMapOpenCloseAnim->moveState > 6)
{ {
sMapOpenCloseAnim->mapEdges[0]->sprite->x += 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x += 5;
sMapOpenCloseAnim->mapEdges[1]->sprite->x += 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_LEFT]->sprite->x += 5;
sMapOpenCloseAnim->mapEdges[2]->sprite->x += 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_LEFT]->sprite->x += 5;
sMapOpenCloseAnim->mapEdges[3]->sprite->x -= 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->sprite->x -= 5;
sMapOpenCloseAnim->mapEdges[4]->sprite->x -= 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_RIGHT]->sprite->x -= 5;
sMapOpenCloseAnim->mapEdges[5]->sprite->x -= 5; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_RIGHT]->sprite->x -= 5;
} }
else else
{ {
sMapOpenCloseAnim->mapEdges[0]->sprite->x += 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_LEFT]->sprite->x += 8;
sMapOpenCloseAnim->mapEdges[1]->sprite->x += 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_LEFT]->sprite->x += 8;
sMapOpenCloseAnim->mapEdges[2]->sprite->x += 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_LEFT]->sprite->x += 8;
sMapOpenCloseAnim->mapEdges[3]->sprite->x -= 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_TOP_RIGHT]->sprite->x -= 8;
sMapOpenCloseAnim->mapEdges[4]->sprite->x -= 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_MID_RIGHT]->sprite->x -= 8;
sMapOpenCloseAnim->mapEdges[5]->sprite->x -= 8; sMapOpenCloseAnim->mapEdges[MAPEDGE_BOT_RIGHT]->sprite->x -= 8;
} }
sMapOpenCloseAnim->moveState++; sMapOpenCloseAnim->moveState++;
return FALSE; return FALSE;
@@ -3994,7 +3999,7 @@ static void InitFlyMap(void)
{ {
sFlyMap = AllocZeroed(sizeof(struct FlyMap)); sFlyMap = AllocZeroed(sizeof(struct FlyMap));
sFlyMap->state = 0; sFlyMap->state = 0;
sFlyMap->unknown = 0; sFlyMap->unused = 0;
} }
static void FreeFlyMap(u8 taskId) static void FreeFlyMap(u8 taskId)