summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle.h100
-rw-r--r--include/battle_anim.h6
-rw-r--r--include/battle_gfx_sfx_util.h50
-rw-r--r--include/battle_interface.h9
-rw-r--r--include/battle_script_commands.h2
-rw-r--r--include/battle_setup.h3
-rw-r--r--include/battle_util2.h10
-rw-r--r--include/contest.h10
-rw-r--r--include/data/pokemon/egg_moves.h1315
-rw-r--r--include/data/region_map/region_map_entries.h421
-rw-r--r--include/daycare.h27
-rw-r--r--include/decompress.h2
-rw-r--r--include/egg_hatch.h10
-rw-r--r--include/event_data.h10
-rwxr-xr-xinclude/event_scripts.h32
-rw-r--r--include/field_effect.h5
-rw-r--r--include/flags.h193
-rw-r--r--include/global.h77
-rw-r--r--include/hall_of_fame.h8
-rw-r--r--include/heal_location.h25
-rw-r--r--include/international_string_util.h2
-rw-r--r--include/items.h3
-rw-r--r--include/link.h3
-rw-r--r--include/list_menu.h30
-rw-r--r--include/mail.h6
-rw-r--r--include/malloc.h6
-rw-r--r--include/menu.h2
-rw-r--r--include/overworld.h5
-rw-r--r--include/party_menu.h1
-rw-r--r--include/pokeblock.h2
-rw-r--r--include/pokedex.h2
-rw-r--r--include/pokemon.h11
-rw-r--r--include/pokemon_storage_system.h5
-rw-r--r--include/recorded_battle.h37
-rw-r--r--include/region_map.h515
-rw-r--r--include/rom6.h1
-rw-r--r--include/save.h61
-rw-r--r--include/secret_base.h1
-rw-r--r--include/starter_choose.h7
-rw-r--r--include/strings.h7
-rw-r--r--include/text_window.h2
-rw-r--r--include/tv.h1
-rw-r--r--include/vars.h4
-rw-r--r--include/wild_encounter.h44
44 files changed, 2602 insertions, 471 deletions
diff --git a/include/battle.h b/include/battle.h
index ace2bb4ad..0939c92b6 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -6,6 +6,8 @@
#include "battle_script_commands.h"
#include "battle_2.h"
#include "battle_ai_switch_items.h"
+#include "battle_gfx_sfx_util.h"
+#include "battle_util2.h"
/*
Banks are a name given to what could be called a 'battlerId' or 'monControllerId'.
@@ -252,11 +254,21 @@
#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]))
+#define TYPE_EFFECT_DEF_TYPE(i)((gTypeEffectiveness[i + 1]))
+#define TYPE_EFFECT_MULTIPLIER(i)((gTypeEffectiveness[i + 2]))
+
+// defines for the gTypeEffectiveness multipliers
#define TYPE_MUL_NO_EFFECT 0
#define TYPE_MUL_NOT_EFFECTIVE 5
#define TYPE_MUL_NORMAL 10
#define TYPE_MUL_SUPER_EFFECTIVE 20
+// special type table Ids
+#define TYPE_FORESIGHT 0xFE
+#define TYPE_ENDTABLE 0xFF
+
#define BS_GET_TARGET 0
#define BS_GET_ATTACKER 1
#define BS_GET_EFFECT_BANK 2
@@ -361,8 +373,8 @@ struct DisableStruct
/*0x0D*/ u8 unkD;
/*0x0E*/ u8 encoreTimer1 : 4;
/*0x0E*/ u8 encoreTimer2 : 4;
- /*0x0F*/ u8 perishSong1 : 4;
- /*0x0F*/ u8 perishSong2 : 4;
+ /*0x0F*/ u8 perishSongTimer1 : 4;
+ /*0x0F*/ u8 perishSongTimer2 : 4;
/*0x10*/ u8 furyCutterCounter;
/*0x11*/ u8 rolloutCounter1 : 4;
/*0x11*/ u8 rolloutCounter2 : 4;
@@ -611,7 +623,7 @@ struct BattleStruct
u8 sentInPokes;
bool8 selectionScriptFinished[BATTLE_BANKS_COUNT];
u8 field_58[4];
- u8 field_5C[4];
+ u8 monToSwitchIntoId[BATTLE_BANKS_COUNT];
u8 field_60[4][3];
u8 runTries;
u8 caughtMonNick[11];
@@ -670,7 +682,7 @@ struct BattleStruct
u8 fillerDC[0xDF-0xDC];
u8 field_DF;
u8 mirrorMoveArrays[32];
- u16 castformPalette[4][16];
+ u16 castformPalette[BATTLE_BANKS_COUNT][16];
u8 field_180;
u8 field_181;
u8 field_182;
@@ -683,7 +695,7 @@ struct BattleStruct
u8 field_1A4[96];
u8 field_204[104];
u8 field_26C[40];
- u8 field_294[4];
+ u8 AI_monToSwitchIntoId[BATTLE_BANKS_COUNT];
u8 field_298[8];
u8 field_2A0;
u8 field_2A1;
@@ -807,6 +819,18 @@ extern struct BattleStruct* gBattleStruct;
#define B_ANIM_SUBSTITUTE_TO_MON 0x5
#define B_ANIM_MON_TO_SUBSTITUTE 0x6
+// status animation table
+#define B_ANIM_STATUS_PSN 0x0
+#define B_ANIM_STATUS_CONFUSION 0x1
+#define B_ANIM_STATUS_BRN 0x2
+#define B_ANIM_STATUS_INFATUATION 0x3
+#define B_ANIM_STATUS_SLP 0x4
+#define B_ANIM_STATUS_PRZ 0x5
+#define B_ANIM_STATUS_FRZ 0x6
+#define B_ANIM_STATUS_CURSED 0x7
+#define B_ANIM_STATUS_NIGHTMARE 0x8
+#define B_ANIM_STATUS_WRAPPED 0x9
+
#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
@@ -857,50 +881,6 @@ bool8 LoadChosenBattleElement(u8 caseId);
void DrawMainBattleBackground(void);
void task00_0800F6FC(u8 taskId);
-// battle_5
-void AllocateBattleResrouces(void);
-void FreeBattleResources(void);
-void AdjustFriendshipOnBattleFaint(u8 bank);
-void sub_80571DC(u8 bank, u8 arg1);
-u32 sub_805725C(u8 bank);
-
-// battle 7
-void AllocateBattleSpritesData(void);
-void FreeBattleSpritesData(void);
-void AllocateMonSpritesGfx(void);
-void FreeMonSpritesGfx(void);
-void BattleMusicStop(void);
-void sub_805E990(struct Pokemon *mon, u8 bank);
-void sub_805EF14(void);
-bool8 BattleInitAllSprites(u8 *state1, u8 *state2);
-void sub_805E350(void);
-bool8 BattleLoadAllHealthBoxesGfx(u8 state);
-void LoadAndCreateEnemyShadowSprites(void);
-void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species);
-void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank);
-void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank);
-void BattleLoadSubstituteSpriteGfx(u8 bank, bool8 arg1);
-void nullsub_24(u16 arg0);
-void nullsub_25(u8 arg0);
-void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute);
-void sub_805D714(struct Sprite *sprite);
-void DecompressTrainerBackPic(u16 backPicId, u8 bank);
-void DecompressTrainerFrontPic(u16 frontPicId, u8 bank);
-void FreeTrainerFrontPicPalette(u16 frontPicId);
-void sub_805D7AC(struct Sprite *sprite);
-bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
-void sub_805EB9C(u8 arg0);
-void sub_805E394(void);
-void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move);
-void DoStatusAnimation(bool8 isStatus2, u32 status);
-void DoSpecialBattleAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId);
-bool8 DoBattleAnimationFromTable(u8 active, u8 atkBank, u8 defBank, u8 tableId, u16 argument);
-void CopyBattleSpriteInvisibility(u8 bank);
-u16 ChooseMoveAndTargetInBattlePalace(void);
-void LoadBattleBarGfx(u8 arg0);
-bool8 mplay_80342A4(u8 bank);
-void sub_805EEE0(u8 bank);
-
enum
{
BACK_PIC_BRENDAN,
@@ -921,7 +901,7 @@ u8 GetBankByIdentity(u8 bank);
struct BattleSpriteInfo
{
u16 invisible : 1; // 0x1
- u16 flag_x2 : 1; // 0x2
+ u16 lowHpSong : 1; // 0x2
u16 behindSubstitute : 1; // 0x4
u16 flag_x8 : 1; // 0x8
u16 hpNumbersNoBars : 1; // 0x10
@@ -930,7 +910,7 @@ struct BattleSpriteInfo
struct BattleAnimationInfo
{
- u16 field; // to fill up later
+ u16 animArg; // to fill up later
u8 field_2;
u8 field_3;
u8 field_4;
@@ -944,6 +924,12 @@ struct BattleAnimationInfo
u8 field_9_x20 : 1;
u8 field_9_x40 : 1;
u8 field_9_x80 : 1;
+ u8 field_A;
+ u8 field_B;
+ u8 field_C;
+ u8 field_D;
+ u8 field_E;
+ u8 field_F;
};
struct BattleHealthboxInfo
@@ -966,7 +952,7 @@ struct BattleHealthboxInfo
u8 animationState;
u8 field_5;
u8 field_6;
- u8 field_7;
+ u8 shadowSpriteId;
u8 field_8;
u8 field_9;
u8 field_A;
@@ -997,6 +983,9 @@ extern struct BattleSpriteData *gBattleSpritesDataPtr;
extern u8 *gLinkBattleSendBuffer;
extern u8 *gLinkBattleRecvBuffer;
+extern u8 *gUnknown_0202305C;
+extern u8 *gUnknown_02023060;
+
// Move this somewhere else
#include "sprite.h"
@@ -1006,8 +995,11 @@ struct MonSpritesGfx
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
void* sprites[4];
struct SpriteTemplate templates[4];
- u8 field_74[0x100];
- u8 *fontPixels;
+ struct SpriteFrameImage field_74[4][4];
+ u8 field_F4[0x80];
+ u8 *barFontGfx;
+ void *field_178;
+ void *field_17C;
};
extern struct BattleSpritesGfx* gMonSpritesGfx;
diff --git a/include/battle_anim.h b/include/battle_anim.h
index e912af6b1..c055e94fa 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -92,7 +92,11 @@ u8 sub_80A6D94(void);
u8 sub_80A8364(u8);
void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*));
void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
-u8 sub_80A6138(u8 bank);
+u8 GetBankSpriteDefault_Y(u8 bank);
u8 sub_80A82E4(u8 bank);
+u8 GetSubstituteSpriteDefault_Y(u8 bank);
+
+// battle_anim_80A9C70.s
+void LaunchStatusAnimation(u8 bank, u8 statusAnimId);
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_gfx_sfx_util.h b/include/battle_gfx_sfx_util.h
new file mode 100644
index 000000000..313a29811
--- /dev/null
+++ b/include/battle_gfx_sfx_util.h
@@ -0,0 +1,50 @@
+#ifndef GUARD_BATTLE_GFX_SFX_UTIL
+#define GUARD_BATTLE_GFX_SFX_UTIL
+
+void AllocateBattleSpritesData(void);
+void FreeBattleSpritesData(void);
+u16 ChooseMoveAndTargetInBattlePalace(void);
+void sub_805D714(struct Sprite *sprite);
+void sub_805D770(struct Sprite *sprite, bool8 arg1);
+void sub_805D7AC(struct Sprite *sprite);
+void InitAndLaunchChosenStatusAnimation(bool8 isStatus2, u32 status);
+bool8 TryHandleLaunchBattleTableAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId, u16 argument);
+void InitAndLaunchSpecialAnimation(u8 activeBank, u8 atkBank, u8 defBank, u8 tableId);
+bool8 IsMoveWithoutAnimation(u16 moveId, u8 animationTurn);
+bool8 mplay_80342A4(u8 bank);
+void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank);
+void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank);
+void nullsub_23(void);
+void nullsub_24(u16 species);
+void DecompressTrainerFrontPic(u16 frontPicId, u8 bank);
+void DecompressTrainerBackPic(u16 backPicId, u8 bank);
+void nullsub_25(u8 arg0);
+void FreeTrainerFrontPicPalette(u16 frontPicId);
+void sub_805DFFC(void);
+bool8 BattleLoadAllHealthBoxesGfx(u8 state);
+void LoadBattleBarGfx(u8 arg0);
+bool8 BattleInitAllSprites(u8 *state1, u8 *bank);
+void ClearSpritesHealthboxAnimData(void);
+void CopyAllBattleSpritesInvisibilities(void);
+void CopyBattleSpriteInvisibility(u8 bank);
+void HandleSpeciesGfxDataChange(u8 bankAtk, u8 bankDef, bool8 notTransform);
+void BattleLoadSubstituteOrMonSpriteGfx(u8 bank, bool8 loadMonSprite);
+void LoadBattleMonGfxAndAnimate(u8 bank, bool8 loadMonSprite, u8 spriteId);
+void TrySetBehindSubstituteSpriteBit(u8 bank, u16 move);
+void ClearBehindSubstituteBit(u8 bank);
+void HandleLowHpMusicChange(struct Pokemon *mon, u8 bank);
+void BattleStopLowHpSound(void);
+u8 GetMonHPBarLevel(struct Pokemon *mon);
+void sub_805EAE8(void);
+void sub_805EB9C(u8 affineMode);
+void LoadAndCreateEnemyShadowSprites(void);
+void SpriteCB_SetInvisible(struct Sprite *sprite);
+void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species);
+void EnemyShadowCallbackToSetInvisible(u8 bank);
+void sub_805EF14(void);
+void ClearTemporarySpeciesSpriteData(u8 bank, bool8 dontClearSubstitute);
+void AllocateMonSpritesGfx(void);
+void FreeMonSpritesGfx(void);
+bool32 ShouldPlayNormalPokeCry(struct Pokemon *mon);
+
+#endif // GUARD_BATTLE_GFX_SFX_UTIL
diff --git a/include/battle_interface.h b/include/battle_interface.h
index aad30f7b3..b2d3b1b97 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -15,6 +15,15 @@ enum
EXP_BAR
};
+enum
+{
+ HP_BAR_EMPTY,
+ HP_BAR_RED,
+ HP_BAR_YELLOW,
+ HP_BAR_GREEN,
+ HP_BAR_FULL,
+};
+
#define TAG_HEALTHBOX_PLAYER1_TILE 0xD6FF
#define TAG_HEALTHBOX_PLAYER2_TILE 0xD700
#define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index a466abc04..ebfeabccc 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -57,6 +57,6 @@ void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
bool8 UproarWakeUpCheck(u8 bank);
extern void (* const gBattleScriptingCommandsTable[])(void);
-extern const u8 gUnknown_0831C494[];
+extern const u8 gUnknown_0831C494[][4];
#endif // GUARD_BATTLE_SCRIPT_COMMANDS_H
diff --git a/include/battle_setup.h b/include/battle_setup.h
index e4acd8601..0168022cc 100644
--- a/include/battle_setup.h
+++ b/include/battle_setup.h
@@ -4,6 +4,9 @@
void BattleSetup_StartScriptedWildBattle(void);
u8 BattleSetup_GetTerrainId(void);
u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
+void BattleSetup_StartBattlePikeWildBattle(void);
+void BattleSetup_StartWildBattle(void);
+void BattleSetup_StartRoamerBattle(void);
u8 HasTrainerAlreadyBeenFought(u16);
void trainer_flag_set(u16);
diff --git a/include/battle_util2.h b/include/battle_util2.h
new file mode 100644
index 000000000..3954e42dc
--- /dev/null
+++ b/include/battle_util2.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_BATTLE_UTIL2_H
+#define GUARD_BATTLE_UTIL2_H
+
+void AllocateBattleResources(void);
+void FreeBattleResources(void);
+void AdjustFriendshipOnBattleFaint(u8 bank);
+void sub_80571DC(u8 bank, u8 arg1);
+u32 sub_805725C(u8 bank);
+
+#endif // GUARD_BATTLE_UTIL_H
diff --git a/include/contest.h b/include/contest.h
index 7dcde7da2..d920117f3 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -12,14 +12,20 @@ struct ContestStruct_02039E00
extern struct ContestStruct_02039E00 gUnknown_02039E00[4];
extern u8 gUnknown_02039F24;
-extern u16 gScriptContestCategory;
-extern u8 gUnknown_02039F2E;
+extern u16 gSpecialVar_ContestCategory;
+extern u8 gSpecialVar_ContestRank;
extern u8 gUnknown_02039F30;
struct ContestStruct_field_18
{
// unknown size
u16 field_0;
+ u16 field_2;
+ u16 field_4;
+ u16 field_6;
+ u32 field_8;
+ u32 field_C;
+ u32 field_10;
};
struct ContestResources
diff --git a/include/data/pokemon/egg_moves.h b/include/data/pokemon/egg_moves.h
new file mode 100644
index 000000000..3d74868b4
--- /dev/null
+++ b/include/data/pokemon/egg_moves.h
@@ -0,0 +1,1315 @@
+#ifndef POKEEMERALD_DAYCARE_H
+#define POKEEMERALD_DAYCARE_H
+
+#define EGG_MOVES_SPECIES_OFFSET 20000
+#define EGG_MOVES_TERMINATOR 0xFFFF
+#define egg_moves(species, moves...) (SPECIES_##species + EGG_MOVES_SPECIES_OFFSET), moves
+
+#endif // POKEEMERALD_DAYCARE_H
+
+const u16 gEggMoves[] = {
+ egg_moves(BULBASAUR,
+ MOVE_LIGHT_SCREEN,
+ MOVE_SKULL_BASH,
+ MOVE_SAFEGUARD,
+ MOVE_CHARM,
+ MOVE_PETAL_DANCE,
+ MOVE_MAGICAL_LEAF,
+ MOVE_GRASS_WHISTLE,
+ MOVE_CURSE),
+
+ egg_moves(CHARMANDER,
+ MOVE_BELLY_DRUM,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_BITE,
+ MOVE_OUTRAGE,
+ MOVE_BEAT_UP,
+ MOVE_SWORDS_DANCE,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(SQUIRTLE,
+ MOVE_MIRROR_COAT,
+ MOVE_HAZE,
+ MOVE_MIST,
+ MOVE_FORESIGHT,
+ MOVE_FLAIL,
+ MOVE_REFRESH,
+ MOVE_MUD_SPORT,
+ MOVE_YAWN),
+
+ egg_moves(PIDGEY,
+ MOVE_PURSUIT,
+ MOVE_FAINT_ATTACK,
+ MOVE_FORESIGHT,
+ MOVE_STEEL_WING,
+ MOVE_AIR_CUTTER),
+
+ egg_moves(RATTATA,
+ MOVE_SCREECH,
+ MOVE_FLAME_WHEEL,
+ MOVE_FURY_SWIPES,
+ MOVE_BITE,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_UPROAR,
+ MOVE_SWAGGER),
+
+ egg_moves(SPEAROW,
+ MOVE_FAINT_ATTACK,
+ MOVE_FALSE_SWIPE,
+ MOVE_SCARY_FACE,
+ MOVE_QUICK_ATTACK,
+ MOVE_TRI_ATTACK,
+ MOVE_ASTONISH,
+ MOVE_SKY_ATTACK),
+
+ egg_moves(EKANS,
+ MOVE_PURSUIT,
+ MOVE_SLAM,
+ MOVE_SPITE,
+ MOVE_BEAT_UP,
+ MOVE_POISON_FANG),
+
+ egg_moves(SANDSHREW,
+ MOVE_FLAIL,
+ MOVE_SAFEGUARD,
+ MOVE_COUNTER,
+ MOVE_RAPID_SPIN,
+ MOVE_ROCK_SLIDE,
+ MOVE_METAL_CLAW,
+ MOVE_SWORDS_DANCE,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(NIDORAN_F,
+ MOVE_SUPERSONIC,
+ MOVE_DISABLE,
+ MOVE_TAKE_DOWN,
+ MOVE_FOCUS_ENERGY,
+ MOVE_CHARM,
+ MOVE_COUNTER,
+ MOVE_BEAT_UP),
+
+ egg_moves(NIDORAN_M,
+ MOVE_COUNTER,
+ MOVE_DISABLE,
+ MOVE_SUPERSONIC,
+ MOVE_TAKE_DOWN,
+ MOVE_AMNESIA,
+ MOVE_CONFUSION,
+ MOVE_BEAT_UP),
+
+ egg_moves(VULPIX,
+ MOVE_FAINT_ATTACK,
+ MOVE_HYPNOSIS,
+ MOVE_FLAIL,
+ MOVE_SPITE,
+ MOVE_DISABLE,
+ MOVE_HOWL,
+ MOVE_PSYCH_UP,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(ZUBAT,
+ MOVE_QUICK_ATTACK,
+ MOVE_PURSUIT,
+ MOVE_FAINT_ATTACK,
+ MOVE_GUST,
+ MOVE_WHIRLWIND,
+ MOVE_CURSE),
+
+ egg_moves(ODDISH,
+ MOVE_SWORDS_DANCE,
+ MOVE_RAZOR_LEAF,
+ MOVE_FLAIL,
+ MOVE_SYNTHESIS,
+ MOVE_CHARM,
+ MOVE_INGRAIN),
+
+ egg_moves(PARAS,
+ MOVE_FALSE_SWIPE,
+ MOVE_SCREECH,
+ MOVE_COUNTER,
+ MOVE_PSYBEAM,
+ MOVE_FLAIL,
+ MOVE_SWEET_SCENT,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PURSUIT),
+
+ egg_moves(VENONAT,
+ MOVE_BATON_PASS,
+ MOVE_SCREECH,
+ MOVE_GIGA_DRAIN,
+ MOVE_SIGNAL_BEAM),
+
+ egg_moves(DIGLETT,
+ MOVE_FAINT_ATTACK,
+ MOVE_SCREECH,
+ MOVE_ANCIENT_POWER,
+ MOVE_PURSUIT,
+ MOVE_BEAT_UP,
+ MOVE_UPROAR,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(MEOWTH,
+ MOVE_SPITE,
+ MOVE_CHARM,
+ MOVE_HYPNOSIS,
+ MOVE_AMNESIA,
+ MOVE_PSYCH_UP,
+ MOVE_ASSIST),
+
+ egg_moves(PSYDUCK,
+ MOVE_HYPNOSIS,
+ MOVE_PSYBEAM,
+ MOVE_FORESIGHT,
+ MOVE_LIGHT_SCREEN,
+ MOVE_FUTURE_SIGHT,
+ MOVE_PSYCHIC,
+ MOVE_CROSS_CHOP,
+ MOVE_REFRESH),
+
+ egg_moves(MANKEY,
+ MOVE_ROCK_SLIDE,
+ MOVE_FORESIGHT,
+ MOVE_MEDITATE,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_BEAT_UP,
+ MOVE_REVENGE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(GROWLITHE,
+ MOVE_BODY_SLAM,
+ MOVE_SAFEGUARD,
+ MOVE_CRUNCH,
+ MOVE_THRASH,
+ MOVE_FIRE_SPIN,
+ MOVE_HOWL,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(POLIWAG,
+ MOVE_MIST,
+ MOVE_SPLASH,
+ MOVE_BUBBLE_BEAM,
+ MOVE_HAZE,
+ MOVE_MIND_READER,
+ MOVE_WATER_SPORT,
+ MOVE_ICE_BALL),
+
+ egg_moves(ABRA,
+ MOVE_ENCORE,
+ MOVE_BARRIER,
+ MOVE_KNOCK_OFF,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(MACHOP,
+ MOVE_LIGHT_SCREEN,
+ MOVE_MEDITATE,
+ MOVE_ROLLING_KICK,
+ MOVE_ENCORE,
+ MOVE_SMELLING_SALT,
+ MOVE_COUNTER,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(BELLSPROUT,
+ MOVE_SWORDS_DANCE,
+ MOVE_ENCORE,
+ MOVE_REFLECT,
+ MOVE_SYNTHESIS,
+ MOVE_LEECH_LIFE,
+ MOVE_INGRAIN,
+ MOVE_MAGICAL_LEAF),
+
+ egg_moves(TENTACOOL,
+ MOVE_AURORA_BEAM,
+ MOVE_MIRROR_COAT,
+ MOVE_RAPID_SPIN,
+ MOVE_HAZE,
+ MOVE_SAFEGUARD,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(GEODUDE,
+ MOVE_MEGA_PUNCH,
+ MOVE_ROCK_SLIDE,
+ MOVE_BLOCK),
+
+ egg_moves(PONYTA,
+ MOVE_FLAME_WHEEL,
+ MOVE_THRASH,
+ MOVE_DOUBLE_KICK,
+ MOVE_HYPNOSIS,
+ MOVE_CHARM,
+ MOVE_DOUBLE_EDGE),
+
+ egg_moves(SLOWPOKE,
+ MOVE_SAFEGUARD,
+ MOVE_BELLY_DRUM,
+ MOVE_FUTURE_SIGHT,
+ MOVE_STOMP,
+ MOVE_MUD_SPORT,
+ MOVE_SLEEP_TALK,
+ MOVE_SNORE),
+
+ egg_moves(FARFETCHD,
+ MOVE_STEEL_WING,
+ MOVE_FORESIGHT,
+ MOVE_MIRROR_MOVE,
+ MOVE_GUST,
+ MOVE_QUICK_ATTACK,
+ MOVE_FLAIL,
+ MOVE_FEATHER_DANCE,
+ MOVE_CURSE),
+
+ egg_moves(DODUO,
+ MOVE_QUICK_ATTACK,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_FAINT_ATTACK,
+ MOVE_FLAIL,
+ MOVE_ENDEAVOR),
+
+ egg_moves(SEEL,
+ MOVE_LICK,
+ MOVE_PERISH_SONG,
+ MOVE_DISABLE,
+ MOVE_HORN_DRILL,
+ MOVE_SLAM,
+ MOVE_ENCORE,
+ MOVE_FAKE_OUT,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(GRIMER,
+ MOVE_HAZE,
+ MOVE_MEAN_LOOK,
+ MOVE_LICK,
+ MOVE_IMPRISON,
+ MOVE_CURSE,
+ MOVE_SHADOW_PUNCH,
+ MOVE_EXPLOSION),
+
+ egg_moves(SHELLDER,
+ MOVE_BUBBLE_BEAM,
+ MOVE_TAKE_DOWN,
+ MOVE_BARRIER,
+ MOVE_RAPID_SPIN,
+ MOVE_SCREECH,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(GASTLY,
+ MOVE_PSYWAVE,
+ MOVE_PERISH_SONG,
+ MOVE_HAZE,
+ MOVE_ASTONISH,
+ MOVE_WILL_O_WISP,
+ MOVE_GRUDGE,
+ MOVE_EXPLOSION),
+
+ egg_moves(ONIX,
+ MOVE_ROCK_SLIDE,
+ MOVE_FLAIL,
+ MOVE_EXPLOSION,
+ MOVE_BLOCK),
+
+ egg_moves(DROWZEE,
+ MOVE_BARRIER,
+ MOVE_ASSIST,
+ MOVE_ROLE_PLAY,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(KRABBY,
+ MOVE_DIG,
+ MOVE_HAZE,
+ MOVE_AMNESIA,
+ MOVE_FLAIL,
+ MOVE_SLAM,
+ MOVE_KNOCK_OFF,
+ MOVE_SWORDS_DANCE),
+
+ egg_moves(EXEGGCUTE,
+ MOVE_SYNTHESIS,
+ MOVE_MOONLIGHT,
+ MOVE_REFLECT,
+ MOVE_ANCIENT_POWER,
+ MOVE_PSYCH_UP,
+ MOVE_INGRAIN,
+ MOVE_CURSE),
+
+ egg_moves(CUBONE,
+ MOVE_ROCK_SLIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_BELLY_DRUM,
+ MOVE_SCREECH,
+ MOVE_SKULL_BASH,
+ MOVE_PERISH_SONG,
+ MOVE_SWORDS_DANCE),
+
+ egg_moves(LICKITUNG,
+ MOVE_BELLY_DRUM,
+ MOVE_MAGNITUDE,
+ MOVE_BODY_SLAM,
+ MOVE_CURSE,
+ MOVE_SMELLING_SALT,
+ MOVE_SLEEP_TALK,
+ MOVE_SNORE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(KOFFING,
+ MOVE_SCREECH,
+ MOVE_PSYWAVE,
+ MOVE_PSYBEAM,
+ MOVE_DESTINY_BOND,
+ MOVE_PAIN_SPLIT,
+ MOVE_WILL_O_WISP),
+
+ egg_moves(RHYHORN,
+ MOVE_CRUNCH,
+ MOVE_REVERSAL,
+ MOVE_ROCK_SLIDE,
+ MOVE_COUNTER,
+ MOVE_MAGNITUDE,
+ MOVE_SWORDS_DANCE,
+ MOVE_CURSE,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(CHANSEY,
+ MOVE_PRESENT,
+ MOVE_METRONOME,
+ MOVE_HEAL_BELL,
+ MOVE_AROMATHERAPY,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(TANGELA,
+ MOVE_FLAIL,
+ MOVE_CONFUSION,
+ MOVE_MEGA_DRAIN,
+ MOVE_REFLECT,
+ MOVE_AMNESIA,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER),
+
+ egg_moves(KANGASKHAN,
+ MOVE_STOMP,
+ MOVE_FORESIGHT,
+ MOVE_FOCUS_ENERGY,
+ MOVE_SAFEGUARD,
+ MOVE_DISABLE,
+ MOVE_COUNTER,
+ MOVE_CRUSH_CLAW,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(HORSEA,
+ MOVE_FLAIL,
+ MOVE_AURORA_BEAM,
+ MOVE_OCTAZOOKA,
+ MOVE_DISABLE,
+ MOVE_SPLASH,
+ MOVE_DRAGON_RAGE,
+ MOVE_DRAGON_BREATH),
+
+ egg_moves(GOLDEEN,
+ MOVE_PSYBEAM,
+ MOVE_HAZE,
+ MOVE_HYDRO_PUMP,
+ MOVE_SLEEP_TALK,
+ MOVE_MUD_SPORT),
+
+ egg_moves(MR_MIME,
+ MOVE_FUTURE_SIGHT,
+ MOVE_HYPNOSIS,
+ MOVE_MIMIC,
+ MOVE_PSYCH_UP,
+ MOVE_FAKE_OUT,
+ MOVE_TRICK),
+
+ egg_moves(SCYTHER,
+ MOVE_COUNTER,
+ MOVE_SAFEGUARD,
+ MOVE_BATON_PASS,
+ MOVE_RAZOR_WIND,
+ MOVE_REVERSAL,
+ MOVE_LIGHT_SCREEN,
+ MOVE_ENDURE,
+ MOVE_SILVER_WIND),
+
+ egg_moves(PINSIR,
+ MOVE_FURY_ATTACK,
+ MOVE_FLAIL,
+ MOVE_FALSE_SWIPE,
+ MOVE_FAINT_ATTACK),
+
+ egg_moves(LAPRAS,
+ MOVE_FORESIGHT,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE,
+ MOVE_REFRESH,
+ MOVE_DRAGON_DANCE,
+ MOVE_CURSE,
+ MOVE_SLEEP_TALK,
+ MOVE_HORN_DRILL),
+
+ egg_moves(EEVEE,
+ MOVE_CHARM,
+ MOVE_FLAIL,
+ MOVE_ENDURE,
+ MOVE_CURSE,
+ MOVE_TICKLE,
+ MOVE_WISH),
+
+ egg_moves(OMANYTE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_SLAM,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_ROCK_SLIDE,
+ MOVE_SPIKES),
+
+ egg_moves(KABUTO,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_RAPID_SPIN,
+ MOVE_DIG,
+ MOVE_FLAIL,
+ MOVE_KNOCK_OFF,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(AERODACTYL,
+ MOVE_WHIRLWIND,
+ MOVE_PURSUIT,
+ MOVE_FORESIGHT,
+ MOVE_STEEL_WING,
+ MOVE_DRAGON_BREATH,
+ MOVE_CURSE),
+
+ egg_moves(SNORLAX,
+ MOVE_LICK,
+ MOVE_CHARM,
+ MOVE_DOUBLE_EDGE,
+ MOVE_CURSE,
+ MOVE_FISSURE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(DRATINI,
+ MOVE_LIGHT_SCREEN,
+ MOVE_MIST,
+ MOVE_HAZE,
+ MOVE_SUPERSONIC,
+ MOVE_DRAGON_BREATH,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(CHIKORITA,
+ MOVE_VINE_WHIP,
+ MOVE_LEECH_SEED,
+ MOVE_COUNTER,
+ MOVE_ANCIENT_POWER,
+ MOVE_FLAIL,
+ MOVE_NATURE_POWER,
+ MOVE_INGRAIN,
+ MOVE_GRASS_WHISTLE),
+
+ egg_moves(CYNDAQUIL,
+ MOVE_FURY_SWIPES,
+ MOVE_QUICK_ATTACK,
+ MOVE_REVERSAL,
+ MOVE_THRASH,
+ MOVE_FORESIGHT,
+ MOVE_COVET,
+ MOVE_HOWL,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(TOTODILE,
+ MOVE_CRUNCH,
+ MOVE_THRASH,
+ MOVE_HYDRO_PUMP,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_MUD_SPORT,
+ MOVE_WATER_SPORT,
+ MOVE_DRAGON_CLAW),
+
+ egg_moves(SENTRET,
+ MOVE_DOUBLE_EDGE,
+ MOVE_PURSUIT,
+ MOVE_SLASH,
+ MOVE_FOCUS_ENERGY,
+ MOVE_REVERSAL,
+ MOVE_SUBSTITUTE,
+ MOVE_TRICK,
+ MOVE_ASSIST),
+
+ egg_moves(HOOTHOOT,
+ MOVE_MIRROR_MOVE,
+ MOVE_SUPERSONIC,
+ MOVE_FAINT_ATTACK,
+ MOVE_WING_ATTACK,
+ MOVE_WHIRLWIND,
+ MOVE_SKY_ATTACK,
+ MOVE_FEATHER_DANCE),
+
+ egg_moves(LEDYBA,
+ MOVE_PSYBEAM,
+ MOVE_BIDE,
+ MOVE_SILVER_WIND),
+
+ egg_moves(SPINARAK,
+ MOVE_PSYBEAM,
+ MOVE_DISABLE,
+ MOVE_SONIC_BOOM,
+ MOVE_BATON_PASS,
+ MOVE_PURSUIT,
+ MOVE_SIGNAL_BEAM),
+
+ egg_moves(CHINCHOU,
+ MOVE_FLAIL,
+ MOVE_SCREECH,
+ MOVE_AMNESIA),
+
+ egg_moves(PICHU,
+ MOVE_REVERSAL,
+ MOVE_BIDE,
+ MOVE_PRESENT,
+ MOVE_ENCORE,
+ MOVE_DOUBLE_SLAP,
+ MOVE_WISH,
+ MOVE_CHARGE),
+
+ egg_moves(CLEFFA,
+ MOVE_PRESENT,
+ MOVE_METRONOME,
+ MOVE_AMNESIA,
+ MOVE_BELLY_DRUM,
+ MOVE_SPLASH,
+ MOVE_MIMIC,
+ MOVE_WISH,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(IGGLYBUFF,
+ MOVE_PERISH_SONG,
+ MOVE_PRESENT,
+ MOVE_FAINT_ATTACK,
+ MOVE_WISH,
+ MOVE_FAKE_TEARS),
+
+ egg_moves(TOGEPI,
+ MOVE_PRESENT,
+ MOVE_MIRROR_MOVE,
+ MOVE_PECK,
+ MOVE_FORESIGHT,
+ MOVE_FUTURE_SIGHT,
+ MOVE_SUBSTITUTE,
+ MOVE_PSYCH_UP),
+
+ egg_moves(NATU,
+ MOVE_HAZE,
+ MOVE_DRILL_PECK,
+ MOVE_QUICK_ATTACK,
+ MOVE_FAINT_ATTACK,
+ MOVE_STEEL_WING,
+ MOVE_PSYCH_UP,
+ MOVE_FEATHER_DANCE,
+ MOVE_REFRESH),
+
+ egg_moves(MAREEP,
+ MOVE_TAKE_DOWN,
+ MOVE_BODY_SLAM,
+ MOVE_SAFEGUARD,
+ MOVE_SCREECH,
+ MOVE_REFLECT,
+ MOVE_ODOR_SLEUTH,
+ MOVE_CHARGE),
+
+ egg_moves(MARILL,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PRESENT,
+ MOVE_AMNESIA,
+ MOVE_FUTURE_SIGHT,
+ MOVE_BELLY_DRUM,
+ MOVE_PERISH_SONG,
+ MOVE_SUPERSONIC,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(SUDOWOODO,
+ MOVE_SELF_DESTRUCT),
+
+ egg_moves(HOPPIP,
+ MOVE_CONFUSION,
+ MOVE_ENCORE,
+ MOVE_DOUBLE_EDGE,
+ MOVE_REFLECT,
+ MOVE_AMNESIA,
+ MOVE_HELPING_HAND,
+ MOVE_PSYCH_UP),
+
+ egg_moves(AIPOM,
+ MOVE_COUNTER,
+ MOVE_SCREECH,
+ MOVE_PURSUIT,
+ MOVE_AGILITY,
+ MOVE_SPITE,
+ MOVE_SLAM,
+ MOVE_DOUBLE_SLAP,
+ MOVE_BEAT_UP),
+
+ egg_moves(SUNKERN,
+ MOVE_GRASS_WHISTLE,
+ MOVE_ENCORE,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER,
+ MOVE_CURSE,
+ MOVE_HELPING_HAND),
+
+ egg_moves(YANMA,
+ MOVE_WHIRLWIND,
+ MOVE_REVERSAL,
+ MOVE_LEECH_LIFE,
+ MOVE_SIGNAL_BEAM,
+ MOVE_SILVER_WIND),
+
+ egg_moves(WOOPER,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER,
+ MOVE_SAFEGUARD,
+ MOVE_CURSE,
+ MOVE_MUD_SPORT,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP),
+
+ egg_moves(MURKROW,
+ MOVE_WHIRLWIND,
+ MOVE_DRILL_PECK,
+ MOVE_MIRROR_MOVE,
+ MOVE_WING_ATTACK,
+ MOVE_SKY_ATTACK,
+ MOVE_CONFUSE_RAY,
+ MOVE_FEATHER_DANCE,
+ MOVE_PERISH_SONG),
+
+ egg_moves(MISDREAVUS,
+ MOVE_SCREECH,
+ MOVE_DESTINY_BOND,
+ MOVE_PSYCH_UP,
+ MOVE_IMPRISON),
+
+ egg_moves(GIRAFARIG,
+ MOVE_TAKE_DOWN,
+ MOVE_AMNESIA,
+ MOVE_FORESIGHT,
+ MOVE_FUTURE_SIGHT,
+ MOVE_BEAT_UP,
+ MOVE_PSYCH_UP,
+ MOVE_WISH,
+ MOVE_MAGIC_COAT),
+
+ egg_moves(PINECO,
+ MOVE_REFLECT,
+ MOVE_PIN_MISSILE,
+ MOVE_FLAIL,
+ MOVE_SWIFT,
+ MOVE_COUNTER,
+ MOVE_SAND_TOMB),
+
+ egg_moves(DUNSPARCE,
+ MOVE_BIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_BITE,
+ MOVE_HEADBUTT,
+ MOVE_ASTONISH,
+ MOVE_CURSE),
+
+ egg_moves(GLIGAR,
+ MOVE_METAL_CLAW,
+ MOVE_WING_ATTACK,
+ MOVE_RAZOR_WIND,
+ MOVE_COUNTER,
+ MOVE_SAND_TOMB),
+
+ egg_moves(SNUBBULL,
+ MOVE_METRONOME,
+ MOVE_FAINT_ATTACK,
+ MOVE_REFLECT,
+ MOVE_PRESENT,
+ MOVE_CRUNCH,
+ MOVE_HEAL_BELL,
+ MOVE_SNORE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(QWILFISH,
+ MOVE_FLAIL,
+ MOVE_HAZE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_SUPERSONIC,
+ MOVE_ASTONISH),
+
+ egg_moves(SHUCKLE,
+ MOVE_SWEET_SCENT),
+
+ egg_moves(HERACROSS,
+ MOVE_HARDEN,
+ MOVE_BIDE,
+ MOVE_FLAIL,
+ MOVE_FALSE_SWIPE),
+
+ egg_moves(SNEASEL,
+ MOVE_COUNTER,
+ MOVE_SPITE,
+ MOVE_FORESIGHT,
+ MOVE_REFLECT,
+ MOVE_BITE,
+ MOVE_CRUSH_CLAW,
+ MOVE_FAKE_OUT),
+
+ egg_moves(TEDDIURSA,
+ MOVE_CRUNCH,
+ MOVE_TAKE_DOWN,
+ MOVE_SEISMIC_TOSS,
+ MOVE_COUNTER,
+ MOVE_METAL_CLAW,
+ MOVE_FAKE_TEARS,
+ MOVE_YAWN,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(SLUGMA,
+ MOVE_ACID_ARMOR,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(SWINUB,
+ MOVE_TAKE_DOWN,
+ MOVE_BITE,
+ MOVE_BODY_SLAM,
+ MOVE_ROCK_SLIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_MUD_SHOT,
+ MOVE_ICICLE_SPEAR,
+ MOVE_DOUBLE_EDGE),
+
+ egg_moves(CORSOLA,
+ MOVE_ROCK_SLIDE,
+ MOVE_SCREECH,
+ MOVE_MIST,
+ MOVE_AMNESIA,
+ MOVE_BARRIER,
+ MOVE_INGRAIN,
+ MOVE_CONFUSE_RAY,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(REMORAID,
+ MOVE_AURORA_BEAM,
+ MOVE_OCTAZOOKA,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_SCREECH,
+ MOVE_THUNDER_WAVE,
+ MOVE_ROCK_BLAST),
+
+ egg_moves(DELIBIRD,
+ MOVE_AURORA_BEAM,
+ MOVE_QUICK_ATTACK,
+ MOVE_FUTURE_SIGHT,
+ MOVE_SPLASH,
+ MOVE_RAPID_SPIN,
+ MOVE_ICE_BALL),
+
+ egg_moves(MANTINE,
+ MOVE_TWISTER,
+ MOVE_HYDRO_PUMP,
+ MOVE_HAZE,
+ MOVE_SLAM,
+ MOVE_MUD_SPORT,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(SKARMORY,
+ MOVE_DRILL_PECK,
+ MOVE_PURSUIT,
+ MOVE_WHIRLWIND,
+ MOVE_SKY_ATTACK,
+ MOVE_CURSE),
+
+ egg_moves(HOUNDOUR,
+ MOVE_FIRE_SPIN,
+ MOVE_RAGE,
+ MOVE_PURSUIT,
+ MOVE_COUNTER,
+ MOVE_SPITE,
+ MOVE_REVERSAL,
+ MOVE_BEAT_UP,
+ MOVE_WILL_O_WISP),
+
+ egg_moves(PHANPY,
+ MOVE_FOCUS_ENERGY,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER,
+ MOVE_SNORE,
+ MOVE_COUNTER,
+ MOVE_FISSURE),
+
+ egg_moves(STANTLER,
+ MOVE_SPITE,
+ MOVE_DISABLE,
+ MOVE_BITE,
+ MOVE_SWAGGER,
+ MOVE_PSYCH_UP,
+ MOVE_EXTRASENSORY),
+
+ egg_moves(TYROGUE,
+ MOVE_RAPID_SPIN,
+ MOVE_HI_JUMP_KICK,
+ MOVE_MACH_PUNCH,
+ MOVE_MIND_READER,
+ MOVE_HELPING_HAND),
+
+ egg_moves(SMOOCHUM,
+ MOVE_MEDITATE,
+ MOVE_PSYCH_UP,
+ MOVE_FAKE_OUT,
+ MOVE_WISH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(ELEKID,
+ MOVE_KARATE_CHOP,
+ MOVE_BARRIER,
+ MOVE_ROLLING_KICK,
+ MOVE_MEDITATE,
+ MOVE_CROSS_CHOP,
+ MOVE_FIRE_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(MAGBY,
+ MOVE_KARATE_CHOP,
+ MOVE_MEGA_PUNCH,
+ MOVE_BARRIER,
+ MOVE_SCREECH,
+ MOVE_CROSS_CHOP,
+ MOVE_THUNDER_PUNCH),
+
+ egg_moves(MILTANK,
+ MOVE_PRESENT,
+ MOVE_REVERSAL,
+ MOVE_SEISMIC_TOSS,
+ MOVE_ENDURE,
+ MOVE_PSYCH_UP,
+ MOVE_CURSE,
+ MOVE_HELPING_HAND,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(LARVITAR,
+ MOVE_PURSUIT,
+ MOVE_STOMP,
+ MOVE_OUTRAGE,
+ MOVE_FOCUS_ENERGY,
+ MOVE_ANCIENT_POWER,
+ MOVE_DRAGON_DANCE,
+ MOVE_CURSE),
+
+ egg_moves(TREECKO,
+ MOVE_CRUNCH,
+ MOVE_MUD_SPORT,
+ MOVE_ENDEAVOR,
+ MOVE_LEECH_SEED,
+ MOVE_DRAGON_BREATH,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(TORCHIC,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_ENDURE,
+ MOVE_SWAGGER,
+ MOVE_ROCK_SLIDE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(MUDKIP,
+ MOVE_REFRESH,
+ MOVE_UPROAR,
+ MOVE_CURSE,
+ MOVE_STOMP,
+ MOVE_ICE_BALL,
+ MOVE_MIRROR_COAT),
+
+ egg_moves(POOCHYENA,
+ MOVE_ASTONISH,
+ MOVE_POISON_FANG,
+ MOVE_COVET,
+ MOVE_LEER,
+ MOVE_YAWN),
+
+ egg_moves(ZIGZAGOON,
+ MOVE_CHARM,
+ MOVE_PURSUIT,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE,
+ MOVE_TRICK),
+
+ egg_moves(LOTAD,
+ MOVE_SYNTHESIS,
+ MOVE_RAZOR_LEAF,
+ MOVE_SWEET_SCENT,
+ MOVE_LEECH_SEED,
+ MOVE_FLAIL,
+ MOVE_WATER_GUN),
+
+ egg_moves(SEEDOT,
+ MOVE_LEECH_SEED,
+ MOVE_AMNESIA,
+ MOVE_QUICK_ATTACK,
+ MOVE_RAZOR_WIND,
+ MOVE_TAKE_DOWN,
+ MOVE_FALSE_SWIPE),
+
+ egg_moves(NINCADA,
+ MOVE_ENDURE,
+ MOVE_FAINT_ATTACK,
+ MOVE_GUST,
+ MOVE_SILVER_WIND),
+
+ egg_moves(TAILLOW,
+ MOVE_PURSUIT,
+ MOVE_SUPERSONIC,
+ MOVE_REFRESH,
+ MOVE_MIRROR_MOVE,
+ MOVE_RAGE,
+ MOVE_SKY_ATTACK),
+
+ egg_moves(SHROOMISH,
+ MOVE_FAKE_TEARS,
+ MOVE_SWAGGER,
+ MOVE_CHARM,
+ MOVE_FALSE_SWIPE,
+ MOVE_HELPING_HAND),
+
+ egg_moves(SPINDA,
+ MOVE_ENCORE,
+ MOVE_ROCK_SLIDE,
+ MOVE_ASSIST,
+ MOVE_DISABLE,
+ MOVE_BATON_PASS,
+ MOVE_WISH,
+ MOVE_TRICK,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(WINGULL,
+ MOVE_MIST,
+ MOVE_TWISTER,
+ MOVE_AGILITY,
+ MOVE_GUST,
+ MOVE_WATER_SPORT),
+
+ egg_moves(SURSKIT,
+ MOVE_FORESIGHT,
+ MOVE_MUD_SHOT,
+ MOVE_PSYBEAM,
+ MOVE_HYDRO_PUMP,
+ MOVE_MIND_READER),
+
+ egg_moves(WAILMER,
+ MOVE_DOUBLE_EDGE,
+ MOVE_THRASH,
+ MOVE_SWAGGER,
+ MOVE_SNORE,
+ MOVE_SLEEP_TALK,
+ MOVE_CURSE,
+ MOVE_FISSURE,
+ MOVE_TICKLE),
+
+ egg_moves(SKITTY,
+ MOVE_HELPING_HAND,
+ MOVE_PSYCH_UP,
+ MOVE_UPROAR,
+ MOVE_FAKE_TEARS,
+ MOVE_WISH,
+ MOVE_BATON_PASS,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE),
+
+ egg_moves(KECLEON,
+ MOVE_DISABLE,
+ MOVE_MAGIC_COAT,
+ MOVE_TRICK),
+
+ egg_moves(NOSEPASS,
+ MOVE_MAGNITUDE,
+ MOVE_ROLLOUT,
+ MOVE_EXPLOSION),
+
+ egg_moves(TORKOAL,
+ MOVE_ERUPTION,
+ MOVE_ENDURE,
+ MOVE_SLEEP_TALK,
+ MOVE_YAWN),
+
+ egg_moves(SABLEYE,
+ MOVE_PSYCH_UP,
+ MOVE_RECOVER,
+ MOVE_MOONLIGHT),
+
+ egg_moves(BARBOACH,
+ MOVE_THRASH,
+ MOVE_WHIRLPOOL,
+ MOVE_SPARK),
+
+ egg_moves(LUVDISC,
+ MOVE_SPLASH,
+ MOVE_SUPERSONIC,
+ MOVE_WATER_SPORT,
+ MOVE_MUD_SPORT),
+
+ egg_moves(CORPHISH,
+ MOVE_MUD_SPORT,
+ MOVE_ENDEAVOR,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER),
+
+ egg_moves(FEEBAS,
+ MOVE_MIRROR_COAT,
+ MOVE_DRAGON_BREATH,
+ MOVE_MUD_SPORT,
+ MOVE_HYPNOSIS,
+ MOVE_LIGHT_SCREEN,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(CARVANHA,
+ MOVE_HYDRO_PUMP,
+ MOVE_DOUBLE_EDGE,
+ MOVE_THRASH),
+
+ egg_moves(TRAPINCH,
+ MOVE_FOCUS_ENERGY,
+ MOVE_QUICK_ATTACK,
+ MOVE_GUST),
+
+ egg_moves(MAKUHITA,
+ MOVE_FAINT_ATTACK,
+ MOVE_DETECT,
+ MOVE_FORESIGHT,
+ MOVE_HELPING_HAND,
+ MOVE_CROSS_CHOP,
+ MOVE_REVENGE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_COUNTER),
+
+ egg_moves(ELECTRIKE,
+ MOVE_CRUNCH,
+ MOVE_HEADBUTT,
+ MOVE_UPROAR,
+ MOVE_CURSE,
+ MOVE_SWIFT),
+
+ egg_moves(NUMEL,
+ MOVE_HOWL,
+ MOVE_SCARY_FACE,
+ MOVE_BODY_SLAM,
+ MOVE_ROLLOUT,
+ MOVE_DEFENSE_CURL,
+ MOVE_STOMP),
+
+ egg_moves(SPHEAL,
+ MOVE_WATER_SPORT,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP,
+ MOVE_YAWN,
+ MOVE_ROCK_SLIDE,
+ MOVE_CURSE,
+ MOVE_FISSURE),
+
+ egg_moves(CACNEA,
+ MOVE_GRASS_WHISTLE,
+ MOVE_ACID,
+ MOVE_TEETER_DANCE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_COUNTER),
+
+ egg_moves(SNORUNT,
+ MOVE_BLOCK,
+ MOVE_SPIKES),
+
+ egg_moves(AZURILL,
+ MOVE_ENCORE,
+ MOVE_SING,
+ MOVE_REFRESH,
+ MOVE_SLAM,
+ MOVE_TICKLE),
+
+ egg_moves(SPOINK,
+ MOVE_FUTURE_SIGHT,
+ MOVE_EXTRASENSORY,
+ MOVE_SUBSTITUTE,
+ MOVE_TRICK),
+
+ egg_moves(PLUSLE,
+ MOVE_SUBSTITUTE,
+ MOVE_WISH),
+
+ egg_moves(MINUN,
+ MOVE_SUBSTITUTE,
+ MOVE_WISH),
+
+ egg_moves(MAWILE,
+ MOVE_SWORDS_DANCE,
+ MOVE_FALSE_SWIPE,
+ MOVE_POISON_FANG,
+ MOVE_PSYCH_UP,
+ MOVE_ANCIENT_POWER,
+ MOVE_TICKLE),
+
+ egg_moves(MEDITITE,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH,
+ MOVE_FORESIGHT,
+ MOVE_FAKE_OUT,
+ MOVE_BATON_PASS,
+ MOVE_DYNAMIC_PUNCH),
+
+ egg_moves(SWABLU,
+ MOVE_AGILITY,
+ MOVE_HAZE,
+ MOVE_PURSUIT,
+ MOVE_RAGE),
+
+ egg_moves(DUSKULL,
+ MOVE_IMPRISON,
+ MOVE_DESTINY_BOND,
+ MOVE_PAIN_SPLIT,
+ MOVE_GRUDGE,
+ MOVE_MEMENTO,
+ MOVE_FAINT_ATTACK),
+
+ egg_moves(ROSELIA,
+ MOVE_SPIKES,
+ MOVE_SYNTHESIS,
+ MOVE_PIN_MISSILE,
+ MOVE_COTTON_SPORE),
+
+ egg_moves(SLAKOTH,
+ MOVE_PURSUIT,
+ MOVE_SLASH,
+ MOVE_BODY_SLAM,
+ MOVE_SNORE,
+ MOVE_CRUSH_CLAW,
+ MOVE_CURSE,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(GULPIN,
+ MOVE_DREAM_EATER,
+ MOVE_ACID_ARMOR,
+ MOVE_SMOG,
+ MOVE_PAIN_SPLIT),
+
+ egg_moves(TROPIUS,
+ MOVE_HEADBUTT,
+ MOVE_SLAM,
+ MOVE_RAZOR_WIND,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER),
+
+ egg_moves(WHISMUR,
+ MOVE_TAKE_DOWN,
+ MOVE_SNORE,
+ MOVE_SWAGGER,
+ MOVE_EXTRASENSORY,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(CLAMPERL,
+ MOVE_REFRESH,
+ MOVE_MUD_SPORT,
+ MOVE_BODY_SLAM,
+ MOVE_SUPERSONIC,
+ MOVE_BARRIER,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(ABSOL,
+ MOVE_BATON_PASS,
+ MOVE_FAINT_ATTACK,
+ MOVE_DOUBLE_EDGE,
+ MOVE_MAGIC_COAT,
+ MOVE_CURSE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(SHUPPET,
+ MOVE_DISABLE,
+ MOVE_DESTINY_BOND,
+ MOVE_FORESIGHT,
+ MOVE_ASTONISH,
+ MOVE_IMPRISON),
+
+ egg_moves(SEVIPER,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP,
+ MOVE_BODY_SLAM),
+
+ egg_moves(ZANGOOSE,
+ MOVE_FLAIL,
+ MOVE_DOUBLE_KICK,
+ MOVE_RAZOR_WIND,
+ MOVE_COUNTER,
+ MOVE_ROAR,
+ MOVE_CURSE),
+
+ egg_moves(RELICANTH,
+ MOVE_MAGNITUDE,
+ MOVE_SKULL_BASH,
+ MOVE_WATER_SPORT,
+ MOVE_AMNESIA,
+ MOVE_SLEEP_TALK,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(ARON,
+ MOVE_ENDEAVOR,
+ MOVE_BODY_SLAM,
+ MOVE_STOMP,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(CASTFORM,
+ MOVE_FUTURE_SIGHT,
+ MOVE_PSYCH_UP),
+
+ egg_moves(VOLBEAT,
+ MOVE_BATON_PASS,
+ MOVE_SILVER_WIND,
+ MOVE_TRICK),
+
+ egg_moves(ILLUMISE,
+ MOVE_BATON_PASS,
+ MOVE_SILVER_WIND,
+ MOVE_GROWTH),
+
+ egg_moves(LILEEP,
+ MOVE_BARRIER,
+ MOVE_RECOVER,
+ MOVE_MIRROR_COAT,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(ANORITH,
+ MOVE_RAPID_SPIN,
+ MOVE_KNOCK_OFF,
+ MOVE_SWORDS_DANCE,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(RALTS,
+ MOVE_DISABLE,
+ MOVE_WILL_O_WISP,
+ MOVE_MEAN_LOOK,
+ MOVE_MEMENTO,
+ MOVE_DESTINY_BOND),
+
+ egg_moves(BAGON,
+ MOVE_HYDRO_PUMP,
+ MOVE_THRASH,
+ MOVE_DRAGON_RAGE,
+ MOVE_TWISTER,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(CHIMECHO,
+ MOVE_DISABLE,
+ MOVE_CURSE,
+ MOVE_HYPNOSIS,
+ MOVE_DREAM_EATER),
+
+ EGG_MOVES_TERMINATOR
+};
diff --git a/include/data/region_map/region_map_entries.h b/include/data/region_map/region_map_entries.h
new file mode 100644
index 000000000..73599c704
--- /dev/null
+++ b/include/data/region_map/region_map_entries.h
@@ -0,0 +1,421 @@
+#ifndef GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
+#define GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
+
+static const u8 gMapName_LittlerootTown[] = _("LITTLEROOT TOWN");
+static const u8 gMapName_OldaleTown[] = _("OLDALE TOWN");
+static const u8 gMapName_DewfordTown[] = _("DEWFORD TOWN");
+static const u8 gMapName_LavaridgeTown[] = _("LAVARIDGE TOWN");
+static const u8 gMapName_FallarborTown[] = _("FALLARBOR TOWN");
+static const u8 gMapName_VerdanturfTown[] = _("VERDANTURF TOWN");
+static const u8 gMapName_PacifidlogTown[] = _("PACIFIDLOG TOWN");
+static const u8 gMapName_PetalburgCity[] = _("PETALBURG CITY");
+static const u8 gMapName_SlateportCity[] = _("SLATEPORT CITY");
+static const u8 gMapName_MauvilleCity[] = _("MAUVILLE CITY");
+static const u8 gMapName_RustboroCity[] = _("RUSTBORO CITY");
+static const u8 gMapName_FortreeCity[] = _("FORTREE CITY");
+static const u8 gMapName_LilycoveCity[] = _("LILYCOVE CITY");
+static const u8 gMapName_MossdeepCity[] = _("MOSSDEEP CITY");
+static const u8 gMapName_SootopolisCity[] = _("SOOTOPOLIS CITY");
+static const u8 gMapName_EverGrandeCity[] = _("EVER GRANDE CITY");
+static const u8 gMapName_Route101[] = _("ROUTE 101");
+static const u8 gMapName_Route102[] = _("ROUTE 102");
+static const u8 gMapName_Route103[] = _("ROUTE 103");
+static const u8 gMapName_Route104[] = _("ROUTE 104");
+static const u8 gMapName_Route105[] = _("ROUTE 105");
+static const u8 gMapName_Route106[] = _("ROUTE 106");
+static const u8 gMapName_Route107[] = _("ROUTE 107");
+static const u8 gMapName_Route108[] = _("ROUTE 108");
+static const u8 gMapName_Route109[] = _("ROUTE 109");
+static const u8 gMapName_Route110[] = _("ROUTE 110");
+static const u8 gMapName_Route111[] = _("ROUTE 111");
+static const u8 gMapName_Route112[] = _("ROUTE 112");
+static const u8 gMapName_Route113[] = _("ROUTE 113");
+static const u8 gMapName_Route114[] = _("ROUTE 114");
+static const u8 gMapName_Route115[] = _("ROUTE 115");
+static const u8 gMapName_Route116[] = _("ROUTE 116");
+static const u8 gMapName_Route117[] = _("ROUTE 117");
+static const u8 gMapName_Route118[] = _("ROUTE 118");
+static const u8 gMapName_Route119[] = _("ROUTE 119");
+static const u8 gMapName_Route120[] = _("ROUTE 120");
+static const u8 gMapName_Route121[] = _("ROUTE 121");
+static const u8 gMapName_Route122[] = _("ROUTE 122");
+static const u8 gMapName_Route123[] = _("ROUTE 123");
+static const u8 gMapName_Route124[] = _("ROUTE 124");
+static const u8 gMapName_Route125[] = _("ROUTE 125");
+static const u8 gMapName_Route126[] = _("ROUTE 126");
+static const u8 gMapName_Route127[] = _("ROUTE 127");
+static const u8 gMapName_Route128[] = _("ROUTE 128");
+static const u8 gMapName_Route129[] = _("ROUTE 129");
+static const u8 gMapName_Route130[] = _("ROUTE 130");
+static const u8 gMapName_Route131[] = _("ROUTE 131");
+static const u8 gMapName_Route132[] = _("ROUTE 132");
+static const u8 gMapName_Route133[] = _("ROUTE 133");
+static const u8 gMapName_Route134[] = _("ROUTE 134");
+static const u8 gMapName_Underwater[] = _("UNDERWATER");
+static const u8 gMapName_GraniteCave[] = _("GRANITE CAVE");
+static const u8 gMapName_MtChimney[] = _("MT. CHIMNEY");
+static const u8 gMapName_SafariZone[] = _("SAFARI ZONE");
+static const u8 gMapName_BattleFrontier[] = _("BATTLE FRONTIER");
+static const u8 gMapName_PetalburgWoods[] = _("PETALBURG WOODS");
+static const u8 gMapName_RusturfTunnel[] = _("RUSTURF TUNNEL");
+static const u8 gMapName_AbandonedShip[] = _("ABANDONED SHIP");
+static const u8 gMapName_NewMauville[] = _("NEW MAUVILLE");
+static const u8 gMapName_MeteorFalls[] = _("METEOR FALLS");
+static const u8 gMapName_MtPyre[] = _("MT. PYRE");
+// This was the Aqua or Magma hideout in Ruby/Sapphire, but each team has a
+// hideout in Emerald with their own new region map entries, and this name
+// doesn't seem to be used anymore.
+static const u8 gMapName_AquaHideoutOld[] = _("{AQUA} HIDEOUT");
+static const u8 gMapName_ShoalCave[] = _("SHOAL CAVE");
+static const u8 gMapName_SeafloorCavern[] = _("SEAFLOOR CAVERN");
+static const u8 gMapName_VictoryRoad[] = _("VICTORY ROAD");
+static const u8 gMapName_MirageIsland[] = _("MIRAGE ISLAND");
+static const u8 gMapName_CaveOfOrigin[] = _("CAVE OF ORIGIN");
+static const u8 gMapName_SouthernIsland[] = _("SOUTHERN ISLAND");
+static const u8 gMapName_FieryPath[] = _("FIERY PATH");
+static const u8 gMapName_JaggedPass[] = _("JAGGED PASS");
+static const u8 gMapName_SealedChamber[] = _("SEALED CHAMBER");
+static const u8 gMapName_ScorchedSlab[] = _("SCORCHED SLAB");
+static const u8 gMapName_IslandCave[] = _("ISLAND CAVE");
+static const u8 gMapName_DesertRuins[] = _("DESERT RUINS");
+static const u8 gMapName_AncientTomb[] = _("ANCIENT TOMB");
+static const u8 gMapName_InsideOfTruck[] = _("INSIDE OF TRUCK");
+static const u8 gMapName_SkyPillar[] = _("SKY PILLAR");
+static const u8 gMapName_SecretBase[] = _("SECRET BASE");
+static const u8 gMapName_None[] = _("");
+static const u8 gMapName_PalletTown[] = _("PALLET TOWN");
+static const u8 gMapName_ViridianCity[] = _("VIRIDIAN CITY");
+static const u8 gMapName_PewterCity[] = _("PEWTER CITY");
+static const u8 gMapName_CeruleanCity[] = _("CERULEAN CITY");
+static const u8 gMapName_LavenderTown[] = _("LAVENDER TOWN");
+static const u8 gMapName_VermilionCity[] = _("VERMILION CITY");
+static const u8 gMapName_CeladonCity[] = _("CELADON CITY");
+static const u8 gMapName_FuchsiaCity[] = _("FUCHSIA CITY");
+static const u8 gMapName_CinnabarIsland[] = _("CINNABAR ISLAND");
+static const u8 gMapName_IndigoPlateau[] = _("INDIGO PLATEAU");
+static const u8 gMapName_SaffronCity[] = _("SAFFRON CITY");
+static const u8 gMapName_Route4[] = _("ROUTE 4");
+static const u8 gMapName_Route10[] = _("ROUTE 10");
+static const u8 gMapName_Route1[] = _("ROUTE 1");
+static const u8 gMapName_Route2[] = _("ROUTE 2");
+static const u8 gMapName_Route3[] = _("ROUTE 3");
+static const u8 gMapName_Route4_2[] = _("ROUTE 4");
+static const u8 gMapName_Route5[] = _("ROUTE 5");
+static const u8 gMapName_Route6[] = _("ROUTE 6");
+static const u8 gMapName_Route7[] = _("ROUTE 7");
+static const u8 gMapName_Route8[] = _("ROUTE 8");
+static const u8 gMapName_Route9[] = _("ROUTE 9");
+static const u8 gMapName_Route10_2[] = _("ROUTE 10");
+static const u8 gMapName_Route11[] = _("ROUTE 11");
+static const u8 gMapName_Route12[] = _("ROUTE 12");
+static const u8 gMapName_Route13[] = _("ROUTE 13");
+static const u8 gMapName_Route14[] = _("ROUTE 14");
+static const u8 gMapName_Route15[] = _("ROUTE 15");
+static const u8 gMapName_Route16[] = _("ROUTE 16");
+static const u8 gMapName_Route17[] = _("ROUTE 17");
+static const u8 gMapName_Route18[] = _("ROUTE 18");
+static const u8 gMapName_Route19[] = _("ROUTE 19");
+static const u8 gMapName_Route20[] = _("ROUTE 20");
+static const u8 gMapName_Route21[] = _("ROUTE 21");
+static const u8 gMapName_Route22[] = _("ROUTE 22");
+static const u8 gMapName_Route23[] = _("ROUTE 23");
+static const u8 gMapName_Route24[] = _("ROUTE 24");
+static const u8 gMapName_Route25[] = _("ROUTE 25");
+static const u8 gMapName_ViridianForest[] = _("VIRIDIAN FOREST");
+static const u8 gMapName_MtMoon[] = _("MT. MOON");
+static const u8 gMapName_SSAnne[] = _("S.S. ANNE");
+static const u8 gMapName_UndergroundPath[] = _("UNDERGROUND PATH");
+static const u8 gMapName_UndergroundPath2[] = _("UNDERGROUND PATH");
+static const u8 gMapName_DiglettsCave[] = _("DIGLETT’S CAVE");
+static const u8 gMapName_KantoVictoryRoad[] = _("VICTORY ROAD");
+static const u8 gMapName_RocketHideout[] = _("ROCKET HIDEOUT");
+static const u8 gMapName_SilphCo[] = _("SILPH CO.");
+static const u8 gMapName_PokemonMansion[] = _("POKéMON MANSION");
+static const u8 gMapName_KantoSafariZone[] = _("SAFARI ZONE");
+static const u8 gMapName_PokemonLeague[] = _("POKéMON LEAGUE");
+static const u8 gMapName_RockTunnel[] = _("ROCK TUNNEL");
+static const u8 gMapName_SeafoamIslands[] = _("SEAFOAM ISLANDS");
+static const u8 gMapName_PokemonTower[] = _("POKéMON TOWER");
+static const u8 gMapName_CeruleanCave[] = _("CERULEAN CAVE");
+static const u8 gMapName_PowerPlant[] = _("POWER PLANT");
+static const u8 gMapName_OneIsland[] = _("ONE ISLAND");
+static const u8 gMapName_TwoIsland[] = _("TWO ISLAND");
+static const u8 gMapName_ThreeIsland[] = _("THREE ISLAND");
+static const u8 gMapName_FourIsland[] = _("FOUR ISLAND");
+static const u8 gMapName_FiveIsland[] = _("FIVE ISLAND");
+static const u8 gMapName_SevenIsland[] = _("SEVEN ISLAND");
+static const u8 gMapName_SixIsland[] = _("SIX ISLAND");
+static const u8 gMapName_KindleRoad[] = _("KINDLE ROAD");
+static const u8 gMapName_TreasureBeach[] = _("TREASURE BEACH");
+static const u8 gMapName_CapeBrink[] = _("CAPE BRINK");
+static const u8 gMapName_BondBridge[] = _("BOND BRIDGE");
+static const u8 gMapName_ThreeIslePort[] = _("THREE ISLE PORT");
+static const u8 gMapName_SeviiIsle6[] = _("SEVII ISLE 6");
+static const u8 gMapName_SeviiIsle7[] = _("SEVII ISLE 7");
+static const u8 gMapName_SeviiIsle8[] = _("SEVII ISLE 8");
+static const u8 gMapName_SeviiIsle9[] = _("SEVII ISLE 9");
+static const u8 gMapName_ResortGorgeous[] = _("RESORT GORGEOUS");
+static const u8 gMapName_WaterLabyrinth[] = _("WATER LABYRINTH");
+static const u8 gMapName_FiveIsleMeadow[] = _("FIVE ISLE MEADOW");
+static const u8 gMapName_MemorialPillar[] = _("MEMORIAL PILLAR");
+static const u8 gMapName_OutcastIsland[] = _("OUTCAST ISLAND");
+static const u8 gMapName_GreenPath[] = _("GREEN PATH");
+static const u8 gMapName_WaterPath[] = _("WATER PATH");
+static const u8 gMapName_RuinValley[] = _("RUIN VALLEY");
+static const u8 gMapName_TrainerTower[] = _("TRAINER TOWER");
+static const u8 gMapName_CanyonEntrance[] = _("CANYON ENTRANCE");
+static const u8 gMapName_SevaultCanyon[] = _("SEVAULT CANYON");
+static const u8 gMapName_TanobyRuins[] = _("TANOBY RUINS");
+static const u8 gMapName_SeviiIsle22[] = _("SEVII ISLE 22");
+static const u8 gMapName_SeviiIsle23[] = _("SEVII ISLE 23");
+static const u8 gMapName_SeviiIsle24[] = _("SEVII ISLE 24");
+static const u8 gMapName_NavelRock[] = _("NAVEL ROCK");
+static const u8 gMapName_MtEmber[] = _("MT. EMBER");
+static const u8 gMapName_BerryForest[] = _("BERRY FOREST");
+static const u8 gMapName_IcefallCave[] = _("ICEFALL CAVE");
+static const u8 gMapName_RocketWarehouse[] = _("ROCKET WAREHOUSE");
+static const u8 gMapName_TrainerTower2[] = _("TRAINER TOWER");
+static const u8 gMapName_DottedHole[] = _("DOTTED HOLE");
+static const u8 gMapName_LostCave[] = _("LOST CAVE");
+static const u8 gMapName_PatternBush[] = _("PATTERN BUSH");
+static const u8 gMapName_AlteringCave[] = _("ALTERING CAVE");
+static const u8 gMapName_TanobyChambers[] = _("TANOBY CHAMBERS");
+static const u8 gMapName_ThreeIslePath[] = _("THREE ISLE PATH");
+static const u8 gMapName_TanobyKey[] = _("TANOBY KEY");
+static const u8 gMapName_BirthIsland[] = _("BIRTH ISLAND");
+static const u8 gMapName_MoneanChamber[] = _("MONEAN CHAMBER");
+static const u8 gMapName_LiptooChamber[] = _("LIPTOO CHAMBER");
+static const u8 gMapName_WeepthChamber[] = _("WEEPTH CHAMBER");
+static const u8 gMapName_DilfordChamber[] = _("DILFORD CHAMBER");
+static const u8 gMapName_ScufibChamber[] = _("SCUFIB CHAMBER");
+static const u8 gMapName_RixyChamber[] = _("RIXY CHAMBER");
+static const u8 gMapName_ViapoisChamber[] = _("VIAPOIS CHAMBER");
+static const u8 gMapName_EmberSpa[] = _("EMBER SPA");
+static const u8 gMapName_SpecialArea[] = _("SPECIAL AREA");
+static const u8 gMapName_AquaHideout[] = _("AQUA HIDEOUT");
+static const u8 gMapName_MagmaHideout[] = _("MAGMA HIDEOUT");
+static const u8 gMapName_MirageTower[] = _("MIRAGE TOWER");
+static const u8 gMapName_FarawayIsland[] = _("FARAWAY ISLAND");
+static const u8 gMapName_ArtisanCave[] = _("ARTISAN CAVE");
+static const u8 gMapName_MarineCave[] = _("MARINE CAVE");
+static const u8 gMapName_TerraCave[] = _("TERRA CAVE");
+static const u8 gMapName_DesertUnderpass[] = _("DESERT UNDERPASS");
+static const u8 gMapName_TrainerHill[] = _("TRAINER HILL");
+
+const struct RegionMapLocation gRegionMapEntries[] = {
+ { 4, 11, 1, 1, gMapName_LittlerootTown},
+ { 4, 9, 1, 1, gMapName_OldaleTown},
+ { 2, 14, 1, 1, gMapName_DewfordTown},
+ { 5, 3, 1, 1, gMapName_LavaridgeTown},
+ { 3, 0, 1, 1, gMapName_FallarborTown},
+ { 4, 6, 1, 1, gMapName_VerdanturfTown},
+ {17, 10, 1, 1, gMapName_PacifidlogTown},
+ { 1, 9, 1, 1, gMapName_PetalburgCity},
+ { 8, 10, 1, 2, gMapName_SlateportCity},
+ { 8, 6, 2, 1, gMapName_MauvilleCity},
+ { 0, 5, 1, 2, gMapName_RustboroCity},
+ {12, 0, 1, 1, gMapName_FortreeCity},
+ {18, 3, 2, 1, gMapName_LilycoveCity},
+ {24, 5, 2, 1, gMapName_MossdeepCity},
+ {21, 7, 1, 1, gMapName_SootopolisCity},
+ {27, 8, 1, 2, gMapName_EverGrandeCity},
+ { 4, 10, 1, 1, gMapName_Route101},
+ { 2, 9, 2, 1, gMapName_Route102},
+ { 4, 8, 4, 1, gMapName_Route103},
+ { 0, 7, 1, 3, gMapName_Route104},
+ { 0, 10, 1, 3, gMapName_Route105},
+ { 0, 13, 2, 1, gMapName_Route106},
+ { 3, 14, 3, 1, gMapName_Route107},
+ { 6, 14, 2, 1, gMapName_Route108},
+ { 8, 12, 1, 3, gMapName_Route109},
+ { 8, 7, 1, 3, gMapName_Route110},
+ { 8, 0, 1, 6, gMapName_Route111},
+ { 6, 3, 2, 1, gMapName_Route112},
+ { 4, 0, 4, 1, gMapName_Route113},
+ { 1, 0, 2, 3, gMapName_Route114},
+ { 0, 2, 1, 3, gMapName_Route115},
+ { 1, 5, 4, 1, gMapName_Route116},
+ { 5, 6, 3, 1, gMapName_Route117},
+ {10, 6, 2, 1, gMapName_Route118},
+ {11, 0, 1, 6, gMapName_Route119},
+ {13, 0, 1, 4, gMapName_Route120},
+ {14, 3, 4, 1, gMapName_Route121},
+ {16, 4, 1, 2, gMapName_Route122},
+ {12, 6, 5, 1, gMapName_Route123},
+ {20, 3, 4, 3, gMapName_Route124},
+ {24, 3, 2, 2, gMapName_Route125},
+ {20, 6, 3, 3, gMapName_Route126},
+ {23, 6, 3, 3, gMapName_Route127},
+ {23, 9, 4, 1, gMapName_Route128},
+ {24, 10, 2, 1, gMapName_Route129},
+ {21, 10, 3, 1, gMapName_Route130},
+ {18, 10, 3, 1, gMapName_Route131},
+ {15, 10, 2, 1, gMapName_Route132},
+ {12, 10, 3, 1, gMapName_Route133},
+ { 9, 10, 3, 1, gMapName_Route134},
+ {20, 3, 4, 3, gMapName_Underwater},
+ {20, 6, 3, 3, gMapName_Underwater},
+ {23, 6, 3, 3, gMapName_Underwater},
+ {23, 9, 4, 1, gMapName_Underwater},
+ {21, 7, 1, 1, gMapName_Underwater},
+ { 1, 13, 1, 1, gMapName_GraniteCave},
+ { 6, 2, 1, 1, gMapName_MtChimney},
+ {16, 2, 1, 1, gMapName_SafariZone},
+ {22, 12, 1, 1, gMapName_BattleFrontier},
+ { 0, 8, 1, 1, gMapName_PetalburgWoods},
+ { 2, 5, 1, 1, gMapName_RusturfTunnel},
+ { 6, 14, 1, 1, gMapName_AbandonedShip},
+ { 8, 7, 1, 1, gMapName_NewMauville},
+ { 0, 3, 1, 1, gMapName_MeteorFalls},
+ { 1, 2, 1, 1, gMapName_MeteorFalls},
+ {16, 4, 1, 1, gMapName_MtPyre},
+ {19, 3, 1, 1, gMapName_AquaHideoutOld},
+ {24, 4, 1, 1, gMapName_ShoalCave},
+ {24, 9, 1, 1, gMapName_SeafloorCavern},
+ {24, 9, 1, 1, gMapName_Underwater},
+ {27, 9, 1, 1, gMapName_VictoryRoad},
+ {17, 10, 1, 1, gMapName_MirageIsland},
+ {21, 7, 1, 1, gMapName_CaveOfOrigin},
+ {12, 14, 1, 1, gMapName_SouthernIsland},
+ { 6, 3, 1, 1, gMapName_FieryPath},
+ { 7, 3, 1, 1, gMapName_FieryPath},
+ { 6, 3, 1, 1, gMapName_JaggedPass},
+ { 7, 2, 1, 1, gMapName_JaggedPass},
+ {11, 10, 1, 1, gMapName_SealedChamber},
+ {11, 10, 1, 1, gMapName_Underwater},
+ {13, 0, 1, 1, gMapName_ScorchedSlab},
+ { 0, 10, 1, 1, gMapName_IslandCave},
+ { 8, 3, 1, 1, gMapName_DesertRuins},
+ {13, 2, 1, 1, gMapName_AncientTomb},
+ { 0, 0, 1, 1, gMapName_InsideOfTruck},
+ {19, 10, 1, 1, gMapName_SkyPillar},
+ { 0, 0, 1, 1, gMapName_SecretBase},
+ { 0, 0, 1, 1, gMapName_None},
+ { 0, 0, 1, 1, gMapName_PalletTown},
+ { 0, 0, 1, 1, gMapName_ViridianCity},
+ { 0, 0, 1, 1, gMapName_PewterCity},
+ { 0, 0, 1, 1, gMapName_CeruleanCity},
+ { 0, 0, 1, 1, gMapName_LavenderTown},
+ { 0, 0, 1, 1, gMapName_VermilionCity},
+ { 0, 0, 1, 1, gMapName_CeladonCity},
+ { 0, 0, 1, 1, gMapName_FuchsiaCity},
+ { 0, 0, 1, 1, gMapName_CinnabarIsland},
+ { 0, 0, 1, 1, gMapName_IndigoPlateau},
+ { 0, 0, 1, 1, gMapName_SaffronCity},
+ { 0, 0, 1, 1, gMapName_Route4},
+ { 0, 0, 1, 1, gMapName_Route10},
+ { 0, 0, 1, 1, gMapName_Route1},
+ { 0, 0, 1, 1, gMapName_Route2},
+ { 0, 0, 1, 1, gMapName_Route3},
+ { 0, 0, 1, 1, gMapName_Route4_2},
+ { 0, 0, 1, 1, gMapName_Route5},
+ { 0, 0, 1, 1, gMapName_Route6},
+ { 0, 0, 1, 1, gMapName_Route7},
+ { 0, 0, 1, 1, gMapName_Route8},
+ { 0, 0, 1, 1, gMapName_Route9},
+ { 0, 0, 1, 1, gMapName_Route10_2},
+ { 0, 0, 1, 1, gMapName_Route11},
+ { 0, 0, 1, 1, gMapName_Route12},
+ { 0, 0, 1, 1, gMapName_Route13},
+ { 0, 0, 1, 1, gMapName_Route14},
+ { 0, 0, 1, 1, gMapName_Route15},
+ { 0, 0, 1, 1, gMapName_Route16},
+ { 0, 0, 1, 1, gMapName_Route17},
+ { 0, 0, 1, 1, gMapName_Route18},
+ { 0, 0, 1, 1, gMapName_Route19},
+ { 0, 0, 1, 1, gMapName_Route20},
+ { 0, 0, 1, 1, gMapName_Route21},
+ { 0, 0, 1, 1, gMapName_Route22},
+ { 0, 0, 1, 1, gMapName_Route23},
+ { 0, 0, 1, 1, gMapName_Route24},
+ { 0, 0, 1, 1, gMapName_Route25},
+ { 0, 0, 1, 1, gMapName_ViridianForest},
+ { 0, 0, 1, 1, gMapName_MtMoon},
+ { 0, 0, 1, 1, gMapName_SSAnne},
+ { 0, 0, 1, 1, gMapName_UndergroundPath},
+ { 0, 0, 1, 1, gMapName_UndergroundPath2},
+ { 0, 0, 1, 1, gMapName_DiglettsCave},
+ { 0, 0, 1, 1, gMapName_KantoVictoryRoad},
+ { 0, 0, 1, 1, gMapName_RocketHideout},
+ { 0, 0, 1, 1, gMapName_SilphCo},
+ { 0, 0, 1, 1, gMapName_PokemonMansion},
+ { 0, 0, 1, 1, gMapName_KantoSafariZone},
+ { 0, 0, 1, 1, gMapName_PokemonLeague},
+ { 0, 0, 1, 1, gMapName_RockTunnel},
+ { 0, 0, 1, 1, gMapName_SeafoamIslands},
+ { 0, 0, 1, 1, gMapName_PokemonTower},
+ { 0, 0, 1, 1, gMapName_CeruleanCave},
+ { 0, 0, 1, 1, gMapName_PowerPlant},
+ { 0, 0, 1, 1, gMapName_OneIsland},
+ { 0, 0, 1, 1, gMapName_TwoIsland},
+ { 0, 0, 1, 1, gMapName_ThreeIsland},
+ { 0, 0, 1, 1, gMapName_FourIsland},
+ { 0, 0, 1, 1, gMapName_FiveIsland},
+ { 0, 0, 1, 1, gMapName_SevenIsland},
+ { 0, 0, 1, 1, gMapName_SixIsland},
+ { 0, 0, 1, 1, gMapName_KindleRoad},
+ { 0, 0, 1, 1, gMapName_TreasureBeach},
+ { 0, 0, 1, 1, gMapName_CapeBrink},
+ { 0, 0, 1, 1, gMapName_BondBridge},
+ { 0, 0, 1, 1, gMapName_ThreeIslePort},
+ { 0, 0, 1, 1, gMapName_SeviiIsle6},
+ { 0, 0, 1, 1, gMapName_SeviiIsle7},
+ { 0, 0, 1, 1, gMapName_SeviiIsle8},
+ { 0, 0, 1, 1, gMapName_SeviiIsle9},
+ { 0, 0, 1, 1, gMapName_ResortGorgeous},
+ { 0, 0, 1, 1, gMapName_WaterLabyrinth},
+ { 0, 0, 1, 1, gMapName_FiveIsleMeadow},
+ { 0, 0, 1, 1, gMapName_MemorialPillar},
+ { 0, 0, 1, 1, gMapName_OutcastIsland},
+ { 0, 0, 1, 1, gMapName_GreenPath},
+ { 0, 0, 1, 1, gMapName_WaterPath},
+ { 0, 0, 1, 1, gMapName_RuinValley},
+ { 0, 0, 1, 1, gMapName_TrainerTower},
+ { 0, 0, 1, 1, gMapName_CanyonEntrance},
+ { 0, 0, 1, 1, gMapName_SevaultCanyon},
+ { 0, 0, 1, 1, gMapName_TanobyRuins},
+ { 0, 0, 1, 1, gMapName_SeviiIsle22},
+ { 0, 0, 1, 1, gMapName_SeviiIsle23},
+ { 0, 0, 1, 1, gMapName_SeviiIsle24},
+ { 0, 0, 1, 1, gMapName_NavelRock},
+ { 0, 0, 1, 1, gMapName_MtEmber},
+ { 0, 0, 1, 1, gMapName_BerryForest},
+ { 0, 0, 1, 1, gMapName_IcefallCave},
+ { 0, 0, 1, 1, gMapName_RocketWarehouse},
+ { 0, 0, 1, 1, gMapName_TrainerTower2},
+ { 0, 0, 1, 1, gMapName_DottedHole},
+ { 0, 0, 1, 1, gMapName_LostCave},
+ { 0, 0, 1, 1, gMapName_PatternBush},
+ { 0, 0, 1, 1, gMapName_AlteringCave},
+ { 0, 0, 1, 1, gMapName_TanobyChambers},
+ { 0, 0, 1, 1, gMapName_ThreeIslePath},
+ { 0, 0, 1, 1, gMapName_TanobyKey},
+ { 0, 0, 1, 1, gMapName_BirthIsland},
+ { 0, 0, 1, 1, gMapName_MoneanChamber},
+ { 0, 0, 1, 1, gMapName_LiptooChamber},
+ { 0, 0, 1, 1, gMapName_WeepthChamber},
+ { 0, 0, 1, 1, gMapName_DilfordChamber},
+ { 0, 0, 1, 1, gMapName_ScufibChamber},
+ { 0, 0, 1, 1, gMapName_RixyChamber},
+ { 0, 0, 1, 1, gMapName_ViapoisChamber},
+ { 0, 0, 1, 1, gMapName_EmberSpa},
+ { 0, 0, 1, 1, gMapName_SpecialArea},
+ {19, 3, 1, 1, gMapName_AquaHideout},
+ { 6, 3, 1, 1, gMapName_MagmaHideout},
+ { 8, 2, 1, 1, gMapName_MirageTower},
+ { 0, 0, 1, 1, gMapName_BirthIsland},
+ { 0, 0, 1, 1, gMapName_FarawayIsland},
+ {22, 12, 1, 1, gMapName_ArtisanCave},
+ { 0, 0, 1, 1, gMapName_MarineCave},
+ { 0, 0, 1, 1, gMapName_Underwater},
+ { 0, 0, 1, 1, gMapName_TerraCave},
+ { 0, 10, 1, 3, gMapName_Underwater},
+ {24, 3, 2, 2, gMapName_Underwater},
+ {24, 10, 2, 1, gMapName_Underwater},
+ { 2, 0, 1, 1, gMapName_DesertUnderpass},
+ { 6, 8, 1, 1, gMapName_AlteringCave},
+ { 0, 0, 1, 1, gMapName_NavelRock},
+ { 8, 4, 1, 1, gMapName_TrainerHill}
+};
+
+#endif //GUARD_DATA_REGION_MAP_REGION_MAP_ENTRIES_H
diff --git a/include/daycare.h b/include/daycare.h
new file mode 100644
index 000000000..7db44e024
--- /dev/null
+++ b/include/daycare.h
@@ -0,0 +1,27 @@
+#ifndef GUARD_DAYCARE_H
+#define GUARD_DAYCARE_H
+
+#define EGG_HATCH_LEVEL 5
+
+u8 *GetMonNick(struct Pokemon *mon, u8 *dest);
+u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest);
+u8 CountPokemonInDaycare(struct DayCare *daycare);
+void InitDaycareMailRecordMixing(struct DayCare *daycare, struct RecordMixingDayCareMail *daycareMail);
+void StoreSelectedPokemonInDaycare(void);
+u16 TakePokemonFromDaycare(void);
+void GetDaycareCost(void);
+u8 GetNumLevelsGainedFromDaycare(void);
+void TriggerPendingDaycareEgg(void);
+void RejectEggFromDayCare(void);
+void CreateEgg(struct Pokemon *mon, u16 species, bool8 setHotSpringsLocation);
+void GiveEggFromDaycare(void);
+bool8 DoEggActions_CheckHatch(void);
+u16 GetSelectedMonNickAndSpecies(void);
+void GetDaycareMonNicknames(void);
+u8 GetDaycareState(void);
+void SetDaycareCompatibilityString(void);
+bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio);
+void ShowDaycareLevelMenu(void);
+void ChooseSendDaycareMon(void);
+
+#endif // GUARD_DAYCARE_H
diff --git a/include/decompress.h b/include/decompress.h
index c3a771893..36be803e0 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -3,6 +3,8 @@
#include "sprite.h"
+extern u8 gDecompressionBuffer[0x4000];
+
void LZDecompressWram(const void *src, void *dest);
void LZDecompressVram(const void *src, void *dest);
diff --git a/include/egg_hatch.h b/include/egg_hatch.h
new file mode 100644
index 000000000..862d33947
--- /dev/null
+++ b/include/egg_hatch.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_EGG_HATCH_H
+#define GUARD_EGG_HATCH_H
+
+void ScriptHatchMon(void);
+bool8 sub_8071614(void);
+void EggHatch(void);
+u8 GetEggStepsToSubtract(void);
+u16 sub_80722E0(void);
+
+#endif // GUARD_EGG_HATCH_H
diff --git a/include/event_data.h b/include/event_data.h
index 0bd11fdcd..f0ab90ae4 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -42,11 +42,11 @@ extern u16 gSpecialVar_0x8008;
extern u16 gSpecialVar_0x8009;
extern u16 gSpecialVar_0x800A;
extern u16 gSpecialVar_0x800B;
-extern u16 gScriptResult;
-extern u16 gScriptLastTalked;
-extern u16 gScriptFacing;
-extern u16 gSpecialVar_0x8012;
-extern u16 gSpecialVar_0x8013;
+extern u16 gSpecialVar_Result;
+extern u16 gSpecialVar_LastTalked;
+extern u16 gSpecialVar_Facing;
+extern u16 gSpecialVar_MonBoxId;
+extern u16 gSpecialVar_MonBoxPos;
extern u16 gSpecialVar_0x8014;
#endif // GUARD_EVENT_DATA_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index f85118e00..844f1052a 100755
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -7,12 +7,12 @@
extern const u8 gUnknown_0823B4E8[];
extern const u8 gUnknown_0823B5E9[];
-extern const u8 gUnknown_08275BB7[];
-extern const u8 gUnknown_08275D0C[];
-extern const u8 gUnknown_08275D1F[];
-extern const u8 gUnknown_08275D2E[];
-extern const u8 gUnknown_082766A2[];
-extern const u8 gUnknown_082766A6[];
+extern const u8 EventScript_275BB7[];
+extern const u8 EventScript_275D0C[];
+extern const u8 EventScript_275D1F[];
+extern const u8 EventScript_275D2E[];
+extern const u8 EventScript_2766A2[];
+extern const u8 EventScript_2766A6[];
extern const u8 gTVBravoTrainerText00[];
extern const u8 gTVBravoTrainerText01[];
@@ -362,14 +362,14 @@ extern const u8 gPokeNewsTextLilycove_Ending[];
extern const u8 gPokeNewsTextBlendMaster_Upcoming[];
extern const u8 gPokeNewsTextBlendMaster_Ongoing[];
extern const u8 gPokeNewsTextBlendMaster_Ending[];
-extern const u8 gUnknown_08274966[];
-extern const u8 gUnknown_08274D13[];
-extern const u8 gUnknown_08274FFE[];
-extern const u8 gUnknown_08275367[];
-extern const u8 gUnknown_082756C7[];
-extern const u8 gUnknown_08274B24[];
-extern const u8 gUnknown_08274E75[];
-extern const u8 gUnknown_082751E1[];
-extern const u8 gUnknown_082754F6[];
-extern const u8 gUnknown_082758CC[];
+extern const u8 SecretBase_RedCave1_Text_274966[];
+extern const u8 SecretBase_RedCave1_Text_274D13[];
+extern const u8 SecretBase_RedCave1_Text_274FFE[];
+extern const u8 SecretBase_RedCave1_Text_275367[];
+extern const u8 SecretBase_RedCave1_Text_2756C7[];
+extern const u8 SecretBase_RedCave1_Text_274B24[];
+extern const u8 SecretBase_RedCave1_Text_274E75[];
+extern const u8 SecretBase_RedCave1_Text_2751E1[];
+extern const u8 SecretBase_RedCave1_Text_2754F6[];
+extern const u8 SecretBase_RedCave1_Text_2758CC[];
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_effect.h b/include/field_effect.h
index aa3f7eba0..629ae07c7 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -69,9 +69,10 @@ enum FieldEffectScriptIdx
FLDEFF_USE_TELEPORT
};
+extern u32 gFieldEffectArguments[8];
+
u8 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
-
-extern u32 gFieldEffectArguments[8];
+void sub_80B69DC(void);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/flags.h b/include/flags.h
index 7d825feba..30c28c0c2 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -1,108 +1,115 @@
#ifndef GUARD_FLAGS_H
#define GUARD_FLAGS_H
-#define TRAINER_FLAG_START 0x500
+#define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53
+#define FLAG_PENDING_DAYCARE_EGG 0x86
+
+#define FLAG_TRAINER_FLAG_START 0x500
+
#define TRAINERS_FLAG_NO 0x356
-#define CODE_FLAGS (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
+#define CODE_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
// SYSTEM FLAGS
-#define SYS_POKEMON_GET CODE_FLAGS + 0
-#define SYS_POKEDEX_GET CODE_FLAGS + 1
-#define SYS_POKENAV_GET CODE_FLAGS + 2
+#define FLAG_SYS_POKEMON_GET (CODE_FLAGS + 0)
+#define FLAG_SYS_POKEDEX_GET (CODE_FLAGS + 1)
+#define FLAG_SYS_POKENAV_GET (CODE_FLAGS + 2)
// third one appears unused
-#define SYS_GAME_CLEAR CODE_FLAGS + 4
-#define SYS_CHAT_USED CODE_FLAGS + 5
-#define SYS_HIPSTER_MEET CODE_FLAGS + 6
+#define FLAG_SYS_GAME_CLEAR (CODE_FLAGS + 4)
+#define FLAG_SYS_CHAT_USED (CODE_FLAGS + 5)
+#define FLAG_SYS_HIPSTER_MEET (CODE_FLAGS + 6)
// badges
-#define BADGE01_GET CODE_FLAGS + 7
-#define BADGE02_GET CODE_FLAGS + 8
-#define BADGE03_GET CODE_FLAGS + 9
-#define BADGE04_GET CODE_FLAGS + 0xA
-#define BADGE05_GET CODE_FLAGS + 0xB
-#define BADGE06_GET CODE_FLAGS + 0xC
-#define BADGE07_GET CODE_FLAGS + 0xD
-#define BADGE08_GET CODE_FLAGS + 0xE
+#define FLAG_BADGE01_GET (CODE_FLAGS + 7)
+#define FLAG_BADGE02_GET (CODE_FLAGS + 8)
+#define FLAG_BADGE03_GET (CODE_FLAGS + 9)
+#define FLAG_BADGE04_GET (CODE_FLAGS + 0xA)
+#define FLAG_BADGE05_GET (CODE_FLAGS + 0xB)
+#define FLAG_BADGE06_GET (CODE_FLAGS + 0xC)
+#define FLAG_BADGE07_GET (CODE_FLAGS + 0xD)
+#define FLAG_BADGE08_GET (CODE_FLAGS + 0xE)
// cities and towns
-#define FLAG_VISITED_LITTLEROOT_TOWN CODE_FLAGS + 0xF
-#define FLAG_VISITED_OLDALE_TOWN CODE_FLAGS + 0x10
-#define FLAG_VISITED_DEWFORD_TOWN CODE_FLAGS + 0x11
-#define FLAG_VISITED_LAVARIDGE_TOWN CODE_FLAGS + 0x12
-#define FLAG_VISITED_FALLARBOR_TOWN CODE_FLAGS + 0x13
-#define FLAG_VISITED_VERDANTURF_TOWN CODE_FLAGS + 0x14
-#define FLAG_VISITED_PACIFIDLOG_TOWN CODE_FLAGS + 0x15
-#define FLAG_VISITED_PETALBURG_CITY CODE_FLAGS + 0x16
-#define FLAG_VISITED_SLATEPORT_CITY CODE_FLAGS + 0x17
-#define FLAG_VISITED_MAUVILLE_CITY CODE_FLAGS + 0x18
-#define FLAG_VISITED_RUSTBORO_CITY CODE_FLAGS + 0x19
-#define FLAG_VISITED_FORTREE_CITY CODE_FLAGS + 0x1A
-#define FLAG_VISITED_LILYCOVE_CITY CODE_FLAGS + 0x1B
-#define FLAG_VISITED_MOSSDEEP_CITY CODE_FLAGS + 0x1C
-#define FLAG_VISITED_SOOTOPOLIS_CITY CODE_FLAGS + 0x1D
-#define FLAG_VISITED_EVER_GRANDE_CITY CODE_FLAGS + 0x1E
-
-#define SYS_UNKNOWN_880 CODE_FLAGS + 0x20
-
-#define SYS_USE_FLASH CODE_FLAGS + 0x28
-#define SYS_USE_STRENGTH CODE_FLAGS + 0x29
-#define SYS_WEATHER_CTRL CODE_FLAGS + 0x2A
-#define SYS_CYCLING_ROAD CODE_FLAGS + 0x2B
-#define SYS_SAFARI_MODE CODE_FLAGS + 0x2C
-#define SYS_CRUISE_MODE CODE_FLAGS + 0x2D
-
-#define SYS_TV_HOME CODE_FLAGS + 0x30
-#define SYS_TV_WATCH CODE_FLAGS + 0x31
-#define SYS_TV_START CODE_FLAGS + 0x32
-#define SYS_POPWORD_INPUT CODE_FLAGS + 0x33
-#define SYS_MIX_RECORD CODE_FLAGS + 0x34
-#define SYS_CLOCK_SET CODE_FLAGS + 0x35
-#define SYS_NATIONAL_DEX CODE_FLAGS + 0x36
-#define SYS_CAVE_SHIP CODE_FLAGS + 0x37
-#define SYS_CAVE_WONDER CODE_FLAGS + 0x38
-#define SYS_CAVE_BATTLE CODE_FLAGS + 0x39
-#define SYS_SHOAL_TIDE CODE_FLAGS + 0x3A
-#define SYS_RIBBON_GET CODE_FLAGS + 0x3B
-
-#define SYS_PC_LANETTE CODE_FLAGS + 0x4B
-#define SYS_MYSTERY_EVENT_ENABLE CODE_FLAGS + 0x4C
-#define SYS_ENC_UP_ITEM CODE_FLAGS + 0x4D
-#define SYS_ENC_DOWN_ITEM CODE_FLAGS + 0x4E
-#define SYS_BRAILLE_DIG CODE_FLAGS + 0x4F
-#define SYS_BRAILLE_STRENGTH CODE_FLAGS + 0x50
-#define SYS_BRAILLE_WAIT CODE_FLAGS + 0x51
-#define SYS_BRAILLE_FLY CODE_FLAGS + 0x52
-#define SYS_HAS_EON_TICKET CODE_FLAGS + 0x53
-
-#define SYS_POKEMON_LEAGUE_FLY CODE_FLAGS + 0x54
-
-#define SYS_TV_LATI CODE_FLAGS + 0x5D
-
-#define SYS_SHOAL_ITEM CODE_FLAGS + 0x5F
-#define SYS_B_DASH CODE_FLAGS + 0x60 // got Running Shoes
-#define SYS_CTRL_OBJ_DELETE CODE_FLAGS + 0x61
-#define SYS_RESET_RTC_ENABLE CODE_FLAGS + 0x62
-
-#define SYS_TOWER_SILVER CODE_FLAGS + 0x64
-#define SYS_TOWER_GOLD CODE_FLAGS + 0x65
-#define SYS_DOME_SILVER CODE_FLAGS + 0x66
-#define SYS_DOME_GOLD CODE_FLAGS + 0x67
-#define SYS_PALACE_SILVER CODE_FLAGS + 0x68
-#define SYS_PALACE_GOLD CODE_FLAGS + 0x69
-#define SYS_ARENA_SILVER CODE_FLAGS + 0x6A
-#define SYS_ARENA_GOLD CODE_FLAGS + 0x6B
-#define SYS_FACTORY_SILVER CODE_FLAGS + 0x6C
-#define SYS_FACTORY_GOLD CODE_FLAGS + 0x6D
-#define SYS_PIKE_SILVER CODE_FLAGS + 0x6E
-#define SYS_PIKE_GOLD CODE_FLAGS + 0x6F
-#define SYS_PYRAMID_SILVER CODE_FLAGS + 0x70
-#define SYS_PYRAMID_GOLD CODE_FLAGS + 0x71
-#define SYS_FRONTIER_PASS CODE_FLAGS + 0x72
-
-#define SYS_STORAGE_UNKNOWN_FLAG CODE_FLAGS + 0x77
-
-#define SYS_MYSTERY_GIFT_ENABLE CODE_FLAGS + 0x7B
+#define FLAG_VISITED_LITTLEROOT_TOWN (CODE_FLAGS + 0xF)
+#define FLAG_VISITED_OLDALE_TOWN (CODE_FLAGS + 0x10)
+#define FLAG_VISITED_DEWFORD_TOWN (CODE_FLAGS + 0x11)
+#define FLAG_VISITED_LAVARIDGE_TOWN (CODE_FLAGS + 0x12)
+#define FLAG_VISITED_FALLARBOR_TOWN (CODE_FLAGS + 0x13)
+#define FLAG_VISITED_VERDANTURF_TOWN (CODE_FLAGS + 0x14)
+#define FLAG_VISITED_PACIFIDLOG_TOWN (CODE_FLAGS + 0x15)
+#define FLAG_VISITED_PETALBURG_CITY (CODE_FLAGS + 0x16)
+#define FLAG_VISITED_SLATEPORT_CITY (CODE_FLAGS + 0x17)
+#define FLAG_VISITED_MAUVILLE_CITY (CODE_FLAGS + 0x18)
+#define FLAG_VISITED_RUSTBORO_CITY (CODE_FLAGS + 0x19)
+#define FLAG_VISITED_FORTREE_CITY (CODE_FLAGS + 0x1A)
+#define FLAG_VISITED_LILYCOVE_CITY (CODE_FLAGS + 0x1B)
+#define FLAG_VISITED_MOSSDEEP_CITY (CODE_FLAGS + 0x1C)
+#define FLAG_VISITED_SOOTOPOLIS_CITY (CODE_FLAGS + 0x1D)
+#define FLAG_VISITED_EVER_GRANDE_CITY (CODE_FLAGS + 0x1E)
+
+#define FLAG_SYS_UNKNOWN_880 (CODE_FLAGS + 0x20)
+
+#define FLAG_SYS_USE_FLASH (CODE_FLAGS + 0x28)
+#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_SYS_CRUISE_MODE (CODE_FLAGS + 0x2D)
+
+#define FLAG_SYS_TV_HOME (CODE_FLAGS + 0x30)
+#define FLAG_SYS_TV_WATCH (CODE_FLAGS + 0x31)
+#define FLAG_SYS_TV_START (CODE_FLAGS + 0x32)
+#define FLAG_SYS_POPWORD_INPUT (CODE_FLAGS + 0x33)
+#define FLAG_SYS_MIX_RECORD (CODE_FLAGS + 0x34)
+#define FLAG_SYS_CLOCK_SET (CODE_FLAGS + 0x35)
+#define FLAG_SYS_NATIONAL_DEX (CODE_FLAGS + 0x36)
+#define FLAG_SYS_CAVE_SHIP (CODE_FLAGS + 0x37)
+#define FLAG_SYS_CAVE_WONDER (CODE_FLAGS + 0x38)
+#define FLAG_SYS_CAVE_BATTLE (CODE_FLAGS + 0x39)
+#define FLAG_SYS_SHOAL_TIDE (CODE_FLAGS + 0x3A)
+#define FLAG_SYS_RIBBON_GET (CODE_FLAGS + 0x3B)
+
+#define FLAG_UNLOCK_BATTLE_FRONTIER (CODE_FLAGS + 0x48)
+#define FLAG_UNLOCK_SOUTHERN_ISLAND (CODE_FLAGS + 0x49)
+
+#define FLAG_SYS_PC_LANETTE (CODE_FLAGS + 0x4B)
+#define FLAG_SYS_MYSTERY_EVENT_ENABLE (CODE_FLAGS + 0x4C)
+#define FLAG_SYS_ENC_UP_ITEM (CODE_FLAGS + 0x4D)
+#define FLAG_SYS_ENC_DOWN_ITEM (CODE_FLAGS + 0x4E)
+#define FLAG_SYS_BRAILLE_DIG (CODE_FLAGS + 0x4F)
+#define FLAG_SYS_BRAILLE_STRENGTH (CODE_FLAGS + 0x50)
+#define FLAG_SYS_BRAILLE_WAIT (CODE_FLAGS + 0x51)
+#define FLAG_SYS_BRAILLE_FLY (CODE_FLAGS + 0x52)
+#define FLAG_SYS_HAS_EON_TICKET (CODE_FLAGS + 0x53)
+
+#define FLAG_SYS_POKEMON_LEAGUE_FLY (CODE_FLAGS + 0x54)
+
+#define FLAG_SYS_TV_LATI (CODE_FLAGS + 0x5D)
+
+#define FLAG_SYS_SHOAL_ITEM (CODE_FLAGS + 0x5F)
+#define FLAG_SYS_B_DASH (CODE_FLAGS + 0x60) // got Running Shoes
+#define FLAG_SYS_CTRL_OBJ_DELETE (CODE_FLAGS + 0x61)
+#define FLAG_SYS_RESET_RTC_ENABLE (CODE_FLAGS + 0x62)
+
+#define FLAG_SYS_TOWER_SILVER (CODE_FLAGS + 0x64)
+#define FLAG_SYS_TOWER_GOLD (CODE_FLAGS + 0x65)
+#define FLAG_SYS_DOME_SILVER (CODE_FLAGS + 0x66)
+#define FLAG_SYS_DOME_GOLD (CODE_FLAGS + 0x67)
+#define FLAG_SYS_PALACE_SILVER (CODE_FLAGS + 0x68)
+#define FLAG_SYS_PALACE_GOLD (CODE_FLAGS + 0x69)
+#define FLAG_SYS_ARENA_SILVER (CODE_FLAGS + 0x6A)
+#define FLAG_SYS_ARENA_GOLD (CODE_FLAGS + 0x6B)
+#define FLAG_SYS_FACTORY_SILVER (CODE_FLAGS + 0x6C)
+#define FLAG_SYS_FACTORY_GOLD (CODE_FLAGS + 0x6D)
+#define FLAG_SYS_PIKE_SILVER (CODE_FLAGS + 0x6E)
+#define FLAG_SYS_PIKE_GOLD (CODE_FLAGS + 0x6F)
+#define FLAG_SYS_PYRAMID_SILVER (CODE_FLAGS + 0x70)
+#define FLAG_SYS_PYRAMID_GOLD (CODE_FLAGS + 0x71)
+#define FLAG_SYS_FRONTIER_PASS (CODE_FLAGS + 0x72)
+
+#define FLAG_SYS_STORAGE_UNKNOWN_FLAG (CODE_FLAGS + 0x77)
+
+#define FLAG_SYS_MYSTERY_GIFT_ENABLE (CODE_FLAGS + 0x7B)
// SPECIAL FLAGS (unknown purpose)
diff --git a/include/global.h b/include/global.h
index f818f15b1..2c0418a78 100644
--- a/include/global.h
+++ b/include/global.h
@@ -167,9 +167,31 @@ struct BerryCrush
u32 unk;
};
+#define PLAYER_NAME_LENGTH 8
+
+struct UnknownSaveBlock2Struct
+{
+ u8 field_0;
+ u8 field_1;
+ u8 field_2[2];
+ u8 field_4[8];
+ u8 field_C[16];
+ u16 field_1C[6];
+ u16 field_28[6];
+ u8 field_34[176];
+ u8 field_E4;
+ u8 field_E5;
+ u8 field_E6;
+ u8 field_E7;
+ u8 field_E8;
+ u8 field_E9;
+ u8 field_EA;
+ u8 field_EB;
+}; // sizeof = 0xEC
+
struct SaveBlock2
{
- /*0x00*/ u8 playerName[8];
+ /*0x00*/ u8 playerName[PLAYER_NAME_LENGTH];
/*0x08*/ u8 playerGender; // MALE, FEMALE
/*0x09*/ u8 specialSaveWarp;
/*0x0A*/ u8 playerTrainerId[4];
@@ -203,7 +225,8 @@ struct SaveBlock2
// All below could be a one giant struct
- /*0x64C*/ u8 field_64C[0x588];
+ /*0x64C*/ u8 field_64C[236];
+ /*0x738*/ struct UnknownSaveBlock2Struct field_738[5]; // No idea here, it's probably wrong, no clue.
/*0xBD4*/ u16 field_BD4;
/*0xBD6*/ u16 field_BD6;
/*0xBD8*/ u8 field_BD8[11];
@@ -217,10 +240,12 @@ struct SaveBlock2
/*0xCA9*/ u8 field_CA9_d : 1; // 0x20
/*0xCA9*/ u8 field_CA9_e : 1; // 0x40
/*0xCA9*/ u8 field_CA9_f : 1; // 0x80
- /*0xCAA*/ u16 field_CAA[0x2e];
+ /*0xCAA*/ u16 field_CAA[4];
+ /*0xCB2*/ u16 battlePyramidWildHeaderId;
+ /*0xCB4*/ u8 field_CB4[82];
/*0xD06*/ u8 field_D06;
/*0xD07*/ u8 field_D07;
- /*0xd08*/ u8 filler_D08[0x112];
+ /*0xD08*/ u8 filler_D08[0x112];
/*0xE1A*/ u16 battlePyramidFloor; // possibly?
/*0xE1C*/ u8 field_E1C[16];
/*0xE2C*/ struct PyramidBag pyramidBag;
@@ -428,30 +453,52 @@ struct ContestWinner
u8 contestRank;
};
-struct DaycareMon
+struct DaycareMiscMon
{
- struct BoxPokemon mon;
struct MailStruct mail;
u8 OT_name[OT_NAME_LENGTH + 1];
- u8 monName[11];
- u8 language_maybe : 4;
- u8 unknown : 4;
- u32 stepsTaken;
+ u8 monName[POKEMON_NAME_LENGTH + 1];
+ u8 gameLanguage:4;
+ u8 monLanguage:4;
+};
+
+struct DaycareMon
+{
+ struct BoxPokemon mon;
+ struct DaycareMiscMon misc;
+ u32 steps;
};
-struct DaycareData
+#define DAYCARE_MON_COUNT 2
+
+struct DayCare
{
- struct DaycareMon mons[2];
+ struct DaycareMon mons[DAYCARE_MON_COUNT];
u32 offspringPersonality;
u8 stepCounter;
};
+struct DayCareMail
+{
+ /*0x00*/ struct MailStruct message;
+ /*0x24*/ u8 names[19];
+};
+
+struct RecordMixingDayCareMail
+{
+ struct DayCareMail mail[DAYCARE_MON_COUNT];
+ u32 numDaycareMons;
+ bool16 holdsItem[DAYCARE_MON_COUNT];
+};
+
#define MAP_OBJECTS_COUNT 16
#define BERRY_TREES_COUNT 128
#define FLAGS_COUNT 300
#define VARS_COUNT 256
+#define MAIL_COUNT 16
-enum {
+enum
+{
LILYCOVE_LADY_QUIZ,
LILYCOVE_LADY_FAVOUR,
LILYCOVE_LADY_CONTEST
@@ -582,13 +629,13 @@ struct SaveBlock1
/*0x2BBC*/ u16 unk2BBC[6];
/*0x2BC8*/ u16 unk2BC8[6];
/*0x2BD4*/ u16 unk2BD4[6];
- /*0x2BE0*/ struct MailStruct mail[16];
+ /*0x2BE0*/ struct MailStruct mail[MAIL_COUNT];
/*0x2E20*/ u8 additionalPhrases[5]; // bitfield for 33 additional phrases in easy chat system
/*0x2E25*/ u8 unk2E25[3]; // possibly padding?
/*0x2E28*/ OldMan oldMan;
/*0x2e64*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
/*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum
- /*0x3030*/ struct DaycareData daycare;
+ /*0x3030*/ struct DayCare daycare;
/*0x3150*/ struct LinkBattleRecord linkBattleRecords[5];
/*0x31A0*/ u8 unk_31A0;
/*0x31A1*/ u8 filler_31A1[7];
diff --git a/include/hall_of_fame.h b/include/hall_of_fame.h
index 62e84c39e..d35ecf268 100644
--- a/include/hall_of_fame.h
+++ b/include/hall_of_fame.h
@@ -1,9 +1,9 @@
#ifndef GUARD_HALL_OF_FAME_H
#define GUARD_HALL_OF_FAME_H
-void sub_8141F90(void);
-void sub_8143648(u16 paletteTag, u8 arg1);
-void sub_81428CC(void);
-void sub_8143680(int, u8);
+void CB2_DoHallOfFameScreen(void);
+void CB2_DoHallOfFameScreenDontSaveData(void);
+void CB2_DoHallOfFamePC(void);
+void sub_8175280(void);
#endif // GUARD_HALL_OF_FAME_H
diff --git a/include/heal_location.h b/include/heal_location.h
new file mode 100644
index 000000000..1f966f1ae
--- /dev/null
+++ b/include/heal_location.h
@@ -0,0 +1,25 @@
+#ifndef GUARD_HEAL_LOCATION_H
+#define GUARD_HEAL_LOCATION_H
+
+// Exported type declarations
+
+struct UnkStruct_0859F534 {
+ const union AffineAnimCmd *const *const affineAnims;
+ void (* callback)(struct Sprite *sprite);
+};
+
+struct HealLocation
+{
+ s8 group;
+ s8 map;
+ u16 x;
+ u16 y;
+};
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+const struct HealLocation *GetHealLocationPointer(u32 loc);
+
+#endif //GUARD_HEAL_LOCATION_H
diff --git a/include/international_string_util.h b/include/international_string_util.h
index 9d9735a52..e7876162e 100644
--- a/include/international_string_util.h
+++ b/include/international_string_util.h
@@ -12,7 +12,7 @@ s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 lett
s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1);
s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2);
// sub_81DB41C
-// sub_81DB468
+// CopyMonCategoryText
// sub_81DB494
// sub_81DB4DC
// sub_81DB554
diff --git a/include/items.h b/include/items.h
index 69515f18e..1f6c288c5 100644
--- a/include/items.h
+++ b/include/items.h
@@ -386,4 +386,7 @@ enum
ITEM_OLD_SEA_MAP, // 0x178
};
+#define NUM_TECHNICAL_MACHINES 50
+#define NUM_HIDDEN_MACHINES 8
+
#endif // GUARD_ITEMS_H
diff --git a/include/link.h b/include/link.h
index c242b55cf..db13efbe8 100644
--- a/include/link.h
+++ b/include/link.h
@@ -68,7 +68,7 @@ struct LinkPlayer
/* 0x08 */ u8 name[11];
/* 0x13 */ u8 gender;
/* 0x14 */ u32 linkType;
- /* 0x18 */ u16 lp_field_18;
+ /* 0x18 */ u16 lp_field_18; // battle bank in battles
/* 0x1A */ u16 language;
};
@@ -179,6 +179,7 @@ void LinkVSync(void);
void Timer3Intr(void);
void SerialCB(void);
u8 GetLinkPlayerCount(void);
+bool32 InUnionRoom(void);
void sub_800E0E8(void);
bool8 sub_800A520(void);
diff --git a/include/list_menu.h b/include/list_menu.h
index 93005e482..0249b06af 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -5,31 +5,33 @@
// Exported RAM declarations
-struct ListMenuItem {
+struct ListMenuItem
+{
const u8 *unk_00;
s32 unk_04;
};
struct ListMenu;
-struct ListMenuTemplate {
- struct ListMenuItem *unk_00;
+struct ListMenuTemplate
+{
+ const struct ListMenuItem *items;
void (* unk_04)(u32, bool8, struct ListMenu *);
void (* unk_08)(u8, s32, u8);
- u16 unk_0c;
- u16 unk_0e;
+ u16 totalItems;
+ u16 maxShowed;
u8 unk_10;
u8 unk_11;
u8 unk_12;
- u8 unk_13;
- u32 unk_14_0:4;
- u32 unk_14_4:4;
- u32 unk_15_0:4;
- u32 unk_15_4:4;
- u32 unk_16_0:1;
- u32 unk_16_1:6;
- u32 unk_16_7:1;
- u32 unk_17_0:6;
+ u8 cursor_Y;
+ u32 upText_Y:4; // x1, x2, x4, x8 = xF
+ u32 cursorColor:4; // x10, x20, x40, x80 = xF0
+ u32 fillColor:4; // x100, x200, x400, x800 = xF00
+ u32 cursorShadowColor:4; // x1000, x2000, x4000, x8000 = xF000
+ u32 unk_16_0:1; // x10000
+ u32 spaceBetweenItems:6; // x20000, x40000, x80000, x100000, x200000, x400000 = x7E0000
+ u32 unk_16_7:1; // x800000
+ u32 unk_17_0:6; // x1000000, x2000000, x4000000, x8000000, x10000000, x20000000 = x3F000000
};
struct ListMenu {
diff --git a/include/mail.h b/include/mail.h
index 16ca1f676..1a29d73b5 100644
--- a/include/mail.h
+++ b/include/mail.h
@@ -16,4 +16,10 @@
|| itemId == ITEM_FAB_MAIL \
|| 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);
+
#endif // GUARD_MAIL_H
diff --git a/include/malloc.h b/include/malloc.h
index f3a731797..003ee1f03 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -5,6 +5,12 @@
#define calloc(ct, sz) AllocZeroed((ct) * (sz))
#define free Free
+#define FREE_AND_SET_NULL(ptr) \
+{ \
+ free(ptr); \
+ ptr = NULL; \
+}
+
extern u8 gHeap[];
void *Alloc(u32 size);
void *AllocZeroed(u32 size);
diff --git a/include/menu.h b/include/menu.h
index d8b2afc5c..e93d688e4 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -29,5 +29,7 @@ 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 sub_8198C58(void);
+void do_scheduled_bg_tilemap_copies_to_vram(void);
+void clear_scheduled_bg_copies_to_vram(void);
#endif // GUARD_MENU_H
diff --git a/include/overworld.h b/include/overworld.h
index 68aa12f0f..43ddc2dec 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -53,13 +53,16 @@ void Overworld_ChangeMusicTo(u16);
bool32 is_c1_link_related_active(void);
void strange_npc_table_clear(void);
-const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8);
+const struct MapHeader *get_mapheader_by_bank_and_number(u16, u16);
void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
void sub_8086230(void);
void c2_exit_to_overworld_2_switch(void);
bool32 sub_8087598(void);
void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
void warp_in(void);
+u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
+void sub_8086194(void);
+void sub_8084CCC(u8 spawn);
void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpNum);
void c2_load_new_map(void);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
diff --git a/include/party_menu.h b/include/party_menu.h
index c93f63a6d..7a7d59cd0 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -2,6 +2,7 @@
#define GUARD_PARTY_MENU_H
bool8 pokemon_has_move(struct Pokemon *, u16);
+void sub_81B58A8(void);
void DoWallyTutorialBagMenu(void);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokeblock.h b/include/pokeblock.h
index 5d52f8e55..b0e93f0e5 100644
--- a/include/pokeblock.h
+++ b/include/pokeblock.h
@@ -23,6 +23,7 @@ enum
};
void ClearPokeblocks(void);
+s16 PokeblockGetGain(u8, const struct Pokeblock *);
/*
void sub_810B96C(void);
@@ -32,7 +33,6 @@ s16 GetPokeblockData(const struct Pokeblock *, u8);
u8 sub_810C9E8(struct Pokeblock *);
void sub_810BA7C(u8);
bool8 PokeblockClearIfExists(u8);
-s16 PokeblockGetGain(u8, const struct Pokeblock *);
u8 sub_810CB68(u8, u8*);
void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest);
void CB2_PreparePokeblockFeedScene(void);
diff --git a/include/pokedex.h b/include/pokedex.h
index 79721899f..236feac45 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -2,7 +2,7 @@
#define GUARD_POKEDEX_H
void ResetPokedex(void);
-const u8 *GetPokemonCategory(u16);
+void CopyMonCategoryText(u16 species, u8 *dst);
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
u16 GetNationalPokedexCount(u8);
u16 GetHoennPokedexCount(u8);
diff --git a/include/pokemon.h b/include/pokemon.h
index 0c7d6ac40..1eb052f4e 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -509,9 +509,11 @@ struct Evolution
u16 targetSpecies;
};
+#define EVOS_PER_MON 5
+
struct EvolutionData
{
- struct Evolution evolutions[5];
+ struct Evolution evolutions[EVOS_PER_MON];
};
extern u8 gPlayerPartyCount;
@@ -612,8 +614,8 @@ u32 CanMonLearnTMHM(struct Pokemon *, u8);
u32 CanSpeciesLearnTMHM(u16 species, u8 tm);
u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
void ClearBattleMonForms(void);
-const u8 *pokemon_get_pal(struct Pokemon *mon);
-const u8 *species_and_otid_get_pal(u16, u32, u32);
+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);
@@ -648,6 +650,9 @@ 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);
#include "sprite.h"
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 49680793d..9fcfdba96 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -1,8 +1,13 @@
#ifndef GUARD_POKEMON_STORAGE_SYSTEM_H
#define GUARD_POKEMON_STORAGE_SYSTEM_H
+#define TOTAL_BOXES_COUNT 14
+#define IN_BOX_COUNT 30
+
u8* GetBoxNamePtr(u8 boxNumber);
struct BoxPokemon *GetBoxedMonPtr(u8, u8);
void SetBoxMonNickFromAnyBox(u8, u8, u8 *);
+void CompactPartySlots(void);
+u32 GetBoxMonDataFromAnyBox(u8 boxId, u8 monPosition, u32 request);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/include/recorded_battle.h b/include/recorded_battle.h
index ae2ed1a79..adc4c6c85 100644
--- a/include/recorded_battle.h
+++ b/include/recorded_battle.h
@@ -2,23 +2,40 @@
#define GUARD_RECORDED_BATTLE_H
extern u32 gRecordedBattleRngSeed;
+extern u32 gBattlePalaceMoveSelectionRngValue;
+extern u8 gUnknown_0203C7B4;
void sub_8184DA4(u8 arg0);
-void sub_8185F84(void);
void sub_8184E58(void);
-u8 RecordedBattle_ReadBankAction(u8 bank);
void RecordedBattle_SetBankAction(u8 bank, u8 action);
void RecordedBattle_ClearBankAction(u8 bank, u8 bytesToClear);
+u8 RecordedBattle_ReadBankAction(u8 bank);
+u8 sub_81850D0(void);
+u8 sub_81850DC(u8 *arg0);
+void sub_81851A8(u8 *arg0);
+bool32 CanCopyRecordedBattleSaveData(void);
+u32 MoveRecordedBattleToSaveData(void);
+void PlayRecordedBattle(void (*CB2_After)(void));
+u8 sub_8185EA0(void);
+u8 sub_8185EAC(void);
+void RecordedBattle_SaveParties(void);
+u8 GetActiveBankLinkPlayerGender(void);
+void sub_8185F84(void);
void sub_8185F90(u16 arg0);
-bool8 sub_8186450(void);
u8 sub_8185FAC(void);
-u8 sub_8185FB8(void);
-u8 MoveRecordedBattleToSaveData(void);
-void sub_818603C(u8);
-void sub_8185FD0(void);
+u8 GetBattleStyleInRecordedBattle(void);
+u8 GetTextSpeedInRecordedBattle(void);
+void RecordedBattle_CopyBankMoves(void);
+void sub_818603C(u8 arg0);
+u32 GetAiScriptsInRecordedBattle(void);
void sub_8186444(void);
-void sub_8185EB8(void);
-u8 sub_81850DC(u8 *arg0);
-u8 sub_8185F40(void);
+bool8 sub_8186450(void);
+void sub_8186468(u8 *dst);
+u8 sub_818649C(void);
+u8 sub_81864A8(void);
+u8 sub_81864B4(void);
+u8 sub_81864C0(void);
+void sub_81864CC(void);
+u16 *sub_81864E0(void);
#endif // GUARD_RECORDED_BATTLE_H
diff --git a/include/region_map.h b/include/region_map.h
index 52e7376be..91384d166 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -1,227 +1,314 @@
#ifndef GUARD_REGION_MAP_H
#define GUARD_REGION_MAP_H
+#include "bg.h"
+
// Exported type declarations
enum {
- REGION_MAP_LITTLEROOT_TOWN,
- REGION_MAP_OLDALE_TOWN,
- REGION_MAP_DEWFORD_TOWN,
- REGION_MAP_LAVARIDGE_TOWN,
- REGION_MAP_FALLARBOR_TOWN,
- REGION_MAP_VERDANTURF_TOWN,
- REGION_MAP_PACIFIDLOG_TOWN,
- REGION_MAP_PETALBURG_CITY,
- REGION_MAP_SLATEPORT_CITY,
- REGION_MAP_MAUVILLE_CITY,
- REGION_MAP_RUSTBORO_CITY,
- REGION_MAP_FORTREE_CITY,
- REGION_MAP_LILYCOVE_CITY,
- REGION_MAP_MOSSDEEP_CITY,
- REGION_MAP_SOOTOPOLIS_CITY,
- REGION_MAP_EVER_GRANDE_CITY,
- REGION_MAP_ROUTE_101,
- REGION_MAP_ROUTE_102,
- REGION_MAP_ROUTE_103,
- REGION_MAP_ROUTE_104,
- REGION_MAP_ROUTE_105,
- REGION_MAP_ROUTE_106,
- REGION_MAP_ROUTE_107,
- REGION_MAP_ROUTE_108,
- REGION_MAP_ROUTE_109,
- REGION_MAP_ROUTE_110,
- REGION_MAP_ROUTE_111,
- REGION_MAP_ROUTE_112,
- REGION_MAP_ROUTE_113,
- REGION_MAP_ROUTE_114,
- REGION_MAP_ROUTE_115,
- REGION_MAP_ROUTE_116,
- REGION_MAP_ROUTE_117,
- REGION_MAP_ROUTE_118,
- REGION_MAP_ROUTE_119,
- REGION_MAP_ROUTE_120,
- REGION_MAP_ROUTE_121,
- REGION_MAP_ROUTE_122,
- REGION_MAP_ROUTE_123,
- REGION_MAP_ROUTE_124,
- REGION_MAP_ROUTE_125,
- REGION_MAP_ROUTE_126,
- REGION_MAP_ROUTE_127,
- REGION_MAP_ROUTE_128,
- REGION_MAP_ROUTE_129,
- REGION_MAP_ROUTE_130,
- REGION_MAP_ROUTE_131,
- REGION_MAP_ROUTE_132,
- REGION_MAP_ROUTE_133,
- REGION_MAP_ROUTE_134,
- REGION_MAP_UNDERWATER_124,
- REGION_MAP_UNDERWATER_125,
- REGION_MAP_UNDERWATER_126,
- REGION_MAP_UNDERWATER_127,
- REGION_MAP_UNDERWATER_128,
- REGION_MAP_GRANITE_CAVE,
- REGION_MAP_MT_CHIMNEY,
- REGION_MAP_SAFARI_ZONE,
- REGION_MAP_BATTLE_FRONTIER,
- REGION_MAP_PETALBURG_WOODS,
- REGION_MAP_RUSTURF_TUNNEL,
- REGION_MAP_ABANDONED_SHIP,
- REGION_MAP_NEW_MAUVILLE,
- REGION_MAP_METEOR_FALLS,
- REGION_MAP_METEOR_FALLS2,
- REGION_MAP_MT_PYRE,
- REGION_MAP_AQUA_HIDEOUT_OLD,
- REGION_MAP_SHOAL_CAVE,
- REGION_MAP_SEAFLOOR_CAVERN,
- REGION_MAP_UNDERWATER,
- REGION_MAP_VICTORY_ROAD,
- REGION_MAP_MIRAGE_ISLAND,
- REGION_MAP_CAVE_OF_ORIGIN,
- REGION_MAP_SOUTHERN_ISLAND,
- REGION_MAP_FIERY_PATH,
- REGION_MAP_FIERY_PATH2,
- REGION_MAP_JAGGED_PASS,
- REGION_MAP_JAGGED_PASS2,
- REGION_MAP_SEALED_CHAMBER,
- REGION_MAP_UNDERWATER_SEALED_CHAMBER,
- REGION_MAP_SCORCHED_SLAB,
- REGION_MAP_ISLAND_CAVE,
- REGION_MAP_DESERT_RUINS,
- REGION_MAP_ANCIENT_TOMB,
- REGION_MAP_INSIDE_OF_TRUCK,
- REGION_MAP_SKY_PILLAR,
- REGION_MAP_SECRET_BASE,
- REGION_MAP_NONE,
- REGION_MAP_PALLET_TOWN,
- REGION_MAP_VIRIDIAN_CITY,
- REGION_MAP_PEWTER_CITY,
- REGION_MAP_CERULEAN_CITY,
- REGION_MAP_LAVENDER_TOWN,
- REGION_MAP_VERMILION_CITY,
- REGION_MAP_CELADON_CITY,
- REGION_MAP_FUCHSIA_CITY,
- REGION_MAP_CINNABAR_ISLAND,
- REGION_MAP_INDIGO_PLATEAU,
- REGION_MAP_SAFFRON_CITY,
- REGION_MAP_ROUTE_4,
- REGION_MAP_ROUTE_10,
- REGION_MAP_ROUTE_1,
- REGION_MAP_ROUTE_2,
- REGION_MAP_ROUTE_3,
- REGION_MAP_ROUTE_4_2,
- REGION_MAP_ROUTE_5,
- REGION_MAP_ROUTE_6,
- REGION_MAP_ROUTE_7,
- REGION_MAP_ROUTE_8,
- REGION_MAP_ROUTE_9,
- REGION_MAP_ROUTE_10_2,
- REGION_MAP_ROUTE_11,
- REGION_MAP_ROUTE_12,
- REGION_MAP_ROUTE_13,
- REGION_MAP_ROUTE_14,
- REGION_MAP_ROUTE_15,
- REGION_MAP_ROUTE_16,
- REGION_MAP_ROUTE_17,
- REGION_MAP_ROUTE_18,
- REGION_MAP_ROUTE_19,
- REGION_MAP_ROUTE_20,
- REGION_MAP_ROUTE_21,
- REGION_MAP_ROUTE_22,
- REGION_MAP_ROUTE_23,
- REGION_MAP_ROUTE_24,
- REGION_MAP_ROUTE_25,
- REGION_MAP_VIRIDIAN_FOREST,
- REGION_MAP_MT_MOON,
- REGION_MAP_S_S_ANNE,
- REGION_MAP_UNDERGROUND_PATH,
- REGION_MAP_UNDERGROUND_PATH_2,
- REGION_MAP_DIGLETTS_CAVE,
- REGION_MAP_KANTO_VICTORY_ROAD,
- REGION_MAP_ROCKET_HIDEOUT,
- REGION_MAP_SILPH_CO,
- REGION_MAP_POKEMON_MANSION,
- REGION_MAP_KANTO_SAFARI_ZONE,
- REGION_MAP_POKEMON_LEAGUE,
- REGION_MAP_ROCK_TUNNEL,
- REGION_MAP_SEAFOAM_ISLANDS,
- REGION_MAP_POKEMON_TOWER,
- REGION_MAP_CERULEAN_CAVE,
- REGION_MAP_POWER_PLANT,
- REGION_MAP_ONE_ISLAND,
- REGION_MAP_TWO_ISLAND,
- REGION_MAP_THREE_ISLAND,
- REGION_MAP_FOUR_ISLAND,
- REGION_MAP_FIVE_ISLAND,
- REGION_MAP_SEVEN_ISLAND,
- REGION_MAP_SIX_ISLAND,
- REGION_MAP_KINDLE_ROAD,
- REGION_MAP_TREASURE_BEACH,
- REGION_MAP_CAPE_BRINK,
- REGION_MAP_BOND_BRIDGE,
- REGION_MAP_THREE_ISLE_PORT,
- REGION_MAP_SEVII_ISLE_6,
- REGION_MAP_SEVII_ISLE_7,
- REGION_MAP_SEVII_ISLE_8,
- REGION_MAP_SEVII_ISLE_9,
- REGION_MAP_RESORT_GORGEOUS,
- REGION_MAP_WATER_LABYRINTH,
- REGION_MAP_FIVE_ISLE_MEADOW,
- REGION_MAP_MEMORIAL_PILLAR,
- REGION_MAP_OUTCAST_ISLAND,
- REGION_MAP_GREEN_PATH,
- REGION_MAP_WATER_PATH,
- REGION_MAP_RUIN_VALLEY,
- REGION_MAP_TRAINER_TOWER,
- REGION_MAP_CANYON_ENTRANCE,
- REGION_MAP_SEVAULT_CANYON,
- REGION_MAP_TANOBY_RUINS,
- REGION_MAP_SEVII_ISLE_22,
- REGION_MAP_SEVII_ISLE_23,
- REGION_MAP_SEVII_ISLE_24,
- REGION_MAP_NAVEL_ROCK,
- REGION_MAP_MT_EMBER,
- REGION_MAP_BERRY_FOREST,
- REGION_MAP_ICEFALL_CAVE,
- REGION_MAP_ROCKET_WAREHOUSE,
- REGION_MAP_TRAINER_TOWER_2,
- REGION_MAP_DOTTED_HOLE,
- REGION_MAP_LOST_CAVE,
- REGION_MAP_PATTERN_BUSH,
- REGION_MAP_ALTERING_CAVE,
- REGION_MAP_TANOBY_CHAMBERS,
- REGION_MAP_THREE_ISLE_PATH,
- REGION_MAP_TANOBY_KEY,
- REGION_MAP_BIRTH_ISLAND,
- REGION_MAP_MONEAN_CHAMBER,
- REGION_MAP_LIPTOO_CHAMBER,
- REGION_MAP_WEEPTH_CHAMBER,
- REGION_MAP_DILFORD_CHAMBER,
- REGION_MAP_SCUFIB_CHAMBER,
- REGION_MAP_RIXY_CHAMBER,
- REGION_MAP_VIAPOIS_CHAMBER,
- REGION_MAP_EMBER_SPA,
- REGION_MAP_SPECIAL_AREA,
- REGION_MAP_AQUA_HIDEOUT,
- REGION_MAP_MAGMA_HIDEOUT,
- REGION_MAP_MIRAGE_TOWER,
- REGION_MAP_BIRTH_ISLAND_2,
- REGION_MAP_FARAWAY_ISLAND,
- REGION_MAP_ARTISAN_CAVE,
- REGION_MAP_MARINE_CAVE,
- REGION_MAP_UNDERWATER_MARINE_CAVE,
- REGION_MAP_TERRA_CAVE,
- REGION_MAP_UNDERWATER_TERRA_CAVE,
- REGION_MAP_UNDERWATER_UNK1,
- REGION_MAP_UNDERWATER_UNK2,
- REGION_MAP_DESERT_UNDERPASS,
- REGION_MAP_ALTERING_CAVE_2,
- REGION_MAP_NAVEL_ROCK2,
- REGION_MAP_TRAINER_HILL
+ MAPSEC_LITTLEROOT_TOWN,
+ MAPSEC_OLDALE_TOWN,
+ MAPSEC_DEWFORD_TOWN,
+ MAPSEC_LAVARIDGE_TOWN,
+ MAPSEC_FALLARBOR_TOWN,
+ MAPSEC_VERDANTURF_TOWN,
+ MAPSEC_PACIFIDLOG_TOWN,
+ MAPSEC_PETALBURG_CITY,
+ MAPSEC_SLATEPORT_CITY,
+ MAPSEC_MAUVILLE_CITY,
+ MAPSEC_RUSTBORO_CITY,
+ MAPSEC_FORTREE_CITY,
+ MAPSEC_LILYCOVE_CITY,
+ MAPSEC_MOSSDEEP_CITY,
+ MAPSEC_SOOTOPOLIS_CITY,
+ MAPSEC_EVER_GRANDE_CITY,
+ MAPSEC_ROUTE_101,
+ MAPSEC_ROUTE_102,
+ MAPSEC_ROUTE_103,
+ MAPSEC_ROUTE_104,
+ MAPSEC_ROUTE_105,
+ MAPSEC_ROUTE_106,
+ MAPSEC_ROUTE_107,
+ MAPSEC_ROUTE_108,
+ MAPSEC_ROUTE_109,
+ MAPSEC_ROUTE_110,
+ MAPSEC_ROUTE_111,
+ MAPSEC_ROUTE_112,
+ MAPSEC_ROUTE_113,
+ MAPSEC_ROUTE_114,
+ MAPSEC_ROUTE_115,
+ MAPSEC_ROUTE_116,
+ MAPSEC_ROUTE_117,
+ MAPSEC_ROUTE_118,
+ MAPSEC_ROUTE_119,
+ MAPSEC_ROUTE_120,
+ MAPSEC_ROUTE_121,
+ MAPSEC_ROUTE_122,
+ MAPSEC_ROUTE_123,
+ MAPSEC_ROUTE_124,
+ MAPSEC_ROUTE_125,
+ MAPSEC_ROUTE_126,
+ MAPSEC_ROUTE_127,
+ MAPSEC_ROUTE_128,
+ MAPSEC_ROUTE_129,
+ MAPSEC_ROUTE_130,
+ MAPSEC_ROUTE_131,
+ MAPSEC_ROUTE_132,
+ MAPSEC_ROUTE_133,
+ MAPSEC_ROUTE_134,
+ MAPSEC_UNDERWATER_124,
+ MAPSEC_UNDERWATER_125,
+ MAPSEC_UNDERWATER_126,
+ MAPSEC_UNDERWATER_127,
+ MAPSEC_UNDERWATER_SOOTOPOLIS,
+ MAPSEC_GRANITE_CAVE,
+ MAPSEC_MT_CHIMNEY,
+ MAPSEC_SAFARI_ZONE,
+ MAPSEC_BATTLE_FRONTIER,
+ MAPSEC_PETALBURG_WOODS,
+ MAPSEC_RUSTURF_TUNNEL,
+ MAPSEC_ABANDONED_SHIP,
+ MAPSEC_NEW_MAUVILLE,
+ MAPSEC_METEOR_FALLS,
+ MAPSEC_METEOR_FALLS2,
+ MAPSEC_MT_PYRE,
+ MAPSEC_AQUA_HIDEOUT_OLD,
+ MAPSEC_SHOAL_CAVE,
+ MAPSEC_SEAFLOOR_CAVERN,
+ MAPSEC_UNDERWATER_128,
+ MAPSEC_VICTORY_ROAD,
+ MAPSEC_MIRAGE_ISLAND,
+ MAPSEC_CAVE_OF_ORIGIN,
+ MAPSEC_SOUTHERN_ISLAND,
+ MAPSEC_FIERY_PATH,
+ MAPSEC_FIERY_PATH2,
+ MAPSEC_JAGGED_PASS,
+ MAPSEC_JAGGED_PASS2,
+ MAPSEC_SEALED_CHAMBER,
+ MAPSEC_UNDERWATER_SEALED_CHAMBER,
+ MAPSEC_SCORCHED_SLAB,
+ MAPSEC_ISLAND_CAVE,
+ MAPSEC_DESERT_RUINS,
+ MAPSEC_ANCIENT_TOMB,
+ MAPSEC_INSIDE_OF_TRUCK,
+ MAPSEC_SKY_PILLAR,
+ MAPSEC_SECRET_BASE,
+ MAPSEC_DYNAMIC,
+ MAPSEC_PALLET_TOWN,
+ MAPSEC_VIRIDIAN_CITY,
+ MAPSEC_PEWTER_CITY,
+ MAPSEC_CERULEAN_CITY,
+ MAPSEC_LAVENDER_TOWN,
+ MAPSEC_VERMILION_CITY,
+ MAPSEC_CELADON_CITY,
+ MAPSEC_FUCHSIA_CITY,
+ MAPSEC_CINNABAR_ISLAND,
+ MAPSEC_INDIGO_PLATEAU,
+ MAPSEC_SAFFRON_CITY,
+ MAPSEC_ROUTE_4,
+ MAPSEC_ROUTE_10,
+ MAPSEC_ROUTE_1,
+ MAPSEC_ROUTE_2,
+ MAPSEC_ROUTE_3,
+ MAPSEC_ROUTE_4_2,
+ MAPSEC_ROUTE_5,
+ MAPSEC_ROUTE_6,
+ MAPSEC_ROUTE_7,
+ MAPSEC_ROUTE_8,
+ MAPSEC_ROUTE_9,
+ MAPSEC_ROUTE_10_2,
+ MAPSEC_ROUTE_11,
+ MAPSEC_ROUTE_12,
+ MAPSEC_ROUTE_13,
+ MAPSEC_ROUTE_14,
+ MAPSEC_ROUTE_15,
+ MAPSEC_ROUTE_16,
+ MAPSEC_ROUTE_17,
+ MAPSEC_ROUTE_18,
+ MAPSEC_ROUTE_19,
+ MAPSEC_ROUTE_20,
+ MAPSEC_ROUTE_21,
+ MAPSEC_ROUTE_22,
+ MAPSEC_ROUTE_23,
+ MAPSEC_ROUTE_24,
+ MAPSEC_ROUTE_25,
+ MAPSEC_VIRIDIAN_FOREST,
+ MAPSEC_MT_MOON,
+ MAPSEC_S_S_ANNE,
+ MAPSEC_UNDERGROUND_PATH,
+ MAPSEC_UNDERGROUND_PATH_2,
+ MAPSEC_DIGLETTS_CAVE,
+ MAPSEC_KANTO_VICTORY_ROAD,
+ MAPSEC_ROCKET_HIDEOUT,
+ MAPSEC_SILPH_CO,
+ MAPSEC_POKEMON_MANSION,
+ MAPSEC_KANTO_SAFARI_ZONE,
+ MAPSEC_POKEMON_LEAGUE,
+ MAPSEC_ROCK_TUNNEL,
+ MAPSEC_SEAFOAM_ISLANDS,
+ MAPSEC_POKEMON_TOWER,
+ MAPSEC_CERULEAN_CAVE,
+ MAPSEC_POWER_PLANT,
+ MAPSEC_ONE_ISLAND,
+ MAPSEC_TWO_ISLAND,
+ MAPSEC_THREE_ISLAND,
+ MAPSEC_FOUR_ISLAND,
+ MAPSEC_FIVE_ISLAND,
+ MAPSEC_SEVEN_ISLAND,
+ MAPSEC_SIX_ISLAND,
+ MAPSEC_KINDLE_ROAD,
+ MAPSEC_TREASURE_BEACH,
+ MAPSEC_CAPE_BRINK,
+ MAPSEC_BOND_BRIDGE,
+ MAPSEC_THREE_ISLE_PORT,
+ MAPSEC_SEVII_ISLE_6,
+ MAPSEC_SEVII_ISLE_7,
+ MAPSEC_SEVII_ISLE_8,
+ MAPSEC_SEVII_ISLE_9,
+ MAPSEC_RESORT_GORGEOUS,
+ MAPSEC_WATER_LABYRINTH,
+ MAPSEC_FIVE_ISLE_MEADOW,
+ MAPSEC_MEMORIAL_PILLAR,
+ MAPSEC_OUTCAST_ISLAND,
+ MAPSEC_GREEN_PATH,
+ MAPSEC_WATER_PATH,
+ MAPSEC_RUIN_VALLEY,
+ MAPSEC_TRAINER_TOWER,
+ MAPSEC_CANYON_ENTRANCE,
+ MAPSEC_SEVAULT_CANYON,
+ MAPSEC_TANOBY_RUINS,
+ MAPSEC_SEVII_ISLE_22,
+ MAPSEC_SEVII_ISLE_23,
+ MAPSEC_SEVII_ISLE_24,
+ MAPSEC_NAVEL_ROCK,
+ MAPSEC_MT_EMBER,
+ MAPSEC_BERRY_FOREST,
+ MAPSEC_ICEFALL_CAVE,
+ MAPSEC_ROCKET_WAREHOUSE,
+ MAPSEC_TRAINER_TOWER_2,
+ MAPSEC_DOTTED_HOLE,
+ MAPSEC_LOST_CAVE,
+ MAPSEC_PATTERN_BUSH,
+ MAPSEC_ALTERING_CAVE,
+ MAPSEC_TANOBY_CHAMBERS,
+ MAPSEC_THREE_ISLE_PATH,
+ MAPSEC_TANOBY_KEY,
+ MAPSEC_BIRTH_ISLAND,
+ MAPSEC_MONEAN_CHAMBER,
+ MAPSEC_LIPTOO_CHAMBER,
+ MAPSEC_WEEPTH_CHAMBER,
+ MAPSEC_DILFORD_CHAMBER,
+ MAPSEC_SCUFIB_CHAMBER,
+ MAPSEC_RIXY_CHAMBER,
+ MAPSEC_VIAPOIS_CHAMBER,
+ MAPSEC_EMBER_SPA,
+ MAPSEC_SPECIAL_AREA,
+ MAPSEC_AQUA_HIDEOUT,
+ MAPSEC_MAGMA_HIDEOUT,
+ MAPSEC_MIRAGE_TOWER,
+ MAPSEC_BIRTH_ISLAND_2,
+ MAPSEC_FARAWAY_ISLAND,
+ MAPSEC_ARTISAN_CAVE,
+ MAPSEC_MARINE_CAVE,
+ MAPSEC_UNDERWATER_MARINE_CAVE,
+ MAPSEC_TERRA_CAVE,
+ MAPSEC_UNDERWATER_TERRA_CAVE,
+ MAPSEC_UNDERWATER_UNK1,
+ MAPSEC_UNDERWATER_129,
+ MAPSEC_DESERT_UNDERPASS,
+ MAPSEC_ALTERING_CAVE_2,
+ MAPSEC_NAVEL_ROCK2,
+ MAPSEC_TRAINER_HILL,
+ MAPSEC_NONE
+};
+
+enum
+{
+ INPUT_EVENT_NONE,
+ INPUT_EVENT_MOVE_START,
+ INPUT_EVENT_MOVE_CONT,
+ INPUT_EVENT_MOVE_END,
+ INPUT_EVENT_A_BUTTON,
+ INPUT_EVENT_B_BUTTON,
};
+enum {
+ MAPSECTYPE_NONE,
+ MAPSECTYPE_PLAIN,
+ MAPSECTYPE_CITY_CANFLY,
+ MAPSECTYPE_CITY_CANTFLY,
+ MAPSECTYPE_BATTLE_FRONTIER
+};
+
+struct RegionMap {
+ /*0x000*/ u16 mapSecId;
+ /*0x002*/ u8 iconDrawType;
+ /*0x003*/ u8 posWithinMapSec;
+ /*0x004*/ u8 mapSecName[0x14];
+ /*0x018*/ u8 (*inputCallback)(void);
+ /*0x01c*/ struct Sprite *cursorSprite;
+ /*0x020*/ struct Sprite *playerIconSprite;
+ /*0x024*/ s32 bg2x;
+ /*0x028*/ s32 bg2y;
+ /*0x02c*/ u32 bg2pa;
+ /*0x034*/ u32 bg2pc;
+ /*0x030*/ u32 bg2pb;
+ /*0x038*/ u32 bg2pd;
+ /*0x03c*/ s32 unk_03c;
+ /*0x040*/ s32 unk_040;
+ /*0x044*/ s32 unk_044;
+ /*0x048*/ s32 unk_048;
+ /*0x04c*/ s32 unk_04c;
+ /*0x050*/ s32 unk_050;
+ /*0x054*/ u16 cursorPosX;
+ /*0x056*/ u16 cursorPosY;
+ /*0x058*/ u16 cursorTileTag;
+ /*0x05a*/ u16 cursorPaletteTag;
+ /*0x05c*/ s16 scrollX;
+ /*0x05e*/ s16 scrollY;
+ /*0x060*/ s16 unk_060;
+ /*0x062*/ s16 unk_062;
+ /*0x064*/ u16 zoomedCursorPosX;
+ /*0x066*/ u16 zoomedCursorPosY;
+ /*0x068*/ s16 zoomedCursorDeltaY;
+ /*0x06a*/ s16 zoomedCursorDeltaX;
+ /*0x06c*/ u16 zoomedCursorMovementFrameCounter;
+ /*0x06e*/ u16 unk_06e;
+ /*0x070*/ u16 playerIconTileTag;
+ /*0x072*/ u16 playerIconPaletteTag;
+ /*0x074*/ u16 playerIconSpritePosX;
+ /*0x076*/ u16 playerIconSpritePosY;
+ /*0x078*/ bool8 zoomed;
+ /*0x079*/ u8 initStep;
+ /*0x07a*/ s8 cursorMovementFrameCounter;
+ /*0x07b*/ s8 cursorDeltaX;
+ /*0x07c*/ s8 cursorDeltaY;
+ /*0x07d*/ bool8 needUpdateVideoRegs;
+ /*0x07e*/ bool8 blinkPlayerIcon;
+ /*0x07f*/ bool8 playerIsInCave;
+ /*0x080*/ u8 bgNum;
+ /*0x081*/ u8 charBaseIdx;
+ /*0x082*/ u8 mapBaseIdx;
+ /*0x083*/ bool8 bgManaged;
+ /*0x084*/ u8 filler_084[0x100];
+ /*0x184*/ u8 cursorSmallImage[0x100];
+ /*0x284*/ u8 cursorLargeImage[0x600];
+}; // size = 0x884
+
// Exported RAM declarations
// Exported ROM declarations
-void GetMapName(u8 *, u16, u16);
+void sub_8122CF8(struct RegionMap *regionMap, struct BgTemplate *template, bool8 zoomed);
+bool8 sub_8122DB0(void);
+void UpdateRegionMapVideoRegs(void);
+void InitRegionMap(struct RegionMap *regionMap, u8 argument);
+u8 sub_81230AC(void);
+bool8 sub_8123514(void);
+void FreeRegionMapIconResources(void);
+u16 GetRegionMapSectionIdAt(u16 x, u16 y);
+void CreateRegionMapPlayerIcon(u16 x, u16 y);
+void CreateRegionMapCursor(u16 tileTag, u16 paletteTag);
+u8 *GetMapName(u8 *, u16, u16);
+bool32 sub_8124668(u8 mapSecId);
#endif //GUARD_REGION_MAP_H
diff --git a/include/rom6.h b/include/rom6.h
index a6aab998c..b4a972794 100644
--- a/include/rom6.h
+++ b/include/rom6.h
@@ -3,6 +3,7 @@
void sub_81357FC(u8, void(void));
u8 GetLeadMonIndex(void);
+u8 GetSSTidalLocation(u8 *grp, u8 *num, s16 *x, s16 *y);
void sub_813BADC(bool8);
#endif //GUARD_ROM6_H
diff --git a/include/save.h b/include/save.h
index 6c1238cd2..3bd1ff8cf 100644
--- a/include/save.h
+++ b/include/save.h
@@ -56,41 +56,42 @@ enum
HOF_DELETE_SAVE // unused
};
+#define SECTION_ID_RECORDED_BATTLE 31
+
void ClearSaveData(void);
void ResetSaveCounters(void);
-//bool32 ManipulateSectorBits(u8 op, u8 bit);
-//u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *a2);
-u8 HandleWriteSector(u16, const struct SaveSectionLocation *);
-//u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size);
-u8 TryWriteSector(u8, u8 *);
-//u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location);
-//u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location);
-//u8 sub_812550C(u16 a1, const struct SaveSectionLocation *location);
+bool32 SetDamagedSectorBits(u8 op, u8 bit);
+u8 save_write_to_flash(u16 a1, const struct SaveSectionLocation *location);
+u8 HandleWriteSector(u16 a1, const struct SaveSectionLocation *location);
+u8 HandleWriteSectorNBytes(u8 sector, u8 *data, u16 size);
+u8 TryWriteSector(u8 sector, u8 *data);
+u32 RestoreSaveBackupVarsAndIncrement(const struct SaveSectionLocation *location);
+u32 RestoreSaveBackupVars(const struct SaveSectionLocation *location);
+u8 sub_81529D4(u16 a1, const struct SaveSectionLocation *location);
u8 sub_8152A34(u16 a1, const struct SaveSectionLocation *location);
-u8 ClearSaveData_2(u16, const struct SaveSectionLocation *location);
-//u8 sub_8125758(u16 a1, const struct SaveSectionLocation *location);
-//u8 sub_81257F0(u16 a1, const struct SaveSectionLocation *location);
-//u8 sub_812587C(u16 a1, const struct SaveSectionLocation *location);
-u8 sub_8152E10(u16, const struct SaveSectionLocation *location);
+u8 ClearSaveData_2(u16 a1, const struct SaveSectionLocation *location);
+u8 sav12_xor_get(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_8152CAC(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_8152D44(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_8152DD0(u16 a1, const struct SaveSectionLocation *location);
+u8 sub_8152E10(u16 a1, const struct SaveSectionLocation *location);
u8 GetSaveValidStatus(const struct SaveSectionLocation *location);
-//u8 sub_8125B88(u8 a1, u8 *data, u16 size);
-u8 DoReadFlashWholeSection(u8, struct SaveSection *);
-u16 CalculateChecksum(void *, u16);
+u8 sub_81530DC(u8 a1, u8 *data, u16 size);
+u8 DoReadFlashWholeSection(u8 sector, struct SaveSection *section);
+u16 CalculateChecksum(void *data, u16 size);
+void UpdateSaveAddresses(void);
u8 HandleSavingData(u8 saveType);
-//u8 TrySavingData(u8 saveType);
-//u8 sub_8125D80(void);
-//bool8 sub_8125DA8(void);
-//u8 sub_8125DDC(void);
-//u8 sub_8125E04(void);
-//u8 sub_8125E2C(void);
-//bool8 sub_8125E6C(void);
-//u8 sub_8125EC8(u8 a1);
-//bool8 unref_sub_8125F4C(struct UnkSaveSection *a1);
-//u8 unref_sub_8125FA0(void);
-//u8 unref_sub_8125FF0(u8 *data, u16 size);
-//u8 unref_sub_8126068(u8 sector, u8 *data, u32 size);
-//u8 unref_sub_8126080(u8 sector, u8 *data);
+u8 TrySavingData(u8 saveType);
+u8 sub_8153380(void);
+bool8 sub_81533AC(void);
+u8 sub_81533E0(void);
+u8 sub_8153408(void);
+u8 sub_8153430(void);
+bool8 sub_8153474(void);
+u8 sub_81534D0(u8 a1);
u16 sub_815355C(void);
-u8 sub_81534D0(u8);
+u32 TryCopySpecialSaveSection(u8 sector, u8* dst);
+u32 sub_8153634(u8 sector, u8* src);
+void sub_8153688(u8 taskId);
#endif // GUARD_SAVE_H
diff --git a/include/secret_base.h b/include/secret_base.h
index 14defff26..630a36773 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -8,5 +8,6 @@
// Exported ROM declarations
void sub_80E9578(void);
void sub_80E980C(void);
+u8 *GetSecretBaseMapName(u8 *dest);
#endif //GUARD_SECRET_BASE_H
diff --git a/include/starter_choose.h b/include/starter_choose.h
new file mode 100644
index 000000000..61bc17735
--- /dev/null
+++ b/include/starter_choose.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_STARTER_CHOOSE_H
+#define GUARD_STARTER_CHOOSE_H
+
+u16 GetStarterPokemon(u16 chosenStarterId);
+void CB2_ChooseStarter(void);
+
+#endif // GUARD_STARTER_CHOOSE_H
diff --git a/include/strings.h b/include/strings.h
index fcdb1eca4..08e2b4bba 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -70,6 +70,13 @@ extern const u8 gText_Cushion[];
extern const u8 gText_Decorate[];
extern const u8 gText_PutAway[];
extern const u8 gText_Toss2[];
+extern const u8 gText_Hoenn[];
+extern const u8 gText_Ferry[];
+extern const u8 gText_SecretBase[];
+extern const u8 gText_Hideout[];
+extern const u8 gText_FlyToWhere[];
+extern const u8 gText_PokemonLeague[];
+extern const u8 gText_PokemonCenter[];
extern const u8 gText_ApostropheSBase[];
extern const u8 gText_NoRegistry[];
extern const u8 gText_OkayToDeleteFromRegistry[];
diff --git a/include/text_window.h b/include/text_window.h
index 0cefeea8e..da3fb301e 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -16,7 +16,7 @@ void sub_8098858(u8 windowId, u16 tileNum, u8 palNum);
void sub_80989E0(u8 windowId, u16 tileNum, u8 palNum);
void rbox_fill_rectangle(u8 windowId);
const u16* stdpal_get(u8 id);
-const u16* sub_8098C64(void);
+const u16* GetOverworldTextboxPalettePtr(void);
void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset);
#endif // GUARD_TEXT_WINDOW_H
diff --git a/include/tv.h b/include/tv.h
index 43f36d69f..3f48af569 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -13,5 +13,6 @@ void sub_80EE184(void);
void sub_80EEA70(void);
void sub_80F14F8(TVShow *shows);
size_t sub_80EF370(int value);
+void SetPokemonAnglerSpecies(u16 species);
#endif //GUARD_TV_H
diff --git a/include/vars.h b/include/vars.h
index c097faff7..763b7379d 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -29,13 +29,15 @@
#define VAR_POISON_STEP_COUNTER 0x402B
#define VAR_RESET_RTC_ENABLE 0x402C
+#define VAR_0x4037 0x4037
+#define VAR_ALTERING_CAVE_WILD_SET 0x403E
#define VAR_DAYS 0x4040
#define VAR_DEPT_STORE_FLOOR 0x4043
#define VAR_STORAGE_UNKNOWN 0x4036
#define VAR_POKELOT_PRIZE 0x4045
#define VAR_NATIONAL_DEX 0x4046
-#define VAR_SEEDOT_SIZE_RECORD 0x4047
+#define VAR_SEEDOT_SIZE_RECORD 0x4047
#define VAR_ASH_GATHER_COUNT 0x4048
#define VAR_BIRCH_STATE 0x4049
#define VAR_CRUISE_STEP_COUNT 0x404A
diff --git a/include/wild_encounter.h b/include/wild_encounter.h
new file mode 100644
index 000000000..55bbaa7dd
--- /dev/null
+++ b/include/wild_encounter.h
@@ -0,0 +1,44 @@
+#ifndef GUARD_WILD_ENCOUNTER_H
+#define GUARD_WILD_ENCOUNTER_H
+
+#define LAND_WILD_COUNT 12
+#define WATER_WILD_COUNT 5
+#define ROCK_WILD_COUNT 5
+#define FISH_WILD_COUNT 10
+
+struct WildPokemon
+{
+ u8 minLevel;
+ u8 maxLevel;
+ u16 species;
+};
+
+struct WildPokemonInfo
+{
+ u8 encounterRate;
+ const struct WildPokemon *wildPokemon;
+};
+
+struct WildPokemonHeader
+{
+ u8 mapGroup;
+ u8 mapNum;
+ const struct WildPokemonInfo *landMonsInfo;
+ const struct WildPokemonInfo *waterMonsInfo;
+ const struct WildPokemonInfo *rockSmashMonsInfo;
+ const struct WildPokemonInfo *fishingMonsInfo;
+};
+
+extern const struct WildPokemonHeader gWildMonHeaders[];
+
+void DisableWildEncounters(bool8 disabled);
+bool8 StandardWildEncounter(u16 currMetaTileBehavior, u16 previousMetaTileBehavior);
+void ScrSpecial_RockSmashWildEncounter(void);
+bool8 SweetScentWildEncounter(void);
+bool8 DoesCurrentMapHaveFishingMons(void);
+void FishingWildEncounter(u8 rod);
+u16 GetLocalWildMon(bool8 *isWaterMon);
+u16 GetLocalWaterMon(void);
+bool8 UpdateRepelCounter(void);
+
+#endif // GUARD_WILD_ENCOUNTER_H