diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/battle/battle_4.c | 24 | ||||
-rw-r--r-- | src/battle/battle_controller_player.c | 41 | ||||
-rw-r--r-- | src/battle/battle_controller_safari.c | 8 | ||||
-rw-r--r-- | src/battle/battle_controller_wally.c | 8 | ||||
-rw-r--r-- | src/battle/battle_message.c | 340 | ||||
-rwxr-xr-x | src/data/battle_strings_de.h | 1612 | ||||
-rwxr-xr-x | src/data/battle_strings_en.h | 1612 | ||||
-rw-r--r-- | src/debug/matsuda_debug_menu.c | 250 | ||||
-rw-r--r-- | src/debug/mori_debug_menu.c | 67 | ||||
-rw-r--r-- | src/engine/cable_club.c | 21 | ||||
-rw-r--r-- | src/engine/main_menu.c | 53 | ||||
-rw-r--r-- | src/engine/reset_rtc_screen.c | 123 | ||||
-rw-r--r-- | src/engine/text_window.c | 76 | ||||
-rw-r--r-- | src/engine/tileset_anim.c | 425 | ||||
-rw-r--r-- | src/field/battle_tower.c | 40 | ||||
-rw-r--r-- | src/field/field_door.c | 411 | ||||
-rw-r--r-- | src/field/field_specials.c | 2 | ||||
-rw-r--r-- | src/field/fldeff_flash.c | 40 | ||||
-rw-r--r-- | src/field/money.c | 49 | ||||
-rw-r--r-- | src/field/tv.c | 368 | ||||
-rw-r--r-- | src/pokemon/mon_markings.c | 4 | ||||
-rw-r--r-- | src/pokemon/pokemon_3.c | 16 | ||||
-rw-r--r-- | src/scene/evolution_scene.c | 16 |
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++; |