summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-07-29 21:10:54 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2019-07-29 21:10:54 -0400
commite130a00cdf69c58dbff8e98a69559aeb33f87b60 (patch)
treee128e502a2229f5d934f0436a0eb31dc86350bbb /include
parentef4c86fbfdd18b78700f61b629907a85579197c0 (diff)
parentd4cc0e161bf103d3d3e01fefa02e867d4a2053c2 (diff)
Merge branch 'master' into slot_machine
Diffstat (limited to 'include')
-rw-r--r--include/battle.h52
-rw-r--r--include/battle_2.h2
-rw-r--r--include/battle_ai_script_commands.h2
-rw-r--r--include/battle_anim.h18
-rw-r--r--include/battle_util.h1
-rw-r--r--include/berry.h1
-rw-r--r--include/berry_pouch.h12
-rw-r--r--include/berry_powder.h6
-rw-r--r--include/bg.h13
-rw-r--r--include/bike.h2
-rw-r--r--include/cereader_tool.h42
-rw-r--r--include/config.h2
-rw-r--r--include/constants/battle.h4
-rw-r--r--include/constants/battle_move_effects.h2
-rw-r--r--include/constants/fanfares.h22
-rw-r--r--include/constants/flags.h10
-rw-r--r--include/constants/global.h83
-rw-r--r--include/constants/hoenn_cries.h143
-rw-r--r--include/constants/item_effects.h79
-rw-r--r--include/constants/items.h68
-rw-r--r--include/constants/moves.h2
-rw-r--r--include/constants/songs.h4
-rw-r--r--include/constants/species.h834
-rw-r--r--include/constants/vars.h6
-rw-r--r--include/data2.h25
-rw-r--r--include/decompress.h19
-rw-r--r--include/dma3.h51
-rw-r--r--include/dynamic_placeholder_text_util.h12
-rw-r--r--include/event_scripts.h381
-rw-r--r--include/field_effect.h1
-rw-r--r--include/field_fadetransition.h1
-rw-r--r--include/field_map_obj.h14
-rw-r--r--include/field_player_avatar.h8
-rw-r--r--include/field_poison.h10
-rw-r--r--include/field_screen_effect.h1
-rw-r--r--include/field_specials.h6
-rw-r--r--include/field_weather.h3
-rw-r--r--include/fieldmap.h1
-rw-r--r--include/fldeff.h46
-rw-r--r--include/fldeff_80F9BCC.h16
-rw-r--r--include/gba/defines.h3
-rw-r--r--include/gba/multiboot.h6
-rw-r--r--include/global.fieldmap.h4
-rw-r--r--include/global.h85
-rw-r--r--include/graphics.h793
-rw-r--r--include/hall_of_fame.h3
-rw-r--r--include/help_system.h83
-rw-r--r--include/item.h26
-rw-r--r--include/item_icon.h19
-rw-r--r--include/item_menu.h13
-rw-r--r--include/item_menu_icons.h24
-rw-r--r--include/item_pc.h7
-rw-r--r--include/item_use.h37
-rw-r--r--include/itemfinder.h6
-rw-r--r--include/libgcnmultiboot.h17
-rw-r--r--include/link.h5
-rw-r--r--include/list_menu.h58
-rw-r--r--include/load_save.h2
-rw-r--r--include/m4a.h5
-rw-r--r--include/mail.h7
-rw-r--r--include/mail_data.h13
-rw-r--r--include/main.h2
-rw-r--r--include/menu.h79
-rw-r--r--include/menu_helpers.h33
-rw-r--r--include/menu_indicators.h49
-rw-r--r--include/mevent.h6
-rw-r--r--include/multiboot.h2
-rw-r--r--include/new_game.h1
-rw-r--r--include/new_menu_helpers.h62
-rw-r--r--include/overworld.h23
-rw-r--r--include/palette.h2
-rw-r--r--include/party_menu.h35
-rw-r--r--include/pc_screen_effect.h9
-rw-r--r--include/pokedex.h3
-rw-r--r--include/pokemon.h167
-rw-r--r--include/pokemon_3.h12
-rw-r--r--include/pokemon_icon.h1
-rw-r--r--include/pokemon_storage_system.h1
-rw-r--r--include/quest_log.h5
-rw-r--r--include/region_map.h1
-rw-r--r--include/reset_save_heap.h13
-rw-r--r--include/safari_zone.h4
-rw-r--r--include/save.h2
-rw-r--r--include/save_location.h14
-rw-r--r--include/script.h1
-rw-r--r--include/script_menu.h3
-rw-r--r--include/shop.h11
-rw-r--r--include/sound.h1
-rw-r--r--include/sprite.h27
-rw-r--r--include/strings.h90
-rw-r--r--include/task.h1
-rw-r--r--include/teachy_tv.h3
-rw-r--r--include/text.h19
-rw-r--r--include/text_window.h9
-rw-r--r--include/text_window_graphics.h6
-rw-r--r--include/trainer_card.h43
-rw-r--r--include/trainer_tower.h6
-rw-r--r--include/unk_8159F40.h1
-rw-r--r--include/unk_815C980.h4
-rw-r--r--include/unk_815c27c.h12
-rw-r--r--include/unk_text_util.h11
-rw-r--r--include/wild_encounter.h3
-rw-r--r--include/window.h4
103 files changed, 3499 insertions, 503 deletions
diff --git a/include/battle.h b/include/battle.h
index c86bc9232..b1284fd6c 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -33,39 +33,6 @@
#define GET_BANK_SIDE(bank)((GetBattlerPosition(bank) & BIT_SIDE))
#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE))
-#define BATTLE_TYPE_DOUBLE 0x0001
-#define BATTLE_TYPE_LINK 0x0002
-#define BATTLE_TYPE_WILD 0x0004
-#define BATTLE_TYPE_TRAINER 0x0008
-#define BATTLE_TYPE_FIRST_BATTLE 0x0010
-#define BATTLE_TYPE_20 0x0020
-#define BATTLE_TYPE_MULTI 0x0040
-#define BATTLE_TYPE_SAFARI 0x0080
-#define BATTLE_TYPE_BATTLE_TOWER 0x0100
-#define BATTLE_TYPE_WALLY_TUTORIAL 0x0200
-#define BATTLE_TYPE_ROAMER 0x0400
-#define BATTLE_TYPE_EREADER_TRAINER 0x0800
-#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
-#define BATTLE_TYPE_LEGENDARY 0x2000
-#define BATTLE_TYPE_REGI 0x4000
-#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
-#define BATTLE_TYPE_DOME 0x10000 // this is used in pokemon.c, but its clearly not the correct name for FR/LG. TODO: Fix these
-#define BATTLE_TYPE_PALACE 0x20000
-#define BATTLE_TYPE_ARENA 0x40000
-#define BATTLE_TYPE_FACTORY 0x80000
-#define BATTLE_TYPE_x100000 0x100000
-#define BATTLE_TYPE_PYRAMID 0x200000
-#define BATTLE_TYPE_INGAME_PARTNER 0x400000
-#define BATTLE_TYPE_x800000 0x800000
-#define BATTLE_TYPE_RECORDED 0x1000000
-#define BATTLE_TYPE_x2000000 0x2000000
-#define BATTLE_TYPE_x4000000 0x4000000
-#define BATTLE_TYPE_SECRET_BASE 0x8000000
-#define BATTLE_TYPE_GROUDON 0x10000000
-#define BATTLE_TYPE_KYORGE 0x20000000
-#define BATTLE_TYPE_RAYQUAZA 0x40000000
-#define BATTLE_TYPE_x80000000 0x80000000
-
#define TRAINER_OPPONENT_3FE 0x3FE
#define TRAINER_OPPONENT_C00 0xC00
#define TRAINER_OPPONENT_800 0x800
@@ -159,14 +126,14 @@
#define MSG_DISPLAY 0x7
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8
-#define MOVE_TARGET_SELECTED 0x0
-#define MOVE_TARGET_DEPENDS 0x1
-#define MOVE_TARGET_USER 0x2
-#define MOVE_TARGET_RANDOM 0x4
-#define MOVE_TARGET_x10 0x10
-#define MOVE_TARGET_BOTH 0x8
-#define MOVE_TARGET_FOES_AND_ALLY 0x20
-#define MOVE_TARGET_OPPONENTS_FIELD 0x40
+#define MOVE_TARGET_SELECTED 0x0
+#define MOVE_TARGET_DEPENDS 0x1
+#define MOVE_TARGET_USER_OR_SELECTED 0x2
+#define MOVE_TARGET_RANDOM 0x4
+#define MOVE_TARGET_BOTH 0x8
+#define MOVE_TARGET_USER 0x10
+#define MOVE_TARGET_FOES_AND_ALLY 0x20
+#define MOVE_TARGET_OPPONENTS_FIELD 0x40
// defines for the u8 array gTypeEffectiveness
#define TYPE_EFFECT_ATK_TYPE(i)((gTypeEffectiveness[i + 0]))
@@ -983,6 +950,7 @@ extern u8 gBattlersCount;
extern u16 gBattlerPartyIndexes[MAX_BATTLERS_COUNT];
extern s32 gBattleMoveDamage;
-extern u8 gUnknown_2023E8A;
+extern u8 gBattleOutcome;
+extern u8 gBattleMonForms[MAX_BATTLERS_COUNT];
#endif // GUARD_BATTLE_H
diff --git a/include/battle_2.h b/include/battle_2.h
index 1f7a2304d..02050afd9 100644
--- a/include/battle_2.h
+++ b/include/battle_2.h
@@ -2,6 +2,7 @@
#define GUARD_BATTLE_2_H
#include "global.h"
+#include "sprite.h"
void CB2_InitBattle(void);
void BattleMainCB2(void);
@@ -44,6 +45,7 @@ void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 bank);
void sub_800FD9C(void);
+void sub_80120C4(struct Sprite *);
extern const u8 gStatusConditionString_PoisonJpn[8];
extern const u8 gStatusConditionString_SleepJpn[8];
diff --git a/include/battle_ai_script_commands.h b/include/battle_ai_script_commands.h
index 5f8c4419b..3786d4a8c 100644
--- a/include/battle_ai_script_commands.h
+++ b/include/battle_ai_script_commands.h
@@ -3,6 +3,8 @@
#include "global.h"
+extern u8 sBattler_AI;
+
void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves);
void BattleAI_SetupAIData(u8 defaultScoreMoves);
u8 BattleAI_ChooseMoveOrAction(void);
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 4ea3bdead..5929a318e 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -59,10 +59,13 @@ extern u8 gAnimFriendship;
extern u16 gWeatherMoveAnim;
extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT];
extern u8 gAnimMoveTurn;
-extern u8 gAnimBankAttacker;
-extern u8 gAnimBankTarget;
+extern u8 gBattleAnimAttacker;
+extern u8 gBattleAnimTarget;
extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT];
extern u8 gUnknown_02038440;
+extern u8 gBattlerSpriteIds[MAX_BATTLERS_COUNT];
+extern u16 gUnknown_2037EEC;
+extern s32 gUnknown_2037EE8;
void ClearBattleAnimationVars(void);
void DoMoveAnim(u16 move);
@@ -77,6 +80,7 @@ s8 BattleAnimAdjustPanning(s8 pan);
s8 BattleAnimAdjustPanning2(s8 pan);
s16 sub_80A52EC(s16 a);
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
+bool8 sub_8072DF0(u8 battlerId);
// battle_anim_80FE840.s
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
@@ -121,4 +125,14 @@ u8 ItemIdToBallId(u16 itemId);
u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 bank, u32 arg2, u8 ballId);
+// battle_anim_mons.s
+void sub_8074DC4(struct Sprite * sprite);
+void sub_8074E14(struct Sprite * sprite);
+void sub_80754B8(struct Sprite * sprite);
+void sub_80758E0(u8 spriteId, u8 b);
+void sub_8075980(u8 spriteId);
+void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation);
+bool8 sub_8073788(void);
+void sub_80759DC(u8 spriteId);
+
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_util.h b/include/battle_util.h
index ed070720d..a062f0743 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -87,5 +87,6 @@ void HandleAction_RunBattleScript(void);
u8 GetMoveTarget(u16 move, u8 useMoveTarget);
u8 IsMonDisobedient(void);
void MarkBufferBankForExecution(u8 battlerId);
+void sub_80174B8(u8 battlerId);
#endif // GUARD_BATTLE_UTIL_H
diff --git a/include/berry.h b/include/berry.h
index 40715868b..c5a132ccb 100644
--- a/include/berry.h
+++ b/include/berry.h
@@ -62,6 +62,7 @@ void FieldObjectInteractionPickBerryTree(void);
void FieldObjectInteractionRemoveBerryTree(void);
u8 PlayerHasBerries(void);
void ResetBerryTreeSparkleFlags(void);
+const struct Berry * sub_809C8A0(u8 berryIdx);
extern const struct Berry gBerries[];
diff --git a/include/berry_pouch.h b/include/berry_pouch.h
new file mode 100644
index 000000000..8e652225b
--- /dev/null
+++ b/include/berry_pouch.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_BERRY_POUCH_H
+#define GUARD_BERRY_POUCH_H
+
+#include "task.h"
+
+void BerryPouch_StartFadeToExitCallback(u8 taskId);
+void BerryPouch_SetExitCallback(void (*)(void));
+void InitBerryPouch(u8, void (*)(void), u8);
+void DisplayItemMessageInBerryPouch(u8 taskId, u8 bgId, const u8 * str, TaskFunc followUpFunc);
+void sub_813E2B8(u8 taskId);
+
+#endif //GUARD_BERRY_POUCH_H
diff --git a/include/berry_powder.h b/include/berry_powder.h
new file mode 100644
index 000000000..89582aacc
--- /dev/null
+++ b/include/berry_powder.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BERRY_POWDER_H
+#define GUARD_BERRY_POWDER_H
+
+u32 GetBerryPowder(void);
+
+#endif //GUARD_BERRY_POWDER_H
diff --git a/include/bg.h b/include/bg.h
index 003ffc916..40c51167f 100644
--- a/include/bg.h
+++ b/include/bg.h
@@ -25,6 +25,17 @@ enum
BG_CTRL_ATTR_WRAPAROUND = 8,
};
+enum AdjustBgMosaicMode
+{
+ BG_MOSAIC_SET,
+ BG_MOSAIC_SET_H,
+ BG_MOSAIC_INC_H,
+ BG_MOSAIC_DEC_H,
+ BG_MOSAIC_SET_V,
+ BG_MOSAIC_INC_V,
+ BG_MOSAIC_DEC_V,
+};
+
enum BgTileAllocMode
{
BG_TILE_FIND_FREE_SPACE,
@@ -71,7 +82,7 @@ u32 ChangeBgY(u8 bg, u32 value, u8 op);
u32 ChangeBgY_ScreenOff(u8 bg, u32 value, u8 op);
u32 GetBgY(u8 bg);
void SetBgAffine(u8 bg, u32 srcCenterX, u32 srcCenterY, s16 dispCenterX, s16 dispCenterY, s16 scaleX, s16 scaleY, u16 rotationAngle);
-u8 Unused_AdjustBgMosaic(u8 a1, u8 a2);
+u8 AdjustBgMosaic(u8 value, u8 mode);
void SetBgTilemapBuffer(u8 bg, void *tilemap);
void UnsetBgTilemapBuffer(u8 bg);
void* GetBgTilemapBuffer(u8 bg);
diff --git a/include/bike.h b/include/bike.h
index 468c48273..68cc5f5c9 100644
--- a/include/bike.h
+++ b/include/bike.h
@@ -2,5 +2,7 @@
#define GUARD_BIKE_H
void sub_80BD620(u32 unkC, u32 unk10);
+bool8 sub_80BD540(void);
+void StartTransitionToFlipBikeState(u8 flags);
#endif //GUARD_BIKE_H
diff --git a/include/cereader_tool.h b/include/cereader_tool.h
index 05677dc79..f223bdaa5 100644
--- a/include/cereader_tool.h
+++ b/include/cereader_tool.h
@@ -3,7 +3,45 @@
#include "global.h"
-bool32 sub_815D794(u8 *);
-bool32 sub_815D6B4(u8 *);
+struct TrainerTowerTrainer_004
+{
+ /* 0x000 */ u8 unk_000[11];
+ /* 0x00B */ u8 unk_00B;
+ /* 0x00C */ u8 unk_00C;
+ /* 0x00E */ u16 unk_00E[6];
+ /* 0x01A */ u16 unk_01A[6];
+ /* 0x026 */ u16 unk_026[6];
+ /* 0x032 */ u16 unk_032[6];
+ /* 0x040 */ struct BattleTowerPokemon unk_040[PARTY_SIZE];
+}; // size: 328
+
+struct TrainerTowerTrainer
+{
+ /* 0x000 */ u8 unk_000;
+ /* 0x000 */ u8 unk_001;
+ /* 0x002 */ u8 unk_002;
+ /* 0x003 */ u8 unk_003;
+ /* 0x004 */ struct TrainerTowerTrainer_004 unk_004[3];
+ /* 0x3DC */ u32 checksum;
+};
+
+struct Unk_203F458_Header
+{
+ u8 unk0;
+ u8 unk1;
+ u32 unk4;
+};
+
+struct TrainerTowerData
+{
+ u8 count;
+ u8 id;
+ u16 dummy;
+ u32 checksum;
+ struct TrainerTowerTrainer trainers[8];
+};
+
+bool32 ValidateTrainerTowerData(struct TrainerTowerData * a0);
+bool32 CEReaderTool_SaveTrainerTower(struct TrainerTowerData * a0);
#endif //GUARD_CEREADER_TOOL_H
diff --git a/include/config.h b/include/config.h
index f094c95bd..491eadf13 100644
--- a/include/config.h
+++ b/include/config.h
@@ -15,8 +15,6 @@
// since not all baseroms and pointers have been dumped yet and will result in
// a broken ROM.
-#define ENGLISH
-
#ifdef ENGLISH
#define UNITS_IMPERIAL
#else
diff --git a/include/constants/battle.h b/include/constants/battle.h
index 074c0d0cd..f886f560b 100644
--- a/include/constants/battle.h
+++ b/include/constants/battle.h
@@ -59,8 +59,8 @@
#define BATTLE_TYPE_KYOGRE_GROUDON 0x1000
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_REGI 0x4000
-#define BATTLE_TYPE_TWO_OPPONENTS 0x8000
-#define BATTLE_TYPE_DOME 0x10000
+#define BATTLE_TYPE_GHOST 0x8000
+#define BATTLE_TYPE_POKEDUDE 0x10000
#define BATTLE_TYPE_PALACE 0x20000
#define BATTLE_TYPE_ARENA 0x40000
#define BATTLE_TYPE_FACTORY 0x80000
diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h
index 1b59f2f64..b54f01353 100644
--- a/include/constants/battle_move_effects.h
+++ b/include/constants/battle_move_effects.h
@@ -151,7 +151,7 @@
#define EFFECT_EARTHQUAKE 147
#define EFFECT_FUTURE_SIGHT 148
#define EFFECT_GUST 149
-#define EFFECT_FLINCH_HIT_2 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
+#define EFFECT_FLINCH_MINIMIZE_HIT 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
#define EFFECT_SOLARBEAM 151
#define EFFECT_THUNDER 152
#define EFFECT_TELEPORT 153
diff --git a/include/constants/fanfares.h b/include/constants/fanfares.h
new file mode 100644
index 000000000..21d3af79c
--- /dev/null
+++ b/include/constants/fanfares.h
@@ -0,0 +1,22 @@
+#ifndef GUARD_CONSTANTS_FANFARES_H
+#define GUARD_CONSTANTS_FANFARES_H
+
+enum Fanfares
+{
+ FANFARE_00,
+ FANFARE_01,
+ FANFARE_02,
+ FANFARE_03,
+ FANFARE_04,
+ FANFARE_05,
+ FANFARE_06,
+ FANFARE_07,
+ FANFARE_08,
+ FANFARE_09,
+ FANFARE_10,
+ FANFARE_POKEFLUTE,
+ FANFARE_KEY_ITEM,
+ FANFARE_DEX_EVAL
+};
+
+#endif //GUARD_CONSTANTS_FANFARES_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 8ecac9769..de9a98b43 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1,6 +1,11 @@
#ifndef GUARD_CONSTANTS_FLAGS_H
#define GUARD_CONSTANTS_FLAGS_H
+// Sys Flags Maybe
+#define FLAG_SYS_SAFARI_MODE 0x800
+#define FLAG_WHITE_FLUTE_ACTIVE 0x803
+#define FLAG_BLACK_FLUTE_ACTIVE 0x804
+
// World Map Flags
#define FLAG_WORLD_MAP_PALLET_TOWN 0x890
#define FLAG_WORLD_MAP_VIRIDIAN_CITY 0x891
@@ -67,7 +72,8 @@
#define FLAG_0x82C 0x82C
#define FLAG_0x82F 0x82F
#define FLAG_0x830 0x830
-#define FLAG_0x834 0x834
+#define FLAG_SYS_NOT_SOMEONES_PC 0x834
+#define FLAG_0x83C 0x83C
#define FLAG_0x83E 0x83E
#define FLAG_0x841 0x841
#define FLAG_0x844 0x844
@@ -1431,7 +1437,7 @@
#define FLAG_SYS_USE_STRENGTH (CODE_FLAGS + 0x29)
#define FLAG_SYS_WEATHER_CTRL (CODE_FLAGS + 0x2A)
#define FLAG_SYS_CYCLING_ROAD (CODE_FLAGS + 0x2B)
-#define FLAG_SYS_SAFARI_MODE (CODE_FLAGS + 0x2C)
+#define FLAG_0x88C (CODE_FLAGS + 0x2C)
#define FLAG_SYS_CRUISE_MODE (CODE_FLAGS + 0x2D)
#define FLAG_0x88E (CODE_FLAGS + 0x2E)
diff --git a/include/constants/global.h b/include/constants/global.h
new file mode 100644
index 000000000..3cac8d473
--- /dev/null
+++ b/include/constants/global.h
@@ -0,0 +1,83 @@
+#ifndef GUARD_CONSTANTS_GLOBAL_H
+#define GUARD_CONSTANTS_GLOBAL_H
+
+#define POKEMON_SLOTS_NUMBER 412
+
+#define ITEM_NAME_LENGTH 14
+#define POKEMON_NAME_LENGTH 10
+#define OT_NAME_LENGTH 7
+
+enum
+{
+ VERSION_SAPPHIRE = 1,
+ VERSION_RUBY = 2,
+ VERSION_EMERALD = 3,
+ VERSION_FIRE_RED = 4,
+ VERSION_LEAF_GREEN = 5,
+};
+
+enum LanguageId {
+ LANGUAGE_JAPANESE = 1,
+ LANGUAGE_ENGLISH = 2,
+ LANGUAGE_FRENCH = 3,
+ LANGUAGE_ITALIAN = 4,
+ LANGUAGE_GERMAN = 5,
+ // 6 goes unused but the theory is it was meant to be Korean
+ LANGUAGE_SPANISH = 7,
+};
+
+#ifdef ENGLISH
+#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
+#endif
+
+#define PC_ITEMS_COUNT 30
+#define BAG_ITEMS_COUNT 42
+#define BAG_KEYITEMS_COUNT 30
+#define BAG_POKEBALLS_COUNT 13
+#define BAG_TMHM_COUNT 58
+#define BAG_BERRIES_COUNT 43
+
+enum
+{
+ MALE,
+ FEMALE
+};
+
+enum
+{
+ OPTIONS_BUTTON_MODE_NORMAL,
+ OPTIONS_BUTTON_MODE_LR,
+ OPTIONS_BUTTON_MODE_L_EQUALS_A
+};
+
+enum
+{
+ OPTIONS_TEXT_SPEED_SLOW,
+ OPTIONS_TEXT_SPEED_MID,
+ OPTIONS_TEXT_SPEED_FAST
+};
+
+enum
+{
+ OPTIONS_SOUND_MONO,
+ OPTIONS_SOUND_STEREO
+};
+
+enum
+{
+ OPTIONS_BATTLE_STYLE_SHIFT,
+ OPTIONS_BATTLE_STYLE_SET
+};
+
+enum
+{
+ POCKET_ITEMS = 1,
+ POCKET_KEY_ITEMS,
+ POCKET_POKE_BALLS,
+ POCKET_TM_CASE,
+ POCKET_BERRY_POUCH,
+};
+
+#define NUM_BAG_POCKETS 5
+
+#endif //GUARD_CONSTANTS_GLOBAL_H
diff --git a/include/constants/hoenn_cries.h b/include/constants/hoenn_cries.h
new file mode 100644
index 000000000..5b90aa31d
--- /dev/null
+++ b/include/constants/hoenn_cries.h
@@ -0,0 +1,143 @@
+#ifndef GUARD_CONSTANTS_HOENN_CRIES_H
+#define GUARD_CONSTANTS_HOENN_CRIES_H
+
+enum
+{
+ CRY_KECLEON = 251,
+ CRY_ROSELIA = 252,
+ CRY_TORKOAL = 253,
+ CRY_ELECTRIKE = 254,
+ CRY_MANECTRIC = 255,
+ CRY_DUSKULL = 256,
+ CRY_LATIAS = 257,
+ CRY_WYNAUT = 258,
+ CRY_SEVIPER = 259,
+ CRY_SHARPEDO = 260,
+ CRY_ZANGOOSE = 261,
+ CRY_AZURILL = 262,
+ CRY_SWABLU = 263,
+ CRY_ALTARIA = 264,
+ CRY_TAILLOW = 266,
+ CRY_SWELLOW = 267,
+ CRY_SPINDA = 269,
+ CRY_TORCHIC = 270,
+ CRY_COMBUSKEN = 271,
+ CRY_BLAZIKEN = 272,
+ CRY_TREECKO = 273,
+ CRY_GROVYLE = 274,
+ CRY_SCEPTILE = 275,
+ CRY_MUDKIP = 276,
+ CRY_MARSHTOMP = 277,
+ CRY_SWAMPERT = 278,
+ CRY_PELIPPER = 279,
+ CRY_WINGULL = 280,
+ CRY_BANETTE = 281,
+ CRY_SHUPPET = 282,
+ CRY_LOTAD = 283,
+ CRY_LOMBRE = 284,
+ CRY_LUDICOLO = 285,
+ CRY_SEEDOT = 286,
+ CRY_NUZLEAF = 287,
+ CRY_SHIFTRY = 288,
+ CRY_CARVANHA = 289,
+ CRY_WURMPLE = 290,
+ CRY_SILCOON = 291,
+ CRY_BEAUTIFLY = 292,
+ CRY_CASCOON = 293,
+ CRY_DUSTOX = 294,
+ CRY_RALTS = 295,
+ CRY_KIRLIA = 296,
+ CRY_GARDEVOIR = 297,
+ CRY_SLAKOTH = 298,
+ CRY_VIGOROTH = 299,
+ CRY_SLAKING = 300,
+ CRY_NINCADA = 301,
+ CRY_NINJASK = 302,
+ CRY_SHEDINJA = 303,
+ CRY_MAKUHITA = 304,
+ CRY_HARIYAMA = 305,
+ CRY_NOSEPASS = 306,
+ CRY_GLALIE = 307,
+ CRY_PLUSLE = 308,
+ CRY_MINUN = 309,
+ CRY_SURSKIT = 310,
+ CRY_MASQUERAIN = 311,
+ CRY_SKITTY = 312,
+ CRY_DELCATTY = 313,
+ CRY_GULPIN = 314,
+ CRY_SWALOT = 315,
+ CRY_NUMEL = 316,
+ CRY_CAMERUPT = 317,
+ CRY_BARBOACH = 318,
+ CRY_WHISCASH = 319,
+ CRY_CORPHISH = 320,
+ CRY_CRAWDAUNT = 321,
+ CRY_SPOINK = 322,
+ CRY_GRUMPIG = 323,
+ CRY_TRAPINCH = 324,
+ CRY_VIBRAVA = 325,
+ CRY_FLYGON = 326,
+ CRY_CACNEA = 327,
+ CRY_CACTURNE = 328,
+ CRY_BALTOY = 329,
+ CRY_CLAYDOL = 330,
+ CRY_LUNATONE = 331,
+ CRY_SOLROCK = 332,
+ CRY_FEEBAS = 333,
+ CRY_MILOTIC = 334,
+ CRY_ABSOL = 335,
+ CRY_MEDITITE = 336,
+ CRY_MEDICHAM = 337,
+ CRY_SPHEAL = 338,
+ CRY_SEALEO = 339,
+ CRY_WALREIN = 340,
+ CRY_CLAMPERL = 341,
+ CRY_HUNTAIL = 342,
+ CRY_GOREBYSS = 343,
+ CRY_LILEEP = 344,
+ CRY_CRADILY = 345,
+ CRY_ANORITH = 346,
+ CRY_ARMALDO = 347,
+ CRY_BELDUM = 348,
+ CRY_METANG = 349,
+ CRY_METAGROSS = 350,
+ CRY_BAGON = 351,
+ CRY_SHELGON = 352,
+ CRY_REGIROCK = 353,
+ CRY_REGICE = 354,
+ CRY_REGISTEEL = 355,
+ CRY_CASTFORM = 356,
+ CRY_VOLBEAT = 357,
+ CRY_ILLUMISE = 358,
+ CRY_POOCHYENA = 359,
+ CRY_MIGHTYENA = 360,
+ CRY_DUSCLOPS = 361,
+ CRY_SABLEYE = 362,
+ CRY_MAWILE = 363,
+ CRY_ARON = 364,
+ CRY_LAIRON = 365,
+ CRY_AGGRON = 366,
+ CRY_RELICANTH = 367,
+ CRY_LUVDISC = 368,
+ CRY_GROUDON = 369,
+ CRY_KYOGRE = 370,
+ CRY_RAYQUAZA = 371,
+ CRY_SALAMENCE = 372,
+ CRY_BRELOOM = 373,
+ CRY_SHROOMISH = 374,
+ CRY_LINOONE = 375,
+ CRY_TROPIUS = 376,
+ CRY_WAILMER = 377,
+ CRY_ZIGZAGOON = 378,
+ CRY_EXPLOUD = 379,
+ CRY_LOUDRED = 380,
+ CRY_WAILORD = 381,
+ CRY_WHISMUR = 382,
+ CRY_SNORUNT = 383,
+ CRY_LATIOS = 384,
+ CRY_JIRACHI = 385,
+ CRY_DEOXYS = 386,
+ CRY_CHIMECHO = 387,
+};
+
+#endif
diff --git a/include/constants/item_effects.h b/include/constants/item_effects.h
new file mode 100644
index 000000000..a5bb77035
--- /dev/null
+++ b/include/constants/item_effects.h
@@ -0,0 +1,79 @@
+#ifndef GUARD_CONSTANTS_ITEM_EFFECTS_H
+#define GUARD_CONSTANTS_ITEM_EFFECTS_H
+
+// field 0 masks
+#define ITEM0_X_ATTACK 0x0F
+#define ITEM0_HIGH_CRIT 0x30 // For Dire Hit, works the same way as move Focus Energy.
+#define ITEM0_SACRED_ASH 0x40
+#define ITEM0_INFATUATION 0x80
+
+// field 1 masks
+#define ITEM1_X_SPEED 0x0F
+#define ITEM1_X_DEFEND 0xF0
+
+// field 2 masks
+#define ITEM2_X_SPATK 0x0F
+#define ITEM2_X_ACCURACY 0xF0
+
+// field 3 masks
+#define ITEM3_CONFUSION 0x1
+#define ITEM3_PARALYSIS 0x2
+#define ITEM3_FREEZE 0x4
+#define ITEM3_BURN 0x8
+#define ITEM3_POISON 0x10
+#define ITEM3_SLEEP 0x20
+#define ITEM3_LEVEL_UP 0x40
+#define ITEM3_MIST 0x80 // For Guard Specs, works the same way as move Mist.
+
+#define ITEM3_STATUS_ALL (ITEM3_CONFUSION | ITEM3_PARALYSIS | ITEM3_FREEZE | ITEM3_BURN | ITEM3_POISON | ITEM3_SLEEP)
+
+// field 4 masks
+#define ITEM4_EV_HP 0x1
+#define ITEM4_EV_ATK 0x2
+#define ITEM4_HEAL_HP 0x4
+#define ITEM4_HEAL_PP_ALL 0x8
+#define ITEM4_HEAL_PP_ONE 0x10
+#define ITEM4_PP_UP 0x20
+#define ITEM4_REVIVE 0x40
+#define ITEM4_EVO_STONE 0x80
+
+// field 5 masks
+#define ITEM5_EV_DEF 0x1
+#define ITEM5_EV_SPEED 0x2
+#define ITEM5_EV_SPDEF 0x4
+#define ITEM5_EV_SPATK 0x8
+#define ITEM5_PP_MAX 0x10
+#define ITEM5_FRIENDSHIP_LOW 0x20
+#define ITEM5_FRIENDSHIP_MID 0x40
+#define ITEM5_FRIENDSHIP_HIGH 0x80
+
+#define ITEM5_FRIENDSHIP_ALL (ITEM5_FRIENDSHIP_LOW | ITEM5_FRIENDSHIP_MID | ITEM5_FRIENDSHIP_HIGH)
+
+// fields 6 and onwards are item-specific arguments
+
+// Used for GetItemEffectType.
+#define ITEM_EFFECT_X_ITEM 0
+#define ITEM_EFFECT_RAISE_LEVEL 1
+#define ITEM_EFFECT_HEAL_HP 2
+#define ITEM_EFFECT_CURE_POISON 3
+#define ITEM_EFFECT_CURE_SLEEP 4
+#define ITEM_EFFECT_CURE_BURN 5
+#define ITEM_EFFECT_CURE_FREEZE 6
+#define ITEM_EFFECT_CURE_PARALYSIS 7
+#define ITEM_EFFECT_CURE_CONFUSION 8
+#define ITEM_EFFECT_CURE_INFATUATION 9
+#define ITEM_EFFECT_SACRED_ASH 10
+#define ITEM_EFFECT_CURE_ALL_STATUS 11
+#define ITEM_EFFECT_ATK_EV 12
+#define ITEM_EFFECT_HP_EV 13
+#define ITEM_EFFECT_SPATK_EV 14
+#define ITEM_EFFECT_SPDEF_EV 15
+#define ITEM_EFFECT_SPEED_EV 16
+#define ITEM_EFFECT_DEF_EV 17
+#define ITEM_EFFECT_EVO_STONE 18
+#define ITEM_EFFECT_PP_UP 19
+#define ITEM_EFFECT_PP_MAX 20
+#define ITEM_EFFECT_HEAL_PP 21
+#define ITEM_EFFECT_NONE 22
+
+#endif // GUARD_CONSTANTS_ITEM_EFFECTS_H
diff --git a/include/constants/items.h b/include/constants/items.h
index 64fed0e4c..8f3e82c90 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -351,6 +351,65 @@
#define ITEM_15B 347
#define ITEM_15C 348
+#define ITEM_TM01_FOCUS_PUNCH ITEM_TM01
+#define ITEM_TM02_DRAGON_CLAW ITEM_TM02
+#define ITEM_TM03_WATER_PULSE ITEM_TM03
+#define ITEM_TM04_CALM_MIND ITEM_TM04
+#define ITEM_TM05_ROAR ITEM_TM05
+#define ITEM_TM06_TOXIC ITEM_TM06
+#define ITEM_TM07_HAIL ITEM_TM07
+#define ITEM_TM08_BULK_UP ITEM_TM08
+#define ITEM_TM09_BULLET_SEED ITEM_TM09
+#define ITEM_TM10_HIDDEN_POWER ITEM_TM10
+#define ITEM_TM11_SUNNY_DAY ITEM_TM11
+#define ITEM_TM12_TAUNT ITEM_TM12
+#define ITEM_TM13_ICE_BEAM ITEM_TM13
+#define ITEM_TM14_BLIZZARD ITEM_TM14
+#define ITEM_TM15_HYPER_BEAM ITEM_TM15
+#define ITEM_TM16_LIGHT_SCREEN ITEM_TM16
+#define ITEM_TM17_PROTECT ITEM_TM17
+#define ITEM_TM18_RAIN_DANCE ITEM_TM18
+#define ITEM_TM19_GIGA_DRAIN ITEM_TM19
+#define ITEM_TM20_SAFEGUARD ITEM_TM20
+#define ITEM_TM21_FRUSTRATION ITEM_TM21
+#define ITEM_TM22_SOLARBEAM ITEM_TM22
+#define ITEM_TM23_IRON_TAIL ITEM_TM23
+#define ITEM_TM24_THUNDERBOLT ITEM_TM24
+#define ITEM_TM25_THUNDER ITEM_TM25
+#define ITEM_TM26_EARTHQUAKE ITEM_TM26
+#define ITEM_TM27_RETURN ITEM_TM27
+#define ITEM_TM28_DIG ITEM_TM28
+#define ITEM_TM29_PSYCHIC ITEM_TM29
+#define ITEM_TM30_SHADOW_BALL ITEM_TM30
+#define ITEM_TM31_BRICK_BREAK ITEM_TM31
+#define ITEM_TM32_DOUBLE_TEAM ITEM_TM32
+#define ITEM_TM33_REFLECT ITEM_TM33
+#define ITEM_TM34_SHOCK_WAVE ITEM_TM34
+#define ITEM_TM35_FLAMETHROWER ITEM_TM35
+#define ITEM_TM36_SLUDGE_BOMB ITEM_TM36
+#define ITEM_TM37_SANDSTORM ITEM_TM37
+#define ITEM_TM38_FIRE_BLAST ITEM_TM38
+#define ITEM_TM39_ROCK_TOMB ITEM_TM39
+#define ITEM_TM40_AERIAL_ACE ITEM_TM40
+#define ITEM_TM41_TORMENT ITEM_TM41
+#define ITEM_TM42_FACADE ITEM_TM42
+#define ITEM_TM43_SECRET_POWER ITEM_TM43
+#define ITEM_TM44_REST ITEM_TM44
+#define ITEM_TM45_ATTRACT ITEM_TM45
+#define ITEM_TM46_THIEF ITEM_TM46
+#define ITEM_TM47_STEEL_WING ITEM_TM47
+#define ITEM_TM48_SKILL_SWAP ITEM_TM48
+#define ITEM_TM49_SNATCH ITEM_TM49
+#define ITEM_TM50_OVERHEAT ITEM_TM50
+#define ITEM_HM01_CUT ITEM_HM01
+#define ITEM_HM02_FLY ITEM_HM02
+#define ITEM_HM03_SURF ITEM_HM03
+#define ITEM_HM04_STRENGTH ITEM_HM04
+#define ITEM_HM05_FLASH ITEM_HM05
+#define ITEM_HM06_ROCK_SMASH ITEM_HM06
+#define ITEM_HM07_WATERFALL ITEM_HM07
+#define ITEM_HM08_DIVE ITEM_HM08
+
// FireRed/LeafGreen
#define ITEM_OAKS_PARCEL 349
#define ITEM_POKE_FLUTE 350
@@ -379,6 +438,8 @@
#define ITEM_RUBY 373
#define ITEM_SAPPHIRE 374
+#define ITEM_N_A 375
+
// Emerald
#define ITEM_MAGMA_EMBLEM 375
#define ITEM_OLD_SEA_MAP 376
@@ -393,11 +454,4 @@
// Check if the item is one that can be used on a Pokemon.
#define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
-// POCKETS
-#define POCKET_ITEMS 1
-#define POCKET_KEY_ITEMS 2
-#define POCKET_POKE_BALLS 3
-#define POCKET_TM_CASE 4
-#define POCKET_BERRY_POUCH 5
-
#endif // GUARD_CONSTANTS_ITEMS_H
diff --git a/include/constants/moves.h b/include/constants/moves.h
index f3a3acb90..62eacc5f1 100644
--- a/include/constants/moves.h
+++ b/include/constants/moves.h
@@ -359,4 +359,6 @@
#define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST
+#define MOVES_COUNT 355
+
#endif // GUARD_CONSTANTS_MOVES_H
diff --git a/include/constants/songs.h b/include/constants/songs.h
index b83b84f26..193a57756 100644
--- a/include/constants/songs.h
+++ b/include/constants/songs.h
@@ -251,6 +251,10 @@
#define SE_W114 246
#define SE_W063B 247
#define SE_CASHIER 248
+#define SE_SHIP_HORN 249
+#define SE_HELP_OPEN 250
+#define SE_HELP_CLOSE 251
+#define SE_HELP_PAGE 252
#define MUS_ME_ASA 256
#define MUS_FANFA1 257
diff --git a/include/constants/species.h b/include/constants/species.h
index 9cb239799..bedb1282d 100644
--- a/include/constants/species.h
+++ b/include/constants/species.h
@@ -450,4 +450,838 @@
#define NUM_SPECIES SPECIES_EGG
+// National Dex Index Defines
+
+#define NATIONAL_DEX_NONE 0
+#define NATIONAL_DEX_BULBASAUR 1
+#define NATIONAL_DEX_IVYSAUR 2
+#define NATIONAL_DEX_VENUSAUR 3
+#define NATIONAL_DEX_CHARMANDER 4
+#define NATIONAL_DEX_CHARMELEON 5
+#define NATIONAL_DEX_CHARIZARD 6
+#define NATIONAL_DEX_SQUIRTLE 7
+#define NATIONAL_DEX_WARTORTLE 8
+#define NATIONAL_DEX_BLASTOISE 9
+#define NATIONAL_DEX_CATERPIE 10
+#define NATIONAL_DEX_METAPOD 11
+#define NATIONAL_DEX_BUTTERFREE 12
+#define NATIONAL_DEX_WEEDLE 13
+#define NATIONAL_DEX_KAKUNA 14
+#define NATIONAL_DEX_BEEDRILL 15
+#define NATIONAL_DEX_PIDGEY 16
+#define NATIONAL_DEX_PIDGEOTTO 17
+#define NATIONAL_DEX_PIDGEOT 18
+#define NATIONAL_DEX_RATTATA 19
+#define NATIONAL_DEX_RATICATE 20
+#define NATIONAL_DEX_SPEAROW 21
+#define NATIONAL_DEX_FEAROW 22
+#define NATIONAL_DEX_EKANS 23
+#define NATIONAL_DEX_ARBOK 24
+#define NATIONAL_DEX_PIKACHU 25
+#define NATIONAL_DEX_RAICHU 26
+#define NATIONAL_DEX_SANDSHREW 27
+#define NATIONAL_DEX_SANDSLASH 28
+#define NATIONAL_DEX_NIDORAN_F 29
+#define NATIONAL_DEX_NIDORINA 30
+#define NATIONAL_DEX_NIDOQUEEN 31
+#define NATIONAL_DEX_NIDORAN_M 32
+#define NATIONAL_DEX_NIDORINO 33
+#define NATIONAL_DEX_NIDOKING 34
+#define NATIONAL_DEX_CLEFAIRY 35
+#define NATIONAL_DEX_CLEFABLE 36
+#define NATIONAL_DEX_VULPIX 37
+#define NATIONAL_DEX_NINETALES 38
+#define NATIONAL_DEX_JIGGLYPUFF 39
+#define NATIONAL_DEX_WIGGLYTUFF 40
+#define NATIONAL_DEX_ZUBAT 41
+#define NATIONAL_DEX_GOLBAT 42
+#define NATIONAL_DEX_ODDISH 43
+#define NATIONAL_DEX_GLOOM 44
+#define NATIONAL_DEX_VILEPLUME 45
+#define NATIONAL_DEX_PARAS 46
+#define NATIONAL_DEX_PARASECT 47
+#define NATIONAL_DEX_VENONAT 48
+#define NATIONAL_DEX_VENOMOTH 49
+#define NATIONAL_DEX_DIGLETT 50
+#define NATIONAL_DEX_DUGTRIO 51
+#define NATIONAL_DEX_MEOWTH 52
+#define NATIONAL_DEX_PERSIAN 53
+#define NATIONAL_DEX_PSYDUCK 54
+#define NATIONAL_DEX_GOLDUCK 55
+#define NATIONAL_DEX_MANKEY 56
+#define NATIONAL_DEX_PRIMEAPE 57
+#define NATIONAL_DEX_GROWLITHE 58
+#define NATIONAL_DEX_ARCANINE 59
+#define NATIONAL_DEX_POLIWAG 60
+#define NATIONAL_DEX_POLIWHIRL 61
+#define NATIONAL_DEX_POLIWRATH 62
+#define NATIONAL_DEX_ABRA 63
+#define NATIONAL_DEX_KADABRA 64
+#define NATIONAL_DEX_ALAKAZAM 65
+#define NATIONAL_DEX_MACHOP 66
+#define NATIONAL_DEX_MACHOKE 67
+#define NATIONAL_DEX_MACHAMP 68
+#define NATIONAL_DEX_BELLSPROUT 69
+#define NATIONAL_DEX_WEEPINBELL 70
+#define NATIONAL_DEX_VICTREEBEL 71
+#define NATIONAL_DEX_TENTACOOL 72
+#define NATIONAL_DEX_TENTACRUEL 73
+#define NATIONAL_DEX_GEODUDE 74
+#define NATIONAL_DEX_GRAVELER 75
+#define NATIONAL_DEX_GOLEM 76
+#define NATIONAL_DEX_PONYTA 77
+#define NATIONAL_DEX_RAPIDASH 78
+#define NATIONAL_DEX_SLOWPOKE 79
+#define NATIONAL_DEX_SLOWBRO 80
+#define NATIONAL_DEX_MAGNEMITE 81
+#define NATIONAL_DEX_MAGNETON 82
+#define NATIONAL_DEX_FARFETCHD 83
+#define NATIONAL_DEX_DODUO 84
+#define NATIONAL_DEX_DODRIO 85
+#define NATIONAL_DEX_SEEL 86
+#define NATIONAL_DEX_DEWGONG 87
+#define NATIONAL_DEX_GRIMER 88
+#define NATIONAL_DEX_MUK 89
+#define NATIONAL_DEX_SHELLDER 90
+#define NATIONAL_DEX_CLOYSTER 91
+#define NATIONAL_DEX_GASTLY 92
+#define NATIONAL_DEX_HAUNTER 93
+#define NATIONAL_DEX_GENGAR 94
+#define NATIONAL_DEX_ONIX 95
+#define NATIONAL_DEX_DROWZEE 96
+#define NATIONAL_DEX_HYPNO 97
+#define NATIONAL_DEX_KRABBY 98
+#define NATIONAL_DEX_KINGLER 99
+#define NATIONAL_DEX_VOLTORB 100
+#define NATIONAL_DEX_ELECTRODE 101
+#define NATIONAL_DEX_EXEGGCUTE 102
+#define NATIONAL_DEX_EXEGGUTOR 103
+#define NATIONAL_DEX_CUBONE 104
+#define NATIONAL_DEX_MAROWAK 105
+#define NATIONAL_DEX_HITMONLEE 106
+#define NATIONAL_DEX_HITMONCHAN 107
+#define NATIONAL_DEX_LICKITUNG 108
+#define NATIONAL_DEX_KOFFING 109
+#define NATIONAL_DEX_WEEZING 110
+#define NATIONAL_DEX_RHYHORN 111
+#define NATIONAL_DEX_RHYDON 112
+#define NATIONAL_DEX_CHANSEY 113
+#define NATIONAL_DEX_TANGELA 114
+#define NATIONAL_DEX_KANGASKHAN 115
+#define NATIONAL_DEX_HORSEA 116
+#define NATIONAL_DEX_SEADRA 117
+#define NATIONAL_DEX_GOLDEEN 118
+#define NATIONAL_DEX_SEAKING 119
+#define NATIONAL_DEX_STARYU 120
+#define NATIONAL_DEX_STARMIE 121
+#define NATIONAL_DEX_MR_MIME 122
+#define NATIONAL_DEX_SCYTHER 123
+#define NATIONAL_DEX_JYNX 124
+#define NATIONAL_DEX_ELECTABUZZ 125
+#define NATIONAL_DEX_MAGMAR 126
+#define NATIONAL_DEX_PINSIR 127
+#define NATIONAL_DEX_TAUROS 128
+#define NATIONAL_DEX_MAGIKARP 129
+#define NATIONAL_DEX_GYARADOS 130
+#define NATIONAL_DEX_LAPRAS 131
+#define NATIONAL_DEX_DITTO 132
+#define NATIONAL_DEX_EEVEE 133
+#define NATIONAL_DEX_VAPOREON 134
+#define NATIONAL_DEX_JOLTEON 135
+#define NATIONAL_DEX_FLAREON 136
+#define NATIONAL_DEX_PORYGON 137
+#define NATIONAL_DEX_OMANYTE 138
+#define NATIONAL_DEX_OMASTAR 139
+#define NATIONAL_DEX_KABUTO 140
+#define NATIONAL_DEX_KABUTOPS 141
+#define NATIONAL_DEX_AERODACTYL 142
+#define NATIONAL_DEX_SNORLAX 143
+#define NATIONAL_DEX_ARTICUNO 144
+#define NATIONAL_DEX_ZAPDOS 145
+#define NATIONAL_DEX_MOLTRES 146
+#define NATIONAL_DEX_DRATINI 147
+#define NATIONAL_DEX_DRAGONAIR 148
+#define NATIONAL_DEX_DRAGONITE 149
+#define NATIONAL_DEX_MEWTWO 150
+#define NATIONAL_DEX_MEW 151
+#define NATIONAL_DEX_CHIKORITA 152
+#define NATIONAL_DEX_BAYLEEF 153
+#define NATIONAL_DEX_MEGANIUM 154
+#define NATIONAL_DEX_CYNDAQUIL 155
+#define NATIONAL_DEX_QUILAVA 156
+#define NATIONAL_DEX_TYPHLOSION 157
+#define NATIONAL_DEX_TOTODILE 158
+#define NATIONAL_DEX_CROCONAW 159
+#define NATIONAL_DEX_FERALIGATR 160
+#define NATIONAL_DEX_SENTRET 161
+#define NATIONAL_DEX_FURRET 162
+#define NATIONAL_DEX_HOOTHOOT 163
+#define NATIONAL_DEX_NOCTOWL 164
+#define NATIONAL_DEX_LEDYBA 165
+#define NATIONAL_DEX_LEDIAN 166
+#define NATIONAL_DEX_SPINARAK 167
+#define NATIONAL_DEX_ARIADOS 168
+#define NATIONAL_DEX_CROBAT 169
+#define NATIONAL_DEX_CHINCHOU 170
+#define NATIONAL_DEX_LANTURN 171
+#define NATIONAL_DEX_PICHU 172
+#define NATIONAL_DEX_CLEFFA 173
+#define NATIONAL_DEX_IGGLYBUFF 174
+#define NATIONAL_DEX_TOGEPI 175
+#define NATIONAL_DEX_TOGETIC 176
+#define NATIONAL_DEX_NATU 177
+#define NATIONAL_DEX_XATU 178
+#define NATIONAL_DEX_MAREEP 179
+#define NATIONAL_DEX_FLAAFFY 180
+#define NATIONAL_DEX_AMPHAROS 181
+#define NATIONAL_DEX_BELLOSSOM 182
+#define NATIONAL_DEX_MARILL 183
+#define NATIONAL_DEX_AZUMARILL 184
+#define NATIONAL_DEX_SUDOWOODO 185
+#define NATIONAL_DEX_POLITOED 186
+#define NATIONAL_DEX_HOPPIP 187
+#define NATIONAL_DEX_SKIPLOOM 188
+#define NATIONAL_DEX_JUMPLUFF 189
+#define NATIONAL_DEX_AIPOM 190
+#define NATIONAL_DEX_SUNKERN 191
+#define NATIONAL_DEX_SUNFLORA 192
+#define NATIONAL_DEX_YANMA 193
+#define NATIONAL_DEX_WOOPER 194
+#define NATIONAL_DEX_QUAGSIRE 195
+#define NATIONAL_DEX_ESPEON 196
+#define NATIONAL_DEX_UMBREON 197
+#define NATIONAL_DEX_MURKROW 198
+#define NATIONAL_DEX_SLOWKING 199
+#define NATIONAL_DEX_MISDREAVUS 200
+#define NATIONAL_DEX_UNOWN 201
+#define NATIONAL_DEX_WOBBUFFET 202
+#define NATIONAL_DEX_GIRAFARIG 203
+#define NATIONAL_DEX_PINECO 204
+#define NATIONAL_DEX_FORRETRESS 205
+#define NATIONAL_DEX_DUNSPARCE 206
+#define NATIONAL_DEX_GLIGAR 207
+#define NATIONAL_DEX_STEELIX 208
+#define NATIONAL_DEX_SNUBBULL 209
+#define NATIONAL_DEX_GRANBULL 210
+#define NATIONAL_DEX_QWILFISH 211
+#define NATIONAL_DEX_SCIZOR 212
+#define NATIONAL_DEX_SHUCKLE 213
+#define NATIONAL_DEX_HERACROSS 214
+#define NATIONAL_DEX_SNEASEL 215
+#define NATIONAL_DEX_TEDDIURSA 216
+#define NATIONAL_DEX_URSARING 217
+#define NATIONAL_DEX_SLUGMA 218
+#define NATIONAL_DEX_MAGCARGO 219
+#define NATIONAL_DEX_SWINUB 220
+#define NATIONAL_DEX_PILOSWINE 221
+#define NATIONAL_DEX_CORSOLA 222
+#define NATIONAL_DEX_REMORAID 223
+#define NATIONAL_DEX_OCTILLERY 224
+#define NATIONAL_DEX_DELIBIRD 225
+#define NATIONAL_DEX_MANTINE 226
+#define NATIONAL_DEX_SKARMORY 227
+#define NATIONAL_DEX_HOUNDOUR 228
+#define NATIONAL_DEX_HOUNDOOM 229
+#define NATIONAL_DEX_KINGDRA 230
+#define NATIONAL_DEX_PHANPY 231
+#define NATIONAL_DEX_DONPHAN 232
+#define NATIONAL_DEX_PORYGON2 233
+#define NATIONAL_DEX_STANTLER 234
+#define NATIONAL_DEX_SMEARGLE 235
+#define NATIONAL_DEX_TYROGUE 236
+#define NATIONAL_DEX_HITMONTOP 237
+#define NATIONAL_DEX_SMOOCHUM 238
+#define NATIONAL_DEX_ELEKID 239
+#define NATIONAL_DEX_MAGBY 240
+#define NATIONAL_DEX_MILTANK 241
+#define NATIONAL_DEX_BLISSEY 242
+#define NATIONAL_DEX_RAIKOU 243
+#define NATIONAL_DEX_ENTEI 244
+#define NATIONAL_DEX_SUICUNE 245
+#define NATIONAL_DEX_LARVITAR 246
+#define NATIONAL_DEX_PUPITAR 247
+#define NATIONAL_DEX_TYRANITAR 248
+#define NATIONAL_DEX_LUGIA 249
+#define NATIONAL_DEX_HO_OH 250
+#define NATIONAL_DEX_CELEBI 251
+
+#define NATIONAL_DEX_OLD_UNOWN_B 387
+#define NATIONAL_DEX_OLD_UNOWN_C 388
+#define NATIONAL_DEX_OLD_UNOWN_D 389
+#define NATIONAL_DEX_OLD_UNOWN_E 390
+#define NATIONAL_DEX_OLD_UNOWN_F 391
+#define NATIONAL_DEX_OLD_UNOWN_G 392
+#define NATIONAL_DEX_OLD_UNOWN_H 393
+#define NATIONAL_DEX_OLD_UNOWN_I 394
+#define NATIONAL_DEX_OLD_UNOWN_J 395
+#define NATIONAL_DEX_OLD_UNOWN_K 396
+#define NATIONAL_DEX_OLD_UNOWN_L 397
+#define NATIONAL_DEX_OLD_UNOWN_M 398
+#define NATIONAL_DEX_OLD_UNOWN_N 399
+#define NATIONAL_DEX_OLD_UNOWN_O 400
+#define NATIONAL_DEX_OLD_UNOWN_P 401
+#define NATIONAL_DEX_OLD_UNOWN_Q 402
+#define NATIONAL_DEX_OLD_UNOWN_R 403
+#define NATIONAL_DEX_OLD_UNOWN_S 404
+#define NATIONAL_DEX_OLD_UNOWN_T 405
+#define NATIONAL_DEX_OLD_UNOWN_U 406
+#define NATIONAL_DEX_OLD_UNOWN_V 407
+#define NATIONAL_DEX_OLD_UNOWN_W 408
+#define NATIONAL_DEX_OLD_UNOWN_X 409
+#define NATIONAL_DEX_OLD_UNOWN_Y 410
+#define NATIONAL_DEX_OLD_UNOWN_Z 411
+
+#define NATIONAL_DEX_TREECKO 252
+#define NATIONAL_DEX_GROVYLE 253
+#define NATIONAL_DEX_SCEPTILE 254
+#define NATIONAL_DEX_TORCHIC 255
+#define NATIONAL_DEX_COMBUSKEN 256
+#define NATIONAL_DEX_BLAZIKEN 257
+#define NATIONAL_DEX_MUDKIP 258
+#define NATIONAL_DEX_MARSHTOMP 259
+#define NATIONAL_DEX_SWAMPERT 260
+#define NATIONAL_DEX_POOCHYENA 261
+#define NATIONAL_DEX_MIGHTYENA 262
+#define NATIONAL_DEX_ZIGZAGOON 263
+#define NATIONAL_DEX_LINOONE 264
+#define NATIONAL_DEX_WURMPLE 265
+#define NATIONAL_DEX_SILCOON 266
+#define NATIONAL_DEX_BEAUTIFLY 267
+#define NATIONAL_DEX_CASCOON 268
+#define NATIONAL_DEX_DUSTOX 269
+#define NATIONAL_DEX_LOTAD 270
+#define NATIONAL_DEX_LOMBRE 271
+#define NATIONAL_DEX_LUDICOLO 272
+#define NATIONAL_DEX_SEEDOT 273
+#define NATIONAL_DEX_NUZLEAF 274
+#define NATIONAL_DEX_SHIFTRY 275
+#define NATIONAL_DEX_NINCADA 290
+#define NATIONAL_DEX_NINJASK 291
+#define NATIONAL_DEX_SHEDINJA 292
+#define NATIONAL_DEX_TAILLOW 276
+#define NATIONAL_DEX_SWELLOW 277
+#define NATIONAL_DEX_SHROOMISH 285
+#define NATIONAL_DEX_BRELOOM 286
+#define NATIONAL_DEX_SPINDA 327
+#define NATIONAL_DEX_WINGULL 278
+#define NATIONAL_DEX_PELIPPER 279
+#define NATIONAL_DEX_SURSKIT 283
+#define NATIONAL_DEX_MASQUERAIN 284
+#define NATIONAL_DEX_WAILMER 320
+#define NATIONAL_DEX_WAILORD 321
+#define NATIONAL_DEX_SKITTY 300
+#define NATIONAL_DEX_DELCATTY 301
+#define NATIONAL_DEX_KECLEON 352
+#define NATIONAL_DEX_BALTOY 343
+#define NATIONAL_DEX_CLAYDOL 344
+#define NATIONAL_DEX_NOSEPASS 299
+#define NATIONAL_DEX_TORKOAL 324
+#define NATIONAL_DEX_SABLEYE 302
+#define NATIONAL_DEX_BARBOACH 339
+#define NATIONAL_DEX_WHISCASH 340
+#define NATIONAL_DEX_LUVDISC 370
+#define NATIONAL_DEX_CORPHISH 341
+#define NATIONAL_DEX_CRAWDAUNT 342
+#define NATIONAL_DEX_FEEBAS 349
+#define NATIONAL_DEX_MILOTIC 350
+#define NATIONAL_DEX_CARVANHA 318
+#define NATIONAL_DEX_SHARPEDO 319
+#define NATIONAL_DEX_TRAPINCH 328
+#define NATIONAL_DEX_VIBRAVA 329
+#define NATIONAL_DEX_FLYGON 330
+#define NATIONAL_DEX_MAKUHITA 296
+#define NATIONAL_DEX_HARIYAMA 297
+#define NATIONAL_DEX_ELECTRIKE 309
+#define NATIONAL_DEX_MANECTRIC 310
+#define NATIONAL_DEX_NUMEL 322
+#define NATIONAL_DEX_CAMERUPT 323
+#define NATIONAL_DEX_SPHEAL 363
+#define NATIONAL_DEX_SEALEO 364
+#define NATIONAL_DEX_WALREIN 365
+#define NATIONAL_DEX_CACNEA 331
+#define NATIONAL_DEX_CACTURNE 332
+#define NATIONAL_DEX_SNORUNT 361
+#define NATIONAL_DEX_GLALIE 362
+#define NATIONAL_DEX_LUNATONE 337
+#define NATIONAL_DEX_SOLROCK 338
+#define NATIONAL_DEX_AZURILL 298
+#define NATIONAL_DEX_SPOINK 325
+#define NATIONAL_DEX_GRUMPIG 326
+#define NATIONAL_DEX_PLUSLE 311
+#define NATIONAL_DEX_MINUN 312
+#define NATIONAL_DEX_MAWILE 303
+#define NATIONAL_DEX_MEDITITE 307
+#define NATIONAL_DEX_MEDICHAM 308
+#define NATIONAL_DEX_SWABLU 333
+#define NATIONAL_DEX_ALTARIA 334
+#define NATIONAL_DEX_WYNAUT 360
+#define NATIONAL_DEX_DUSKULL 355
+#define NATIONAL_DEX_DUSCLOPS 356
+#define NATIONAL_DEX_ROSELIA 315
+#define NATIONAL_DEX_SLAKOTH 287
+#define NATIONAL_DEX_VIGOROTH 288
+#define NATIONAL_DEX_SLAKING 289
+#define NATIONAL_DEX_GULPIN 316
+#define NATIONAL_DEX_SWALOT 317
+#define NATIONAL_DEX_TROPIUS 357
+#define NATIONAL_DEX_WHISMUR 293
+#define NATIONAL_DEX_LOUDRED 294
+#define NATIONAL_DEX_EXPLOUD 295
+#define NATIONAL_DEX_CLAMPERL 366
+#define NATIONAL_DEX_HUNTAIL 367
+#define NATIONAL_DEX_GOREBYSS 368
+#define NATIONAL_DEX_ABSOL 359
+#define NATIONAL_DEX_SHUPPET 353
+#define NATIONAL_DEX_BANETTE 354
+#define NATIONAL_DEX_SEVIPER 336
+#define NATIONAL_DEX_ZANGOOSE 335
+#define NATIONAL_DEX_RELICANTH 369
+#define NATIONAL_DEX_ARON 304
+#define NATIONAL_DEX_LAIRON 305
+#define NATIONAL_DEX_AGGRON 306
+#define NATIONAL_DEX_CASTFORM 351
+#define NATIONAL_DEX_VOLBEAT 313
+#define NATIONAL_DEX_ILLUMISE 314
+#define NATIONAL_DEX_LILEEP 345
+#define NATIONAL_DEX_CRADILY 346
+#define NATIONAL_DEX_ANORITH 347
+#define NATIONAL_DEX_ARMALDO 348
+#define NATIONAL_DEX_RALTS 280
+#define NATIONAL_DEX_KIRLIA 281
+#define NATIONAL_DEX_GARDEVOIR 282
+#define NATIONAL_DEX_BAGON 371
+#define NATIONAL_DEX_SHELGON 372
+#define NATIONAL_DEX_SALAMENCE 373
+#define NATIONAL_DEX_BELDUM 374
+#define NATIONAL_DEX_METANG 375
+#define NATIONAL_DEX_METAGROSS 376
+#define NATIONAL_DEX_REGIROCK 377
+#define NATIONAL_DEX_REGICE 378
+#define NATIONAL_DEX_REGISTEEL 379
+#define NATIONAL_DEX_KYOGRE 382
+#define NATIONAL_DEX_GROUDON 383
+#define NATIONAL_DEX_RAYQUAZA 384
+#define NATIONAL_DEX_LATIAS 380
+#define NATIONAL_DEX_LATIOS 381
+#define NATIONAL_DEX_JIRACHI 385
+#define NATIONAL_DEX_DEOXYS 386
+#define NATIONAL_DEX_CHIMECHO 358
+
+// Hoenn Dex Index Defines
+
+#define HOENN_DEX_NONE 0
+#define HOENN_DEX_BULBASAUR 203
+#define HOENN_DEX_IVYSAUR 204
+#define HOENN_DEX_VENUSAUR 205
+#define HOENN_DEX_CHARMANDER 206
+#define HOENN_DEX_CHARMELEON 207
+#define HOENN_DEX_CHARIZARD 208
+#define HOENN_DEX_SQUIRTLE 209
+#define HOENN_DEX_WARTORTLE 210
+#define HOENN_DEX_BLASTOISE 211
+#define HOENN_DEX_CATERPIE 212
+#define HOENN_DEX_METAPOD 213
+#define HOENN_DEX_BUTTERFREE 214
+#define HOENN_DEX_WEEDLE 215
+#define HOENN_DEX_KAKUNA 216
+#define HOENN_DEX_BEEDRILL 217
+#define HOENN_DEX_PIDGEY 218
+#define HOENN_DEX_PIDGEOTTO 219
+#define HOENN_DEX_PIDGEOT 220
+#define HOENN_DEX_RATTATA 221
+#define HOENN_DEX_RATICATE 222
+#define HOENN_DEX_SPEAROW 223
+#define HOENN_DEX_FEAROW 224
+#define HOENN_DEX_EKANS 225
+#define HOENN_DEX_ARBOK 226
+#define HOENN_DEX_PIKACHU 156
+#define HOENN_DEX_RAICHU 157
+#define HOENN_DEX_SANDSHREW 112
+#define HOENN_DEX_SANDSLASH 113
+#define HOENN_DEX_NIDORAN_F 227
+#define HOENN_DEX_NIDORINA 228
+#define HOENN_DEX_NIDOQUEEN 229
+#define HOENN_DEX_NIDORAN_M 230
+#define HOENN_DEX_NIDORINO 231
+#define HOENN_DEX_NIDOKING 232
+#define HOENN_DEX_CLEFAIRY 233
+#define HOENN_DEX_CLEFABLE 234
+#define HOENN_DEX_VULPIX 153
+#define HOENN_DEX_NINETALES 154
+#define HOENN_DEX_JIGGLYPUFF 138
+#define HOENN_DEX_WIGGLYTUFF 139
+#define HOENN_DEX_ZUBAT 63
+#define HOENN_DEX_GOLBAT 64
+#define HOENN_DEX_ODDISH 88
+#define HOENN_DEX_GLOOM 89
+#define HOENN_DEX_VILEPLUME 90
+#define HOENN_DEX_PARAS 235
+#define HOENN_DEX_PARASECT 236
+#define HOENN_DEX_VENONAT 237
+#define HOENN_DEX_VENOMOTH 238
+#define HOENN_DEX_DIGLETT 239
+#define HOENN_DEX_DUGTRIO 240
+#define HOENN_DEX_MEOWTH 241
+#define HOENN_DEX_PERSIAN 242
+#define HOENN_DEX_PSYDUCK 158
+#define HOENN_DEX_GOLDUCK 159
+#define HOENN_DEX_MANKEY 243
+#define HOENN_DEX_PRIMEAPE 244
+#define HOENN_DEX_GROWLITHE 245
+#define HOENN_DEX_ARCANINE 246
+#define HOENN_DEX_POLIWAG 247
+#define HOENN_DEX_POLIWHIRL 248
+#define HOENN_DEX_POLIWRATH 249
+#define HOENN_DEX_ABRA 39
+#define HOENN_DEX_KADABRA 40
+#define HOENN_DEX_ALAKAZAM 41
+#define HOENN_DEX_MACHOP 73
+#define HOENN_DEX_MACHOKE 74
+#define HOENN_DEX_MACHAMP 75
+#define HOENN_DEX_BELLSPROUT 250
+#define HOENN_DEX_WEEPINBELL 251
+#define HOENN_DEX_VICTREEBEL 252
+#define HOENN_DEX_TENTACOOL 66
+#define HOENN_DEX_TENTACRUEL 67
+#define HOENN_DEX_GEODUDE 57
+#define HOENN_DEX_GRAVELER 58
+#define HOENN_DEX_GOLEM 59
+#define HOENN_DEX_PONYTA 253
+#define HOENN_DEX_RAPIDASH 254
+#define HOENN_DEX_SLOWPOKE 255
+#define HOENN_DEX_SLOWBRO 256
+#define HOENN_DEX_MAGNEMITE 82
+#define HOENN_DEX_MAGNETON 83
+#define HOENN_DEX_FARFETCHD 257
+#define HOENN_DEX_DODUO 92
+#define HOENN_DEX_DODRIO 93
+#define HOENN_DEX_SEEL 258
+#define HOENN_DEX_DEWGONG 259
+#define HOENN_DEX_GRIMER 106
+#define HOENN_DEX_MUK 107
+#define HOENN_DEX_SHELLDER 260
+#define HOENN_DEX_CLOYSTER 261
+#define HOENN_DEX_GASTLY 262
+#define HOENN_DEX_HAUNTER 263
+#define HOENN_DEX_GENGAR 264
+#define HOENN_DEX_ONIX 265
+#define HOENN_DEX_DROWZEE 266
+#define HOENN_DEX_HYPNO 267
+#define HOENN_DEX_KRABBY 268
+#define HOENN_DEX_KINGLER 269
+#define HOENN_DEX_VOLTORB 84
+#define HOENN_DEX_ELECTRODE 85
+#define HOENN_DEX_EXEGGCUTE 270
+#define HOENN_DEX_EXEGGUTOR 271
+#define HOENN_DEX_CUBONE 272
+#define HOENN_DEX_MAROWAK 273
+#define HOENN_DEX_HITMONLEE 274
+#define HOENN_DEX_HITMONCHAN 275
+#define HOENN_DEX_LICKITUNG 276
+#define HOENN_DEX_KOFFING 108
+#define HOENN_DEX_WEEZING 109
+#define HOENN_DEX_RHYHORN 169
+#define HOENN_DEX_RHYDON 170
+#define HOENN_DEX_CHANSEY 277
+#define HOENN_DEX_TANGELA 278
+#define HOENN_DEX_KANGASKHAN 279
+#define HOENN_DEX_HORSEA 184
+#define HOENN_DEX_SEADRA 185
+#define HOENN_DEX_GOLDEEN 50
+#define HOENN_DEX_SEAKING 51
+#define HOENN_DEX_STARYU 143
+#define HOENN_DEX_STARMIE 144
+#define HOENN_DEX_MR_MIME 280
+#define HOENN_DEX_SCYTHER 281
+#define HOENN_DEX_JYNX 282
+#define HOENN_DEX_ELECTABUZZ 283
+#define HOENN_DEX_MAGMAR 284
+#define HOENN_DEX_PINSIR 167
+#define HOENN_DEX_TAUROS 285
+#define HOENN_DEX_MAGIKARP 52
+#define HOENN_DEX_GYARADOS 53
+#define HOENN_DEX_LAPRAS 286
+#define HOENN_DEX_DITTO 287
+#define HOENN_DEX_EEVEE 288
+#define HOENN_DEX_VAPOREON 289
+#define HOENN_DEX_JOLTEON 290
+#define HOENN_DEX_FLAREON 291
+#define HOENN_DEX_PORYGON 292
+#define HOENN_DEX_OMANYTE 293
+#define HOENN_DEX_OMASTAR 294
+#define HOENN_DEX_KABUTO 295
+#define HOENN_DEX_KABUTOPS 296
+#define HOENN_DEX_AERODACTYL 297
+#define HOENN_DEX_SNORLAX 298
+#define HOENN_DEX_ARTICUNO 299
+#define HOENN_DEX_ZAPDOS 300
+#define HOENN_DEX_MOLTRES 301
+#define HOENN_DEX_DRATINI 302
+#define HOENN_DEX_DRAGONAIR 303
+#define HOENN_DEX_DRAGONITE 304
+#define HOENN_DEX_MEWTWO 305
+#define HOENN_DEX_MEW 306
+#define HOENN_DEX_CHIKORITA 307
+#define HOENN_DEX_BAYLEEF 308
+#define HOENN_DEX_MEGANIUM 309
+#define HOENN_DEX_CYNDAQUIL 310
+#define HOENN_DEX_QUILAVA 311
+#define HOENN_DEX_TYPHLOSION 312
+#define HOENN_DEX_TOTODILE 313
+#define HOENN_DEX_CROCONAW 314
+#define HOENN_DEX_FERALIGATR 315
+#define HOENN_DEX_SENTRET 316
+#define HOENN_DEX_FURRET 317
+#define HOENN_DEX_HOOTHOOT 318
+#define HOENN_DEX_NOCTOWL 319
+#define HOENN_DEX_LEDYBA 320
+#define HOENN_DEX_LEDIAN 321
+#define HOENN_DEX_SPINARAK 322
+#define HOENN_DEX_ARIADOS 323
+#define HOENN_DEX_CROBAT 65
+#define HOENN_DEX_CHINCHOU 181
+#define HOENN_DEX_LANTURN 182
+#define HOENN_DEX_PICHU 155
+#define HOENN_DEX_CLEFFA 324
+#define HOENN_DEX_IGGLYBUFF 137
+#define HOENN_DEX_TOGEPI 325
+#define HOENN_DEX_TOGETIC 326
+#define HOENN_DEX_NATU 162
+#define HOENN_DEX_XATU 163
+#define HOENN_DEX_MAREEP 327
+#define HOENN_DEX_FLAAFFY 328
+#define HOENN_DEX_AMPHAROS 329
+#define HOENN_DEX_BELLOSSOM 91
+#define HOENN_DEX_MARILL 55
+#define HOENN_DEX_AZUMARILL 56
+#define HOENN_DEX_SUDOWOODO 330
+#define HOENN_DEX_POLITOED 331
+#define HOENN_DEX_HOPPIP 332
+#define HOENN_DEX_SKIPLOOM 333
+#define HOENN_DEX_JUMPLUFF 334
+#define HOENN_DEX_AIPOM 335
+#define HOENN_DEX_SUNKERN 336
+#define HOENN_DEX_SUNFLORA 337
+#define HOENN_DEX_YANMA 338
+#define HOENN_DEX_WOOPER 339
+#define HOENN_DEX_QUAGSIRE 340
+#define HOENN_DEX_ESPEON 341
+#define HOENN_DEX_UMBREON 342
+#define HOENN_DEX_MURKROW 343
+#define HOENN_DEX_SLOWKING 344
+#define HOENN_DEX_MISDREAVUS 345
+#define HOENN_DEX_UNOWN 346
+#define HOENN_DEX_WOBBUFFET 161
+#define HOENN_DEX_GIRAFARIG 164
+#define HOENN_DEX_PINECO 347
+#define HOENN_DEX_FORRETRESS 348
+#define HOENN_DEX_DUNSPARCE 349
+#define HOENN_DEX_GLIGAR 350
+#define HOENN_DEX_STEELIX 351
+#define HOENN_DEX_SNUBBULL 352
+#define HOENN_DEX_GRANBULL 353
+#define HOENN_DEX_QWILFISH 354
+#define HOENN_DEX_SCIZOR 355
+#define HOENN_DEX_SHUCKLE 356
+#define HOENN_DEX_HERACROSS 168
+#define HOENN_DEX_SNEASEL 357
+#define HOENN_DEX_TEDDIURSA 358
+#define HOENN_DEX_URSARING 359
+#define HOENN_DEX_SLUGMA 103
+#define HOENN_DEX_MAGCARGO 104
+#define HOENN_DEX_SWINUB 360
+#define HOENN_DEX_PILOSWINE 361
+#define HOENN_DEX_CORSOLA 180
+#define HOENN_DEX_REMORAID 362
+#define HOENN_DEX_OCTILLERY 363
+#define HOENN_DEX_DELIBIRD 364
+#define HOENN_DEX_MANTINE 365
+#define HOENN_DEX_SKARMORY 115
+#define HOENN_DEX_HOUNDOUR 366
+#define HOENN_DEX_HOUNDOOM 367
+#define HOENN_DEX_KINGDRA 186
+#define HOENN_DEX_PHANPY 165
+#define HOENN_DEX_DONPHAN 166
+#define HOENN_DEX_PORYGON2 368
+#define HOENN_DEX_STANTLER 369
+#define HOENN_DEX_SMEARGLE 370
+#define HOENN_DEX_TYROGUE 371
+#define HOENN_DEX_HITMONTOP 372
+#define HOENN_DEX_SMOOCHUM 373
+#define HOENN_DEX_ELEKID 374
+#define HOENN_DEX_MAGBY 375
+#define HOENN_DEX_MILTANK 376
+#define HOENN_DEX_BLISSEY 377
+#define HOENN_DEX_RAIKOU 378
+#define HOENN_DEX_ENTEI 379
+#define HOENN_DEX_SUICUNE 380
+#define HOENN_DEX_LARVITAR 381
+#define HOENN_DEX_PUPITAR 382
+#define HOENN_DEX_TYRANITAR 383
+#define HOENN_DEX_LUGIA 384
+#define HOENN_DEX_HO_OH 385
+#define HOENN_DEX_CELEBI 386
+
+#define HOENN_DEX_OLD_UNOWN_B 387
+#define HOENN_DEX_OLD_UNOWN_C 388
+#define HOENN_DEX_OLD_UNOWN_D 389
+#define HOENN_DEX_OLD_UNOWN_E 390
+#define HOENN_DEX_OLD_UNOWN_F 391
+#define HOENN_DEX_OLD_UNOWN_G 392
+#define HOENN_DEX_OLD_UNOWN_H 393
+#define HOENN_DEX_OLD_UNOWN_I 394
+#define HOENN_DEX_OLD_UNOWN_J 395
+#define HOENN_DEX_OLD_UNOWN_K 396
+#define HOENN_DEX_OLD_UNOWN_L 397
+#define HOENN_DEX_OLD_UNOWN_M 398
+#define HOENN_DEX_OLD_UNOWN_N 399
+#define HOENN_DEX_OLD_UNOWN_O 400
+#define HOENN_DEX_OLD_UNOWN_P 401
+#define HOENN_DEX_OLD_UNOWN_Q 402
+#define HOENN_DEX_OLD_UNOWN_R 403
+#define HOENN_DEX_OLD_UNOWN_S 404
+#define HOENN_DEX_OLD_UNOWN_T 405
+#define HOENN_DEX_OLD_UNOWN_U 406
+#define HOENN_DEX_OLD_UNOWN_V 407
+#define HOENN_DEX_OLD_UNOWN_W 408
+#define HOENN_DEX_OLD_UNOWN_X 409
+#define HOENN_DEX_OLD_UNOWN_Y 410
+#define HOENN_DEX_OLD_UNOWN_Z 411
+
+#define HOENN_DEX_TREECKO 1
+#define HOENN_DEX_GROVYLE 2
+#define HOENN_DEX_SCEPTILE 3
+#define HOENN_DEX_TORCHIC 4
+#define HOENN_DEX_COMBUSKEN 5
+#define HOENN_DEX_BLAZIKEN 6
+#define HOENN_DEX_MUDKIP 7
+#define HOENN_DEX_MARSHTOMP 8
+#define HOENN_DEX_SWAMPERT 9
+#define HOENN_DEX_POOCHYENA 10
+#define HOENN_DEX_MIGHTYENA 11
+#define HOENN_DEX_ZIGZAGOON 12
+#define HOENN_DEX_LINOONE 13
+#define HOENN_DEX_WURMPLE 14
+#define HOENN_DEX_SILCOON 15
+#define HOENN_DEX_BEAUTIFLY 16
+#define HOENN_DEX_CASCOON 17
+#define HOENN_DEX_DUSTOX 18
+#define HOENN_DEX_LOTAD 19
+#define HOENN_DEX_LOMBRE 20
+#define HOENN_DEX_LUDICOLO 21
+#define HOENN_DEX_SEEDOT 22
+#define HOENN_DEX_NUZLEAF 23
+#define HOENN_DEX_SHIFTRY 24
+#define HOENN_DEX_NINCADA 42
+#define HOENN_DEX_NINJASK 43
+#define HOENN_DEX_SHEDINJA 44
+#define HOENN_DEX_TAILLOW 25
+#define HOENN_DEX_SWELLOW 26
+#define HOENN_DEX_SHROOMISH 34
+#define HOENN_DEX_BRELOOM 35
+#define HOENN_DEX_SPINDA 114
+#define HOENN_DEX_WINGULL 27
+#define HOENN_DEX_PELIPPER 28
+#define HOENN_DEX_SURSKIT 32
+#define HOENN_DEX_MASQUERAIN 33
+#define HOENN_DEX_WAILMER 99
+#define HOENN_DEX_WAILORD 100
+#define HOENN_DEX_SKITTY 61
+#define HOENN_DEX_DELCATTY 62
+#define HOENN_DEX_KECLEON 145
+#define HOENN_DEX_BALTOY 131
+#define HOENN_DEX_CLAYDOL 132
+#define HOENN_DEX_NOSEPASS 60
+#define HOENN_DEX_TORKOAL 105
+#define HOENN_DEX_SABLEYE 68
+#define HOENN_DEX_BARBOACH 127
+#define HOENN_DEX_WHISCASH 128
+#define HOENN_DEX_LUVDISC 183
+#define HOENN_DEX_CORPHISH 129
+#define HOENN_DEX_CRAWDAUNT 130
+#define HOENN_DEX_FEEBAS 140
+#define HOENN_DEX_MILOTIC 141
+#define HOENN_DEX_CARVANHA 97
+#define HOENN_DEX_SHARPEDO 98
+#define HOENN_DEX_TRAPINCH 116
+#define HOENN_DEX_VIBRAVA 117
+#define HOENN_DEX_FLYGON 118
+#define HOENN_DEX_MAKUHITA 48
+#define HOENN_DEX_HARIYAMA 49
+#define HOENN_DEX_ELECTRIKE 78
+#define HOENN_DEX_MANECTRIC 79
+#define HOENN_DEX_NUMEL 101
+#define HOENN_DEX_CAMERUPT 102
+#define HOENN_DEX_SPHEAL 173
+#define HOENN_DEX_SEALEO 174
+#define HOENN_DEX_WALREIN 175
+#define HOENN_DEX_CACNEA 119
+#define HOENN_DEX_CACTURNE 120
+#define HOENN_DEX_SNORUNT 171
+#define HOENN_DEX_GLALIE 172
+#define HOENN_DEX_LUNATONE 125
+#define HOENN_DEX_SOLROCK 126
+#define HOENN_DEX_AZURILL 54
+#define HOENN_DEX_SPOINK 110
+#define HOENN_DEX_GRUMPIG 111
+#define HOENN_DEX_PLUSLE 80
+#define HOENN_DEX_MINUN 81
+#define HOENN_DEX_MAWILE 69
+#define HOENN_DEX_MEDITITE 76
+#define HOENN_DEX_MEDICHAM 77
+#define HOENN_DEX_SWABLU 121
+#define HOENN_DEX_ALTARIA 122
+#define HOENN_DEX_WYNAUT 160
+#define HOENN_DEX_DUSKULL 148
+#define HOENN_DEX_DUSCLOPS 149
+#define HOENN_DEX_ROSELIA 94
+#define HOENN_DEX_SLAKOTH 36
+#define HOENN_DEX_VIGOROTH 37
+#define HOENN_DEX_SLAKING 38
+#define HOENN_DEX_GULPIN 95
+#define HOENN_DEX_SWALOT 96
+#define HOENN_DEX_TROPIUS 150
+#define HOENN_DEX_WHISMUR 45
+#define HOENN_DEX_LOUDRED 46
+#define HOENN_DEX_EXPLOUD 47
+#define HOENN_DEX_CLAMPERL 176
+#define HOENN_DEX_HUNTAIL 177
+#define HOENN_DEX_GOREBYSS 178
+#define HOENN_DEX_ABSOL 152
+#define HOENN_DEX_SHUPPET 146
+#define HOENN_DEX_BANETTE 147
+#define HOENN_DEX_SEVIPER 124
+#define HOENN_DEX_ZANGOOSE 123
+#define HOENN_DEX_RELICANTH 179
+#define HOENN_DEX_ARON 70
+#define HOENN_DEX_LAIRON 71
+#define HOENN_DEX_AGGRON 72
+#define HOENN_DEX_CASTFORM 142
+#define HOENN_DEX_VOLBEAT 86
+#define HOENN_DEX_ILLUMISE 87
+#define HOENN_DEX_LILEEP 133
+#define HOENN_DEX_CRADILY 134
+#define HOENN_DEX_ANORITH 135
+#define HOENN_DEX_ARMALDO 136
+#define HOENN_DEX_RALTS 29
+#define HOENN_DEX_KIRLIA 30
+#define HOENN_DEX_GARDEVOIR 31
+#define HOENN_DEX_BAGON 187
+#define HOENN_DEX_SHELGON 188
+#define HOENN_DEX_SALAMENCE 189
+#define HOENN_DEX_BELDUM 190
+#define HOENN_DEX_METANG 191
+#define HOENN_DEX_METAGROSS 192
+#define HOENN_DEX_REGIROCK 193
+#define HOENN_DEX_REGICE 194
+#define HOENN_DEX_REGISTEEL 195
+#define HOENN_DEX_KYOGRE 198
+#define HOENN_DEX_GROUDON 199
+#define HOENN_DEX_RAYQUAZA 200
+#define HOENN_DEX_LATIAS 196
+#define HOENN_DEX_LATIOS 197
+#define HOENN_DEX_JIRACHI 201
+#define HOENN_DEX_DEOXYS 202
+#define HOENN_DEX_CHIMECHO 151
+
#endif // GUARD_CONSTANTS_SPECIES_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 54bcb20a0..989b27387 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -35,8 +35,8 @@
#define VAR_0x401D 0x401D
#define VAR_0x401E 0x401E
#define VAR_0x401F 0x401F
-#define VAR_RECYCLE_GOODS 0x4020
-#define VAR_REPEL_STEP_COUNT 0x4021
+#define VAR_REPEL_STEP_COUNT 0x4020
+#define VAR_0x4021 0x4021
#define VAR_ICE_STEP_COUNT 0x4022
#define VAR_0x4023 0x4023
#define VAR_MIRAGE_RND_H 0x4024
@@ -89,7 +89,7 @@
#define VAR_MAP_SCENE_PALLET_TOWN 0x4050
#define VAR_0x4051 0x4051
#define VAR_0x4052 0x4052
-#define VAR_0x4053 0x4053
+#define VAR_VERMILION_CITY_TICKET_CHECK_TRIGGER 0x4053
#define VAR_0x4054 0x4054
#define VAR_MAP_SCENE_PALLET_TOWN_PROFESSOR_OAKS_LAB 0x4055
#define VAR_MAP_SCENE_PALLET_TOWN_PLAYERS_HOUSE_2F 0x4056
diff --git a/include/data2.h b/include/data2.h
index e383b1c9a..3ce3c33c8 100644
--- a/include/data2.h
+++ b/include/data2.h
@@ -18,5 +18,30 @@ extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
extern const u8 gMoveNames[][13];
extern const u8 gAbilityNames[][13];
extern const u8 gTypeNames[][7];
+extern const u16 gUnknown_8251CB8[];
+extern const u16 gUnknown_8251FEE[];
+extern const u16 gUnknown_8252324[];
+extern const u16 gUnknown_82539D4[];
+
+extern const struct CompressedSpritePalette gMonPaletteTable[];
+extern const struct CompressedSpritePalette gMonShinyPaletteTable[];
+extern const union AnimCmd *const *const gTrainerBackAnimsPtrTable[];
+extern const union AnimCmd *const *const gTrainerFrontAnimsPtrTable[];
+
+extern const struct OamData gUnknown_824F010;
+extern const struct OamData gUnknown_824F018;
+extern const union AnimCmd *const gUnknown_82349BC[];
+extern const union AffineAnimCmd *const gUnknown_82348C8[];
+extern const union AffineAnimCmd *const gUnknown_8234944[];
+extern const struct SpriteFrameImage gUnknown_8234698[];
+extern const struct SpriteFrameImage gUnknown_82346B8[];
+extern const struct SpriteFrameImage gUnknown_82346D8[];
+extern const struct SpriteFrameImage gUnknown_82346F8[];
+extern const struct SpriteFrameImage gUnknown_8234718[];
+extern const struct SpriteFrameImage gUnknown_8234740[];
+extern const struct SpriteFrameImage gUnknown_8234768[];
+extern const struct SpriteFrameImage gUnknown_8234788[];
+extern const struct SpriteFrameImage gUnknown_82347A8[];
+extern const struct SpriteFrameImage gUnknown_82347C8[];
#endif // GUARD_DATA2_H
diff --git a/include/decompress.h b/include/decompress.h
index 19b507525..03080fe48 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -10,15 +10,13 @@ extern u8 gDecompressionBuffer[0x4000];
void LZDecompressWram(const void *src, void *dest);
void LZDecompressVram(const void *src, void *dest);
-u16 LoadCompressedObjectPic(const struct CompressedSpriteSheet *src);
-void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer);
-bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src);
+u16 LoadCompressedSpriteSheet(const struct CompressedSpriteSheet *src);
+void LoadCompressedSpriteSheetOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer);
+bool8 LoadCompressedSpriteSheetUsingHeap(const struct CompressedSpriteSheet* src);
-void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src);
-void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
-bool8 LoadCompressedObjectPaletteUsingHeap(const struct CompressedSpritePalette *src);
-
-bool8 sub_800F078(const struct CompressedSpritePalette *src);
+void LoadCompressedSpritePalette(const struct CompressedSpritePalette *src);
+void LoadCompressedSpritePaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
+bool8 LoadCompressedSpritePaletteUsingHeap(const struct CompressedSpritePalette *src);
void DecompressPicFromTable(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
@@ -27,15 +25,12 @@ void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet
void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void HandleLoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void HandleLoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
-void sub_800ECC4(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
+void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
-u32 sub_8034974(const u8 *ptr);
-
-void sub_800F034(const struct CompressedSpriteSheet *src);
u32 GetDecompressedDataSize(const u8 *ptr);
#endif // GUARD_DECOMPRESS_H
diff --git a/include/dma3.h b/include/dma3.h
index fcd7bae43..381e1e322 100644
--- a/include/dma3.h
+++ b/include/dma3.h
@@ -3,10 +3,55 @@
#include "global.h"
+// Maximum amount of data we will transfer in one operation
+#define MAX_DMA_BLOCK_SIZE 0x1000
+
+#define Dma3CopyLarge_(src, dest, size, bit) \
+{ \
+ const void *_src = src; \
+ void *_dest = dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ if (_size <= MAX_DMA_BLOCK_SIZE) \
+ { \
+ DmaCopy##bit(3, _src, _dest, _size); \
+ break; \
+ } \
+ DmaCopy##bit(3, _src, _dest, MAX_DMA_BLOCK_SIZE); \
+ _src += MAX_DMA_BLOCK_SIZE; \
+ _dest += MAX_DMA_BLOCK_SIZE; \
+ _size -= MAX_DMA_BLOCK_SIZE; \
+ } \
+}
+
+#define Dma3CopyLarge16_(src, dest, size) Dma3CopyLarge_(src, dest, size, 16)
+#define Dma3CopyLarge32_(src, dest, size) Dma3CopyLarge_(src, dest, size, 32)
+
+#define Dma3FillLarge_(value, dest, size, bit) \
+{ \
+ void *_dest = dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ if (_size <= MAX_DMA_BLOCK_SIZE) \
+ { \
+ DmaFill##bit(3, value, _dest, _size); \
+ break; \
+ } \
+ DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \
+ _dest += MAX_DMA_BLOCK_SIZE; \
+ _size -= MAX_DMA_BLOCK_SIZE; \
+ } \
+}
+
+#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16)
+#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32)
+
void ClearDma3Requests(void);
void ProcessDma3Requests(void);
-int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode);
-int RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode);
-int CheckForSpaceForDma3Request(s16 index);
+s16 RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode);
+s16 RequestDma3Fill(s32 value, void *dest, u16 size, u8 mode);
+s16 CheckForSpaceForDma3Request(s16 index);
#endif // GUARD_DMA3_H
diff --git a/include/dynamic_placeholder_text_util.h b/include/dynamic_placeholder_text_util.h
new file mode 100644
index 000000000..31cfe8d30
--- /dev/null
+++ b/include/dynamic_placeholder_text_util.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_UNK_TEXT_UTIL_H
+#define GUARD_UNK_TEXT_UTIL_H
+
+#include "global.h"
+
+void DynamicPlaceholderTextUtil_Reset(void);
+void DynamicPlaceholderTextUtil_SetPlaceholderPtr(u8 idx, const u8 *ptr);
+u8 *DynamicPlaceholderTextUtil_ExpandPlaceholders(u8 *dest, const u8 *src);
+const u8 *DynamicPlaceholderTextUtil_GetPlaceholderPtr(u8 idx);
+u8 GetColorFromTextColorTable(u16 graphicId);
+
+#endif //GUARD_UNK_TEXT_UTIL_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 1762faf8e..91612c06b 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -772,4 +772,385 @@ extern const u8 gOakText_ConfirmRivalName[];
extern const u8 gOakText_RememberRivalName[];
extern const u8 gOakText_LegendAboutToUnfold[];
+// Help System
+extern const u8 gUnknown_81B2DF8[];
+extern const u8 gUnknown_81B2E1C[];
+extern const u8 gUnknown_81B2E2E[];
+extern const u8 gUnknown_81B2E48[];
+extern const u8 gUnknown_81B2E58[];
+extern const u8 gUnknown_81B2E6A[];
+extern const u8 gUnknown_81B2E6F[];
+extern const u8 gUnknown_81B2E76[];
+extern const u8 gUnknown_81B2E88[];
+extern const u8 gUnknown_81B2EC8[];
+extern const u8 gUnknown_81B2F00[];
+extern const u8 gUnknown_81B2F43[];
+extern const u8 gUnknown_81B2F74[];
+extern const u8 gUnknown_81B2FA9[];
+extern const u8 gUnknown_81B2FC9[];
+extern const u8 gUnknown_81B301B[];
+extern const u8 gUnknown_81B3083[];
+extern const u8 gUnknown_81B30A9[];
+extern const u8 gUnknown_81B30C1[];
+extern const u8 gUnknown_81B30DC[];
+extern const u8 gUnknown_81B30FC[];
+extern const u8 gUnknown_81B311F[];
+extern const u8 gUnknown_81B3140[];
+extern const u8 gUnknown_81B314F[];
+extern const u8 gUnknown_81B3168[];
+extern const u8 gUnknown_81B3189[];
+extern const u8 gUnknown_81B31AE[];
+extern const u8 gUnknown_81B31D3[];
+extern const u8 gUnknown_81B31EC[];
+extern const u8 gUnknown_81B31FF[];
+extern const u8 gUnknown_81B3215[];
+extern const u8 gUnknown_81B3226[];
+extern const u8 gUnknown_81B3243[];
+extern const u8 gUnknown_81B3261[];
+extern const u8 gUnknown_81B3276[];
+extern const u8 gUnknown_81B3290[];
+extern const u8 gUnknown_81B32B6[];
+extern const u8 gUnknown_81B32CD[];
+extern const u8 gUnknown_81B32E3[];
+extern const u8 gUnknown_81B32F9[];
+extern const u8 gUnknown_81B330B[];
+extern const u8 gUnknown_81B332B[];
+extern const u8 gUnknown_81B3344[];
+extern const u8 gUnknown_81B335C[];
+extern const u8 gUnknown_81B3373[];
+extern const u8 gUnknown_81B338C[];
+extern const u8 gUnknown_81B33A6[];
+extern const u8 gUnknown_81B33CA[];
+extern const u8 gUnknown_81B33EA[];
+extern const u8 gUnknown_81B3402[];
+extern const u8 gUnknown_81B3427[];
+extern const u8 gUnknown_81B3440[];
+extern const u8 gUnknown_81B3457[];
+extern const u8 gUnknown_81B346F[];
+extern const u8 gUnknown_81B3481[];
+extern const u8 gUnknown_81B349B[];
+extern const u8 gUnknown_81B34B7[];
+extern const u8 gUnknown_81B34D6[];
+extern const u8 gUnknown_81B34F6[];
+extern const u8 gUnknown_81B3516[];
+extern const u8 gUnknown_81B3525[];
+extern const u8 gUnknown_81B35E6[];
+extern const u8 gUnknown_81B36EB[];
+extern const u8 gUnknown_81B379A[];
+extern const u8 gUnknown_81B3849[];
+extern const u8 gUnknown_81B3876[];
+extern const u8 gUnknown_81B3972[];
+extern const u8 gUnknown_81B3A51[];
+extern const u8 gUnknown_81B3ACC[];
+extern const u8 gUnknown_81B3BB6[];
+extern const u8 gUnknown_81B3C99[];
+extern const u8 gUnknown_81B3D1B[];
+extern const u8 gUnknown_81B3DE3[];
+extern const u8 gUnknown_81B3EBC[];
+extern const u8 gUnknown_81B3F7F[];
+extern const u8 gUnknown_81B406C[];
+extern const u8 gUnknown_81B410B[];
+extern const u8 gUnknown_81B41D7[];
+extern const u8 gUnknown_81B42B3[];
+extern const u8 gUnknown_81B439D[];
+extern const u8 gUnknown_81B4483[];
+extern const u8 gUnknown_81B457C[];
+extern const u8 gUnknown_81B4645[];
+extern const u8 gUnknown_81B470A[];
+extern const u8 gUnknown_81B47F0[];
+extern const u8 gUnknown_81B48C6[];
+extern const u8 gUnknown_81B497A[];
+extern const u8 gUnknown_81B4A72[];
+extern const u8 gUnknown_81B4B65[];
+extern const u8 gUnknown_81B4C54[];
+extern const u8 gUnknown_81B4D26[];
+extern const u8 gUnknown_81B4E0B[];
+extern const u8 gUnknown_81B4ED8[];
+extern const u8 gUnknown_81B4FB2[];
+extern const u8 gUnknown_81B4FFD[];
+extern const u8 gUnknown_81B50FF[];
+extern const u8 gUnknown_81B51B1[];
+extern const u8 gUnknown_81B5272[];
+extern const u8 gUnknown_81B5325[];
+extern const u8 gUnknown_81B5382[];
+extern const u8 gUnknown_81B547C[];
+extern const u8 gUnknown_81B54E1[];
+extern const u8 gUnknown_81B5589[];
+extern const u8 gUnknown_81B55F4[];
+extern const u8 gUnknown_81B56E3[];
+extern const u8 gUnknown_81B56F4[];
+extern const u8 gUnknown_81B5705[];
+extern const u8 gUnknown_81B5717[];
+extern const u8 gUnknown_81B5728[];
+extern const u8 gUnknown_81B5737[];
+extern const u8 gUnknown_81B5744[];
+extern const u8 gUnknown_81B5754[];
+extern const u8 gUnknown_81B5767[];
+extern const u8 gUnknown_81B577B[];
+extern const u8 gUnknown_81B5787[];
+extern const u8 gUnknown_81B5795[];
+extern const u8 gUnknown_81B57A5[];
+extern const u8 gUnknown_81B57B8[];
+extern const u8 gUnknown_81B57CF[];
+extern const u8 gUnknown_81B57DE[];
+extern const u8 gUnknown_81B57EE[];
+extern const u8 gUnknown_81B580D[];
+extern const u8 gUnknown_81B5824[];
+extern const u8 gUnknown_81B5834[];
+extern const u8 gUnknown_81B583F[];
+extern const u8 gUnknown_81B5850[];
+extern const u8 gUnknown_81B5863[];
+extern const u8 gUnknown_81B5875[];
+extern const u8 gUnknown_81B5884[];
+extern const u8 gUnknown_81B5893[];
+extern const u8 gUnknown_81B58A4[];
+extern const u8 gUnknown_81B58BC[];
+extern const u8 gUnknown_81B58D3[];
+extern const u8 gUnknown_81B58E5[];
+extern const u8 gUnknown_81B58FD[];
+extern const u8 gUnknown_81B590E[];
+extern const u8 gUnknown_81B591D[];
+extern const u8 gUnknown_81B592E[];
+extern const u8 gUnknown_81B593E[];
+extern const u8 gUnknown_81B5950[];
+extern const u8 gUnknown_81B595D[];
+extern const u8 gUnknown_81B5974[];
+extern const u8 gUnknown_81B5989[];
+extern const u8 gUnknown_81B59A7[];
+extern const u8 gUnknown_81B59BF[];
+extern const u8 gUnknown_81B59D6[];
+extern const u8 gUnknown_81B59E8[];
+extern const u8 gUnknown_81B59F5[];
+extern const u8 gUnknown_81B5A0D[];
+extern const u8 gUnknown_81B5A1B[];
+extern const u8 gUnknown_81B5A29[];
+extern const u8 gUnknown_81B5A37[];
+extern const u8 gUnknown_81B5A4D[];
+extern const u8 gUnknown_81B5B0C[];
+extern const u8 gUnknown_81B5B7D[];
+extern const u8 gUnknown_81B5C13[];
+extern const u8 gUnknown_81B5CDF[];
+extern const u8 gUnknown_81B5D87[];
+extern const u8 gUnknown_81B5E41[];
+extern const u8 gUnknown_81B5F10[];
+extern const u8 gUnknown_81B5FA6[];
+extern const u8 gUnknown_81B606C[];
+extern const u8 gUnknown_81B6140[];
+extern const u8 gUnknown_81B6203[];
+extern const u8 gUnknown_81B62E4[];
+extern const u8 gUnknown_81B6397[];
+extern const u8 gUnknown_81B6478[];
+extern const u8 gUnknown_81B6525[];
+extern const u8 gUnknown_81B65E7[];
+extern const u8 gUnknown_81B66BA[];
+extern const u8 gUnknown_81B678E[];
+extern const u8 gUnknown_81B6883[];
+extern const u8 gUnknown_81B68CD[];
+extern const u8 gUnknown_81B69B9[];
+extern const u8 gUnknown_81B6A9A[];
+extern const u8 gUnknown_81B6B6E[];
+extern const u8 gUnknown_81B6C4F[];
+extern const u8 gUnknown_81B6D4A[];
+extern const u8 gUnknown_81B6E02[];
+extern const u8 gUnknown_81B6EC1[];
+extern const u8 gUnknown_81B6FA8[];
+extern const u8 gUnknown_81B7075[];
+extern const u8 gUnknown_81B7108[];
+extern const u8 gUnknown_81B71EA[];
+extern const u8 gUnknown_81B723B[];
+extern const u8 gUnknown_81B7319[];
+extern const u8 gUnknown_81B73E8[];
+extern const u8 gUnknown_81B747E[];
+extern const u8 gUnknown_81B752C[];
+extern const u8 gUnknown_81B7611[];
+extern const u8 gUnknown_81B7692[];
+extern const u8 gUnknown_81B771E[];
+extern const u8 gUnknown_81B77DD[];
+extern const u8 gUnknown_81B7884[];
+extern const u8 gUnknown_81B7931[];
+extern const u8 gUnknown_81B79CB[];
+extern const u8 gUnknown_81B7A60[];
+extern const u8 gUnknown_81B7AEE[];
+extern const u8 gUnknown_81B7BBE[];
+extern const u8 gUnknown_81B7C57[];
+extern const u8 gUnknown_81B7CC1[];
+extern const u8 gUnknown_81B7CC4[];
+extern const u8 gUnknown_81B7CD9[];
+extern const u8 gUnknown_81B7CDF[];
+extern const u8 gUnknown_81B7CE6[];
+extern const u8 gUnknown_81B7CEE[];
+extern const u8 gUnknown_81B7CF6[];
+extern const u8 gUnknown_81B7CFE[];
+extern const u8 gUnknown_81B7D04[];
+extern const u8 gUnknown_81B7D12[];
+extern const u8 gUnknown_81B7D17[];
+extern const u8 gUnknown_81B7D1A[];
+extern const u8 gUnknown_81B7D1F[];
+extern const u8 gUnknown_81B7D27[];
+extern const u8 gUnknown_81B7D2D[];
+extern const u8 gUnknown_81B7D37[];
+extern const u8 gUnknown_81B7D3E[];
+extern const u8 gUnknown_81B7D45[];
+extern const u8 gUnknown_81B7D48[];
+extern const u8 gUnknown_81B7D4E[];
+extern const u8 gUnknown_81B7D57[];
+extern const u8 gUnknown_81B7D5B[];
+extern const u8 gUnknown_81B7D61[];
+extern const u8 gUnknown_81B7D6B[];
+extern const u8 gUnknown_81B7D76[];
+extern const u8 gUnknown_81B7D7E[];
+extern const u8 gUnknown_81B7D88[];
+extern const u8 gUnknown_81B7D8F[];
+extern const u8 gUnknown_81B7D9A[];
+extern const u8 gUnknown_81B7DA7[];
+extern const u8 gUnknown_81B7DB4[];
+extern const u8 gUnknown_81B7DBA[];
+extern const u8 gUnknown_81B7DC6[];
+extern const u8 gUnknown_81B7DCC[];
+extern const u8 gUnknown_81B7DD3[];
+extern const u8 gUnknown_81B7DD6[];
+extern const u8 gUnknown_81B7DD9[];
+extern const u8 gUnknown_81B7DE1[];
+extern const u8 gUnknown_81B7DEB[];
+extern const u8 gUnknown_81B7DFA[];
+extern const u8 gUnknown_81B7E02[];
+extern const u8 gUnknown_81B7E09[];
+extern const u8 gUnknown_81B7E0F[];
+extern const u8 gUnknown_81B7E16[];
+extern const u8 gUnknown_81B7F0A[];
+extern const u8 gUnknown_81B800A[];
+extern const u8 gUnknown_81B80EC[];
+extern const u8 gUnknown_81B81C2[];
+extern const u8 gUnknown_81B8256[];
+extern const u8 gUnknown_81B8348[];
+extern const u8 gUnknown_81B83EF[];
+extern const u8 gUnknown_81B847B[];
+extern const u8 gUnknown_81B8550[];
+extern const u8 gUnknown_81B8647[];
+extern const u8 gUnknown_81B86E2[];
+extern const u8 gUnknown_81B87B8[];
+extern const u8 gUnknown_81B8897[];
+extern const u8 gUnknown_81B8924[];
+extern const u8 gUnknown_81B8A04[];
+extern const u8 gUnknown_81B8A84[];
+extern const u8 gUnknown_81B8B62[];
+extern const u8 gUnknown_81B8C18[];
+extern const u8 gUnknown_81B8C94[];
+extern const u8 gUnknown_81B8D1D[];
+extern const u8 gUnknown_81B8DD4[];
+extern const u8 gUnknown_81B8E67[];
+extern const u8 gUnknown_81B8F4D[];
+extern const u8 gUnknown_81B901B[];
+extern const u8 gUnknown_81B90A7[];
+extern const u8 gUnknown_81B90E8[];
+extern const u8 gUnknown_81B9170[];
+extern const u8 gUnknown_81B91C2[];
+extern const u8 gUnknown_81B91F9[];
+extern const u8 gUnknown_81B92B8[];
+extern const u8 gUnknown_81B92ED[];
+extern const u8 gUnknown_81B93D8[];
+extern const u8 gUnknown_81B9439[];
+extern const u8 gUnknown_81B9497[];
+extern const u8 gUnknown_81B9560[];
+extern const u8 gUnknown_81B9656[];
+extern const u8 gUnknown_81B9749[];
+extern const u8 gUnknown_81B984F[];
+extern const u8 gUnknown_81B991C[];
+extern const u8 gUnknown_81B99C4[];
+extern const u8 gUnknown_81B9AA2[];
+extern const u8 gUnknown_81B9B2F[];
+extern const u8 gUnknown_81B9BB7[];
+extern const u8 gUnknown_81B9BC7[];
+extern const u8 gUnknown_81B9BD0[];
+extern const u8 gUnknown_81B9BE1[];
+extern const u8 gUnknown_81B9BF5[];
+extern const u8 gUnknown_81B9C09[];
+extern const u8 gUnknown_81B9C1D[];
+extern const u8 gUnknown_81B9C2F[];
+extern const u8 gUnknown_81B9D04[];
+extern const u8 gUnknown_81B9DC5[];
+extern const u8 gUnknown_81B9E75[];
+extern const u8 gUnknown_81B9F09[];
+extern const u8 gUnknown_81B9FCE[];
+extern const u8 gUnknown_81BA027[];
+extern const u8 gUnknown_81BA0F1[];
+extern const u8 gUnknown_81BA10D[];
+extern const u8 gUnknown_81BA121[];
+extern const u8 gUnknown_81BA138[];
+extern const u8 gUnknown_81BA14C[];
+extern const u8 gUnknown_81BA163[];
+extern const u8 gUnknown_81BA17A[];
+extern const u8 gUnknown_81BA194[];
+extern const u8 gUnknown_81BA1AC[];
+extern const u8 gUnknown_81BA1C7[];
+extern const u8 gUnknown_81BA1DC[];
+extern const u8 gUnknown_81BA1F4[];
+extern const u8 gUnknown_81BA209[];
+extern const u8 gUnknown_81BA221[];
+extern const u8 gUnknown_81BA234[];
+extern const u8 gUnknown_81BA24A[];
+extern const u8 gUnknown_81BA260[];
+extern const u8 gUnknown_81BA279[];
+extern const u8 gUnknown_81BA291[];
+extern const u8 gUnknown_81BA2AC[];
+extern const u8 gUnknown_81BA2C2[];
+extern const u8 gUnknown_81BA2DB[];
+extern const u8 gUnknown_81BA2F1[];
+extern const u8 gUnknown_81BA30A[];
+extern const u8 gUnknown_81BA320[];
+extern const u8 gUnknown_81BA339[];
+extern const u8 gUnknown_81BA34E[];
+extern const u8 gUnknown_81BA366[];
+extern const u8 gUnknown_81BA37C[];
+extern const u8 gUnknown_81BA395[];
+extern const u8 gUnknown_81BA3A9[];
+extern const u8 gUnknown_81BA3C0[];
+extern const u8 gUnknown_81BA3D5[];
+extern const u8 gUnknown_81BA3ED[];
+extern const u8 gUnknown_81BA400[];
+extern const u8 gUnknown_81BA416[];
+extern const u8 gUnknown_81BA4E6[];
+extern const u8 gUnknown_81BA539[];
+extern const u8 gUnknown_81BA595[];
+extern const u8 gUnknown_81BA5F2[];
+extern const u8 gUnknown_81BA66F[];
+extern const u8 gUnknown_81BA6C9[];
+extern const u8 gUnknown_81BA71F[];
+extern const u8 gUnknown_81BA796[];
+extern const u8 gUnknown_81BA7E9[];
+extern const u8 gUnknown_81BA862[];
+extern const u8 gUnknown_81BA8D3[];
+extern const u8 gUnknown_81BA92A[];
+extern const u8 gUnknown_81BA98D[];
+extern const u8 gUnknown_81BA9F1[];
+extern const u8 gUnknown_81BAA44[];
+extern const u8 gUnknown_81BAAB6[];
+extern const u8 gUnknown_81BAB18[];
+extern const u8 gUnknown_81BAB7A[];
+extern const u8 gUnknown_81BABCC[];
+extern const u8 gUnknown_81BAC29[];
+extern const u8 gUnknown_81BAC89[];
+extern const u8 gUnknown_81BACC4[];
+extern const u8 gUnknown_81BAD20[];
+extern const u8 gUnknown_81BAD60[];
+extern const u8 gUnknown_81BADA2[];
+extern const u8 gUnknown_81BADF7[];
+extern const u8 gUnknown_81BAEA8[];
+extern const u8 gUnknown_81BAF01[];
+extern const u8 gUnknown_81BAF6B[];
+extern const u8 gUnknown_81BAFCA[];
+extern const u8 gUnknown_81BB02E[];
+extern const u8 gUnknown_81BB084[];
+extern const u8 gUnknown_81BB0DF[];
+extern const u8 gUnknown_81BB156[];
+
+extern const u8 EventScript_FldEffStrength[];
+extern const u8 EventScript_FailSweetScent[];
+extern const u8 EventScript_FldEffRockSmash[];
+
+extern const u8 EventScript_SafariTimesUp[];
+extern const u8 EventScript_SafariRetire[];
+extern const u8 EventScript_SafariWarpOut[];
+extern const u8 EventScript_SafariOutOfBalls[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_effect.h b/include/field_effect.h
index 979037a8e..426f77510 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -82,5 +82,6 @@ bool8 FieldEffectActiveListContains(u8 id);
void sub_80B69DC(void);
void CreateTeleportFieldEffectTask(void);
void FieldEffectActiveListRemove(u8 id);
+void sub_8085620(void);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
index d0856c84c..4ba350491 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -14,5 +14,6 @@ void sub_807E500(void);
void sub_807DF64(void);
void sub_807DC18(void);
void FieldCallback_ReturnToEventScript2(void);
+void sub_807DC00(void);
#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 69e3419de..83cc263e5 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -46,9 +46,9 @@ void FieldObjectClearAnim(struct MapObject *);
void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *);
void SpawnFieldObjectsInView(s16, s16);
u8 sprite_new(u8, u8, s16, s16, u8, u8);
-u8 AddPseudoFieldObject(u16, void (*)(struct Sprite *), s16, s16, u8);
+u8 AddPseudoEventObject(u16, SpriteCallback, s16, s16, u8);
u8 show_sprite(u8, u8, u8);
-u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8);
+u8 SpawnSpecialFieldObjectParameterized(u8, u8, u8, s16, s16, u8);
u8 SpawnSpecialFieldObject(struct MapObjectTemplate *);
void sub_8093038(s16, s16, s16 *, s16 *);
void CameraObjectReset1(void);
@@ -76,21 +76,25 @@ u8 GetStepInPlaceDelay32AnimId(u32);
u8 npc_block_way(struct MapObject *, s16, s16, u32);
void MoveCoords(u8, s16 *, s16 *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
-u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
+u8 FieldObjectClearHeldMovementIfFinished(struct MapObject *);
u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z);
void sub_8063E28(struct MapObject *, struct Sprite *);
-void sub_8063CA4(struct MapObject *, u8);
+void FieldObjectSetHeldMovement(struct MapObject *, u8);
void npc_coords_shift_still(struct MapObject *);
void sub_805FE7C(struct MapObject *, u8);
void npc_set_running_behaviour_etc(struct MapObject *, u8);
u8 sub_80634F0(u8 direction);
u8 sub_8063500(u8 a0);
-void sub_805F060(struct MapObject *mapObject, u8 a1);
+void EventObjectSetGraphicsId(struct MapObject *mapObject, u8 a1);
u8 sub_805EB44(u8, u8, s16, s16);
void npc_paltag_set_load(u8 mode);
+bool8 FieldObjectIsMovementOverridden(struct MapObject *mapObject);
+u8 FieldObjectCheckHeldMovementStatus(struct MapObject *mapObject);
// Exported data declarations
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
+extern const struct SpritePalette gUnknown_83A5348;
+extern const struct SpriteTemplate * const gUnknown_83A0010[];
#endif //GUARD_FIELD_MAP_OBJ_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index b365a9d92..b87de3fef 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -8,7 +8,7 @@ void SetPlayerAvatarExtraStateTransition(u8, u8);
u8 GetPlayerAvatarGenderByGraphicsId(u8);
bool8 TestPlayerAvatarFlags(u8);
void PlayerGetDestCoords(s16 *, s16 *);
-u8 player_get_direction_lower_nybble(void);
+u8 GetPlayerFacingDirection(void);
u8 player_get_direction_upper_nybble(void);
u8 player_get_x22(void);
@@ -22,5 +22,11 @@ void sub_805D9C4(struct Sprite *sprite);
void sub_805D154(u8 direction);
void sub_805DAE4(u8 direction);
void SetPlayerAvatarTransitionFlags(u16 a);
+bool8 IsPlayerFacingSurfableFishableWater(void);
+void sub_805D2C0(u8 secondaryId);
+u8 GetPlayerAvatarObjectId(void);
+u8 PlayerGetZCoord(void);
+u8 GetPlayerAvatarGraphicsIdByCurrentState(void);
+void sub_805CB70(void);
#endif //GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_poison.h b/include/field_poison.h
index fcfb71cf5..4887fa27a 100644
--- a/include/field_poison.h
+++ b/include/field_poison.h
@@ -3,19 +3,13 @@
#include "global.h"
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-
enum {
FLDPSN_NONE,
FLDPSN_PSN,
FLDPSN_FNT
};
-void sub_80F972C(void);
-unsigned int overworld_poison(void);
+void ExecuteWhiteOut(void);
+s32 DoPoisonFieldEffect(void);
#endif //GUARD_FIELD_POISON_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index 14d7e5d81..d1fde7eac 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -6,5 +6,6 @@
void sub_80AF79C(void);
void sub_807F028(u8);
void sub_80B0244(void);
+void sub_807E3EC(void);
#endif // GUARD_FIELD_SCREEN_EFFECT_H
diff --git a/include/field_specials.h b/include/field_specials.h
index c1bc8e8c9..a82cb20a2 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -7,5 +7,11 @@ u8 GetLeadMonIndex(void);
u8 CountDigits(u16 number);
void TV_PrintIntToStringVar(u8, int);
u16 ScrSpecial_GetStarter(void);
+void sub_80CCB68(void);
+void nullsub_60(void);
+void nullsub_61(void);
+u8 ContextNpcGetTextColor(void);
+void set_unknown_box_id(u8);
+u16 get_unknown_box_id(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/field_weather.h b/include/field_weather.h
index cf0e34d06..c3ecd4fa6 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -13,5 +13,8 @@ void DoCurrentWeather(void);
void SetSav1WeatherFromCurrMapHeader(void);
void sub_807B0C4(u16 *, u16 *, u32);
void PlayRainStoppingSoundEffect(void);
+bool8 sub_807AA70(void);
+void SetWeatherScreenFadeOut(void);
+void sub_807B070(void);
#endif // GUARD_WEATHER_H
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 537626edc..9903962a1 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -12,6 +12,7 @@
#define VIRTUAL_MAP_SIZE 0x2800
extern struct BackupMapData VMap;
+extern const struct MapData Route1_Layout;
u32 MapGridGetMetatileIdAt(int, int);
u32 MapGridGetMetatileBehaviorAt(int, int);
diff --git a/include/fldeff.h b/include/fldeff.h
index 364cb7550..e5e7e5f7d 100644
--- a/include/fldeff.h
+++ b/include/fldeff.h
@@ -1,7 +1,51 @@
#ifndef GUARD_FLDEFF_H
#define GUARD_FLDEFF_H
-// rock smash
+#define FLDEFF_CALL_FUNC_IN_DATA() ((void (*)(void))(((u16)gTasks[taskId].data[8] << 16) | (u16)gTasks[taskId].data[9]))();
+
+#define FLDEFF_SET_FUNC_TO_DATA(func) \
+gTasks[taskId].data[8] = (u32)func >> 16; \
+gTasks[taskId].data[9] = (u32)func;
+
+extern struct MapPosition gPlayerFacingPosition;
+
+bool8 CheckObjectGraphicsInFrontOfPlayer(u8 graphicsId);
u8 oei_task_add(void);
+// flash
+
+// cut
+
+// dig
+bool8 SetUpFieldMove_Dig(void);
+bool8 FldEff_UseDig(void);
+
+// rocksmash
+bool8 SetUpFieldMove_RockSmash(void);
+bool8 FldEff_UseRockSmash(void);
+
+// berrytree
+void nullsub_56(void);
+
+// poison
+void FldEffPoison_Start(void);
+bool32 FldEffPoison_IsActive(void);
+
+// strength
+bool8 SetUpFieldMove_Strength(void);
+bool8 sub_80D0860(void);
+
+// teleport
+bool8 SetUpFieldMove_Teleport(void);
+bool8 FldEff_UseTeleport(void);
+
+// softboiled
+bool8 hm_prepare_dive_probably(void);
+void sub_80E56DC(u8 taskId);
+void sub_80E5724(u8 taskId);
+
+// sweetscent
+bool8 SetUpFieldMove_SweetScent(void);
+bool8 FldEff_SweetScent(void);
+
#endif // GUARD_FLDEFF_H
diff --git a/include/fldeff_80F9BCC.h b/include/fldeff_80F9BCC.h
deleted file mode 100644
index 3960c6c65..000000000
--- a/include/fldeff_80F9BCC.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#ifndef GUARD_FLDEFF_80F9BCC_H
-#define GUARD_FLDEFF_80F9BCC_H
-
-#include "global.h"
-
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-
-void sub_80FA5E4(s16 id, s16 x, s16 y);
-void sub_80FA794(s16 x, s16 y);
-void overworld_poison_effect(void);
-
-#endif //GUARD_FLDEFF_80F9BCC_H
diff --git a/include/gba/defines.h b/include/gba/defines.h
index a0ef506dd..5489f9e14 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -40,6 +40,9 @@
#define BG_SCREEN_ADDR(n) (void *)(BG_VRAM + (BG_SCREEN_SIZE * (n)))
#define BG_TILE_ADDR(n) (void *)(BG_VRAM + (0x80 * (n)))
+#define BG_TILE_H_FLIP(n) (0x400 + (n))
+#define BG_TILE_V_FLIP(n) (0x800 + (n))
+
// text-mode BG
#define OBJ_VRAM0 (void *)(VRAM + 0x10000)
#define OBJ_VRAM0_SIZE 0x8000
diff --git a/include/gba/multiboot.h b/include/gba/multiboot.h
index e88b43a19..a8bc8fddf 100644
--- a/include/gba/multiboot.h
+++ b/include/gba/multiboot.h
@@ -18,9 +18,9 @@ struct MultiBootParam
u8 response_bit;
u8 client_bit;
u8 reserved1;
- u8 *boot_srcp;
- u8 *boot_endp;
- u8 *masterp;
+ const u8 *boot_srcp;
+ const u8 *boot_endp;
+ const u8 *masterp;
u8 *reserved2[MULTIBOOT_NCHILD];
u32 system_work2[4];
u8 sendflag;
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index a14905cc2..3623737ea 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -51,8 +51,8 @@ struct Tileset
/*0x04*/ void *tiles;
/*0x08*/ void *palettes;
/*0x0c*/ void *metatiles;
- /*0x14*/ TilesetCB callback;
- /*0x10*/ void *metatileAttributes;
+ /*0x10*/ TilesetCB callback;
+ /*0x14*/ void *metatileAttributes;
};
struct MapData
diff --git a/include/global.h b/include/global.h
index b10f4af49..e1f63213a 100644
--- a/include/global.h
+++ b/include/global.h
@@ -4,6 +4,7 @@
#include "config.h"
#include "gba/gba.h"
#include <string.h>
+#include "constants/global.h"
// Prevent cross-jump optimization.
#define BLOCK_CROSS_JUMP asm("");
@@ -39,10 +40,6 @@
// Converts a number to Q4.12 fixed-point format
#define Q_4_12(n) ((s16)((n) * 4096))
-#define POKEMON_SLOTS_NUMBER 412
-#define POKEMON_NAME_LENGTH 10
-#define OT_NAME_LENGTH 7
-
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
@@ -72,81 +69,13 @@
#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_REPT(button) TEST_BUTTON(gMain.newAndRepeatedKeys, button)
extern u8 gStringVar1[];
extern u8 gStringVar2[];
extern u8 gStringVar3[];
extern u8 gStringVar4[];
-enum
-{
- VERSION_SAPPHIRE = 1,
- VERSION_RUBY = 2,
- VERSION_EMERALD = 3,
- VERSION_FIRE_RED = 4,
- VERSION_LEAF_GREEN = 5,
-};
-
-enum LanguageId {
- LANGUAGE_JAPANESE = 1,
- LANGUAGE_ENGLISH = 2,
- LANGUAGE_FRENCH = 3,
- LANGUAGE_ITALIAN = 4,
- LANGUAGE_GERMAN = 5,
- // 6 goes unused but the theory is it was meant to be Korean
- LANGUAGE_SPANISH = 7,
-};
-
-#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
-
-#define PC_ITEMS_COUNT 30
-#define BAG_ITEMS_COUNT 42
-#define BAG_KEYITEMS_COUNT 30
-#define BAG_POKEBALLS_COUNT 13
-#define BAG_TMHM_COUNT 58
-#define BAG_BERRIES_COUNT 43
-
-enum
-{
- MALE,
- FEMALE
-};
-
-enum
-{
- OPTIONS_BUTTON_MODE_NORMAL,
- OPTIONS_BUTTON_MODE_LR,
- OPTIONS_BUTTON_MODE_L_EQUALS_A
-};
-
-enum
-{
- OPTIONS_TEXT_SPEED_SLOW,
- OPTIONS_TEXT_SPEED_MID,
- OPTIONS_TEXT_SPEED_FAST
-};
-
-enum
-{
- OPTIONS_SOUND_MONO,
- OPTIONS_SOUND_STEREO
-};
-
-enum
-{
- OPTIONS_BATTLE_STYLE_SHIFT,
- OPTIONS_BATTLE_STYLE_SET
-};
-
-enum
-{
- BAG_ITEMS = 1,
- BAG_POKEBALLS,
- BAG_TMsHMs,
- BAG_BERRIES,
- BAG_KEYITEMS
-};
-
struct Coords16
{
s16 x;
@@ -280,7 +209,7 @@ struct SaveBlock2
{
/*0x000*/ u8 playerName[PLAYER_NAME_LENGTH];
/*0x008*/ u8 playerGender; // MALE, FEMALE
- /*0x009*/ u8 specialSaveWarp;
+ /*0x009*/ u8 specialSaveWarpFlags;
/*0x00A*/ u8 playerTrainerId[4];
/*0x00E*/ u16 playTimeHours;
/*0x010*/ u8 playTimeMinutes;
@@ -797,8 +726,14 @@ struct SaveBlock1
/*0x3D38*/ struct TrainerTowerLog unkArray[4];
};
-extern struct SaveBlock1* gSaveBlock1Ptr;
+struct MapPosition
+{
+ s16 x;
+ s16 y;
+ s8 height;
+};
+extern struct SaveBlock1* gSaveBlock1Ptr;
extern u8 gReservedSpritePaletteCount;
#endif // GUARD_GLOBAL_H
diff --git a/include/graphics.h b/include/graphics.h
index 04d05da2b..e8503609e 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -32,6 +32,9 @@ extern const u8 gInterfacePal_LuxuryBall[];
extern const u8 gInterfaceGfx_PremierBall[];
extern const u8 gInterfacePal_PremierBall[];
extern const u8 gOpenPokeballGfx[];
+extern const u8 gFireRedMenuElements_Gfx[];
+extern const u16 gFireRedMenuElements1_Pal[];
+extern const u16 gFireRedMenuElements2_Pal[];
extern const u8 gItemIcon_QuestionMark[];
extern const u8 gItemIconPalette_QuestionMark[];
@@ -160,6 +163,7 @@ extern const u32 gTMCase_TMSpriteGfx[];
extern const u32 gUnknown_8E84F20[];
extern const u32 gUnknown_8E85068[];
extern const u8 gUnknown_8E99118[];
+extern const u16 gTMCaseMainWindowPalette[];
// egg_hatch
extern const u32 gBattleTextboxTiles[];
@@ -168,4 +172,793 @@ extern const u32 gBattleTextboxPalette[];
extern const u32 gTradeGba2_Pal[];
extern const u32 gTradeGba_Gfx[];
+// teachy_tv
+extern const u8 gUnknown_8E86240[];
+extern const u8 gUnknown_8E86BE8[];
+extern const u8 gUnknown_8E86D6C[];
+extern const u8 gUnknown_8E86F98[];
+
+// berry_fix_program
+extern const u8 gBerryFixGameboy_Gfx[];
+extern const u8 gBerryFixGameboy_Tilemap[];
+extern const u8 gBerryFixGameboy_Pal[];
+extern const u8 gBerryFixGameboyLogo_Gfx[];
+extern const u8 gBerryFixGameboyLogo_Tilemap[];
+extern const u8 gBerryFixGameboyLogo_Pal[];
+extern const u8 gBerryFixGbaTransfer_Gfx[];
+extern const u8 gBerryFixGbaTransfer_Tilemap[];
+extern const u8 gBerryFixGbaTransfer_Pal[];
+extern const u8 gBerryFixGbaTransferHighlight_Gfx[];
+extern const u8 gBerryFixGbaTransferHighlight_Tilemap[];
+extern const u8 gBerryFixGbaTransferHighlight_Pal[];
+extern const u8 gBerryFixGbaTransferError_Gfx[];
+extern const u8 gBerryFixGbaTransferError_Tilemap[];
+extern const u8 gBerryFixGbaTransferError_Pal[];
+extern const u8 gBerryFixWindow_Gfx[];
+extern const u8 gBerryFixWindow_Tilemap[];
+extern const u8 gBerryFixWindow_Pal[];
+
+// item_pc
+
+extern const u8 gItemPcTiles[];
+extern const u8 gItemPcBgPals[];
+extern const u8 gItemPcTilemap[];
+
+// item_menu_icons
+extern const u32 gUnknown_8E8362C[];
+extern const u32 gUnknown_8E83DBC[];
+extern const u32 gUnknown_8E84560[];
+extern const u32 gFile_graphics_interface_bag_swap_sheet[];
+extern const u32 gFile_graphics_interface_bag_swap_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_master_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_master_ball_palette[];
+extern const u8 gFile_graphics_items_icons_ultra_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ultra_ball_palette[];
+extern const u8 gFile_graphics_items_icons_great_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_great_ball_palette[];
+extern const u8 gFile_graphics_items_icons_poke_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poke_ball_palette[];
+extern const u8 gFile_graphics_items_icons_safari_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_safari_ball_palette[];
+extern const u8 gFile_graphics_items_icons_net_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_net_ball_palette[];
+extern const u8 gFile_graphics_items_icons_dive_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dive_ball_palette[];
+extern const u8 gFile_graphics_items_icons_nest_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_nest_ball_palette[];
+extern const u8 gFile_graphics_items_icons_repeat_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_repeat_ball_palette[];
+extern const u8 gFile_graphics_items_icons_timer_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_repeat_ball_palette[];
+extern const u8 gFile_graphics_items_icons_luxury_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_luxury_ball_palette[];
+extern const u8 gFile_graphics_items_icons_premier_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_luxury_ball_palette[];
+extern const u8 gFile_graphics_items_icons_potion_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_potion_palette[];
+extern const u8 gFile_graphics_items_icons_antidote_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_antidote_palette[];
+extern const u8 gFile_graphics_items_icons_status_heal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_burn_heal_palette[];
+extern const u8 gFile_graphics_items_icons_status_heal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ice_heal_palette[];
+extern const u8 gFile_graphics_items_icons_status_heal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_awakening_palette[];
+extern const u8 gFile_graphics_items_icons_status_heal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_paralyze_heal_palette[];
+extern const u8 gFile_graphics_items_icons_large_potion_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_full_restore_palette[];
+extern const u8 gFile_graphics_items_icons_large_potion_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_max_potion_palette[];
+extern const u8 gFile_graphics_items_icons_potion_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hyper_potion_palette[];
+extern const u8 gFile_graphics_items_icons_potion_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_super_potion_palette[];
+extern const u8 gFile_graphics_items_icons_full_heal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_full_heal_palette[];
+extern const u8 gFile_graphics_items_icons_revive_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_revive_palette[];
+extern const u8 gFile_graphics_items_icons_max_revive_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_revive_palette[];
+extern const u8 gFile_graphics_items_icons_fresh_water_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fresh_water_palette[];
+extern const u8 gFile_graphics_items_icons_soda_pop_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_soda_pop_palette[];
+extern const u8 gFile_graphics_items_icons_lemonade_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lemonade_palette[];
+extern const u8 gFile_graphics_items_icons_moomoo_milk_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_moomoo_milk_palette[];;
+extern const u8 gFile_graphics_items_icon_palettes_energy_powder_palette[];
+extern const u8 gFile_graphics_items_icons_energy_root_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_energy_root_palette[];
+extern const u8 gFile_graphics_items_icon_palettes_heal_powder_palette[];
+extern const u8 gFile_graphics_items_icons_revival_herb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_revival_herb_palette[];
+extern const u8 gFile_graphics_items_icons_ether_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ether_palette[];
+extern const u8 gFile_graphics_items_icons_ether_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_max_ether_palette[];
+extern const u8 gFile_graphics_items_icons_ether_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_elixir_palette[];
+extern const u8 gFile_graphics_items_icons_ether_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_max_elixir_palette[];
+extern const u8 gFile_graphics_items_icons_lava_cookie_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lava_cookie_and_letter_palette[];
+extern const u8 gFile_graphics_items_icons_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_blue_flute_palette[];
+extern const u8 gFile_graphics_items_icons_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_yellow_flute_palette[];
+extern const u8 gFile_graphics_items_icons_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_red_flute_palette[];
+extern const u8 gFile_graphics_items_icons_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_black_flute_palette[];
+extern const u8 gFile_graphics_items_icons_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_white_flute_palette[];
+extern const u8 gFile_graphics_items_icons_berry_juice_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_berry_juice_palette[];
+extern const u8 gFile_graphics_items_icons_sacred_ash_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sacred_ash_palette[];
+extern const u32 gFile_graphics_items_icons_powder_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_shoal_salt_palette[];
+extern const u8 gFile_graphics_items_icons_shoal_shell_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_shell_palette[];
+extern const u8 gFile_graphics_items_icons_shard_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_red_shard_palette[];
+extern const u8 gFile_graphics_items_icons_shard_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_blue_shard_palette[];
+extern const u8 gFile_graphics_items_icons_shard_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_yellow_shard_palette[];
+extern const u8 gFile_graphics_items_icons_shard_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_green_shard_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_hp_up_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hp_up_palette[];
+extern const u8 gFile_graphics_items_icons_vitamin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_protein_palette[];
+extern const u8 gFile_graphics_items_icons_vitamin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_iron_palette[];
+extern const u8 gFile_graphics_items_icons_vitamin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_carbos_palette[];
+extern const u8 gFile_graphics_items_icons_vitamin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_calcium_palette[];
+extern const u8 gFile_graphics_items_icons_rare_candy_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rare_candy_palette[];
+extern const u8 gFile_graphics_items_icons_pp_up_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pp_up_palette[];
+extern const u8 gFile_graphics_items_icons_vitamin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_zinc_palette[];
+extern const u8 gFile_graphics_items_icons_pp_max_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pp_max_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_guard_spec_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dire_hit_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_x_attack_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_x_defend_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_x_speed_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_x_accuracy_palette[];
+extern const u8 gFile_graphics_items_icons_battle_stat_item_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_x_special_palette[];
+extern const u8 gFile_graphics_items_icons_poke_doll_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poke_doll_palette[];
+extern const u8 gFile_graphics_items_icons_fluffy_tail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fluffy_tail_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_repel_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_super_repel_palette[];
+extern const u8 gFile_graphics_items_icons_repel_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_max_repel_palette[];
+extern const u8 gFile_graphics_items_icons_escape_rope_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_escape_rope_palette[];
+extern const u8 gFile_graphics_items_icons_repel_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_repel_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_sun_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sun_stone_palette[];
+extern const u8 gFile_graphics_items_icons_moon_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_moon_stone_palette[];
+extern const u8 gFile_graphics_items_icons_fire_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fire_stone_palette[];
+extern const u8 gFile_graphics_items_icons_thunder_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_thunder_stone_palette[];
+extern const u8 gFile_graphics_items_icons_water_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_stone_palette[];
+extern const u8 gFile_graphics_items_icons_leaf_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_leaf_stone_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_tiny_mushroom_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mushroom_palette[];
+extern const u8 gFile_graphics_items_icons_big_mushroom_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mushroom_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_pearl_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pearl_palette[];
+extern const u8 gFile_graphics_items_icons_big_pearl_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pearl_palette[];
+extern const u8 gFile_graphics_items_icons_stardust_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_star_palette[];
+extern const u8 gFile_graphics_items_icons_star_piece_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_star_palette[];
+extern const u8 gFile_graphics_items_icons_nugget_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_nugget_palette[];
+extern const u8 gFile_graphics_items_icons_heart_scale_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_heart_scale_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_orange_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_orange_mail_palette[];
+extern const u8 gFile_graphics_items_icons_harbor_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_harbor_mail_palette[];
+extern const u8 gFile_graphics_items_icons_glitter_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_glitter_mail_palette[];
+extern const u8 gFile_graphics_items_icons_mech_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mech_mail_palette[];
+extern const u8 gFile_graphics_items_icons_wood_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_wood_mail_palette[];
+extern const u8 gFile_graphics_items_icons_wave_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_wave_mail_palette[];
+extern const u8 gFile_graphics_items_icons_bead_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_bead_mail_palette[];
+extern const u8 gFile_graphics_items_icons_shadow_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_shadow_mail_palette[];
+extern const u8 gFile_graphics_items_icons_tropic_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_tropic_mail_palette[];
+extern const u8 gFile_graphics_items_icons_dream_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dream_mail_palette[];
+extern const u8 gFile_graphics_items_icons_fab_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fab_mail_palette[];
+extern const u8 gFile_graphics_items_icons_retro_mail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_retro_mail_palette[];
+extern const u8 gFile_graphics_items_icons_cheri_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_cheri_berry_palette[];
+extern const u8 gFile_graphics_items_icons_chesto_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_chesto_berry_palette[];
+extern const u8 gFile_graphics_items_icons_pecha_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pecha_berry_palette[];
+extern const u8 gFile_graphics_items_icons_rawst_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rawst_berry_palette[];
+extern const u8 gFile_graphics_items_icons_aspear_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_aspear_berry_palette[];
+extern const u8 gFile_graphics_items_icons_leppa_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_leppa_berry_palette[];
+extern const u8 gFile_graphics_items_icons_oran_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_oran_berry_palette[];
+extern const u8 gFile_graphics_items_icons_persim_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_persim_berry_palette[];
+extern const u8 gFile_graphics_items_icons_lum_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lum_berry_palette[];
+extern const u8 gFile_graphics_items_icons_sitrus_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sitrus_berry_palette[];
+extern const u8 gFile_graphics_items_icons_figy_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_figy_berry_palette[];
+extern const u8 gFile_graphics_items_icons_wiki_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_wiki_berry_palette[];
+extern const u8 gFile_graphics_items_icons_mago_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mago_berry_palette[];
+extern const u8 gFile_graphics_items_icons_aguav_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_aguav_berry_palette[];
+extern const u8 gFile_graphics_items_icons_iapapa_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_iapapa_berry_palette[];
+extern const u8 gFile_graphics_items_icons_razz_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_razz_berry_palette[];
+extern const u8 gFile_graphics_items_icons_bluk_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_bluk_berry_palette[];
+extern const u8 gFile_graphics_items_icons_nanab_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_nanab_berry_palette[];
+extern const u8 gFile_graphics_items_icons_wepear_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_wepear_berry_palette[];
+extern const u8 gFile_graphics_items_icons_pinap_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pinap_berry_palette[];
+extern const u8 gFile_graphics_items_icons_pomeg_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pomeg_berry_palette[];
+extern const u8 gFile_graphics_items_icons_kelpsy_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_kelpsy_berry_palette[];
+extern const u8 gFile_graphics_items_icons_qualot_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_qualot_berry_palette[];
+extern const u8 gFile_graphics_items_icons_hondew_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hondew_berry_palette[];
+extern const u8 gFile_graphics_items_icons_grepa_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_grepa_berry_palette[];
+extern const u8 gFile_graphics_items_icons_tamato_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_tamato_berry_palette[];
+extern const u8 gFile_graphics_items_icons_cornn_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_cornn_berry_palette[];
+extern const u8 gFile_graphics_items_icons_magost_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_magost_berry_palette[];
+extern const u8 gFile_graphics_items_icons_rabuta_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rabuta_berry_palette[];
+extern const u8 gFile_graphics_items_icons_nomel_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_nomel_berry_palette[];
+extern const u8 gFile_graphics_items_icons_spelon_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_spelon_berry_palette[];
+extern const u8 gFile_graphics_items_icons_pamtre_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pamtre_berry_palette[];
+extern const u8 gFile_graphics_items_icons_watmel_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_watmel_berry_palette[];
+extern const u8 gFile_graphics_items_icons_durin_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_durin_berry_palette[];
+extern const u8 gFile_graphics_items_icons_belue_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_belue_berry_palette[];
+extern const u8 gFile_graphics_items_icons_liechi_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_liechi_berry_palette[];
+extern const u8 gFile_graphics_items_icons_ganlon_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ganlon_berry_palette[];
+extern const u8 gFile_graphics_items_icons_salac_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_salac_berry_palette[];
+extern const u8 gFile_graphics_items_icons_petaya_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_petaya_berry_palette[];
+extern const u8 gFile_graphics_items_icons_apicot_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_apicot_berry_palette[];
+extern const u8 gFile_graphics_items_icons_lansat_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lansat_berry_palette[];
+extern const u8 gFile_graphics_items_icons_starf_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_starf_berry_palette[];
+extern const u8 gFile_graphics_items_icons_enigma_berry_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_enigma_berry_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_bright_powder_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_bright_powder_palette[];
+extern const u8 gFile_graphics_items_icons_in_battle_herb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_white_herb_palette[];
+extern const u8 gFile_graphics_items_icons_macho_brace_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_macho_brace_palette[];
+extern const u8 gFile_graphics_items_icons_exp_share_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_exp_share_palette[];
+extern const u8 gFile_graphics_items_icons_quick_claw_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_quick_claw_palette[];
+extern const u8 gFile_graphics_items_icons_soothe_bell_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_soothe_bell_palette[];
+extern const u8 gFile_graphics_items_icons_in_battle_herb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mental_herb_palette[];
+extern const u8 gFile_graphics_items_icons_choice_band_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_choice_band_palette[];
+extern const u8 gFile_graphics_items_icons_kings_rock_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_kings_rock_palette[];
+extern const u8 gFile_graphics_items_icons_silver_powder_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_silver_powder_palette[];
+extern const u8 gFile_graphics_items_icons_amulet_coin_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_amulet_coin_palette[];
+extern const u8 gFile_graphics_items_icons_cleanse_tag_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_cleanse_tag_palette[];
+extern const u8 gFile_graphics_items_icons_soul_dew_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_soul_dew_palette[];
+extern const u8 gFile_graphics_items_icons_deep_sea_tooth_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_deep_sea_tooth_palette[];
+extern const u8 gFile_graphics_items_icons_deep_sea_scale_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_deep_sea_scale_palette[];
+extern const u8 gFile_graphics_items_icons_smoke_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_smoke_ball_palette[];
+extern const u8 gFile_graphics_items_icons_everstone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_everstone_palette[];
+extern const u8 gFile_graphics_items_icons_focus_band_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_focus_band_palette[];
+extern const u8 gFile_graphics_items_icons_lucky_egg_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lucky_egg_palette[];
+extern const u8 gFile_graphics_items_icons_scope_lens_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_scope_lens_palette[];
+extern const u8 gFile_graphics_items_icons_metal_coat_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_metal_coat_palette[];
+extern const u8 gFile_graphics_items_icons_leftovers_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_leftovers_palette[];
+extern const u8 gFile_graphics_items_icons_dragon_scale_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dragon_scale_palette[];
+extern const u8 gFile_graphics_items_icons_light_ball_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_light_ball_palette[];
+extern const u8 gFile_graphics_items_icons_soft_sand_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_soft_sand_palette[];
+extern const u8 gFile_graphics_items_icons_hard_stone_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hard_stone_palette[];
+extern const u8 gFile_graphics_items_icons_miracle_seed_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_miracle_seed_palette[];
+extern const u8 gFile_graphics_items_icons_black_glasses_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_black_type_enhancing_item_palette[];
+extern const u8 gFile_graphics_items_icons_black_belt_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_black_type_enhancing_item_palette[];
+extern const u8 gFile_graphics_items_icons_magnet_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_magnet_palette[];
+extern const u8 gFile_graphics_items_icons_mystic_water_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mystic_water_palette[];
+extern const u8 gFile_graphics_items_icons_sharp_beak_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sharp_beak_palette[];
+extern const u8 gFile_graphics_items_icons_poison_barb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poison_barb_palette[];
+extern const u8 gFile_graphics_items_icons_never_melt_ice_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_never_melt_ice_palette[];
+extern const u8 gFile_graphics_items_icons_spell_tag_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_spell_tag_palette[];
+extern const u8 gFile_graphics_items_icons_twisted_spoon_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_twisted_spoon_palette[];
+extern const u8 gFile_graphics_items_icons_charcoal_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_charcoal_palette[];
+extern const u8 gFile_graphics_items_icons_dragon_fang_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dragon_fang_palette[];
+extern const u8 gFile_graphics_items_icons_silk_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_silk_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_up_grade_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_up_grade_palette[];
+extern const u8 gFile_graphics_items_icons_shell_bell_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_shell_palette[];
+extern const u8 gFile_graphics_items_icons_sea_incense_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sea_incense_palette[];
+extern const u8 gFile_graphics_items_icons_lax_incense_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lax_incense_palette[];
+extern const u8 gFile_graphics_items_icons_lucky_punch_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lucky_punch_palette[];
+extern const u8 gFile_graphics_items_icons_metal_powder_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_metal_powder_palette[];
+extern const u8 gFile_graphics_items_icons_thick_club_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_thick_club_palette[];
+extern const u8 gFile_graphics_items_icons_stick_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_stick_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_red_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_blue_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pink_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_green_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_scarf_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_yellow_scarf_palette[];
+extern const u8 gFile_graphics_items_icons_mach_bike_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mach_bike_palette[];
+extern const u8 gFile_graphics_items_icons_coin_case_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_coin_case_palette[];
+extern const u8 gFile_graphics_items_icons_itemfinder_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_itemfinder_palette[];
+extern const u8 gFile_graphics_items_icons_old_rod_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_old_rod_palette[];
+extern const u8 gFile_graphics_items_icons_good_rod_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_good_rod_palette[];
+extern const u8 gFile_graphics_items_icons_super_rod_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_super_rod_palette[];
+extern const u8 gFile_graphics_items_icons_ss_ticket_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ss_ticket_palette[];
+extern const u8 gFile_graphics_items_icons_contest_pass_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_contest_pass_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_wailmer_pail_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_wailmer_pail_palette[];
+extern const u8 gFile_graphics_items_icons_devon_goods_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_devon_goods_palette[];
+extern const u8 gFile_graphics_items_icons_soot_sack_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_soot_sack_palette[];
+extern const u8 gFile_graphics_items_icons_basement_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_old_key_palette[];
+extern const u8 gFile_graphics_items_icons_acro_bike_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_acro_bike_palette[];
+extern const u8 gFile_graphics_items_icons_pokeblock_case_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_pokeblock_case_palette[];
+extern const u8 gFile_graphics_items_icons_letter_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_lava_cookie_and_letter_palette[];
+extern const u8 gFile_graphics_items_icons_eon_ticket_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_eon_ticket_palette[];
+extern const u8 gFile_graphics_items_icons_orb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_red_orb_palette[];
+extern const u8 gFile_graphics_items_icons_orb_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_blue_orb_palette[];
+extern const u8 gFile_graphics_items_icons_scanner_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_scanner_palette[];
+extern const u8 gFile_graphics_items_icons_go_goggles_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_go_goggles_palette[];
+extern const u8 gFile_graphics_items_icons_meteorite_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_meteorite_palette[];
+extern const u8 gFile_graphics_items_icons_room1_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_key_palette[];
+extern const u8 gFile_graphics_items_icons_room2_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_key_palette[];
+extern const u8 gFile_graphics_items_icons_room4_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_key_palette[];
+extern const u8 gFile_graphics_items_icons_room6_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_key_palette[];
+extern const u8 gFile_graphics_items_icons_storage_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_old_key_palette[];
+extern const u8 gFile_graphics_items_icons_root_fossil_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hoenn_fossil_palette[];
+extern const u8 gFile_graphics_items_icons_claw_fossil_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_hoenn_fossil_palette[];
+extern const u8 gFile_graphics_items_icons_devon_scope_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_devon_scope_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dragon_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poison_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ice_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_grass_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ice_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ice_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_grass_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_grass_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_steel_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_electric_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_electric_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ground_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ground_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ghost_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_electric_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poison_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rock_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rock_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_flying_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_steel_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_psychic_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_dark_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fire_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_flying_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_normal_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fighting_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_tm_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_water_tm_hm_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_question_mark_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_question_mark_palette[];
+extern const u8 gFile_graphics_items_icons_oaks_parcel_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_oaks_parcel_palette[];
+extern const u8 gFile_graphics_items_icons_poke_flute_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_poke_flute_palette[];
+extern const u8 gFile_graphics_items_icons_secret_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_secret_key_palette[];
+extern const u8 gFile_graphics_items_icons_bike_voucher_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_bike_voucher_palette[];
+extern const u8 gFile_graphics_items_icons_gold_teeth_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_gold_teeth_palette[];
+extern const u8 gFile_graphics_items_icons_old_amber_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_old_amber_palette[];
+extern const u8 gFile_graphics_items_icons_card_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_card_key_palette[];
+extern const u8 gFile_graphics_items_icons_lift_key_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_key_palette[];
+extern const u8 gFile_graphics_items_icons_helix_fossil_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_kanto_fossil_palette[];
+extern const u8 gFile_graphics_items_icons_dome_fossil_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_kanto_fossil_palette[];
+extern const u8 gFile_graphics_items_icons_silph_scope_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_silph_scope_palette[];
+extern const u8 gFile_graphics_items_icons_bicycle_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_bicycle_palette[];
+extern const u8 gFile_graphics_items_icons_town_map_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_town_map_palette[];
+extern const u8 gFile_graphics_items_icons_vs_seeker_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_vs_seeker_palette[];
+extern const u8 gFile_graphics_items_icons_fame_checker_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_fame_checker_palette[];
+extern const u8 gFile_graphics_items_icons_tm_case_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_tm_case_palette[];
+extern const u8 gFile_graphics_items_icons_berry_pouch_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_berry_pouch_palette[];
+extern const u8 gFile_graphics_items_icons_teachy_tv_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_teachy_tv_palette[];
+extern const u8 gFile_graphics_items_icons_tri_pass_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_tri_pass_palette[];
+extern const u8 gFile_graphics_items_icons_rainbow_pass_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_rainbow_pass_palette[];
+extern const u8 gFile_graphics_items_icons_tea_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_tea_palette[];
+extern const u8 gFile_graphics_items_icons_mystic_ticket_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_mystic_ticket_palette[];
+extern const u8 gFile_graphics_items_icons_aurora_ticket_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_aurora_ticket_palette[];
+extern const u8 gFile_graphics_items_icons_powder_jar_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_powder_jar_palette[];
+extern const u8 gFile_graphics_items_icons_gem_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_ruby_palette[];
+extern const u8 gFile_graphics_items_icons_gem_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_sapphire_palette[];
+extern const u8 gFile_graphics_items_icons_return_to_field_arrow_sheet[];
+extern const u8 gFile_graphics_items_icon_palettes_return_to_field_arrow_palette[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/hall_of_fame.h b/include/hall_of_fame.h
index 2dc9fae41..1d2122399 100644
--- a/include/hall_of_fame.h
+++ b/include/hall_of_fame.h
@@ -7,5 +7,8 @@ void CB2_DoHallOfFameScreen(void);
void CB2_DoHallOfFameScreenDontSaveData(void);
void CB2_DoHallOfFamePC(void);
void sub_8175280(void);
+void sub_80F2978(void);
+void HallOfFamePCBeginFade(void);
+void ReturnFromHallOfFamePC(void);
#endif // GUARD_HALL_OF_FAME_H
diff --git a/include/help_system.h b/include/help_system.h
index 6398d306b..3ba0cf475 100644
--- a/include/help_system.h
+++ b/include/help_system.h
@@ -2,11 +2,92 @@
#define GUARD_HELP_SYSTEM_H
#include "global.h"
+#include "list_menu.h"
+#include "blit.h"
+struct HelpSystemListMenu_sub
+{
+ struct ListMenuItem * items;
+ u16 totalItems;
+ u16 maxShowed;
+ u8 left;
+ u8 top;
+};
+
+struct HelpSystemListMenu
+{
+ struct HelpSystemListMenu_sub sub;
+ u8 field_0C;
+ u8 field_0D;
+ u8 field_0E;
+ u8 filler_10[0xC];
+};
+
+extern struct HelpSystemListMenu gHelpSystemListMenu;
+extern struct ListMenuItem gHelpSystemListMenuItems[];
extern bool8 gUnknown_3005ECC;
+extern u8 gUnknown_203F175;
-void sub_812B484(void);
+// help_system_812B1E0
+void sub_812B1E0(u8);
void HelpSystem_SetSomeVariable2(u8);
+bool8 sub_812B40C(void);
+bool8 sub_812B45C(void);
void sub_812B478(void);
+void sub_812B484(void);
+void sub_812B4B8(void);
+bool8 sub_812BB9C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BC54(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BC80(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BCA8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BCD0(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BD2C(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BD64(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BD98(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+void sub_812BDEC(void);
+bool8 sub_812BE10(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BEEC(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BF18(struct HelpSystemListMenu * a0, struct ListMenuItem * a1);
+bool8 sub_812BF88(void);
+
+// help_system
+bool8 RunHelpSystemCallback(void);
+void SaveCallbacks(void);
+void SaveMapGPURegs(void);
+void SaveMapTiles(void);
+void SaveMapTextColors(void);
+void RestoreCallbacks(void);
+void RestoreGPURegs(void);
+void RestoreMapTiles(void);
+void RestoreMapTextColors(void);
+void CommitTilemap(void);
+void sub_813BCF4(void);
+void sub_813BD14(u8);
+void sub_813BD5C(u8);
+void sub_813BDA4(u8);
+void sub_813BDE8(u8);
+void sub_813BE30(u8);
+void sub_813BE78(u8);
+void sub_813BEE4(u8);
+void sub_813BF50(u8);
+void sub_813BFC0(u8);
+void sub_813C004(u8, u8);
+void HelpSystem_PrintTextRightAlign_Row52(const u8 *str);
+void HelpSystem_PrintTextAt(const u8 *, u8, u8);
+void HelpSystem_PrintTwoStrings(const u8 *a0, const u8 *a1);
+void HelpSystem_PrintText_813C584(const u8 *str);
+void HelpSystem_FillPanel2(void);
+void HelpSystem_FillPanel1(void);
+void HelpSystem_InitListMenuController(struct HelpSystemListMenu *, u8, u8);
+void HelpSystem_SetInputDelay(u8);
+s32 HelpSystem_GetMenuInput(void);
+void sub_813C75C(void);
+
+void DecompressAndRenderGlyph(u8 font, u16 glyph, struct Bitmap *srcBlit, struct Bitmap *destBlit, u8 *destBuffer, u8 x, u8 y, u8 width, u8 height);
+void HelpSystem_PrintText_Row61(const u8 * str);
+void HelpSystem_FillPanel3(void);
+void PrintListMenuItems(void);
+void PlaceListMenuCursor(void);
+bool8 MoveCursor(u8 by, u8 dirn);
#endif //GUARD_HELP_SYSTEM_H
diff --git a/include/item.h b/include/item.h
index 320b7ffec..0f0adbca8 100644
--- a/include/item.h
+++ b/include/item.h
@@ -1,18 +1,20 @@
-#ifndef ITEM_H
-#define ITEM_H
+#ifndef GUARD_ITEM_H
+#define GUARD_ITEM_H
+
+#include "global.h"
typedef void (*ItemUseFunc)(u8);
struct Item
{
- u8 name[14];
+ u8 name[ITEM_NAME_LENGTH];
u16 itemId;
u16 price;
u8 holdEffect;
u8 holdEffectParam;
const u8 *description;
u8 importance;
- u8 unk19;
+ u8 exitsBagOnUse;
u8 pocket;
u8 type;
ItemUseFunc fieldUseFunc;
@@ -44,7 +46,7 @@ bool8 CheckPCHasItem(u16 itemId, u16 count);
bool8 AddPCItem(u16 itemId, u16 count);
void RemovePCItem(u8 index, u16 count);
void SwapRegisteredBike(void);
-const struct Item *ItemId_GetItem(u16 itemId);
+const u8 *ItemId_GetName(u16 itemId);
u16 ItemId_GetId(u16 itemId);
u16 ItemId_GetPrice(u16 itemId);
u8 ItemId_GetHoldEffect(u16 itemId);
@@ -60,16 +62,20 @@ u8 ItemId_GetBattleUsage(u16 itemId);
ItemUseFunc ItemId_GetBattleFunc(u16 itemId);
u8 ItemId_GetSecondaryId(u16 itemId);
u16 itemid_get_market_price(u16 itemId);
-void sub_809A2DC(void);
-void sub_809A2A4(void);
+void ClearItemSlotsInAllBagPockets(void);
+void ClearPCItemSlots(void);
void CopyItemName(u16, u8 *);
void sub_809A824(u16 itemId);
bool8 AddBagItem(u16 itemId, u16 amount);
-void sub_809A5E4(struct BagPocket *);
+void SortPocketAndPlaceHMsFirst(struct BagPocket *);
u16 BagGetItemIdByPocketPosition(u8 a0, u16 a1);
u16 BagGetQuantityByPocketPosition(u8 a0, u16 a1);
bool8 itemid_is_unique(u16 itemId);
-void sub_809A584(struct ItemSlot * slots, u8 capacity);
+void BagPocketCompaction(struct ItemSlot * slots, u8 capacity);
+u16 GetPcItemQuantity(u16 *);
+
+void ItemPcCompaction(void);
+void RemoveItemFromPC(u16 itemId, u16 quantity);
-#endif // ITEM_H
+#endif // GUARD_ITEM_H
diff --git a/include/item_icon.h b/include/item_icon.h
deleted file mode 100644
index 75e2475f3..000000000
--- a/include/item_icon.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// Created by scott on 10/20/2017.
-//
-
-#ifndef GUARD_ITEM_ICON_H
-#define GUARD_ITEM_ICON_H
-
-#include "global.h"
-
-extern EWRAM_DATA void *gUnknown_0203CEBC;
-extern EWRAM_DATA void *gUnknown_0203CEC0;
-
-extern const struct SpriteTemplate gUnknown_08614FF4;
-
-bool8 AllocItemIconTemporaryBuffers(void);
-void CopyItemIconPicTo4x4Buffer(void *src, void *dest);
-void FreeItemIconTemporaryBuffers(void);
-
-#endif //GUARD_ITEM_ICON_H
diff --git a/include/item_menu.h b/include/item_menu.h
index efd0066ed..2e83ed1f4 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -2,6 +2,7 @@
#define GUARD_ITEM_MENU_H
#include "global.h"
+#include "task.h"
// Exported type declarations
@@ -25,6 +26,16 @@ extern u16 gSpecialVar_ItemId;
void sub_81AAC50(void);
void sub_81AAC70(void);
void sub_8108CF0(void);
-void UseFameCheckerFromMenu(void);
+void sub_810B108(u8);
+void ReturnToBagFromKeyItem(void);
+void ItemMenu_MoveItemSlotToNewPositionInArray(struct ItemSlot * slots, int pos1, int pos2);
+void ItemMenu_StartFadeToExitCallback(u8 taskId);
+void sub_8108CB4(void);
+void ItemMenu_SetExitCallback(void (*)(void));
+void DisplayItemMessageInBag(u8 taskId, u8 bgId, const u8 * string, TaskFunc followUpFunc);
+void sub_810A1F8(u8 taskId);
+void sub_8107ECC(void);
+void sub_8108DC8(u8 pocketId);
+void sub_81089F4(u8 pocketId);
#endif //GUARD_ITEM_MENU_H
diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h
index 7fcd6d5e1..b5b5c6b0b 100644
--- a/include/item_menu_icons.h
+++ b/include/item_menu_icons.h
@@ -3,6 +3,28 @@
#include "global.h"
-u8 sub_80D511C(u8 a0, u8 a1, u8 a2, u8 a3);
+extern void * gUnknown_2039884;
+
+extern const struct CompressedSpriteSheet gUnknown_83D41E4;
+extern const struct CompressedSpriteSheet gUnknown_83D41EC;
+extern const struct CompressedSpritePalette gUnknown_83D41F4;
+
+extern const struct CompressedSpriteSheet gBagSwapSpriteSheet;
+extern const struct CompressedSpritePalette gBagSwapSpritePalette;
+
+void ResetItemMenuIconState(void);
+void sub_80985E4(void);
+void DestroyItemMenuIcon(bool8 a0);
+void CreateItemMenuIcon(u16 itemId, bool8 a0);
+void CopyItemIconPicTo4x4Buffer(const void *src, void *dest);
+u8 AddItemIconObject(u16 tilesTag, u16 paletteTag, u16 itemId);
+u8 AddItemIconObjectWithCustomObjectTemplate(const struct SpriteTemplate * origTemplate, u16 tilesTag, u16 paletteTag, u16 itemId);
+void sub_80989A0(u16 itemId, u8 idx);
+void sub_80986A8(s16 x, u16 y);
+void sub_8098660(u8);
+void sub_8098528(u8);
+void sub_8098580(void);
+const void * sub_8098974(u16 itemId, u8 ptrId);
+void sub_80984FC(u8 animNum);
#endif // GUARD_ITEM_MENU_ICONS
diff --git a/include/item_pc.h b/include/item_pc.h
new file mode 100644
index 000000000..2fecf69a8
--- /dev/null
+++ b/include/item_pc.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_ITEM_PC_H
+#define GUARD_ITEM_PC_H
+
+void ItemPc_Init(u8 a0, MainCallback callback);
+void ItemPc_SetInitializedFlag(u8);
+
+#endif //GUARD_ITEM_PC_H
diff --git a/include/item_use.h b/include/item_use.h
index 5ec5f2b33..db98533f1 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -4,6 +4,41 @@
#include "global.h"
void sub_80A1E0C(u8);
-void sub_80A2294(u8, u8, u16, u16);
+void ItemUse_SetQuestLogEvent(u8, struct Pokemon *, u16, u16);
+
+void FieldUseFunc_OrangeMail(u8 taskId);
+void FieldUseFunc_MachBike(u8 taskId);
+void FieldUseFunc_OldRod(u8 taskId);
+void FieldUseFunc_CoinCase(u8 taskId);
+void FieldUseFunc_PowderJar(u8 taskId);
+void FieldUseFunc_PokeFlute(u8 taskId);
+void FieldUseFunc_Medicine(u8 taskId);
+void FieldUseFunc_Ether(u8 taskId);
+void FieldUseFunc_PpUp(u8 taskId);
+void FieldUseFunc_RareCandy(u8 taskId);
+void FieldUseFunc_EvoItem(u8 taskId);
+void FieldUseFunc_SacredAsh(u8 taskId);
+void FieldUseFunc_TmCase(u8 taskId);
+void FieldUseFunc_BerryPouch(u8 taskId);
+void BattleUseFunc_BerryPouch(u8 taskId);
+void FieldUseFunc_TeachyTv(u8 taskId);
+void FieldUseFunc_SuperRepel(u8 taskId);
+void FieldUseFunc_BlackFlute(u8 taskId);
+void FieldUseFunc_TownMap(u8 taskId);
+void FieldUseFunc_FameChecker(u8 taskId);
+void FieldUseFunc_VsSeeker(u8 taskId);
+void BattleUseFunc_PokeBallEtc(u8 taskId);
+void BattleUseFunc_PokeFlute(u8 taskId);
+void BattleUseFunc_GuardSpec(u8 taskId);
+void BattleUseFunc_Medicine(u8 taskId);
+void BattleUseFunc_Ether(u8 taskId);
+void BattleUseFunc_PokeDoll(u8 taskId);
+void FieldUseFunc_OakStopsYou(u8 taskId);
+void ItemUseOutOfBattle_EscapeRope(u8 taskId);
+void ItemUseOutOfBattle_EnigmaBerry(u8 taskId);
+void ItemUseInBattle_EnigmaBerry(u8 taskId);
+void ItemUseOutOfBattle_Itemfinder(u8 taskId);
+void sub_80A1C44(u8 taskId);
+u8 CanUseEscapeRopeOnCurrMap(void);
#endif //GUARD_ITEM_USE_H
diff --git a/include/itemfinder.h b/include/itemfinder.h
new file mode 100644
index 000000000..2b882b144
--- /dev/null
+++ b/include/itemfinder.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_ITEMFINDER_H
+#define GUARD_ITEMFINDER_H
+
+void sub_813EC8C(u8 taskId);
+
+#endif //GUARD_ITEMFINDER_H
diff --git a/include/libgcnmultiboot.h b/include/libgcnmultiboot.h
new file mode 100644
index 000000000..7d347df05
--- /dev/null
+++ b/include/libgcnmultiboot.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_LIBGCMMULTIBOOT_H
+#define GUARD_LIBGCNMULTIBOOT_H
+
+struct GcmbStruct
+{
+ u16 gcmb_field_0;
+ vu8 gcmb_field_2;
+ u8 filler3[0x2C - 0x3];
+};
+
+void GameCubeMultiBoot_Main(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_ExecuteProgram(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_Init(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_HandleSerialInterrupt(struct GcmbStruct *pStruct);
+void GameCubeMultiBoot_Quit(void);
+
+#endif // GUARD_LIBGCNMULTIBOOT_H
diff --git a/include/link.h b/include/link.h
index a875149aa..e1a4e106b 100644
--- a/include/link.h
+++ b/include/link.h
@@ -147,7 +147,7 @@ extern bool8 gReceivedRemoteLinkPlayers;
extern bool8 gLinkVSyncDisabled;
extern u8 gUnknown_3003F84;
-extern u64 gUnknown_3003FB4;
+extern u64 gSioMlt_Recv;
void Task_DestroySelf(u8);
void OpenLink(void);
@@ -206,5 +206,8 @@ void sub_800AA80(u8);
void sub_80098D8(void);
void CloseLink(void);
bool8 sub_800A4BC(void);
+bool32 sub_800B270(void);
+void sub_800B388(void);
+void sub_8054A28(void);
#endif // GUARD_LINK_H
diff --git a/include/list_menu.h b/include/list_menu.h
index 8ff65da0b..df53bb529 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -2,15 +2,28 @@
#define GUARD_LIST_MENU_H
#include "global.h"
+#include "window.h"
-// Exported type declarations
+#define LIST_NOTHING_CHOSEN -1
+#define LIST_CANCEL -2
+#define LIST_HEADER -3
-// Exported RAM declarations
+#define LIST_NO_MULTIPLE_SCROLL 0
+#define LIST_MULTIPLE_SCROLL_DPAD 1
+#define LIST_MULTIPLE_SCROLL_L_R 2
+
+enum
+{
+ SCROLL_ARROW_LEFT,
+ SCROLL_ARROW_RIGHT,
+ SCROLL_ARROW_UP,
+ SCROLL_ARROW_DOWN,
+};
struct ListMenuItem
{
- const u8 *unk_00;
- s32 unk_04;
+ const u8 *label;
+ s32 index;
};
struct ListMenu;
@@ -37,29 +50,38 @@ struct ListMenuTemplate
u8 cursorKind:2; // x40, x80
};
-struct ListMenu {
- struct ListMenuTemplate _template;
+struct ListMenu
+{
+ struct ListMenuTemplate template;
u16 scrollOffset;
u16 selectedRow;
u8 unk_1C;
u8 unk_1D;
- u8 unk_1E;
+ u8 taskId;
u8 unk_1F;
};
-extern struct ListMenuTemplate gUnknown_03006310;
-extern struct ListMenuTemplate gMultiuseListMenuTemplate;
+struct ListMenuWindowRect
+{
+ u8 x;
+ u8 y;
+ u8 width;
+ u8 height;
+ u8 palNum;
+};
-// Exported ROM declarations
+extern struct ListMenuTemplate gMultiuseListMenuTemplate;
-u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2);
-s32 ListMenuHandleInput(u8 id);
-void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2);
-void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2);
-void DestroyListMenu(u8, u16 *, u16 *);
-u16 ListMenuGetYCoordForPrintingArrowCursor(u8);
-void sub_8107D38(u8, u8);
s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum);
-void ListMenuDefaultCursorMoveFunc(s32, u8, struct ListMenu *);
+u8 ListMenuInit(struct ListMenuTemplate *listMenuTemplate, u16 scrollOffset, u16 selectedRow);
+u8 ListMenuInitInRect(struct ListMenuTemplate *listMenuTemplate, struct ListMenuWindowRect *rect, u16 scrollOffset, u16 selectedRow);
+s32 ListMenu_ProcessInput(u8 listTaskId);
+void DestroyListMenuTask(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
+void RedrawListMenu(u8 listTaskId);
+void ListMenuGetScrollAndRow(u8 listTaskId, u16 *scrollOffset, u16 *selectedRow);
+u16 ListMenuGetYCoordForPrintingArrowCursor(u8 listTaskId);
+void ListMenuOverrideSetColors(u8 cursorPal, u8 fillValue, u8 cursorShadowPal);
+void ListMenuDefaultCursorMoveFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+void ListMenuSetUnkIndicatorsStructField(u8 taskId, u8 field, s32 value);
#endif //GUARD_LIST_MENU_H
diff --git a/include/load_save.h b/include/load_save.h
index 064e6dff2..bd33f89c8 100644
--- a/include/load_save.h
+++ b/include/load_save.h
@@ -24,5 +24,7 @@ void SetSaveBlocksPointers(void);
void MoveSaveBlocks_ResetHeap(void);
void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
void ApplyNewEncryptionKeyToBagItems(u32 encryptionKey);
+void ApplyNewEncryptionKeyToWord(u32 * word, u32 encryptionKey);
+void ApplyNewEncryptionKeyToHword(u16 * hword, u32 encryptionKey);
#endif // GUARD_LOAD_SAVE_H
diff --git a/include/m4a.h b/include/m4a.h
index 24b454104..2bb7f2124 100644
--- a/include/m4a.h
+++ b/include/m4a.h
@@ -5,6 +5,11 @@
#include "gba/m4a_internal.h"
+extern struct MusicPlayerInfo gMPlayInfo_BGM;
+extern struct MusicPlayerInfo gMPlayInfo_SE1;
+extern struct MusicPlayerInfo gMPlayInfo_SE2;
+extern struct MusicPlayerInfo gMPlayInfo_SE3;
+
void m4aSoundVSync(void);
void m4aSoundVSyncOn(void);
diff --git a/include/mail.h b/include/mail.h
index 5d6ad559b..3ba731c66 100644
--- a/include/mail.h
+++ b/include/mail.h
@@ -3,6 +3,8 @@
#include "global.h"
+#define MAIL_WORDS_COUNT 9
+
#define IS_ITEM_MAIL(itemId)((itemId == ITEM_ORANGE_MAIL \
|| itemId == ITEM_HARBOR_MAIL \
|| itemId == ITEM_GLITTER_MAIL \
@@ -17,9 +19,6 @@
|| itemId == ITEM_RETRO_MAIL))
-bool8 MonHasMail(struct Pokemon *mon);
-void TakeMailFromMon(struct Pokemon *mon);
-u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail);
-void ClearMailStruct(struct MailStruct *mail);
+void sub_80BEBEC(struct MailStruct * mail, void (* callback)(void), u8 a2);
#endif // GUARD_MAIL_H
diff --git a/include/mail_data.h b/include/mail_data.h
index 0275d8dc6..a5795ed7e 100644
--- a/include/mail_data.h
+++ b/include/mail_data.h
@@ -9,7 +9,16 @@
// Exported ROM declarations
-u16 sub_80D45E8(u16, u16 *);
-bool8 itemid_is_mail(u16 itemId);
+void ClearMailData(void);
+void ClearMailStruct(struct MailStruct *mail);
+bool8 MonHasMail(struct Pokemon *mon);
+u8 GiveMailToMon(struct Pokemon *mon, u16 itemId);
+u16 SpeciesToMailSpecies(u16 species, u32 personality);
+u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer);
+u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail);
+void TakeMailFromMon(struct Pokemon *mon);
+void ClearMailItemId(u8 mailId);
+u8 TakeMailFromMon2(struct Pokemon *mon);
+bool8 ItemIsMail(u16 itemId);
#endif //GUARD_MAIL_DATA_H
diff --git a/include/main.h b/include/main.h
index 6e9d2a25d..a250475cb 100644
--- a/include/main.h
+++ b/include/main.h
@@ -3,8 +3,6 @@
#include "global.h"
-#include "global.h"
-
typedef void (*MainCallback)(void);
typedef void (*IntrCallback)(void);
typedef void (*IntrFunc)(void);
diff --git a/include/menu.h b/include/menu.h
index 172944064..19d7c82a4 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -2,10 +2,12 @@
#define GUARD_MENU_H
#include "global.h"
-
#include "text.h"
#include "window.h"
+#define MENU_NOTHING_CHOSEN -2
+#define MENU_B_PRESSED -1
+
struct MenuAction
{
const u8 *text;
@@ -15,41 +17,54 @@ struct MenuAction
} func;
};
-void box_print(u8, u8, u8, u8, const void *, s8, const u8 *);
-void sub_8198070(u8 windowId, bool8 copyToVram);
-void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
-void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette);
-void schedule_bg_copy_tilemap_to_vram(u8 bgNum);
-void PrintMenuTable(u8 idx, u8 nstrs, const struct MenuAction *strs);
-void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8);
-u8 GetMenuCursorPos(void);
-s8 ProcessMenuInput(void);
-s8 ProcessMenuInputNoWrapAround(void);
-void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y);
-void reset_temp_tile_data_buffers(void);
-int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode);
-bool8 free_temp_tile_data_buffers_if_possible(void);
-u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
-//void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
-s8 Menu_ProcessInputNoWrapClearOnChoose(void);
-void do_scheduled_bg_tilemap_copies_to_vram(void);
-void clear_scheduled_bg_copies_to_vram(void);
-void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str);
-void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3);
-void sub_810F4D8(u8 windowId, bool32 someBool);
-void *sub_80F68F0(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
-void CreateWindow_SnapRight_StdPal(u8, u8, u8, u8, u16);
-void Menu_PrintHelpSystemUIHeader(const u8 *, const u8 *, u8, u32, u8);
-void PrintTextOnRightSnappedWindow(const u8 *, u32, u8);
-void sub_810F71C(void);
-void sub_810F740(void);
-u8 ProgramAndPlaceMenuCursorOnWindow(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPosition);
-void CreateYesNoMenu(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8);
-
+// menu2
+void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str);
+void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str);
+void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
+void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y);
void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority);
bool8 IsBlendTaskActive(void);
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_810F260(u8 windowId, u8 a1);
void sub_812E62C(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
+u8 sub_812EA78(u16 species, u32 personality, u8 a2);
+s8 sub_812EAE4(u16 species, u32 personality, u8 a2);
+
+// list_menu
+void sub_8107CD8(u8 palOffset, u16 speciesId);
+void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y);
+void sub_8107D38(u8 palOffset, u8 palId);
+void BlitMoveInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y);
+
+// menu
+s8 Menu_ProcessInputGridLayout(void);
+u8 MultichoiceGrid_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cols, u8 rows, u8 cursorPos);
+void MultichoiceGrid_PrintItems(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs);
+void DestroyYesNoMenu(void);
+s8 Menu_ProcessInputNoWrapClearOnChoose(void);
+void CreateYesNoMenu(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos);
+void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *orderArray);
+void UnionRoomAndTradeMenuPrintOptions(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
+void MultichoiceList_PrintItems(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, u8 letterSpacing, u8 lineSpacing);
+void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
+s8 Menu_ProcessInputNoWrapAround_other(void);
+s8 Menu_ProcessInput_other(void);
+s8 Menu_ProcessInputNoWrapAround(void);
+s8 Menu_ProcessInput(void);
+u8 Menu_GetCursorPos(void);
+u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta);
+u8 Menu_MoveCursor(s8 cursorDelta);
+u8 Menu_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos);
+u8 Menu_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos, bool8 APressMuted);
+void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgColorChooser, u8 notUsed, bool8 copyToVram);
+void TopBarWindowPrintString(const u8 *string, u8 unUsed, bool8 copyToVram);
+void ClearTopBarWindow(void);
+void DestroyTopBarWindow(void);
+u8 CreateTopBarWindowLoadPalette(u8 bg, u8 width, u8 yPos, u8 palette, u16 baseTile);
+void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
+void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum);
+void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
+void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum);
+struct WindowTemplate SetWindowTemplateFields(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock);
#endif // GUARD_MENU_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index e27fb4e5d..7fe8c19b2 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -2,29 +2,28 @@
#define GUARD_MENU_HELPERS_H
#include "global.h"
+#include "task.h"
-// Exported type declarations
-
-struct YesNoFuncTable {
+struct YesNoFuncTable
+{
TaskFunc yesFunc;
TaskFunc noFunc;
};
-// Exported RAM declarations
-
-// Exported ROM declarations
-
-void sub_812225C(u16 *, u16 *, u8, u8);
-void sub_8122298(u16 *, u16 *, u8, u8, u8);
-void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
-bool8 sub_81221AC(void);
+bool16 RunTextPrinters_CheckActive(u8 textPrinterId);
bool8 sub_80BF72C(void);
-bool8 sub_80BF708(void);
-void sub_80BF768(void);
-void sub_80BF7C8(void);
+bool8 sub_80BF748(void);
+bool8 MenuHelpers_LinkSomething(void);
+void SetVBlankHBlankCallbacksToNull(void);
+void ResetAllBgsCoordinatesAndBgCntRegs(void);
u8 sub_80BF8E4(void);
-u8 sub_80BF848(s16 * a0, u16 a1);
-void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
-void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate * unk1, u8 unk2, u8 unk3, u8 unk4, u8 unk5, u8 unk6, const struct YesNoFuncTable *ptrs);
+bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
+void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
+void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
+u8 GetLRKeysState(void);
+u8 sub_80BF66C(void);
+bool8 sub_80BF6A8(u16 itemId);
+bool8 itemid_80BF6D8_mail_related(u16 itemId);
+void ClearVramOamPltt(void);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/menu_indicators.h b/include/menu_indicators.h
index f195ceb6d..fbcee2590 100644
--- a/include/menu_indicators.h
+++ b/include/menu_indicators.h
@@ -3,29 +3,40 @@
#include "global.h"
-// Exported type declarations
-
-// Exported RAM declarations
+struct ScrollArrowsTemplate
+{
+ u8 firstArrowType;
+ u8 firstX;
+ u8 firstY;
+ u8 secondArrowType;
+ u8 secondX;
+ u8 secondY;
+ u16 fullyUpThreshold;
+ u16 fullyDownThreshold;
+ u16 tileTag;
+ u16 palTag;
+ u8 palNum;
+};
-struct ScrollIndicatorArrowPairTemplate
+struct CursorStruct
{
- u8 unk_00;
- u8 unk_01;
- u8 unk_02;
- u8 unk_03;
- u8 unk_04;
- u8 unk_05;
- u16 unk_06;
- u16 unk_08;
- u16 unk_0a;
- u16 unk_0c;
- u16 unk_0e_0:4;
- u16 unk_0e_4:12;
+ u8 left;
+ u8 top;
+ u16 rowWidth;
+ u16 rowHeight;
+ u16 tileTag;
+ u16 palTag;
+ u8 palNum;
};
-// Exported ROM declarations
-u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u16, u16, u16 *);
-u8 AddScrollIndicatorArrowPair(const struct ScrollIndicatorArrowPairTemplate * template, u16 * a1);
+u8 AddScrollIndicatorArrowPairParameterized(u32 arrowType, s32 commonPos, s32 firstPos, s32 secondPos, s32 fullyDownThreshold, s32 tileTag, s32 palTag, u16 *scrollOffset);
+u8 AddScrollIndicatorArrowPair(const struct ScrollArrowsTemplate * template, u16 * a1);
void RemoveScrollIndicatorArrowPair(u8);
+u8 ListMenuAddCursorObjectInternal(struct CursorStruct *cursor, u32 cursorKind);
+u8 ListMenuAddRedOutlineCursorObject(struct CursorStruct *cursor);
+void ListMenuUpdateRedOutlineCursorObject(u8 taskId, u16 x, u16 y);
+void ListMenuRemoveRedOutlineCursorObject(u8 taskId);
+void ListMenuRemoveCursorObject(u8 taskId, u32 cursorKind);
+void ListMenuUpdateCursorObject(u8 taskId, u16 x, u16 y, u32 cursorKind);
#endif //GUARD_MENU_INDICATORS_H
diff --git a/include/mevent.h b/include/mevent.h
index b9b17d8c0..b61fa732d 100644
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -23,9 +23,9 @@ struct MEventStruct_Unk1442CC
struct MEvent_Str_1
{
- u16 unk_000;
- size_t unk_004;
- const void * unk_008;
+ u16 status;
+ size_t size;
+ const void * data;
};
struct MEvent_Str_2
diff --git a/include/multiboot.h b/include/multiboot.h
index 4b4a3693a..ee0a34c83 100644
--- a/include/multiboot.h
+++ b/include/multiboot.h
@@ -18,6 +18,6 @@ void MultiBootInit(struct MultiBootParam *mp);
int MultiBootMain(struct MultiBootParam *mp);
void MultiBootStartProbe(struct MultiBootParam *mp);
void MultiBootStartMaster(struct MultiBootParam *mp, const u8 *srcp, int length, u8 palette_color, s8 palette_speed);
-int MultiBootCheckComplete(struct MultiBootParam *mp);
+bool32 MultiBootCheckComplete(struct MultiBootParam *mp);
#endif // GUARD_MULTIBOOT_H
diff --git a/include/new_game.h b/include/new_game.h
index c495a9585..a45b090c8 100644
--- a/include/new_game.h
+++ b/include/new_game.h
@@ -14,5 +14,6 @@ void NewGameInitData(void);
void ResetMiniGamesResults(void);
void sub_808447C(void);
void Sav2_ClearSetDefault(void);
+void ResetMenuAndMonGlobals(void);
#endif // GUARD_NEW_GAME_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index 8fb3bba78..7b83c913b 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -5,33 +5,49 @@
#include "text.h"
#include "task.h"
-void sub_81973A4(void);
-void sub_81973C4(u8, u8);
-void sub_819746C(u8 windowId, bool8 copyToVram);
-void sub_81973FC(u8, u8);
-u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor);
-void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callback);
-void sub_8197434(u8 a0, u8 a1);
-void SetStandardWindowBorderStyle(u8 a0, u8 a1);
-void sub_8197930(void);
-u8 GetPlayerTextSpeed(void);
-void ClearDialogWindowAndFrame(u8, u8);
-u8 GetTextSpeedSetting(void);
+void ClearScheduledBgCopiesToVram(void);
+void ScheduleBgCopyTilemapToVram(u8 bgId);
+void DoScheduledBgTilemapCopiesToVram(void);
+void ResetTempTileDataBuffers(void);
+bool8 FreeTempTileDataBuffersIfPossible(void);
+void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void * MallocAndDecompress(const void * src, u32 * size);
+void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
+void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
+void ResetBgPositions(void);
+void InitStandardTextBoxWindows(void);
+void FreeAllOverworldWindowBuffers(void);
+void ResetBg0(void);
+u16 RunTextPrinters_CheckPrinter0Active(void);
+u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
+void AddTextPrinterDiffStyle(bool8 allowSkippingDelayWithButtonPress);
+void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
+void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed);
void sub_80F6E9C(void);
void DrawDialogueFrame(u8 windowId, bool8 transfer);
-void sub_80F7974(const u8 *);
-u8 GetStartMenuWindowId(void);
-void sub_80F7998(void);
-void sub_80F69E8(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
void DrawStdWindowFrame(u8 windowId, bool8 copyNow);
-void InitStandardTextBoxWindows(void);
-void ResetBg0(void);
-void Menu_LoadStdPalAt(u16);
-void * malloc_and_decompress(const void * src, u32 * size);
-u16 sub_80F796C(void);
-void sub_80F6B08(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
-void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void * gfx, u32 size, u16 a3, u8 a4);
+void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram);
void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow);
void sub_80F6C14(void);
+void sub_80F771C(bool8 copyToVram);
+void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram);
+void sub_80F7768(u8 windowId, bool8 copyToVram);
+void Menu_LoadStdPal(void);
+void Menu_LoadStdPalAt(u16 offset);
+void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callback);
+void DisplayYesNoMenuDefaultYes(void);
+void DisplayYesNoMenuDefaultNo(void);
+u8 GetTextSpeedSetting(void);
+u8 sub_80F78E0(u8 height);
+u8 GetStartMenuWindowId(void);
+void RemoveStartMenuWindow(void);
+u16 GetStdWindowBaseTileNum(void);
+void sub_80F7974(const u8 * text);
+void sub_80F7998(void);
+void sub_80F79A4(void);
+void SetDefaultFontsPointer(void);
#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/overworld.h b/include/overworld.h
index 5c4235b8c..9a9657006 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -2,7 +2,6 @@
#define GUARD_ROM4_H
#include "global.h"
-
#include "main.h"
struct UnkPlayerStruct
@@ -31,6 +30,8 @@ extern MainCallback gFieldCallback;
extern struct WarpData gUnknown_2031DBC;
+extern u8 gUnknown_2031DE0;
+
void IncrementGameStat(u8 index);
void Overworld_SetMapObjTemplateCoords(u8, s16, s16);
@@ -59,7 +60,7 @@ void Overworld_SetSavedMusic(u16);
void Overworld_ChangeMusicToDefault(void);
void Overworld_ChangeMusicTo(u16);
-bool32 is_c1_link_related_active(void);
+bool32 IsUpdateLinkStateCBActive(void);
void strange_npc_table_clear(void);
const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16);
@@ -67,8 +68,8 @@ void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
void sub_8086230(void);
void CB2_ReturnToField(void);
bool32 sub_8087598(void);
-void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
-void warp_in(void);
+void CB2_ReturnToFieldContinueScriptPlayMapMusic(void);
+void WarpIntoMap(void);
u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
void sub_8086194(void);
void sub_8084CCC(u8 spawn);
@@ -77,14 +78,15 @@ void c2_load_new_map(void);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
void mapldr_default(void);
-u32 GetGameStat(u8);
+u32 GetGameStat(u8 statId);
+u32 SetGameStat(u8 statId, u32 value);
-void sub_8056938(void);
+void CB2_ContinueSavedGame(void);
void sub_8055D5C(struct WarpData *);
void sub_80572A8(void);
void sub_805726C(void);
void sub_8057430(void);
-void sub_8055DC4(void);
+void Overworld_PlaySpecialMapMusic(void);
u8 GetCurrentRegionMapSectionId(void);
@@ -103,12 +105,17 @@ extern bool8 (* gFieldCallback2)(void);
void SetLastHealLocationWarp(u8 healLocaionId);
void sub_8055864(u8 mapGroup, u8 mapNum);
+void CB2_Overworld(void);
void CB2_NewGame(void);
bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
void Overworld_ResetStateAfterTeleport(void);
void Overworld_FadeOutMapMusic(void);
-void sub_805671C(void);
+void CB2_LoadMap(void);
bool8 sub_8055FC4(void);
+bool8 is_light_level_8_or_9(u8 mapType);
+bool32 sub_8055C9C(void);
+void Overworld_ResetStateAfterDigEscRope(void);
+bool32 sub_8058244(void);
#endif //GUARD_ROM4_H
diff --git a/include/palette.h b/include/palette.h
index 31c8ffefe..06b9b1f6f 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -43,7 +43,7 @@ struct PaletteFadeControl
extern struct PaletteFadeControl gPaletteFade;
extern u32 gPlttBufferTransferPending;
-extern u8 gPaletteDecompressionBuffer[];
+extern u8 *gUnknown_203AAB0;
extern u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE];
extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE];
diff --git a/include/party_menu.h b/include/party_menu.h
index 34b375e42..e4fc182e9 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -13,6 +13,23 @@ enum {
AILMENT_BRN
};
+struct Struct203B0A0
+{
+ MainCallback exitCallback;
+ TaskFunc unk4;
+ u8 unk8_0:4;
+ u8 mode:2;
+ u8 unk8_2:2;
+ s8 unk9;
+ s8 unkA;
+ u8 unkB;
+ u16 unkC;
+ s16 unkE;
+ s16 unk10;
+};
+
+extern struct Struct203B0A0 gUnknown_203B0A0;
+
extern void (*gUnknown_3005E98)(u8 taskId, TaskFunc func);
bool8 FieldCallback_PrepareFadeInFromMenu(void);
@@ -27,5 +44,23 @@ void sub_8126EDC(void);
void c2_8123744(void);
u8 GetCursorSelectionMonId(void);
void sub_8128370(void);
+void sub_811F818(u8 monId, u8 a1);
+void sub_8121D0C(u8);
+void sub_811FB28(u8 taskId);
+void sub_8120760(u8 taskId, u8 a1, s8 a2, s16 amount, TaskFunc followupFunc);
+void GetMonNickname(const struct Pokemon * mon, u8 * dest);
+void sub_81202F8(const u8 * src, u8 a1);
+bool8 sub_8120370(void);
+void PartyMenuInit(u8 a, u8 b, u8 c, u8 d, u8 messageId, TaskFunc task, MainCallback callback);
+void sub_81252D0(u8 taskId, TaskFunc followUpFunc);
+void ItemUseCB_PpRestore(u8 taskId, TaskFunc followUpFunc);
+void dp05_pp_up(u8 taskId, TaskFunc followUpFunc);
+void dp05_rare_candy(u8 taskId, TaskFunc followUpFunc);
+void sub_8126B60(u8 taskId, TaskFunc followUpFunc);
+void sub_8126894(u8 taskId, TaskFunc followUpFunc);
+void sub_81279E0(void);
+void ItemUseCB_Medicine(u8 taskId, TaskFunc followUpFunc);
+u8 GetItemEffectType(u16 itemId);
+u8 pokemon_order_func(u8);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pc_screen_effect.h b/include/pc_screen_effect.h
new file mode 100644
index 000000000..6d68de2d3
--- /dev/null
+++ b/include/pc_screen_effect.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_PC_SCREEN_EFFECT_H
+#define GUARD_PC_SCREEN_EFFECT_H
+
+void sub_80A0A48(u16, u16, u8);
+void sub_80A0A70(u16, u16, u8);
+bool8 sub_80A0AAC(void);
+bool8 sub_80A0A98(void);
+
+#endif //GUARD_PC_SCREEN_EFFECT_H
diff --git a/include/pokedex.h b/include/pokedex.h
index b389bf821..c4ec27e0b 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -7,7 +7,8 @@ void ResetPokedex(void);
void CopyMonCategoryText(u16 species, u8 *dst);
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
u16 GetNationalPokedexCount(u8);
-u16 GetHoennPokedexCount(u8);
+u16 GetKantoPokedexCount(u8);
+bool16 HasAllKantoMons(void);
u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
enum
diff --git a/include/pokemon.h b/include/pokemon.h
index a6dd9931b..9dd5850b4 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -2,6 +2,7 @@
#define GUARD_POKEMON_H
#include "global.h"
+#include "sprite.h"
#define MON_DATA_PERSONALITY 0
#define MON_DATA_OT_ID 1
@@ -109,6 +110,16 @@
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
+#define FRIENDSHIP_EVENT_GROW_LEVEL 0x0
+#define FRIENDSHIP_EVENT_VITAMIN 0x1
+#define FRIENDSHIP_EVENT_BATTLE_ITEM 0x2
+#define FRIENDSHIP_EVENT_LEAGUE_BATTLE 0x3
+#define FRIENDSHIP_EVENT_LEARN_TMHM 0x4
+#define FRIENDSHIP_EVENT_WALKING 0x5
+#define FRIENDSHIP_EVENT_FAINT_SMALL 0x6
+#define FRIENDSHIP_EVENT_FAINT_OUTSIDE_BATTLE 0x7
+#define FRIENDSHIP_EVENT_FAINT_LARGE 0x8
+
#define TYPE_NORMAL 0x00
#define TYPE_FIGHTING 0x01
#define TYPE_FLYING 0x02
@@ -425,8 +436,7 @@ struct BaseStats
/* 0x13 */ u8 growthRate;
/* 0x14 */ u8 eggGroup1;
/* 0x15 */ u8 eggGroup2;
- /* 0x16 */ u8 ability1;
- /* 0x17 */ u8 ability2;
+ /* 0x16 */ u8 abilities[2];
/* 0x18 */ u8 safariZoneFleeRate;
/* 0x19 */ u8 bodyColor : 7;
u8 noFlip : 1;
@@ -530,11 +540,6 @@ extern const u16 *const gLevelUpLearnsets[];
extern const u8 gFacilityClassToPicIndex[];
extern const u8 gFacilityClassToTrainerClass[];
-u8 CountAliveMons(u8 caseId);
-#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
-#define BATTLE_ALIVE_ATK_SIDE 1
-#define BATTLE_ALIVE_DEF_SIDE 2
-
void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);
void ZeroPlayerPartyMons(void);
@@ -545,30 +550,32 @@ void CreateMonWithNature(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV,
void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 gender, u8 nature, u8 unownLetter);
void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level);
void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality);
-void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId);
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread);
-u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
+void CreateBattleTowerMon(struct Pokemon *mon, struct BattleTowerPokemon *src);
+void sub_803E23C(struct Pokemon *mon, struct BattleTowerPokemon *dest);
void CalculateMonStats(struct Pokemon *mon);
-u8 GetLevelFromMonExp(struct Pokemon *mon);
+void BoxMonToMon(struct BoxPokemon *src, struct Pokemon *dest);
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon);
u16 GiveMoveToMon(struct Pokemon *mon, u16 move);
-u16 GiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
-void MonRestorePP(struct Pokemon *mon);
void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot);
void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot);
-void GiveMonInitialMoveset(struct Pokemon *mon);
-void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon);
+u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove);
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
-void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
-bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
-bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
+s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 battlerIdAtk, u8 battlerIdDef);
+
+#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
+#define BATTLE_ALIVE_ATK_SIDE 1
+#define BATTLE_ALIVE_DEF_SIDE 2
+
+u8 CountAliveMonsInBattle(u8 caseId);
+u8 GetDefaultMoveTarget(u8 battlerId);
u8 GetMonGender(struct Pokemon *mon);
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
-void EncryptBoxMon(struct BoxPokemon *boxMon);
-void DecryptBoxMon(struct BoxPokemon *boxMon);
+void SetMultiuseSpriteTemplateToPokemon(u16 speciesTag, u8 battlerPosition);
+void SetMultiuseSpriteTemplateToTrainerBack(u16 trainerSpriteId, u8 battlerPosition);
// These are full type signatures for GetMonData() and GetBoxMonData(),
// but they are not used since some code erroneously omits the third arg.
@@ -583,99 +590,81 @@ u32 GetMonData();
u32 GetBoxMonData();
#endif // IS_POKEMON_C
-void SetMonData(struct Pokemon *mon, s32 field, const void *data);
-void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *data);
+void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg);
+void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg);
void CopyMon(void *dest, void *src, size_t size);
u8 GiveMonToPlayer(struct Pokemon *mon);
-u8 SendMonToPC(struct Pokemon *mon);
u8 CalculatePlayerPartyCount(void);
u8 CalculateEnemyPartyCount(void);
-
+u8 GetMonsStateToDoubles(void);
u8 GetAbilityBySpecies(u16 species, bool8 altAbility);
u8 GetMonAbility(struct Pokemon *mon);
-void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord);
u8 GetSecretBaseTrainerPicIndex(void);
u8 GetSecretBaseTrainerNameIndex(void);
bool8 IsPlayerPartyAndPokemonStorageFull(void);
-bool8 IsPokemonStorageFull(void);
void GetSpeciesName(u8 *name, u16 species);
u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex);
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex);
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex);
-void CopyPlayerPartyMonToBattleData(u8 battleIndex, u8 partyIndex);
-
+bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
+bool8 PokemonUseItemEffects(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
+bool8 PokemonUseItemEffects2(struct Pokemon *pkmn, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
+u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
+const u8 *Battle_PrintStatBoosterEffectMessage(u16 itemId);
u8 GetNature(struct Pokemon *mon);
-u8 GetNatureFromPersonality(u32 personality);
-
-u16 nature_stat_mod(u8 nature, u16 n, u8 statIndex);
-
-void MonRestorePP(struct Pokemon *);
-void BoxMonRestorePP(struct BoxPokemon *);
-
+u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
u16 NationalPokedexNumToSpecies(u16 nationalNum);
-u16 NationalToHoennOrder(u16);
-u16 SpeciesToNationalPokedexNum(u16);
-u16 HoennToNationalOrder(u16);
+u16 SpeciesToNationalPokedexNum(u16 species);
+u16 HoennToNationalOrder(u16 hoennNum);
u16 SpeciesToCryId(u16 species);
-void DrawSpindaSpots(u16, u32, u8 *, u8);
-void AdjustFriendship(struct Pokemon *, u8);
-u8 CheckPartyHasHadPokerus(struct Pokemon *, u8);
-void UpdatePartyPokerusTime(u16);
-u32 CanMonLearnTMHM(struct Pokemon *, u8);
-u32 CanSpeciesLearnTMHM(u16 species, u8 tm);
+void DrawSpindaSpots(u16 species, u32 personality, u8 *dest, u8 a4);
+void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
+bool8 sub_80435E0(void);
+bool8 GetLinkTrainerFlankId(u8 linkPlayerId);
+s32 GetBankMultiplayerId(u16 a1);
+u8 GetTrainerEncounterMusicId(u16 trainer);
+void AdjustFriendship(struct Pokemon *mon, u8 event);
+void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
+u16 GetMonEVCount(struct Pokemon *mon);
+void sub_8043A68(void);
+u8 CheckPartyPokerus(struct Pokemon *party, u8 selection);
+u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection);
+void sub_8043B40(void);
+bool8 TryIncrementMonLevel(struct Pokemon *mon);
+u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm);
u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
+u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
+u8 GetNumberOfRelearnableMoves(struct Pokemon *mon);
+u16 sub_8043F90(u16 species);
void ClearBattleMonForms(void);
-const u8 *GetMonFrontSpritePal(struct Pokemon *mon);
-const u8 *GetFrontSpritePalFromSpeciesAndPersonality(u16, u32, u32);
-const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32);
-bool8 IsOtherTrainer(u32, u8 *);
-void SetWildMonHeldItem(void);
-u16 GetMonEVCount(struct Pokemon *);
-
-const struct CompressedSpritePalette *sub_806E794(struct Pokemon *mon);
+void PlayBattleBGM(void);
+void PlayMapChosenOrBattleBGM(u16 songId);
+const u32 *GetMonFrontSpritePal(struct Pokemon *mon);
+const u32 *GetFrontSpritePalFromSpeciesAndPersonality(u16 species, u32 otId, u32 personality);
const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *mon);
const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16 species, u32 otId , u32 personality);
bool32 IsHMMove2(u16 move);
bool8 IsPokeSpriteNotFlipped(u16 species);
-bool8 IsMonShiny(struct Pokemon *mon);
-bool8 IsShinyOtIdPersonality(u32 otId, u32 personality);
-
-void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
+s8 GetFlavorRelationByPersonality(u32 personality, u8 flavor);
bool8 IsTradedMon(struct Pokemon *mon);
+bool8 IsOtherTrainer(u32 otId, u8 *otName);
+void MonRestorePP(struct Pokemon *mon);
+void BoxMonRestorePP(struct BoxPokemon *boxMon);
+void sub_8044348(void);
+void SetWildMonHeldItem(void);
+bool8 IsMonShiny(struct Pokemon *mon);
+u8 *GetTrainerPartnerName(void);
+u8 GetPlayerPartyHighestLevel(void);
+u16 FacilityClassToPicIndex(u16 facilityClass);
+bool8 sub_804455C(u8 caseId, u8 battlerId);
+void SetDeoxysStats(void);
+u16 sub_80447AC(void);
+u16 sub_80447F0(void);
+void CreateObedientEnemyMon(void);
void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality);
-s32 GetBankMultiplayerId(u16 a1);
-bool16 sub_806D82C(u8 id);
-u16 MonTryLearningNewMove(struct Pokemon* mon, bool8);
-void sub_8068AA4(void); // sets stats for deoxys
-bool8 HasTwoFramesAnimation(u16 species);
-u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
-void RandomlyGivePartyPokerus(struct Pokemon *party);
-u8 CheckPartyPokerus(struct Pokemon *party, u8 selection);
-u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection);
-void UpdatePartyPokerusTime(u16 days);
-void PartySpreadPokerus(struct Pokemon *party);
-s8 GetMonFlavorRelation(struct Pokemon *mon, u8 a2);
-s8 GetFlavorRelationByPersonality(u32 personality, u8 a2);
-u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
-u8 GetDefaultMoveTarget(u8 atkBank);
-u16 PlayerGenderToFrontTrainerPicId(u8 playerGender);
-void sub_806A1C0(u16 arg0, u8 bankIdentity);
-void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity);
-u8 GetSecretBaseTrainerPicIndex(void);
-bool8 TryIncrementMonLevel(struct Pokemon *mon);
-void BoxMonToMon(struct BoxPokemon *srcMon, struct Pokemon *dstMon);
-u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
-bool8 HealStatusConditions(struct Pokemon *mon, u32 battlePartyId, u32 healMask, u8 battlerId);
-
-#include "sprite.h"
-
-void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
-void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
-void BattleAnimateBackSprite(struct Sprite* sprite, u16 species);
-
-void PlayMapChosenOrBattleBGM(u16 songId);
-u8 GetMonsStateToDoubles(void);
-void sub_803E0A4(struct Pokemon *mon, struct BattleTowerPokemon *src);
-void SetMultiuseSpriteTemplateToPokemon(u16 trainerSpriteId, u8 battlerPosition);
+bool8 CheckBattleTypeGhost(struct Pokemon *mon, u8 bank);
+struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 enable);
+void OakSpeechNidoranFFreeResources(void);
+void *OakSpeechNidoranFGetBuffer(u8 bufferId);
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_3.h b/include/pokemon_3.h
deleted file mode 100644
index e65bc85fc..000000000
--- a/include/pokemon_3.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef GUARD_POKEMON_3_H
-#define GUARD_POKEMON_3_H
-
-#include "global.h"
-
-const u8* GetTrainerClassNameFromId(u16 trainerId);
-const u8* GetTrainerNameFromId(u16 trainerId);
-void * SetUpMonSpriteManagerMaybe(u8, u8);
-void sub_8044D80(void);
-void * sub_8044E00(u8 buffId);
-
-#endif // GUARD_POKEMON_3_H
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 593715b7d..cd8c798f9 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -15,5 +15,6 @@ void FreeMonIconPalettes(void);
u16 sub_8096FD4(u16);
u8 sub_8096ECC(u16, void (*)(struct Sprite *), s16, s16, u8, bool32);
void sub_8097070(struct Sprite *);
+u16 GetUnownLetterByPersonality(u32 personality);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index f2fbe85a7..8ab9e5f0e 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -14,5 +14,6 @@ u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request);
void sub_808BCB4(u8 boxId, u8 monPosition);
u8 * GetBoxNamePtr(u8 boxId);
void sub_808CE60(void);
+u8 StorageGetCurrentBox(void);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/include/quest_log.h b/include/quest_log.h
index aca3e5fe8..858ea593a 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -27,6 +27,11 @@ void sub_8115748(u16);
u8 sub_8112CAC(void);
bool8 sub_81119D4(void (*func)(void));
void sub_8111F38(u16, u16);
+void sub_8111134(void);
+void sub_8112EDC(u8 a0);
+u8 sub_8112EB4(void);
+void sub_8113018(const u8 * text, u8 mode);
+void MapNamePopupWindowIdSetDummy(void);
extern u8 gUnknown_203ADFA;
diff --git a/include/region_map.h b/include/region_map.h
index ea8a8130e..394fee469 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -95,5 +95,6 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
u8 *GetMapName(u8 *, u16, u16);
bool32 sub_8124668(u8 mapSecId);
void sub_80C4DF8(u8 *, u8);
+void sub_80BFF50(u8 a0, void (*a1)(void));
#endif //GUARD_REGION_MAP_H
diff --git a/include/reset_save_heap.h b/include/reset_save_heap.h
new file mode 100644
index 000000000..8cb038906
--- /dev/null
+++ b/include/reset_save_heap.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_RESET_SAVE_HEAP_H
+#define GUARD_RESET_SAVE_HEAP_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+void sub_8079B7C(void);
+
+#endif //GUARD_RESET_SAVE_HEAP_H
+
diff --git a/include/safari_zone.h b/include/safari_zone.h
index b20555a8c..feaa93ed0 100644
--- a/include/safari_zone.h
+++ b/include/safari_zone.h
@@ -4,6 +4,7 @@
#include "global.h"
extern u8 gNumSafariBalls;
+extern u16 gSafariZoneStepCounter;
bool32 GetSafariZoneFlag(void);
void SetSafariZoneFlag(void);
@@ -15,7 +16,4 @@ void ExitSafariMode(void);
bool8 SafariZoneTakeStep(void);
void SafariZoneRetirePrompt(void);
-struct Pokeblock *SafariZoneGetActivePokeblock(void);
-void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index);
-
#endif // GUARD_SAFARI_ZONE_H
diff --git a/include/save.h b/include/save.h
index f547230b9..7a74373c8 100644
--- a/include/save.h
+++ b/include/save.h
@@ -121,7 +121,7 @@ u8 Save_LoadGameData(u8 a1);
u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
u32 sub_8153634(u8 sector, u8* src);
void sub_8153688(u8 taskId);
-u32 sub_80DA5E0(u8 sector, u8* src);
+u32 TryWriteSpecialSaveSection(u8 sector, u8* src);
void sub_80DA634(u8 taskId);
#endif // GUARD_SAVE_H
diff --git a/include/save_location.h b/include/save_location.h
index 69b39ea53..4e01c64e4 100644
--- a/include/save_location.h
+++ b/include/save_location.h
@@ -1,11 +1,15 @@
#ifndef GUARD_SAVE_LOCATION_H
#define GUARD_SAVE_LOCATION_H
-#include "global.h"
+// specialSaveWarp flags
+#define CONTINUE_GAME_WARP (1 << 0)
+#define POKECENTER_SAVEWARP (1 << 1)
+#define LOBBY_SAVEWARP (1 << 2)
+#define UNK_SPECIAL_SAVE_WARP_FLAG_3 (1 << 3)
-bool32 sub_81AFCEC(void);
void TrySetMapSaveWarpStatus(void);
-void sub_81AFDA0(void);
-void sub_81AFDD0(void);
+bool32 IsCurMapPokeCenter(void);
+void sub_810B810(void);
+void sub_810B82C(void);
-#endif // GUARD_SAVE_LOCATION_H
+#endif // GUARD_SAVE_LOCATION_H \ No newline at end of file
diff --git a/include/script.h b/include/script.h
index 8ffbe1563..4e8b8c305 100644
--- a/include/script.h
+++ b/include/script.h
@@ -72,6 +72,7 @@ void sub_80699A4(void);
void sub_8069970(void);
void sub_8069A20(void);
void sub_8069A2C(void);
+bool8 IsMsgSignPost(void);
extern const u8 *gRAMScriptPtr;
diff --git a/include/script_menu.h b/include/script_menu.h
index f82b061a5..c1e32beae 100644
--- a/include/script_menu.h
+++ b/include/script_menu.h
@@ -10,6 +10,9 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 va
bool8 ScriptMenu_YesNo(u8 var1, u8 var2);
bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3);
+bool32 ScrSpecial_CreatePCMenu(void);
+void ScriptMenu_DisplayPCStartupPrompt(void);
+
bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void);
void sub_809D6D4(void);
diff --git a/include/shop.h b/include/shop.h
index 05f5160e6..481fd6c76 100644
--- a/include/shop.h
+++ b/include/shop.h
@@ -2,6 +2,7 @@
#define GUARD_SHOP_H
#include "global.h"
+#include "menu_helpers.h"
extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3];
@@ -9,5 +10,15 @@ void CreatePokemartMenu(const u16 *);
void CreateDecorationShop1Menu(const u16 *);
void CreateDecorationShop2Menu(const u16 *);
void sub_809C09C(u16, u16, u8);
+u8 sub_809B56C(void);
+
+// buy_menu_helper
+void BuyMenuInitWindows(bool32 isSellingTM);
+void BuyMenuDrawMoneyBox(void);
+void BuyMenuPrint(u8 windowId, u8 font, const u8 *text, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, s8 speed, u8 color);
+void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback);
+void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram);
+void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram);
+void BuyMenuConfirmPurchase(u8 taskId, const struct YesNoFuncTable *yesNo);
#endif // GUARD_SHOP_H
diff --git a/include/sound.h b/include/sound.h
index e720fc1a2..e5736fad8 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -12,7 +12,6 @@ void StopMapMusic(void);
void FadeOutMapMusic(u8 speed);
void FadeOutAndPlayNewMapMusic(u16 songNum, u8 speed);
void FadeOutAndFadeInNewMapMusic(u16 songNum, u8 fadeOutSpeed, u8 fadeInSpeed);
-void FadeInNewMapMusic(u16 songNum, u8 speed);
bool8 IsNotWaitingForBGMStop(void);
void PlayFanfareByFanfareNum(u8 fanfareNum);
bool8 WaitFanfare(bool8 stop);
diff --git a/include/sprite.h b/include/sprite.h
index bc47f7100..27e5dc852 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -4,28 +4,30 @@
#include "global.h"
#define MAX_SPRITES 64
+#define SPRITE_INVALID_TAG 0xFFFF
struct SpriteSheet
{
- const u8 *data; // Raw uncompressed pixel data
+ const void *data; // Raw uncompressed pixel data
u16 size;
u16 tag;
};
struct CompressedSpriteSheet
{
- const u8 *data; // LZ77 compressed pixel data
+ const u32 *data; // LZ77 compressed pixel data
u16 size; // Uncompressed size of pixel data
u16 tag;
};
struct SpriteFrameImage
{
- const u8 *data;
+ const void *data;
u16 size;
};
#define obj_frame_tiles(ptr) {.data = (u8 *)ptr, .size = sizeof ptr}
+#define overworld_frame(ptr, width, height, frame) {.data = (u8 *)ptr + (width * height * frame * 64)/2, .size = (width * height * 64)/2}
struct SpritePalette
{
@@ -35,7 +37,7 @@ struct SpritePalette
struct CompressedSpritePalette
{
- const u8 *data; // LZ77 compressed palette data
+ const u32 *data; // LZ77 compressed palette data
u16 tag;
};
@@ -102,6 +104,12 @@ struct AffineAnimJumpCmd
u16 target;
};
+struct AffineAnimEndCmdAlt
+{
+ s16 type;
+ u16 val;
+};
+
union AffineAnimCmd
{
s16 type;
@@ -126,6 +134,8 @@ union AffineAnimCmd
{.loop = {.type = AFFINEANIMCMDTYPE_LOOP, .count = _count}}
#define AFFINEANIMCMD_JUMP(_target) \
{.jump = {.type = AFFINEANIMCMDTYPE_JUMP, .target = _target}}
+#define AFFINEANIMCMD_END_ALT(_val) \
+ {.end = {.type = AFFINEANIMCMDTYPE_END, .val = _val}}
struct AffineAnimState
{
@@ -163,6 +173,8 @@ struct SubspriteTable
struct Sprite;
+typedef void (*SpriteCallback)(struct Sprite *);
+
struct SpriteTemplate
{
u16 tileTag;
@@ -171,7 +183,7 @@ struct SpriteTemplate
const union AnimCmd *const *anims;
const struct SpriteFrameImage *images;
const union AffineAnimCmd *const *affineAnims;
- void (*callback)(struct Sprite *);
+ SpriteCallback callback;
};
struct Sprite
@@ -182,7 +194,7 @@ struct Sprite
/*0x10*/ const union AffineAnimCmd *const *affineAnims;
/*0x14*/ const struct SpriteTemplate *template;
/*0x18*/ const struct SubspriteTable *subspriteTables;
- /*0x1C*/ void (*callback)(struct Sprite *);
+ /*0x1C*/ SpriteCallback callback;
/*0x20*/ struct Coords16 pos1;
/*0x24*/ struct Coords16 pos2;
@@ -237,7 +249,7 @@ extern const union AnimCmd *const gDummySpriteAnimTable[];
extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
extern s16 gSpriteCoordOffsetX;
extern s16 gSpriteCoordOffsetY;
-
+extern const struct SpriteTemplate gDummySpriteTemplate;
extern struct Sprite gSprites[];
void ResetSpriteData(void);
@@ -300,5 +312,6 @@ void CopyFromSprites(u8 *dest);
u8 SpriteTileAllocBitmapOp(u16 bit, u8 op);
void ClearSpriteCopyRequests(void);
void ResetAffineAnimData(void);
+void sub_8007FFC(struct Sprite* sprite, s16 a2, s16 a3);
#endif //GUARD_SPRITE_H
diff --git a/include/strings.h b/include/strings.h
index 6af1b0d69..85b67ed57 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -91,6 +91,7 @@ extern const u8 gText_PkmnFainted3[];
extern const u8 gText_Coins[];
extern const u8 gText_EggNickname[];
extern const u8 gText_Pokemon[];
+extern const u8 gText_PkmnFainted3[];
extern const u8 gOtherText_Use[];
extern const u8 gOtherText_Give[];
@@ -113,6 +114,93 @@ extern const u8 gText_ICanPayThisMuch_WouldThatBeOkay[];
extern const u8 gText_TurnedOverItemsWorthYen[];
extern const u8 gPokeDudeText_TMTypes[];
extern const u8 gPokeDudeText_ReadTMDescription[];
-extern const u16 gTMCaseMainWindowPalette[];
+extern const u8 gFameCheckerText_Cancel[];
+
+// teachy_tv
+extern const u8 gTeachyTvString_TeachBattle[];
+extern const u8 gTeachyTvString_StatusProblems[];
+extern const u8 gTeachyTvString_TypeMatchups[];
+extern const u8 gTeachyTvString_CatchPkmn[];
+extern const u8 gTeachyTvString_AboutTMs[];
+extern const u8 gTeachyTvString_RegisterItem[];
+extern const u8 gTeachyTvString_Cancel[];
+extern const u8 gTeachyTvText_PokeDudeSaysHello[];
+extern const u8 gTeachyTvText_BattleScript1[];
+extern const u8 gTeachyTvText_StatusScript1[];
+extern const u8 gTeachyTvText_MatchupsScript1[];
+extern const u8 gTeachyTvText_CatchingScript1[];
+extern const u8 gTeachyTvText_TMsScript1[];
+extern const u8 gTeachyTvText_RegisterScript1[];
+extern const u8 gTeachyTvText_BattleScript2[];
+extern const u8 gTeachyTvText_StatusScript2[];
+extern const u8 gTeachyTvText_MatchupsScript2[];
+extern const u8 gTeachyTvText_CatchingScript2[];
+extern const u8 gTeachyTvText_TMsScript2[];
+extern const u8 gTeachyTvText_RegisterScript2[];
+
+// help_system_812B1E0
+extern const u8 gUnknown_841DFA5[];
+extern const u8 gUnknown_841DFAC[];
+extern const u8 gUnknown_841DFBE[];
+extern const u8 gUnknown_841DFC9[];
+
+// help_system
+extern const u8 gString_Bill[];
+extern const u8 gString_Someone[];
+extern const u8 gString_Help[];
+extern const u8 gString_HelpSystem_ClearTo8[];
+
+extern const u8 gOtherText_Give[];
+extern const u8 gFameCheckerText_Cancel[];
+extern const u8 gOtherText_StrVar1[];
+extern const u8 gOtherText_WhereShouldTheStrVar1BePlaced[];
+extern const u8 gOtherText_Powder[];
+extern const u8 gText_NoMoreRoomInBag[];
+extern const u8 gText_WithdrawHowMany[];
+extern const u8 gText_WithdrewQuantItem[];
+extern const u8 gText_WithdrawItem[];
+extern const u8 gText_Withdraw[];
+extern const u8 gText_ReturnToPC[];
+
+extern const u8 gUnknown_8416425[];
+extern const u8 gUnknown_8416451[];
+extern const u8 gUnknown_8416537[];
+extern const u8 gUnknown_841658C[];
+extern const u8 gUnknown_841659E[];
+extern const u8 gUnknown_84165D2[];
+extern const u8 gUnknown_8416600[];
+extern const u8 gUnknown_8416631[];
+extern const u8 gUnknown_8416644[];
+extern const u8 gUnknown_841665C[];
+extern const u8 gUnknown_8416690[];
+extern const u8 gUnknown_84166A7[];
+extern const u8 gUnknown_84169DC[];
+extern const u8 gUnknown_841623D[];
+extern const u8 gUnknown_84162BD[];
+extern const u8 gUnknown_841D148[];
+
+// pokemon.c
+extern const u8 BattleText_Rose[];
+extern const u8 BattleText_UnknownString3[];
+extern const u8 BattleText_GetPumped[];
+extern const u8 BattleText_MistShroud[];
+extern const u8 gText_EggNickname[];
+extern const u8 gText_BadEgg[];
+extern const u8 gText_PkmnsXPreventsSwitching[];
+extern u8 *gUnknown_83FD5D0[];
+
+// diploma
+extern const u8 gUnknown_841B60E[];
+extern const u8 gUnknown_841B619[];
+extern const u8 gUnknown_841B684[];
+extern const u8 gUnknown_841B68F[];
+extern const u8 gUnknown_841B698[];
+
+// battle_records
+extern const u8 gString_BattleRecords_PlayersBattleResults[];
+extern const u8 gString_BattleRecords_TotalRecord[];
+extern const u8 gString_BattleRecords_ColumnHeaders[];
+extern const u8 gString_BattleRecords_7Dashes[];
+extern const u8 gString_BattleRecords_4Dashes[];
#endif //GUARD_STRINGS_H
diff --git a/include/task.h b/include/task.h
index cd3deb544..834bb5655 100644
--- a/include/task.h
+++ b/include/task.h
@@ -4,6 +4,7 @@
#include "global.h"
#define NUM_TASKS 16
+#define TASK_NONE 0xFF
typedef void (*TaskFunc)(u8 taskId);
diff --git a/include/teachy_tv.h b/include/teachy_tv.h
index 374780c04..36bac6a67 100644
--- a/include/teachy_tv.h
+++ b/include/teachy_tv.h
@@ -1,7 +1,8 @@
#ifndef GUARD_TEACHY_TV_H
#define GUARD_TEACHY_TV_H
+void InitTeachyTvController(u8 mode, void (*cb)());
void CB2_ReturnToTeachyTV(void);
-void sub_815AC20(void);
+void SetTeachyTvControllerModeToResume(void);
#endif //GUARD_TEACHY_TV_H
diff --git a/include/text.h b/include/text.h
index e0533cc98..07f6b29c2 100644
--- a/include/text.h
+++ b/include/text.h
@@ -68,7 +68,8 @@
#define CHAR_y 0xED
#define CHAR_z 0xEE
#define CHAR_SPECIAL_F7 0xF7
-#define CHAR_SPECIAL_F9 0xF9
+#define CHAR_KEYPAD_ICON 0xF8
+#define CHAR_EXTRA_EMOJI 0xF9
#define CHAR_COLON 0xF0
#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog
@@ -90,6 +91,18 @@
#define TEXT_SPEED_FF 0xFF
+enum
+{
+ FONTATTR_MAX_LETTER_WIDTH,
+ FONTATTR_MAX_LETTER_HEIGHT,
+ FONTATTR_LETTER_SPACING,
+ FONTATTR_LINE_SPACING,
+ FONTATTR_UNKNOWN, // dunno what this is yet
+ FONTATTR_COLOR_FOREGROUND,
+ FONTATTR_COLOR_BACKGROUND,
+ FONTATTR_COLOR_SHADOW
+};
+
struct TextPrinterSubStruct
{
u8 font_type:4; // 0x14
@@ -192,6 +205,8 @@ extern u8 gStringVar2[];
extern u8 gStringVar3[];
extern u8 gStringVar4[];
+extern const u8 gKeypadIconTiles[];
+
void SetFontsPointer(const struct FontInfo *fonts);
void DeactivateAllTextPrinters(void);
u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
@@ -215,6 +230,7 @@ u16 Font4Func(struct TextPrinter *textPrinter);
u16 Font5Func(struct TextPrinter *textPrinter);
u16 Font7Func(struct TextPrinter *textPrinter);
u16 Font8Func(struct TextPrinter *textPrinter);
+u16 Font6Func(struct TextPrinter *textPrinter);
void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter);
void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter);
@@ -248,6 +264,7 @@ s32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont9(u16 glyphId);
s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese);
s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese);
+void DecompressGlyphFont5(u16 glyphId, bool32 isJapanese);
s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese);
void sub_80062B0(struct Sprite *sprite);
u8 CreateTextCursorSpriteForOakSpeech(u8 sheetId, u16 x, u16 y, u8 priority, u8 subpriority);
diff --git a/include/text_window.h b/include/text_window.h
index c384ca1bb..c1463a9c7 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -20,11 +20,14 @@ void rbox_fill_rectangle(u8 windowId);
const u16* stdpal_get(u8 id);
const u16* GetOverworldTextboxPalettePtr(void);
void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset);
-void sub_814FEAC(u8 windowId, u16 tileStart, u8 palette);
-void sub_814FF2C(u8 windowId, u16 tileStart, u8 palette);
-void sub_815001C(u8 windowId, u16 tileStart, u8 palette);
+void TextWindow_LoadResourcesStdFrame0(u8 windowId, u16 tileStart, u8 palette);
+void TextWindow_SetStdFrame0_WithPal(u8 windowId, u16 tileStart, u8 palette);
+void TextWindow_SetUserSelectedFrame(u8 windowId, u16 tileStart, u8 palette);
void LoadUserWindowBorderGfx(u8 windowId, u16 tileStart, u8 palette);
void sub_814FDA0(u8 windowId, u16 tileStart, u8 palette);
void DrawTextBorderOuter(u8 windowId, u16 tileStart, u8 palette);
+void TextWindow_LoadTilesStdFrame1(u8 windowId, u16 destOffset);
+void sub_814FE6C(u8 windowId, u16 destOffset, u8 palIdx);
+void sub_814FEEC(u8 windowId, u16 destOffset, u8 palIdx);
#endif // GUARD_TEXT_WINDOW_H
diff --git a/include/text_window_graphics.h b/include/text_window_graphics.h
index 5fa78d955..17e919705 100644
--- a/include/text_window_graphics.h
+++ b/include/text_window_graphics.h
@@ -8,11 +8,11 @@ struct TextWindowGraphics
};
extern const u16 gUnknown_8470B0C[];
-extern const u16 gUnknown_8471A4C[];
-extern const u16 gUnknown_8471B6C[];
+extern const u16 gStdFrame0[];
+extern const u16 gStdFrame1[];
extern const u16 gUnknown_8471DEC[][16];
-extern const struct TextWindowGraphics gUnknown_8471E8C[];
+extern const struct TextWindowGraphics gUserFrames[];
const struct TextWindowGraphics * sub_8069788(u8 idx);
diff --git a/include/trainer_card.h b/include/trainer_card.h
new file mode 100644
index 000000000..e8531cef5
--- /dev/null
+++ b/include/trainer_card.h
@@ -0,0 +1,43 @@
+#ifndef GUARD_TRAINER_CARD_H
+#define GUARD_TRAINER_CARD_H
+
+struct TrainerCard
+{
+ /*0x00*/ u8 gender;
+ /*0x01*/ u8 stars;
+ /*0x02*/ bool8 hasPokedex;
+ /*0x03*/ bool8 caughtAllHoenn;
+ /*0x04*/ bool8 hasAllPaintings;
+ /*0x06*/ u16 hofDebutHours;
+ /*0x08*/ u16 hofDebutMinutes;
+ /*0x0A*/ u16 hofDebutSeconds;
+ /*0x0C*/ u16 caughtMonsCount;
+ /*0x0E*/ u16 trainerId;
+ /*0x10*/ u16 playTimeHours;
+ /*0x12*/ u16 playTimeMinutes;
+ /*0x14*/ u16 linkBattleWins;
+ /*0x16*/ u16 linkBattleLosses;
+ /*0x18*/ u16 battleTowerWins;
+ /*0x1A*/ u16 battleTowerStraightWins;
+ /*0x1C*/ u16 contestsWithFriends;
+ /*0x1E*/ u16 pokeblocksWithFriends;
+ /*0x20*/ u16 pokemonTrades;
+ /*0x24*/ u32 money;
+ /*0x28*/ u16 var_28[4];
+ /*0x30*/ u8 playerName[PLAYER_NAME_LENGTH + 1];
+ /*0x38*/ u8 version;
+ /*0x3A*/ u16 var_3A;
+ /*0x3C*/ u32 berryCrushPoints;
+ /*0x40*/ u32 unionRoomNum;
+ /*0x44*/ u8 filler44[0x8];
+ /*0x4C*/ u8 var_4C;
+ /*0x4D*/ u8 var_4D;
+ /*0x4E*/ u8 var_4E;
+ /*0x4F*/ u8 var_4F;
+ /*0x50*/ u8 var_50[0x4];
+ /*0x54*/ u16 monSpecies[PARTY_SIZE];
+};
+
+extern struct TrainerCard gTrainerCards[4];
+
+#endif //GUARD_TRAINER_CARD_H
diff --git a/include/trainer_tower.h b/include/trainer_tower.h
new file mode 100644
index 000000000..b9c16d958
--- /dev/null
+++ b/include/trainer_tower.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_TRAINER_TOWER_H
+#define GUARD_TRAINER_TOWER_H
+
+void PrintTrainerTowerRecords(void);
+
+#endif //GUARD_TRAINER_TOWER_H
diff --git a/include/unk_8159F40.h b/include/unk_8159F40.h
index f0e85d416..7f6a98c3a 100644
--- a/include/unk_8159F40.h
+++ b/include/unk_8159F40.h
@@ -3,6 +3,7 @@
#include "global.h"
+void sub_8159F40(void);
void sub_815A008(struct QuestLog *);
void sub_815A1F8(struct QuestLog *, struct MapObjectTemplate *);
diff --git a/include/unk_815C980.h b/include/unk_815C980.h
index 78d4bd73b..a3249a8e2 100644
--- a/include/unk_815C980.h
+++ b/include/unk_815C980.h
@@ -17,8 +17,8 @@ struct UnkStruct3
void sub_815C9F4(void);
void sub_815D108(u32 id);
-void sub_815CD70(u32 id, s32 arg1);
-u8 sub_815D324(u32 shape, u32 size);
+void sub_815D1A8(u32 id, bool32 arg1);
bool32 sub_815CA40(u32 id, s32 arg1, const struct UnkStruct3 *arg2);
+void sub_815CD70(u32 id, s32 arg1);
#endif //GUARD_UNK_815C980_H
diff --git a/include/unk_815c27c.h b/include/unk_815c27c.h
index cc1cbb7ce..02c886895 100644
--- a/include/unk_815c27c.h
+++ b/include/unk_815c27c.h
@@ -1,11 +1,11 @@
#ifndef GUARD_UNK_815C27C_H
#define GUARD_UNK_815C27C_H
-void sub_815C6D4(void);
-void sub_815C6C4(void);
-void sub_815C8C8(void);
-void sub_815C960(void);
-void sub_815C91C(void);
-u16 sub_815C498(u8, size_t, const void *, u8);
+void EReaderHelper_SerialCallback(void);
+void EReaderHelper_Timer3Callback(void);
+void EReaderHelper_SaveRegsState(void);
+void EReaderHelper_ClearsSendRecvMgr(void);
+void EReaderHelper_RestoreRegsState(void);
+u16 EReaderHandleTransfer(u8, size_t, const void *, void *);
#endif //GUARD_UNK_815C27C_H
diff --git a/include/unk_text_util.h b/include/unk_text_util.h
deleted file mode 100644
index 750c0541e..000000000
--- a/include/unk_text_util.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef GUARD_UNK_TEXT_UTIL_H
-#define GUARD_UNK_TEXT_UTIL_H
-
-#include "global.h"
-
-void UnkTextUtil_Reset(void);
-void UnkTextUtil_SetPtrI(u8 idx, const u8 *ptr);
-u8 *UnkTextUtil_StringExpandPlaceholders(u8 *dest, const u8 *src);
-const u8 *UnkTextUtil_GetPtrI(u8 idx);
-
-#endif //GUARD_UNK_TEXT_UTIL_H
diff --git a/include/wild_encounter.h b/include/wild_encounter.h
index b4c42116a..bf53ed6ee 100644
--- a/include/wild_encounter.h
+++ b/include/wild_encounter.h
@@ -43,6 +43,7 @@ u16 GetLocalWildMon(bool8 *isWaterMon);
u16 GetLocalWaterMon(void);
bool8 UpdateRepelCounter(void);
void sub_8082740(u8);
-u8 GetUnownLetterByPersonality(u32 personality);
+u8 GetUnownLetterByPersonalityLoByte(u32 personality);
+bool8 SweetScentWildEncounter(void);
#endif // GUARD_WILD_ENCOUNTER_H
diff --git a/include/window.h b/include/window.h
index eb35e94d2..30e73dd32 100644
--- a/include/window.h
+++ b/include/window.h
@@ -47,6 +47,8 @@ struct Window
u8 *tileData;
};
+typedef void (*WindowFunc)(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+
bool16 InitWindows(const struct WindowTemplate *templates);
u16 AddWindow(const struct WindowTemplate *template);
int AddWindowWithoutTileMap(const struct WindowTemplate *template);
@@ -64,7 +66,7 @@ void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16
void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset);
void FillWindowPixelBuffer(u8 windowId, u8 fillValue);
void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue);
-void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8));
+void CallWindowFunction(u8 windowId, WindowFunc func);
bool8 SetWindowAttribute(u8 windowId, u8 attributeId, u32 value);
u32 GetWindowAttribute(u8 windowId, u8 attributeId);
u16 AddWindow8Bit(struct WindowTemplate *template);