summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/battle_4.c24
-rw-r--r--src/battle/battle_controller_player.c41
-rw-r--r--src/battle/battle_controller_safari.c8
-rw-r--r--src/battle/battle_controller_wally.c8
-rw-r--r--src/battle/battle_message.c340
-rwxr-xr-xsrc/data/battle_strings_de.h1612
-rwxr-xr-xsrc/data/battle_strings_en.h1612
-rw-r--r--src/debug/matsuda_debug_menu.c250
-rw-r--r--src/debug/mori_debug_menu.c67
-rw-r--r--src/engine/cable_club.c21
-rw-r--r--src/engine/main_menu.c53
-rw-r--r--src/engine/reset_rtc_screen.c123
-rw-r--r--src/engine/text_window.c76
-rw-r--r--src/engine/tileset_anim.c425
-rw-r--r--src/field/battle_tower.c40
-rw-r--r--src/field/field_door.c411
-rw-r--r--src/field/field_specials.c2
-rw-r--r--src/field/fldeff_flash.c40
-rw-r--r--src/field/money.c49
-rw-r--r--src/field/tv.c368
-rw-r--r--src/pokemon/mon_markings.c4
-rw-r--r--src/pokemon/pokemon_3.c16
-rw-r--r--src/scene/evolution_scene.c16
23 files changed, 5234 insertions, 372 deletions
diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c
index 6f3be7804..cff81396d 100644
--- a/src/battle/battle_4.c
+++ b/src/battle/battle_4.c
@@ -81,7 +81,7 @@ extern u8 gBattleTextBuff3[];
extern u8 gLeveledUpInBattle;
extern void (*gBattleMainFunc)(void);
extern struct Window gUnknown_03004210;
-extern const u8 gUnknown_08400D7A[];
+extern const u8 BattleText_YesNo[];
extern u8 gPlayerPartyCount;
extern u16 gMoveToLearn; //move to learn
extern const u8 gTrainerMoney[];
@@ -10952,7 +10952,7 @@ void atk59_learnmove_inbattle(void)
void sub_8023A80(void)
{
sub_802BBD4(0x18, 8, 0x1D, 0xD, 0);
- InitWindow(&gUnknown_03004210, gUnknown_08400D7A, 0x100, 0x19, 0x9);
+ InitWindow(&gUnknown_03004210, BattleText_YesNo, 0x100, 0x19, 0x9);
sub_8002F44(&gUnknown_03004210);
sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20);
}
@@ -11660,7 +11660,7 @@ static void atk6C_lvlbox_display(void)
{
case 0:
sub_802BBD4(0xB, 0, 0x1D, 0x7, r1);
- StringCopy(gStringVar4, gUnknown_08400D9F);
+ StringCopy(gStringVar4, BattleText_Format2);
}
}
@@ -11670,7 +11670,7 @@ __attribute__((naked))
static void atk6C_lvlbox_display(void)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
+ push {r4-r7,lr}\n\
mov r7, r10\n\
mov r6, r9\n\
mov r5, r8\n\
@@ -11713,7 +11713,7 @@ _0802493E:\n\
movs r3, 0x7\n\
bl sub_802BBD4\n\
ldr r0, _0802499C @ =gStringVar4\n\
- ldr r1, _080249A0 @ =gUnknown_08400D9F\n\
+ ldr r1, _080249A0 @ =BattleText_Format2\n\
bl StringCopy\n\
adds r5, r0, 0\n\
movs r1, 0\n\
@@ -11752,7 +11752,7 @@ _0802495A:\n\
mov pc, r0\n\
.align 2, 0\n\
_0802499C: .4byte gStringVar4\n\
-_080249A0: .4byte gUnknown_08400D9F\n\
+_080249A0: .4byte BattleText_Format2\n\
_080249A4: .4byte gUnknown_0840165C\n\
_080249A8: .4byte gSharedMem\n\
_080249AC: .4byte 0x00016018\n\
@@ -11832,13 +11832,13 @@ _08024A2C:\n\
mov r0, r9\n\
cmp r0, 0\n\
beq _08024A5C\n\
- ldr r1, _08024A58 @ =gUnknown_08400DAC\n\
+ ldr r1, _08024A58 @ =BattleText_Dash\n\
b _08024A5E\n\
.align 2, 0\n\
_08024A54: .4byte gSharedMem + 0x17180\n\
-_08024A58: .4byte gUnknown_08400DAC\n\
+_08024A58: .4byte BattleText_Dash\n\
_08024A5C:\n\
- ldr r1, _08024AA4 @ =gUnknown_08400DAA\n\
+ ldr r1, _08024AA4 @ =BattleText_Plus\n\
_08024A5E:\n\
adds r0, r5, 0\n\
bl StringCopy\n\
@@ -11874,7 +11874,7 @@ _08024A5E:\n\
adds r5, 0x1\n\
b _08024AB8\n\
.align 2, 0\n\
-_08024AA4: .4byte gUnknown_08400DAA\n\
+_08024AA4: .4byte BattleText_Plus\n\
_08024AA8:\n\
strb r6, [r5]\n\
movs r0, 0x11\n\
@@ -11921,7 +11921,7 @@ _08024AFE:\n\
movs r0, 0x5\n\
bl PlaySE\n\
ldr r0, _08024B98 @ =gStringVar4\n\
- ldr r1, _08024B9C @ =gUnknown_08400D9F\n\
+ ldr r1, _08024B9C @ =BattleText_Format2\n\
bl StringCopy\n\
adds r5, r0, 0\n\
movs r0, 0\n\
@@ -11992,7 +11992,7 @@ _08024B1C:\n\
.align 2, 0\n\
_08024B94: .4byte gMain\n\
_08024B98: .4byte gStringVar4\n\
-_08024B9C: .4byte gUnknown_08400D9F\n\
+_08024B9C: .4byte BattleText_Format2\n\
_08024BA0: .4byte 0x00016018\n\
_08024BA4: .4byte gUnknown_0840165C\n\
_08024BA8: .4byte gPlayerParty\n\
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index 1aa73e90c..f2004c9b7 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -78,9 +78,9 @@ extern u16 gUnknown_030042C0;
extern u8 gUnknown_03004344;
extern u8 gUnknown_0300434C[];
-extern const u8 gUnknown_08400CA8[];
-extern const u8 gUnknown_08400CF3[];
-extern const u8 gUnknown_08400D38[];
+extern const u8 BattleText_OtherMenu[];
+extern const u8 BattleText_MenuOptions[];
+extern const u8 BattleText_PP[];
extern void sub_802C68C(void);
extern void sub_802E1B0(void);
@@ -152,7 +152,7 @@ extern u16 gBattlePartyID[];
extern u16 gUnknown_030042A0;
extern u16 gUnknown_030042A4;
extern struct Window gUnknown_03004210;
-extern const u8 gUnknown_08400D89[];
+extern const u8 BattleText_SwitchWhich[];
extern u8 gUnknown_03004348;
extern struct BattlePokemon gBattleMons[];
extern MainCallback gPreBattleCallback1;
@@ -164,7 +164,7 @@ extern u8 gUnknown_0202E8F5;
extern u8 gUnknown_02038470[];
extern u16 gScriptItemId;
extern u8 gDisplayedStringBattle[];
-extern const u8 gUnknown_08400CE0[];
+extern const u8 BattleText_LinkStandby[];
extern void dp11b_obj_instanciate(u8, u8, s8, s8);
extern u8 GetBankIdentity(u8);
@@ -746,15 +746,14 @@ void sub_802C68C(void)
gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1;
sub_802E3B4(gUnknown_03004344, 27);
FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- InitWindow(&gUnknown_03004210, gUnknown_08400D89, 0x290, 0x17, 0x37);
+ InitWindow(&gUnknown_03004210, BattleText_SwitchWhich, 0x290, 0x17, 0x37);
sub_8002F44(&gUnknown_03004210);
gBattleBankFunc[gActiveBank] = sub_802CA60;
}
}
}
-extern const u8 gUnknown_08400D49[];
-extern const u8 gUnknown_08400D38[];
+extern const u8 BattleText_Format[];
void sub_802CA60(void)
{
@@ -850,13 +849,13 @@ void sub_802CA60(void)
}
else
{
- sub_802E12C(gUnknown_03004344, gUnknown_08400D49);
+ sub_802E12C(gUnknown_03004344, BattleText_Format);
}
gBattleBankFunc[gActiveBank] = sub_802C68C;
gMoveSelectionCursor[gActiveBank] = gUnknown_03004344;
sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37);
+ InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37);
sub_8002F44(&gUnknown_03004210);
sub_802E220();
sub_802E2D4();
@@ -866,10 +865,10 @@ void sub_802CA60(void)
PlaySE(SE_SELECT);
nullsub_7(gUnknown_03004344);
sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
- sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_08400D49);
+ sub_802E12C(gMoveSelectionCursor[gActiveBank], BattleText_Format);
gBattleBankFunc[gActiveBank] = sub_802C68C;
FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37);
+ InitWindow(&gUnknown_03004210, BattleText_PP, 0x290, 0x17, 0x37);
sub_8002F44(&gUnknown_03004210);
sub_802E220();
sub_802E2D4();
@@ -1578,7 +1577,7 @@ void sub_802E1B0(void)
for (i = 0; i < 4; i++)
{
nullsub_7(i);
- sub_802E12C(i, gUnknown_08400D49);
+ sub_802E12C(i, BattleText_Format);
if (r4->moves[i] != 0)
gUnknown_03004348++;
}
@@ -1591,7 +1590,7 @@ void sub_802E220(void)
struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
u8 *str = gDisplayedStringBattle;
- str = StringCopy(str, gUnknown_08400D49);
+ str = StringCopy(str, BattleText_Format);
str[0] = EXT_CTRL_CODE_BEGIN;
str[1] = 0x11;
str[2] = 2;
@@ -1608,7 +1607,7 @@ void sub_802E220(void)
}
}
-extern const u8 gUnknown_08400D52[];
+extern const u8 BattleText_ForgetMove[];
extern const u8 gTypeNames[][7];
void sub_802E2D4(void)
@@ -1616,14 +1615,14 @@ void sub_802E2D4(void)
if (gBattleBufferA[gActiveBank][2] == 1)
{
FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
- InitWindow(&gUnknown_03004210, gUnknown_08400D52, 0x290, 0x13, 0x37);
+ InitWindow(&gUnknown_03004210, BattleText_ForgetMove, 0x290, 0x13, 0x37);
}
else
{
struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
u8 *str = gDisplayedStringBattle;
- str = StringCopy(str, gUnknown_08400D49);
+ str = StringCopy(str, BattleText_Format);
StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]);
FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A);
InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39);
@@ -1699,7 +1698,7 @@ void b_link_standby_message(void)
{
gUnknown_030042A4 = 0;
gUnknown_030042A0 = 0;
- sub_8002EB0(&gUnknown_03004210, gUnknown_08400CE0, 0x90, 2, 15);
+ sub_8002EB0(&gUnknown_03004210, BattleText_LinkStandby, 0x90, 2, 15);
}
}
@@ -2587,7 +2586,7 @@ void PlayerHandlecmd18(void)
gBattleBankFunc[gActiveBank] = sub_802C098;
- InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35);
+ InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
sub_8002F44(&gUnknown_03004210);
sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
@@ -2596,7 +2595,7 @@ void PlayerHandlecmd18(void)
sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
- StrCpyDecodeToDisplayedStringBattle(gUnknown_08400CA8);
+ StrCpyDecodeToDisplayedStringBattle(BattleText_OtherMenu);
InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35);
sub_8002F44(&gUnknown_03004210);
}
@@ -2621,7 +2620,7 @@ void sub_80304A8(void)
sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
if (gBattleBufferA[gActiveBank][2] != 1)
{
- InitWindow(&gUnknown_03004210, gUnknown_08400D38, 656, 23, 55);
+ InitWindow(&gUnknown_03004210, BattleText_PP, 656, 23, 55);
sub_8002F44(&gUnknown_03004210);
}
sub_802E220();
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
index 5b89cf9ba..8a8515fc7 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle/battle_controller_safari.c
@@ -18,9 +18,9 @@ extern struct Window gUnknown_03004210;
extern u8 gDisplayedStringBattle[];
extern u8 gActionSelectionCursor[];
-extern const u8 gUnknown_08400CBB[];
+extern const u8 BattleText_PlayerMenu[];
extern u8 gActiveBank;
-extern const u8 gUnknown_08400D15[];
+extern const u8 BattleText_MenuOptionsSafari[];
extern void *gBattleBankFunc[];
extern u16 gUnknown_030042A0;
@@ -476,7 +476,7 @@ void SafariHandlecmd18(void)
FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2;
- InitWindow(&gUnknown_03004210, gUnknown_08400D15, 400, 18, 35);
+ InitWindow(&gUnknown_03004210, BattleText_MenuOptionsSafari, 400, 18, 35);
sub_8002F44(&gUnknown_03004210);
sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
@@ -484,7 +484,7 @@ void SafariHandlecmd18(void)
nullsub_8(i);
sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
- StrCpyDecodeToDisplayedStringBattle(gUnknown_08400CBB);
+ StrCpyDecodeToDisplayedStringBattle(BattleText_PlayerMenu);
InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35);
sub_8002F44(&gUnknown_03004210);
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
index 9392832d7..05fd8e583 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle/battle_controller_wally.c
@@ -57,8 +57,8 @@ extern struct Window gUnknown_03004210;
extern u16 gUnknown_030042A0;
extern u16 gUnknown_030042A4;
extern u8 gUnknown_0300434C[];
-extern const u8 gUnknown_08400CCC[];
-extern const u8 gUnknown_08400CF3[];
+extern const u8 BattleText_WallyMenu[];
+extern const u8 BattleText_MenuOptions[];
// TODO: include rom3.h when my other PR gets merged
extern void Emitcmd33(u8, u8, u16);
@@ -1269,13 +1269,13 @@ void WallyHandlecmd18(void)
FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
gBattleBankFunc[gActiveBank] = sub_81372BC;
- InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35);
+ InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
sub_8002F44(&gUnknown_03004210);
sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
for (i = 0; i < 4; i++)
nullsub_8(i);
sub_802E3E4(0, 0);
- StrCpyDecodeToDisplayedStringBattle(gUnknown_08400CCC);
+ StrCpyDecodeToDisplayedStringBattle(BattleText_WallyMenu);
#ifdef ENGLISH
InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35);
#else
diff --git a/src/battle/battle_message.c b/src/battle/battle_message.c
index 4e8067a49..eac92a78d 100644
--- a/src/battle/battle_message.c
+++ b/src/battle/battle_message.c
@@ -18,6 +18,136 @@
#define BATTLESTRINGS_NO 351
#define BATTLESTRINGS_MAX BATTLESTRINGS_NO + BATTLESTRING_TO_SUB
+#ifdef GERMAN
+#include "../data/battle_strings_de.h" // TODO: German
+#else
+#include "../data/battle_strings_en.h"
+#endif
+
+const u16 gUnknown_084016BC[] =
+{
+ MOVE_SWORDS_DANCE,
+ MOVE_STRENGTH,
+ MOVE_GROWTH,
+ MOVE_HARDEN,
+ MOVE_MINIMIZE,
+ MOVE_SMOKESCREEN,
+ MOVE_WITHDRAW,
+ MOVE_DEFENSE_CURL,
+ MOVE_EGG_BOMB,
+ MOVE_SMOG,
+ MOVE_BONE_CLUB,
+ MOVE_FLASH,
+ MOVE_SPLASH,
+ MOVE_ACID_ARMOR,
+ MOVE_BONEMERANG,
+ MOVE_REST,
+ MOVE_SHARPEN,
+ MOVE_SUBSTITUTE,
+ MOVE_MIND_READER,
+ MOVE_SNORE,
+ MOVE_PROTECT,
+ MOVE_SPIKES,
+ MOVE_ENDURE,
+ MOVE_ROLLOUT,
+ MOVE_SWAGGER,
+ MOVE_SLEEP_TALK,
+ MOVE_HIDDEN_POWER,
+ MOVE_PSYCH_UP,
+ MOVE_EXTREME_SPEED,
+ MOVE_FOLLOW_ME,
+ MOVE_TRICK,
+ MOVE_ASSIST,
+ MOVE_INGRAIN,
+ MOVE_KNOCK_OFF,
+ MOVE_CAMOUFLAGE,
+ MOVE_ASTONISH,
+ MOVE_ODOR_SLEUTH,
+ MOVE_GRASS_WHISTLE,
+ MOVE_SHEER_COLD,
+ MOVE_MUDDY_WATER,
+ MOVE_IRON_DEFENSE,
+ MOVE_BOUNCE,
+ MOVE_NONE,
+ MOVE_TELEPORT,
+ MOVE_RECOVER,
+ MOVE_BIDE,
+ MOVE_AMNESIA,
+ MOVE_FLAIL,
+ MOVE_TAUNT,
+ MOVE_BULK_UP,
+ MOVE_NONE,
+ MOVE_MEDITATE,
+ MOVE_AGILITY,
+ MOVE_MIMIC,
+ MOVE_DOUBLE_TEAM,
+ MOVE_BARRAGE,
+ MOVE_TRANSFORM,
+ MOVE_STRUGGLE,
+ MOVE_SCARY_FACE,
+ MOVE_CHARGE,
+ MOVE_WISH,
+ MOVE_BRICK_BREAK,
+ MOVE_YAWN,
+ MOVE_FEATHER_DANCE,
+ MOVE_TEETER_DANCE,
+ MOVE_MUD_SPORT,
+ MOVE_FAKE_TEARS,
+ MOVE_WATER_SPORT,
+ MOVE_CALM_MIND,
+ MOVE_NONE,
+ MOVE_POUND,
+ MOVE_SCRATCH,
+ MOVE_VICE_GRIP,
+ MOVE_WING_ATTACK,
+ MOVE_FLY,
+ MOVE_BIND,
+ MOVE_SLAM,
+ MOVE_HORN_ATTACK,
+ MOVE_WRAP,
+ MOVE_THRASH,
+ MOVE_TAIL_WHIP,
+ MOVE_LEER,
+ MOVE_BITE,
+ MOVE_GROWL,
+ MOVE_ROAR,
+ MOVE_SING,
+ MOVE_PECK,
+ MOVE_ABSORB,
+ MOVE_STRING_SHOT,
+ MOVE_EARTHQUAKE,
+ MOVE_FISSURE,
+ MOVE_DIG,
+ MOVE_TOXIC,
+ MOVE_SCREECH,
+ MOVE_METRONOME,
+ MOVE_LICK,
+ MOVE_CLAMP,
+ MOVE_CONSTRICT,
+ MOVE_POISON_GAS,
+ MOVE_BUBBLE,
+ MOVE_SLASH,
+ MOVE_SPIDER_WEB,
+ MOVE_NIGHTMARE,
+ MOVE_CURSE,
+ MOVE_FORESIGHT,
+ MOVE_CHARM,
+ MOVE_ATTRACT,
+ MOVE_ROCK_SMASH,
+ MOVE_UPROAR,
+ MOVE_SPIT_UP,
+ MOVE_SWALLOW,
+ MOVE_TORMENT,
+ MOVE_FLATTER,
+ MOVE_ROLE_PLAY,
+ MOVE_ENDEAVOR,
+ MOVE_TICKLE,
+ MOVE_COVET,
+ MOVE_NONE,
+};
+
+const u8 gUnknown_084017A8[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // empty flags
+
extern const u8* const gBattleStringsTable[BATTLESTRINGS_NO];
extern u16 gLastUsedItem;
@@ -44,67 +174,6 @@ extern u16 gBattlePartyID[4];
extern struct BattleEnigmaBerry gEnigmaBerries[4];
extern u8 gBattleBufferA[4][0x200];
-extern const u8 gUnknown_084005DB[];
-extern const u8 gUnknown_084005C7[];
-extern const u8 gUnknown_084005AA[];
-extern const u8 gUnknown_08400568[];
-extern const u8 gUnknown_08400590[];
-extern const u8 gUnknown_0840057B[];
-extern const u8 gUnknown_08400555[];
-extern const u8 gUnknown_084006F1[];
-extern const u8 gUnknown_084006A4[];
-extern const u8 gUnknown_0840069C[];
-extern const u8 gUnknown_0840065C[];
-extern const u8 gUnknown_08400645[];
-extern const u8 gUnknown_08400608[];
-extern const u8 gUnknown_08400635[];
-extern const u8 gUnknown_084005F5[];
-extern const u8 gUnknown_08400709[];
-extern const u8 gUnknown_08400727[];
-extern const u8 gUnknown_08400736[];
-extern const u8 gUnknown_08400749[];
-extern const u8 gUnknown_08400781[];
-extern const u8 gUnknown_08400771[];
-extern const u8 gUnknown_0840075E[];
-extern const u8 gUnknown_084006B3[];
-extern const u8 gUnknown_084006BB[];
-extern const u8 gUnknown_084006C6[];
-extern const u8 gUnknown_084006D5[];
-extern const u8 gUnknown_0840068C[];
-extern const u8 gUnknown_0840067C[];
-extern const u8 gUnknown_08400622[];
-extern const u8 gUnknown_084007BD[];
-extern const u8 gUnknown_083FFEFC[];
-extern const u8 gUnknown_083FFFF7[];
-extern const u8 gUnknown_083FFFEA[];
-extern const u8 gUnknown_083FFF6A[];
-extern const u8 gUnknown_083FFF99[];
-extern const u8 gUnknown_083FFFCB[];
-extern const u8 gUnknown_083FFF56[];
-extern const u8 gUnknown_083FFF81[];
-extern const u8 gUnknown_083FFFB3[];
-extern const u8 gUnknown_08400A78[];
-extern const u8 gUnknown_08400A85[];
-extern const u8 gUnknown_08400797[];
-extern const u8 gUnknown_08400791[];
-extern const u8 gUnknown_084007B7[];
-extern const u8 gUnknown_084007B2[];
-extern const u8 gUnknown_0840079C[];
-extern const u8 gUnknown_084007A1[];
-extern const u8 gUnknown_084007A7[];
-extern const u8 gUnknown_084007AC[];
-extern const u8 gUnknown_084009ED[];
-extern const u8 gUnknown_084009F7[];
-extern const u8 gUnknown_084007C8[];
-extern const u8 gUnknown_084007CA[];
-extern const u8 gUnknown_084007CC[];
-extern const u8 gUnknown_084007CE[];
-extern const u8 gUnknown_084007D0[];
-extern const u8 gUnknown_08400E5E[];
-extern const u8 gUnknown_08400E62[];
-
-extern const u16 gUnknown_084016BC[]; // a table of moves
-
extern const u8* const gUnknown_08401674[]; // table of pointers to 'a -TYPE' strings
extern const u8* const gUnknown_08400F58[]; // table of pointers to stat strings
extern const u8* const gUnknown_08400F78[]; // table of pointers to flavour strings
@@ -116,7 +185,6 @@ struct StatusFlagString
};
extern const struct StatusFlagString gUnknown_081FA6D4[7]; // status flag/text
-extern const u8 gUnknown_084017A8[8]; // empty flags
extern struct StringInfoBattle* gSelectedOrderFromParty;
#define gStringInfo gSelectedOrderFromParty
@@ -168,13 +236,13 @@ void BufferStringBattle(u16 stringID)
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- stringPtr = gUnknown_084005DB;
+ stringPtr = BattleText_DoubleWantToBattle;
else
- stringPtr = gUnknown_084005C7;
+ stringPtr = BattleText_SingleWantToBattle2;
}
else
{
- stringPtr = gUnknown_084005AA;
+ stringPtr = BattleText_SingleWantToBattle1;
#ifdef GERMAN
stringPtr = de_sub_804110C(0xFFFF, stringPtr);
#endif
@@ -183,13 +251,13 @@ void BufferStringBattle(u16 stringID)
else
{
if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
- stringPtr = gUnknown_08400568;
+ stringPtr = BattleText_WildAppeared2;
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles
- stringPtr = gUnknown_08400590;
+ stringPtr = BattleText_WildDoubleAppeared;
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
- stringPtr = gUnknown_0840057B;
+ stringPtr = BattleText_WildAppeared3;
else
- stringPtr = gUnknown_08400555;
+ stringPtr = BattleText_WildAppeared1;
}
break;
case 1: // poke first send-out
@@ -198,34 +266,34 @@ void BufferStringBattle(u16 stringID)
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- stringPtr = gUnknown_084006F1;
+ stringPtr = BattleText_SentOutSingle11;
else
- stringPtr = gUnknown_084006A4;
+ stringPtr = BattleText_SentOutDouble4;
}
else
- stringPtr = gUnknown_0840069C;
+ stringPtr = BattleText_SentOutSingle6;
}
else
{
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- stringPtr = gUnknown_0840065C;
+ stringPtr = BattleText_SentOutDouble3;
else if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- stringPtr = gUnknown_08400645;
+ stringPtr = BattleText_SentOutDouble2;
else
{
- stringPtr = gUnknown_08400608;
+ stringPtr = BattleText_SentOutDouble1;
#ifdef GERMAN
stringPtr = de_sub_804110C(0xFFFF, stringPtr);
#endif
}
}
else if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- stringPtr = gUnknown_08400635;
+ stringPtr = BattleText_SentOutSingle3;
else
{
- stringPtr = gUnknown_084005F5;
+ stringPtr = BattleText_SentOutSingle1;
#ifdef GERMAN
stringPtr = de_sub_804110C(0xFFFF, stringPtr);
#endif
@@ -236,26 +304,26 @@ void BufferStringBattle(u16 stringID)
if (GetBankSide(gActiveBank) == 0)
{
if (BATTLE_STRUCT->hpScale == 0)
- stringPtr = gUnknown_08400709;
+ stringPtr = BattleText_ComeBackSingle1;
else if (BATTLE_STRUCT->hpScale == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- stringPtr = gUnknown_08400727;
+ stringPtr = BattleText_ComeBackSingle2;
else if (BATTLE_STRUCT->hpScale == 2)
- stringPtr = gUnknown_08400736;
+ stringPtr = BattleText_ComeBackSingle3;
else
- stringPtr = gUnknown_08400749;
+ stringPtr = BattleText_ComeBackSingle4;
}
else
{
if (gTrainerBattleOpponent == 0x800)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- stringPtr = gUnknown_08400781;
+ stringPtr = BattleText_WithdrewPoke3;
else
- stringPtr = gUnknown_08400771;
+ stringPtr = BattleText_WithdrewPoke2;
}
else
{
- stringPtr = gUnknown_0840075E;
+ stringPtr = BattleText_WithdrewPoke1;
#ifdef GERMAN
stringPtr = de_sub_804110C(0xFFFF, stringPtr);
#endif
@@ -266,26 +334,26 @@ void BufferStringBattle(u16 stringID)
if (GetBankSide(BATTLE_STRUCT->scriptingActive) == 0)
{
if (BATTLE_STRUCT->hpScale == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- stringPtr = gUnknown_084006B3;
+ stringPtr = BattleText_SentOutSingle7;
else if (BATTLE_STRUCT->hpScale == 1)
- stringPtr = gUnknown_084006BB;
+ stringPtr = BattleText_SentOutSingle8;
else if (BATTLE_STRUCT->hpScale == 2)
- stringPtr = gUnknown_084006C6;
+ stringPtr = BattleText_SentOutSingle9;
else
- stringPtr = gUnknown_084006D5;
+ stringPtr = BattleText_SentOutSingle10;
}
else
{
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- stringPtr = gUnknown_0840068C;
+ stringPtr = BattleText_SentOutSingle5;
else
- stringPtr = gUnknown_0840067C;
+ stringPtr = BattleText_SentOutSingle4;
}
else
{
- stringPtr = gUnknown_08400622;
+ stringPtr = BattleText_SentOutSingle2;
#ifdef GERMAN
stringPtr = de_sub_804110C(0xFFFF, stringPtr);
#endif
@@ -299,7 +367,7 @@ void BufferStringBattle(u16 stringID)
else
StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]);
sub_8121D74(gBattleTextBuff2);
- stringPtr = gUnknown_084007BD;
+ stringPtr = BattleText_OpponentUsedMove;
break;
case 5: // battle end
if (gBattleTextBuff1[0] & 0x80)
@@ -308,13 +376,13 @@ void BufferStringBattle(u16 stringID)
if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3)
gBattleTextBuff1[0] ^= 3;
if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW)
- stringPtr = gUnknown_083FFEFC;
+ stringPtr = BattleText_GotAwaySafely;
else
{
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- stringPtr = gUnknown_083FFFF7;
+ stringPtr = BattleText_FledDouble;
else
- stringPtr = gUnknown_083FFFEA;
+ stringPtr = BattleText_FledSingle;
}
}
else
@@ -326,13 +394,13 @@ void BufferStringBattle(u16 stringID)
switch (gBattleTextBuff1[0])
{
case BATTLE_WON:
- stringPtr = gUnknown_083FFF6A;
+ stringPtr = BattleText_PlayerDefeatedTrainers;
break;
case BATTLE_LOST:
- stringPtr = gUnknown_083FFF99;
+ stringPtr = BattleText_PlayerLostTrainers;
break;
case BATTLE_DREW:
- stringPtr = gUnknown_083FFFCB;
+ stringPtr = BattleText_PlayerTiedTrainers;
break;
}
}
@@ -341,13 +409,13 @@ void BufferStringBattle(u16 stringID)
switch (gBattleTextBuff1[0])
{
case BATTLE_WON:
- stringPtr = gUnknown_083FFF56;
+ stringPtr = BattleText_PlayerDefeatedTrainer;
break;
case BATTLE_LOST:
- stringPtr = gUnknown_083FFF81;
+ stringPtr = BattleText_PlayerLostTrainer;
break;
case BATTLE_DREW:
- stringPtr = gUnknown_083FFFB3;
+ stringPtr = BattleText_PlayerTiedTrainer;
break;
}
}
@@ -414,9 +482,9 @@ extern u8 *de_sub_8041024(s32, u32);
if (GetBankSide(bank) != 0) \
{ \
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
- toCpy = gUnknown_08400797; \
+ toCpy = BattleText_Foe; \
else \
- toCpy = gUnknown_08400791; \
+ toCpy = BattleText_Wild; \
while (*toCpy != EOS) \
{ \
dst[dstID] = *toCpy; \
@@ -445,9 +513,9 @@ extern u8 *de_sub_8041024(s32, u32);
toCpy++; \
} \
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
- toCpy = gUnknown_08400797; \
+ toCpy = BattleText_Foe; \
else \
- toCpy = gUnknown_08400791; \
+ toCpy = BattleText_Wild; \
} \
else \
{ \
@@ -590,14 +658,14 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
{
StringCopy(text, gEnigmaBerries[gStringBank].name);
#ifdef ENGLISH
- StringAppend(text, gUnknown_08400A85);
+ StringAppend(text, BattleText_Berry);
#else
- de_sub_8073174(text, gUnknown_08400A85);
+ de_sub_8073174(text, BattleText_Berry);
#endif
toCpy = text;
}
else
- toCpy = gUnknown_08400A78;
+ toCpy = BattleText_EnigmaBerry;
}
else
{
@@ -694,45 +762,45 @@ u32 StrCpyDecodeBattle(const u8* src, u8* dst)
break;
case 35: // lanette pc
if (FlagGet(SYS_PC_LANETTE))
- toCpy = gUnknown_084009F7;
+ toCpy = BattleText_Lanette;
else
- toCpy = gUnknown_084009ED;
+ toCpy = BattleText_Someone;
break;
case 38:
if (GetBankSide(gBankAttacker) == 0)
- toCpy = gUnknown_084007AC;
+ toCpy = BattleText_Ally2;
else
- toCpy = gUnknown_084007A7;
+ toCpy = BattleText_Foe3;
break;
case 39:
if (GetBankSide(gBankTarget) == 0)
- toCpy = gUnknown_084007AC;
+ toCpy = BattleText_Ally2;
else
- toCpy = gUnknown_084007A7;
+ toCpy = BattleText_Foe3;
break;
case 36:
if (GetBankSide(gBankAttacker) == 0)
- toCpy = gUnknown_084007A1;
+ toCpy = BattleText_Ally;
else
- toCpy = gUnknown_0840079C;
+ toCpy = BattleText_Foe2;
break;
case 37:
if (GetBankSide(gBankTarget) == 0)
- toCpy = gUnknown_084007A1;
+ toCpy = BattleText_Ally;
else
- toCpy = gUnknown_0840079C;
+ toCpy = BattleText_Foe2;
break;
case 40:
if (GetBankSide(gBankAttacker) == 0)
- toCpy = gUnknown_084007B7;
+ toCpy = BattleText_Ally3;
else
- toCpy = gUnknown_084007B2;
+ toCpy = BattleText_Foe4;
break;
case 41:
if (GetBankSide(gBankTarget) == 0)
- toCpy = gUnknown_084007B7;
+ toCpy = BattleText_Ally3;
else
- toCpy = gUnknown_084007B2;
+ toCpy = BattleText_Foe4;
break;
}
//if (toCpy != NULL) really GF, why did you forget about this?
@@ -819,9 +887,9 @@ void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
else
{
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- StringAppend(dst, gUnknown_08400797);
+ StringAppend(dst, BattleText_Foe);
else
- StringAppend(dst, gUnknown_08400791);
+ StringAppend(dst, BattleText_Wild);
GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
}
StringGetEnd10(text);
@@ -839,9 +907,9 @@ void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
StringGetEnd10(text);
StringAppend(dst, text);
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- StringAppend(dst, gUnknown_08400797);
+ StringAppend(dst, BattleText_Foe);
else
- StringAppend(dst, gUnknown_08400791);
+ StringAppend(dst, BattleText_Wild);
}
#endif
srcID += 3;
@@ -881,13 +949,13 @@ void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
{
StringCopy(dst, gEnigmaBerries[gStringBank].name);
#ifdef ENGLISH
- StringAppend(dst, gUnknown_08400A85);
+ StringAppend(dst, BattleText_Berry);
#else
- de_sub_8073174(dst, gUnknown_08400A85);
+ de_sub_8073174(dst, BattleText_Berry);
#endif
}
else
- StringAppend(dst, gUnknown_08400A78);
+ StringAppend(dst, BattleText_EnigmaBerry);
}
else
CopyItemName(hword, dst);
@@ -917,9 +985,9 @@ void sub_8121D1C(u8* textBuff)
if (counter >= 0)
{
if (counter <= 2)
- StringCopy(textBuff, gUnknown_08400E5E); // is
+ StringCopy(textBuff, BattleText_Format10); // is
else if (counter <= 4)
- StringCopy(textBuff, gUnknown_08400E62); // 's
+ StringCopy(textBuff, BattleText_Format11); // 's
}
}
@@ -942,19 +1010,19 @@ void sub_8121D74(u8* dst)
switch (counter)
{
case 0:
- StringCopy(dst, gUnknown_084007C8);
+ StringCopy(dst, BattleText_Exclamation2);
break;
case 1:
- StringCopy(dst, gUnknown_084007CA);
+ StringCopy(dst, BattleText_Exclamation3);
break;
case 2:
- StringCopy(dst, gUnknown_084007CC);
+ StringCopy(dst, BattleText_Exclamation4);
break;
case 3:
- StringCopy(dst, gUnknown_084007CE);
+ StringCopy(dst, BattleText_Exclamation5);
break;
case 4:
- StringCopy(dst, gUnknown_084007D0);
+ StringCopy(dst, BattleText_Exclamation);
break;
}
}
diff --git a/src/data/battle_strings_de.h b/src/data/battle_strings_de.h
new file mode 100755
index 000000000..5289ce4e0
--- /dev/null
+++ b/src/data/battle_strings_de.h
@@ -0,0 +1,1612 @@
+#include "moves.h"
+
+enum
+{
+ BATTLE_TEXT_UnknownString = 12,
+ BATTLE_TEXT_GainExpPoints,
+ BATTLE_TEXT_GrewLevel,
+ BATTLE_TEXT_LearnedMove,
+ BATTLE_TEXT_TryingToLearnMove,
+ BATTLE_TEXT_CantLearnMore,
+ BATTLE_TEXT_DeleteMove,
+ BATTLE_TEXT_DeletedMove,
+ BATTLE_TEXT_StopLearning,
+ BATTLE_TEXT_DidNotLearn,
+ BATTLE_TEXT_LearnedMove2,
+ BATTLE_TEXT_AttackMissed,
+ BATTLE_TEXT_ProtectedItself,
+ BATTLE_TEXT_StatNoHigher,
+ BATTLE_TEXT_AvoidedDamage,
+ BATTLE_TEXT_DoesntAffect,
+ BATTLE_TEXT_AttackingFainted,
+ BATTLE_TEXT_DefendingFainted,
+ BATTLE_TEXT_WinningPrize,
+ BATTLE_TEXT_OutOfUsablePoke,
+ BATTLE_TEXT_WhitedOut,
+ BATTLE_TEXT_PreventEscape,
+ BATTLE_TEXT_HitMulti,
+ BATTLE_TEXT_FellAsleep,
+ BATTLE_TEXT_MadeAsleep,
+ BATTLE_TEXT_DefendingAsleep,
+ BATTLE_TEXT_AttackingAsleep,
+ BATTLE_TEXT_WasntAffected,
+ BATTLE_TEXT_Poisoned,
+ BATTLE_TEXT_Poisoned2,
+ BATTLE_TEXT_PoisonHurt,
+ BATTLE_TEXT_AlreadyPoisoned,
+ BATTLE_TEXT_BadlyPoisoned,
+ BATTLE_TEXT_EnergyDrained,
+ BATTLE_TEXT_Burned,
+ BATTLE_TEXT_Burned2,
+ BATTLE_TEXT_BurnHurt,
+ BATTLE_TEXT_Frozen,
+ BATTLE_TEXT_Frozen2,
+ BATTLE_TEXT_FrozenSolid,
+ BATTLE_TEXT_DefendingDefrosted,
+ BATTLE_TEXT_AttackingDefrosted,
+ BATTLE_TEXT_Defrosted,
+ BATTLE_TEXT_Paralyzed,
+ BATTLE_TEXT_Paralyzed2,
+ BATTLE_TEXT_Paralyzed3,
+ BATTLE_TEXT_AlreadyParalyzed,
+ BATTLE_TEXT_ParalysisHealed,
+ BATTLE_TEXT_DreamEaten,
+ BATTLE_TEXT_AttackingStatNoHigher,
+ BATTLE_TEXT_DefendingStatNoHigher,
+ BATTLE_TEXT_StoppedWorking,
+ BATTLE_TEXT_StoppedWorking2,
+ BATTLE_TEXT_Confused,
+ BATTLE_TEXT_ConfusionSnapOut,
+ BATTLE_TEXT_BecameConfused,
+ BATTLE_TEXT_AlreadyConfused,
+ BATTLE_TEXT_FellLove,
+ BATTLE_TEXT_InLoveWith,
+ BATTLE_TEXT_ImmobilizedBy,
+ BATTLE_TEXT_BlownAway,
+ BATTLE_TEXT_TypeTransform,
+ BATTLE_TEXT_Flinched,
+ BATTLE_TEXT_RegainedHealth,
+ BATTLE_TEXT_HPFull,
+ BATTLE_TEXT_RaisedSpDef,
+ BATTLE_TEXT_RaisedDefense,
+ BATTLE_TEXT_CoveredVeil,
+ BATTLE_TEXT_SafeguardActive,
+ BATTLE_TEXT_SafeguardFaded,
+ BATTLE_TEXT_WentToSleep,
+ BATTLE_TEXT_SpeltHealthy,
+ BATTLE_TEXT_WhipWhirlwind,
+ BATTLE_TEXT_TookSunlight,
+ BATTLE_TEXT_LoweredHead,
+ BATTLE_TEXT_IsGlowing,
+ BATTLE_TEXT_FlewHigh,
+ BATTLE_TEXT_DugHole,
+ BATTLE_TEXT_SqueezedBind,
+ BATTLE_TEXT_TrappedVortex,
+ BATTLE_TEXT_Wrapped,
+ BATTLE_TEXT_Clamped,
+ BATTLE_TEXT_HurtBy,
+ BATTLE_TEXT_FreedFrom,
+ BATTLE_TEXT_KeptGoingCrash,
+ BATTLE_TEXT_MistShroud,
+ BATTLE_TEXT_MistProtect,
+ BATTLE_TEXT_GetPumped,
+ BATTLE_TEXT_HitRecoil,
+ BATTLE_TEXT_ProtectedItself2,
+ BATTLE_TEXT_SandBuffeted,
+ BATTLE_TEXT_HailStricken,
+ BATTLE_TEXT_WasSeeded,
+ BATTLE_TEXT_EvadedAttack,
+ BATTLE_TEXT_HealthSapped,
+ BATTLE_TEXT_FastAsleep,
+ BATTLE_TEXT_WokeUp,
+ BATTLE_TEXT_UproarAwake,
+ BATTLE_TEXT_UproarWoke,
+ BATTLE_TEXT_UproarCaused,
+ BATTLE_TEXT_UproarMaking,
+ BATTLE_TEXT_CalmedDown,
+ BATTLE_TEXT_UproarCantSleep,
+ BATTLE_TEXT_Stockpiled,
+ BATTLE_TEXT_StockpiledCant,
+ BATTLE_TEXT_UproarCantSleep2,
+ BATTLE_TEXT_UproarKeptAwake,
+ BATTLE_TEXT_StayedAwake,
+ BATTLE_TEXT_StoringEnergy,
+ BATTLE_TEXT_UnleashedEnergy,
+ BATTLE_TEXT_FatigueConfuse,
+ BATTLE_TEXT_PickedUpYen,
+ BATTLE_TEXT_Unaffected,
+ BATTLE_TEXT_Transformed,
+ BATTLE_TEXT_SubMade,
+ BATTLE_TEXT_SubAlready,
+ BATTLE_TEXT_SubTookDamage,
+ BATTLE_TEXT_SubFaded,
+ BATTLE_TEXT_MustRecharge,
+ BATTLE_TEXT_RageBuilding,
+ BATTLE_TEXT_MoveWasDisabled,
+ BATTLE_TEXT_MoveIsDisabled,
+ BATTLE_TEXT_DisabledNoMore,
+ BATTLE_TEXT_EncoreGot,
+ BATTLE_TEXT_EncoreEnded,
+ BATTLE_TEXT_TookAim,
+ BATTLE_TEXT_SketchedMove,
+ BATTLE_TEXT_DestinyBondTake,
+ BATTLE_TEXT_DestinyBondTaken,
+ BATTLE_TEXT_ReducedBy,
+ BATTLE_TEXT_StoleSomething,
+ BATTLE_TEXT_CantEscapeNow,
+ BATTLE_TEXT_NightmareStart,
+ BATTLE_TEXT_NightmareLock,
+ BATTLE_TEXT_CurseLay,
+ BATTLE_TEXT_CurseAfflict,
+ BATTLE_TEXT_SpikesScattered,
+ BATTLE_TEXT_SpikesHurt,
+ BATTLE_TEXT_IdentifiedPoke,
+ BATTLE_TEXT_PerishSongFell,
+ BATTLE_TEXT_BracedItself,
+ BATTLE_TEXT_EnduredHit,
+ BATTLE_TEXT_MagnitudeCount,
+ BATTLE_TEXT_CutHPMaxATK,
+ BATTLE_TEXT_CopyStatChanges,
+ BATTLE_TEXT_GotFreeFrom,
+ BATTLE_TEXT_LeechShed,
+ BATTLE_TEXT_SpikesBlownAway,
+ BATTLE_TEXT_FledBattle,
+ BATTLE_TEXT_ForesawAttack,
+ BATTLE_TEXT_TookAttack,
+ BATTLE_TEXT_PokeAttack,
+ BATTLE_TEXT_CenterAttention,
+ BATTLE_TEXT_ChargingPower,
+ BATTLE_TEXT_NaturePower,
+ BATTLE_TEXT_StatusNormal,
+ BATTLE_TEXT_NoMovesLeft,
+ BATTLE_TEXT_TormentSubject,
+ BATTLE_TEXT_TormentNoUse,
+ BATTLE_TEXT_TightenFocus,
+ BATTLE_TEXT_TauntFell,
+ BATTLE_TEXT_TauntNoUse,
+ BATTLE_TEXT_ReadyToHelp,
+ BATTLE_TEXT_SwitchedItems,
+ BATTLE_TEXT_CopiedObject,
+ BATTLE_TEXT_WishMade,
+ BATTLE_TEXT_WishTrue,
+ BATTLE_TEXT_PlantedRoots,
+ BATTLE_TEXT_AbsorbNutrients,
+ BATTLE_TEXT_AnchoredItself,
+ BATTLE_TEXT_DrowsyMade,
+ BATTLE_TEXT_KnockedOffItem,
+ BATTLE_TEXT_AbilitySwap,
+ BATTLE_TEXT_SealedMove,
+ BATTLE_TEXT_SealedNoUse,
+ BATTLE_TEXT_GrudgeBear,
+ BATTLE_TEXT_GrudgeLosePP,
+ BATTLE_TEXT_ShroudedItself,
+ BATTLE_TEXT_MagicCoatBounce,
+ BATTLE_TEXT_AwaitMove,
+ BATTLE_TEXT_SnatchedMove,
+ BATTLE_TEXT_RainMade,
+ BATTLE_TEXT_SpeedRisen,
+ BATTLE_TEXT_ProtectedBy,
+ BATTLE_TEXT_PreventedBy,
+ BATTLE_TEXT_HPRestoredUsing,
+ BATTLE_TEXT_MadeType,
+ BATTLE_TEXT_PreventedPara,
+ BATTLE_TEXT_PreventedRomance,
+ BATTLE_TEXT_PreventedPoison,
+ BATTLE_TEXT_PreventedConfusion,
+ BATTLE_TEXT_RaisedFirePower,
+ BATTLE_TEXT_AnchorsItself,
+ BATTLE_TEXT_CutsAttack,
+ BATTLE_TEXT_PreventedStatLoss,
+ BATTLE_TEXT_HurtOther,
+ BATTLE_TEXT_Traced,
+ BATTLE_TEXT_Sharply,
+ BATTLE_TEXT_Rose,
+ BATTLE_TEXT_Harshly,
+ BATTLE_TEXT_Fell,
+ BATTLE_TEXT_UnknownString7,
+ BATTLE_TEXT_UnknownString3,
+ BATTLE_TEXT_UnknownString5,
+ BATTLE_TEXT_UnknownString6,
+ BATTLE_TEXT_Critical,
+ BATTLE_TEXT_GrandSlam,
+ BATTLE_TEXT_MoveForget123,
+ BATTLE_TEXT_MoveForgetAnd,
+ BATTLE_TEXT_NotEffective,
+ BATTLE_TEXT_SuperEffective,
+ BATTLE_TEXT_GotAwaySafely,
+ BATTLE_TEXT_FledWild,
+ BATTLE_TEXT_NoRunning,
+ BATTLE_TEXT_CantEscape2,
+ BATTLE_TEXT_BirchDontLeaveMe,
+ BATTLE_TEXT_Nothing,
+ BATTLE_TEXT_Failed,
+ BATTLE_TEXT_HurtItself,
+ BATTLE_TEXT_MirrorFail,
+ BATTLE_TEXT_RainStart,
+ BATTLE_TEXT_PourStart,
+ BATTLE_TEXT_RainCont1,
+ BATTLE_TEXT_PourCont,
+ BATTLE_TEXT_RainStop,
+ BATTLE_TEXT_SandBrewed,
+ BATTLE_TEXT_SandRages,
+ BATTLE_TEXT_SandSubsided,
+ BATTLE_TEXT_SunBright,
+ BATTLE_TEXT_SunStrong,
+ BATTLE_TEXT_SunFaded,
+ BATTLE_TEXT_HailStart,
+ BATTLE_TEXT_HailCont,
+ BATTLE_TEXT_HailStop,
+ BATTLE_TEXT_SpitUpFail,
+ BATTLE_TEXT_SwallowFail,
+ BATTLE_TEXT_WindHeatWave,
+ BATTLE_TEXT_StatElim,
+ BATTLE_TEXT_CoinScatter,
+ BATTLE_TEXT_SubWeak,
+ BATTLE_TEXT_PainSplit,
+ BATTLE_TEXT_BellChime,
+ BATTLE_TEXT_PerishSong,
+ BATTLE_TEXT_NoPP1,
+ BATTLE_TEXT_NoPP2,
+ BATTLE_TEXT_Used1,
+ BATTLE_TEXT_TutorialUsed,
+ BATTLE_TEXT_BlockBall,
+ BATTLE_TEXT_DontBeAThief,
+ BATTLE_TEXT_DodgeBall,
+ BATTLE_TEXT_MissPoke,
+ BATTLE_TEXT_BallBrokeOhNo,
+ BATTLE_TEXT_BallBrokeAppeared,
+ BATTLE_TEXT_BallBrokeAlmost,
+ BATTLE_TEXT_BallBrokeSoClose,
+ BATTLE_TEXT_BallCaught1,
+ BATTLE_TEXT_BallCaught2,
+ BATTLE_TEXT_GiveNickname,
+ BATTLE_TEXT_SentToPC,
+ BATTLE_TEXT_AddedToDex,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Sandstorm,
+ BATTLE_TEXT_CantEscape,
+ BATTLE_TEXT_IgnoredOrdersSLP,
+ BATTLE_TEXT_IgnoredOrders,
+ BATTLE_TEXT_BeganNap,
+ BATTLE_TEXT_LoafingAround,
+ BATTLE_TEXT_WontObey,
+ BATTLE_TEXT_TurnedAway,
+ BATTLE_TEXT_NotNotice,
+ BATTLE_TEXT_WillSwitch,
+ BATTLE_TEXT_CreptCloser,
+ BATTLE_TEXT_CantGetCloser,
+ BATTLE_TEXT_WatchingCarefully,
+ BATTLE_TEXT_CuriousAbout,
+ BATTLE_TEXT_EnthralledBy,
+ BATTLE_TEXT_IgnoredThing,
+ BATTLE_TEXT_ThrewBlock,
+ BATTLE_TEXT_SafariOver,
+ BATTLE_TEXT_CuredParalysis,
+ BATTLE_TEXT_CuredPoison,
+ BATTLE_TEXT_CuredBurn,
+ BATTLE_TEXT_CuredFreeze,
+ BATTLE_TEXT_CuredSleep,
+ BATTLE_TEXT_CuredConfusion,
+ BATTLE_TEXT_CuredStatus,
+ BATTLE_TEXT_RestoredHealth,
+ BATTLE_TEXT_RestoredPP,
+ BATTLE_TEXT_RestoredStatus,
+ BATTLE_TEXT_RestoredHPLittle,
+ BATTLE_TEXT_ChoiceBand,
+ BATTLE_TEXT_FocusSash,
+ BATTLE_TEXT_Terminator2,
+ BATTLE_TEXT_PreventedBurn,
+ BATTLE_TEXT_BlocksOther,
+ BATTLE_TEXT_RestoredHPByItem,
+ BATTLE_TEXT_WhipSandstorm,
+ BATTLE_TEXT_PreventedLoss,
+ BATTLE_TEXT_InfatuatedPoke,
+ BATTLE_TEXT_MadeIneffective,
+ BATTLE_TEXT_CuredProblem,
+ BATTLE_TEXT_OozeSuckup,
+ BATTLE_TEXT_Transformed2,
+ BATTLE_TEXT_ElecWeakened,
+ BATTLE_TEXT_FireWeakened,
+ BATTLE_TEXT_HidUnderwater,
+ BATTLE_TEXT_SprangUp,
+ BATTLE_TEXT_CantForgetHM,
+ BATTLE_TEXT_FoundOne,
+ BATTLE_TEXT_PlayerDefeatedTrainer2,
+ BATTLE_TEXT_SoothingAroma,
+ BATTLE_TEXT_CantUseItems,
+ BATTLE_TEXT_UnknownString2,
+ BATTLE_TEXT_UnknownString4,
+ BATTLE_TEXT_HustleUse,
+ BATTLE_TEXT_MadeUseless,
+ BATTLE_TEXT_SandTombTrapped,
+ BATTLE_TEXT_Terminator,
+ BATTLE_TEXT_BoostedExp,
+ BATTLE_TEXT_SunIntensified,
+ BATTLE_TEXT_GroundMoveNegate,
+ BATTLE_TEXT_WallyBall,
+ BATTLE_TEXT_TookAttack2,
+ BATTLE_TEXT_ChoseDestiny,
+ BATTLE_TEXT_LostFocus,
+ BATTLE_TEXT_UseNext,
+ BATTLE_TEXT_FledUsingItem,
+ BATTLE_TEXT_FledUsingOther,
+ BATTLE_TEXT_DraggedOut,
+ BATTLE_TEXT_PreventedOther,
+ BATTLE_TEXT_NormalizedStatus,
+ BATTLE_TEXT_Used2,
+ BATTLE_TEXT_BoxFull,
+ BATTLE_TEXT_AvoidedAttack,
+ BATTLE_TEXT_MadeIneffective2,
+ BATTLE_TEXT_PreventedFlinching,
+ BATTLE_TEXT_AlreadyBurned,
+ BATTLE_TEXT_StatNoLower,
+ BATTLE_TEXT_BlocksOther2,
+ BATTLE_TEXT_WoreOff,
+ BATTLE_TEXT_RaisedDefenseLittle,
+ BATTLE_TEXT_RaisedSpDefLittle,
+ BATTLE_TEXT_BrokeWall,
+ BATTLE_TEXT_PreventedOther2,
+ BATTLE_TEXT_CuredOfProblem,
+ BATTLE_TEXT_AttackingCantEscape,
+ BATTLE_TEXT_Obtained1,
+ BATTLE_TEXT_Obtained2,
+ BATTLE_TEXT_Obtained3,
+ BATTLE_TEXT_NoEffect,
+ BATTLE_TEXT_NoEffectOn,
+};
+
+const u8 BattleText_UnknownString[] = _("{STRING 33}");
+const u8 BattleText_GainExpPoints[] = _("{STRING 0} erhält{PLAYER}\n{STRING 42} E-Punkte!\p");
+const u8 BattleText_Terminator[] = _("");
+const u8 BattleText_BoostedExp[] = _(" spezielle");
+const u8 BattleText_GrewLevel[] = _("{STRING 0} erreicht\nLv. {PLAYER}!{UNKNOWN_A}\p");
+const u8 BattleText_LearnedMove[] = _("{STRING 0} erlernt\n{PLAYER}!{UNKNOWN_A}\p");
+const u8 BattleText_TryingToLearnMove[] = _("{STRING 0} versucht,\n{PLAYER} zu lernen.\p");
+const u8 BattleText_CantLearnMore[] = _("Aber {STRING 0} kann nicht\nmehr als vier Attacken erlernen.\p");
+const u8 BattleText_DeleteMove[] = _("Soll eine Attacke zu Gunsten von\n{PLAYER} vergessen werden?");
+const u8 BattleText_DeletedMove[] = _("{STRING 0} hat\n{PLAYER} vergessen!\p");
+const u8 BattleText_StopLearning[] = _("{PAUSE 32}{PLAYER}\nnicht erlernen?");
+const u8 BattleText_DidNotLearn[] = _("{STRING 0} hat {PLAYER}\nnicht erlernt.\p");
+const u8 BattleText_UseNext[] = _("Nächstes POKéMON einsetzen?");
+const u8 BattleText_AttackMissed[] = _("Attacke von {EVIL_LEGENDARY}\nging daneben!");
+const u8 BattleText_ProtectedItself[] = _("{GOOD_LEGENDARY}\nschützt sich selbst!");
+const u8 BattleText_AvoidedDamage[] = _("{GOOD_LEGENDARY} vermeidet\nSchaden mit {STRING 22}!");
+const u8 BattleText_GroundMoveNegate[] = _("{GOOD_LEGENDARY} wehrt BODEN-\nAttacken mit {STRING 22} ab!");
+const u8 BattleText_AvoidedAttack[] = _("{GOOD_LEGENDARY} wehrt die\nAttacke ab!");
+const u8 BattleText_DoesntAffect[] = _("Es hat keine Wirkung auf\n{GOOD_LEGENDARY}...");
+const u8 BattleText_AttackingFainted[] = _("{EVIL_LEGENDARY}\nwurde besiegt!\p");
+const u8 BattleText_DefendingFainted[] = _("{GOOD_LEGENDARY}\nwurde besiegt!\p");
+const u8 BattleText_WinningPrize[] = _("{STRING 32} gewinnt ¥{STRING 0}!\p");
+const u8 BattleText_OutOfUsablePoke[] = _("{STRING 32} hat kein\nkampffähiges POKéMON mehr!\p");
+const u8 BattleText_WhitedOut[] = _("{STRING 32} fällt in Ohnmacht!{PAUSE_UNTIL_PRESS}");
+const u8 BattleText_PreventEscape[] = _("{STRING 16} verhindert\neine Flucht mit {STRING 23}!\p");
+const u8 BattleText_CantEscape[] = _("Flucht unmöglich!\p");
+const u8 BattleText_AttackingCantEscape[] = _("{EVIL_LEGENDARY}\nkann nicht fliehen!");
+const u8 BattleText_HitMulti[] = _("{STRING 0}-mal getroffen!");
+const u8 BattleText_FellAsleep[] = _("{STRING 14}\nist eingeschlafen!");
+const u8 BattleText_MadeAsleep[] = _("{STRING 23} von\n{STRING 16} lässt\l{STRING 14} einschlafen!");
+const u8 BattleText_DefendingAsleep[] = _("{GOOD_LEGENDARY} schläft\nbereits!");
+const u8 BattleText_AttackingAsleep[] = _("{EVIL_LEGENDARY} schläft\nbereits!");
+const u8 BattleText_WasntAffected[] = _("{GOOD_LEGENDARY}\nist unversehrt!");
+const u8 BattleText_Poisoned[] = _("{STRING 14}\nwurde vergiftet!");
+const u8 BattleText_Poisoned2[] = _("{STRING 23} von\n{STRING 16} vergiftete\l{STRING 14}!");
+const u8 BattleText_PoisonHurt[] = _("{EVIL_LEGENDARY} wurde durch\nGift verletzt!");
+const u8 BattleText_AlreadyPoisoned[] = _("{GOOD_LEGENDARY} ist bereits\nvergiftet.");
+const u8 BattleText_BadlyPoisoned[] = _("{STRING 14} wurde schwer\nvergiftet!");
+const u8 BattleText_EnergyDrained[] = _("{GOOD_LEGENDARY} wurde\nEnergie abgesaugt!");
+const u8 BattleText_Burned[] = _("{STRING 14} brennt!");
+const u8 BattleText_Burned2[] = _("{STRING 23} von\n{STRING 16} verbrennt\l{STRING 14}!");
+const u8 BattleText_BurnHurt[] = _("Die Verbrennung schadet\n{EVIL_LEGENDARY}!");
+const u8 BattleText_AlreadyBurned[] = _("{GOOD_LEGENDARY} brennt\nbereits.");
+const u8 BattleText_Frozen[] = _("{STRING 14} erstarrt\nzu Eis!");
+const u8 BattleText_Frozen2[] = _("{STRING 14} wurde durch\n{STRING 23} von\l{STRING 16} eingefroren!");
+const u8 BattleText_FrozenSolid[] = _("{EVIL_LEGENDARY} ist\neingefroren!");
+const u8 BattleText_DefendingDefrosted[] = _("{GOOD_LEGENDARY} wurde\naufgetaut!");
+const u8 BattleText_AttackingDefrosted[] = _("{EVIL_LEGENDARY} wurde\naufgetaut!");
+const u8 BattleText_Defrosted[] = _("{EVIL_LEGENDARY} wurde\ndurch {STRING 17} aufgetaut!");
+const u8 BattleText_Paralyzed[] = _("{STRING 14} ist\nparalysiert! Es greift\leventuell nicht an!");
+const u8 BattleText_Paralyzed2[] = _("{STRING 23} von\n{STRING 16} paralysierte\p{STRING 14}!\nEs greift eventuell nicht an!");
+const u8 BattleText_Paralyzed3[] = _("{EVIL_LEGENDARY} ist\nparalysiert! Es kann\lnicht angreifen!");
+const u8 BattleText_AlreadyParalyzed[] = _("{GOOD_LEGENDARY} ist\nbereits paralysiert!");
+const u8 BattleText_ParalysisHealed[] = _("{GOOD_LEGENDARY} wurde von der\nParalyse geheilt!");
+const u8 BattleText_DreamEaten[] = _("Der Traum von {GOOD_LEGENDARY}\nwurde gefressen!");
+const u8 BattleText_AttackingStatNoHigher[] = _("{STRING 0} von\n{EVIL_LEGENDARY} kann nicht\lmehr erhöht werden!");
+const u8 BattleText_DefendingStatNoHigher[] = _("{STRING 0} von\n{GOOD_LEGENDARY} kann nicht\lweiter gesenkt werden!");
+const u8 BattleText_StoppedWorking[] = _("{STRING 0} in deinem Team\nfunktioniert nicht mehr!");
+const u8 BattleText_StoppedWorking2[] = _("{STRING 0} des Gegners\nfunktioniert nicht mehr!");
+const u8 BattleText_Confused[] = _("{EVIL_LEGENDARY} ist\nverwirrt!");
+const u8 BattleText_ConfusionSnapOut[] = _("{EVIL_LEGENDARY} ist nicht\nmehr verwirrt!");
+const u8 BattleText_BecameConfused[] = _("{STRING 14} wurde\nverwirrt!");
+const u8 BattleText_AlreadyConfused[] = _("{GOOD_LEGENDARY} ist\nbereits verwirrt!");
+const u8 BattleText_FellLove[] = _("{GOOD_LEGENDARY}\nhat sich verliebt!");
+const u8 BattleText_InLoveWith[] = _("{EVIL_LEGENDARY} hat sich in\n{STRING 16} verliebt!");
+const u8 BattleText_ImmobilizedBy[] = _("{EVIL_LEGENDARY} ist starr\nvor Liebe!");
+const u8 BattleText_BlownAway[] = _("{GOOD_LEGENDARY} wurde\nweggeweht!");
+const u8 BattleText_TypeTransform[] = _("{EVIL_LEGENDARY} verwandelt\nsich zu Typ {STRING 0}!");
+const u8 BattleText_Flinched[] = _("{EVIL_LEGENDARY} schreckt\nzurück!");
+const u8 BattleText_RegainedHealth[] = _("{GOOD_LEGENDARY} erholt sich!");
+const u8 BattleText_HPFull[] = _("{GOOD_LEGENDARY} hat alle KP!");
+const u8 BattleText_RaisedSpDef[] = _("{STRING 17} von\n{STRING 38} erhöht\ldie SP. VER.");
+const u8 BattleText_RaisedSpDefLittle[] = _("Die SP. VER. wird etwas durch\n{STRING 17} von\l{STRING 38} erhöht.");
+const u8 BattleText_RaisedDefense[] = _("{STRING 17} von\n{STRING 38}\lerhöht die VERTEIDIGUNG!");
+const u8 BattleText_RaisedDefenseLittle[] = _("{STRING 17} von\n{STRING 38}\lerhöht etwas die VERTEIDIGUNG!");
+const u8 BattleText_CoveredVeil[] = _("{STRING 38} wird von\neinem Schleier umhüllt!");
+const u8 BattleText_SafeguardActive[] = _("{GOOD_LEGENDARY} wird durch\nBODYGUARD geschützt!");
+const u8 BattleText_SafeguardFaded[] = _("BODYGUARD von\n{STRING 40} lässt nach!");
+const u8 BattleText_WentToSleep[] = _("{EVIL_LEGENDARY} ist\neingeschlafen!");
+const u8 BattleText_SpeltHealthy[] = _("{EVIL_LEGENDARY} schläft und\nerholt sich!");
+const u8 BattleText_WhipWhirlwind[] = _("{EVIL_LEGENDARY} entfacht\neinen Wirbelwind!");
+const u8 BattleText_TookSunlight[] = _("{EVIL_LEGENDARY} absorbiert\nSonnenlicht!");
+const u8 BattleText_LoweredHead[] = _("{EVIL_LEGENDARY} zieht seinen\nKopf ein!");
+const u8 BattleText_IsGlowing[] = _("{EVIL_LEGENDARY} leuchtet!");
+const u8 BattleText_FlewHigh[] = _("{EVIL_LEGENDARY} fliegt\nhoch empor!");
+const u8 BattleText_DugHole[] = _("{EVIL_LEGENDARY} gräbt sich\nein!");
+const u8 BattleText_HidUnderwater[] = _("{EVIL_LEGENDARY} taucht\nunter!");
+const u8 BattleText_SprangUp[] = _("{EVIL_LEGENDARY} springt auf!");
+const u8 BattleText_SqueezedBind[] = _("{EVIL_LEGENDARY} setzt bei\n{GOOD_LEGENDARY}\lKLAMMERGRIFF ein!");
+const u8 BattleText_TrappedVortex[] = _("{GOOD_LEGENDARY} wurde in\neinem Strudel gefangen!");
+const u8 BattleText_SandTombTrapped[] = _("{GOOD_LEGENDARY} wurde durch\nSANDGRAB gefangen!");
+const u8 BattleText_Wrapped[] = _("{GOOD_LEGENDARY} wurde von\n{EVIL_LEGENDARY} umWICKELt!");
+const u8 BattleText_Clamped[] = _("{GOOD_LEGENDARY} wurde von\n{EVIL_LEGENDARY} geSCHNAPPT!");
+const u8 BattleText_HurtBy[] = _("{EVIL_LEGENDARY} wurde durch\n{STRING 0} verletzt!");
+const u8 BattleText_FreedFrom[] = _("{EVIL_LEGENDARY} wurde von\n{STRING 0} befreit!");
+const u8 BattleText_KeptGoingCrash[] = _("{EVIL_LEGENDARY} macht weiter\nund bricht zusammen!");
+const u8 BattleText_MistShroud[] = _("{STRING 38} wird in\nWEISSNEBEL gehüllt!");
+const u8 BattleText_MistProtect[] = _("{STRING 16} wird durch\nWEISSNEBEL geschützt!");
+const u8 BattleText_GetPumped[] = _("{EVIL_LEGENDARY} pumpt\nsich auf!");
+const u8 BattleText_HitRecoil[] = _("{EVIL_LEGENDARY} wurde vom\nRückstoß getroffen!");
+const u8 BattleText_ProtectedItself2[] = _("{EVIL_LEGENDARY} schützt\nsich selbst!");
+const u8 BattleText_SandBuffeted[] = _("{EVIL_LEGENDARY} wird vom\nSandsturm getroffen!");
+const u8 BattleText_HailStricken[] = _("{EVIL_LEGENDARY} wird vom\nHAGELSTURM getroffen!");
+const u8 BattleText_WoreOff[] = _("{STRING 0} von\n{STRING 36} lässt nach!");
+const u8 BattleText_WasSeeded[] = _("{GOOD_LEGENDARY} wurde\nbepflanzt!");
+const u8 BattleText_EvadedAttack[] = _("{GOOD_LEGENDARY} ist\nausgewichen!");
+const u8 BattleText_HealthSapped[] = _("EGELSAMEN schadet\n{EVIL_LEGENDARY}!");
+const u8 BattleText_FastAsleep[] = _("{EVIL_LEGENDARY} schläft tief\nund fest.");
+const u8 BattleText_WokeUp[] = _("{EVIL_LEGENDARY} ist\naufgewacht!");
+const u8 BattleText_UproarAwake[] = _("AUFRUHR von {STRING 16}\nhält es wach!");
+const u8 BattleText_UproarWoke[] = _("{EVIL_LEGENDARY} wird durch\nAUFRUHR wach!");
+const u8 BattleText_UproarCaused[] = _("{EVIL_LEGENDARY} verursacht\nAUFRUHR!");
+const u8 BattleText_UproarMaking[] = _("{EVIL_LEGENDARY} macht\neinen AUFRUHR!");
+const u8 BattleText_CalmedDown[] = _("{EVIL_LEGENDARY}\nberuhigt sich.");
+const u8 BattleText_UproarCantSleep[] = _("{GOOD_LEGENDARY} kann bei dem\nAUFRUHR nicht schlafen!");
+const u8 BattleText_Stockpiled[] = _("{EVIL_LEGENDARY} HORTET\n{STRING 0}!");
+const u8 BattleText_StockpiledCant[] = _("{EVIL_LEGENDARY} kann nicht\nweiter HORTEN!");
+const u8 BattleText_UproarCantSleep2[] = _("{GOOD_LEGENDARY} kann bei dem\nAUFRUHR nicht schlafen!");
+const u8 BattleText_UproarKeptAwake[] = _("Aber der AUFRUHR hält\n{GOOD_LEGENDARY} wach!");
+const u8 BattleText_StayedAwake[] = _("{GOOD_LEGENDARY} hält sich mit\n{STRING 22} wach!");
+const u8 BattleText_StoringEnergy[] = _("{EVIL_LEGENDARY} speichert\nEnergie!");
+const u8 BattleText_UnleashedEnergy[] = _("{EVIL_LEGENDARY} erzeugt\nEnergie!");
+const u8 BattleText_FatigueConfuse[] = _("{EVIL_LEGENDARY} ist vor\nErschöpfung verwirrt!");
+const u8 BattleText_PickedUpYen[] = _("{STRING 32} hebt\n¥{STRING 0} auf!\p");
+const u8 BattleText_Unaffected[] = _("{GOOD_LEGENDARY} ist\nunversehrt!");
+const u8 BattleText_Transformed[] = _("{EVIL_LEGENDARY} verwandelt\nsich in {STRING 0}!");
+const u8 BattleText_SubMade[] = _("{EVIL_LEGENDARY} setzt einen\nDELEGATOR ein!");
+const u8 BattleText_SubAlready[] = _("{EVIL_LEGENDARY} hat bereits\neinen DELEGATOR!");
+const u8 BattleText_SubTookDamage[] = _("Der DELEGATOR steckt den\nSchlag für {GOOD_LEGENDARY}\lein!\p");
+const u8 BattleText_SubFaded[] = _("DELEGATOR von\n{GOOD_LEGENDARY} lässt nach!\p");
+const u8 BattleText_MustRecharge[] = _("{EVIL_LEGENDARY} muss sich\nwieder aufladen!");
+const u8 BattleText_RageBuilding[] = _("{GOOD_LEGENDARY} verfällt in\nRASEREI!");
+const u8 BattleText_MoveWasDisabled[] = _("{STRING 0} von\n{GOOD_LEGENDARY}\lwurde blockiert!");
+const u8 BattleText_DisabledNoMore[] = _("{EVIL_LEGENDARY} ist nicht\nmehr blockiert!");
+const u8 BattleText_EncoreGot[] = _("{GOOD_LEGENDARY} gibt\neine ZUGABE!");
+const u8 BattleText_EncoreEnded[] = _("ZUGABE von {EVIL_LEGENDARY}\nist beendet!");
+const u8 BattleText_TookAim[] = _("{EVIL_LEGENDARY} zielt\nauf {GOOD_LEGENDARY}!");
+const u8 BattleText_SketchedMove[] = _("{EVIL_LEGENDARY} setzt\nNACHAHMER bei {STRING 0} ein!");
+const u8 BattleText_DestinyBondTake[] = _("{EVIL_LEGENDARY} versucht den\nGegner mit sich zu nehmen!");
+const u8 BattleText_DestinyBondTaken[] = _("{GOOD_LEGENDARY} nimmt\n{EVIL_LEGENDARY} mit sich!");
+const u8 BattleText_ReducedBy[] = _("{STRING 0} von\n{GOOD_LEGENDARY} wird um\l{PLAYER} reduziert!");
+const u8 BattleText_StoleSomething[] = _("{EVIL_LEGENDARY} stiehlt\n{STRING 19} von\l{GOOD_LEGENDARY}!");
+const u8 BattleText_CantEscapeNow[] = _("{GOOD_LEGENDARY} kann\nnicht fliehen!");
+const u8 BattleText_NightmareStart[] = _("{GOOD_LEGENDARY} bekommt\nNACHTMAHR!");
+const u8 BattleText_NightmareLock[] = _("{EVIL_LEGENDARY} ist in\nNACHTMAHR gefangen!");
+const u8 BattleText_CurseLay[] = _("{EVIL_LEGENDARY} nimmt einen\nTeil seiner KP und legt einen\lFLUCH auf {GOOD_LEGENDARY}!");
+const u8 BattleText_CurseAfflict[] = _("{EVIL_LEGENDARY} wurde durch\nFLUCH verletzt!");
+const u8 BattleText_SpikesScattered[] = _("POKéMON-Team von {STRING 37}\nverteilt STACHELN um sich!");
+const u8 BattleText_SpikesHurt[] = _("{STRING 16} wurde durch\nSTACHLER verletzt!");
+const u8 BattleText_IdentifiedPoke[] = _("{EVIL_LEGENDARY} erkennt\n{GOOD_LEGENDARY}!");
+const u8 BattleText_PerishSongFell[] = _("ABGESANG von {EVIL_LEGENDARY}\nsteht bei {STRING 0}!");
+const u8 BattleText_BracedItself[] = _("{EVIL_LEGENDARY} macht sich\nbereit!");
+const u8 BattleText_EnduredHit[] = _("{GOOD_LEGENDARY} setzt\nAUSDAUER ein!");
+const u8 BattleText_MagnitudeCount[] = _("INTENSITÄT {STRING 0}!");
+const u8 BattleText_CutHPMaxATK[] = _("{EVIL_LEGENDARY} nutzt seine\nKP und hebt den ANGR-Wert!");
+const u8 BattleText_CopyStatChanges[] = _("{EVIL_LEGENDARY} kopiert die\nStatusveränderungen\lvon {GOOD_LEGENDARY}!");
+const u8 BattleText_GotFreeFrom[] = _("{EVIL_LEGENDARY} befreit\nsich von {STRING 0}\lvon {GOOD_LEGENDARY}!");
+const u8 BattleText_LeechShed[] = _("{EVIL_LEGENDARY} befreit sich\nvon EGELSAMEN!");
+const u8 BattleText_SpikesBlownAway[] = _("{EVIL_LEGENDARY} blies den\nSTACHLER weg!");
+const u8 BattleText_FledBattle[] = _("{EVIL_LEGENDARY} ist\ngeflüchtet!");
+const u8 BattleText_ForesawAttack[] = _("{EVIL_LEGENDARY} sah eine\nAttacke voraus!");
+const u8 BattleText_TookAttack[] = _("{GOOD_LEGENDARY} wurde von\nder Attacke {STRING 0} getroffen!");
+const u8 BattleText_ChoseDestiny[] = _("{EVIL_LEGENDARY} wählte\n{STRING 17} als Vorhersehung aus!");
+const u8 BattleText_PokeAttack[] = _("Angriff von {STRING 0}!");
+const u8 BattleText_CenterAttention[] = _("{EVIL_LEGENDARY} zieht alle\nAufmerksamkeit auf sich!");
+const u8 BattleText_ChargingPower[] = _("{EVIL_LEGENDARY} lädt\nsich auf!");
+const u8 BattleText_NaturePower[] = _("NATUR-KRAFT wurde zu\n{STRING 17}!");
+const u8 BattleText_StatusNormal[] = _("Status von {EVIL_LEGENDARY}\nwird normal!");
+const u8 BattleText_TormentSubject[] = _("{GOOD_LEGENDARY} wird von\nFOLTERKNECHT unterworfen!");
+const u8 BattleText_TightenFocus[] = _("{EVIL_LEGENDARY} verstärkt\nseinen Fokus!");
+const u8 BattleText_TauntFell[] = _("{GOOD_LEGENDARY} fällt auf\nVERHÖHNER herein!");
+const u8 BattleText_ReadyToHelp[] = _("{EVIL_LEGENDARY} will\n{GOOD_LEGENDARY} helfen!");
+const u8 BattleText_SwitchedItems[] = _("{EVIL_LEGENDARY} tauscht\nItems mit anderem PKMN!");
+const u8 BattleText_Obtained1[] = _("{EVIL_LEGENDARY} erhält\n{STRING 0}.");
+const u8 BattleText_Obtained2[] = _("{GOOD_LEGENDARY} erhält\n{PLAYER}.");
+const u8 BattleText_Obtained3[] = _("{EVIL_LEGENDARY} erhält\n{STRING 0}.\p{GOOD_LEGENDARY} erhält\n{PLAYER}.");
+const u8 BattleText_CopiedObject[] = _("{EVIL_LEGENDARY}\nkopiert {STRING 22} von\l{GOOD_LEGENDARY}!");
+const u8 BattleText_WishMade[] = _("{EVIL_LEGENDARY} spricht einen\nWUNSCHTRAUM aus!");
+const u8 BattleText_WishTrue[] = _("WUNSCHTRAUM von\n{STRING 0} erfüllt sich!");
+const u8 BattleText_PlantedRoots[] = _("{EVIL_LEGENDARY} pflanzt seine\nWurzeln!");
+const u8 BattleText_AbsorbNutrients[] = _("{EVIL_LEGENDARY} nimmt über\nseine Wurzeln Nährstoffe auf!");
+const u8 BattleText_AnchoredItself[] = _("{GOOD_LEGENDARY}\nverankert sich mit seinen Wurzeln!");
+const u8 BattleText_DrowsyMade[] = _("{EVIL_LEGENDARY} macht\n{GOOD_LEGENDARY} schläfrig!");
+const u8 BattleText_KnockedOffItem[] = _("{EVIL_LEGENDARY}\nentreißt {STRING 19} von\l{GOOD_LEGENDARY}!");
+const u8 BattleText_AbilitySwap[] = _("{EVIL_LEGENDARY} tauscht die\nFähigkeiten mit einem PKMN!");
+const u8 BattleText_SealedMove[] = _("{EVIL_LEGENDARY} versiegelt\ndie Attacke/n des Gegners!");
+const u8 BattleText_GrudgeBear[] = _("{EVIL_LEGENDARY} möchte, dass\nder Gegner ein NACHSPIEL erträgt!");
+const u8 BattleText_GrudgeLosePP[] = _("{STRING 0} von\n{EVIL_LEGENDARY} hat aufgrund\lvon NACHSPIEL alle AP verloren!");
+const u8 BattleText_ShroudedItself[] = _("{EVIL_LEGENDARY} verhüllt sich\nselbst in {STRING 17}!");
+const u8 BattleText_MagicCoatBounce[] = _("{STRING 17} von\n{EVIL_LEGENDARY} prallte am\lMAGIEMANTEL ab!");
+const u8 BattleText_AwaitMove[] = _("{EVIL_LEGENDARY} wartet auf\neine gegnerische Attacke!");
+const u8 BattleText_SnatchedMove[] = _("{GOOD_LEGENDARY} ÜBERNAHM\nAttacke von {STRING 16}!");
+const u8 BattleText_ElecWeakened[] = _("Die Stärke der Elektrizität\nwurde geschwächt!");
+const u8 BattleText_FireWeakened[] = _("Die Stärke des Feuers\nwurde geschwächt!");
+const u8 BattleText_FoundOne[] = _("{EVIL_LEGENDARY} hat 1\n{STRING 19} gefunden!");
+const u8 BattleText_SoothingAroma[] = _("Ein wohltuendes Aroma\nbreitet sich aus!");
+const u8 BattleText_CantUseItems[] = _("Hier können Items nicht eingesetzt\nwerden.{PAUSE 64}");
+const u8 BattleText_UnknownString2[] = _("Für {STRING 16} war\n{STRING 19} {STRING 0}");
+const u8 BattleText_HustleUse[] = _("{STRING 16} setzt\n{STRING 19} ein, um zu drängeln!");
+const u8 BattleText_LostFocus[] = _("{EVIL_LEGENDARY} hat seinen\nFokus verloren und kann\lnicht angreifen!");
+const u8 BattleText_DraggedOut[] = _("{GOOD_LEGENDARY} wurde\nauserwählt!\p");
+const u8 BattleText_BrokeWall[] = _("Die Mauer brach zusammen!");
+const u8 BattleText_NoEffect[] = _("Es ist wirkungslos!");
+const u8 BattleText_NoMovesLeft[] = _("{STRING 15} hat keine\nAttacken mehr übrig!\p");
+const u8 BattleText_MoveIsDisabled[] = _("{STRING 17} von\n{STRING 15} ist blockiert!\p");
+const u8 BattleText_TormentNoUse[] = _("{STRING 15} kann\naufgrund von FOLTERKNECHT\pdie Attacke nicht 2-mal\nhintereinander einsetzen!");
+const u8 BattleText_TauntNoUse[] = _("{STRING 15} kann\n{STRING 17} nach VERHÖHNER\lnicht einsetzen!\p");
+const u8 BattleText_SealedNoUse[] = _("{STRING 15} kann die ver-\nsiegelte Attacke {STRING 17}\lnicht einsetzen!\p");
+const u8 BattleText_RainMade[] = _("{STRING 23} von\n{STRING 16} lässt\les regnen!");
+const u8 BattleText_SpeedRisen[] = _("{STRING 23} von\n{STRING 16} erhöht\lseine INIT.!");
+const u8 BattleText_ProtectedBy[] = _("{GOOD_LEGENDARY} wurde durch\n{STRING 22} geschützt!");
+const u8 BattleText_PreventedBy[] = _("{STRING 22} von\n{GOOD_LEGENDARY} hindert\p{EVIL_LEGENDARY} daran,\n{STRING 17} einzusetzen!");
+const u8 BattleText_HPRestoredUsing[] = _("{GOOD_LEGENDARY} füllt KP mit\nHilfe von {STRING 22} auf!");
+const u8 BattleText_MadeUseless[] = _("{STRING 22} von\n{GOOD_LEGENDARY} hebt die\lWirkung von {STRING 17} auf!");
+const u8 BattleText_MadeType[] = _("{STRING 22} von\n{GOOD_LEGENDARY} macht es zu\leinem {STRING 0}-Typ!");
+const u8 BattleText_PreventedPara[] = _("{STRING 22} von\n{STRING 14} verhindert\leine Paralyse!");
+const u8 BattleText_PreventedRomance[] = _("{STRING 22} von\n{GOOD_LEGENDARY} verhindert\leine Romanze!");
+const u8 BattleText_PreventedPoison[] = _("{STRING 22} von\n{STRING 14} verhindert\leine Vergiftung!");
+const u8 BattleText_PreventedConfusion[] = _("{STRING 22} von\n{GOOD_LEGENDARY} verhindert\lVerwirrung!");
+const u8 BattleText_RaisedFirePower[] = _("{STRING 22} von\n{GOOD_LEGENDARY} erhöht die\lFEUER-Kraft!");
+const u8 BattleText_AnchorsItself[] = _("{GOOD_LEGENDARY} verankert\nsich mit Hilfe von {STRING 22}!");
+const u8 BattleText_CutsAttack[] = _("{STRING 23} von\n{STRING 16} vermindert\lANGRIFF von {GOOD_LEGENDARY}!");
+const u8 BattleText_PreventedStatLoss[] = _("{STRING 23} von\n{STRING 16} verhindert\lStatusveränderungen!");
+const u8 BattleText_HurtOther[] = _("{STRING 22} von\n{GOOD_LEGENDARY} verletzt\l{EVIL_LEGENDARY}!");
+const u8 BattleText_Traced[] = _("FÄHRTE von\n{STRING 16}\perkennt {PLAYER}\nvon {STRING 0}!");
+const u8 BattleText_PreventedBurn[] = _("{STRING 24} von\n{STRING 14} verhindert\lVerbrennung!");
+const u8 BattleText_BlocksOther[] = _("{STRING 22} von\n{GOOD_LEGENDARY} blockiert\l{STRING 17}!");
+const u8 BattleText_BlocksOther2[] = _("{STRING 23} von\n{STRING 16} blockiert\l{STRING 17}!");
+const u8 BattleText_RestoredHPByItem[] = _("{STRING 21} von\n{EVIL_LEGENDARY} füllt\leinige KP auf!");
+const u8 BattleText_WhipSandstorm[] = _("{STRING 23} von\n{STRING 16} entfacht\leinen Sandsturm!");
+const u8 BattleText_SunIntensified[] = _("{STRING 23} von\n{STRING 16} intensiviert\ldie Sonnenstrahlen!");
+const u8 BattleText_PreventedLoss[] = _("{STRING 23} von\n{STRING 16} verhindert \lden Verlust von {STRING 0}!");
+const u8 BattleText_InfatuatedPoke[] = _("{EVIL_LEGENDARY} ist vernarrt\nin {STRING 22} von\l{GOOD_LEGENDARY}!");
+const u8 BattleText_MadeIneffective[] = _("{STRING 22} von\n{GOOD_LEGENDARY} macht\l{STRING 17} wirkungslos!");
+const u8 BattleText_CuredProblem[] = _("{STRING 23} von\n{STRING 16} heilte sein\lProblem mit {STRING 0}!");
+const u8 BattleText_OozeSuckup[] = _("Es saugte\nKLOAKENSOSSE auf!");
+const u8 BattleText_Transformed2[] = _("{STRING 16}\nverwandelte sich!");
+const u8 BattleText_TookAttack2[] = _("{STRING 22} von\n{GOOD_LEGENDARY} übernahm\lden Angriff!");
+const u8 BattleText_PreventedSwitch[] = _("{STRING 20} von\n{STRING 0} verhindert\pWechsel!\p");
+const u8 BattleText_PreventedOther[] = _("{STRING 22} von\n{GOOD_LEGENDARY} macht\p{STRING 0} von\n{STRING 16} wirkungslos!");
+const u8 BattleText_MadeIneffective2[] = _("{STRING 23} von\n{STRING 16} machte\les wirkungslos!");
+const u8 BattleText_PreventedFlinching[] = _("{STRING 24} von\n{STRING 14} verhindert\lein Zurückschrecken!");
+const u8 BattleText_PreventedOther2[] = _("{STRING 21} von\n{EVIL_LEGENDARY} macht\p{STRING 22} von\n{GOOD_LEGENDARY} wirkungslos!");
+const u8 BattleText_CuredOfProblem[] = _("{STRING 23} von\n{STRING 16} heilte sein\lProblem mit {STRING 0}!");
+const u8 BattleText_NoEffectOn[] = _("{STRING 23} von\n{STRING 16} hat keine\lWirkung auf {STRING 14}!");
+const u8 BattleText_Sharply[] = _("steigt stark!");
+const u8 BattleText_Rose[] = _("steigt.");
+const u8 BattleText_Harshly[] = _("sinkt stark!");
+const u8 BattleText_Fell[] = _("sinkt.");
+const u8 BattleText_UnknownString7[] = _("{STRING 0} von\n{EVIL_LEGENDARY} {PLAYER}");
+const u8 BattleText_UnknownString3[] = _("{STRING 0} von\n{GOOD_LEGENDARY} {PLAYER}");
+const u8 BattleText_UnknownString4[] = _("{STRING 19}: {STRING 0} von\n{STRING 16} {PLAYER}");
+const u8 BattleText_UnknownString5[] = _("{STRING 0} von\n{EVIL_LEGENDARY} {PLAYER}");
+const u8 BattleText_UnknownString6[] = _("{STRING 0} von\n{GOOD_LEGENDARY} {PLAYER}");
+const u8 BattleText_StatNoHigher[] = _("Status von {EVIL_LEGENDARY}\nkann nicht weiter erhöht werden!");
+const u8 BattleText_StatNoLower[] = _("Status von {GOOD_LEGENDARY}\nkann nicht weiter sinken!");
+const u8 BattleText_Critical[] = _("Ein Volltreffer!");
+const u8 BattleText_GrandSlam[] = _("Ein K.O.-Treffer!");
+const u8 BattleText_MoveForget123[] = _("{PAUSE 32}1, {PAUSE 15}2 und...{PAUSE 15} ...{PAUSE 15} ...{PAUSE 15}\n{PAUSE 15}{PLAY_SE 0x38 0x00}Schwupp!\p");
+const u8 BattleText_MoveForgetAnd[] = _("Und...\p");
+const u8 BattleText_CantForgetHM[] = _("VM-Attacken können jetzt \nnicht vergessen werden.\p");
+const u8 BattleText_NotEffective[] = _("Das ist nicht sehr effektiv...");
+const u8 BattleText_SuperEffective[] = _("Das ist sehr effektiv!");
+const u8 BattleText_GotAwaySafely[] = _("{PLAY_SE 0x11 0x00}Du bist entkommen!\p");
+const u8 BattleText_FledUsingItem[] = _("{PLAY_SE 0x11 0x00}{EVIL_LEGENDARY} floh\ndurch Einsatz von {STRING 19}!\p");
+const u8 BattleText_FledUsingOther[] = _("{PLAY_SE 0x11 0x00}{EVIL_LEGENDARY} floh\ndurch Einsatz von {STRING 21}!\p");
+const u8 BattleText_FledWild[] = _("{PLAY_SE 0x11 0x00}Wildes {STRING 0} floh!");
+const u8 BattleText_PlayerDefeatedTrainer[] = _("Spieler besiegte\n{STRING 29}!");
+const u8 BattleText_PlayerDefeatedTrainers[] = _("Spieler besiegte\n{STRING 30} und {STRING 29}!");
+const u8 BattleText_PlayerLostTrainer[] = _("Spieler verlor gegen\n{STRING 29}!");
+const u8 BattleText_PlayerLostTrainers[] = _("Spieler verlor gegen\n{STRING 30} und {STRING 29}!");
+const u8 BattleText_PlayerTiedTrainer[] = _("Patt zwischen Spieler und\n{STRING 29}!");
+const u8 BattleText_PlayerTiedTrainers[] = _("Patt zwischen Spieler, {STRING 30}\nund {STRING 29}!");
+const u8 BattleText_FledSingle[] = _("{PLAY_SE 0x11 0x00}{STRING 29} floh!");
+const u8 BattleText_FledDouble[] = _("{PLAY_SE 0x11 0x00}{STRING 29} und\n{STRING 30} flohen!");
+const u8 BattleText_NoRunning[] = _("Du kannst aus TRAINER-Kämpfen\nnicht fliehen!\p");
+const u8 BattleText_CantEscape2[] = _("Flucht unmöglich!\p");
+const u8 BattleText_BirchDontLeaveMe[] = _("PROF. BIRK: Du... Du kannst mich doch\nnicht einfach im Stich lassen!\p");
+const u8 BattleText_Nothing[] = _("Nichts geschieht!");
+const u8 BattleText_Failed[] = _("Es schlug fehl!");
+const u8 BattleText_HurtItself[] = _("Es hat sich vor Verwirrung\nselbst verletzt!");
+const u8 BattleText_MirrorFail[] = _("Der SPIEGELTRICK schlug fehl!");
+const u8 BattleText_RainStart[] = _("Es fängt an zu regnen!");
+const u8 BattleText_PourStart[] = _("Ein Wolkenbruch!");
+const u8 BattleText_RainCont1[] = _("Es regnet weiter.");
+const u8 BattleText_PourCont[] = _("Der Wolkenbruch hält an.");
+const u8 BattleText_RainStop[] = _("Es hat aufgehört zu regnen.");
+const u8 BattleText_SandBrewed[] = _("Ein Sandsturm kommt auf!");
+const u8 BattleText_SandRages[] = _("Der Sandsturm tobt.");
+const u8 BattleText_SandSubsided[] = _("Der Sandsturm legt sich.");
+const u8 BattleText_SunBright[] = _("Das Sonnenlicht wird stärker!");
+const u8 BattleText_SunStrong[] = _("Gleißendes Sonnenlicht!");
+const u8 BattleText_SunFaded[] = _("Das Sonnenlicht lässt nach!");
+const u8 BattleText_HailStart[] = _("Es fängt an zu hageln!");
+const u8 BattleText_HailCont[] = _("Es hagelt!");
+const u8 BattleText_HailStop[] = _("Es hat aufgehört zu hageln.");
+const u8 BattleText_SpitUpFail[] = _("Aber es konnte nichts\nENTFESSELN!");
+const u8 BattleText_SwallowFail[] = _("Aber es konnte nichts\nVERZEHREN!");
+const u8 BattleText_WindHeatWave[] = _("Der Wind wurde zu einer\nHITZEWELLE!");
+const u8 BattleText_StatElim[] = _("Alle Statusveränderungen wurden\nentfernt!");
+const u8 BattleText_CoinScatter[] = _("Es liegen überall Münzen verstreut!");
+const u8 BattleText_SubWeak[] = _("Zu schwach, um einen DELEGATOR\neinzusetzen!");
+const u8 BattleText_PainSplit[] = _("Die Kontrahenten teilen\nihr Leid!");
+const u8 BattleText_BellChime[] = _("Eine Glocke läutet!");
+const u8 BattleText_PerishSong[] = _("Alle betroffenen POKéMON werden\nin 3 Runden K.O. gehen!");
+const u8 BattleText_NoPP1[] = _("Es sind keine AP mehr für\ndiese Attacke übrig!\p");
+const u8 BattleText_NoPP2[] = _("Aber es waren keine AP mehr\nfür diese Attacke übrig!");
+const u8 BattleText_IgnoredOrdersSLP[] = _("{EVIL_LEGENDARY} ignoriert die\nBefehle. Es schläft!");
+const u8 BattleText_IgnoredOrders[] = _("{EVIL_LEGENDARY} ignoriert den\nBefehl!");
+const u8 BattleText_BeganNap[] = _("{EVIL_LEGENDARY} macht\nein Nickerchen!");
+const u8 BattleText_LoafingAround[] = _("{EVIL_LEGENDARY} faulenzt!");
+const u8 BattleText_WontObey[] = _("{EVIL_LEGENDARY} ist\nungehorsam!");
+const u8 BattleText_TurnedAway[] = _("{EVIL_LEGENDARY} wendet\nsich ab!");
+const u8 BattleText_NotNotice[] = _("{EVIL_LEGENDARY} gibt vor,\nnichts zu bemerken!");
+const u8 BattleText_WillSwitch[] = _("Als Nächstes wird {PLAYER} von\n{STRING 25} {STRING 26} eingesetzt.\pWird {STRING 32} das\nPOKéMON wechseln?");
+const u8 BattleText_LearnedMove2[] = _("{EVIL_LEGENDARY} hat\n{STRING 0} gelernt!");
+const u8 BattleText_PlayerDefeatedTrainer2[] = _("Spieler besiegte\n{STRING 25} {STRING 26}!\p");
+const u8 BattleText_CreptCloser[] = _("{STRING 32} schleicht sich näher an\n{STR_VAR_2} heran!");
+const u8 BattleText_CantGetCloser[] = _("{STRING 32} kann nicht näher herangehen!");
+const u8 BattleText_WatchingCarefully[] = _("{STR_VAR_2} beobachtet\nalles aufmerksam!");
+const u8 BattleText_CuriousAbout[] = _("{STR_VAR_2} ist\nneugierig auf {STRING 0}!");
+const u8 BattleText_EnthralledBy[] = _("{STR_VAR_2} ist begeistert\nvon {STRING 0}!");
+const u8 BattleText_IgnoredThing[] = _("{STR_VAR_2} ignoriert\n{STRING 0} völlig!");
+const u8 BattleText_ThrewBlock[] = _("{STRING 32} wirft {STR_VAR_2} einen\n{POKEBLOCK} zu!");
+const u8 BattleText_SafariOver[] = _("{PLAY_SE 0x49 0x00}ANSAGE: Du hast keine\nSAFARIBÄLLE mehr! Game over!\p");
+const u8 BattleText_WildAppeared1[] = _("Ein wildes {STR_VAR_2} erscheint!\p");
+const u8 BattleText_WildAppeared2[] = _("Ein wildes {STR_VAR_2} erscheint!\p");
+const u8 BattleText_WildAppeared3[] = _("Ein wildes {STR_VAR_2} erscheint!{PAUSE 127}");
+const u8 BattleText_WildDoubleAppeared[] = _("Ein wildes {KUN} und\nein wildes {STR_VAR_2} erscheinen!\p");
+const u8 BattleText_SingleWantToBattle1[] = _("Eine Herausforderung von\n{STRING 25} {STRING 26}!\p");
+const u8 BattleText_SingleWantToBattle2[] = _("Eine Herausforderung von\n{STRING 29}!");
+const u8 BattleText_DoubleWantToBattle[] = _("{STRING 29} und {STRING 30}\nmöchten kämpfen!");
+const u8 BattleText_SentOutSingle1[] = _("{STR_VAR_2} wird von\n{STRING 25} {STRING 26} in den\lKampf geschickt!");
+const u8 BattleText_SentOutDouble1[] = _("{STR_VAR_2} und {KUN}\nwerden von\p{STRING 25} {STRING 26}\nin den Kampf geschickt!");
+const u8 BattleText_SentOutSingle2[] = _("{STRING 0} wird von\n{STRING 25} {STRING 26}\lin den Kampf geschickt!");
+const u8 BattleText_SentOutSingle3[] = _("{STRING 29} schickt\n{STR_VAR_2} in den Kampf!");
+const u8 BattleText_SentOutDouble2[] = _("{STRING 29} schickt\n{STR_VAR_2} und {KUN}!");
+const u8 BattleText_SentOutDouble3[] = _("{STRING 29} schickt\n{VERSION}!\p{STRING 30} schickt\n{GOOD_TEAM}!");
+const u8 BattleText_SentOutSingle4[] = _("{STRING 29} schickt\n{STRING 0}!");
+const u8 BattleText_SentOutSingle5[] = _("{STRING 31} schickt\n{STRING 0}!");
+const u8 BattleText_SentOutSingle6[] = _("Los! {STR_VAR_1}!");
+const u8 BattleText_SentOutDouble4[] = _("Los! {STR_VAR_1} und\n{STR_VAR_3}!");
+const u8 BattleText_SentOutSingle7[] = _("Los! {STRING 0}!");
+const u8 BattleText_SentOutSingle8[] = _("Du schaffst es! {STRING 0}!");
+const u8 BattleText_SentOutSingle9[] = _("Streng dich an, {STRING 0}!");
+const u8 BattleText_SentOutSingle10[] = _("Mach es fertig!\nLos, {STRING 0}!");
+const u8 BattleText_SentOutSingle11[] = _("{STRING 28} schickt\n{EVIL_TEAM}!\pLos! {RIVAL}!");
+const u8 BattleText_ComeBackSingle1[] = _("{STRING 0}, genug!\nKomm zurück!");
+const u8 BattleText_ComeBackSingle2[] = _("{STRING 0}, komm zurück!");
+const u8 BattleText_ComeBackSingle3[] = _("{STRING 0}, O.K.!\nKomm zurück!");
+const u8 BattleText_ComeBackSingle4[] = _("{STRING 0}, gut!\nKomm zurück!");
+const u8 BattleText_WithdrewPoke1[] = _("{STRING 0} wurde\nvon {STRING 25} {STRING 26}\lzurückgerufen!");
+const u8 BattleText_WithdrewPoke2[] = _("{STRING 29} ruft\n{STRING 0} zurück!");
+const u8 BattleText_WithdrewPoke3[] = _("{STRING 31} ruft\n{STRING 0} zurück!");
+const u8 BattleText_Wild[] = _(" (Wild)");
+const u8 BattleText_Foe[] = _(" (Gegner)");
+const u8 BattleText_Foe2[] = _("Gegner");
+const u8 BattleText_Ally[] = _("Anwender");
+const u8 BattleText_Foe3[] = _("Gegner");
+const u8 BattleText_Ally2[] = _("Anwender");
+const u8 BattleText_Foe4[] = _("Gegner");
+const u8 BattleText_Ally3[] = _("Anwender");
+const u8 BattleText_OpponentUsedMove[] = _("{EVIL_LEGENDARY} setzt\n{PLAYER} ein!");
+const u8 BattleText_Exclamation2[] = _("");
+const u8 BattleText_Exclamation3[] = _("");
+const u8 BattleText_Exclamation4[] = _("");
+const u8 BattleText_Exclamation5[] = _("");
+const u8 BattleText_Exclamation[] = _("");
+const u8 BattleStatText_HP[] = _("KP");
+const u8 BattleStatText_Attack[] = _("ANGRIFF");
+const u8 BattleStatText_Defense[] = _("VERT.");
+const u8 BattleStatText_Speed[] = _("INIT.");
+const u8 BattleStatText_SpAtk[] = _("SP.ANG.");
+const u8 BattleStatText_SpDef[] = _("SP.VER.");
+const u8 BattleStatText_Accuracy[] = _("GENAUIGKEIT");
+const u8 BattleStatText_Evasion[] = _("FLUCHTWERT");
+const u8 ContestStatText_TooSpicy[] = _("zu scharf!");
+const u8 ContestStatText_TooDry[] = _("zu trocken!");
+const u8 ContestStatText_TooSweet[] = _("zu süß!");
+const u8 ContestStatText_TooBitter[] = _("zu bitter!");
+const u8 ContestStatText_TooSour[] = _("zu sauer!");
+const u8 BattleText_Used1[] = _("{STRING 32} setzt\n{STRING 19} ein!");
+const u8 BattleText_TutorialUsed[] = _("HEIKO setzt\n{STRING 19} ein!");
+const u8 BattleText_Used2[] = _("{STRING 19} wird von\n{STRING 25} {STRING 26} eingesetzt!");
+const u8 BattleText_BlockBall[] = _("Der TRAINER hat den BALL abgeblockt!");
+const u8 BattleText_DontBeAThief[] = _("Sei kein Dieb!");
+const u8 BattleText_DodgeBall[] = _("Es ist dem BALL ausgewichen! Dieses\nPOKéMON kann nicht gefangen werden!");
+const u8 BattleText_MissPoke[] = _("Du hast das POKéMON verfehlt!");
+const u8 BattleText_BallBrokeOhNo[] = _("Mist!\nDas POKéMON hat sich befreit!");
+const u8 BattleText_BallBrokeAppeared[] = _("Oh!\nFast hätte es geklappt!");
+const u8 BattleText_BallBrokeAlmost[] = _("Mist!\nDas war knapp!");
+const u8 BattleText_BallBrokeSoClose[] = _("Verflixt!\nEs hätte beinahe geklappt!");
+const u8 BattleText_BallCaught1[] = _("Toll!\n{STR_VAR_2} wurde gefangen!{UNKNOWN_A}{PLAY_BGM 0x60 0x01}\p");
+const u8 BattleText_BallCaught2[] = _("Toll!\n{STR_VAR_2} wurde gefangen!{UNKNOWN_A}{PLAY_BGM 0x60 0x01}{PAUSE 127}");
+const u8 BattleText_GiveNickname[] = _("Möchtest du dem {STR_VAR_2}\neinen Spitznamen geben?");
+const u8 BattleText_SentToPC[] = _("{STR_VAR_2} wurde auf\n{STRING 35} PC übertragen.");
+const u8 BattleText_Someone[] = _("einen");
+const u8 BattleText_Lanette[] = _("LANETTES");
+const u8 BattleText_AddedToDex[] = _("Für {STR_VAR_2} wurde ein Eintrag\nim POKéDEX angelegt.\p");
+const u8 BattleText_Raining[] = _("Es regnet.");
+const u8 BattleText_Sandstorm[] = _("Ein Sandsturm tobt.");
+const u8 BattleText_BoxFull[] = _("Die BOXEN sind voll!\nDu kannst keines mehr fangen!\p");
+const u8 BattleText_EnigmaBerry[] = _("ENIGMABEERE");
+const u8 BattleText_Berry[] = _("{STR_VAR_1}BEERE");
+const u8 BattleText_CuredParalysis[] = _("{STRING 19} von\n{STRING 16}\lheilte die Paralyse!");
+const u8 BattleText_CuredPoison[] = _("{STRING 19} von\n{STRING 16}\lheilte die Vergiftung!");
+const u8 BattleText_CuredBurn[] = _("{STRING 19} von\n{STRING 16}\lheilte die Verbrennung!");
+const u8 BattleText_CuredFreeze[] = _("{STRING 19} von\n{STRING 16} taute es auf!");
+const u8 BattleText_CuredSleep[] = _("{STRING 19} von\n{STRING 16} \lweckte es auf!");
+const u8 BattleText_CuredConfusion[] = _("{STRING 19} von\n{STRING 16}\lhebt die Verwirrung auf!");
+const u8 BattleText_CuredStatus[] = _("{STRING 19} von\n{STRING 16} \lheilte sein {STRING 0}-Problem!");
+const u8 BattleText_NormalizedStatus[] = _("{STRING 19} von\n{STRING 16} normalisierte\lseine Statuswerte!");
+const u8 BattleText_RestoredHealth[] = _("{STRING 19} füllte\nKP von {STRING 16} auf!");
+const u8 BattleText_RestoredPP[] = _("{STRING 19} von\n{STRING 16} füllte AP von\l{STRING 0} auf!");
+const u8 BattleText_RestoredStatus[] = _("{STRING 19} von\n{STRING 16}\pstellte seine\nStatuswerte wieder her!");
+const u8 BattleText_RestoredHPLittle[] = _("{STRING 19} von\n{STRING 16}\lfüllte einige KP auf!");
+const u8 BattleText_ChoiceBand[] = _("{STRING 19} erlaubt\nnur den Einsatz von {STRING 17}!\p");
+const u8 BattleText_FocusSash[] = _("{GOOD_LEGENDARY} hält\nmit Hilfe von\l{STRING 19} durch!");
+const u8 BattleText_Terminator2[] = _("");
+const u8 BattleText_WallyBall[] = _("Nun muss man einen BALL werfen, oder?\nIch... Ich werde mein Bestes geben!");
+const u8 BattleText_StartEvo[] = _("Hey?\n{STR_VAR_1} entwickelt sich!");
+const u8 BattleText_FinishEvo[] = _("Glückwunsch! Dein {STR_VAR_1}\nwurde zu {STR_VAR_2}!{UNKNOWN_A}\p");
+const u8 BattleText_StopEvo[] = _("Hm? Die Entwicklung\nwurde abgebrochen!\p");
+const u8 BattleText_OtherMenu[] = _("Was soll\n{STRING 15} tun?");
+const u8 BattleText_PlayerMenu[] = _("Was wird {STRING 32}\ntun?");
+const u8 BattleText_WallyMenu[] = _("Was wird\nHEIKO tun?");
+const u8 BattleText_LinkStandby[] = _("{PAUSE 16}Verbindung...");
+const u8 BattleText_MenuOptions[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}KAMPF{CLEAR_TO 46}BEUTEL\nPOKéMON{CLEAR_TO 46}FLUCHT");
+const u8 BattleText_MenuOptionsSafari[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}BALL{CLEAR_TO 46}{POKEBLOCK}\nNÄHER{CLEAR_TO 46}FLUCHT");
+const u8 BattleText_PP[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}AP\nTYP/");
+const u8 BattleText_Format[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}");
+const u8 BattleText_ForgetMove[] = _("{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}{PALETTE 5}Welche Attacke soll vergessen werden?");
+const u8 BattleText_YesNo[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}Ja\nNein");
+const u8 BattleText_SwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}\nWohin?");
+const u8 BattleText_Format2[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}");
+const u8 BattleText_RightArrow[] = _("{RIGHT_ARROW}");
+const u8 BattleText_Plus[] = _("+");
+const u8 BattleText_Dash[] = _("-");
+const u8 BattleText_HP[] = _("KP ");
+const u8 BattleText_Attack[] = _("ANGR. ");
+const u8 BattleText_Defense[] = _("VERT.");
+const u8 BattleText_SpAtk[] = _("SP.ANG.");
+const u8 BattleText_SpDef[] = _("SP.VER.");
+const u8 BattleText_SafariBalls[] = _("{HIGHLIGHT RED}SAFARIBÄLLE");
+const u8 BattleText_SafariBallsLeft[] = _("{HIGHLIGHT RED}Übrig: ");
+const u8 BattleText_HighlightRed[] = _("{HIGHLIGHT RED}");
+const u8 BattleText_Sleep[] = _("Schlaf");
+const u8 BattleText_PoisonStatus[] = _("Gift");
+const u8 BattleText_Burn[] = _("Verbrennung");
+const u8 BattleText_Paralysis[] = _("Paralyse");
+const u8 BattleText_IceStatus[] = _("Eis");
+const u8 BattleText_Confusion[] = _("Verwirrung");
+const u8 BattleText_Love[] = _("Liebe");
+const u8 BattleText_Format3[] = _(" und ");
+const u8 BattleText_Format4[] = _(", ");
+const u8 BattleText_Format5[] = _(" ");
+const u8 BattleText_Format6[] = _("\l");
+const u8 BattleText_Format7[] = _("\n");
+const u8 BattleText_Format8[] = _("sind");
+const u8 BattleText_Format9[] = _("sind");
+const u8 gBadEggNickname[] = _("Schl. EI");
+const u8 BattleText_Wally[] = _("HEIKO");
+const u8 BattleText_Win[] = _("{HIGHLIGHT TRANSPARENT}Sieg");
+const u8 BattleText_Loss[] = _("{HIGHLIGHT TRANSPARENT}Ndrl.");
+const u8 BattleText_Tie[] = _("{HIGHLIGHT TRANSPARENT}Patt");
+const u8 BattleText_Format10[] = _(" ist");
+const u8 BattleText_Format11[] = _("");
+const u8 BattleText_Normal[] = _("eine NORMALE Att.");
+const u8 BattleText_Fighting[] = _("eine KAMPF-Att.");
+const u8 BattleText_Flying[] = _("eine FLUG-Att.");
+const u8 BattleText_Poison[] = _("eine GIFT-Att.");
+const u8 BattleText_Ground[] = _("eine BODEN-Att.");
+const u8 BattleText_Rock[] = _("eine GESTEINS-Att.");
+const u8 BattleText_Bug[] = _("eine KÄFER-Att.");
+const u8 BattleText_Ghost[] = _("eine GEIST-Att.");
+const u8 BattleText_Steel[] = _("eine STAHL-Att.");
+const u8 BattleText_Typeless[] = _("eine ???-Attacke");
+const u8 BattleText_Fire[] = _("eine FEUER-Att.");
+const u8 BattleText_Water[] = _("eine WASSER-Att.");
+const u8 BattleText_Grass[] = _("eine PFLANZEN-Att.");
+const u8 BattleText_Electric[] = _("eine ELEKTRO-Att.");
+const u8 BattleText_Psychic[] = _("eine PSYCHO-Att.");
+const u8 BattleText_Ice[] = _("eine EIS-Att.");
+const u8 BattleText_Dragon[] = _("eine DRACHEN-Att.");
+const u8 BattleText_Dark[] = _("eine UNLICHT-Att.");
+
+const u8 *const gUnknown_08400F58[] =
+{
+ BattleStatText_HP,
+ BattleStatText_Attack,
+ BattleStatText_Defense,
+ BattleStatText_Speed,
+ BattleStatText_SpAtk,
+ BattleStatText_SpDef,
+ BattleStatText_Accuracy,
+ BattleStatText_Evasion,
+};
+
+const u8 *const gUnknown_08400F78[] =
+{
+ ContestStatText_TooSpicy,
+ ContestStatText_TooDry,
+ ContestStatText_TooSweet,
+ ContestStatText_TooBitter,
+ ContestStatText_TooSour,
+};
+
+const u8 *const gBattleStringsTable[] =
+{
+ BattleText_UnknownString,
+ BattleText_GainExpPoints,
+ BattleText_GrewLevel,
+ BattleText_LearnedMove,
+ BattleText_TryingToLearnMove,
+ BattleText_CantLearnMore,
+ BattleText_DeleteMove,
+ BattleText_DeletedMove,
+ BattleText_StopLearning,
+ BattleText_DidNotLearn,
+ BattleText_LearnedMove2,
+ BattleText_AttackMissed,
+ BattleText_ProtectedItself,
+ BattleText_StatNoHigher,
+ BattleText_AvoidedDamage,
+ BattleText_DoesntAffect,
+ BattleText_AttackingFainted,
+ BattleText_DefendingFainted,
+ BattleText_WinningPrize,
+ BattleText_OutOfUsablePoke,
+ BattleText_WhitedOut,
+ BattleText_PreventEscape,
+ BattleText_HitMulti,
+ BattleText_FellAsleep,
+ BattleText_MadeAsleep,
+ BattleText_DefendingAsleep,
+ BattleText_AttackingAsleep,
+ BattleText_WasntAffected,
+ BattleText_Poisoned,
+ BattleText_Poisoned2,
+ BattleText_PoisonHurt,
+ BattleText_AlreadyPoisoned,
+ BattleText_BadlyPoisoned,
+ BattleText_EnergyDrained,
+ BattleText_Burned,
+ BattleText_Burned2,
+ BattleText_BurnHurt,
+ BattleText_Frozen,
+ BattleText_Frozen2,
+ BattleText_FrozenSolid,
+ BattleText_DefendingDefrosted,
+ BattleText_AttackingDefrosted,
+ BattleText_Defrosted,
+ BattleText_Paralyzed,
+ BattleText_Paralyzed2,
+ BattleText_Paralyzed3,
+ BattleText_AlreadyParalyzed,
+ BattleText_ParalysisHealed,
+ BattleText_DreamEaten,
+ BattleText_AttackingStatNoHigher,
+ BattleText_DefendingStatNoHigher,
+ BattleText_StoppedWorking,
+ BattleText_StoppedWorking2,
+ BattleText_Confused,
+ BattleText_ConfusionSnapOut,
+ BattleText_BecameConfused,
+ BattleText_AlreadyConfused,
+ BattleText_FellLove,
+ BattleText_InLoveWith,
+ BattleText_ImmobilizedBy,
+ BattleText_BlownAway,
+ BattleText_TypeTransform,
+ BattleText_Flinched,
+ BattleText_RegainedHealth,
+ BattleText_HPFull,
+ BattleText_RaisedSpDef,
+ BattleText_RaisedDefense,
+ BattleText_CoveredVeil,
+ BattleText_SafeguardActive,
+ BattleText_SafeguardFaded,
+ BattleText_WentToSleep,
+ BattleText_SpeltHealthy,
+ BattleText_WhipWhirlwind,
+ BattleText_TookSunlight,
+ BattleText_LoweredHead,
+ BattleText_IsGlowing,
+ BattleText_FlewHigh,
+ BattleText_DugHole,
+ BattleText_SqueezedBind,
+ BattleText_TrappedVortex,
+ BattleText_Wrapped,
+ BattleText_Clamped,
+ BattleText_HurtBy,
+ BattleText_FreedFrom,
+ BattleText_KeptGoingCrash,
+ BattleText_MistShroud,
+ BattleText_MistProtect,
+ BattleText_GetPumped,
+ BattleText_HitRecoil,
+ BattleText_ProtectedItself2,
+ BattleText_SandBuffeted,
+ BattleText_HailStricken,
+ BattleText_WasSeeded,
+ BattleText_EvadedAttack,
+ BattleText_HealthSapped,
+ BattleText_FastAsleep,
+ BattleText_WokeUp,
+ BattleText_UproarAwake,
+ BattleText_UproarWoke,
+ BattleText_UproarCaused,
+ BattleText_UproarMaking,
+ BattleText_CalmedDown,
+ BattleText_UproarCantSleep,
+ BattleText_Stockpiled,
+ BattleText_StockpiledCant,
+ BattleText_UproarCantSleep2,
+ BattleText_UproarKeptAwake,
+ BattleText_StayedAwake,
+ BattleText_StoringEnergy,
+ BattleText_UnleashedEnergy,
+ BattleText_FatigueConfuse,
+ BattleText_PickedUpYen,
+ BattleText_Unaffected,
+ BattleText_Transformed,
+ BattleText_SubMade,
+ BattleText_SubAlready,
+ BattleText_SubTookDamage,
+ BattleText_SubFaded,
+ BattleText_MustRecharge,
+ BattleText_RageBuilding,
+ BattleText_MoveWasDisabled,
+ BattleText_MoveIsDisabled,
+ BattleText_DisabledNoMore,
+ BattleText_EncoreGot,
+ BattleText_EncoreEnded,
+ BattleText_TookAim,
+ BattleText_SketchedMove,
+ BattleText_DestinyBondTake,
+ BattleText_DestinyBondTaken,
+ BattleText_ReducedBy,
+ BattleText_StoleSomething,
+ BattleText_CantEscapeNow,
+ BattleText_NightmareStart,
+ BattleText_NightmareLock,
+ BattleText_CurseLay,
+ BattleText_CurseAfflict,
+ BattleText_SpikesScattered,
+ BattleText_SpikesHurt,
+ BattleText_IdentifiedPoke,
+ BattleText_PerishSongFell,
+ BattleText_BracedItself,
+ BattleText_EnduredHit,
+ BattleText_MagnitudeCount,
+ BattleText_CutHPMaxATK,
+ BattleText_CopyStatChanges,
+ BattleText_GotFreeFrom,
+ BattleText_LeechShed,
+ BattleText_SpikesBlownAway,
+ BattleText_FledBattle,
+ BattleText_ForesawAttack,
+ BattleText_TookAttack,
+ BattleText_PokeAttack,
+ BattleText_CenterAttention,
+ BattleText_ChargingPower,
+ BattleText_NaturePower,
+ BattleText_StatusNormal,
+ BattleText_NoMovesLeft,
+ BattleText_TormentSubject,
+ BattleText_TormentNoUse,
+ BattleText_TightenFocus,
+ BattleText_TauntFell,
+ BattleText_TauntNoUse,
+ BattleText_ReadyToHelp,
+ BattleText_SwitchedItems,
+ BattleText_CopiedObject,
+ BattleText_WishMade,
+ BattleText_WishTrue,
+ BattleText_PlantedRoots,
+ BattleText_AbsorbNutrients,
+ BattleText_AnchoredItself,
+ BattleText_DrowsyMade,
+ BattleText_KnockedOffItem,
+ BattleText_AbilitySwap,
+ BattleText_SealedMove,
+ BattleText_SealedNoUse,
+ BattleText_GrudgeBear,
+ BattleText_GrudgeLosePP,
+ BattleText_ShroudedItself,
+ BattleText_MagicCoatBounce,
+ BattleText_AwaitMove,
+ BattleText_SnatchedMove,
+ BattleText_RainMade,
+ BattleText_SpeedRisen,
+ BattleText_ProtectedBy,
+ BattleText_PreventedBy,
+ BattleText_HPRestoredUsing,
+ BattleText_MadeType,
+ BattleText_PreventedPara,
+ BattleText_PreventedRomance,
+ BattleText_PreventedPoison,
+ BattleText_PreventedConfusion,
+ BattleText_RaisedFirePower,
+ BattleText_AnchorsItself,
+ BattleText_CutsAttack,
+ BattleText_PreventedStatLoss,
+ BattleText_HurtOther,
+ BattleText_Traced,
+ BattleText_Sharply,
+ BattleText_Rose,
+ BattleText_Harshly,
+ BattleText_Fell,
+ BattleText_UnknownString7,
+ BattleText_UnknownString3,
+ BattleText_UnknownString5,
+ BattleText_UnknownString6,
+ BattleText_Critical,
+ BattleText_GrandSlam,
+ BattleText_MoveForget123,
+ BattleText_MoveForgetAnd,
+ BattleText_NotEffective,
+ BattleText_SuperEffective,
+ BattleText_GotAwaySafely,
+ BattleText_FledWild,
+ BattleText_NoRunning,
+ BattleText_CantEscape2,
+ BattleText_BirchDontLeaveMe,
+ BattleText_Nothing,
+ BattleText_Failed,
+ BattleText_HurtItself,
+ BattleText_MirrorFail,
+ BattleText_RainStart,
+ BattleText_PourStart,
+ BattleText_RainCont1,
+ BattleText_PourCont,
+ BattleText_RainStop,
+ BattleText_SandBrewed,
+ BattleText_SandRages,
+ BattleText_SandSubsided,
+ BattleText_SunBright,
+ BattleText_SunStrong,
+ BattleText_SunFaded,
+ BattleText_HailStart,
+ BattleText_HailCont,
+ BattleText_HailStop,
+ BattleText_SpitUpFail,
+ BattleText_SwallowFail,
+ BattleText_WindHeatWave,
+ BattleText_StatElim,
+ BattleText_CoinScatter,
+ BattleText_SubWeak,
+ BattleText_PainSplit,
+ BattleText_BellChime,
+ BattleText_PerishSong,
+ BattleText_NoPP1,
+ BattleText_NoPP2,
+ BattleText_Used1,
+ BattleText_TutorialUsed,
+ BattleText_BlockBall,
+ BattleText_DontBeAThief,
+ BattleText_DodgeBall,
+ BattleText_MissPoke,
+ BattleText_BallBrokeOhNo,
+ BattleText_BallBrokeAppeared,
+ BattleText_BallBrokeAlmost,
+ BattleText_BallBrokeSoClose,
+ BattleText_BallCaught1,
+ BattleText_BallCaught2,
+ BattleText_GiveNickname,
+ BattleText_SentToPC,
+ BattleText_AddedToDex,
+ BattleText_Raining,
+ BattleText_Sandstorm,
+ BattleText_CantEscape,
+ BattleText_IgnoredOrdersSLP,
+ BattleText_IgnoredOrders,
+ BattleText_BeganNap,
+ BattleText_LoafingAround,
+ BattleText_WontObey,
+ BattleText_TurnedAway,
+ BattleText_NotNotice,
+ BattleText_WillSwitch,
+ BattleText_CreptCloser,
+ BattleText_CantGetCloser,
+ BattleText_WatchingCarefully,
+ BattleText_CuriousAbout,
+ BattleText_EnthralledBy,
+ BattleText_IgnoredThing,
+ BattleText_ThrewBlock,
+ BattleText_SafariOver,
+ BattleText_CuredParalysis,
+ BattleText_CuredPoison,
+ BattleText_CuredBurn,
+ BattleText_CuredFreeze,
+ BattleText_CuredSleep,
+ BattleText_CuredConfusion,
+ BattleText_CuredStatus,
+ BattleText_RestoredHealth,
+ BattleText_RestoredPP,
+ BattleText_RestoredStatus,
+ BattleText_RestoredHPLittle,
+ BattleText_ChoiceBand,
+ BattleText_FocusSash,
+ BattleText_Terminator2,
+ BattleText_PreventedBurn,
+ BattleText_BlocksOther,
+ BattleText_RestoredHPByItem,
+ BattleText_WhipSandstorm,
+ BattleText_PreventedLoss,
+ BattleText_InfatuatedPoke,
+ BattleText_MadeIneffective,
+ BattleText_CuredProblem,
+ BattleText_OozeSuckup,
+ BattleText_Transformed2,
+ BattleText_ElecWeakened,
+ BattleText_FireWeakened,
+ BattleText_HidUnderwater,
+ BattleText_SprangUp,
+ BattleText_CantForgetHM,
+ BattleText_FoundOne,
+ BattleText_PlayerDefeatedTrainer2,
+ BattleText_SoothingAroma,
+ BattleText_CantUseItems,
+ BattleText_UnknownString2,
+ BattleText_UnknownString4,
+ BattleText_HustleUse,
+ BattleText_MadeUseless,
+ BattleText_SandTombTrapped,
+ BattleText_Terminator,
+ BattleText_BoostedExp,
+ BattleText_SunIntensified,
+ BattleText_GroundMoveNegate,
+ BattleText_WallyBall,
+ BattleText_TookAttack2,
+ BattleText_ChoseDestiny,
+ BattleText_LostFocus,
+ BattleText_UseNext,
+ BattleText_FledUsingItem,
+ BattleText_FledUsingOther,
+ BattleText_DraggedOut,
+ BattleText_PreventedOther,
+ BattleText_NormalizedStatus,
+ BattleText_Used2,
+ BattleText_BoxFull,
+ BattleText_AvoidedAttack,
+ BattleText_MadeIneffective2,
+ BattleText_PreventedFlinching,
+ BattleText_AlreadyBurned,
+ BattleText_StatNoLower,
+ BattleText_BlocksOther2,
+ BattleText_WoreOff,
+ BattleText_RaisedDefenseLittle,
+ BattleText_RaisedSpDefLittle,
+ BattleText_BrokeWall,
+ BattleText_PreventedOther2,
+ BattleText_CuredOfProblem,
+ BattleText_AttackingCantEscape,
+ BattleText_Obtained1,
+ BattleText_Obtained2,
+ BattleText_Obtained3,
+ BattleText_NoEffect,
+ BattleText_NoEffectOn,
+};
+
+// below are lists of battle string enums and NOT pointers to the strings.
+const u16 gMissStrings[] =
+{
+ BATTLE_TEXT_AttackMissed,
+ BATTLE_TEXT_ProtectedItself,
+ BATTLE_TEXT_AvoidedAttack,
+ BATTLE_TEXT_AvoidedDamage,
+ BATTLE_TEXT_GroundMoveNegate,
+};
+
+const u16 BattleTextList_401512[] =
+{
+ BATTLE_TEXT_CantEscape2,
+ BATTLE_TEXT_BirchDontLeaveMe,
+ BATTLE_TEXT_PreventEscape,
+ BATTLE_TEXT_CantEscape,
+ BATTLE_TEXT_AttackingCantEscape,
+};
+
+const u16 BattleTextList_40151C[] =
+{
+ BATTLE_TEXT_RainStart,
+ BATTLE_TEXT_PourStart,
+ BATTLE_TEXT_Failed,
+ BATTLE_TEXT_SandBrewed,
+ BATTLE_TEXT_SunBright,
+ BATTLE_TEXT_HailStart,
+};
+
+const u16 BattleTextList_401528[] =
+{
+ BATTLE_TEXT_SandRages,
+ BATTLE_TEXT_HailCont,
+};
+
+const u16 BattleTextList_40152C[] =
+{
+ BATTLE_TEXT_SandBuffeted,
+ BATTLE_TEXT_HailStricken,
+};
+
+const u16 BattleTextList_401530[] =
+{
+ BATTLE_TEXT_SandSubsided,
+ BATTLE_TEXT_HailStop,
+};
+
+const u16 BattleTextList_401534[] =
+{
+ BATTLE_TEXT_RainCont1,
+ BATTLE_TEXT_PourCont,
+ BATTLE_TEXT_RainStop,
+};
+
+const u16 BattleTextList_40153A[] =
+{
+ BATTLE_TEXT_ProtectedItself2,
+ BATTLE_TEXT_BracedItself,
+ BATTLE_TEXT_Failed,
+};
+
+const u16 BattleTextList_401540[] =
+{
+ BATTLE_TEXT_Failed,
+ BATTLE_TEXT_RaisedDefense,
+ BATTLE_TEXT_RaisedDefenseLittle,
+ BATTLE_TEXT_RaisedSpDef,
+ BATTLE_TEXT_RaisedSpDefLittle,
+ BATTLE_TEXT_CoveredVeil,
+};
+
+const u16 BattleTextList_40154C[] =
+{
+ BATTLE_TEXT_WasSeeded,
+ BATTLE_TEXT_EvadedAttack,
+ BATTLE_TEXT_DoesntAffect,
+ BATTLE_TEXT_HealthSapped,
+ BATTLE_TEXT_OozeSuckup,
+};
+
+const u16 BattleTextList_401556[] =
+{
+ BATTLE_TEXT_WentToSleep,
+ BATTLE_TEXT_SpeltHealthy,
+};
+
+const u16 BattleTextList_40155A[] =
+{
+ BATTLE_TEXT_UproarMaking,
+ BATTLE_TEXT_CalmedDown,
+};
+
+const u16 BattleTextList_40155E[] =
+{
+ BATTLE_TEXT_Stockpiled,
+ BATTLE_TEXT_StockpiledCant,
+};
+
+const u16 BattleTextList_401562[] =
+{
+ BATTLE_TEXT_WokeUp,
+ BATTLE_TEXT_UproarWoke,
+};
+
+const u16 BattleTextList_401566[] =
+{
+ BATTLE_TEXT_SwallowFail,
+ BATTLE_TEXT_HPFull,
+};
+
+const u16 BattleTextList_40156A[] =
+{
+ BATTLE_TEXT_UproarCantSleep2,
+ BATTLE_TEXT_UproarKeptAwake,
+ BATTLE_TEXT_StayedAwake,
+};
+
+const u16 BattleTextList_401570[] =
+{
+ BATTLE_TEXT_UnknownString7,
+ BATTLE_TEXT_UnknownString3,
+ BATTLE_TEXT_AttackingStatNoHigher,
+ BATTLE_TEXT_Terminator2,
+ BATTLE_TEXT_UnknownString4,
+ BATTLE_TEXT_HustleUse,
+};
+
+const u16 BattleTextList_40157C[] =
+{
+ BATTLE_TEXT_UnknownString5,
+ BATTLE_TEXT_UnknownString6,
+ BATTLE_TEXT_DefendingStatNoHigher,
+ BATTLE_TEXT_Terminator2,
+};
+
+const u16 BattleTextList_401584[] =
+{
+ BATTLE_TEXT_WhipWhirlwind,
+ BATTLE_TEXT_TookSunlight,
+ BATTLE_TEXT_LoweredHead,
+ BATTLE_TEXT_IsGlowing,
+ BATTLE_TEXT_FlewHigh,
+ BATTLE_TEXT_DugHole,
+ BATTLE_TEXT_HidUnderwater,
+ BATTLE_TEXT_SprangUp,
+};
+
+const u16 BattleTextList_401594[] =
+{
+ BATTLE_TEXT_SqueezedBind,
+ BATTLE_TEXT_Wrapped,
+ BATTLE_TEXT_TrappedVortex,
+ BATTLE_TEXT_Clamped,
+ BATTLE_TEXT_TrappedVortex,
+ BATTLE_TEXT_SandTombTrapped,
+};
+
+const u16 BattleTextList_4015A0[] =
+{
+ BATTLE_TEXT_MistShroud,
+ BATTLE_TEXT_Failed,
+};
+
+const u16 BattleTextList_4015A4[] =
+{
+ BATTLE_TEXT_GetPumped,
+ BATTLE_TEXT_Failed,
+};
+
+const u16 BattleTextList_4015A8[] =
+{
+ BATTLE_TEXT_Transformed,
+ BATTLE_TEXT_Failed,
+};
+
+const u16 BattleTextList_4015AC[] =
+{
+ BATTLE_TEXT_SubMade,
+ BATTLE_TEXT_SubWeak,
+};
+
+const u16 BattleTextList_4015B0[] =
+{
+ BATTLE_TEXT_Poisoned,
+ BATTLE_TEXT_Poisoned2,
+};
+
+const u16 BattleTextList_4015B4[] =
+{
+ BATTLE_TEXT_Paralyzed,
+ BATTLE_TEXT_Paralyzed2,
+};
+
+const u16 BattleTextList_4015B8[] =
+{
+ BATTLE_TEXT_FellAsleep,
+ BATTLE_TEXT_MadeAsleep,
+};
+
+const u16 BattleTextList_4015BC[] =
+{
+ BATTLE_TEXT_Burned,
+ BATTLE_TEXT_Burned2,
+};
+
+const u16 BattleTextList_4015C0[] =
+{
+ BATTLE_TEXT_Frozen,
+ BATTLE_TEXT_Frozen2,
+};
+
+const u16 BattleTextList_4015C4[] =
+{
+ BATTLE_TEXT_AttackingDefrosted,
+ BATTLE_TEXT_Defrosted,
+};
+
+const u16 BattleTextList_4015C8[] =
+{
+ BATTLE_TEXT_AttackMissed,
+ BATTLE_TEXT_Unaffected,
+ BATTLE_TEXT_FellLove,
+ BATTLE_TEXT_InfatuatedPoke,
+};
+
+const u16 BattleTextList_4015D0[] =
+{
+ BATTLE_TEXT_EnergyDrained,
+ BATTLE_TEXT_OozeSuckup,
+};
+
+const u16 BattleTextList_4015D4[] =
+{
+ BATTLE_TEXT_ElecWeakened,
+ BATTLE_TEXT_FireWeakened,
+};
+
+const u16 BattleTextList_4015D8[] =
+{
+ BATTLE_TEXT_BellChime,
+ BATTLE_TEXT_BellChime,
+ BATTLE_TEXT_BellChime,
+ BATTLE_TEXT_BellChime,
+ BATTLE_TEXT_SoothingAroma,
+};
+
+const u16 BattleTextList_4015E2[] =
+{
+ BATTLE_TEXT_ForesawAttack,
+ BATTLE_TEXT_ChoseDestiny,
+};
+
+const u16 BattleTextList_4015E6[] =
+{
+ BATTLE_TEXT_BallBrokeOhNo,
+ BATTLE_TEXT_BallBrokeAppeared,
+ BATTLE_TEXT_BallBrokeAlmost,
+ BATTLE_TEXT_BallBrokeSoClose,
+};
+
+const u16 BattleTextList_4015EE[] =
+{
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Sandstorm,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_SunStrong,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+};
+
+const u16 BattleTextList_40160E[] =
+{
+ BATTLE_TEXT_LoafingAround,
+ BATTLE_TEXT_WontObey,
+ BATTLE_TEXT_TurnedAway,
+ BATTLE_TEXT_NotNotice,
+};
+
+const u16 BattleTextList_401616[] =
+{
+ BATTLE_TEXT_CreptCloser,
+ BATTLE_TEXT_CantGetCloser,
+};
+
+const u16 BattleTextList_40161A[] =
+{
+ BATTLE_TEXT_CuriousAbout,
+ BATTLE_TEXT_EnthralledBy,
+ BATTLE_TEXT_IgnoredThing,
+};
+
+const u16 BattleTextList_401620[] =
+{
+ BATTLE_TEXT_CuredConfusion,
+ BATTLE_TEXT_CuredParalysis,
+ BATTLE_TEXT_CuredFreeze,
+ BATTLE_TEXT_CuredBurn,
+ BATTLE_TEXT_CuredPoison,
+ BATTLE_TEXT_CuredSleep,
+};
+
+const u16 BattleTextList_40162C[] =
+{
+ BATTLE_TEXT_CuredStatus,
+ BATTLE_TEXT_NormalizedStatus,
+};
+
+const u16 BattleTextList_401630[] =
+{
+ BATTLE_TEXT_PreventedBurn,
+ BATTLE_TEXT_PreventedOther2,
+ BATTLE_TEXT_NoEffectOn,
+};
+
+const u16 BattleTextList_401636[] =
+{
+ BATTLE_TEXT_PreventedPara,
+ BATTLE_TEXT_PreventedOther2,
+ BATTLE_TEXT_NoEffectOn,
+};
+
+const u16 BattleTextList_40163C[] =
+{
+ BATTLE_TEXT_PreventedPoison,
+ BATTLE_TEXT_PreventedOther2,
+ BATTLE_TEXT_NoEffectOn,
+};
+
+const u16 BattleTextList_401642[] =
+{
+ BATTLE_TEXT_Obtained1,
+ BATTLE_TEXT_Obtained2,
+ BATTLE_TEXT_Obtained3,
+};
+
+const u16 BattleTextList_401648[] =
+{
+ BATTLE_TEXT_RaisedFirePower,
+ BATTLE_TEXT_MadeIneffective,
+};
+
+const u16 gTrappingMoves[] =
+{
+ MOVE_BIND,
+ MOVE_WRAP,
+ MOVE_FIRE_SPIN,
+ MOVE_CLAMP,
+ MOVE_WHIRLPOOL,
+ MOVE_SAND_TOMB,
+ 0xFFFF,
+};
+
+const u8 *const gUnknown_0840165C[] =
+{
+ BattleText_HP,
+ BattleText_SpAtk,
+ BattleText_Attack,
+ BattleText_SpDef,
+ BattleText_Defense,
+ BattleStatText_Speed,
+};
+
+const u8 *const gUnknown_08401674[] =
+{
+ BattleText_Normal,
+ BattleText_Fighting,
+ BattleText_Flying,
+ BattleText_Poison,
+ BattleText_Ground,
+ BattleText_Rock,
+ BattleText_Bug,
+ BattleText_Ghost,
+ BattleText_Steel,
+ BattleText_Typeless,
+ BattleText_Fire,
+ BattleText_Water,
+ BattleText_Grass,
+ BattleText_Electric,
+ BattleText_Psychic,
+ BattleText_Ice,
+ BattleText_Dragon,
+ BattleText_Dark,
+};
diff --git a/src/data/battle_strings_en.h b/src/data/battle_strings_en.h
new file mode 100755
index 000000000..7f0481b50
--- /dev/null
+++ b/src/data/battle_strings_en.h
@@ -0,0 +1,1612 @@
+#include "moves.h"
+
+enum
+{
+ BATTLE_TEXT_UnknownString = 12,
+ BATTLE_TEXT_GainExpPoints,
+ BATTLE_TEXT_GrewLevel,
+ BATTLE_TEXT_LearnedMove,
+ BATTLE_TEXT_TryingToLearnMove,
+ BATTLE_TEXT_CantLearnMore,
+ BATTLE_TEXT_DeleteMove,
+ BATTLE_TEXT_DeletedMove,
+ BATTLE_TEXT_StopLearning,
+ BATTLE_TEXT_DidNotLearn,
+ BATTLE_TEXT_LearnedMove2,
+ BATTLE_TEXT_AttackMissed,
+ BATTLE_TEXT_ProtectedItself,
+ BATTLE_TEXT_StatNoHigher,
+ BATTLE_TEXT_AvoidedDamage,
+ BATTLE_TEXT_DoesntAffect,
+ BATTLE_TEXT_AttackingFainted,
+ BATTLE_TEXT_DefendingFainted,
+ BATTLE_TEXT_WinningPrize,
+ BATTLE_TEXT_OutOfUsablePoke,
+ BATTLE_TEXT_WhitedOut,
+ BATTLE_TEXT_PreventEscape,
+ BATTLE_TEXT_HitMulti,
+ BATTLE_TEXT_FellAsleep,
+ BATTLE_TEXT_MadeAsleep,
+ BATTLE_TEXT_DefendingAsleep,
+ BATTLE_TEXT_AttackingAsleep,
+ BATTLE_TEXT_WasntAffected,
+ BATTLE_TEXT_Poisoned,
+ BATTLE_TEXT_Poisoned2,
+ BATTLE_TEXT_PoisonHurt,
+ BATTLE_TEXT_AlreadyPoisoned,
+ BATTLE_TEXT_BadlyPoisoned,
+ BATTLE_TEXT_EnergyDrained,
+ BATTLE_TEXT_Burned,
+ BATTLE_TEXT_Burned2,
+ BATTLE_TEXT_BurnHurt,
+ BATTLE_TEXT_Frozen,
+ BATTLE_TEXT_Frozen2,
+ BATTLE_TEXT_FrozenSolid,
+ BATTLE_TEXT_DefendingDefrosted,
+ BATTLE_TEXT_AttackingDefrosted,
+ BATTLE_TEXT_Defrosted,
+ BATTLE_TEXT_Paralyzed,
+ BATTLE_TEXT_Paralyzed2,
+ BATTLE_TEXT_Paralyzed3,
+ BATTLE_TEXT_AlreadyParalyzed,
+ BATTLE_TEXT_ParalysisHealed,
+ BATTLE_TEXT_DreamEaten,
+ BATTLE_TEXT_AttackingStatNoHigher,
+ BATTLE_TEXT_DefendingStatNoHigher,
+ BATTLE_TEXT_StoppedWorking,
+ BATTLE_TEXT_StoppedWorking2,
+ BATTLE_TEXT_Confused,
+ BATTLE_TEXT_ConfusionSnapOut,
+ BATTLE_TEXT_BecameConfused,
+ BATTLE_TEXT_AlreadyConfused,
+ BATTLE_TEXT_FellLove,
+ BATTLE_TEXT_InLoveWith,
+ BATTLE_TEXT_ImmobilizedBy,
+ BATTLE_TEXT_BlownAway,
+ BATTLE_TEXT_TypeTransform,
+ BATTLE_TEXT_Flinched,
+ BATTLE_TEXT_RegainedHealth,
+ BATTLE_TEXT_HPFull,
+ BATTLE_TEXT_RaisedSpDef,
+ BATTLE_TEXT_RaisedDefense,
+ BATTLE_TEXT_CoveredVeil,
+ BATTLE_TEXT_SafeguardActive,
+ BATTLE_TEXT_SafeguardFaded,
+ BATTLE_TEXT_WentToSleep,
+ BATTLE_TEXT_SpeltHealthy,
+ BATTLE_TEXT_WhipWhirlwind,
+ BATTLE_TEXT_TookSunlight,
+ BATTLE_TEXT_LoweredHead,
+ BATTLE_TEXT_IsGlowing,
+ BATTLE_TEXT_FlewHigh,
+ BATTLE_TEXT_DugHole,
+ BATTLE_TEXT_SqueezedBind,
+ BATTLE_TEXT_TrappedVortex,
+ BATTLE_TEXT_Wrapped,
+ BATTLE_TEXT_Clamped,
+ BATTLE_TEXT_HurtBy,
+ BATTLE_TEXT_FreedFrom,
+ BATTLE_TEXT_KeptGoingCrash,
+ BATTLE_TEXT_MistShroud,
+ BATTLE_TEXT_MistProtect,
+ BATTLE_TEXT_GetPumped,
+ BATTLE_TEXT_HitRecoil,
+ BATTLE_TEXT_ProtectedItself2,
+ BATTLE_TEXT_SandBuffeted,
+ BATTLE_TEXT_HailStricken,
+ BATTLE_TEXT_WasSeeded,
+ BATTLE_TEXT_EvadedAttack,
+ BATTLE_TEXT_HealthSapped,
+ BATTLE_TEXT_FastAsleep,
+ BATTLE_TEXT_WokeUp,
+ BATTLE_TEXT_UproarAwake,
+ BATTLE_TEXT_UproarWoke,
+ BATTLE_TEXT_UproarCaused,
+ BATTLE_TEXT_UproarMaking,
+ BATTLE_TEXT_CalmedDown,
+ BATTLE_TEXT_UproarCantSleep,
+ BATTLE_TEXT_Stockpiled,
+ BATTLE_TEXT_StockpiledCant,
+ BATTLE_TEXT_UproarCantSleep2,
+ BATTLE_TEXT_UproarKeptAwake,
+ BATTLE_TEXT_StayedAwake,
+ BATTLE_TEXT_StoringEnergy,
+ BATTLE_TEXT_UnleashedEnergy,
+ BATTLE_TEXT_FatigueConfuse,
+ BATTLE_TEXT_PickedUpYen,
+ BATTLE_TEXT_Unaffected,
+ BATTLE_TEXT_Transformed,
+ BATTLE_TEXT_SubMade,
+ BATTLE_TEXT_SubAlready,
+ BATTLE_TEXT_SubTookDamage,
+ BATTLE_TEXT_SubFaded,
+ BATTLE_TEXT_MustRecharge,
+ BATTLE_TEXT_RageBuilding,
+ BATTLE_TEXT_MoveWasDisabled,
+ BATTLE_TEXT_MoveIsDisabled,
+ BATTLE_TEXT_DisabledNoMore,
+ BATTLE_TEXT_EncoreGot,
+ BATTLE_TEXT_EncoreEnded,
+ BATTLE_TEXT_TookAim,
+ BATTLE_TEXT_SketchedMove,
+ BATTLE_TEXT_DestinyBondTake,
+ BATTLE_TEXT_DestinyBondTaken,
+ BATTLE_TEXT_ReducedBy,
+ BATTLE_TEXT_StoleSomething,
+ BATTLE_TEXT_CantEscapeNow,
+ BATTLE_TEXT_NightmareStart,
+ BATTLE_TEXT_NightmareLock,
+ BATTLE_TEXT_CurseLay,
+ BATTLE_TEXT_CurseAfflict,
+ BATTLE_TEXT_SpikesScattered,
+ BATTLE_TEXT_SpikesHurt,
+ BATTLE_TEXT_IdentifiedPoke,
+ BATTLE_TEXT_PerishSongFell,
+ BATTLE_TEXT_BracedItself,
+ BATTLE_TEXT_EnduredHit,
+ BATTLE_TEXT_MagnitudeCount,
+ BATTLE_TEXT_CutHPMaxATK,
+ BATTLE_TEXT_CopyStatChanges,
+ BATTLE_TEXT_GotFreeFrom,
+ BATTLE_TEXT_LeechShed,
+ BATTLE_TEXT_SpikesBlownAway,
+ BATTLE_TEXT_FledBattle,
+ BATTLE_TEXT_ForesawAttack,
+ BATTLE_TEXT_TookAttack,
+ BATTLE_TEXT_PokeAttack,
+ BATTLE_TEXT_CenterAttention,
+ BATTLE_TEXT_ChargingPower,
+ BATTLE_TEXT_NaturePower,
+ BATTLE_TEXT_StatusNormal,
+ BATTLE_TEXT_NoMovesLeft,
+ BATTLE_TEXT_TormentSubject,
+ BATTLE_TEXT_TormentNoUse,
+ BATTLE_TEXT_TightenFocus,
+ BATTLE_TEXT_TauntFell,
+ BATTLE_TEXT_TauntNoUse,
+ BATTLE_TEXT_ReadyToHelp,
+ BATTLE_TEXT_SwitchedItems,
+ BATTLE_TEXT_CopiedObject,
+ BATTLE_TEXT_WishMade,
+ BATTLE_TEXT_WishTrue,
+ BATTLE_TEXT_PlantedRoots,
+ BATTLE_TEXT_AbsorbNutrients,
+ BATTLE_TEXT_AnchoredItself,
+ BATTLE_TEXT_DrowsyMade,
+ BATTLE_TEXT_KnockedOffItem,
+ BATTLE_TEXT_AbilitySwap,
+ BATTLE_TEXT_SealedMove,
+ BATTLE_TEXT_SealedNoUse,
+ BATTLE_TEXT_GrudgeBear,
+ BATTLE_TEXT_GrudgeLosePP,
+ BATTLE_TEXT_ShroudedItself,
+ BATTLE_TEXT_MagicCoatBounce,
+ BATTLE_TEXT_AwaitMove,
+ BATTLE_TEXT_SnatchedMove,
+ BATTLE_TEXT_RainMade,
+ BATTLE_TEXT_SpeedRisen,
+ BATTLE_TEXT_ProtectedBy,
+ BATTLE_TEXT_PreventedBy,
+ BATTLE_TEXT_HPRestoredUsing,
+ BATTLE_TEXT_MadeType,
+ BATTLE_TEXT_PreventedPara,
+ BATTLE_TEXT_PreventedRomance,
+ BATTLE_TEXT_PreventedPoison,
+ BATTLE_TEXT_PreventedConfusion,
+ BATTLE_TEXT_RaisedFirePower,
+ BATTLE_TEXT_AnchorsItself,
+ BATTLE_TEXT_CutsAttack,
+ BATTLE_TEXT_PreventedStatLoss,
+ BATTLE_TEXT_HurtOther,
+ BATTLE_TEXT_Traced,
+ BATTLE_TEXT_Sharply,
+ BATTLE_TEXT_Rose,
+ BATTLE_TEXT_Harshly,
+ BATTLE_TEXT_Fell,
+ BATTLE_TEXT_UnknownString7,
+ BATTLE_TEXT_UnknownString3,
+ BATTLE_TEXT_UnknownString5,
+ BATTLE_TEXT_UnknownString6,
+ BATTLE_TEXT_Critical,
+ BATTLE_TEXT_GrandSlam,
+ BATTLE_TEXT_MoveForget123,
+ BATTLE_TEXT_MoveForgetAnd,
+ BATTLE_TEXT_NotEffective,
+ BATTLE_TEXT_SuperEffective,
+ BATTLE_TEXT_GotAwaySafely,
+ BATTLE_TEXT_FledWild,
+ BATTLE_TEXT_NoRunning,
+ BATTLE_TEXT_CantEscape2,
+ BATTLE_TEXT_BirchDontLeaveMe,
+ BATTLE_TEXT_Nothing,
+ BATTLE_TEXT_Failed,
+ BATTLE_TEXT_HurtItself,
+ BATTLE_TEXT_MirrorFail,
+ BATTLE_TEXT_RainStart,
+ BATTLE_TEXT_PourStart,
+ BATTLE_TEXT_RainCont1,
+ BATTLE_TEXT_PourCont,
+ BATTLE_TEXT_RainStop,
+ BATTLE_TEXT_SandBrewed,
+ BATTLE_TEXT_SandRages,
+ BATTLE_TEXT_SandSubsided,
+ BATTLE_TEXT_SunBright,
+ BATTLE_TEXT_SunStrong,
+ BATTLE_TEXT_SunFaded,
+ BATTLE_TEXT_HailStart,
+ BATTLE_TEXT_HailCont,
+ BATTLE_TEXT_HailStop,
+ BATTLE_TEXT_SpitUpFail,
+ BATTLE_TEXT_SwallowFail,
+ BATTLE_TEXT_WindHeatWave,
+ BATTLE_TEXT_StatElim,
+ BATTLE_TEXT_CoinScatter,
+ BATTLE_TEXT_SubWeak,
+ BATTLE_TEXT_PainSplit,
+ BATTLE_TEXT_BellChime,
+ BATTLE_TEXT_PerishSong,
+ BATTLE_TEXT_NoPP1,
+ BATTLE_TEXT_NoPP2,
+ BATTLE_TEXT_Used1,
+ BATTLE_TEXT_TutorialUsed,
+ BATTLE_TEXT_BlockBall,
+ BATTLE_TEXT_DontBeAThief,
+ BATTLE_TEXT_DodgeBall,
+ BATTLE_TEXT_MissPoke,
+ BATTLE_TEXT_BallBrokeOhNo,
+ BATTLE_TEXT_BallBrokeAppeared,
+ BATTLE_TEXT_BallBrokeAlmost,
+ BATTLE_TEXT_BallBrokeSoClose,
+ BATTLE_TEXT_BallCaught1,
+ BATTLE_TEXT_BallCaught2,
+ BATTLE_TEXT_GiveNickname,
+ BATTLE_TEXT_SentToPC,
+ BATTLE_TEXT_AddedToDex,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Sandstorm,
+ BATTLE_TEXT_CantEscape,
+ BATTLE_TEXT_IgnoredOrdersSLP,
+ BATTLE_TEXT_IgnoredOrders,
+ BATTLE_TEXT_BeganNap,
+ BATTLE_TEXT_LoafingAround,
+ BATTLE_TEXT_WontObey,
+ BATTLE_TEXT_TurnedAway,
+ BATTLE_TEXT_NotNotice,
+ BATTLE_TEXT_WillSwitch,
+ BATTLE_TEXT_CreptCloser,
+ BATTLE_TEXT_CantGetCloser,
+ BATTLE_TEXT_WatchingCarefully,
+ BATTLE_TEXT_CuriousAbout,
+ BATTLE_TEXT_EnthralledBy,
+ BATTLE_TEXT_IgnoredThing,
+ BATTLE_TEXT_ThrewBlock,
+ BATTLE_TEXT_SafariOver,
+ BATTLE_TEXT_CuredParalysis,
+ BATTLE_TEXT_CuredPoison,
+ BATTLE_TEXT_CuredBurn,
+ BATTLE_TEXT_CuredFreeze,
+ BATTLE_TEXT_CuredSleep,
+ BATTLE_TEXT_CuredConfusion,
+ BATTLE_TEXT_CuredStatus,
+ BATTLE_TEXT_RestoredHealth,
+ BATTLE_TEXT_RestoredPP,
+ BATTLE_TEXT_RestoredStatus,
+ BATTLE_TEXT_RestoredHPLittle,
+ BATTLE_TEXT_ChoiceBand,
+ BATTLE_TEXT_FocusSash,
+ BATTLE_TEXT_Terminator2,
+ BATTLE_TEXT_PreventedBurn,
+ BATTLE_TEXT_BlocksOther,
+ BATTLE_TEXT_RestoredHPByItem,
+ BATTLE_TEXT_WhipSandstorm,
+ BATTLE_TEXT_PreventedLoss,
+ BATTLE_TEXT_InfatuatedPoke,
+ BATTLE_TEXT_MadeIneffective,
+ BATTLE_TEXT_CuredProblem,
+ BATTLE_TEXT_OozeSuckup,
+ BATTLE_TEXT_Transformed2,
+ BATTLE_TEXT_ElecWeakened,
+ BATTLE_TEXT_FireWeakened,
+ BATTLE_TEXT_HidUnderwater,
+ BATTLE_TEXT_SprangUp,
+ BATTLE_TEXT_CantForgetHM,
+ BATTLE_TEXT_FoundOne,
+ BATTLE_TEXT_PlayerDefeatedTrainer2,
+ BATTLE_TEXT_SoothingAroma,
+ BATTLE_TEXT_CantUseItems,
+ BATTLE_TEXT_UnknownString2,
+ BATTLE_TEXT_UnknownString4,
+ BATTLE_TEXT_HustleUse,
+ BATTLE_TEXT_MadeUseless,
+ BATTLE_TEXT_SandTombTrapped,
+ BATTLE_TEXT_Terminator,
+ BATTLE_TEXT_BoostedExp,
+ BATTLE_TEXT_SunIntensified,
+ BATTLE_TEXT_GroundMoveNegate,
+ BATTLE_TEXT_WallyBall,
+ BATTLE_TEXT_TookAttack2,
+ BATTLE_TEXT_ChoseDestiny,
+ BATTLE_TEXT_LostFocus,
+ BATTLE_TEXT_UseNext,
+ BATTLE_TEXT_FledUsingItem,
+ BATTLE_TEXT_FledUsingOther,
+ BATTLE_TEXT_DraggedOut,
+ BATTLE_TEXT_PreventedOther,
+ BATTLE_TEXT_NormalizedStatus,
+ BATTLE_TEXT_Used2,
+ BATTLE_TEXT_BoxFull,
+ BATTLE_TEXT_AvoidedAttack,
+ BATTLE_TEXT_MadeIneffective2,
+ BATTLE_TEXT_PreventedFlinching,
+ BATTLE_TEXT_AlreadyBurned,
+ BATTLE_TEXT_StatNoLower,
+ BATTLE_TEXT_BlocksOther2,
+ BATTLE_TEXT_WoreOff,
+ BATTLE_TEXT_RaisedDefenseLittle,
+ BATTLE_TEXT_RaisedSpDefLittle,
+ BATTLE_TEXT_BrokeWall,
+ BATTLE_TEXT_PreventedOther2,
+ BATTLE_TEXT_CuredOfProblem,
+ BATTLE_TEXT_AttackingCantEscape,
+ BATTLE_TEXT_Obtained1,
+ BATTLE_TEXT_Obtained2,
+ BATTLE_TEXT_Obtained3,
+ BATTLE_TEXT_NoEffect,
+ BATTLE_TEXT_NoEffectOn,
+};
+
+const u8 BattleText_UnknownString[] = _("{STRING 33}");
+const u8 BattleText_GainExpPoints[] = _("{STRING 0} gained{STRING 1}\n{STRING 42} EXP. Points!\p");
+const u8 BattleText_Terminator[] = _("");
+const u8 BattleText_BoostedExp[] = _(" a boosted");
+const u8 BattleText_GrewLevel[] = _("{STRING 0} grew to\nLV. {STRING 1}!{UNKNOWN_A}\p");
+const u8 BattleText_LearnedMove[] = _("{STRING 0} learned\n{STRING 1}!{UNKNOWN_A}\p");
+const u8 BattleText_TryingToLearnMove[] = _("{STRING 0} is trying to\nlearn {STRING 1}.\p");
+const u8 BattleText_CantLearnMore[] = _("But, {STRING 0} can’t learn\nmore than four moves.\p");
+const u8 BattleText_DeleteMove[] = _("Delete a move to make\nroom for {STRING 1}?");
+const u8 BattleText_DeletedMove[] = _("{STRING 0} forgot\n{STRING 1}.\p");
+const u8 BattleText_StopLearning[] = _("{PAUSE 32}Stop learning\n{STRING 1}?");
+const u8 BattleText_DidNotLearn[] = _("{STRING 0} did not learn\n{STRING 1}.\p");
+const u8 BattleText_UseNext[] = _("Use next POKéMON?");
+const u8 BattleText_AttackMissed[] = _("{ATTACKING_MON}’s\nattack missed!");
+const u8 BattleText_ProtectedItself[] = _("{DEFENDING_MON}\nprotected itself!");
+const u8 BattleText_AvoidedDamage[] = _("{DEFENDING_MON} avoided\ndamage with {STRING 22}!");
+const u8 BattleText_GroundMoveNegate[] = _("{DEFENDING_MON} makes GROUND\nmoves miss with {STRING 22}!");
+const u8 BattleText_AvoidedAttack[] = _("{DEFENDING_MON} avoided\nthe attack!");
+const u8 BattleText_DoesntAffect[] = _("It doesn’t affect\n{DEFENDING_MON}...");
+const u8 BattleText_AttackingFainted[] = _("{ATTACKING_MON}\nfainted!\p");
+const u8 BattleText_DefendingFainted[] = _("{DEFENDING_MON}\nfainted!\p");
+const u8 BattleText_WinningPrize[] = _("{STRING 32} got ¥{STRING 0}\nfor winning!\p");
+const u8 BattleText_OutOfUsablePoke[] = _("{STRING 32} is out of\nuseable POKéMON!\p");
+const u8 BattleText_WhitedOut[] = _("{STRING 32} whited out!{PAUSE_UNTIL_PRESS}");
+const u8 BattleText_PreventEscape[] = _("{STRING 16} prevents\nescape with {STRING 23}!\p");
+const u8 BattleText_CantEscape[] = _("Can’t escape!\p");
+const u8 BattleText_AttackingCantEscape[] = _("{ATTACKING_MON}\ncan’t escape!");
+const u8 BattleText_HitMulti[] = _("Hit {STRING 0} time(s)!");
+const u8 BattleText_FellAsleep[] = _("{STRING 14}\nfell asleep!");
+const u8 BattleText_MadeAsleep[] = _("{STRING 16}’s {STRING 23}\nmade {STRING 14} sleep!");
+const u8 BattleText_DefendingAsleep[] = _("{DEFENDING_MON} is\nalready asleep!");
+const u8 BattleText_AttackingAsleep[] = _("{ATTACKING_MON} is\nalready asleep!");
+const u8 BattleText_WasntAffected[] = _("{DEFENDING_MON}\nwasn’t affected!");
+const u8 BattleText_Poisoned[] = _("{STRING 14}\nwas poisoned!");
+const u8 BattleText_Poisoned2[] = _("{STRING 16}’s {STRING 23}\npoisoned {STRING 14}!");
+const u8 BattleText_PoisonHurt[] = _("{ATTACKING_MON} is hurt\nby poison!");
+const u8 BattleText_AlreadyPoisoned[] = _("{DEFENDING_MON} is already\npoisoned.");
+const u8 BattleText_BadlyPoisoned[] = _("{STRING 14} is badly\npoisoned!");
+const u8 BattleText_EnergyDrained[] = _("{DEFENDING_MON} had its\nenergy drained!");
+const u8 BattleText_Burned[] = _("{STRING 14} was burned!");
+const u8 BattleText_Burned2[] = _("{STRING 16}’s {STRING 23}\nburned {STRING 14}!");
+const u8 BattleText_BurnHurt[] = _("{ATTACKING_MON} is hurt\nby its burn!");
+const u8 BattleText_AlreadyBurned[] = _("{DEFENDING_MON} already\nhas a burn.");
+const u8 BattleText_Frozen[] = _("{STRING 14} was\nfrozen solid!");
+const u8 BattleText_Frozen2[] = _("{STRING 16}’s {STRING 23}\nfroze {STRING 14} solid!");
+const u8 BattleText_FrozenSolid[] = _("{ATTACKING_MON} is\nfrozen solid!");
+const u8 BattleText_DefendingDefrosted[] = _("{DEFENDING_MON} was\ndefrosted!");
+const u8 BattleText_AttackingDefrosted[] = _("{ATTACKING_MON} was\ndefrosted!");
+const u8 BattleText_Defrosted[] = _("{ATTACKING_MON} was\ndefrosted by {STRING 17}!");
+const u8 BattleText_Paralyzed[] = _("{STRING 14} is paralyzed!\nIt may be unable to move!");
+const u8 BattleText_Paralyzed2[] = _("{STRING 16}’s {STRING 23}\nparalyzed {STRING 14}!\lIt may be unable to move!");
+const u8 BattleText_Paralyzed3[] = _("{ATTACKING_MON} is paralyzed!\nIt can’t move!");
+const u8 BattleText_AlreadyParalyzed[] = _("{DEFENDING_MON} is\nalready paralyzed!");
+const u8 BattleText_ParalysisHealed[] = _("{DEFENDING_MON} was\nhealed of paralysis!");
+const u8 BattleText_DreamEaten[] = _("{DEFENDING_MON}’s\ndream was eaten!");
+const u8 BattleText_AttackingStatNoHigher[] = _("{ATTACKING_MON}’s {STRING 0}\nwon’t go higher!");
+const u8 BattleText_DefendingStatNoHigher[] = _("{DEFENDING_MON}’s {STRING 0}\nwon’t go lower!");
+const u8 BattleText_StoppedWorking[] = _("Your team’s {STRING 0}\nstopped working!");
+const u8 BattleText_StoppedWorking2[] = _("The foe’s {STRING 0}\nstopped working!");
+const u8 BattleText_Confused[] = _("{ATTACKING_MON} is\nconfused!");
+const u8 BattleText_ConfusionSnapOut[] = _("{ATTACKING_MON} snapped\nout of confusion!");
+const u8 BattleText_BecameConfused[] = _("{STRING 14} became\nconfused!");
+const u8 BattleText_AlreadyConfused[] = _("{DEFENDING_MON} is\nalready confused!");
+const u8 BattleText_FellLove[] = _("{DEFENDING_MON}\nfell in love!");
+const u8 BattleText_InLoveWith[] = _("{ATTACKING_MON} is in love\nwith {STRING 16}!");
+const u8 BattleText_ImmobilizedBy[] = _("{ATTACKING_MON} is\nimmobilized by love!");
+const u8 BattleText_BlownAway[] = _("{DEFENDING_MON} was\nblown away!");
+const u8 BattleText_TypeTransform[] = _("{ATTACKING_MON} transformed\ninto the {STRING 0} type!");
+const u8 BattleText_Flinched[] = _("{ATTACKING_MON} flinched!");
+const u8 BattleText_RegainedHealth[] = _("{DEFENDING_MON} regained\nhealth!");
+const u8 BattleText_HPFull[] = _("{DEFENDING_MON}’s\nHP is full!");
+const u8 BattleText_RaisedSpDef[] = _("{STRING 38}’s {STRING 17}\nraised SP. DEF!");
+const u8 BattleText_RaisedSpDefLittle[] = _("{STRING 38}’s {STRING 17}\nraised SP. DEF a little!");
+const u8 BattleText_RaisedDefense[] = _("{STRING 38}’s {STRING 17}\nraised DEFENSE!");
+const u8 BattleText_RaisedDefenseLittle[] = _("{STRING 38}’s {STRING 17}\nraised DEFENSE a little!");
+const u8 BattleText_CoveredVeil[] = _("{STRING 38} is covered\nby a veil!");
+const u8 BattleText_SafeguardActive[] = _("{DEFENDING_MON} is protected\nby SAFEGUARD!");
+const u8 BattleText_SafeguardFaded[] = _("{STRING 40}’s SAFEGUARD\nfaded!");
+const u8 BattleText_WentToSleep[] = _("{ATTACKING_MON} went\nto sleep!");
+const u8 BattleText_SpeltHealthy[] = _("{ATTACKING_MON} slept and\nbecame healthy!");
+const u8 BattleText_WhipWhirlwind[] = _("{ATTACKING_MON} whipped\nup a whirlwind!");
+const u8 BattleText_TookSunlight[] = _("{ATTACKING_MON} took\nin sunlight!");
+const u8 BattleText_LoweredHead[] = _("{ATTACKING_MON} lowered\nits head!");
+const u8 BattleText_IsGlowing[] = _("{ATTACKING_MON} is glowing!");
+const u8 BattleText_FlewHigh[] = _("{ATTACKING_MON} flew\nup high!");
+const u8 BattleText_DugHole[] = _("{ATTACKING_MON} dug a hole!");
+const u8 BattleText_HidUnderwater[] = _("{ATTACKING_MON} hid\nunderwater!");
+const u8 BattleText_SprangUp[] = _("{ATTACKING_MON} sprang up!");
+const u8 BattleText_SqueezedBind[] = _("{DEFENDING_MON} was squeezed by\n{ATTACKING_MON}’s BIND!");
+const u8 BattleText_TrappedVortex[] = _("{DEFENDING_MON} was trapped\nin the vortex!");
+const u8 BattleText_SandTombTrapped[] = _("{DEFENDING_MON} was trapped\nby SAND TOMB!");
+const u8 BattleText_Wrapped[] = _("{DEFENDING_MON} was WRAPPED by\n{ATTACKING_MON}!");
+const u8 BattleText_Clamped[] = _("{ATTACKING_MON} CLAMPED\n{DEFENDING_MON}!");
+const u8 BattleText_HurtBy[] = _("{ATTACKING_MON} is hurt\nby {STRING 0}!");
+const u8 BattleText_FreedFrom[] = _("{ATTACKING_MON} was freed\nfrom {STRING 0}!");
+const u8 BattleText_KeptGoingCrash[] = _("{ATTACKING_MON} kept going\nand crashed!");
+const u8 BattleText_MistShroud[] = _("{STRING 38} became\nshrouded in MIST!");
+const u8 BattleText_MistProtect[] = _("{STRING 16} is protected\nby MIST!");
+const u8 BattleText_GetPumped[] = _("{ATTACKING_MON} is getting\npumped!");
+const u8 BattleText_HitRecoil[] = _("{ATTACKING_MON} is hit\nwith recoil!");
+const u8 BattleText_ProtectedItself2[] = _("{ATTACKING_MON} protected\nitself!");
+const u8 BattleText_SandBuffeted[] = _("{ATTACKING_MON} is buffeted\nby the sandstorm!");
+const u8 BattleText_HailStricken[] = _("{ATTACKING_MON} is stricken\nby HAIL!");
+const u8 BattleText_WoreOff[] = _("{STRING 36}’s {STRING 0}\nwore off!");
+const u8 BattleText_WasSeeded[] = _("{DEFENDING_MON} was seeded!");
+const u8 BattleText_EvadedAttack[] = _("{DEFENDING_MON} evaded\nthe attack!");
+const u8 BattleText_HealthSapped[] = _("{ATTACKING_MON}’s health is\nsapped by LEECH SEED!");
+const u8 BattleText_FastAsleep[] = _("{ATTACKING_MON} is fast\nasleep.");
+const u8 BattleText_WokeUp[] = _("{ATTACKING_MON} woke up!");
+const u8 BattleText_UproarAwake[] = _("But {STRING 16}’s UPROAR\nkept it awake!");
+const u8 BattleText_UproarWoke[] = _("{ATTACKING_MON} woke up\nin the UPROAR!");
+const u8 BattleText_UproarCaused[] = _("{ATTACKING_MON} caused\nan UPROAR!");
+const u8 BattleText_UproarMaking[] = _("{ATTACKING_MON} is making\nan UPROAR!");
+const u8 BattleText_CalmedDown[] = _("{ATTACKING_MON} calmed down.");
+const u8 BattleText_UproarCantSleep[] = _("But {DEFENDING_MON} can’t\nsleep in an UPROAR!");
+const u8 BattleText_Stockpiled[] = _("{ATTACKING_MON} STOCKPILED\n{STRING 0}!");
+const u8 BattleText_StockpiledCant[] = _("{ATTACKING_MON} can’t\nSTOCKPILE any more!");
+const u8 BattleText_UproarCantSleep2[] = _("But {DEFENDING_MON} can’t\nsleep in an UPROAR!");
+const u8 BattleText_UproarKeptAwake[] = _("But the UPROAR kept\n{DEFENDING_MON} awake!");
+const u8 BattleText_StayedAwake[] = _("{DEFENDING_MON} stayed awake\nusing its {STRING 22}!");
+const u8 BattleText_StoringEnergy[] = _("{ATTACKING_MON} is storing\nenergy!");
+const u8 BattleText_UnleashedEnergy[] = _("{ATTACKING_MON} unleashed\nenergy!");
+const u8 BattleText_FatigueConfuse[] = _("{ATTACKING_MON} became\nconfused out of fatigue!");
+const u8 BattleText_PickedUpYen[] = _("{STRING 32} picked up\n¥{STRING 0}!\p");
+const u8 BattleText_Unaffected[] = _("{DEFENDING_MON} is\nunaffected!");
+const u8 BattleText_Transformed[] = _("{ATTACKING_MON} transformed\ninto {STRING 0}!");
+const u8 BattleText_SubMade[] = _("{ATTACKING_MON} made\na SUBSTITUTE!");
+const u8 BattleText_SubAlready[] = _("{ATTACKING_MON} already\nhas a SUBSTITUTE!");
+const u8 BattleText_SubTookDamage[] = _("The SUBSTITUTE took damage\nfor {DEFENDING_MON}!\p");
+const u8 BattleText_SubFaded[] = _("{DEFENDING_MON}’s\nSUBSTITUTE faded!\p");
+const u8 BattleText_MustRecharge[] = _("{ATTACKING_MON} must\nrecharge!");
+const u8 BattleText_RageBuilding[] = _("{DEFENDING_MON}’s RAGE\nis building!");
+const u8 BattleText_MoveWasDisabled[] = _("{DEFENDING_MON}’s {STRING 0}\nwas disabled!");
+const u8 BattleText_DisabledNoMore[] = _("{ATTACKING_MON} is disabled\nno more!");
+const u8 BattleText_EncoreGot[] = _("{DEFENDING_MON} got\nan ENCORE!");
+const u8 BattleText_EncoreEnded[] = _("{ATTACKING_MON}’s ENCORE\nended!");
+const u8 BattleText_TookAim[] = _("{ATTACKING_MON} took aim\nat {DEFENDING_MON}!");
+const u8 BattleText_SketchedMove[] = _("{ATTACKING_MON} SKETCHED\n{STRING 0}!");
+const u8 BattleText_DestinyBondTake[] = _("{ATTACKING_MON} is trying\nto take its foe with it!");
+const u8 BattleText_DestinyBondTaken[] = _("{DEFENDING_MON} took\n{ATTACKING_MON} with it!");
+const u8 BattleText_ReducedBy[] = _("Reduced {DEFENDING_MON}’s\n{STRING 0} by {STRING 1}!");
+const u8 BattleText_StoleSomething[] = _("{ATTACKING_MON} stole\n{DEFENDING_MON}’s {STRING 19}!");
+const u8 BattleText_CantEscapeNow[] = _("{DEFENDING_MON} can’t\nescape now!");
+const u8 BattleText_NightmareStart[] = _("{DEFENDING_MON} fell into\na NIGHTMARE!");
+const u8 BattleText_NightmareLock[] = _("{ATTACKING_MON} is locked\nin a NIGHTMARE!");
+const u8 BattleText_CurseLay[] = _("{ATTACKING_MON} cut its own HP\nand laid a CURSE on\l{DEFENDING_MON}!");
+const u8 BattleText_CurseAfflict[] = _("{ATTACKING_MON} is afflicted\nby the CURSE!");
+const u8 BattleText_SpikesScattered[] = _("{STRING 37} POKéMON team had SPIKES\nscattered around it!");
+const u8 BattleText_SpikesHurt[] = _("{STRING 16} is hurt\nby SPIKES!");
+const u8 BattleText_IdentifiedPoke[] = _("{ATTACKING_MON} identified\n{DEFENDING_MON}!");
+const u8 BattleText_PerishSongFell[] = _("{ATTACKING_MON}’s PERISH count\nfell to {STRING 0}!");
+const u8 BattleText_BracedItself[] = _("{ATTACKING_MON} braced\nitself!");
+const u8 BattleText_EnduredHit[] = _("{DEFENDING_MON} ENDURED\nthe hit!");
+const u8 BattleText_MagnitudeCount[] = _("MAGNITUDE {STRING 0}!");
+const u8 BattleText_CutHPMaxATK[] = _("{ATTACKING_MON} cut its own HP\nand maximized ATTACK!");
+const u8 BattleText_CopyStatChanges[] = _("{ATTACKING_MON} copied\n{DEFENDING_MON}’s stat changes!");
+const u8 BattleText_GotFreeFrom[] = _("{ATTACKING_MON} got free of\n{DEFENDING_MON}’s {STRING 0}!");
+const u8 BattleText_LeechShed[] = _("{ATTACKING_MON} shed\nLEECH SEED!");
+const u8 BattleText_SpikesBlownAway[] = _("{ATTACKING_MON} blew away\nSPIKES!");
+const u8 BattleText_FledBattle[] = _("{ATTACKING_MON} fled from\nbattle!");
+const u8 BattleText_ForesawAttack[] = _("{ATTACKING_MON} foresaw\nan attack!");
+const u8 BattleText_TookAttack[] = _("{DEFENDING_MON} took\n{STRING 0}’s attack!");
+const u8 BattleText_ChoseDestiny[] = _("{ATTACKING_MON} chose\n{STRING 17} as its destiny!");
+const u8 BattleText_PokeAttack[] = _("{STRING 0}’s attack!");
+const u8 BattleText_CenterAttention[] = _("{ATTACKING_MON} became the\ncenter of attention!");
+const u8 BattleText_ChargingPower[] = _("{ATTACKING_MON} began\ncharging power!");
+const u8 BattleText_NaturePower[] = _("NATURE POWER turned into\n{STRING 17}!");
+const u8 BattleText_StatusNormal[] = _("{ATTACKING_MON}’s status\nreturned to normal!");
+const u8 BattleText_TormentSubject[] = _("{DEFENDING_MON} was subjected\nto TORMENT!");
+const u8 BattleText_TightenFocus[] = _("{ATTACKING_MON} is tightening\nits focus!");
+const u8 BattleText_TauntFell[] = _("{DEFENDING_MON} fell for\nthe TAUNT!");
+const u8 BattleText_ReadyToHelp[] = _("{ATTACKING_MON} is ready to\nhelp {DEFENDING_MON}!");
+const u8 BattleText_SwitchedItems[] = _("{ATTACKING_MON} switched\nitems with its opponent!");
+const u8 BattleText_Obtained1[] = _("{ATTACKING_MON} obtained\n{STRING 0}.");
+const u8 BattleText_Obtained2[] = _("{DEFENDING_MON} obtained\n{STRING 1}.");
+const u8 BattleText_Obtained3[] = _("{ATTACKING_MON} obtained\n{STRING 0}.\p{DEFENDING_MON} obtained\n{STRING 1}.");
+const u8 BattleText_CopiedObject[] = _("{ATTACKING_MON} copied\n{DEFENDING_MON}’s {STRING 22}!");
+const u8 BattleText_WishMade[] = _("{ATTACKING_MON} made a WISH!");
+const u8 BattleText_WishTrue[] = _("{STRING 0}’s WISH\ncame true!");
+const u8 BattleText_PlantedRoots[] = _("{ATTACKING_MON} planted its roots!");
+const u8 BattleText_AbsorbNutrients[] = _("{ATTACKING_MON} absorbed\nnutrients with its roots!");
+const u8 BattleText_AnchoredItself[] = _("{DEFENDING_MON} anchored\nitself with its roots!");
+const u8 BattleText_DrowsyMade[] = _("{ATTACKING_MON} made\n{DEFENDING_MON} drowsy!");
+const u8 BattleText_KnockedOffItem[] = _("{ATTACKING_MON} knocked off\n{DEFENDING_MON}’s {STRING 19}!");
+const u8 BattleText_AbilitySwap[] = _("{ATTACKING_MON} swapped abilities\nwith its opponent!");
+const u8 BattleText_SealedMove[] = _("{ATTACKING_MON} sealed the\nopponent’s move(s)!");
+const u8 BattleText_GrudgeBear[] = _("{ATTACKING_MON} wants the\nopponent to bear a GRUDGE!");
+const u8 BattleText_GrudgeLosePP[] = _("{ATTACKING_MON}’s {STRING 0}\nlost all its PP due to\lthe GRUDGE!");
+const u8 BattleText_ShroudedItself[] = _("{ATTACKING_MON} shrouded\nitself in {STRING 17}!");
+const u8 BattleText_MagicCoatBounce[] = _("{ATTACKING_MON}’s {STRING 17}\nwas bounced back by MAGIC COAT!");
+const u8 BattleText_AwaitMove[] = _("{ATTACKING_MON} awaits its foe\nto make a move!");
+const u8 BattleText_SnatchedMove[] = _("{DEFENDING_MON} SNATCHED\n{STRING 16}’s move!");
+const u8 BattleText_ElecWeakened[] = _("Electricity’s power was\nweakened!");
+const u8 BattleText_FireWeakened[] = _("Fire’s power was\nweakened!");
+const u8 BattleText_FoundOne[] = _("{ATTACKING_MON} found\none {STRING 19}!");
+const u8 BattleText_SoothingAroma[] = _("A soothing aroma wafted\nthrough the area!");
+const u8 BattleText_CantUseItems[] = _("Items can’t be used now.{PAUSE 64}");
+const u8 BattleText_UnknownString2[] = _("For {STRING 16},\n{STRING 19} {STRING 0}");
+const u8 BattleText_HustleUse[] = _("{STRING 16} used\n{STRING 19} to hustle!");
+const u8 BattleText_LostFocus[] = _("{ATTACKING_MON} lost its\nfocus and couldn’t move!");
+const u8 BattleText_DraggedOut[] = _("{DEFENDING_MON} was\ndragged out!\p");
+const u8 BattleText_BrokeWall[] = _("The wall shattered!");
+const u8 BattleText_NoEffect[] = _("But it had no effect!");
+const u8 BattleText_NoMovesLeft[] = _("{STRING 15} has no\nmoves left!\p");
+const u8 BattleText_MoveIsDisabled[] = _("{STRING 15}’s {STRING 17}\nis disabled!\p");
+const u8 BattleText_TormentNoUse[] = _("{STRING 15} can’t use the same\nmove twice in a row due to the TORMENT!\p");
+const u8 BattleText_TauntNoUse[] = _("{STRING 15} can’t use\n{STRING 17} after the TAUNT!\p");
+const u8 BattleText_SealedNoUse[] = _("{STRING 15} can’t use the\nsealed {STRING 17}!\p");
+const u8 BattleText_RainMade[] = _("{STRING 16}’s {STRING 23}\nmade it rain!");
+const u8 BattleText_SpeedRisen[] = _("{STRING 16}’s {STRING 23}\nraised its SPEED!");
+const u8 BattleText_ProtectedBy[] = _("{DEFENDING_MON} was protected\nby {STRING 22}!");
+const u8 BattleText_PreventedBy[] = _("{DEFENDING_MON}’s {STRING 22}\nprevents {ATTACKING_MON}\lfrom using {STRING 17}!");
+const u8 BattleText_HPRestoredUsing[] = _("{DEFENDING_MON} restored HP\nusing its {STRING 22}!");
+const u8 BattleText_MadeUseless[] = _("{DEFENDING_MON}’s {STRING 22}\nmade {STRING 17} useless!");
+const u8 BattleText_MadeType[] = _("{DEFENDING_MON}’s {STRING 22}\nmade it the {STRING 0} type!");
+const u8 BattleText_PreventedPara[] = _("{STRING 14}’s {STRING 22}\nprevents paralysis!");
+const u8 BattleText_PreventedRomance[] = _("{DEFENDING_MON}’s {STRING 22}\nprevents romance!");
+const u8 BattleText_PreventedPoison[] = _("{STRING 14}’s {STRING 22}\nprevents poisoning!");
+const u8 BattleText_PreventedConfusion[] = _("{DEFENDING_MON}’s {STRING 22}\nprevents confusion!");
+const u8 BattleText_RaisedFirePower[] = _("{DEFENDING_MON}’s {STRING 22}\nraised its FIRE power!");
+const u8 BattleText_AnchorsItself[] = _("{DEFENDING_MON} anchors\nitself with {STRING 22}!");
+const u8 BattleText_CutsAttack[] = _("{STRING 16}’s {STRING 23}\ncuts {DEFENDING_MON}’s ATTACK!");
+const u8 BattleText_PreventedStatLoss[] = _("{STRING 16}’s {STRING 23}\nprevents stat loss!");
+const u8 BattleText_HurtOther[] = _("{DEFENDING_MON}’s {STRING 22}\nhurt {ATTACKING_MON}!");
+const u8 BattleText_Traced[] = _("{STRING 16} TRACED\n{STRING 0}’s {STRING 1}!");
+const u8 BattleText_PreventedBurn[] = _("{STRING 14}’s {STRING 24}\nprevents burns!");
+const u8 BattleText_BlocksOther[] = _("{DEFENDING_MON}’s {STRING 22}\nblocks {STRING 17}!");
+const u8 BattleText_BlocksOther2[] = _("{STRING 16}’s {STRING 23}\nblocks {STRING 17}!");
+const u8 BattleText_RestoredHPByItem[] = _("{ATTACKING_MON}’s {STRING 21}\nrestored some HP!");
+const u8 BattleText_WhipSandstorm[] = _("{STRING 16}’s {STRING 23}\nwhipped up a sandstorm!");
+const u8 BattleText_SunIntensified[] = _("{STRING 16}’s {STRING 23}\nintensified the sun’s rays!");
+const u8 BattleText_PreventedLoss[] = _("{STRING 16}’s {STRING 23}\nprevents {STRING 0} loss!");
+const u8 BattleText_InfatuatedPoke[] = _("{DEFENDING_MON}’s {STRING 22}\ninfatuated {ATTACKING_MON}!");
+const u8 BattleText_MadeIneffective[] = _("{DEFENDING_MON}’s {STRING 22}\nmade {STRING 17} ineffective!");
+const u8 BattleText_CuredProblem[] = _("{STRING 16}’s {STRING 23}\ncured its {STRING 0} problem!");
+const u8 BattleText_OozeSuckup[] = _("It sucked up the\nLIQUID OOZE!");
+const u8 BattleText_Transformed2[] = _("{STRING 16} transformed!");
+const u8 BattleText_TookAttack2[] = _("{DEFENDING_MON}’s {STRING 22}\ntook the attack!");
+const u8 BattleText_PreventedSwitch[] = _("{STRING 0}’s {STRING 20}\nprevents switching!\p");
+const u8 BattleText_PreventedOther[] = _("{DEFENDING_MON}’s {STRING 22}\nprevented {STRING 16}’s\l{STRING 0} from working!");
+const u8 BattleText_MadeIneffective2[] = _("{STRING 16}’s {STRING 23}\nmade it ineffective!");
+const u8 BattleText_PreventedFlinching[] = _("{STRING 14}’s {STRING 24}\nprevents flinching!");
+const u8 BattleText_PreventedOther2[] = _("{ATTACKING_MON}’s {STRING 21}\nprevents {DEFENDING_MON}’s\l{STRING 22} from working!");
+const u8 BattleText_CuredOfProblem[] = _("{STRING 16}’s {STRING 23}\ncured its {STRING 0} problem!");
+const u8 BattleText_NoEffectOn[] = _("{STRING 16}’s {STRING 23}\nhad no effect on {STRING 14}!");
+const u8 BattleText_Sharply[] = _("sharply ");
+const u8 BattleText_Rose[] = _("rose!");
+const u8 BattleText_Harshly[] = _("harshly ");
+const u8 BattleText_Fell[] = _("fell!");
+const u8 BattleText_UnknownString7[] = _("{ATTACKING_MON}’s {STRING 0}\n{STRING 1}");
+const u8 BattleText_UnknownString3[] = _("{DEFENDING_MON}’s {STRING 0}\n{STRING 1}");
+const u8 BattleText_UnknownString4[] = _("Using {STRING 19}, the {STRING 0}\nof {STRING 16} {STRING 1}");
+const u8 BattleText_UnknownString5[] = _("{ATTACKING_MON}’s {STRING 0}\n{STRING 1}");
+const u8 BattleText_UnknownString6[] = _("{DEFENDING_MON}’s {STRING 0}\n{STRING 1}");
+const u8 BattleText_StatNoHigher[] = _("{ATTACKING_MON}’s stats won’t\ngo any higher!");
+const u8 BattleText_StatNoLower[] = _("{DEFENDING_MON}’s stats won’t\ngo any lower!");
+const u8 BattleText_Critical[] = _("A critical hit!");
+const u8 BattleText_GrandSlam[] = _("It’s a one-hit KO!");
+const u8 BattleText_MoveForget123[] = _("{PAUSE 32}1, {PAUSE 15}2 and...{PAUSE 15} ...{PAUSE 15} ...{PAUSE 15}\n{PAUSE 15}{PLAY_SE SE_KON}Poof!\p");
+const u8 BattleText_MoveForgetAnd[] = _("And...\p");
+const u8 BattleText_CantForgetHM[] = _("HM moves can’t be\nforgotten now.\p");
+const u8 BattleText_NotEffective[] = _("It’s not very effective...");
+const u8 BattleText_SuperEffective[] = _("It’s super effective!");
+const u8 BattleText_GotAwaySafely[] = _("{PLAY_SE SE_NIGERU}Got away safely!\p");
+const u8 BattleText_FledUsingItem[] = _("{PLAY_SE SE_NIGERU}{ATTACKING_MON} fled\nusing its {STRING 19}!\p");
+const u8 BattleText_FledUsingOther[] = _("{PLAY_SE SE_NIGERU}{ATTACKING_MON} fled\nusing {STRING 21}!\p");
+const u8 BattleText_FledWild[] = _("{PLAY_SE SE_NIGERU}Wild {STRING 0} fled!");
+const u8 BattleText_PlayerDefeatedTrainer[] = _("Player defeated\n{STRING 29}!");
+const u8 BattleText_PlayerDefeatedTrainers[] = _("Player beat {STRING 30}\nand {STRING 29}!");
+const u8 BattleText_PlayerLostTrainer[] = _("Player lost against\n{STRING 29}!");
+const u8 BattleText_PlayerLostTrainers[] = _("Player lost to {STRING 30}\nand {STRING 29}!");
+const u8 BattleText_PlayerTiedTrainer[] = _("Player tied against\n{STRING 29}!");
+const u8 BattleText_PlayerTiedTrainers[] = _("Player tied against {STRING 30}\nand {STRING 29}!");
+const u8 BattleText_FledSingle[] = _("{PLAY_SE SE_NIGERU}{STRING 29} fled!");
+const u8 BattleText_FledDouble[] = _("{PLAY_SE SE_NIGERU}{STRING 29} and\n{STRING 30} fled!");
+const u8 BattleText_NoRunning[] = _("No! There’s no running\nfrom a TRAINER battle!\p");
+const u8 BattleText_CantEscape2[] = _("Can’t escape!\p");
+const u8 BattleText_BirchDontLeaveMe[] = _("PROF. BIRCH: D-don’t leave\nme here like this!\p");
+const u8 BattleText_Nothing[] = _("But nothing happened!");
+const u8 BattleText_Failed[] = _("But it failed!");
+const u8 BattleText_HurtItself[] = _("It hurt itself in its\nconfusion!");
+const u8 BattleText_MirrorFail[] = _("The MIRROR MOVE failed!");
+const u8 BattleText_RainStart[] = _("It started to rain!");
+const u8 BattleText_PourStart[] = _("A downpour started!");
+const u8 BattleText_RainCont1[] = _("Rain continues to fall.");
+const u8 BattleText_PourCont[] = _("The downpour continues.");
+const u8 BattleText_RainStop[] = _("The rain stopped.");
+const u8 BattleText_SandBrewed[] = _("A sandstorm brewed!");
+const u8 BattleText_SandRages[] = _("The sandstorm rages.");
+const u8 BattleText_SandSubsided[] = _("The sandstorm subsided.");
+const u8 BattleText_SunBright[] = _("The sunlight got bright!");
+const u8 BattleText_SunStrong[] = _("The sunlight is strong.");
+const u8 BattleText_SunFaded[] = _("The sunlight faded.");
+const u8 BattleText_HailStart[] = _("It started to hail!");
+const u8 BattleText_HailCont[] = _("Hail continues to fall.");
+const u8 BattleText_HailStop[] = _("The hail stopped.");
+const u8 BattleText_SpitUpFail[] = _("But it failed to SPIT UP\na thing!");
+const u8 BattleText_SwallowFail[] = _("But it failed to SWALLOW\na thing!");
+const u8 BattleText_WindHeatWave[] = _("The wind turned into a\nHEAT WAVE!");
+const u8 BattleText_StatElim[] = _("All stat changes were\neliminated!");
+const u8 BattleText_CoinScatter[] = _("Coins scattered everywhere!");
+const u8 BattleText_SubWeak[] = _("It was too weak to make\na SUBSTITUTE!");
+const u8 BattleText_PainSplit[] = _("The battlers shared\ntheir pain!");
+const u8 BattleText_BellChime[] = _("A bell chimed!");
+const u8 BattleText_PerishSong[] = _("All affected POKéMON will\nfaint in 3 turns!");
+const u8 BattleText_NoPP1[] = _("There’s no PP left for\nthis move!\p");
+const u8 BattleText_NoPP2[] = _("But there was no PP left\nfor the move!");
+const u8 BattleText_IgnoredOrdersSLP[] = _("{ATTACKING_MON} ignored\norders while asleep!");
+const u8 BattleText_IgnoredOrders[] = _("{ATTACKING_MON} ignored\norders!");
+const u8 BattleText_BeganNap[] = _("{ATTACKING_MON} began to nap!");
+const u8 BattleText_LoafingAround[] = _("{ATTACKING_MON} is\nloafing around!");
+const u8 BattleText_WontObey[] = _("{ATTACKING_MON} won’t\nobey!");
+const u8 BattleText_TurnedAway[] = _("{ATTACKING_MON} turned away!");
+const u8 BattleText_NotNotice[] = _("{ATTACKING_MON} pretended\nto not notice!");
+const u8 BattleText_WillSwitch[] = _("{STRING 25} {STRING 26} is\nabout to use {STRING 1}.\pWill {STRING 32} change\nPOKéMON?");
+const u8 BattleText_LearnedMove2[] = _("{ATTACKING_MON} learned\n{STRING 0}!");
+const u8 BattleText_PlayerDefeatedTrainer2[] = _("Player defeated\n{STRING 25} {STRING 26}!\p");
+const u8 BattleText_CreptCloser[] = _("{STRING 32} crept closer to\n{STRING 3}!");
+const u8 BattleText_CantGetCloser[] = _("{STRING 32} can’t get any closer!");
+const u8 BattleText_WatchingCarefully[] = _("{STRING 3} is watching\ncarefully!");
+const u8 BattleText_CuriousAbout[] = _("{STRING 3} is curious about\nthe {STRING 0}!");
+const u8 BattleText_EnthralledBy[] = _("{STRING 3} is enthralled by\nthe {STRING 0}!");
+const u8 BattleText_IgnoredThing[] = _("{STRING 3} completely ignored\nthe {STRING 0}!");
+const u8 BattleText_ThrewBlock[] = _("{STRING 32} threw a {POKEBLOCK}\nat the {STRING 3}!");
+const u8 BattleText_SafariOver[] = _("{PLAY_SE SE_PINPON}ANNOUNCER: You’re out of\nSAFARI BALLS! Game over!\p");
+const u8 BattleText_WildAppeared1[] = _("Wild {STRING 3} appeared!\p");
+const u8 BattleText_WildAppeared2[] = _("Wild {STRING 3} appeared!\p");
+const u8 BattleText_WildAppeared3[] = _("Wild {STRING 3} appeared!{PAUSE 127}");
+const u8 BattleText_WildDoubleAppeared[] = _("Wild {STRING 5} and\n{STRING 3} appeared!\p");
+const u8 BattleText_SingleWantToBattle1[] = _("{STRING 25} {STRING 26}\nwould like to battle!\p");
+const u8 BattleText_SingleWantToBattle2[] = _("{STRING 29}\nwants to battle!");
+const u8 BattleText_DoubleWantToBattle[] = _("{STRING 29} and {STRING 30}\nwant to battle!");
+const u8 BattleText_SentOutSingle1[] = _("{STRING 25} {STRING 26} sent\nout {STRING 3}!");
+const u8 BattleText_SentOutDouble1[] = _("{STRING 25} {STRING 26} sent\nout {STRING 3} and {STRING 5}!");
+const u8 BattleText_SentOutSingle2[] = _("{STRING 25} {STRING 26} sent\nout {STRING 0}!");
+const u8 BattleText_SentOutSingle3[] = _("{STRING 29} sent\nout {STRING 3}!");
+const u8 BattleText_SentOutDouble2[] = _("{STRING 29} sent out\n{STRING 3} and {STRING 5}!");
+const u8 BattleText_SentOutDouble3[] = _("{STRING 29} sent out\n{STRING 7}!\p{STRING 30} sent out\n{STRING 9}!");
+const u8 BattleText_SentOutSingle4[] = _("{STRING 29} sent out\n{STRING 0}!");
+const u8 BattleText_SentOutSingle5[] = _("{STRING 31} sent out\n{STRING 0}!");
+const u8 BattleText_SentOutSingle6[] = _("Go! {STRING 2}!");
+const u8 BattleText_SentOutDouble4[] = _("Go! {STRING 2} and\n{STRING 4}!");
+const u8 BattleText_SentOutSingle7[] = _("Go! {STRING 0}!");
+const u8 BattleText_SentOutSingle8[] = _("Do it! {STRING 0}!");
+const u8 BattleText_SentOutSingle9[] = _("Go for it, {STRING 0}!");
+const u8 BattleText_SentOutSingle10[] = _("Your foe’s weak!\nGet’m, {STRING 0}!");
+const u8 BattleText_SentOutSingle11[] = _("{STRING 28} sent out\n{STRING 8}!\pGo! {STRING 6}!");
+const u8 BattleText_ComeBackSingle1[] = _("{STRING 0}, that’s enough!\nCome back!");
+const u8 BattleText_ComeBackSingle2[] = _("{STRING 0}, come back!");
+const u8 BattleText_ComeBackSingle3[] = _("{STRING 0}, OK!\nCome back!");
+const u8 BattleText_ComeBackSingle4[] = _("{STRING 0}, good!\nCome back!");
+const u8 BattleText_WithdrewPoke1[] = _("{STRING 25} {STRING 26}\nwithdrew {STRING 0}!");
+const u8 BattleText_WithdrewPoke2[] = _("{STRING 29} withdrew\n{STRING 0}!");
+const u8 BattleText_WithdrewPoke3[] = _("{STRING 31} withdrew\n{STRING 0}!");
+const u8 BattleText_Wild[] = _("Wild ");
+const u8 BattleText_Foe[] = _("Foe ");
+const u8 BattleText_Foe2[] = _("Foe ");
+const u8 BattleText_Ally[] = _("Ally ");
+const u8 BattleText_Foe3[] = _("Foe ");
+const u8 BattleText_Ally2[] = _("Ally ");
+const u8 BattleText_Foe4[] = _("Foe ");
+const u8 BattleText_Ally3[] = _("Ally ");
+const u8 BattleText_OpponentUsedMove[] = _("{ATTACKING_MON} used\n{STRING 1}");
+const u8 BattleText_Exclamation2[] = _("!");
+const u8 BattleText_Exclamation3[] = _("!");
+const u8 BattleText_Exclamation4[] = _("!");
+const u8 BattleText_Exclamation5[] = _("!");
+const u8 BattleText_Exclamation[] = _("!");
+const u8 BattleStatText_HP[] = _("HP");
+const u8 BattleStatText_Attack[] = _("ATTACK");
+const u8 BattleStatText_Defense[] = _("DEFENSE");
+const u8 BattleStatText_Speed[] = _("SPEED");
+const u8 BattleStatText_SpAtk[] = _("SP. ATK");
+const u8 BattleStatText_SpDef[] = _("SP. DEF");
+const u8 BattleStatText_Accuracy[] = _("accuracy");
+const u8 BattleStatText_Evasion[] = _("evasiveness");
+const u8 ContestStatText_TooSpicy[] = _("was too spicy!");
+const u8 ContestStatText_TooDry[] = _("was too dry!");
+const u8 ContestStatText_TooSweet[] = _("was too sweet!");
+const u8 ContestStatText_TooBitter[] = _("was too bitter!");
+const u8 ContestStatText_TooSour[] = _("was too sour!");
+const u8 BattleText_Used1[] = _("{STRING 32} used\n{STRING 19}!");
+const u8 BattleText_TutorialUsed[] = _("WALLY used\n{STRING 19}!");
+const u8 BattleText_Used2[] = _("{STRING 25} {STRING 26}\nused {STRING 19}!");
+const u8 BattleText_BlockBall[] = _("The TRAINER blocked the BALL!");
+const u8 BattleText_DontBeAThief[] = _("Don’t be a thief!");
+const u8 BattleText_DodgeBall[] = _("It dodged the thrown BALL!\nThis POKéMON can’t be caught!");
+const u8 BattleText_MissPoke[] = _("You missed the POKéMON!");
+const u8 BattleText_BallBrokeOhNo[] = _("Oh, no!\nThe POKéMON broke free!");
+const u8 BattleText_BallBrokeAppeared[] = _("Aww!\nIt appeared to be caught!");
+const u8 BattleText_BallBrokeAlmost[] = _("Aargh!\nAlmost had it!");
+const u8 BattleText_BallBrokeSoClose[] = _("Shoot!\nIt was so close, too!");
+const u8 BattleText_BallCaught1[] = _("Gotcha!\n{STRING 3} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}\p");
+const u8 BattleText_BallCaught2[] = _("Gotcha!\n{STRING 3} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}{PAUSE 127}");
+const u8 BattleText_GiveNickname[] = _("Give a nickname to the\ncaptured {STRING 3}?");
+const u8 BattleText_SentToPC[] = _("{STRING 3} was sent to\n{STRING 35} PC.");
+const u8 BattleText_Someone[] = _("someone’s");
+const u8 BattleText_Lanette[] = _("LANETTE’s");
+const u8 BattleText_AddedToDex[] = _("{STRING 3}’s data was\nadded to the POKéDEX.\p");
+const u8 BattleText_Raining[] = _("It is raining.");
+const u8 BattleText_Sandstorm[] = _("A sandstorm is raging.");
+const u8 BattleText_BoxFull[] = _("The BOX is full!\nYou can’t catch any more!\p");
+const u8 BattleText_EnigmaBerry[] = _("ENIGMA BERRY");
+const u8 BattleText_Berry[] = _(" BERRY");
+const u8 BattleText_CuredParalysis[] = _("{STRING 16}’s {STRING 19}\ncured paralysis!");
+const u8 BattleText_CuredPoison[] = _("{STRING 16}’s {STRING 19}\ncured poison!");
+const u8 BattleText_CuredBurn[] = _("{STRING 16}’s {STRING 19}\nhealed its burn!");
+const u8 BattleText_CuredFreeze[] = _("{STRING 16}’s {STRING 19}\ndefrosted it!");
+const u8 BattleText_CuredSleep[] = _("{STRING 16}’s {STRING 19}\nwoke it from its sleep!");
+const u8 BattleText_CuredConfusion[] = _("{STRING 16}’s {STRING 19}\nsnapped it out of confusion!");
+const u8 BattleText_CuredStatus[] = _("{STRING 16}’s {STRING 19}\ncured its {STRING 0} problem!");
+const u8 BattleText_NormalizedStatus[] = _("{STRING 16}’s {STRING 19}\nnormalized its status!");
+const u8 BattleText_RestoredHealth[] = _("{STRING 16}’s {STRING 19}\nrestored health!");
+const u8 BattleText_RestoredPP[] = _("{STRING 16}’s {STRING 19}\nrestored {STRING 0}’s PP!");
+const u8 BattleText_RestoredStatus[] = _("{STRING 16}’s {STRING 19}\nrestored its status!");
+const u8 BattleText_RestoredHPLittle[] = _("{STRING 16}’s {STRING 19}\nrestored its HP a little!");
+const u8 BattleText_ChoiceBand[] = _("{STRING 19} allows the\nuse of only {STRING 17}!\p");
+const u8 BattleText_FocusSash[] = _("{DEFENDING_MON} hung on\nusing its {STRING 19}!");
+const u8 BattleText_Terminator2[] = _("");
+const u8 BattleText_WallyBall[] = _("You throw a BALL now, right?\nI... I’ll do my best!");
+const u8 BattleText_StartEvo[] = _("What?\n{STRING 2} is evolving!");
+const u8 BattleText_FinishEvo[] = _("Congratulations! Your {STRING 2}\nevolved into {STRING 3}!{UNKNOWN_A}\p");
+const u8 BattleText_StopEvo[] = _("Huh? {STRING 2}\nstopped evolving!\p");
+const u8 BattleText_OtherMenu[] = _("What should\n{STRING 15} do?");
+const u8 BattleText_PlayerMenu[] = _("What will\n{STRING 32} do?");
+const u8 BattleText_WallyMenu[] = _("What will\nWALLY do?");
+const u8 BattleText_LinkStandby[] = _("{PAUSE 16}Link standby...");
+const u8 BattleText_MenuOptions[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}FIGHT{CLEAR_TO 0x2E}BAG\nPOKéMON{CLEAR_TO 0x2E}RUN");
+const u8 BattleText_MenuOptionsSafari[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}BALL{CLEAR_TO 0x2E}{POKEBLOCK}\nGO NEAR{CLEAR_TO 0x2E}RUN");
+const u8 BattleText_PP[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}PP\nTYPE/");
+const u8 BattleText_Format[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}"); // cant think of a better name
+const u8 BattleText_ForgetMove[] = _("{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}{PALETTE 5}Which move should\nbe forgotten?");
+const u8 BattleText_YesNo[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}Yes\nNo");
+const u8 BattleText_SwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}Switch\nwhich?");
+const u8 BattleText_Format2[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW SKY_BLUE LIGHT_BLUE WHITE2}");
+const u8 BattleText_RightArrow[] = _("{RIGHT_ARROW}");
+const u8 BattleText_Plus[] = _("+");
+const u8 BattleText_Dash[] = _("-");
+const u8 BattleText_HP[] = _("HP ");
+const u8 BattleText_Attack[] = _("ATTACK ");
+const u8 BattleText_Defense[] = _("DEFENSE");
+const u8 BattleText_SpAtk[] = _("SP. ATK");
+const u8 BattleText_SpDef[] = _("SP. DEF");
+const u8 BattleText_SafariBalls[] = _("{HIGHLIGHT RED}SAFARI BALLS");
+const u8 BattleText_SafariBallsLeft[] = _("{HIGHLIGHT RED}Left: ");
+const u8 BattleText_HighlightRed[] = _("{HIGHLIGHT RED}");
+const u8 BattleText_Sleep[] = _("sleep");
+const u8 BattleText_PoisonStatus[] = _("poison");
+const u8 BattleText_Burn[] = _("burn");
+const u8 BattleText_Paralysis[] = _("paralysis");
+const u8 BattleText_IceStatus[] = _("ice");
+const u8 BattleText_Confusion[] = _("confusion");
+const u8 BattleText_Love[] = _("love");
+const u8 BattleText_Format3[] = _(" and ");
+const u8 BattleText_Format4[] = _(", ");
+const u8 BattleText_Format5[] = _(" ");
+const u8 BattleText_Format6[] = _("\l");
+const u8 BattleText_Format7[] = _("\n");
+const u8 BattleText_Format8[] = _("are");
+const u8 BattleText_Format9[] = _("are");
+const u8 gBadEggNickname[] = _("Bad EGG"); // 8400E3A
+const u8 BattleText_Wally[] = _("WALLY");
+const u8 BattleText_Win[] = _("{HIGHLIGHT TRANSPARENT}Win"); // 8400E48
+const u8 BattleText_Loss[] = _("{HIGHLIGHT TRANSPARENT}Loss"); // 8400E4F
+const u8 BattleText_Tie[] = _("{HIGHLIGHT TRANSPARENT}Tie"); // 8400E57
+const u8 BattleText_Format10[] = _(" is");
+const u8 BattleText_Format11[] = _("’s");
+const u8 BattleText_Normal[] = _("a NORMAL move");
+const u8 BattleText_Fighting[] = _("a FIGHTING move");
+const u8 BattleText_Flying[] = _("a FLYING move");
+const u8 BattleText_Poison[] = _("a POISON move");
+const u8 BattleText_Ground[] = _("a GROUND move");
+const u8 BattleText_Rock[] = _("a ROCK move");
+const u8 BattleText_Bug[] = _("a BUG move");
+const u8 BattleText_Ghost[] = _("a GHOST move");
+const u8 BattleText_Steel[] = _("a STEEL move");
+const u8 BattleText_Typeless[] = _("a ??? move");
+const u8 BattleText_Fire[] = _("a FIRE move");
+const u8 BattleText_Water[] = _("a WATER move");
+const u8 BattleText_Grass[] = _("a GRASS move");
+const u8 BattleText_Electric[] = _("an ELECTRIC move");
+const u8 BattleText_Psychic[] = _("a PSYCHIC move");
+const u8 BattleText_Ice[] = _("an ICE move");
+const u8 BattleText_Dragon[] = _("a DRAGON move");
+const u8 BattleText_Dark[] = _("a DARK move");
+
+const u8 *const gUnknown_08400F58[] =
+{
+ BattleStatText_HP,
+ BattleStatText_Attack,
+ BattleStatText_Defense,
+ BattleStatText_Speed,
+ BattleStatText_SpAtk,
+ BattleStatText_SpDef,
+ BattleStatText_Accuracy,
+ BattleStatText_Evasion,
+};
+
+const u8 *const gUnknown_08400F78[] =
+{
+ ContestStatText_TooSpicy,
+ ContestStatText_TooDry,
+ ContestStatText_TooSweet,
+ ContestStatText_TooBitter,
+ ContestStatText_TooSour,
+};
+
+const u8 *const gBattleStringsTable[] =
+{
+ BattleText_UnknownString,
+ BattleText_GainExpPoints,
+ BattleText_GrewLevel,
+ BattleText_LearnedMove,
+ BattleText_TryingToLearnMove,
+ BattleText_CantLearnMore,
+ BattleText_DeleteMove,
+ BattleText_DeletedMove,
+ BattleText_StopLearning,
+ BattleText_DidNotLearn,
+ BattleText_LearnedMove2,
+ BattleText_AttackMissed,
+ BattleText_ProtectedItself,
+ BattleText_StatNoHigher,
+ BattleText_AvoidedDamage,
+ BattleText_DoesntAffect,
+ BattleText_AttackingFainted,
+ BattleText_DefendingFainted,
+ BattleText_WinningPrize,
+ BattleText_OutOfUsablePoke,
+ BattleText_WhitedOut,
+ BattleText_PreventEscape,
+ BattleText_HitMulti,
+ BattleText_FellAsleep,
+ BattleText_MadeAsleep,
+ BattleText_DefendingAsleep,
+ BattleText_AttackingAsleep,
+ BattleText_WasntAffected,
+ BattleText_Poisoned,
+ BattleText_Poisoned2,
+ BattleText_PoisonHurt,
+ BattleText_AlreadyPoisoned,
+ BattleText_BadlyPoisoned,
+ BattleText_EnergyDrained,
+ BattleText_Burned,
+ BattleText_Burned2,
+ BattleText_BurnHurt,
+ BattleText_Frozen,
+ BattleText_Frozen2,
+ BattleText_FrozenSolid,
+ BattleText_DefendingDefrosted,
+ BattleText_AttackingDefrosted,
+ BattleText_Defrosted,
+ BattleText_Paralyzed,
+ BattleText_Paralyzed2,
+ BattleText_Paralyzed3,
+ BattleText_AlreadyParalyzed,
+ BattleText_ParalysisHealed,
+ BattleText_DreamEaten,
+ BattleText_AttackingStatNoHigher,
+ BattleText_DefendingStatNoHigher,
+ BattleText_StoppedWorking,
+ BattleText_StoppedWorking2,
+ BattleText_Confused,
+ BattleText_ConfusionSnapOut,
+ BattleText_BecameConfused,
+ BattleText_AlreadyConfused,
+ BattleText_FellLove,
+ BattleText_InLoveWith,
+ BattleText_ImmobilizedBy,
+ BattleText_BlownAway,
+ BattleText_TypeTransform,
+ BattleText_Flinched,
+ BattleText_RegainedHealth,
+ BattleText_HPFull,
+ BattleText_RaisedSpDef,
+ BattleText_RaisedDefense,
+ BattleText_CoveredVeil,
+ BattleText_SafeguardActive,
+ BattleText_SafeguardFaded,
+ BattleText_WentToSleep,
+ BattleText_SpeltHealthy,
+ BattleText_WhipWhirlwind,
+ BattleText_TookSunlight,
+ BattleText_LoweredHead,
+ BattleText_IsGlowing,
+ BattleText_FlewHigh,
+ BattleText_DugHole,
+ BattleText_SqueezedBind,
+ BattleText_TrappedVortex,
+ BattleText_Wrapped,
+ BattleText_Clamped,
+ BattleText_HurtBy,
+ BattleText_FreedFrom,
+ BattleText_KeptGoingCrash,
+ BattleText_MistShroud,
+ BattleText_MistProtect,
+ BattleText_GetPumped,
+ BattleText_HitRecoil,
+ BattleText_ProtectedItself2,
+ BattleText_SandBuffeted,
+ BattleText_HailStricken,
+ BattleText_WasSeeded,
+ BattleText_EvadedAttack,
+ BattleText_HealthSapped,
+ BattleText_FastAsleep,
+ BattleText_WokeUp,
+ BattleText_UproarAwake,
+ BattleText_UproarWoke,
+ BattleText_UproarCaused,
+ BattleText_UproarMaking,
+ BattleText_CalmedDown,
+ BattleText_UproarCantSleep,
+ BattleText_Stockpiled,
+ BattleText_StockpiledCant,
+ BattleText_UproarCantSleep2,
+ BattleText_UproarKeptAwake,
+ BattleText_StayedAwake,
+ BattleText_StoringEnergy,
+ BattleText_UnleashedEnergy,
+ BattleText_FatigueConfuse,
+ BattleText_PickedUpYen,
+ BattleText_Unaffected,
+ BattleText_Transformed,
+ BattleText_SubMade,
+ BattleText_SubAlready,
+ BattleText_SubTookDamage,
+ BattleText_SubFaded,
+ BattleText_MustRecharge,
+ BattleText_RageBuilding,
+ BattleText_MoveWasDisabled,
+ BattleText_MoveIsDisabled,
+ BattleText_DisabledNoMore,
+ BattleText_EncoreGot,
+ BattleText_EncoreEnded,
+ BattleText_TookAim,
+ BattleText_SketchedMove,
+ BattleText_DestinyBondTake,
+ BattleText_DestinyBondTaken,
+ BattleText_ReducedBy,
+ BattleText_StoleSomething,
+ BattleText_CantEscapeNow,
+ BattleText_NightmareStart,
+ BattleText_NightmareLock,
+ BattleText_CurseLay,
+ BattleText_CurseAfflict,
+ BattleText_SpikesScattered,
+ BattleText_SpikesHurt,
+ BattleText_IdentifiedPoke,
+ BattleText_PerishSongFell,
+ BattleText_BracedItself,
+ BattleText_EnduredHit,
+ BattleText_MagnitudeCount,
+ BattleText_CutHPMaxATK,
+ BattleText_CopyStatChanges,
+ BattleText_GotFreeFrom,
+ BattleText_LeechShed,
+ BattleText_SpikesBlownAway,
+ BattleText_FledBattle,
+ BattleText_ForesawAttack,
+ BattleText_TookAttack,
+ BattleText_PokeAttack,
+ BattleText_CenterAttention,
+ BattleText_ChargingPower,
+ BattleText_NaturePower,
+ BattleText_StatusNormal,
+ BattleText_NoMovesLeft,
+ BattleText_TormentSubject,
+ BattleText_TormentNoUse,
+ BattleText_TightenFocus,
+ BattleText_TauntFell,
+ BattleText_TauntNoUse,
+ BattleText_ReadyToHelp,
+ BattleText_SwitchedItems,
+ BattleText_CopiedObject,
+ BattleText_WishMade,
+ BattleText_WishTrue,
+ BattleText_PlantedRoots,
+ BattleText_AbsorbNutrients,
+ BattleText_AnchoredItself,
+ BattleText_DrowsyMade,
+ BattleText_KnockedOffItem,
+ BattleText_AbilitySwap,
+ BattleText_SealedMove,
+ BattleText_SealedNoUse,
+ BattleText_GrudgeBear,
+ BattleText_GrudgeLosePP,
+ BattleText_ShroudedItself,
+ BattleText_MagicCoatBounce,
+ BattleText_AwaitMove,
+ BattleText_SnatchedMove,
+ BattleText_RainMade,
+ BattleText_SpeedRisen,
+ BattleText_ProtectedBy,
+ BattleText_PreventedBy,
+ BattleText_HPRestoredUsing,
+ BattleText_MadeType,
+ BattleText_PreventedPara,
+ BattleText_PreventedRomance,
+ BattleText_PreventedPoison,
+ BattleText_PreventedConfusion,
+ BattleText_RaisedFirePower,
+ BattleText_AnchorsItself,
+ BattleText_CutsAttack,
+ BattleText_PreventedStatLoss,
+ BattleText_HurtOther,
+ BattleText_Traced,
+ BattleText_Sharply,
+ BattleText_Rose,
+ BattleText_Harshly,
+ BattleText_Fell,
+ BattleText_UnknownString7,
+ BattleText_UnknownString3,
+ BattleText_UnknownString5,
+ BattleText_UnknownString6,
+ BattleText_Critical,
+ BattleText_GrandSlam,
+ BattleText_MoveForget123,
+ BattleText_MoveForgetAnd,
+ BattleText_NotEffective,
+ BattleText_SuperEffective,
+ BattleText_GotAwaySafely,
+ BattleText_FledWild,
+ BattleText_NoRunning,
+ BattleText_CantEscape2,
+ BattleText_BirchDontLeaveMe,
+ BattleText_Nothing,
+ BattleText_Failed,
+ BattleText_HurtItself,
+ BattleText_MirrorFail,
+ BattleText_RainStart,
+ BattleText_PourStart,
+ BattleText_RainCont1,
+ BattleText_PourCont,
+ BattleText_RainStop,
+ BattleText_SandBrewed,
+ BattleText_SandRages,
+ BattleText_SandSubsided,
+ BattleText_SunBright,
+ BattleText_SunStrong,
+ BattleText_SunFaded,
+ BattleText_HailStart,
+ BattleText_HailCont,
+ BattleText_HailStop,
+ BattleText_SpitUpFail,
+ BattleText_SwallowFail,
+ BattleText_WindHeatWave,
+ BattleText_StatElim,
+ BattleText_CoinScatter,
+ BattleText_SubWeak,
+ BattleText_PainSplit,
+ BattleText_BellChime,
+ BattleText_PerishSong,
+ BattleText_NoPP1,
+ BattleText_NoPP2,
+ BattleText_Used1,
+ BattleText_TutorialUsed,
+ BattleText_BlockBall,
+ BattleText_DontBeAThief,
+ BattleText_DodgeBall,
+ BattleText_MissPoke,
+ BattleText_BallBrokeOhNo,
+ BattleText_BallBrokeAppeared,
+ BattleText_BallBrokeAlmost,
+ BattleText_BallBrokeSoClose,
+ BattleText_BallCaught1,
+ BattleText_BallCaught2,
+ BattleText_GiveNickname,
+ BattleText_SentToPC,
+ BattleText_AddedToDex,
+ BattleText_Raining,
+ BattleText_Sandstorm,
+ BattleText_CantEscape,
+ BattleText_IgnoredOrdersSLP,
+ BattleText_IgnoredOrders,
+ BattleText_BeganNap,
+ BattleText_LoafingAround,
+ BattleText_WontObey,
+ BattleText_TurnedAway,
+ BattleText_NotNotice,
+ BattleText_WillSwitch,
+ BattleText_CreptCloser,
+ BattleText_CantGetCloser,
+ BattleText_WatchingCarefully,
+ BattleText_CuriousAbout,
+ BattleText_EnthralledBy,
+ BattleText_IgnoredThing,
+ BattleText_ThrewBlock,
+ BattleText_SafariOver,
+ BattleText_CuredParalysis,
+ BattleText_CuredPoison,
+ BattleText_CuredBurn,
+ BattleText_CuredFreeze,
+ BattleText_CuredSleep,
+ BattleText_CuredConfusion,
+ BattleText_CuredStatus,
+ BattleText_RestoredHealth,
+ BattleText_RestoredPP,
+ BattleText_RestoredStatus,
+ BattleText_RestoredHPLittle,
+ BattleText_ChoiceBand,
+ BattleText_FocusSash,
+ BattleText_Terminator2,
+ BattleText_PreventedBurn,
+ BattleText_BlocksOther,
+ BattleText_RestoredHPByItem,
+ BattleText_WhipSandstorm,
+ BattleText_PreventedLoss,
+ BattleText_InfatuatedPoke,
+ BattleText_MadeIneffective,
+ BattleText_CuredProblem,
+ BattleText_OozeSuckup,
+ BattleText_Transformed2,
+ BattleText_ElecWeakened,
+ BattleText_FireWeakened,
+ BattleText_HidUnderwater,
+ BattleText_SprangUp,
+ BattleText_CantForgetHM,
+ BattleText_FoundOne,
+ BattleText_PlayerDefeatedTrainer2,
+ BattleText_SoothingAroma,
+ BattleText_CantUseItems,
+ BattleText_UnknownString2,
+ BattleText_UnknownString4,
+ BattleText_HustleUse,
+ BattleText_MadeUseless,
+ BattleText_SandTombTrapped,
+ BattleText_Terminator,
+ BattleText_BoostedExp,
+ BattleText_SunIntensified,
+ BattleText_GroundMoveNegate,
+ BattleText_WallyBall,
+ BattleText_TookAttack2,
+ BattleText_ChoseDestiny,
+ BattleText_LostFocus,
+ BattleText_UseNext,
+ BattleText_FledUsingItem,
+ BattleText_FledUsingOther,
+ BattleText_DraggedOut,
+ BattleText_PreventedOther,
+ BattleText_NormalizedStatus,
+ BattleText_Used2,
+ BattleText_BoxFull,
+ BattleText_AvoidedAttack,
+ BattleText_MadeIneffective2,
+ BattleText_PreventedFlinching,
+ BattleText_AlreadyBurned,
+ BattleText_StatNoLower,
+ BattleText_BlocksOther2,
+ BattleText_WoreOff,
+ BattleText_RaisedDefenseLittle,
+ BattleText_RaisedSpDefLittle,
+ BattleText_BrokeWall,
+ BattleText_PreventedOther2,
+ BattleText_CuredOfProblem,
+ BattleText_AttackingCantEscape,
+ BattleText_Obtained1,
+ BattleText_Obtained2,
+ BattleText_Obtained3,
+ BattleText_NoEffect,
+ BattleText_NoEffectOn,
+};
+
+// below are lists of battle string enums and NOT pointers to the strings.
+const u16 gMissStrings[] =
+{
+ BATTLE_TEXT_AttackMissed,
+ BATTLE_TEXT_ProtectedItself,
+ BATTLE_TEXT_AvoidedAttack,
+ BATTLE_TEXT_AvoidedDamage,
+ BATTLE_TEXT_GroundMoveNegate,
+};
+
+const u16 BattleTextList_401512[] =
+{
+ BATTLE_TEXT_CantEscape2,
+ BATTLE_TEXT_BirchDontLeaveMe,
+ BATTLE_TEXT_PreventEscape,
+ BATTLE_TEXT_CantEscape,
+ BATTLE_TEXT_AttackingCantEscape,
+};
+
+const u16 BattleTextList_40151C[] =
+{
+ BATTLE_TEXT_RainStart,
+ BATTLE_TEXT_PourStart,
+ BATTLE_TEXT_Failed,
+ BATTLE_TEXT_SandBrewed,
+ BATTLE_TEXT_SunBright,
+ BATTLE_TEXT_HailStart,
+};
+
+const u16 BattleTextList_401528[] =
+{
+ BATTLE_TEXT_SandRages,
+ BATTLE_TEXT_HailCont,
+};
+
+const u16 BattleTextList_40152C[] =
+{
+ BATTLE_TEXT_SandBuffeted,
+ BATTLE_TEXT_HailStricken,
+};
+
+const u16 BattleTextList_401530[] =
+{
+ BATTLE_TEXT_SandSubsided,
+ BATTLE_TEXT_HailStop,
+};
+
+const u16 BattleTextList_401534[] =
+{
+ BATTLE_TEXT_RainCont1,
+ BATTLE_TEXT_PourCont,
+ BATTLE_TEXT_RainStop,
+};
+
+const u16 BattleTextList_40153A[] =
+{
+ BATTLE_TEXT_ProtectedItself2,
+ BATTLE_TEXT_BracedItself,
+ BATTLE_TEXT_Failed,
+};
+
+const u16 BattleTextList_401540[] =
+{
+ BATTLE_TEXT_Failed,
+ BATTLE_TEXT_RaisedDefense,
+ BATTLE_TEXT_RaisedDefenseLittle,
+ BATTLE_TEXT_RaisedSpDef,
+ BATTLE_TEXT_RaisedSpDefLittle,
+ BATTLE_TEXT_CoveredVeil,
+};
+
+const u16 BattleTextList_40154C[] =
+{
+ BATTLE_TEXT_WasSeeded,
+ BATTLE_TEXT_EvadedAttack,
+ BATTLE_TEXT_DoesntAffect,
+ BATTLE_TEXT_HealthSapped,
+ BATTLE_TEXT_OozeSuckup,
+};
+
+const u16 BattleTextList_401556[] =
+{
+ BATTLE_TEXT_WentToSleep,
+ BATTLE_TEXT_SpeltHealthy,
+};
+
+const u16 BattleTextList_40155A[] =
+{
+ BATTLE_TEXT_UproarMaking,
+ BATTLE_TEXT_CalmedDown,
+};
+
+const u16 BattleTextList_40155E[] =
+{
+ BATTLE_TEXT_Stockpiled,
+ BATTLE_TEXT_StockpiledCant,
+};
+
+const u16 BattleTextList_401562[] =
+{
+ BATTLE_TEXT_WokeUp,
+ BATTLE_TEXT_UproarWoke,
+};
+
+const u16 BattleTextList_401566[] =
+{
+ BATTLE_TEXT_SwallowFail,
+ BATTLE_TEXT_HPFull,
+};
+
+const u16 BattleTextList_40156A[] =
+{
+ BATTLE_TEXT_UproarCantSleep2,
+ BATTLE_TEXT_UproarKeptAwake,
+ BATTLE_TEXT_StayedAwake,
+};
+
+const u16 BattleTextList_401570[] =
+{
+ BATTLE_TEXT_UnknownString7,
+ BATTLE_TEXT_UnknownString3,
+ BATTLE_TEXT_AttackingStatNoHigher,
+ BATTLE_TEXT_Terminator2,
+ BATTLE_TEXT_UnknownString4,
+ BATTLE_TEXT_HustleUse,
+};
+
+const u16 BattleTextList_40157C[] =
+{
+ BATTLE_TEXT_UnknownString5,
+ BATTLE_TEXT_UnknownString6,
+ BATTLE_TEXT_DefendingStatNoHigher,
+ BATTLE_TEXT_Terminator2,
+};
+
+const u16 BattleTextList_401584[] =
+{
+ BATTLE_TEXT_WhipWhirlwind,
+ BATTLE_TEXT_TookSunlight,
+ BATTLE_TEXT_LoweredHead,
+ BATTLE_TEXT_IsGlowing,
+ BATTLE_TEXT_FlewHigh,
+ BATTLE_TEXT_DugHole,
+ BATTLE_TEXT_HidUnderwater,
+ BATTLE_TEXT_SprangUp,
+};
+
+const u16 BattleTextList_401594[] =
+{
+ BATTLE_TEXT_SqueezedBind,
+ BATTLE_TEXT_Wrapped,
+ BATTLE_TEXT_TrappedVortex,
+ BATTLE_TEXT_Clamped,
+ BATTLE_TEXT_TrappedVortex,
+ BATTLE_TEXT_SandTombTrapped,
+};
+
+const u16 BattleTextList_4015A0[] =
+{
+ BATTLE_TEXT_MistShroud,
+ BATTLE_TEXT_Failed,
+};
+
+const u16 BattleTextList_4015A4[] =
+{
+ BATTLE_TEXT_GetPumped,
+ BATTLE_TEXT_Failed,
+};
+
+const u16 BattleTextList_4015A8[] =
+{
+ BATTLE_TEXT_Transformed,
+ BATTLE_TEXT_Failed,
+};
+
+const u16 BattleTextList_4015AC[] =
+{
+ BATTLE_TEXT_SubMade,
+ BATTLE_TEXT_SubWeak,
+};
+
+const u16 BattleTextList_4015B0[] =
+{
+ BATTLE_TEXT_Poisoned,
+ BATTLE_TEXT_Poisoned2,
+};
+
+const u16 BattleTextList_4015B4[] =
+{
+ BATTLE_TEXT_Paralyzed,
+ BATTLE_TEXT_Paralyzed2,
+};
+
+const u16 BattleTextList_4015B8[] =
+{
+ BATTLE_TEXT_FellAsleep,
+ BATTLE_TEXT_MadeAsleep,
+};
+
+const u16 BattleTextList_4015BC[] =
+{
+ BATTLE_TEXT_Burned,
+ BATTLE_TEXT_Burned2,
+};
+
+const u16 BattleTextList_4015C0[] =
+{
+ BATTLE_TEXT_Frozen,
+ BATTLE_TEXT_Frozen2,
+};
+
+const u16 BattleTextList_4015C4[] =
+{
+ BATTLE_TEXT_AttackingDefrosted,
+ BATTLE_TEXT_Defrosted,
+};
+
+const u16 BattleTextList_4015C8[] =
+{
+ BATTLE_TEXT_AttackMissed,
+ BATTLE_TEXT_Unaffected,
+ BATTLE_TEXT_FellLove,
+ BATTLE_TEXT_InfatuatedPoke,
+};
+
+const u16 BattleTextList_4015D0[] =
+{
+ BATTLE_TEXT_EnergyDrained,
+ BATTLE_TEXT_OozeSuckup,
+};
+
+const u16 BattleTextList_4015D4[] =
+{
+ BATTLE_TEXT_ElecWeakened,
+ BATTLE_TEXT_FireWeakened,
+};
+
+const u16 BattleTextList_4015D8[] =
+{
+ BATTLE_TEXT_BellChime,
+ BATTLE_TEXT_BellChime,
+ BATTLE_TEXT_BellChime,
+ BATTLE_TEXT_BellChime,
+ BATTLE_TEXT_SoothingAroma,
+};
+
+const u16 BattleTextList_4015E2[] =
+{
+ BATTLE_TEXT_ForesawAttack,
+ BATTLE_TEXT_ChoseDestiny,
+};
+
+const u16 BattleTextList_4015E6[] =
+{
+ BATTLE_TEXT_BallBrokeOhNo,
+ BATTLE_TEXT_BallBrokeAppeared,
+ BATTLE_TEXT_BallBrokeAlmost,
+ BATTLE_TEXT_BallBrokeSoClose,
+};
+
+const u16 BattleTextList_4015EE[] =
+{
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Sandstorm,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_SunStrong,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+ BATTLE_TEXT_Raining,
+};
+
+const u16 BattleTextList_40160E[] =
+{
+ BATTLE_TEXT_LoafingAround,
+ BATTLE_TEXT_WontObey,
+ BATTLE_TEXT_TurnedAway,
+ BATTLE_TEXT_NotNotice,
+};
+
+const u16 BattleTextList_401616[] =
+{
+ BATTLE_TEXT_CreptCloser,
+ BATTLE_TEXT_CantGetCloser,
+};
+
+const u16 BattleTextList_40161A[] =
+{
+ BATTLE_TEXT_CuriousAbout,
+ BATTLE_TEXT_EnthralledBy,
+ BATTLE_TEXT_IgnoredThing,
+};
+
+const u16 BattleTextList_401620[] =
+{
+ BATTLE_TEXT_CuredConfusion,
+ BATTLE_TEXT_CuredParalysis,
+ BATTLE_TEXT_CuredFreeze,
+ BATTLE_TEXT_CuredBurn,
+ BATTLE_TEXT_CuredPoison,
+ BATTLE_TEXT_CuredSleep,
+};
+
+const u16 BattleTextList_40162C[] =
+{
+ BATTLE_TEXT_CuredStatus,
+ BATTLE_TEXT_NormalizedStatus,
+};
+
+const u16 BattleTextList_401630[] =
+{
+ BATTLE_TEXT_PreventedBurn,
+ BATTLE_TEXT_PreventedOther2,
+ BATTLE_TEXT_NoEffectOn,
+};
+
+const u16 BattleTextList_401636[] =
+{
+ BATTLE_TEXT_PreventedPara,
+ BATTLE_TEXT_PreventedOther2,
+ BATTLE_TEXT_NoEffectOn,
+};
+
+const u16 BattleTextList_40163C[] =
+{
+ BATTLE_TEXT_PreventedPoison,
+ BATTLE_TEXT_PreventedOther2,
+ BATTLE_TEXT_NoEffectOn,
+};
+
+const u16 BattleTextList_401642[] =
+{
+ BATTLE_TEXT_Obtained1,
+ BATTLE_TEXT_Obtained2,
+ BATTLE_TEXT_Obtained3,
+};
+
+const u16 BattleTextList_401648[] =
+{
+ BATTLE_TEXT_RaisedFirePower,
+ BATTLE_TEXT_MadeIneffective,
+};
+
+const u16 gTrappingMoves[] =
+{
+ MOVE_BIND,
+ MOVE_WRAP,
+ MOVE_FIRE_SPIN,
+ MOVE_CLAMP,
+ MOVE_WHIRLPOOL,
+ MOVE_SAND_TOMB,
+ 0xFFFF,
+};
+
+const u8 *const gUnknown_0840165C[] =
+{
+ BattleText_HP,
+ BattleText_SpAtk,
+ BattleText_Attack,
+ BattleText_SpDef,
+ BattleText_Defense,
+ BattleStatText_Speed,
+};
+
+const u8 *const gUnknown_08401674[] =
+{
+ BattleText_Normal,
+ BattleText_Fighting,
+ BattleText_Flying,
+ BattleText_Poison,
+ BattleText_Ground,
+ BattleText_Rock,
+ BattleText_Bug,
+ BattleText_Ghost,
+ BattleText_Steel,
+ BattleText_Typeless,
+ BattleText_Fire,
+ BattleText_Water,
+ BattleText_Grass,
+ BattleText_Electric,
+ BattleText_Psychic,
+ BattleText_Ice,
+ BattleText_Dragon,
+ BattleText_Dark,
+};
diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index 3378e4e0a..dcb6fa2d8 100644
--- a/src/debug/matsuda_debug_menu.c
+++ b/src/debug/matsuda_debug_menu.c
@@ -41,32 +41,8 @@ extern u16 gUnknown_030041B8;
extern struct Window gUnknown_03004210;
extern u8 (*gCallback_03004AE8)(void);
-extern u8 gUnknown_083C926E[][2];
-extern u8 gUnknown_083C9282[];
-extern const u8 gUnknown_083C928E[][2];
-extern u8 gUnknown_083C9296[];
-extern u8 gUnknown_083C92A8[];
-extern u8 gMatsudaDebugMenu_GoBackText[];
-extern u8 gMatsudaDebugMenu_BattlePointsText[];
-extern u8 gMatsudaDebugMenu_StartText[];
-
-extern struct SpritePalette gUnknown_083C92BC;
-extern struct SpriteSheet gUnknown_083C92B4;
-extern struct SpriteTemplate gSpriteTemplate_83C92CC;
-extern void (*gUnknown_083C92E4[][2])(struct Sprite *, s8);
-extern u32 gUnknown_083C9400[2];
-
-
-extern u8 gMatsudaDebugMenu_UnknownByteArray[];
-extern u8* gMatsudaDebugMenuTextList1[];
-extern u8* gMatsudaDebugMenuTextList2[];
-extern u8* gMatsudaDebugMenuTextList3[];
-extern u8 gMatsudaDebugMenuContestTopLeft[][2];
-
extern bool8 gReceivedRemoteLinkPlayers;
-extern struct MenuAction gMatsudaDebugMenuActions[];
-
static bool8 sub_80A9B78(void);
static void sub_80A9BE4(u8 taskId);
static void sub_80A9C98(u8);
@@ -85,6 +61,191 @@ static void sub_80AA5BC(u8);
static void sub_80AA614(u8, u8);
static void sub_80AAD08(struct Sprite *, s8);
+// unused
+const u8 gText_Unused83C9150[] = _("テストです"); // "test"
+const u8 gMatsudaDebugMenu_ActionContestText[] = _("Contest");
+const u8 gMatsudaDebugMenu_ActionContestResultsText[] = _("Contest results");
+// unused
+const u8 gMatsudaDebugMenu_ActionChangePerimeterText[] = _("パラメータへんこう"); // "Change parameter"
+// unused
+const u8 gMatsudaDebugMenu_ActionChangeMoveText[] = _("わざ へんこう"); // "Change move"
+const u8 gMatsudaDebugMenu_ActionContestCommText[] = _("Contest (comm.)");
+const u8 gMatsudaDebugMenu_ActionCommTestText[] = _("Init comm. data");
+const u8 gMatsudaDebugMenu_ActionSetHighScoreText[] = _("Set highest score");
+const u8 gMatsudaDebugMenu_ActionResetHighScoreText[] = _("Reset highest score");
+const u8 gMatsudaDebugMenu_ActionSetAllArtMuseumText[] = _("Set all art museum items");
+
+const struct MenuAction gMatsudaDebugMenuActions[] =
+{
+ {gMatsudaDebugMenu_ActionContestText, MatsudaDebugMenu_Contest},
+ {gMatsudaDebugMenu_ActionContestResultsText, MatsudaDebugMenu_ContestResults},
+ {gMatsudaDebugMenu_ActionContestCommText, MatsudaDebugMenu_ContestComm},
+ {gMatsudaDebugMenu_ActionCommTestText, MatsudaDebugMenu_CommTest},
+ {gMatsudaDebugMenu_ActionSetHighScoreText, MatsudaDebugMenu_SetHighScore},
+ {gMatsudaDebugMenu_ActionResetHighScoreText, MatsudaDebugMenu_ResetHighScore},
+ {gMatsudaDebugMenu_ActionSetAllArtMuseumText, MatsudaDebugMenu_SetArtMuseumItems},
+};
+
+const u8 gMatsudaDebugMenu_UnknownByteArray[] = {0xFC, 0x02, 0x0F, 0x00, 0xFF};
+const u8 Unknown_083C922D[] = INCBIN_U8("graphics/unknown/ball.4bpp");
+const u16 Unknown_083C924E[] = INCBIN_U16("graphics/unknown/ball.gbapal");
+
+const u8 gUnknown_083C926E[][2] =
+{
+ {2, 0},
+ {17, 0},
+ {2, 2},
+ {17, 2},
+};
+
+const u8 gMatsudaDebugMenuContestTopLeft[][2] =
+{
+ {0, 6},
+ {15, 6},
+ {0, 8},
+ {15, 8},
+ {0, 10},
+ {15, 10},
+};
+
+const u8 gUnknown_083C9282[] =
+{
+ // TODO: 2d array?
+ 7, 6,
+ 22, 6,
+ 7, 8,
+ 22, 8,
+ 7, 10,
+ 22, 10,
+};
+
+const u8 gUnknown_083C928E[][2] =
+{
+ {2, 14},
+ {17, 14},
+ {2, 16},
+ {17, 16},
+};
+
+const u8 gUnknown_083C9296[] = {0x08, 0x80, 0x08, 0x80, 0x10, 0x10, 0x30, 0xA8, 0x30, 0xA8, 0x30, 0xA8, 0x08, 0x80, 0x08, 0x80, 0x10, 0x88};
+const u8 gUnknown_083C92A8[] = {0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x78, 0x88, 0x98};
+
+const struct SpriteSheet gUnknown_083C92B4[] = {Unknown_083C922D, 32, 0x4B0};
+const struct SpritePalette gUnknown_083C92BC[] = {Unknown_083C924E, 0x4B0};
+
+const struct OamData gOamData_83C92C4 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83C92CC =
+{
+ .tileTag = 1200,
+ .paletteTag = 1200,
+ .oam = &gOamData_83C92C4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80AA754,
+};
+
+static void (* const gUnknown_083C92E4[][2])(struct Sprite *, s8) =
+{
+ {sub_80AA8C8, sub_80AA8D8},
+ {sub_80AA8E8, sub_80AA8F8},
+ {sub_80AAC5C, sub_80AAC5C},
+ {sub_80AA930, sub_80AA974},
+ {sub_80AA9B8, sub_80AA9FC},
+ {sub_80AAA40, sub_80AAA84},
+ {sub_80AAAF0, sub_80AAB30},
+ {sub_80AAB70, sub_80AABB0},
+ {sub_80AABF0, sub_80AAD44},
+};
+
+static const u8 gMatsudaDebugMenu_StartText[] = _("{COLOR CYAN}{HIGHLIGHT RED}");
+static const u8 gMatsudaDebugMenu_StartJapText[] = _("かいし"); // because StartText is only called by StringCopy, this part appears to be unused.
+static const u8 gMatsudaDebugMenu_GoBackText[] = _("もどる");
+
+#ifdef GERMAN
+static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP,");
+#else
+static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP.");
+#endif
+
+static const u8 MatsudaDebugMenuText_Cool[] = _("かっこよさ"); // cool
+static const u8 MatsudaDebugMenuText_Cute[] = _("かわいさ"); // cute
+static const u8 MatsudaDebugMenuText_Beauty[] = _("うつくしさ"); // beauty
+static const u8 MatsudaDebugMenuText_Smart[] = _("かしこさ"); // smart
+static const u8 MatsudaDebugMenuText_Tough[] = _("たくましさ"); // tough
+static const u8 MatsudaDebugMenuText_Sheen[] = _("けづや"); // sheen
+
+static const u8 *const gMatsudaDebugMenuTextList1[] =
+{
+ MatsudaDebugMenuText_Cool,
+ MatsudaDebugMenuText_Cute,
+ MatsudaDebugMenuText_Beauty,
+ MatsudaDebugMenuText_Smart,
+ MatsudaDebugMenuText_Tough,
+ MatsudaDebugMenuText_Sheen,
+};
+
+static const u8 MatsudaDebugMenuText_CoolContest[] = _("かっこよさコンテスト");
+static const u8 MatsudaDebugMenuText_BeautyContest[] = _("うつくしさコンテスト");
+static const u8 MatsudaDebugMenuText_CuteContest[] = _("かわいさコンテスト ");
+static const u8 MatsudaDebugMenuText_SmartContest[] = _("かしこさコンテスト ");
+static const u8 MatsudaDebugMenuText_ToughContest[] = _("たくましさコンテスト");
+
+static const u8 *const gMatsudaDebugMenuTextList2[] =
+{
+ MatsudaDebugMenuText_CoolContest,
+ MatsudaDebugMenuText_BeautyContest,
+ MatsudaDebugMenuText_CuteContest,
+ MatsudaDebugMenuText_SmartContest,
+ MatsudaDebugMenuText_ToughContest,
+};
+
+static const u8 MatsudaDebugMenuText_Fallarbor[] = _("ハジツゲ/ノーマル"); // Fallarbor / Normal
+static const u8 MatsudaDebugMenuText_Verdanturf[] = _("シダケ/スーパー "); // Verdanturf / Super
+static const u8 MatsudaDebugMenuText_Slateport[] = _("カイナ/ハイパー "); // Slateport / Hyper
+static const u8 MatsudaDebugMenuText_Lilycove[] = _("ミナモ/マスター "); // Lilycove / Master
+
+static const u8 *const gMatsudaDebugMenuTextList3[] =
+{
+ MatsudaDebugMenuText_Fallarbor,
+ MatsudaDebugMenuText_Verdanturf,
+ MatsudaDebugMenuText_Slateport,
+ MatsudaDebugMenuText_Lilycove,
+};
+
+static const struct OamData gUnknown_083C9400 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 1023,
+ .priority = 0,
+ .paletteNum = 15,
+ .affineParam = 0,
+};
+
u8 unref_sub_80A9B28(void)
{
MenuZeroFillScreen();
@@ -112,7 +273,7 @@ static bool8 sub_80A9B78(void)
}
}
-s8 MatsudaDebugMenu_ContestResults(void)
+u8 MatsudaDebugMenu_ContestResults(void)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
CreateTask(sub_80A9BE4, 0xFF);
@@ -132,20 +293,20 @@ static void sub_80A9BE4(u8 taskId)
}
}
-s8 MatsudaDebugMenu_Contest(void)
+u8 MatsudaDebugMenu_Contest(void)
{
gIsLinkContest = 0;
sub_80AA10C();
return 0;
}
-s8 MatsudaDebugMenu_ContestComm(void)
+u8 MatsudaDebugMenu_ContestComm(void)
{
sub_80AA10C();
return 0;
}
-s8 MatsudaDebugMenu_CommTest(void)
+u8 MatsudaDebugMenu_CommTest(void)
{
u8 newTaskId;
u8 newTaskId2;
@@ -397,8 +558,8 @@ static void sub_80AA10C(void)
sub_80AA5E8(gScriptContestRank);
sub_8003460(&gMenuWindow, gMatsudaDebugMenu_GoBackText, 0xD6, 0x12, 0x12);
sub_8003460(&gMenuWindow, gMatsudaDebugMenu_BattlePointsText, 0xDC, zero, 0xC);
- LoadSpriteSheet(&gUnknown_083C92B4);
- LoadSpritePalette(&gUnknown_083C92BC);
+ LoadSpriteSheet(gUnknown_083C92B4);
+ LoadSpritePalette(gUnknown_083C92BC);
sub_80AA280(3);
sub_80AA658(3);
sub_80AA614(3, zero);
@@ -608,7 +769,7 @@ static u8 sub_80AA908(u32 a1, u8 a2, s8 a3) // first param is unused.
return val;
}
-void sub_80AA930(struct Sprite *sprite, u8 var2)
+void sub_80AA930(struct Sprite *sprite, s8 var2)
{
u8 val = sprite->data2;
@@ -616,7 +777,7 @@ void sub_80AA930(struct Sprite *sprite, u8 var2)
sub_80AA340(sprite->data2);
}
-void sub_80AA974(struct Sprite *sprite, u8 var2)
+void sub_80AA974(struct Sprite *sprite, s8 var2)
{
u8 val = sprite->data2;
@@ -624,7 +785,7 @@ void sub_80AA974(struct Sprite *sprite, u8 var2)
sub_80AA388(sprite->data2);
}
-void sub_80AA9B8(struct Sprite *sprite, u8 var2)
+void sub_80AA9B8(struct Sprite *sprite, s8 var2)
{
u8 val = sprite->data2;
@@ -632,7 +793,7 @@ void sub_80AA9B8(struct Sprite *sprite, u8 var2)
sub_80AA3D0(sprite->data2);
}
-void sub_80AA9FC(struct Sprite *sprite, u8 var2)
+void sub_80AA9FC(struct Sprite *sprite, s8 var2)
{
u8 val = sprite->data2;
@@ -640,7 +801,7 @@ void sub_80AA9FC(struct Sprite *sprite, u8 var2)
sub_80AA418(sprite->data2);
}
-void sub_80AAA40(struct Sprite *sprite, u8 var2)
+void sub_80AAA40(struct Sprite *sprite, s8 var2)
{
u8 val = sprite->data2;
@@ -648,7 +809,7 @@ void sub_80AAA40(struct Sprite *sprite, u8 var2)
sub_80AA460(sprite->data2);
}
-void sub_80AAA84(struct Sprite *sprite, u8 var2)
+void sub_80AAA84(struct Sprite *sprite, s8 var2)
{
u8 val = sprite->data2;
@@ -669,7 +830,7 @@ static u16 sub_80AAAC8(u32 a1, u16 a2, s8 a3) // first param is unused.
return val;
}
-void sub_80AAAF0(struct Sprite *sprite, u8 var2)
+void sub_80AAAF0(struct Sprite *sprite, s8 var2)
{
u8 val = sprite->data2;
@@ -677,7 +838,7 @@ void sub_80AAAF0(struct Sprite *sprite, u8 var2)
sub_80AA4F0(sprite->data2, 0);
}
-void sub_80AAB30(struct Sprite *sprite, u8 var2)
+void sub_80AAB30(struct Sprite *sprite, s8 var2)
{
u8 val = sprite->data2;
@@ -685,7 +846,7 @@ void sub_80AAB30(struct Sprite *sprite, u8 var2)
sub_80AA4F0(sprite->data2, 1);
}
-void sub_80AAB70(struct Sprite *sprite, u8 var2)
+void sub_80AAB70(struct Sprite *sprite, s8 var2)
{
u8 val = sprite->data2;
@@ -693,7 +854,7 @@ void sub_80AAB70(struct Sprite *sprite, u8 var2)
sub_80AA4F0(sprite->data2, 2);
}
-void sub_80AABB0(struct Sprite *sprite, u8 var2)
+void sub_80AABB0(struct Sprite *sprite, s8 var2)
{
u8 val = sprite->data2;
@@ -1013,16 +1174,14 @@ void sub_80AAF30(void)
sub_80B2A7C(0xFE);
}
-//Don't know size of return type
-int MatsudaDebugMenu_SetHighScore(void)
+u8 MatsudaDebugMenu_SetHighScore(void)
{
sub_80AAF30();
CloseMenu();
return 1;
}
-//Don't know size of return type
-int MatsudaDebugMenu_ResetHighScore(void)
+u8 MatsudaDebugMenu_ResetHighScore(void)
{
s32 i;
@@ -1037,8 +1196,7 @@ int MatsudaDebugMenu_ResetHighScore(void)
return 1;
}
-//Don't know size of return type
-int MatsudaDebugMenu_SetArtMuseumItems(void)
+u8 MatsudaDebugMenu_SetArtMuseumItems(void)
{
s32 i;
diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c
index e6ee243e8..2c937bb28 100644
--- a/src/debug/mori_debug_menu.c
+++ b/src/debug/mori_debug_menu.c
@@ -16,13 +16,50 @@ extern u8 (*gCallback_03004AE8)(void);
u8 gUnknown_03004DA0[0x20];
-extern u8 gUnknown_0839B22C[][3];
-extern u8 gUnknown_0839B24A[];
-extern u8 gUnknown_0839B24D[];
-extern u8 gUnknown_0839B255[];
-extern u8 gUnknown_0839B257[];
-
-extern const struct MenuAction gMoriDebugMenuActions[];
+const u8 gUnknown_0839B22C[][3] =
+{
+ _(" A"),
+ _(" B"),
+ _("SL"),
+ _("ST"),
+ _("RK"),
+ _("LK"),
+ _("UK"),
+ _("DK"),
+ _("RT"),
+ _("LT"),
+};
+
+const u8 gUnknown_0839B24A[] = _("ND");
+const u8 gUnknown_0839B24D[] = _("の こどもは\n"); // "'s child <topic-particle>"=
+const u8 gUnknown_0839B255[] = _(" ");
+const u8 gUnknown_0839B257[] = _("ながいなまえぽけもん"); // "long name pokemon" (used as test name)
+const u8 Text_39B262[] = _("Search a child");
+const u8 Text_39B271[] = _("Egg");
+const u8 Text_39B275[] = _("Egg (male)");
+const u8 Text_39B280[] = _("1000 steps");
+const u8 Text_39B28B[] = _("10000 steps");
+const u8 Text_39B297[] = _("MOVE TUTOR");
+const u8 Text_39B2A2[] = _("Breed an egg");
+const u8 Text_39B2AF[] = _("Long name");
+#ifdef GERMAN
+const u8 Text_39B2B9[] = _("Delete {POKEBLOCK}");
+#else
+const u8 Text_39B2B9[] = _("ポロックけす");
+#endif
+
+const struct MenuAction gMoriDebugMenuActions[] =
+{
+ {Text_39B262, (u8 (*) (void))MoriDebugMenu_SearchChild}, // ugly cast needed to stop complaints of u8 (*func)() not being compatible with this declaration (TODO: Make MenuAction a Callback union to allow a new definition.)
+ {Text_39B271, MoriDebugMenu_Egg},
+ {Text_39B275, MoriDebugMenu_MaleEgg},
+ {Text_39B280, MoriDebugMenu_1000Steps},
+ {Text_39B28B, MoriDebugMenu_10000Steps},
+ {Text_39B297, MoriDebugMenu_MoveTutor},
+ {Text_39B2A2, MoriDebugMenu_BreedEgg},
+ {Text_39B2AF, MoriDebugMenu_LongName},
+ {Text_39B2B9, MoriDebugMenu_PokeblockCase},
+};
void unref_sub_8083CF0(void)
{
@@ -65,7 +102,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr)
return 0;
}
-s8 MoriDebugMenu_Egg(void)
+u8 MoriDebugMenu_Egg(void)
{
if (CountPokemonInDaycare(&gSaveBlock1.daycare) == 2 && GetDaycareCompatibilityScoreFromSave() )
TriggerPendingDaycareEgg();
@@ -74,7 +111,7 @@ s8 MoriDebugMenu_Egg(void)
return 1;
}
-s8 MoriDebugMenu_MaleEgg(void)
+u8 MoriDebugMenu_MaleEgg(void)
{
if (CountPokemonInDaycare(&gSaveBlock1.daycare) == 2 && GetDaycareCompatibilityScoreFromSave() )
TriggerPendingDaycareMaleEgg();
@@ -83,28 +120,28 @@ s8 MoriDebugMenu_MaleEgg(void)
return 1;
}
-s8 MoriDebugMenu_1000Steps(void)
+u8 MoriDebugMenu_1000Steps(void)
{
Debug_AddDaycareSteps(1000);
CloseMenu();
return 1;
}
-s8 MoriDebugMenu_10000Steps(void)
+u8 MoriDebugMenu_10000Steps(void)
{
Debug_AddDaycareSteps(10000);
CloseMenu();
return 1;
}
-s8 MoriDebugMenu_MoveTutor(void)
+u8 MoriDebugMenu_MoveTutor(void)
{
sub_8132670();
CloseMenu();
return 1;
}
-s8 MoriDebugMenu_BreedEgg(void)
+u8 MoriDebugMenu_BreedEgg(void)
{
u8 loopCounter;
@@ -122,14 +159,14 @@ s8 MoriDebugMenu_BreedEgg(void)
return 1;
}
-s8 MoriDebugMenu_LongName(void)
+u8 MoriDebugMenu_LongName(void)
{
SetMonData(gPlayerParty, MON_DATA_NICKNAME, gUnknown_0839B257);
CloseMenu();
return 1;
}
-s8 MoriDebugMenu_PokeblockCase(void)
+u8 MoriDebugMenu_PokeblockCase(void)
{
s32 loopCounter;
diff --git a/src/engine/cable_club.c b/src/engine/cable_club.c
index c61a1d01c..ec8acc65f 100644
--- a/src/engine/cable_club.c
+++ b/src/engine/cable_club.c
@@ -35,7 +35,6 @@ extern const u8 gUnknown_081A4932[];
extern const u8 gUnknown_081A4975[];
extern const u8 gUnknown_081A49B6[];
extern const u8 gUnknown_081A490C[];
-extern const u8* const gTrainerCardColorNames[];
extern struct
{
u8 field0;
@@ -76,6 +75,26 @@ extern void sub_8055574(void);
extern s32 sub_80554F8(void);
extern void sub_805465C(void);
+#ifdef GERMAN
+const u8 TrainerCardColorName_Bronze[] = _("BRONZE");
+const u8 TrainerCardColorName_Copper[] = _("KUPFER");
+const u8 TrainerCardColorName_Silver[] = _("SILBER");
+const u8 TrainerCardColorName_Gold[] = _("GOLD");
+#else
+const u8 TrainerCardColorName_Bronze[] = _("BRONZE");
+const u8 TrainerCardColorName_Copper[] = _("COPPER");
+const u8 TrainerCardColorName_Silver[] = _("SILVER");
+const u8 TrainerCardColorName_Gold[] = _("GOLD");
+#endif
+
+const u8 *const gTrainerCardColorNames[] =
+{
+ TrainerCardColorName_Bronze,
+ TrainerCardColorName_Copper,
+ TrainerCardColorName_Silver,
+ TrainerCardColorName_Gold,
+};
+
static void sub_8082CD4(u8 arg0, u8 arg1)
{
if (FindTaskIdByFunc(sub_8082F20) == 0xFF)
diff --git a/src/engine/main_menu.c b/src/engine/main_menu.c
index bfbf0dcd6..031dc49d1 100644
--- a/src/engine/main_menu.c
+++ b/src/engine/main_menu.c
@@ -30,8 +30,6 @@ extern struct PaletteFadeControl gPaletteFade;
extern u16 gSaveFileStatus;
-extern u16 gMainMenuPalette[];
-
extern const u8 gBirchSpeech_Welcome[];
extern const u8 gBirchSpeech_ThisIsPokemon[];
extern const u8 gBirchSpeech_WorldInhabitedByPokemon[];
@@ -43,15 +41,11 @@ extern u8 gBirchSpeech_AhOkayYouArePlayer[];
extern u8 gBirchSpeech_AreYouReady[];
extern struct SpriteTemplate gUnknown_02024E8C;
-extern u16 gUnknown_081E795C[];
extern const struct MenuAction gUnknown_081E79B0[];
extern const struct MenuAction gMalePresetNames[];
extern const struct MenuAction gFemalePresetNames[];
-extern const u8 gUnknown_081E764C[];
-extern const u8 gBirchIntroShadowGfx[];
extern const u8 gUnknown_081E7834[];
-extern const u8 gUnknown_081E796C[];
extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[];
@@ -136,6 +130,53 @@ static void CreateNameMenu(u8 left, u8 top);
static s8 NameMenuProcessInput(void);
static void SetPresetPlayerName(u8 index);
+static const u16 gUnknown_081E764C[][16] =
+{
+ INCBIN_U16("graphics/birch_speech/bg0.gbapal"),
+ INCBIN_U16("graphics/birch_speech/bg1.gbapal"),
+};
+
+static const u8 gBirchIntroShadowGfx[] = INCBIN_U8("graphics/birch_speech/shadow.4bpp.lz");
+static const u8 gUnknown_081E7834[] = INCBIN_U8("graphics/birch_speech/map.bin.lz");
+static const u16 gUnknown_081E795C[] = INCBIN_U16("graphics/birch_speech/bg2.gbapal");
+static const u16 gUnknown_081E796C[] = INCBIN_U16("graphics/birch_speech/blank_pal.gbapal");
+static const u16 gMainMenuPalette[] = INCBIN_U16("graphics/misc/main_menu.gbapal");
+
+static const union AffineAnimCmd gSpriteAffineAnim_81E799C[] =
+{
+ AFFINEANIMCMD_FRAME(0xFFFE, 0xFFFE, 0, 48),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[] =
+{
+ gSpriteAffineAnim_81E799C,
+};
+
+static const struct MenuAction gUnknown_081E79B0[] =
+{
+ {gBirchText_Boy, NULL},
+ {gBirchText_Girl, NULL},
+};
+
+static const struct MenuAction gMalePresetNames[] =
+{
+ {gBirchText_NewName, NULL},
+ {gDefaultBoyName1, NULL},
+ {gDefaultBoyName2, NULL},
+ {gDefaultBoyName3, NULL},
+ {gDefaultBoyName4, NULL},
+};
+
+static const struct MenuAction gFemalePresetNames[] =
+{
+ {gBirchText_NewName, NULL},
+ {gDefaultGirlName1, NULL},
+ {gDefaultGirlName2, NULL},
+ {gDefaultGirlName3, NULL},
+ {gDefaultGirlName4, NULL},
+};
+
static void CB2_MainMenu(void)
{
RunTasks();
diff --git a/src/engine/reset_rtc_screen.c b/src/engine/reset_rtc_screen.c
index d052992ad..198bffaa7 100644
--- a/src/engine/reset_rtc_screen.c
+++ b/src/engine/reset_rtc_screen.c
@@ -27,15 +27,126 @@ struct ResetRtcStruct
extern u16 gSaveFileStatus;
-extern struct ResetRtcStruct gUnknown_08376420[];
-extern struct SpritePalette gUnknown_083764BC;
-extern struct SpriteTemplate gSpriteTemplate_83764E8;
-extern u8 gUnknown_08376500[];
-
void CB2_ResetRtcScreen(void);
void VBlankCB_ResetRtcScreen(void);
void Task_ResetRtcScreen(u8);
+static const struct ResetRtcStruct gUnknown_08376420[5] =
+{
+ {
+ .dataIndex = 3,
+ .minVal = 1,
+ .maxVal = 9999,
+ .left = 0,
+ .right = 2,
+ .unk8 = 0,
+ },
+ {
+ .dataIndex = 4,
+ .minVal = 0,
+ .maxVal = 23,
+ .left = 1,
+ .right = 3,
+ .unk8 = 0,
+ },
+ {
+ .dataIndex = 5,
+ .minVal = 0,
+ .maxVal = 59,
+ .left = 2,
+ .right = 4,
+ .unk8 = 0,
+ },
+ {
+ .dataIndex = 6,
+ .minVal = 0,
+ .maxVal = 59,
+ .left = 3,
+ .right = 5,
+ .unk8 = 0,
+ },
+ {
+ .dataIndex = 7,
+ .minVal = 0,
+ .maxVal = 0,
+ .left = 4,
+ .right = 0,
+ .unk8 = 6,
+ },
+};
+
+const struct OamData gOamData_837645C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const u8 gSpriteImage_8376464[] = INCBIN_U8("graphics/unknown_sprites/83764AC/0.4bpp");
+const u8 gSpriteImage_8376484[] = INCBIN_U8("graphics/unknown_sprites/83764AC/1.4bpp");
+
+const u16 Palette_3764A4[] = INCBIN_U16("graphics/unknown/83764A4.gbapal");
+
+const struct SpriteFrameImage gSpriteImageTable_83764AC[] =
+{
+ { gSpriteImage_8376464, 0x20 },
+ { gSpriteImage_8376484, 0x20 },
+};
+
+const struct SpritePalette gUnknown_083764BC =
+{
+ .data = Palette_3764A4,
+ .tag = 0x1000,
+};
+
+const union AnimCmd gSpriteAnim_83764C4[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83764CC[] =
+{
+ ANIMCMD_FRAME(0, 158, .vFlip = TRUE),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd gSpriteAnim_83764D4[] =
+{
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_JUMP(0),
+};
+
+const union AnimCmd *const gSpriteAnimTable_83764DC[] =
+{
+ gSpriteAnim_83764C4,
+ gSpriteAnim_83764CC,
+ gSpriteAnim_83764D4,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83764E8 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 0x1000,
+ .oam = &gOamData_837645C,
+ .anims = gSpriteAnimTable_83764DC,
+ .images = gSpriteImageTable_83764AC,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const u8 gUnknown_08376500[] = _(" : ");
+
void SpriteCB_ResetRtcCusor0(struct Sprite *sprite)
{
int state = gTasks[sprite->data0].data[2];
@@ -235,7 +346,7 @@ void Task_ResetRtc_1(u8 taskId)
{
s16 *data = gTasks[taskId].data;
u8 selection = data[2];
- struct ResetRtcStruct *selectionInfo = &gUnknown_08376420[selection - 1];
+ const struct ResetRtcStruct *selectionInfo = &gUnknown_08376420[selection - 1];
if (gMain.newKeys & B_BUTTON)
{
diff --git a/src/engine/text_window.c b/src/engine/text_window.c
index 9a88789d1..c001ddefc 100644
--- a/src/engine/text_window.c
+++ b/src/engine/text_window.c
@@ -18,11 +18,83 @@ static void DrawMessageBox(struct Window *win, u8 left, u8 top, u8 width, u8 hei
static u16 sTextWindowBaseTileNum;
static u16 sMessageBoxBaseTileNum;
-extern const struct FrameGraphics gUnknown_083761F0[20];
+extern const u8 gTextWindowFrame1_Gfx[];
+extern const u8 gTextWindowFrame2_Gfx[];
+extern const u8 gTextWindowFrame3_Gfx[];
+extern const u8 gTextWindowFrame4_Gfx[];
+extern const u8 gTextWindowFrame5_Gfx[];
+extern const u8 gTextWindowFrame6_Gfx[];
+extern const u8 gTextWindowFrame7_Gfx[];
+extern const u8 gTextWindowFrame8_Gfx[];
+extern const u8 gTextWindowFrame9_Gfx[];
+extern const u8 gTextWindowFrame10_Gfx[];
+extern const u8 gTextWindowFrame11_Gfx[];
+extern const u8 gTextWindowFrame12_Gfx[];
+extern const u8 gTextWindowFrame13_Gfx[];
+extern const u8 gTextWindowFrame14_Gfx[];
+extern const u8 gTextWindowFrame15_Gfx[];
+extern const u8 gTextWindowFrame16_Gfx[];
+extern const u8 gTextWindowFrame17_Gfx[];
+extern const u8 gTextWindowFrame18_Gfx[];
+extern const u8 gTextWindowFrame19_Gfx[];
+extern const u8 gTextWindowFrame20_Gfx[];
+
+extern const u16 gTextWindowFrame1_Pal[];
+extern const u16 gTextWindowFrame2_Pal[];
+extern const u16 gTextWindowFrame3_Pal[];
+extern const u16 gTextWindowFrame4_Pal[];
+extern const u16 gTextWindowFrame5_Pal[];
+extern const u16 gTextWindowFrame6_Pal[];
+extern const u16 gTextWindowFrame7_Pal[];
+extern const u16 gTextWindowFrame8_Pal[];
+extern const u16 gTextWindowFrame9_Pal[];
+extern const u16 gTextWindowFrame10_Pal[];
+extern const u16 gTextWindowFrame11_Pal[];
+extern const u16 gTextWindowFrame12_Pal[];
+extern const u16 gTextWindowFrame13_Pal[];
+extern const u16 gTextWindowFrame14_Pal[];
+extern const u16 gTextWindowFrame15_Pal[];
+extern const u16 gTextWindowFrame16_Pal[];
+extern const u16 gTextWindowFrame17_Pal[];
+extern const u16 gTextWindowFrame18_Pal[];
+extern const u16 gTextWindowFrame19_Pal[];
+extern const u16 gTextWindowFrame20_Pal[];
-extern const u16 gMessageBoxTilemap[5][7];
extern const u8 gMessageBox_Gfx[];
+static const struct FrameGraphics gUnknown_083761F0[20] =
+{
+ {gTextWindowFrame1_Gfx, gTextWindowFrame1_Pal},
+ {gTextWindowFrame2_Gfx, gTextWindowFrame2_Pal},
+ {gTextWindowFrame3_Gfx, gTextWindowFrame3_Pal},
+ {gTextWindowFrame4_Gfx, gTextWindowFrame4_Pal},
+ {gTextWindowFrame5_Gfx, gTextWindowFrame5_Pal},
+ {gTextWindowFrame6_Gfx, gTextWindowFrame6_Pal},
+ {gTextWindowFrame7_Gfx, gTextWindowFrame7_Pal},
+ {gTextWindowFrame8_Gfx, gTextWindowFrame8_Pal},
+ {gTextWindowFrame9_Gfx, gTextWindowFrame9_Pal},
+ {gTextWindowFrame10_Gfx, gTextWindowFrame10_Pal},
+ {gTextWindowFrame11_Gfx, gTextWindowFrame11_Pal},
+ {gTextWindowFrame12_Gfx, gTextWindowFrame12_Pal},
+ {gTextWindowFrame13_Gfx, gTextWindowFrame13_Pal},
+ {gTextWindowFrame14_Gfx, gTextWindowFrame14_Pal},
+ {gTextWindowFrame15_Gfx, gTextWindowFrame15_Pal},
+ {gTextWindowFrame16_Gfx, gTextWindowFrame16_Pal},
+ {gTextWindowFrame17_Gfx, gTextWindowFrame17_Pal},
+ {gTextWindowFrame18_Gfx, gTextWindowFrame18_Pal},
+ {gTextWindowFrame19_Gfx, gTextWindowFrame19_Pal},
+ {gTextWindowFrame20_Gfx, gTextWindowFrame20_Pal},
+};
+
+static const u16 gMessageBoxTilemap[5][7] =
+{
+ {1, 3, 4, 4, 5, 6, 9},
+ {11, 9, 9, 9, 9, 0x040B, 9},
+ {7, 9, 9, 9, 9, 10, 9},
+ {0x080B, 9, 9, 9, 9, 0x0C0B, 9},
+ {0x0801, 0x0803, 0x0804, 0x0804, 0x0805, 0x0806, 9},
+};
+
u16 SetTextWindowBaseTileNum(u16 baseTileNum)
{
sTextWindowBaseTileNum = baseTileNum;
diff --git a/src/engine/tileset_anim.c b/src/engine/tileset_anim.c
index f892e5e9a..abd38edad 100644
--- a/src/engine/tileset_anim.c
+++ b/src/engine/tileset_anim.c
@@ -1,39 +1,10 @@
#include "global.h"
#include "tileset_anim.h"
-extern u8 *gTilesetAnimTable_General_0[];
-extern u8 *gTilesetAnimTable_General_1[];
-extern u8 *gTilesetAnimTable_General_2[];
-extern u8 *gTilesetAnimTable_General_3[];
-extern u8 *gTilesetAnimTable_General_4[];
-extern u8 *gTilesetAnimTable_Lavaridge[];
-extern u8 *gTilesetAnimTable_Pacifidlog_0[];
-extern u8 *gTilesetAnimTable_Underwater[];
-extern u8 *gTilesetAnimTable_Pacifidlog_1[];
-extern u8 *gUnknown_0837BAE4[];
-extern u8 *gUnknown_0837BB04[];
-extern u8 *gTilesetAnimTable_Mauville_0A[];
-extern u8 *gTilesetAnimTable_Mauville_1A[];
-extern u8 *gTilesetAnimTable_Mauville_0B[];
-extern u8 *gTilesetAnimTable_Mauville_1B[];
-extern u8 *gUnknown_0837BFA4[];
-extern u8 *gTilesetAnimTable_Rustboro_0[];
-extern u8 *gTilesetAnimTable_Rustboro_1[];
-extern u8 *gTilesetAnimTable_Cave[];
-extern u8 *gUnknown_0837C93C[];
-extern u8 *gTilesetAnimTable_EverGrande[];
-extern u8 *gTilesetAnimTable_Building[];
-extern u8 *gTilesetAnimTable_SootopolisGym_0[];
-extern u8 *gTilesetAnimTable_SootopolisGym_1[];
-extern u8 *gTilesetAnimTable_EliteFour_0[];
-extern u8 *gTilesetAnimTable_EliteFour_1[];
-extern u8 *gTilesetAnimTable_MauvilleGym[];
-extern u8 *gTilesetAnimTable_BikeShop[];
-
struct Dma
{
- void *src;
- void *dest;
+ const void *src;
+ const void *dest;
u16 size;
};
@@ -89,13 +60,403 @@ static void sub_807399C(u16);
static void sub_8073974(u16);
static void sub_80739EC(u16);
+static const u8 TilesetAnimTiles_General_0_1[] = INCBIN_U8("data/tilesets/primary/general/anim/0/1.4bpp");
+static const u8 TilesetAnimTiles_General_0_0[] = INCBIN_U8("data/tilesets/primary/general/anim/0/0.4bpp");
+static const u8 TilesetAnimTiles_General_0_2[] = INCBIN_U8("data/tilesets/primary/general/anim/0/2.4bpp");
+asm(".space 32");
+
+static const u8 *const gTilesetAnimTable_General_0[] =
+{
+ TilesetAnimTiles_General_0_0,
+ TilesetAnimTiles_General_0_1,
+ TilesetAnimTiles_General_0_0,
+ TilesetAnimTiles_General_0_2,
+};
+
+static const u8 TilesetAnimTiles_General_1_0[] = INCBIN_U8("data/tilesets/primary/general/anim/1/0.4bpp");
+static const u8 TilesetAnimTiles_General_1_1[] = INCBIN_U8("data/tilesets/primary/general/anim/1/1.4bpp");
+static const u8 TilesetAnimTiles_General_1_2[] = INCBIN_U8("data/tilesets/primary/general/anim/1/2.4bpp");
+static const u8 TilesetAnimTiles_General_1_3[] = INCBIN_U8("data/tilesets/primary/general/anim/1/3.4bpp");
+static const u8 TilesetAnimTiles_General_1_4[] = INCBIN_U8("data/tilesets/primary/general/anim/1/4.4bpp");
+static const u8 TilesetAnimTiles_General_1_5[] = INCBIN_U8("data/tilesets/primary/general/anim/1/5.4bpp");
+static const u8 TilesetAnimTiles_General_1_6[] = INCBIN_U8("data/tilesets/primary/general/anim/1/6.4bpp");
+static const u8 TilesetAnimTiles_General_1_7[] = INCBIN_U8("data/tilesets/primary/general/anim/1/7.4bpp");
+
+static const u8 *const gTilesetAnimTable_General_1[] =
+{
+ TilesetAnimTiles_General_1_0,
+ TilesetAnimTiles_General_1_1,
+ TilesetAnimTiles_General_1_2,
+ TilesetAnimTiles_General_1_3,
+ TilesetAnimTiles_General_1_4,
+ TilesetAnimTiles_General_1_5,
+ TilesetAnimTiles_General_1_6,
+ TilesetAnimTiles_General_1_7,
+};
+
+static const u8 TilesetAnimTiles_General_2_0[] = INCBIN_U8("data/tilesets/primary/general/anim/2/0.4bpp");
+static const u8 TilesetAnimTiles_General_2_1[] = INCBIN_U8("data/tilesets/primary/general/anim/2/1.4bpp");
+static const u8 TilesetAnimTiles_General_2_2[] = INCBIN_U8("data/tilesets/primary/general/anim/2/2.4bpp");
+static const u8 TilesetAnimTiles_General_2_3[] = INCBIN_U8("data/tilesets/primary/general/anim/2/3.4bpp");
+static const u8 TilesetAnimTiles_General_2_4[] = INCBIN_U8("data/tilesets/primary/general/anim/2/4.4bpp");
+static const u8 TilesetAnimTiles_General_2_5[] = INCBIN_U8("data/tilesets/primary/general/anim/2/5.4bpp");
+static const u8 TilesetAnimTiles_General_2_6[] = INCBIN_U8("data/tilesets/primary/general/anim/2/6.4bpp");
+
+static const u8 *const gTilesetAnimTable_General_2[] =
+{
+ TilesetAnimTiles_General_2_0,
+ TilesetAnimTiles_General_2_1,
+ TilesetAnimTiles_General_2_2,
+ TilesetAnimTiles_General_2_3,
+ TilesetAnimTiles_General_2_4,
+ TilesetAnimTiles_General_2_5,
+ TilesetAnimTiles_General_2_6,
+ TilesetAnimTiles_General_2_0,
+};
+
+static const u8 TilesetAnimTiles_General_3_0[] = INCBIN_U8("data/tilesets/primary/general/anim/3/0.4bpp");
+static const u8 TilesetAnimTiles_General_3_1[] = INCBIN_U8("data/tilesets/primary/general/anim/3/1.4bpp");
+static const u8 TilesetAnimTiles_General_3_2[] = INCBIN_U8("data/tilesets/primary/general/anim/3/2.4bpp");
+static const u8 TilesetAnimTiles_General_3_3[] = INCBIN_U8("data/tilesets/primary/general/anim/3/3.4bpp");
+
+static const u8 *const gTilesetAnimTable_General_3[] =
+{
+ TilesetAnimTiles_General_3_0,
+ TilesetAnimTiles_General_3_1,
+ TilesetAnimTiles_General_3_2,
+ TilesetAnimTiles_General_3_3,
+};
+
+static const u8 TilesetAnimTiles_General_4_0[] = INCBIN_U8("data/tilesets/primary/general/anim/4/0.4bpp");
+static const u8 TilesetAnimTiles_General_4_1[] = INCBIN_U8("data/tilesets/primary/general/anim/4/1.4bpp");
+static const u8 TilesetAnimTiles_General_4_2[] = INCBIN_U8("data/tilesets/primary/general/anim/4/2.4bpp");
+static const u8 TilesetAnimTiles_General_4_3[] = INCBIN_U8("data/tilesets/primary/general/anim/4/3.4bpp");
+
+static const u8 *const gTilesetAnimTable_General_4[] =
+{
+ TilesetAnimTiles_General_4_0,
+ TilesetAnimTiles_General_4_1,
+ TilesetAnimTiles_General_4_2,
+ TilesetAnimTiles_General_4_3,
+};
+
+static const u8 TilesetAnimTiles_Lavaridge_0[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/0.4bpp");
+static const u8 TilesetAnimTiles_Lavaridge_1[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/1.4bpp");
+static const u8 TilesetAnimTiles_Lavaridge_2[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/2.4bpp");
+static const u8 TilesetAnimTiles_Lavaridge_3[] = INCBIN_U8("data/tilesets/secondary/lavaridge/anim/3.4bpp");
+
+static const u8 *const gTilesetAnimTable_Lavaridge[] =
+{
+ TilesetAnimTiles_Lavaridge_0,
+ TilesetAnimTiles_Lavaridge_1,
+ TilesetAnimTiles_Lavaridge_2,
+ TilesetAnimTiles_Lavaridge_3,
+};
+
+static const u8 TilesetAnimTiles_Pacifidlog_0_0[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/0/0.4bpp");
+static const u8 TilesetAnimTiles_Pacifidlog_0_1[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/0/1.4bpp");
+static const u8 TilesetAnimTiles_Pacifidlog_0_2[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/0/2.4bpp");
+
+static const u8 *const gTilesetAnimTable_Pacifidlog_0[] =
+{
+ TilesetAnimTiles_Pacifidlog_0_0,
+ TilesetAnimTiles_Pacifidlog_0_1,
+ TilesetAnimTiles_Pacifidlog_0_2,
+ TilesetAnimTiles_Pacifidlog_0_1,
+};
+
+static const u8 TilesetAnimTiles_Underwater_0[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/0.4bpp");
+static const u8 TilesetAnimTiles_Underwater_1[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/1.4bpp");
+static const u8 TilesetAnimTiles_Underwater_2[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/2.4bpp");
+static const u8 TilesetAnimTiles_Underwater_3[] = INCBIN_U8("data/tilesets/secondary/underwater/anim/3.4bpp");
+
+static const u8 *const gTilesetAnimTable_Underwater[] =
+{
+ TilesetAnimTiles_Underwater_0,
+ TilesetAnimTiles_Underwater_1,
+ TilesetAnimTiles_Underwater_2,
+ TilesetAnimTiles_Underwater_3,
+};
+
+static const u8 TilesetAnimTiles_Pacifidlog_1_0[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/0.4bpp");
+static const u8 TilesetAnimTiles_Pacifidlog_1_1[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/1.4bpp");
+static const u8 TilesetAnimTiles_Pacifidlog_1_2[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/2.4bpp");
+static const u8 TilesetAnimTiles_Pacifidlog_1_3[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/3.4bpp");
+static const u8 TilesetAnimTiles_Pacifidlog_1_4[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/4.4bpp");
+static const u8 TilesetAnimTiles_Pacifidlog_1_5[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/5.4bpp");
+static const u8 TilesetAnimTiles_Pacifidlog_1_6[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/6.4bpp");
+static const u8 TilesetAnimTiles_Pacifidlog_1_7[] = INCBIN_U8("data/tilesets/secondary/pacifidlog/anim/1/7.4bpp");
+
+static const u8 *const gTilesetAnimTable_Pacifidlog_1[] =
+{
+ TilesetAnimTiles_Pacifidlog_1_0,
+ TilesetAnimTiles_Pacifidlog_1_1,
+ TilesetAnimTiles_Pacifidlog_1_2,
+ TilesetAnimTiles_Pacifidlog_1_3,
+ TilesetAnimTiles_Pacifidlog_1_4,
+ TilesetAnimTiles_Pacifidlog_1_5,
+ TilesetAnimTiles_Pacifidlog_1_6,
+ TilesetAnimTiles_Pacifidlog_1_7,
+};
+
+static const u8 TilesetAnimTiles_Mauville_0_0[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/0.4bpp");
+static const u8 TilesetAnimTiles_Mauville_0_1[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/1.4bpp");
+static const u8 TilesetAnimTiles_Mauville_0_2[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/2.4bpp");
+static const u8 TilesetAnimTiles_Mauville_0_3[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/3.4bpp");
+static const u8 TilesetAnimTiles_Mauville_0_4[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/0/4.4bpp");
+
+static const u8 TilesetAnimTiles_Mauville_1_0[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/0.4bpp");
+static const u8 TilesetAnimTiles_Mauville_1_1[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/1.4bpp");
+static const u8 TilesetAnimTiles_Mauville_1_2[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/2.4bpp");
+static const u8 TilesetAnimTiles_Mauville_1_3[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/3.4bpp");
+static const u8 TilesetAnimTiles_Mauville_1_4[] = INCBIN_U8("data/tilesets/secondary/mauville/anim/1/4.4bpp");
+
+static const void *const gUnknown_0837BAE4[] =
+{
+ (void *)(VRAM + 0x4C00),
+ (void *)(VRAM + 0x4C80),
+ (void *)(VRAM + 0x4D00),
+ (void *)(VRAM + 0x4D80),
+ (void *)(VRAM + 0x4E00),
+ (void *)(VRAM + 0x4E80),
+ (void *)(VRAM + 0x4F00),
+ (void *)(VRAM + 0x4F80),
+};
+
+static const void *const gUnknown_0837BB04[] =
+{
+ (void *)(VRAM + 0x5000),
+ (void *)(VRAM + 0x5080),
+ (void *)(VRAM + 0x5100),
+ (void *)(VRAM + 0x5180),
+ (void *)(VRAM + 0x5200),
+ (void *)(VRAM + 0x5280),
+ (void *)(VRAM + 0x5300),
+ (void *)(VRAM + 0x5380),
+};
+
+static const u8 *const gTilesetAnimTable_Mauville_0A[] =
+{
+ TilesetAnimTiles_Mauville_0_0,
+ TilesetAnimTiles_Mauville_0_0,
+ TilesetAnimTiles_Mauville_0_1,
+ TilesetAnimTiles_Mauville_0_2,
+ TilesetAnimTiles_Mauville_0_3,
+ TilesetAnimTiles_Mauville_0_3,
+ TilesetAnimTiles_Mauville_0_3,
+ TilesetAnimTiles_Mauville_0_3,
+ TilesetAnimTiles_Mauville_0_3,
+ TilesetAnimTiles_Mauville_0_3,
+ TilesetAnimTiles_Mauville_0_2,
+ TilesetAnimTiles_Mauville_0_1,
+};
+
+static const u8 *const gTilesetAnimTable_Mauville_1A[] =
+{
+ TilesetAnimTiles_Mauville_1_0,
+ TilesetAnimTiles_Mauville_1_0,
+ TilesetAnimTiles_Mauville_1_1,
+ TilesetAnimTiles_Mauville_1_2,
+ TilesetAnimTiles_Mauville_1_3,
+ TilesetAnimTiles_Mauville_1_3,
+ TilesetAnimTiles_Mauville_1_3,
+ TilesetAnimTiles_Mauville_1_3,
+ TilesetAnimTiles_Mauville_1_3,
+ TilesetAnimTiles_Mauville_1_3,
+ TilesetAnimTiles_Mauville_1_2,
+ TilesetAnimTiles_Mauville_1_1,
+};
+
+static const u8 *const gTilesetAnimTable_Mauville_0B[] =
+{
+ TilesetAnimTiles_Mauville_0_0,
+ TilesetAnimTiles_Mauville_0_0,
+ TilesetAnimTiles_Mauville_0_4,
+ TilesetAnimTiles_Mauville_0_4,
+};
+
+static const u8 *const gTilesetAnimTable_Mauville_1B[] =
+{
+ TilesetAnimTiles_Mauville_1_0,
+ TilesetAnimTiles_Mauville_1_0,
+ TilesetAnimTiles_Mauville_1_4,
+ TilesetAnimTiles_Mauville_1_4,
+};
+
+static const u8 TilesetAnimTiles_Rustboro_0_0[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/0.4bpp");
+static const u8 TilesetAnimTiles_Rustboro_0_1[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/1.4bpp");
+static const u8 TilesetAnimTiles_Rustboro_0_2[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/2.4bpp");
+static const u8 TilesetAnimTiles_Rustboro_0_3[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/3.4bpp");
+static const u8 TilesetAnimTiles_Rustboro_0_4[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/4.4bpp");
+static const u8 TilesetAnimTiles_Rustboro_0_5[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/5.4bpp");
+static const u8 TilesetAnimTiles_Rustboro_0_6[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/6.4bpp");
+static const u8 TilesetAnimTiles_Rustboro_0_7[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/0/7.4bpp");
+
+static const void *const gUnknown_0837BFA4[] =
+{
+ (void *)(VRAM + 0x5000),
+ (void *)(VRAM + 0x5080),
+ (void *)(VRAM + 0x5100),
+ (void *)(VRAM + 0x5180),
+ (void *)(VRAM + 0x5200),
+ (void *)(VRAM + 0x5280),
+ (void *)(VRAM + 0x5300),
+ (void *)(VRAM + 0x5380),
+};
+
+static const u8 *const gTilesetAnimTable_Rustboro_0[] =
+{
+ TilesetAnimTiles_Rustboro_0_0,
+ TilesetAnimTiles_Rustboro_0_1,
+ TilesetAnimTiles_Rustboro_0_2,
+ TilesetAnimTiles_Rustboro_0_3,
+ TilesetAnimTiles_Rustboro_0_4,
+ TilesetAnimTiles_Rustboro_0_5,
+ TilesetAnimTiles_Rustboro_0_6,
+ TilesetAnimTiles_Rustboro_0_7,
+};
+
+static const u8 TilesetAnimTiles_Rustboro_1_0[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/1/0.4bpp");
+static const u8 TilesetAnimTiles_Rustboro_1_1[] = INCBIN_U8("data/tilesets/secondary/rustboro/anim/1/1.4bpp");
+
+static const u8 *const gTilesetAnimTable_Rustboro_1[] =
+{
+ TilesetAnimTiles_Rustboro_1_0,
+ TilesetAnimTiles_Rustboro_1_1,
+};
+
+static const u8 TilesetAnimTiles_Cave_0[] = INCBIN_U8("data/tilesets/secondary/cave/anim/0.4bpp");
+static const u8 TilesetAnimTiles_Cave_1[] = INCBIN_U8("data/tilesets/secondary/cave/anim/1.4bpp");
+static const u8 TilesetAnimTiles_Cave_2[] = INCBIN_U8("data/tilesets/secondary/cave/anim/2.4bpp");
+static const u8 TilesetAnimTiles_Cave_3[] = INCBIN_U8("data/tilesets/secondary/cave/anim/3.4bpp");
+// unused anim tiles for cave
+static const u8 TilesetAnimTiles_Cave_4[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/0.4bpp");
+static const u8 TilesetAnimTiles_Cave_5[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/1.4bpp");
+static const u8 TilesetAnimTiles_Cave_6[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/2.4bpp");
+static const u8 TilesetAnimTiles_Cave_7[] = INCBIN_U8("data/tilesets/secondary/cave/anim/unused/3.4bpp");
+asm(".space 32");
+
+static const u8 *const gTilesetAnimTable_Cave[] =
+{
+ TilesetAnimTiles_Cave_0,
+ TilesetAnimTiles_Cave_1,
+ TilesetAnimTiles_Cave_2,
+ TilesetAnimTiles_Cave_3,
+};
+
+static const u8 TilesetAnimTiles_EverGrande_0[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/0.4bpp");
+static const u8 TilesetAnimTiles_EverGrande_1[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/1.4bpp");
+static const u8 TilesetAnimTiles_EverGrande_2[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/2.4bpp");
+static const u8 TilesetAnimTiles_EverGrande_3[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/3.4bpp");
+static const u8 TilesetAnimTiles_EverGrande_4[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/4.4bpp");
+static const u8 TilesetAnimTiles_EverGrande_5[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/5.4bpp");
+static const u8 TilesetAnimTiles_EverGrande_6[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/6.4bpp");
+static const u8 TilesetAnimTiles_EverGrande_7[] = INCBIN_U8("data/tilesets/secondary/ever_grande/anim/7.4bpp");
+asm(".space 32");
+
+static const void *const gUnknown_0837C93C[] =
+{
+ (void *)(VRAM + 0x5C00),
+ (void *)(VRAM + 0x5C80),
+ (void *)(VRAM + 0x5D00),
+ (void *)(VRAM + 0x5D80),
+ (void *)(VRAM + 0x5E00),
+ (void *)(VRAM + 0x5E80),
+ (void *)(VRAM + 0x5F00),
+ (void *)(VRAM + 0x5F80),
+};
+
+static const u8 *const gTilesetAnimTable_EverGrande[] =
+{
+ TilesetAnimTiles_EverGrande_0,
+ TilesetAnimTiles_EverGrande_1,
+ TilesetAnimTiles_EverGrande_2,
+ TilesetAnimTiles_EverGrande_3,
+ TilesetAnimTiles_EverGrande_4,
+ TilesetAnimTiles_EverGrande_5,
+ TilesetAnimTiles_EverGrande_6,
+ TilesetAnimTiles_EverGrande_7,
+};
+
+static const u8 TilesetAnimTiles_Building_0[] = INCBIN_U8("data/tilesets/primary/building/anim/0.4bpp");
+static const u8 TilesetAnimTiles_Building_1[] = INCBIN_U8("data/tilesets/primary/building/anim/1.4bpp");
+
+static const u8 *const gTilesetAnimTable_Building[] =
+{
+ TilesetAnimTiles_Building_0,
+ TilesetAnimTiles_Building_1,
+};
+
+static const u8 TilesetAnimTiles_SootopolisGym_0_0[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/0/0.4bpp");
+static const u8 TilesetAnimTiles_SootopolisGym_0_1[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/0/1.4bpp");
+static const u8 TilesetAnimTiles_SootopolisGym_0_2[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/0/2.4bpp");
+static const u8 TilesetAnimTiles_SootopolisGym_1_0[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/1/0.4bpp");
+static const u8 TilesetAnimTiles_SootopolisGym_1_1[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/1/1.4bpp");
+static const u8 TilesetAnimTiles_SootopolisGym_1_2[] = INCBIN_U8("data/tilesets/secondary/sootopolis_gym/anim/1/2.4bpp");
+
+static const u8 *const gTilesetAnimTable_SootopolisGym_0[] =
+{
+ TilesetAnimTiles_SootopolisGym_0_0,
+ TilesetAnimTiles_SootopolisGym_0_1,
+ TilesetAnimTiles_SootopolisGym_0_2,
+};
+
+static const u8 *const gTilesetAnimTable_SootopolisGym_1[] =
+{
+ TilesetAnimTiles_SootopolisGym_1_0,
+ TilesetAnimTiles_SootopolisGym_1_1,
+ TilesetAnimTiles_SootopolisGym_1_2,
+};
+
+static const u8 TilesetAnimTiles_EliteFour_1_0[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/1/0.4bpp");
+static const u8 TilesetAnimTiles_EliteFour_1_1[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/1/1.4bpp");
+static const u8 TilesetAnimTiles_EliteFour_0_0[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/0.4bpp");
+static const u8 TilesetAnimTiles_EliteFour_0_1[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/1.4bpp");
+static const u8 TilesetAnimTiles_EliteFour_0_2[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/2.4bpp");
+static const u8 TilesetAnimTiles_EliteFour_0_3[] = INCBIN_U8("data/tilesets/secondary/elite_four/anim/0/3.4bpp");
+asm(".space 32");
+
+static const u8 *const gTilesetAnimTable_EliteFour_0[] =
+{
+ TilesetAnimTiles_EliteFour_0_0,
+ TilesetAnimTiles_EliteFour_0_1,
+ TilesetAnimTiles_EliteFour_0_2,
+ TilesetAnimTiles_EliteFour_0_3,
+};
+
+static const u8 *const gTilesetAnimTable_EliteFour_1[] =
+{
+ TilesetAnimTiles_EliteFour_1_0,
+ TilesetAnimTiles_EliteFour_1_1,
+};
+
+static const u8 TilesetAnimTiles_MauvilleGym_0[] = INCBIN_U8("data/tilesets/secondary/mauville_gym/anim/0.4bpp");
+static const u8 TilesetAnimTiles_MauvilleGym_1[] = INCBIN_U8("data/tilesets/secondary/mauville_gym/anim/1.4bpp");
+asm(".space 32");
+
+static const u8 *const gTilesetAnimTable_MauvilleGym[] =
+{
+ TilesetAnimTiles_MauvilleGym_0,
+ TilesetAnimTiles_MauvilleGym_1,
+};
+
+static const u8 TilesetAnimTiles_BikeShop_0[] = INCBIN_U8("data/tilesets/secondary/bike_shop/anim/0.4bpp");
+static const u8 TilesetAnimTiles_BikeShop_1[] = INCBIN_U8("data/tilesets/secondary/bike_shop/anim/1.4bpp");
+asm(".space 32");
+
+static const u8 *const gTilesetAnimTable_BikeShop[] =
+{
+ TilesetAnimTiles_BikeShop_0,
+ TilesetAnimTiles_BikeShop_1,
+};
+
static void ClearTilesetAnimDmas(void)
{
gNumTilesetAnimDmas = 0;
CpuFill32(0, &gTilesetAnimDmas, sizeof(gTilesetAnimDmas));
}
-static void QueueTilesetAnimDma(void *src, void *dest, u16 size)
+static void QueueTilesetAnimDma(const void *src, const void *dest, u16 size)
{
if (gNumTilesetAnimDmas < 20)
{
diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c
index 7a9c043b0..d6271643c 100644
--- a/src/field/battle_tower.c
+++ b/src/field/battle_tower.c
@@ -262,13 +262,13 @@ static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderT
static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *);
static void ClearBattleTowerRecord(struct BattleTowerRecord *);
-extern const u8 gUnknown_08400E23[];
-extern const u8 gUnknown_08400E29[];
-extern const u8 gUnknown_08400E2C[];
-extern const u8 gUnknown_08400E2E[];
-extern const u8 gUnknown_08400E30[];
-extern const u8 gUnknown_08400E32[];
-extern const u8 gUnknown_08400E36[];
+extern const u8 BattleText_Format3[];
+extern const u8 BattleText_Format4[];
+extern const u8 BattleText_Format5[];
+extern const u8 BattleText_Format6[];
+extern const u8 BattleText_Format7[];
+extern const u8 BattleText_Format8[];
+extern const u8 BattleText_Format9[];
extern u16 gSpecialVar_0x8004;
extern u8 gTrainerClassToPicIndex[];
extern u8 gTrainerClassToNameIndex[];
@@ -1409,24 +1409,24 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT
case 10:
if (numToAppend == curIndexToAppend)
{
- StringAppend(gStringVar1, gUnknown_08400E23);
+ StringAppend(gStringVar1, BattleText_Format3);
}
else if (numToAppend > curIndexToAppend)
{
- StringAppend(gStringVar1, gUnknown_08400E29);
+ StringAppend(gStringVar1, BattleText_Format4);
}
break;
case 1:
if (curIndexToAppend == numToAppend)
{
- StringAppend(gStringVar1, gUnknown_08400E23);
+ StringAppend(gStringVar1, BattleText_Format3);
}
else
{
- StringAppend(gStringVar1, gUnknown_08400E29);
+ StringAppend(gStringVar1, BattleText_Format4);
}
- StringAppend(gStringVar1, gUnknown_08400E30);
+ StringAppend(gStringVar1, BattleText_Format7);
break;
case 3:
case 5:
@@ -1435,14 +1435,14 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT
default:
if (curIndexToAppend == numToAppend)
{
- StringAppend(gStringVar1, gUnknown_08400E23);
+ StringAppend(gStringVar1, BattleText_Format3);
}
else
{
- StringAppend(gStringVar1, gUnknown_08400E29);
+ StringAppend(gStringVar1, BattleText_Format4);
}
- StringAppend(gStringVar1, gUnknown_08400E2E);
+ StringAppend(gStringVar1, BattleText_Format6);
break;
}
@@ -1533,17 +1533,17 @@ void CheckPartyBattleTowerBanlist(void)
if (counter == 0)
{
- StringAppend(gStringVar1, gUnknown_08400E2C);
- StringAppend(gStringVar1, gUnknown_08400E32);
+ StringAppend(gStringVar1, BattleText_Format5);
+ StringAppend(gStringVar1, BattleText_Format8);
return;
}
if (1 & counter)
- StringAppend(gStringVar1, gUnknown_08400E2E);
+ StringAppend(gStringVar1, BattleText_Format6);
else
- StringAppend(gStringVar1, gUnknown_08400E2C);
+ StringAppend(gStringVar1, BattleText_Format5);
- StringAppend(gStringVar1, gUnknown_08400E36);
+ StringAppend(gStringVar1, BattleText_Format9);
}
else
{
diff --git a/src/field/field_door.c b/src/field/field_door.c
index ab46f0696..ef349bca7 100644
--- a/src/field/field_door.c
+++ b/src/field/field_door.c
@@ -6,16 +6,397 @@
#include "songs.h"
#include "task.h"
-extern struct DoorAnimFrame gDoorOpenAnimFrames[];
-extern struct DoorAnimFrame gDoorCloseAnimFrames[];
-extern struct DoorGraphics gDoorAnimGraphicsTable[];
+const u8 DoorAnimTiles_04[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/04/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/04/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/04/2.4bpp"),
+};
+
+// TODO: Make these blank palette includes?
+asm(".space 32");
+
+const u8 DoorAnimTiles_05[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/05/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/05/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/05/2.4bpp"),
+};
+
+const u8 DoorAnimTiles_08[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/08/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/08/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/08/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_15[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/15/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/15/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/15/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_16[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/16/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/16/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/16/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_00[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/00/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/00/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/00/2.4bpp"),
+};
+
+const u8 DoorAnimTiles_01[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/01/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/01/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/01/2.4bpp"),
+};
+
+const u8 DoorAnimTiles_02[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/02/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/02/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/02/2.4bpp"),
+};
+
+const u8 DoorAnimTiles_03[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/03/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/03/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/03/2.4bpp"),
+};
+
+const u8 DoorAnimTiles_06[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/06/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/06/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/06/2.4bpp"),
+};
+
+const u8 DoorAnimTiles_07[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/07/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/07/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/07/2.4bpp"),
+};
+
+const u8 DoorAnimTiles_09[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/09/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/09/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/09/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_10[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/10/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/10/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/10/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_11[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/11/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/11/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/11/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_12[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/12/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/12/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/12/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_13[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/13/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/13/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/13/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_14[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/14/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/14/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/14/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_17[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/17/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/17/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/17/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_18[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/18/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/18/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/18/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_19[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/19/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/19/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/19/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_20[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/20/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/20/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/20/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_21[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/21/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/21/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/21/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_22[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/22/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/22/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/22/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_23[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/23/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/23/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/23/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_24[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/24/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/24/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/24/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_25[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/25/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/25/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/25/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_26[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/26/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/26/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/26/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_27[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/27/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/27/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/27/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_28[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/28/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/28/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/28/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_29[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/29/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/29/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/29/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_30[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/30/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/30/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/30/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_31[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/31/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/31/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/31/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_32[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/32/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/32/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/32/2.4bpp"),
+};
+
+asm(".space 32");
+
+const u8 DoorAnimTiles_33[][0x100] =
+{
+ INCBIN_U8("graphics/door_anims/33/0.4bpp"),
+ INCBIN_U8("graphics/door_anims/33/1.4bpp"),
+ INCBIN_U8("graphics/door_anims/33/2.4bpp"),
+};
+
+asm(".space 32");
+
+static const struct DoorAnimFrame gDoorOpenAnimFrames[] =
+{
+ {4, -1},
+ {4, 0},
+ {4, 0x100},
+ {4, 0x200},
+ {0, 0},
+};
+
+static const struct DoorAnimFrame gDoorCloseAnimFrames[] =
+{
+ {4, 0x200},
+ {4, 0x100},
+ {4, 0},
+ {4, -1},
+ {0, 0},
+};
+
+const u8 DoorAnimPalettes_830F8A4[] = {1, 1, 1, 1, 1, 1, 1, 1}; // door 00
+const u8 DoorAnimPalettes_830F8AC[] = {1, 1, 1, 1, 1, 1, 1, 1}; // door 01
+const u8 DoorAnimPalettes_830F8B4[] = {5, 5, 5, 5, 5, 5, 5, 5}; // door 02
+const u8 DoorAnimPalettes_830F8BC[] = {0, 0, 1, 1, 1, 1, 1, 1}; // door 03
+const u8 DoorAnimPalettes_830F8C4[] = {6, 6, 6, 6, 6, 6, 6, 6}; // door 04
+const u8 DoorAnimPalettes_830F8CC[] = {8, 8, 8, 8, 8, 8, 8, 8}; // door 05
+const u8 DoorAnimPalettes_830F8D4[] = {11, 11, 11, 11, 11, 11, 11, 11}; // door 06
+const u8 DoorAnimPalettes_830F8DC[] = {10, 10, 10, 10, 10, 10, 10, 10}; // door 07
+const u8 DoorAnimPalettes_830F8E4[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 08
+const u8 DoorAnimPalettes_830F8EC[] = {8, 8, 8, 8, 8, 8, 8, 8}; // door 09
+const u8 DoorAnimPalettes_830F8F4[] = {9, 9, 9, 9, 9, 9, 9, 9}; // door 10
+const u8 DoorAnimPalettes_830F8FC[] = {9, 9, 1, 1, 1, 1, 1, 1}; // door 11
+const u8 DoorAnimPalettes_830F904[] = {8, 8, 8, 8, 8, 8, 8, 8}; // door 12
+const u8 DoorAnimPalettes_830F90C[] = {9, 9, 9, 9, 9, 9, 9, 9}; // door 13
+const u8 DoorAnimPalettes_830F914[] = {6, 6, 6, 6, 6, 6, 6, 6}; // door 14
+const u8 DoorAnimPalettes_830F91C[] = {6, 6, 6, 6, 6, 6, 6, 6}; // door 15
+const u8 DoorAnimPalettes_830F924[] = {0, 0, 5, 5, 5, 5, 5, 5}; // door 16
+const u8 DoorAnimPalettes_830F92C[] = {6, 6, 1, 1, 1, 1, 1, 1}; // door 17
+const u8 DoorAnimPalettes_830F934[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 18
+const u8 DoorAnimPalettes_830F93C[] = {6, 6, 5, 5, 5, 5, 5, 5}; // door 19
+const u8 DoorAnimPalettes_830F944[] = {5, 5, 5, 5, 5, 5, 5, 5}; // door 20
+const u8 DoorAnimPalettes_830F94C[] = {1, 1, 1, 1, 1, 1, 1, 1}; // door 21
+const u8 DoorAnimPalettes_830F954[] = {6, 6, 7, 7, 7, 7, 7, 7}; // door 22
+const u8 DoorAnimPalettes_830F95C[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 23
+const u8 DoorAnimPalettes_830F964[] = {5, 5, 5, 5, 5, 5, 5, 5}; // door 24
+const u8 DoorAnimPalettes_830F96C[] = {9, 9, 9, 9, 9, 9, 9, 9}; // door 25
+const u8 DoorAnimPalettes_830F974[] = {8, 8, 8, 8, 8, 8, 8, 8}; // door 26
+const u8 DoorAnimPalettes_830F97C[] = {6, 6, 6, 6, 6, 6, 6, 6}; // door 27
+const u8 DoorAnimPalettes_830F984[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 28
+const u8 DoorAnimPalettes_830F98C[] = {11, 11, 7, 7, 7, 7, 7, 7}; // door 29
+const u8 DoorAnimPalettes_830F994[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 30
+const u8 DoorAnimPalettes_830F99C[] = {6, 6, 7, 7, 7, 7, 7, 7}; // door 31
+const u8 DoorAnimPalettes_830F9A4[] = {9, 9, 9, 9, 9, 9, 9, 9}; // door 32
+const u8 DoorAnimPalettes_830F9AC[] = {7, 7, 7, 7, 7, 7, 7, 7}; // door 33
+
+static const struct DoorGraphics gDoorAnimGraphicsTable[] =
+{
+ {0x021, 0, DoorAnimTiles_00, DoorAnimPalettes_830F8A4}, // door 00
+ {0x061, 1, DoorAnimTiles_01, DoorAnimPalettes_830F8AC}, // door 01
+ {0x1CD, 1, DoorAnimTiles_02, DoorAnimPalettes_830F8B4}, // door 02
+ {0x041, 1, DoorAnimTiles_03, DoorAnimPalettes_830F8BC}, // door 03
+ {0x248, 0, DoorAnimTiles_04, DoorAnimPalettes_830F8C4}, // door 04
+ {0x249, 0, DoorAnimTiles_05, DoorAnimPalettes_830F8CC}, // door 05
+ {0x22F, 0, DoorAnimTiles_06, DoorAnimPalettes_830F8D4}, // door 06
+ {0x21F, 0, DoorAnimTiles_07, DoorAnimPalettes_830F8DC}, // door 07
+ {0x2A5, 0, DoorAnimTiles_08, DoorAnimPalettes_830F8E4}, // door 08
+ {0x287, 0, DoorAnimTiles_09, DoorAnimPalettes_830F8F4}, // door 09
+ {0x2AC, 0, DoorAnimTiles_10, DoorAnimPalettes_830F934}, // door 10
+ {0x3A1, 0, DoorAnimTiles_11, DoorAnimPalettes_830F93C}, // door 11
+ {0x2DC, 0, DoorAnimTiles_12, DoorAnimPalettes_830F92C}, // door 12
+ {0x225, 0, DoorAnimTiles_13, DoorAnimPalettes_830F924}, // door 13
+ {0x1DB, 1, DoorAnimTiles_14, DoorAnimPalettes_830F94C}, // door 14
+ {0x246, 0, DoorAnimTiles_15, DoorAnimPalettes_830F8EC}, // door 15
+ {0x28E, 0, DoorAnimTiles_16, DoorAnimPalettes_830F944}, // door 16
+ {0x2A1, 0, DoorAnimTiles_17, DoorAnimPalettes_830F8FC}, // door 17
+ {0x21C, 0, DoorAnimTiles_18, DoorAnimPalettes_830F914}, // door 18
+ {0x21E, 0, DoorAnimTiles_19, DoorAnimPalettes_830F91C}, // door 19
+ {0x21D, 1, DoorAnimTiles_20, DoorAnimPalettes_830F904}, // door 20
+ {0x21A, 0, DoorAnimTiles_21, DoorAnimPalettes_830F90C}, // door 21
+ {0x224, 0, DoorAnimTiles_22, DoorAnimPalettes_830F954}, // door 22
+ {0x289, 0, DoorAnimTiles_23, DoorAnimPalettes_830F95C}, // door 23
+ {0x30C, 1, DoorAnimTiles_24, DoorAnimPalettes_830F964}, // door 24
+ {0x32D, 1, DoorAnimTiles_25, DoorAnimPalettes_830F96C}, // door 25
+ {0x2ED, 1, DoorAnimTiles_26, DoorAnimPalettes_830F974}, // door 26
+ {0x264, 1, DoorAnimTiles_27, DoorAnimPalettes_830F97C}, // door 27
+ {0x22B, 0, DoorAnimTiles_28, DoorAnimPalettes_830F984}, // door 28
+ {0x2F7, 0, DoorAnimTiles_29, DoorAnimPalettes_830F98C}, // door 29
+ {0x297, 0, DoorAnimTiles_30, DoorAnimPalettes_830F994}, // door 30
+ {0x285, 1, DoorAnimTiles_31, DoorAnimPalettes_830F99C}, // door 31
+ {0x25D, 1, DoorAnimTiles_32, DoorAnimPalettes_830F9A4}, // door 32
+ {0x20E, 1, DoorAnimTiles_33, DoorAnimPalettes_830F9AC}, // door 33
+ {0, 0, NULL, NULL},
+};
-static void CopyDoorTilesToVram(void *src)
+static void CopyDoorTilesToVram(const void *src)
{
CpuFastSet(src, (void *)(VRAM + 0x7F00), 0x40);
}
-static void door_build_blockdef(u16 *a, u16 b, u8 *c)
+static void door_build_blockdef(u16 *a, u16 b, const u8 *c)
{
int i;
u16 unk;
@@ -32,7 +413,7 @@ static void door_build_blockdef(u16 *a, u16 b, u8 *c)
}
}
-static void DrawCurrentDoorAnimFrame(u32 x, u32 y, u8 *c)
+static void DrawCurrentDoorAnimFrame(u32 x, u32 y, const u8 *c)
{
u16 arr[8];
@@ -48,7 +429,7 @@ static void DrawClosedDoorTiles(u32 x, u32 y)
CurrentMapDrawMetatileAt(x, y);
}
-static void DrawDoor(struct DoorGraphics *gfx, struct DoorAnimFrame *frame, u32 x, u32 y)
+static void DrawDoor(const struct DoorGraphics *gfx, const struct DoorAnimFrame *frame, u32 x, u32 y)
{
if (frame->offset == 0xFFFF)
DrawClosedDoorTiles(x, y);
@@ -96,14 +477,14 @@ static void Task_AnimateDoor(u8 taskId)
DestroyTask(taskId);
}
-static struct DoorAnimFrame *GetLastDoorFrame(struct DoorAnimFrame *frame, void *unused)
+static const struct DoorAnimFrame *GetLastDoorFrame(const struct DoorAnimFrame *frame, const void *unused)
{
while (frame->time != 0)
frame++;
return frame - 1;
}
-static struct DoorGraphics *GetDoorGraphics(struct DoorGraphics *gfx, u16 metatileNum)
+static const struct DoorGraphics *GetDoorGraphics(const struct DoorGraphics *gfx, u16 metatileNum)
{
while (gfx->tiles != NULL)
{
@@ -114,7 +495,7 @@ static struct DoorGraphics *GetDoorGraphics(struct DoorGraphics *gfx, u16 metati
return NULL;
}
-static s8 StartDoorAnimationTask(struct DoorGraphics *gfx, struct DoorAnimFrame *frames, u32 x, u32 y)
+static s8 StartDoorAnimationTask(const struct DoorGraphics *gfx, const struct DoorAnimFrame *frames, u32 x, u32 y)
{
if (FuncIsActiveTask(Task_AnimateDoor) == TRUE)
return -1;
@@ -136,19 +517,19 @@ static s8 StartDoorAnimationTask(struct DoorGraphics *gfx, struct DoorAnimFrame
}
}
-static void DrawClosedDoor(struct DoorGraphics *unused, u32 x, u32 y)
+static void DrawClosedDoor(const struct DoorGraphics *unused, u32 x, u32 y)
{
DrawClosedDoorTiles(x, y);
}
-static void DrawOpenedDoor(struct DoorGraphics *gfx, u32 x, u32 y)
+static void DrawOpenedDoor(const struct DoorGraphics *gfx, u32 x, u32 y)
{
gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y));
if (gfx != NULL)
DrawDoor(gfx, GetLastDoorFrame(gDoorOpenAnimFrames, gDoorOpenAnimFrames), x, y);
}
-static s8 StartDoorOpenAnimation(struct DoorGraphics *gfx, u32 x, u32 y)
+static s8 StartDoorOpenAnimation(const struct DoorGraphics *gfx, u32 x, u32 y)
{
gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y));
if (gfx == NULL)
@@ -157,7 +538,7 @@ static s8 StartDoorOpenAnimation(struct DoorGraphics *gfx, u32 x, u32 y)
return StartDoorAnimationTask(gfx, gDoorOpenAnimFrames, x, y);
}
-static s8 StartDoorCloseAnimation(struct DoorGraphics *gfx, u32 x, u32 y)
+static s8 StartDoorCloseAnimation(const struct DoorGraphics *gfx, u32 x, u32 y)
{
gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y));
if (gfx == NULL)
@@ -166,7 +547,7 @@ static s8 StartDoorCloseAnimation(struct DoorGraphics *gfx, u32 x, u32 y)
return StartDoorAnimationTask(gfx, gDoorCloseAnimFrames, x, y);
}
-static s8 cur_mapdata_get_door_x2_at(struct DoorGraphics *gfx, u32 x, u32 y)
+static s8 cur_mapdata_get_door_x2_at(const struct DoorGraphics *gfx, u32 x, u32 y)
{
gfx = GetDoorGraphics(gfx, MapGridGetMetatileIdAt(x, y));
if (gfx == NULL)
diff --git a/src/field/field_specials.c b/src/field/field_specials.c
index 46061febf..48e9b44aa 100644
--- a/src/field/field_specials.c
+++ b/src/field/field_specials.c
@@ -48,6 +48,8 @@ extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
extern u16 gScriptResult;
+extern u8 *const gUnknown_083D1464[3];
+
EWRAM_DATA bool8 gBikeCyclingChallenge = FALSE;
EWRAM_DATA u8 gBikeCollisions = 0;
EWRAM_DATA u32 gBikeCyclingTimer = 0;
diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c
index 1ee8a8f05..30423a3f9 100644
--- a/src/field/fldeff_flash.c
+++ b/src/field/fldeff_flash.c
@@ -21,14 +21,6 @@ struct FlashStruct
void (*func)(void);
};
-extern struct FlashStruct gUnknown_083F7FC4[];
-extern u16 gCaveTransitionPalette_White[];
-extern u16 gCaveTransitionPalette_Black[];
-extern u16 gUnknown_083F808C[];
-extern u16 gUnknown_083F809C[];
-extern u16 gCaveTransitionTilemap[];
-extern u8 gCaveTransitionTiles[];
-
extern u8 gLastFieldPokeMenuOpened;
extern void (*gUnknown_03005CE4)(void);
@@ -46,6 +38,38 @@ void sub_810D00C(u8);
void sub_810D028(u8);
void sub_810D0C4(u8);
void sub_810D128(u8);
+void sub_810CFF8(void);
+void sub_810CE48(void);
+
+static const struct FlashStruct gUnknown_083F7FC4[] =
+{
+ {1, 4, 1, 0, sub_810CFF8},
+ {2, 4, 1, 0, sub_810CFF8},
+ {3, 4, 1, 0, sub_810CFF8},
+ {5, 4, 1, 0, sub_810CFF8},
+ {6, 4, 1, 0, sub_810CFF8},
+ {7, 4, 1, 0, sub_810CFF8},
+ {8, 4, 1, 0, sub_810CFF8},
+ {9, 4, 1, 0, sub_810CFF8},
+ {4, 1, 0, 1, sub_810CE48},
+ {4, 2, 0, 1, sub_810CE48},
+ {4, 3, 0, 1, sub_810CE48},
+ {4, 5, 0, 1, sub_810CE48},
+ {4, 6, 0, 1, sub_810CE48},
+ {4, 7, 0, 1, sub_810CE48},
+ {4, 8, 0, 1, sub_810CE48},
+ {4, 9, 0, 1, sub_810CE48},
+ {0, 0, 0, 0, NULL},
+};
+
+// TODO: Make these extracted palettes?
+static const u16 gCaveTransitionPalette_White[] = {0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF, 0x7FFF};
+static const u16 gCaveTransitionPalette_Black[] = {0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000};
+
+static const u16 gUnknown_083F808C[] = INCBIN_U16("graphics/misc/83F808C.gbapal");
+static const u16 gUnknown_083F809C[] = INCBIN_U16("graphics/misc/83F809C.gbapal");
+static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_transition_map.bin.lz");
+static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz");
bool8 SetUpFieldMove_Flash(void)
{
diff --git a/src/field/money.c b/src/field/money.c
index 5d0f0ae8d..f277ac905 100644
--- a/src/field/money.c
+++ b/src/field/money.c
@@ -4,6 +4,7 @@
#include "menu.h"
#include "sprite.h"
#include "string_util.h"
+#include "graphics.h"
#define SPRITE_TAG_MONEY (0x2722)
@@ -11,9 +12,47 @@ extern u16 gSpecialVar_0x8005;
static EWRAM_DATA u8 gUnknown_02038734 = 0;
-extern const struct CompressedSpriteSheet gUnknown_083CF584;
-extern const struct CompressedSpritePalette gUnknown_083CF58C;
-extern const struct SpriteTemplate gSpriteTemplate_83CF56C;
+static const struct OamData gOamData_83CF558 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+const union AnimCmd gSpriteAnim_83CF560[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_83CF568[] =
+{
+ gSpriteAnim_83CF560,
+};
+
+const struct SpriteTemplate gSpriteTemplate_83CF56C =
+{
+ .tileTag = 10018,
+ .paletteTag = 10018,
+ .oam = &gOamData_83CF558,
+ .anims = gSpriteAnimTable_83CF568,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+const struct CompressedSpriteSheet gUnknown_083CF584[] = {gMenuMoneyGfx, 256, SPRITE_TAG_MONEY};
+const struct CompressedSpritePalette gUnknown_083CF58C[] = {gMenuMoneyPal, SPRITE_TAG_MONEY};
bool8 IsEnoughMoney(u32 budget, u32 cost)
{
@@ -239,8 +278,8 @@ void OpenMoneyWindow(u32 amount, u8 x, u8 y)
MenuDrawTextWindow(x, y, x + 13, y + 3);
UpdateMoneyWindow(amount, x, y);
- LoadCompressedObjectPic(&gUnknown_083CF584);
- LoadCompressedObjectPalette(&gUnknown_083CF58C);
+ LoadCompressedObjectPic(gUnknown_083CF584);
+ LoadCompressedObjectPalette(gUnknown_083CF58C);
gUnknown_02038734 = CreateSprite(&gSpriteTemplate_83CF56C, x * 8 + 19, y * 8 + 11, 0);
}
diff --git a/src/field/tv.c b/src/field/tv.c
index a0287e7df..29d012f28 100644
--- a/src/field/tv.c
+++ b/src/field/tv.c
@@ -39,6 +39,8 @@
#include "strings.h"
#include "text.h"
#include "ewram.h"
+#include "moves.h"
+#include "region_map_sections.h"
struct UnkTvStruct
{
@@ -66,27 +68,6 @@ extern struct TVSaleItem gUnknown_02038724[3];
struct UnkTvStruct gUnknown_03005D38;
-extern u8 *gTVBravoTrainerTextGroup[];
-extern u8 *gTVBravoTrainerBattleTowerTextGroup[];
-extern u8 *gTVSmartShopperTextGroup[];
-extern u8 *gTVNameRaterTextGroup[];
-extern u8 *gTVPokemonTodayTextGroup[];
-extern u8 *gTVPokemonTodayFailedCaptureTextGroup[];
-extern u8 *gTVFanClubTextGroup[];
-extern u8 *gTVRecentHappeningsTextGroup[];
-extern u8 *gTVFanClubOpinionsTextGroup[];
-extern u8 *gTVPokemonOutbreakTextGroup[];
-extern u8 *gTVGabbyAndTyTextGroup[];
-extern u8 *gTVFishingGuruAdviceTextGroup[];
-extern u8 *gTVWorldOfMastersTextGroup[];
-extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5];
-
-
-
-extern const u8 *gTVNewsTextGroup1[];
-extern const u8 *gTVNewsTextGroup2[];
-extern const u8 *gTVNewsTextGroup3[];
-
extern u16 gScriptLastTalked;
extern u8 gScriptContestCategory;
@@ -105,6 +86,351 @@ static u8 gUnknown_03000720;
static u8 gUnknown_03000721;
static s8 gUnknown_03000722;
+const struct OutbreakPokemon gPokeOutbreakSpeciesList[5] =
+{
+ {
+ .species = SPECIES_SURSKIT,
+ .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
+ .level = 3,
+ .location = MAPSEC_Route102,
+ },
+ {
+ .species = SPECIES_SURSKIT,
+ .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
+ .level = 15,
+ .location = MAPSEC_Route114,
+ },
+ {
+ .species = SPECIES_SURSKIT,
+ .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
+ .level = 15,
+ .location = MAPSEC_Route117,
+ },
+ {
+ .species = SPECIES_SURSKIT,
+ .moves = {MOVE_BUBBLE, MOVE_QUICK_ATTACK, MOVE_NONE, MOVE_NONE},
+ .level = 28,
+ .location = MAPSEC_Route120,
+ },
+ {
+ .species = SPECIES_SKITTY,
+ .moves = {MOVE_GROWL, MOVE_TACKLE, MOVE_NONE, MOVE_NONE},
+ .level = 15,
+ .location = MAPSEC_Route116,
+ },
+};
+
+extern const u8 gTVNewsText_EnergyGuru1[];
+extern const u8 gTVNewsText_GameCorner1[];
+extern const u8 gTVNewsText_LilycoveDepartment1[];
+extern const u8 gTVNewsText_EnergyGuru2[];
+extern const u8 gTVNewsText_GameCorner2[];
+extern const u8 gTVNewsText_LilycoveDepartment2[];
+extern const u8 gTVNewsText_EnergyGuru3[];
+extern const u8 gTVNewsText_GameCorner3[];
+extern const u8 gTVNewsText_LilycoveDepartment3[];
+extern const u8 gTVFanClubText1[];
+extern const u8 gTVFanClubText2[];
+extern const u8 gTVFanClubText3[];
+extern const u8 gTVFanClubText4[];
+extern const u8 gTVFanClubText5[];
+extern const u8 gTVFanClubText6[];
+extern const u8 gTVFanClubText7[];
+extern const u8 gTVFanClubText8[];
+extern const u8 gTVRecentHappeningsText1[];
+extern const u8 gTVRecentHappeningsText2[];
+extern const u8 gTVRecentHappeningsText3[];
+extern const u8 gTVRecentHappeningsText4[];
+extern const u8 gTVRecentHappeningsText5[];
+extern const u8 gTVRecentHappeningsText6[];
+extern const u8 gTVFanClubOpinionsText1[];
+extern const u8 gTVFanClubOpinionsText2[];
+extern const u8 gTVFanClubOpinionsText3[];
+extern const u8 gTVFanClubOpinionsText4[];
+extern const u8 gTVFanClubOpinionsText5[];
+extern const u8 gTVPokemonOutbreakText[];
+extern const u8 gTVPokemonTodayText1[];
+extern const u8 gTVPokemonTodayText2[];
+extern const u8 gTVPokemonTodayText3[];
+extern const u8 gTVPokemonTodayText4[];
+extern const u8 gTVPokemonTodayText5[];
+extern const u8 gTVPokemonTodayText6[];
+extern const u8 gTVPokemonTodayText7[];
+extern const u8 gTVPokemonTodayText8[];
+extern const u8 gTVPokemonTodayText9[];
+extern const u8 gTVPokemonTodayText10[];
+extern const u8 gTVPokemonTodayText11[];
+extern const u8 gTVPokemonTodayText12[];
+extern const u8 gTVSmartShopperText1[];
+extern const u8 gTVSmartShopperText2[];
+extern const u8 gTVSmartShopperText3[];
+extern const u8 gTVSmartShopperText4[];
+extern const u8 gTVSmartShopperText5[];
+extern const u8 gTVSmartShopperText6[];
+extern const u8 gTVSmartShopperText7[];
+extern const u8 gTVSmartShopperText8[];
+extern const u8 gTVSmartShopperText9[];
+extern const u8 gTVSmartShopperText10[];
+extern const u8 gTVSmartShopperText11[];
+extern const u8 gTVSmartShopperText12[];
+extern const u8 gTVSmartShopperText13[];
+extern const u8 gTVBravoTrainerText1[];
+extern const u8 gTVBravoTrainerText2[];
+extern const u8 gTVBravoTrainerText3[];
+extern const u8 gTVBravoTrainerText4[];
+extern const u8 gTVBravoTrainerText5[];
+extern const u8 gTVBravoTrainerText6[];
+extern const u8 gTVBravoTrainerText7[];
+extern const u8 gTVBravoTrainerText8[];
+extern const u8 gTVBravoTrainerText9[];
+extern const u8 gTVBravoTrainerBattleTowerText1[];
+extern const u8 gTVBravoTrainerBattleTowerText2[];
+extern const u8 gTVBravoTrainerBattleTowerText3[];
+extern const u8 gTVBravoTrainerBattleTowerText4[];
+extern const u8 gTVBravoTrainerBattleTowerText5[];
+extern const u8 gTVBravoTrainerBattleTowerText6[];
+extern const u8 gTVBravoTrainerBattleTowerText7[];
+extern const u8 gTVBravoTrainerBattleTowerText8[];
+extern const u8 gTVBravoTrainerBattleTowerText9[];
+extern const u8 gTVBravoTrainerBattleTowerText10[];
+extern const u8 gTVBravoTrainerBattleTowerText11[];
+extern const u8 gTVBravoTrainerBattleTowerText12[];
+extern const u8 gTVBravoTrainerBattleTowerText13[];
+extern const u8 gTVBravoTrainerBattleTowerText14[];
+extern const u8 gTVBravoTrainerBattleTowerText15[];
+extern const u8 gTVNameRaterText1[];
+extern const u8 gTVNameRaterText2[];
+extern const u8 gTVNameRaterText3[];
+extern const u8 gTVNameRaterText4[];
+extern const u8 gTVNameRaterText5[];
+extern const u8 gTVNameRaterText6[];
+extern const u8 gTVNameRaterText7[];
+extern const u8 gTVNameRaterText8[];
+extern const u8 gTVNameRaterText9[];
+extern const u8 gTVNameRaterText10[];
+extern const u8 gTVNameRaterText11[];
+extern const u8 gTVNameRaterText12[];
+extern const u8 gTVNameRaterText13[];
+extern const u8 gTVNameRaterText14[];
+extern const u8 gTVNameRaterText15[];
+extern const u8 gTVNameRaterText16[];
+extern const u8 gTVNameRaterText17[];
+extern const u8 gTVNameRaterText18[];
+extern const u8 gTVNameRaterText19[];
+extern const u8 gTVPokemonTodayFailedCaptureText1[];
+extern const u8 gTVPokemonTodayFailedCaptureText2[];
+extern const u8 gTVPokemonTodayFailedCaptureText3[];
+extern const u8 gTVPokemonTodayFailedCaptureText4[];
+extern const u8 gTVPokemonTodayFailedCaptureText5[];
+extern const u8 gTVPokemonTodayFailedCaptureText6[];
+extern const u8 gTVPokemonTodayFailedCaptureText7[];
+extern const u8 gTVFishingGuruAdviceText1[];
+extern const u8 gTVFishingGuruAdviceText2[];
+extern const u8 gTVWorldOfMastersText1[];
+extern const u8 gTVWorldOfMastersText2[];
+extern const u8 gTVWorldOfMastersText3[];
+extern const u8 gTVGabbyAndTyText1[];
+extern const u8 gTVGabbyAndTyText2[];
+extern const u8 gTVGabbyAndTyText3[];
+extern const u8 gTVGabbyAndTyText4[];
+extern const u8 gTVGabbyAndTyText5[];
+extern const u8 gTVGabbyAndTyText6[];
+extern const u8 gTVGabbyAndTyText7[];
+extern const u8 gTVGabbyAndTyText8[];
+extern const u8 gTVGabbyAndTyText9[];
+
+const u8 *const gTVNewsTextGroup1[] =
+{
+ NULL,
+ gTVNewsText_EnergyGuru1,
+ gTVNewsText_GameCorner1,
+ gTVNewsText_LilycoveDepartment1,
+};
+
+const u8 *const gTVNewsTextGroup2[] =
+{
+ NULL,
+ gTVNewsText_EnergyGuru2,
+ gTVNewsText_GameCorner2,
+ gTVNewsText_LilycoveDepartment2,
+};
+
+const u8 *const gTVNewsTextGroup3[] =
+{
+ NULL,
+ gTVNewsText_EnergyGuru3,
+ gTVNewsText_GameCorner3,
+ gTVNewsText_LilycoveDepartment3,
+};
+
+u8 *const gUnknown_083D1464[] =
+{
+ gStringVar1,
+ gStringVar2,
+ gStringVar3,
+};
+
+const u8 *const gTVFanClubTextGroup[] =
+{
+ gTVFanClubText1,
+ gTVFanClubText2,
+ gTVFanClubText3,
+ gTVFanClubText4,
+ gTVFanClubText5,
+ gTVFanClubText6,
+ gTVFanClubText7,
+ gTVFanClubText8,
+};
+
+const u8 *const gTVRecentHappeningsTextGroup[] =
+{
+ gTVRecentHappeningsText1,
+ gTVRecentHappeningsText2,
+ gTVRecentHappeningsText3,
+ gTVRecentHappeningsText4,
+ gTVRecentHappeningsText5,
+ gTVRecentHappeningsText6,
+};
+
+const u8 *const gTVFanClubOpinionsTextGroup[] =
+{
+ gTVFanClubOpinionsText1,
+ gTVFanClubOpinionsText2,
+ gTVFanClubOpinionsText3,
+ gTVFanClubOpinionsText4,
+ gTVFanClubOpinionsText5,
+};
+
+const u8 *const gTVPokemonOutbreakTextGroup[] =
+{
+ gTVPokemonOutbreakText,
+};
+
+const u8 *const gTVPokemonTodayTextGroup[] =
+{
+ gTVPokemonTodayText1,
+ gTVPokemonTodayText2,
+ gTVPokemonTodayText3,
+ gTVPokemonTodayText4,
+ gTVPokemonTodayText5,
+ gTVPokemonTodayText6,
+ gTVPokemonTodayText7,
+ gTVPokemonTodayText8,
+ gTVPokemonTodayText9,
+ gTVPokemonTodayText10,
+ gTVPokemonTodayText11,
+ gTVPokemonTodayText12,
+};
+
+const u8 *const gTVSmartShopperTextGroup[] =
+{
+ gTVSmartShopperText1,
+ gTVSmartShopperText2,
+ gTVSmartShopperText3,
+ gTVSmartShopperText4,
+ gTVSmartShopperText5,
+ gTVSmartShopperText6,
+ gTVSmartShopperText7,
+ gTVSmartShopperText8,
+ gTVSmartShopperText9,
+ gTVSmartShopperText10,
+ gTVSmartShopperText11,
+ gTVSmartShopperText12,
+ gTVSmartShopperText13,
+};
+
+const u8 *const gTVBravoTrainerTextGroup[] =
+{
+ gTVBravoTrainerText1,
+ gTVBravoTrainerText2,
+ gTVBravoTrainerText3,
+ gTVBravoTrainerText4,
+ gTVBravoTrainerText5,
+ gTVBravoTrainerText6,
+ gTVBravoTrainerText7,
+ gTVBravoTrainerText8,
+ gTVBravoTrainerText9,
+};
+
+const u8 *const gTVBravoTrainerBattleTowerTextGroup[] =
+{
+ gTVBravoTrainerBattleTowerText1,
+ gTVBravoTrainerBattleTowerText2,
+ gTVBravoTrainerBattleTowerText3,
+ gTVBravoTrainerBattleTowerText4,
+ gTVBravoTrainerBattleTowerText5,
+ gTVBravoTrainerBattleTowerText6,
+ gTVBravoTrainerBattleTowerText7,
+ gTVBravoTrainerBattleTowerText8,
+ gTVBravoTrainerBattleTowerText9,
+ gTVBravoTrainerBattleTowerText10,
+ gTVBravoTrainerBattleTowerText11,
+ gTVBravoTrainerBattleTowerText12,
+ gTVBravoTrainerBattleTowerText13,
+ gTVBravoTrainerBattleTowerText14,
+ gTVBravoTrainerBattleTowerText15,
+};
+
+const u8 *const gTVNameRaterTextGroup[] =
+{
+ gTVNameRaterText1,
+ gTVNameRaterText2,
+ gTVNameRaterText3,
+ gTVNameRaterText4,
+ gTVNameRaterText5,
+ gTVNameRaterText6,
+ gTVNameRaterText7,
+ gTVNameRaterText8,
+ gTVNameRaterText9,
+ gTVNameRaterText10,
+ gTVNameRaterText11,
+ gTVNameRaterText12,
+ gTVNameRaterText13,
+ gTVNameRaterText14,
+ gTVNameRaterText15,
+ gTVNameRaterText16,
+ gTVNameRaterText17,
+ gTVNameRaterText18,
+ gTVNameRaterText19,
+};
+
+const u8 *const gTVPokemonTodayFailedCaptureTextGroup[] =
+{
+ gTVPokemonTodayFailedCaptureText1,
+ gTVPokemonTodayFailedCaptureText2,
+ gTVPokemonTodayFailedCaptureText3,
+ gTVPokemonTodayFailedCaptureText4,
+ gTVPokemonTodayFailedCaptureText5,
+ gTVPokemonTodayFailedCaptureText6,
+ gTVPokemonTodayFailedCaptureText7,
+};
+
+const u8 *const gTVFishingGuruAdviceTextGroup[] =
+{
+ gTVFishingGuruAdviceText1,
+ gTVFishingGuruAdviceText2,
+};
+
+const u8 *const gTVWorldOfMastersTextGroup[] =
+{
+ gTVWorldOfMastersText1,
+ gTVWorldOfMastersText2,
+ gTVWorldOfMastersText3,
+};
+
+const u8 *const gTVGabbyAndTyTextGroup[] =
+{
+ gTVGabbyAndTyText1,
+ gTVGabbyAndTyText2,
+ gTVGabbyAndTyText3,
+ gTVGabbyAndTyText4,
+ gTVGabbyAndTyText5,
+ gTVGabbyAndTyText6,
+ gTVGabbyAndTyText7,
+ gTVGabbyAndTyText8,
+ gTVGabbyAndTyText9,
+};
+
void ClearTVShowData(void)
{
u8 showidx;
diff --git a/src/pokemon/mon_markings.c b/src/pokemon/mon_markings.c
index 0cad8db59..9ea738c7b 100644
--- a/src/pokemon/mon_markings.c
+++ b/src/pokemon/mon_markings.c
@@ -24,8 +24,8 @@ struct PokemonMarkMenu
/*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window
/*0x0014*/ struct Sprite *menuMarkingSprites[4];
/*0x0024*/ struct Sprite *menuTextSprite;
- /*0x0028*/ u8 *frameTiles;
- /*0x002C*/ u16 *framePalette;
+ /*0x0028*/ const u8 *frameTiles;
+ /*0x002C*/ const u16 *framePalette;
/*0x0030*/ u8 menuWindowSpriteTiles[0x1000];
/*0x1030*/ u8 filler1030[0x80];
/*0x10B0*/ u8 tileLoadState;
diff --git a/src/pokemon/pokemon_3.c b/src/pokemon/pokemon_3.c
index 19786e506..a8e824b33 100644
--- a/src/pokemon/pokemon_3.c
+++ b/src/pokemon/pokemon_3.c
@@ -56,10 +56,10 @@ extern u16 gBattlePartyID[];
extern u8 gJapaneseNidoranNames[][11];
extern u8 gUnknown_082082F8[];
-extern u8 gUnknown_083FFDB3[];
-extern u8 gUnknown_083FFDD3[];
-extern u8 gUnknown_083FEE5D[];
-extern u8 gUnknown_083FEE92[];
+extern u8 BattleText_Rose[];
+extern u8 BattleText_UnknownString3[];
+extern u8 BattleText_MistShroud[];
+extern u8 BattleText_GetPumped[];
extern u8 *gUnknown_08400F58[];
bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId)
@@ -197,8 +197,8 @@ void sub_803F324(int stat)
{
gBankTarget = gBankInMenu;
StringCopy(gBattleTextBuff1, gUnknown_08400F58[gUnknown_082082F8[stat]]);
- StringCopy(gBattleTextBuff2, gUnknown_083FFDB3);
- StrCpyDecodeToDisplayedStringBattle(gUnknown_083FFDD3);
+ StringCopy(gBattleTextBuff2, BattleText_Rose);
+ StrCpyDecodeToDisplayedStringBattle(BattleText_UnknownString3);
}
u8 *sub_803F378(u16 itemId)
@@ -237,7 +237,7 @@ u8 *sub_803F378(u16 itemId)
else
{
gBankAttacker = gBankInMenu;
- StrCpyDecodeToDisplayedStringBattle(gUnknown_083FEE92);
+ StrCpyDecodeToDisplayedStringBattle(BattleText_GetPumped);
}
}
}
@@ -245,7 +245,7 @@ u8 *sub_803F378(u16 itemId)
if (itemEffect[3] & 0x80)
{
gBankAttacker = gBankInMenu;
- StrCpyDecodeToDisplayedStringBattle(gUnknown_083FEE5D);
+ StrCpyDecodeToDisplayedStringBattle(BattleText_MistShroud);
}
return gDisplayedStringBattle;
diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c
index 755176c81..4b73ab5b2 100644
--- a/src/scene/evolution_scene.c
+++ b/src/scene/evolution_scene.c
@@ -85,9 +85,9 @@ extern u8 gBattleCommunication[];
#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
#define sEvoGraphicsTaskID gBattleCommunication[2]
-extern const u8 gUnknown_08400C4A[];
-extern const u8 gUnknown_08400C60[];
-extern const u8 gUnknown_08400C8D[];
+extern const u8 BattleText_StartEvo[];
+extern const u8 BattleText_FinishEvo[];
+extern const u8 BattleText_StopEvo[];
extern void * const gUnknown_081FAF4C[];
extern const u8* const gBattleStringsTable[];
@@ -557,7 +557,7 @@ static void Task_EvolutionScene(u8 taskID)
case 1: // print 'whoa, poke is evolving!!!' msg
if (!gPaletteFade.active)
{
- StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A);
+ StringExpandPlaceholders(gStringVar4, BattleText_StartEvo);
sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
gTasks[taskID].tState++;
}
@@ -645,7 +645,7 @@ static void Task_EvolutionScene(u8 taskID)
case 13: // congratulations string and rename prompt
if (IsCryFinished() && !gPaletteFade.active)
{
- StringExpandPlaceholders(gStringVar4, gUnknown_08400C60);
+ StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo);
sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
PlayBGM(BGM_FANFA5);
gTasks[taskID].tState++;
@@ -714,7 +714,7 @@ static void Task_EvolutionScene(u8 taskID)
case 18: // after the cry, print the string 'WHOA IT DID NOT EVOLVE!!!'
if (IsCryFinished())
{
- StringExpandPlaceholders(gStringVar4, gUnknown_08400C8D);
+ StringExpandPlaceholders(gStringVar4, BattleText_StopEvo);
sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
gTasks[taskID].tEvoWasStopped = TRUE;
gTasks[taskID].tState = 14;
@@ -899,7 +899,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
switch (gTasks[taskID].tState)
{
case 0:
- StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A);
+ StringExpandPlaceholders(gStringVar4, BattleText_StartEvo);
sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
gTasks[taskID].tState++;
break;
@@ -987,7 +987,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 12:
if (IsCryFinished() && !gPaletteFade.active)
{
- StringExpandPlaceholders(gStringVar4, gUnknown_08400C60);
+ StringExpandPlaceholders(gStringVar4, BattleText_FinishEvo);
sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
PlayFanfare(BGM_FANFA5);
gTasks[taskID].tState++;