summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle_script_commands.c6
-rw-r--r--src/battle_util.c4
-rw-r--r--src/data/region_map/city_map_entries.h46
-rw-r--r--src/data/region_map/region_map_entries.h12
-rw-r--r--src/decoration.c1029
-rw-r--r--src/decoration_inventory.c86
-rw-r--r--src/field_region_map.c35
-rw-r--r--src/field_specials.c14
-rw-r--r--src/graphics.c4
-rwxr-xr-xsrc/item_menu.c71
-rw-r--r--src/map_name_popup.c6
-rwxr-xr-xsrc/party_menu.c2
-rw-r--r--src/pokedex_area_region_map.c66
-rwxr-xr-xsrc/pokedex_area_screen.c24
-rw-r--r--src/pokemon_storage_system.c37
-rw-r--r--src/pokemon_summary_screen.c2
-rw-r--r--src/pokenav.c300
-rw-r--r--src/pokenav_conditions_1.c2
-rw-r--r--src/pokenav_conditions_2.c4
-rw-r--r--src/pokenav_conditions_3.c10
-rw-r--r--src/pokenav_main_menu.c80
-rwxr-xr-xsrc/pokenav_match_call_1.c14
-rwxr-xr-xsrc/pokenav_match_call_2.c34
-rw-r--r--src/pokenav_match_call_ui.c2
-rw-r--r--src/pokenav_menu_handler_1.c44
-rw-r--r--src/pokenav_menu_handler_2.c71
-rwxr-xr-xsrc/pokenav_region_map.c524
-rw-r--r--src/pokenav_ribbons_1.c8
-rw-r--r--src/pokenav_ribbons_2.c4
-rw-r--r--src/region_map.c1247
-rw-r--r--src/secret_base.c10
-rw-r--r--src/trader.c16
-rw-r--r--src/unk_pokedex_area_screen_helper.c68
-rw-r--r--src/unk_text_util_2.c2
34 files changed, 1942 insertions, 1942 deletions
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 1a0ec1ceb..729cce0c9 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -2895,16 +2895,16 @@ static void Cmd_seteffectwithchance(void)
&& !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_CERTAIN);
- SetMoveEffect(0, MOVE_EFFECT_CERTAIN);
+ SetMoveEffect(FALSE, MOVE_EFFECT_CERTAIN);
}
else if (Random() % 100 < percentChance
&& gBattleCommunication[MOVE_EFFECT_BYTE]
&& !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
{
if (percentChance >= 100)
- SetMoveEffect(0, MOVE_EFFECT_CERTAIN);
+ SetMoveEffect(FALSE, MOVE_EFFECT_CERTAIN);
else
- SetMoveEffect(0, 0);
+ SetMoveEffect(FALSE, 0);
}
else
{
diff --git a/src/battle_util.c b/src/battle_util.c
index 4352a02c2..da3d50648 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -1009,7 +1009,7 @@ u8 DoBattlerEndTurnEffects(void)
if (!(gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION))
{
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER;
- SetMoveEffect(1, 0);
+ SetMoveEffect(TRUE, 0);
if (gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)
BattleScriptExecute(BattleScript_ThrashConfuses);
effect++;
@@ -3207,7 +3207,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH;
BattleScriptPushCursor();
- SetMoveEffect(0, 0);
+ SetMoveEffect(FALSE, 0);
BattleScriptPop();
}
break;
diff --git a/src/data/region_map/city_map_entries.h b/src/data/region_map/city_map_entries.h
index 7b8361a7c..09689da5b 100644
--- a/src/data/region_map/city_map_entries.h
+++ b/src/data/region_map/city_map_entries.h
@@ -1,112 +1,112 @@
-const struct CityMapEntry gPokenavCityMaps[] =
+static const struct CityMapEntry sPokenavCityMaps[NUM_CITY_MAPS] =
{
{
- .mapSecId = 0,
+ .mapSecId = MAPSEC_LITTLEROOT_TOWN,
.index = 0,
.tilemap = gPokenavCityMap_Littleroot_0,
},
{
- .mapSecId = 1,
+ .mapSecId = MAPSEC_OLDALE_TOWN,
.index = 0,
.tilemap = gPokenavCityMap_Oldale_0,
},
{
- .mapSecId = 2,
+ .mapSecId = MAPSEC_DEWFORD_TOWN,
.index = 0,
.tilemap = gPokenavCityMap_Dewford_0,
},
{
- .mapSecId = 3,
+ .mapSecId = MAPSEC_LAVARIDGE_TOWN,
.index = 0,
.tilemap = gPokenavCityMap_Lavarige_0,
},
{
- .mapSecId = 4,
+ .mapSecId = MAPSEC_FALLARBOR_TOWN,
.index = 0,
.tilemap = gPokenavCityMap_Fallarbor_0,
},
{
- .mapSecId = 5,
+ .mapSecId = MAPSEC_VERDANTURF_TOWN,
.index = 0,
.tilemap = gPokenavCityMap_Verdanturf_0,
},
{
- .mapSecId = 6,
+ .mapSecId = MAPSEC_PACIFIDLOG_TOWN,
.index = 0,
.tilemap = gPokenavCityMap_Pacifidlog_0,
},
{
- .mapSecId = 7,
+ .mapSecId = MAPSEC_PETALBURG_CITY,
.index = 0,
.tilemap = gPokenavCityMap_Petalburg_0,
},
{
- .mapSecId = 8,
+ .mapSecId = MAPSEC_SLATEPORT_CITY,
.index = 0,
.tilemap = gPokenavCityMap_Slateport_0,
},
{
- .mapSecId = 8,
+ .mapSecId = MAPSEC_SLATEPORT_CITY,
.index = 1,
.tilemap = gPokenavCityMap_Slateport_1,
},
{
- .mapSecId = 9,
+ .mapSecId = MAPSEC_MAUVILLE_CITY,
.index = 0,
.tilemap = gPokenavCityMap_Mauville_0,
},
{
- .mapSecId = 9,
+ .mapSecId = MAPSEC_MAUVILLE_CITY,
.index = 1,
.tilemap = gPokenavCityMap_Mauville_1,
},
{
- .mapSecId = 10,
+ .mapSecId = MAPSEC_RUSTBORO_CITY,
.index = 0,
.tilemap = gPokenavCityMap_Rustboro_0,
},
{
- .mapSecId = 10,
+ .mapSecId = MAPSEC_RUSTBORO_CITY,
.index = 1,
.tilemap = gPokenavCityMap_Rustboro_1,
},
{
- .mapSecId = 11,
+ .mapSecId = MAPSEC_FORTREE_CITY,
.index = 0,
.tilemap = gPokenavCityMap_Fortree_0,
},
{
- .mapSecId = 12,
+ .mapSecId = MAPSEC_LILYCOVE_CITY,
.index = 0,
.tilemap = gPokenavCityMap_Lilycove_0,
},
{
- .mapSecId = 12,
+ .mapSecId = MAPSEC_LILYCOVE_CITY,
.index = 1,
.tilemap = gPokenavCityMap_Lilycove_1,
},
{
- .mapSecId = 13,
+ .mapSecId = MAPSEC_MOSSDEEP_CITY,
.index = 0,
.tilemap = gPokenavCityMap_Mossdeep_0,
},
{
- .mapSecId = 13,
+ .mapSecId = MAPSEC_MOSSDEEP_CITY,
.index = 1,
.tilemap = gPokenavCityMap_Mossdeep_1,
},
{
- .mapSecId = 14,
+ .mapSecId = MAPSEC_SOOTOPOLIS_CITY,
.index = 0,
.tilemap = gPokenavCityMap_Sootopolis_0,
},
{
- .mapSecId = 15,
+ .mapSecId = MAPSEC_EVER_GRANDE_CITY,
.index = 0,
.tilemap = gPokenavCityMap_EverGrande_0,
},
{
- .mapSecId = 15,
+ .mapSecId = MAPSEC_EVER_GRANDE_CITY,
.index = 1,
.tilemap = gPokenavCityMap_EverGrande_1,
},
diff --git a/src/data/region_map/region_map_entries.h b/src/data/region_map/region_map_entries.h
index b2d625c84..1d503d72f 100644
--- a/src/data/region_map/region_map_entries.h
+++ b/src/data/region_map/region_map_entries.h
@@ -374,7 +374,7 @@ const struct RegionMapLocation gRegionMapEntries[] = {
[MAPSEC_SEVII_ISLE_22] = { 0, 0, 1, 1, sMapName_SeviiIsle22},
[MAPSEC_SEVII_ISLE_23] = { 0, 0, 1, 1, sMapName_SeviiIsle23},
[MAPSEC_SEVII_ISLE_24] = { 0, 0, 1, 1, sMapName_SeviiIsle24},
- [MAPSEC_NAVEL_ROCK] = { 0, 0, 1, 1, sMapName_NavelRock},
+ [MAPSEC_NAVEL_ROCK_FRLG] = { 0, 0, 1, 1, sMapName_NavelRock},
[MAPSEC_MT_EMBER] = { 0, 0, 1, 1, sMapName_MtEmber},
[MAPSEC_BERRY_FOREST] = { 0, 0, 1, 1, sMapName_BerryForest},
[MAPSEC_ICEFALL_CAVE] = { 0, 0, 1, 1, sMapName_IcefallCave},
@@ -383,11 +383,11 @@ const struct RegionMapLocation gRegionMapEntries[] = {
[MAPSEC_DOTTED_HOLE] = { 0, 0, 1, 1, sMapName_DottedHole},
[MAPSEC_LOST_CAVE] = { 0, 0, 1, 1, sMapName_LostCave},
[MAPSEC_PATTERN_BUSH] = { 0, 0, 1, 1, sMapName_PatternBush},
- [MAPSEC_ALTERING_CAVE] = { 0, 0, 1, 1, sMapName_AlteringCave},
+ [MAPSEC_ALTERING_CAVE_FRLG] = { 0, 0, 1, 1, sMapName_AlteringCave},
[MAPSEC_TANOBY_CHAMBERS] = { 0, 0, 1, 1, sMapName_TanobyChambers},
[MAPSEC_THREE_ISLE_PATH] = { 0, 0, 1, 1, sMapName_ThreeIslePath},
[MAPSEC_TANOBY_KEY] = { 0, 0, 1, 1, sMapName_TanobyKey},
- [MAPSEC_BIRTH_ISLAND] = { 0, 0, 1, 1, sMapName_BirthIsland},
+ [MAPSEC_BIRTH_ISLAND_FRLG] = { 0, 0, 1, 1, sMapName_BirthIsland},
[MAPSEC_MONEAN_CHAMBER] = { 0, 0, 1, 1, sMapName_MoneanChamber},
[MAPSEC_LIPTOO_CHAMBER] = { 0, 0, 1, 1, sMapName_LiptooChamber},
[MAPSEC_WEEPTH_CHAMBER] = { 0, 0, 1, 1, sMapName_WeepthChamber},
@@ -400,7 +400,7 @@ const struct RegionMapLocation gRegionMapEntries[] = {
[MAPSEC_AQUA_HIDEOUT] = {19, 3, 1, 1, sMapName_AquaHideout},
[MAPSEC_MAGMA_HIDEOUT] = { 6, 3, 1, 1, sMapName_MagmaHideout},
[MAPSEC_MIRAGE_TOWER] = { 8, 2, 1, 1, sMapName_MirageTower},
- [MAPSEC_BIRTH_ISLAND_2] = { 0, 0, 1, 1, sMapName_BirthIsland},
+ [MAPSEC_BIRTH_ISLAND] = { 0, 0, 1, 1, sMapName_BirthIsland},
[MAPSEC_FARAWAY_ISLAND] = { 0, 0, 1, 1, sMapName_FarawayIsland},
[MAPSEC_ARTISAN_CAVE] = {22, 12, 1, 1, sMapName_ArtisanCave},
[MAPSEC_MARINE_CAVE] = { 0, 0, 1, 1, sMapName_MarineCave},
@@ -410,8 +410,8 @@ const struct RegionMapLocation gRegionMapEntries[] = {
[MAPSEC_UNDERWATER_UNK1] = {24, 3, 2, 2, sMapName_Underwater},
[MAPSEC_UNDERWATER_129] = {24, 10, 2, 1, sMapName_Underwater},
[MAPSEC_DESERT_UNDERPASS] = { 2, 0, 1, 1, sMapName_DesertUnderpass},
- [MAPSEC_ALTERING_CAVE_2] = { 6, 8, 1, 1, sMapName_AlteringCave},
- [MAPSEC_NAVEL_ROCK2] = { 0, 0, 1, 1, sMapName_NavelRock},
+ [MAPSEC_ALTERING_CAVE] = { 6, 8, 1, 1, sMapName_AlteringCave},
+ [MAPSEC_NAVEL_ROCK] = { 0, 0, 1, 1, sMapName_NavelRock},
[MAPSEC_TRAINER_HILL] = { 8, 4, 1, 1, sMapName_TrainerHill}
};
diff --git a/src/decoration.c b/src/decoration.c
index fd41beb6f..c878f397a 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -43,6 +43,25 @@
#define PLACE_DECORATION_PLAYER_TAG 0x008
#define NUM_DECORATION_FLAGS (FLAG_DECORATION_14 - FLAG_DECORATION_0)
+#define tCursorX data[0]
+#define tCursorY data[1]
+#define tState data[2]
+#define tInitialX data[3]
+#define tInitialY data[4]
+#define tDecorWidth data[5]
+#define tDecorHeight data[6]
+#define tButton data[10]
+#define tDecorationMenuCommand data[11]
+#define tDecorationItemsMenuCommand data[12]
+#define tMenuTaskId data[13]
+
+#define DECOR_MENU_PLACE 0
+#define DECOR_MENU_TOSS 1
+#define DECOR_MENU_TRADE 2
+
+#define DECOR_ITEMS_MENU_PLACE 0
+#define DECOR_ITEMS_MENU_PUT_AWAY 1
+
struct DecorationItemsMenu
{
struct ListMenuItem items[41];
@@ -68,6 +87,23 @@ struct DecorRearrangementDataBuffer
u16 flagId;
};
+struct DecorationPCContext
+{
+ u8 *items;
+ u8 *pos;
+ u8 size;
+ u8 isPlayerRoom;
+};
+
+enum Windows
+{
+ WINDOW_MAIN_MENU,
+ WINDOW_DECORATION_CATEGORIES,
+ WINDOW_DECORATION_CATEGORY_SUMMARY,
+ WINDOW_DECORATION_CATEGORY_ITEMS,
+ WINDOW_COUNT
+};
+
EWRAM_DATA u8 *gCurDecorationItems = NULL;
EWRAM_DATA static u8 sDecorationActionsCursorPos = 0;
EWRAM_DATA static u8 sNumOwnedDecorationsInCurCategory = 0;
@@ -78,10 +114,10 @@ EWRAM_DATA static u16 sDecorationsScrollOffset = 0;
EWRAM_DATA u8 gCurDecorationIndex = 0;
EWRAM_DATA static u8 sCurDecorationCategory = DECORCAT_DESK;
EWRAM_DATA static u32 filler_0203a174[2] = {};
-EWRAM_DATA struct DecorationPCContext gDecorationContext = {};
-EWRAM_DATA static u8 sDecorMenuWindowIds[4] = {};
+EWRAM_DATA static struct DecorationPCContext sDecorationContext = {};
+EWRAM_DATA static u8 sDecorMenuWindowIds[WINDOW_COUNT] = {};
EWRAM_DATA static struct DecorationItemsMenu *sDecorationItemsMenu = NULL;
-EWRAM_DATA struct PlaceDecorationGraphicsDataBuffer sPlaceDecorationGraphicsDataBuffer = {};
+EWRAM_DATA static struct PlaceDecorationGraphicsDataBuffer sPlaceDecorationGraphicsDataBuffer = {};
EWRAM_DATA static u16 sCurDecorMapX = 0;
EWRAM_DATA static u16 sCurDecorMapY = 0;
EWRAM_DATA static u8 sDecor_CameraSpriteObjectIdx1 = 0;
@@ -111,62 +147,62 @@ static void ReturnToActionsMenuFromCategories(u8 taskId);
static void ExitTraderDecorationMenu(u8 taskId);
static void CopyDecorationMenuItemName(u8 *dest, u16 decoration);
static void DecorationItemsMenu_OnCursorMove(s32 itemIndex, bool8 flag, struct ListMenu *menu);
-void sub_81274A0(u8 a0, s32 a1, u8 a2);
+static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, s32 itemIndex, u8 y);
static void ShowDecorationItemsWindow(u8 taskId);
static void HandleDecorationItemsMenuInput(u8 taskId);
-static void PrintDecorationItemDescription(u32 itemIndex);
+static void PrintDecorationItemDescription(s32 itemIndex);
static void RemoveDecorationItemsOtherWindows(void);
-bool8 sub_81277BC(u8 idx);
-bool8 sub_81277E8(u8 idx);
+static bool8 IsDecorationIndexInSecretBase(u8 idx);
+static bool8 IsDecorationIndexInPlayersRoom(u8 idx);
static void IdentifyOwnedDecorationsCurrentlyInUse(u8 taskId);
static void InitDecorationItemsWindow(u8 taskId);
static void ShowDecorationCategorySummaryWindow(u8 category);
-void sub_8127A30(u8 taskId);
-void sub_8127A8C(u8 taskId);
-void sub_8127F68(u8 taskId);
-void sub_8128060(u8 taskId);
-void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor);
-void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data);
-void sub_812826C(u8 taskId);
-void sub_81283BC(u8 taskId);
-void sub_8128414(u8 taskId);
-void AttemptPlaceDecoration(u8 taskId);
-void PlaceDecorationPrompt(u8 taskId);
-void PlaceDecoration(u8 taskId);
-void sub_8128AAC(u8 taskId);
-void CancelDecoratingPrompt(u8 taskId);
-void CancelDecorating(u8 taskId);
-void sub_8128BBC(u8 taskId);
-void c1_overworld_prev_quest(u8 taskId);
-void sub_8128CD4(void);
-void sub_8128DE0(void);
-void ContinueDecorating(u8 taskId);
-void CantPlaceDecorationPrompt(u8 taskId);
-void sub_81292D0(struct Sprite *sprite);
-void sub_81292E8(struct Sprite *sprite);
-u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor);
-const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode);
-bool8 sub_81299AC(u8 taskId);
-void sub_8129ABC(u8 taskId);
-void ContinuePuttingAwayDecorations(u8 taskId);
-void sub_8129BCC(u8 taskId);
-void sub_8129BF8(u8 taskId);
-void sub_8129C74(u8 taskId);
-void ContinuePuttingAwayDecorationsPrompt(u8 taskId);
-void sub_812A0E8(u8 taskId);
-void ReturnDecorationPrompt(u8 taskId);
-void PutAwayDecoration(u8 taskId);
-void StopPuttingAwayDecorationsPrompt(u8 taskId);
-void StopPuttingAwayDecorations(u8 taskId);
-void sub_812A22C(u8 taskId);
-void sub_812A25C(u8 taskId);
-void sub_812A334(void);
-void sub_812A36C(struct Sprite *sprite);
-void sub_812A39C(void);
-void sub_812A3C8(void);
-void sub_812A3D4(u8 taskId);
-void TossDecorationPrompt(u8 taskId);
-void TossDecoration(u8 taskId);
+static void DontTossDecoration(u8 taskId);
+static void DecorationItemsMenuAction_Cancel(u8 taskId);
+static void DecorationItemsMenuAction_AttemptPlace(u8 taskId);
+static void Task_PlaceDecoration(u8 taskId);
+static void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor);
+static void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data);
+static void SetUpDecorationShape(u8 taskId);
+static void AttemptPlaceDecoration(u8 taskId);
+static void AttemptCancelPlaceDecoration(u8 taskId);
+static void AttemptPlaceDecoration_(u8 taskId);
+static void PlaceDecorationPrompt(u8 taskId);
+static void PlaceDecoration(u8 taskId);
+static void PlaceDecoration_(u8 taskId);
+static void CancelDecoratingPrompt(u8 taskId);
+static void CancelDecorating(u8 taskId);
+static void CancelDecorating_(u8 taskId);
+static void c1_overworld_prev_quest(u8 taskId);
+static void FieldCB_InitDecorationItemsWindow(void);
+static void ResetCursorMovement(void);
+static void ContinueDecorating(u8 taskId);
+static void CantPlaceDecorationPrompt(u8 taskId);
+static void InitializePuttingAwayCursorSprite(struct Sprite *sprite);
+static void InitializePuttingAwayCursorSprite2(struct Sprite *sprite);
+static u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor);
+static const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode);
+static bool8 HasDecorationsInUse(u8 taskId);
+static void Task_ContinuePuttingAwayDecorations(u8 taskId);
+static void ContinuePuttingAwayDecorations(u8 taskId);
+static void AttemptPutAwayDecoration(u8 taskId);
+static void AttemptCancelPutAwayDecoration(u8 taskId);
+static void AttemptPutAwayDecoration_(u8 taskId);
+static void ContinuePuttingAwayDecorationsPrompt(u8 taskId);
+static void AttemptMarkDecorUnderCursorForRemoval(u8 taskId);
+static void ReturnDecorationPrompt(u8 taskId);
+static void PutAwayDecoration(u8 taskId);
+static void StopPuttingAwayDecorationsPrompt(u8 taskId);
+static void StopPuttingAwayDecorations(u8 taskId);
+static void StopPuttingAwayDecorations_(u8 taskId);
+static void Task_StopPuttingAwayDecorations(u8 taskId);
+static void FieldCB_StopPuttingAwayDecorations(void);
+static void InitializeCameraSprite1(struct Sprite *sprite);
+static void LoadPlayerSpritePalette(void);
+static void FreePlayerSpritePalette(void);
+static void DecorationItemsMenuAction_AttemptToss(u8 taskId);
+static void TossDecorationPrompt(u8 taskId);
+static void TossDecoration(u8 taskId);
#include "data/decoration/tiles.h"
#include "data/decoration/description.h"
@@ -214,19 +250,19 @@ static const u8 *const sSecretBasePCMenuItemDescriptions[] =
static const TaskFunc sSecretBasePC_SelectedDecorationActions[][2] =
{
- { sub_8127F68, sub_8127A8C },
- { sub_812A3D4, sub_8127A8C },
- { sub_8133DA0, sub_8127A8C },
+ { DecorationItemsMenuAction_AttemptPlace, DecorationItemsMenuAction_Cancel },
+ { DecorationItemsMenuAction_AttemptToss, DecorationItemsMenuAction_Cancel },
+ { DecorationItemsMenuAction_Trade, DecorationItemsMenuAction_Cancel },
};
-static const struct WindowTemplate sDecorationWindowTemplates[4] =
+static const struct WindowTemplate sDecorationWindowTemplates[WINDOW_COUNT] =
{
{
.bg = 0,
.tilemapLeft = 1,
.tilemapTop = 1,
.width = 18,
- .height = 8,
+ .height = 2 * ARRAY_COUNT(sDecorationMainMenuActions),
.paletteNum = 15,
.baseBlock = 0x0001
},
@@ -265,7 +301,7 @@ static const struct ListMenuTemplate sDecorationItemsListMenuTemplate =
{
.items = NULL,
.moveCursorFunc = DecorationItemsMenu_OnCursorMove,
- .itemPrintFunc = sub_81274A0,
+ .itemPrintFunc = DecorationItemsMenu_PrintDecorationInUse,
.totalItems = 0,
.maxShowed = 0,
.windowId = 0,
@@ -329,7 +365,7 @@ static const struct SpriteTemplate sDecorationSelectorSpriteTemplate =
SpriteCallbackDummy
};
-const struct SpriteTemplate sDecorWhilePlacingSpriteTemplate =
+static const struct SpriteTemplate sDecorWhilePlacingSpriteTemplate =
{
0x0000,
0x0000,
@@ -340,33 +376,33 @@ const struct SpriteTemplate sDecorWhilePlacingSpriteTemplate =
SpriteCallbackDummy
};
-const struct SpritePalette gUnknown_085A72BC =
+static const struct SpritePalette sSpritePal_PlaceDecoration =
{
.data = (const u16 *)&sPlaceDecorationGraphicsDataBuffer.palette,
.tag = PLACE_DECORATION_SELECTOR_TAG,
};
-const struct YesNoFuncTable sPlaceDecorationYesNoFunctions =
+static const struct YesNoFuncTable sPlaceDecorationYesNoFunctions =
{
.yesFunc = PlaceDecoration,
.noFunc = ContinueDecorating,
};
-const struct YesNoFuncTable sCancelDecoratingYesNoFunctions =
+static const struct YesNoFuncTable sCancelDecoratingYesNoFunctions =
{
.yesFunc = CancelDecorating,
.noFunc = ContinueDecorating,
};
-const struct YesNoFuncTable gUnknown_085A72D4[] =
+static const struct YesNoFuncTable sPlacePutAwayYesNoFunctions[] =
{
{
- .yesFunc = sub_81283BC,
- .noFunc = sub_8128414,
+ .yesFunc = AttemptPlaceDecoration,
+ .noFunc = AttemptCancelPlaceDecoration,
},
{
- .yesFunc = sub_8129BCC,
- .noFunc = sub_8129BF8,
+ .yesFunc = AttemptPutAwayDecoration,
+ .noFunc = AttemptCancelPutAwayDecoration,
}
};
@@ -384,41 +420,41 @@ static const u8 sDecorationSlideElevation[] =
3, 0,
};
-const u16 gUnknown_085A72F4[] = {
+static const u16 sDecorShapeSizes[] = {
0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x10, 0x20, 0x40, 0x20
};
-const u16 gUnknown_085A7308[] = INCBIN_U16("graphics/decorations/unk_85a7308.gbapal");
+static const u16 sBrendanPalette[] = INCBIN_U16("graphics/decorations/brendan.gbapal");
-const u16 gUnknown_085A7328[] = INCBIN_U16("graphics/decorations/unk_85a7328.gbapal");
+static const u16 sMayPalette[] = INCBIN_U16("graphics/decorations/may.gbapal");
-const struct YesNoFuncTable sReturnDecorationYesNoFunctions =
+static const struct YesNoFuncTable sReturnDecorationYesNoFunctions =
{
.yesFunc = PutAwayDecoration,
.noFunc = ContinuePuttingAwayDecorations,
};
-const struct YesNoFuncTable sStopPuttingAwayDecorationsYesNoFunctions =
+static const struct YesNoFuncTable sStopPuttingAwayDecorationsYesNoFunctions =
{
.yesFunc = StopPuttingAwayDecorations,
.noFunc = ContinuePuttingAwayDecorations,
};
-const u8 gUnknown_085A7358[] = INCBIN_U8("graphics/misc/decoration_unk_85a7358.4bpp");
+static const u8 sDecorationPuttingAwayCursor[] = INCBIN_U8("graphics/misc/decoration_putting_away_cursor.4bpp");
-const struct SpritePalette gUnknown_085A73D8 =
+static const struct SpritePalette sSpritePal_PuttingAwayCursorBrendan =
{
- .data = gUnknown_085A7308,
+ .data = sBrendanPalette,
.tag = PLACE_DECORATION_PLAYER_TAG,
};
-const struct SpritePalette gUnknown_085A73E0 =
+static const struct SpritePalette sSpritePal_PuttingAwayCursorMay =
{
- .data = gUnknown_085A7328,
+ .data = sMayPalette,
.tag = PLACE_DECORATION_PLAYER_TAG,
};
-const struct OamData gUnknown_085A73E8 =
+static const struct OamData sPuttingAwayCursorOamData =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -432,56 +468,55 @@ const struct OamData gUnknown_085A73E8 =
.paletteNum = 0,
};
-const union AnimCmd gUnknown_085A73F0[] =
+static const union AnimCmd sPuttingAwayCursorAnimCmd0[] =
{
ANIMCMD_FRAME(0, 0, 0),
ANIMCMD_END
};
-const union AnimCmd *const gUnknown_085A73F8[] =
+static const union AnimCmd *const sPuttingAwayCursorAnimCmds[] =
{
- gUnknown_085A73F0,
+ sPuttingAwayCursorAnimCmd0,
};
-const struct SpriteFrameImage gUnknown_085A73FC =
+static const struct SpriteFrameImage sPuttingAwayCursorPicTable =
{
- .data = gUnknown_085A7358,
- .size = 0x80,
+ .data = sDecorationPuttingAwayCursor,
+ .size = sizeof(sDecorationPuttingAwayCursor),
};
-const struct SpriteTemplate gUnknown_085A7404 =
+static const struct SpriteTemplate sPuttingAwayCursorSpriteTemplate =
{
0xFFFF,
PLACE_DECORATION_PLAYER_TAG,
- &gUnknown_085A73E8,
- gUnknown_085A73F8,
- &gUnknown_085A73FC,
+ &sPuttingAwayCursorOamData,
+ sPuttingAwayCursorAnimCmds,
+ &sPuttingAwayCursorPicTable,
gDummySpriteAffineAnimTable,
- sub_812A36C
+ InitializeCameraSprite1
};
-const struct YesNoFuncTable sTossDecorationYesNoFunctions =
+static const struct YesNoFuncTable sTossDecorationYesNoFunctions =
{
.yesFunc = TossDecoration,
- .noFunc = sub_8127A30,
+ .noFunc = DontTossDecoration,
};
-
void InitDecorationContextItems(void)
{
if (sCurDecorationCategory < DECORCAT_COUNT)
gCurDecorationItems = gDecorationInventories[sCurDecorationCategory].items;
- if (gDecorationContext.isPlayerRoom == FALSE)
+ if (sDecorationContext.isPlayerRoom == FALSE)
{
- gDecorationContext.items = gSaveBlock1Ptr->secretBases[0].decorations;
- gDecorationContext.pos = gSaveBlock1Ptr->secretBases[0].decorationPositions;
+ sDecorationContext.items = gSaveBlock1Ptr->secretBases[0].decorations;
+ sDecorationContext.pos = gSaveBlock1Ptr->secretBases[0].decorationPositions;
}
- if (gDecorationContext.isPlayerRoom == TRUE)
+ if (sDecorationContext.isPlayerRoom == TRUE)
{
- gDecorationContext.items = gSaveBlock1Ptr->playerRoomDecor;
- gDecorationContext.pos = gSaveBlock1Ptr->playerRoomDecorPos;
+ sDecorationContext.items = gSaveBlock1Ptr->playerRoomDecorations;
+ sDecorationContext.pos = gSaveBlock1Ptr->playerRoomDecorationPositions;
}
}
@@ -491,9 +526,9 @@ static u8 AddDecorationWindow(u8 windowIndex)
struct WindowTemplate template;
windowId = &sDecorMenuWindowIds[windowIndex];
- if (windowIndex == 0)
+ if (windowIndex == WINDOW_MAIN_MENU)
{
- template = sDecorationWindowTemplates[0];
+ template = sDecorationWindowTemplates[WINDOW_MAIN_MENU];
template.width = GetMaxWidthInMenuTable(sDecorationMainMenuActions, ARRAY_COUNT(sDecorationMainMenuActions));
if (template.width > 18)
template.width = 18;
@@ -520,9 +555,9 @@ static void RemoveDecorationWindow(u8 windowIndex)
static void AddDecorationActionsWindow(void)
{
- u8 windowId = AddDecorationWindow(0);
- PrintMenuTable(windowId, 4, sDecorationMainMenuActions);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, 4, sDecorationActionsCursorPos);
+ u8 windowId = AddDecorationWindow(WINDOW_MAIN_MENU);
+ PrintMenuTable(windowId, ARRAY_COUNT(sDecorationMainMenuActions), sDecorationMainMenuActions);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, ARRAY_COUNT(sDecorationMainMenuActions), sDecorationActionsCursorPos);
}
static void InitDecorationActionsWindow(void)
@@ -536,20 +571,20 @@ static void InitDecorationActionsWindow(void)
void DoSecretBaseDecorationMenu(u8 taskId)
{
InitDecorationActionsWindow();
- gDecorationContext.items = gSaveBlock1Ptr->secretBases[0].decorations;
- gDecorationContext.pos = gSaveBlock1Ptr->secretBases[0].decorationPositions;
- gDecorationContext.size = sizeof(gSaveBlock1Ptr->secretBases[0].decorations);
- gDecorationContext.isPlayerRoom = FALSE;
+ sDecorationContext.items = gSaveBlock1Ptr->secretBases[0].decorations;
+ sDecorationContext.pos = gSaveBlock1Ptr->secretBases[0].decorationPositions;
+ sDecorationContext.size = DECOR_MAX_SECRET_BASE;
+ sDecorationContext.isPlayerRoom = FALSE;
gTasks[taskId].func = HandleDecorationActionsMenuInput;
}
void DoPlayerRoomDecorationMenu(u8 taskId)
{
InitDecorationActionsWindow();
- gDecorationContext.items = gSaveBlock1Ptr->playerRoomDecor;
- gDecorationContext.pos = gSaveBlock1Ptr->playerRoomDecorPos;
- gDecorationContext.size = sizeof(gSaveBlock1Ptr->playerRoomDecor);
- gDecorationContext.isPlayerRoom = TRUE;
+ sDecorationContext.items = gSaveBlock1Ptr->playerRoomDecorations;
+ sDecorationContext.pos = gSaveBlock1Ptr->playerRoomDecorationPositions;
+ sDecorationContext.size = DECOR_MAX_PLAYERS_HOUSE;
+ sDecorationContext.isPlayerRoom = TRUE;
gTasks[taskId].func = HandleDecorationActionsMenuInput;
}
@@ -592,7 +627,7 @@ static void DecorationMenuAction_Decorate(u8 taskId)
}
else
{
- gTasks[taskId].data[11] = 0;
+ gTasks[taskId].tDecorationMenuCommand = DECOR_MENU_PLACE;
sCurDecorationCategory = DECORCAT_DESK;
SecretBasePC_PrepMenuForSelectingStoredDecors(taskId);
}
@@ -600,18 +635,18 @@ static void DecorationMenuAction_Decorate(u8 taskId)
static void DecorationMenuAction_PutAway(u8 taskId)
{
- if (!sub_81299AC(taskId))
+ if (!HasDecorationsInUse(taskId))
{
StringExpandPlaceholders(gStringVar4, gText_NoDecorationsInUse);
DisplayItemMessageOnField(taskId, gStringVar4, ReturnToDecorationActionsAfterInvalidSelection);
}
else
{
- RemoveDecorationWindow(0);
+ RemoveDecorationWindow(WINDOW_MAIN_MENU);
ClearDialogWindowAndFrame(0, 0);
FadeScreen(FADE_TO_BLACK, 0);
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].func = sub_8129ABC;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].func = Task_ContinuePuttingAwayDecorations;
}
}
@@ -624,7 +659,7 @@ static void DecorationMenuAction_Toss(u8 taskId)
}
else
{
- gTasks[taskId].data[11] = 1;
+ gTasks[taskId].tDecorationMenuCommand = DECOR_MENU_TOSS;
sCurDecorationCategory = DECORCAT_DESK;
SecretBasePC_PrepMenuForSelectingStoredDecors(taskId);
}
@@ -632,8 +667,8 @@ static void DecorationMenuAction_Toss(u8 taskId)
static void DecorationMenuAction_Cancel(u8 taskId)
{
- RemoveDecorationWindow(0);
- if (!gDecorationContext.isPlayerRoom)
+ RemoveDecorationWindow(WINDOW_MAIN_MENU);
+ if (!sDecorationContext.isPlayerRoom)
{
ScriptContext1_SetupScript(SecretBase_EventScript_PCCancel);
DestroyTask(taskId);
@@ -654,23 +689,23 @@ static void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId)
{
LoadPalette(sDecorationMenuPalette, 0xd0, 0x20);
ClearDialogWindowAndFrame(0, 0);
- RemoveDecorationWindow(0);
+ RemoveDecorationWindow(WINDOW_MAIN_MENU);
InitDecorationCategoriesWindow(taskId);
}
static void InitDecorationCategoriesWindow(u8 taskId)
{
- u8 windowId = AddDecorationWindow(1);
+ u8 windowId = AddDecorationWindow(WINDOW_DECORATION_CATEGORIES);
PrintDecorationCategoryMenuItems(taskId);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(windowId, DECORCAT_COUNT + 1, sCurDecorationCategory);
gTasks[taskId].func = HandleDecorationCategoriesMenuInput;
}
-static void sub_8126E44(u8 taskId)
+static void ReinitDecorationCategoriesWindow(u8 taskId)
{
- FillWindowPixelBuffer(sDecorMenuWindowIds[1], PIXEL_FILL(1));
+ FillWindowPixelBuffer(sDecorMenuWindowIds[WINDOW_DECORATION_CATEGORIES], PIXEL_FILL(1));
PrintDecorationCategoryMenuItems(taskId);
- InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sDecorMenuWindowIds[1], DECORCAT_COUNT + 1, sCurDecorationCategory);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sDecorMenuWindowIds[WINDOW_DECORATION_CATEGORIES], DECORCAT_COUNT + 1, sCurDecorationCategory);
gTasks[taskId].func = HandleDecorationCategoriesMenuInput;
}
@@ -678,10 +713,10 @@ static void PrintDecorationCategoryMenuItems(u8 taskId)
{
u8 i;
s16 *data = gTasks[taskId].data;
- u8 windowId = sDecorMenuWindowIds[1];
- bool8 isPlayerRoom = gDecorationContext.isPlayerRoom;
+ u8 windowId = sDecorMenuWindowIds[WINDOW_DECORATION_CATEGORIES];
+ bool8 isPlayerRoom = sDecorationContext.isPlayerRoom;
bool8 shouldDisable = FALSE;
- if (isPlayerRoom == TRUE && data[11] == 0)
+ if (isPlayerRoom == TRUE && tDecorationMenuCommand == DECOR_MENU_PLACE)
shouldDisable = TRUE;
for (i = 0; i < DECORCAT_COUNT; i++)
@@ -693,7 +728,7 @@ static void PrintDecorationCategoryMenuItems(u8 taskId)
PrintDecorationCategoryMenuItem(windowId, i, 8, i * 16, FALSE, TEXT_SPEED_FF);
}
- AddTextPrinterParameterized(windowId, 1, gTasks[taskId].data[11] == 2 ? gText_Exit : gText_Cancel, 8, i * 16 + 1, 0, NULL);
+ AddTextPrinterParameterized(windowId, 1, gTasks[taskId].tDecorationMenuCommand == DECOR_MENU_TRADE ? gText_Exit : gText_Cancel, 8, i * 16 + 1, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
}
@@ -767,7 +802,7 @@ static void SelectDecorationCategory(u8 taskId)
}
else
{
- RemoveDecorationWindow(1);
+ RemoveDecorationWindow(WINDOW_DECORATION_CATEGORIES);
StringExpandPlaceholders(gStringVar4, gText_NoDecorations);
DisplayItemMessageOnField(taskId, gStringVar4, ReturnToDecorationCategoriesAfterInvalidSelection);
}
@@ -781,7 +816,7 @@ static void ReturnToDecorationCategoriesAfterInvalidSelection(u8 taskId)
static void ExitDecorationCategoriesMenu(u8 taskId)
{
- if (gTasks[taskId].data[11] != 2)
+ if (gTasks[taskId].tDecorationMenuCommand != DECOR_MENU_TRADE)
ReturnToActionsMenuFromCategories(taskId);
else
ExitTraderDecorationMenu(taskId);
@@ -789,7 +824,7 @@ static void ExitDecorationCategoriesMenu(u8 taskId)
static void ReturnToActionsMenuFromCategories(u8 taskId)
{
- RemoveDecorationWindow(1);
+ RemoveDecorationWindow(WINDOW_DECORATION_CATEGORIES);
AddDecorationActionsWindow();
DrawDialogueFrame(0, 0);
PrintCurMainMenuDescription();
@@ -800,7 +835,7 @@ void ShowDecorationCategoriesWindow(u8 taskId)
{
LoadPalette(sDecorationMenuPalette, 0xd0, 0x20);
ClearDialogWindowAndFrame(0, 0);
- gTasks[taskId].data[11] = 2;
+ gTasks[taskId].tDecorationMenuCommand = DECOR_MENU_TRADE;
sCurDecorationCategory = DECORCAT_DESK;
InitDecorationCategoriesWindow(taskId);
}
@@ -812,7 +847,7 @@ void CopyDecorationCategoryName(u8 *dest, u8 category)
static void ExitTraderDecorationMenu(u8 taskId)
{
- RemoveDecorationWindow(1);
+ RemoveDecorationWindow(WINDOW_DECORATION_CATEGORIES);
ExitTraderMenu(taskId);
}
@@ -825,12 +860,12 @@ static void InitDecorationItemsMenuLimits(void)
sDecorationItemsMenu->maxShownItems = sDecorationItemsMenu->numMenuItems;
}
-static void sub_81272C8(void)
+static void InitDecorationItemsMenuScrollAndCursor(void)
{
sub_812225C(&sDecorationsScrollOffset, &sDecorationsCursorPos, sDecorationItemsMenu->maxShownItems, sDecorationItemsMenu->numMenuItems);
}
-static void sub_81272F8(void)
+static void InitDecorationItemsMenuScrollAndCursor2(void)
{
sub_8122298(&sDecorationsScrollOffset, &sDecorationsCursorPos, sDecorationItemsMenu->maxShownItems, sDecorationItemsMenu->numMenuItems, 8);
}
@@ -841,7 +876,7 @@ static void PrintDecorationItemMenuItems(u8 taskId)
u16 i;
data = gTasks[taskId].data;
- if ((sCurDecorationCategory < DECORCAT_DOLL || sCurDecorationCategory > DECORCAT_CUSHION) && gDecorationContext.isPlayerRoom == TRUE && data[11] == 0)
+ if ((sCurDecorationCategory < DECORCAT_DOLL || sCurDecorationCategory > DECORCAT_CUSHION) && sDecorationContext.isPlayerRoom == TRUE && tDecorationMenuCommand == DECOR_MENU_PLACE)
ColorMenuItemString(gStringVar1, TRUE);
else
ColorMenuItemString(gStringVar1, FALSE);
@@ -857,7 +892,7 @@ static void PrintDecorationItemMenuItems(u8 taskId)
sDecorationItemsMenu->items[i].name = sDecorationItemsMenu->names[i];
sDecorationItemsMenu->items[i].id = -2;
gMultiuseListMenuTemplate = sDecorationItemsListMenuTemplate;
- gMultiuseListMenuTemplate.windowId = sDecorMenuWindowIds[1];
+ gMultiuseListMenuTemplate.windowId = sDecorMenuWindowIds[WINDOW_DECORATION_CATEGORIES];
gMultiuseListMenuTemplate.totalItems = sDecorationItemsMenu->numMenuItems;
gMultiuseListMenuTemplate.items = sDecorationItemsMenu->items;
gMultiuseListMenuTemplate.maxShowed = sDecorationItemsMenu->maxShownItems;
@@ -877,18 +912,14 @@ static void DecorationItemsMenu_OnCursorMove(s32 itemIndex, bool8 flag, struct L
PrintDecorationItemDescription(itemIndex);
}
-void sub_81274A0(u8 a0, s32 a1, u8 a2)
+static void DecorationItemsMenu_PrintDecorationInUse(u8 windowId, s32 itemIndex, u8 y)
{
- if (a1 != -2)
+ if (itemIndex != -2)
{
- if (sub_81277BC(a1 + 1) == TRUE)
- {
- blit_move_info_icon(a0, 0x18, 0x5c, a2 + 2);
- }
- else if (sub_81277E8(a1 + 1) == TRUE)
- {
- blit_move_info_icon(a0, 0x19, 0x5c, a2 + 2);
- }
+ if (IsDecorationIndexInSecretBase(itemIndex + 1) == TRUE)
+ blit_move_info_icon(windowId, 0x18, 0x5c, y + 2);
+ else if (IsDecorationIndexInPlayersRoom(itemIndex + 1) == TRUE)
+ blit_move_info_icon(windowId, 0x19, 0x5c, y + 2);
}
}
@@ -917,24 +948,24 @@ static void RemoveDecorationItemsScrollIndicators(void)
}
}
-void sub_8127580(u8 taskId)
+static void AddDecorationItemsWindow(u8 taskId)
{
- AddDecorationWindow(1);
+ AddDecorationWindow(WINDOW_DECORATION_CATEGORIES);
InitDecorationItemsWindow(taskId);
}
static void InitDecorationItemsWindow(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- AddDecorationWindow(3);
+ AddDecorationWindow(WINDOW_DECORATION_CATEGORY_ITEMS);
ShowDecorationCategorySummaryWindow(sCurDecorationCategory);
sDecorationItemsMenu = AllocZeroed(sizeof(*sDecorationItemsMenu));
sDecorationItemsMenu->scrollIndicatorsTaskId = 0xFF;
InitDecorationItemsMenuLimits();
- sub_81272C8();
- sub_81272F8();
+ InitDecorationItemsMenuScrollAndCursor();
+ InitDecorationItemsMenuScrollAndCursor2();
PrintDecorationItemMenuItems(taskId);
- data[13] = ListMenuInit(&gMultiuseListMenuTemplate, sDecorationsScrollOffset, sDecorationsCursorPos);
+ tMenuTaskId = ListMenuInit(&gMultiuseListMenuTemplate, sDecorationsScrollOffset, sDecorationsCursorPos);
AddDecorationItemsScrollIndicators();
}
@@ -952,25 +983,25 @@ static void HandleDecorationItemsMenuInput(u8 taskId)
data = gTasks[taskId].data;
if (!gPaletteFade.active)
{
- input = ListMenu_ProcessInput(data[13]);
- ListMenuGetScrollAndRow(data[13], &sDecorationsScrollOffset, &sDecorationsCursorPos);
+ input = ListMenu_ProcessInput(tMenuTaskId);
+ ListMenuGetScrollAndRow(tMenuTaskId, &sDecorationsScrollOffset, &sDecorationsCursorPos);
switch (input)
{
case LIST_NOTHING_CHOSEN:
break;
case LIST_CANCEL:
PlaySE(SE_SELECT);
- sSecretBasePC_SelectedDecorationActions[data[11]][1](taskId);
+ sSecretBasePC_SelectedDecorationActions[tDecorationMenuCommand][1](taskId);
break;
default:
PlaySE(SE_SELECT);
gCurDecorationIndex = input;
RemoveDecorationItemsScrollIndicators();
- DestroyListMenuTask(data[13], &sDecorationsScrollOffset, &sDecorationsCursorPos);
- RemoveDecorationWindow(1);
+ DestroyListMenuTask(tMenuTaskId, &sDecorationsScrollOffset, &sDecorationsCursorPos);
+ RemoveDecorationWindow(WINDOW_DECORATION_CATEGORIES);
RemoveDecorationItemsOtherWindows();
free(sDecorationItemsMenu);
- sSecretBasePC_SelectedDecorationActions[data[11]][0](taskId);
+ sSecretBasePC_SelectedDecorationActions[tDecorationMenuCommand][0](taskId);
break;
}
}
@@ -978,17 +1009,17 @@ static void HandleDecorationItemsMenuInput(u8 taskId)
static void ShowDecorationCategorySummaryWindow(u8 category)
{
- PrintDecorationCategoryMenuItem(AddDecorationWindow(2), category, 0, 0, 0, 0);
+ PrintDecorationCategoryMenuItem(AddDecorationWindow(WINDOW_DECORATION_CATEGORY_SUMMARY), category, 0, 0, 0, 0);
}
-static void PrintDecorationItemDescription(u32 itemIndex)
+static void PrintDecorationItemDescription(s32 itemIndex)
{
u8 windowId;
const u8 *str;
- windowId = sDecorMenuWindowIds[3];
+ windowId = sDecorMenuWindowIds[WINDOW_DECORATION_CATEGORY_ITEMS];
FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
- if (itemIndex >= sNumOwnedDecorationsInCurCategory)
+ if ((u32)itemIndex >= sNumOwnedDecorationsInCurCategory)
str = gText_GoBackPrevMenu;
else
str = gDecorations[gCurDecorationItems[itemIndex]].description;
@@ -998,12 +1029,11 @@ static void PrintDecorationItemDescription(u32 itemIndex)
static void RemoveDecorationItemsOtherWindows(void)
{
- // Remove description and category summary windows
- RemoveDecorationWindow(3);
- RemoveDecorationWindow(2);
+ RemoveDecorationWindow(WINDOW_DECORATION_CATEGORY_ITEMS);
+ RemoveDecorationWindow(WINDOW_DECORATION_CATEGORY_SUMMARY);
}
-bool8 sub_81277BC(u8 idx)
+static bool8 IsDecorationIndexInSecretBase(u8 idx)
{
u8 i;
for (i = 0; i < ARRAY_COUNT(sSecretBaseItemsIndicesBuffer); i++)
@@ -1015,7 +1045,7 @@ bool8 sub_81277BC(u8 idx)
return FALSE;
}
-bool8 sub_81277E8(u8 idx)
+static bool8 IsDecorationIndexInPlayersRoom(u8 idx)
{
u8 i;
for (i = 0; i < ARRAY_COUNT(sPlayerRoomItemsIndicesBuffer); i++)
@@ -1061,11 +1091,11 @@ static void IdentifyOwnedDecorationsCurrentlyInUseInternal(u8 taskId)
count = 0;
for (i = 0; i < ARRAY_COUNT(sPlayerRoomItemsIndicesBuffer); i++)
{
- if (gSaveBlock1Ptr->playerRoomDecor[i] != DECOR_NONE)
+ if (gSaveBlock1Ptr->playerRoomDecorations[i] != DECOR_NONE)
{
for (j = 0; j < gDecorationInventories[sCurDecorationCategory].size; j++)
{
- if (gCurDecorationItems[j] == gSaveBlock1Ptr->playerRoomDecor[i] && sub_81277BC(j + 1) != TRUE)
+ if (gCurDecorationItems[j] == gSaveBlock1Ptr->playerRoomDecorations[i] && IsDecorationIndexInSecretBase(j + 1) != TRUE)
{
for (k = 0; k < count && sPlayerRoomItemsIndicesBuffer[k] != j + 1; k++);
if (k == count)
@@ -1103,49 +1133,49 @@ bool8 IsSelectedDecorInThePC(void)
return TRUE;
}
-static void sub_8127A14(u8 taskId)
+static void Task_ShowDecorationItemsWindow(u8 taskId)
{
- AddDecorationWindow(1);
+ AddDecorationWindow(WINDOW_DECORATION_CATEGORIES);
ShowDecorationItemsWindow(taskId);
}
-void sub_8127A30(u8 taskId)
+static void DontTossDecoration(u8 taskId)
{
ClearDialogWindowAndFrame(0, 0);
- gTasks[taskId].func = sub_8127A14;
+ gTasks[taskId].func = Task_ShowDecorationItemsWindow;
}
-void sub_8127A5C(u8 taskId)
+static void ReturnToDecorationItemsAfterInvalidSelection(u8 taskId)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
ClearDialogWindowAndFrame(0, 0);
- AddDecorationWindow(1);
+ AddDecorationWindow(WINDOW_DECORATION_CATEGORIES);
ShowDecorationItemsWindow(taskId);
}
}
-void sub_8127A8C(u8 taskId)
+static void DecorationItemsMenuAction_Cancel(u8 taskId)
{
s16 *data = gTasks[taskId].data;
RemoveDecorationItemsScrollIndicators();
RemoveDecorationItemsOtherWindows();
- DestroyListMenuTask(data[13], NULL, NULL);
+ DestroyListMenuTask(tMenuTaskId, NULL, NULL);
free(sDecorationItemsMenu);
- sub_8126E44(taskId);
+ ReinitDecorationCategoriesWindow(taskId);
}
-void sub_8127ACC(u8 taskId)
+static void SetInitialPositions(u8 taskId)
{
- gTasks[taskId].data[3] = gSaveBlock1Ptr->pos.x;
- gTasks[taskId].data[4] = gSaveBlock1Ptr->pos.y;
- PlayerGetDestCoords(&gTasks[taskId].data[0], &gTasks[taskId].data[1]);
+ gTasks[taskId].tInitialX = gSaveBlock1Ptr->pos.x;
+ gTasks[taskId].tInitialY = gSaveBlock1Ptr->pos.y;
+ PlayerGetDestCoords(&gTasks[taskId].tCursorX, &gTasks[taskId].tCursorY);
}
-void sub_8127B04(u8 taskId)
+static void WarpToInitialPosition(u8 taskId)
{
DrawWholeMapView();
- SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]);
+ SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gTasks[taskId].tInitialX, gTasks[taskId].tInitialY);
WarpIntoMap();
}
@@ -1155,10 +1185,10 @@ static u16 GetDecorationElevation(u8 decoration, u8 tileIndex)
switch (decoration)
{
case DECOR_STAND:
- elevation = sDecorationStandElevations[tileIndex] << 12;
+ elevation = sDecorationStandElevations[tileIndex] << METATILE_ELEVATION_SHIFT;
return elevation;
case DECOR_SLIDE:
- elevation = sDecorationSlideElevation[tileIndex] << 12;
+ elevation = sDecorationSlideElevation[tileIndex] << METATILE_ELEVATION_SHIFT;
return elevation;
default:
return elevation;
@@ -1171,7 +1201,7 @@ static void ShowDecorationOnMap_(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight,
s16 x, y;
u16 behavior;
u16 impassableFlag;
- u16 posterSide;
+ u16 overlapsWall;
u16 elevation;
for (j = 0; j < decHeight; j++)
@@ -1181,21 +1211,22 @@ static void ShowDecorationOnMap_(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight,
{
x = mapX + i;
behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decoration].tiles[j * decWidth + i]);
- if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decoration].permission != DECORPERM_PASS_FLOOR && (behavior >> 12)))
+ if (MetatileBehavior_IsSecretBaseImpassable(behavior) == TRUE || (gDecorations[decoration].permission != DECORPERM_PASS_FLOOR && (behavior >> METATILE_ELEVATION_SHIFT)))
impassableFlag = METATILE_COLLISION_MASK;
else
impassableFlag = 0;
+ // Choose the metatile that has the wall background instead of the floor if overlapping a wall.
if (gDecorations[decoration].permission != DECORPERM_NA_WALL && MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE)
- posterSide = 1;
+ overlapsWall = 1;
else
- posterSide = 0;
+ overlapsWall = 0;
elevation = GetDecorationElevation(gDecorations[decoration].id, j * decWidth + i);
if (elevation != 0xFFFF)
- MapGridSetMetatileEntryAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (0x200 | posterSide)) | impassableFlag | elevation);
+ MapGridSetMetatileEntryAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (0x200 | overlapsWall)) | impassableFlag | elevation);
else
- MapGridSetMetatileIdAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (0x200 | posterSide)) | impassableFlag);
+ MapGridSetMetatileIdAt(x, y, (gDecorations[decoration].tiles[j * decWidth + i] + (0x200 | overlapsWall)) | impassableFlag);
}
}
}
@@ -1268,100 +1299,98 @@ void SetDecoration(void)
}
}
-bool8 sub_8127F38(void)
+static bool8 HasDecorationSpace(void)
{
u16 i;
-
- for (i = 0; i < gDecorationContext.size; i++)
+ for (i = 0; i < sDecorationContext.size; i++)
{
- if (gDecorationContext.items[i] == DECOR_NONE)
- {
+ if (sDecorationContext.items[i] == DECOR_NONE)
return TRUE;
- }
}
+
return FALSE;
}
-void sub_8127F68(u8 taskId)
+static void DecorationItemsMenuAction_AttemptPlace(u8 taskId)
{
- if (gDecorationContext.isPlayerRoom == TRUE && sCurDecorationCategory != DECORCAT_DOLL && sCurDecorationCategory != DECORCAT_CUSHION)
+ if (sDecorationContext.isPlayerRoom == TRUE && sCurDecorationCategory != DECORCAT_DOLL && sCurDecorationCategory != DECORCAT_CUSHION)
{
StringExpandPlaceholders(gStringVar4, gText_CantPlaceInRoom);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
+ DisplayItemMessageOnField(taskId, gStringVar4, ReturnToDecorationItemsAfterInvalidSelection);
}
else if (IsSelectedDecorInThePC() == TRUE)
{
- if (sub_8127F38() == TRUE)
+ if (HasDecorationSpace() == TRUE)
{
FadeScreen(FADE_TO_BLACK, 0);
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].func = sub_8128060;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].func = Task_PlaceDecoration;
}
else
{
- ConvertIntToDecimalStringN(gStringVar1, gDecorationContext.size, STR_CONV_MODE_RIGHT_ALIGN, 2);
- if (gDecorationContext.isPlayerRoom == FALSE) {
+ ConvertIntToDecimalStringN(gStringVar1, sDecorationContext.size, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ if (sDecorationContext.isPlayerRoom == FALSE) {
StringExpandPlaceholders(gStringVar4, gText_NoMoreDecorations);
}
else
{
StringExpandPlaceholders(gStringVar4, gText_NoMoreDecorations2);
}
- DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
+ DisplayItemMessageOnField(taskId, gStringVar4, ReturnToDecorationItemsAfterInvalidSelection);
}
}
else
{
StringExpandPlaceholders(gStringVar4, gText_InUseAlready);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
+ DisplayItemMessageOnField(taskId, gStringVar4, ReturnToDecorationItemsAfterInvalidSelection);
}
}
-void sub_8128060(u8 taskId)
+static void Task_PlaceDecoration(u8 taskId)
{
- switch (gTasks[taskId].data[2])
+ switch (gTasks[taskId].tState)
{
case 0:
if (!gPaletteFade.active)
{
- sub_8127ACC(taskId);
- gTasks[taskId].data[2] = 1;
+ SetInitialPositions(taskId);
+ gTasks[taskId].tState = 1;
}
break;
case 1:
gPaletteFade.bufferTransferDisabled = TRUE;
ConfigureCameraObjectForPlacingDecoration(&sPlaceDecorationGraphicsDataBuffer, gCurDecorationItems[gCurDecorationIndex]);
- sub_812826C(taskId);
+ SetUpDecorationShape(taskId);
SetUpPlacingDecorationPlayerAvatar(taskId, &sPlaceDecorationGraphicsDataBuffer);
FadeInFromBlack();
gPaletteFade.bufferTransferDisabled = FALSE;
- gTasks[taskId].data[2] = 2;
+ gTasks[taskId].tState = 2;
break;
case 2:
if (IsWeatherNotFadingIn() == TRUE)
{
- gTasks[taskId].data[12] = 0;
+ gTasks[taskId].tDecorationItemsMenuCommand = DECOR_ITEMS_MENU_PLACE;
ContinueDecorating(taskId);
}
break;
}
}
-void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor)
+static void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor)
{
sDecor_CameraSpriteObjectIdx1 = gSprites[gFieldCamera.spriteId].data[0];
gFieldCamera.spriteId = gpu_pal_decompress_alloc_tag_and_upload(data, decor);
gSprites[gFieldCamera.spriteId].oam.priority = 1;
- gSprites[gFieldCamera.spriteId].callback = sub_81292D0;
+ gSprites[gFieldCamera.spriteId].callback = InitializePuttingAwayCursorSprite;
gSprites[gFieldCamera.spriteId].pos1.x = sDecorationMovementInfo[data->decoration->shape].cameraX;
gSprites[gFieldCamera.spriteId].pos1.y = sDecorationMovementInfo[data->decoration->shape].cameraY;
}
-void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data)
+static void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data)
{
u8 x;
- x = 16 * (u8)gTasks[taskId].data[5] + sDecorationMovementInfo[data->decoration->shape].cameraX - 8 * ((u8)gTasks[taskId].data[5] - 1);
+ x = 16 * (u8)gTasks[taskId].tDecorWidth + sDecorationMovementInfo[data->decoration->shape].cameraX - 8 * ((u8)gTasks[taskId].tDecorWidth - 1);
if (data->decoration->shape == DECORSHAPE_3x1 || data->decoration->shape == DECORSHAPE_3x3 || data->decoration->shape == DECORSHAPE_3x2)
x -= 8;
@@ -1375,92 +1404,89 @@ void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphic
sDecor_CameraSpriteObjectIdx1 = gFieldCamera.spriteId;
}
-void sub_812826C(u8 taskId)
+static void SetUpDecorationShape(u8 taskId)
{
switch (gDecorations[gCurDecorationItems[gCurDecorationIndex]].shape)
{
case DECORSHAPE_1x1:
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].data[6] = 1;
+ gTasks[taskId].tDecorWidth = 1;
+ gTasks[taskId].tDecorHeight = 1;
break;
case DECORSHAPE_2x1:
- gTasks[taskId].data[5] = 2;
- gTasks[taskId].data[6] = 1;
+ gTasks[taskId].tDecorWidth = 2;
+ gTasks[taskId].tDecorHeight = 1;
break;
case DECORSHAPE_3x1:
- gTasks[taskId].data[5] = 3;
- gTasks[taskId].data[6] = 1;
+ gTasks[taskId].tDecorWidth = 3;
+ gTasks[taskId].tDecorHeight = 1;
break;
case DECORSHAPE_4x2:
- gTasks[taskId].data[5] = 4;
- gTasks[taskId].data[6] = 2;
+ gTasks[taskId].tDecorWidth = 4;
+ gTasks[taskId].tDecorHeight = 2;
break;
case DECORSHAPE_2x2:
- gTasks[taskId].data[5] = 2;
- gTasks[taskId].data[6] = 2;
+ gTasks[taskId].tDecorWidth = 2;
+ gTasks[taskId].tDecorHeight = 2;
break;
case DECORSHAPE_1x2:
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].data[6] = 2;
+ gTasks[taskId].tDecorWidth = 1;
+ gTasks[taskId].tDecorHeight = 2;
break;
case DECORSHAPE_1x3:
- gTasks[taskId].data[5] = 1;
- gTasks[taskId].data[6] = 3;
- gTasks[taskId].data[1]++;
+ gTasks[taskId].tDecorWidth = 1;
+ gTasks[taskId].tDecorHeight = 3;
+ gTasks[taskId].tCursorY++;
break;
case DECORSHAPE_2x4:
- gTasks[taskId].data[5] = 2;
- gTasks[taskId].data[6] = 4;
+ gTasks[taskId].tDecorWidth = 2;
+ gTasks[taskId].tDecorHeight = 4;
break;
case DECORSHAPE_3x3:
- gTasks[taskId].data[5] = 3;
- gTasks[taskId].data[6] = 3;
+ gTasks[taskId].tDecorWidth = 3;
+ gTasks[taskId].tDecorHeight = 3;
break;
case DECORSHAPE_3x2:
- gTasks[taskId].data[5] = 3;
- gTasks[taskId].data[6] = 2;
+ gTasks[taskId].tDecorWidth = 3;
+ gTasks[taskId].tDecorHeight = 2;
break;
}
}
-void sub_81283BC(u8 taskId)
+static void AttemptPlaceDecoration(u8 taskId)
{
- gTasks[taskId].data[10] = 0;
+ gTasks[taskId].tButton = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 1;
gSprites[sDecor_CameraSpriteObjectIdx2].data[7] = 1;
- sub_8128DE0();
- AttemptPlaceDecoration(taskId);
+ ResetCursorMovement();
+ AttemptPlaceDecoration_(taskId);
}
-void sub_8128414(u8 taskId)
+static void AttemptCancelPlaceDecoration(u8 taskId)
{
- gTasks[taskId].data[10] = 0;
+ gTasks[taskId].tButton = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 1;
gSprites[sDecor_CameraSpriteObjectIdx2].data[7] = 1;
- sub_8128DE0();
+ ResetCursorMovement();
StringExpandPlaceholders(gStringVar4, gText_CancelDecorating);
DisplayItemMessageOnField(taskId, gStringVar4, CancelDecoratingPrompt);
}
-bool8 sub_8128484(u8 behaviorAt, u16 behaviorBy)
+// Note: behaviorBy is pre-anded with METATILE_ELEVATION_MASK.
+static bool8 IsNonBlockNonElevated(u8 behaviorAt, u16 behaviorBy)
{
if (MetatileBehavior_IsBlockDecoration(behaviorAt) != TRUE || behaviorBy != 0)
- {
return FALSE;
- }
return TRUE;
}
-bool8 sub_81284AC(u8 taskId, s16 x, s16 y, u16 decor)
+static bool8 IsntInitialPosition(u8 taskId, s16 x, s16 y, u16 behaviorBy)
{
- if (x == gTasks[taskId].data[3] + 7 && y == gTasks[taskId].data[4] + 7 && decor != DECOR_NONE)
- {
+ if (x == gTasks[taskId].tInitialX + 7 && y == gTasks[taskId].tInitialY + 7 && behaviorBy != 0)
return FALSE;
- }
return TRUE;
}
-bool8 sub_81284F4(u16 behaviorAt, const struct Decoration *decoration)
+static bool8 IsFloorOrBoardAndHole(u16 behaviorAt, const struct Decoration *decoration)
{
if (MetatileBehavior_IsBlockDecoration(behaviorAt) != TRUE)
{
@@ -1474,7 +1500,7 @@ bool8 sub_81284F4(u16 behaviorAt, const struct Decoration *decoration)
return FALSE;
}
-bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration)
+static bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration)
{
u8 i;
u8 j;
@@ -1484,8 +1510,8 @@ bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration)
u8 mapX;
s16 curY;
s16 curX;
- mapY = gTasks[taskId].data[6];
- mapX = gTasks[taskId].data[5];
+ mapY = gTasks[taskId].tDecorHeight;
+ mapX = gTasks[taskId].tDecorWidth;
switch (decoration->permission)
{
@@ -1493,16 +1519,16 @@ bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration)
case DECORPERM_PASS_FLOOR:
for (i = 0; i < mapY; i++)
{
- curY = gTasks[taskId].data[1] - i;
+ curY = gTasks[taskId].tCursorY - i;
for (j = 0; j < mapX; j++)
{
- curX = gTasks[taskId].data[0] + j;
+ curX = gTasks[taskId].tCursorX + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
- if (!sub_81284F4(behaviorAt, decoration))
+ if (!IsFloorOrBoardAndHole(behaviorAt, decoration))
return FALSE;
- if (!sub_81284AC(taskId, curX, curY, behaviorBy))
+ if (!IsntInitialPosition(taskId, curX, curY, behaviorBy))
return FALSE;
behaviorAt = GetObjectEventIdByXYZ(curX, curY, 0);
@@ -1514,16 +1540,16 @@ bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration)
case DECORPERM_BEHIND_FLOOR:
for (i = 0; i < mapY - 1; i++)
{
- curY = gTasks[taskId].data[1] - i;
+ curY = gTasks[taskId].tCursorY - i;
for (j = 0; j < mapX; j++)
{
- curX = gTasks[taskId].data[0] + j;
+ curX = gTasks[taskId].tCursorX + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & METATILE_ELEVATION_MASK;
- if (!MetatileBehavior_IsNormal(behaviorAt) && !sub_8128484(behaviorAt, behaviorBy))
+ if (!MetatileBehavior_IsNormal(behaviorAt) && !IsNonBlockNonElevated(behaviorAt, behaviorBy))
return FALSE;
- if (!sub_81284AC(taskId, curX, curY, behaviorBy))
+ if (!IsntInitialPosition(taskId, curX, curY, behaviorBy))
return FALSE;
if (GetObjectEventIdByXYZ(curX, curY, 0) != 16)
@@ -1531,16 +1557,16 @@ bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration)
}
}
- curY = gTasks[taskId].data[1] - mapY + 1;
+ curY = gTasks[taskId].tCursorY - mapY + 1;
for (j = 0; j < mapX; j++)
{
- curX = gTasks[taskId].data[0] + j;
+ curX = gTasks[taskId].tCursorX + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & METATILE_ELEVATION_MASK;
if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsSecretBaseNorthWall(behaviorAt))
return FALSE;
- if (!sub_81284AC(taskId, curX, curY, behaviorBy))
+ if (!IsntInitialPosition(taskId, curX, curY, behaviorBy))
return FALSE;
behaviorAt = GetObjectEventIdByXYZ(curX, curY, 0);
@@ -1551,23 +1577,23 @@ bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration)
case DECORPERM_NA_WALL:
for (i = 0; i < mapY; i++)
{
- curY = gTasks[taskId].data[1] - i;
+ curY = gTasks[taskId].tCursorY - i;
for (j = 0; j < mapX; j++)
{
- curX = gTasks[taskId].data[0] + j;
+ curX = gTasks[taskId].tCursorX + j;
if (!MetatileBehavior_IsSecretBaseNorthWall(MapGridGetMetatileBehaviorAt(curX, curY)))
return FALSE;
- if (MapGridGetMetatileIdAt(curX, curY + 1) == 0x28c)
+ if (MapGridGetMetatileIdAt(curX, curY + 1) == METATILE_SecretBase_SandOrnament_BrokenBase)
return FALSE;
}
}
break;
case DECORPERM_SPRITE:
- curY = gTasks[taskId].data[1];
+ curY = gTasks[taskId].tCursorY;
for (j = 0; j < mapX; j++)
{
- curX = gTasks[taskId].data[0] + j;
+ curX = gTasks[taskId].tCursorX + j;
behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
if (decoration->shape == DECORSHAPE_1x2)
{
@@ -1588,7 +1614,7 @@ bool8 CanPlaceDecoration(u8 taskId, const struct Decoration *decoration)
return TRUE;
}
-void AttemptPlaceDecoration(u8 taskId)
+static void AttemptPlaceDecoration_(u8 taskId)
{
if (CanPlaceDecoration(taskId, &gDecorations[gCurDecorationItems[gCurDecorationIndex]]) == TRUE)
{
@@ -1603,24 +1629,24 @@ void AttemptPlaceDecoration(u8 taskId)
}
}
-void PlaceDecorationPrompt(u8 taskId)
+static void PlaceDecorationPrompt(u8 taskId)
{
DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &sPlaceDecorationYesNoFunctions);
}
-void PlaceDecoration(u8 taskId)
+static void PlaceDecoration(u8 taskId)
{
ClearDialogWindowAndFrame(0, 0);
- sub_8128AAC(taskId);
+ PlaceDecoration_(taskId);
if (gDecorations[gCurDecorationItems[gCurDecorationIndex]].permission != DECORPERM_SPRITE)
{
- ShowDecorationOnMap(gTasks[taskId].data[0], gTasks[taskId].data[1], gCurDecorationItems[gCurDecorationIndex]);
+ ShowDecorationOnMap(gTasks[taskId].tCursorX, gTasks[taskId].tCursorY, gCurDecorationItems[gCurDecorationIndex]);
}
else
{
- sCurDecorMapX = gTasks[taskId].data[0] - 7;
- sCurDecorMapY = gTasks[taskId].data[1] - 7;
+ sCurDecorMapX = gTasks[taskId].tCursorX - 7;
+ sCurDecorMapY = gTasks[taskId].tCursorY - 7;
ScriptContext1_SetupScript(SecretBase_EventScript_SetDecoration);
}
@@ -1628,28 +1654,28 @@ void PlaceDecoration(u8 taskId)
if (gMapHeader.regionMapSectionId == MAPSEC_SECRET_BASE)
TV_PutSecretBaseVisitOnTheAir();
- sub_8128BBC(taskId);
+ CancelDecorating_(taskId);
}
-void sub_8128AAC(u8 taskId)
+static void PlaceDecoration_(u8 taskId)
{
u16 i;
- for (i = 0; i < gDecorationContext.size; i++)
+ for (i = 0; i < sDecorationContext.size; i++)
{
- if (gDecorationContext.items[i] == DECOR_NONE)
+ if (sDecorationContext.items[i] == DECOR_NONE)
{
- gDecorationContext.items[i] = gCurDecorationItems[gCurDecorationIndex];
- gDecorationContext.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7);
+ sDecorationContext.items[i] = gCurDecorationItems[gCurDecorationIndex];
+ sDecorationContext.pos[i] = ((gTasks[taskId].tCursorX - 7) << 4) + (gTasks[taskId].tCursorY - 7);
break;
}
}
- if (!gDecorationContext.isPlayerRoom)
+ if (!sDecorationContext.isPlayerRoom)
{
for (i = 0; i < DECOR_MAX_SECRET_BASE; i++)
{
- if (sSecretBaseItemsIndicesBuffer[i] == 0)
+ if (sSecretBaseItemsIndicesBuffer[i] == DECOR_NONE)
{
sSecretBaseItemsIndicesBuffer[i] = gCurDecorationIndex + 1;
break;
@@ -1660,7 +1686,7 @@ void sub_8128AAC(u8 taskId)
{
for (i = 0; i < DECOR_MAX_PLAYERS_HOUSE; i++)
{
- if (sPlayerRoomItemsIndicesBuffer[i] == 0)
+ if (sPlayerRoomItemsIndicesBuffer[i] == DECOR_NONE)
{
sPlayerRoomItemsIndicesBuffer[i] = gCurDecorationIndex + 1;
break;
@@ -1669,63 +1695,63 @@ void sub_8128AAC(u8 taskId)
}
}
-void CancelDecoratingPrompt(u8 taskId)
+static void CancelDecoratingPrompt(u8 taskId)
{
DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &sCancelDecoratingYesNoFunctions);
}
-void CancelDecorating(u8 taskId)
+static void CancelDecorating(u8 taskId)
{
ClearDialogWindowAndFrame(0, 0);
- sub_8128BBC(taskId);
+ CancelDecorating_(taskId);
}
-void sub_8128BBC(u8 taskId)
+static void CancelDecorating_(u8 taskId)
{
FadeScreen(FADE_TO_BLACK, 0);
- gTasks[taskId].data[2] = 0;
+ gTasks[taskId].tState = 0;
gTasks[taskId].func = c1_overworld_prev_quest;
}
-void c1_overworld_prev_quest(u8 taskId)
+static void c1_overworld_prev_quest(u8 taskId)
{
- switch (gTasks[taskId].data[2])
+ switch (gTasks[taskId].tState)
{
case 0:
ScriptContext2_Enable();
if (!gPaletteFade.active)
{
- sub_8127B04(taskId);
- gTasks[taskId].data[2] = 1;
+ WarpToInitialPosition(taskId);
+ gTasks[taskId].tState = 1;
}
break;
case 1:
- sub_812A3C8();
+ FreePlayerSpritePalette();
FreeSpritePaletteByTag(PLACE_DECORATION_SELECTOR_TAG);
- gFieldCallback = sub_8128CD4;
+ gFieldCallback = FieldCB_InitDecorationItemsWindow;
SetMainCallback2(CB2_ReturnToField);
DestroyTask(taskId);
break;
}
}
-void sub_8128C64(u8 taskId)
+static void Task_InitDecorationItemsWindow(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[2])
+ switch (tState)
{
case 0:
HideSecretBaseDecorationSprites();
- data[2]++;
+ tState++;
break;
case 1:
ScriptContext1_SetupScript(SecretBase_EventScript_InitDecorations);
- data[2]++;
+ tState++;
break;
case 2:
ScriptContext2_Enable();
- data[2]++;
+ tState++;
break;
case 3:
if (IsWeatherNotFadingIn() == TRUE)
@@ -1734,48 +1760,48 @@ void sub_8128C64(u8 taskId)
}
}
-void sub_8128CD4(void)
+static void FieldCB_InitDecorationItemsWindow(void)
{
u8 taskId;
ScriptContext2_Enable();
FadeInFromBlack();
- taskId = CreateTask(sub_8128C64, 8);
- sub_8127580(taskId);
- gTasks[taskId].data[2] = 0;
+ taskId = CreateTask(Task_InitDecorationItemsWindow, 8);
+ AddDecorationItemsWindow(taskId);
+ gTasks[taskId].tState = 0;
}
-bool8 sub_8128D10(u8 taskId)
+static bool8 ApplyCursorMovement_IsInvalid(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if (sDecorationLastDirectionMoved == DIR_SOUTH && data[1] - data[6] - 6 < 0)
+ if (sDecorationLastDirectionMoved == DIR_SOUTH && tCursorY - tDecorHeight - 6 < 0)
{
- data[1]++;
+ tCursorY++;
return FALSE;
}
- if (sDecorationLastDirectionMoved == DIR_NORTH && data[1] - 7 >= gMapHeader.mapLayout->height)
+ if (sDecorationLastDirectionMoved == DIR_NORTH && tCursorY - 7 >= gMapHeader.mapLayout->height)
{
- data[1]--;
+ tCursorY--;
return FALSE;
}
- if (sDecorationLastDirectionMoved == DIR_WEST && data[0] - 7 < 0)
+ if (sDecorationLastDirectionMoved == DIR_WEST && tCursorX - 7 < 0)
{
- data[0]++;
+ tCursorX++;
return FALSE;
}
- if (sDecorationLastDirectionMoved == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapLayout->width)
+ if (sDecorationLastDirectionMoved == DIR_EAST && tCursorX + tDecorWidth - 8 >= gMapHeader.mapLayout->width)
{
- data[0]--;
+ tCursorX--;
return FALSE;
}
return TRUE;
}
-bool8 sub_8128DB4(void)
+static bool8 IsHoldingDirection(void)
{
u16 heldKeys = gMain.heldKeys & DPAD_ANY;
if (heldKeys != DPAD_UP && heldKeys != DPAD_DOWN && heldKeys != DPAD_LEFT && heldKeys != DPAD_RIGHT)
@@ -1784,26 +1810,26 @@ bool8 sub_8128DB4(void)
return TRUE;
}
-void sub_8128DE0(void)
+static void ResetCursorMovement(void)
{
sDecorationLastDirectionMoved = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = 0;
}
-void sub_8128E18(u8 taskId)
+static void Task_SelectLocation(u8 taskId)
{
s16 *data = gTasks[taskId].data;
if (!gSprites[sDecor_CameraSpriteObjectIdx1].data[4])
{
- if (data[10] == 1)
+ if (tButton == A_BUTTON)
{
- gUnknown_085A72D4[data[12]].yesFunc(taskId);
+ sPlacePutAwayYesNoFunctions[tDecorationItemsMenuCommand].yesFunc(taskId);
return;
}
- else if (data[10] == 2)
+ else if (tButton == B_BUTTON)
{
- gUnknown_085A72D4[data[12]].noFunc(taskId);
+ sPlacePutAwayYesNoFunctions[tDecorationItemsMenuCommand].noFunc(taskId);
return;
}
@@ -1812,7 +1838,7 @@ void sub_8128E18(u8 taskId)
sDecorationLastDirectionMoved = DIR_SOUTH;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = -2;
- data[1]--;
+ tCursorY--;
}
if ((gMain.heldKeys & DPAD_ANY) == DPAD_DOWN)
@@ -1820,7 +1846,7 @@ void sub_8128E18(u8 taskId)
sDecorationLastDirectionMoved = DIR_NORTH;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = 2;
- data[1]++;
+ tCursorY++;
}
if ((gMain.heldKeys & DPAD_ANY) == DPAD_LEFT)
@@ -1828,7 +1854,7 @@ void sub_8128E18(u8 taskId)
sDecorationLastDirectionMoved = DIR_WEST;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = -2;
gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = 0;
- data[0]--;
+ tCursorX--;
}
if ((gMain.heldKeys & DPAD_ANY) == DPAD_RIGHT)
@@ -1836,11 +1862,11 @@ void sub_8128E18(u8 taskId)
sDecorationLastDirectionMoved = DIR_EAST;
gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 2;
gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = 0;
- data[0]++;
+ tCursorX++;
}
- if (!sub_8128DB4() || !sub_8128D10(taskId))
- sub_8128DE0();
+ if (!IsHoldingDirection() || !ApplyCursorMovement_IsInvalid(taskId))
+ ResetCursorMovement();
}
if (sDecorationLastDirectionMoved)
@@ -1849,43 +1875,43 @@ void sub_8128E18(u8 taskId)
gSprites[sDecor_CameraSpriteObjectIdx1].data[4] &= 7;
}
- if (!data[10])
+ if (!tButton)
{
if (gMain.newKeys & A_BUTTON)
- data[10] = A_BUTTON;
+ tButton = A_BUTTON;
if (gMain.newKeys & B_BUTTON)
- data[10] = B_BUTTON;
+ tButton = B_BUTTON;
}
}
-void ContinueDecorating(u8 taskId)
+static void ContinueDecorating(u8 taskId)
{
ClearDialogWindowAndFrame(0, 1);
gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0;
- gTasks[taskId].data[10] = 0;
- gTasks[taskId].func = sub_8128E18;
+ gTasks[taskId].tButton = 0;
+ gTasks[taskId].func = Task_SelectLocation;
}
-void CantPlaceDecorationPrompt(u8 taskId)
+static void CantPlaceDecorationPrompt(u8 taskId)
{
if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
ContinueDecorating(taskId);
}
-void sub_8129048(struct PlaceDecorationGraphicsDataBuffer *data)
+static void ClearPlaceDecorationGraphicsDataBuffer(struct PlaceDecorationGraphicsDataBuffer *data)
{
CpuFill16(0, data, sizeof(*data));
}
-void sub_8129068(u16 *dest, u16 pal)
+static void CopyPalette(u16 *dest, u16 pal)
{
- CpuFastCopy(&((u16 *)gTilesetPointer_SecretBase->palettes)[pal << 4], dest, 32);
+ CpuFastCopy(&((u16 *)gTilesetPointer_SecretBase->palettes)[pal * 16], dest, sizeof(u16) * 16);
}
-void sub_8129088(u8 *dest, u16 tile)
+static void CopyTile(u8 *dest, u16 tile)
{
- u8 buffer[32];
+ u8 buffer[TILE_SIZE_4BPP];
u16 mode;
u16 i;
@@ -1893,13 +1919,13 @@ void sub_8129088(u8 *dest, u16 tile)
if (tile != 0)
tile &= 0x03FF;
- CpuFastCopy(&((u8 *)gTilesetPointer_SecretBase->tiles)[tile << 5], buffer, 32);
+ CpuFastCopy(&((u8 *)gTilesetPointer_SecretBase->tiles)[tile * TILE_SIZE_4BPP], buffer, TILE_SIZE_4BPP);
switch (mode)
{
case 0:
- CpuFastCopy(buffer, dest, 32);
+ CpuFastCopy(buffer, dest, TILE_SIZE_4BPP);
break;
- case 1:
+ case BG_TILE_H_FLIP(0) >> 10:
for (i = 0; i < 8; i++)
{
dest[4 * i] = (buffer[4 * (i + 1) - 1] >> 4) + ((buffer[4 * (i + 1) - 1] & 0x0F) << 4);
@@ -1908,7 +1934,7 @@ void sub_8129088(u8 *dest, u16 tile)
dest[4 * i + 3] = (buffer[4 * (i + 1) - 4] >> 4) + ((buffer[4 * (i + 1) - 4] & 0x0F) << 4);
}
break;
- case 2:
+ case BG_TILE_V_FLIP(0) >> 10:
for (i = 0; i < 8; i++)
{
dest[4 * i] = buffer[4 * (7 - i)];
@@ -1917,7 +1943,7 @@ void sub_8129088(u8 *dest, u16 tile)
dest[4 * i + 3] = buffer[4 * (7 - i) + 3];
}
break;
- case 3:
+ case BG_TILE_H_FLIP(BG_TILE_V_FLIP(0)) >> 10:
for (i = 0; i < 32; i++)
{
dest[i] = (buffer[31 - i] >> 4) + ((buffer[31 - i] & 0x0F) << 4);
@@ -1926,19 +1952,19 @@ void sub_8129088(u8 *dest, u16 tile)
}
}
-void sub_81291A4(struct PlaceDecorationGraphicsDataBuffer *data)
+static void SetDecorSelectionBoxTiles(struct PlaceDecorationGraphicsDataBuffer *data)
{
u16 i;
for (i = 0; i < 64; i++)
- sub_8129088(&data->image[i * 32], data->tiles[i]);
+ CopyTile(&data->image[i * TILE_SIZE_4BPP], data->tiles[i]);
}
-u16 sub_81291CC(u16 tile)
+static u16 GetMetatile(u16 tile)
{
return ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[tile] & 0xFFF;
}
-void sub_81291E8(struct PlaceDecorationGraphicsDataBuffer *data)
+static void SetDecorSelectionMetatiles(struct PlaceDecorationGraphicsDataBuffer *data)
{
u8 i;
u8 shape;
@@ -1946,11 +1972,11 @@ void sub_81291E8(struct PlaceDecorationGraphicsDataBuffer *data)
shape = data->decoration->shape;
for (i = 0; i < gUnknown_085A71B0[shape].size; i++)
{
- data->tiles[gUnknown_085A71B0[shape].tiles[i]] = sub_81291CC(data->decoration->tiles[gUnknown_085A71B0[shape].y[i]] * 8 + gUnknown_085A71B0[shape].x[i]);
+ data->tiles[gUnknown_085A71B0[shape].tiles[i]] = GetMetatile(data->decoration->tiles[gUnknown_085A71B0[shape].y[i]] * 8 + gUnknown_085A71B0[shape].x[i]);
}
}
-void SetDecorSelectionBoxOamAttributes(u8 decorShape)
+static void SetDecorSelectionBoxOamAttributes(u8 decorShape)
{
sDecorSelectorOam.y = 0;
sDecorSelectorOam.affineMode = ST_OAM_AFFINE_OFF;
@@ -1966,7 +1992,7 @@ void SetDecorSelectionBoxOamAttributes(u8 decorShape)
sDecorSelectorOam.paletteNum = 0;
}
-void sub_81292D0(struct Sprite *sprite)
+static void InitializePuttingAwayCursorSprite(struct Sprite *sprite)
{
sprite->data[2] = 0;
sprite->data[3] = 0;
@@ -1974,10 +2000,10 @@ void sub_81292D0(struct Sprite *sprite)
sprite->data[5] = 0;
sprite->data[6] = 0;
sprite->data[7] = 0;
- sprite->callback = sub_81292E8;
+ sprite->callback = InitializePuttingAwayCursorSprite2;
}
-void sub_81292E8(struct Sprite *sprite)
+static void InitializePuttingAwayCursorSprite2(struct Sprite *sprite)
{
if (sprite->data[7] == 0)
{
@@ -1995,23 +2021,23 @@ void sub_81292E8(struct Sprite *sprite)
}
}
-u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor)
+static u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor)
{
- sub_8129048(data);
+ ClearPlaceDecorationGraphicsDataBuffer(data);
data->decoration = &gDecorations[decor];
if (data->decoration->permission == DECORPERM_SPRITE)
return AddPseudoObjectEvent(data->decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
FreeSpritePaletteByTag(PLACE_DECORATION_SELECTOR_TAG);
- sub_81291E8(data);
+ SetDecorSelectionMetatiles(data);
SetDecorSelectionBoxOamAttributes(data->decoration->shape);
- sub_81291A4(data);
- sub_8129068(data->palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(data->decoration->tiles[0] * 8) + 7] >> 12);
- LoadSpritePalette(&gUnknown_085A72BC);
+ SetDecorSelectionBoxTiles(data);
+ CopyPalette(data->palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(data->decoration->tiles[0] * 8) + 7] >> 12);
+ LoadSpritePalette(&sSpritePal_PlaceDecoration);
return CreateSprite(&sDecorationSelectorSpriteTemplate, 0, 0, 0);
}
-u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor)
+static u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor)
{
struct SpriteSheet sheet;
struct CompressedSpritePalette palette;
@@ -2040,7 +2066,7 @@ u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor)
return spriteId;
}
-const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
+static const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
{
if (decor > NUM_DECORATIONS)
decor = DECOR_NONE;
@@ -2048,23 +2074,23 @@ const u32 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
return gDecorIconTable[decor][mode];
}
-u8 AddDecorationIconObjectFromObjectEvent(u16 tilesTag, u16 paletteTag, u8 decor)
+static u8 AddDecorationIconObjectFromObjectEvent(u16 tilesTag, u16 paletteTag, u8 decor)
{
u8 spriteId;
struct SpriteSheet sheet;
struct SpritePalette palette;
struct SpriteTemplate *template;
- sub_8129048(&sPlaceDecorationGraphicsDataBuffer);
+ ClearPlaceDecorationGraphicsDataBuffer(&sPlaceDecorationGraphicsDataBuffer);
sPlaceDecorationGraphicsDataBuffer.decoration = &gDecorations[decor];
if (sPlaceDecorationGraphicsDataBuffer.decoration->permission != DECORPERM_SPRITE)
{
- sub_81291E8(&sPlaceDecorationGraphicsDataBuffer);
+ SetDecorSelectionMetatiles(&sPlaceDecorationGraphicsDataBuffer);
SetDecorSelectionBoxOamAttributes(sPlaceDecorationGraphicsDataBuffer.decoration->shape);
- sub_81291A4(&sPlaceDecorationGraphicsDataBuffer);
- sub_8129068(sPlaceDecorationGraphicsDataBuffer.palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0] * 8) + 7] >> 12);
+ SetDecorSelectionBoxTiles(&sPlaceDecorationGraphicsDataBuffer);
+ CopyPalette(sPlaceDecorationGraphicsDataBuffer.palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0] * 8) + 7] >> 12);
sheet.data = sPlaceDecorationGraphicsDataBuffer.image;
- sheet.size = gUnknown_085A72F4[sPlaceDecorationGraphicsDataBuffer.decoration->shape] << 5;
+ sheet.size = sDecorShapeSizes[sPlaceDecorationGraphicsDataBuffer.decoration->shape] * TILE_SIZE_4BPP;
sheet.tag = tilesTag;
LoadSpriteSheet(&sheet);
palette.data = sPlaceDecorationGraphicsDataBuffer.palette;
@@ -2123,26 +2149,33 @@ u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u1
return spriteId;
}
-void sub_81296EC(u8 idx)
+static void ClearDecorationContextIndex(u8 idx)
{
- gDecorationContext.items[idx] = 0;
- gDecorationContext.pos[idx] = 0;
+ sDecorationContext.items[idx] = DECOR_NONE;
+ sDecorationContext.pos[idx] = 0;
}
-void sub_8129708(void)
+// Input
+// gSpecialVar_0x8004: Current iteration.
+//
+// Output
+// gSpecialVar_Result: TRUE if all iterations complete.
+// gSpecialVar_0x8005: flagId of decoration (if any).
+// gSpecialVar_0x8006: localId of decoration object event (if any).
+void PutAwayDecorationIteration(void)
{
u16 i;
gSpecialVar_0x8005 = 0;
- gSpecialVar_Result = 0;
+ gSpecialVar_Result = FALSE;
if (gSpecialVar_0x8004 == sCurDecorSelectedInRearrangement)
{
- gSpecialVar_Result = 1;
+ gSpecialVar_Result = TRUE;
}
- else if (gDecorations[gDecorationContext.items[sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx]].permission == DECORPERM_SPRITE)
+ else if (gDecorations[sDecorationContext.items[sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx]].permission == DECORPERM_SPRITE)
{
gSpecialVar_0x8005 = sDecorRearrangementDataBuffer[gSpecialVar_0x8004].flagId;
- sub_81296EC(sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx);
+ ClearDecorationContextIndex(sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx);
for (i = 0; i < gMapHeader.events->objectEventCount; i++)
{
if (gMapHeader.events->objectEvents[i].flagId == gSpecialVar_0x8005)
@@ -2169,7 +2202,7 @@ void GetObjectEventLocalIdByFlag(void)
}
}
-void sub_81297F8(void)
+static void ClearRearrangementNonSprites(void)
{
u8 i;
u8 y;
@@ -2180,9 +2213,9 @@ void sub_81297F8(void)
for (i = 0; i < sCurDecorSelectedInRearrangement; i++)
{
- perm = gDecorations[gDecorationContext.items[sDecorRearrangementDataBuffer[i].idx]].permission;
- posX = gDecorationContext.pos[sDecorRearrangementDataBuffer[i].idx] >> 4;
- posY = gDecorationContext.pos[sDecorRearrangementDataBuffer[i].idx] & 0x0F;
+ perm = gDecorations[sDecorationContext.items[sDecorRearrangementDataBuffer[i].idx]].permission;
+ posX = sDecorationContext.pos[sDecorRearrangementDataBuffer[i].idx] >> 4;
+ posY = sDecorationContext.pos[sDecorRearrangementDataBuffer[i].idx] & 0x0F;
if (perm != DECORPERM_SPRITE)
{
for (y = 0; y < sDecorRearrangementDataBuffer[i].height; y++)
@@ -2193,32 +2226,32 @@ void sub_81297F8(void)
}
}
- sub_81296EC(sDecorRearrangementDataBuffer[i].idx);
+ ClearDecorationContextIndex(sDecorRearrangementDataBuffer[i].idx);
}
}
}
-void sub_81298EC(u8 taskId)
+static void Task_PutAwayDecoration(u8 taskId)
{
- switch (gTasks[taskId].data[2])
+ switch (gTasks[taskId].tState)
{
case 0:
- sub_81297F8();
- gTasks[taskId].data[2] = 1;
+ ClearRearrangementNonSprites();
+ gTasks[taskId].tState = 1;
break;
case 1:
if (!gPaletteFade.active) {
DrawWholeMapView();
ScriptContext1_SetupScript(SecretBase_EventScript_PutAwayDecoration);
ClearDialogWindowAndFrame(0, 1);
- gTasks[taskId].data[2] = 2;
+ gTasks[taskId].tState = 2;
}
break;
case 2:
ScriptContext2_Enable();
IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId);
FadeInFromBlack();
- gTasks[taskId].data[2] = 3;
+ gTasks[taskId].tState = 3;
break;
case 3:
if (IsWeatherNotFadingIn() == TRUE)
@@ -2232,25 +2265,24 @@ void sub_81298EC(u8 taskId)
}
}
-
-bool8 sub_81299AC(u8 taskId)
+static bool8 HasDecorationsInUse(u8 taskId)
{
u16 i;
- for (i = 0; i < gDecorationContext.size; i++)
+ for (i = 0; i < sDecorationContext.size; i++)
{
- if (gDecorationContext.items[i] != DECOR_NONE)
+ if (sDecorationContext.items[i] != DECOR_NONE)
return TRUE;
}
return FALSE;
}
-void SetUpPuttingAwayDecorationPlayerAvatar(void)
+static void SetUpPuttingAwayDecorationPlayerAvatar(void)
{
GetPlayerFacingDirection();
sDecor_CameraSpriteObjectIdx1 = gSprites[gFieldCamera.spriteId].data[0];
- sub_812A39C();
- gFieldCamera.spriteId = CreateSprite(&gUnknown_085A7404, 120, 80, 0);
+ LoadPlayerSpritePalette();
+ gFieldCamera.spriteId = CreateSprite(&sPuttingAwayCursorSpriteTemplate, 120, 80, 0);
if (gSaveBlock2Ptr->playerGender == MALE)
sDecor_CameraSpriteObjectIdx2 = AddPseudoObjectEvent(OBJ_EVENT_GFX_BRENDAN_DECORATING, SpriteCallbackDummy, 136, 72, 0);
else
@@ -2262,72 +2294,72 @@ void SetUpPuttingAwayDecorationPlayerAvatar(void)
gSprites[sDecor_CameraSpriteObjectIdx1].oam.priority = 1;
}
-void sub_8129ABC(u8 taskId)
+static void Task_ContinuePuttingAwayDecorations(u8 taskId)
{
s16 *data;
data = gTasks[taskId].data;
- switch (data[2])
+ switch (tState)
{
case 0:
if (!gPaletteFade.active)
{
- sub_8127ACC(taskId);
- data[2] = 1;
- data[6] = 1;
- data[5] = 1;
+ SetInitialPositions(taskId);
+ tState = 1;
+ tDecorHeight = 1;
+ tDecorWidth = 1;
}
break;
case 1:
SetUpPuttingAwayDecorationPlayerAvatar();
FadeInFromBlack();
- data[2] = 2;
+ tState = 2;
break;
case 2:
if (IsWeatherNotFadingIn() == TRUE)
{
- data[12] = 1;
+ tDecorationItemsMenuCommand = DECOR_ITEMS_MENU_PUT_AWAY;
ContinuePuttingAwayDecorations(taskId);
}
break;
}
}
-void ContinuePuttingAwayDecorations(u8 taskId)
+static void ContinuePuttingAwayDecorations(u8 taskId)
{
ClearDialogWindowAndFrame(0, 1);
gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
- gSprites[sDecor_CameraSpriteObjectIdx1].callback = sub_812A36C;
+ gSprites[sDecor_CameraSpriteObjectIdx1].callback = InitializeCameraSprite1;
gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = 136;
gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = 72;
- gTasks[taskId].data[10] = 0;
- gTasks[taskId].func = sub_8128E18;
+ gTasks[taskId].tButton = 0;
+ gTasks[taskId].func = Task_SelectLocation;
}
-void sub_8129BCC(u8 taskId)
+static void AttemptPutAwayDecoration(u8 taskId)
{
- gTasks[taskId].data[10] = 0;
- sub_8128DE0();
- sub_8129C74(taskId);
+ gTasks[taskId].tButton = 0;
+ ResetCursorMovement();
+ AttemptPutAwayDecoration_(taskId);
}
-void sub_8129BF8(u8 taskId)
+static void AttemptCancelPutAwayDecoration(u8 taskId)
{
- gTasks[taskId].data[10] = 0;
- sub_8128DE0();
+ gTasks[taskId].tButton = 0;
+ ResetCursorMovement();
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy;
StringExpandPlaceholders(gStringVar4, gText_StopPuttingAwayDecorations);
DisplayItemMessageOnField(taskId, gStringVar4, StopPuttingAwayDecorationsPrompt);
}
-void sub_8129C74(u8 taskId)
+static void AttemptPutAwayDecoration_(u8 taskId)
{
s16 *data;
u8 behavior;
- sub_812A0E8(taskId);
+ AttemptMarkDecorUnderCursorForRemoval(taskId);
if (sCurDecorSelectedInRearrangement != 0)
{
StringExpandPlaceholders(gStringVar4, gText_ReturnDecorationToPC);
@@ -2336,7 +2368,7 @@ void sub_8129C74(u8 taskId)
else
{
data = gTasks[taskId].data;
- behavior = MapGridGetMetatileBehaviorAt(data[0], data[1]);
+ behavior = MapGridGetMetatileBehaviorAt(tCursorX, tCursorY);
if (MetatileBehavior_IsSecretBasePC(behavior) == TRUE || MetatileBehavior_IsPlayerRoomPCOn(behavior) == TRUE)
{
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
@@ -2352,13 +2384,13 @@ void sub_8129C74(u8 taskId)
}
}
-void ContinuePuttingAwayDecorationsPrompt(u8 taskId)
+static void ContinuePuttingAwayDecorationsPrompt(u8 taskId)
{
if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
ContinuePuttingAwayDecorations(taskId);
}
-void sub_8129D8C(u8 decor, struct DecorRearrangementDataBuffer *data)
+static void SetDecorRearrangementShape(u8 decor, struct DecorRearrangementDataBuffer *data)
{
if (gDecorations[decor].shape == DECORSHAPE_1x1)
{
@@ -2412,15 +2444,15 @@ void sub_8129D8C(u8 decor, struct DecorRearrangementDataBuffer *data)
}
}
-void sub_8129E0C(u8 x, u8 y)
+static void SetCameraSpritePosition(u8 x, u8 y)
{
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = TRUE;
gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy;
- gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = (x << 4) + 136;
- gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = (y << 4) + 72;
+ gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = x * 16 + 136;
+ gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = y * 16 + 72;
}
-bool8 sub_8129E74(u8 taskId, u8 idx, struct DecorRearrangementDataBuffer *data)
+static bool8 DecorationIsUnderCursor(u8 taskId, u8 idx, struct DecorRearrangementDataBuffer *data)
{
u8 x;
u8 y;
@@ -2428,32 +2460,32 @@ bool8 sub_8129E74(u8 taskId, u8 idx, struct DecorRearrangementDataBuffer *data)
u8 yOff;
u8 ht;
- x = gTasks[taskId].data[0] - 7;
- y = gTasks[taskId].data[1] - 7;
- xOff = gDecorationContext.pos[idx] >> 4;
- yOff = gDecorationContext.pos[idx] & 0x0F;
+ x = gTasks[taskId].tCursorX - 7;
+ y = gTasks[taskId].tCursorY - 7;
+ xOff = sDecorationContext.pos[idx] >> 4;
+ yOff = sDecorationContext.pos[idx] & 0x0F;
ht = data->height;
- if (gDecorationContext.items[idx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == 0x28C)
+ if (sDecorationContext.items[idx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == METATILE_SecretBase_SandOrnament_BrokenBase)
ht--;
if (x >= xOff && x < xOff + data->width && y > yOff - ht && y <= yOff)
{
- sub_8129E0C(data->width - (x - xOff + 1), yOff - y);
+ SetCameraSpritePosition(data->width - (x - xOff + 1), yOff - y);
return TRUE;
}
return FALSE;
}
-void sub_8129F20(void)
+static void SetDecorRearrangementFlagIdIfFlagUnset(void)
{
u8 xOff;
u8 yOff;
u16 i;
- xOff = gDecorationContext.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] >> 4;
- yOff = gDecorationContext.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] & 0x0F;
- for (i = 0; i < 0x40; i++)
+ xOff = sDecorationContext.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] >> 4;
+ yOff = sDecorationContext.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] & 0x0F;
+ for (i = 0; i < OBJECT_EVENT_TEMPLATES_COUNT; i++)
{
if (gSaveBlock1Ptr->objectEventTemplates[i].x == xOff && gSaveBlock1Ptr->objectEventTemplates[i].y == yOff && !FlagGet(gSaveBlock1Ptr->objectEventTemplates[i].flagId))
{
@@ -2463,21 +2495,21 @@ void sub_8129F20(void)
}
}
-bool8 sub_8129FC8(u8 taskId)
+static bool8 AttemptMarkSpriteDecorUnderCursorForRemoval(u8 taskId)
{
u16 i;
- for (i = 0; i < gDecorationContext.size; i++)
+ for (i = 0; i < sDecorationContext.size; i++)
{
- if (gDecorationContext.items[i] != 0)
+ if (sDecorationContext.items[i] != DECOR_NONE)
{
- if (gDecorations[gDecorationContext.items[i]].permission == DECORPERM_SPRITE)
+ if (gDecorations[sDecorationContext.items[i]].permission == DECORPERM_SPRITE)
{
- sub_8129D8C(gDecorationContext.items[i], sDecorRearrangementDataBuffer);
- if (sub_8129E74(taskId, i, sDecorRearrangementDataBuffer) == TRUE)
+ SetDecorRearrangementShape(sDecorationContext.items[i], sDecorRearrangementDataBuffer);
+ if (DecorationIsUnderCursor(taskId, i, sDecorRearrangementDataBuffer) == TRUE)
{
sDecorRearrangementDataBuffer->idx = i;
- sub_8129F20();
+ SetDecorRearrangementFlagIdIfFlagUnset();
sCurDecorSelectedInRearrangement = 1;
return TRUE;
}
@@ -2487,28 +2519,28 @@ bool8 sub_8129FC8(u8 taskId)
return FALSE;
}
-void sub_812A040(u8 left, u8 top, u8 right, u8 bottom)
+static void MarkSpriteDecorsInBoundsForRemoval(u8 left, u8 top, u8 right, u8 bottom)
{
u8 i;
u8 xOff;
u8 yOff;
- u8 decorIdx;
+ u8 decor;
- for (i = 0; i < gDecorationContext.size; i++)
+ for (i = 0; i < sDecorationContext.size; i++)
{
- decorIdx = gDecorationContext.items[i];
- xOff = gDecorationContext.pos[i] >> 4;
- yOff = gDecorationContext.pos[i] & 0x0F;
- if (decorIdx != 0 && gDecorations[decorIdx].permission == DECORPERM_SPRITE && left <= xOff && top <= yOff && right >= xOff && bottom >= yOff)
+ decor = sDecorationContext.items[i];
+ xOff = sDecorationContext.pos[i] >> 4;
+ yOff = sDecorationContext.pos[i] & 0x0F;
+ if (decor != DECOR_NONE && gDecorations[decor].permission == DECORPERM_SPRITE && left <= xOff && top <= yOff && right >= xOff && bottom >= yOff)
{
sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx = i;
- sub_8129F20();
+ SetDecorRearrangementFlagIdIfFlagUnset();
sCurDecorSelectedInRearrangement++;
}
}
}
-void sub_812A0E8(u8 taskId)
+static void AttemptMarkDecorUnderCursorForRemoval(u8 taskId)
{
u8 i;
u8 xOff;
@@ -2517,15 +2549,16 @@ void sub_812A0E8(u8 taskId)
u32 var2;
sCurDecorSelectedInRearrangement = 0;
- if (sub_8129FC8(taskId) != TRUE)
+ if (AttemptMarkSpriteDecorUnderCursorForRemoval(taskId) != TRUE)
{
- for (i = 0; i < gDecorationContext.size; i++)
+ // Not a sprite.
+ for (i = 0; i < sDecorationContext.size; i++)
{
- var1 = gDecorationContext.items[i];
+ var1 = sDecorationContext.items[i];
if (var1 != DECOR_NONE)
{
- sub_8129D8C(var1, &sDecorRearrangementDataBuffer[0]);
- if (sub_8129E74(taskId, i, &sDecorRearrangementDataBuffer[0]) == TRUE)
+ SetDecorRearrangementShape(var1, &sDecorRearrangementDataBuffer[0]);
+ if (DecorationIsUnderCursor(taskId, i, &sDecorRearrangementDataBuffer[0]) == TRUE)
{
sDecorRearrangementDataBuffer[0].idx = i;
sCurDecorSelectedInRearrangement++;
@@ -2535,84 +2568,85 @@ void sub_812A0E8(u8 taskId)
}
if (sCurDecorSelectedInRearrangement != 0)
{
- xOff = gDecorationContext.pos[sDecorRearrangementDataBuffer[0].idx] >> 4;
- yOff = gDecorationContext.pos[sDecorRearrangementDataBuffer[0].idx] & 0x0F;
+ xOff = sDecorationContext.pos[sDecorRearrangementDataBuffer[0].idx] >> 4;
+ yOff = sDecorationContext.pos[sDecorRearrangementDataBuffer[0].idx] & 0x0F;
var1 = yOff - sDecorRearrangementDataBuffer[0].height + 1;
var2 = sDecorRearrangementDataBuffer[0].width + xOff - 1;
- sub_812A040(xOff, var1, var2, yOff);
+ // Remove any dolls/cushions on this decoration.
+ MarkSpriteDecorsInBoundsForRemoval(xOff, var1, var2, yOff);
}
}
}
-void ReturnDecorationPrompt(u8 taskId)
+static void ReturnDecorationPrompt(u8 taskId)
{
DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &sReturnDecorationYesNoFunctions);
}
-void PutAwayDecoration(u8 taskId)
+static void PutAwayDecoration(u8 taskId)
{
FadeScreen(FADE_TO_BLACK, 0);
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].func = sub_81298EC;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].func = Task_PutAwayDecoration;
}
-void StopPuttingAwayDecorationsPrompt(u8 taskId)
+static void StopPuttingAwayDecorationsPrompt(u8 taskId)
{
DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &sStopPuttingAwayDecorationsYesNoFunctions);
}
-void StopPuttingAwayDecorations(u8 taskId)
+static void StopPuttingAwayDecorations(u8 taskId)
{
ClearDialogWindowAndFrame(0, 0);
- sub_812A22C(taskId);
+ StopPuttingAwayDecorations_(taskId);
}
-void sub_812A22C(u8 taskId)
+static void StopPuttingAwayDecorations_(u8 taskId)
{
FadeScreen(FADE_TO_BLACK, 0);
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].func = sub_812A25C;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].func = Task_StopPuttingAwayDecorations;
}
-void sub_812A25C(u8 taskId)
+static void Task_StopPuttingAwayDecorations(u8 taskId)
{
- switch (gTasks[taskId].data[2])
+ switch (gTasks[taskId].tState)
{
case 0:
if (!gPaletteFade.active)
{
- sub_8127B04(taskId);
- gTasks[taskId].data[2] = 1;
+ WarpToInitialPosition(taskId);
+ gTasks[taskId].tState = 1;
}
break;
case 1:
- sub_812A3C8();
- gFieldCallback = sub_812A334;
+ FreePlayerSpritePalette();
+ gFieldCallback = FieldCB_StopPuttingAwayDecorations;
SetMainCallback2(CB2_ReturnToField);
DestroyTask(taskId);
break;
}
}
-void sub_812A2C4(u8 taskId)
+static void Task_ReinitializeDecorationMenuHandler(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[2])
+ switch (tState)
{
case 0:
HideSecretBaseDecorationSprites();
- data[2]++;
+ tState++;
break;
case 1:
ScriptContext1_SetupScript(SecretBase_EventScript_InitDecorations);
- data[2]++;
+ tState++;
break;
case 2:
ScriptContext2_Enable();
- data[2]++;
+ tState++;
break;
case 3:
if (IsWeatherNotFadingIn() == TRUE)
@@ -2621,18 +2655,18 @@ void sub_812A2C4(u8 taskId)
}
}
-void sub_812A334(void)
+static void FieldCB_StopPuttingAwayDecorations(void)
{
u8 taskId;
FadeInFromBlack();
DrawDialogueFrame(0, 1);
InitDecorationActionsWindow();
- taskId = CreateTask(sub_812A2C4, 8);
- gTasks[taskId].data[2] = 0;
+ taskId = CreateTask(Task_ReinitializeDecorationMenuHandler, 8);
+ gTasks[taskId].tState = 0;
}
-void sub_812A36C(struct Sprite *sprite)
+static void InitializeCameraSprite1(struct Sprite *sprite)
{
sprite->data[0]++;
sprite->data[0] &= 0x1F;
@@ -2642,20 +2676,20 @@ void sub_812A36C(struct Sprite *sprite)
sprite->invisible = FALSE;
}
-void sub_812A39C(void)
+static void LoadPlayerSpritePalette(void)
{
if (gSaveBlock2Ptr->playerGender == MALE)
- LoadSpritePalette(&gUnknown_085A73D8);
+ LoadSpritePalette(&sSpritePal_PuttingAwayCursorBrendan);
else
- LoadSpritePalette(&gUnknown_085A73E0);
+ LoadSpritePalette(&sSpritePal_PuttingAwayCursorMay);
}
-void sub_812A3C8(void)
+static void FreePlayerSpritePalette(void)
{
FreeSpritePaletteByTag(PLACE_DECORATION_PLAYER_TAG);
}
-void sub_812A3D4(u8 taskId)
+static void DecorationItemsMenuAction_AttemptToss(u8 taskId)
{
if (IsSelectedDecorInThePC() == TRUE)
{
@@ -2666,23 +2700,22 @@ void sub_812A3D4(u8 taskId)
else
{
StringExpandPlaceholders(gStringVar4, gText_CantThrowAwayInUse);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
+ DisplayItemMessageOnField(taskId, gStringVar4, ReturnToDecorationItemsAfterInvalidSelection);
}
}
-void TossDecorationPrompt(u8 taskId)
+static void TossDecorationPrompt(u8 taskId)
{
DisplayYesNoMenuDefaultYes();
DoYesNoFuncWithChoice(taskId, &sTossDecorationYesNoFunctions);
}
-void TossDecoration(u8 taskId)
+static void TossDecoration(u8 taskId)
{
gCurDecorationItems[gCurDecorationIndex] = DECOR_NONE;
sNumOwnedDecorationsInCurCategory = GetNumOwnedDecorationsInCategory(sCurDecorationCategory);
CondenseDecorationsInCategory(sCurDecorationCategory);
IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId);
StringExpandPlaceholders(gStringVar4, gText_DecorationThrownAway);
- DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
+ DisplayItemMessageOnField(taskId, gStringVar4, ReturnToDecorationItemsAfterInvalidSelection);
}
-
diff --git a/src/decoration_inventory.c b/src/decoration_inventory.c
index 80646c69c..af1071b1b 100644
--- a/src/decoration_inventory.c
+++ b/src/decoration_inventory.c
@@ -1,71 +1,51 @@
-
-// Includes
#include "global.h"
#include "constants/decorations.h"
#include "decoration.h"
#include "decoration_inventory.h"
-// Static type declarations
-
-// Static RAM declarations
-
-EWRAM_DATA struct DecorationInventory gDecorationInventories[8] = {};
-
-// Static ROM declarations
-
-// .rodata
-
-// .text
+EWRAM_DATA struct DecorationInventory gDecorationInventories[DECORCAT_COUNT] = {};
#define SET_DECOR_INV(i, ptr) {\
gDecorationInventories[i].items = ptr;\
- gDecorationInventories[i].size = sizeof(ptr);\
+ gDecorationInventories[i].size = ARRAY_COUNT(ptr);\
}
void SetDecorationInventoriesPointers(void)
{
- SET_DECOR_INV(0, gSaveBlock1Ptr->decorDesk);
- SET_DECOR_INV(1, gSaveBlock1Ptr->decorChair);
- SET_DECOR_INV(2, gSaveBlock1Ptr->decorPlant);
- SET_DECOR_INV(3, gSaveBlock1Ptr->decorOrnament);
- SET_DECOR_INV(4, gSaveBlock1Ptr->decorMat);
- SET_DECOR_INV(5, gSaveBlock1Ptr->decorPoster);
- SET_DECOR_INV(6, gSaveBlock1Ptr->decorDoll);
- SET_DECOR_INV(7, gSaveBlock1Ptr->decorCushion);
+ SET_DECOR_INV(DECORCAT_DESK, gSaveBlock1Ptr->decorationDesks);
+ SET_DECOR_INV(DECORCAT_CHAIR, gSaveBlock1Ptr->decorationChairs);
+ SET_DECOR_INV(DECORCAT_PLANT, gSaveBlock1Ptr->decorationPlants);
+ SET_DECOR_INV(DECORCAT_ORNAMENT, gSaveBlock1Ptr->decorationOrnaments);
+ SET_DECOR_INV(DECORCAT_MAT, gSaveBlock1Ptr->decorationMats);
+ SET_DECOR_INV(DECORCAT_POSTER, gSaveBlock1Ptr->decorationPosters);
+ SET_DECOR_INV(DECORCAT_DOLL, gSaveBlock1Ptr->decorationDolls);
+ SET_DECOR_INV(DECORCAT_CUSHION, gSaveBlock1Ptr->decorationCushions);
InitDecorationContextItems();
}
-static void ClearDecorationInventory(u8 idx)
+static void ClearDecorationInventory(u8 category)
{
u8 i;
-
- for (i = 0; i < gDecorationInventories[idx].size; i ++)
- {
- gDecorationInventories[idx].items[i] = DECOR_NONE;
- }
+ for (i = 0; i < gDecorationInventories[category].size; i ++)
+ gDecorationInventories[category].items[i] = DECOR_NONE;
}
void ClearDecorationInventories(void)
{
- u8 idx;
-
- for (idx = 0; idx < 8; idx ++)
- {
- ClearDecorationInventory(idx);
- }
+ u8 category;
+ for (category = 0; category < 8; category++)
+ ClearDecorationInventory(category);
}
-s8 GetFirstEmptyDecorSlot(u8 idx)
+s8 GetFirstEmptyDecorSlot(u8 category)
{
s8 i;
-
- for (i = 0; i < (s8)gDecorationInventories[idx].size; i ++)
+ for (i = 0; i < (s8)gDecorationInventories[category].size; i++)
{
- if (gDecorationInventories[idx].items[i] == DECOR_NONE)
- {
+ if (gDecorationInventories[category].items[i] == DECOR_NONE)
return i;
- }
}
+
return -1;
}
@@ -78,10 +58,9 @@ bool8 CheckHasDecoration(u8 decor)
for (i = 0; i < gDecorationInventories[category].size; i ++)
{
if (gDecorationInventories[category].items[i] == decor)
- {
return TRUE;
- }
}
+
return FALSE;
}
@@ -91,15 +70,11 @@ bool8 DecorationAdd(u8 decor)
s8 idx;
if (decor == DECOR_NONE)
- {
return FALSE;
- }
category = gDecorations[decor].category;
idx = GetFirstEmptyDecorSlot(category);
if (idx == -1)
- {
return FALSE;
- }
gDecorationInventories[category].items[idx] = decor;
return TRUE;
}
@@ -107,13 +82,9 @@ bool8 DecorationAdd(u8 decor)
bool8 DecorationCheckSpace(u8 decor)
{
if (decor == DECOR_NONE)
- {
return FALSE;
- }
if (GetFirstEmptyDecorSlot(gDecorations[decor].category) == -1)
- {
return FALSE;
- }
return TRUE;
}
@@ -124,9 +95,8 @@ s8 DecorationRemove(u8 decor)
i = 0;
if (decor == DECOR_NONE)
- {
return 0;
- }
+
for (i = 0; i < gDecorationInventories[gDecorations[decor].category].size; i ++)
{
category = gDecorations[decor].category;
@@ -137,6 +107,7 @@ s8 DecorationRemove(u8 decor)
return 1;
}
}
+
return 0;
}
@@ -160,19 +131,18 @@ void CondenseDecorationsInCategory(u8 category)
}
}
-u8 GetNumOwnedDecorationsInCategory(u8 idx)
+u8 GetNumOwnedDecorationsInCategory(u8 category)
{
u8 i;
u8 ct;
ct = 0;
- for (i = 0; i < gDecorationInventories[idx].size; i ++)
+ for (i = 0; i < gDecorationInventories[category].size; i++)
{
- if (gDecorationInventories[idx].items[i] != DECOR_NONE)
- {
- ct ++;
- }
+ if (gDecorationInventories[category].items[i] != DECOR_NONE)
+ ct++;
}
+
return ct;
}
diff --git a/src/field_region_map.c b/src/field_region_map.c
index 184c49b40..57f95f93e 100644
--- a/src/field_region_map.c
+++ b/src/field_region_map.c
@@ -13,13 +13,23 @@
#include "window.h"
#include "constants/rgb.h"
+/*
+ * This is the type of map shown when interacting with the metatiles for
+ * a wall-mounted Region Map (on the wall of the Pokemon Centers near the PC)
+ * It does not zoom, and pressing A or B closes the map
+ *
+ * For the region map in the pokenav, see pokenav_region_map.c
+ * For the region map in the pokedex, see pokdex_area_screen.c/pokedex_area_region_map.c
+ * For the fly map, and utility functions all of the maps use, see region_map.c
+ */
+
// Static type declarations
// Static RAM declarations
static EWRAM_DATA struct {
MainCallback callback;
- u32 filler_004;
+ u32 unused;
struct RegionMap regionMap;
u16 state;
} *sFieldRegionMapHandler = NULL;
@@ -34,7 +44,7 @@ static void PrintRegionMapSecName(void);
// .rodata
-static const struct BgTemplate gUnknown_085E5068[] = {
+static const struct BgTemplate sFieldRegionMapBgTemplates[] = {
{
.bg = 0,
.charBaseIndex = 0,
@@ -54,7 +64,7 @@ static const struct BgTemplate gUnknown_085E5068[] = {
}
};
-static const struct WindowTemplate gUnknown_085E5070[] =
+static const struct WindowTemplate sFieldRegionMapWindowTemplates[] =
{
{
.bg = 0,
@@ -102,8 +112,8 @@ static void MCB2_InitRegionMapRegisters(void)
ResetSpriteData();
FreeAllSpritePalettes();
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(1, gUnknown_085E5068, 2);
- InitWindows(gUnknown_085E5070);
+ InitBgsFromTemplates(1, sFieldRegionMapBgTemplates, ARRAY_COUNT(sFieldRegionMapBgTemplates));
+ InitWindows(sFieldRegionMapWindowTemplates);
DeactivateAllTextPrinters();
LoadUserWindowBorderGfx(0, 0x27, 0xd0);
clear_scheduled_bg_copies_to_vram();
@@ -134,7 +144,7 @@ static void FieldUpdateRegionMap(void)
switch (sFieldRegionMapHandler->state)
{
case 0:
- InitRegionMap(&sFieldRegionMapHandler->regionMap, 0);
+ InitRegionMap(&sFieldRegionMapHandler->regionMap, FALSE);
CreateRegionMapPlayerIcon(0, 0);
CreateRegionMapCursor(1, 1);
sFieldRegionMapHandler->state++;
@@ -162,13 +172,13 @@ static void FieldUpdateRegionMap(void)
}
break;
case 4:
- switch (sub_81230AC())
+ switch (DoRegionMapInputCallback())
{
- case INPUT_EVENT_MOVE_END:
+ case MAP_INPUT_MOVE_END:
PrintRegionMapSecName();
break;
- case INPUT_EVENT_A_BUTTON:
- case INPUT_EVENT_B_BUTTON:
+ case MAP_INPUT_A_BUTTON:
+ case MAP_INPUT_B_BUTTON:
sFieldRegionMapHandler->state++;
break;
}
@@ -184,8 +194,7 @@ static void FieldUpdateRegionMap(void)
SetMainCallback2(sFieldRegionMapHandler->callback);
if (sFieldRegionMapHandler != NULL)
{
- free(sFieldRegionMapHandler);
- sFieldRegionMapHandler = NULL;
+ FREE_AND_SET_NULL(sFieldRegionMapHandler);
}
FreeAllWindowBuffers();
}
@@ -195,7 +204,7 @@ static void FieldUpdateRegionMap(void)
static void PrintRegionMapSecName(void)
{
- if (sFieldRegionMapHandler->regionMap.iconDrawType != MAPSECTYPE_NONE)
+ if (sFieldRegionMapHandler->regionMap.mapSecType != MAPSECTYPE_NONE)
{
FillWindowPixelBuffer(0, PIXEL_FILL(1));
AddTextPrinterParameterized(0, 1, sFieldRegionMapHandler->regionMap.mapSecName, 0, 1, 0, NULL);
diff --git a/src/field_specials.c b/src/field_specials.c
index 8699bce78..9f1f12a47 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -3550,21 +3550,21 @@ void CreateAbnormalWeatherEvent(void)
if (FlagGet(FLAG_DEFEATED_KYOGRE) == TRUE)
{
- VarSet(VAR_ABNORMAL_WEATHER_LOCATION, (randomValue % ABNORMAL_WEATHER_COUNT_PER_LEGENDARY) + ABNORMAL_WEATHER_GROUDON_LOCATIONS_START);
+ VarSet(VAR_ABNORMAL_WEATHER_LOCATION, (randomValue % TERRA_CAVE_LOCATIONS) + TERRA_CAVE_LOCATIONS_START);
}
else if (FlagGet(FLAG_DEFEATED_GROUDON) == TRUE)
{
- VarSet(VAR_ABNORMAL_WEATHER_LOCATION, (randomValue % ABNORMAL_WEATHER_COUNT_PER_LEGENDARY) + ABNORMAL_WEATHER_KYOGRE_LOCATIONS_START);
+ VarSet(VAR_ABNORMAL_WEATHER_LOCATION, (randomValue % MARINE_CAVE_LOCATIONS) + MARINE_CAVE_LOCATIONS_START);
}
else if ((randomValue & 1) == 0)
{
randomValue = Random();
- VarSet(VAR_ABNORMAL_WEATHER_LOCATION, (randomValue % ABNORMAL_WEATHER_COUNT_PER_LEGENDARY) + ABNORMAL_WEATHER_GROUDON_LOCATIONS_START);
+ VarSet(VAR_ABNORMAL_WEATHER_LOCATION, (randomValue % TERRA_CAVE_LOCATIONS) + TERRA_CAVE_LOCATIONS_START);
}
else
{
randomValue = Random();
- VarSet(VAR_ABNORMAL_WEATHER_LOCATION, (randomValue % ABNORMAL_WEATHER_COUNT_PER_LEGENDARY) + ABNORMAL_WEATHER_KYOGRE_LOCATIONS_START);
+ VarSet(VAR_ABNORMAL_WEATHER_LOCATION, (randomValue % MARINE_CAVE_LOCATIONS) + MARINE_CAVE_LOCATIONS_START);
}
}
@@ -3595,14 +3595,10 @@ bool32 GetAbnormalWeatherMapNameAndType(void)
GetMapName(gStringVar1, sAbnormalWeatherMapNumbers[abnormalWeather - 1], 0);
- if (abnormalWeather < ABNORMAL_WEATHER_KYOGRE_LOCATIONS_START)
- {
+ if (abnormalWeather < MARINE_CAVE_LOCATIONS_START)
return FALSE;
- }
else
- {
return TRUE;
- }
}
bool8 AbnormalWeatherHasExpired(void)
diff --git a/src/graphics.c b/src/graphics.c
index 8a39f177e..9548d37c8 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -1348,8 +1348,8 @@ const u16 gPokenavMessageBox_Pal[] = INCBIN_U16("graphics/pokenav/message.gbapal
const u32 gPokenavMessageBox_Gfx[] = INCBIN_U32("graphics/pokenav/message.4bpp.lz");
const u32 gPokenavMessageBox_Tilemap[] = INCBIN_U32("graphics/pokenav/message.bin.lz");
-const u16 gHoennMapZoomIcons_Pal[] = INCBIN_U16("graphics/pokenav/zoom_tiles.gbapal");
-const u32 gHoennMapZoomIcons_Gfx[] = INCBIN_U32("graphics/pokenav/zoom.4bpp.lz");
+const u16 gRegionMapCityZoomTiles_Pal[] = INCBIN_U16("graphics/pokenav/city_zoom_tiles.gbapal");
+const u32 gRegionMapCityZoomText_Gfx[] = INCBIN_U32("graphics/pokenav/city_zoom_text.4bpp.lz");
const u16 gPokenavConditionCancel_Pal[] = INCBIN_U16("graphics/pokenav/cancel.gbapal");
const u8 gPokenavConditionCancel_Gfx[] = INCBIN_U8("graphics/pokenav/cancel.4bpp");
diff --git a/src/item_menu.c b/src/item_menu.c
index 9621ff1a3..fe381516c 100755
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -107,13 +107,13 @@ void Task_ActuallyToss(u8);
void ItemMenu_Cancel(u8);
void sub_81AD350(u8);
void BagMenu_PrintItemCantBeHeld(u8);
-void bag_menu_AddMoney_window(void);
-void sub_81AD680(u8);
+void DisplayCurrentMoneyWindow(void);
+void DisplaySellItemPriceAndConfirm(u8);
void sub_81AD730(u8);
void sub_81AD6E4(u8);
void bag_menu_remove_money_window(void);
void bag_menu_RemoveBagItem_message_window(u8);
-void sub_81AD794(u8);
+void Task_BuyHowManyDialogueHandleInput(u8);
void sub_81AD8C8(u8);
void sub_81AD9C0(u8);
void sub_81ADB14(u8);
@@ -257,7 +257,7 @@ const struct YesNoFuncTable sYesNoSellItemFunctions = {BagMenu_ConfirmSell, BagM
const struct ScrollArrowsTemplate gBagScrollArrowsTemplate = {SCROLL_ARROW_LEFT, 0x1C, 16, SCROLL_ARROW_RIGHT, 100, 16, -1, -1, 0x6F, 0x6F, 0};
-const u8 gUnknown_086140A4[] = INCBIN_U8("graphics/interface/select_button.4bpp");
+const u8 gRegisteredSelect_Gfx[] = INCBIN_U8("graphics/interface/select_button.4bpp");
static const u8 sFontColorTable[][3] = {
// bgColor, textColor, shadowColor
@@ -556,6 +556,8 @@ void vblank_cb_bag_menu(void)
TransferPlttBuffer();
}
+#define tItemCount data[8]
+
void CB2_Bag(void)
{
while(sub_81221EC() != TRUE && SetupBagMenu() != TRUE && sub_81221AC() != TRUE) {};
@@ -636,7 +638,7 @@ bool8 SetupBagMenu(void)
taskId = sub_81AB1F0(gBagPositionStruct.location);
gTasks[taskId].data[0] = ListMenuInit(&gMultiuseListMenuTemplate, gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket], gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]);
gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[8] = 0;
+ gTasks[taskId].tItemCount = 0;
gMain.state++;
break;
case 15:
@@ -867,7 +869,7 @@ void PrintItemQuantityPlusGFX(u8 rboxId, s32 item_index_in_pocket, u8 a)
else
{
if (gSaveBlock1Ptr->registeredItem && gSaveBlock1Ptr->registeredItem == itemId)
- BlitBitmapToWindow(rboxId, gUnknown_086140A4, 0x60, a - 1, 0x18, 16);
+ BlitBitmapToWindow(rboxId, gRegisteredSelect_Gfx, 0x60, a - 1, 0x18, 16);
}
}
}
@@ -1662,7 +1664,7 @@ void ItemMenu_Toss(u8 taskId)
s16* data = gTasks[taskId].data;
BagMenu_RemoveSomeWindow();
- data[8] = 1;
+ tItemCount = 1;
if (data[2] == 1)
{
BagMenu_TossItems(taskId);
@@ -1683,7 +1685,7 @@ void BagMenu_TossItems(u8 taskId)
s16* data = gTasks[taskId].data;
CopyItemName(gSpecialVar_ItemId, gStringVar1);
- ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, 3);
StringExpandPlaceholders(gStringVar4, gText_ConfirmTossItems);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
@@ -1703,9 +1705,9 @@ void Task_ChooseHowManyToToss(u8 taskId)
{
s16* data = gTasks[taskId].data;
- if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
+ if (AdjustQuantityAccordingToDPadInput(&tItemCount, data[2]) == TRUE)
{
- PrintItemDepositAmount(gBagMenu->unk817, data[8]);
+ PrintItemDepositAmount(gBagMenu->unk817, tItemCount);
}
else if (gMain.newKeys & A_BUTTON)
{
@@ -1726,7 +1728,7 @@ void BagMenu_ConfirmToss(u8 taskId)
s16* data = gTasks[taskId].data;
CopyItemName(gSpecialVar_ItemId, gStringVar1);
- ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, 3);
StringExpandPlaceholders(gStringVar4, gText_ThrewAwayVar2Var1s);
FillWindowPixelBuffer(1, PIXEL_FILL(0));
BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
@@ -1742,7 +1744,7 @@ void Task_ActuallyToss(u8 taskId)
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
PlaySE(SE_SELECT);
- RemoveBagItem(gSpecialVar_ItemId, data[8]);
+ RemoveBagItem(gSpecialVar_ItemId, tItemCount);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
UpdatePocketItemList(gBagPositionStruct.pocket);
SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
@@ -1924,11 +1926,11 @@ void DisplaySellItemAskString(u8 taskId)
}
else
{
- data[8] = 1;
+ tItemCount = 1;
if (data[2] == 1)
{
- bag_menu_AddMoney_window();
- sub_81AD680(taskId);
+ DisplayCurrentMoneyWindow();
+ DisplaySellItemPriceAndConfirm(taskId);
}
else
{
@@ -1939,11 +1941,11 @@ void DisplaySellItemAskString(u8 taskId)
}
}
-void sub_81AD680(u8 taskId)
+void DisplaySellItemPriceAndConfirm(u8 taskId)
{
s16* data = gTasks[taskId].data;
- ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
+ ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, 6);
StringExpandPlaceholders(gStringVar4, gText_ICanPayVar1);
DisplayItemMessage(taskId, 1, gStringVar4, sub_81AD6E4);
}
@@ -1968,24 +1970,24 @@ void sub_81AD730(u8 taskId)
s16* data = gTasks[taskId].data;
u8 windowId = BagMenu_AddWindow(8);
- PrintItemSoldAmount(windowId, 1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]);
- bag_menu_AddMoney_window();
- gTasks[taskId].func = sub_81AD794;
+ PrintItemSoldAmount(windowId, 1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount);
+ DisplayCurrentMoneyWindow();
+ gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput;
}
-void sub_81AD794(u8 taskId)
+void Task_BuyHowManyDialogueHandleInput(u8 taskId)
{
s16* data = gTasks[taskId].data;
- if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
+ if (AdjustQuantityAccordingToDPadInput(&tItemCount, data[2]) == TRUE)
{
- PrintItemSoldAmount(gBagMenu->unk818, data[8], (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]);
+ PrintItemSoldAmount(gBagMenu->unk818, tItemCount, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount);
}
else if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
BagMenu_RemoveWindow(8);
- sub_81AD680(taskId);
+ DisplaySellItemPriceAndConfirm(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
@@ -2003,7 +2005,7 @@ void BagMenu_ConfirmSell(u8 taskId)
s16* data = gTasks[taskId].data;
CopyItemName(gSpecialVar_ItemId, gStringVar2);
- ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8], STR_CONV_MODE_LEFT_ALIGN, 6);
+ ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, 6);
StringExpandPlaceholders(gStringVar4, gText_TurnedOverVar1ForVar2);
DisplayItemMessage(taskId, 1, gStringVar4, sub_81AD8C8);
}
@@ -2015,8 +2017,8 @@ void sub_81AD8C8(u8 taskId)
u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket];
PlaySE(SE_REGI);
- RemoveBagItem(gSpecialVar_ItemId, data[8]);
- AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * data[8]);
+ RemoveBagItem(gSpecialVar_ItemId, tItemCount);
+ AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount);
DestroyListMenuTask(data[0], scrollPos, cursorPos);
UpdatePocketItemList(gBagPositionStruct.pocket);
SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket);
@@ -2041,7 +2043,7 @@ void DisplayDepositItemAskString(u8 taskId)
{
s16* data = gTasks[taskId].data;
- data[8] = 1;
+ tItemCount = 1;
if (data[2] == 1)
{
sub_81ADB14(taskId);
@@ -2061,9 +2063,9 @@ void sub_81ADA7C(u8 taskId)
{
s16* data = gTasks[taskId].data;
- if (AdjustQuantityAccordingToDPadInput(&data[8], data[2]) == TRUE)
+ if (AdjustQuantityAccordingToDPadInput(&tItemCount, data[2]) == TRUE)
{
- PrintItemDepositAmount(gBagMenu->unk817, data[8]);
+ PrintItemDepositAmount(gBagMenu->unk817, tItemCount);
}
else if (gMain.newKeys & A_BUTTON)
{
@@ -2091,10 +2093,10 @@ void sub_81ADB14(u8 taskId)
BagMenu_Print(1, 1, gText_CantStoreImportantItems, 3, 1, 0, 0, 0, 0);
gTasks[taskId].func = sub_81ADC0C;
}
- else if (AddPCItem(gSpecialVar_ItemId, data[8]) == TRUE)
+ else if (AddPCItem(gSpecialVar_ItemId, tItemCount) == TRUE)
{
CopyItemName(gSpecialVar_ItemId, gStringVar1);
- ConvertIntToDecimalStringN(gStringVar2, data[8], STR_CONV_MODE_LEFT_ALIGN, 3);
+ ConvertIntToDecimalStringN(gStringVar2, tItemCount, STR_CONV_MODE_LEFT_ALIGN, 3);
StringExpandPlaceholders(gStringVar4, gText_DepositedVar2Var1s);
BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0);
gTasks[taskId].func = Task_ActuallyToss;
@@ -2201,6 +2203,8 @@ void Task_WallyTutorialBagMenu(u8 taskId)
}
}
+#undef tItemCount
+
void unknown_ItemMenu_Show(u8 taskId)
{
gSpecialVar_0x8005 = gSpecialVar_ItemId;
@@ -2302,6 +2306,7 @@ void BagMenu_Print(u8 windowId, u8 fontId, const u8 *str, u8 left, u8 top, u8 le
AddTextPrinterParameterized4(windowId, fontId, left, top, letterSpacing, lineSpacing, sFontColorTable[h], speed, str);
}
+//Unused
u8 sub_81AE124(u8 a)
{
return gBagMenu->windowPointers[a];
@@ -2359,7 +2364,7 @@ void BagMenu_YesNo(u8 a, u8 b, const struct YesNoFuncTable *funcTable)
CreateYesNoMenuWithCallbacks(a, &gUnknown_086141AC[b], 1, 0, 2, 1, 14, funcTable);
}
-void bag_menu_AddMoney_window(void)
+void DisplayCurrentMoneyWindow(void)
{
u8 windowId = BagMenu_AddWindow(9);
PrintMoneyAmountInMoneyBoxWithBorder(windowId, 1, 14, GetMoney(&gSaveBlock1Ptr->money));
diff --git a/src/map_name_popup.c b/src/map_name_popup.c
index 2010cea59..32da4d0b4 100644
--- a/src/map_name_popup.c
+++ b/src/map_name_popup.c
@@ -161,7 +161,7 @@ static const u8 gRegionMapSectionId_To_PopUpThemeIdMapping[] =
[MAPSEC_AQUA_HIDEOUT - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_MAGMA_HIDEOUT - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_MIRAGE_TOWER - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
- [MAPSEC_BIRTH_ISLAND_2 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_WOOD,
+ [MAPSEC_BIRTH_ISLAND - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_WOOD,
[MAPSEC_FARAWAY_ISLAND - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_WOOD,
[MAPSEC_ARTISAN_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_MARINE_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
@@ -171,8 +171,8 @@ static const u8 gRegionMapSectionId_To_PopUpThemeIdMapping[] =
[MAPSEC_UNDERWATER_UNK1 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
[MAPSEC_UNDERWATER_129 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE2,
[MAPSEC_DESERT_UNDERPASS - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
- [MAPSEC_ALTERING_CAVE_2 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
- [MAPSEC_NAVEL_ROCK2 - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
+ [MAPSEC_ALTERING_CAVE - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
+ [MAPSEC_NAVEL_ROCK - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_STONE,
[MAPSEC_TRAINER_HILL - KANTO_MAPSEC_COUNT] = MAPPOPUP_THEME_MARBLE
};
diff --git a/src/party_menu.c b/src/party_menu.c
index 8e1a735ab..0a119f03d 100755
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -3680,7 +3680,7 @@ static void CursorCb_FieldMove(u8 taskId)
sPartyMenuInternal->data[0] = fieldMove;
break;
case FIELD_MOVE_FLY:
- gPartyMenu.exitCallback = MCB2_FlyMap;
+ gPartyMenu.exitCallback = CB2_OpenFlyMap;
Task_ClosePartyMenu(taskId);
break;
default:
diff --git a/src/pokedex_area_region_map.c b/src/pokedex_area_region_map.c
new file mode 100644
index 000000000..dfea9ea44
--- /dev/null
+++ b/src/pokedex_area_region_map.c
@@ -0,0 +1,66 @@
+#include "global.h"
+#include "main.h"
+#include "menu.h"
+#include "bg.h"
+#include "malloc.h"
+#include "palette.h"
+#include "pokedex_area_region_map.h"
+
+static EWRAM_DATA u8 *sPokedexAreaMapBgNum = NULL;
+
+static const u16 sPokedexAreaMap_Pal[] = INCBIN_U16("graphics/interface/region_map.gbapal");
+static const u32 sPokedexAreaMap_Gfx[] = INCBIN_U32("graphics/interface/region_map.8bpp.lz");
+static const u32 sPokedexAreaMap_Tilemap[] = INCBIN_U32("graphics/interface/region_map.bin.lz");
+static const u32 sPokedexAreaMapAffine_Gfx[] = INCBIN_U32("graphics/interface/region_map_affine.8bpp.lz");
+static const u32 sPokedexAreaMapAffine_Tilemap[] = INCBIN_U32("graphics/interface/region_map_affine.bin.lz");
+
+void LoadPokedexAreaMapGfx(const struct PokedexAreaMapTemplate *template)
+{
+ u8 mode;
+ sPokedexAreaMapBgNum = Alloc(4);
+ mode = template->mode;
+
+ if (mode == 0)
+ {
+ SetBgAttribute(template->bg, BG_ATTR_METRIC, 0);
+ decompress_and_copy_tile_data_to_vram(template->bg, sPokedexAreaMap_Gfx, 0, template->offset, 0);
+ sub_8199D3C(decompress_and_copy_tile_data_to_vram(template->bg, sPokedexAreaMap_Tilemap, 0, 0, 1), template->offset, 32, 32, FALSE);
+ }
+ else
+ {
+ SetBgAttribute(template->bg, BG_ATTR_METRIC, 2);
+ SetBgAttribute(template->bg, BG_ATTR_TYPE, 1);
+ decompress_and_copy_tile_data_to_vram(template->bg, sPokedexAreaMapAffine_Gfx, 0, template->offset, 0);
+ sub_8199D3C(decompress_and_copy_tile_data_to_vram(template->bg, sPokedexAreaMapAffine_Tilemap, 0, 0, 1), template->offset, 64, 64, TRUE);
+ }
+
+ ChangeBgX(template->bg, 0, 0);
+ ChangeBgY(template->bg, 0, 0);
+ SetBgAttribute(template->bg, BG_ATTR_PALETTEMODE, 1);
+ CpuCopy32(sPokedexAreaMap_Pal, &gPlttBufferUnfaded[0x70], 0x60);
+ *sPokedexAreaMapBgNum = template->bg;
+}
+
+bool32 sub_81C4E90(void)
+{
+ if (!free_temp_tile_data_buffers_if_possible())
+ {
+ ShowBg(*sPokedexAreaMapBgNum);
+ return FALSE;
+ }
+ else
+ {
+ return TRUE;
+ }
+}
+
+void FreePokedexAreaMapBgNum(void)
+{
+ if (sPokedexAreaMapBgNum != NULL)
+ FREE_AND_SET_NULL(sPokedexAreaMapBgNum);
+}
+
+void PokedexAreaMapChangeBgY(u32 a0)
+{
+ ChangeBgY(*sPokedexAreaMapBgNum, a0 * 0x100, 0);
+}
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
index 75fe13f77..ed692d6e3 100755
--- a/src/pokedex_area_screen.c
+++ b/src/pokedex_area_screen.c
@@ -14,7 +14,7 @@
#include "sound.h"
#include "string_util.h"
#include "trig.h"
-#include "unk_pokedex_area_screen_helper.h"
+#include "pokedex_area_region_map.h"
#include "wild_encounter.h"
#include "constants/maps.h"
#include "constants/region_map_sections.h"
@@ -113,7 +113,7 @@ static const u16 sLandmarkData[][2] =
{
{MAPSEC_SKY_PILLAR, FLAG_LANDMARK_SKY_PILLAR},
{MAPSEC_SEAFLOOR_CAVERN, FLAG_LANDMARK_SEAFLOOR_CAVERN},
- {MAPSEC_ALTERING_CAVE_2, FLAG_LANDMARK_ALTERING_CAVE},
+ {MAPSEC_ALTERING_CAVE, FLAG_LANDMARK_ALTERING_CAVE},
{MAPSEC_MIRAGE_TOWER, FLAG_LANDMARK_MIRAGE_TOWER},
{MAPSEC_DESERT_UNDERPASS, FLAG_LANDMARK_DESERT_UNDERPASS},
{MAPSEC_ARTISAN_CAVE, FLAG_LANDMARK_ARTISAN_CAVE},
@@ -230,12 +230,12 @@ static const u8 sAreaGlowTilemapMapping[] = {
0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
};
-static const struct UnkStruct_1C4D70 sUnknown_085B4018 =
+static const struct PokedexAreaMapTemplate sPokedexAreaMapTemplate =
{
.bg = 3,
- .unk2 = 0,
- .unk10 = 0,
- .unk12 = 2,
+ .offset = 0,
+ .mode = 0,
+ .unk = 2,
};
static const u8 sAreaMarkerTiles[];
@@ -456,7 +456,7 @@ static u16 GetRegionMapSectionId(u8 mapGroup, u8 mapNum)
static bool8 MapHasMon(const struct WildPokemonHeader *info, u16 species)
{
- if (GetRegionMapSectionId(info->mapGroup, info->mapNum) == MAPSEC_ALTERING_CAVE_2)
+ if (GetRegionMapSectionId(info->mapGroup, info->mapNum) == MAPSEC_ALTERING_CAVE)
{
sPokedexAreaScreen->unk6E2++;
if (sPokedexAreaScreen->unk6E2 != sPokedexAreaScreen->unk6E4 + 1)
@@ -503,7 +503,7 @@ static void BuildAreaGlowTilemap(void)
{
for (x = 0; x < AREA_SCREEN_WIDTH; x++)
{
- if (GetRegionMapSectionIdAt(x, y) == sPokedexAreaScreen->overworldAreasWithMons[i].regionMapSectionId)
+ if (GetRegionMapSecIdAt(x, y) == sPokedexAreaScreen->overworldAreasWithMons[i].regionMapSectionId)
sPokedexAreaScreen->areaGlowTilemap[j] = GLOW_TILE_FULL;
j++;
@@ -664,13 +664,13 @@ static void Task_ShowPokedexAreaScreen(u8 taskId)
break;
case 1:
SetBgAttribute(3, BG_ATTR_CHARBASEINDEX, 3);
- sub_81C4D70(&sUnknown_085B4018);
+ LoadPokedexAreaMapGfx(&sPokedexAreaMapTemplate);
StringFill(sPokedexAreaScreen->charBuffer, CHAR_SPACE, 16);
break;
case 2:
if (sub_81C4E90() == TRUE)
return;
- sub_81C4ED0(-8);
+ PokedexAreaMapChangeBgY(-8);
break;
case 3:
ResetDrawAreaGlowState();
@@ -680,7 +680,7 @@ static void Task_ShowPokedexAreaScreen(u8 taskId)
return;
break;
case 5:
- sub_8122D88(&sPokedexAreaScreen->regionMap);
+ ShowRegionMapForPokedexAreaScreen(&sPokedexAreaScreen->regionMap);
CreateRegionMapPlayerIcon(1, 1);
PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(0, -8);
break;
@@ -748,7 +748,7 @@ static void Task_HandlePokedexAreaScreenInput(u8 taskId)
sPokedexAreaScreen->screenSwitchState[0] = gTasks[taskId].data[1];
sub_813D6B4();
DestroyTask(taskId);
- sub_81C4EB4();
+ FreePokedexAreaMapBgNum();
FREE_AND_SET_NULL(sPokedexAreaScreen);
return;
}
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index c99841ea2..1660316de 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -36,6 +36,7 @@
#include "trig.h"
#include "walda_phrase.h"
#include "window.h"
+#include "constants/items.h"
#include "constants/maps.h"
#include "constants/moves.h"
#include "constants/rgb.h"
@@ -231,7 +232,7 @@ struct PokemonStorageSystemData
struct Sprite *field_D94;
struct Sprite *field_D98[2];
u16 *field_DA0;
- struct PokemonMarkMenu field_DA4;
+ struct PokemonMarkMenu markMenu;
struct UnkPSSStruct_2002370 field_1E5C;
struct Pokemon movingMon;
struct Pokemon field_2108;
@@ -367,7 +368,7 @@ enum
{
MODE_PARTY,
MODE_BOX,
- MODE_2,
+ MODE_MOVE,
};
enum
@@ -454,7 +455,7 @@ EWRAM_DATA static u8 sCurrentBoxOption = 0;
EWRAM_DATA static u8 gUnknown_02039D0E = 0;
EWRAM_DATA static u8 sWhichToReshow = 0;
EWRAM_DATA static u8 sLastUsedBox = 0;
-EWRAM_DATA static u16 gUnknown_02039D12 = 0;
+EWRAM_DATA static u16 sMovingItemId = 0;
EWRAM_DATA static struct Pokemon gUnknown_02039D14 = {0};
EWRAM_DATA static s8 sBoxCursorArea = 0;
EWRAM_DATA static s8 sBoxCursorPosition = 0;
@@ -2165,7 +2166,7 @@ static void Cb2_EnterPSS(u8 boxOption)
{
sPSSData->boxOption = boxOption;
sPSSData->isReshowingPSS = FALSE;
- gUnknown_02039D12 = 0;
+ sMovingItemId = ITEM_NONE;
sPSSData->state = 0;
sPSSData->taskId = CreateTask(Cb_InitPSS, 3);
sLastUsedBox = StorageGetCurrentBox();
@@ -2227,7 +2228,7 @@ static void sub_80C7F1C(void)
gUnknown_02039D0E = 0;
}
-static void sub_80C7F4C(void)
+static void SetMonIconTransparency(void)
{
if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS)
{
@@ -2321,9 +2322,9 @@ static void Cb_InitPSS(u8 taskId)
if (sPSSData->boxOption != BOX_OPTION_MOVE_ITEMS)
{
- sPSSData->field_DA4.baseTileTag = TAG_TILE_D;
- sPSSData->field_DA4.basePaletteTag = TAG_PAL_DACE;
- sub_811F90C(&sPSSData->field_DA4);
+ sPSSData->markMenu.baseTileTag = TAG_TILE_D;
+ sPSSData->markMenu.basePaletteTag = TAG_PAL_DACE;
+ sub_811F90C(&sPSSData->markMenu);
sub_811FA90();
}
else
@@ -2333,7 +2334,7 @@ static void Cb_InitPSS(u8 taskId)
}
break;
case 10:
- sub_80C7F4C();
+ SetMonIconTransparency();
if (!sPSSData->isReshowingPSS)
{
BlendPalettes(0xFFFFFFFF, 0x10, RGB_BLACK);
@@ -3178,7 +3179,7 @@ static void Cb_ShowMarkMenu(u8 taskId)
{
case 0:
PrintStorageActionText(PC_TEXT_MARK_POKE);
- sPSSData->field_DA4.markings = sPSSData->cursorMonMarkings;
+ sPSSData->markMenu.markings = sPSSData->cursorMonMarkings;
sub_811FAA4(sPSSData->cursorMonMarkings, 0xb0, 0x10);
sPSSData->state++;
break;
@@ -3187,7 +3188,7 @@ static void Cb_ShowMarkMenu(u8 taskId)
{
sub_811FAF8();
ClearBottomWindow();
- SetMonMarkings(sPSSData->field_DA4.markings);
+ SetMonMarkings(sPSSData->markMenu.markings);
RefreshCursorMonData();
SetPSSCallback(Cb_MainPSS);
}
@@ -3863,9 +3864,9 @@ static void Cb_ChangeScreen(u8 taskId)
u8 screenChangeType = sPSSData->screenChangeType;
if (sPSSData->boxOption == BOX_OPTION_MOVE_ITEMS && IsActiveItemMoving() == TRUE)
- gUnknown_02039D12 = GetMovingItem();
+ sMovingItemId = GetMovingItem();
else
- gUnknown_02039D12 = 0;
+ sMovingItemId = ITEM_NONE;
switch (screenChangeType)
{
@@ -4496,9 +4497,9 @@ static void sub_80CAEAC(void)
sub_80D0D8C(CURSOR_AREA_IN_BOX, GetBoxCursorPosition());
}
- if (gUnknown_02039D12 != 0)
+ if (sMovingItemId != ITEM_NONE)
{
- sub_80D0F38(gUnknown_02039D12);
+ sub_80D0F38(sMovingItemId);
sub_80CFE54(3);
}
}
@@ -5077,7 +5078,7 @@ static void sub_80CBF14(u8 mode, u8 position)
case MODE_BOX:
sPSSData->field_B04 = &sPSSData->boxMonsSprites[position];
break;
- case MODE_2:
+ case MODE_MOVE:
sPSSData->field_B04 = &sPSSData->movingMonSprite;
break;
default:
@@ -6388,7 +6389,7 @@ static void sub_80CE250(void)
u8 mode;
if (sIsMonBeingMoved)
- mode = MODE_2;
+ mode = MODE_MOVE;
else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY)
mode = MODE_PARTY;
else
@@ -6756,7 +6757,7 @@ static void sub_80CEB40(void)
// fallthrough
case CURSOR_AREA_BUTTONS:
case CURSOR_AREA_BOX:
- SetCursorMonData(NULL, MODE_2);
+ SetCursorMonData(NULL, MODE_MOVE);
break;
case CURSOR_AREA_IN_BOX:
SetCursorMonData(GetBoxedMonPtr(StorageGetCurrentBox(), sBoxCursorPosition), MODE_BOX);
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index ffd468a9b..81befefc5 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -3095,7 +3095,7 @@ static void BufferMonTrainerMemo(void)
if (sum->metLocation < MAPSEC_NONE)
{
- sub_8124610(metLocationString, sum->metLocation);
+ GetMapNameHandleAquaHideout(metLocationString, sum->metLocation);
DynamicPlaceholderTextUtil_SetPlaceholderPtr(4, metLocationString);
}
diff --git a/src/pokenav.c b/src/pokenav.c
index 03b29ab0b..8ea33575a 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -26,18 +26,18 @@ struct PokenavResources
void *field10[SUBSTRUCT_COUNT];
};
-struct UnknownPokenavCallbackStruct
+struct PokenavCallbacks
{
- bool32 (*unk0)(void);
- u32 (*unk4)(void);
- bool32 (*unk8)(void);
- void (*unkC)(s32);
- u32 (*unk10)(void);
- void (*unk14)(void);
- void (*unk18)(void);
+ bool32 (*init)(void);
+ u32 (*callback)(void);
+ bool32 (*open)(void);
+ void (*createLoopTask)(s32);
+ bool32 (*isLoopTaskActive)(void);
+ void (*free1)(void);
+ void (*free2)(void);
};
-static u32 sub_81C75E0(void);
+static u32 GetCurrentMenuCB(void);
static u32 sub_81C75D4(void);
static bool32 SetActivePokenavMenu(u32 menuId);
static bool32 AnyMonHasRibbon(void);
@@ -51,142 +51,158 @@ static void Task_RunLoopedTask(u8 taskId);
static void Task_Pokenav(u8 taskId);
static void CB2_InitPokenavForTutorial(void);
-const struct UnknownPokenavCallbackStruct PokenavMenuCallbacks[15] =
+// TODO: Use MENU ids
+const struct PokenavCallbacks PokenavMenuCallbacks[15] =
{
+ [POKENAV_MAIN_MENU - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_0,
- .unk4 = sub_81C941C,
- .unk8 = sub_81C9924,
- .unkC = CreateMenuHandlerLoopedTask,
- .unk10 = sub_81C99C0,
- .unk14 = sub_81C9430,
- .unk18 = sub_81C99D4,
+ .init = PokenavCallback_Init_MainMenuCursorOnMap,
+ .callback = GetMenuHandlerCallback,
+ .open = OpenPokenavMenuInitial,
+ .createLoopTask = CreateMenuHandlerLoopedTask,
+ .isLoopTaskActive = IsMenuHandlerLoopedTaskActive,
+ .free1 = FreeMenuHandlerSubstruct1,
+ .free2 = FreeMenuHandlerSubstruct2,
},
+ [POKENAV_MAIN_MENU_CURSOR_ON_MAP - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_0,
- .unk4 = sub_81C941C,
- .unk8 = sub_81C9940,
- .unkC = CreateMenuHandlerLoopedTask,
- .unk10 = sub_81C99C0,
- .unk14 = sub_81C9430,
- .unk18 = sub_81C99D4,
+ .init = PokenavCallback_Init_MainMenuCursorOnMap,
+ .callback = GetMenuHandlerCallback,
+ .open = OpenPokenavMenuNotInitial,
+ .createLoopTask = CreateMenuHandlerLoopedTask,
+ .isLoopTaskActive = IsMenuHandlerLoopedTaskActive,
+ .free1 = FreeMenuHandlerSubstruct1,
+ .free2 = FreeMenuHandlerSubstruct2,
},
+ [POKENAV_CONDITION_MENU - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_2,
- .unk4 = sub_81C941C,
- .unk8 = sub_81C9940,
- .unkC = CreateMenuHandlerLoopedTask,
- .unk10 = sub_81C99C0,
- .unk14 = sub_81C9430,
- .unk18 = sub_81C99D4,
+ .init = PokenavCallback_Init_ConditionMenu,
+ .callback = GetMenuHandlerCallback,
+ .open = OpenPokenavMenuNotInitial,
+ .createLoopTask = CreateMenuHandlerLoopedTask,
+ .isLoopTaskActive = IsMenuHandlerLoopedTaskActive,
+ .free1 = FreeMenuHandlerSubstruct1,
+ .free2 = FreeMenuHandlerSubstruct2,
},
+ [POKENAV_CONDITION_SEARCH_MENU - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_3,
- .unk4 = sub_81C941C,
- .unk8 = sub_81C9940,
- .unkC = CreateMenuHandlerLoopedTask,
- .unk10 = sub_81C99C0,
- .unk14 = sub_81C9430,
- .unk18 = sub_81C99D4,
+ .init = PokenavCallback_Init_ConditionSearchMenu,
+ .callback = GetMenuHandlerCallback,
+ .open = OpenPokenavMenuNotInitial,
+ .createLoopTask = CreateMenuHandlerLoopedTask,
+ .isLoopTaskActive = IsMenuHandlerLoopedTaskActive,
+ .free1 = FreeMenuHandlerSubstruct1,
+ .free2 = FreeMenuHandlerSubstruct2,
},
+ [POKENAV_MAIN_MENU_CURSOR_ON_MATCH_CALL - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_4,
- .unk4 = sub_81C941C,
- .unk8 = sub_81C9940,
- .unkC = CreateMenuHandlerLoopedTask,
- .unk10 = sub_81C99C0,
- .unk14 = sub_81C9430,
- .unk18 = sub_81C99D4,
+ .init = PokenavCallback_Init_MainMenuCursorOnMatchCall,
+ .callback = GetMenuHandlerCallback,
+ .open = OpenPokenavMenuNotInitial,
+ .createLoopTask = CreateMenuHandlerLoopedTask,
+ .isLoopTaskActive = IsMenuHandlerLoopedTaskActive,
+ .free1 = FreeMenuHandlerSubstruct1,
+ .free2 = FreeMenuHandlerSubstruct2,
},
+ [POKENAV_MAIN_MENU_CURSOR_ON_RIBBONS - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_5,
- .unk4 = sub_81C941C,
- .unk8 = sub_81C9940,
- .unkC = CreateMenuHandlerLoopedTask,
- .unk10 = sub_81C99C0,
- .unk14 = sub_81C9430,
- .unk18 = sub_81C99D4,
+ .init = PokenavCallback_Init_MainMenuCursorOnRibbons,
+ .callback = GetMenuHandlerCallback,
+ .open = OpenPokenavMenuNotInitial,
+ .createLoopTask = CreateMenuHandlerLoopedTask,
+ .isLoopTaskActive = IsMenuHandlerLoopedTaskActive,
+ .free1 = FreeMenuHandlerSubstruct1,
+ .free2 = FreeMenuHandlerSubstruct2,
},
+ [POKENAV_REGION_MAP - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_6,
- .unk4 = sub_81CC554,
- .unk8 = sub_81CC5F4,
- .unkC = sub_81CC62C,
- .unk10 = sub_81CC65C,
- .unk14 = sub_81CC524,
- .unk18 = sub_81CC670,
+ .init = PokenavCallback_Init_RegionMap,
+ .callback = GetRegionMapCallback,
+ .open = OpenPokenavRegionMap,
+ .createLoopTask = CreateRegionMapLoopedTask,
+ .isLoopTaskActive = IsRegionMapLoopedTaskActive,
+ .free1 = FreeRegionMapSubstruct1,
+ .free2 = FreeRegionMapSubstruct2,
},
+ [POKENAV_CONDITION_PARTY - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_7,
- .unk4 = sub_81CD070,
- .unk8 = sub_81CDDD4,
- .unkC = sub_81CDE2C,
- .unk10 = sub_81CDE64,
- .unk14 = sub_81CD1C0,
- .unk18 = sub_81CECA0,
+ .init = PokenavCallback_Init_7,
+ .callback = sub_81CD070,
+ .open = sub_81CDDD4,
+ .createLoopTask = sub_81CDE2C,
+ .isLoopTaskActive = sub_81CDE64,
+ .free1 = sub_81CD1C0,
+ .free2 = sub_81CECA0,
},
+ [POKENAV_CONDITION_SEARCH_RESULTS - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_8,
- .unk4 = sub_81CEFDC,
- .unk8 = sub_81CF330,
- .unkC = sub_81CF3A0,
- .unk10 = sub_81CF3D0,
- .unk14 = sub_81CEFF0,
- .unk18 = sub_81CF3F8,
+ .init = PokenavCallback_Init_8,
+ .callback = sub_81CEFDC,
+ .open = sub_81CF330,
+ .createLoopTask = sub_81CF3A0,
+ .isLoopTaskActive = sub_81CF3D0,
+ .free1 = sub_81CEFF0,
+ .free2 = sub_81CF3F8,
},
+ [POKENAV_MENU_9 - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_9,
- .unk4 = sub_81CD070,
- .unk8 = sub_81CDDD4,
- .unkC = sub_81CDE2C,
- .unk10 = sub_81CDE64,
- .unk14 = sub_81CD1C0,
- .unk18 = sub_81CECA0,
+ .init = PokenavCallback_Init_9,
+ .callback = sub_81CD070,
+ .open = sub_81CDDD4,
+ .createLoopTask = sub_81CDE2C,
+ .isLoopTaskActive = sub_81CDE64,
+ .free1 = sub_81CD1C0,
+ .free2 = sub_81CECA0,
},
+ [POKENAV_MENU_A - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_10,
- .unk4 = sub_81CEFDC,
- .unk8 = sub_81CF368,
- .unkC = sub_81CF3A0,
- .unk10 = sub_81CF3D0,
- .unk14 = sub_81CEFF0,
- .unk18 = sub_81CF3F8,
+ .init = PokenavCallback_Init_10,
+ .callback = sub_81CEFDC,
+ .open = sub_81CF368,
+ .createLoopTask = sub_81CF3A0,
+ .isLoopTaskActive = sub_81CF3D0,
+ .free1 = sub_81CEFF0,
+ .free2 = sub_81CF3F8,
},
+ [POKENAV_MATCH_CALL - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_11,
- .unk4 = sub_81CAB24,
- .unk8 = sub_81CB260,
- .unkC = CreateMatchCallLoopedTask,
- .unk10 = sub_81CB2CC,
- .unk14 = sub_81CAB38,
- .unk18 = sub_81CB2E0,
+ .init = PokenavCallback_Init_MatchCall,
+ .callback = GetMatchCallCallback,
+ .open = OpenMatchCall,
+ .createLoopTask = CreateMatchCallLoopedTask,
+ .isLoopTaskActive = IsMatchCallLoopedTaskActive,
+ .free1 = FreeMatchCallSubstruct1,
+ .free2 = FreeMatchCallSubstruct2,
},
+ [POKENAV_RIBBONS_MON_LIST - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_12,
- .unk4 = sub_81CFA34,
- .unk8 = sub_81CFDD0,
- .unkC = sub_81CFE40,
- .unk10 = sub_81CFE70,
- .unk14 = sub_81CFA48,
- .unk18 = sub_81CFE98,
+ .init = PokenavCallback_Init_12,
+ .callback = sub_81CFA34,
+ .open = sub_81CFDD0,
+ .createLoopTask = sub_81CFE40,
+ .isLoopTaskActive = sub_81CFE70,
+ .free1 = sub_81CFA48,
+ .free2 = sub_81CFE98,
},
+ [POKENAV_MENU_D - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_13,
- .unk4 = sub_81D04A0,
- .unk8 = sub_81D0978,
- .unkC = sub_81D09B0,
- .unk10 = sub_81D09E0,
- .unk14 = sub_81D04B8,
- .unk18 = sub_81D09F4,
+ .init = PokenavCallback_Init_13,
+ .callback = sub_81D04A0,
+ .open = sub_81D0978,
+ .createLoopTask = sub_81D09B0,
+ .isLoopTaskActive = sub_81D09E0,
+ .free1 = sub_81D04B8,
+ .free2 = sub_81D09F4,
},
+ [POKENAV_MENU_E - POKENAV_MENU_IDS_START] =
{
- .unk0 = PokenavCallback_Init_14,
- .unk4 = sub_81CFA34,
- .unk8 = sub_81CFE08,
- .unkC = sub_81CFE40,
- .unk10 = sub_81CFE70,
- .unk14 = sub_81CFA48,
- .unk18 = sub_81CFE98,
+ .init = PokenavCallback_Init_14,
+ .callback = sub_81CFA34,
+ .open = sub_81CFE08,
+ .createLoopTask = sub_81CFE40,
+ .isLoopTaskActive = sub_81CFE70,
+ .free1 = sub_81CFA48,
+ .free2 = sub_81CFE98,
},
};
@@ -416,66 +432,68 @@ static void VBlankCB_Pokenav(void)
ProcessSpriteCopyRequests();
}
+#define tState data[0]
+
static void Task_Pokenav(u8 taskId)
{
- u32 v1;
+ u32 menuId;
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
InitPokenavMainMenu();
- data[0] = 1;
+ tState = 1;
break;
case 1:
// Wait for LoopedTask_InitPokenavMenu to finish
if (PokenavMainMenuLoopedTaskIsActive())
break;
- SetActivePokenavMenu(POKENAV_MENU_0);
- data[0] = 4;
+ SetActivePokenavMenu(POKENAV_MAIN_MENU);
+ tState = 4;
break;
case 2:
if (sub_81C786C())
break;
- data[0] = 3;
+ tState = 3;
case 3:
- v1 = sub_81C75E0();
- if (v1 == -1)
+ menuId = GetCurrentMenuCB();
+ if (menuId == -1)
{
ShutdownPokenav();
- data[0] = 5;
+ tState = 5;
}
- else if (v1 >= POKENAV_MENU_IDS_START)
+ else if (menuId >= POKENAV_MENU_IDS_START)
{
- PokenavMenuCallbacks[gPokenavResources->currentMenuIndex].unk18();
- PokenavMenuCallbacks[gPokenavResources->currentMenuIndex].unk14();
- if (SetActivePokenavMenu(v1))
+ PokenavMenuCallbacks[gPokenavResources->currentMenuIndex].free2();
+ PokenavMenuCallbacks[gPokenavResources->currentMenuIndex].free1();
+ if (SetActivePokenavMenu(menuId))
{
- data[0] = 4;
+ tState = 4;
}
else
{
ShutdownPokenav();
- data[0] = 5;
+ tState = 5;
}
}
- else if (v1 != 0)
+ else if (menuId != 0)
{
- sub_81C7850(v1);
+ sub_81C7850(menuId);
if (sub_81C786C())
- data[0] = 2;
+ tState = 2;
}
break;
case 4:
if (!sub_81C75D4())
- data[0] = 3;
+ tState = 3;
break;
case 5:
if (!WaitForPokenavShutdownFade())
{
bool32 calledFromScript = (gPokenavResources->mode != POKENAV_MODE_NORMAL);
- sub_81C9430();
+ FreeMenuHandlerSubstruct1();
FreePokenavResources();
if (calledFromScript)
SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic);
@@ -486,18 +504,20 @@ static void Task_Pokenav(u8 taskId)
}
}
+#undef tState
+
static bool32 SetActivePokenavMenu(u32 menuId)
{
u32 index = menuId - POKENAV_MENU_IDS_START;
InitKeys_();
- if (!PokenavMenuCallbacks[index].unk0())
+ if (!PokenavMenuCallbacks[index].init())
return FALSE;
- if (!PokenavMenuCallbacks[index].unk8())
+ if (!PokenavMenuCallbacks[index].open())
return FALSE;
- sub_81C7834(PokenavMenuCallbacks[index].unkC, PokenavMenuCallbacks[index].unk10);
- gPokenavResources->currentMenuCb1 = PokenavMenuCallbacks[index].unk4;
+ sub_81C7834(PokenavMenuCallbacks[index].createLoopTask, PokenavMenuCallbacks[index].isLoopTaskActive);
+ gPokenavResources->currentMenuCb1 = PokenavMenuCallbacks[index].callback;
gPokenavResources->currentMenuIndex = index;
return TRUE;
}
@@ -507,7 +527,7 @@ static u32 sub_81C75D4(void)
return sub_81C786C();
}
-static u32 sub_81C75E0(void)
+static u32 GetCurrentMenuCB(void)
{
return gPokenavResources->currentMenuCb1();
}
diff --git a/src/pokenav_conditions_1.c b/src/pokenav_conditions_1.c
index 70c309992..84e2a9682 100644
--- a/src/pokenav_conditions_1.c
+++ b/src/pokenav_conditions_1.c
@@ -147,7 +147,7 @@ u32 sub_81CD110(struct PokenavSub11 *structPtr)
u32 sub_81CD19C(struct PokenavSub11 *structPtr)
{
if (structPtr->unk6300 == 0)
- return POKENAV_MENU_2;
+ return POKENAV_CONDITION_MENU;
else
return POKENAV_MENU_A;
}
diff --git a/src/pokenav_conditions_2.c b/src/pokenav_conditions_2.c
index 11fdaa425..ed253f90f 100644
--- a/src/pokenav_conditions_2.c
+++ b/src/pokenav_conditions_2.c
@@ -296,7 +296,7 @@ u32 sub_81CDE94(s32 state)
PrintHelpBarText(HELPBAR_CONDITION_MON_STATUS);
return LT_INC_AND_PAUSE;
case 15:
- sub_81C7AC0(1);
+ PokenavFadeScreen(1);
if (!sub_81CDD5C())
{
LoadLeftHeaderGfxForIndex(6);
@@ -353,7 +353,7 @@ u32 sub_81CE2D0(s32 state)
sub_81CEE74(FALSE);
return 1;
case 2:
- sub_81C7AC0(0);
+ PokenavFadeScreen(0);
if (!sub_81CDD5C())
sub_81C78A0();
return 0;
diff --git a/src/pokenav_conditions_3.c b/src/pokenav_conditions_3.c
index 9b6ce432b..74bc3cc9d 100644
--- a/src/pokenav_conditions_3.c
+++ b/src/pokenav_conditions_3.c
@@ -197,12 +197,12 @@ static u32 sub_81CF030(struct PokenavSub7 *structPtr)
static u32 sub_81CF0B0(struct PokenavSub7 *structPtr)
{
- return 100003;
+ return POKENAV_CONDITION_SEARCH_MENU;
}
static u32 sub_81CF0B8(struct PokenavSub7 *structPtr)
{
- return 100009;
+ return POKENAV_MENU_9;
}
static u32 sub_81CF0C0(void)
@@ -448,7 +448,7 @@ static u32 sub_81CF418(s32 state)
sub_81C7FA0(r4, 1, 0);
sub_81C7FA0(1, 1, 0);
}
- sub_81C7AC0(1);
+ PokenavFadeScreen(1);
return LT_INC_AND_PAUSE;
case 5:
if (IsPaletteFadeActive())
@@ -598,7 +598,7 @@ static u32 sub_81CF758(s32 state)
{
case 0:
PlaySE(SE_SELECT);
- sub_81C7AC0(0);
+ PokenavFadeScreen(0);
sub_81C78A0();
return LT_INC_AND_PAUSE;
case 1:
@@ -618,7 +618,7 @@ static u32 sub_81CF798(s32 state)
{
case 0:
PlaySE(SE_SELECT);
- sub_81C7AC0(0);
+ PokenavFadeScreen(0);
return LT_INC_AND_PAUSE;
case 1:
if (IsPaletteFadeActive())
diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c
index 583d23a55..fdd27b087 100644
--- a/src/pokenav_main_menu.c
+++ b/src/pokenav_main_menu.c
@@ -13,28 +13,6 @@
#include "menu.h"
#include "dma3.h"
-enum
-{
- POKENAV_GFX_MAIN_MENU,
- POKENAV_GFX_CONDITION_MENU,
- POKENAV_GFX_RIBBONS_MENU,
- POKENAV_GFX_MATCH_CALL_MENU,
- // One of these is for the zoomed-in map, and the other is for the
- // zoomed-out map. Don't know which is which yet.
- POKENAV_GFX_MAP_MENU_UNK0,
- POKENAV_GFX_MAP_MENU_UNK1,
- POKENAV_GFX_PARTY_MENU,
- POKENAV_GFX_SEARCH_MENU,
- POKENAV_GFX_COOL_MENU,
- POKENAV_GFX_BEAUTY_MENU,
- POKENAV_GFX_CUTE_MENU,
- POKENAV_GFX_SMART_MENU,
- POKENAV_GFX_TOUGH_MENU,
- POKENAV_GFX_MENUS_END,
-};
-
-#define POKENAV_GFX_SUBMENUS_START POKENAV_GFX_PARTY_MENU
-
struct PokenavMainMenuResources
{
void (*unk0)(u32);
@@ -42,7 +20,7 @@ struct PokenavMainMenuResources
u32 unk8;
u32 currentTaskId;
u32 helpBarWindowId;
- u32 unk14;
+ u32 palettes;
struct Sprite *spinningPokenav;
struct Sprite *leftHeaderSprites[2];
struct Sprite *submenuLeftHeaderSprites[2];
@@ -174,12 +152,12 @@ static const struct CompressedSpriteSheet sPokenavMenuLeftHeaderSpriteSheets[] =
.size = 0x20,
.tag = 4
},
- [POKENAV_GFX_MAP_MENU_UNK0] = {
+ [POKENAV_GFX_MAP_MENU_ZOOMED_OUT] = {
.data = gPokenavLeftHeaderHoennMap_Gfx,
.size = 0x20,
.tag = 0
},
- [POKENAV_GFX_MAP_MENU_UNK1] = {
+ [POKENAV_GFX_MAP_MENU_ZOOMED_IN] = {
.data = gPokenavLeftHeaderHoennMap_Gfx,
.size = 0x40,
.tag = 0
@@ -343,7 +321,7 @@ bool32 WaitForPokenavShutdownFade(void)
{
if (!gPaletteFade.active)
{
- sub_81C99D4();
+ FreeMenuHandlerSubstruct2();
CleanupPokenavMainMenuResources();
FreeAllWindowBuffers();
return FALSE;
@@ -629,17 +607,17 @@ _081C7AAE:\n\
.syntax divided");
}
-void sub_81C7AC0(s32 a0)
+void PokenavFadeScreen(s32 fadeType)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
- switch (a0)
+ switch (fadeType)
{
case 0:
- BeginNormalPaletteFade(structPtr->unk14, -2, 0, 16, RGB_BLACK);
+ BeginNormalPaletteFade(structPtr->palettes, -2, 0, 16, RGB_BLACK);
break;
case 1:
- BeginNormalPaletteFade(structPtr->unk14, -2, 16, 0, RGB_BLACK);
+ BeginNormalPaletteFade(structPtr->palettes, -2, 16, 0, RGB_BLACK);
break;
case 2:
BeginNormalPaletteFade(0xFFFFFFFF, -2, 0, 16, RGB_BLACK);
@@ -708,7 +686,7 @@ static void InitPokenavMainMenuResources(void)
LoadCompressedSpriteSheet(&gSpinningPokenavSpriteSheet[i]);
Pokenav_AllocAndLoadPalettes(gSpinningNavgearPalettes);
- structPtr->unk14 = ~1 & ~(0x10000 << IndexOfSpritePaletteTag(0));
+ structPtr->palettes = ~1 & ~(0x10000 << IndexOfSpritePaletteTag(0));
spriteId = CreateSprite(&sSpinningPokenavSpriteTemplate, 220, 12, 0);
structPtr->spinningPokenav = &gSprites[spriteId];
}
@@ -772,61 +750,61 @@ static void InitHoennMapHeaderSprites(void)
}
}
-void LoadLeftHeaderGfxForIndex(u32 arg0)
+void LoadLeftHeaderGfxForIndex(u32 menuGfxId)
{
- if (arg0 < POKENAV_GFX_SUBMENUS_START)
- LoadLeftHeaderGfxForMenu(arg0);
+ if (menuGfxId < POKENAV_GFX_SUBMENUS_START)
+ LoadLeftHeaderGfxForMenu(menuGfxId);
else
- LoadLeftHeaderGfxForSubMenu(arg0 - POKENAV_GFX_SUBMENUS_START);
+ LoadLeftHeaderGfxForSubMenu(menuGfxId - POKENAV_GFX_SUBMENUS_START);
}
-void sub_81C7E14(u32 arg0)
+void sub_81C7E14(u32 menuGfxId)
{
struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0);
- if (arg0 == 4)
+ if (menuGfxId == POKENAV_GFX_MAP_MENU_ZOOMED_OUT)
structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 32;
else
structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 64;
}
-static void LoadLeftHeaderGfxForMenu(u32 index)
+static void LoadLeftHeaderGfxForMenu(u32 menuGfxId)
{
struct PokenavMainMenuResources *structPtr;
u32 size, tag;
- if (index >= POKENAV_GFX_SUBMENUS_START)
+ if (menuGfxId >= POKENAV_GFX_SUBMENUS_START)
return;
structPtr = GetSubstructPtr(0);
- tag = sPokenavMenuLeftHeaderSpriteSheets[index].tag;
- size = GetDecompressedDataSize(sPokenavMenuLeftHeaderSpriteSheets[index].data);
+ tag = sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].tag;
+ size = GetDecompressedDataSize(sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].data);
LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(1) * 16) + 0x100, 0x20);
- LZ77UnCompWram(sPokenavMenuLeftHeaderSpriteSheets[index].data, gDecompressionBuffer);
+ LZ77UnCompWram(sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].data, gDecompressionBuffer);
RequestDma3Copy(gDecompressionBuffer, (void *)VRAM + 0x10000 + (GetSpriteTileStartByTag(2) * 32), size, 1);
- structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + sPokenavMenuLeftHeaderSpriteSheets[index].size;
+ structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + sPokenavMenuLeftHeaderSpriteSheets[menuGfxId].size;
- if (index == POKENAV_GFX_MAP_MENU_UNK0 || index == POKENAV_GFX_MAP_MENU_UNK1)
+ if (menuGfxId == POKENAV_GFX_MAP_MENU_ZOOMED_OUT || menuGfxId == POKENAV_GFX_MAP_MENU_ZOOMED_IN)
structPtr->leftHeaderSprites[1]->pos2.x = 56;
else
structPtr->leftHeaderSprites[1]->pos2.x = 64;
}
-static void LoadLeftHeaderGfxForSubMenu(u32 arg0)
+static void LoadLeftHeaderGfxForSubMenu(u32 menuGfxId)
{
u32 size, tag;
- if (arg0 >= POKENAV_GFX_MENUS_END - POKENAV_GFX_SUBMENUS_START)
+ if (menuGfxId >= POKENAV_GFX_MENUS_END - POKENAV_GFX_SUBMENUS_START)
return;
- tag = sPokenavSubMenuLeftHeaderSpriteSheets[arg0].tag;
- size = GetDecompressedDataSize(sPokenavSubMenuLeftHeaderSpriteSheets[arg0].data);
+ tag = sPokenavSubMenuLeftHeaderSpriteSheets[menuGfxId].tag;
+ size = GetDecompressedDataSize(sPokenavSubMenuLeftHeaderSpriteSheets[menuGfxId].data);
LoadPalette(&gPokenavLeftHeader_Pal[tag * 16], (IndexOfSpritePaletteTag(2) * 16) + 0x100, 0x20);
- LZ77UnCompWram(sPokenavSubMenuLeftHeaderSpriteSheets[arg0].data, &gDecompressionBuffer[0x1000]);
+ LZ77UnCompWram(sPokenavSubMenuLeftHeaderSpriteSheets[menuGfxId].data, &gDecompressionBuffer[0x1000]);
RequestDma3Copy(&gDecompressionBuffer[0x1000], (void *)VRAM + 0x10800 + (GetSpriteTileStartByTag(2) * 32), size, 1);
}
-void sub_81C7FA0(u32 arg0, bool32 arg1, bool32 arg2)
+void sub_81C7FA0(u32 menuGfxId, bool32 arg1, bool32 arg2)
{
u32 var;
@@ -835,7 +813,7 @@ void sub_81C7FA0(u32 arg0, bool32 arg1, bool32 arg2)
else
var = 0x10;
- if (arg0 < 6)
+ if (menuGfxId < POKENAV_GFX_SUBMENUS_START)
ShowLeftHeaderSprites(var, arg2);
else
ShowLeftHeaderSubmenuSprites(var, arg2);
diff --git a/src/pokenav_match_call_1.c b/src/pokenav_match_call_1.c
index 28e84b50b..ef1d5343f 100755
--- a/src/pokenav_match_call_1.c
+++ b/src/pokenav_match_call_1.c
@@ -30,7 +30,7 @@ struct Pokenav3Struct
};
static u32 CB2_HandleMatchCallInput(struct Pokenav3Struct *);
-static u32 sub_81CABFC(struct Pokenav3Struct *);
+static u32 GetExitMatchCallMenuId(struct Pokenav3Struct *);
static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav3Struct *);
static u32 CB2_HandleCheckPageInput(struct Pokenav3Struct *);
static u32 CB2_HandleCallInput(struct Pokenav3Struct *);
@@ -52,7 +52,7 @@ static const u8 sMatchCallOptionsHasCheckPage[] =
MATCH_CALL_OPTION_CANCEL
};
-bool32 PokenavCallback_Init_11(void)
+bool32 PokenavCallback_Init_MatchCall(void)
{
struct Pokenav3Struct *state = AllocSubstruct(5, sizeof(struct Pokenav3Struct));
if (!state)
@@ -65,13 +65,13 @@ bool32 PokenavCallback_Init_11(void)
return TRUE;
}
-u32 sub_81CAB24(void)
+u32 GetMatchCallCallback(void)
{
struct Pokenav3Struct *state = GetSubstructPtr(5);
return state->callback(state);
}
-void sub_81CAB38(void)
+void FreeMatchCallSubstruct1(void)
{
FreePokenavSubstruct(5);
}
@@ -113,7 +113,7 @@ static u32 CB2_HandleMatchCallInput(struct Pokenav3Struct *state)
{
if (GetPokenavMode() != POKENAV_MODE_FORCE_CALL_READY)
{
- state->callback = sub_81CABFC;
+ state->callback = GetExitMatchCallMenuId;
return POKENAV_MC_FUNC_EXIT;
}
else
@@ -126,9 +126,9 @@ static u32 CB2_HandleMatchCallInput(struct Pokenav3Struct *state)
return POKENAV_MC_FUNC_NONE;
}
-static u32 sub_81CABFC(struct Pokenav3Struct *state)
+static u32 GetExitMatchCallMenuId(struct Pokenav3Struct *state)
{
- return POKENAV_MENU_4;
+ return POKENAV_MAIN_MENU_CURSOR_ON_MATCH_CALL;
}
static u32 CB2_HandleMatchCallOptionsInput(struct Pokenav3Struct *state)
diff --git a/src/pokenav_match_call_2.c b/src/pokenav_match_call_2.c
index aaa1767aa..aa69c592f 100755
--- a/src/pokenav_match_call_2.c
+++ b/src/pokenav_match_call_2.c
@@ -27,8 +27,8 @@
struct Pokenav4Struct
{
- bool32 (*unk0)(void);
- u32 unk4;
+ bool32 (*isTaskActiveCB)(void);
+ u32 loopTaskId;
u8 filler8[0x6];
u8 unkE;
u8 unkF;
@@ -49,8 +49,8 @@ struct Pokenav4Struct
u8 unk2028[0x20];
};
-static bool32 sub_81CB310(void);
-static u32 sub_81CB324(s32);
+static bool32 GetCurrentLoopedTaskActive(void);
+static u32 LoopedTask_OpenMatchCall(s32);
static void sub_81CBBB8(void);
static void sub_81CBC1C(void);
static void sub_81CC2B4(void);
@@ -274,32 +274,32 @@ static const struct SpriteTemplate sTrainerPicSpriteTemplate =
.callback = SpriteCallbackDummy,
};
-bool32 sub_81CB260(void)
+bool32 OpenMatchCall(void)
{
struct Pokenav4Struct *state = AllocSubstruct(6, sizeof(struct Pokenav4Struct));
if (!state)
return FALSE;
state->unk19 = 0;
- state->unk4 = CreateLoopedTask(sub_81CB324, 1);
- state->unk0 = sub_81CB310;
+ state->loopTaskId = CreateLoopedTask(LoopedTask_OpenMatchCall, 1);
+ state->isTaskActiveCB = GetCurrentLoopedTaskActive;
return TRUE;
}
void CreateMatchCallLoopedTask(s32 index)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
- state->unk4 = CreateLoopedTask(sMatchCallLoopTaskFuncs[index], 1);
- state->unk0 = sub_81CB310;
+ state->loopTaskId = CreateLoopedTask(sMatchCallLoopTaskFuncs[index], 1);
+ state->isTaskActiveCB = GetCurrentLoopedTaskActive;
}
-u32 sub_81CB2CC(void)
+bool32 IsMatchCallLoopedTaskActive(void)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
- return state->unk0();
+ return state->isTaskActiveCB();
}
-void sub_81CB2E0(void)
+void FreeMatchCallSubstruct2(void)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
sub_81CC2B4();
@@ -310,13 +310,13 @@ void sub_81CB2E0(void)
FreePokenavSubstruct(6);
}
-static bool32 sub_81CB310(void)
+static bool32 GetCurrentLoopedTaskActive(void)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
- return IsLoopedTaskActive(state->unk4);
+ return IsLoopedTaskActive(state->loopTaskId);
}
-static u32 sub_81CB324(s32 taskState)
+static u32 LoopedTask_OpenMatchCall(s32 taskState)
{
struct Pokenav4Struct *state = GetSubstructPtr(6);
switch (taskState)
@@ -376,7 +376,7 @@ static u32 sub_81CB324(s32 taskState)
sub_81CC214();
LoadLeftHeaderGfxForIndex(3);
sub_81C7FA0(3, 1, 0);
- sub_81C7AC0(1);
+ PokenavFadeScreen(1);
return LT_INC_AND_PAUSE;
case 7:
if (IsPaletteFadeActive() || sub_81C8010())
@@ -849,7 +849,7 @@ u32 ExitMatchCall(s32 taskState)
case 0:
PlaySE(SE_SELECT);
sub_81CBC38(0);
- sub_81C7AC0(0);
+ PokenavFadeScreen(0);
sub_81C78A0();
return LT_INC_AND_PAUSE;
case 1:
diff --git a/src/pokenav_match_call_ui.c b/src/pokenav_match_call_ui.c
index fd346393e..01740fcce 100644
--- a/src/pokenav_match_call_ui.c
+++ b/src/pokenav_match_call_ui.c
@@ -7,6 +7,8 @@
#include "menu.h"
#include "decompress.h"
+// TODO: This UI isnt just for match call, seems to be the general pokenav list UI
+
struct UnknownSubSubStruct_0203CF40 {
u8 bg;
u8 unk1;
diff --git a/src/pokenav_menu_handler_1.c b/src/pokenav_menu_handler_1.c
index 44176176d..bd33a21af 100644
--- a/src/pokenav_menu_handler_1.c
+++ b/src/pokenav_menu_handler_1.c
@@ -11,15 +11,15 @@ struct Pokenav1Struct
s16 cursorPos;
u16 currMenuItem;
u16 helpBarIndex;
- u32 unk8;
+ u32 menuId;
u32 (*callback)(struct Pokenav1Struct*);
};
static bool32 UpdateMenuCursorPos(struct Pokenav1Struct *state);
static void ReturnToConditionMenu(struct Pokenav1Struct *state);
static void ReturnToMainMenu(struct Pokenav1Struct *state);
-static u32 sub_81C97BC(struct Pokenav1Struct *state);
-static void sub_81C97B0(struct Pokenav1Struct *state, u32 a1);
+static u32 GetMenuId(struct Pokenav1Struct *state);
+static void SetMenuIdAndCB(struct Pokenav1Struct *state, u32 a1);
static u32 CB2_ReturnToConditionMenu(struct Pokenav1Struct *state);
static u32 CB2_ReturnToMainMenu(struct Pokenav1Struct *state);
static u32 HandleConditionSearchMenuInput(struct Pokenav1Struct *state);
@@ -97,7 +97,7 @@ static u8 GetPokenavMainMenuType(void)
return menuType;
}
-bool32 PokenavCallback_Init_0(void)
+bool32 PokenavCallback_Init_MainMenuCursorOnMap(void)
{
struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
if (!state)
@@ -111,7 +111,7 @@ bool32 PokenavCallback_Init_0(void)
return TRUE;
}
-bool32 PokenavCallback_Init_4(void)
+bool32 PokenavCallback_Init_MainMenuCursorOnMatchCall(void)
{
struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
if (!state)
@@ -125,7 +125,7 @@ bool32 PokenavCallback_Init_4(void)
return TRUE;
}
-bool32 PokenavCallback_Init_5(void)
+bool32 PokenavCallback_Init_MainMenuCursorOnRibbons(void)
{
struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
if (!state)
@@ -138,7 +138,7 @@ bool32 PokenavCallback_Init_5(void)
return TRUE;
}
-bool32 PokenavCallback_Init_2(void)
+bool32 PokenavCallback_Init_ConditionMenu(void)
{
struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
if (!state)
@@ -152,7 +152,7 @@ bool32 PokenavCallback_Init_2(void)
return TRUE;
}
-bool32 PokenavCallback_Init_3(void)
+bool32 PokenavCallback_Init_ConditionSearchMenu(void)
{
struct Pokenav1Struct *state = AllocSubstruct(1, sizeof(struct Pokenav1Struct));
if (!state)
@@ -200,13 +200,13 @@ static u32 (*GetMainMenuInputHandler(void))(struct Pokenav1Struct*)
}
}
-u32 sub_81C941C(void)
+u32 GetMenuHandlerCallback(void)
{
struct Pokenav1Struct *state = GetSubstructPtr(1);
return state->callback(state);
}
-void sub_81C9430(void)
+void FreeMenuHandlerSubstruct1(void)
{
FreePokenavSubstruct(1);
}
@@ -222,7 +222,7 @@ static u32 HandleMainMenuInput(struct Pokenav1Struct *state)
{
case POKENAV_MENUITEM_MAP:
state->helpBarIndex = gSaveBlock2Ptr->regionMapZoom ? HELPBAR_MAP_ZOOMED_IN : HELPBAR_MAP_ZOOMED_OUT;
- sub_81C97B0(state, POKENAV_MENU_6);
+ SetMenuIdAndCB(state, POKENAV_REGION_MAP);
return POKENAV_MENU_FUNC_OPEN_FEATURE;
case POKENAV_MENUITEM_CONDITION:
state->menuType = POKENAV_MENU_TYPE_CONDITION;
@@ -232,13 +232,13 @@ static u32 HandleMainMenuInput(struct Pokenav1Struct *state)
return POKENAV_MENU_FUNC_OPEN_CONDITION;
case POKENAV_MENUITEM_MATCH_CALL:
state->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
- sub_81C97B0(state, POKENAV_MENU_B);
+ SetMenuIdAndCB(state, POKENAV_MATCH_CALL);
return POKENAV_MENU_FUNC_OPEN_FEATURE;
case POKENAV_MENUITEM_RIBBONS:
if (CanViewRibbonsMenu())
{
state->helpBarIndex = HELPBAR_RIBBONS_MON_LIST;
- sub_81C97B0(state, POKENAV_MENU_C);
+ SetMenuIdAndCB(state, POKENAV_RIBBONS_MON_LIST);
return POKENAV_MENU_FUNC_OPEN_FEATURE;
}
else
@@ -268,7 +268,7 @@ static u32 HandleMainMenuInputTutorial(struct Pokenav1Struct *state)
if (sMenuItems[state->menuType][state->cursorPos] == POKENAV_MENUITEM_MATCH_CALL)
{
state->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
- sub_81C97B0(state, POKENAV_MENU_B);
+ SetMenuIdAndCB(state, POKENAV_MATCH_CALL);
return POKENAV_MENU_FUNC_OPEN_FEATURE;
}
else
@@ -304,7 +304,7 @@ static u32 HandleMainMenuInputEndTutorial(struct Pokenav1Struct *state)
else if (menuItem == POKENAV_MENUITEM_MATCH_CALL)
{
state->helpBarIndex = HELPBAR_MC_TRAINER_LIST;
- sub_81C97B0(state, POKENAV_MENU_B);
+ SetMenuIdAndCB(state, POKENAV_MATCH_CALL);
return POKENAV_MENU_FUNC_OPEN_FEATURE;
}
else
@@ -355,7 +355,7 @@ static u32 HandleConditionMenuInput(struct Pokenav1Struct *state)
return POKENAV_MENU_FUNC_OPEN_CONDITION_SEARCH;
case POKENAV_MENUITEM_CONDITION_PARTY:
state->helpBarIndex = 0;
- sub_81C97B0(state, POKENAV_MENU_7);
+ SetMenuIdAndCB(state, POKENAV_CONDITION_PARTY);
return POKENAV_MENU_FUNC_OPEN_FEATURE;
case POKENAV_MENUITEM_CONDITION_CANCEL:
PlaySE(SE_SELECT);
@@ -393,7 +393,7 @@ static u32 HandleConditionSearchMenuInput(struct Pokenav1Struct *state)
if (menuItem != POKENAV_MENUITEM_CONDITION_SEARCH_CANCEL)
{
SetSelectedConditionSearch(menuItem - POKENAV_MENUITEM_CONDITION_SEARCH_COOL);
- sub_81C97B0(state, POKENAV_MENU_8);
+ SetMenuIdAndCB(state, POKENAV_CONDITION_SEARCH_RESULTS);
state->helpBarIndex = HELPBAR_CONDITION_MON_LIST;
return POKENAV_MENU_FUNC_OPEN_FEATURE;
}
@@ -434,15 +434,15 @@ static u32 CB2_ReturnToConditionMenu(struct Pokenav1Struct *state)
return POKENAV_MENU_FUNC_RETURN_TO_CONDITION;
}
-static void sub_81C97B0(struct Pokenav1Struct *state, u32 a1)
+static void SetMenuIdAndCB(struct Pokenav1Struct *state, u32 menuId)
{
- state->unk8 = a1;
- state->callback = sub_81C97BC;
+ state->menuId = menuId;
+ state->callback = GetMenuId;
}
-static u32 sub_81C97BC(struct Pokenav1Struct *state)
+static u32 GetMenuId(struct Pokenav1Struct *state)
{
- return state->unk8;
+ return state->menuId;
}
static void ReturnToMainMenu(struct Pokenav1Struct *state)
diff --git a/src/pokenav_menu_handler_2.c b/src/pokenav_menu_handler_2.c
index 94b816b6d..1dfbf3417 100644
--- a/src/pokenav_menu_handler_2.c
+++ b/src/pokenav_menu_handler_2.c
@@ -17,26 +17,24 @@
#include "constants/songs.h"
#include "constants/rgb.h"
-// Top Menu
-
struct Pokenav2Struct
{
- bool32 (*callback)(void);
+ bool32 (*isTaskActiveCB)(void);
u32 loopedTaskId;
u16 optionDescWindowId;
u8 bg3ScrollTaskId;
u8 cursorPos;
bool8 otherIconsInMotion;
- u8 field_00d;
+ bool8 pokenavAlreadyOpen;
bool32 iconVisible[MAX_POKENAV_MENUITEMS];
struct Sprite * field_028;
struct Sprite * iconSprites[MAX_POKENAV_MENUITEMS][4];
u16 bg1TilemapBuffer[0x400];
};
-static struct Pokenav2Struct * sub_81C9958(void);
-static bool32 sub_81C99FC(void);
-static u32 sub_81C9A10(s32 state);
+static struct Pokenav2Struct * OpenPokenavMenu(void);
+static bool32 GetCurrentLoopedTaskActive(void);
+static u32 LoopedTask_OpenMenu(s32 state);
static u32 LoopedTask_MoveMenuCursor(s32 state);
static u32 LoopedTask_OpenConditionMenu(s32 state);
static u32 LoopedTask_ReturnToMainMenu(s32 state);
@@ -337,59 +335,56 @@ static bool32 sub_81C98D4(void)
return FALSE;
}
-bool32 sub_81C9924(void)
+bool32 OpenPokenavMenuInitial(void)
{
- struct Pokenav2Struct * unk = sub_81C9958();
+ struct Pokenav2Struct * state = OpenPokenavMenu();
- if (unk == NULL)
+ if (state == NULL)
return FALSE;
- unk->field_00d = 0;
+ state->pokenavAlreadyOpen = FALSE;
return TRUE;
}
-bool32 sub_81C9940(void)
+bool32 OpenPokenavMenuNotInitial(void)
{
- struct Pokenav2Struct * unk = sub_81C9958();
+ struct Pokenav2Struct * state = OpenPokenavMenu();
- if (unk == NULL)
+ if (state == NULL)
return FALSE;
- unk->field_00d = 1;
+ state->pokenavAlreadyOpen = TRUE;
return TRUE;
}
-static struct Pokenav2Struct * sub_81C9958(void)
+static struct Pokenav2Struct * OpenPokenavMenu(void)
{
- struct Pokenav2Struct * unk = AllocSubstruct(2, sizeof(struct Pokenav2Struct));
+ struct Pokenav2Struct * state = AllocSubstruct(2, sizeof(struct Pokenav2Struct));
- if (unk != NULL)
+ if (state != NULL)
{
- unk->otherIconsInMotion = FALSE;
- unk->loopedTaskId = CreateLoopedTask(sub_81C9A10, 1);
- unk->callback = sub_81C99FC;
+ state->otherIconsInMotion = FALSE;
+ state->loopedTaskId = CreateLoopedTask(LoopedTask_OpenMenu, 1);
+ state->isTaskActiveCB = GetCurrentLoopedTaskActive;
}
- return unk;
+ return state;
}
-
void CreateMenuHandlerLoopedTask(s32 ltIdx)
{
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
-
- unk->loopedTaskId = CreateLoopedTask(sMenuHandlerLoopTaskFuncs[ltIdx], 1);
- unk->callback = sub_81C99FC;
+ struct Pokenav2Struct * state = GetSubstructPtr(2);
+ state->loopedTaskId = CreateLoopedTask(sMenuHandlerLoopTaskFuncs[ltIdx], 1);
+ state->isTaskActiveCB = GetCurrentLoopedTaskActive;
}
-bool32 sub_81C99C0(void)
+bool32 IsMenuHandlerLoopedTaskActive(void)
{
- struct Pokenav2Struct * unk = GetSubstructPtr(2);
-
- return unk->callback();
+ struct Pokenav2Struct * state = GetSubstructPtr(2);
+ return state->isTaskActiveCB();
}
-void sub_81C99D4(void)
+void FreeMenuHandlerSubstruct2(void)
{
struct Pokenav2Struct * unk = GetSubstructPtr(2);
@@ -400,14 +395,14 @@ void sub_81C99D4(void)
FreePokenavSubstruct(2);
}
-static bool32 sub_81C99FC(void)
+static bool32 GetCurrentLoopedTaskActive(void)
{
struct Pokenav2Struct * unk = GetSubstructPtr(2);
return IsLoopedTaskActive(unk->loopedTaskId);
}
-static u32 sub_81C9A10(s32 state)
+static u32 LoopedTask_OpenMenu(s32 state)
{
struct Pokenav2Struct * unk = GetSubstructPtr(2);
@@ -466,12 +461,12 @@ static u32 sub_81C9A10(s32 state)
ShowBg(1);
ShowBg(2);
ShowBg(3);
- if (unk->field_00d)
- sub_81C7AC0(1);
+ if (unk->pokenavAlreadyOpen)
+ PokenavFadeScreen(1);
else
{
PlaySE(SE_PN_ON);
- sub_81C7AC0(3);
+ PokenavFadeScreen(3);
}
switch (GetPokenavMenuType())
{
@@ -741,7 +736,7 @@ static u32 LoopedTask_OpenPokenavFeature(s32 state)
return LT_PAUSE;
if (sub_81C8010())
return LT_PAUSE;
- sub_81C7AC0(0);
+ PokenavFadeScreen(0);
return LT_INC_AND_PAUSE;
case 3:
if (IsPaletteFadeActive())
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;
}
diff --git a/src/pokenav_ribbons_1.c b/src/pokenav_ribbons_1.c
index 63b4adb30..db3b7f08e 100644
--- a/src/pokenav_ribbons_1.c
+++ b/src/pokenav_ribbons_1.c
@@ -188,7 +188,7 @@ static u32 sub_81CFA88(struct PokenavSub9 *structPtr)
static u32 sub_81CFB08(struct PokenavSub9 *structPtr)
{
- return POKENAV_MENU_5;
+ return POKENAV_MAIN_MENU_CURSOR_ON_RIBBONS;
}
static u32 sub_81CFB10(struct PokenavSub9 *structPtr)
@@ -446,7 +446,7 @@ static u32 sub_81CFEB8(s32 state)
ShowBg(2);
HideBg(3);
PrintHelpBarText(HELPBAR_RIBBONS_MON_LIST);
- sub_81C7AC0(1);
+ PokenavFadeScreen(1);
if (!unk->unkC)
{
LoadLeftHeaderGfxForIndex(2);
@@ -601,7 +601,7 @@ static u32 sub_81D01DC(s32 state)
{
case 0:
PlaySE(SE_SELECT);
- sub_81C7AC0(0);
+ PokenavFadeScreen(0);
sub_81C78A0();
return LT_INC_AND_PAUSE;
case 1:
@@ -621,7 +621,7 @@ static u32 sub_81D021C(s32 state)
{
case 0:
PlaySE(SE_SELECT);
- sub_81C7AC0(0);
+ PokenavFadeScreen(0);
return LT_INC_AND_PAUSE;
case 1:
if (IsPaletteFadeActive())
diff --git a/src/pokenav_ribbons_2.c b/src/pokenav_ribbons_2.c
index 2789b1244..f27b664ea 100644
--- a/src/pokenav_ribbons_2.c
+++ b/src/pokenav_ribbons_2.c
@@ -586,7 +586,7 @@ u32 sub_81D0A6C(s32 state)
ShowBg(1);
ShowBg(2);
HideBg(3);
- sub_81C7AC0(1);
+ PokenavFadeScreen(1);
return LT_INC_AND_PAUSE;
}
return LT_PAUSE;
@@ -604,7 +604,7 @@ u32 sub_81D0C54(s32 state)
{
case 0:
PlaySE(SE_SELECT);
- sub_81C7AC0(0);
+ PokenavFadeScreen(0);
return LT_INC_AND_PAUSE;
case 1:
if (IsPaletteFadeActive())
diff --git a/src/region_map.c b/src/region_map.c
index 5694d4c7a..e183261b9 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -28,6 +28,17 @@
#include "constants/heal_locations.h"
#include "constants/map_types.h"
#include "constants/rgb.h"
+#include "constants/weather.h"
+
+/*
+ * This file handles region maps generally, and the map used when selecting a fly destination.
+ * Specific features of other region map uses are handled elsewhere
+ *
+ * For the region map in the pokenav, see pokenav_region_map.c
+ * For the region map in the pokedex, see pokdex_area_screen.c/pokedex_area_region_map.c
+ * For the region map that can be viewed on the wall of pokemon centers, see field_region_map.c
+ *
+ */
#define MAP_WIDTH 28
#define MAP_HEIGHT 15
@@ -36,9 +47,11 @@
#define MAPCURSOR_X_MAX (MAPCURSOR_X_MIN + MAP_WIDTH - 1)
#define MAPCURSOR_Y_MAX (MAPCURSOR_Y_MIN + MAP_HEIGHT - 1)
+#define FLYDESTICON_RED_OUTLINE 6
+
// Static type declarations
-struct FlagControlledFlyDest
+struct MultiNameFlyDest
{
const u8 *const *name;
u16 mapSecId;
@@ -48,18 +61,18 @@ struct FlagControlledFlyDest
// Static RAM declarations
static EWRAM_DATA struct RegionMap *gRegionMap = NULL;
+
static EWRAM_DATA struct {
- /*0x000*/ void (*unk_000)(void);
- /*0x004*/ u16 unk_004;
- /*0x006*/ u16 mapSecId;
- /*0x008*/ struct RegionMap regionMap;
- /*0x88c*/ u8 unk_88c[0x1c0];
- /*0xa4c*/ u8 unk_a4c[0x26];
- /*0xa72*/ bool8 choseFlyLocation;
-} *sFlyMap = NULL; // a74
+ void (*callback)(void);
+ u16 state;
+ u16 mapSecId;
+ struct RegionMap regionMap;
+ u8 tileBuffer[0x1c0];
+ u8 nameBuffer[0x26]; // never read
+ bool8 choseFlyLocation;
+} *sFlyMap = NULL;
static bool32 gUnknown_03001180;
-static bool32 gUnknown_03001184;
// Static ROM declarations
@@ -68,44 +81,44 @@ static u8 MoveRegionMapCursor_Full(void);
static u8 ProcessRegionMapInput_Zoomed(void);
static u8 MoveRegionMapCursor_Zoomed(void);
static void CalcZoomScrollParams(s16 scrollX, s16 scrollY, s16 c, s16 d, u16 e, u16 f, u8 rotation);
-static u16 GetRegionMapSectionIdAt_Internal(u16 x, u16 y);
+static u16 GetMapSecIdAt(u16 x, u16 y);
static void RegionMap_SetBG2XAndBG2Y(s16 x, s16 y);
-static void RegionMap_InitializeStateBasedOnPlayerLocation(void);
+static void InitMapBasedOnPlayerLocation(void);
static void RegionMap_InitializeStateBasedOnSSTidalLocation(void);
-static u8 get_flagnr_blue_points(u16 mapSecId);
+static u8 GetMapsecType(u16 mapSecId);
static u16 CorrectSpecialMapSecId_Internal(u16 mapSecId);
-static u16 RegionMap_GetTerraCaveMapSecId(void);
-static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y);
-static bool32 RegionMap_IsPlayerInCave(u8 mapSecId);
-static void RegionMap_GetPositionOfCursorWithinMapSection(void);
+static u16 GetTerraOrMarineCaveMapSecId(void);
+static void GetMarineCaveCoords(u16 *x, u16 *y);
+static bool32 IsPlayerInAquaHideout(u8 mapSecId);
+static void GetPositionOfCursorWithinMapSec(void);
static bool8 RegionMap_IsMapSecIdInNextRow(u16 y);
-static void SpriteCallback_CursorFull(struct Sprite *sprite);
+static void SpriteCB_CursorMapFull(struct Sprite *sprite);
static void FreeRegionMapCursorSprite(void);
static void HideRegionMapPlayerIcon(void);
static void UnhideRegionMapPlayerIcon(void);
-static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite);
-static void RegionMapPlayerIconSpriteCallback_Full(struct Sprite *sprite);
-static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite);
-static void sub_81248C0(void);
-static void sub_81248D4(void);
-static void sub_81248F4(void callback(void));
-static void sub_8124904(void);
-static void sub_8124A70(void);
-static void sub_8124AD4(void);
-static void sub_8124BE4(void);
-static void sub_8124CBC(struct Sprite *sprite);
-static void sub_8124D14(void);
-static void sub_8124D64(void);
-static void sub_8124E0C(void);
+static void SpriteCB_PlayerIconMapZoomed(struct Sprite *sprite);
+static void SpriteCB_PlayerIconMapFull(struct Sprite *sprite);
+static void SpriteCB_PlayerIcon(struct Sprite *sprite);
+static void VBlankCB_FlyMap(void);
+static void CB2_FlyMap(void);
+static void SetFlyMapCallback(void callback(void));
+static void DrawFlyDestTextWindow(void);
+static void LoadFlyDestIcons(void);
+static void CreateFlyDestIcons(void);
+static void TryCreateRedOutlineFlyDestIcons(void);
+static void SpriteCB_FlyDestIcon(struct Sprite *sprite);
+static void CB_FadeInFlyMap(void);
+static void CB_HandleFlyMapInput(void);
+static void CB_ExitFlyMap(void);
// .rodata
static const u16 sRegionMapCursorPal[] = INCBIN_U16("graphics/pokenav/cursor.gbapal");
static const u32 sRegionMapCursorSmallGfxLZ[] = INCBIN_U32("graphics/pokenav/cursor_small.4bpp.lz");
static const u32 sRegionMapCursorLargeGfxLZ[] = INCBIN_U32("graphics/pokenav/cursor_large.4bpp.lz");
-static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map.gbapal");
-static const u32 sRegionMapBkgnd_GfxLZ[] = INCBIN_U32("graphics/pokenav/region_map.8bpp.lz");
-static const u32 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U32("graphics/pokenav/region_map_map.bin.lz");
+static const u16 sRegionMapBg_Pal[] = INCBIN_U16("graphics/pokenav/region_map.gbapal");
+static const u32 sRegionMapBg_GfxLZ[] = INCBIN_U32("graphics/pokenav/region_map.8bpp.lz");
+static const u32 sRegionMapBg_TilemapLZ[] = INCBIN_U32("graphics/pokenav/region_map_map.bin.lz");
static const u16 sRegionMapPlayerIcon_BrendanPal[] = INCBIN_U16("graphics/pokenav/brendan_icon.gbapal");
static const u8 sRegionMapPlayerIcon_BrendanGfx[] = INCBIN_U8("graphics/pokenav/brendan_icon.4bpp");
static const u16 sRegionMapPlayerIcon_MayPal[] = INCBIN_U16("graphics/pokenav/may_icon.gbapal");
@@ -137,52 +150,54 @@ static const u16 sRegionMap_SpecialPlaceLocations[][2] =
{MAPSEC_MIRAGE_TOWER, MAPSEC_ROUTE_111},
{MAPSEC_TRAINER_HILL, MAPSEC_ROUTE_111},
{MAPSEC_DESERT_UNDERPASS, MAPSEC_ROUTE_114},
- {MAPSEC_ALTERING_CAVE_2, MAPSEC_ROUTE_103},
+ {MAPSEC_ALTERING_CAVE, MAPSEC_ROUTE_103},
{MAPSEC_ARTISAN_CAVE, MAPSEC_ROUTE_103},
{MAPSEC_ABANDONED_SHIP, MAPSEC_ROUTE_108},
{MAPSEC_NONE, MAPSEC_NONE}
};
-static const u16 sRegionMap_MarineCaveMapSecIds[] =
+static const u16 sMarineCaveMapSecIds[] =
{
MAPSEC_MARINE_CAVE,
MAPSEC_UNDERWATER_MARINE_CAVE,
MAPSEC_UNDERWATER_MARINE_CAVE
};
-static const u16 sTerraCaveMapSectionIds[] =
-{
- MAPSEC_ROUTE_114,
- MAPSEC_ROUTE_114,
- MAPSEC_ROUTE_115,
- MAPSEC_ROUTE_115,
- MAPSEC_ROUTE_116,
- MAPSEC_ROUTE_116,
- MAPSEC_ROUTE_118,
- MAPSEC_ROUTE_118,
- MAPSEC_ROUTE_105,
- MAPSEC_ROUTE_105,
- MAPSEC_ROUTE_125,
- MAPSEC_ROUTE_125,
- MAPSEC_ROUTE_127,
- MAPSEC_ROUTE_127,
- MAPSEC_ROUTE_129,
- MAPSEC_ROUTE_129
+static const u16 sTerraOrMarineCaveMapSecIds[ABNORMAL_WEATHER_LOCATIONS] =
+{
+ [ABNORMAL_WEATHER_ROUTE_114_NORTH - 1] = MAPSEC_ROUTE_114,
+ [ABNORMAL_WEATHER_ROUTE_114_SOUTH - 1] = MAPSEC_ROUTE_114,
+ [ABNORMAL_WEATHER_ROUTE_115_WEST - 1] = MAPSEC_ROUTE_115,
+ [ABNORMAL_WEATHER_ROUTE_115_EAST - 1] = MAPSEC_ROUTE_115,
+ [ABNORMAL_WEATHER_ROUTE_116_NORTH - 1] = MAPSEC_ROUTE_116,
+ [ABNORMAL_WEATHER_ROUTE_116_SOUTH - 1] = MAPSEC_ROUTE_116,
+ [ABNORMAL_WEATHER_ROUTE_118_EAST - 1] = MAPSEC_ROUTE_118,
+ [ABNORMAL_WEATHER_ROUTE_118_WEST - 1] = MAPSEC_ROUTE_118,
+ [ABNORMAL_WEATHER_ROUTE_105_NORTH - 1] = MAPSEC_ROUTE_105,
+ [ABNORMAL_WEATHER_ROUTE_105_SOUTH - 1] = MAPSEC_ROUTE_105,
+ [ABNORMAL_WEATHER_ROUTE_125_WEST - 1] = MAPSEC_ROUTE_125,
+ [ABNORMAL_WEATHER_ROUTE_125_EAST - 1] = MAPSEC_ROUTE_125,
+ [ABNORMAL_WEATHER_ROUTE_127_NORTH - 1] = MAPSEC_ROUTE_127,
+ [ABNORMAL_WEATHER_ROUTE_127_SOUTH - 1] = MAPSEC_ROUTE_127,
+ [ABNORMAL_WEATHER_ROUTE_129_WEST - 1] = MAPSEC_ROUTE_129,
+ [ABNORMAL_WEATHER_ROUTE_129_EAST - 1] = MAPSEC_ROUTE_129
};
-static const struct UCoords16 sTerraCaveLocationCoords[] =
+#define MARINE_CAVE_COORD(location)(ABNORMAL_WEATHER_##location - MARINE_CAVE_LOCATIONS_START)
+
+static const struct UCoords16 sMarineCaveLocationCoords[MARINE_CAVE_LOCATIONS] =
{
- {0x00, 0x0a},
- {0x00, 0x0c},
- {0x18, 0x03},
- {0x19, 0x04},
- {0x19, 0x06},
- {0x19, 0x07},
- {0x18, 0x0a},
- {0x18, 0x0a}
+ [MARINE_CAVE_COORD(ROUTE_105_NORTH)] = {0, 10},
+ [MARINE_CAVE_COORD(ROUTE_105_SOUTH)] = {0, 12},
+ [MARINE_CAVE_COORD(ROUTE_125_WEST)] = {24, 3},
+ [MARINE_CAVE_COORD(ROUTE_125_EAST)] = {25, 4},
+ [MARINE_CAVE_COORD(ROUTE_127_NORTH)] = {25, 6},
+ [MARINE_CAVE_COORD(ROUTE_127_SOUTH)] = {25, 7},
+ [MARINE_CAVE_COORD(ROUTE_129_WEST)] = {24, 10},
+ [MARINE_CAVE_COORD(ROUTE_129_EAST)] = {24, 10}
};
-static const u8 sRegionMap_MapSecAquaHideoutOld[] =
+static const u8 sMapSecAquaHideoutOld[] =
{
MAPSEC_AQUA_HIDEOUT_OLD
};
@@ -230,7 +245,7 @@ static const struct SpriteTemplate sRegionMapCursorSpriteTemplate =
.anims = sRegionMapCursorAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCallback_CursorFull
+ .callback = SpriteCB_CursorMapFull
};
static const struct OamData sRegionMapPlayerIconOam =
@@ -251,11 +266,12 @@ static const union AnimCmd *const sRegionMapPlayerIconAnimTable[] =
sRegionMapPlayerIconAnim1
};
-static const u8 sRegionMapEventSectionIds[] =
+// Event islands that don't appear on map. (Southern Island does)
+static const u8 sMapSecIdsOffMap[] =
{
- MAPSEC_BIRTH_ISLAND_2,
+ MAPSEC_BIRTH_ISLAND,
MAPSEC_FARAWAY_ISLAND,
- MAPSEC_NAVEL_ROCK2
+ MAPSEC_NAVEL_ROCK
};
static const u16 sRegionMapFramePal[] = INCBIN_U16("graphics/pokenav/map_frame.gbapal");
@@ -264,9 +280,9 @@ static const u32 sRegionMapFrameGfxLZ[] = INCBIN_U32("graphics/pokenav/map_frame
static const u32 sRegionMapFrameTilemapLZ[] = INCBIN_U32("graphics/pokenav/map_frame.bin.lz");
-static const u16 Unknown_085A1D48[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal");
+static const u16 sFlyTargetIcons_Pal[] = INCBIN_U16("graphics/pokenav/fly_target_icons.gbapal");
-static const u32 sUnknown_085A1D68[] = INCBIN_U32("graphics/pokenav/fly_target_icons.4bpp.lz");
+static const u32 sFlyTargetIcons_Gfx[] = INCBIN_U32("graphics/pokenav/fly_target_icons.4bpp.lz");
static const u8 sMapHealLocations[][3] =
{
@@ -285,7 +301,7 @@ static const u8 sMapHealLocations[][3] =
{MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), HEAL_LOCATION_LILYCOVE_CITY},
{MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), HEAL_LOCATION_MOSSDEEP_CITY},
{MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), HEAL_LOCATION_SOOTOPOLIS_CITY},
- {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), HEAL_LOCATION_EVER_GRANDE_CITY_1},
+ {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), HEAL_LOCATION_EVER_GRANDE_CITY},
{MAP_GROUP(ROUTE101), MAP_NUM(ROUTE101), 0},
{MAP_GROUP(ROUTE102), MAP_NUM(ROUTE102), 0},
{MAP_GROUP(ROUTE103), MAP_NUM(ROUTE103), 0},
@@ -322,22 +338,22 @@ static const u8 sMapHealLocations[][3] =
{MAP_GROUP(ROUTE134), MAP_NUM(ROUTE134), 0}
};
-static const u8 *const gUnknown_085A1ED4[] =
+static const u8 *const sEverGrandeCityNames[] =
{
gText_PokemonLeague,
gText_PokemonCenter
};
-static const struct FlagControlledFlyDest gUnknown_085A1EDC[] =
+static const struct MultiNameFlyDest sMultiNameFlyDestinations[] =
{
{
- .name = gUnknown_085A1ED4,
+ .name = sEverGrandeCityNames,
.mapSecId = MAPSEC_EVER_GRANDE_CITY,
.flag = FLAG_LANDMARK_POKEMON_LEAGUE
}
};
-static const struct BgTemplate gUnknown_085A1EE4[] =
+static const struct BgTemplate sFlyMapBgTemplates[] =
{
{
.bg = 0,
@@ -365,7 +381,7 @@ static const struct BgTemplate gUnknown_085A1EE4[] =
}
};
-static const struct WindowTemplate gUnknown_085A1EF0[] =
+static const struct WindowTemplate sFlyMapWindowTemplates[] =
{
{
.bg = 0,
@@ -397,13 +413,13 @@ static const struct WindowTemplate gUnknown_085A1EF0[] =
DUMMY_WIN_TEMPLATE
};
-static const struct SpritePalette gUnknown_085A1F10 =
+static const struct SpritePalette sFlyTargetIconsSpritePalette =
{
- .data = Unknown_085A1D48,
+ .data = sFlyTargetIcons_Pal,
.tag = 2
};
-static const u16 sUnknown_085A1F18[][2] =
+static const u16 sRedOutlineFlyDestinations[][2] =
{
{
FLAG_LANDMARK_BATTLE_FRONTIER,
@@ -415,72 +431,73 @@ static const u16 sUnknown_085A1F18[][2] =
}
};
-static const struct OamData gOamData_085A1F20 =
+static const struct OamData sFlyDestIcon_OamData =
{
.shape = SPRITE_SHAPE(8x8),
.size = SPRITE_SIZE(8x8),
.priority = 2
};
-static const union AnimCmd gUnknown_085A1F28[] =
+static const union AnimCmd sFlyDestIcon_Anim_8x8CanFly[] =
{
ANIMCMD_FRAME( 0, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F30[] =
+static const union AnimCmd sFlyDestIcon_Anim_16x8CanFly[] =
{
ANIMCMD_FRAME( 1, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F38[] =
+static const union AnimCmd sFlyDestIcon_Anim_8x16CanFly[] =
{
ANIMCMD_FRAME( 3, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F40[] =
+static const union AnimCmd sFlyDestIcon_Anim_8x8CantFly[] =
{
ANIMCMD_FRAME( 5, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F48[] =
+static const union AnimCmd sFlyDestIcon_Anim_16x8CantFly[] =
{
ANIMCMD_FRAME( 6, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F50[] =
+static const union AnimCmd sFlyDestIcon_Anim_8x16CantFly[] =
{
ANIMCMD_FRAME( 8, 5),
ANIMCMD_END
};
-static const union AnimCmd gUnknown_085A1F58[] =
+// Only used by Battle Frontier
+static const union AnimCmd sFlyDestIcon_Anim_RedOutline[] =
{
ANIMCMD_FRAME(10, 5),
ANIMCMD_END
};
-static const union AnimCmd *const gUnknown_085A1F60[] =
+static const union AnimCmd *const sFlyDestIcon_Anims[] =
{
- gUnknown_085A1F28,
- gUnknown_085A1F30,
- gUnknown_085A1F38,
- gUnknown_085A1F40,
- gUnknown_085A1F48,
- gUnknown_085A1F50,
- gUnknown_085A1F58
+ [SPRITE_SHAPE(8x8)] = sFlyDestIcon_Anim_8x8CanFly,
+ [SPRITE_SHAPE(16x8)] = sFlyDestIcon_Anim_16x8CanFly,
+ [SPRITE_SHAPE(8x16)] = sFlyDestIcon_Anim_8x16CanFly,
+ [SPRITE_SHAPE(8x8) + 3] = sFlyDestIcon_Anim_8x8CantFly,
+ [SPRITE_SHAPE(16x8) + 3] = sFlyDestIcon_Anim_16x8CantFly,
+ [SPRITE_SHAPE(8x16) + 3] = sFlyDestIcon_Anim_8x16CantFly,
+ [FLYDESTICON_RED_OUTLINE] = sFlyDestIcon_Anim_RedOutline
};
-static const struct SpriteTemplate gUnknown_085A1F7C =
+static const struct SpriteTemplate sFlyDestIconSpriteTemplate =
{
.tileTag = 2,
.paletteTag = 2,
- .oam = &gOamData_085A1F20,
- .anims = gUnknown_085A1F60,
+ .oam = &sFlyDestIcon_OamData,
+ .anims = sFlyDestIcon_Anims,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.callback = SpriteCallbackDummy
@@ -490,11 +507,11 @@ static const struct SpriteTemplate gUnknown_085A1F7C =
void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed)
{
- sub_8122CF8(regionMap, NULL, zoomed);
- while (sub_8122DB0());
+ InitRegionMapData(regionMap, NULL, zoomed);
+ while (LoadRegionMapGfx());
}
-void sub_8122CF8(struct RegionMap *regionMap, const struct BgTemplate *template, bool8 zoomed)
+void InitRegionMapData(struct RegionMap *regionMap, const struct BgTemplate *template, bool8 zoomed)
{
gRegionMap = regionMap;
gRegionMap->initStep = 0;
@@ -516,46 +533,38 @@ void sub_8122CF8(struct RegionMap *regionMap, const struct BgTemplate *template,
}
}
-void sub_8122D88(struct RegionMap *regionMap)
+void ShowRegionMapForPokedexAreaScreen(struct RegionMap *regionMap)
{
gRegionMap = regionMap;
- RegionMap_InitializeStateBasedOnPlayerLocation();
+ InitMapBasedOnPlayerLocation();
gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX;
gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY;
}
-bool8 sub_8122DB0(void)
+bool8 LoadRegionMapGfx(void)
{
switch (gRegionMap->initStep)
{
case 0:
if (gRegionMap->bgManaged)
- {
- decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_GfxLZ, 0, 0, 0);
- }
+ decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBg_GfxLZ, 0, 0, 0);
else
- {
- LZ77UnCompVram(sRegionMapBkgnd_GfxLZ, (u16 *)BG_CHAR_ADDR(2));
- }
+ LZ77UnCompVram(sRegionMapBg_GfxLZ, (u16 *)BG_CHAR_ADDR(2));
break;
case 1:
if (gRegionMap->bgManaged)
{
if (!free_temp_tile_data_buffers_if_possible())
- {
- decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBkgnd_TilemapLZ, 0, 0, 1);
- }
+ decompress_and_copy_tile_data_to_vram(gRegionMap->bgNum, sRegionMapBg_TilemapLZ, 0, 0, 1);
}
else
{
- LZ77UnCompVram(sRegionMapBkgnd_TilemapLZ, (u16 *)BG_SCREEN_ADDR(28));
+ LZ77UnCompVram(sRegionMapBg_TilemapLZ, (u16 *)BG_SCREEN_ADDR(28));
}
break;
case 2:
if (!free_temp_tile_data_buffers_if_possible())
- {
- LoadPalette(sRegionMapBkgnd_Pal, 0x70, 0x60);
- }
+ LoadPalette(sRegionMapBg_Pal, 0x70, 0x60);
break;
case 3:
LZ77UnCompWram(sRegionMapCursorSmallGfxLZ, gRegionMap->cursorSmallImage);
@@ -564,12 +573,12 @@ bool8 sub_8122DB0(void)
LZ77UnCompWram(sRegionMapCursorLargeGfxLZ, gRegionMap->cursorLargeImage);
break;
case 5:
- RegionMap_InitializeStateBasedOnPlayerLocation();
+ InitMapBasedOnPlayerLocation();
gRegionMap->playerIconSpritePosX = gRegionMap->cursorPosX;
gRegionMap->playerIconSpritePosY = gRegionMap->cursorPosY;
gRegionMap->mapSecId = CorrectSpecialMapSecId_Internal(gRegionMap->mapSecId);
- gRegionMap->iconDrawType = get_flagnr_blue_points(gRegionMap->mapSecId);
- GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ gRegionMap->mapSecType = GetMapsecType(gRegionMap->mapSecId);
+ GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH);
break;
case 6:
if (gRegionMap->zoomed == FALSE)
@@ -586,7 +595,7 @@ bool8 sub_8122DB0(void)
}
break;
case 7:
- RegionMap_GetPositionOfCursorWithinMapSection();
+ GetPositionOfCursorWithinMapSec();
UpdateRegionMapVideoRegs();
gRegionMap->cursorSprite = NULL;
gRegionMap->playerIconSprite = NULL;
@@ -609,9 +618,9 @@ bool8 sub_8122DB0(void)
return TRUE;
}
-void sub_8123030(u16 a0, u32 a1)
+void sub_8123030(u16 color, u32 coeff)
{
- BlendPalettes(0x380, a1, a0);
+ BlendPalettes(0x380, coeff, color);
CpuCopy16(gPlttBufferFaded + 0x70, gPlttBufferUnfaded + 0x70, 0x60);
}
@@ -631,7 +640,7 @@ void FreeRegionMapIconResources(void)
}
}
-u8 sub_81230AC(void)
+u8 DoRegionMapInputCallback(void)
{
return gRegionMap->inputCallback();
}
@@ -640,38 +649,38 @@ static u8 ProcessRegionMapInput_Full(void)
{
u8 input;
- input = INPUT_EVENT_NONE;
+ input = MAP_INPUT_NONE;
gRegionMap->cursorDeltaX = 0;
gRegionMap->cursorDeltaY = 0;
if (gMain.heldKeys & DPAD_UP && gRegionMap->cursorPosY > MAPCURSOR_Y_MIN)
{
gRegionMap->cursorDeltaY = -1;
- input = INPUT_EVENT_MOVE_START;
+ input = MAP_INPUT_MOVE_START;
}
if (gMain.heldKeys & DPAD_DOWN && gRegionMap->cursorPosY < MAPCURSOR_Y_MAX)
{
gRegionMap->cursorDeltaY = +1;
- input = INPUT_EVENT_MOVE_START;
+ input = MAP_INPUT_MOVE_START;
}
if (gMain.heldKeys & DPAD_LEFT && gRegionMap->cursorPosX > MAPCURSOR_X_MIN)
{
gRegionMap->cursorDeltaX = -1;
- input = INPUT_EVENT_MOVE_START;
+ input = MAP_INPUT_MOVE_START;
}
if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->cursorPosX < MAPCURSOR_X_MAX)
{
gRegionMap->cursorDeltaX = +1;
- input = INPUT_EVENT_MOVE_START;
+ input = MAP_INPUT_MOVE_START;
}
if (gMain.newKeys & A_BUTTON)
{
- input = INPUT_EVENT_A_BUTTON;
+ input = MAP_INPUT_A_BUTTON;
}
else if (gMain.newKeys & B_BUTTON)
{
- input = INPUT_EVENT_B_BUTTON;
+ input = MAP_INPUT_B_BUTTON;
}
- if (input == INPUT_EVENT_MOVE_START)
+ if (input == MAP_INPUT_MOVE_START)
{
gRegionMap->cursorMovementFrameCounter = 4;
gRegionMap->inputCallback = MoveRegionMapCursor_Full;
@@ -684,9 +693,8 @@ static u8 MoveRegionMapCursor_Full(void)
u16 mapSecId;
if (gRegionMap->cursorMovementFrameCounter != 0)
- {
- return INPUT_EVENT_MOVE_CONT;
- }
+ return MAP_INPUT_MOVE_CONT;
+
if (gRegionMap->cursorDeltaX > 0)
{
gRegionMap->cursorPosX++;
@@ -703,54 +711,55 @@ static u8 MoveRegionMapCursor_Full(void)
{
gRegionMap->cursorPosY--;
}
- mapSecId = GetRegionMapSectionIdAt_Internal(gRegionMap->cursorPosX, gRegionMap->cursorPosY);
- gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId);
+
+ mapSecId = GetMapSecIdAt(gRegionMap->cursorPosX, gRegionMap->cursorPosY);
+ gRegionMap->mapSecType = GetMapsecType(mapSecId);
if (mapSecId != gRegionMap->mapSecId)
{
gRegionMap->mapSecId = mapSecId;
- GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH);
}
- RegionMap_GetPositionOfCursorWithinMapSection();
+ GetPositionOfCursorWithinMapSec();
gRegionMap->inputCallback = ProcessRegionMapInput_Full;
- return INPUT_EVENT_MOVE_END;
+ return MAP_INPUT_MOVE_END;
}
static u8 ProcessRegionMapInput_Zoomed(void)
{
u8 input;
- input = INPUT_EVENT_NONE;
+ input = MAP_INPUT_NONE;
gRegionMap->zoomedCursorDeltaX = 0;
gRegionMap->zoomedCursorDeltaY = 0;
if (gMain.heldKeys & DPAD_UP && gRegionMap->scrollY > -0x34)
{
gRegionMap->zoomedCursorDeltaY = -1;
- input = INPUT_EVENT_MOVE_START;
+ input = MAP_INPUT_MOVE_START;
}
if (gMain.heldKeys & DPAD_DOWN && gRegionMap->scrollY < 0x3c)
{
gRegionMap->zoomedCursorDeltaY = +1;
- input = INPUT_EVENT_MOVE_START;
+ input = MAP_INPUT_MOVE_START;
}
if (gMain.heldKeys & DPAD_LEFT && gRegionMap->scrollX > -0x2c)
{
gRegionMap->zoomedCursorDeltaX = -1;
- input = INPUT_EVENT_MOVE_START;
+ input = MAP_INPUT_MOVE_START;
}
if (gMain.heldKeys & DPAD_RIGHT && gRegionMap->scrollX < 0xac)
{
gRegionMap->zoomedCursorDeltaX = +1;
- input = INPUT_EVENT_MOVE_START;
+ input = MAP_INPUT_MOVE_START;
}
if (gMain.newKeys & A_BUTTON)
{
- input = INPUT_EVENT_A_BUTTON;
+ input = MAP_INPUT_A_BUTTON;
}
if (gMain.newKeys & B_BUTTON)
{
- input = INPUT_EVENT_B_BUTTON;
+ input = MAP_INPUT_B_BUTTON;
}
- if (input == INPUT_EVENT_MOVE_START)
+ if (input == MAP_INPUT_MOVE_START)
{
gRegionMap->inputCallback = MoveRegionMapCursor_Zoomed;
gRegionMap->zoomedCursorMovementFrameCounter = 0;
@@ -776,23 +785,23 @@ static u8 MoveRegionMapCursor_Zoomed(void)
{
gRegionMap->zoomedCursorPosX = x;
gRegionMap->zoomedCursorPosY = y;
- mapSecId = GetRegionMapSectionIdAt_Internal(x, y);
- gRegionMap->iconDrawType = get_flagnr_blue_points(mapSecId);
+ mapSecId = GetMapSecIdAt(x, y);
+ gRegionMap->mapSecType = GetMapsecType(mapSecId);
if (mapSecId != gRegionMap->mapSecId)
{
gRegionMap->mapSecId = mapSecId;
- GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, 16);
+ GetMapName(gRegionMap->mapSecName, gRegionMap->mapSecId, MAP_NAME_LENGTH);
}
- RegionMap_GetPositionOfCursorWithinMapSection();
+ GetPositionOfCursorWithinMapSec();
}
gRegionMap->zoomedCursorMovementFrameCounter = 0;
gRegionMap->inputCallback = ProcessRegionMapInput_Zoomed;
- return INPUT_EVENT_MOVE_END;
+ return MAP_INPUT_MOVE_END;
}
- return INPUT_EVENT_MOVE_CONT;
+ return MAP_INPUT_MOVE_CONT;
}
-void sub_8123418(void)
+void SetRegionMapDataForZoom(void)
{
if (gRegionMap->zoomed == FALSE)
{
@@ -827,13 +836,13 @@ void sub_8123418(void)
HideRegionMapPlayerIcon();
}
-bool8 sub_8123514(void)
+bool8 UpdateRegionMapZoom(void)
{
bool8 retVal;
if (gRegionMap->unk_06e >= 16)
{
- return 0;
+ return FALSE;
}
gRegionMap->unk_06e++;
if (gRegionMap->unk_06e == 16)
@@ -945,7 +954,7 @@ void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y)
}
}
-static u16 GetRegionMapSectionIdAt_Internal(u16 x, u16 y)
+static u16 GetMapSecIdAt(u16 x, u16 y)
{
if (y < MAPCURSOR_Y_MIN || y > MAPCURSOR_Y_MAX || x < MAPCURSOR_X_MIN || x > MAPCURSOR_X_MAX)
{
@@ -956,7 +965,7 @@ static u16 GetRegionMapSectionIdAt_Internal(u16 x, u16 y)
return sRegionMap_MapSectionLayout[x + y * MAP_WIDTH];
}
-static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
+static void InitMapBasedOnPlayerLocation(void)
{
const struct MapHeader *mapHeader;
u16 mapWidth;
@@ -978,80 +987,76 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
switch (GetMapTypeByGroupAndId(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum))
{
- default:
- case MAP_TYPE_TOWN:
- case MAP_TYPE_CITY:
- case MAP_TYPE_ROUTE:
- case MAP_TYPE_UNDERWATER:
- case MAP_TYPE_OCEAN_ROUTE:
- gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
- gRegionMap->playerIsInCave = FALSE;
- mapWidth = gMapHeader.mapLayout->width;
- mapHeight = gMapHeader.mapLayout->height;
- x = gSaveBlock1Ptr->pos.x;
- y = gSaveBlock1Ptr->pos.y;
- if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_128 || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE)
- {
- gRegionMap->playerIsInCave = TRUE;
- }
- break;
- case MAP_TYPE_UNDERGROUND:
- case MAP_TYPE_UNUSED_2:
- if (gMapHeader.flags & MAP_ALLOW_ESCAPE_ROPE)
- {
- mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
- gRegionMap->mapSecId = mapHeader->regionMapSectionId;
- gRegionMap->playerIsInCave = TRUE;
- mapWidth = mapHeader->mapLayout->width;
- mapHeight = mapHeader->mapLayout->height;
- x = gSaveBlock1Ptr->escapeWarp.x;
- y = gSaveBlock1Ptr->escapeWarp.y;
- }
- else
- {
- gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
- gRegionMap->playerIsInCave = TRUE;
- mapWidth = 1;
- mapHeight = 1;
- x = 1;
- y = 1;
- }
- break;
- case MAP_TYPE_SECRET_BASE:
- mapHeader = Overworld_GetMapHeaderByGroupAndId((u16)gSaveBlock1Ptr->dynamicWarp.mapGroup, (u16)gSaveBlock1Ptr->dynamicWarp.mapNum);
+ default:
+ case MAP_TYPE_TOWN:
+ case MAP_TYPE_CITY:
+ case MAP_TYPE_ROUTE:
+ case MAP_TYPE_UNDERWATER:
+ case MAP_TYPE_OCEAN_ROUTE:
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ gRegionMap->playerIsInCave = FALSE;
+ mapWidth = gMapHeader.mapLayout->width;
+ mapHeight = gMapHeader.mapLayout->height;
+ x = gSaveBlock1Ptr->pos.x;
+ y = gSaveBlock1Ptr->pos.y;
+ if (gRegionMap->mapSecId == MAPSEC_UNDERWATER_128 || gRegionMap->mapSecId == MAPSEC_UNDERWATER_MARINE_CAVE)
+ gRegionMap->playerIsInCave = TRUE;
+ break;
+ case MAP_TYPE_UNDERGROUND:
+ case MAP_TYPE_UNUSED_2:
+ if (gMapHeader.flags & MAP_ALLOW_ESCAPE_ROPE)
+ {
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1Ptr->escapeWarp.mapGroup, gSaveBlock1Ptr->escapeWarp.mapNum);
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
gRegionMap->playerIsInCave = TRUE;
mapWidth = mapHeader->mapLayout->width;
mapHeight = mapHeader->mapLayout->height;
- x = gSaveBlock1Ptr->dynamicWarp.x;
- y = gSaveBlock1Ptr->dynamicWarp.y;
- break;
- case MAP_TYPE_INDOOR:
+ x = gSaveBlock1Ptr->escapeWarp.x;
+ y = gSaveBlock1Ptr->escapeWarp.y;
+ }
+ else
+ {
gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
- if (gRegionMap->mapSecId != MAPSEC_DYNAMIC)
- {
- warp = &gSaveBlock1Ptr->escapeWarp;
- mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum);
- }
- else
- {
- warp = &gSaveBlock1Ptr->dynamicWarp;
- mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum);
- gRegionMap->mapSecId = mapHeader->regionMapSectionId;
- }
- if (RegionMap_IsPlayerInCave(gRegionMap->mapSecId))
- {
- gRegionMap->playerIsInCave = TRUE;
- }
- else
- {
- gRegionMap->playerIsInCave = FALSE;
- }
- mapWidth = mapHeader->mapLayout->width;
- mapHeight = mapHeader->mapLayout->height;
- x = warp->x;
- y = warp->y;
- break;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = 1;
+ mapHeight = 1;
+ x = 1;
+ y = 1;
+ }
+ break;
+ case MAP_TYPE_SECRET_BASE:
+ mapHeader = Overworld_GetMapHeaderByGroupAndId((u16)gSaveBlock1Ptr->dynamicWarp.mapGroup, (u16)gSaveBlock1Ptr->dynamicWarp.mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ gRegionMap->playerIsInCave = TRUE;
+ mapWidth = mapHeader->mapLayout->width;
+ mapHeight = mapHeader->mapLayout->height;
+ x = gSaveBlock1Ptr->dynamicWarp.x;
+ y = gSaveBlock1Ptr->dynamicWarp.y;
+ break;
+ case MAP_TYPE_INDOOR:
+ gRegionMap->mapSecId = gMapHeader.regionMapSectionId;
+ if (gRegionMap->mapSecId != MAPSEC_DYNAMIC)
+ {
+ warp = &gSaveBlock1Ptr->escapeWarp;
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum);
+ }
+ else
+ {
+ warp = &gSaveBlock1Ptr->dynamicWarp;
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum);
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ }
+
+ if (IsPlayerInAquaHideout(gRegionMap->mapSecId))
+ gRegionMap->playerIsInCave = TRUE;
+ else
+ gRegionMap->playerIsInCave = FALSE;
+
+ mapWidth = mapHeader->mapLayout->width;
+ mapHeight = mapHeader->mapLayout->height;
+ x = warp->x;
+ y = warp->y;
+ break;
}
xOnMap = x;
@@ -1080,51 +1085,36 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
switch (gRegionMap->mapSecId)
{
- case MAPSEC_ROUTE_114:
- if (y != 0)
- {
- x = 0;
- }
- break;
- case MAPSEC_ROUTE_126:
- case MAPSEC_UNDERWATER_125:
+ case MAPSEC_ROUTE_114:
+ if (y != 0)
x = 0;
- if (gSaveBlock1Ptr->pos.x > 32)
- {
- x = 1;
- }
- if (gSaveBlock1Ptr->pos.x > 0x33)
- {
- x++;
- }
- y = 0;
- if (gSaveBlock1Ptr->pos.y > 0x25)
- {
- y = 1;
- }
- if (gSaveBlock1Ptr->pos.y > 0x38)
- {
- y++;
- }
- break;
- case MAPSEC_ROUTE_121:
- x = 0;
- if (xOnMap > 14)
- {
- x = 1;
- }
- if (xOnMap > 0x1C)
- {
- x++;
- }
- if (xOnMap > 0x36)
- {
- x++;
- }
- break;
- case MAPSEC_UNDERWATER_MARINE_CAVE:
- RegionMap_GetMarineCaveCoords(&gRegionMap->cursorPosX, &gRegionMap->cursorPosY);
- return;
+ break;
+ case MAPSEC_ROUTE_126:
+ case MAPSEC_UNDERWATER_125:
+ x = 0;
+ if (gSaveBlock1Ptr->pos.x > 32)
+ x++;
+ if (gSaveBlock1Ptr->pos.x > 51)
+ x++;
+
+ y = 0;
+ if (gSaveBlock1Ptr->pos.y > 37)
+ y++;
+ if (gSaveBlock1Ptr->pos.y > 56)
+ y++;
+ break;
+ case MAPSEC_ROUTE_121:
+ x = 0;
+ if (xOnMap > 14)
+ x++;
+ if (xOnMap > 28)
+ x++;
+ if (xOnMap > 54)
+ x++;
+ break;
+ case MAPSEC_UNDERWATER_MARINE_CAVE:
+ GetMarineCaveCoords(&gRegionMap->cursorPosX, &gRegionMap->cursorPosY);
+ return;
}
gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
@@ -1145,104 +1135,104 @@ static void RegionMap_InitializeStateBasedOnSSTidalLocation(void)
x = 0;
switch (GetSSTidalLocation(&mapGroup, &mapNum, &xOnMap, &yOnMap))
{
- case SS_TIDAL_LOCATION_SLATEPORT:
- gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY;
- break;
- case SS_TIDAL_LOCATION_LILYCOVE:
- gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY;
- break;
- case SS_TIDAL_LOCATION_ROUTE124:
- gRegionMap->mapSecId = MAPSEC_ROUTE_124;
- break;
- case SS_TIDAL_LOCATION_ROUTE131:
- gRegionMap->mapSecId = MAPSEC_ROUTE_131;
- break;
- default:
- case SS_TIDAL_LOCATION_CURRENTS:
- mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
-
- gRegionMap->mapSecId = mapHeader->regionMapSectionId;
- dimensionScale = mapHeader->mapLayout->width / gRegionMapEntries[gRegionMap->mapSecId].width;
- if (dimensionScale == 0)
- dimensionScale = 1;
- x = xOnMap / dimensionScale;
- if (x >= gRegionMapEntries[gRegionMap->mapSecId].width)
- x = gRegionMapEntries[gRegionMap->mapSecId].width - 1;
-
- dimensionScale = mapHeader->mapLayout->height / gRegionMapEntries[gRegionMap->mapSecId].height;
- if (dimensionScale == 0)
- dimensionScale = 1;
- y = yOnMap / dimensionScale;
- if (y >= gRegionMapEntries[gRegionMap->mapSecId].height)
- y = gRegionMapEntries[gRegionMap->mapSecId].height - 1;
- break;
+ case SS_TIDAL_LOCATION_SLATEPORT:
+ gRegionMap->mapSecId = MAPSEC_SLATEPORT_CITY;
+ break;
+ case SS_TIDAL_LOCATION_LILYCOVE:
+ gRegionMap->mapSecId = MAPSEC_LILYCOVE_CITY;
+ break;
+ case SS_TIDAL_LOCATION_ROUTE124:
+ gRegionMap->mapSecId = MAPSEC_ROUTE_124;
+ break;
+ case SS_TIDAL_LOCATION_ROUTE131:
+ gRegionMap->mapSecId = MAPSEC_ROUTE_131;
+ break;
+ default:
+ case SS_TIDAL_LOCATION_CURRENTS:
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
+
+ gRegionMap->mapSecId = mapHeader->regionMapSectionId;
+ dimensionScale = mapHeader->mapLayout->width / gRegionMapEntries[gRegionMap->mapSecId].width;
+ if (dimensionScale == 0)
+ dimensionScale = 1;
+ x = xOnMap / dimensionScale;
+ if (x >= gRegionMapEntries[gRegionMap->mapSecId].width)
+ x = gRegionMapEntries[gRegionMap->mapSecId].width - 1;
+
+ dimensionScale = mapHeader->mapLayout->height / gRegionMapEntries[gRegionMap->mapSecId].height;
+ if (dimensionScale == 0)
+ dimensionScale = 1;
+ y = yOnMap / dimensionScale;
+ if (y >= gRegionMapEntries[gRegionMap->mapSecId].height)
+ y = gRegionMapEntries[gRegionMap->mapSecId].height - 1;
+ break;
}
gRegionMap->playerIsInCave = FALSE;
gRegionMap->cursorPosX = gRegionMapEntries[gRegionMap->mapSecId].x + x + MAPCURSOR_X_MIN;
gRegionMap->cursorPosY = gRegionMapEntries[gRegionMap->mapSecId].y + y + MAPCURSOR_Y_MIN;
}
-static u8 get_flagnr_blue_points(u16 mapSecId)
+static u8 GetMapsecType(u16 mapSecId)
{
switch (mapSecId)
{
- case MAPSEC_NONE:
- return MAPSECTYPE_NONE;
- case MAPSEC_LITTLEROOT_TOWN:
- return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_OLDALE_TOWN:
- return FlagGet(FLAG_VISITED_OLDALE_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_DEWFORD_TOWN:
- return FlagGet(FLAG_VISITED_DEWFORD_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_LAVARIDGE_TOWN:
- return FlagGet(FLAG_VISITED_LAVARIDGE_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_FALLARBOR_TOWN:
- return FlagGet(FLAG_VISITED_FALLARBOR_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_VERDANTURF_TOWN:
- return FlagGet(FLAG_VISITED_VERDANTURF_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_PACIFIDLOG_TOWN:
- return FlagGet(FLAG_VISITED_PACIFIDLOG_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_PETALBURG_CITY:
- return FlagGet(FLAG_VISITED_PETALBURG_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_SLATEPORT_CITY:
- return FlagGet(FLAG_VISITED_SLATEPORT_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_MAUVILLE_CITY:
- return FlagGet(FLAG_VISITED_MAUVILLE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_RUSTBORO_CITY:
- return FlagGet(FLAG_VISITED_RUSTBORO_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_FORTREE_CITY:
- return FlagGet(FLAG_VISITED_FORTREE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_LILYCOVE_CITY:
- return FlagGet(FLAG_VISITED_LILYCOVE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_MOSSDEEP_CITY:
- return FlagGet(FLAG_VISITED_MOSSDEEP_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_SOOTOPOLIS_CITY:
- return FlagGet(FLAG_VISITED_SOOTOPOLIS_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_EVER_GRANDE_CITY:
- return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
- case MAPSEC_BATTLE_FRONTIER:
- return FlagGet(FLAG_LANDMARK_BATTLE_FRONTIER) ? MAPSECTYPE_BATTLE_FRONTIER : MAPSECTYPE_NONE;
- case MAPSEC_SOUTHERN_ISLAND:
- return FlagGet(FLAG_LANDMARK_SOUTHERN_ISLAND) ? MAPSECTYPE_PLAIN : MAPSECTYPE_NONE;
- default:
- return MAPSECTYPE_PLAIN;
+ case MAPSEC_NONE:
+ return MAPSECTYPE_NONE;
+ case MAPSEC_LITTLEROOT_TOWN:
+ return FlagGet(FLAG_VISITED_LITTLEROOT_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_OLDALE_TOWN:
+ return FlagGet(FLAG_VISITED_OLDALE_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_DEWFORD_TOWN:
+ return FlagGet(FLAG_VISITED_DEWFORD_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_LAVARIDGE_TOWN:
+ return FlagGet(FLAG_VISITED_LAVARIDGE_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_FALLARBOR_TOWN:
+ return FlagGet(FLAG_VISITED_FALLARBOR_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_VERDANTURF_TOWN:
+ return FlagGet(FLAG_VISITED_VERDANTURF_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_PACIFIDLOG_TOWN:
+ return FlagGet(FLAG_VISITED_PACIFIDLOG_TOWN) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_PETALBURG_CITY:
+ return FlagGet(FLAG_VISITED_PETALBURG_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_SLATEPORT_CITY:
+ return FlagGet(FLAG_VISITED_SLATEPORT_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_MAUVILLE_CITY:
+ return FlagGet(FLAG_VISITED_MAUVILLE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_RUSTBORO_CITY:
+ return FlagGet(FLAG_VISITED_RUSTBORO_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_FORTREE_CITY:
+ return FlagGet(FLAG_VISITED_FORTREE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_LILYCOVE_CITY:
+ return FlagGet(FLAG_VISITED_LILYCOVE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_MOSSDEEP_CITY:
+ return FlagGet(FLAG_VISITED_MOSSDEEP_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_SOOTOPOLIS_CITY:
+ return FlagGet(FLAG_VISITED_SOOTOPOLIS_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_EVER_GRANDE_CITY:
+ return FlagGet(FLAG_VISITED_EVER_GRANDE_CITY) ? MAPSECTYPE_CITY_CANFLY : MAPSECTYPE_CITY_CANTFLY;
+ case MAPSEC_BATTLE_FRONTIER:
+ return FlagGet(FLAG_LANDMARK_BATTLE_FRONTIER) ? MAPSECTYPE_BATTLE_FRONTIER : MAPSECTYPE_NONE;
+ case MAPSEC_SOUTHERN_ISLAND:
+ return FlagGet(FLAG_LANDMARK_SOUTHERN_ISLAND) ? MAPSECTYPE_ROUTE : MAPSECTYPE_NONE;
+ default:
+ return MAPSECTYPE_ROUTE;
}
}
-u16 GetRegionMapSectionIdAt(u16 x, u16 y)
+u16 GetRegionMapSecIdAt(u16 x, u16 y)
{
- return GetRegionMapSectionIdAt_Internal(x, y);
+ return GetMapSecIdAt(x, y);
}
static u16 CorrectSpecialMapSecId_Internal(u16 mapSecId)
{
u32 i;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < ARRAY_COUNT(sMarineCaveMapSecIds); i++)
{
- if (sRegionMap_MarineCaveMapSecIds[i] == mapSecId)
+ if (sMarineCaveMapSecIds[i] == mapSecId)
{
- return RegionMap_GetTerraCaveMapSecId();
+ return GetTerraOrMarineCaveMapSecId();
}
}
for (i = 0; sRegionMap_SpecialPlaceLocations[i][0] != MAPSEC_NONE; i++)
@@ -1255,42 +1245,43 @@ static u16 CorrectSpecialMapSecId_Internal(u16 mapSecId)
return mapSecId;
}
-static u16 RegionMap_GetTerraCaveMapSecId(void)
+static u16 GetTerraOrMarineCaveMapSecId(void)
{
s16 idx;
idx = VarGet(VAR_ABNORMAL_WEATHER_LOCATION) - 1;
- if (idx < 0 || idx > 15)
- {
+
+ if (idx < 0 || idx > ABNORMAL_WEATHER_LOCATIONS - 1)
idx = 0;
- }
- return sTerraCaveMapSectionIds[idx];
+
+ return sTerraOrMarineCaveMapSecIds[idx];
}
-static void RegionMap_GetMarineCaveCoords(u16 *x, u16 *y)
+static void GetMarineCaveCoords(u16 *x, u16 *y)
{
u16 idx;
idx = VarGet(VAR_ABNORMAL_WEATHER_LOCATION);
- if (idx < 9 || idx > 16)
+ if (idx < MARINE_CAVE_LOCATIONS_START || idx > ABNORMAL_WEATHER_LOCATIONS)
{
- idx = 9;
+ idx = MARINE_CAVE_LOCATIONS_START;
}
- idx -= 9;
- *x = sTerraCaveLocationCoords[idx].x + MAPCURSOR_X_MIN;
- *y = sTerraCaveLocationCoords[idx].y + MAPCURSOR_Y_MIN;
+ idx -= MARINE_CAVE_LOCATIONS_START;
+
+ *x = sMarineCaveLocationCoords[idx].x + MAPCURSOR_X_MIN;
+ *y = sMarineCaveLocationCoords[idx].y + MAPCURSOR_Y_MIN;
}
-static bool32 RegionMap_IsPlayerInCave(u8 mapSecId)
+// Probably meant to be an "IsPlayerInIndoorDungeon" function, but in practice it only has the one mapsec
+// Additionally, because the mapsec doesnt exist in Emerald, this function always returns FALSE
+static bool32 IsPlayerInAquaHideout(u8 mapSecId)
{
u32 i;
- for (i = 0; i < 1; i++)
+ for (i = 0; i < ARRAY_COUNT(sMapSecAquaHideoutOld); i++)
{
- if (sRegionMap_MapSecAquaHideoutOld[i] == mapSecId)
- {
+ if (sMapSecAquaHideoutOld[i] == mapSecId)
return TRUE;
- }
}
return FALSE;
}
@@ -1300,7 +1291,7 @@ u16 CorrectSpecialMapSecId(u16 mapSecId)
return CorrectSpecialMapSecId_Internal(mapSecId);
}
-static void RegionMap_GetPositionOfCursorWithinMapSection(void)
+static void GetPositionOfCursorWithinMapSec(void)
{
u16 x;
u16 y;
@@ -1339,7 +1330,7 @@ static void RegionMap_GetPositionOfCursorWithinMapSection(void)
else
{
x--;
- if (GetRegionMapSectionIdAt_Internal(x, y) == gRegionMap->mapSecId)
+ if (GetMapSecIdAt(x, y) == gRegionMap->mapSecId)
{
posWithinMapSec++;
}
@@ -1358,7 +1349,7 @@ static bool8 RegionMap_IsMapSecIdInNextRow(u16 y)
}
for (x = MAPCURSOR_X_MIN; x <= MAPCURSOR_X_MAX; x++)
{
- if (GetRegionMapSectionIdAt_Internal(x, y) == gRegionMap->mapSecId)
+ if (GetMapSecIdAt(x, y) == gRegionMap->mapSecId)
{
return TRUE;
}
@@ -1366,7 +1357,7 @@ static bool8 RegionMap_IsMapSecIdInNextRow(u16 y)
return FALSE;
}
-static void SpriteCallback_CursorFull(struct Sprite *sprite)
+static void SpriteCB_CursorMapFull(struct Sprite *sprite)
{
if (gRegionMap->cursorMovementFrameCounter != 0)
{
@@ -1376,7 +1367,7 @@ static void SpriteCallback_CursorFull(struct Sprite *sprite)
}
}
-static void SpriteCallback_CursorZoomed(struct Sprite *sprite)
+static void SpriteCB_CursorMapZoomed(struct Sprite *sprite)
{
}
@@ -1400,13 +1391,13 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag)
{
sheet.data = gRegionMap->cursorSmallImage;
sheet.size = sizeof(gRegionMap->cursorSmallImage);
- template.callback = SpriteCallback_CursorFull;
+ template.callback = SpriteCB_CursorMapFull;
}
else
{
sheet.data = gRegionMap->cursorLargeImage;
sheet.size = sizeof(gRegionMap->cursorLargeImage);
- template.callback = SpriteCallback_CursorZoomed;
+ template.callback = SpriteCB_CursorMapZoomed;
}
LoadSpriteSheet(&sheet);
LoadSpritePalette(&palette);
@@ -1443,12 +1434,14 @@ static void FreeRegionMapCursorSprite(void)
}
}
-void sub_8124268(void)
+// Unused
+static void SetUnkCursorSpriteData(void)
{
gRegionMap->cursorSprite->data[3] = TRUE;
}
-void sub_8124278(void)
+// Unused
+static void ClearUnkCursorSpriteData(void)
{
gRegionMap->cursorSprite->data[3] = FALSE;
}
@@ -1460,7 +1453,7 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag)
struct SpritePalette palette = {sRegionMapPlayerIcon_BrendanPal, paletteTag};
struct SpriteTemplate template = {tileTag, paletteTag, &sRegionMapPlayerIconOam, sRegionMapPlayerIconAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy};
- if (sub_8124668(gMapHeader.regionMapSectionId))
+ if (IsEventIslandMapSecId(gMapHeader.regionMapSectionId))
{
gRegionMap->playerIconSprite = NULL;
return;
@@ -1478,13 +1471,13 @@ void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag)
{
gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 8 + 4;
gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4;
- gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Full;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull;
}
else
{
gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30;
gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42;
- gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Zoomed;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed;
}
}
@@ -1505,7 +1498,7 @@ static void UnhideRegionMapPlayerIcon(void)
{
gRegionMap->playerIconSprite->pos1.x = gRegionMap->playerIconSpritePosX * 16 - 0x30;
gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 16 - 0x42;
- gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Zoomed;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapZoomed;
gRegionMap->playerIconSprite->invisible = FALSE;
}
else
@@ -1514,13 +1507,13 @@ static void UnhideRegionMapPlayerIcon(void)
gRegionMap->playerIconSprite->pos1.y = gRegionMap->playerIconSpritePosY * 8 + 4;
gRegionMap->playerIconSprite->pos2.x = 0;
gRegionMap->playerIconSprite->pos2.y = 0;
- gRegionMap->playerIconSprite->callback = RegionMapPlayerIconSpriteCallback_Full;
+ gRegionMap->playerIconSprite->callback = SpriteCB_PlayerIconMapFull;
gRegionMap->playerIconSprite->invisible = FALSE;
}
}
}
-static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite)
+static void SpriteCB_PlayerIconMapZoomed(struct Sprite *sprite)
{
sprite->pos2.x = -2 * gRegionMap->scrollX;
sprite->pos2.y = -2 * gRegionMap->scrollY;
@@ -1536,7 +1529,7 @@ static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite)
}
if (sprite->data[2] == TRUE)
{
- RegionMapPlayerIconSpriteCallback(sprite);
+ SpriteCB_PlayerIcon(sprite);
}
else
{
@@ -1544,12 +1537,12 @@ static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite)
}
}
-static void RegionMapPlayerIconSpriteCallback_Full(struct Sprite *sprite)
+static void SpriteCB_PlayerIconMapFull(struct Sprite *sprite)
{
- RegionMapPlayerIconSpriteCallback(sprite);
+ SpriteCB_PlayerIcon(sprite);
}
-static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite)
+static void SpriteCB_PlayerIcon(struct Sprite *sprite)
{
if (gRegionMap->blinkPlayerIcon)
{
@@ -1565,12 +1558,10 @@ static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite)
}
}
-void sub_812454C(void)
+void TrySetPlayerIconBlink(void)
{
if (gRegionMap->playerIsInCave)
- {
gRegionMap->blinkPlayerIcon = TRUE;
- }
}
u8 *GetMapName(u8 *dest, u16 regionMapId, u16 padLength)
@@ -1610,28 +1601,24 @@ u8 *GetMapNameGeneric(u8 *dest, u16 mapSecId)
{
switch (mapSecId)
{
- case MAPSEC_DYNAMIC:
- return StringCopy(dest, gText_Ferry);
- case MAPSEC_SECRET_BASE:
- return StringCopy(dest, gText_SecretBase);
- default:
- return GetMapName(dest, mapSecId, 0);
+ case MAPSEC_DYNAMIC:
+ return StringCopy(dest, gText_Ferry);
+ case MAPSEC_SECRET_BASE:
+ return StringCopy(dest, gText_SecretBase);
+ default:
+ return GetMapName(dest, mapSecId, 0);
}
}
-u8 *sub_8124610(u8 *dest, u16 mapSecId)
+u8 *GetMapNameHandleAquaHideout(u8 *dest, u16 mapSecId)
{
if (mapSecId == MAPSEC_AQUA_HIDEOUT_OLD)
- {
return StringCopy(dest, gText_Hideout);
- }
else
- {
return GetMapNameGeneric(dest, mapSecId);
- }
}
-void sub_8124630(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height)
+static void GetMapSecDimensions(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height)
{
*x = gRegionMapEntries[mapSecId].x;
*y = gRegionMapEntries[mapSecId].y;
@@ -1639,172 +1626,170 @@ void sub_8124630(u16 mapSecId, u16 *x, u16 *y, u16 *width, u16 *height)
*height = gRegionMapEntries[mapSecId].height;
}
-bool8 sub_8124658(void)
+bool8 IsRegionMapZoomed(void)
{
return gRegionMap->zoomed;
}
-bool32 sub_8124668(u8 mapSecId)
+bool32 IsEventIslandMapSecId(u8 mapSecId)
{
u32 i;
- for (i = 0; i < 3; i++)
+ for (i = 0; i < ARRAY_COUNT(sMapSecIdsOffMap); i++)
{
- if (mapSecId == sRegionMapEventSectionIds[i])
- {
+ if (mapSecId == sMapSecIdsOffMap[i])
return TRUE;
- }
}
return FALSE;
}
-void MCB2_FlyMap(void)
+void CB2_OpenFlyMap(void)
{
switch (gMain.state)
{
- case 0:
- SetVBlankCallback(NULL);
- SetGpuReg(REG_OFFSET_DISPCNT, 0);
- SetGpuReg(REG_OFFSET_BG0HOFS, 0);
- SetGpuReg(REG_OFFSET_BG0VOFS, 0);
- SetGpuReg(REG_OFFSET_BG1HOFS, 0);
- SetGpuReg(REG_OFFSET_BG1VOFS, 0);
- SetGpuReg(REG_OFFSET_BG2VOFS, 0);
- SetGpuReg(REG_OFFSET_BG2HOFS, 0);
- SetGpuReg(REG_OFFSET_BG3HOFS, 0);
- SetGpuReg(REG_OFFSET_BG3VOFS, 0);
- sFlyMap = malloc(sizeof(*sFlyMap));
- if (sFlyMap == NULL)
- {
- SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
- }
- else
- {
- ResetPaletteFade();
- ResetSpriteData();
- FreeSpriteTileRanges();
- FreeAllSpritePalettes();
- gMain.state++;
- }
- break;
- case 1:
- ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(1, gUnknown_085A1EE4, 3);
- gMain.state++;
- break;
- case 2:
- InitWindows(gUnknown_085A1EF0);
- DeactivateAllTextPrinters();
- gMain.state++;
- break;
- case 3:
- LoadUserWindowBorderGfx(0, 0x65, 0xd0);
- clear_scheduled_bg_copies_to_vram();
- gMain.state++;
- break;
- case 4:
- InitRegionMap(&sFlyMap->regionMap, FALSE);
- CreateRegionMapCursor(0, 0);
- CreateRegionMapPlayerIcon(1, 1);
- sFlyMap->mapSecId = sFlyMap->regionMap.mapSecId;
- StringFill(sFlyMap->unk_a4c, CHAR_SPACE, 16);
- gUnknown_03001180 = TRUE;
- sub_8124904();
- gMain.state++;
- break;
- case 5:
- LZ77UnCompVram(sRegionMapFrameGfxLZ, (u16 *)BG_CHAR_ADDR(3));
- gMain.state++;
- break;
- case 6:
- LZ77UnCompVram(sRegionMapFrameTilemapLZ, (u16 *)BG_SCREEN_ADDR(30));
- gMain.state++;
- break;
- case 7:
- LoadPalette(sRegionMapFramePal, 0x10, 0x20);
- PutWindowTilemap(2);
- FillWindowPixelBuffer(2, PIXEL_FILL(0));
- AddTextPrinterParameterized(2, 1, gText_FlyToWhere, 0, 1, 0, NULL);
- schedule_bg_copy_tilemap_to_vram(0);
- gMain.state++;
- break;
- case 8:
- sub_8124A70();
- gMain.state++;
- break;
- case 9:
- BlendPalettes(-1, 16, 0);
- SetVBlankCallback(sub_81248C0);
- gMain.state++;
- break;
- case 10:
- SetGpuReg(REG_OFFSET_BLDCNT, 0);
- SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
- ShowBg(0);
- ShowBg(1);
- ShowBg(2);
- sub_81248F4(sub_8124D14);
- SetMainCallback2(sub_81248D4);
+ case 0:
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ sFlyMap = malloc(sizeof(*sFlyMap));
+ if (sFlyMap == NULL)
+ {
+ SetMainCallback2(CB2_ReturnToFieldWithOpenMenu);
+ }
+ else
+ {
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeSpriteTileRanges();
+ FreeAllSpritePalettes();
gMain.state++;
- break;
+ }
+ break;
+ case 1:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, sFlyMapBgTemplates, 3);
+ gMain.state++;
+ break;
+ case 2:
+ InitWindows(sFlyMapWindowTemplates);
+ DeactivateAllTextPrinters();
+ gMain.state++;
+ break;
+ case 3:
+ LoadUserWindowBorderGfx(0, 0x65, 0xd0);
+ clear_scheduled_bg_copies_to_vram();
+ gMain.state++;
+ break;
+ case 4:
+ InitRegionMap(&sFlyMap->regionMap, FALSE);
+ CreateRegionMapCursor(0, 0);
+ CreateRegionMapPlayerIcon(1, 1);
+ sFlyMap->mapSecId = sFlyMap->regionMap.mapSecId;
+ StringFill(sFlyMap->nameBuffer, CHAR_SPACE, MAP_NAME_LENGTH);
+ gUnknown_03001180 = TRUE;
+ DrawFlyDestTextWindow();
+ gMain.state++;
+ break;
+ case 5:
+ LZ77UnCompVram(sRegionMapFrameGfxLZ, (u16 *)BG_CHAR_ADDR(3));
+ gMain.state++;
+ break;
+ case 6:
+ LZ77UnCompVram(sRegionMapFrameTilemapLZ, (u16 *)BG_SCREEN_ADDR(30));
+ gMain.state++;
+ break;
+ case 7:
+ LoadPalette(sRegionMapFramePal, 0x10, 0x20);
+ PutWindowTilemap(2);
+ FillWindowPixelBuffer(2, PIXEL_FILL(0));
+ AddTextPrinterParameterized(2, 1, gText_FlyToWhere, 0, 1, 0, NULL);
+ schedule_bg_copy_tilemap_to_vram(0);
+ gMain.state++;
+ break;
+ case 8:
+ LoadFlyDestIcons();
+ gMain.state++;
+ break;
+ case 9:
+ BlendPalettes(-1, 16, 0);
+ SetVBlankCallback(VBlankCB_FlyMap);
+ gMain.state++;
+ break;
+ case 10:
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ SetFlyMapCallback(CB_FadeInFlyMap);
+ SetMainCallback2(CB2_FlyMap);
+ gMain.state++;
+ break;
}
}
-static void sub_81248C0(void)
+static void VBlankCB_FlyMap(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-static void sub_81248D4(void)
+static void CB2_FlyMap(void)
{
- sFlyMap->unk_000();
+ sFlyMap->callback();
AnimateSprites();
BuildOamBuffer();
do_scheduled_bg_tilemap_copies_to_vram();
}
-static void sub_81248F4(void callback(void))
+static void SetFlyMapCallback(void callback(void))
{
- sFlyMap->unk_000 = callback;
- sFlyMap->unk_004 = 0;
+ sFlyMap->callback = callback;
+ sFlyMap->state = 0;
}
-static void sub_8124904(void)
+static void DrawFlyDestTextWindow(void)
{
u16 i;
- bool32 flag;
+ bool32 namePrinted;
const u8 *name;
- if (sFlyMap->regionMap.iconDrawType > MAPSECTYPE_NONE && sFlyMap->regionMap.iconDrawType <= MAPSECTYPE_BATTLE_FRONTIER)
+ if (sFlyMap->regionMap.mapSecType > MAPSECTYPE_NONE && sFlyMap->regionMap.mapSecType <= MAPSECTYPE_BATTLE_FRONTIER)
{
- flag = FALSE;
- for (i = 0; i < ARRAY_COUNT(gUnknown_085A1EDC); i++)
+ namePrinted = FALSE;
+ for (i = 0; i < ARRAY_COUNT(sMultiNameFlyDestinations); i++)
{
- if (sFlyMap->regionMap.mapSecId == gUnknown_085A1EDC[i].mapSecId)
+ if (sFlyMap->regionMap.mapSecId == sMultiNameFlyDestinations[i].mapSecId)
{
- if (FlagGet(gUnknown_085A1EDC[i].flag))
+ if (FlagGet(sMultiNameFlyDestinations[i].flag))
{
- StringLength(gUnknown_085A1EDC[i].name[sFlyMap->regionMap.posWithinMapSec]);
- flag = TRUE;
+ StringLength(sMultiNameFlyDestinations[i].name[sFlyMap->regionMap.posWithinMapSec]);
+ namePrinted = TRUE;
ClearStdWindowAndFrameToTransparent(0, FALSE);
- DrawStdFrameWithCustomTileAndPalette(1, FALSE, 0x65, 0x0d);
+ DrawStdFrameWithCustomTileAndPalette(1, FALSE, 101, 13);
AddTextPrinterParameterized(1, 1, sFlyMap->regionMap.mapSecName, 0, 1, 0, NULL);
- name = gUnknown_085A1EDC[i].name[sFlyMap->regionMap.posWithinMapSec];
- AddTextPrinterParameterized(1, 1, name, GetStringRightAlignXOffset(1, name, 0x60), 0x11, 0, NULL);
+ name = sMultiNameFlyDestinations[i].name[sFlyMap->regionMap.posWithinMapSec];
+ AddTextPrinterParameterized(1, 1, name, GetStringRightAlignXOffset(1, name, 96), 17, 0, NULL);
schedule_bg_copy_tilemap_to_vram(0);
gUnknown_03001180 = TRUE;
}
break;
}
}
- if (!flag)
+ if (!namePrinted)
{
if (gUnknown_03001180 == TRUE)
{
ClearStdWindowAndFrameToTransparent(1, FALSE);
- DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x65, 0x0d);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 101, 13);
}
else
{
@@ -1820,7 +1805,7 @@ static void sub_8124904(void)
if (gUnknown_03001180 == TRUE)
{
ClearStdWindowAndFrameToTransparent(1, FALSE);
- DrawStdFrameWithCustomTileAndPalette(0, FALSE, 0x65, 0x0d);
+ DrawStdFrameWithCustomTileAndPalette(0, FALSE, 101, 13);
}
FillWindowPixelBuffer(0, PIXEL_FILL(1));
CopyWindowToVram(0, 2);
@@ -1830,24 +1815,28 @@ static void sub_8124904(void)
}
-static void sub_8124A70(void)
+static void LoadFlyDestIcons(void)
{
struct SpriteSheet sheet;
- LZ77UnCompWram(sUnknown_085A1D68, sFlyMap->unk_88c);
- sheet.data = sFlyMap->unk_88c;
- sheet.size = 0x1c0;
+ LZ77UnCompWram(sFlyTargetIcons_Gfx, sFlyMap->tileBuffer);
+ sheet.data = sFlyMap->tileBuffer;
+ sheet.size = sizeof(sFlyMap->tileBuffer);
sheet.tag = 2;
LoadSpriteSheet(&sheet);
- LoadSpritePalette(&gUnknown_085A1F10);
- sub_8124AD4();
- sub_8124BE4();
+ LoadSpritePalette(&sFlyTargetIconsSpritePalette);
+ CreateFlyDestIcons();
+ TryCreateRedOutlineFlyDestIcons();
}
-static void sub_8124AD4(void)
+// Sprite data for SpriteCB_FlyDestIcon
+#define sIconMapSec data[0]
+#define sFlickerTimer data[1]
+
+static void CreateFlyDestIcons(void)
{
u16 canFlyFlag;
- u16 i;
+ u16 mapSecId;
u16 x;
u16 y;
u16 width;
@@ -1856,43 +1845,39 @@ static void sub_8124AD4(void)
u8 spriteId;
canFlyFlag = FLAG_VISITED_LITTLEROOT_TOWN;
- for (i = 0; i < 16; i++)
+ for (mapSecId = MAPSEC_LITTLEROOT_TOWN; mapSecId <= MAPSEC_EVER_GRANDE_CITY; mapSecId++)
{
- sub_8124630(i, &x, &y, &width, &height);
+ GetMapSecDimensions(mapSecId, &x, &y, &width, &height);
x = (x + MAPCURSOR_X_MIN) * 8 + 4;
y = (y + MAPCURSOR_Y_MIN) * 8 + 4;
+
if (width == 2)
- {
shape = SPRITE_SHAPE(16x8);
- }
else if (height == 2)
- {
shape = SPRITE_SHAPE(8x16);
- }
else
- {
shape = SPRITE_SHAPE(8x8);
- }
- spriteId = CreateSprite(&gUnknown_085A1F7C, x, y, 10);
+
+ spriteId = CreateSprite(&sFlyDestIconSpriteTemplate, x, y, 10);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.shape = shape;
+
if (FlagGet(canFlyFlag))
- {
- gSprites[spriteId].callback = sub_8124CBC;
- }
+ gSprites[spriteId].callback = SpriteCB_FlyDestIcon;
else
- {
shape += 3;
- }
+
StartSpriteAnim(&gSprites[spriteId], shape);
- gSprites[spriteId].data[0] = i;
+ gSprites[spriteId].sIconMapSec = mapSecId;
}
canFlyFlag++;
}
}
-static void sub_8124BE4(void)
+// Draw a red outline box on the mapsec if its corresponding flag has been set
+// Only used for Battle Frontier, but set up to handle more
+static void TryCreateRedOutlineFlyDestIcons(void)
{
u16 i;
u16 x;
@@ -1902,142 +1887,142 @@ static void sub_8124BE4(void)
u16 mapSecId;
u8 spriteId;
- for (i = 0; sUnknown_085A1F18[i][1] != MAPSEC_NONE; i++)
+ for (i = 0; sRedOutlineFlyDestinations[i][1] != MAPSEC_NONE; i++)
{
- if (FlagGet(sUnknown_085A1F18[i][0]))
+ if (FlagGet(sRedOutlineFlyDestinations[i][0]))
{
- mapSecId = sUnknown_085A1F18[i][1];
- sub_8124630(mapSecId, &x, &y, &width, &height);
+ mapSecId = sRedOutlineFlyDestinations[i][1];
+ GetMapSecDimensions(mapSecId, &x, &y, &width, &height);
x = (x + MAPCURSOR_X_MIN) * 8;
y = (y + MAPCURSOR_Y_MIN) * 8;
- spriteId = CreateSprite(&gUnknown_085A1F7C, x, y, 10);
+ spriteId = CreateSprite(&sFlyDestIconSpriteTemplate, x, y, 10);
if (spriteId != MAX_SPRITES)
{
gSprites[spriteId].oam.size = SPRITE_SIZE(16x16);
- gSprites[spriteId].callback = sub_8124CBC;
- StartSpriteAnim(&gSprites[spriteId], 6);
- gSprites[spriteId].data[0] = mapSecId;
+ gSprites[spriteId].callback = SpriteCB_FlyDestIcon;
+ StartSpriteAnim(&gSprites[spriteId], FLYDESTICON_RED_OUTLINE);
+ gSprites[spriteId].sIconMapSec = mapSecId;
}
}
}
}
-static void sub_8124CBC(struct Sprite *sprite)
+// Flickers fly destination icon color (by hiding the fly icon sprite) if the cursor is currently on it
+static void SpriteCB_FlyDestIcon(struct Sprite *sprite)
{
- if (sFlyMap->regionMap.mapSecId == sprite->data[0])
+ if (sFlyMap->regionMap.mapSecId == sprite->sIconMapSec)
{
- if (++sprite->data[1] > 16)
+ if (++sprite->sFlickerTimer > 16)
{
- sprite->data[1] = 0;
+ sprite->sFlickerTimer = 0;
sprite->invisible = sprite->invisible ? FALSE : TRUE;
}
}
else
{
- sprite->data[1] = 16;
+ sprite->sFlickerTimer = 16;
sprite->invisible = FALSE;
}
}
-static void sub_8124D14(void)
+#undef sIconMapSec
+#undef sFlickerTimer
+
+static void CB_FadeInFlyMap(void)
{
- switch (sFlyMap->unk_004)
+ switch (sFlyMap->state)
{
- case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
- sFlyMap->unk_004++;
- break;
- case 1:
- if (!UpdatePaletteFade())
- {
- sub_81248F4(sub_8124D64);
- }
- break;
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ sFlyMap->state++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ SetFlyMapCallback(CB_HandleFlyMapInput);
+ }
+ break;
}
}
-static void sub_8124D64(void)
+static void CB_HandleFlyMapInput(void)
{
- if (sFlyMap->unk_004 == 0)
+ if (sFlyMap->state == 0)
{
- switch (sub_81230AC())
+ switch (DoRegionMapInputCallback())
{
- case INPUT_EVENT_NONE:
- case INPUT_EVENT_MOVE_START:
- case INPUT_EVENT_MOVE_CONT:
- break;
- case INPUT_EVENT_MOVE_END:
- sub_8124904();
- break;
- case INPUT_EVENT_A_BUTTON:
- if (sFlyMap->regionMap.iconDrawType == MAPSECTYPE_CITY_CANFLY || sFlyMap->regionMap.iconDrawType == MAPSECTYPE_BATTLE_FRONTIER)
- {
- m4aSongNumStart(SE_SELECT);
- sFlyMap->choseFlyLocation = TRUE;
- sub_81248F4(sub_8124E0C);
- }
- break;
- case INPUT_EVENT_B_BUTTON:
+ case MAP_INPUT_NONE:
+ case MAP_INPUT_MOVE_START:
+ case MAP_INPUT_MOVE_CONT:
+ break;
+ case MAP_INPUT_MOVE_END:
+ DrawFlyDestTextWindow();
+ break;
+ case MAP_INPUT_A_BUTTON:
+ if (sFlyMap->regionMap.mapSecType == MAPSECTYPE_CITY_CANFLY || sFlyMap->regionMap.mapSecType == MAPSECTYPE_BATTLE_FRONTIER)
+ {
m4aSongNumStart(SE_SELECT);
- sFlyMap->choseFlyLocation = FALSE;
- sub_81248F4(sub_8124E0C);
- break;
+ sFlyMap->choseFlyLocation = TRUE;
+ SetFlyMapCallback(CB_ExitFlyMap);
+ }
+ break;
+ case MAP_INPUT_B_BUTTON:
+ m4aSongNumStart(SE_SELECT);
+ sFlyMap->choseFlyLocation = FALSE;
+ SetFlyMapCallback(CB_ExitFlyMap);
+ break;
}
}
}
-static void sub_8124E0C(void)
+static void CB_ExitFlyMap(void)
{
- switch (sFlyMap->unk_004)
+ switch (sFlyMap->state)
{
- case 0:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
- sFlyMap->unk_004++;
- break;
- case 1:
- if (!UpdatePaletteFade())
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sFlyMap->state++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ FreeRegionMapIconResources();
+ if (sFlyMap->choseFlyLocation)
{
- FreeRegionMapIconResources();
- if (sFlyMap->choseFlyLocation)
- {
- switch (sFlyMap->regionMap.mapSecId)
- {
- case MAPSEC_SOUTHERN_ISLAND:
- SetWarpDestinationToHealLocation(HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR);
- break;
- case MAPSEC_BATTLE_FRONTIER:
- SetWarpDestinationToHealLocation(HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST);
- break;
- case MAPSEC_LITTLEROOT_TOWN:
- SetWarpDestinationToHealLocation(gSaveBlock2Ptr->playerGender == MALE ? HEAL_LOCATION_LITTLEROOT_TOWN_1 : HEAL_LOCATION_LITTLEROOT_TOWN_2);
- break;
- case MAPSEC_EVER_GRANDE_CITY:
- SetWarpDestinationToHealLocation(FlagGet(FLAG_LANDMARK_POKEMON_LEAGUE) && sFlyMap->regionMap.posWithinMapSec == 0 ? HEAL_LOCATION_EVER_GRANDE_CITY_2 : HEAL_LOCATION_EVER_GRANDE_CITY_1);
- break;
- default:
- if (sMapHealLocations[sFlyMap->regionMap.mapSecId][2] != 0)
- {
- SetWarpDestinationToHealLocation(sMapHealLocations[sFlyMap->regionMap.mapSecId][2]);
- }
- else
- {
- SetWarpDestinationToMapWarp(sMapHealLocations[sFlyMap->regionMap.mapSecId][0], sMapHealLocations[sFlyMap->regionMap.mapSecId][1], -1);
- }
- break;
- }
- ReturnToFieldFromFlyMapSelect();
- }
- else
+ switch (sFlyMap->regionMap.mapSecId)
{
- SetMainCallback2(CB2_ReturnToPartyMenuFromFlyMap);
+ case MAPSEC_SOUTHERN_ISLAND:
+ SetWarpDestinationToHealLocation(HEAL_LOCATION_SOUTHERN_ISLAND_EXTERIOR);
+ break;
+ case MAPSEC_BATTLE_FRONTIER:
+ SetWarpDestinationToHealLocation(HEAL_LOCATION_BATTLE_FRONTIER_OUTSIDE_EAST);
+ break;
+ case MAPSEC_LITTLEROOT_TOWN:
+ SetWarpDestinationToHealLocation(gSaveBlock2Ptr->playerGender == MALE ? HEAL_LOCATION_LITTLEROOT_TOWN_BRENDANS_HOUSE : HEAL_LOCATION_LITTLEROOT_TOWN_MAYS_HOUSE);
+ break;
+ case MAPSEC_EVER_GRANDE_CITY:
+ SetWarpDestinationToHealLocation(FlagGet(FLAG_LANDMARK_POKEMON_LEAGUE) && sFlyMap->regionMap.posWithinMapSec == 0 ? HEAL_LOCATION_EVER_GRANDE_CITY_POKEMON_LEAGUE : HEAL_LOCATION_EVER_GRANDE_CITY);
+ break;
+ default:
+ if (sMapHealLocations[sFlyMap->regionMap.mapSecId][2] != 0)
+ SetWarpDestinationToHealLocation(sMapHealLocations[sFlyMap->regionMap.mapSecId][2]);
+ else
+ SetWarpDestinationToMapWarp(sMapHealLocations[sFlyMap->regionMap.mapSecId][0], sMapHealLocations[sFlyMap->regionMap.mapSecId][1], -1);
+ break;
}
- if (sFlyMap != NULL)
- {
- free(sFlyMap);
- sFlyMap = NULL;
- }
- FreeAllWindowBuffers();
+ ReturnToFieldFromFlyMapSelect();
}
- break;
+ else
+ {
+ SetMainCallback2(CB2_ReturnToPartyMenuFromFlyMap);
+ }
+ if (sFlyMap != NULL)
+ {
+ free(sFlyMap);
+ sFlyMap = NULL;
+ }
+ FreeAllWindowBuffers();
+ }
+ break;
}
}
diff --git a/src/secret_base.c b/src/secret_base.c
index 31fd901e0..ec48e9b51 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -543,23 +543,23 @@ void InitSecretBaseDecorationSprites(void)
objectEventId = 0;
if (!CurMapIsSecretBase())
{
- decorations = gSaveBlock1Ptr->playerRoomDecor;
- decorationPositions = gSaveBlock1Ptr->playerRoomDecorPos;
- numDecorations = 12;
+ decorations = gSaveBlock1Ptr->playerRoomDecorations;
+ decorationPositions = gSaveBlock1Ptr->playerRoomDecorationPositions;
+ numDecorations = DECOR_MAX_PLAYERS_HOUSE;
}
else
{
u16 secretBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
decorations = gSaveBlock1Ptr->secretBases[secretBaseId].decorations;
decorationPositions = gSaveBlock1Ptr->secretBases[secretBaseId].decorationPositions;
- numDecorations = 16;
+ numDecorations = DECOR_MAX_SECRET_BASE;
}
for (i = 0; i < numDecorations; i++)
{
if (decorations[i] == DECOR_NONE)
continue;
-
+
permission = gDecorations[decorations[i]].permission;
category = gDecorations[decorations[i]].category;
if (permission == DECORPERM_SPRITE)
diff --git a/src/trader.c b/src/trader.c
index e0b780d25..ac6a30df0 100644
--- a/src/trader.c
+++ b/src/trader.c
@@ -42,7 +42,7 @@ void TraderSetup(void)
for (i = 0; i < 4; i++)
{
StringCopy(trader->playerNames[i], sDefaultTraderNames[i]);
- trader->decorIds[i] = sDefaultTraderDecorations[i];
+ trader->decorations[i] = sDefaultTraderDecorations[i];
trader->language[i] = GAME_LANGUAGE;
}
}
@@ -64,10 +64,10 @@ void CreateAvailableDecorationsMenu(u8 taskId)
for (i = 0; i < 4; i++)
{
s32 curWidth;
- if (trader->decorIds[i] > NUM_DECORATIONS)
+ if (trader->decorations[i] > NUM_DECORATIONS)
curWidth = fiveMarksWidth;
else
- curWidth = GetStringWidth(1, gDecorations[trader->decorIds[i]].name, 0);
+ curWidth = GetStringWidth(1, gDecorations[trader->decorations[i]].name, 0);
if (curWidth > windowWidth)
windowWidth = curWidth;
}
@@ -76,10 +76,10 @@ void CreateAvailableDecorationsMenu(u8 taskId)
DrawStdFrameWithCustomTileAndPalette(data[3], FALSE, 0x214, 14);
for (i = 0; i < 4; i++)
{
- if (trader->decorIds[i] > NUM_DECORATIONS)
+ if (trader->decorations[i] > NUM_DECORATIONS)
AddTextPrinterParameterized(data[3], 1, gText_FiveMarks, 8, 16 * i + 1, 255, NULL);
else
- AddTextPrinterParameterized(data[3], 1, gDecorations[trader->decorIds[i]].name, 8, 16 * i + 1, 255, NULL);
+ AddTextPrinterParameterized(data[3], 1, gDecorations[trader->decorations[i]].name, 8, 16 * i + 1, 255, NULL);
}
AddTextPrinterParameterized(data[3], 1, gText_Exit, 8, 16 * i + 1, 255, NULL);
InitMenuInUpperLeftCornerPlaySoundWhenAPressed(data[3], 5, 0);
@@ -125,7 +125,7 @@ void Task_HandleGetDecorationMenuInput(u8 taskId)
gSpecialVar_0x8005 = input;
StringCopy(gStringVar1, trader->playerNames[input]);
ConvertInternationalString(gStringVar1, trader->language[input]);
- Task_BufferDecorSelectionAndCloseWindow(taskId, trader->decorIds[input]);
+ Task_BufferDecorSelectionAndCloseWindow(taskId, trader->decorations[input]);
break;
}
}
@@ -167,7 +167,7 @@ void ScrSpecial_TraderMenuGiveDecoration(void)
CreateTask(ShowDecorationCategoriesWindow, 0);
}
-void sub_8133DA0(u8 taskId)
+void DecorationItemsMenuAction_Trade(u8 taskId)
{
if (IsSelectedDecorInThePC() == TRUE)
{
@@ -197,7 +197,7 @@ void ScrSpecial_TraderDoDecorationTrade(void)
DecorationRemove(gSpecialVar_0x8006);
DecorationAdd(gSpecialVar_0x8004);
StringCopy(trader->playerNames[gSpecialVar_0x8005], gSaveBlock2Ptr->playerName);
- trader->decorIds[gSpecialVar_0x8005] = gSpecialVar_0x8006;
+ trader->decorations[gSpecialVar_0x8005] = gSpecialVar_0x8006;
trader->language[gSpecialVar_0x8005] = GAME_LANGUAGE;
trader->alreadyTraded = TRUE;
}
diff --git a/src/unk_pokedex_area_screen_helper.c b/src/unk_pokedex_area_screen_helper.c
deleted file mode 100644
index 9b2401cb2..000000000
--- a/src/unk_pokedex_area_screen_helper.c
+++ /dev/null
@@ -1,68 +0,0 @@
-#include "global.h"
-#include "main.h"
-#include "menu.h"
-#include "bg.h"
-#include "malloc.h"
-#include "palette.h"
-#include "unk_pokedex_area_screen_helper.h"
-
-EWRAM_DATA u8 *gUnknown_0203CF28 = NULL;
-
-static const u16 gUnknown_0861D140[] = INCBIN_U16("graphics/interface/region_map.gbapal");
-static const u32 gUnknown_0861D1A0[] = INCBIN_U32("graphics/interface/region_map.8bpp.lz");
-static const u32 gUnknown_0861DEF4[] = INCBIN_U32("graphics/interface/region_map.bin.lz");
-static const u32 gUnknown_0861E208[] = INCBIN_U32("graphics/interface/region_map_affine.8bpp.lz");
-static const u32 gUnknown_0861EF64[] = INCBIN_U32("graphics/interface/region_map_affine.bin.lz");
-
-void sub_81C4D70(const struct UnkStruct_1C4D70 *template)
-{
- u8 unk;
- gUnknown_0203CF28 = Alloc(4);
- unk = template->unk10;
-
- if (unk == 0)
- {
- SetBgAttribute(template->bg, BG_ATTR_METRIC, 0);
- decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861D1A0, 0, template->unk2, unk);
- sub_8199D3C(decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861DEF4, 0, 0, 1), template->unk2, 32, 32, unk);
- }
- else
- {
- SetBgAttribute(template->bg, BG_ATTR_METRIC, 2);
- SetBgAttribute(template->bg, BG_ATTR_TYPE, 1);
- decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861E208, 0, template->unk2, 0);
- sub_8199D3C(decompress_and_copy_tile_data_to_vram(template->bg, gUnknown_0861EF64, 0, 0, 1), template->unk2, 64, 64, 1);
- }
-
- ChangeBgX(template->bg, 0, 0);
- ChangeBgY(template->bg, 0, 0);
- SetBgAttribute(template->bg, BG_ATTR_PALETTEMODE, 1);
- CpuCopy32(gUnknown_0861D140, &gPlttBufferUnfaded[0x70], 0x60);
- *gUnknown_0203CF28 = template->bg;
-}
-
-bool32 sub_81C4E90(void)
-{
- if (!free_temp_tile_data_buffers_if_possible())
- {
- ShowBg(*gUnknown_0203CF28);
- return FALSE;
- }
- else
- {
- return TRUE;
- }
-}
-
-void sub_81C4EB4(void)
-{
- if (gUnknown_0203CF28 != NULL)
- {
- FREE_AND_SET_NULL(gUnknown_0203CF28);
- }
-}
-
-void sub_81C4ED0(u32 a0)
-{
- ChangeBgY(*gUnknown_0203CF28, a0 * 0x100, 0);
-}
diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c
index 02648bf93..b1d2264e4 100644
--- a/src/unk_text_util_2.c
+++ b/src/unk_text_util_2.c
@@ -6,7 +6,7 @@
ALIGNED(4)
static const u8 sUnknown_08616124[] = {1, 2, 4};
-static const u16 sFont6BrailleGlyphs[] = INCBIN_U16("data/graphics/fonts/font6.fwjpnfont");
+static const u16 sFont6BrailleGlyphs[] = INCBIN_U16("graphics/fonts/font6.fwjpnfont");
static void DecompressGlyphFont6(u16);