summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle_anim.h6
-rw-r--r--include/battle_pyramid_bag.h58
-rw-r--r--include/constants/battle_ai.h28
-rw-r--r--include/constants/battle_anim.h29
-rw-r--r--include/constants/battle_frontier.h15
-rw-r--r--include/constants/battle_string_ids.h2
-rw-r--r--include/constants/contest.h17
-rw-r--r--include/constants/easy_chat.h2
-rw-r--r--include/constants/event_objects.h30
-rw-r--r--include/constants/flags.h142
-rw-r--r--include/constants/item.h5
-rw-r--r--include/constants/items.h10
-rwxr-xr-xinclude/constants/map_groups.h68
-rw-r--r--include/constants/metatile_labels.h2
-rw-r--r--include/constants/pokemon.h9
-rw-r--r--include/constants/trainer_hill.h5
-rw-r--r--include/constants/tv.h53
-rw-r--r--include/contest.h16
-rw-r--r--include/contest_util.h4
-rw-r--r--include/data.h10
-rw-r--r--include/daycare.h2
-rwxr-xr-xinclude/ereader_helpers.h24
-rw-r--r--include/event_object_lock.h4
-rw-r--r--include/event_scripts.h34
-rw-r--r--include/gba/m4a_internal.h2
-rw-r--r--include/global.fieldmap.h16
-rw-r--r--include/global.h10
-rw-r--r--include/global.tv.h22
-rw-r--r--include/graphics.h52
-rw-r--r--include/international_string_util.h2
-rw-r--r--include/item_menu.h118
-rw-r--r--include/item_menu_icons.h12
-rw-r--r--include/link.h2
-rw-r--r--include/list_menu.h2
-rw-r--r--include/mauville_old_man.h2
-rw-r--r--include/menu.h4
-rw-r--r--include/menu_helpers.h25
-rw-r--r--include/menu_specialized.h20
-rw-r--r--include/player_pc.h71
-rw-r--r--include/pokeblock.h5
-rw-r--r--include/pokemon.h1
-rw-r--r--include/pokemon_animation.h182
-rw-r--r--include/pokemon_storage_system.h15
-rwxr-xr-xinclude/pokemon_summary_screen.h20
-rw-r--r--include/region_map.h2
-rw-r--r--include/strings.h12
-rw-r--r--include/tv.h30
47 files changed, 699 insertions, 503 deletions
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 34bd774fe..ad160e74d 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -75,8 +75,8 @@ int GetAnimBgAttribute(u8 bgId, u8 attributeId);
// battle_anim_mons.c
void TranslateSpriteInEllipseOverDuration(struct Sprite *sprite);
-void AnimUnused_80A8AEC(struct Sprite *sprite);
-void AnimUnused_80A8A6C(struct Sprite *sprite);
+void AnimTranslateLinearAndFlicker(struct Sprite *sprite);
+void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite);
void AnimWeatherBallUp(struct Sprite *sprite);
void AnimWeatherBallDown(struct Sprite *sprite);
void AnimSpinningSparkle(struct Sprite *sprite);
@@ -143,7 +143,7 @@ void TranslateSpriteLinear(struct Sprite *sprite);
void AnimSpriteOnMonPos(struct Sprite *sprite);
void InitAnimLinearTranslationWithSpeedAndPos(struct Sprite *sprite);
void TranslateSpriteInCircleOverDuration(struct Sprite *sprite);
-void SetGreyscaleOrOriginalPalette(u16 palNum, bool8 restoreOriginal);
+void SetGrayscaleOrOriginalPalette(u16 palNum, bool8 restoreOriginal);
void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds);
bool8 RunAffineAnimFromTaskData(struct Task *task);
void AnimThrowProjectile(struct Sprite *sprite);
diff --git a/include/battle_pyramid_bag.h b/include/battle_pyramid_bag.h
index df111b939..b8b3eb20f 100644
--- a/include/battle_pyramid_bag.h
+++ b/include/battle_pyramid_bag.h
@@ -3,48 +3,72 @@
#include "list_menu.h"
-struct PyramidBagResources
+enum {
+ PYRAMIDBAG_LOC_FIELD,
+ PYRAMIDBAG_LOC_BATTLE,
+ PYRAMIDBAG_LOC_PARTY,
+ PYRAMIDBAG_LOC_CHOOSE_TOSS,
+ PYRAMIDBAG_LOC_PREV,
+};
+
+enum {
+ PBAG_SPRITE_BAG,
+ PBAG_SPRITE_ITEM_ICON,
+ PBAG_SPRITE_ITEM_ICON_ALT,
+ PBAG_SPRITE_SWAP_LINE_START, // Swap line consists of 8 sprites
+ PBAG_SPRITE_SWAP_LINE_2,
+ PBAG_SPRITE_SWAP_LINE_3,
+ PBAG_SPRITE_SWAP_LINE_4,
+ PBAG_SPRITE_SWAP_LINE_5,
+ PBAG_SPRITE_SWAP_LINE_6,
+ PBAG_SPRITE_SWAP_LINE_7,
+ PBAG_SPRITE_SWAP_LINE_END,
+ PBAG_SPRITE_COUNT
+};
+#define NUM_SWAP_LINE_SPRITES (1 + PBAG_SPRITE_SWAP_LINE_END - PBAG_SPRITE_SWAP_LINE_START)
+
+struct PyramidBagMenu
{
- void (*callback2)(void);
- u8 tilemapBuffer[0x800];
- u8 itemsSpriteIds[PYRAMID_BAG_ITEMS_COUNT + 1];
+ void (*newScreenCallback)(void);
+ u8 tilemapBuffer[BG_SCREEN_SIZE];
+ u8 spriteIds[PBAG_SPRITE_COUNT];
u8 windowIds[5];
- u8 unk814;
- u8 unk815;
+ u8 toSwapPos;
+ bool8 isAltIcon; // Two item icons loaded at a time. Tracks which to show next
u8 scrollIndicatorsTaskId;
const u8 *menuActionIds;
- u8 filler81C[0x820 - 0x81C];
+ u8 unused1[4];
u8 menuActionsCount;
u8 listMenuCount;
u8 listMenuMaxShown;
struct ListMenuItem bagListItems[PYRAMID_BAG_ITEMS_COUNT + 1];
u8 itemStrings[PYRAMID_BAG_ITEMS_COUNT + 1][ITEM_NAME_LENGTH + 10];
s16 state;
- u8 filler986[0x98C - 0x986];
+ u8 unused2[4];
};
-struct PyramidBagCursorData
+struct PyramidBagMenuState
{
- void (*callback)(void);
- u8 unk4;
+ void (*exitCallback)(void);
+ u8 location;
u16 cursorPosition;
u16 scrollPosition;
};
-extern struct PyramidBagResources *gPyramidBagResources;
-extern struct PyramidBagCursorData gPyramidBagCursorData;
+extern struct PyramidBagMenu *gPyramidBagMenu;
+extern struct PyramidBagMenuState gPyramidBagMenuState;
void InitBattlePyramidBagCursorPosition(void);
void CB2_PyramidBagMenuFromStartMenu(void);
void CB2_ReturnToPyramidBagMenu(void);
-void sub_81C5924(void);
-void sub_81C59BC(void);
+void UpdatePyramidBagList(void);
+void UpdatePyramidBagCursorPos(void);
void sub_81C4EFC(void);
-void GoToBattlePyramidBagMenu(u8 a0, void (*callback)(void));
+void GoToBattlePyramidBagMenu(u8 location, void (*exitCallback)(void));
void Task_CloseBattlePyramidBagMessage(u8 taskId);
void TryStoreHeldItemsInPyramidBag(void);
void ChooseItemsToTossFromPyramidBag(void);
-void CloseBattlePyramidBagAndSetCallback(u8 taskId);
+void CloseBattlePyramidBag(u8 taskId);
void DisplayItemMessageInBattlePyramid(u8 taskId, const u8 *str, void (*callback)(u8 taskId));
#endif // GUARD_BATTLE_PYRAMID_BAG_H
diff --git a/include/constants/battle_ai.h b/include/constants/battle_ai.h
index 4c3a45dc6..5ade58d50 100644
--- a/include/constants/battle_ai.h
+++ b/include/constants/battle_ai.h
@@ -29,24 +29,24 @@
#define AI_WEATHER_HAIL 3
// get_how_powerful_move_is
-#define MOVE_POWER_DISCOURAGED 0
+#define MOVE_POWER_OTHER 0
#define MOVE_NOT_MOST_POWERFUL 1
#define MOVE_MOST_POWERFUL 2
// script's table id to bit
-#define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0)
-#define AI_SCRIPT_TRY_TO_FAINT (1 << 1)
-#define AI_SCRIPT_CHECK_VIABILITY (1 << 2)
-#define AI_SCRIPT_SETUP_FIRST_TURN (1 << 3)
-#define AI_SCRIPT_RISKY (1 << 4)
-#define AI_SCRIPT_PREFER_STRONGEST_MOVE (1 << 5)
-#define AI_SCRIPT_PREFER_BATON_PASS (1 << 6)
-#define AI_SCRIPT_DOUBLE_BATTLE (1 << 7)
-#define AI_SCRIPT_HP_AWARE (1 << 8)
-#define AI_SCRIPT_UNKNOWN (1 << 9)
+#define AI_SCRIPT_CHECK_BAD_MOVE (1 << 0)
+#define AI_SCRIPT_TRY_TO_FAINT (1 << 1)
+#define AI_SCRIPT_CHECK_VIABILITY (1 << 2)
+#define AI_SCRIPT_SETUP_FIRST_TURN (1 << 3)
+#define AI_SCRIPT_RISKY (1 << 4)
+#define AI_SCRIPT_PREFER_POWER_EXTREMES (1 << 5)
+#define AI_SCRIPT_PREFER_BATON_PASS (1 << 6)
+#define AI_SCRIPT_DOUBLE_BATTLE (1 << 7)
+#define AI_SCRIPT_HP_AWARE (1 << 8)
+#define AI_SCRIPT_TRY_SUNNY_DAY_START (1 << 9)
// 10 - 28 are not used
-#define AI_SCRIPT_ROAMING (1 << 29)
-#define AI_SCRIPT_SAFARI (1 << 30)
-#define AI_SCRIPT_FIRST_BATTLE (1 << 31)
+#define AI_SCRIPT_ROAMING (1 << 29)
+#define AI_SCRIPT_SAFARI (1 << 30)
+#define AI_SCRIPT_FIRST_BATTLE (1 << 31)
#endif // GUARD_CONSTANTS_BATTLE_AI_H
diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h
index 5f8900bf6..4622876cc 100644
--- a/include/constants/battle_anim.h
+++ b/include/constants/battle_anim.h
@@ -410,33 +410,4 @@
#define ANIM_WEATHER_SANDSTORM 3
#define ANIM_WEATHER_HAIL 4
-// Battle mon back animations.
-#define BACK_ANIM_NONE 0x00
-#define BACK_ANIM_H_SLIDE_QUICK 0x01
-#define BACK_ANIM_H_SLIDE 0x02
-#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1 0x03
-#define BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2 0x04
-#define BACK_ANIM_SHRINK_GROW_1 0x05
-#define BACK_ANIM_GROW_1 0x06
-#define BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE 0x07
-#define BACK_ANIM_HORIZONTAL_SHAKE 0x08
-#define BACK_ANIM_VERTICAL_SHAKE 0x09
-#define BACK_ANIM_V_SHAKE_WITH_H_SLIDE 0x0a
-#define BACK_ANIM_VERTICAL_STRETCH 0x0b
-#define BACK_ANIM_HORIZONTAL_STRETCH 0x0c
-#define BACK_ANIM_GROW_2 0x0d
-#define BACK_ANIM_V_SHAKE_WITH_PAUSE 0x0e
-#define BACK_ANIM_CIRCLE_MOVE_CLOCKWISE 0x0f
-#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL 0x10
-#define BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE 0x11
-#define BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE 0x12
-#define BACK_ANIM_DIP_RIGHT_SIDE 0x13
-#define BACK_ANIM_SHRINK_GROW_2 0x14
-#define BACK_ANIM_JOLT_RIGHT 0x15
-#define BACK_ANIM_FLASH_YELLOW_WITH_SHAKE 0x16
-#define BACK_ANIM_FADE_RED_WITH_SHAKE 0x17
-#define BACK_ANIM_FADE_GREEN_WITH_SHAKE 0x18
-#define BACK_ANIM_FADE_BLUE_WITH_SHAKE 0x19
-
-
#endif // GUARD_CONSTANTS_BATTLE_ANIM_H
diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h
index bbe6db81c..68c5a42ef 100644
--- a/include/constants/battle_frontier.h
+++ b/include/constants/battle_frontier.h
@@ -78,6 +78,21 @@
#define FRONTIER_MANIAC_MESSAGE_COUNT 3
+// Frontier TV Show
+#define FRONTIER_SHOW_TOWER_SINGLES 1
+#define FRONTIER_SHOW_TOWER_DOUBLES 2
+#define FRONTIER_SHOW_TOWER_MULTIS 3
+#define FRONTIER_SHOW_TOWER_LINK_MULTIS 4
+#define FRONTIER_SHOW_DOME_SINGLES 5
+#define FRONTIER_SHOW_DOME_DOUBLES 6
+#define FRONTIER_SHOW_FACTORY_SINGLES 7
+#define FRONTIER_SHOW_FACTORY_DOUBLES 8
+#define FRONTIER_SHOW_PIKE 9
+#define FRONTIER_SHOW_ARENA 10
+#define FRONTIER_SHOW_PALACE_SINGLES 11
+#define FRONTIER_SHOW_PALACE_DOUBLES 12
+#define FRONTIER_SHOW_PYRAMID 13
+
// Frontier Gambler
#define FRONTIER_GAMBLER_WAITING 0
#define FRONTIER_GAMBLER_PLACED_BET 1
diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h
index f22541272..c8d37aac6 100644
--- a/include/constants/battle_string_ids.h
+++ b/include/constants/battle_string_ids.h
@@ -502,7 +502,7 @@
#define B_MSG_TRANSFORMED 0
#define B_MSG_TRANSFORM_FAILED 1
-// gSubsituteUsedStringIds
+// gSubstituteUsedStringIds
#define B_MSG_SET_SUBSTITUTE 0
#define B_MSG_SUBSTITUTE_FAILED 1
diff --git a/include/constants/contest.h b/include/constants/contest.h
index 9eb6b26e4..775dcbe62 100644
--- a/include/constants/contest.h
+++ b/include/constants/contest.h
@@ -4,6 +4,7 @@
#define APPLAUSE_METER_SIZE 5
#define CONTEST_NUM_APPEALS 5
#define CONTEST_LAST_APPEAL (CONTEST_NUM_APPEALS - 1)
+#define MAX_CONTEST_MOVE_HEARTS 8
#define LINK_CONTEST_FLAG_IS_LINK (1 << 0)
#define LINK_CONTEST_FLAG_IS_WIRELESS (1 << 1)
@@ -22,7 +23,9 @@
#define CONTEST_TYPE_NPC_MASTER (CONTEST_RANK_MASTER + 1)
#define CONTEST_TYPE_LINK (CONTEST_RANK_LINK + 1)
-#define CONTEST_WINNER_ARTIST 0 // Winner shown by the artist, painting not necessarily saved
+// IDs below - 1 are indexes into gSaveBlock1Ptr->contestWinners[]
+// CONTEST_WINNER_ARTIST is for the winner of the most recent contest, and is not saved.
+#define CONTEST_WINNER_ARTIST 0
#define CONTEST_WINNER_HALL_1 1
#define CONTEST_WINNER_HALL_2 2
#define CONTEST_WINNER_HALL_3 3
@@ -30,8 +33,8 @@
#define CONTEST_WINNER_HALL_5 5
#define CONTEST_WINNER_HALL_6 6
#define NUM_CONTEST_HALL_WINNERS 6
-#define CONTEST_WINNER_7 7
-#define CONTEST_WINNER_8 8
+#define CONTEST_WINNER_HALL_UNUSED_1 7 // These two have data for gDefaultContestWinners
+#define CONTEST_WINNER_HALL_UNUSED_2 8 // but there are only 6 paintings in the Contest Hall
#define CONTEST_WINNER_MUSEUM_COOL 9
#define CONTEST_WINNER_MUSEUM_BEAUTY 10
#define CONTEST_WINNER_MUSEUM_CUTE 11
@@ -39,6 +42,14 @@
#define CONTEST_WINNER_MUSEUM_TOUGH 13
// NUM_CONTEST_WINNERS in constants/global.h
+#define MUSEUM_CONTEST_WINNERS_START (CONTEST_WINNER_MUSEUM_COOL - 1)
+
+#define CONTEST_SAVE_FOR_MUSEUM ((u8)-1)
+#define CONTEST_SAVE_FOR_ARTIST ((u8)-2)
+
+// The number of possible captions for a Contest painting, per category
+#define NUM_PAINTING_CAPTIONS 3
+
#define CANT_ENTER_CONTEST 0
#define CAN_ENTER_CONTEST_EQUAL_RANK 1
#define CAN_ENTER_CONTEST_HIGH_RANK 2
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
index 069f17fcb..f98cedbb7 100644
--- a/include/constants/easy_chat.h
+++ b/include/constants/easy_chat.h
@@ -9,7 +9,7 @@
#define EASY_CHAT_TYPE_INTERVIEW 5
#define EASY_CHAT_TYPE_BARD_SONG 6
#define EASY_CHAT_TYPE_FAN_CLUB 7
-#define EASY_CHAT_TYPE_UNK_8 8
+#define EASY_CHAT_TYPE_DUMMY_SHOW 8
#define EASY_CHAT_TYPE_TRENDY_PHRASE 9
#define EASY_CHAT_TYPE_GABBY_AND_TY 10
#define EASY_CHAT_TYPE_CONTEST_INTERVIEW 11
diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h
index 7a224940f..1958c792e 100644
--- a/include/constants/event_objects.h
+++ b/include/constants/event_objects.h
@@ -279,7 +279,37 @@
#define FIRST_DECORATION_SPRITE_GFX OBJ_EVENT_GFX_PICHU_DOLL
+// Special object event local ids
#define OBJ_EVENT_ID_PLAYER 0xFF
#define OBJ_EVENT_ID_CAMERA 0x7F
+// Object event local ids referenced in C files
+#define LOCALID_ROUTE111_PLAYER_FALLING 45
+#define LOCALID_BIRTH_ISLAND_EXTERIOR_ROCK 1
+#define LOCALID_FARAWAY_ISLAND_MEW 1
+#define LOCALID_UNION_ROOM_PLAYER_4 2
+#define LOCALID_UNION_ROOM_PLAYER_8 3
+#define LOCALID_UNION_ROOM_PLAYER_7 4
+#define LOCALID_UNION_ROOM_PLAYER_6 5
+#define LOCALID_UNION_ROOM_PLAYER_5 6
+#define LOCALID_UNION_ROOM_PLAYER_3 7
+#define LOCALID_UNION_ROOM_PLAYER_2 8
+#define LOCALID_UNION_ROOM_PLAYER_1 9
+#define LOCALID_BATTLE_TOWER_LOBBY_REPORTER 5
+#define LOCALID_TRUCK_BOX_TOP 1
+#define LOCALID_TRUCK_BOX_BOTTOM_L 2
+#define LOCALID_TRUCK_BOX_BOTTOM_R 3
+#define LOCALID_OLDALE_MART_CLERK 1
+#define LOCALID_LAVARIDGE_MART_CLERK 1
+#define LOCALID_FALLARBOR_MART_CLERK 1
+#define LOCALID_VERDANTURF_MART_CLERK 1
+#define LOCALID_PETALBURG_MART_CLERK 1
+#define LOCALID_SLATEPORT_MART_CLERK 1
+#define LOCALID_MAUVILLE_MART_CLERK 1
+#define LOCALID_RUSTBORO_MART_CLERK 1
+#define LOCALID_FORTREE_MART_CLERK 1
+#define LOCALID_MOSSDEEP_MART_CLERK 1
+#define LOCALID_SOOTOPOLIS_MART_CLERK 1
+#define LOCALID_BATTLE_FRONTIER_MART_CLERK 1
+
#endif // GUARD_CONSTANTS_EVENT_OBJECTS_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 48606962a..6702fa5ee 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -535,120 +535,120 @@
#define FLAG_MYSTERY_EVENT_14 0x1F2
#define FLAG_MYSTERY_EVENT_15 0x1F3
-// Hidden Items -- sorted by location
+// Hidden Items
#define FLAG_HIDDEN_ITEMS_START 0x1F4
+#define FLAG_HIDDEN_ITEM_LAVARIDGE_TOWN_ICE_HEAL (FLAG_HIDDEN_ITEMS_START + 0x00)
#define FLAG_HIDDEN_ITEM_TRICK_HOUSE_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x01)
+#define FLAG_HIDDEN_ITEM_ROUTE_111_STARDUST (FLAG_HIDDEN_ITEMS_START + 0x02)
+#define FLAG_HIDDEN_ITEM_ROUTE_113_ETHER (FLAG_HIDDEN_ITEMS_START + 0x03)
+#define FLAG_HIDDEN_ITEM_ROUTE_114_CARBOS (FLAG_HIDDEN_ITEMS_START + 0x04)
+#define FLAG_HIDDEN_ITEM_ROUTE_119_CALCIUM (FLAG_HIDDEN_ITEMS_START + 0x05)
+#define FLAG_HIDDEN_ITEM_ROUTE_119_ULTRA_BALL (FLAG_HIDDEN_ITEMS_START + 0x06)
+#define FLAG_HIDDEN_ITEM_ROUTE_123_SUPER_REPEL (FLAG_HIDDEN_ITEMS_START + 0x07)
#define FLAG_HIDDEN_ITEM_UNDERWATER_124_CARBOS (FLAG_HIDDEN_ITEMS_START + 0x08)
#define FLAG_HIDDEN_ITEM_UNDERWATER_124_GREEN_SHARD (FLAG_HIDDEN_ITEMS_START + 0x09)
#define FLAG_HIDDEN_ITEM_UNDERWATER_124_PEARL (FLAG_HIDDEN_ITEMS_START + 0x0A)
#define FLAG_HIDDEN_ITEM_UNDERWATER_124_BIG_PEARL (FLAG_HIDDEN_ITEMS_START + 0x0B)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_126_BLUE_SHARD (FLAG_HIDDEN_ITEMS_START + 0x0C)
#define FLAG_HIDDEN_ITEM_UNDERWATER_124_HEART_SCALE_1 (FLAG_HIDDEN_ITEMS_START + 0x0D)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_124_CALCIUM (FLAG_HIDDEN_ITEMS_START + 0x24)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_124_HEART_SCALE_2 (FLAG_HIDDEN_ITEMS_START + 0x26)
#define FLAG_HIDDEN_ITEM_UNDERWATER_126_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x0E)
#define FLAG_HIDDEN_ITEM_UNDERWATER_126_ULTRA_BALL (FLAG_HIDDEN_ITEMS_START + 0x0F)
#define FLAG_HIDDEN_ITEM_UNDERWATER_126_STARDUST (FLAG_HIDDEN_ITEMS_START + 0x10)
#define FLAG_HIDDEN_ITEM_UNDERWATER_126_PEARL (FLAG_HIDDEN_ITEMS_START + 0x11)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_126_IRON (FLAG_HIDDEN_ITEMS_START + 0x13)
#define FLAG_HIDDEN_ITEM_UNDERWATER_126_YELLOW_SHARD (FLAG_HIDDEN_ITEMS_START + 0x12)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_126_IRON (FLAG_HIDDEN_ITEMS_START + 0x13)
#define FLAG_HIDDEN_ITEM_UNDERWATER_126_BIG_PEARL (FLAG_HIDDEN_ITEMS_START + 0x14)
-#define FLAG_HIDDEN_ITEM_UNDERWATER_126_BLUE_SHARD (FLAG_HIDDEN_ITEMS_START + 0x0C)
#define FLAG_HIDDEN_ITEM_UNDERWATER_127_STAR_PIECE (FLAG_HIDDEN_ITEMS_START + 0x15)
#define FLAG_HIDDEN_ITEM_UNDERWATER_127_HP_UP (FLAG_HIDDEN_ITEMS_START + 0x16)
#define FLAG_HIDDEN_ITEM_UNDERWATER_127_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x17)
#define FLAG_HIDDEN_ITEM_UNDERWATER_127_RED_SHARD (FLAG_HIDDEN_ITEMS_START + 0x18)
#define FLAG_HIDDEN_ITEM_UNDERWATER_128_PROTEIN (FLAG_HIDDEN_ITEMS_START + 0x19)
#define FLAG_HIDDEN_ITEM_UNDERWATER_128_PEARL (FLAG_HIDDEN_ITEMS_START + 0x1A)
+#define FLAG_HIDDEN_ITEM_LILYCOVE_CITY_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x1B)
#define FLAG_HIDDEN_ITEM_FALLARBOR_TOWN_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x1C)
-#define FLAG_HIDDEN_ITEM_LAVARIDGE_TOWN_ICE_HEAL (FLAG_HIDDEN_ITEMS_START + 0x00)
+#define FLAG_HIDDEN_ITEM_MT_PYRE_EXTERIOR_ULTRA_BALL (FLAG_HIDDEN_ITEMS_START + 0x1D)
+#define FLAG_HIDDEN_ITEM_ROUTE_113_TM_32 (FLAG_HIDDEN_ITEMS_START + 0x1E)
#define FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_1_KEY (FLAG_HIDDEN_ITEMS_START + 0x1F)
#define FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_2_KEY (FLAG_HIDDEN_ITEMS_START + 0x20)
#define FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_4_KEY (FLAG_HIDDEN_ITEMS_START + 0x21)
#define FLAG_HIDDEN_ITEM_ABANDONED_SHIP_RM_6_KEY (FLAG_HIDDEN_ITEMS_START + 0x22)
-#define FLAG_HIDDEN_ITEM_ARTISAN_CAVE_B1F_CALCIUM (FLAG_HIDDEN_ITEMS_START + 0x65)
-#define FLAG_HIDDEN_ITEM_ARTISAN_CAVE_B1F_ZINC (FLAG_HIDDEN_ITEMS_START + 0x66)
-#define FLAG_HIDDEN_ITEM_ARTISAN_CAVE_B1F_PROTEIN (FLAG_HIDDEN_ITEMS_START + 0x67)
-#define FLAG_HIDDEN_ITEM_ARTISAN_CAVE_B1F_IRON (FLAG_HIDDEN_ITEMS_START + 0x68)
-#define FLAG_HIDDEN_ITEM_GRANITE_CAVE_B2F_EVERSTONE_1 (FLAG_HIDDEN_ITEMS_START + 0x30)
-#define FLAG_HIDDEN_ITEM_GRANITE_CAVE_B2F_EVERSTONE_2 (FLAG_HIDDEN_ITEMS_START + 0x31)
-#define FLAG_HIDDEN_ITEM_JAGGED_PASS_GREAT_BALL (FLAG_HIDDEN_ITEMS_START + 0x4C)
-#define FLAG_HIDDEN_ITEM_JAGGED_PASS_FULL_HEAL (FLAG_HIDDEN_ITEMS_START + 0x4D)
-#define FLAG_HIDDEN_ITEM_LILYCOVE_CITY_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x1B)
-#define FLAG_HIDDEN_ITEM_LILYCOVE_CITY_PP_UP (FLAG_HIDDEN_ITEMS_START + 0x2B)
-#define FLAG_HIDDEN_ITEM_LILYCOVE_CITY_POKE_BALL (FLAG_HIDDEN_ITEMS_START + 0x4B)
-#define FLAG_HIDDEN_ITEM_MT_PYRE_EXTERIOR_ULTRA_BALL (FLAG_HIDDEN_ITEMS_START + 0x1D)
-#define FLAG_HIDDEN_ITEM_MT_PYRE_EXTERIOR_MAX_ETHER (FLAG_HIDDEN_ITEMS_START + 0x4E)
-#define FLAG_HIDDEN_ITEM_MT_PYRE_SUMMIT_ZINC (FLAG_HIDDEN_ITEMS_START + 0x4F)
-#define FLAG_HIDDEN_ITEM_MT_PYRE_SUMMIT_RARE_CANDY (FLAG_HIDDEN_ITEMS_START + 0x50)
-#define FLAG_HIDDEN_ITEM_NAVEL_ROCK_TOP_SACRED_ASH (FLAG_HIDDEN_ITEMS_START + 0x6D)
-#define FLAG_HIDDEN_ITEM_PETALBURG_CITY_RARE_CANDY (FLAG_HIDDEN_ITEMS_START + 0x5F)
-#define FLAG_HIDDEN_ITEM_PETALBURG_WOODS_POTION (FLAG_HIDDEN_ITEMS_START + 0x3A)
-#define FLAG_HIDDEN_ITEM_PETALBURG_WOODS_TINY_MUSHROOM_1 (FLAG_HIDDEN_ITEMS_START + 0x3B)
-#define FLAG_HIDDEN_ITEM_PETALBURG_WOODS_TINY_MUSHROOM_2 (FLAG_HIDDEN_ITEMS_START + 0x3C)
-#define FLAG_HIDDEN_ITEM_PETALBURG_WOODS_POKE_BALL (FLAG_HIDDEN_ITEMS_START + 0x3D)
-#define FLAG_HIDDEN_ITEM_VICTORY_ROAD_B2F_ELIXIR (FLAG_HIDDEN_ITEMS_START + 0x52)
-#define FLAG_HIDDEN_ITEM_VICTORY_ROAD_B2F_MAX_REPEL (FLAG_HIDDEN_ITEMS_START + 0x53)
-#define FLAG_HIDDEN_ITEM_SAFARI_ZONE_NORTH_EAST_RARE_CANDY (FLAG_HIDDEN_ITEMS_START + 0x6A)
-#define FLAG_HIDDEN_ITEM_SAFARI_ZONE_NORTH_EAST_ZINC (FLAG_HIDDEN_ITEMS_START + 0x6B)
-#define FLAG_HIDDEN_ITEM_SAFARI_ZONE_SOUTH_EAST_PP_UP (FLAG_HIDDEN_ITEMS_START + 0x6C)
-#define FLAG_HIDDEN_ITEM_SAFARI_ZONE_SOUTH_EAST_FULL_RESTORE (FLAG_HIDDEN_ITEMS_START + 0x69)
#define FLAG_HIDDEN_ITEM_SS_TIDAL_LOWER_DECK_LEFTOVERS (FLAG_HIDDEN_ITEMS_START + 0x23)
-#define FLAG_HIDDEN_ITEM_VICTORY_ROAD_1F_ULTRA_BALL (FLAG_HIDDEN_ITEMS_START + 0x51)
-#define FLAG_HIDDEN_ITEM_ROUTE_104_SUPER_POTION (FLAG_HIDDEN_ITEMS_START + 0x2C)
-#define FLAG_HIDDEN_ITEM_ROUTE_104_POKE_BALL (FLAG_HIDDEN_ITEMS_START + 0x3E)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_124_CALCIUM (FLAG_HIDDEN_ITEMS_START + 0x24)
#define FLAG_HIDDEN_ITEM_ROUTE_104_POTION (FLAG_HIDDEN_ITEMS_START + 0x25)
-#define FLAG_HIDDEN_ITEM_ROUTE_104_ANTIDOTE (FLAG_HIDDEN_ITEMS_START + 0x55)
-#define FLAG_HIDDEN_ITEM_ROUTE_104_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x58)
-#define FLAG_HIDDEN_ITEM_ROUTE_105_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x59)
-#define FLAG_HIDDEN_ITEM_ROUTE_105_BIG_PEARL (FLAG_HIDDEN_ITEMS_START + 0x6F)
-#define FLAG_HIDDEN_ITEM_ROUTE_106_POKE_BALL (FLAG_HIDDEN_ITEMS_START + 0x3F)
+#define FLAG_HIDDEN_ITEM_UNDERWATER_124_HEART_SCALE_2 (FLAG_HIDDEN_ITEMS_START + 0x26)
+#define FLAG_HIDDEN_ITEM_ROUTE_121_HP_UP (FLAG_HIDDEN_ITEMS_START + 0x27)
+#define FLAG_HIDDEN_ITEM_ROUTE_121_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x28)
+#define FLAG_HIDDEN_ITEM_ROUTE_123_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x29)
+#define FLAG_HIDDEN_ITEM_ROUTE_113_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x2A)
+#define FLAG_HIDDEN_ITEM_LILYCOVE_CITY_PP_UP (FLAG_HIDDEN_ITEMS_START + 0x2B)
+#define FLAG_HIDDEN_ITEM_ROUTE_104_SUPER_POTION (FLAG_HIDDEN_ITEMS_START + 0x2C)
+#define FLAG_HIDDEN_ITEM_ROUTE_116_SUPER_POTION (FLAG_HIDDEN_ITEMS_START + 0x2D)
#define FLAG_HIDDEN_ITEM_ROUTE_106_STARDUST (FLAG_HIDDEN_ITEMS_START + 0x2E)
#define FLAG_HIDDEN_ITEM_ROUTE_106_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x2F)
-#define FLAG_HIDDEN_ITEM_ROUTE_108_RARE_CANDY (FLAG_HIDDEN_ITEMS_START + 0x56)
+#define FLAG_HIDDEN_ITEM_GRANITE_CAVE_B2F_EVERSTONE_1 (FLAG_HIDDEN_ITEMS_START + 0x30)
+#define FLAG_HIDDEN_ITEM_GRANITE_CAVE_B2F_EVERSTONE_2 (FLAG_HIDDEN_ITEMS_START + 0x31)
#define FLAG_HIDDEN_ITEM_ROUTE_109_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x32)
-#define FLAG_HIDDEN_ITEM_ROUTE_109_HEART_SCALE_1 (FLAG_HIDDEN_ITEMS_START + 0x34)
#define FLAG_HIDDEN_ITEM_ROUTE_109_GREAT_BALL (FLAG_HIDDEN_ITEMS_START + 0x33)
-#define FLAG_HIDDEN_ITEM_ROUTE_109_ETHER (FLAG_HIDDEN_ITEMS_START + 0x40)
-#define FLAG_HIDDEN_ITEM_ROUTE_109_HEART_SCALE_2 (FLAG_HIDDEN_ITEMS_START + 0x5A)
-#define FLAG_HIDDEN_ITEM_ROUTE_109_HEART_SCALE_3 (FLAG_HIDDEN_ITEMS_START + 0x5B)
-#define FLAG_HIDDEN_ITEM_ROUTE_110_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x36)
+#define FLAG_HIDDEN_ITEM_ROUTE_109_HEART_SCALE_1 (FLAG_HIDDEN_ITEMS_START + 0x34)
#define FLAG_HIDDEN_ITEM_ROUTE_110_GREAT_BALL (FLAG_HIDDEN_ITEMS_START + 0x35)
-#define FLAG_HIDDEN_ITEM_ROUTE_110_POKE_BALL (FLAG_HIDDEN_ITEMS_START + 0x41)
+#define FLAG_HIDDEN_ITEM_ROUTE_110_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x36)
#define FLAG_HIDDEN_ITEM_ROUTE_110_FULL_HEAL (FLAG_HIDDEN_ITEMS_START + 0x37)
-#define FLAG_HIDDEN_ITEM_ROUTE_111_STARDUST (FLAG_HIDDEN_ITEMS_START + 0x02)
#define FLAG_HIDDEN_ITEM_ROUTE_111_PROTEIN (FLAG_HIDDEN_ITEMS_START + 0x38)
#define FLAG_HIDDEN_ITEM_ROUTE_111_RARE_CANDY (FLAG_HIDDEN_ITEMS_START + 0x39)
-#define FLAG_HIDDEN_ITEM_ROUTE_113_ETHER (FLAG_HIDDEN_ITEMS_START + 0x03)
-#define FLAG_HIDDEN_ITEM_ROUTE_113_TM_32 (FLAG_HIDDEN_ITEMS_START + 0x1E)
-#define FLAG_HIDDEN_ITEM_ROUTE_113_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x62)
-#define FLAG_HIDDEN_ITEM_ROUTE_114_CARBOS (FLAG_HIDDEN_ITEMS_START + 0x04)
-#define FLAG_HIDDEN_ITEM_ROUTE_113_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x2A)
-#define FLAG_HIDDEN_ITEM_ROUTE_115_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x61)
-#define FLAG_HIDDEN_ITEM_ROUTE_116_SUPER_POTION (FLAG_HIDDEN_ITEMS_START + 0x2D)
-#define FLAG_HIDDEN_ITEM_ROUTE_116_BLACK_GLASSES (FLAG_HIDDEN_ITEMS_START + 0x60)
-#define FLAG_HIDDEN_ITEM_ROUTE_117_REPEL (FLAG_HIDDEN_ITEMS_START + 0x48)
+#define FLAG_HIDDEN_ITEM_PETALBURG_WOODS_POTION (FLAG_HIDDEN_ITEMS_START + 0x3A)
+#define FLAG_HIDDEN_ITEM_PETALBURG_WOODS_TINY_MUSHROOM_1 (FLAG_HIDDEN_ITEMS_START + 0x3B)
+#define FLAG_HIDDEN_ITEM_PETALBURG_WOODS_TINY_MUSHROOM_2 (FLAG_HIDDEN_ITEMS_START + 0x3C)
+#define FLAG_HIDDEN_ITEM_PETALBURG_WOODS_POKE_BALL (FLAG_HIDDEN_ITEMS_START + 0x3D)
+#define FLAG_HIDDEN_ITEM_ROUTE_104_POKE_BALL (FLAG_HIDDEN_ITEMS_START + 0x3E)
+#define FLAG_HIDDEN_ITEM_ROUTE_106_POKE_BALL (FLAG_HIDDEN_ITEMS_START + 0x3F)
+#define FLAG_HIDDEN_ITEM_ROUTE_109_ETHER (FLAG_HIDDEN_ITEMS_START + 0x40)
+#define FLAG_HIDDEN_ITEM_ROUTE_110_POKE_BALL (FLAG_HIDDEN_ITEMS_START + 0x41)
#define FLAG_HIDDEN_ITEM_ROUTE_118_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x42)
#define FLAG_HIDDEN_ITEM_ROUTE_118_IRON (FLAG_HIDDEN_ITEMS_START + 0x43)
-#define FLAG_HIDDEN_ITEM_ROUTE_119_CALCIUM (FLAG_HIDDEN_ITEMS_START + 0x05)
-#define FLAG_HIDDEN_ITEM_ROUTE_119_ULTRA_BALL (FLAG_HIDDEN_ITEMS_START + 0x06)
#define FLAG_HIDDEN_ITEM_ROUTE_119_FULL_HEAL (FLAG_HIDDEN_ITEMS_START + 0x44)
-#define FLAG_HIDDEN_ITEM_ROUTE_119_MAX_ETHER (FLAG_HIDDEN_ITEMS_START + 0x57)
-#define FLAG_HIDDEN_ITEM_ROUTE_120_RARE_CANDY_1 (FLAG_HIDDEN_ITEMS_START + 0x47)
-#define FLAG_HIDDEN_ITEM_ROUTE_120_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x54)
#define FLAG_HIDDEN_ITEM_ROUTE_120_RARE_CANDY_2 (FLAG_HIDDEN_ITEMS_START + 0x45)
#define FLAG_HIDDEN_ITEM_ROUTE_120_ZINC (FLAG_HIDDEN_ITEMS_START + 0x46)
-#define FLAG_HIDDEN_ITEM_ROUTE_121_HP_UP (FLAG_HIDDEN_ITEMS_START + 0x27)
-#define FLAG_HIDDEN_ITEM_ROUTE_121_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x28)
+#define FLAG_HIDDEN_ITEM_ROUTE_120_RARE_CANDY_1 (FLAG_HIDDEN_ITEMS_START + 0x47)
+#define FLAG_HIDDEN_ITEM_ROUTE_117_REPEL (FLAG_HIDDEN_ITEMS_START + 0x48)
#define FLAG_HIDDEN_ITEM_ROUTE_121_FULL_HEAL (FLAG_HIDDEN_ITEMS_START + 0x49)
-#define FLAG_HIDDEN_ITEM_ROUTE_121_MAX_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x64)
-#define FLAG_HIDDEN_ITEM_ROUTE_123_SUPER_REPEL (FLAG_HIDDEN_ITEMS_START + 0x07)
-#define FLAG_HIDDEN_ITEM_ROUTE_123_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x29)
#define FLAG_HIDDEN_ITEM_ROUTE_123_HYPER_POTION (FLAG_HIDDEN_ITEMS_START + 0x4A)
-#define FLAG_HIDDEN_ITEM_ROUTE_123_PP_UP (FLAG_HIDDEN_ITEMS_START + 0x63)
-#define FLAG_HIDDEN_ITEM_ROUTE_123_RARE_CANDY (FLAG_HIDDEN_ITEMS_START + 0x6E)
+#define FLAG_HIDDEN_ITEM_LILYCOVE_CITY_POKE_BALL (FLAG_HIDDEN_ITEMS_START + 0x4B)
+#define FLAG_HIDDEN_ITEM_JAGGED_PASS_GREAT_BALL (FLAG_HIDDEN_ITEMS_START + 0x4C)
+#define FLAG_HIDDEN_ITEM_JAGGED_PASS_FULL_HEAL (FLAG_HIDDEN_ITEMS_START + 0x4D)
+#define FLAG_HIDDEN_ITEM_MT_PYRE_EXTERIOR_MAX_ETHER (FLAG_HIDDEN_ITEMS_START + 0x4E)
+#define FLAG_HIDDEN_ITEM_MT_PYRE_SUMMIT_ZINC (FLAG_HIDDEN_ITEMS_START + 0x4F)
+#define FLAG_HIDDEN_ITEM_MT_PYRE_SUMMIT_RARE_CANDY (FLAG_HIDDEN_ITEMS_START + 0x50)
+#define FLAG_HIDDEN_ITEM_VICTORY_ROAD_1F_ULTRA_BALL (FLAG_HIDDEN_ITEMS_START + 0x51)
+#define FLAG_HIDDEN_ITEM_VICTORY_ROAD_B2F_ELIXIR (FLAG_HIDDEN_ITEMS_START + 0x52)
+#define FLAG_HIDDEN_ITEM_VICTORY_ROAD_B2F_MAX_REPEL (FLAG_HIDDEN_ITEMS_START + 0x53)
+#define FLAG_HIDDEN_ITEM_ROUTE_120_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x54)
+#define FLAG_HIDDEN_ITEM_ROUTE_104_ANTIDOTE (FLAG_HIDDEN_ITEMS_START + 0x55)
+#define FLAG_HIDDEN_ITEM_ROUTE_108_RARE_CANDY (FLAG_HIDDEN_ITEMS_START + 0x56)
+#define FLAG_HIDDEN_ITEM_ROUTE_119_MAX_ETHER (FLAG_HIDDEN_ITEMS_START + 0x57)
+#define FLAG_HIDDEN_ITEM_ROUTE_104_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x58)
+#define FLAG_HIDDEN_ITEM_ROUTE_105_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x59)
+#define FLAG_HIDDEN_ITEM_ROUTE_109_HEART_SCALE_2 (FLAG_HIDDEN_ITEMS_START + 0x5A)
+#define FLAG_HIDDEN_ITEM_ROUTE_109_HEART_SCALE_3 (FLAG_HIDDEN_ITEMS_START + 0x5B)
#define FLAG_HIDDEN_ITEM_ROUTE_128_HEART_SCALE_1 (FLAG_HIDDEN_ITEMS_START + 0x5C)
#define FLAG_HIDDEN_ITEM_ROUTE_128_HEART_SCALE_2 (FLAG_HIDDEN_ITEMS_START + 0x5D)
#define FLAG_HIDDEN_ITEM_ROUTE_128_HEART_SCALE_3 (FLAG_HIDDEN_ITEMS_START + 0x5E)
+#define FLAG_HIDDEN_ITEM_PETALBURG_CITY_RARE_CANDY (FLAG_HIDDEN_ITEMS_START + 0x5F)
+#define FLAG_HIDDEN_ITEM_ROUTE_116_BLACK_GLASSES (FLAG_HIDDEN_ITEMS_START + 0x60)
+#define FLAG_HIDDEN_ITEM_ROUTE_115_HEART_SCALE (FLAG_HIDDEN_ITEMS_START + 0x61)
+#define FLAG_HIDDEN_ITEM_ROUTE_113_NUGGET (FLAG_HIDDEN_ITEMS_START + 0x62)
+#define FLAG_HIDDEN_ITEM_ROUTE_123_PP_UP (FLAG_HIDDEN_ITEMS_START + 0x63)
+#define FLAG_HIDDEN_ITEM_ROUTE_121_MAX_REVIVE (FLAG_HIDDEN_ITEMS_START + 0x64)
+#define FLAG_HIDDEN_ITEM_ARTISAN_CAVE_B1F_CALCIUM (FLAG_HIDDEN_ITEMS_START + 0x65)
+#define FLAG_HIDDEN_ITEM_ARTISAN_CAVE_B1F_ZINC (FLAG_HIDDEN_ITEMS_START + 0x66)
+#define FLAG_HIDDEN_ITEM_ARTISAN_CAVE_B1F_PROTEIN (FLAG_HIDDEN_ITEMS_START + 0x67)
+#define FLAG_HIDDEN_ITEM_ARTISAN_CAVE_B1F_IRON (FLAG_HIDDEN_ITEMS_START + 0x68)
+#define FLAG_HIDDEN_ITEM_SAFARI_ZONE_SOUTH_EAST_FULL_RESTORE (FLAG_HIDDEN_ITEMS_START + 0x69)
+#define FLAG_HIDDEN_ITEM_SAFARI_ZONE_NORTH_EAST_RARE_CANDY (FLAG_HIDDEN_ITEMS_START + 0x6A)
+#define FLAG_HIDDEN_ITEM_SAFARI_ZONE_NORTH_EAST_ZINC (FLAG_HIDDEN_ITEMS_START + 0x6B)
+#define FLAG_HIDDEN_ITEM_SAFARI_ZONE_SOUTH_EAST_PP_UP (FLAG_HIDDEN_ITEMS_START + 0x6C)
+#define FLAG_HIDDEN_ITEM_NAVEL_ROCK_TOP_SACRED_ASH (FLAG_HIDDEN_ITEMS_START + 0x6D)
+#define FLAG_HIDDEN_ITEM_ROUTE_123_RARE_CANDY (FLAG_HIDDEN_ITEMS_START + 0x6E)
+#define FLAG_HIDDEN_ITEM_ROUTE_105_BIG_PEARL (FLAG_HIDDEN_ITEMS_START + 0x6F)
#define FLAG_UNUSED_0x264 0x264 // Unused Flag
#define FLAG_UNUSED_0x265 0x265 // Unused Flag
@@ -799,7 +799,7 @@
#define FLAG_HIDE_LITTLEROOT_TOWN_PLAYERS_HOUSE_VIGOROTH_1 0x2F2
#define FLAG_HIDE_LITTLEROOT_TOWN_PLAYERS_HOUSE_VIGOROTH_2 0x2F3
#define FLAG_HIDE_MOSSDEEP_CITY_SPACE_CENTER_1F_TEAM_MAGMA 0x2F4
-#define FLAG_HIDE_LITTLE_ROOT_TOWN_PLAYERS_BEDROOM_MOM 0x2F5
+#define FLAG_HIDE_LITTLEROOT_TOWN_PLAYERS_BEDROOM_MOM 0x2F5
#define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_MOM 0x2F6
#define FLAG_HIDE_LITTLEROOT_TOWN_MAYS_HOUSE_MOM 0x2F7
#define FLAG_HIDE_LITTLEROOT_TOWN_BRENDANS_HOUSE_RIVAL_BEDROOM 0x2F8
diff --git a/include/constants/item.h b/include/constants/item.h
index 3277f2379..a224291fa 100644
--- a/include/constants/item.h
+++ b/include/constants/item.h
@@ -16,9 +16,4 @@
#define KEYITEMS_POCKET 4
#define POCKETS_COUNT 5
-// The TM/HM pocket is the largest pocket, so the maximum amount of items
-// in a pocket is its count + 1 for the cancel option
-#define MAX_POCKET_ITEMS (BAG_TMHM_COUNT + 1)
-
-
#endif // GUARD_ITEM_CONSTANTS_H
diff --git a/include/constants/items.h b/include/constants/items.h
index 8f77e80de..c596dd3b8 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -199,9 +199,11 @@
#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY
-#define ITEM_0B0 176
-#define ITEM_0B1 177
-#define ITEM_0B2 178
+#define ITEM_UNUSED_BERRY_1 176
+#define ITEM_UNUSED_BERRY_2 177
+#define ITEM_UNUSED_BERRY_3 178
+
+#define MAX_BERRY_INDEX ITEM_UNUSED_BERRY_3
// Battle Held items
#define ITEM_BRIGHT_POWDER 179
@@ -531,6 +533,6 @@
#define ITEM_B_USE_OTHER 2
// Check if the item is one that can be used on a Pokemon.
-#define ITEM_HAS_EFFECT(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
+#define ITEM_HAS_EFFECT(item) ((item) >= ITEM_POTION && (item) <= MAX_BERRY_INDEX)
#endif // GUARD_CONSTANTS_ITEMS_H
diff --git a/include/constants/map_groups.h b/include/constants/map_groups.h
index c650600e8..eaf40a525 100755
--- a/include/constants/map_groups.h
+++ b/include/constants/map_groups.h
@@ -5,7 +5,7 @@
// DO NOT MODIFY THIS FILE! It is auto-generated from data/maps/map_groups.json
//
-// Map Group 0
+// gMapGroup_TownsAndRoutes
#define MAP_PETALBURG_CITY (0 | (0 << 8))
#define MAP_SLATEPORT_CITY (1 | (0 << 8))
#define MAP_MAUVILLE_CITY (2 | (0 << 8))
@@ -64,21 +64,21 @@
#define MAP_UNDERWATER_ROUTE105 (55 | (0 << 8))
#define MAP_UNDERWATER_ROUTE125 (56 | (0 << 8))
-// Map Group 1
+// gMapGroup_IndoorLittleroot
#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8))
#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F (1 | (1 << 8))
#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F (2 | (1 << 8))
#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F (3 | (1 << 8))
#define MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB (4 | (1 << 8))
-// Map Group 2
+// gMapGroup_IndoorOldale
#define MAP_OLDALE_TOWN_HOUSE1 (0 | (2 << 8))
#define MAP_OLDALE_TOWN_HOUSE2 (1 | (2 << 8))
#define MAP_OLDALE_TOWN_POKEMON_CENTER_1F (2 | (2 << 8))
#define MAP_OLDALE_TOWN_POKEMON_CENTER_2F (3 | (2 << 8))
#define MAP_OLDALE_TOWN_MART (4 | (2 << 8))
-// Map Group 3
+// gMapGroup_IndoorDewford
#define MAP_DEWFORD_TOWN_HOUSE1 (0 | (3 << 8))
#define MAP_DEWFORD_TOWN_POKEMON_CENTER_1F (1 | (3 << 8))
#define MAP_DEWFORD_TOWN_POKEMON_CENTER_2F (2 | (3 << 8))
@@ -86,7 +86,7 @@
#define MAP_DEWFORD_TOWN_HALL (4 | (3 << 8))
#define MAP_DEWFORD_TOWN_HOUSE2 (5 | (3 << 8))
-// Map Group 4
+// gMapGroup_IndoorLavaridge
#define MAP_LAVARIDGE_TOWN_HERB_SHOP (0 | (4 << 8))
#define MAP_LAVARIDGE_TOWN_GYM_1F (1 | (4 << 8))
#define MAP_LAVARIDGE_TOWN_GYM_B1F (2 | (4 << 8))
@@ -95,7 +95,7 @@
#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F (5 | (4 << 8))
#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_2F (6 | (4 << 8))
-// Map Group 5
+// gMapGroup_IndoorFallarbor
#define MAP_FALLARBOR_TOWN_MART (0 | (5 << 8))
#define MAP_FALLARBOR_TOWN_BATTLE_TENT_LOBBY (1 | (5 << 8))
#define MAP_FALLARBOR_TOWN_BATTLE_TENT_CORRIDOR (2 | (5 << 8))
@@ -105,7 +105,7 @@
#define MAP_FALLARBOR_TOWN_COZMOS_HOUSE (6 | (5 << 8))
#define MAP_FALLARBOR_TOWN_MOVE_RELEARNERS_HOUSE (7 | (5 << 8))
-// Map Group 6
+// gMapGroup_IndoorVerdanturf
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8))
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_CORRIDOR (1 | (6 << 8))
#define MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM (2 | (6 << 8))
@@ -116,7 +116,7 @@
#define MAP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE (7 | (6 << 8))
#define MAP_VERDANTURF_TOWN_HOUSE (8 | (6 << 8))
-// Map Group 7
+// gMapGroup_IndoorPacifidlog
#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F (0 | (7 << 8))
#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F (1 | (7 << 8))
#define MAP_PACIFIDLOG_TOWN_HOUSE1 (2 | (7 << 8))
@@ -125,7 +125,7 @@
#define MAP_PACIFIDLOG_TOWN_HOUSE4 (5 | (7 << 8))
#define MAP_PACIFIDLOG_TOWN_HOUSE5 (6 | (7 << 8))
-// Map Group 8
+// gMapGroup_IndoorPetalburg
#define MAP_PETALBURG_CITY_WALLYS_HOUSE (0 | (8 << 8))
#define MAP_PETALBURG_CITY_GYM (1 | (8 << 8))
#define MAP_PETALBURG_CITY_HOUSE1 (2 | (8 << 8))
@@ -134,7 +134,7 @@
#define MAP_PETALBURG_CITY_POKEMON_CENTER_2F (5 | (8 << 8))
#define MAP_PETALBURG_CITY_MART (6 | (8 << 8))
-// Map Group 9
+// gMapGroup_IndoorSlateport
#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_1F (0 | (9 << 8))
#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_2F (1 | (9 << 8))
#define MAP_SLATEPORT_CITY_BATTLE_TENT_LOBBY (2 | (9 << 8))
@@ -150,7 +150,7 @@
#define MAP_SLATEPORT_CITY_POKEMON_CENTER_2F (12 | (9 << 8))
#define MAP_SLATEPORT_CITY_MART (13 | (9 << 8))
-// Map Group 10
+// gMapGroup_IndoorMauville
#define MAP_MAUVILLE_CITY_GYM (0 | (10 << 8))
#define MAP_MAUVILLE_CITY_BIKE_SHOP (1 | (10 << 8))
#define MAP_MAUVILLE_CITY_HOUSE1 (2 | (10 << 8))
@@ -160,7 +160,7 @@
#define MAP_MAUVILLE_CITY_POKEMON_CENTER_2F (6 | (10 << 8))
#define MAP_MAUVILLE_CITY_MART (7 | (10 << 8))
-// Map Group 11
+// gMapGroup_IndoorRustboro
#define MAP_RUSTBORO_CITY_DEVON_CORP_1F (0 | (11 << 8))
#define MAP_RUSTBORO_CITY_DEVON_CORP_2F (1 | (11 << 8))
#define MAP_RUSTBORO_CITY_DEVON_CORP_3F (2 | (11 << 8))
@@ -179,7 +179,7 @@
#define MAP_RUSTBORO_CITY_FLAT2_3F (15 | (11 << 8))
#define MAP_RUSTBORO_CITY_HOUSE3 (16 | (11 << 8))
-// Map Group 12
+// gMapGroup_IndoorFortree
#define MAP_FORTREE_CITY_HOUSE1 (0 | (12 << 8))
#define MAP_FORTREE_CITY_GYM (1 | (12 << 8))
#define MAP_FORTREE_CITY_POKEMON_CENTER_1F (2 | (12 << 8))
@@ -191,7 +191,7 @@
#define MAP_FORTREE_CITY_HOUSE5 (8 | (12 << 8))
#define MAP_FORTREE_CITY_DECORATION_SHOP (9 | (12 << 8))
-// Map Group 13
+// gMapGroup_IndoorLilycove
#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F (0 | (13 << 8))
#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F (1 | (13 << 8))
#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F (2 | (13 << 8))
@@ -216,7 +216,7 @@
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP (21 | (13 << 8))
#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR (22 | (13 << 8))
-// Map Group 14
+// gMapGroup_IndoorMossdeep
#define MAP_MOSSDEEP_CITY_GYM (0 | (14 << 8))
#define MAP_MOSSDEEP_CITY_HOUSE1 (1 | (14 << 8))
#define MAP_MOSSDEEP_CITY_HOUSE2 (2 | (14 << 8))
@@ -231,7 +231,7 @@
#define MAP_MOSSDEEP_CITY_GAME_CORNER_1F (11 | (14 << 8))
#define MAP_MOSSDEEP_CITY_GAME_CORNER_B1F (12 | (14 << 8))
-// Map Group 15
+// gMapGroup_IndoorSootopolis
#define MAP_SOOTOPOLIS_CITY_GYM_1F (0 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_GYM_B1F (1 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F (2 | (15 << 8))
@@ -248,7 +248,7 @@
#define MAP_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_1F (13 | (15 << 8))
#define MAP_SOOTOPOLIS_CITY_MYSTERY_EVENTS_HOUSE_B1F (14 | (15 << 8))
-// Map Group 16
+// gMapGroup_IndoorEverGrande
#define MAP_EVER_GRANDE_CITY_SIDNEYS_ROOM (0 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_PHOEBES_ROOM (1 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_GLACIAS_ROOM (2 | (16 << 8))
@@ -265,33 +265,33 @@
#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_2F (13 | (16 << 8))
#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F (14 | (16 << 8))
-// Map Group 17
+// gMapGroup_IndoorRoute104
#define MAP_ROUTE104_MR_BRINEYS_HOUSE (0 | (17 << 8))
#define MAP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP (1 | (17 << 8))
-// Map Group 18
+// gMapGroup_IndoorRoute111
#define MAP_ROUTE111_WINSTRATE_FAMILYS_HOUSE (0 | (18 << 8))
#define MAP_ROUTE111_OLD_LADYS_REST_STOP (1 | (18 << 8))
-// Map Group 19
+// gMapGroup_IndoorRoute112
#define MAP_ROUTE112_CABLE_CAR_STATION (0 | (19 << 8))
#define MAP_MT_CHIMNEY_CABLE_CAR_STATION (1 | (19 << 8))
-// Map Group 20
+// gMapGroup_IndoorRoute114
#define MAP_ROUTE114_FOSSIL_MANIACS_HOUSE (0 | (20 << 8))
#define MAP_ROUTE114_FOSSIL_MANIACS_TUNNEL (1 | (20 << 8))
#define MAP_ROUTE114_LANETTES_HOUSE (2 | (20 << 8))
-// Map Group 21
+// gMapGroup_IndoorRoute116
#define MAP_ROUTE116_TUNNELERS_REST_HOUSE (0 | (21 << 8))
-// Map Group 22
+// gMapGroup_IndoorRoute117
#define MAP_ROUTE117_POKEMON_DAY_CARE (0 | (22 << 8))
-// Map Group 23
+// gMapGroup_IndoorRoute121
#define MAP_ROUTE121_SAFARI_ZONE_ENTRANCE (0 | (23 << 8))
-// Map Group 24
+// gMapGroup_Dungeons
#define MAP_METEOR_FALLS_1F_1R (0 | (24 << 8))
#define MAP_METEOR_FALLS_1F_2R (1 | (24 << 8))
#define MAP_METEOR_FALLS_B1F_1R (2 | (24 << 8))
@@ -401,7 +401,7 @@
#define MAP_ALTERING_CAVE (106 | (24 << 8))
#define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8))
-// Map Group 25
+// gMapGroup_IndoorDynamic
#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8))
#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8))
#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8))
@@ -464,7 +464,7 @@
#define MAP_BATTLE_PYRAMID_SQUARE16 (59 | (25 << 8))
#define MAP_UNION_ROOM (60 | (25 << 8))
-// Map Group 26
+// gMapGroup_SpecialArea
#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8))
#define MAP_SAFARI_ZONE_NORTH (1 | (26 << 8))
#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8))
@@ -555,14 +555,14 @@
#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8))
#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8))
-// Map Group 27
+// gMapGroup_IndoorRoute104Prototype
#define MAP_ROUTE104_PROTOTYPE (0 | (27 << 8))
#define MAP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP (1 | (27 << 8))
-// Map Group 28
+// gMapGroup_IndoorRoute109
#define MAP_ROUTE109_SEASHORE_HOUSE (0 | (28 << 8))
-// Map Group 29
+// gMapGroup_IndoorRoute110
#define MAP_ROUTE110_TRICK_HOUSE_ENTRANCE (0 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_END (1 | (29 << 8))
#define MAP_ROUTE110_TRICK_HOUSE_CORRIDOR (2 | (29 << 8))
@@ -577,18 +577,18 @@
#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE (11 | (29 << 8))
#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE (12 | (29 << 8))
-// Map Group 30
+// gMapGroup_IndoorRoute113
#define MAP_ROUTE113_GLASS_WORKSHOP (0 | (30 << 8))
-// Map Group 31
+// gMapGroup_IndoorRoute123
#define MAP_ROUTE123_BERRY_MASTERS_HOUSE (0 | (31 << 8))
-// Map Group 32
+// gMapGroup_IndoorRoute119
#define MAP_ROUTE119_WEATHER_INSTITUTE_1F (0 | (32 << 8))
#define MAP_ROUTE119_WEATHER_INSTITUTE_2F (1 | (32 << 8))
#define MAP_ROUTE119_HOUSE (2 | (32 << 8))
-// Map Group 33
+// gMapGroup_IndoorRoute124
#define MAP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE (0 | (33 << 8))
#define MAP_GROUPS_COUNT 34
diff --git a/include/constants/metatile_labels.h b/include/constants/metatile_labels.h
index 836ab6ef2..b5ef69046 100644
--- a/include/constants/metatile_labels.h
+++ b/include/constants/metatile_labels.h
@@ -42,6 +42,8 @@
#define METATILE_General_BlueCaveOpen 0x1B1
// gTileset_Building
+#define METATILE_Building_TV_Off 0x002
+#define METATILE_Building_TV_On 0x003
#define METATILE_Building_PC_Off 0x004
#define METATILE_Building_PC_On 0x005
diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h
index 51ef0c015..63c031824 100644
--- a/include/constants/pokemon.h
+++ b/include/constants/pokemon.h
@@ -272,15 +272,6 @@
#define MAX_FRIENDSHIP 0xFF
-#define STATUS_PRIMARY_NONE 0
-#define STATUS_PRIMARY_POISON 1
-#define STATUS_PRIMARY_PARALYSIS 2
-#define STATUS_PRIMARY_SLEEP 3
-#define STATUS_PRIMARY_FREEZE 4
-#define STATUS_PRIMARY_BURN 5
-#define STATUS_PRIMARY_POKERUS 6
-#define STATUS_PRIMARY_FAINTED 7
-
#define MAX_PER_STAT_IVS 31
#define MAX_IV_MASK 31
#define USE_RANDOM_IVS (MAX_PER_STAT_IVS + 1)
diff --git a/include/constants/trainer_hill.h b/include/constants/trainer_hill.h
index 27357e99c..0e802bba8 100644
--- a/include/constants/trainer_hill.h
+++ b/include/constants/trainer_hill.h
@@ -37,8 +37,9 @@
#define TRAINER_HILL_TEXT_PLAYER_WON 4
#define TRAINER_HILL_TEXT_AFTER 5
-#define NUM_TRAINER_HILL_TRAINERS (NUM_TRAINER_HILL_FLOORS * 2)
-#define NUM_TRAINER_HILL_TRAINERS_JP (NUM_TRAINER_HILL_FLOORS_JP * 2)
+#define TRAINER_HILL_TRAINERS_PER_FLOOR 2
+#define NUM_TRAINER_HILL_TRAINERS (NUM_TRAINER_HILL_FLOORS * TRAINER_HILL_TRAINERS_PER_FLOOR)
+#define NUM_TRAINER_HILL_TRAINERS_JP (NUM_TRAINER_HILL_FLOORS_JP * TRAINER_HILL_TRAINERS_PER_FLOOR)
// Values returned by TrainerHillGetChallengeStatus
#define TRAINER_HILL_PLAYER_STATUS_LOST 0
diff --git a/include/constants/tv.h b/include/constants/tv.h
index f7b091f49..095a6ddca 100644
--- a/include/constants/tv.h
+++ b/include/constants/tv.h
@@ -6,12 +6,22 @@
#define POKENEWS_GAME_CORNER 2
#define POKENEWS_LILYCOVE 3
#define POKENEWS_BLENDMASTER 4
+#define NUM_POKENEWS_TYPES 4 // Excludes NONE
+
+// TV shows are categorized as being in one of 3 groups
+// - TVGROUP_NORMAL, TV shows that can appear without Record Mixing
+// - TVGROUP_RECORD_MIX, TV shows that can only appear via Record Mixing
+// - TVGROUP_OUTBREAK, just contains TVSHOW_MASS_OUTBREAK
+// Each group was allotted 20 spaces arbitrarily, though none use all 20
#define TVSHOW_OFF_AIR 0
+
+// TVGROUP_NORMAL
+#define TVGROUP_NORMAL_START 1
#define TVSHOW_FAN_CLUB_LETTER 1
#define TVSHOW_RECENT_HAPPENINGS 2
#define TVSHOW_PKMN_FAN_CLUB_OPINIONS 3
-#define TVSHOW_UNKN_SHOWTYPE_04 4
+#define TVSHOW_DUMMY 4
#define TVSHOW_NAME_RATER_SHOW 5
#define TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE 6
#define TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE 7
@@ -20,7 +30,11 @@
#define TVSHOW_BATTLE_UPDATE 10
#define TVSHOW_FAN_CLUB_SPECIAL 11
#define TVSHOW_LILYCOVE_CONTEST_LADY 12
-// //
+//
+#define TVGROUP_NORMAL_END 20
+
+// TVGROUP_RECORD_MIX
+#define TVGROUP_RECORD_MIX_START 21
#define TVSHOW_POKEMON_TODAY_CAUGHT 21
#define TVSHOW_SMART_SHOPPER 22
#define TVSHOW_POKEMON_TODAY_FAILED 23
@@ -40,8 +54,22 @@
#define TVSHOW_NUMBER_ONE 37
#define TVSHOW_SECRET_BASE_SECRETS 38
#define TVSHOW_SAFARI_FAN_CLUB 39
-// //
-#define TVSHOW_MASS_OUTBREAK 41
+#define TVGROUP_RECORD_MIX_END 40
+
+// TVGROUP_OUTBREAK
+#define TVGROUP_OUTBREAK_START 41
+#define TVSHOW_MASS_OUTBREAK 41
+//
+#define TVGROUP_OUTBREAK_END 60
+
+// The first 5 elements of gSaveBlock1Ptr->tvShows are reserved
+// for TV shows from TVGROUP_NORMAL. The remainder are for TV
+// shows from TVGROUP_RECORD_MIX.
+#define NUM_NORMAL_TVSHOW_SLOTS 5
+
+#define PLAYERS_HOUSE_TV_NONE 0
+#define PLAYERS_HOUSE_TV_LATI 1
+#define PLAYERS_HOUSE_TV_MOVIE 2
// Number of ribbons to put Spot the Cuties on air
#define NUM_CUTIES_RIBBONS 4
@@ -221,4 +249,21 @@
#define CONTESTLADYLIVE_STATE_LOST 2
#define CONTESTLADYLIVE_STATE_LOST_BADLY 3
+// TV Show states for Smart Shopper
+#define SMARTSHOPPER_STATE_INTRO 0
+#define SMARTSHOPPER_STATE_CLERK_NORMAL 1
+#define SMARTSHOPPER_STATE_RAND_COMMENT_1 2
+#define SMARTSHOPPER_STATE_RAND_COMMENT_2 3
+#define SMARTSHOPPER_STATE_RAND_COMMENT_3 4
+#define SMARTSHOPPER_STATE_RAND_COMMENT_4 5
+#define SMARTSHOPPER_STATE_SECOND_ITEM 6
+#define SMARTSHOPPER_STATE_THIRD_ITEM 7
+#define SMARTSHOPPER_STATE_DURING_SALE 8
+#define SMARTSHOPPER_STATE_OUTRO_NORMAL 9
+#define SMARTSHOPPER_STATE_IS_VIP 10
+#define SMARTSHOPPER_STATE_CLERK_MAX 11
+#define SMARTSHOPPER_STATE_OUTRO_MAX 12
+
+#define SMARTSHOPPER_NUM_ITEMS 3
+
#endif //GUARD_CONSTANTS_TV_H
diff --git a/include/contest.h b/include/contest.h
index 1dd4340bd..9bac63eda 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -111,11 +111,11 @@ struct ContestPokemon
u32 otId;
};
-struct Shared1A004
+struct ContestTempSave
{
u16 cachedWindowPalettes[16][16]; // Saved palette data before a move happens?
- u16 unk18204[PLTT_BUFFER_SIZE]; // Saved copy of gPlttBufferUnfaded
- u16 unk18604[PLTT_BUFFER_SIZE]; // Saved copy of gPlttBufferFaded
+ u16 cachedPlttBufferUnfaded[PLTT_BUFFER_SIZE];
+ u16 cachedPlttBufferFaded[PLTT_BUFFER_SIZE];
u8 savedJunk[0x800];
};
@@ -306,7 +306,7 @@ struct ContestResources
#define eUnzippedContestAudience_Gfx (gHeap + 0x18000)
#define eContestAudienceFrame2_Gfx (gHeap + 0x19000)
#define eContestDebugMode (gHeap[0x1a000])
-#define eUnknownHeap1A004 (*(struct Shared1A004 *)(gHeap + 0x1a004))
+#define eContestTempSave (*(struct ContestTempSave *)(gHeap + 0x1a004))
extern struct ContestPokemon gContestMons[CONTESTANT_COUNT];
extern s16 gContestMonRound1Points[CONTESTANT_COUNT];
@@ -326,8 +326,8 @@ extern u8 gHighestRibbonRank;
extern struct ContestResources *gContestResources;
extern u8 sContestBgCopyFlags;
extern struct ContestWinner gCurContestWinner;
-extern u8 gUnknown_02039F5C;
-extern u8 gUnknown_02039F5D;
+extern u8 gCurContestWinnerIsForArtist;
+extern u8 gCurContestWinnerSaveIdx;
extern u32 gContestRngValue;
// contest.c
@@ -351,8 +351,8 @@ s8 Contest_GetMoveExcitement(u16 move);
bool8 IsContestantAllowedToCombo(u8 contestant);
void Contest_PrintTextToBg0WindowAt(u32 windowId, u8 *currChar, s32 x, s32 y, s32 fontId);
void ResetContestLinkResults(void);
-bool8 sub_80DEDA8(u8 a);
-u8 sub_80DEFA8(u8 a, u8 b);
+bool8 SaveContestWinner(u8 rank);
+u8 GetContestWinnerSaveIdx(u8 rank, bool8 shift);
void ClearContestWinnerPicsInContestHall(void);
void StripPlayerAndMonNamesForLinkContest(struct ContestPokemon *mon, s32 language);
diff --git a/include/contest_util.h b/include/contest_util.h
index 76f9ae522..1e97d91d3 100644
--- a/include/contest_util.h
+++ b/include/contest_util.h
@@ -7,8 +7,8 @@ void StartContest(void);
void BufferContestantMonSpecies(void);
void ShowContestResults(void);
void ContestLinkTransfer(u8);
-void ShowContestWinnerPainting(void);
+void ShowContestPainting(void);
u16 GetContestRand(void);
-u8 CountPlayerContestPaintings(void);
+u8 CountPlayerMuseumPaintings(void);
#endif // GUARD_CONTEST_UTIL_H
diff --git a/include/data.h b/include/data.h
index 2f8c44746..f94f55a8f 100644
--- a/include/data.h
+++ b/include/data.h
@@ -5,6 +5,12 @@
#define SPECIES_SHINY_TAG 500
+enum {
+ BATTLER_AFFINE_NORMAL,
+ BATTLER_AFFINE_EMERGE,
+ BATTLER_AFFINE_RETURN,
+};
+
struct MonCoords
{
// This would use a bitfield, but some function
@@ -87,9 +93,9 @@ extern const struct SpriteFrameImage gTrainerBackPicTable_Steven[];
extern const union AffineAnimCmd *const gAffineAnims_BattleSpritePlayerSide[];
extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteOpponentSide[];
-extern const union AffineAnimCmd *const gUnknown_082FF6C0[];
+extern const union AffineAnimCmd *const gAffineAnims_BattleSpriteContest[];
-extern const union AnimCmd *const gUnknown_082FF70C[];
+extern const union AnimCmd *const gAnims_MonPic[];
extern const struct MonCoords gMonFrontPicCoords[];
extern const struct CompressedSpriteSheet gMonStillFrontPicTable[];
extern const struct MonCoords gMonBackPicCoords[];
diff --git a/include/daycare.h b/include/daycare.h
index 7d6f2fb19..d6c0d4201 100644
--- a/include/daycare.h
+++ b/include/daycare.h
@@ -6,7 +6,7 @@
u8 *GetMonNickname2(struct Pokemon *mon, u8 *dest);
u8 *GetBoxMonNickname(struct BoxPokemon *mon, u8 *dest);
u8 CountPokemonInDaycare(struct DayCare *daycare);
-void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDayCareMail *daycareMail);
+void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDaycareMail *daycareMail);
void StoreSelectedPokemonInDaycare(void);
u16 TakePokemonFromDaycare(void);
void GetDaycareCost(void);
diff --git a/include/ereader_helpers.h b/include/ereader_helpers.h
index 8dc3b907a..064b61ed7 100755
--- a/include/ereader_helpers.h
+++ b/include/ereader_helpers.h
@@ -5,30 +5,30 @@
struct EReaderTrainerHillTrainer
{
- u8 unk0;
- struct TrainerHillTrainer unk4;
- struct TrHillDisplay unk14C;
+ u8 trainerNum;
+ struct TrainerHillTrainer trainer;
+ struct TrHillDisplay display;
u32 checksum;
}; // size=0x274
struct EReaderTrainerHillSet
{
- u8 count;
+ u8 numTrainers;
u8 id;
- u16 dummy;
+ u16 dummy; // Only read in an assert.
u32 checksum;
- struct EReaderTrainerHillTrainer unk_8[6];
+ struct EReaderTrainerHillTrainer trainers[6];
u8 unk_ec0[40];
}; // size = 0xf00
-bool8 EReader_IsReceivedDataValid(struct EReaderTrainerHillSet *buffer);
-bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *arg0);
+bool8 ValidateTrainerHillData(struct EReaderTrainerHillSet *);
+bool32 TryWriteTrainerHill(struct EReaderTrainerHillSet *);
bool32 ReadTrainerHillAndValidate(void);
-int EReaderHandleTransfer(u8, u32, u32*, u32*);
-void sub_81D3F9C(void);
-void sub_81D3FAC(void);
+int EReaderHandleTransfer(u8, size_t, const void *, void *);
+void EReaderHelper_Timer3Callback(void);
+void EReaderHelper_SerialCallback(void);
void EReaderHelper_SaveRegsState(void);
void EReaderHelper_RestoreRegsState(void);
-void sub_81D4238(void);
+void EReaderHelper_ClearSendRecvMgr(void);
#endif // GUARD_EREADER_HELPERS_H
diff --git a/include/event_object_lock.h b/include/event_object_lock.h
index 9d31a25fd..0b1f5f098 100644
--- a/include/event_object_lock.h
+++ b/include/event_object_lock.h
@@ -2,9 +2,9 @@
#define GUARD_EVENT_OBJECT_LOCK_H
bool8 IsFreezePlayerFinished(void);
-void ScriptFreezeObjectEvents(void);
bool8 IsFreezeSelectedObjectAndPlayerFinished(void);
-void LockSelectedObjectEvent(void);
+void FreezeObjects_WaitForPlayer(void);
+void FreezeObjects_WaitForPlayerAndSelected(void);
void FreezeForApproachingTrainers(void);
bool8 IsFreezeObjectAndPlayerFinished(void);
void ScriptUnfreezeObjectEvents(void);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 925b4389d..c478f41f8 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -108,19 +108,19 @@ extern const u8 gTVPokemonTodaySuccessfulText08[];
extern const u8 gTVPokemonTodaySuccessfulText09[];
extern const u8 gTVPokemonTodaySuccessfulText10[];
extern const u8 gTVPokemonTodaySuccessfulText11[];
-extern const u8 gTVTodaysSmartShopperText00[];
-extern const u8 gTVTodaysSmartShopperText01[];
-extern const u8 gTVTodaysSmartShopperText02[];
-extern const u8 gTVTodaysSmartShopperText03[];
-extern const u8 gTVTodaysSmartShopperText04[];
-extern const u8 gTVTodaysSmartShopperText05[];
-extern const u8 gTVTodaysSmartShopperText06[];
-extern const u8 gTVTodaysSmartShopperText07[];
-extern const u8 gTVTodaysSmartShopperText08[];
-extern const u8 gTVTodaysSmartShopperText09[];
-extern const u8 gTVTodaysSmartShopperText10[];
-extern const u8 gTVTodaysSmartShopperText11[];
-extern const u8 gTVTodaysSmartShopperText12[];
+extern const u8 SmartShopper_Text_Intro[];
+extern const u8 SmartShopper_Text_ClerkNormal[];
+extern const u8 SmartShopper_Text_RandomComment1[];
+extern const u8 SmartShopper_Text_RandomComment2[];
+extern const u8 SmartShopper_Text_RandomComment3[];
+extern const u8 SmartShopper_Text_RandomComment4[];
+extern const u8 SmartShopper_Text_SecondItem[];
+extern const u8 SmartShopper_Text_ThirdItem[];
+extern const u8 SmartShopper_Text_DuringSale[];
+extern const u8 SmartShopper_Text_OutroNormal[];
+extern const u8 SmartShopper_Text_IsVIP[];
+extern const u8 SmartShopper_Text_ClerkMax[];
+extern const u8 SmartShopper_Text_OutroMax[];
extern const u8 gTVWorldOfMastersText00[];
extern const u8 gTVWorldOfMastersText01[];
extern const u8 gTVWorldOfMastersText02[];
@@ -584,9 +584,11 @@ extern const u8 SecretBase_EventScript_ShrubUseSecretPower[];
extern const u8 TrainerHill_EventScript_TrainerBattle[];
// Item Use
-extern u8 BerryTree_EventScript_ItemUsePlantBerry[];
-extern u8 BerryTree_EventScript_ItemUseWailmerPail[];
-extern u8 BattleFrontier_OutsideEast_EventScript_WaterSudowoodo[];
+extern const u8 BerryTree_EventScript_ItemUsePlantBerry[];
+extern const u8 BerryTree_EventScript_ItemUseWailmerPail[];
+extern const u8 BattleFrontier_OutsideEast_EventScript_WaterSudowoodo[];
+
+extern const u8 EventScript_SelectWithoutRegisteredItem[];
// overworld
extern const u8 EventScript_WhiteOut[];
diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h
index 2d0e1bb1c..2ccbb18f5 100644
--- a/include/gba/m4a_internal.h
+++ b/include/gba/m4a_internal.h
@@ -447,7 +447,7 @@ void SetPokemonCryPitch(s16 val);
void SetPokemonCryLength(u16 val);
void SetPokemonCryRelease(u8 val);
void SetPokemonCryProgress(u32 val);
-int IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo);
+bool32 IsPokemonCryPlaying(struct MusicPlayerInfo *mplayInfo);
void SetPokemonCryChorus(s8 val);
void SetPokemonCryStereo(u32 val);
void SetPokemonCryPriority(u8 val);
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index a3d99ee21..6bafa9747 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -142,19 +142,15 @@ struct MapHeader
/* 0x16 */ u8 weather;
/* 0x17 */ u8 mapType;
/* 0x18 */ u8 filler_18[2];
- /* 0x1A */ u8 flags;
+ // fields correspond to the arguments in the map_header_flags macro
+ /* 0x1A */ bool8 allowCycling:1;
+ bool8 allowEscaping:1; // Escape Rope and Dig
+ bool8 allowRunning:1;
+ bool8 showMapName:5; // the last 4 bits are unused
+ // but the 5 bit sized bitfield is required to match
/* 0x1B */ u8 battleType;
};
-// Flags for gMapHeader.flags, as defined in the map_header_flags macro
-#define MAP_ALLOW_CYCLING (1 << 0)
-#define MAP_ALLOW_ESCAPING (1 << 1) // Escape Rope and Dig
-#define MAP_ALLOW_RUNNING (1 << 2)
-#define MAP_SHOW_MAP_NAME (1 << 3)
-#define UNUSED_MAP_FLAGS (1 << 4 | 1 << 5 | 1 << 6 | 1 << 7)
-
-#define SHOW_MAP_NAME_ENABLED ((gMapHeader.flags & (MAP_SHOW_MAP_NAME | UNUSED_MAP_FLAGS)) == MAP_SHOW_MAP_NAME)
-
struct ObjectEvent
{
diff --git a/include/global.h b/include/global.h
index 18e2bfea7..e4c11f9ef 100644
--- a/include/global.h
+++ b/include/global.h
@@ -107,7 +107,7 @@
#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr)
// Macros for checking the joypad
-#define TEST_BUTTON(field, button) ({(field) & (button);})
+#define TEST_BUTTON(field, button) ((field) & (button))
#define JOY_NEW(button) TEST_BUTTON(gMain.newKeys, button)
#define JOY_HELD(button) TEST_BUTTON(gMain.heldKeys, button)
#define JOY_HELD_RAW(button) TEST_BUTTON(gMain.heldKeysRaw, button)
@@ -727,7 +727,7 @@ struct ContestWinner
u8 contestRank;
};
-struct DayCareMail
+struct DaycareMail
{
struct MailStruct message;
u8 OT_name[PLAYER_NAME_LENGTH + 1];
@@ -739,7 +739,7 @@ struct DayCareMail
struct DaycareMon
{
struct BoxPokemon mon;
- struct DayCareMail mail;
+ struct DaycareMail mail;
u32 steps;
};
@@ -750,9 +750,9 @@ struct DayCare
u8 stepCounter;
};
-struct RecordMixingDayCareMail
+struct RecordMixingDaycareMail
{
- struct DayCareMail mail[DAYCARE_MON_COUNT];
+ struct DaycareMail mail[DAYCARE_MON_COUNT];
u32 numDaycareMons;
bool16 holdsItem[DAYCARE_MON_COUNT];
};
diff --git a/include/global.tv.h b/include/global.tv.h
index 64e6a984e..2bc7dda99 100644
--- a/include/global.tv.h
+++ b/include/global.tv.h
@@ -1,13 +1,15 @@
#ifndef GUARD_GLOBAL_TV_H
#define GUARD_GLOBAL_TV_H
+#include "constants/tv.h"
+
typedef union // size = 0x24
{
// Common
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u8 pad02[26];
+ /*0x02*/ u8 data[26];
/*0x1C*/ u8 srcTrainerId3Lo;
/*0x1D*/ u8 srcTrainerId3Hi;
/*0x1E*/ u8 srcTrainerId2Lo;
@@ -22,7 +24,7 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u8 pad02[34];
+ /*0x02*/ u8 data[34];
} commonInit;
// Local shows
@@ -40,7 +42,7 @@ typedef union // size = 0x24
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
- /*0x02*/ u16 var02;
+ /*0x02*/ u16 species;
/*0x04*/ u16 words[6];
/*0x10*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
/*0x18*/ u8 language;
@@ -62,16 +64,16 @@ typedef union // size = 0x24
/*0x1C*/ u16 words[4];
} fanclubOpinions;
- // TVSHOW_UNKN_SHOWTYPE_04 (dummied out)
+ // TVSHOW_DUMMY
struct {
/*0x00*/ u8 kind;
/*0x01*/ bool8 active;
/*0x02*/ u16 words[2];
- /*0x06*/ u16 var06;
+ /*0x06*/ u16 species;
/*0x08*/ u8 pad_08[3];
- /*0x0b*/ u8 string_0b[12];
+ /*0x0b*/ u8 name[12];
/*0x17*/ u8 language;
- } unkShow04;
+ } dummy;
// TVSHOW_NAME_RATER_SHOW
struct {
@@ -212,8 +214,8 @@ typedef union // size = 0x24
/*0x02*/ u8 priceReduced;
/*0x03*/ u8 language;
/*0x04*/ u8 pad04[2];
- /*0x06*/ u16 itemIds[3];
- /*0x0C*/ u16 itemAmounts[3];
+ /*0x06*/ u16 itemIds[SMARTSHOPPER_NUM_ITEMS];
+ /*0x0C*/ u16 itemAmounts[SMARTSHOPPER_NUM_ITEMS];
/*0x12*/ u8 shopLocation;
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} smartshopperShow;
@@ -401,7 +403,7 @@ typedef union // size = 0x24
/*0x08*/ u16 species3;
/*0x0a*/ u16 species4;
/*0x0c*/ u8 language;
- /*0x0d*/ u8 facility;
+ /*0x0d*/ u8 facilityAndMode;
/*0x0e*/ u8 filler_0e[5];
/*0x13*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
} frontier;
diff --git a/include/graphics.h b/include/graphics.h
index 7c36b9cf5..dcb47a226 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4076,7 +4076,7 @@ extern const u8 gNamingScreenCursor_Gfx[];
extern const u8 gNamingScreenInputArrow_Gfx[];
extern const u8 gNamingScreenUnderscore_Gfx[];
-extern const u32 gUnknown_08D9BA44[];
+extern const u32 gPokeblockFeedBg_Tilemap[];
extern const u32 gConfetti_Gfx[];
extern const u32 gConfetti_Pal[];
@@ -4875,12 +4875,12 @@ extern const u32 gPokedexAreaScreenAreaUnknown_Gfx[];
extern const u16 gPokedexAreaScreenAreaUnknown_Pal[];
// Pokemon Storage System
-extern const u32 gPSSMenu_Gfx[];
-extern const u16 gPSSMenu_Pal[];
+extern const u32 gStorageSystemMenu_Gfx[];
+extern const u16 gStorageSystemPartyMenu_Pal[];
+extern const u32 gStorageSystemPartyMenu_Tilemap[];
extern const u32 gWallpaperIcon_Plusle[];
extern const u32 gWallpaperIcon_Cross[];
extern const u32 gWallpaperIcon_Bolt[];
-extern const u32 gUnknown_08DD36C8[];
extern const u32 gWallpaperTiles_Ribbon[];
extern const u32 gWallpaperTilemap_Ribbon[];
extern const u16 gWallpaperPalettes_Ribbon[][16];
@@ -4903,8 +4903,8 @@ extern const u16 gUnknown_08DDCF04[];
extern const u16 gTradeGba2_Pal[];
extern const u8 gTradeGba_Gfx[];
extern const u16 gTradeMenuMonBox_Tilemap[];
-extern const u8 gTradeButtons_Gfx[];
-extern const u16 gUnknown_08DDB444[];
+extern const u8 gTradeCursor_Gfx[];
+extern const u16 gTradeCursor_Pal[];
// Party menu
extern const u32 gPartyMenuPokeball_Gfx[];
@@ -4924,21 +4924,21 @@ extern const u32 gRouletteMultiplier_Gfx[];
// Contest util
extern const u32 gContestResults_Gfx[];
-extern const u32 gUnknown_08C19EEC[];
-extern const u32 gUnknown_08C1A000[];
-extern const u32 gUnknown_08C1A12C[];
+extern const u32 gContestResults_WinnerBanner_Tilemap[];
+extern const u32 gContestResults_Interface_Tilemap[];
+extern const u32 gContestResults_Bg_Tilemap[];
extern const u32 gContestResults_Pal[];
-extern const u16 gLinkContestResults_Tilemap[];
-extern const u16 gNormalContestResults_Tilemap[];
-extern const u16 gSuperContestResults_Tilemap[];
-extern const u16 gHyperContestResults_Tilemap[];
-extern const u16 gMasterContestResults_Tilemap[];
-extern const u16 gCoolContestResults_Tilemap[];
-extern const u16 gBeautyContestResults_Tilemap[];
-extern const u16 gCuteContestResults_Tilemap[];
-extern const u16 gSmartContestResults_Tilemap[];
-extern const u16 gToughContestResults_Tilemap[];
-extern const u16 gContestResults_Tilemap[];
+extern const u16 gContestResultsTitle_Link_Tilemap[];
+extern const u16 gContestResultsTitle_Normal_Tilemap[];
+extern const u16 gContestResultsTitle_Super_Tilemap[];
+extern const u16 gContestResultsTitle_Hyper_Tilemap[];
+extern const u16 gContestResultsTitle_Master_Tilemap[];
+extern const u16 gContestResultsTitle_Cool_Tilemap[];
+extern const u16 gContestResultsTitle_Beauty_Tilemap[];
+extern const u16 gContestResultsTitle_Cute_Tilemap[];
+extern const u16 gContestResultsTitle_Smart_Tilemap[];
+extern const u16 gContestResultsTitle_Tough_Tilemap[];
+extern const u16 gContestResultsTitle_Tilemap[];
// Trainer Card.
extern const u16 gHoennTrainerCard0Star_Pal[];
@@ -4955,13 +4955,13 @@ extern const u32 gKantoTrainerCardFrontLink_Tilemap[];
extern const u32 gHoennTrainerCardBg_Tilemap[];
// Frontier Pass
-extern const u32 gUnknown_08DE08C8[];
-extern const u32 gUnknown_08DE2084[];
-extern const u32 gUnknown_08DE3350[];
-extern const u32 gUnknown_08DE3374[];
-extern const u32 gUnknown_08DE3060[];
+extern const u32 gFrontierPassBg_Gfx[];
+extern const u32 gFrontierPassBg_Tilemap[];
+extern const u16 gFrontierPassBg_Pal[][16];
+extern const u32 gFrontierPassMapAndCard_Gfx[];
+extern const u32 gFrontierPassCancelButton_Tilemap[];
+extern const u32 gFrontierPassCancelButtonHighlighted_Tilemap[];
extern const u32 gFrontierPassMedals_Gfx[];
-extern const u16 gUnknown_08DE07C8[][16];
extern const u16 gFrontierPassCursor_Pal[];
extern const u16 gFrontierPassMedalsGold_Pal[];
extern const u16 gFrontierPassMedalsSilver_Pal[];
diff --git a/include/international_string_util.h b/include/international_string_util.h
index f76fc5be1..fe7e85b41 100644
--- a/include/international_string_util.h
+++ b/include/international_string_util.h
@@ -17,7 +17,7 @@ void CopyMonCategoryText(int dexNum, u8 *dest);
u8 *sub_81DB494(u8 *str, int fontId, const u8 *str2, int totalStringWidth);
void PadNameString(u8 *dest, u8 padChar);
void ConvertInternationalPlayerNameStripChar(u8 *, u8);
-void sub_81DB5AC(u8 *);
+void ConvertInternationalContestantName(u8 *);
int sub_81DB604(u8 *);
void sub_81DB620(int windowId, int columnStart, int rowStart, int numFillTiles, int numRows);
diff --git a/include/item_menu.h b/include/item_menu.h
index a99272b0c..fd576c3b5 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -1,107 +1,111 @@
-#ifndef GUARD_item_menu_H
-#define GUARD_item_menu_H
+#ifndef GUARD_ITEM_MENU_H
+#define GUARD_ITEM_MENU_H
#include "item.h"
#include "menu_helpers.h"
-#define ITEMMENULOCATION_FIELD 0
-#define ITEMMENULOCATION_BATTLE 1
-#define ITEMMENULOCATION_PARTY 2
-#define ITEMMENULOCATION_SHOP 3
-#define ITEMMENULOCATION_BERRY_TREE 4
-#define ITEMMENULOCATION_BERRY_BLENDER_CRUSH 5
-#define ITEMMENULOCATION_ITEMPC 6
-#define ITEMMENULOCATION_FAVOR_LADY 7
-#define ITEMMENULOCATION_QUIZ_LADY 8
-#define ITEMMENULOCATION_APPRENTICE 9
-#define ITEMMENULOCATION_WALLY 10
-#define ITEMMENULOCATION_PCBOX 11
-#define ITEMMENULOCATION_LAST 12
+enum {
+ ITEMMENULOCATION_FIELD,
+ ITEMMENULOCATION_BATTLE,
+ ITEMMENULOCATION_PARTY,
+ ITEMMENULOCATION_SHOP,
+ ITEMMENULOCATION_BERRY_TREE,
+ ITEMMENULOCATION_BERRY_BLENDER_CRUSH,
+ ITEMMENULOCATION_ITEMPC,
+ ITEMMENULOCATION_FAVOR_LADY,
+ ITEMMENULOCATION_QUIZ_LADY,
+ ITEMMENULOCATION_APPRENTICE,
+ ITEMMENULOCATION_WALLY,
+ ITEMMENULOCATION_PCBOX,
+ ITEMMENULOCATION_LAST,
+};
-#define ITEMMENUACTION_USE 0
-#define ITEMMENUACTION_TOSS 1
-#define ITEMMENUACTION_REGISTER 2
-#define ITEMMENUACTION_GIVE 3
-#define ITEMMENUACTION_CANCEL 4
-#define ITEMMENUACTION_BATTLE_USE 5
-#define ITEMMENUACTION_CHECK 6
-#define ITEMMENUACTION_WALK 7
-#define ITEMMENUACTION_DESELECT 8
-#define ITEMMENUACTION_CHECK_TAG 9
-#define ITEMMENUACTION_CONFIRM 10
-#define ITEMMENUACTION_SHOW 11
-#define ITEMMENUACTION_GIVE_2 12
-#define ITEMMENUACTION_CONFIRM_2 13
-#define ITEMMENUACTION_DUMMY 14
+// Window IDs for the item menu
+enum {
+ ITEMWIN_1x1,
+ ITEMWIN_1x2,
+ ITEMWIN_2x2,
+ ITEMWIN_2x3,
+ ITEMWIN_MESSAGE,
+ ITEMWIN_YESNO_LOW,
+ ITEMWIN_YESNO_HIGH,
+ ITEMWIN_QUANTITY,
+ ITEMWIN_QUANTITY_WIDE,
+ ITEMWIN_MONEY,
+ ITEMWIN_COUNT
+};
-// Exported type declarations
-struct BagStruct
+#define ITEMMENU_SWAP_LINE_LENGTH 8 // Swap line is 8 sprites long
+enum {
+ ITEMMENUSPRITE_BAG,
+ ITEMMENUSPRITE_BALL,
+ ITEMMENUSPRITE_ITEM,
+ ITEMMENUSPRITE_ITEM_ALT, // Need two when selecting new item
+ ITEMMENUSPRITE_SWAP_LINE,
+ ITEMMENUSPRITE_COUNT = ITEMMENUSPRITE_SWAP_LINE + ITEMMENU_SWAP_LINE_LENGTH,
+};
+
+struct BagPosition
{
- void (*bagCallback)(void);
+ void (*exitCallback)(void);
u8 location;
u8 pocket;
- u16 unk6;
+ u16 pocketSwitchArrowPos;
u16 cursorPosition[POCKETS_COUNT];
u16 scrollPosition[POCKETS_COUNT];
};
-extern struct BagStruct gBagPositionStruct;
+extern struct BagPosition gBagPosition;
-struct BagMenuStruct
+struct BagMenu
{
- void (*exitCallback)(void);
- u8 tilemapBuffer[0x800];
- u8 spriteId[12];
- u8 windowPointers[10];
- u8 itemOriginalLocation;
+ void (*newScreenCallback)(void);
+ u8 tilemapBuffer[BG_SCREEN_SIZE];
+ u8 spriteIds[ITEMMENUSPRITE_COUNT];
+ u8 windowIds[ITEMWIN_COUNT];
+ u8 toSwapPos;
u8 pocketSwitchDisabled:4;
u8 itemIconSlot:2;
u8 inhibitItemDescriptionPrint:1;
u8 hideCloseBagText:1;
- u8 filler3[2];
+ u8 unused1[2];
u8 pocketScrollArrowsTask;
u8 pocketSwitchArrowsTask;
const u8* contextMenuItemsPtr;
u8 contextMenuItemsBuffer[4];
u8 contextMenuNumItems;
u8 numItemStacks[POCKETS_COUNT];
- u8 numShownItems[6];
+ u8 numShownItems[POCKETS_COUNT];
s16 graphicsLoadState;
- u8 filler4[0xE];
+ u8 unused2[14];
u8 pocketNameBuffer[32][32];
- u8 filler2[4];
+ u8 unused3[4];
};
-extern struct BagMenuStruct *gBagMenu;
-
-// Exported RAM declarations
-
+extern struct BagMenu *gBagMenu;
extern u16 gSpecialVar_ItemId;
-// Exported ROM declarations
void CB2_GoToItemDepositMenu(void);
void FavorLadyOpenBagMenu(void);
void QuizLadyOpenBagMenu(void);
void ApprenticeOpenBagMenu(void);
void CB2_BagMenuFromBattle(void);
-void SetInitialScrollAndCursorPositions(u8 pocketId);
+void UpdatePocketListPosition(u8 pocketId);
void CB2_ReturnToBagMenuPocket(void);
void CB2_BagMenuFromStartMenu(void);
u8 GetItemListPosition(u8 pocketId);
bool8 UseRegisteredKeyItemOnField(void);
void CB2_GoToSellMenu(void);
-void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)());
+void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *exitCallback)());
void DoWallyTutorialBagMenu(void);
void ResetBagScrollPositions(void);
void ChooseBerryForMachine(void (*exitCallback)(void));
void CB2_ChooseBerry(void);
void Task_FadeAndCloseBagMenu(u8 taskId);
-void BagMenu_YesNo(u8, u8, const struct YesNoFuncTable*);
-void BagMenu_InitListsMenu(u8 taskId);
+void BagMenu_YesNo(u8 taskId, u8 windowType, const struct YesNoFuncTable* funcTable);
void UpdatePocketItemList(u8 pocketId);
void DisplayItemMessage(u8 taskId, u8 fontId, const u8 *str, void ( *callback)(u8 taskId));
void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
+void CloseItemMessage(u8 taskId);
-
-
-#endif //GUARD_item_menu_H
+#endif //GUARD_ITEM_MENU_H
diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h
index 7ff6ace94..d01dcccf5 100644
--- a/include/item_menu_icons.h
+++ b/include/item_menu_icons.h
@@ -14,18 +14,12 @@ void ShakeBagSprite(void);
void AddSwitchPocketRotatingBallSprite(s16 rotationDirection);
void AddBagItemIconSprite(u16 itemId, u8 id);
void RemoveBagItemIconSprite(u8 id);
-void sub_80D4FAC(void);
-void sub_80D4FC8(u8 arg0);
-void sub_80D4FEC(u8 arg0);
+void CreateItemMenuSwapLine(void);
+void SetItemMenuSwapLineInvisibility(bool8 invisible);
+void UpdateItemMenuSwapLinePos(u8 y);
u8 CreateBerryTagSprite(u8 id, s16 x, s16 y);
void FreeBerryTagSpritePalette(void);
u8 CreateSpinningBerrySprite(u8 berryId, u8 x, u8 y, bool8 startAffine);
u8 CreateBerryFlavorCircleSprite(s16 x);
-#define TAG_BAG_GFX 100
-#define TAG_ROTATING_BALL_GFX 101
-#define TAG_BERRY_CHECK_CIRCLE_GFX 10000
-#define TAG_BERRY_PIC_TILE 0xFFFF
-#define TAG_BERRY_PIC_PAL 0x7544
-
#endif // GUARD_ITEM_MENU_ICONS_H
diff --git a/include/link.h b/include/link.h
index 3b621e6c1..407dbabb9 100644
--- a/include/link.h
+++ b/include/link.h
@@ -323,7 +323,7 @@ extern bool8 gSavedLinkPlayerCount;
extern u8 gSavedMultiplayerId;
extern struct LinkTestBGInfo gLinkTestBGInfo;
extern void (*gLinkCallback)(void);
-extern bool8 gShouldAdvanceLinkState;
+extern u8 gShouldAdvanceLinkState;
extern u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS];
extern u8 gBlockRequestType;
extern u8 gLastSendQueueCount;
diff --git a/include/list_menu.h b/include/list_menu.h
index 0a54a069a..1c18f3dff 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -31,7 +31,7 @@ struct ListMenuTemplate
{
const struct ListMenuItem *items;
void (* moveCursorFunc)(s32 itemIndex, bool8 onInit, struct ListMenu *list);
- void (* itemPrintFunc)(u8 windowId, s32 itemId, u8 y);
+ void (* itemPrintFunc)(u8 windowId, u32 itemId, u8 y);
u16 totalItems;
u16 maxShowed;
u8 windowId;
diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h
index 29c66a992..603d585da 100644
--- a/include/mauville_old_man.h
+++ b/include/mauville_old_man.h
@@ -7,7 +7,7 @@ void SetMauvilleOldMan(void);
u8 GetCurrentMauvilleOldMan(void);
void ScrSpecial_SetMauvilleOldManObjEventGfx(void);
u8 sub_81201C8(void);
-void sub_8120B70(OldMan *dest);
+void SanitizeMauvilleOldManForRuby(OldMan *dest);
void sub_8120670(void);
void SanitizeReceivedRubyOldMan(union OldMan * oldMan, u32 r1, u32 r6);
void SanitizeReceivedEmeraldOldMan(union OldMan * oldMan, u32 unused, u32 a2);
diff --git a/include/menu.h b/include/menu.h
index c9d8e374d..07e00eb73 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -90,8 +90,8 @@ void *malloc_and_decompress(const void *src, u32 *sizeOut);
u16 copy_decompressed_tile_data_to_vram(u8 bgId, const void *src, u16 size, u16 offset, u8 mode);
void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
-void sub_8198DBC(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u8 itemCount2, const struct MenuAction *strs, const u8 *a8);
-u8 sub_8199944(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos);
+void PrintMenuActionGrid(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 itemCount, u8 itemCount2, const struct MenuAction *strs, const u8 *a8);
+u8 InitMenuActionGrid(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCursorPos);
u8 ChangeListMenuCursorPosition(s8 deltaX, s8 deltaY);
u8 GetStartMenuWindowId(void);
void ListMenuLoadStdPalAt(u8, u8);
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 4557ebbb1..df71ce252 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -7,7 +7,7 @@
#define MENU_L_PRESSED 1
#define MENU_R_PRESSED 2
-// Exported type declarations
+#define SWAP_LINE_HAS_MARGIN (1 << 7)
struct YesNoFuncTable
{
@@ -15,9 +15,6 @@ struct YesNoFuncTable
TaskFunc noFunc;
};
-// Exported RAM declarations
-
-// Exported ROM declarations
void ResetVramOamAndBgCntRegs(void);
void ResetAllBgsCoordinates(void);
void SetVBlankHBlankCallbacksToNull(void);
@@ -28,17 +25,17 @@ void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *templa
bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
u8 GetLRKeysPressed(void);
u8 GetLRKeysPressedAndHeld(void);
-bool8 sub_8122148(u16 itemId);
-bool8 itemid_80BF6D8_mail_related(u16 itemId);
+bool8 IsHoldingItemAllowed(u16 itemId);
+bool8 IsWritingMailAllowed(u16 itemId);
bool8 MenuHelpers_LinkSomething(void);
bool8 MenuHelpers_CallLinkSomething(void);
-void sub_812220C(struct ItemSlot *slots, u8 count, u8 *arg2, u8 *usedSlotsCount, u8 maxUsedSlotsCount);
-void sub_812225C(u16 *scrollOffset, u16 *cursorPos, u8 maxShownItems, u8 numItems);
-void sub_8122298(u16 *arg0, u16 *arg1, u8 arg2, u8 arg3, u8 arg4);
-void LoadListMenuArrowsGfx(void);
-void sub_8122344(u8 *spriteIds, u8 count);
-void sub_81223B0(u8 *spriteIds, u8 count);
-void sub_81223FC(u8 *spriteIds, u8 count, bool8 invisible);
-void sub_8122448(u8 *spriteIds, u8 count, s16 x, u16 y);
+void SetItemListPerPageCount(struct ItemSlot *slots, u8 slotsCount, u8 *pageItems, u8 *totalItems, u8 maxPerPage);
+void SetCursorWithinListBounds(u16 *scrollOffset, u16 *cursorPos, u8 maxShownItems, u8 totalItems);
+void SetCursorScrollWithinListBounds(u16 *scrollOffset, u16 *cursorPos, u8 shownItems, u8 totalItems, u8 maxShownItems);
+void LoadListMenuSwapLineGfx(void);
+void CreateSwapLineSprites(u8 *spriteIds, u8 count);
+void DestroySwapLineSprites(u8 *spriteIds, u8 count);
+void SetSwapLineSpritesInvisibility(u8 *spriteIds, u8 count, bool8 invisible);
+void UpdateSwapLineSpritesPos(u8 *spriteIds, u8 count, s16 x, u16 y);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/menu_specialized.h b/include/menu_specialized.h
index 987fca9fc..c29110662 100644
--- a/include/menu_specialized.h
+++ b/include/menu_specialized.h
@@ -15,6 +15,14 @@
#define MAX_CONDITION_SPARKLES 10
+// Window IDs for the Player PC Mailbox
+enum {
+ MAILBOXWIN_TITLE,
+ MAILBOXWIN_LIST,
+ MAILBOXWIN_OPTIONS,
+ MAILBOXWIN_COUNT
+};
+
struct UnknownSubStruct_81D1ED4
{
u16 unk0;
@@ -35,12 +43,12 @@ struct ConditionGraph
/*0x355*/ u8 state;
};
-bool8 sub_81D1C44(u8 count);
-u8 sub_81D1C84(u8 a0);
-u8 sub_81D1DC0(struct PlayerPCItemPageStruct *page);
-void sub_81D1E90(struct PlayerPCItemPageStruct *page);
-void sub_81D1EC0(void);
-void sub_81D1D04(u8 a0);
+bool8 MailboxMenu_Alloc(u8 count);
+u8 MailboxMenu_AddWindow(u8 windowIdx);
+u8 MailboxMenu_CreateList(struct PlayerPCItemPageStruct *page);
+void MailboxMenu_AddScrollArrows(struct PlayerPCItemPageStruct *page);
+void MailboxMenu_Free(void);
+void MailboxMenu_RemoveWindow(u8 windowIdx);
void InitConditionGraphData(struct ConditionGraph *graph);
void sub_81D2108(struct ConditionGraph *graph);
void SetConditionGraphIOWindows(u8 bg);
diff --git a/include/player_pc.h b/include/player_pc.h
index bdf4a4e0e..2521eac13 100644
--- a/include/player_pc.h
+++ b/include/player_pc.h
@@ -3,69 +3,6 @@
#include "menu.h"
-// local task defines
-#define PAGE_INDEX data[0]
-#define ITEMS_ABOVE_TOP data[1]
-#define NUM_ITEMS data[1]
-#define NUM_QUANTITY_ROLLER data[3]
-#define NUM_PAGE_ITEMS data[4]
-// not used
-#define CURRENT_ITEM_STORAGE_MENU data[3]
-// not used
-#define SWAP_ITEM_INDEX data[8]
-#define SWITCH_MODE_ACTIVE data[9]
-
-// this is potentially an ewram access occuring in high ewram. TODO: investigate this further.
-#define NEW_GAME_PC_ITEMS(i, type) ((u16)((u16 *)gNewGamePCItems + type)[i * 2])
-
-// defined and used in the above macro
-enum
-{
- PC_ITEM_ID,
- PC_QUANTITY
-};
-
-// player PC menu options
-enum
-{
- PLAYERPC_MENU_ITEMSTORAGE,
- PLAYERPC_MENU_MAILBOX,
- PLAYERPC_MENU_DECORATION,
- PLAYERPC_MENU_TURNOFF
-};
-
-// item storage menus
-enum
-{
- ITEMPC_MENU_WITHDRAW,
- ITEMPC_MENU_DEPOSIT,
- ITEMPC_MENU_TOSS,
- ITEMPC_MENU_EXIT
-};
-
-// mailbox mail options
-enum
-{
- MAILBOX_READ,
- MAILBOX_MOVE_TO_BAG,
- MAILBOX_GIVE,
- MAILBOX_CANCEL,
-};
-
-// special item description handlers
-enum
-{
- ITEMPC_SWITCH_WHICH_ITEM = 0xFFF7,
- ITEMPC_OKAY_TO_THROW_AWAY,
- ITEMPC_TOO_IMPORTANT,
- ITEMPC_NO_MORE_ROOM,
- ITEMPC_THREW_AWAY_ITEM,
- ITEMPC_HOW_MANY_TO_TOSS,
- ITEMPC_WITHDREW_THING,
- ITEMPC_HOW_MANY_TO_WITHDRAW,
- ITEMPC_GO_BACK_TO_PREV
-};
-
struct PlayerPCItemPageStruct
{
u16 cursorPos;
@@ -76,16 +13,12 @@ struct PlayerPCItemPageStruct
u8 scrollIndicatorTaskId;
};
-// Exported type declarations
-
-// Exported RAM declarations
-extern struct PlayerPCItemPageStruct playerPCItemPageInfo;
+extern struct PlayerPCItemPageStruct gPlayerPCItemPageInfo;
-// Exported ROM declarations
extern const struct MenuAction gMailboxMailOptions[];
void ReshowPlayerPC(u8 taskId);
-void sub_816B31C(void);
+void CB2_PlayerPCExitBagMenu(void);
void Mailbox_ReturnToMailListAfterDeposit(void);
void NewGameInitPCItems(void);
diff --git a/include/pokeblock.h b/include/pokeblock.h
index c82e99d8f..9e0161495 100644
--- a/include/pokeblock.h
+++ b/include/pokeblock.h
@@ -4,8 +4,7 @@
#include "constants/berry.h"
#include "constants/pokemon.h"
-#define GFX_TAG_POKEBLOCK 14818
-#define GFX_TAG_POKEBLOCK_CASE 14800
+#define TAG_POKEBLOCK 14818
enum
{
@@ -52,7 +51,7 @@ extern s16 gPokeblockGain;
void ChooseMonToGivePokeblock(struct Pokeblock *pokeblock, void (*callback)(void));
// pokeblock feed
-void CB2_PreparePokeblockFeedScene(void);
+void PreparePokeblockFeedScene(void);
// pokeblock
extern const s8 gPokeblockFlavorCompatibilityTable[NUM_NATURES * FLAVOR_COUNT];
diff --git a/include/pokemon.h b/include/pokemon.h
index 82cdefeac..3565bd966 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -258,7 +258,6 @@ extern const u8 gFacilityClassToPicIndex[];
extern const u8 gFacilityClassToTrainerClass[];
extern const struct BaseStats gBaseStats[];
extern const u8 *const gItemEffectTable[];
-extern const struct Evolution gEvolutionTable[][EVOS_PER_MON];
extern const u32 gExperienceTables[][MAX_LEVEL + 1];
extern const u16 *const gLevelUpLearnsets[];
extern const u8 gPPUpGetMask[];
diff --git a/include/pokemon_animation.h b/include/pokemon_animation.h
index c1ab8d817..5174c8a77 100644
--- a/include/pokemon_animation.h
+++ b/include/pokemon_animation.h
@@ -7,4 +7,186 @@ void StartMonSummaryAnimation(struct Sprite *sprite, u8 frontAnimId);
void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet);
void SetSpriteCB_MonAnimDummy(struct Sprite *sprite);
+// Pokémon back animation sets
+#define BACK_ANIM_NONE 0
+#define BACK_ANIM_H_VIBRATE 1
+#define BACK_ANIM_H_SLIDE 2
+#define BACK_ANIM_H_SPRING 3
+#define BACK_ANIM_H_SPRING_REPEATED 4
+#define BACK_ANIM_SHRINK_GROW 5
+#define BACK_ANIM_GROW 6
+#define BACK_ANIM_CIRCLE_COUNTERCLOCKWISE 7
+#define BACK_ANIM_H_SHAKE 8
+#define BACK_ANIM_V_SHAKE 9
+#define BACK_ANIM_V_SHAKE_H_SLIDE 10
+#define BACK_ANIM_V_STRETCH 11
+#define BACK_ANIM_H_STRETCH 12
+#define BACK_ANIM_GROW_STUTTER 13
+#define BACK_ANIM_V_SHAKE_LOW 14
+#define BACK_ANIM_TRIANGLE_DOWN 15
+#define BACK_ANIM_CONCAVE_ARC_LARGE 16
+#define BACK_ANIM_CONVEX_DOUBLE_ARC 17
+#define BACK_ANIM_CONCAVE_ARC_SMALL 18
+#define BACK_ANIM_DIP_RIGHT_SIDE 19
+#define BACK_ANIM_SHRINK_GROW_VIBRATE 20
+#define BACK_ANIM_JOLT_RIGHT 21
+#define BACK_ANIM_SHAKE_FLASH_YELLOW 22
+#define BACK_ANIM_SHAKE_GLOW_RED 23
+#define BACK_ANIM_SHAKE_GLOW_GREEN 24
+#define BACK_ANIM_SHAKE_GLOW_BLUE 25
+
+// Pokémon animation function ids (for front and back)
+// Each front anim uses 1, and each back anim uses a set of 3
+#define ANIM_V_SQUISH_AND_BOUNCE 0
+#define ANIM_CIRCULAR_STRETCH_TWICE 1
+#define ANIM_H_VIBRATE 2
+#define ANIM_H_SLIDE 3
+#define ANIM_V_SLIDE 4
+#define ANIM_BOUNCE_ROTATE_TO_SIDES 5
+#define ANIM_V_JUMPS_H_JUMPS 6
+#define ANIM_ROTATE_TO_SIDES 7
+#define ANIM_ROTATE_TO_SIDES_TWICE 8
+#define ANIM_GROW_VIBRATE 9
+#define ANIM_ZIGZAG_FAST 10
+#define ANIM_SWING_CONCAVE 11
+#define ANIM_SWING_CONCAVE_FAST 12
+#define ANIM_SWING_CONVEX 13
+#define ANIM_SWING_CONVEX_FAST 14
+#define ANIM_H_SHAKE 15
+#define ANIM_V_SHAKE 16
+#define ANIM_CIRCULAR_VIBRATE 17
+#define ANIM_TWIST 18
+#define ANIM_SHRINK_GROW 19
+#define ANIM_CIRCLE_C_CLOCKWISE 20
+#define ANIM_GLOW_BLACK 21
+#define ANIM_H_STRETCH 22
+#define ANIM_V_STRETCH 23
+#define ANIM_RISING_WOBBLE 24
+#define ANIM_V_SHAKE_TWICE 25
+#define ANIM_TIP_MOVE_FORWARD 26
+#define ANIM_H_PIVOT 27
+#define ANIM_V_SLIDE_WOBBLE 28
+#define ANIM_H_SLIDE_WOBBLE 29
+#define ANIM_V_JUMPS_BIG 30
+#define ANIM_SPIN_LONG 31
+#define ANIM_GLOW_ORANGE 32
+#define ANIM_GLOW_RED 33
+#define ANIM_GLOW_BLUE 34
+#define ANIM_GLOW_YELLOW 35
+#define ANIM_GLOW_PURPLE 36
+#define ANIM_BACK_AND_LUNGE 37
+#define ANIM_BACK_FLIP 38
+#define ANIM_FLICKER 39
+#define ANIM_BACK_FLIP_BIG 40
+#define ANIM_FRONT_FLIP 41
+#define ANIM_TUMBLING_FRONT_FLIP 42
+#define ANIM_FIGURE_8 43
+#define ANIM_FLASH_YELLOW 44
+#define ANIM_SWING_CONCAVE_FAST_SHORT 45
+#define ANIM_SWING_CONVEX_FAST_SHORT 46
+#define ANIM_ROTATE_UP_SLAM_DOWN 47
+#define ANIM_DEEP_V_SQUISH_AND_BOUNCE 48
+#define ANIM_H_JUMPS 49
+#define ANIM_H_JUMPS_V_STRETCH 50
+#define ANIM_ROTATE_TO_SIDES_FAST 51
+#define ANIM_ROTATE_UP_TO_SIDES 52
+#define ANIM_FLICKER_INCREASING 53
+#define ANIM_TIP_HOP_FORWARD 54
+#define ANIM_PIVOT_SHAKE 55
+#define ANIM_TIP_AND_SHAKE 56
+#define ANIM_VIBRATE_TO_CORNERS 57
+#define ANIM_GROW_IN_STAGES 58
+#define ANIM_V_SPRING 59
+#define ANIM_V_REPEATED_SPRING 60
+#define ANIM_SPRING_RISING 61
+#define ANIM_H_SPRING 62
+#define ANIM_H_REPEATED_SPRING_SLOW 63
+#define ANIM_H_SLIDE_SHRINK 64
+#define ANIM_LUNGE_GROW 65
+#define ANIM_CIRCLE_INTO_BG 66
+#define ANIM_RAPID_H_HOPS 67
+#define ANIM_FOUR_PETAL 68
+#define ANIM_V_SQUISH_AND_BOUNCE_SLOW 69
+#define ANIM_H_SLIDE_SLOW 70
+#define ANIM_V_SLIDE_SLOW 71
+#define ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL 72
+#define ANIM_BOUNCE_ROTATE_TO_SIDES_SLOW 73
+#define ANIM_BOUNCE_ROTATE_TO_SIDES_SMALL_SLOW 74
+#define ANIM_ZIGZAG_SLOW 75
+#define ANIM_H_SHAKE_SLOW 76
+#define ANIM_V_SHAKE_SLOW 77
+#define ANIM_TWIST_TWICE 78
+#define ANIM_CIRCLE_C_CLOCKWISE_SLOW 79
+#define ANIM_V_SHAKE_TWICE_SLOW 80
+#define ANIM_V_SLIDE_WOBBLE_SMALL 81
+#define ANIM_V_JUMPS_SMALL 82
+#define ANIM_SPIN 83
+#define ANIM_TUMBLING_FRONT_FLIP_TWICE 84
+#define ANIM_DEEP_V_SQUISH_AND_BOUNCE_TWICE 85
+#define ANIM_H_JUMPS_V_STRETCH_TWICE 86
+#define ANIM_V_SHAKE_BACK 87
+#define ANIM_V_SHAKE_BACK_SLOW 88
+#define ANIM_V_SHAKE_H_SLIDE_SLOW 89
+#define ANIM_V_STRETCH_BOTH_ENDS_SLOW 90
+#define ANIM_H_STRETCH_FAR_SLOW 91
+#define ANIM_V_SHAKE_LOW_TWICE 92
+#define ANIM_H_SHAKE_FAST 93
+#define ANIM_H_SLIDE_FAST 94
+#define ANIM_H_VIBRATE_FAST 95
+#define ANIM_H_VIBRATE_FASTEST 96
+#define ANIM_V_SHAKE_BACK_FAST 97
+#define ANIM_V_SHAKE_LOW_TWICE_SLOW 98
+#define ANIM_V_SHAKE_LOW_TWICE_FAST 99
+#define ANIM_CIRCLE_C_CLOCKWISE_LONG 100
+#define ANIM_GROW_STUTTER_SLOW 101
+#define ANIM_V_SHAKE_H_SLIDE 102
+#define ANIM_V_SHAKE_H_SLIDE_FAST 103
+#define ANIM_TRIANGLE_DOWN_SLOW 104
+#define ANIM_TRIANGLE_DOWN 105
+#define ANIM_TRIANGLE_DOWN_TWICE 106
+#define ANIM_GROW 107
+#define ANIM_GROW_TWICE 108
+#define ANIM_H_SPRING_FAST 109
+#define ANIM_H_SPRING_SLOW 110
+#define ANIM_H_REPEATED_SPRING_FAST 111
+#define ANIM_H_REPEATED_SPRING 112
+#define ANIM_SHRINK_GROW_FAST 113
+#define ANIM_SHRINK_GROW_SLOW 114
+#define ANIM_V_STRETCH_BOTH_ENDS 115
+#define ANIM_V_STRETCH_BOTH_ENDS_TWICE 116
+#define ANIM_H_STRETCH_FAR_TWICE 117
+#define ANIM_H_STRETCH_FAR 118
+#define ANIM_GROW_STUTTER_TWICE 119
+#define ANIM_GROW_STUTTER 120
+#define ANIM_CONCAVE_ARC_LARGE_SLOW 121
+#define ANIM_CONCAVE_ARC_LARGE 122
+#define ANIM_CONCAVE_ARC_LARGE_TWICE 123
+#define ANIM_CONVEX_DOUBLE_ARC_SLOW 124
+#define ANIM_CONVEX_DOUBLE_ARC 125
+#define ANIM_CONVEX_DOUBLE_ARC_TWICE 126
+#define ANIM_CONCAVE_ARC_SMALL_SLOW 127
+#define ANIM_CONCAVE_ARC_SMALL 128
+#define ANIM_CONCAVE_ARC_SMALL_TWICE 129
+#define ANIM_H_DIP 130
+#define ANIM_H_DIP_FAST 131
+#define ANIM_H_DIP_TWICE 132
+#define ANIM_SHRINK_GROW_VIBRATE_FAST 133
+#define ANIM_SHRINK_GROW_VIBRATE 134
+#define ANIM_SHRINK_GROW_VIBRATE_SLOW 135
+#define ANIM_JOLT_RIGHT_FAST 136
+#define ANIM_JOLT_RIGHT 137
+#define ANIM_JOLT_RIGHT_SLOW 138
+#define ANIM_SHAKE_FLASH_YELLOW_FAST 139
+#define ANIM_SHAKE_FLASH_YELLOW 140
+#define ANIM_SHAKE_FLASH_YELLOW_SLOW 141
+#define ANIM_SHAKE_GLOW_RED_FAST 142
+#define ANIM_SHAKE_GLOW_RED 143
+#define ANIM_SHAKE_GLOW_RED_SLOW 144
+#define ANIM_SHAKE_GLOW_GREEN_FAST 145
+#define ANIM_SHAKE_GLOW_GREEN 146
+#define ANIM_SHAKE_GLOW_GREEN_SLOW 147
+#define ANIM_SHAKE_GLOW_BLUE_FAST 148
+#define ANIM_SHAKE_GLOW_BLUE 149
+#define ANIM_SHAKE_GLOW_BLUE_SLOW 150
+
#endif // GUARD_POKEMON_ANIMATION_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 7b6a38678..73a7833ee 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -2,13 +2,13 @@
#define GUARD_POKEMON_STORAGE_SYSTEM_H
#define TOTAL_BOXES_COUNT 14
-#define IN_BOX_ROWS 6
-#define IN_BOX_COLUMNS 5
+#define IN_BOX_ROWS 5 // Number of rows, 6 Pokémon per row
+#define IN_BOX_COLUMNS 6 // Number of columns, 5 Pokémon per column
#define IN_BOX_COUNT (IN_BOX_ROWS * IN_BOX_COLUMNS)
-/*
- ROWS
-COLUMNS 0 1 2 3 4 5
+/*
+ COLUMNS
+ROWS 0 1 2 3 4 5
6 7 8 9 10 11
12 13 14 15 16 17
18 19 20 21 22 23
@@ -51,14 +51,13 @@ void ZeroBoxMonAt(u8 boxId, u8 boxPosition);
void BoxMonAtToMon(u8 boxId, u8 boxPosition, struct Pokemon *dst);
struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 boxPosition);
u8 *GetBoxNamePtr(u8 boxId);
-u8 GetBoxWallpaper(u8 boxId);
-void SetBoxWallpaper(u8 boxId, u8 wallpaperId);
-s16 sub_80D214C(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 arg3);
+s16 AdvanceStorageMonIndex(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 arg3);
bool8 CheckFreePokemonStorageSpace(void);
bool32 CheckBoxMonSanityAt(u32 boxId, u32 boxPosition);
u32 CountStorageNonEggMons(void);
u32 CountAllStorageMons(void);
bool32 AnyStorageMonWithMove(u16 moveId);
+
void ResetWaldaWallpaper(void);
void SetWaldaWallpaperLockedOrUnlocked(bool32 unlocked);
bool32 IsWaldaWallpaperUnlocked(void);
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 6413dcdec..3996c8e15 100755
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -12,26 +12,16 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex,
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void), u16 newMove);
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
u8 GetMoveSlotToReplace(void);
-void SummaryScreen_SetUnknownTaskId(u8 taskId);
-void SummaryScreen_DestroyUnknownTask(void);
+void SummaryScreen_SetAnimDelayTaskId(u8 taskId);
// The Pokemon Summary Screen can operate in different modes. Certain features,
// such as move re-ordering, are available in the different modes.
enum PokemonSummaryScreenMode
{
- PSS_MODE_NORMAL,
- PSS_MODE_LOCK_MOVES,
- PSS_MODE_BOX,
- PSS_MODE_SELECT_MOVE,
-};
-
-enum PokemonSummaryScreenPage
-{
- PSS_PAGE_INFO,
- PSS_PAGE_SKILLS,
- PSS_PAGE_BATTLE_MOVES,
- PSS_PAGE_CONTEST_MOVES,
- PSS_PAGE_COUNT,
+ SUMMARY_MODE_NORMAL,
+ SUMMARY_MODE_LOCK_MOVES,
+ SUMMARY_MODE_BOX,
+ SUMMARY_MODE_SELECT_MOVE,
};
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/include/region_map.h b/include/region_map.h
index 97364abd8..02d711afa 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -111,7 +111,7 @@ void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y);
void CB2_OpenFlyMap(void);
bool8 IsRegionMapZoomed(void);
void TrySetPlayerIconBlink(void);
-void sub_8123030(u16 color, u32 coeff);
+void BlendRegionMap(u16 color, u32 coeff);
void SetRegionMapDataForZoom(void);
extern const struct RegionMapLocation gRegionMapEntries[];
diff --git a/include/strings.h b/include/strings.h
index 8880f3a5c..2357e3777 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -419,8 +419,8 @@ extern const u8 gText_FirmSlash[];
// item menu screen text
extern const u8 gText_CloseBag[];
-extern const u8 gText_ClearTo11Var1Clear5Var2[];
-extern const u8 gText_NumberVar1Clear7Var2[];
+extern const u8 gText_NumberItem_HM[];
+extern const u8 gText_NumberItem_TMBerry[];
extern const u8 gText_xVar1[];
extern const u8 gText_ReturnToVar1[];
extern const u8 gText_SelectorArrow2[];
@@ -442,6 +442,7 @@ extern const u8 gText_CantStoreImportantItems[];
extern const u8 gText_DepositedVar2Var1s[];
extern const u8 gText_NoRoomForItems[];
extern const u8 gText_ThreeDashes[];
+extern const u8 *const gPocketNamesStringsTable[];
// party menu text
extern const u8 gText_PkmnHPRestoredByVar2[];
@@ -596,7 +597,7 @@ extern const u8 gText_TooImportantToToss[];
extern const u8 gText_ConfirmTossItems[];
extern const u8 gText_MoveVar1Where[];
-extern const u8 gText_ColorLightShadowDarkGrey[];
+extern const u8 gText_ColorLightShadowDarkGray[];
extern const u8 gText_ColorBlue[];
extern const u8 gText_Friend[];
extern const u8 gText_Tristan[];
@@ -982,7 +983,8 @@ extern const u8 gText_RibbonsVar1[];
extern const u8 gText_OneDash[];
extern const u8 gText_TwoDashes[];
-extern const u8 *const gReturnToXStringsTable2[];
+extern const u8 *const gBagMenu_ReturnToStrings[];
+extern const u8 *const gPyramidBagMenu_ReturnToStrings[];
extern const u8 gText_NumPlayerLink[];
extern const u8 gText_ConfirmLinkWhenPlayersReady[];
@@ -2511,7 +2513,7 @@ extern const u8 gText_MatchCallMay_Intro1[];
extern const u8 gText_MatchCallMay_Intro2[];
// Contest Link
-extern const u8 gText_ColorDarkGrey[];
+extern const u8 gText_ColorDarkGray[];
extern const u8 gText_CommunicationStandby[];
extern const u8 gText_AnnouncingResults[];
extern const u8 gText_PreliminaryResults[];
diff --git a/include/tv.h b/include/tv.h
index f94c5b7e5..30cd13326 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -1,13 +1,10 @@
#ifndef GUARD_TV_H
#define GUARD_TV_H
-#define SLOT_MACHINE 0
-#define ROULETTE 1
-
extern u8 *const gTVStringVarPtrs[3];
void ClearTVShowData(void);
-void sub_80EE184(void);
+void TryPutBreakingNewsOnAir(void);
void TryPutBattleSeminarOnAir(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove);
void TryPutFrontierTVShowOnAir(u16 winStreak, u8 facility);
void DoTVShow(void);
@@ -23,41 +20,37 @@ void ReceiveTvShowsData(void *src, u32 size, u8 masterIdx);
void TryPutSpotTheCutiesOnAir(struct Pokemon *pokemon, u8 ribbonMonDataIdx);
u32 GetPlayerIDAsU32(void);
bool8 GetPriceReduction(u8 newsKind);
-void sub_80F14F8(TVShow *shows);
+void SanitizeTVShowLocationsForRuby(TVShow *shows);
size_t CountDigits(int value);
u8 GetRibbonCount(struct Pokemon *pokemon);
void AlertTVThatPlayerPlayedSlotMachine(u16 nCoinsSpent);
void AlertTVThatPlayerPlayedRoulette(u16 nCoinsSpent);
-void AlertTVOfNewCoinTotal(u16 nCoinsPaidOut);
+void TryPutFindThatGamerOnAir(u16 nCoinsPaidOut);
void TryPutSecretBaseSecretsOnAir(void);
void TryPutTodaysRivalTrainerOnAir(void);
void TryPutTrendWatcherOnAir(const u16 *words);
-void sub_80EDA80(void);
void ReceivePokeNewsData(void *src, u32 size, u8 masterIdx);
-void sub_80F0BB8(void);
+void DeactivateAllNormalTVShows(void);
void RecordFishingAttemptForTV(bool8 caughtFish);
void IncrementDailySlotsUses(void);
void IncrementDailyRouletteUses(void);
void IncrementDailyWildBattles(void);
void IncrementDailyBerryBlender(void);
-void sub_80F1208(TVShow *shows);
-void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed);
-void sub_80F14F8(TVShow *shows);
-size_t sub_80EF370(int value);
+void SanitizeTVShowsForRuby(TVShow *shows);
+void TryPutSafariFanClubOnAir(u8 nMonsCaught, u8 nPkblkUsed);
bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language);
void SetPokemonAnglerSpecies(u16 species);
void UpdateTVShowsPerDay(u16 days);
-void PutPokemonTodayCaughtOnAir(void);
-void TV_PutSecretBaseVisitOnTheAir(void);
+void TryPutPokemonTodayOnAir(void);
+void TryPutSecretBaseVisitOnAir(void);
void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlayer, u16 speciesOpponent);
void BravoTrainerPokemonProfile_BeforeInterview1(u16 move);
void InterviewBefore(void);
void InterviewAfter(void);
void UpdateTVScreensOnMap(int, int);
-void TV_PrintIntToStringVar(u8 varIdx, int value);
-void SaveRecordedItemPurchasesForTVShow(void);
+void ConvertIntToDecimalString(u8 varIdx, int value);
+void TryPutSmartShopperOnAir(void);
bool8 ShouldAirFrontierTVShow(void);
-void sub_80EE8C8(u16 winStreak, u8 facilityAndMode);
void BravoTrainerPokemonProfile_BeforeInterview2(u8 contestStandingPlace);
void ContestLiveUpdates_Init(u8 round1Placing);
void ContestLiveUpdates_SetRound2Placing(u8 round2Placing);
@@ -65,5 +58,8 @@ void ContestLiveUpdates_SetWinnerAppealFlag(u8 flag);
void ContestLiveUpdates_SetWinnerMoveUsed(u16 move);
void ContestLiveUpdates_SetLoserData(u8 flag, u8 loser);
void ResetGabbyAndTy(void);
+u8 CheckForPlayersHouseNews(void);
+bool8 IsGabbyAndTyShowOnTheAir(void);
+void TryPutTrainerFanClubOnAir(void);
#endif //GUARD_TV_H