summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorDizzyEggg <jajkodizzy@wp.pl>2018-12-20 22:53:08 +0100
committerDizzyEggg <jajkodizzy@wp.pl>2018-12-20 22:53:08 +0100
commitecee02816d475f012dd4eec8a59b9ad3ba9ab531 (patch)
tree5eb0cdad91aeba20866a731033d76add878c3ec4 /include
parent7dcb614cca6d61c5e51960826dddc004858ed9f1 (diff)
parent6ef96717181dfa1cda548cbe405410aba065e41c (diff)
Merge with master
Diffstat (limited to 'include')
-rw-r--r--include/battle.h5
-rw-r--r--include/battle_anim.h93
-rw-r--r--include/battle_interface.h2
-rw-r--r--include/battle_main.h16
-rw-r--r--include/battle_tower.h7
-rw-r--r--include/blit.h8
-rw-r--r--include/constants/battle_frontier.h71
-rw-r--r--include/constants/event_objects.h3
-rw-r--r--include/constants/trainers.h162
-rw-r--r--include/constants/vars.h2
-rw-r--r--include/constants/weather.h1
-rw-r--r--include/contest.h3
-rw-r--r--include/contest_painting.h13
-rwxr-xr-xinclude/contest_painting_effects.h28
-rw-r--r--include/easy_chat.h3
-rw-r--r--include/event_scripts.h16
-rw-r--r--include/field_fadetransition.h12
-rw-r--r--include/field_player_avatar.h2
-rw-r--r--include/field_screen.h24
-rw-r--r--include/field_screen_effect.h38
-rw-r--r--include/field_weather.h156
-rw-r--r--include/fldeff_80F9BCC.h19
-rw-r--r--include/fldeff_misc.h24
-rwxr-xr-xinclude/fldeff_softboiled.h7
-rw-r--r--include/gba/types.h4
-rw-r--r--include/global.h24
-rw-r--r--include/graphics.h37
-rw-r--r--include/item_menu.h39
-rw-r--r--include/link_rfu.h1
-rwxr-xr-xinclude/math_util.h14
-rw-r--r--include/menu.h4
-rw-r--r--include/overworld.h2
-rw-r--r--include/party_menu.h38
-rw-r--r--include/player_pc.h1
-rw-r--r--include/pokedex.h11
-rw-r--r--include/pokemon.h8
-rw-r--r--include/pokemon_icon.h2
-rw-r--r--include/pokemon_storage_system.h2
-rwxr-xr-xinclude/pokemon_summary_screen.h1
-rw-r--r--include/pokenav.h2
-rw-r--r--include/region_map.h1
-rw-r--r--include/rom_8011DC0.h5
-rw-r--r--include/scanline_effect.h1
-rw-r--r--include/secret_base.h8
-rw-r--r--include/strings.h398
-rw-r--r--include/trade.h5
46 files changed, 1044 insertions, 279 deletions
diff --git a/include/battle.h b/include/battle.h
index 9e67e8ec5..52c4ee8ae 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -599,8 +599,7 @@ struct BattleAnimationInfo
u8 field_9_x80:1;
u8 field_A;
u8 field_B;
- u8 field_C;
- u8 field_D;
+ s16 field_C;
u8 field_E;
u8 field_F;
};
@@ -624,7 +623,7 @@ struct BattleHealthboxInfo
u8 battlerBounceSpriteId;
u8 animationState;
u8 field_5;
- u8 field_6;
+ u8 matrixNum;
u8 shadowSpriteId;
u8 field_8;
u8 field_9;
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 8d73ea9b3..1c2093da9 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -9,11 +9,11 @@ enum
{
BG_ANIM_SCREEN_SIZE,
BG_ANIM_AREA_OVERFLOW_MODE,
- BG_ANIM2,
+ BG_ANIM_MOSAIC,
BG_ANIM_CHAR_BASE_BLOCK,
BG_ANIM_PRIORITY,
- BG_ANIM_5,
- BG_ANIM_6
+ BG_ANIM_PALETTES_MODE,
+ BG_ANIM_SCREEN_BASE_BLOCK,
};
struct UnknownAnimStruct2
@@ -67,77 +67,96 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
void sub_80A4720(u16 a, u16 *b, u32 c, u8 d);
void sub_80A477C(bool8);
-// battle_anim_80FE840.s
+// battle_intro.s
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
-void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, void *arg5, u16 *arg6, u16 arg7);
+void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 arg7);
void HandleIntroSlide(u8 terrainId);
-u32 GetAnimBgAttribute(u8 bgId, u8 attributeId);
+int GetAnimBgAttribute(u8 bgId, u8 attributeId);
// battle_anim_80A5C6C.s
void sub_80A6450(struct Sprite *sprite);
-void SetAverageBattlerPositions(u8 battlerId, bool8 a2, s16 *x, s16 *y);
-void move_anim_8074EE0(struct Sprite *sprite);
-void sub_80A656C(struct Sprite *sprite);
-void InitAnimSpritePos(struct Sprite *sprite, u8 a2);
-void sub_80A6980(struct Sprite *sprite, bool8 a2);
+void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y);
+void DestroySpriteAndMatrix(struct Sprite *sprite);
+void AnimTranslateLinearSimple(struct Sprite *sprite);
+void InitSpritePosToAnimAttacker(struct Sprite *sprite, u8 a2);
+void InitSpritePosToAnimTarget(struct Sprite *sprite, bool8 a2);
void StartAnimLinearTranslation(struct Sprite *sprite);
void InitAnimArcTranslation(struct Sprite *sprite);
-bool8 TranslateAnimLinear(struct Sprite *sprite);
+bool8 AnimTranslateLinear(struct Sprite *sprite);
void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite);
void sub_80A8EE4(struct Sprite *sprite);
u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId);
void sub_80A6FD4(struct Sprite *sprite);
u16 ArcTan2Neg(s16 a, s16 b);
-void sub_80A73E0(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation);
-void sub_80A67BC(struct Sprite *sprite);
+void TrySetSpriteRotScale(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation);
+void RunStoredCallbackWhenAffineAnimEnds(struct Sprite *sprite);
void sub_80A66DC(struct Sprite *sprite);
-void sub_80A6838(struct Sprite *sprite);
-void sub_80A67D8(struct Sprite *sprite);
-void sub_80A6864(struct Sprite *sprite, s16 a2);
+void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite);
+void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite);
+void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 a2);
s16 sub_80A861C(u8 battlerId, u8 a2);
u8 GetBattlerYCoordWithElevation(u8 battlerId);
void WaitAnimForDuration(struct Sprite *sprite);
void sub_80A7938(struct Sprite *sprite);
void InitAnimLinearTranslation(struct Sprite *sprite);
void sub_80A6F98(struct Sprite *sprite);
-u8 sub_80A8328(u8 battlerId);
-void *sub_80A8050(s16 bottom, s16 top);
-void sub_80A8048(s16 *bottom, s16 *top, const void *ptr);
+u8 GetBattlerSpriteBGPriority(u8 battlerId);
+void *LoadPointerFromVars(s16 bottom, s16 top);
+void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr);
void sub_80A8278(void);
void sub_80A6B30(struct UnknownAnimStruct2*);
void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1);
-u8 sub_80A82E4(u8 battlerId);
+u8 GetBattlerSpriteSubpriority(u8 battlerId);
bool8 TranslateAnimArc(struct Sprite *sprite);
void sub_80A6630(struct Sprite *sprite);
void sub_80A6680(struct Sprite *sprite);
-void sub_80A7344(u8 spriteId);
-void obj_id_set_rotscale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation);
+void ResetSpriteRotScale(u8 spriteId);
+void SetSpriteRotScale(u8 spriteId, s16 xScale, s16 yScale, u16 rotation);
void InitSpriteDataForLinearTranslation(struct Sprite *sprite);
-void sub_80A7270(u8 spriteId, u8 objMode);
-void sub_80A73A0(u8 spriteId);
+void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode);
+void SetBattlerSpriteYOffsetFromRotation(u8 spriteId);
u32 sub_80A75AC(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7);
u32 sub_80A76C4(u8 a1, u8 a2, u8 a3, u8 a4);
u8 sub_80A77AC(u8 a1);
-s16 duplicate_obj_of_side_rel2move_in_transparent_mode(u8);
+s16 CloneBattlerSpriteWithBlend(u8);
void obj_delete_but_dont_free_vram(struct Sprite*);
u8 sub_80A89C8(int, u8, int);
void sub_80A6D60(struct UnknownAnimStruct2*, const void*, u32);
void sub_80A6CC0(u32, const void*, u32);
void sub_80A6DAC(bool8);
-void sub_80A634C(struct Sprite *);
+void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *);
void sub_80A653C(struct Sprite *);
-void sub_80A7E6C(u8 spriteId);
+void SetBattlerSpriteYOffsetFromYScale(u8 spriteId);
void sub_80A805C(struct Task *task, u8 a2, s16 a3, s16 a4, s16 a5, s16 a6, u16 a7);
u8 sub_80A80C8(struct Task *task);
void sub_80A8EE4(struct Sprite *);
+void sub_80A67F4(struct Sprite *);
+void sub_80A6D48(u32 bgId, const void *src);
+void InitAnimFastLinearTranslationWithSpeed(struct Sprite *sprite);
+bool8 AnimFastTranslateLinear(struct Sprite *sprite);
+void InitAndRunAnimFastLinearTranslation(struct Sprite *sprite);
+void TranslateMonBGUntil(struct Sprite *sprite);
+void TranslateSpriteOverDuration(struct Sprite *sprite);
+void sub_80A77C8(struct Sprite *sprite);
+void sub_80A7000(struct Sprite *sprite);
+void TranslateSpriteInCircleOverDuration(struct Sprite *sprite);
+void SetGreyscaleOrOriginalPalette(u16 a1, bool8 a2);
+void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds);
+bool8 RunAffineAnimFromTaskData(struct Task *task);
+void sub_80A78AC(struct Sprite *sprite);
+void sub_80A6BFC(struct UnknownAnimStruct2 *unk, u8 unused);
+u8 sub_80A8394(u16 species, bool8 isBackpic, u8 a3, s16 x, s16 y, u8 subpriority, u32 personality, u32 trainerId, u32 battlerId, u32 a10);
+void sub_80A749C(struct Sprite *sprite);
+void sub_80A6814(u8 taskId);
+void sub_80A8610(struct Sprite *sprite);
enum
{
BATTLER_COORD_X,
BATTLER_COORD_Y,
BATTLER_COORD_X_2,
- BATTLER_COORD_3,
- BATTLER_COORD_4,
+ BATTLER_COORD_Y_PIC_OFFSET,
+ BATTLER_COORD_Y_PIC_OFFSET_DEFAULT,
};
u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId);
@@ -147,11 +166,10 @@ void sub_80A6C68(u32 arg0);
u8 GetAnimBattlerSpriteId(u8 wantedBattler);
bool8 IsDoubleBattle(void);
u8 sub_80A6D94(void);
-u8 sub_80A8364(u8 battlerId);
+u8 GetBattlerSpriteBGPriorityRank(u8 battlerId);
void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite*));
void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
u8 GetBattlerSpriteDefault_Y(u8 battlerId);
-u8 sub_80A82E4(u8 battlerId);
u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
// battle_anim_80A9C70.s
@@ -165,13 +183,17 @@ u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
#define STAT_ANIM_MULTIPLE_MINUS2 58
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
+// ground.c
+void sub_81152DC(u8 taskId);
+
// battle_anim_8170478.s
u8 ItemIdToBallId(u16 itemId);
-u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
-u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 arg2, u8 ballId);
+u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId);
+u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 battlerId, u32 selectedPalettes, u8 ballId);
// battle_anim_utility_funcs.s
void sub_8116EB4(u8);
+void sub_8117854(u8 taskId, int unused, u16 arg2, u8 battler1, u8 arg4, u8 arg5, u8 arg6, u8 arg7, const u8 *arg8, const u8 *arg9, const u16 *palette);
u32 UnpackSelectedBattleAnimPalettes(s16);
@@ -222,4 +244,7 @@ extern const struct OamData gUnknown_0852493C;
extern const struct OamData gUnknown_08524A5C;
extern const struct OamData gUnknown_08524A74;
+extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
+extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
+
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_interface.h b/include/battle_interface.h
index 66a7f9828..3145939d0 100644
--- a/include/battle_interface.h
+++ b/include/battle_interface.h
@@ -1,6 +1,8 @@
#ifndef GUARD_BATTLE_INTERFACE_H
#define GUARD_BATTLE_INTERFACE_H
+#include "battle_controllers.h"
+
enum
{
HP_CURRENT,
diff --git a/include/battle_main.h b/include/battle_main.h
index 5a61b5ef0..18bdde2f1 100644
--- a/include/battle_main.h
+++ b/include/battle_main.h
@@ -7,6 +7,20 @@ struct TrainerMoney
u8 value;
};
+struct UnknownPokemonStruct4
+{
+ /*0x00*/ u16 species;
+ /*0x02*/ u16 heldItem;
+ /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
+ /*0x0F*/ u8 level;
+ /*0x10*/ u16 hp;
+ /*0x12*/ u16 maxhp;
+ /*0x14*/ u32 status;
+ /*0x18*/ u32 personality;
+ /*0x1C*/ u8 gender;
+ /*0x1D*/ u8 language;
+};
+
#define TYPE_NAME_LENGTH 6
#define ABILITY_NAME_LENGTH 12
@@ -70,6 +84,8 @@ void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
bool8 TryRunFromBattle(u8 battlerId);
+extern struct UnknownPokemonStruct4 gUnknown_02022FF8[3];
+
extern const u8 gTypeEffectiveness[336];
extern const u8 gTypeNames[][TYPE_NAME_LENGTH + 1];
extern const struct TrainerMoney gTrainerMoneyTable[];
diff --git a/include/battle_tower.h b/include/battle_tower.h
index b6adcec0c..bd8e80fc1 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -9,7 +9,7 @@ struct RSBattleTowerRecord
/*0x04*/ u8 name[PLAYER_NAME_LENGTH + 1];
/*0x0C*/ u8 trainerId[4];
/*0x10*/ u16 greeting[6];
- /*0x1C*/ struct UnknownPokemonStruct party[3];
+ /*0x1C*/ struct BattleTowerPokemon party[3];
/*0xA0*/ u32 checksum;
};
@@ -37,6 +37,11 @@ extern const u8 gTowerMaleFacilityClasses[30];
extern const u8 gTowerMaleTrainerGfxIds[30];
extern const u8 gTowerFemaleFacilityClasses[20];
extern const u8 gTowerFemaleTrainerGfxIds[20];
+extern const u16 gBattleFrontierHeldItems[];
+extern const struct FacilityMon gBattleFrontierMons[];
+extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
+extern const struct FacilityMon gSlateportBattleTentMons[];
+extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[];
extern u16 gUnknown_03006298[];
diff --git a/include/blit.h b/include/blit.h
index b6c80b497..78f67766e 100644
--- a/include/blit.h
+++ b/include/blit.h
@@ -3,15 +3,15 @@
struct Bitmap
{
- const u8 *pixels;
+ u8 *pixels;
u32 width:16;
u32 height:16;
};
-void BlitBitmapRect4BitWithoutColorKey(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height);
-void BlitBitmapRect4Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey);
+void BlitBitmapRect4BitWithoutColorKey(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height);
+void BlitBitmapRect4Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey);
void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
-void BlitBitmapRect4BitTo8Bit(struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset);
+void BlitBitmapRect4BitTo8Bit(const struct Bitmap *src, struct Bitmap *dst, u16 srcX, u16 srcY, u16 dstX, u16 dstY, u16 width, u16 height, u8 colorKey, u8 paletteOffset);
void FillBitmapRect8Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
#endif // GUARD_BLIT_H
diff --git a/include/constants/battle_frontier.h b/include/constants/battle_frontier.h
index b5ad4f072..55b14b642 100644
--- a/include/constants/battle_frontier.h
+++ b/include/constants/battle_frontier.h
@@ -41,4 +41,75 @@
// For 'ShowFacilityResultsWindow' function which is a part of the 'CallFrontierUtilFunc' special.
#define RESULTS_LINK_CONTEST 7
+#define F_EV_SPREAD_HP (1 << 0)
+#define F_EV_SPREAD_ATTACK (1 << 1)
+#define F_EV_SPREAD_DEFENSE (1 << 2)
+#define F_EV_SPREAD_SPEED (1 << 3)
+#define F_EV_SPREAD_SP_ATTACK (1 << 4)
+#define F_EV_SPREAD_SP_DEFENSE (1 << 5)
+
+#define BATTLE_FRONTIER_ITEM_NONE 0
+#define BATTLE_FRONTIER_ITEM_KINGS_ROCK 1
+#define BATTLE_FRONTIER_ITEM_SITRUS_BERRY 2
+#define BATTLE_FRONTIER_ITEM_ORAN_BERRY 3
+#define BATTLE_FRONTIER_ITEM_CHESTO_BERRY 4
+#define BATTLE_FRONTIER_ITEM_HARD_STONE 5
+#define BATTLE_FRONTIER_ITEM_FOCUS_BAND 6
+#define BATTLE_FRONTIER_ITEM_PERSIM_BERRY 7
+#define BATTLE_FRONTIER_ITEM_MIRACLE_SEED 8
+#define BATTLE_FRONTIER_ITEM_BERRY_JUICE 9
+#define BATTLE_FRONTIER_ITEM_MACHO_BRACE 10
+#define BATTLE_FRONTIER_ITEM_SILVER_POWDER 11
+#define BATTLE_FRONTIER_ITEM_CHERI_BERRY 12
+#define BATTLE_FRONTIER_ITEM_BLACK_GLASSES 13
+#define BATTLE_FRONTIER_ITEM_BLACK_BELT 14
+#define BATTLE_FRONTIER_ITEM_SOUL_DEW 15
+#define BATTLE_FRONTIER_ITEM_CHOICE_BAND 16
+#define BATTLE_FRONTIER_ITEM_MAGNET 17
+#define BATTLE_FRONTIER_ITEM_SILK_SCARF 18
+#define BATTLE_FRONTIER_ITEM_WHITE_HERB 19
+#define BATTLE_FRONTIER_ITEM_DEEP_SEA_SCALE 20
+#define BATTLE_FRONTIER_ITEM_DEEP_SEA_TOOTH 21
+#define BATTLE_FRONTIER_ITEM_MYSTIC_WATER 22
+#define BATTLE_FRONTIER_ITEM_SHARP_BEAK 23
+#define BATTLE_FRONTIER_ITEM_QUICK_CLAW 24
+#define BATTLE_FRONTIER_ITEM_LEFTOVERS 25
+#define BATTLE_FRONTIER_ITEM_RAWST_BERRY 26
+#define BATTLE_FRONTIER_ITEM_LIGHT_BALL 27
+#define BATTLE_FRONTIER_ITEM_POISON_BARB 28
+#define BATTLE_FRONTIER_ITEM_NEVER_MELT_ICE 29
+#define BATTLE_FRONTIER_ITEM_ASPEAR_BERRY 30
+#define BATTLE_FRONTIER_ITEM_SPELL_TAG 31
+#define BATTLE_FRONTIER_ITEM_BRIGHT_POWDER 32
+#define BATTLE_FRONTIER_ITEM_LEPPA_BERRY 33
+#define BATTLE_FRONTIER_ITEM_SCOPE_LENS 34
+#define BATTLE_FRONTIER_ITEM_TWISTED_SPOON 35
+#define BATTLE_FRONTIER_ITEM_METAL_COAT 36
+#define BATTLE_FRONTIER_ITEM_MENTAL_HERB 37
+#define BATTLE_FRONTIER_ITEM_CHARCOAL 38
+#define BATTLE_FRONTIER_ITEM_PECHA_BERRY 39
+#define BATTLE_FRONTIER_ITEM_SOFT_SAND 40
+#define BATTLE_FRONTIER_ITEM_LUM_BERRY 41
+#define BATTLE_FRONTIER_ITEM_DRAGON_SCALE 42
+#define BATTLE_FRONTIER_ITEM_DRAGON_FANG 43
+#define BATTLE_FRONTIER_ITEM_IAPAPA_BERRY 44
+#define BATTLE_FRONTIER_ITEM_WIKI_BERRY 45
+#define BATTLE_FRONTIER_ITEM_SEA_INCENSE 46
+#define BATTLE_FRONTIER_ITEM_SHELL_BELL 47
+#define BATTLE_FRONTIER_ITEM_SALAC_BERRY 48
+#define BATTLE_FRONTIER_ITEM_LANSAT_BERRY 49
+#define BATTLE_FRONTIER_ITEM_APICOT_BERRY 50
+#define BATTLE_FRONTIER_ITEM_STARF_BERRY 51
+#define BATTLE_FRONTIER_ITEM_LIECHI_BERRY 52
+#define BATTLE_FRONTIER_ITEM_STICK 53
+#define BATTLE_FRONTIER_ITEM_LAX_INCENSE 54
+#define BATTLE_FRONTIER_ITEM_AGUAV_BERRY 55
+#define BATTLE_FRONTIER_ITEM_FIGY_BERRY 56
+#define BATTLE_FRONTIER_ITEM_THICK_CLUB 57
+#define BATTLE_FRONTIER_ITEM_MAGO_BERRY 58
+#define BATTLE_FRONTIER_ITEM_METAL_POWDER 59
+#define BATTLE_FRONTIER_ITEM_PETAYA_BERRY 60
+#define BATTLE_FRONTIER_ITEM_LUCKY_PUNCH 61
+#define BATTLE_FRONTIER_ITEM_GANLON_BERRY 62
+
#endif // GUARD_CONSTANTS_BATTLE_FRONTIER_H
diff --git a/include/constants/event_objects.h b/include/constants/event_objects.h
index 4967c814d..7a97c4caf 100644
--- a/include/constants/event_objects.h
+++ b/include/constants/event_objects.h
@@ -260,4 +260,7 @@
#define TRACKS_FOOT 1
#define TRACKS_BIKE_TIRE 2
+#define EVENT_OBJ_ID_PLAYER 0xFF
+#define EVENT_OBJ_ID_CAMERA 0x7F
+
#endif // GUARD_CONSTANTS_EVENT_OBJECTS_H
diff --git a/include/constants/trainers.h b/include/constants/trainers.h
index cf6eaf929..2a6c306b4 100644
--- a/include/constants/trainers.h
+++ b/include/constants/trainers.h
@@ -117,88 +117,90 @@
#define TRAINER_BACK_PIC_WALLY 6
#define TRAINER_BACK_PIC_STEVEN 7
-#define FACILITY_CLASS_HIKER 0x0
-#define FACILITY_CLASS_AQUA_GRUNT_M 0x1
-#define FACILITY_CLASS_POKEMON_BREEDER_F 0x2
-#define FACILITY_CLASS_COOLTRAINER_M 0x3
-#define FACILITY_CLASS_BIRD_KEEPER 0x4
-#define FACILITY_CLASS_COLLECTOR 0x5
-#define FACILITY_CLASS_AQUA_GRUNT_F 0x6
-#define FACILITY_CLASS_SWIMMER_M 0x7
-#define FACILITY_CLASS_MAGMA_GRUNT_M 0x8
-#define FACILITY_CLASS_EXPERT_M 0x9
-#define FACILITY_CLASS_BLACK_BELT 0xa
-#define FACILITY_CLASS_AQUA_LEADER_ARCHIE 0xb
-#define FACILITY_CLASS_HEX_MANIAC 0xc
-#define FACILITY_CLASS_AROMA_LADY 0xd
-#define FACILITY_CLASS_RUIN_MANIAC 0xe
-#define FACILITY_CLASS_INTERVIEWER 0xf
-#define FACILITY_CLASS_TUBER_F 0x10
-#define FACILITY_CLASS_TUBER_M 0x11
-#define FACILITY_CLASS_COOLTRAINER_F 0x12
-#define FACILITY_CLASS_LADY 0x13
-#define FACILITY_CLASS_BEAUTY 0x14
-#define FACILITY_CLASS_RICH_BOY 0x15
-#define FACILITY_CLASS_EXPERT_F 0x16
-#define FACILITY_CLASS_POKEMANIAC 0x17
-#define FACILITY_CLASS_MAGMA_GRUNT_F 0x18
-#define FACILITY_CLASS_GUITARIST 0x19
-#define FACILITY_CLASS_KINDLER 0x1a
-#define FACILITY_CLASS_CAMPER 0x1b
-#define FACILITY_CLASS_PICNICKER 0x1c
-#define FACILITY_CLASS_BUG_MANIAC 0x1d
-#define FACILITY_CLASS_PSYCHIC_M 0x1e
-#define FACILITY_CLASS_PSYCHIC_F 0x1f
-#define FACILITY_CLASS_GENTLEMAN 0x20
-#define FACILITY_CLASS_ELITE_FOUR_SIDNEY 0x21
-#define FACILITY_CLASS_ELITE_FOUR_PHOEBE 0x22
-#define FACILITY_CLASS_LEADER_ROXANNE 0x23
-#define FACILITY_CLASS_LEADER_BRAWLY 0x24
-#define FACILITY_CLASS_LEADER_TATE_AND_LIZA 0x25
-#define FACILITY_CLASS_SCHOOL_KID_M 0x26
-#define FACILITY_CLASS_SCHOOL_KID_F 0x27
-#define FACILITY_CLASS_SR_AND_JR 0x28
-#define FACILITY_CLASS_POKEFAN_M 0x29
-#define FACILITY_CLASS_POKEFAN_F 0x2a
-#define FACILITY_CLASS_YOUNGSTER 0x2b
-#define FACILITY_CLASS_CHAMPION_WALLACE 0x2c
-#define FACILITY_CLASS_FISHERMAN 0x2d
-#define FACILITY_CLASS_CYCLING_TRIATHLETE_M 0x2e
-#define FACILITY_CLASS_CYCLING_TRIATHLETE_F 0x2f
-#define FACILITY_CLASS_RUNNING_TRIATHLETE_M 0x30
-#define FACILITY_CLASS_RUNNING_TRIATHLETE_F 0x31
+#define FACILITY_CLASS_HIKER 0x0
+#define FACILITY_CLASS_AQUA_GRUNT_M 0x1
+#define FACILITY_CLASS_POKEMON_BREEDER_F 0x2
+#define FACILITY_CLASS_COOLTRAINER_M 0x3
+#define FACILITY_CLASS_BIRD_KEEPER 0x4
+#define FACILITY_CLASS_COLLECTOR 0x5
+#define FACILITY_CLASS_AQUA_GRUNT_F 0x6
+#define FACILITY_CLASS_SWIMMER_M 0x7
+#define FACILITY_CLASS_MAGMA_GRUNT_M 0x8
+#define FACILITY_CLASS_EXPERT_M 0x9
+#define FACILITY_CLASS_BLACK_BELT 0xa
+#define FACILITY_CLASS_AQUA_LEADER_ARCHIE 0xb
+#define FACILITY_CLASS_HEX_MANIAC 0xc
+#define FACILITY_CLASS_AROMA_LADY 0xd
+#define FACILITY_CLASS_RUIN_MANIAC 0xe
+#define FACILITY_CLASS_INTERVIEWER 0xf
+#define FACILITY_CLASS_TUBER_F 0x10
+#define FACILITY_CLASS_TUBER_M 0x11
+#define FACILITY_CLASS_COOLTRAINER_F 0x12
+#define FACILITY_CLASS_LADY 0x13
+#define FACILITY_CLASS_BEAUTY 0x14
+#define FACILITY_CLASS_RICH_BOY 0x15
+#define FACILITY_CLASS_EXPERT_F 0x16
+#define FACILITY_CLASS_POKEMANIAC 0x17
+#define FACILITY_CLASS_MAGMA_GRUNT_F 0x18
+#define FACILITY_CLASS_GUITARIST 0x19
+#define FACILITY_CLASS_KINDLER 0x1a
+#define FACILITY_CLASS_CAMPER 0x1b
+#define FACILITY_CLASS_PICNICKER 0x1c
+#define FACILITY_CLASS_BUG_MANIAC 0x1d
+#define FACILITY_CLASS_PSYCHIC_M 0x1e
+#define FACILITY_CLASS_PSYCHIC_F 0x1f
+#define FACILITY_CLASS_GENTLEMAN 0x20
+#define FACILITY_CLASS_ELITE_FOUR_SIDNEY 0x21
+#define FACILITY_CLASS_ELITE_FOUR_PHOEBE 0x22
+#define FACILITY_CLASS_LEADER_ROXANNE 0x23
+#define FACILITY_CLASS_LEADER_BRAWLY 0x24
+#define FACILITY_CLASS_LEADER_TATE_AND_LIZA 0x25
+#define FACILITY_CLASS_SCHOOL_KID_M 0x26
+#define FACILITY_CLASS_SCHOOL_KID_F 0x27
+#define FACILITY_CLASS_SR_AND_JR 0x28
+#define FACILITY_CLASS_POKEFAN_M 0x29
+#define FACILITY_CLASS_POKEFAN_F 0x2a
+#define FACILITY_CLASS_YOUNGSTER 0x2b
+#define FACILITY_CLASS_CHAMPION_WALLACE 0x2c
+#define FACILITY_CLASS_FISHERMAN 0x2d
+#define FACILITY_CLASS_CYCLING_TRIATHLETE_M 0x2e
+#define FACILITY_CLASS_CYCLING_TRIATHLETE_F 0x2f
+#define FACILITY_CLASS_RUNNING_TRIATHLETE_M 0x30
+#define FACILITY_CLASS_RUNNING_TRIATHLETE_F 0x31
#define FACILITY_CLASS_SWIMMING_TRIATHLETE_M 0x32
#define FACILITY_CLASS_SWIMMING_TRIATHLETE_F 0x33
-#define FACILITY_CLASS_DRAGON_TAMER 0x34
-#define FACILITY_CLASS_NINJA_BOY 0x35
-#define FACILITY_CLASS_BATTLE_GIRL 0x36
-#define FACILITY_CLASS_PARASOL_LADY 0x37
-#define FACILITY_CLASS_SWIMMER_F 0x38
-#define FACILITY_CLASS_TWINS 0x39
-#define FACILITY_CLASS_SAILOR 0x3a
-#define FACILITY_CLASS_WALLY 0x3b
-#define FACILITY_CLASS_BRENDAN 0x3c
-#define FACILITY_CLASS_BRENDAN_2 0x3d
-#define FACILITY_CLASS_BRENDAN_3 0x3e
-#define FACILITY_CLASS_MAY 0x3f
-#define FACILITY_CLASS_MAY_2 0x40
-#define FACILITY_CLASS_MAY_3 0x41
-#define FACILITY_CLASS_PKMN_BREEDER_M 0x42
-#define FACILITY_CLASS_BUG_CATCHER 0x43
-#define FACILITY_CLASS_PKMN_RANGER_M 0x44
-#define FACILITY_CLASS_PKMN_RANGER_F 0x45
-#define FACILITY_CLASS_MAGMA_LEADER_MAXIE 0x46
-#define FACILITY_CLASS_LASS 0x47
-#define FACILITY_CLASS_YOUNG_COUPLE 0x48
-#define FACILITY_CLASS_OLD_COUPLE 0x49
-#define FACILITY_CLASS_SIS_AND_BRO 0x4a
-#define FACILITY_CLASS_STEVEN 0x4b
-#define FACILITY_CLASS_SALON_MAIDEN_ANABEL 0x4c
-#define FACILITY_CLASS_DOME_ACE_TUCKER 0x4d
-#define FACILITY_CLASS_RED 0x4e
-#define FACILITY_CLASS_LEAF 0x4f
-#define FACILITY_CLASS_RS_BRENDAN 0x50
-#define FACILITY_CLASS_RS_MAY 0x51
+#define FACILITY_CLASS_DRAGON_TAMER 0x34
+#define FACILITY_CLASS_NINJA_BOY 0x35
+#define FACILITY_CLASS_BATTLE_GIRL 0x36
+#define FACILITY_CLASS_PARASOL_LADY 0x37
+#define FACILITY_CLASS_SWIMMER_F 0x38
+#define FACILITY_CLASS_TWINS 0x39
+#define FACILITY_CLASS_SAILOR 0x3a
+#define FACILITY_CLASS_WALLY 0x3b
+#define FACILITY_CLASS_BRENDAN 0x3c
+#define FACILITY_CLASS_BRENDAN_2 0x3d
+#define FACILITY_CLASS_BRENDAN_3 0x3e
+#define FACILITY_CLASS_MAY 0x3f
+#define FACILITY_CLASS_MAY_2 0x40
+#define FACILITY_CLASS_MAY_3 0x41
+#define FACILITY_CLASS_PKMN_BREEDER_M 0x42
+#define FACILITY_CLASS_BUG_CATCHER 0x43
+#define FACILITY_CLASS_PKMN_RANGER_M 0x44
+#define FACILITY_CLASS_PKMN_RANGER_F 0x45
+#define FACILITY_CLASS_MAGMA_LEADER_MAXIE 0x46
+#define FACILITY_CLASS_LASS 0x47
+#define FACILITY_CLASS_YOUNG_COUPLE 0x48
+#define FACILITY_CLASS_OLD_COUPLE 0x49
+#define FACILITY_CLASS_SIS_AND_BRO 0x4a
+#define FACILITY_CLASS_STEVEN 0x4b
+#define FACILITY_CLASS_SALON_MAIDEN_ANABEL 0x4c
+#define FACILITY_CLASS_DOME_ACE_TUCKER 0x4d
+#define FACILITY_CLASS_RED 0x4e
+#define FACILITY_CLASS_LEAF 0x4f
+#define FACILITY_CLASS_RS_BRENDAN 0x50
+#define FACILITY_CLASS_RS_MAY 0x51
+
+#define FACILITY_CLASSES_COUNT 0x52
#define TRAINER_CLASS_PKMN_TRAINER_1 0x0
#define TRAINER_CLASS_PKMN_TRAINER_2 0x1
diff --git a/include/constants/vars.h b/include/constants/vars.h
index 9854ec5a2..faffe7c70 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -100,7 +100,7 @@
#define VAR_0x4051 0x4051
#define VAR_0x4052 0x4052
#define VAR_0x4053 0x4053
-#define VAR_0x4054 0x4054
+#define VAR_CURRENT_SECRET_BASE 0x4054
#define VAR_0x4055 0x4055
#define VAR_0x4056 0x4056
#define VAR_0x4057 0x4057
diff --git a/include/constants/weather.h b/include/constants/weather.h
index 953cc2753..d0a81c34c 100644
--- a/include/constants/weather.h
+++ b/include/constants/weather.h
@@ -16,6 +16,7 @@
#define WEATHER_DROUGHT 12
#define WEATHER_RAIN_HEAVY 13
#define WEATHER_BUBBLES 14
+#define WEATHER_15 15
#define WEATHER_ROUTE119_CYCLE 20
#define WEATHER_ROUTE123_CYCLE 21
diff --git a/include/contest.h b/include/contest.h
index 8790d7371..54c431b94 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -231,6 +231,7 @@ extern u8 gContestPlayerMonIndex;
extern s16 gUnknown_02039F08[4];
extern s16 gContestMonConditions[4];
extern u8 gIsLinkContest;
+extern struct ContestWinner gUnknown_02039F3C;
struct Shared18000
{
@@ -415,7 +416,6 @@ extern struct ContestResources *gContestResources;
#define eContestAI (gContestResources->field_C)
#define shared19328 (*gContestResources->field_10)
#define shared19338 (*gContestResources->field_14)
-#define shared19348 (*gContestResources->field_18)
#define shared15800 (gHeap + 0x18000)
#define shared18000 (*(struct Shared18000 *)(gHeap + 0x1a000))
@@ -432,6 +432,7 @@ bool8 Contest_IsMonsTurnDisabled(u8 a);
bool8 sub_80DE1E8(u8 a);
void SetStartledString(u8 a, u8 b);
s8 Contest_GetMoveExcitement(u16);
+u8 sub_80DAE0C(struct Pokemon *);
void sub_80DEDA8(u8);
#endif //GUARD_CONTEST_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
index 67a845d62..c633c50cc 100644
--- a/include/contest_painting.h
+++ b/include/contest_painting.h
@@ -1,7 +1,16 @@
#ifndef GUARD_CONTESTPAINTING_H
#define GUARD_CONTESTPAINTING_H
-void sub_812FDA8(u32);
-void sub_812FDEC(void);
+enum
+{
+ CONTESTRESULT_COOL = 9,
+ CONTESTRESULT_BEAUTY = 13,
+ CONTESTRESULT_CUTE = 2,
+ CONTESTRESULT_SMART = 36,
+ CONTESTRESULT_TOUGH = 6,
+};
+
+void sub_812FDA8(int);
+void CB2_ContestPainting(void);
#endif
diff --git a/include/contest_painting_effects.h b/include/contest_painting_effects.h
new file mode 100755
index 000000000..3b6964666
--- /dev/null
+++ b/include/contest_painting_effects.h
@@ -0,0 +1,28 @@
+#ifndef GUARD_CONTEST_PAINTING_EFFECTS_H
+#define GUARD_CONTEST_PAINTING_EFFECTS_H
+
+struct Unk030061A0
+{
+ u8 var_0;
+ u8 pad1[3];
+ u16 (*var_4)[][32];
+ u16 *var_8;
+ u8 pad0C[4];
+ u32 var_10;
+ u16 var_14;
+ u16 var_16;
+ u8 var_18;
+ u8 var_19;
+ u8 var_1A;
+ u8 var_1B;
+ u8 var_1C;
+ u8 var_1D;
+ u8 var_1E;
+ u8 var_1F;
+};
+
+void sub_8124F2C(struct Unk030061A0 *);
+void sub_81261A4(struct Unk030061A0 *);
+void sub_8126058(struct Unk030061A0 *);
+
+#endif
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 541fa6c1b..23fd9ed83 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -1,6 +1,8 @@
#ifndef GUARD_EASYCHAT_H
#define GUARD_EASYCHAT_H
+#include "main.h"
+
void InitEasyChatPhrases(void);
void easy_chat_input_maybe(void);
u8 * CopyEasyChatWord(u8 *dest, u16 word);
@@ -12,5 +14,6 @@ u16 sub_811EE38(u16 group);
u16 sub_811F01C(void);
bool16 EasyChat_GetNumWordsInGroup(u8);
u16 sub_811EE90(u16);
+void sub_811A20C(u8 kind, u16 *words, MainCallback callback, u8 sizeParam);
#endif // GUARD_EASYCHAT_H
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 7f69ef3ae..2661494d3 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -405,14 +405,14 @@ extern const u8 gText_SoDesirable[];
extern const u8 gText_SoExciting[];
extern const u8 gText_SoAmusing[];
extern const u8 gText_SoMagical[];
-extern const u8 gUnknown_08294313[];
-extern const u8 gUnknown_08294359[];
-extern const u8 gUnknown_08294398[];
-extern const u8 gUnknown_082943DA[];
-extern const u8 gUnknown_0829441C[];
-extern const u8 gUnknown_08294460[];
-extern const u8 gUnknown_082944A0[];
-extern const u8 gUnknown_082944D5[];
+extern const u8 gMauvilleManText_ISoWantToGoOnAVacation[];
+extern const u8 gMauvilleManText_IBoughtCrayonsWith120Colors[];
+extern const u8 gMauvilleManText_WouldntItBeNiceIfWeCouldFloat[];
+extern const u8 gMauvilleManText_WhenYouWriteOnASandyBeach[];
+extern const u8 gMauvilleManText_WhatsTheBottomOfTheSeaLike[];
+extern const u8 gMauvilleManText_WhenYouSeeTheSettingSunDoesIt[];
+extern const u8 gMauvilleManText_LyingBackInTheGreenGrass[];
+extern const u8 gMauvilleManText_SecretBasesAreSoWonderful[];
extern const u8 MauvilleCity_PokemonCenter_1F_Text_28E930[];
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
deleted file mode 100644
index 7c2d16a24..000000000
--- a/include/field_fadetransition.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef GUARD_FIELD_FADETRANSITION_H
-#define GUARD_FIELD_FADETRANSITION_H
-
-void sub_80AF734(void);
-void sp13E_warp_to_last_warp(void);
-void sub_80AF7D0(void);
-void sp13F_fall_to_last_warp(void);
-
-void sub_80AF848(void);
-void sub_80AF87C(void);
-
-#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index adb51f889..3aedec5de 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -58,5 +58,7 @@ u8 GetJumpSpecialMovementAction(u32);
bool8 PartyHasMonWithSurf(void);
bool8 IsPlayerFacingSurfableFishableWater(void);
bool8 IsPlayerSurfingNorth(void);
+void sub_808C228(u8 direction);
+u8 sub_808BCD0(void);
#endif // GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_screen.h b/include/field_screen.h
deleted file mode 100644
index 021d2b9e9..000000000
--- a/include/field_screen.h
+++ /dev/null
@@ -1,24 +0,0 @@
-#ifndef GUARD_FIELD_SCREEN_H
-#define GUARD_FIELD_SCREEN_H
-
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-void pal_fill_black(void);
-bool8 IsWeatherNotFadingIn(void);
-void sub_80AF168(void);
-void sub_80AF2B4(u8 taskId);
-void UpdateWeatherPerDay(u16 days);
-void sub_80AC3D0(void);
-void sub_80AC3E4(void);
-void PreservePaletteInWeather(u8);
-void sub_80AF128(void);
-void sub_80AB104(u8);
-void sub_80AF80C(u8);
-void sub_80AF828(void);
-void sub_80AF838(void);
-void sub_80B0268(void);
-
-#endif //GUARD_FIELD_SCREEN_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
index ef81c2f9e..f3ac2e866 100644
--- a/include/field_screen_effect.h
+++ b/include/field_screen_effect.h
@@ -1,8 +1,44 @@
#ifndef GUARD_FIELD_SCREEN_EFFECT_H
#define GUARD_FIELD_SCREEN_EFFECT_H
+void pal_fill_for_maplights(void);
+void pal_fill_black(void);
+void WarpFadeScreen(void);
+void sub_80AF128(void);
+void sub_80AF168(void);
+void sub_80AF188(void);
+void sub_80AF214(void);
+void sub_80AF2B4(u8 taskId);
+void sub_80AF314(void);
+void mapldr_default(void);
+void sub_80AF3B0(void);
+void sub_80AF3C8(void);
+void sub_80AF3E8(void);
+void sub_80AF40C(void);
+void sub_80AF688(void);
+bool8 sub_80AF6A4(void);
+void sub_80AF6D4(void);
+void sub_80AF6F0(void);
+void sub_80AF734(void);
+void sp13E_warp_to_last_warp(void);
void sub_80AF79C(void);
-void sub_80B009C(u8);
+void sub_80AF7D0(void);
+void sp13F_fall_to_last_warp(void);
+void sub_80AF80C(u8 metatileBehavior);
+void sub_80AF828(void);
+void sub_80AF838(void);
+void sub_80AF848(void);
+void sub_80AF87C(void);
+void sub_80AF8B8(void);
+void sub_80AF948(void);
+void sub_80AF9F8(void);
+void sub_80AFC60(void);
+void sub_80B009C(u8 flashLevel);
+void door_upload_tiles(void);
void sub_80B0244(void);
+void sub_80B0268(void);
+void sub_80B0534(void);
+void sub_80B058C(void);
+void sub_80B05B4(void);
#endif // GUARD_FIELD_SCREEN_EFFECT_H
diff --git a/include/field_weather.h b/include/field_weather.h
index a48361b8a..c032183e1 100644
--- a/include/field_weather.h
+++ b/include/field_weather.h
@@ -4,13 +4,23 @@
#include "sprite.h"
// Controls how the weather should be changing the screen palettes.
-enum {
+enum
+{
WEATHER_PAL_STATE_CHANGING_WEATHER,
WEATHER_PAL_STATE_SCREEN_FADING_IN,
WEATHER_PAL_STATE_SCREEN_FADING_OUT,
WEATHER_PAL_STATE_IDLE,
};
+// For the FadeScreen function.
+enum
+{
+ FADE_FROM_BLACK,
+ FADE_TO_BLACK,
+ FADE_FROM_WHITE,
+ FADE_TO_WHITE,
+};
+
struct Weather
{
union
@@ -38,11 +48,11 @@ struct Weather
u8 gammaStepDelay;
u8 gammaStepFrameCounter;
u16 fadeDestColor;
- u8 palProcessingState;
- u8 fadeScreenCounter;
- bool8 readyForInit;
- u8 taskId;
- u8 unknown_6CA;
+ /*0x6C6*/ u8 palProcessingState;
+ /*0x6C7*/ u8 fadeScreenCounter;
+ /*0x6C8*/ bool8 readyForInit;
+ /*0x6C9*/ u8 taskId;
+ /*0x6CA*/ u8 unknown_6CA;
u8 unknown_6CB;
u16 initStep;
u16 finishStep;
@@ -121,57 +131,103 @@ struct Weather
u8 loadDroughtPalsOffset;
};
+// field_weather.c
+extern struct Weather gWeather;
+extern struct Weather *const gWeatherPtr;
+
void StartWeather(void);
void ChangeWeather(u8 weather);
-void sub_807C988(u8 effect);
-void sub_807C9B4(u8 effect);
-void Task_WeatherInit(u8);
-void Task_WeatherMain(u8);
-void sub_807CAE8(void);
-void nullsub_38(void);
-void SetWeatherScreenFadeOut(void);
-
-enum
-{
- FADE_FROM_BLACK,
- FADE_TO_BLACK,
- FADE_FROM_WHITE,
- FADE_TO_WHITE,
-};
-
-void FadeScreen(u8, s8);
-// ...
-void UpdateSpritePaletteWithWeather(u8 tag);
-void ApplyWeatherGammaShiftToPal(u8);
-// ...
-void Weather_SetBlendCoeffs(u8, u8);
-// ...
-void PlayRainSoundEffect(void);
-// ...
-void SetSav1Weather(u32);
-u8 GetSav1Weather(void);
-void sub_80AEDBC(void);
-
-void SetSav1WeatherFromCurrMapHeader(void);
-// ...
-void DoCurrentWeather(void);
-void sub_8080750(void);
-
+void sub_80AB104(u8 weather);
+void sub_80AB130(u8 weather);
+void sub_80ABC48(s8 gammaIndex);
+void sub_80ABC7C(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay);
+void FadeScreen(u8 mode, s8 delay);
bool8 IsWeatherNotFadingIn(void);
-bool8 IsWeatherChangeComplete(void);
-void SetWeather(u32);
-void UpdateWeatherPerDay(u16);
-void PreservePaletteInWeather(u8 index);
-void ResetPreservedPalettesInWeather(void);
-extern void ResetDroughtWeatherPaletteLoading(void);
+void UpdateSpritePaletteWithWeather(u8 spritePaletteIndex);
+void ApplyWeatherGammaShiftToPal(u8 paletteIndex);
+u8 sub_80ABF20(void);
+void LoadCustomWeatherSpritePalette(const u16 *palette);
void ResetDroughtWeatherPaletteLoading(void);
bool8 LoadDroughtWeatherPalettes(void);
+void sub_80ABFE0(s8 gammaIndex);
+void sub_80ABFF0(void);
+void sub_80AC01C(void);
+void Weather_SetBlendCoeffs(u8 eva, u8 evb);
+void Weather_SetTargetBlendCoeffs(u8 eva, u8 evb, int delay);
+bool8 Weather_UpdateBlend(void);
+void sub_80AC274(u8 a);
u8 GetCurrentWeather(void);
-void LoadCustomWeatherSpritePalette(const u16 *palette);
-
+void SetRainStrengthFromSoundEffect(u16 soundEffect);
+void PlayRainSoundEffect(void);
+u8 IsWeatherChangeComplete(void);
+void SetWeatherScreenFadeOut(void);
+void sub_80AC3E4(void);
+void PreservePaletteInWeather(u8 preservedPalIndex);
+void ResetPreservedPalettesInWeather(void);
-extern struct Weather gWeather;
+// field_weather_effect.c
+void Clouds_InitVars(void);
+void Clouds_Main(void);
+void Clouds_InitAll(void);
+bool8 Clouds_Finish(void);
+void Weather2_InitVars(void);
+void Weather2_Main(void);
+void Weather2_InitAll(void);
+bool8 Weather2_Finish(void);
+void LightRain_InitVars(void);
+void LightRain_Main(void);
+void LightRain_InitAll(void);
+bool8 LightRain_Finish(void);
+void Snow_InitVars(void);
+void Snow_Main(void);
+void Snow_InitAll(void);
+bool8 Snow_Finish(void);
+void MedRain_InitVars(void);
+void Rain_Main(void);
+void MedRain_InitAll(void);
+bool8 Rain_Finish(void);
+void Fog1_InitVars(void);
+void Fog1_Main(void);
+void Fog1_InitAll(void);
+bool8 Fog1_Finish(void);
+void Ash_InitVars(void);
+void Ash_Main(void);
+void Ash_InitAll(void);
+bool8 Ash_Finish(void);
+void Sandstorm_InitVars(void);
+void Sandstorm_Main(void);
+void Sandstorm_InitAll(void);
+bool8 Sandstorm_Finish(void);
+void Fog2_InitVars(void);
+void Fog2_Main(void);
+void Fog2_InitAll(void);
+bool8 Fog2_Finish(void);
+void Fog1_InitVars(void);
+void Fog1_Main(void);
+void Fog1_InitAll(void);
+bool8 Fog1_Finish(void);
+void Shade_InitVars(void);
+void Shade_Main(void);
+void Shade_InitAll(void);
+bool8 Shade_Finish(void);
+void Drought_InitVars(void);
+void Drought_Main(void);
+void Drought_InitAll(void);
+bool8 Drought_Finish(void);
+void HeavyRain_InitVars(void);
+void Rain_Main(void);
+void HeavyRain_InitAll(void);
+bool8 Rain_Finish(void);
+void Bubbles_InitVars(void);
+void Bubbles_Main(void);
+void Bubbles_InitAll(void);
+bool8 Bubbles_Finish(void);
-extern struct Weather *const gWeatherPtr;
+u8 GetSav1Weather(void);
+void SetSav1Weather(u32 weather);
+void SetSav1WeatherFromCurrMapHeader(void);
+void SetWeather(u32 weather);
+void DoCurrentWeather(void);
+void UpdateWeatherPerDay(u16 increment);
#endif // GUARD_WEATHER_H
diff --git a/include/fldeff_80F9BCC.h b/include/fldeff_80F9BCC.h
deleted file mode 100644
index 027bb4273..000000000
--- a/include/fldeff_80F9BCC.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef GUARD_FLDEFF_80F9BCC_H
-#define GUARD_FLDEFF_80F9BCC_H
-
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-
-void sub_80FA5E4(s16 id, s16 x, s16 y);
-void sub_80FA794(s16 x, s16 y);
-void CreateRecordMixingSprite(void);
-void DestroyRecordMixingSprite(void);
-void FldeffPoison_Start(void);
-void sub_80FA970(s16);
-void sub_80FA9D0(void);
-bool8 sub_80FADE4(u16, u8);
-
-#endif //GUARD_FLDEFF_80F9BCC_H
diff --git a/include/fldeff_misc.h b/include/fldeff_misc.h
new file mode 100644
index 000000000..954ecbb5c
--- /dev/null
+++ b/include/fldeff_misc.h
@@ -0,0 +1,24 @@
+#ifndef GUARD_FLDEFF_MISC_H
+#define GUARD_FLDEFF_MISC_H
+
+void PopSecretBaseBalloon(s16 id, s16 x, s16 y);
+void ShatterSecretBaseBreakableDoor(s16 x, s16 y);
+u8 CreateRecordMixingSprite(void);
+void DestroyRecordMixingSprite(void);
+void FldEffPoison_Start(void);
+void PlaySecretBaseMusicNoteMatSound(s16 metatileId);
+void DoSecretBaseGlitterMatSparkle(void);
+bool8 sub_80FADE4(u16, u8);
+
+extern struct MapPosition gPlayerFacingPosition;
+extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
+
+extern u8 EventScript_275A86[];
+extern u8 EventScript_275ADF[];
+extern u8 EventScript_275B38[];
+
+extern const struct OamData gEventObjectBaseOam_32x8;
+
+extern const u16 gTilesetPalettes_SecretBase[][16];
+
+#endif //GUARD_FLDEFF_MISC_H
diff --git a/include/fldeff_softboiled.h b/include/fldeff_softboiled.h
new file mode 100755
index 000000000..abb3c7913
--- /dev/null
+++ b/include/fldeff_softboiled.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_FLDEFF_SOFTBOILED_H
+#define GUARD_FLDEFF_SOFTBOILED_H
+
+void sub_81615A8(u8 taskId);
+void sub_8161560(u8 taskId);
+
+#endif // GUARD_FLDEFF_SOFTBOILED_H
diff --git a/include/gba/types.h b/include/gba/types.h
index a7dbf3e03..fff48d437 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -32,7 +32,9 @@ struct BgCnt
{
u16 priority:2;
u16 charBaseBlock:2;
- u16 dummy:4;
+ u16 dummy:2;
+ u16 mosaic:1;
+ u16 palettes:1;
u16 screenBaseBlock:5;
u16 areaOverflowMode:1;
u16 screenSize:2;
diff --git a/include/global.h b/include/global.h
index c976abd2d..090ba7ce4 100644
--- a/include/global.h
+++ b/include/global.h
@@ -61,6 +61,12 @@
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
+// Extracts the upper 16 bits of a 32-bit number
+#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
+
+// Extracts the lower 16 bits of a 32-bit number
+#define LOHALF(n) ((n) & 0xFFFF)
+
// There are many quirks in the source code which have overarching behavioral differences from
// a number of other files. For example, diploma.c seems to declare rodata before each use while
// other files declare out of order and must be at the beginning. There are also a number of
@@ -79,6 +85,14 @@
#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr)
+#define S16TOPOSFLOAT(val) \
+({ \
+ s16 v = (val); \
+ float f = (float)v; \
+ if(v < 0) f += 65536.0f; \
+ f; \
+})
+
// Invalid Versions show as "----------" in Gen 4 and Gen 5's summary screen.
// In Gens 6 and 7, invalid versions instead show "a distant land" in the summary screen.
// In Gen 4 only, migrated Pokemon with Diamond, Pearl, or Platinum's ID show as "----------".
@@ -222,7 +236,7 @@ struct Time
struct Pokedex
{
/*0x00*/ u8 order;
- /*0x01*/ u8 unknown1;
+ /*0x01*/ u8 mode;
/*0x02*/ u8 nationalMagic; // must equal 0xDA in order to have National mode
/*0x03*/ u8 unknown2;
/*0x04*/ u32 unownPersonality; // set when you first see Unown
@@ -293,7 +307,7 @@ struct Apprentice
u32 checksum;
};
-struct UnknownPokemonStruct
+struct BattleTowerPokemon
{
u16 species;
u16 heldItem;
@@ -330,7 +344,7 @@ struct EmeraldBattleTowerRecord
/*0x10*/ u16 greeting[6];
/*0x1C*/ u16 speechWon[6];
/*0x28*/ u16 speechLost[6];
- /*0x34*/ struct UnknownPokemonStruct party[4];
+ /*0x34*/ struct BattleTowerPokemon party[4];
/*0xE4*/ u8 language;
/*0xE8*/ u32 checksum;
};
@@ -345,7 +359,7 @@ struct BattleTowerEReaderTrainer
/*0x10*/ u16 greeting[6];
/*0x1C*/ u16 farewellPlayerLost[6];
/*0x28*/ u16 farewellPlayerWon[6];
- /*0x34*/ struct UnknownPokemonStruct party[3];
+ /*0x34*/ struct BattleTowerPokemon party[3];
/*0xB8*/ u32 checksum;
};
@@ -881,7 +895,7 @@ struct SaveBlock1
/*0x24*/ struct WarpData warp4;
/*0x2C*/ u16 savedMusic;
/*0x2E*/ u8 weather;
- /*0x2F*/ u8 filler_2F;
+ /*0x2F*/ u8 weatherCycleStage;
/*0x30*/ u8 flashLevel;
/*0x32*/ u16 mapLayoutId;
/*0x34*/ u16 mapView[0x100];
diff --git a/include/graphics.h b/include/graphics.h
index bfb57ccb9..79e231cf7 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -3911,6 +3911,11 @@ extern const u16 gIntro2BrendanNoTurnPal[];
extern const u16 gIntro2FlygonPal[];
extern const u32 gIntro2FlygonGfx[];
+// party menu graphics
+extern const u32 gPartyMenuMisc_Gfx[];
+extern const u32 gPartyMenuMisc_Tilemap[];
+extern const u8 gPartyMenuMisc_Pal[];
+
// berry pics
extern const u32 gBerryPic_Cheri[];
extern const u32 gBerryPalette_Cheri[];
@@ -4154,6 +4159,8 @@ extern const u32 gBattleAnimSpriteSheet_050[];
extern const u32 gBattleAnimSpriteSheet_051[];
extern const u32 gBattleAnimSpriteSheet_052[];
extern const u32 gBattleAnimSpriteSheet_053[];
+extern const u32 gUnknown_08C2EA50[];
+extern const u32 gUnknown_08C2EA9C[];
extern const u32 gBattleAnimSpriteSheet_054[];
extern const u32 gBattleAnimSpriteSheet_055[];
extern const u32 gBattleAnimSpriteSheet_056[];
@@ -4233,6 +4240,7 @@ extern const u32 gBattleAnimSpriteSheet_132[];
extern const u32 gBattleAnimSpriteSheet_133[];
extern const u32 gBattleAnimSpriteSheet_134[];
extern const u32 gBattleAnimSpriteSheet_135[];
+extern const u32 gBattleAnimSpriteSheet_Particles[];
extern const u32 gBattleAnimSpriteSheet_136[];
extern const u32 gBattleAnimSpriteSheet_137[];
extern const u32 gBattleAnimSpriteSheet_138[];
@@ -4371,6 +4379,9 @@ extern const u32 gBattleAnimSpriteSheet_280[];
extern const u32 gBattleAnimSpriteSheet_281[];
extern const u32 gBattleAnimSpriteSheet_282[];
extern const u32 gBattleAnimSpriteSheet_283[];
+extern const u32 gBattleAnimBackgroundTilemap_ScaryFacePlayer[];
+extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceOpponent[];
+extern const u32 gBattleAnimBackgroundTilemap_ScaryFaceContest[];
extern const u32 gBattleAnimSpriteSheet_284[];
extern const u32 gBattleAnimSpriteSheet_285[];
@@ -4583,10 +4594,15 @@ extern const u32 gBattleAnimSpritePalette_209[];
extern const u32 gBattleAnimSpritePalette_210[];
extern const u32 gBattleAnimSpritePalette_211[];
extern const u32 gBattleAnimSpritePalette_215[];
+extern const u32 gUnknown_08C249D0[];
+extern const u32 gUnknown_08C249F8[];
extern const u32 gBattleAnimSpritePalette_216[];
extern const u32 gBattleAnimSpritePalette_217[];
extern const u32 gBattleAnimSpritePalette_218[];
extern const u32 gBattleAnimSpritePalette_219[];
+extern const u32 gUnknown_08C232E0;
+extern const u32 gUnknown_08C23D50;
+extern const u32 gUnknown_08C23D78;
extern const u32 gBattleAnimSpritePalette_220[];
extern const u32 gBattleAnimSpritePalette_221[];
extern const u32 gBattleAnimSpritePalette_222[];
@@ -4610,6 +4626,9 @@ extern const u32 gBattleAnimSpritePalette_241[];
extern const u32 gBattleAnimSpritePalette_242[];
extern const u32 gBattleAnimSpritePalette_243[];
extern const u32 gBattleAnimSpritePalette_244[];
+extern const u8 gUnknown_08C2DC68[];
+extern const u16 gUnknown_08C2DDA4[];
+extern const u8 gUnknown_08C2DDC4[];
extern const u32 gBattleAnimSpritePalette_245[];
extern const u32 gBattleAnimSpritePalette_248[];
extern const u32 gBattleAnimSpritePalette_249[];
@@ -4688,6 +4707,9 @@ extern const u32 gBattleAnimBackgroundTilemap_07[];
extern const u32 gBattleAnimBackgroundTilemap_08[];
extern const u32 gBattleAnimBackgroundTilemap_09[];
extern const u32 gBattleAnimBackgroundTilemap_10[];
+extern const u32 gUnknown_08C2A634[];
+extern const u32 gUnknown_08C2A6D4[];
+extern const u32 gUnknown_08C2A6EC[];
extern const u32 gBattleAnimBackgroundTilemap_11[];
extern const u32 gBattleAnimBackgroundTilemap_12[];
extern const u32 gBattleAnimBackgroundTilemap_13[];
@@ -4719,6 +4741,13 @@ extern const u32 gUnknown_08C16FA8[];
extern const u32 gUnknown_08C16E90[];
extern const u32 gUnknown_08C17170[];
+extern const u32 gUnknown_08D95E00[];
+extern const u32 gUnknown_08D960D0[];
+extern const u32 gUnknown_08D963A4[];
+extern const u32 gBattleAnimBackgroundImage_Surf[];
+extern const u32 gBattleAnimBackgroundPalette_Surf[];
+extern const u32 gBattleAnimBackgroundImageMuddyWater_Pal[];
+
// Berry blender
extern const u32 gBerryBlenderArrowTiles[];
extern const u32 gBerryBlenderStartTiles[];
@@ -4754,4 +4783,12 @@ extern const u32 gWallpaperTiles_Horizontal[];
extern const u32 gWallpaperTilemap_Horizontal[];
extern const u16 gWallpaperPalettes_Horizontal[][16];
+// Cable Car
+extern const u32 gUnknown_08DBA5B8[];
+extern const u16 gUnknown_08DBA518[];
+extern const u32 gCableCar_Gfx[];
+extern const u32 gCableCarDoor_Gfx[];
+extern const u32 gCableCarCord_Gfx[];
+extern const u16 gCableCar_Pal[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 6214c69fc..a904208d9 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -1,6 +1,22 @@
#ifndef GUARD_item_menu_H
#define GUARD_item_menu_H
+#include "item.h"
+
+#define RETURN_LOCATION_FIELD 0
+#define RETURN_LOCATION_BATTLE 1
+#define RETURN_LOCATION_POKEMON_LIST 2
+#define RETURN_LOCATION_SHOP 3
+#define RETURN_LOCATION_FIELD_2 4
+#define RETURN_LOCATION_FIELD_3 5
+#define RETURN_LOCATION_PC 6
+#define RETURN_LOCATION_FIELD_4 7
+#define RETURN_LOCATION_FIELD_5 8
+#define RETURN_LOCATION_FIELD_6 9
+#define RETURN_LOCATION_BATTLE_2 10
+#define RETURN_LOCATION_PC_2 11
+#define RETURN_LOCATION_UNCHANGED 12
+
// Exported type declarations
struct BagStruct
{
@@ -8,18 +24,18 @@ struct BagStruct
u8 location;
u8 pocket;
u16 unk6;
- u16 cursorPosition[5];
- u16 scrollPosition[5];
+ u16 cursorPosition[POCKETS_COUNT];
+ u16 scrollPosition[POCKETS_COUNT];
};
extern struct BagStruct gUnknown_0203CE58;
struct UnkBagStruct
{
- void (*unk0)(void);
- u8 unk4[0x800];
- u8 unk804[12];
- u8 unk810[7];
+ void (*mainCallback2)(void);
+ u8 tilemapBuffer[0x800];
+ u8 spriteId[12];
+ u8 windowPointers[7];
u8 unk817;
u8 unk818;
u8 unk819;
@@ -27,7 +43,7 @@ struct UnkBagStruct
u8 unk81B:4;
u8 unk81B_1:2;
u8 unk81B_3:1;
- u8 unk81B_2:1;
+ u8 hideCloseBagText:1;
u8 filler3[2];
u8 unk81E;
u8 unk81F;
@@ -36,11 +52,11 @@ struct UnkBagStruct
u8 unk825;
u8 filler[2];
u8 unk828;
- u8 unk829[5];
- u8 unk82E[6];
+ u8 numItemStacks[POCKETS_COUNT];
+ u8 numShownItems[6];
s16 unk834;
u8 filler4[0xE];
- u8 unk844[32][32];
+ u8 pocketNameBuffer[32][32];
u8 filler2[4];
};
@@ -55,9 +71,10 @@ void sub_81AAC14(void);
void sub_81AAC50(void);
void sub_81AAC70(void);
void sub_81AAC28(void);
+void SetInitialScrollAndCursorPositions(u8 pocketId);
void bag_menu_mail_related(void);
void CB2_BagMenuFromStartMenu(void);
-u8 sub_81ABB2C(u8 pocketId);
+u8 GetItemListPosition(u8 pocketId);
bool8 UseRegisteredKeyItemOnField(void);
void CB2_GoToSellMenu(void);
void GoToBagMenu(u8 bagMenuType, u8 pocketId, void ( *postExitMenuMainCallback2)());
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 426565e56..e394e2611 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -2,6 +2,7 @@
#define GUARD_LINK_RFU_H
#include "librfu.h"
+#include "link.h"
// Exported type declarations
diff --git a/include/math_util.h b/include/math_util.h
new file mode 100755
index 000000000..6b0d42460
--- /dev/null
+++ b/include/math_util.h
@@ -0,0 +1,14 @@
+#ifndef GUARD_MATH_UTIL_H
+#define GUARD_MATH_UTIL_H
+
+s16 sub_8151534(s16 x, s16 y);
+s16 sub_8151550(u8 s, s16 x, s16 y);
+s32 sub_8151574(s32 x, s32 y);
+s16 sub_81515B0(s16 x, s16 y);
+s16 sub_81515D4(u8 s, s16 x, s16 y);
+s32 sub_81515FC(s32 x, s32 y);
+s16 sub_8151624(s16 y);
+s16 sub_815163C(u8 s, s16 y);
+s32 sub_815165C(s32 y);
+
+#endif // GUARD_MATH_UTIL_H
diff --git a/include/menu.h b/include/menu.h
index 198e7bd4a..04677ae40 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -36,6 +36,7 @@ u32 GetPlayerTextSpeed(void);
u8 GetPlayerTextSpeedDelay(void);
void sub_81978B0(u16 arg0);
void AddTextPrinterWithCallbackForMessage(bool8 a1, void (*callback)(struct TextPrinterTemplate *, u16));
+void sub_8199DF0(u32 bg, u8 a1, int a2, int a3);
void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 left, u8 top, const u8 *color, s8 speed, const u8 *str);
void sub_8198070(u8 windowId, bool8 copyToVram);
void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
@@ -91,5 +92,8 @@ void sub_8198204(const u8 *string, const u8 *string2, u8 a3, u8 a4, bool8 copyTo
void sub_8197AE8(bool8 copyToVram);
void sub_81997AC(u8 windowId, u8 a4, u8 a6, u8 a7, const struct MenuAction *strs);
s8 Menu_ProcessInputGridLayout(void);
+u8 InitMenuInUpperLeftCorner(u8 windowId, u8 itemCount, u8 initialCursorPos, bool8 APressMuted);
+s8 Menu_ProcessInputNoWrapAround_other(void);
+void sub_8199CBC(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
#endif // GUARD_MENU_H
diff --git a/include/overworld.h b/include/overworld.h
index 60d9d5133..1f53662b3 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -91,7 +91,7 @@ void Overworld_ClearSavedMusic(void);
void Overworld_ChangeMusicToDefault(void);
void Overworld_ChangeMusicTo(u16 newMusic);
u8 GetMapMusicFadeoutSpeed(void);
-void music_something(void);
+void TryFadeOutOldMapMusic(void);
bool8 BGMusicStopped(void);
void Overworld_FadeOutMapMusic(void);
void UpdateAmbientCry(s16 *state, u16 *delayCounter);
diff --git a/include/party_menu.h b/include/party_menu.h
index cb82eb82c..27a043cb6 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -1,6 +1,7 @@
#ifndef GUARD_PARTY_MENU_H
#define GUARD_PARTY_MENU_H
+#include "main.h"
#include "task.h"
enum
@@ -10,7 +11,9 @@ enum
AILMENT_PRZ,
AILMENT_SLP,
AILMENT_FRZ,
- AILMENT_BRN
+ AILMENT_BRN,
+ AILMENT_PKRS,
+ AILMENT_FNT
};
enum
@@ -23,18 +26,23 @@ enum
PARTY_GIVE_ITEM,
};
-struct Struct203CEC8
-{
- u8 filler[0x9];
+struct Struct203CEC8 {
+ MainCallback exitCallback;
+ TaskFunc unk4;
+ u8 unk8_0:4;
+ u8 mode:2;
+ u8 unk8_2:2;
s8 unk9;
s8 unkA;
u8 unkB;
- u8 filler2[0x2];
+ u16 unkC;
+ s16 unkE;
+ s16 unk10;
};
extern struct Struct203CEC8 gUnknown_0203CEC8;
-extern const u16 gUnknown_0861500C[];
+extern const u16 gUnknown_0861500C[]; // tutor table
bool8 pokemon_has_move(struct Pokemon *, u16);
void sub_81B58A8(void);
@@ -47,9 +55,9 @@ void sub_81B7F60(void);
void sub_81B0FCC(u8 partyIdx, u8 a);
void sub_81B1370(u8 taskId);
-void display_pokemon_menu_message(u8 windowId);
+void display_pokemon_menu_message(u32 windowId);
void sub_81B1F18(u8 taskId, u8 pokemonIdx, s8 a, s16 hp, TaskFunc func);
-void sub_81B1B5C(void *a, u8 b);
+u8 sub_81B1B5C(const u8 *a, u8 b);
u8 sub_81B1BD4(void);
void sub_81B8448(void);
void sub_81B8518(u8 unused);
@@ -62,13 +70,13 @@ void sub_81B617C(void);
u8 sub_81B6D14(u16 a);
bool8 hm_add_c3_without_phase_2(void);
-extern void dp05_ether(u8, u16, TaskFunc);
-extern void dp05_pp_up(u8, u16, TaskFunc);
-extern void dp05_rare_candy(u8, u16, TaskFunc);
+extern void dp05_ether(u8, TaskFunc);
+extern void dp05_pp_up(u8, TaskFunc);
+extern void dp05_rare_candy(u8, TaskFunc);
-extern void sub_81B67C8(u8, u16, TaskFunc);
-extern void sub_81B79E8(u8, u16, TaskFunc);
-extern void sub_81B6DC4(u8, u16, TaskFunc);
-extern void sub_81B7C74(u8, u16, TaskFunc);
+extern void sub_81B67C8(u8, TaskFunc);
+extern void sub_81B79E8(u8, TaskFunc);
+extern void sub_81B6DC4(u8, TaskFunc);
+extern void sub_81B7C74(u8, TaskFunc);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/player_pc.h b/include/player_pc.h
index bd060faa8..5a0b83683 100644
--- a/include/player_pc.h
+++ b/include/player_pc.h
@@ -84,5 +84,6 @@ extern const struct MenuAction gMailboxMailOptions[];
void ReshowPlayerPC(u8 taskId);
void sub_816B31C(void);
+void Mailbox_ReturnToMailListAfterDeposit(void);
#endif //GUARD_PLAYER_PC_H
diff --git a/include/pokedex.h b/include/pokedex.h
index 3f90e9508..b6d323fd3 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -4,6 +4,15 @@
extern u8 gUnknown_030060B0;
extern void (*gUnknown_030060B4)(void);
+#define HOENN_DEX_COUNT 202
+#define NATIONAL_DEX_COUNT 386
+
+enum
+{
+ DEX_MODE_HOENN,
+ DEX_MODE_NATIONAL
+};
+
enum
{
FLAG_GET_SEEN,
@@ -31,6 +40,6 @@ u16 GetNationalPokedexCount(u8);
u16 GetHoennPokedexCount(u8);
u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
-u16 sub_80C0E9C(u16, s16, s16, u16);
+u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16);
#endif // GUARD_POKEDEX_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 4f30e92ab..cfa5cc350 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -451,11 +451,11 @@ void CreateMaleMon(struct Pokemon *mon, u16 species, u8 level);
void CreateMonWithIVsPersonality(struct Pokemon *mon, u16 species, u8 level, u32 ivs, u32 personality);
void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u32 otId);
void CreateMonWithEVSpread(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 evSpread);
-void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src);
-void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lvl50);
+void sub_806819C(struct Pokemon *mon, struct BattleTowerPokemon *src);
+void sub_8068338(struct Pokemon *mon, struct BattleTowerPokemon *src, bool8 lvl50);
void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId);
void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
-void sub_80686FC(struct Pokemon *mon, struct UnknownPokemonStruct *dest);
+void sub_80686FC(struct Pokemon *mon, struct BattleTowerPokemon *dest);
void CreateObedientMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId);
bool8 sub_80688F8(u8 caseId, u8 battlerId);
void SetDeoxysStats(void);
@@ -557,7 +557,7 @@ u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
u8 GetNumberOfRelearnableMoves(struct Pokemon *mon);
u16 SpeciesToPokedexNum(u16 species);
-bool32 sub_806E3F8(u16 species);
+bool32 IsSpeciesInHoennDex(u16 species);
void ClearBattleMonForms(void);
u16 GetBattleBGM(void);
void PlayBattleBGM(void);
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 9d6e88685..4f27ef281 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -21,5 +21,7 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u
u8 UpdateMonIconFrame(struct Sprite *sprite);
void LoadMonIconPalette(u16 species);
void sub_80D328C(struct Sprite *sprite);
+void sub_80D3014(struct Sprite *sprite);
+void sub_80D32C8(struct Sprite *sprite, u8 animNum);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index afc0516b6..4b84856bb 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -52,7 +52,7 @@ struct BoxPokemon *GetBoxedMonPtr(u8 boxId, u8 boxPosition);
u8 *GetBoxNamePtr(u8 boxId);
u8 GetBoxWallpaper(u8 boxId);
void SetBoxWallpaper(u8 boxId, u8 wallpaperId);
-s16 sub_80D214C(struct BoxPokemon *boxMons, s8 currIndex, u8 maxIndex, u8 arg3);
+s16 sub_80D214C(struct BoxPokemon *boxMons, u8 currIndex, u8 maxIndex, u8 arg3);
bool8 CheckFreePokemonStorageSpace(void);
bool32 CheckBoxedMonSanity(u32 boxId, u32 boxPosition);
u32 CountStorageNonEggMons(void);
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index c08c581c3..34f7934e1 100755
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -7,6 +7,7 @@ void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex,
void sub_81C4F98(u8, void(*)(void));
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
+u8 sub_81C1B94(void);
// The Pokemon Summary Screen can operate in different modes. Certain features,
// such as move re-ordering, are available in the different modes.
diff --git a/include/pokenav.h b/include/pokenav.h
index 1fde8aa44..d8f0c9f97 100644
--- a/include/pokenav.h
+++ b/include/pokenav.h
@@ -36,5 +36,7 @@ u8 GetCurrentTrainerHillMapId(void);
u8 sub_81D6490(void);
const struct WarpEvent *sub_81D6120(void);
const struct WarpEvent *sub_81D6134(u8);
+void sub_81D3640(u16 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5);
+void sub_81D3784(u16 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4);
#endif //GUARD_POKENAV_H
diff --git a/include/region_map.h b/include/region_map.h
index 0c82232cf..ed1c1a201 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -107,6 +107,7 @@ u8 *sub_8124610(u8 *dest, u16 mapSecId);
u16 CorrectSpecialMapSecId(u16 mapSecId);
void sub_8122D88(struct RegionMap *regionMap);
void PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs(s16 x, s16 y);
+void MCB2_FlyMap(void);
extern const struct RegionMapLocation gRegionMapEntries[];
diff --git a/include/rom_8011DC0.h b/include/rom_8011DC0.h
index b6ca0e248..c1bdbdf34 100644
--- a/include/rom_8011DC0.h
+++ b/include/rom_8011DC0.h
@@ -5,11 +5,16 @@
// Exported RAM declarations
+extern struct UnkLinkRfuStruct_02022B14Substruct gUnknown_02022C38;
+extern u16 gUnknown_02022C3C;
+extern u8 gUnknown_02022C3E;
+
// Exported ROM declarations
void sub_8018438(void);
u16 mevent_081445C0(u8);
void sub_801B990(u32, u32);
u8 sub_8013F78(void);
+bool32 sub_802C908(u16);
#endif //GUARD_rom_8011DC0_H
diff --git a/include/scanline_effect.h b/include/scanline_effect.h
index eb837e7e2..5bd8b5546 100644
--- a/include/scanline_effect.h
+++ b/include/scanline_effect.h
@@ -3,6 +3,7 @@
// DMA control value to transfer a single 16-bit value at HBlank
#define SCANLINE_EFFECT_DMACNT_16BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_16BIT | DMA_DEST_RELOAD) << 16) | 1)
+#define SCANLINE_EFFECT_DMACNT_32BIT (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_INC | DMA_32BIT | DMA_DEST_RELOAD) << 16) | 1)
#define SCANLINE_EFFECT_REG_BG0HOFS (REG_ADDR_BG0HOFS - REG_ADDR_BG0HOFS)
#define SCANLINE_EFFECT_REG_BG0VOFS (REG_ADDR_BG0VOFS - REG_ADDR_BG0HOFS)
diff --git a/include/secret_base.h b/include/secret_base.h
index 4fa0d0c4a..ac15357e3 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -23,4 +23,12 @@ void sub_80EB9E0(void);
void sub_80EBB28(void);
void sub_80E9668(const struct MapPosition *position, const struct MapEvents *events);
+// SetCurrentSecretBaseFromPosition
+void sub_80E9608(const struct MapPosition *position, const struct MapEvents *events);
+// SetCurrentSecretBaseVar
+void sub_80E8B6C(void);
+void sub_80E8BC8(void);
+void sub_80E8D4C(void);
+void EnableBothScriptContexts(void);
+
#endif //GUARD_SECRET_BASE_H
diff --git a/include/strings.h b/include/strings.h
index 71392eb6a..eff40d8f2 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -140,6 +140,8 @@ extern const u8 gText_Cancel4[];
extern const u8 gText_IsThisTheCorrectTime[];
extern const u8 gText_PkmnFainted3[];
extern const u8 gText_Coins[];
+extern const u8 gText_Silver[];
+extern const u8 gText_Gold[];
extern const u8 gText_Var1AteTheVar2[];
extern const u8 gText_Var1HappilyAteVar2[];
@@ -399,6 +401,69 @@ extern const u8 gText_ThreeDashes[];
// party menu text
extern const u8 gText_PkmnHPRestoredByVar2[];
extern const u8 gText_CantBeUsedOnPkmn[];
+extern const u8 gText_CancelParticipation[];
+extern const u8 gText_PkmnWasGivenItem[];
+extern const u8 gText_RecievedItemFromPkmn[];
+extern const u8 gText_SwitchPkmnItem[];
+extern const u8 gText_SwitchedPkmnItem[];
+extern const u8 gText_BagFullCouldNotRemoveItem[];
+extern const u8 gText_PkmnCantParticipate[];
+extern const u8 gText_PkmnNotHolding[];
+extern const u8 gText_ThrowAwayItem[];
+extern const u8 gText_ItemThrownAway[];
+extern const u8 gText_SendMailToPC[];
+extern const u8 gText_MailSentToPC[];
+extern const u8 gText_PCMailboxFull[];
+extern const u8 gText_MailMessageWillBeLost[];
+extern const u8 gText_MailTakenFromPkmn[];
+extern const u8 gText_NoMoreThanVar1Pkmn[];
+extern const u8 gText_PkmnCantBeTradedNow[];
+extern const u8 gText_EggCantBeTradedNow[];
+extern const u8 gText_OnlyPkmnForBattle[];
+extern const u8 gJPText_PutVar1IntoSpinner[];
+extern const u8 gText_PauseUntilPress[];
+extern const u8 gText_CantUseUntilNewBadge[];
+extern const u8 gText_ReturnToHealingSpot[];
+extern const u8 gText_EscapeFromHere[];
+extern const u8 gText_PkmnCuredOfPoison[];
+extern const u8 gText_PkmnWokeUp2[];
+extern const u8 gText_PkmnBurnHealed[];
+extern const u8 gText_PkmnThawedOut[];
+extern const u8 gText_PkmnCuredOfParalysis[];
+extern const u8 gText_PkmnGotOverInfatuation[];
+extern const u8 gText_PkmnBecameHealthy[];
+extern const u8 gText_HP3[];
+extern const u8 gText_SpAtk3[];
+extern const u8 gText_SpDef3[];
+extern const u8 gText_PkmnBaseVar2StatIncreased[];
+extern const u8 gText_MovesPPIncreased[];
+extern const u8 gText_PPWasRestored[];
+extern const u8 gText_WontHaveEffect[];
+extern const u8 gText_PkmnSnappedOutOfConfusion[];
+extern const u8 gText_PkmnFriendlyBaseVar2Fell[];
+extern const u8 gText_PkmnFriendlyBaseVar2CantFall[];
+extern const u8 gText_PkmnAdoresBaseVar2Fell[];
+extern const u8 gText_PkmnAlreadyKnows[];
+extern const u8 gText_PkmnCantLearnMove[];
+extern const u8 gText_PkmnNeedsToReplaceMove[];
+extern const u8 gText_PkmnLearnedMove3[];
+extern const u8 gText_WhichMoveToForget[];
+extern const u8 gText_12PoofForgotMove[];
+extern const u8 gText_StopLearningMove2[];
+extern const u8 gText_MoveNotLearned[];
+extern const u8 gText_PkmnElevatedToLvVar2[];
+extern const u8 gText_RemoveMailBeforeItem[];
+extern const u8 gText_PkmnHoldingItemCantHoldMail[];
+extern const u8 gText_MailTransferredFromMailbox[];
+extern const u8 gText_CancelBattle[];
+extern const u8 gText_ReturnToWaitingRoom[];
+extern const u8 gText_CancelChallenge[];
+extern const u8 gText_CantSwitchWithAlly[];
+extern const u8 gText_PkmnHasNoEnergy[];
+extern const u8 gText_EggCantBattle[];
+extern const u8 gText_PkmnAlreadySelected[];
+extern const u8 gText_PkmnAlreadyInBattle[];
+extern const u8 gText_PkmnCantSwitchOut[];
//pokedex text
extern const u8 gText_CryOf[];
@@ -1226,6 +1291,7 @@ extern const u8 gText_SpaceAndSpace[];
extern const u8 gText_CommaSpace[];
extern const u8 gText_NewLine[];
extern const u8 gText_ScrollTextUp[];
+extern const u8 gText_Space[];
extern const u8 gText_Space2[];
extern const u8 gText_Are[];
extern const u8 gText_Are2[];
@@ -1275,6 +1341,338 @@ extern const u8 gText_082C8589[];
extern const u8 gText_082C85AE[];
extern const u8 gText_082C877B[];
+// Battle Tower.
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2479CE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248297[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2444D6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24459B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448CD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24529A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245CAC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E20[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245FC6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247749[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2453B4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2476ED[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246864[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247F3F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2484AC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248661[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2486FF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2469B4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D9E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244A23[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246662[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248321[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244F4F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B16[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2465B5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2481E1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247E7E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244549[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246244[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2468A7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2468FE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245A5F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24626E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244383[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246BE9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2462E4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F7B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247268[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244643[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EE9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D3F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247AA1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D6A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D4B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247348[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24522F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24617D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244989[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2470FD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C4E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24754A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C8C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248467[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2474AF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245BBD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24503D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248AC0[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24614A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244E5B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F2B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248553[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246741[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245656[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2480AB[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248725[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244939[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2471FB[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247291[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24589C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B3E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248614[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448F5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2445C5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B62[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24777A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2455EC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248031[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244AA9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245464[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2484E7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247313[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247470[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D82[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246529[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247238[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A18[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24597F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247DFE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FB7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E64[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247655[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244E7E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245535[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246FCC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2482DC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24808D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246AF7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24864E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247991[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246605[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B4C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2448A7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C05[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2456F5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246020[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24670A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24694B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2471C7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C5B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246449[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2452EF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B91[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F87[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246831[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247854[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D07[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246051[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2486C6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248401[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2450E6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248671[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2454D6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24662A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246EB6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244FD3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247484[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2460D5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24622A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244DC6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2485E5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248BB4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246DD3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244B52[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24896F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247629[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2454A3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2459BE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244413[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C90[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2446B4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244C18[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24610D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24838D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24633C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24758B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2458CE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E1A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EA1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248369[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245DC7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D97[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2483C1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248892[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2488D8[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247889[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24895F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2449E6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248781[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F21[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24707D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24818E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24568A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A10[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246791[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246571[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A4E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248431[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2462AA[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B3F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2473C6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2473FB[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245CE6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2445E8[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2487C9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D60[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24795F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B79[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247B9B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B2B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24451E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247807[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24636B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247DC7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246002[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247838[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248151[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24718D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2481A9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247942[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244D36[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246D2D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248751[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D07[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246B6B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244F98[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246BB2[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24705B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248BEE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24716C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2489BD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D07[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247724[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248908[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244618[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24468F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244C6E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246E39[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24856A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24894B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24824F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C66[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C22[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467C4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245406[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24737A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2474EC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FE9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247C23[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2480DC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24857D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B39[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E41[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245E78[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247D4E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24615D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248517[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245087[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2463C5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247AE3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245EEC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24885B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2470B2[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248B22[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467E6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24833D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248C2E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248221[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245196[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245740[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24480C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A22[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24555F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24712A[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A76[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247CB2[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2457D9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248128[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24631F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246CE9[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2482B1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244DFE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247013[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24790D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24581F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247A51[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24479E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2461C7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244ECA[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2466E6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2477CE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C2D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2487F7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2489E7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2478DD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248477[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244CD6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2466B4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24805E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247E3E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245923[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248829[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2461F5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24751D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2475BC[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245013[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2475D5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C35[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246686[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247438[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245D8D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247EB5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246F4C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2450C0[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245DF0[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24755C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24474D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2444EF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246082[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2464EE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2467FF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244EF4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247BE7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245EBD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24697C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246A85[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245F58[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245851[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A72[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2459F7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2443E7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245B3E[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248CCF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24444B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245C7F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246C6C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2472C7[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_245AB4[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24769B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248A40[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244BD2[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246760[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246CB3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247FA3[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_247F6D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248D04[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2463FF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246EEE[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244B93[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2446E5[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2469F1[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_2451BD[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_244AD6[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24738F[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_248AEB[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246478[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24760D[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24658C[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24692B[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_246ACF[];
+extern const u8 BattleFrontier_BattleTowerMultiBattleRoom_Text_24649D[];
+
// Battle Pyramid.
extern const u8 BattleFrontier_BattlePyramidEmptySquare_Text_252D2D[];
extern const u8 BattleFrontier_BattlePyramidEmptySquare_Text_252D57[];
diff --git a/include/trade.h b/include/trade.h
index af4da0015..e3c18bffd 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -1,6 +1,8 @@
#ifndef GUARD_TRADE_H
#define GUARD_TRADE_H
+#include "link_rfu.h"
+
// Exported type declarations
// Exported RAM declarations
@@ -10,5 +12,8 @@
s32 sub_807A728(void);
void sub_80773AC(void);
void sub_807AE50(void);
+int sub_807A8D0(u32 /* probably wrong */, u16, u16, u8);
+int sub_807A7E0(u32 /* probably wrong */, u32 /* probably wrong */, u16, u16, u16, u16, u8);
+int sub_807A918(struct Pokemon*, u16);
#endif //GUARD_TRADE_H