From 95c56943995bbae7688b581a6b6d084e215827f4 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 12 Jun 2017 14:36:40 -0500 Subject: decompile sub_8090750 - sub_8091304 --- src/pokedex.c | 857 +++++++++++++++++++++++++++++++++++++++++++-------- src/starter_choose.c | 2 +- 2 files changed, 733 insertions(+), 126 deletions(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index 97bac3390..ec13edac4 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -2,6 +2,7 @@ #include "gba/m4a_internal.h" #include "pokedex.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "event_data.h" #include "m4a.h" @@ -58,7 +59,9 @@ extern u8 gReservedSpritePaletteCount; extern struct PokedexView *gPokedexView; extern u16 gUnknown_0202FFB8; extern u8 gUnknown_0202FFBA; +extern struct PokedexListItem *gUnknown_0202FFBC; extern u8 gUnknown_03005CE8; +extern IntrCallback gUnknown_03005CEC; extern u8 gPokedexMenu_Gfx[]; extern u8 gUnknown_08E96738[]; extern u8 gUnknown_08E9C6DC[]; @@ -68,7 +71,8 @@ extern struct SpriteSheet gUnknown_083A05CC; extern struct SpritePalette gUnknown_083A05DC[]; extern u8 gUnknown_0839FA7C[]; extern u8 gUnknown_0839F67C[]; -extern u8 gPokedexMenu_Pal[]; +extern u16 gPokedexMenu_Pal[]; +extern u16 gPokedexMenu2_Pal[]; extern u8 gUnknown_0839F73C[]; extern u8 gUnknown_083A05EC[]; extern u8 gUnknown_083A05F1[]; @@ -79,8 +83,8 @@ extern struct SpriteTemplate gSpriteTemplate_83A056C; extern struct SpriteTemplate gSpriteTemplate_83A0584; extern struct SpriteTemplate gSpriteTemplate_83A059C; extern struct SpriteTemplate gSpriteTemplate_83A05B4; -extern struct PokedexListItem *gUnknown_0202FFBC; -extern IntrCallback gUnknown_03005CEC; +extern u8 gUnknown_083B5558[]; +extern u8 gUnknown_08D00524[]; extern u8 gUnknown_08E96BD4[]; extern u8 gUnknown_083A05F8[]; extern u8 gUnknown_0839F8A0[]; @@ -92,6 +96,8 @@ extern u8 gUnknown_08E96B58[]; extern struct PokedexEntry gPokedexEntries[]; +extern void sub_800D74C(); +extern const u16 *species_and_otid_get_pal(u16, u32, u32); extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); extern bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); extern void remove_some_task(void); @@ -104,6 +110,8 @@ extern u16 gPokedexOrder_Alphabetical[]; extern u16 gPokedexOrder_Weight[]; extern u16 gPokedexOrder_Height[]; +void sub_8090B8C(u8); +void sub_8090C28(struct Sprite *); u16 NationalPokedexNumToSpecies(u16); // asm/pokedex_area_screen @@ -806,7 +814,7 @@ void sub_808D640(void) if (gPokedexView->unk64C_1) LoadPalette(gUnknown_0839F67C + 0x2, 1, 0xBE); else if (!IsNationalPokedexEnabled()) - LoadPalette(gPokedexMenu_Pal + 0x2, 1, 0xBE); + LoadPalette(gPokedexMenu_Pal + 1, 1, 0xBE); else LoadPalette(gUnknown_0839F73C + 0x2, 1, 0xBE); } @@ -1084,126 +1092,29 @@ void sub_808DF88(u16 a, u8 b, u8 c, u16 d) *(u16 *)(VRAM + 0x40 + d * 0x800 + c * 0x40 + b * 2) = unk[1]; } -#ifdef NONMATCHING -//FixMe -u8 sub_808DFE4(u16 a, u8 b, u8 c) +u8 sub_808DFE4(u16 num, u8 b, u8 c) { u8 text[10]; u8 i; - u32 species; for (i = 0; i < 10; i++) text[i] = 0; text[i] = EOS; - species = NationalPokedexNumToSpecies(a); - if (species) - { - for (i = 0; gSpeciesNames[species][i] != EOS && i < 10; i++) - text[i] = gSpeciesNames[species][i]; - } - else + num = NationalPokedexNumToSpecies(num); + switch (num) { + default: + for (i = 0; gSpeciesNames[num][i] != EOS && i < 10; i++) + text[i] = gSpeciesNames[num][i]; + break; + case 0: for (i = 0; i < 10; i++) text[i] = 0xAE; + break; } MenuPrint_PixelCoords(text, (b - 0x11) * 8 + 0xFC, c * 8, 0); + return i; } -#else -__attribute__((naked)) -u8 sub_808DFE4(u16 a, u8 b, u8 c) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0xC\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - lsls r1, 24\n\ - lsrs r5, r1, 24\n\ - lsls r2, 24\n\ - lsrs r6, r2, 24\n\ - movs r4, 0\n\ - movs r1, 0\n\ -_0808DFF8:\n\ - mov r2, sp\n\ - adds r0, r2, r4\n\ - strb r1, [r0]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0x9\n\ - bls _0808DFF8\n\ - adds r0, r2, r4\n\ - movs r1, 0xFF\n\ - strb r1, [r0]\n\ - adds r0, r3, 0\n\ - bl NationalPokedexNumToSpecies\n\ - adds r3, r0, 0\n\ - cmp r3, 0\n\ - beq _0808E058\n\ - movs r4, 0\n\ - ldr r2, _0808E054\n\ - movs r0, 0xB\n\ - adds r1, r3, 0\n\ - muls r1, r0\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - subs r5, 0x11\n\ - lsls r6, 19\n\ - cmp r0, 0xFF\n\ - beq _0808E070\n\ - adds r3, r1, 0\n\ -_0808E032:\n\ - mov r0, sp\n\ - adds r1, r0, r4\n\ - adds r0, r4, r3\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - strb r0, [r1]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - adds r0, r4, r3\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - cmp r0, 0xFF\n\ - beq _0808E070\n\ - cmp r4, 0x9\n\ - bls _0808E032\n\ - b _0808E070\n\ - .align 2, 0\n\ -_0808E054: .4byte gSpeciesNames\n\ -_0808E058:\n\ - movs r4, 0\n\ - subs r5, 0x11\n\ - lsls r6, 19\n\ - movs r1, 0xAE\n\ -_0808E060:\n\ - mov r2, sp\n\ - adds r0, r2, r4\n\ - strb r1, [r0]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0x9\n\ - bls _0808E060\n\ -_0808E070:\n\ - lsls r1, r5, 27\n\ - movs r0, 0xFC\n\ - lsls r0, 24\n\ - adds r1, r0\n\ - lsrs r1, 24\n\ - lsrs r2, r6, 16\n\ - mov r0, sp\n\ - movs r3, 0\n\ - bl MenuPrint_PixelCoords\n\ - adds r0, r4, 0\n\ - add sp, 0xC\n\ - pop {r4-r6}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} -#endif void sub_808E090(u8 a, u8 b, u16 c) { @@ -3081,15 +2992,17 @@ u8 sub_809070C(u16 dexNum, u32 b, u32 c) return taskId; } -/* +#ifdef NONMATCHING // yet again... void sub_8090750(u8 taskId) { + u8 spriteId; u16 dexNum = gTasks[taskId].data[1]; - + u16 i; + switch (gTasks[taskId].data[0]) { - default: case 0: + default: if (!gPaletteFade.active) { gUnknown_03005CEC = gMain.vblankCallback; @@ -3099,19 +3012,15 @@ void sub_8090750(u8 taskId) } break; case 1: - { - u16 i; - LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM + 0x4000)); LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800)); for (i = 0; i < 0x280; i++) ((u16 *)(VRAM + 0x7800))[i] += 0x2000; sub_8091738(gTasks[taskId].data[1], 2, 0x3FC); ResetPaletteFade(); - LoadPalette(gPokedexMenu_Pal + 2, 0x21, 0x9E); + LoadPalette(gPokedexMenu_Pal + 1, 0x21, 0x9E); gTasks[taskId].data[0]++; break; - } case 2: SetUpWindowConfig(&gWindowConfig_81E7064); InitMenuWindow(&gWindowConfig_81E7064); @@ -3128,7 +3037,7 @@ void sub_8090750(u8 taskId) MenuPrint(gDexText_UnknownPoke, 11, 5); MenuPrint(gDexText_UnknownHeight, 16, 7); MenuPrint(gDexText_UnknownWeight, 16, 9); - sub_8091304(&gPokedexEntries[dexNum], 11, 5); + sub_8091304(gPokedexEntries[dexNum].categoryName, 11, 5); sub_8091458(gPokedexEntries[dexNum].height, 16, 7); sub_8091564(gPokedexEntries[dexNum].weight, 16, 9); MenuPrint(gPokedexEntries[dexNum].descriptionPage1, 2, 13); @@ -3136,16 +3045,13 @@ void sub_8090750(u8 taskId) gTasks[taskId].data[0]++; break; case 4: - { - u8 spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0); - + spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0); gSprites[spriteId].oam.priority = 0; BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); SetVBlankCallback(gUnknown_03005CEC); gTasks[taskId].data[3] = spriteId; gTasks[taskId].data[0]++; break; - } case 5: REG_BLDCNT = 0; REG_BLDALPHA = 0; @@ -3165,4 +3071,705 @@ void sub_8090750(u8 taskId) break; } } -*/ +#else +__attribute__((naked)) +void sub_8090750(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + sub sp, 0x8\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r1, _08090778 @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrh r6, [r0, 0xA]\n\ + movs r2, 0x8\n\ + ldrsh r0, [r0, r2]\n\ + adds r4, r1, 0\n\ + cmp r0, 0x6\n\ + bhi _0809079C\n\ + lsls r0, 2\n\ + ldr r1, _0809077C @ =_08090780\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_08090778: .4byte gTasks\n\ +_0809077C: .4byte _08090780\n\ + .align 2, 0\n\ +_08090780:\n\ + .4byte _0809079C\n\ + .4byte _080907E0\n\ + .4byte _0809085C\n\ + .4byte _080908A0\n\ + .4byte _08090960\n\ + .4byte _080909B8\n\ + .4byte _080909F4\n\ +_0809079C:\n\ + ldr r0, _080907D0 @ =gPaletteFade\n\ + ldrb r1, [r0, 0x7]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080907AA\n\ + b _08090A26\n\ +_080907AA:\n\ + ldr r1, _080907D4 @ =gUnknown_03005CEC\n\ + ldr r0, _080907D8 @ =gMain\n\ + ldr r0, [r0, 0xC]\n\ + str r0, [r1]\n\ + movs r0, 0\n\ + bl SetVBlankCallback\n\ + movs r0, 0x80\n\ + lsls r0, 1\n\ + bl sub_8091060\n\ + ldr r1, _080907DC @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x1\n\ + strh r1, [r0, 0x8]\n\ + b _08090A26\n\ + .align 2, 0\n\ +_080907D0: .4byte gPaletteFade\n\ +_080907D4: .4byte gUnknown_03005CEC\n\ +_080907D8: .4byte gMain\n\ +_080907DC: .4byte gTasks\n\ +_080907E0:\n\ + ldr r0, _08090840 @ =gPokedexMenu_Gfx\n\ + ldr r1, _08090844 @ =0x06004000\n\ + bl LZ77UnCompVram\n\ + ldr r0, _08090848 @ =gUnknown_08E96BD4\n\ + ldr r4, _0809084C @ =0x06007800\n\ + adds r1, r4, 0\n\ + bl LZ77UnCompVram\n\ + movs r2, 0\n\ + lsls r5, r7, 2\n\ + mov r12, r5\n\ + movs r0, 0x80\n\ + lsls r0, 6\n\ + adds r6, r0, 0\n\ + ldr r3, _08090850 @ =0x0000027f\n\ +_08090800:\n\ + lsls r0, r2, 1\n\ + adds r0, r4\n\ + ldrh r5, [r0]\n\ + adds r1, r6, r5\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, r3\n\ + bls _08090800\n\ + ldr r0, _08090854 @ =gTasks\n\ + mov r1, r12\n\ + adds r4, r1, r7\n\ + lsls r4, 3\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0xA]\n\ + movs r2, 0xFF\n\ + lsls r2, 2\n\ + movs r1, 0x2\n\ + bl sub_8091738\n\ + bl ResetPaletteFade\n\ + ldr r0, _08090858 @ =gPokedexMenu_Pal + 0x2\n\ + movs r1, 0x21\n\ + movs r2, 0x9E\n\ + bl LoadPalette\n\ + ldrh r0, [r4, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x8]\n\ + b _08090A26\n\ + .align 2, 0\n\ +_08090840: .4byte gPokedexMenu_Gfx\n\ +_08090844: .4byte 0x06004000\n\ +_08090848: .4byte gUnknown_08E96BD4\n\ +_0809084C: .4byte 0x06007800\n\ +_08090850: .4byte 0x0000027f\n\ +_08090854: .4byte gTasks\n\ +_08090858: .4byte gPokedexMenu_Pal + 0x2\n\ +_0809085C:\n\ + ldr r4, _0809088C @ =gWindowConfig_81E7064\n\ + adds r0, r4, 0\n\ + bl SetUpWindowConfig\n\ + adds r0, r4, 0\n\ + bl InitMenuWindow\n\ + ldr r2, _08090890 @ =0x0600c000\n\ + add r1, sp, 0x4\n\ + movs r0, 0\n\ + strh r0, [r1]\n\ + ldr r0, _08090894 @ =0x040000d4\n\ + str r1, [r0]\n\ + str r2, [r0, 0x4]\n\ + ldr r1, _08090898 @ =0x81000100\n\ + str r1, [r0, 0x8]\n\ + ldr r0, [r0, 0x8]\n\ + ldr r1, _0809089C @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + b _080909E0\n\ + .align 2, 0\n\ +_0809088C: .4byte gWindowConfig_81E7064\n\ +_08090890: .4byte 0x0600c000\n\ +_08090894: .4byte 0x040000d4\n\ +_08090898: .4byte 0x81000100\n\ +_0809089C: .4byte gTasks\n\ +_080908A0:\n\ + ldr r0, _080908C8 @ =gDexText_RegisterComplete\n\ + movs r1, 0x2\n\ + movs r2, 0\n\ + movs r3, 0xD0\n\ + bl sub_8072BD8\n\ + bl IsNationalPokedexEnabled\n\ + cmp r0, 0\n\ + bne _080908CC\n\ + adds r0, r6, 0\n\ + bl NationalToHoennOrder\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xD\n\ + movs r2, 0x3\n\ + bl sub_8091154\n\ + b _080908D6\n\ + .align 2, 0\n\ +_080908C8: .4byte gDexText_RegisterComplete\n\ +_080908CC:\n\ + adds r0, r6, 0\n\ + movs r1, 0xD\n\ + movs r2, 0x3\n\ + bl sub_8091154\n\ +_080908D6:\n\ + adds r0, r6, 0\n\ + movs r1, 0x10\n\ + movs r2, 0x3\n\ + bl sub_80911C8\n\ + ldr r0, _0809094C @ =gDexText_UnknownPoke\n\ + movs r1, 0xB\n\ + movs r2, 0x5\n\ + bl MenuPrint\n\ + ldr r0, _08090950 @ =gDexText_UnknownHeight\n\ + movs r1, 0x10\n\ + movs r2, 0x7\n\ + bl MenuPrint\n\ + ldr r0, _08090954 @ =gDexText_UnknownWeight\n\ + movs r1, 0x10\n\ + movs r2, 0x9\n\ + bl MenuPrint\n\ + lsls r4, r6, 3\n\ + adds r4, r6\n\ + lsls r4, 2\n\ + ldr r6, _08090958 @ =gPokedexEntries\n\ + adds r5, r4, r6\n\ + adds r0, r5, 0\n\ + movs r1, 0xB\n\ + movs r2, 0x5\n\ + bl sub_8091304\n\ + ldrh r0, [r5, 0xC]\n\ + movs r1, 0x10\n\ + movs r2, 0x7\n\ + bl sub_8091458\n\ + ldrh r0, [r5, 0xE]\n\ + movs r1, 0x10\n\ + movs r2, 0x9\n\ + bl sub_8091564\n\ + adds r6, 0x10\n\ + adds r4, r6\n\ + ldr r0, [r4]\n\ + movs r1, 0x2\n\ + movs r2, 0xD\n\ + bl MenuPrint\n\ + movs r1, 0xFF\n\ + lsls r1, 2\n\ + movs r0, 0xE\n\ + bl sub_80917CC\n\ + ldr r1, _0809095C @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + b _080909E0\n\ + .align 2, 0\n\ +_0809094C: .4byte gDexText_UnknownPoke\n\ +_08090950: .4byte gDexText_UnknownHeight\n\ +_08090954: .4byte gDexText_UnknownWeight\n\ +_08090958: .4byte gPokedexEntries\n\ +_0809095C: .4byte gTasks\n\ +_08090960:\n\ + adds r0, r6, 0\n\ + movs r1, 0x30\n\ + movs r2, 0x38\n\ + movs r3, 0\n\ + bl sub_80918EC\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + ldr r0, _080909AC @ =gSprites\n\ + lsls r1, r4, 4\n\ + adds r1, r4\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r2, [r1, 0x5]\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r2\n\ + strb r0, [r1, 0x5]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + movs r1, 0\n\ + str r1, [sp]\n\ + movs r2, 0x10\n\ + movs r3, 0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, _080909B0 @ =gUnknown_03005CEC\n\ + ldr r0, [r0]\n\ + bl SetVBlankCallback\n\ + ldr r1, _080909B4 @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r4, [r0, 0xE]\n\ + b _080909E0\n\ + .align 2, 0\n\ +_080909AC: .4byte gSprites\n\ +_080909B0: .4byte gUnknown_03005CEC\n\ +_080909B4: .4byte gTasks\n\ +_080909B8:\n\ + ldr r0, _080909E8 @ =REG_BLDCNT\n\ + movs r1, 0\n\ + strh r1, [r0]\n\ + adds r0, 0x2\n\ + strh r1, [r0]\n\ + adds r0, 0x2\n\ + strh r1, [r0]\n\ + ldr r1, _080909EC @ =REG_BG3CNT\n\ + ldr r2, _080909F0 @ =0x00000f07\n\ + adds r0, r2, 0\n\ + strh r0, [r1]\n\ + subs r1, 0xE\n\ + movs r5, 0xE2\n\ + lsls r5, 5\n\ + adds r0, r5, 0\n\ + strh r0, [r1]\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r4\n\ +_080909E0:\n\ + ldrh r1, [r0, 0x8]\n\ + adds r1, 0x1\n\ + strh r1, [r0, 0x8]\n\ + b _08090A26\n\ + .align 2, 0\n\ +_080909E8: .4byte 0x04000050\n\ +_080909EC: .4byte 0x0400000E\n\ +_080909F0: .4byte 0x00000f07\n\ +_080909F4:\n\ + ldr r0, _08090A30 @ =gPaletteFade\n\ + ldrb r1, [r0, 0x7]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0\n\ + bne _08090A26\n\ + adds r0, r6, 0\n\ + bl NationalPokedexNumToSpecies\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0\n\ + bl PlayCry1\n\ + ldr r1, _08090A34 @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0xC]\n\ + strh r5, [r0, 0x10]\n\ + ldr r1, _08090A38 @ =sub_8090A3C\n\ + str r1, [r0]\n\ +_08090A26:\n\ + add sp, 0x8\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08090A30: .4byte gPaletteFade\n\ +_08090A34: .4byte gTasks\n\ +_08090A38: .4byte sub_8090A3C\n\ + .syntax divided\n"); +} +#endif + +void sub_8090A3C(u8 taskId) +{ + if (gMain.newKeys & 2) + { + BeginNormalPaletteFade(0x0000FFFC, 0, 0, 16, 0); + gSprites[gTasks[taskId].data[3]].callback = sub_8090C28; + gTasks[taskId].func = sub_8090B8C; + return; + } + else if (gMain.newKeys & A_BUTTON) + { + if (gTasks[taskId].data[4] == 0) + { + u16 r4 = gTasks[taskId].data[1]; + + MenuZeroFillWindowRect(2, 13, 27, 19); + MenuPrint(gPokedexEntries[r4].descriptionPage2, 2, 13); + (*(u16 *)(VRAM + 0x7ACA))++; + (*(u16 *)(VRAM + 0x7B0A))++; + gTasks[taskId].data[4] = 1; + PlaySE(SE_PIN); + } + else + { + BeginNormalPaletteFade(0x0000FFFC, 0, 0, 16, 0); + gSprites[gTasks[taskId].data[3]].callback = sub_8090C28; + gTasks[taskId].func = sub_8090B8C; + return; + } + } + gTasks[taskId].data[2]++; + if (gTasks[taskId].data[2] & 0x10) + LoadPalette(gPokedexMenu_Pal + 1, 0x51, 14); + else + LoadPalette(gPokedexMenu2_Pal + 1, 0x51, 14); +} + +void sub_8090B8C(u8 taskId) +{ + if (!gPaletteFade.active) + { + u16 species; + u32 otId; + u32 personality; + u8 paletteNum; + const u16 *palette; + + REG_DISPCNT = 0x1940; + CpuCopy16(gUnknown_08D00524, (void *)(VRAM + 0xC000), 0x1000); + sub_800D74C(); + species = NationalPokedexNumToSpecies(gTasks[taskId].data[1]); + otId = ((u16)gTasks[taskId].data[13] << 16) | (u16)gTasks[taskId].data[12]; + personality = ((u16)gTasks[taskId].data[15] << 16) | (u16)gTasks[taskId].data[14]; + paletteNum = gSprites[gTasks[taskId].data[3]].oam.paletteNum; + palette = species_and_otid_get_pal(species, otId, personality); + LoadCompressedPalette(palette, 0x100 | paletteNum * 16, 32); + DestroyTask(taskId); + } +} + +void sub_8090C28(struct Sprite *sprite) +{ + if (sprite->pos1.x < 0x78) + sprite->pos1.x += 2; + if (sprite->pos1.x > 0x78) + sprite->pos1.x -= 2; + + if (sprite->pos1.y < 0x50) + sprite->pos1.y += 1; + if (sprite->pos1.y > 0x50) + sprite->pos1.y -= 1; +} + +void sub_8090C68(void) +{ + if (gUnknown_0202FFBC->owned) + { + if (gPokedexView->unk64E == 0) + { + MenuZeroFillWindowRect(2, 13, 27, 19); + MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage2, 2, 13); + gPokedexView->unk64E = 1; + (*(u16 *)(VRAM + 0x7ACA))++; + (*(u16 *)(VRAM + 0x7B0A))++; + PlaySE(SE_PIN); + } + else + { + MenuZeroFillWindowRect(2, 13, 27, 19); + MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); + gPokedexView->unk64E = 0; + (*(u16 *)(VRAM + 0x7ACA))--; + (*(u16 *)(VRAM + 0x7B0A))--; + PlaySE(SE_PIN); + } + } +} + +const u8 *GetPokemonCategory(u16 dexNum) +{ + return gPokedexEntries[dexNum].categoryName; +} + +u16 GetPokedexHeightWeight(u16 dexNum, u8 data) +{ + switch (data) + { + case 0: // height + return gPokedexEntries[dexNum].height; + case 1: // weight + return gPokedexEntries[dexNum].weight; + default: + return 1; + } +} + +s8 sub_8090D90(u16 a, u8 b) +{ + u8 index; + u8 bit; + u8 mask; + s8 retVal; + + a--; + index = a / 8; + bit = a % 8; + mask = 1 << bit; + retVal = 0; + switch (b) + { + case 0: + if (gSaveBlock2.pokedex.seen[index] & mask) + { + if ((gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.unk938[index] & mask) + && (gSaveBlock2.pokedex.seen[index] & mask) == (gSaveBlock1.unk3A8C[index] & mask)) + retVal = 1; + else + { + gSaveBlock2.pokedex.seen[index] &= ~mask; + gSaveBlock1.unk938[index] &= ~mask; + gSaveBlock1.unk3A8C[index] &= ~mask; + retVal = 0; + } + } + break; + case 1: + if (gSaveBlock2.pokedex.owned[index] & mask) + { + if ((gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock2.pokedex.seen[index] & mask) + && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.unk938[index] & mask) + && (gSaveBlock2.pokedex.owned[index] & mask) == (gSaveBlock1.unk3A8C[index] & mask)) + retVal = 1; + else + { + gSaveBlock2.pokedex.owned[index] &= ~mask; + gSaveBlock2.pokedex.seen[index] &= ~mask; + gSaveBlock1.unk938[index] &= ~mask; + gSaveBlock1.unk3A8C[index] &= ~mask; + retVal = 0; + } + } + break; + case 2: + gSaveBlock2.pokedex.seen[index] |= mask; + gSaveBlock1.unk938[index] |= mask; + gSaveBlock1.unk3A8C[index] |= mask; + break; + case 3: + gSaveBlock2.pokedex.owned[index] |= mask; + break; + } + return retVal; +} + +u16 GetNationalPokedexCount(u8 a) +{ + u16 count = 0; + u16 i; + + for (i = 0; i < 386; i++) + { + switch (a) + { + case 0: + if (sub_8090D90(i + 1, 0) != 0) + count++; + break; + case 1: + if (sub_8090D90(i + 1, 1) != 0) + count++; + break; + } + } + return count; +} + +u16 GetHoennPokedexCount(u8 a) +{ + u16 count = 0; + u16 i; + + for (i = 0; i < 202; i++) + { + switch (a) + { + case 0: + if (sub_8090D90(HoennToNationalOrder(i + 1), 0) != 0) + count++; + break; + case 1: + if (sub_8090D90(HoennToNationalOrder(i + 1), 1) != 0) + count++; + break; + } + } + return count; +} + +bool8 sub_8090FC0(void) +{ + u16 i; + + for (i = 0; i < 200; i++) + { + if (sub_8090D90(HoennToNationalOrder(i + 1), 1) == 0) + return FALSE; + } + return TRUE; +} + +u16 sub_8090FF4(void) +{ + u16 i; + + for (i = 0; i < 150; i++) + { + if (sub_8090D90(i + 1, 1) == 0) + return 0; + } + for (i = 152; i < 250; i++) + { + if (sub_8090D90(i + 1, 1) == 0) + return 0; + } + for (i = 252; i < 384; i++) + { + if (sub_8090D90(i + 1, 1) == 0) + return 0; + } + return 1; +} + +void sub_8091060(u16 a) +{ + if (!(a & 0x100)) + { + REG_DISPCNT &= 0xFEFF; + REG_BG0CNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + } + if (!(a & 0x200)) + { + REG_DISPCNT &= 0xFDFF; + REG_BG1CNT = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + } + if (!(a & 0x400)) + { + REG_DISPCNT &= 0xFBFF; + REG_BG2CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + } + if (!(a & 0x800)) + { + REG_DISPCNT &= 0xF7FF; + REG_BG3CNT = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + } + if (!(a & 0x1000)) + { + REG_DISPCNT &= 0xEFFF; + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + } +} + +void sub_8091154(u16 order, u8 b, u8 c) +{ + u8 str[4]; + + str[0] = 0xA1 + order / 100; + str[1] = 0xA1 + (order % 100) / 10; + str[2] = 0xA1 + (order % 100) % 10; + str[3] = EOS; + MenuPrint(str, b, c); +} + +u8 sub_80911C8(u16 num, u8 b, u8 c) +{ + u8 str[11]; + u8 i; + + for (i = 0; i < 11; i++) + str[i] = EOS; + num = NationalPokedexNumToSpecies(num); + switch (num) + { + default: + for (i = 0; gSpeciesNames[num][i] != EOS && i < 10; i++) + str[i] = gSpeciesNames[num][i]; + break; + case 0: + for (i = 0; i < 10; i++) + str[i] = 0xAE; + break; + } + MenuPrint(str, b, c); + return i; +} + +u8 sub_8091260(u16 num, u8 b, u8 c, u8 d) +{ + u8 str[40]; // Not exactly sure how long this needs to be + u8 *end; + u8 i; + + end = StringCopy(str, gUnknown_083B5558); + str[2] = d; + num = NationalPokedexNumToSpecies(num); + switch (num) + { + default: + for (i = 0; gSpeciesNames[num][i] != EOS && i < 10; i++) + end[i] = gSpeciesNames[num][i]; + break; + case 0: + for (i = 0; i < 10; i++) + end[i] = 0xAE; + break; + } + end[i] = EOS; + MenuPrint(str, b, c); + return i; +} + +void sub_8091304(u8 *name, u8 b, u8 c) +{ + u8 str[32]; // Not exactly sure how long this needs to be + u8 i; + u8 j; + + for (i = 0; name[i] != EOS && i < 11; i++) + str[i] = name[i]; + for (j = 0; gDexText_UnknownPoke[j] == 0xAC || gDexText_UnknownPoke[j] == 0; j++) + ; + j--; + while (gDexText_UnknownPoke[j] != EOS) + str[i++] = gDexText_UnknownPoke[j++]; + str[i] = EOS; + sub_8072B80(str, b, c, (u8 *)gDexText_UnknownPoke); +} diff --git a/src/starter_choose.c b/src/starter_choose.c index 32b6adf36..0ed8315fc 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -483,7 +483,7 @@ static void AddTextColorCtrlCode(u8 *string, u8 bgColor, u8 textColor, u8 shadow static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) { u8 labelText[72]; - u8 *category; + const u8 *category; u8 srcIndex; u8 dstIndex; u16 species; -- cgit v1.2.3 From ffa2474021a3f72496028a679a67d49e9fd2baef Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 12 Jun 2017 14:40:30 -0500 Subject: sub_8072B80 const --- src/menu.c | 2 +- src/pokedex.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/menu.c b/src/menu.c index 61eaebb6f..db1724855 100644 --- a/src/menu.c +++ b/src/menu.c @@ -629,7 +629,7 @@ void MenuPrint_RightAligned(u8 *str, u8 left, u8 top) sub_8004D38(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } -void sub_8072B80(u8 *a1, u8 a2, u8 a3, u8 *a4) +void sub_8072B80(const u8 *a1, u8 a2, u8 a3, const u8 *a4) { u8 buffer[64]; u8 width = GetStringWidth(gMenuWindowPtr, a4); diff --git a/src/pokedex.c b/src/pokedex.c index ec13edac4..832a55666 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -3771,5 +3771,5 @@ void sub_8091304(u8 *name, u8 b, u8 c) while (gDexText_UnknownPoke[j] != EOS) str[i++] = gDexText_UnknownPoke[j++]; str[i] = EOS; - sub_8072B80(str, b, c, (u8 *)gDexText_UnknownPoke); + sub_8072B80(str, b, c, gDexText_UnknownPoke); } -- cgit v1.2.3 From 00fa1e2efdd2b140451472e5fa09e401f2698cba Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 12 Jun 2017 15:55:22 -0500 Subject: decompile unref_sub_80913A4 (English) --- src/pokedex.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 56 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index 832a55666..d2008128c 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -2998,7 +2998,7 @@ void sub_8090750(u8 taskId) u8 spriteId; u16 dexNum = gTasks[taskId].data[1]; u16 i; - + switch (gTasks[taskId].data[0]) { case 0: @@ -3421,7 +3421,7 @@ void sub_8090A3C(u8 taskId) if (gTasks[taskId].data[4] == 0) { u16 r4 = gTasks[taskId].data[1]; - + MenuZeroFillWindowRect(2, 13, 27, 19); MenuPrint(gPokedexEntries[r4].descriptionPage2, 2, 13); (*(u16 *)(VRAM + 0x7ACA))++; @@ -3453,7 +3453,7 @@ void sub_8090B8C(u8 taskId) u32 personality; u8 paletteNum; const u16 *palette; - + REG_DISPCNT = 0x1940; CpuCopy16(gUnknown_08D00524, (void *)(VRAM + 0xC000), 0x1000); sub_800D74C(); @@ -3473,7 +3473,7 @@ void sub_8090C28(struct Sprite *sprite) sprite->pos1.x += 2; if (sprite->pos1.x > 0x78) sprite->pos1.x -= 2; - + if (sprite->pos1.y < 0x50) sprite->pos1.y += 1; if (sprite->pos1.y > 0x50) @@ -3529,7 +3529,7 @@ s8 sub_8090D90(u16 a, u8 b) u8 bit; u8 mask; s8 retVal; - + a--; index = a / 8; bit = a % 8; @@ -3585,7 +3585,7 @@ u16 GetNationalPokedexCount(u8 a) { u16 count = 0; u16 i; - + for (i = 0; i < 386; i++) { switch (a) @@ -3607,7 +3607,7 @@ u16 GetHoennPokedexCount(u8 a) { u16 count = 0; u16 i; - + for (i = 0; i < 202; i++) { switch (a) @@ -3628,7 +3628,7 @@ u16 GetHoennPokedexCount(u8 a) bool8 sub_8090FC0(void) { u16 i; - + for (i = 0; i < 200; i++) { if (sub_8090D90(HoennToNationalOrder(i + 1), 1) == 0) @@ -3640,7 +3640,7 @@ bool8 sub_8090FC0(void) u16 sub_8090FF4(void) { u16 i; - + for (i = 0; i < 150; i++) { if (sub_8090D90(i + 1, 1) == 0) @@ -3701,7 +3701,7 @@ void sub_8091060(u16 a) void sub_8091154(u16 order, u8 b, u8 c) { u8 str[4]; - + str[0] = 0xA1 + order / 100; str[1] = 0xA1 + (order % 100) / 10; str[2] = 0xA1 + (order % 100) % 10; @@ -3713,7 +3713,7 @@ u8 sub_80911C8(u16 num, u8 b, u8 c) { u8 str[11]; u8 i; - + for (i = 0; i < 11; i++) str[i] = EOS; num = NationalPokedexNumToSpecies(num); @@ -3737,7 +3737,7 @@ u8 sub_8091260(u16 num, u8 b, u8 c, u8 d) u8 str[40]; // Not exactly sure how long this needs to be u8 *end; u8 i; - + end = StringCopy(str, gUnknown_083B5558); str[2] = d; num = NationalPokedexNumToSpecies(num); @@ -3757,19 +3757,60 @@ u8 sub_8091260(u16 num, u8 b, u8 c, u8 d) return i; } -void sub_8091304(u8 *name, u8 b, u8 c) +void sub_8091304(u8 *name, u8 left, u8 top) { u8 str[32]; // Not exactly sure how long this needs to be u8 i; +#if ENGLISH u8 j; - +#endif + for (i = 0; name[i] != EOS && i < 11; i++) str[i] = name[i]; +#if ENGLISH for (j = 0; gDexText_UnknownPoke[j] == 0xAC || gDexText_UnknownPoke[j] == 0; j++) ; j--; while (gDexText_UnknownPoke[j] != EOS) str[i++] = gDexText_UnknownPoke[j++]; +#endif str[i] = EOS; - sub_8072B80(str, b, c, gDexText_UnknownPoke); + sub_8072B80(str, left, top, gDexText_UnknownPoke); +} + +void unref_sub_80913A4(u16 a, u8 left, u8 top) +{ + u8 str[6]; + bool8 outputted = FALSE; + u8 result; + + result = a / 0x3E8; + if (result == 0) + { + str[0] = CHAR_SPACE; + outputted = FALSE; + } + else + { + str[0] = CHAR_0 + result; + outputted = TRUE; + } + + result = (a % 0x3E8) / 100; + if (result == 0 && !outputted) + { + str[1] = CHAR_SPACE; + outputted = FALSE; + } + else + { + str[1] = CHAR_0 + result; + outputted = TRUE; + } + + str[2] = CHAR_0 + ((a % 0x3E8) % 100) / 10; + str[3] = CHAR_PERIOD; + str[4] = CHAR_0 + ((a % 0x3E8) % 100) % 10; + str[5] = EOS; + MenuPrint(str, left, top); } -- cgit v1.2.3 From 0f056ab82cad461c418f7a3c6600a374c6c27184 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 12 Jun 2017 15:58:41 -0500 Subject: 0x3E8 -> 1000 --- src/pokedex.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index d2008128c..538e98ff0 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -3784,7 +3784,7 @@ void unref_sub_80913A4(u16 a, u8 left, u8 top) bool8 outputted = FALSE; u8 result; - result = a / 0x3E8; + result = a / 1000; if (result == 0) { str[0] = CHAR_SPACE; @@ -3796,7 +3796,7 @@ void unref_sub_80913A4(u16 a, u8 left, u8 top) outputted = TRUE; } - result = (a % 0x3E8) / 100; + result = (a % 1000) / 100; if (result == 0 && !outputted) { str[1] = CHAR_SPACE; @@ -3808,9 +3808,9 @@ void unref_sub_80913A4(u16 a, u8 left, u8 top) outputted = TRUE; } - str[2] = CHAR_0 + ((a % 0x3E8) % 100) / 10; + str[2] = CHAR_0 + ((a % 1000) % 100) / 10; str[3] = CHAR_PERIOD; - str[4] = CHAR_0 + ((a % 0x3E8) % 100) % 10; + str[4] = CHAR_0 + ((a % 1000) % 100) % 10; str[5] = EOS; MenuPrint(str, left, top); } -- cgit v1.2.3 From af6fd50247ac3a41bc64074f5350f2939e034e20 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 12 Jun 2017 19:16:02 -0500 Subject: decompile sub_8091738 --- src/pokedex.c | 149 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index 538e98ff0..91ae27a3b 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -93,6 +93,7 @@ extern u8 gUnknown_03005E98; extern u8 gUnknown_083B4EC4[]; extern u8 gUnknown_08E96ACC[]; extern u8 gUnknown_08E96B58[]; +extern const u8 *const gMonFootprintTable[]; extern struct PokedexEntry gPokedexEntries[]; @@ -3814,3 +3815,151 @@ void unref_sub_80913A4(u16 a, u8 left, u8 top) str[5] = EOS; MenuPrint(str, left, top); } + +#ifdef UNITS_IMPERIAL +#define CHAR_PRIME (0xB4) +#define CHAR_DOUBLE_PRIME (0xB2) +void sub_8091458(u16 height, u8 left, u8 top) +{ + u8 buffer[16]; + u32 inches, feet; + u8 i = 0; + + inches = (height * 10000) / 254; + if (inches % 10 >= 5) + inches += 10; + feet = inches / 120; + inches = (inches - (feet * 120)) / 10; + + buffer[i++] = EXT_CTRL_CODE_BEGIN; + buffer[i++] = 0x13; + if (feet / 10 == 0) + { + buffer[i++] = 18; + buffer[i++] = feet + CHAR_0; + } + else + { + buffer[i++] = 12; + buffer[i++] = feet / 10 + CHAR_0; + buffer[i++] = (feet % 10) + CHAR_0; + } + buffer[i++] = CHAR_PRIME; + buffer[i++] = (inches / 10) + CHAR_0; + buffer[i++] = (inches % 10) + CHAR_0; + buffer[i++] = CHAR_DOUBLE_PRIME; + buffer[i++] = EOS; + MenuPrint(buffer, left, top); +} +#else +void sub_8091458(u16 height, u8 left, u8 top) +{ + unref_sub_80913A4(height, left, top); +} +#endif + +#ifdef UNITS_IMPERIAL +#define CHAR_b (0xD6) +#define CHAR_l (0xE0) +#define CHAR_s (0xE7) +void sub_8091564(u16 weight, u8 left, u8 top) +{ + u8 buffer[16]; + u32 lbs; + u8 i = 0; + bool8 output; + + lbs = (weight * 100000) / 4536; + if (lbs % 10 >= 5) + lbs += 10; + output = FALSE; + + buffer[i] = (lbs / 100000) + CHAR_0; + if (buffer[i] == CHAR_0 && output == FALSE) + { + buffer[i++] = CHAR_SPACE; + buffer[i++] = CHAR_SPACE; + } + else + { + output = TRUE; + i++; + } + + lbs = (lbs % 100000); + buffer[i] = (lbs / 10000) + CHAR_0; + if (buffer[i] == CHAR_0 && output == FALSE) + { + buffer[i++] = CHAR_SPACE; + buffer[i++] = CHAR_SPACE; + } + else + { + output = TRUE; + i++; + } + + lbs = (lbs % 10000); + buffer[i] = (lbs / 1000) + CHAR_0; + if (buffer[i] == CHAR_0 && output == FALSE) + { + buffer[i++] = CHAR_SPACE; + buffer[i++] = CHAR_SPACE; + } + else + { + output = TRUE; + i++; + } + lbs = (lbs % 1000); + buffer[i++] = (lbs / 100) + CHAR_0; + lbs = (lbs % 100); + buffer[i++] = CHAR_PERIOD; + buffer[i++] = (lbs / 10) + CHAR_0; + buffer[i++] = CHAR_SPACE; + buffer[i++] = CHAR_l; + buffer[i++] = CHAR_b; + buffer[i++] = CHAR_s; + buffer[i++] = CHAR_PERIOD; + buffer[i++] = EOS; + MenuPrint(buffer, left, top); +} +#else +void sub_8091564(u16 arg0, u8 left, u8 top) +{ + unref_sub_80913A4(arg0, left, top); +} +#endif + +void sub_8091738(u16 a, u16 b, u16 c) +{ + u8 arr[0x80]; + u16 i; + u16 j; + const u8 *r12; + u16 r7; + u8 r3; + + r12 = gMonFootprintTable[NationalPokedexNumToSpecies(a)]; + for (r7 = 0, i = 0; i < 32; i++) + { + r3 = r12[i]; + for (j = 0; j < 4; j++) + { + u32 r1 = j * 2; + s32 r2 = (r3 >> r1) & 1; + + if (r3 & (2 << r1)) + r2 |= 0x10; + +// Needed to match +#ifndef NONMATCHING + asm("");asm("");asm("");asm("");asm(""); +#endif + + arr[r7] = r2; + r7++; + } + } + CpuCopy16(arr, (u16 *)(VRAM + b * 0x4000 + c * 0x20), 0x80); +} -- cgit v1.2.3 From bd0191d8ca99501214253b2f5165e70a9128a01c Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 12 Jun 2017 22:46:33 -0500 Subject: decompile sub_80917CC - sub_8091A4C --- src/pokedex.c | 156 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 138 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index 91ae27a3b..4cd52b2e5 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -12,6 +12,7 @@ #include "rng.h" #include "songs.h" #include "sound.h" +#include "species.h" #include "string_util.h" #include "strings.h" #include "task.h" @@ -57,45 +58,50 @@ struct PokedexEntry extern struct MusicPlayerInfo gMPlay_BGM; extern u8 gReservedSpritePaletteCount; extern struct PokedexView *gPokedexView; +extern struct SpriteTemplate gUnknown_02024E8C; extern u16 gUnknown_0202FFB8; extern u8 gUnknown_0202FFBA; extern struct PokedexListItem *gUnknown_0202FFBC; extern u8 gUnknown_03005CE8; extern IntrCallback gUnknown_03005CEC; +extern u8 gUnknown_03005E98; extern u8 gPokedexMenu_Gfx[]; extern u8 gUnknown_08E96738[]; extern u8 gUnknown_08E9C6DC[]; extern u8 gUnknown_08E96888[]; extern u8 gUnknown_08E96994[]; -extern struct SpriteSheet gUnknown_083A05CC; -extern struct SpritePalette gUnknown_083A05DC[]; extern u8 gUnknown_0839FA7C[]; extern u8 gUnknown_0839F67C[]; extern u16 gPokedexMenu_Pal[]; extern u16 gPokedexMenu2_Pal[]; extern u8 gUnknown_0839F73C[]; -extern u8 gUnknown_083A05EC[]; -extern u8 gUnknown_083A05F1[]; -extern struct SpriteTemplate gSpriteTemplate_83A053C; +extern u8 gUnknown_0839F8A0[]; +extern u8 gUnknown_0839F988[]; extern struct SpriteTemplate gSpriteTemplate_83A0524; +extern struct SpriteTemplate gSpriteTemplate_83A053C; extern struct SpriteTemplate gSpriteTemplate_83A0554; extern struct SpriteTemplate gSpriteTemplate_83A056C; extern struct SpriteTemplate gSpriteTemplate_83A0584; extern struct SpriteTemplate gSpriteTemplate_83A059C; extern struct SpriteTemplate gSpriteTemplate_83A05B4; +extern struct SpriteSheet gUnknown_083A05CC; +extern struct SpritePalette gUnknown_083A05DC[]; +extern u8 gUnknown_083A05EC[]; +extern u8 gUnknown_083A05F1[]; +extern u8 gUnknown_083A05F8[]; +extern u8 gUnknown_083B4EC4[]; extern u8 gUnknown_083B5558[]; +extern void *const gUnknown_083B5584[]; extern u8 gUnknown_08D00524[]; extern u8 gUnknown_08E96BD4[]; -extern u8 gUnknown_083A05F8[]; -extern u8 gUnknown_0839F8A0[]; -extern u8 gUnknown_0839F988[]; -extern u8 gUnknown_03005E98; -extern u8 gUnknown_083B4EC4[]; +extern const struct SpriteTemplate gUnknown_083B57A4; +extern struct SpriteFrameImage *const gUnknown_083B5794[]; extern u8 gUnknown_08E96ACC[]; extern u8 gUnknown_08E96B58[]; extern const u8 *const gMonFootprintTable[]; - -extern struct PokedexEntry gPokedexEntries[]; +extern const struct SpriteSheet gTrainerFrontPicTable[]; +extern const struct MonCoords gTrainerFrontPicCoords[]; +extern const struct PokedexEntry gPokedexEntries[]; extern void sub_800D74C(); extern const u16 *species_and_otid_get_pal(u16, u32, u32); @@ -2153,7 +2159,6 @@ void Task_InitPageScreenMultistep(u8 taskId) sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->dexNum), 0xD, 3); else sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3); - //_0808F45A sub_80911C8(gUnknown_0202FFBC->dexNum, 0x10, 3); MenuPrint(gDexText_UnknownPoke, 11, 5); MenuPrint(gDexText_UnknownHeight, 16, 7); @@ -2166,7 +2171,6 @@ void Task_InitPageScreenMultistep(u8 taskId) MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); sub_80917CC(14, 0x3FC); } - //_0808F50C else { MenuPrint(gUnknown_083A05F8, 2, 13); @@ -2177,7 +2181,6 @@ void Task_InitPageScreenMultistep(u8 taskId) case 5: if (gTasks[taskId].data[1] == 0) { - //_0808F540 gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0); gSprites[gTasks[taskId].data[4]].oam.priority = 0; } @@ -2190,9 +2193,7 @@ void Task_InitPageScreenMultistep(u8 taskId) if (gTasks[taskId].data[2] != 0) r3 = 0x14; if (gTasks[taskId].data[1] != 0) - { r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 0x10)); - } BeginNormalPaletteFade(~r3, 0, 0x10, 0, 0); SetVBlankCallback(gUnknown_03005CEC); gMain.state++; @@ -3758,7 +3759,7 @@ u8 sub_8091260(u16 num, u8 b, u8 c, u8 d) return i; } -void sub_8091304(u8 *name, u8 left, u8 top) +void sub_8091304(const u8 *name, u8 left, u8 top) { u8 str[32]; // Not exactly sure how long this needs to be u8 i; @@ -3963,3 +3964,122 @@ void sub_8091738(u16 a, u16 b, u16 c) } CpuCopy16(arr, (u16 *)(VRAM + b * 0x4000 + c * 0x20), 0x80); } + +void sub_80917CC(u16 a, u16 b) +{ + *(u16 *)(VRAM + a * 0x800 + 0x232) = 0xF000 + b + 0; + *(u16 *)(VRAM + a * 0x800 + 0x234) = 0xF000 + b + 1; + *(u16 *)(VRAM + a * 0x800 + 0x272) = 0xF000 + b + 2; + *(u16 *)(VRAM + a * 0x800 + 0x274) = 0xF000 + b + 3; +} + +u16 sub_8091818(u8 a, u16 b, u16 c, u16 d) +{ + switch (a) + { + case 1: + if (b > c) + b--; + break; + case 0: + if (b < d) + b++; + break; + case 3: + if (b > c) + b--; + else + b = d; + break; + case 2: + if (b < d) + b++; + else + b = c; + break; + } + return b; +} + +void nullsub_59(void) +{ +} + +void sub_8091878(u16 a, u8 b) +{ + gUnknown_02024E8C = gUnknown_083B57A4; + gUnknown_02024E8C.paletteTag = a; + gUnknown_02024E8C.images = gUnknown_083B5794[b]; + gUnknown_02024E8C.anims = gSpriteAnimTable_81E7C64; +} + +void sub_80918B0(u16 a, u8 b) +{ + gUnknown_02024E8C = gUnknown_083B57A4; + gUnknown_02024E8C.paletteTag = a; + gUnknown_02024E8C.images = gUnknown_083B5794[b]; + gUnknown_02024E8C.anims = gUnknown_081EC2A4[0]; +} + +u16 sub_80918EC(u16 num, s16 b, s16 c, u16 d) +{ + u8 spriteId; + + num = NationalPokedexNumToSpecies(num); + switch (num) + { + default: + DecompressPicFromTable_2( + &gMonFrontPicTable[num], + gMonFrontPicCoords[num].coords, + gMonFrontPicCoords[num].y_offset, + (void *)0x02000000, + gUnknown_083B5584[d], + num); + break; + case 0x134: + LoadSpecialPokePic( + &gMonFrontPicTable[num], + gMonFrontPicCoords[num].coords, + gMonFrontPicCoords[num].y_offset, + 0x02000000, + gUnknown_083B5584[d], + num, + gSaveBlock2.pokedex.spindaPersonality, + 1); + break; + case SPECIES_UNOWN: + LoadSpecialPokePic( + &gMonFrontPicTable[num], + gMonFrontPicCoords[num].coords, + gMonFrontPicCoords[num].y_offset, + 0x02000000, + gUnknown_083B5584[d], + num, + gSaveBlock2.pokedex.unownPersonality, + 1); + break; + } + LoadCompressedPalette(gMonPaletteTable[num].data, 0x100 + d * 16, 32); + sub_8091878(d, d); + spriteId = CreateSprite(&gUnknown_02024E8C, b, c, 0); + gSprites[spriteId].oam.paletteNum = d; + return spriteId; +} + +u8 sub_8091A4C(u16 gender, u16 b, u16 c, u16 d) +{ + u8 spriteId; + + DecompressPicFromTable_2( + &gTrainerFrontPicTable[gender], + gTrainerFrontPicCoords[gender].coords, + gTrainerFrontPicCoords[gender].y_offset, + (void *)0x02000000, + gUnknown_083B5584[0], + gender); + sub_80918B0(gender, 0); + spriteId = CreateSprite(&gUnknown_02024E8C, b, c, 0); + gSprites[spriteId].oam.paletteNum = d; + return spriteId; +} -- cgit v1.2.3 From a6275b4d7fe2f2d115a6336dc8cbc668008456ab Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Mon, 12 Jun 2017 22:49:08 -0500 Subject: whitespace --- src/pokedex.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index 4cd52b2e5..3f1bcf14f 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -4024,7 +4024,7 @@ void sub_80918B0(u16 a, u8 b) u16 sub_80918EC(u16 num, s16 b, s16 c, u16 d) { u8 spriteId; - + num = NationalPokedexNumToSpecies(num); switch (num) { @@ -4070,7 +4070,7 @@ u16 sub_80918EC(u16 num, s16 b, s16 c, u16 d) u8 sub_8091A4C(u16 gender, u16 b, u16 c, u16 d) { u8 spriteId; - + DecompressPicFromTable_2( &gTrainerFrontPicTable[gender], gTrainerFrontPicCoords[gender].coords, -- cgit v1.2.3 From 828237e9b46d41860c5d06e8c0cd02296596e179 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 13 Jun 2017 00:30:24 -0500 Subject: decompile sub_8091AF8 --- src/pokedex.c | 128 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- src/pokemon_3.c | 2 +- 2 files changed, 124 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index 3f1bcf14f..bf383275b 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -67,13 +67,11 @@ extern IntrCallback gUnknown_03005CEC; extern u8 gUnknown_03005E98; extern u8 gPokedexMenu_Gfx[]; extern u8 gUnknown_08E96738[]; -extern u8 gUnknown_08E9C6DC[]; extern u8 gUnknown_08E96888[]; extern u8 gUnknown_08E96994[]; +extern u8 gUnknown_08E9C6DC[]; extern u8 gUnknown_0839FA7C[]; extern u8 gUnknown_0839F67C[]; -extern u16 gPokedexMenu_Pal[]; -extern u16 gPokedexMenu2_Pal[]; extern u8 gUnknown_0839F73C[]; extern u8 gUnknown_0839F8A0[]; extern u8 gUnknown_0839F988[]; @@ -92,16 +90,20 @@ extern u8 gUnknown_083A05F8[]; extern u8 gUnknown_083B4EC4[]; extern u8 gUnknown_083B5558[]; extern void *const gUnknown_083B5584[]; +extern struct SpriteFrameImage *const gUnknown_083B5794[]; +extern const struct SpriteTemplate gUnknown_083B57A4; +extern const u8 gUnknown_083B57BC[][4]; extern u8 gUnknown_08D00524[]; extern u8 gUnknown_08E96BD4[]; -extern const struct SpriteTemplate gUnknown_083B57A4; -extern struct SpriteFrameImage *const gUnknown_083B5794[]; extern u8 gUnknown_08E96ACC[]; extern u8 gUnknown_08E96B58[]; +extern u16 gPokedexMenu_Pal[]; +extern u16 gPokedexMenu2_Pal[]; extern const u8 *const gMonFootprintTable[]; extern const struct SpriteSheet gTrainerFrontPicTable[]; extern const struct MonCoords gTrainerFrontPicCoords[]; extern const struct PokedexEntry gPokedexEntries[]; +extern const struct BaseStats gBaseStats[]; extern void sub_800D74C(); extern const u16 *species_and_otid_get_pal(u16, u32, u32); @@ -4083,3 +4085,119 @@ u8 sub_8091A4C(u16 gender, u16 b, u16 c, u16 d) gSprites[spriteId].oam.paletteNum = d; return spriteId; } + +int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) +{ + u16 species; + u16 i; + u16 resultsCount; + u8 types[2]; + + SortPokedex(a, b); + + for (i = 0, resultsCount = 0; i < 386; i++) + { + if (gPokedexView->unk0[i].seen) + { + gPokedexView->unk0[resultsCount] = gPokedexView->unk0[i]; + resultsCount++; + } + } + gPokedexView->unk60C = resultsCount; + + // Search by name + if (abcGroup != 0xFF) + { + for (i = 0, resultsCount = 0; i < gPokedexView->unk60C; i++) + { + u8 r3; + + species = NationalPokedexNumToSpecies(gPokedexView->unk0[i].dexNum); + r3 = gSpeciesNames[species][0]; + if ((r3 >= gUnknown_083B57BC[abcGroup][0] && r3 < gUnknown_083B57BC[abcGroup][0] + gUnknown_083B57BC[abcGroup][1]) + || (r3 >= gUnknown_083B57BC[abcGroup][2] && r3 < gUnknown_083B57BC[abcGroup][2] + gUnknown_083B57BC[abcGroup][3])) + { + gPokedexView->unk0[resultsCount] = gPokedexView->unk0[i]; + resultsCount++; + } + } + gPokedexView->unk60C = resultsCount; + } + + // Search by body color + if (bodyColor != 0xFF) + { + for (i = 0, resultsCount = 0; i < gPokedexView->unk60C; i++) + { + species = NationalPokedexNumToSpecies(gPokedexView->unk0[i].dexNum); + + if (bodyColor == gBaseStats[species].bodyColor) + { + gPokedexView->unk0[resultsCount] = gPokedexView->unk0[i]; + resultsCount++; + } + } + gPokedexView->unk60C = resultsCount; + } + + // Search by type + if (type1 != 0xFF || type2 != 0xFF) + { + if (type1 == 0xFF) + { + type1 = type2; + type2 = 0xFF; + } + + if (type2 == 0xFF) + { + for (i = 0, resultsCount = 0; i < gPokedexView->unk60C; i++) + { + if (gPokedexView->unk0[i].owned) + { + species = NationalPokedexNumToSpecies(gPokedexView->unk0[i].dexNum); + + types[0] = gBaseStats[species].type1; + types[1] = gBaseStats[species].type2; + if (types[0] == type1 || types[1] == type1) + { + gPokedexView->unk0[resultsCount] = gPokedexView->unk0[i]; + resultsCount++; + } + } + } + } + else + { + for (i = 0, resultsCount = 0; i < gPokedexView->unk60C; i++) + { + if (gPokedexView->unk0[i].owned) + { + species = NationalPokedexNumToSpecies(gPokedexView->unk0[i].dexNum); + + types[0] = gBaseStats[species].type1; + types[1] = gBaseStats[species].type2; + if ((types[0] == type1 && types[1] == type2) || (types[0] == type2 && types[1] == type1)) + { + gPokedexView->unk0[resultsCount] = gPokedexView->unk0[i]; + resultsCount++; + } + } + } + } + gPokedexView->unk60C = resultsCount; + } + + if (gPokedexView->unk60C != 0) + { + for (i = gPokedexView->unk60C; i < 386; i++) + { + gPokedexView->unk0[i].dexNum = 0xFFFF; + gPokedexView->unk0[i].seen = FALSE; + gPokedexView->unk0[i].owned = FALSE; + + } + } + + return resultsCount; +} diff --git a/src/pokemon_3.c b/src/pokemon_3.c index f9eb3a7e9..f4eac79a7 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1255,7 +1255,7 @@ bool8 IsHMMove2(u16 move) bool8 sub_8040A3C(u16 species) { - return gBaseStats[species].bodyColor >> 7; // XXX: should this be a bitfield instead? + return gBaseStats[species].unk19_7; } s8 sub_8040A54(struct Pokemon *mon, u8 a2) -- cgit v1.2.3 From 83f63ae5f641adb4186c0df21a71f92d1dbbfd5e Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 13 Jun 2017 01:01:44 -0500 Subject: decompile sub_8091E20 - sub_809204C --- src/pokedex.c | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index bf383275b..518982099 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -104,6 +104,9 @@ extern const struct SpriteSheet gTrainerFrontPicTable[]; extern const struct MonCoords gTrainerFrontPicCoords[]; extern const struct PokedexEntry gPokedexEntries[]; extern const struct BaseStats gBaseStats[]; +extern const u8 gPokedexMenuSearch_Gfx[]; +extern const u8 gUnknown_08E96D2C[]; +extern const u16 gPokedexMenuSearch_Pal[]; extern void sub_800D74C(); extern const u16 *species_and_otid_get_pal(u16, u32, u32); @@ -122,6 +125,14 @@ extern u16 gPokedexOrder_Height[]; void sub_8090B8C(u8); void sub_8090C28(struct Sprite *); u16 NationalPokedexNumToSpecies(u16); +void sub_8091E54(u8); +void sub_809204C(u8); +void sub_809207C(u8); + +void sub_8092AB0(u8); +void sub_8092B68(); +void sub_8092EB0(); +void sub_809308C(); // asm/pokedex_area_screen void ShowPokedexAreaScreen(u16 species, u8 *string); @@ -4201,3 +4212,80 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) return resultsCount; } + +void sub_8091E20(u8 *str) +{ + sub_8072AB0(str, 9, 120, 208, 32, 1); +} + +u8 sub_8091E3C(void) +{ + return CreateTask(sub_8091E54, 0); +} + +void sub_8091E54(u8 taskId) +{ + u16 i; + + switch (gMain.state) + { + default: + case 0: + if (!gPaletteFade.active) + { + gPokedexView->unk64A = 2; + sub_8091060(0); + LZ77UnCompVram(gPokedexMenuSearch_Gfx, (void *)VRAM); + LZ77UnCompVram(gUnknown_08E96D2C, (void *)(VRAM + 0x7800)); + LoadPalette(gPokedexMenuSearch_Pal + 1, 1, 0x7E); + if (!IsNationalPokedexEnabled()) + { + for (i = 0; i < 17; i++) + { + ((u16 *)(VRAM + 0x7A80))[i] = ((u16 *)(VRAM + 0x7B00))[i]; + ((u16 *)(VRAM + 0x7AC0))[i] = ((u16 *)(VRAM + 0x7B40))[i]; + ((u16 *)(VRAM + 0x7B00))[i] = 1; + ((u16 *)(VRAM + 0x7B40))[i] = 1; + } + } + gMain.state = 1; + } + break; + case 1: + SetUpWindowConfig(&gWindowConfig_81E7064); + InitMenuWindow(&gWindowConfig_81E7064); + LoadCompressedObjectPic(&gUnknown_083A05CC); + LoadSpritePalettes(gUnknown_083A05DC); + sub_809308C(taskId); + for (i = 0; i < 16; i++) + gTasks[taskId].data[i] = 0; + sub_8092EB0(taskId); + sub_8092AB0(0); + sub_8092B68(taskId); + gMain.state++; + break; + case 2: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + gMain.state++; + break; + case 3: + REG_BG3CNT = 0x0F03; + REG_DISPCNT = 0x1C40; + gMain.state++; + break; + case 4: + if (!gPaletteFade.active) + { + gTasks[taskId].func = sub_809204C; + gMain.state = 0; + } + break; + } +} + +void sub_809204C(u8 taskId) +{ + sub_8092AB0(gTasks[taskId].data[0]); + sub_8092B68(taskId); + gTasks[taskId].func = sub_809207C; +} -- cgit v1.2.3 From 24165f2bb71c063d05f974acc355536e7393468e Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 13 Jun 2017 19:08:14 -0500 Subject: decompile sub_809207C - sub_80924A4 --- src/menu.c | 2 +- src/pokedex.c | 183 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 182 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/menu.c b/src/menu.c index db1724855..2932750d8 100644 --- a/src/menu.c +++ b/src/menu.c @@ -611,7 +611,7 @@ u8 unref_sub_8072A5C(u8 *dest, u8 *src, u8 left, u16 top, u8 width, u32 a6) return sub_8004FD0(gMenuWindowPtr, dest, src, gMenuTextTileOffset, left, top, width, a6); } -int sub_8072AB0(u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) +int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) { u8 newlineCount = sub_8004FD0(gMenuWindowPtr, NULL, str, gMenuTextTileOffset, left, top, width, a6); diff --git a/src/pokedex.c b/src/pokedex.c index 518982099..5738db841 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -93,6 +93,10 @@ extern void *const gUnknown_083B5584[]; extern struct SpriteFrameImage *const gUnknown_083B5794[]; extern const struct SpriteTemplate gUnknown_083B57A4; extern const u8 gUnknown_083B57BC[][4]; +extern const u8 gUnknown_083B5850[][4]; +extern const u8 gUnknown_083B586C[][4]; +extern const u8 gUnknown_083B5888[][4]; +extern const u8 gUnknown_083B58A4[][4]; extern u8 gUnknown_08D00524[]; extern u8 gUnknown_08E96BD4[]; extern u8 gUnknown_08E96ACC[]; @@ -128,9 +132,17 @@ u16 NationalPokedexNumToSpecies(u16); void sub_8091E54(u8); void sub_809204C(u8); void sub_809207C(u8); - +void sub_809217C(u8); +void sub_80921B0(u8); +void sub_80923FC(u8); +void sub_80924A4(u8); +void sub_8092508(u8); +void sub_80925CC(u8); +void sub_80927B8(u8); void sub_8092AB0(u8); +void sub_8092AD4(u8, u8); void sub_8092B68(); +u8 sub_8092E10(); void sub_8092EB0(); void sub_809308C(); @@ -4213,7 +4225,7 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) return resultsCount; } -void sub_8091E20(u8 *str) +void sub_8091E20(const u8 *str) { sub_8072AB0(str, 9, 120, 208, 32, 1); } @@ -4289,3 +4301,170 @@ void sub_809204C(u8 taskId) sub_8092B68(taskId); gTasks[taskId].func = sub_809207C; } + +void sub_809207C(u8 taskId) +{ + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_PC_OFF); + gTasks[taskId].func = sub_80927B8; + return; + } + if (gMain.newKeys & A_BUTTON) + { + switch (gTasks[taskId].data[0]) + { + case 0: + PlaySE(SE_PIN); + gTasks[taskId].data[1] = 0; + gTasks[taskId].func = sub_809217C; + break; + case 1: + PlaySE(SE_PIN); + gTasks[taskId].data[1] = 4; + gTasks[taskId].func = sub_809217C; + break; + case 2: + PlaySE(SE_PC_OFF); + gTasks[taskId].func = sub_80927B8; + break; + } + return; + } + if ((gMain.newKeys & 0x20) && gTasks[taskId].data[0] > 0) + { + PlaySE(SE_Z_PAGE); + gTasks[taskId].data[0]--; + sub_8092AB0(gTasks[taskId].data[0]); + } + if ((gMain.newKeys & 0x10) && gTasks[taskId].data[0] < 2) + { + PlaySE(SE_Z_PAGE); + gTasks[taskId].data[0]++; + sub_8092AB0(gTasks[taskId].data[0]); + } +} + +void sub_809217C(u8 taskId) +{ + sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); + sub_8092B68(taskId); + gTasks[taskId].func = sub_80921B0; +} + +void sub_80921B0(u8 taskId) +{ + const u8 (*r6)[4]; + + if (gTasks[taskId].data[0] != 0) + { + if (!IsNationalPokedexEnabled()) + r6 = gUnknown_083B58A4; + else + r6 = gUnknown_083B586C; + } + else + { + if (!IsNationalPokedexEnabled()) + r6 = gUnknown_083B5888; + else + r6 = gUnknown_083B5850; + } + + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_BOWA); + sub_8092EB0(taskId); + gTasks[taskId].func = sub_809204C; + return; + } + if (gMain.newKeys & A_BUTTON) + { + if (gTasks[taskId].data[1] == 6) + { + if (gTasks[taskId].data[0] != 0) + { + gUnknown_0202FFBA = 0x40; + gPokedexView->unk62A = 0x40; + gUnknown_0202FFB8 = 0; + gPokedexView->unk610 = 0; + gSaveBlock2.pokedex.unknown1 = sub_8092E10(taskId, 5); + if (!IsNationalPokedexEnabled()) + gSaveBlock2.pokedex.unknown1 = 0; + gPokedexView->unk614 = gSaveBlock2.pokedex.unknown1; + gSaveBlock2.pokedex.order = sub_8092E10(taskId, 4); + gPokedexView->unk618 = gSaveBlock2.pokedex.order; + PlaySE(SE_PC_OFF); + gTasks[taskId].func = sub_80927B8; + } + else + { + sub_8091E20(gDexText_Searching); + gTasks[taskId].func = sub_80923FC; + PlaySE(SE_Z_SEARCH); + } + } + else + { + PlaySE(SE_PIN); + gTasks[taskId].func = sub_80925CC; + } + return; + } + + if ((gMain.newKeys & 0x20) && r6[gTasks[taskId].data[1]][0] != 0xFF) + { + PlaySE(SE_SELECT); + gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][0]; + sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); + } + if ((gMain.newKeys & 0x10) && r6[gTasks[taskId].data[1]][1] != 0xFF) + { + PlaySE(SE_SELECT); + gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][1]; + sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); + } + if ((gMain.newKeys & 0x40) && r6[gTasks[taskId].data[1]][2] != 0xFF) + { + PlaySE(SE_SELECT); + gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][2]; + sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); + } + if ((gMain.newKeys & 0x80) && r6[gTasks[taskId].data[1]][3] != 0xFF) + { + PlaySE(SE_SELECT); + gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][3]; + sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); + } +} + +void sub_80923FC(u8 taskId) +{ + u8 r10 = sub_8092E10(taskId, 5); + u8 r9 = sub_8092E10(taskId, 4); + u8 r8 = sub_8092E10(taskId, 0); + u8 r6 = sub_8092E10(taskId, 1); + u8 r4 = sub_8092E10(taskId, 2); + u8 r0 = sub_8092E10(taskId, 3); + + sub_8091AF8(r10, r9, r8, r6, r4, r0); + gTasks[taskId].func = sub_80924A4; +} + +void sub_80924A4(u8 taskId) +{ + if (!IsSEPlaying()) + { + if (gPokedexView->unk60C != 0) + { + PlaySE(SE_SEIKAI); + sub_8091E20(gDexText_SearchComplete); + } + else + { + PlaySE(SE_HAZURE); + sub_8091E20(gDexText_NoMatching); + } + gTasks[taskId].func = sub_8092508; + } +} -- cgit v1.2.3 From 75957d8f7347c487662fdf7d63cfb10a8c727249 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 14 Jun 2017 01:03:57 -0500 Subject: decompile sub_8092508 - sub_80927F0 --- src/pokedex.c | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index 5738db841..d88252aa8 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -8,6 +8,7 @@ #include "m4a.h" #include "main.h" #include "menu.h" +#include "menu_cursor.h" #include "palette.h" #include "rng.h" #include "songs.h" @@ -55,6 +56,20 @@ struct PokedexEntry /*0x20*/ u16 trainerOffset; }; /*size = 0x24*/ +struct UnknownStruct2 +{ + const u8 *text1; + const u8 *text2; +}; + +struct UnknownStruct1 +{ + const struct UnknownStruct2 *unk0; + u8 unk4; + u8 unk5; + u16 unk6; +}; + extern struct MusicPlayerInfo gMPlay_BGM; extern u8 gReservedSpritePaletteCount; extern struct PokedexView *gPokedexView; @@ -97,6 +112,7 @@ extern const u8 gUnknown_083B5850[][4]; extern const u8 gUnknown_083B586C[][4]; extern const u8 gUnknown_083B5888[][4]; extern const u8 gUnknown_083B58A4[][4]; +extern const struct UnknownStruct1 gUnknown_083B5A7C[]; extern u8 gUnknown_08D00524[]; extern u8 gUnknown_08E96BD4[]; extern u8 gUnknown_08E96ACC[]; @@ -112,6 +128,7 @@ extern const u8 gPokedexMenuSearch_Gfx[]; extern const u8 gUnknown_08E96D2C[]; extern const u16 gPokedexMenuSearch_Pal[]; +extern void sub_814AD7C(u8, u8); extern void sub_800D74C(); extern const u16 *species_and_otid_get_pal(u16, u32, u32); extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); @@ -138,10 +155,14 @@ void sub_80923FC(u8); void sub_80924A4(u8); void sub_8092508(u8); void sub_80925CC(u8); +void sub_8092644(u8); void sub_80927B8(u8); +void sub_80927F0(u8); void sub_8092AB0(u8); void sub_8092AD4(u8, u8); void sub_8092B68(); +void sub_8092C8C(); +void sub_8092D78(); u8 sub_8092E10(); void sub_8092EB0(); void sub_809308C(); @@ -4468,3 +4489,141 @@ void sub_80924A4(u8 taskId) gTasks[taskId].func = sub_8092508; } } + +void sub_8092508(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON) + { + if (gPokedexView->unk60C != 0) + { + gPokedexView->unk64F = 1; + gPokedexView->unk612 = sub_8092E10(taskId, 5); + gPokedexView->unk616 = sub_8092E10(taskId, 4); + gTasks[taskId].func = sub_80927B8; + PlaySE(SE_PC_OFF); + } + else + { + gTasks[taskId].func = sub_809217C; + PlaySE(SE_BOWA); + } + } +} + +void sub_80925B4(u16 a, int unused) +{ + sub_814AD7C(0x90, (a * 2 + 1) * 8); +} + +void sub_80925CC(u8 taskId) +{ + u8 r0; + u16 *p1; + u16 *p2; + + sub_8092C8C(0); + r0 = gTasks[taskId].data[1]; + p1 = &gTasks[taskId].data[gUnknown_083B5A7C[r0].unk4]; + p2 = &gTasks[taskId].data[gUnknown_083B5A7C[r0].unk5]; + gTasks[taskId].data[14] = *p1; + gTasks[taskId].data[15] = *p2; + sub_8092D78(taskId); + CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 11); + sub_80925B4(*p1, 1); + gTasks[taskId].func = sub_8092644; +} + +void sub_8092644(u8 taskId) +{ + u8 r1; + const struct UnknownStruct2 *r8; + u16 *p1; + u16 *p2; + u16 r2; + bool8 r3; + + r1 = gTasks[taskId].data[1]; + r8 = gUnknown_083B5A7C[r1].unk0; + p1 = &gTasks[taskId].data[gUnknown_083B5A7C[r1].unk4]; + p2 = &gTasks[taskId].data[gUnknown_083B5A7C[r1].unk5]; + r2 = gUnknown_083B5A7C[r1].unk6 - 1; + if (gMain.newKeys & A_BUTTON) + { + sub_814ADC8(); + PlaySE(SE_PIN); + MenuZeroFillWindowRect(18, 1, 28, 12); + sub_8092C8C(1); + gTasks[taskId].func = sub_809217C; + return; + } + if (gMain.newKeys & B_BUTTON) + { + sub_814ADC8(); + PlaySE(SE_BOWA); + MenuZeroFillWindowRect(18, 1, 28, 12); + sub_8092C8C(1); + *p1 = gTasks[taskId].data[14]; + *p2 = gTasks[taskId].data[15]; + gTasks[taskId].func = sub_809217C; + return; + } + r3 = FALSE; + if (gMain.newAndRepeatedKeys & 0x40) + { + if (*p1 != 0) + { + sub_80925B4(*p1, 0); + (*p1)--; + sub_80925B4(*p1, 1); + r3 = TRUE; + } + else if (*p2 != 0) + { + (*p2)--; + sub_8092D78(taskId); + sub_80925B4(*p1, 1); + r3 = TRUE; + } + if (r3) + { + PlaySE(SE_SELECT); + sub_8091E20(r8[*p1 + *p2].text1); + } + return; + } + if (gMain.newAndRepeatedKeys & 0x80) + { + if (*p1 < 5 && *p1 < r2) + { + sub_80925B4(*p1, 0); + (*p1)++; + sub_80925B4(*p1, 1); + r3 = TRUE; + } + else if (r2 > 5 && *p2 < r2 - 5) + { + (*p2)++; + sub_8092D78(taskId); + sub_80925B4(5, 1); + r3 = TRUE; + } + if (r3) + { + PlaySE(SE_SELECT); + sub_8091E20(r8[*p1 + *p2].text1); + } + return; + } +} + +void sub_80927B8(u8 taskId) +{ + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_80927F0; +} + +void sub_80927F0(u8 taskId) +{ + if (!gPaletteFade.active) + DestroyTask(taskId); +} -- cgit v1.2.3 From b7031c448aa22422a5e409d545c9da12325381cf Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 14 Jun 2017 17:36:31 -0500 Subject: finish decompiling pokedex.s --- src/pokedex.c | 481 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 462 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index d88252aa8..d799f6a19 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -70,6 +70,25 @@ struct UnknownStruct1 u16 unk6; }; +struct UnknownStruct3 +{ + const u8 *text; + u8 unk4; + u8 unk5; + u8 unk6; +}; + +struct UnknownStruct4 +{ + const u8 *text; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + u8 unk8; + u8 unk9; +}; + extern struct MusicPlayerInfo gMPlay_BGM; extern u8 gReservedSpritePaletteCount; extern struct PokedexView *gPokedexView; @@ -86,7 +105,7 @@ extern u8 gUnknown_08E96888[]; extern u8 gUnknown_08E96994[]; extern u8 gUnknown_08E9C6DC[]; extern u8 gUnknown_0839FA7C[]; -extern u8 gUnknown_0839F67C[]; +extern u16 gUnknown_0839F67C[]; extern u8 gUnknown_0839F73C[]; extern u8 gUnknown_0839F8A0[]; extern u8 gUnknown_0839F988[]; @@ -108,11 +127,23 @@ extern void *const gUnknown_083B5584[]; extern struct SpriteFrameImage *const gUnknown_083B5794[]; extern const struct SpriteTemplate gUnknown_083B57A4; extern const u8 gUnknown_083B57BC[][4]; +extern const struct UnknownStruct3 gUnknown_083B57E4[]; +extern const struct UnknownStruct4 gUnknown_083B57FC[]; extern const u8 gUnknown_083B5850[][4]; extern const u8 gUnknown_083B586C[][4]; extern const u8 gUnknown_083B5888[][4]; extern const u8 gUnknown_083B58A4[][4]; +extern const struct UnknownStruct2 gUnknown_083B58C0[]; +extern const struct UnknownStruct2 gUnknown_083B58D8[]; +extern const struct UnknownStruct2 gUnknown_083B5910[]; +extern const struct UnknownStruct2 gUnknown_083B5968[]; +extern const struct UnknownStruct2 gUnknown_083B59C8[]; +extern const u8 gUnknown_083B5A60[]; +extern const u8 gUnknown_083B5A62[]; +extern const u8 gUnknown_083B5A68[]; extern const struct UnknownStruct1 gUnknown_083B5A7C[]; +extern const u8 gUnknown_083B5AAC[]; +extern const u8 gUnknown_083B5AB2[]; extern u8 gUnknown_08D00524[]; extern u8 gUnknown_08E96BD4[]; extern u8 gUnknown_08E96ACC[]; @@ -160,12 +191,12 @@ void sub_80927B8(u8); void sub_80927F0(u8); void sub_8092AB0(u8); void sub_8092AD4(u8, u8); -void sub_8092B68(); -void sub_8092C8C(); -void sub_8092D78(); -u8 sub_8092E10(); -void sub_8092EB0(); -void sub_809308C(); +void sub_8092B68(u8); +void sub_8092C8C(u8); +void sub_8092D78(u8); +u8 sub_8092E10(u8, u8); +void sub_8092EB0(u8); +void sub_809308C(u8); // asm/pokedex_area_screen void ShowPokedexAreaScreen(u16 species, u8 *string); @@ -865,7 +896,7 @@ bool8 sub_808D344(u8 a) void sub_808D640(void) { if (gPokedexView->unk64C_1) - LoadPalette(gUnknown_0839F67C + 0x2, 1, 0xBE); + LoadPalette(gUnknown_0839F67C + 1, 1, 0xBE); else if (!IsNationalPokedexEnabled()) LoadPalette(gPokedexMenu_Pal + 1, 1, 0xBE); else @@ -2692,7 +2723,6 @@ void Task_SizeScreenProcessInput(u8 taskId) gTasks[taskId].func = sub_8090498; PlaySE(SE_PC_OFF); } - //_08090430 else if ((gMain.newKeys & DPAD_LEFT) || ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) { @@ -3457,7 +3487,7 @@ _08090A38: .4byte sub_8090A3C\n\ void sub_8090A3C(u8 taskId) { - if (gMain.newKeys & 2) + if (gMain.newKeys & B_BUTTON) { BeginNormalPaletteFade(0x0000FFFC, 0, 0, 16, 0); gSprites[gTasks[taskId].data[3]].callback = sub_8090C28; @@ -3502,7 +3532,7 @@ void sub_8090B8C(u8 taskId) u8 paletteNum; const u16 *palette; - REG_DISPCNT = 0x1940; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; CpuCopy16(gUnknown_08D00524, (void *)(VRAM + 0xC000), 0x1000); sub_800D74C(); species = NationalPokedexNumToSpecies(gTasks[taskId].data[1]); @@ -4352,13 +4382,13 @@ void sub_809207C(u8 taskId) } return; } - if ((gMain.newKeys & 0x20) && gTasks[taskId].data[0] > 0) + if ((gMain.newKeys & DPAD_LEFT) && gTasks[taskId].data[0] > 0) { PlaySE(SE_Z_PAGE); gTasks[taskId].data[0]--; sub_8092AB0(gTasks[taskId].data[0]); } - if ((gMain.newKeys & 0x10) && gTasks[taskId].data[0] < 2) + if ((gMain.newKeys & DPAD_RIGHT) && gTasks[taskId].data[0] < 2) { PlaySE(SE_Z_PAGE); gTasks[taskId].data[0]++; @@ -4433,25 +4463,25 @@ void sub_80921B0(u8 taskId) return; } - if ((gMain.newKeys & 0x20) && r6[gTasks[taskId].data[1]][0] != 0xFF) + if ((gMain.newKeys & DPAD_LEFT) && r6[gTasks[taskId].data[1]][0] != 0xFF) { PlaySE(SE_SELECT); gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][0]; sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); } - if ((gMain.newKeys & 0x10) && r6[gTasks[taskId].data[1]][1] != 0xFF) + if ((gMain.newKeys & DPAD_RIGHT) && r6[gTasks[taskId].data[1]][1] != 0xFF) { PlaySE(SE_SELECT); gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][1]; sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); } - if ((gMain.newKeys & 0x40) && r6[gTasks[taskId].data[1]][2] != 0xFF) + if ((gMain.newKeys & DPAD_UP) && r6[gTasks[taskId].data[1]][2] != 0xFF) { PlaySE(SE_SELECT); gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][2]; sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); } - if ((gMain.newKeys & 0x80) && r6[gTasks[taskId].data[1]][3] != 0xFF) + if ((gMain.newKeys & DPAD_DOWN) && r6[gTasks[taskId].data[1]][3] != 0xFF) { PlaySE(SE_SELECT); gTasks[taskId].data[1] = r6[gTasks[taskId].data[1]][3]; @@ -4568,7 +4598,7 @@ void sub_8092644(u8 taskId) return; } r3 = FALSE; - if (gMain.newAndRepeatedKeys & 0x40) + if (gMain.newAndRepeatedKeys & DPAD_UP) { if (*p1 != 0) { @@ -4591,7 +4621,7 @@ void sub_8092644(u8 taskId) } return; } - if (gMain.newAndRepeatedKeys & 0x80) + if (gMain.newAndRepeatedKeys & DPAD_DOWN) { if (*p1 < 5 && *p1 < r2) { @@ -4627,3 +4657,416 @@ void sub_80927F0(u8 taskId) if (!gPaletteFade.active) DestroyTask(taskId); } + +#ifdef NONMATCHING +void sub_8092810(u8 a, u8 b, u8 c, u8 d) +{ + u16 i; + + for (i = 0; i < d; i++) + { + ((u16 *)VRAM)[15 * 0x400 + c * 32 + i + b] &= 0xFFF; + ((u16 *)VRAM)[15 * 0x400 + c * 32 + i + b] |= a << 12; + + ((u16 *)VRAM)[15 * 0x400 + (c + 1) * 32 + i + b] &= 0xFFF; + ((u16 *)VRAM)[15 * 0x400 + (c + 1) * 32 + i + b] |= a << 12; + } +} +#else +__attribute__((naked)) +void sub_8092810(u8 a, u8 b, u8 c, u8 d) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r12, r1\n\ + lsls r2, 24\n\ + lsrs r1, r2, 24\n\ + lsls r3, 24\n\ + lsrs r5, r3, 8\n\ + movs r3, 0\n\ + cmp r5, 0\n\ + beq _0809285A\n\ + lsls r7, r1, 6\n\ + ldr r6, _08092860 @ =0x00000fff\n\ + lsls r4, r0, 12\n\ +_08092830:\n\ + mov r0, r12\n\ + adds r1, r0, r3\n\ + lsls r1, 1\n\ + adds r1, r7, r1\n\ + ldr r0, _08092864 @ =0x06007800\n\ + adds r2, r1, r0\n\ + ldrh r0, [r2]\n\ + ands r0, r6\n\ + orrs r0, r4\n\ + strh r0, [r2]\n\ + ldr r0, _08092868 @ =0x06007840\n\ + adds r1, r0\n\ + ldrh r0, [r1]\n\ + ands r0, r6\n\ + orrs r0, r4\n\ + strh r0, [r1]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r0, r5\n\ + bcc _08092830\n\ +_0809285A:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08092860: .4byte 0x00000fff\n\ +_08092864: .4byte 0x06007800\n\ +_08092868: .4byte 0x06007840\n\ + .syntax divided\n"); +} +#endif + +void sub_809286C(u8 a, u8 b, u8 c) +{ + u8 r5 = (b & 1) | ((c & 1) << 1); + + switch (a) + { + case 0: + case 1: + case 2: + sub_8092810(r5, gUnknown_083B57E4[a].unk4, gUnknown_083B57E4[a].unk5, gUnknown_083B57E4[a].unk6); + break; + case 3: + case 4: + case 7: + case 8: + sub_8092810(r5, gUnknown_083B57FC[a - 3].unk4, gUnknown_083B57FC[a - 3].unk5, gUnknown_083B57FC[a - 3].unk6); + // fall through + case 5: + case 6: + sub_8092810(r5, gUnknown_083B57FC[a - 3].unk7, gUnknown_083B57FC[a - 3].unk8, gUnknown_083B57FC[a - 3].unk9); + break; + case 10: + sub_8092810(r5, gUnknown_083B57FC[2].unk4, gUnknown_083B57FC[2].unk5, gUnknown_083B57FC[2].unk6); + break; + case 9: + if (!IsNationalPokedexEnabled()) + sub_8092810(r5, gUnknown_083B57FC[a - 3].unk4, gUnknown_083B57FC[a - 3].unk5 - 2, gUnknown_083B57FC[a - 3].unk6); + else + sub_8092810(r5, gUnknown_083B57FC[a - 3].unk4, gUnknown_083B57FC[a - 3].unk5, gUnknown_083B57FC[a - 3].unk6); + break; + } +} + +void sub_8092964(u8 a) +{ + switch (a) + { + case 0: + sub_809286C(0, 0, 0); + sub_809286C(1, 1, 0); + sub_809286C(2, 1, 0); + sub_809286C(3, 1, 0); + sub_809286C(4, 1, 0); + sub_809286C(10, 1, 0); + sub_809286C(5, 1, 0); + sub_809286C(6, 1, 0); + sub_809286C(7, 1, 0); + sub_809286C(8, 1, 0); + sub_809286C(9, 1, 0); + break; + case 1: + sub_809286C(0, 1, 0); + sub_809286C(1, 0, 0); + sub_809286C(2, 1, 0); + sub_809286C(3, 1, 1); + sub_809286C(4, 1, 1); + sub_809286C(10, 1, 1); + sub_809286C(5, 1, 1); + sub_809286C(6, 1, 1); + sub_809286C(7, 1, 0); + sub_809286C(8, 1, 0); + sub_809286C(9, 1, 0); + break; + case 2: + sub_809286C(0, 1, 0); + sub_809286C(1, 1, 0); + sub_809286C(2, 0, 0); + sub_809286C(3, 1, 1); + sub_809286C(4, 1, 1); + sub_809286C(10, 1, 1); + sub_809286C(5, 1, 1); + sub_809286C(6, 1, 1); + sub_809286C(7, 1, 1); + sub_809286C(8, 1, 1); + sub_809286C(9, 1, 1); + break; + } +} + +void sub_8092AB0(u8 a) +{ + sub_8092964(a); + sub_8091E20(gUnknown_083B57E4[a].text); +} + +void sub_8092AD4(u8 a, u8 b) +{ + sub_8092964(a); + switch (b) + { + case 0: + sub_809286C(3, 0, 0); + break; + case 1: + sub_809286C(4, 0, 0); + break; + case 2: + sub_809286C(10, 0, 0); + sub_809286C(5, 0, 0); + break; + case 3: + sub_809286C(10, 0, 0); + sub_809286C(6, 0, 0); + break; + case 4: + sub_809286C(7, 0, 0); + break; + case 5: + sub_809286C(8, 0, 0); + break; + case 6: + sub_809286C(9, 0, 0); + break; + } + sub_8091E20(gUnknown_083B57FC[b].text); +} + +void sub_8092B68(u8 taskId) +{ + u16 var; + + var = gTasks[taskId].data[6] + gTasks[taskId].data[7]; + StringCopy(gStringVar1, gUnknown_083B5910[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 16, 1); + + var = gTasks[taskId].data[8] + gTasks[taskId].data[9]; + StringCopy(gStringVar1, gUnknown_083B5968[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 32, 1); + + var = gTasks[taskId].data[10] + gTasks[taskId].data[11]; + StringCopy(gStringVar1, gUnknown_083B59C8[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AAC, 45, 48, 1); + + var = gTasks[taskId].data[12] + gTasks[taskId].data[13]; + StringCopy(gStringVar1, gUnknown_083B59C8[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AAC, 93, 48, 1); + + var = gTasks[taskId].data[4] + gTasks[taskId].data[5]; + StringCopy(gStringVar1, gUnknown_083B58D8[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 64, 1); + + if (IsNationalPokedexEnabled()) + { + var = gTasks[taskId].data[2] + gTasks[taskId].data[3]; + StringCopy(gStringVar1, gUnknown_083B58C0[var].text2); + MenuPrint_PixelCoords(gUnknown_083B5AB2, 45, 80, 1); + } +} + +void sub_8092C8C(u8 a) +{ + u16 i; + u16 j; + + if (a == 0) + { + *((u16 *)(VRAM + 0x7800 + 0x22)) = 0xC0B; + for (i = 0x12; i < 0x1D; i++) + *((u16 *)(VRAM + 0x7800 + i * 2)) = 0x80D; + *((u16 *)(VRAM + 0x7800 + 0x3A)) = 0x80B; + for (j = 1; j < 13; j++) + { + *((u16 *)(VRAM + 0x7800 + 0x22 + j * 64)) = 0x40A; + for (i = 0x12; i < 0x1D; i++) + *((u16 *)(VRAM + 0x7800 + j * 64 + i * 2)) = 2; + *((u16 *)(VRAM + 0x7800 + 0x3A + j * 64)) = 0xA; + } + *((u16 *)(VRAM + 0x7800 + 0x362)) = 0x40B; + for (i = 0x12; i < 0x1D; i++) + *((u16 *)(VRAM + 0x7800 + 0x340 + i * 2)) = 0xD; + *((u16 *)(VRAM + 0x7800 + 0x37A)) = 0xB; + } + else + { + for (j = 0; j < 14; j++) + { + for (i = 0x11; i < 0x1E; i++) + { + *((u16 *)(VRAM + 0x7800 + j * 64 + i * 2)) = 0x4F; + } + } + } +} + +void sub_8092D78(u8 taskId) +{ + const struct UnknownStruct2 *r6 = gUnknown_083B5A7C[gTasks[taskId].data[1]].unk0; + const u16 *r8 = &gTasks[taskId].data[gUnknown_083B5A7C[gTasks[taskId].data[1]].unk4]; + const u16 *r7 = &gTasks[taskId].data[gUnknown_083B5A7C[gTasks[taskId].data[1]].unk5]; + u16 i; + u16 j; + + MenuZeroFillWindowRect(18, 1, 28, 12); + for (i = 0, j = *r7; i < 6 && r6[j].text2 != NULL; i++, j++) + { +#ifndef NONMATCHING + j += 0; // Useless statement needed to match +#endif + MenuPrint(r6[j].text2, 18, i * 2 + 1); + } + sub_8091E20(r6[*r8 + *r7].text1); +} + +u8 sub_8092E10(u8 taskId, u8 b) +{ + const u16 *ptr1 = &gTasks[taskId].data[gUnknown_083B5A7C[b].unk4]; + const u16 *ptr2 = &gTasks[taskId].data[gUnknown_083B5A7C[b].unk5]; + u16 r2 = *ptr1 + *ptr2; + + switch (b) + { + default: + return 0; + case 5: + return gUnknown_083B5A60[r2]; + case 4: + return gUnknown_083B5A62[r2]; + case 0: + if (r2 == 0) + return 0xFF; + else + return r2; + case 1: + if (r2 == 0) + return 0xFF; + else + return r2 - 1; + case 2: + case 3: + return gUnknown_083B5A68[r2]; + } +} + +void sub_8092EB0(u8 taskId) +{ + u16 r3; + + switch (gPokedexView->unk614) + { + default: + case 0: + r3 = 0; + break; + case 1: + r3 = 1; + break; + } + gTasks[taskId].data[2] = r3; + + switch (gPokedexView->unk618) + { + default: + case 0: + r3 = 0; + break; + case 1: + r3 = 1; + break; + case 2: + r3 = 2; + break; + case 3: + r3 = 3; + break; + case 4: + r3 = 4; + break; + case 5: + r3 = 5; + break; + } + gTasks[taskId].data[4] = r3; +} + +bool8 sub_8092F44(u8 taskId) +{ + u8 val1 = gTasks[taskId].data[1]; + const u16 *ptr = &gTasks[taskId].data[gUnknown_083B5A7C[val1].unk5]; + u16 val2 = gUnknown_083B5A7C[val1].unk6 - 1; + + if (val2 > 5 && *ptr != 0) + return FALSE; + else + return TRUE; +} + +bool8 sub_8092F8C(u8 taskId) +{ + u8 val1 = gTasks[taskId].data[1]; + const u16 *ptr = &gTasks[taskId].data[gUnknown_083B5A7C[val1].unk5]; + u16 val2 = gUnknown_083B5A7C[val1].unk6 - 1; + + if (val2 > 5 && *ptr < val2 - 5) + return FALSE; + else + return TRUE; +} + +void sub_8092FD8(struct Sprite *sprite) +{ + if (gTasks[sprite->data0].func == sub_8092644) + { + u8 val; + + if (sprite->data1 != 0) + { + if (sub_8092F8C(sprite->data0)) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + } + else + { + if (sub_8092F44(sprite->data0)) + sprite->invisible = TRUE; + else + sprite->invisible = FALSE; + } + val = sprite->data2 + sprite->data1 * 128; + sprite->pos2.y = gSineTable[val] / 128; + sprite->data2 += 8; + } + else + { + sprite->invisible = TRUE; + } +} + +void sub_809308C(u8 taskId) +{ + u8 spriteId; + + spriteId = CreateSprite(&gSpriteTemplate_83A053C, 184, 4, 0); + gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data1 = 0; + gSprites[spriteId].callback = sub_8092FD8; + + spriteId = CreateSprite(&gSpriteTemplate_83A053C, 184, 108, 0); + gSprites[spriteId].data0 = taskId; + gSprites[spriteId].data1 = 1; + gSprites[spriteId].vFlip = TRUE; + gSprites[spriteId].callback = sub_8092FD8; +} -- cgit v1.2.3 From aba52dbd95939761886a918f2a4c5ddad34b70a1 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 14 Jun 2017 18:15:36 -0500 Subject: convert some data to C --- src/pokedex.c | 2090 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 1759 insertions(+), 331 deletions(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index d799f6a19..dd0c669d4 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -104,11 +104,6 @@ extern u8 gUnknown_08E96738[]; extern u8 gUnknown_08E96888[]; extern u8 gUnknown_08E96994[]; extern u8 gUnknown_08E9C6DC[]; -extern u8 gUnknown_0839FA7C[]; -extern u16 gUnknown_0839F67C[]; -extern u8 gUnknown_0839F73C[]; -extern u8 gUnknown_0839F8A0[]; -extern u8 gUnknown_0839F988[]; extern struct SpriteTemplate gSpriteTemplate_83A0524; extern struct SpriteTemplate gSpriteTemplate_83A053C; extern struct SpriteTemplate gSpriteTemplate_83A0554; @@ -170,9 +165,1442 @@ extern void DisableNationalPokedex(void); extern void sub_805469C(void); extern u16 HoennToNationalOrder(u16); extern u16 NationalToHoennOrder(u16); -extern u16 gPokedexOrder_Alphabetical[]; -extern u16 gPokedexOrder_Weight[]; -extern u16 gPokedexOrder_Height[]; + +const u16 gUnknown_0839F67C[] = INCBIN_U16("graphics/pokedex/search.gbapal"); +const u16 gUnknown_0839F73C[] = INCBIN_U16("graphics/pokedex/national.gbapal"); +const u8 gEmptySpacce_839F7FC[0xA4] = {0}; +const u8 gUnknown_0839F8A0[] = INCBIN_U8("graphics/pokedex/pokedex_cry_layout.bin.lz"); +const u8 gUnknown_0839F988[] = INCBIN_U8("graphics/pokedex/pokedex_size_layout.bin.lz"); +const u8 gUnknown_0839FA7C[] = INCBIN_U8("graphics/pokedex/noball.4bpp.lz"); +const u16 gPokedexOrder_Alphabetical[] = +{ + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 63, // Abra + 359, // Absol + 142, // Aerodactyl + 306, // Aggron + 190, // Aipom + 65, // Alakazam + 334, // Altaria + 181, // Ampharos + 347, // Anorith + 24, // Arbok + 59, // Arcanine + 168, // Ariados + 348, // Armaldo + 304, // Aron + 144, // Articuno + 184, // Azumarill + 298, // Azurill + 371, // Bagon + 343, // Baltoy + 354, // Banette + 339, // Barboach + 153, // Bayleef + 267, // Beautifly + 15, // Beedrill + 374, // Beldum + 182, // Bellossom + 69, // Bellsprout + 9, // Blastoise + 257, // Blaziken + 242, // Blissey + 286, // Breloom + 1, // Bulbasaur + 12, // Butterfree + 331, // Cacnea + 332, // Cacturne + 323, // Camerupt + 318, // Carvanha + 268, // Cascoon + 351, // Castform + 10, // Caterpie + 251, // Celebi + 113, // Chansey + 6, // Charizard + 4, // Charmander + 5, // Charmeleon + 152, // Chikorita + 358, // Chimecho + 170, // Chinchou + 366, // Clamperl + 344, // Claydol + 36, // Clefable + 35, // Clefairy + 173, // Cleffa + 91, // Cloyster + 256, // Combusken + 341, // Corphish + 222, // Corsola + 346, // Cradily + 342, // Crawdaunt + 169, // Crobat + 159, // Croconaw + 104, // Cubone + 155, // Cyndaquil + 301, // Delcatty + 225, // Delibird + 386, // Deoxys + 87, // Dewgong + 50, // Diglett + 132, // Ditto + 85, // Dodrio + 84, // Doduo + 232, // Donphan + 148, // Dragonair + 149, // Dragonite + 147, // Dratini + 96, // Drowzee + 51, // Dugtrio + 206, // Dunsparce + 356, // Dusclops + 355, // Duskull + 269, // Dustox + 133, // Eevee + 23, // Ekans + 125, // Electabuzz + 309, // Electrike + 101, // Electrode + 239, // Elekid + 244, // Entei + 196, // Espeon + 102, // Exeggcute + 103, // Exeggutor + 295, // Exploud + 83, // Farfetch’d + 22, // Fearow + 349, // Feebas + 160, // Feraligatr + 180, // Flaaffy + 136, // Flareon + 330, // Flygon + 205, // Forretress + 162, // Furret + 282, // Gardevoir + 92, // Gastly + 94, // Gengar + 74, // Geodude + 203, // Girafarig + 362, // Glalie + 207, // Gligar + 44, // Gloom + 42, // Golbat + 118, // Goldeen + 55, // Golduck + 76, // Golem + 368, // Gorebyss + 210, // Granbull + 75, // Graveler + 88, // Grimer + 383, // Groudon + 253, // Grovyle + 58, // Growlithe + 326, // Grumpig + 316, // Gulpin + 130, // Gyarados + 297, // Hariyama + 93, // Haunter + 214, // Heracross + 107, // Hitmonchan + 106, // Hitmonlee + 237, // Hitmontop + 250, // Ho-Oh + 163, // Hoothoot + 187, // Hoppip + 116, // Horsea + 229, // Houndoom + 228, // Houndour + 367, // Huntail + 97, // Hypno + 174, // Igglybuff + 314, // Illumise + 2, // Ivysaur + 39, // Jigglypuff + 385, // Jirachi + 135, // Jolteon + 189, // Jumpluff + 124, // Jynx + 140, // Kabuto + 141, // Kabutops + 64, // Kadabra + 14, // Kakuna + 115, // Kangaskhan + 352, // Kecleon + 230, // Kingdra + 99, // Kingler + 281, // Kirlia + 109, // Koffing + 98, // Krabby + 382, // Kyogre + 305, // Lairon + 171, // Lanturn + 131, // Lapras + 246, // Larvitar + 380, // Latias + 381, // Latios + 166, // Ledian + 165, // Ledyba + 108, // Lickitung + 345, // Lileep + 264, // Linoone + 271, // Lombre + 270, // Lotad + 294, // Loudred + 272, // Ludicolo + 249, // Lugia + 337, // Lunatone + 370, // Luvdisc + 68, // Machamp + 67, // Machoke + 66, // Machop + 240, // Magby + 219, // Magcargo + 129, // Magikarp + 126, // Magmar + 81, // Magnemite + 82, // Magneton + 296, // Makuhita + 310, // Manectric + 56, // Mankey + 226, // Mantine + 179, // Mareep + 183, // Marill + 105, // Marowak + 259, // Marshtomp + 284, // Masquerain + 303, // Mawile + 308, // Medicham + 307, // Meditite + 154, // Meganium + 52, // Meowth + 376, // Metagross + 375, // Metang + 11, // Metapod + 151, // Mew + 150, // Mewtwo + 262, // Mightyena + 350, // Milotic + 241, // Miltank + 312, // Minun + 200, // Misdreavus + 146, // Moltres + 122, // Mr. mime + 258, // Mudkip + 89, // Muk + 198, // Murkrow + 177, // Natu + 34, // Nidoking + 31, // Nidoqueen + 29, // Nidoran♀ + 32, // Nidoran♂ + 30, // Nidorina + 33, // Nidorino + 290, // Nincada + 38, // Ninetales + 291, // Ninjask + 164, // Noctowl + 299, // Nosepass + 322, // Numel + 274, // Nuzleaf + 224, // Octillery + 43, // Oddish + 138, // Omanyte + 139, // Omastar + 95, // Onix + 46, // Paras + 47, // Parasect + 279, // Pelipper + 53, // Persian + 231, // Phanpy + 172, // Pichu + 18, // Pidgeot + 17, // Pidgeotto + 16, // Pidgey + 25, // Pikachu + 221, // Piloswine + 204, // Pineco + 127, // Pinsir + 311, // Plusle + 186, // Politoed + 60, // Poliwag + 61, // Poliwhirl + 62, // Poliwrath + 77, // Ponyta + 261, // Poochyena + 137, // Porygon + 233, // Porygon2 + 57, // Primeape + 54, // Psyduck + 247, // Pupitar + 195, // Quagsire + 156, // Quilava + 211, // Qwilfish + 26, // Raichu + 243, // Raikou + 280, // Ralts + 78, // Rapidash + 20, // Raticate + 19, // Rattata + 384, // Rayquaza + 378, // Regice + 377, // Regirock + 379, // Registeel + 369, // Relicanth + 223, // Remoraid + 112, // Rhydon + 111, // Rhyhorn + 315, // Roselia + 302, // Sableye + 373, // Salamence + 27, // Sandshrew + 28, // Sandslash + 254, // Sceptile + 212, // Scizor + 123, // Scyther + 117, // Seadra + 119, // Seaking + 364, // Sealeo + 273, // Seedot + 86, // Seel + 161, // Sentret + 336, // Seviper + 319, // Sharpedo + 292, // Shedinja + 372, // Shelgon + 90, // Shellder + 275, // Shiftry + 285, // Shroomish + 213, // Shuckle + 353, // Shuppet + 266, // Silcoon + 227, // Skarmory + 188, // Skiploom + 300, // Skitty + 289, // Slaking + 287, // Slakoth + 80, // Slowbro + 199, // Slowking + 79, // Slowpoke + 218, // Slugma + 235, // Smeargle + 238, // Smoochum + 215, // Sneasel + 143, // Snorlax + 361, // Snorunt + 209, // Snubbull + 338, // Solrock + 21, // Spearow + 363, // Spheal + 167, // Spinarak + 327, // Spinda + 325, // Spoink + 7, // Squirtle + 234, // Stantler + 121, // Starmie + 120, // Staryu + 208, // Steelix + 185, // Sudowoodo + 245, // Suicune + 192, // Sunflora + 191, // Sunkern + 283, // Surskit + 333, // Swablu + 317, // Swalot + 260, // Swampert + 277, // Swellow + 220, // Swinub + 276, // Taillow + 114, // Tangela + 128, // Tauros + 216, // Teddiursa + 72, // Tentacool + 73, // Tentacruel + 175, // Togepi + 176, // Togetic + 255, // Torchic + 324, // Torkoal + 158, // Totodile + 328, // Trapinch + 252, // Treecko + 357, // Tropius + 157, // Typhlosion + 248, // Tyranitar + 236, // Tyrogue + 197, // Umbreon + 201, // Unown + 217, // Ursaring + 134, // Vaporeon + 49, // Venomoth + 48, // Venonat + 3, // Venusaur + 329, // Vibrava + 71, // Victreebel + 288, // Vigoroth + 45, // Vileplume + 313, // Volbeat + 100, // Voltorb + 37, // Vulpix + 320, // Wailmer + 321, // Wailord + 365, // Walrein + 8, // Wartortle + 13, // Weedle + 70, // Weepinbell + 110, // Weezing + 340, // Whiscash + 293, // Whismur + 40, // Wigglytuff + 278, // Wingull + 202, // Wobbuffet + 194, // Wooper + 265, // Wurmple + 360, // Wynaut + 178, // Xatu + 193, // Yanma + 335, // Zangoose + 145, // Zapdos + 263, // Zigzagoon + 41, // Zubat +}; +const u16 gPokedexOrder_Weight[] = +{ + 92, // Gastly + 93, // Haunter + 187, // Hoppip + 50, // Diglett + 351, // Castform + 109, // Koffing + 174, // Igglybuff + 200, // Misdreavus + 358, // Chimecho + 188, // Skiploom + 385, // Jirachi + 333, // Swablu + 292, // Shedinja + 175, // Togepi + 283, // Surskit + 16, // Pidgey + 191, // Sunkern + 339, // Barboach + 172, // Pichu + 298, // Azurill + 315, // Roselia + 177, // Natu + 21, // Spearow + 198, // Murkrow + 353, // Shuppet + 276, // Taillow + 102, // Exeggcute + 255, // Torchic + 270, // Lotad + 10, // Caterpie + 189, // Jumpluff + 173, // Cleffa + 13, // Weedle + 176, // Togetic + 147, // Dratini + 19, // Rattata + 284, // Masquerain + 265, // Wurmple + 211, // Qwilfish + 151, // Mew + 90, // Shellder + 273, // Seedot + 132, // Ditto + 69, // Bellsprout + 311, // Plusle + 52, // Meowth + 312, // Minun + 285, // Shroomish + 251, // Celebi + 222, // Corsola + 252, // Treecko + 327, // Spinda + 201, // Unown + 46, // Paras + 43, // Oddish + 39, // Jigglypuff + 290, // Nincada + 182, // Bellossom + 81, // Magnemite + 25, // Pikachu + 238, // Smoochum + 161, // Sentret + 70, // Weepinbell + 152, // Chikorita + 220, // Swinub + 133, // Eevee + 98, // Krabby + 104, // Cubone + 280, // Ralts + 1, // Bulbasaur + 23, // Ekans + 29, // Nidoran♀ + 204, // Pineco + 349, // Feebas + 138, // Omanyte + 41, // Zubat + 35, // Clefairy + 258, // Mudkip + 209, // Snubbull + 179, // Mareep + 155, // Cyndaquil + 116, // Horsea + 4, // Charmander + 192, // Sunflora + 183, // Marill + 194, // Wooper + 167, // Spinarak + 44, // Gloom + 370, // Luvdisc + 216, // Teddiursa + 32, // Nidoran♂ + 7, // Squirtle + 278, // Wingull + 158, // Totodile + 110, // Weezing + 37, // Vulpix + 11, // Metapod + 266, // Silcoon + 129, // Magikarp + 14, // Kakuna + 316, // Gulpin + 100, // Voltorb + 165, // Ledyba + 228, // Houndour + 300, // Skitty + 302, // Sableye + 307, // Meditite + 341, // Corphish + 190, // Aipom + 268, // Cascoon + 303, // Mawile + 140, // Kabuto + 40, // Wigglytuff + 27, // Sandshrew + 223, // Remoraid + 291, // Ninjask + 170, // Chinchou + 60, // Poliwag + 347, // Anorith + 49, // Venomoth + 354, // Banette + 2, // Ivysaur + 180, // Flaaffy + 261, // Poochyena + 360, // Wynaut + 206, // Dunsparce + 178, // Xatu + 355, // Duskull + 83, // Farfetch’d + 328, // Trapinch + 118, // Goldeen + 309, // Electrike + 329, // Vibrava + 71, // Victreebel + 153, // Bayleef + 225, // Delibird + 293, // Whismur + 148, // Dragonair + 361, // Snorunt + 263, // Zigzagoon + 314, // Illumise + 313, // Volbeat + 20, // Raticate + 45, // Vileplume + 156, // Quilava + 5, // Charmeleon + 58, // Growlithe + 256, // Combusken + 66, // Machop + 63, // Abra + 33, // Nidorino + 54, // Psyduck + 277, // Swellow + 38, // Ninetales + 30, // Nidorina + 61, // Poliwhirl + 74, // Geodude + 281, // Kirlia + 213, // Shuckle + 334, // Altaria + 318, // Carvanha + 236, // Tyrogue + 163, // Hoothoot + 240, // Magby + 343, // Baltoy + 253, // Grovyle + 352, // Kecleon + 171, // Lanturn + 8, // Wartortle + 368, // Gorebyss + 369, // Relicanth + 239, // Elekid + 340, // Whiscash + 345, // Lileep + 322, // Numel + 287, // Slakoth + 135, // Jolteon + 159, // Croconaw + 136, // Flareon + 117, // Seadra + 196, // Espeon + 367, // Huntail + 197, // Umbreon + 259, // Marshtomp + 274, // Nuzleaf + 215, // Sneasel + 56, // Mankey + 279, // Pelipper + 267, // Beautifly + 224, // Octillery + 184, // Azumarill + 202, // Wobbuffet + 134, // Vaporeon + 28, // Sandslash + 47, // Parasect + 15, // Beedrill + 89, // Muk + 17, // Pidgeotto + 88, // Grimer + 26, // Raichu + 77, // Ponyta + 125, // Electabuzz + 48, // Venonat + 325, // Spoink + 356, // Dusclops + 308, // Medicham + 269, // Dustox + 53, // Persian + 12, // Butterfree + 57, // Primeape + 96, // Drowzee + 162, // Furret + 233, // Porygon2 + 271, // Lombre + 264, // Linoone + 301, // Delcatty + 342, // Crawdaunt + 51, // Dugtrio + 168, // Ariados + 231, // Phanpy + 186, // Politoed + 120, // Staryu + 113, // Chansey + 139, // Omastar + 114, // Tangela + 218, // Slugma + 229, // Houndoom + 166, // Ledian + 79, // Slowpoke + 137, // Porygon + 262, // Mightyena + 193, // Yanma + 22, // Fearow + 185, // Sudowoodo + 119, // Seaking + 286, // Breloom + 84, // Doduo + 18, // Pidgeot + 363, // Spheal + 36, // Clefable + 380, // Latias + 310, // Manectric + 335, // Zangoose + 141, // Kabutops + 94, // Gengar + 294, // Loudred + 124, // Jynx + 164, // Noctowl + 203, // Girafarig + 371, // Bagon + 126, // Magmar + 105, // Marowak + 72, // Tentacool + 288, // Vigoroth + 242, // Blissey + 359, // Absol + 65, // Alakazam + 237, // Hitmontop + 282, // Gardevoir + 210, // Granbull + 106, // Hitmonlee + 107, // Hitmonchan + 227, // Skarmory + 331, // Cacnea + 257, // Blaziken + 254, // Sceptile + 336, // Seviper + 366, // Clamperl + 145, // Zapdos + 214, // Heracross + 62, // Poliwrath + 122, // Mr. mime + 127, // Pinsir + 272, // Ludicolo + 73, // Tentacruel + 42, // Golbat + 219, // Magcargo + 144, // Articuno + 221, // Piloswine + 123, // Scyther + 64, // Kadabra + 235, // Smeargle + 142, // Aerodactyl + 275, // Shiftry + 99, // Kingler + 31, // Nidoqueen + 82, // Magneton + 304, // Aron + 381, // Latios + 146, // Moltres + 346, // Cradily + 386, // Deoxys + 181, // Ampharos + 34, // Nidoking + 207, // Gligar + 24, // Arbok + 108, // Lickitung + 101, // Electrode + 348, // Armaldo + 67, // Machoke + 234, // Stantler + 326, // Grumpig + 246, // Larvitar + 169, // Crobat + 195, // Quagsire + 241, // Miltank + 97, // Hypno + 55, // Golduck + 332, // Cacturne + 80, // Slowbro + 157, // Typhlosion + 199, // Slowking + 115, // Kangaskhan + 121, // Starmie + 317, // Swalot + 324, // Torkoal + 260, // Swampert + 330, // Flygon + 295, // Exploud + 85, // Dodrio + 9, // Blastoise + 296, // Makuhita + 364, // Sealeo + 128, // Tauros + 319, // Sharpedo + 160, // Feraligatr + 86, // Seel + 6, // Charizard + 78, // Rapidash + 374, // Beldum + 299, // Nosepass + 3, // Venusaur + 357, // Tropius + 154, // Meganium + 373, // Salamence + 75, // Graveler + 344, // Claydol + 372, // Shelgon + 111, // Rhyhorn + 212, // Scizor + 87, // Dewgong + 112, // Rhydon + 232, // Donphan + 103, // Exeggutor + 305, // Lairon + 150, // Mewtwo + 217, // Ursaring + 205, // Forretress + 68, // Machamp + 320, // Wailmer + 289, // Slaking + 91, // Cloyster + 365, // Walrein + 247, // Pupitar + 230, // Kingdra + 338, // Solrock + 59, // Arcanine + 350, // Milotic + 337, // Lunatone + 378, // Regice + 243, // Raikou + 245, // Suicune + 244, // Entei + 250, // Ho-Oh + 248, // Tyranitar + 375, // Metang + 379, // Registeel + 384, // Rayquaza + 95, // Onix + 149, // Dragonite + 249, // Lugia + 131, // Lapras + 323, // Camerupt + 226, // Mantine + 377, // Regirock + 130, // Gyarados + 297, // Hariyama + 362, // Glalie + 76, // Golem + 382, // Kyogre + 306, // Aggron + 321, // Wailord + 208, // Steelix + 143, // Snorlax + 376, // Metagross + 383, // Groudon +}; +const u16 gPokedexOrder_Height[] = +{ + 50, // Diglett + 298, // Azurill + 177, // Natu + 13, // Weedle + 172, // Pichu + 173, // Cleffa + 175, // Togepi + 351, // Castform + 174, // Igglybuff + 10, // Caterpie + 276, // Taillow + 132, // Ditto + 133, // Eevee + 315, // Roselia + 21, // Spearow + 16, // Pidgey + 191, // Sunkern + 90, // Shellder + 19, // Rattata + 81, // Magnemite + 46, // Paras + 265, // Wurmple + 385, // Jirachi + 104, // Cubone + 258, // Mudkip + 194, // Wooper + 116, // Horsea + 52, // Meowth + 29, // Nidoran♀ + 220, // Swinub + 151, // Mew + 333, // Swablu + 304, // Aron + 311, // Plusle + 312, // Minun + 102, // Exeggcute + 25, // Pikachu + 182, // Bellossom + 316, // Gulpin + 263, // Zigzagoon + 285, // Shroomish + 138, // Omanyte + 331, // Cacnea + 98, // Krabby + 280, // Ralts + 187, // Hoppip + 255, // Torchic + 366, // Clamperl + 74, // Geodude + 183, // Marill + 339, // Barboach + 238, // Smoochum + 100, // Voltorb + 290, // Nincada + 302, // Sableye + 198, // Murkrow + 211, // Qwilfish + 7, // Squirtle + 252, // Treecko + 343, // Baltoy + 43, // Oddish + 270, // Lotad + 39, // Jigglypuff + 283, // Surskit + 155, // Cyndaquil + 140, // Kabuto + 264, // Linoone + 324, // Torkoal + 32, // Nidoran♂ + 167, // Spinarak + 56, // Mankey + 273, // Seedot + 261, // Poochyena + 231, // Phanpy + 201, // Unown + 170, // Chinchou + 233, // Porygon2 + 60, // Poliwag + 371, // Bagon + 349, // Feebas + 353, // Shuppet + 158, // Totodile + 251, // Celebi + 360, // Wynaut + 27, // Sandshrew + 358, // Chimecho + 370, // Luvdisc + 228, // Houndour + 266, // Silcoon + 309, // Electrike + 4, // Charmander + 307, // Meditite + 278, // Wingull + 223, // Remoraid + 341, // Corphish + 222, // Corsola + 314, // Illumise + 209, // Snubbull + 37, // Vulpix + 246, // Larvitar + 374, // Beldum + 293, // Whismur + 204, // Pineco + 239, // Elekid + 35, // Clefairy + 213, // Shuckle + 216, // Teddiursa + 14, // Kakuna + 300, // Skitty + 176, // Togetic + 118, // Goldeen + 303, // Mawile + 179, // Mareep + 188, // Skiploom + 109, // Koffing + 51, // Dugtrio + 268, // Cascoon + 322, // Numel + 347, // Anorith + 313, // Volbeat + 163, // Hoothoot + 328, // Trapinch + 325, // Spoink + 11, // Metapod + 69, // Bellsprout + 361, // Snorunt + 20, // Raticate + 259, // Marshtomp + 277, // Swellow + 240, // Magby + 58, // Growlithe + 200, // Misdreavus + 1, // Bulbasaur + 236, // Tyrogue + 218, // Slugma + 287, // Slakoth + 281, // Kirlia + 190, // Aipom + 135, // Jolteon + 30, // Nidorina + 184, // Azumarill + 292, // Shedinja + 66, // Machop + 291, // Ninjask + 284, // Masquerain + 355, // Duskull + 192, // Sunflora + 189, // Jumpluff + 120, // Staryu + 180, // Flaaffy + 363, // Spheal + 54, // Psyduck + 219, // Magcargo + 83, // Farfetch’d + 41, // Zubat + 137, // Porygon + 161, // Sentret + 318, // Carvanha + 44, // Gloom + 26, // Raichu + 129, // Magikarp + 215, // Sneasel + 305, // Lairon + 256, // Combusken + 224, // Octillery + 33, // Nidorino + 136, // Flareon + 225, // Delibird + 72, // Tentacool + 63, // Abra + 253, // Grovyle + 340, // Whiscash + 156, // Quilava + 196, // Espeon + 88, // Grimer + 152, // Chikorita + 326, // Grumpig + 299, // Nosepass + 53, // Persian + 262, // Mightyena + 48, // Venonat + 82, // Magneton + 77, // Ponyta + 296, // Makuhita + 337, // Lunatone + 28, // Sandslash + 96, // Drowzee + 114, // Tangela + 57, // Primeape + 165, // Ledyba + 40, // Wigglytuff + 47, // Parasect + 139, // Omastar + 294, // Loudred + 8, // Wartortle + 75, // Graveler + 197, // Umbreon + 345, // Lileep + 61, // Poliwhirl + 134, // Vaporeon + 15, // Beedrill + 105, // Marowak + 70, // Weepinbell + 369, // Relicanth + 111, // Rhyhorn + 2, // Ivysaur + 352, // Kecleon + 274, // Nuzleaf + 267, // Beautifly + 17, // Pidgeotto + 168, // Ariados + 86, // Seel + 186, // Politoed + 159, // Croconaw + 113, // Chansey + 354, // Banette + 232, // Donphan + 121, // Starmie + 5, // Charmeleon + 221, // Piloswine + 12, // Butterfree + 329, // Vibrava + 125, // Electabuzz + 342, // Crawdaunt + 301, // Delcatty + 334, // Altaria + 372, // Shelgon + 38, // Ninetales + 207, // Gligar + 364, // Sealeo + 327, // Spinda + 247, // Pupitar + 79, // Slowpoke + 338, // Solrock + 241, // Miltank + 22, // Fearow + 45, // Vileplume + 89, // Muk + 205, // Forretress + 185, // Sudowoodo + 359, // Absol + 193, // Yanma + 269, // Dustox + 108, // Lickitung + 235, // Smeargle + 171, // Lanturn + 101, // Electrode + 271, // Lombre + 286, // Breloom + 153, // Bayleef + 117, // Seadra + 110, // Weezing + 279, // Pelipper + 375, // Metang + 31, // Nidoqueen + 332, // Cacturne + 275, // Shiftry + 308, // Medicham + 335, // Zangoose + 141, // Kabutops + 99, // Kingler + 64, // Kadabra + 119, // Seaking + 36, // Clefable + 126, // Magmar + 202, // Wobbuffet + 92, // Gastly + 122, // Mr. mime + 62, // Poliwrath + 128, // Tauros + 380, // Latias + 181, // Ampharos + 288, // Vigoroth + 166, // Ledian + 76, // Golem + 365, // Walrein + 84, // Doduo + 229, // Houndoom + 34, // Nidoking + 124, // Jynx + 107, // Hitmonchan + 234, // Stantler + 210, // Granbull + 237, // Hitmontop + 195, // Quagsire + 344, // Claydol + 260, // Swampert + 242, // Blissey + 272, // Ludicolo + 295, // Exploud + 206, // Dunsparce + 127, // Pinsir + 91, // Cloyster + 67, // Machoke + 203, // Girafarig + 18, // Pidgeot + 178, // Xatu + 346, // Cradily + 106, // Hitmonlee + 49, // Venomoth + 94, // Gengar + 214, // Heracross + 362, // Glalie + 123, // Scyther + 373, // Salamence + 310, // Manectric + 348, // Armaldo + 65, // Alakazam + 97, // Hypno + 164, // Noctowl + 73, // Tentacruel + 356, // Dusclops + 145, // Zapdos + 42, // Golbat + 376, // Metagross + 282, // Gardevoir + 9, // Blastoise + 80, // Slowbro + 93, // Haunter + 68, // Machamp + 377, // Regirock + 317, // Swalot + 254, // Sceptile + 227, // Skarmory + 55, // Golduck + 386, // Deoxys + 71, // Victreebel + 78, // Rapidash + 6, // Charizard + 367, // Huntail + 87, // Dewgong + 144, // Articuno + 157, // Typhlosion + 142, // Aerodactyl + 368, // Gorebyss + 217, // Ursaring + 154, // Meganium + 378, // Regice + 212, // Scizor + 230, // Kingdra + 147, // Dratini + 85, // Dodrio + 319, // Sharpedo + 169, // Crobat + 162, // Furret + 59, // Arcanine + 243, // Raikou + 257, // Blaziken + 323, // Camerupt + 112, // Rhydon + 379, // Registeel + 23, // Ekans + 330, // Flygon + 357, // Tropius + 381, // Latios + 245, // Suicune + 146, // Moltres + 3, // Venusaur + 103, // Exeggutor + 199, // Slowking + 248, // Tyranitar + 289, // Slaking + 320, // Wailmer + 150, // Mewtwo + 306, // Aggron + 143, // Snorlax + 226, // Mantine + 244, // Entei + 149, // Dragonite + 115, // Kangaskhan + 297, // Hariyama + 160, // Feraligatr + 131, // Lapras + 336, // Seviper + 24, // Arbok + 383, // Groudon + 250, // Ho-Oh + 148, // Dragonair + 382, // Kyogre + 249, // Lugia + 350, // Milotic + 130, // Gyarados + 384, // Rayquaza + 95, // Onix + 208, // Steelix + 321, // Wailord +}; +const struct OamData gOamData_83A0404 = +{ + .y = 160, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; +const struct OamData gOamData_83A040C = +{ + .y = 160, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; +const struct OamData gOamData_83A0414 = +{ + .y = 160, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; +const struct OamData gOamData_83A041C = +{ + .y = 160, + .affineMode = 0, + .objMode = 2, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; +const struct OamData gOamData_83A0424 = +{ + .y = 160, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 1, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; +const struct OamData gOamData_83A042C = +{ + .y = 160, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 2, + .x = 0, + .matrixNum = 0, + .size = 0, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; +const union AnimCmd gSpriteAnim_83A0434[] = +{ + ANIMCMD_FRAME(3, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A043C[] = +{ + ANIMCMD_FRAME(1, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A0444[] = +{ + ANIMCMD_FRAME(16, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A044C[] = +{ + ANIMCMD_FRAME(32, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A0454[] = +{ + ANIMCMD_FRAME(64, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A045C[] = +{ + ANIMCMD_FRAME(96, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A0464[] = +{ + ANIMCMD_FRAME(128, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A046C[] = +{ + ANIMCMD_FRAME(160, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A0474[] = +{ + ANIMCMD_FRAME(192, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A047C[] = +{ + ANIMCMD_FRAME(224, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A0484[] = +{ + ANIMCMD_FRAME(226, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A048C[] = +{ + ANIMCMD_FRAME(228, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A0494[] = +{ + ANIMCMD_FRAME(230, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A049C[] = +{ + ANIMCMD_FRAME(232, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A04A4[] = +{ + ANIMCMD_FRAME(234, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A04AC[] = +{ + ANIMCMD_FRAME(236, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A04B4[] = +{ + ANIMCMD_FRAME(238, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A04BC[] = +{ + ANIMCMD_FRAME(240, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A04C4[] = +{ + ANIMCMD_FRAME(242, 30), + ANIMCMD_END, +}; +const union AnimCmd gSpriteAnim_83A04CC[] = +{ + ANIMCMD_FRAME(4, 30), + ANIMCMD_END, +}; +const union AnimCmd *const gSpriteAnimTable_83A04D4[] = +{ + gSpriteAnim_83A0434, +}; +const union AnimCmd *const gSpriteAnimTable_83A04D8[] = +{ + gSpriteAnim_83A043C, +}; +const union AnimCmd *const gSpriteAnimTable_83A04DC[] = +{ + gSpriteAnim_83A0444, +}; +const union AnimCmd *const gSpriteAnimTable_83A04E0[] = +{ + gSpriteAnim_83A044C, + gSpriteAnim_83A0454, + gSpriteAnim_83A045C, + gSpriteAnim_83A0464, +}; +const union AnimCmd *const gSpriteAnimTable_83A04F0[] = +{ + gSpriteAnim_83A046C, + gSpriteAnim_83A0474, +}; +const union AnimCmd *const gSpriteAnimTable_83A04F8[] = +{ + gSpriteAnim_83A047C, + gSpriteAnim_83A0484, + gSpriteAnim_83A048C, + gSpriteAnim_83A0494, + gSpriteAnim_83A049C, + gSpriteAnim_83A04A4, + gSpriteAnim_83A04AC, + gSpriteAnim_83A04B4, + gSpriteAnim_83A04BC, + gSpriteAnim_83A04C4, +}; +const union AnimCmd *const gSpriteAnimTable_83A0520[] = +{ + gSpriteAnim_83A04CC, +}; void sub_8090B8C(u8); void sub_8090C28(struct Sprite *); @@ -896,11 +2324,11 @@ bool8 sub_808D344(u8 a) void sub_808D640(void) { if (gPokedexView->unk64C_1) - LoadPalette(gUnknown_0839F67C + 1, 1, 0xBE); + LoadPalette(gUnknown_0839F67C + 1, 1, sizeof(gUnknown_0839F67C) - sizeof(u16)); else if (!IsNationalPokedexEnabled()) LoadPalette(gPokedexMenu_Pal + 1, 1, 0xBE); else - LoadPalette(gUnknown_0839F73C + 0x2, 1, 0xBE); + LoadPalette(gUnknown_0839F73C + 1, 1, sizeof(gUnknown_0839F73C) - sizeof(u16)); } void SortPokedex(u8 dexMode, u8 sortMode) @@ -3154,115 +4582,115 @@ __attribute__((naked)) void sub_8090750(u8 taskId) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x8\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - ldr r1, _08090778 @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldrh r6, [r0, 0xA]\n\ - movs r2, 0x8\n\ - ldrsh r0, [r0, r2]\n\ - adds r4, r1, 0\n\ - cmp r0, 0x6\n\ - bhi _0809079C\n\ - lsls r0, 2\n\ - ldr r1, _0809077C @ =_08090780\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ + push {r4-r7,lr}\n\ + sub sp, 0x8\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + ldr r1, _08090778 @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrh r6, [r0, 0xA]\n\ + movs r2, 0x8\n\ + ldrsh r0, [r0, r2]\n\ + adds r4, r1, 0\n\ + cmp r0, 0x6\n\ + bhi _0809079C\n\ + lsls r0, 2\n\ + ldr r1, _0809077C @ =_08090780\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ _08090778: .4byte gTasks\n\ _0809077C: .4byte _08090780\n\ - .align 2, 0\n\ + .align 2, 0\n\ _08090780:\n\ - .4byte _0809079C\n\ - .4byte _080907E0\n\ - .4byte _0809085C\n\ - .4byte _080908A0\n\ - .4byte _08090960\n\ - .4byte _080909B8\n\ - .4byte _080909F4\n\ + .4byte _0809079C\n\ + .4byte _080907E0\n\ + .4byte _0809085C\n\ + .4byte _080908A0\n\ + .4byte _08090960\n\ + .4byte _080909B8\n\ + .4byte _080909F4\n\ _0809079C:\n\ - ldr r0, _080907D0 @ =gPaletteFade\n\ - ldrb r1, [r0, 0x7]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080907AA\n\ - b _08090A26\n\ + ldr r0, _080907D0 @ =gPaletteFade\n\ + ldrb r1, [r0, 0x7]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080907AA\n\ + b _08090A26\n\ _080907AA:\n\ - ldr r1, _080907D4 @ =gUnknown_03005CEC\n\ - ldr r0, _080907D8 @ =gMain\n\ - ldr r0, [r0, 0xC]\n\ - str r0, [r1]\n\ - movs r0, 0\n\ - bl SetVBlankCallback\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - bl sub_8091060\n\ - ldr r1, _080907DC @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x1\n\ - strh r1, [r0, 0x8]\n\ - b _08090A26\n\ - .align 2, 0\n\ + ldr r1, _080907D4 @ =gUnknown_03005CEC\n\ + ldr r0, _080907D8 @ =gMain\n\ + ldr r0, [r0, 0xC]\n\ + str r0, [r1]\n\ + movs r0, 0\n\ + bl SetVBlankCallback\n\ + movs r0, 0x80\n\ + lsls r0, 1\n\ + bl sub_8091060\n\ + ldr r1, _080907DC @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + movs r1, 0x1\n\ + strh r1, [r0, 0x8]\n\ + b _08090A26\n\ + .align 2, 0\n\ _080907D0: .4byte gPaletteFade\n\ _080907D4: .4byte gUnknown_03005CEC\n\ _080907D8: .4byte gMain\n\ _080907DC: .4byte gTasks\n\ _080907E0:\n\ - ldr r0, _08090840 @ =gPokedexMenu_Gfx\n\ - ldr r1, _08090844 @ =0x06004000\n\ - bl LZ77UnCompVram\n\ - ldr r0, _08090848 @ =gUnknown_08E96BD4\n\ - ldr r4, _0809084C @ =0x06007800\n\ - adds r1, r4, 0\n\ - bl LZ77UnCompVram\n\ - movs r2, 0\n\ - lsls r5, r7, 2\n\ - mov r12, r5\n\ - movs r0, 0x80\n\ - lsls r0, 6\n\ - adds r6, r0, 0\n\ - ldr r3, _08090850 @ =0x0000027f\n\ + ldr r0, _08090840 @ =gPokedexMenu_Gfx\n\ + ldr r1, _08090844 @ =0x06004000\n\ + bl LZ77UnCompVram\n\ + ldr r0, _08090848 @ =gUnknown_08E96BD4\n\ + ldr r4, _0809084C @ =0x06007800\n\ + adds r1, r4, 0\n\ + bl LZ77UnCompVram\n\ + movs r2, 0\n\ + lsls r5, r7, 2\n\ + mov r12, r5\n\ + movs r0, 0x80\n\ + lsls r0, 6\n\ + adds r6, r0, 0\n\ + ldr r3, _08090850 @ =0x0000027f\n\ _08090800:\n\ - lsls r0, r2, 1\n\ - adds r0, r4\n\ - ldrh r5, [r0]\n\ - adds r1, r6, r5\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, r3\n\ - bls _08090800\n\ - ldr r0, _08090854 @ =gTasks\n\ - mov r1, r12\n\ - adds r4, r1, r7\n\ - lsls r4, 3\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0xA]\n\ - movs r2, 0xFF\n\ - lsls r2, 2\n\ - movs r1, 0x2\n\ - bl sub_8091738\n\ - bl ResetPaletteFade\n\ - ldr r0, _08090858 @ =gPokedexMenu_Pal + 0x2\n\ - movs r1, 0x21\n\ - movs r2, 0x9E\n\ - bl LoadPalette\n\ - ldrh r0, [r4, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x8]\n\ - b _08090A26\n\ - .align 2, 0\n\ + lsls r0, r2, 1\n\ + adds r0, r4\n\ + ldrh r5, [r0]\n\ + adds r1, r6, r5\n\ + strh r1, [r0]\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, r3\n\ + bls _08090800\n\ + ldr r0, _08090854 @ =gTasks\n\ + mov r1, r12\n\ + adds r4, r1, r7\n\ + lsls r4, 3\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0xA]\n\ + movs r2, 0xFF\n\ + lsls r2, 2\n\ + movs r1, 0x2\n\ + bl sub_8091738\n\ + bl ResetPaletteFade\n\ + ldr r0, _08090858 @ =gPokedexMenu_Pal + 0x2\n\ + movs r1, 0x21\n\ + movs r2, 0x9E\n\ + bl LoadPalette\n\ + ldrh r0, [r4, 0x8]\n\ + adds r0, 0x1\n\ + strh r0, [r4, 0x8]\n\ + b _08090A26\n\ + .align 2, 0\n\ _08090840: .4byte gPokedexMenu_Gfx\n\ _08090844: .4byte 0x06004000\n\ _08090848: .4byte gUnknown_08E96BD4\n\ @@ -3271,213 +4699,213 @@ _08090850: .4byte 0x0000027f\n\ _08090854: .4byte gTasks\n\ _08090858: .4byte gPokedexMenu_Pal + 0x2\n\ _0809085C:\n\ - ldr r4, _0809088C @ =gWindowConfig_81E7064\n\ - adds r0, r4, 0\n\ - bl SetUpWindowConfig\n\ - adds r0, r4, 0\n\ - bl InitMenuWindow\n\ - ldr r2, _08090890 @ =0x0600c000\n\ - add r1, sp, 0x4\n\ - movs r0, 0\n\ - strh r0, [r1]\n\ - ldr r0, _08090894 @ =0x040000d4\n\ - str r1, [r0]\n\ - str r2, [r0, 0x4]\n\ - ldr r1, _08090898 @ =0x81000100\n\ - str r1, [r0, 0x8]\n\ - ldr r0, [r0, 0x8]\n\ - ldr r1, _0809089C @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - b _080909E0\n\ - .align 2, 0\n\ + ldr r4, _0809088C @ =gWindowConfig_81E7064\n\ + adds r0, r4, 0\n\ + bl SetUpWindowConfig\n\ + adds r0, r4, 0\n\ + bl InitMenuWindow\n\ + ldr r2, _08090890 @ =0x0600c000\n\ + add r1, sp, 0x4\n\ + movs r0, 0\n\ + strh r0, [r1]\n\ + ldr r0, _08090894 @ =0x040000d4\n\ + str r1, [r0]\n\ + str r2, [r0, 0x4]\n\ + ldr r1, _08090898 @ =0x81000100\n\ + str r1, [r0, 0x8]\n\ + ldr r0, [r0, 0x8]\n\ + ldr r1, _0809089C @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + b _080909E0\n\ + .align 2, 0\n\ _0809088C: .4byte gWindowConfig_81E7064\n\ _08090890: .4byte 0x0600c000\n\ _08090894: .4byte 0x040000d4\n\ _08090898: .4byte 0x81000100\n\ _0809089C: .4byte gTasks\n\ _080908A0:\n\ - ldr r0, _080908C8 @ =gDexText_RegisterComplete\n\ - movs r1, 0x2\n\ - movs r2, 0\n\ - movs r3, 0xD0\n\ - bl sub_8072BD8\n\ - bl IsNationalPokedexEnabled\n\ - cmp r0, 0\n\ - bne _080908CC\n\ - adds r0, r6, 0\n\ - bl NationalToHoennOrder\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0xD\n\ - movs r2, 0x3\n\ - bl sub_8091154\n\ - b _080908D6\n\ - .align 2, 0\n\ + ldr r0, _080908C8 @ =gDexText_RegisterComplete\n\ + movs r1, 0x2\n\ + movs r2, 0\n\ + movs r3, 0xD0\n\ + bl sub_8072BD8\n\ + bl IsNationalPokedexEnabled\n\ + cmp r0, 0\n\ + bne _080908CC\n\ + adds r0, r6, 0\n\ + bl NationalToHoennOrder\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0xD\n\ + movs r2, 0x3\n\ + bl sub_8091154\n\ + b _080908D6\n\ + .align 2, 0\n\ _080908C8: .4byte gDexText_RegisterComplete\n\ _080908CC:\n\ - adds r0, r6, 0\n\ - movs r1, 0xD\n\ - movs r2, 0x3\n\ - bl sub_8091154\n\ + adds r0, r6, 0\n\ + movs r1, 0xD\n\ + movs r2, 0x3\n\ + bl sub_8091154\n\ _080908D6:\n\ - adds r0, r6, 0\n\ - movs r1, 0x10\n\ - movs r2, 0x3\n\ - bl sub_80911C8\n\ - ldr r0, _0809094C @ =gDexText_UnknownPoke\n\ - movs r1, 0xB\n\ - movs r2, 0x5\n\ - bl MenuPrint\n\ - ldr r0, _08090950 @ =gDexText_UnknownHeight\n\ - movs r1, 0x10\n\ - movs r2, 0x7\n\ - bl MenuPrint\n\ - ldr r0, _08090954 @ =gDexText_UnknownWeight\n\ - movs r1, 0x10\n\ - movs r2, 0x9\n\ - bl MenuPrint\n\ - lsls r4, r6, 3\n\ - adds r4, r6\n\ - lsls r4, 2\n\ - ldr r6, _08090958 @ =gPokedexEntries\n\ - adds r5, r4, r6\n\ - adds r0, r5, 0\n\ - movs r1, 0xB\n\ - movs r2, 0x5\n\ - bl sub_8091304\n\ - ldrh r0, [r5, 0xC]\n\ - movs r1, 0x10\n\ - movs r2, 0x7\n\ - bl sub_8091458\n\ - ldrh r0, [r5, 0xE]\n\ - movs r1, 0x10\n\ - movs r2, 0x9\n\ - bl sub_8091564\n\ - adds r6, 0x10\n\ - adds r4, r6\n\ - ldr r0, [r4]\n\ - movs r1, 0x2\n\ - movs r2, 0xD\n\ - bl MenuPrint\n\ - movs r1, 0xFF\n\ - lsls r1, 2\n\ - movs r0, 0xE\n\ - bl sub_80917CC\n\ - ldr r1, _0809095C @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - b _080909E0\n\ - .align 2, 0\n\ + adds r0, r6, 0\n\ + movs r1, 0x10\n\ + movs r2, 0x3\n\ + bl sub_80911C8\n\ + ldr r0, _0809094C @ =gDexText_UnknownPoke\n\ + movs r1, 0xB\n\ + movs r2, 0x5\n\ + bl MenuPrint\n\ + ldr r0, _08090950 @ =gDexText_UnknownHeight\n\ + movs r1, 0x10\n\ + movs r2, 0x7\n\ + bl MenuPrint\n\ + ldr r0, _08090954 @ =gDexText_UnknownWeight\n\ + movs r1, 0x10\n\ + movs r2, 0x9\n\ + bl MenuPrint\n\ + lsls r4, r6, 3\n\ + adds r4, r6\n\ + lsls r4, 2\n\ + ldr r6, _08090958 @ =gPokedexEntries\n\ + adds r5, r4, r6\n\ + adds r0, r5, 0\n\ + movs r1, 0xB\n\ + movs r2, 0x5\n\ + bl sub_8091304\n\ + ldrh r0, [r5, 0xC]\n\ + movs r1, 0x10\n\ + movs r2, 0x7\n\ + bl sub_8091458\n\ + ldrh r0, [r5, 0xE]\n\ + movs r1, 0x10\n\ + movs r2, 0x9\n\ + bl sub_8091564\n\ + adds r6, 0x10\n\ + adds r4, r6\n\ + ldr r0, [r4]\n\ + movs r1, 0x2\n\ + movs r2, 0xD\n\ + bl MenuPrint\n\ + movs r1, 0xFF\n\ + lsls r1, 2\n\ + movs r0, 0xE\n\ + bl sub_80917CC\n\ + ldr r1, _0809095C @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + b _080909E0\n\ + .align 2, 0\n\ _0809094C: .4byte gDexText_UnknownPoke\n\ _08090950: .4byte gDexText_UnknownHeight\n\ _08090954: .4byte gDexText_UnknownWeight\n\ _08090958: .4byte gPokedexEntries\n\ _0809095C: .4byte gTasks\n\ _08090960:\n\ - adds r0, r6, 0\n\ - movs r1, 0x30\n\ - movs r2, 0x38\n\ - movs r3, 0\n\ - bl sub_80918EC\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - ldr r0, _080909AC @ =gSprites\n\ - lsls r1, r4, 4\n\ - adds r1, r4\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r2, [r1, 0x5]\n\ - movs r0, 0xD\n\ - negs r0, r0\n\ - ands r0, r2\n\ - strb r0, [r1, 0x5]\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - movs r1, 0\n\ - str r1, [sp]\n\ - movs r2, 0x10\n\ - movs r3, 0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, _080909B0 @ =gUnknown_03005CEC\n\ - ldr r0, [r0]\n\ - bl SetVBlankCallback\n\ - ldr r1, _080909B4 @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r4, [r0, 0xE]\n\ - b _080909E0\n\ - .align 2, 0\n\ + adds r0, r6, 0\n\ + movs r1, 0x30\n\ + movs r2, 0x38\n\ + movs r3, 0\n\ + bl sub_80918EC\n\ + adds r4, r0, 0\n\ + lsls r4, 24\n\ + lsrs r4, 24\n\ + ldr r0, _080909AC @ =gSprites\n\ + lsls r1, r4, 4\n\ + adds r1, r4\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldrb r2, [r1, 0x5]\n\ + movs r0, 0xD\n\ + negs r0, r0\n\ + ands r0, r2\n\ + strb r0, [r1, 0x5]\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + movs r1, 0\n\ + str r1, [sp]\n\ + movs r2, 0x10\n\ + movs r3, 0\n\ + bl BeginNormalPaletteFade\n\ + ldr r0, _080909B0 @ =gUnknown_03005CEC\n\ + ldr r0, [r0]\n\ + bl SetVBlankCallback\n\ + ldr r1, _080909B4 @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r4, [r0, 0xE]\n\ + b _080909E0\n\ + .align 2, 0\n\ _080909AC: .4byte gSprites\n\ _080909B0: .4byte gUnknown_03005CEC\n\ _080909B4: .4byte gTasks\n\ _080909B8:\n\ - ldr r0, _080909E8 @ =REG_BLDCNT\n\ - movs r1, 0\n\ - strh r1, [r0]\n\ - adds r0, 0x2\n\ - strh r1, [r0]\n\ - adds r0, 0x2\n\ - strh r1, [r0]\n\ - ldr r1, _080909EC @ =REG_BG3CNT\n\ - ldr r2, _080909F0 @ =0x00000f07\n\ - adds r0, r2, 0\n\ - strh r0, [r1]\n\ - subs r1, 0xE\n\ - movs r5, 0xE2\n\ - lsls r5, 5\n\ - adds r0, r5, 0\n\ - strh r0, [r1]\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r4\n\ + ldr r0, _080909E8 @ =REG_BLDCNT\n\ + movs r1, 0\n\ + strh r1, [r0]\n\ + adds r0, 0x2\n\ + strh r1, [r0]\n\ + adds r0, 0x2\n\ + strh r1, [r0]\n\ + ldr r1, _080909EC @ =REG_BG3CNT\n\ + ldr r2, _080909F0 @ =0x00000f07\n\ + adds r0, r2, 0\n\ + strh r0, [r1]\n\ + subs r1, 0xE\n\ + movs r5, 0xE2\n\ + lsls r5, 5\n\ + adds r0, r5, 0\n\ + strh r0, [r1]\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r4\n\ _080909E0:\n\ - ldrh r1, [r0, 0x8]\n\ - adds r1, 0x1\n\ - strh r1, [r0, 0x8]\n\ - b _08090A26\n\ - .align 2, 0\n\ + ldrh r1, [r0, 0x8]\n\ + adds r1, 0x1\n\ + strh r1, [r0, 0x8]\n\ + b _08090A26\n\ + .align 2, 0\n\ _080909E8: .4byte 0x04000050\n\ _080909EC: .4byte 0x0400000E\n\ _080909F0: .4byte 0x00000f07\n\ _080909F4:\n\ - ldr r0, _08090A30 @ =gPaletteFade\n\ - ldrb r1, [r0, 0x7]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, 0\n\ - bne _08090A26\n\ - adds r0, r6, 0\n\ - bl NationalPokedexNumToSpecies\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0\n\ - bl PlayCry1\n\ - ldr r1, _08090A34 @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r5, [r0, 0xC]\n\ - strh r5, [r0, 0x10]\n\ - ldr r1, _08090A38 @ =sub_8090A3C\n\ - str r1, [r0]\n\ + ldr r0, _08090A30 @ =gPaletteFade\n\ + ldrb r1, [r0, 0x7]\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0\n\ + bne _08090A26\n\ + adds r0, r6, 0\n\ + bl NationalPokedexNumToSpecies\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0\n\ + bl PlayCry1\n\ + ldr r1, _08090A34 @ =gTasks\n\ + lsls r0, r7, 2\n\ + adds r0, r7\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + strh r5, [r0, 0xC]\n\ + strh r5, [r0, 0x10]\n\ + ldr r1, _08090A38 @ =sub_8090A3C\n\ + str r1, [r0]\n\ _08090A26:\n\ - add sp, 0x8\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + add sp, 0x8\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _08090A30: .4byte gPaletteFade\n\ _08090A34: .4byte gTasks\n\ _08090A38: .4byte sub_8090A3C\n\ @@ -4677,49 +6105,49 @@ __attribute__((naked)) void sub_8092810(u8 a, u8 b, u8 c, u8 d) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r12, r1\n\ - lsls r2, 24\n\ - lsrs r1, r2, 24\n\ - lsls r3, 24\n\ - lsrs r5, r3, 8\n\ - movs r3, 0\n\ - cmp r5, 0\n\ - beq _0809285A\n\ - lsls r7, r1, 6\n\ - ldr r6, _08092860 @ =0x00000fff\n\ - lsls r4, r0, 12\n\ + push {r4-r7,lr}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + mov r12, r1\n\ + lsls r2, 24\n\ + lsrs r1, r2, 24\n\ + lsls r3, 24\n\ + lsrs r5, r3, 8\n\ + movs r3, 0\n\ + cmp r5, 0\n\ + beq _0809285A\n\ + lsls r7, r1, 6\n\ + ldr r6, _08092860 @ =0x00000fff\n\ + lsls r4, r0, 12\n\ _08092830:\n\ - mov r0, r12\n\ - adds r1, r0, r3\n\ - lsls r1, 1\n\ - adds r1, r7, r1\n\ - ldr r0, _08092864 @ =0x06007800\n\ - adds r2, r1, r0\n\ - ldrh r0, [r2]\n\ - ands r0, r6\n\ - orrs r0, r4\n\ - strh r0, [r2]\n\ - ldr r0, _08092868 @ =0x06007840\n\ - adds r1, r0\n\ - ldrh r0, [r1]\n\ - ands r0, r6\n\ - orrs r0, r4\n\ - strh r0, [r1]\n\ - adds r0, r3, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r0, r5\n\ - bcc _08092830\n\ + mov r0, r12\n\ + adds r1, r0, r3\n\ + lsls r1, 1\n\ + adds r1, r7, r1\n\ + ldr r0, _08092864 @ =0x06007800\n\ + adds r2, r1, r0\n\ + ldrh r0, [r2]\n\ + ands r0, r6\n\ + orrs r0, r4\n\ + strh r0, [r2]\n\ + ldr r0, _08092868 @ =0x06007840\n\ + adds r1, r0\n\ + ldrh r0, [r1]\n\ + ands r0, r6\n\ + orrs r0, r4\n\ + strh r0, [r1]\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r0, r5\n\ + bcc _08092830\n\ _0809285A:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _08092860: .4byte 0x00000fff\n\ _08092864: .4byte 0x06007800\n\ _08092868: .4byte 0x06007840\n\ -- cgit v1.2.3 From f37f616252c89d9138489d13c79ca630d5477afd Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 14 Jun 2017 18:43:32 -0500 Subject: remove gPokedexView from pokedex.h --- src/pokedex.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index dd0c669d4..b6333b8fa 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -19,6 +19,58 @@ #include "task.h" #include "trig.h" +struct PokedexListItem +{ + u16 dexNum; + u16 seen:1; + u16 owned:1; +}; + +struct PokedexView +{ + struct PokedexListItem unk0[386]; + u16 unk608; + u8 unk60A_1:1; + u8 unk60A_2:1; + u8 unk60B; + u16 unk60C; + u16 selectedPokemon; + u16 unk610; + u16 dexMode; //National or Hoenn + u16 unk614; + u16 dexOrder; + u16 unk618; + u16 unk61A; + u16 unk61C; + u16 unk61E[4]; + u16 unk626; //sprite id of selected Pokemon + u16 unk628; + u16 unk62A; + u8 unk62C; + u8 unk62D; + u8 unk62E; + u8 unk62F; + s16 unk630; + s16 unk632; + u16 unk634; + u16 unk636; + u16 unk638; + u16 unk63A[4]; + u8 filler642[8]; + u8 unk64A; + u8 unk64B; + u8 unk64C_1:1; + u8 selectedScreen; + u8 unk64E; // description page + u8 unk64F; + u8 menuIsOpen; //menuIsOpen + u8 unk651; + u16 menuCursorPos; //Menu cursor position + s16 menuY; //Menu Y position (inverted because we use REG_BG0VOFS for this) + u8 unk656[8]; + u8 unk65E[8]; +}; + // I'm #define-ing these just for now so I can keep using the old unkXXX member names #define unk60E selectedPokemon #define unk612 dexMode @@ -1602,6 +1654,8 @@ const union AnimCmd *const gSpriteAnimTable_83A0520[] = gSpriteAnim_83A04CC, }; +static u8 sub_808F210(struct PokedexListItem *, u8); +static u8 sub_808F284(struct PokedexListItem *, u8); void sub_8090B8C(u8); void sub_8090C28(struct Sprite *); u16 NationalPokedexNumToSpecies(u16); @@ -1666,7 +1720,7 @@ void sub_808C0B8(void) TransferPlttBuffer(); } -void ClearPokedexView(struct PokedexView *pokedexView) +static void ClearPokedexView(struct PokedexView *pokedexView) { u16 i; @@ -3587,7 +3641,7 @@ void sub_808F168(struct Sprite *sprite) } } -u8 sub_808F210(struct PokedexListItem *item, u8 b) +static u8 sub_808F210(struct PokedexListItem *item, u8 b) { u8 taskId; @@ -3609,7 +3663,7 @@ bool8 sub_808F250(u8 taskId) return 1; } -u8 sub_808F284(struct PokedexListItem *item, u8 b) +static u8 sub_808F284(struct PokedexListItem *item, u8 b) { gUnknown_0202FFBC = item; gTasks[b].data[0] = 1; -- cgit v1.2.3 From f8765c07ab36bd009036e44a97a131b0a7d8fe27 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 14 Jun 2017 20:52:56 -0500 Subject: style and formatting --- src/pokedex.c | 545 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 275 insertions(+), 270 deletions(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index b6333b8fa..5f34a57c2 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -19,6 +19,8 @@ #include "task.h" #include "trig.h" +#define NATIONAL_DEX_COUNT 386 + struct PokedexListItem { u16 dexNum; @@ -28,22 +30,22 @@ struct PokedexListItem struct PokedexView { - struct PokedexListItem unk0[386]; + struct PokedexListItem unk0[NATIONAL_DEX_COUNT]; u16 unk608; u8 unk60A_1:1; u8 unk60A_2:1; u8 unk60B; - u16 unk60C; + u16 pokemonListCount; u16 selectedPokemon; u16 unk610; - u16 dexMode; //National or Hoenn + u16 dexMode; u16 unk614; u16 dexOrder; u16 unk618; u16 unk61A; u16 unk61C; u16 unk61E[4]; - u16 unk626; //sprite id of selected Pokemon + u16 selectedMonSpriteId; u16 unk628; u16 unk62A; u8 unk62C; @@ -61,7 +63,7 @@ struct PokedexView u8 unk64B; u8 unk64C_1:1; u8 selectedScreen; - u8 unk64E; // description page + u8 descriptionPageNum; u8 unk64F; u8 menuIsOpen; //menuIsOpen u8 unk651; @@ -71,15 +73,6 @@ struct PokedexView u8 unk65E[8]; }; -// I'm #define-ing these just for now so I can keep using the old unkXXX member names -#define unk60E selectedPokemon -#define unk612 dexMode -#define unk616 dexOrder -#define unk64D selectedScreen -#define unk650 menuIsOpen -#define unk652 menuCursorPos -#define unk654 menuY - enum { DEX_MODE_HOENN, @@ -1654,11 +1647,12 @@ const union AnimCmd *const gSpriteAnimTable_83A0520[] = gSpriteAnim_83A04CC, }; +static u32 sub_808E8C8(u16 a, s16 b, s16 c); static u8 sub_808F210(struct PokedexListItem *, u8); static u8 sub_808F284(struct PokedexListItem *, u8); void sub_8090B8C(u8); void sub_8090C28(struct Sprite *); -u16 NationalPokedexNumToSpecies(u16); +u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d); //Not sure of return type void sub_8091E54(u8); void sub_809204C(u8); void sub_809207C(u8); @@ -1680,7 +1674,7 @@ u8 sub_8092E10(u8, u8); void sub_8092EB0(u8); void sub_809308C(u8); -// asm/pokedex_area_screen +extern u16 NationalPokedexNumToSpecies(u16); void ShowPokedexAreaScreen(u16 species, u8 *string); void ResetPokedex(void) @@ -1724,7 +1718,7 @@ static void ClearPokedexView(struct PokedexView *pokedexView) { u16 i; - for (i = 0; i <= 385; i++) + for (i = 0; i < NATIONAL_DEX_COUNT; i++) { pokedexView->unk0[i].dexNum |= 0xFFFF; pokedexView->unk0[i].seen = 0; @@ -1733,7 +1727,7 @@ static void ClearPokedexView(struct PokedexView *pokedexView) pokedexView->unk608 = 0; pokedexView->unk60A_1 = 0; pokedexView->unk60A_2 = 0; - pokedexView->unk60C = 0; + pokedexView->pokemonListCount = 0; pokedexView->selectedPokemon = 0; pokedexView->unk610 = 0; pokedexView->dexMode = 0; @@ -1838,7 +1832,7 @@ void CB2_InitPokedex(void) gPokedexView->selectedPokemon = gUnknown_0202FFB8; gPokedexView->unk62C = gUnknown_0202FFBA; gPokedexView->selectedScreen = PAGE_SCREEN; - gPokedexView->unk64E = 0; + gPokedexView->descriptionPageNum = 0; if (!IsNationalPokedexEnabled()) { gPokedexView->unk61A = GetHoennPokedexCount(0); @@ -1925,9 +1919,9 @@ void Task_PokedexMainScreen(u8 taskId) { sub_808E6BC(); BeginNormalPaletteFade( - ~(1 << (gSprites[gPokedexView->unk626].oam.paletteNum + 16)), + ~(1 << (gSprites[gPokedexView->selectedMonSpriteId].oam.paletteNum + 16)), 0, 0, 0x10, 0); - gSprites[gPokedexView->unk626].callback = sub_808EDB8; + gSprites[gPokedexView->selectedMonSpriteId].callback = sub_808EDB8; gTasks[taskId].func = sub_808CA64; PlaySE(SE_PIN); } @@ -1972,9 +1966,7 @@ void Task_PokedexMainScreen(u8 taskId) void sub_808C898(u8 taskId) { if (sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636)) - { gTasks[taskId].func = Task_PokedexMainScreen; - } } //Bring up menu and process menu input @@ -2003,8 +1995,8 @@ void Task_PokedexMainScreenMenu(u8 taskId) gMain.newKeys |= START_BUTTON; //Exit menu break; case 2: //LIST BOTTOM - gPokedexView->selectedPokemon = gPokedexView->unk60C - 1; - gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30; + gPokedexView->selectedPokemon = gPokedexView->pokemonListCount - 1; + gPokedexView->unk62C = gPokedexView->pokemonListCount * 16 + 0x30; sub_808E82C(); sub_808E0CC(gPokedexView->selectedPokemon, 0xE); gMain.newKeys |= START_BUTTON; //Exit menu @@ -2039,11 +2031,11 @@ void Task_PokedexMainScreenMenu(u8 taskId) void sub_808CA64(u8 taskId) { - if (gSprites[gPokedexView->unk626].pos1.x == 0x30 && - gSprites[gPokedexView->unk626].pos1.y == 0x38) + if (gSprites[gPokedexView->selectedMonSpriteId].pos1.x == 48 + && gSprites[gPokedexView->selectedMonSpriteId].pos1.y == 56) { gPokedexView->unk64B = gPokedexView->unk64A; - gTasks[taskId].data[0] = sub_808F210(&gPokedexView->unk0[gPokedexView->selectedPokemon], gPokedexView->unk626); + gTasks[taskId].data[0] = sub_808F210(&gPokedexView->unk0[gPokedexView->selectedPokemon], gPokedexView->selectedMonSpriteId); gTasks[taskId].func = sub_808CAE4; } } @@ -2052,12 +2044,8 @@ void sub_808CAE4(u8 taskId) { if (gTasks[gTasks[taskId].data[0]].isActive) { - if (gPokedexView->unk64A == 1 && - !sub_808F250(gTasks[taskId].data[0]) && - sub_808E71C()) - { + if (gPokedexView->unk64A == 1 && !sub_808F250(gTasks[taskId].data[0]) && sub_808E71C()) sub_808F284(&gPokedexView->unk0[gPokedexView->selectedPokemon], gTasks[taskId].data[0]); - } } else { @@ -2073,7 +2061,7 @@ void sub_808CB8C(u8 taskId) if (!isActive) { - if (gPokedexView->unk64F) + if (gPokedexView->unk64F != 0) { gPokedexView->selectedPokemon = isActive; gPokedexView->unk62C = 0x40; @@ -2118,7 +2106,9 @@ void Task_PokedexResultsScreen(u8 taskId) REG_BG0VOFS = gPokedexView->menuY; if (gPokedexView->menuY) + { gPokedexView->menuY -= 8; + } else { if ((gMain.newKeys & A_BUTTON) && gPokedexView->unk0[gPokedexView->selectedPokemon].seen) @@ -2126,8 +2116,8 @@ void Task_PokedexResultsScreen(u8 taskId) u32 a; sub_808E6BC(); - a = (1 << (gSprites[gPokedexView->unk626].oam.paletteNum + 16)); - gSprites[gPokedexView->unk626].callback = sub_808EDB8; + a = (1 << (gSprites[gPokedexView->selectedMonSpriteId].oam.paletteNum + 16)); + gSprites[gPokedexView->selectedMonSpriteId].callback = sub_808EDB8; BeginNormalPaletteFade(~a, 0, 0, 0x10, 0); gTasks[taskId].func = sub_808D118; PlaySE(SE_PIN); @@ -2174,8 +2164,10 @@ void Task_PokedexResultsScreenMenu(u8 taskId) { REG_BG0VOFS = gPokedexView->menuY; - if (gPokedexView->menuY != 0x60) + if (gPokedexView->menuY != 96) + { gPokedexView->menuY += 8; + } else { if (gMain.newKeys & A_BUTTON) @@ -2194,8 +2186,8 @@ void Task_PokedexResultsScreenMenu(u8 taskId) gMain.newKeys |= START_BUTTON; break; case 2: //LIST BOTTOM - gPokedexView->selectedPokemon = gPokedexView->unk60C - 1; - gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30; + gPokedexView->selectedPokemon = gPokedexView->pokemonListCount - 1; + gPokedexView->unk62C = gPokedexView->pokemonListCount * 16 + 0x30; sub_808E82C(); sub_808E0CC(gPokedexView->selectedPokemon, 0xE); gMain.newKeys |= START_BUTTON; @@ -2235,11 +2227,11 @@ void Task_PokedexResultsScreenMenu(u8 taskId) void sub_808D118(u8 taskId) { - if (gSprites[gPokedexView->unk626].pos1.x == 0x30 && - gSprites[gPokedexView->unk626].pos1.y == 0x38) + if (gSprites[gPokedexView->selectedMonSpriteId].pos1.x == 48 + && gSprites[gPokedexView->selectedMonSpriteId].pos1.y == 56) { gPokedexView->unk64B = gPokedexView->unk64A; - gTasks[taskId].data[0] = sub_808F210(&gPokedexView->unk0[gPokedexView->selectedPokemon], gPokedexView->unk626); + gTasks[taskId].data[0] = sub_808F210(&gPokedexView->unk0[gPokedexView->selectedPokemon], gPokedexView->selectedMonSpriteId); gTasks[taskId].func = sub_808D198; } } @@ -2248,12 +2240,8 @@ void sub_808D198(u8 taskId) { if (gTasks[gTasks[taskId].data[0]].isActive) { - if (gPokedexView->unk64A == 1 && - !sub_808F250(gTasks[taskId].data[0]) && - sub_808E71C()) - { + if (gPokedexView->unk64A == 1 && !sub_808F250(gTasks[taskId].data[0]) && sub_808E71C()) sub_808F284(&gPokedexView->unk0[gPokedexView->selectedPokemon], gTasks[taskId].data[0]); - } } else { @@ -2298,7 +2286,6 @@ bool8 sub_808D344(u8 a) default: if (gPaletteFade.active) return 0; - //_0808D39E SetVBlankCallback(NULL); gPokedexView->unk64A = a; sub_8091060(0); @@ -2367,12 +2354,11 @@ bool8 sub_808D344(u8 a) if (!gPaletteFade.active) { gMain.state = 0; - return 1; + return TRUE; } - else - return 0; + break; } - return 0; + return FALSE; } void sub_808D640(void) @@ -2390,7 +2376,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever. s16 i; - gPokedexView->unk60C = 0; + gPokedexView->pokemonListCount = 0; switch (dexMode) { @@ -2402,7 +2388,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) case DEX_MODE_NATIONAL: if (IsNationalPokedexEnabled()) { - vars[0] = 386; + vars[0] = NATIONAL_DEX_COUNT; vars[1] = 0; } else @@ -2416,7 +2402,6 @@ void SortPokedex(u8 dexMode, u8 sortMode) switch (sortMode) { case 0: - { if (vars[1]) { for (i = 0; i < vars[0]; i++) @@ -2426,7 +2411,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) gPokedexView->unk0[i].seen = sub_8090D90(vars[2], 0); gPokedexView->unk0[i].owned = sub_8090D90(vars[2], 1); if (gPokedexView->unk0[i].seen) - gPokedexView->unk60C = i + 1; + gPokedexView->pokemonListCount = i + 1; } } else @@ -2447,13 +2432,12 @@ void SortPokedex(u8 dexMode, u8 sortMode) gPokedexView->unk0[r5].seen = sub_8090D90(vars[2], 0); gPokedexView->unk0[r5].owned = sub_8090D90(vars[2], 1); if (gPokedexView->unk0[r5].seen) - gPokedexView->unk60C = r5 + 1; + gPokedexView->pokemonListCount = r5 + 1; r5++; } } } break; - } case 1: for (i = 0; i < 411; i++) { @@ -2461,71 +2445,72 @@ void SortPokedex(u8 dexMode, u8 sortMode) if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0)) { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = sub_8090D90(vars[2], 1); - gPokedexView->unk60C++; + gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; + gPokedexView->unk0[gPokedexView->pokemonListCount].owned = sub_8090D90(vars[2], 1); + gPokedexView->pokemonListCount++; } } break; case 2: - for (i = 385; i >= 0; i--) + for (i = NATIONAL_DEX_COUNT - 1; i >= 0; i--) { vars[2] = gPokedexOrder_Weight[i]; if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; + gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; + gPokedexView->unk0[gPokedexView->pokemonListCount].owned = 1; + gPokedexView->pokemonListCount++; } } break; case 3: - for (i = 0; i < 386; i++) + for (i = 0; i < NATIONAL_DEX_COUNT; i++) { vars[2] = gPokedexOrder_Weight[i]; if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; + gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; + gPokedexView->unk0[gPokedexView->pokemonListCount].owned = 1; + gPokedexView->pokemonListCount++; } } break; case 4: - for (i = 385; i >=0; i--) + for (i = NATIONAL_DEX_COUNT - 1; i >=0; i--) { vars[2] = gPokedexOrder_Height[i]; if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; + gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; + gPokedexView->unk0[gPokedexView->pokemonListCount].owned = 1; + gPokedexView->pokemonListCount++; } } break; case 5: - for (i = 0; i < 386; i++) + for (i = 0; i < NATIONAL_DEX_COUNT; i++) { vars[2] = gPokedexOrder_Height[i]; if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; + gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; + gPokedexView->unk0[gPokedexView->pokemonListCount].owned = 1; + gPokedexView->pokemonListCount++; } } break; } - for (i = gPokedexView->unk60C; i < 386; i++) + + for (i = gPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++) { gPokedexView->unk0[i].dexNum |= 0xFFFF; gPokedexView->unk0[i].seen = 0; @@ -2535,18 +2520,21 @@ void SortPokedex(u8 dexMode, u8 sortMode) void sub_808DBE8(u8 a, u16 b, u16 c) { + s16 _b; + u16 i; + u16 r2; + switch (a) { case 0: default: - { - u16 i; - s16 _b = b - 5; - + _b = b - 5; for (i = 0; i <= 10; i++) { - if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) + if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gPokedexView->unk0[_b].dexNum == 0xFFFF) + { sub_808E090(0x11, i * 2, c); + } else { sub_808E090(0x11, i * 2, c); @@ -2566,13 +2554,12 @@ void sub_808DBE8(u8 a, u16 b, u16 c) _b++; } break; - } case 1: - { - s16 _b = b - 5; - - if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) + _b = b - 5; + if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gPokedexView->unk0[_b].dexNum == 0xFFFF) + { sub_808E090(0x11, gPokedexView->unk630 * 2, c); + } else { sub_808E090(0x11, gPokedexView->unk630 * 2, c); @@ -2590,15 +2577,12 @@ void sub_808DBE8(u8 a, u16 b, u16 c) } } break; - } case 2: - { - s16 _b = b + 5; - u16 r2 = gPokedexView->unk630 + 10; - + _b = b + 5; + r2 = gPokedexView->unk630 + 10; if (r2 > 15) r2 -= 16; - if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) + if (_b < 0 || _b >= NATIONAL_DEX_COUNT || gPokedexView->unk0[_b].dexNum == 0xFFFF) sub_808E090(0x11, r2 * 2, c); else { @@ -2618,7 +2602,6 @@ void sub_808DBE8(u8 a, u16 b, u16 c) } break; } - } } void sub_808DEB0(u16 a, u8 b, u8 c, u16 d) @@ -2631,12 +2614,12 @@ void sub_808DEB0(u16 a, u8 b, u8 c, u16 d) r7 = NationalToHoennOrder(r7); unk[0] = 0x3FC; unk[1] = 0x3FD; - text[0] = r7 / 100 + 0xA1; - text[1] = (r7 % 100) / 10 + 0xA1; - text[2] = (r7 % 100) % 10 + 0xA1; - text[3] = 0xFF; + text[0] = CHAR_0 + r7 / 100; + text[1] = CHAR_0 + (r7 % 100) / 10; + text[2] = CHAR_0 + (r7 % 100) % 10; + text[3] = EOS; *(u16 *)(VRAM + d * 0x800 + c * 0x40 + b * 2) = unk[0]; - *(u16 *)(VRAM + 0x40 + d * 0x800 + c * 0x40 + b * 2) = unk[1]; + *(u16 *)(VRAM + d * 0x800 + (c + 1) * 0x40 + b * 2) = unk[1]; MenuPrint(text, b - 15, c); } @@ -2655,7 +2638,7 @@ void sub_808DF88(u16 a, u8 b, u8 c, u16 d) unk[1] = 0; } *(u16 *)(VRAM + d * 0x800 + c * 0x40 + b * 2) = unk[0]; - *(u16 *)(VRAM + 0x40 + d * 0x800 + c * 0x40 + b * 2) = unk[1]; + *(u16 *)(VRAM + d * 0x800 + (c + 1) * 0x40 + b * 2) = unk[1]; } u8 sub_808DFE4(u16 num, u8 b, u8 c) @@ -2664,8 +2647,9 @@ u8 sub_808DFE4(u16 num, u8 b, u8 c) u8 i; for (i = 0; i < 10; i++) - text[i] = 0; + text[i] = CHAR_SPACE; text[i] = EOS; + num = NationalPokedexNumToSpecies(num); switch (num) { @@ -2675,7 +2659,7 @@ u8 sub_808DFE4(u16 num, u8 b, u8 c) break; case 0: for (i = 0; i < 10; i++) - text[i] = 0xAE; + text[i] = CHAR_HYPHEN; break; } MenuPrint_PixelCoords(text, (b - 0x11) * 8 + 0xFC, c * 8, 0); @@ -2689,7 +2673,7 @@ void sub_808E090(u8 a, u8 b, u16 c) for (i = 0; i < 12; i++) { *(u16 *)(VRAM + c * 0x800 + b * 64 + (a + i) * 2) = 0; - *(u16 *)(VRAM + 0x40 + c * 0x800 + b * 64 + (a + i) * 2) = 0; + *(u16 *)(VRAM + c * 0x800 + (b + 1) * 64 + (a + i) * 2) = 0; } } @@ -2700,10 +2684,11 @@ void sub_808E0CC(u16 a, u16 b) u8 spriteId; for (i = 0; i < 4; i++) - gPokedexView->unk61E[i] |= 0xFFFF; - gPokedexView->unk626 = 0xFFFF; + gPokedexView->unk61E[i] = 0xFFFF; + gPokedexView->selectedMonSpriteId = 0xFFFF; sub_808DBE8(0, a, b); REG_BG2VOFS = gPokedexView->unk62D; + unk = sub_808E888(a - 1); if (unk != 0xFFFF) { @@ -2711,6 +2696,7 @@ void sub_808E0CC(u16 a, u16 b) gSprites[spriteId].callback = sub_808EE28; gSprites[spriteId].data5 = -32; } + unk = sub_808E888(a); if (unk != 0xFFFF) { @@ -2718,6 +2704,7 @@ void sub_808E0CC(u16 a, u16 b) gSprites[spriteId].callback = sub_808EE28; gSprites[spriteId].data5 = 0; } + unk = sub_808E888(a + 1); if (unk != 0xFFFF) { @@ -2725,6 +2712,7 @@ void sub_808E0CC(u16 a, u16 b) gSprites[spriteId].callback = sub_808EE28; gSprites[spriteId].data5 = 32; } + gPokedexView->unk630 = 0; gPokedexView->unk632 = 0; } @@ -2760,13 +2748,12 @@ bool8 sub_808E208(u8 a, u8 b, u8 c) gPokedexView->unk62C += gPokedexView->unk628; break; } - return 0; + return FALSE; } - //_0808E36C else { REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk630 * 16; - return 1; + return TRUE; } } @@ -2785,12 +2772,12 @@ void sub_808E398(u8 a, u16 b) { spriteId = sub_808E8C8(unk, 0x60, 0x50); gSprites[spriteId].callback = sub_808EE28; - gSprites[spriteId].data5 = 0xFFC0; + gSprites[spriteId].data5 = -64; } if (gPokedexView->unk630 > 0) gPokedexView->unk630--; else - gPokedexView->unk630 = 0xF; + gPokedexView->unk630 = 15; break; } case 2: @@ -2825,7 +2812,7 @@ u16 sub_808E48C(u16 a, u16 b) //_0808E4B6 if (gMain.heldKeys & 0x80) { - if (a < gPokedexView->unk60C - 1) + if (a < gPokedexView->pokemonListCount - 1) goto _0808E5C4; } //_0808E4CE @@ -2836,7 +2823,7 @@ u16 sub_808E48C(u16 a, u16 b) //_0808E4E0 for (i = 0; i < 7; i++) { - a = sub_8091818(1, a, 0, gPokedexView->unk60C - 1); + a = sub_8091818(1, a, 0, gPokedexView->pokemonListCount - 1); } gPokedexView->unk62C += (a - r6) * 16; @@ -2846,13 +2833,13 @@ u16 sub_808E48C(u16 a, u16 b) goto _0808E5A2; } //_0808E53C - if (!(gMain.newKeys & 0x10) || a >= gPokedexView->unk60C - 1) + if (!(gMain.newKeys & 0x10) || a >= gPokedexView->pokemonListCount - 1) goto _0808E5A2; r6 = a; for (i = 0; i < 7; i++) { - a = sub_8091818(0, a, 0, gPokedexView->unk60C - 1); + a = sub_8091818(0, a, 0, gPokedexView->pokemonListCount - 1); } gPokedexView->unk62C += (a - r6) * 16; @@ -2869,7 +2856,7 @@ u16 sub_808E48C(u16 a, u16 b) _0808E5C4: r10 = 2; - a = sub_8091818(0, a, 0, gPokedexView->unk60C - 1); + a = sub_8091818(0, a, 0, gPokedexView->pokemonListCount - 1); sub_808E398(2, a); //goto _0808E60E sub_808DBE8(2, a, b); @@ -2879,7 +2866,7 @@ u16 sub_808E48C(u16 a, u16 b) else { r10 = 1; - a = sub_8091818(1, a, 0, gPokedexView->unk60C - 1); + a = sub_8091818(1, a, 0, gPokedexView->pokemonListCount - 1); sub_808E398(1, a); //_0808E60E sub_808DBE8(1, a, b); @@ -3180,7 +3167,7 @@ void sub_808E6BC(void) u16 spriteId = gPokedexView->unk61E[i]; if (gSprites[spriteId].pos2.x == 0 && gSprites[spriteId].pos2.y == 0 && spriteId != 0xFFFF) - gPokedexView->unk626 = spriteId; + gPokedexView->selectedMonSpriteId = spriteId; } } @@ -3194,7 +3181,7 @@ u8 sub_808E71C(void) r2 = r4; while (r2 != 0) { - r2 = sub_8091818(1, r2, 0, gPokedexView->unk60C - 1); + r2 = sub_8091818(1, r2, 0, gPokedexView->pokemonListCount - 1); if (gPokedexView->unk0[r2].seen) { @@ -3212,12 +3199,12 @@ u8 sub_808E71C(void) return 1; } } - else if ((gMain.newKeys & DPAD_DOWN) && r4 < gPokedexView->unk60C - 1) + else if ((gMain.newKeys & DPAD_DOWN) && r4 < gPokedexView->pokemonListCount - 1) { r2 = r4; - while (r2 < gPokedexView->unk60C - 1) + while (r2 < gPokedexView->pokemonListCount - 1) { - r2 = sub_8091818(0, r2, 0, gPokedexView->unk60C - 1); + r2 = sub_8091818(0, r2, 0, gPokedexView->pokemonListCount - 1); if (gPokedexView->unk0[r2].seen) { @@ -3255,7 +3242,7 @@ u8 sub_808E82C(void) u16 sub_808E888(u16 a1) { - if (a1 > 385 || gPokedexView->unk0[a1].dexNum == 0xFFFF) + if (a1 >= NATIONAL_DEX_COUNT || gPokedexView->unk0[a1].dexNum == 0xFFFF) return 0xFFFF; else if (gPokedexView->unk0[a1].seen) return gPokedexView->unk0[a1].dexNum; @@ -3263,7 +3250,7 @@ u16 sub_808E888(u16 a1) return 0; } -u32 sub_808E8C8(u16 a, u16 b, u16 c) +static u32 sub_808E8C8(u16 a, s16 b, s16 c) { u8 i; @@ -3271,7 +3258,7 @@ u32 sub_808E8C8(u16 a, u16 b, u16 c) { if (gPokedexView->unk61E[i] == 0xFFFF) { - u8 spriteId = sub_80918EC(a, (s16)b, (s16)c, i); + u8 spriteId = sub_80918EC(a, b, c, i); gSprites[spriteId].oam.affineMode = 1; gSprites[spriteId].oam.priority = 3; @@ -3290,33 +3277,33 @@ void sub_808E978(u8 a) u8 spriteId; u16 r5; - spriteId = CreateSprite(&gSpriteTemplate_83A053C, 0xB8, 4, 0); + spriteId = CreateSprite(&gSpriteTemplate_83A053C, 184, 4, 0); gSprites[spriteId].data1 = 0; - spriteId = CreateSprite(&gSpriteTemplate_83A053C, 0xB8, 0x9C, 0); + spriteId = CreateSprite(&gSpriteTemplate_83A053C, 184, 156, 0); gSprites[spriteId].data1 = 1; gSprites[spriteId].vFlip = 1; - CreateSprite(&gSpriteTemplate_83A0524, 0xEA, 0x14, 0); - CreateSprite(&gSpriteTemplate_83A0554, 0x10, 0x8A, 0); + CreateSprite(&gSpriteTemplate_83A0524, 234, 20, 0); + CreateSprite(&gSpriteTemplate_83A0554, 16, 138, 0); - spriteId = CreateSprite(&gSpriteTemplate_83A0554, 0x30, 0x8A, 0); + spriteId = CreateSprite(&gSpriteTemplate_83A0554, 48, 138, 0); StartSpriteAnim(&gSprites[spriteId], 3); - spriteId = CreateSprite(&gSpriteTemplate_83A0554, 0x10, 0x9E, 0); + spriteId = CreateSprite(&gSpriteTemplate_83A0554, 16, 158, 0); StartSpriteAnim(&gSprites[spriteId], 2); gSprites[spriteId].data2 = 0x80; - spriteId = CreateSprite(&gSpriteTemplate_83A0554, 0x30, 0x9E, 0); + spriteId = CreateSprite(&gSpriteTemplate_83A0554, 48, 158, 0); StartSpriteAnim(&gSprites[spriteId], 1); - spriteId = CreateSprite(&gSpriteTemplate_83A056C, 0, 0x50, 2); + spriteId = CreateSprite(&gSpriteTemplate_83A056C, 0, 80, 2); gSprites[spriteId].oam.affineMode = 1; gSprites[spriteId].oam.matrixNum = 30; gSprites[spriteId].data0 = 0x1E; gSprites[spriteId].data1 = 0; - spriteId = CreateSprite(&gSpriteTemplate_83A056C, 0, 0x50, 2); + spriteId = CreateSprite(&gSpriteTemplate_83A056C, 0, 80, 2); gSprites[spriteId].oam.affineMode = 1; gSprites[spriteId].oam.matrixNum = 31; gSprites[spriteId].data0 = 0x1F; @@ -3326,58 +3313,58 @@ void sub_808E978(u8 a) { u32 _a; - CreateSprite(&gSpriteTemplate_83A0584, 0x20, 0x28, 1); + CreateSprite(&gSpriteTemplate_83A0584, 32, 40, 1); - spriteId = CreateSprite(&gSpriteTemplate_83A0584, 0x20, 0x48, 1); + spriteId = CreateSprite(&gSpriteTemplate_83A0584, 32, 72, 1); StartSpriteAnim(&gSprites[spriteId], 1); _a = 0; - spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x1C, 0x30, 1); + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 28, 48, 1); r5 = gPokedexView->unk61A / 100; StartSpriteAnim(&gSprites[spriteId], r5); if (r5 != 0) _a = 1; else - gSprites[spriteId].invisible = 1; + gSprites[spriteId].invisible = TRUE; - spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x22, 0x30, 1); + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 34, 48, 1); r5 = (gPokedexView->unk61A % 100) / 10; if (r5 != 0 || _a != 0) StartSpriteAnim(&gSprites[spriteId], r5); else - gSprites[spriteId].invisible = 1; + gSprites[spriteId].invisible = TRUE; - spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x28, 0x30, 1); + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 40, 48, 1); r5 = (gPokedexView->unk61A % 100) % 10; StartSpriteAnim(&gSprites[spriteId], r5); _a = 0; - spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x1C, 0x50, 1); + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 28, 80, 1); r5 = gPokedexView->unk61C / 100; StartSpriteAnim(&gSprites[spriteId], r5); if (r5 != 0) _a = 1; else - gSprites[spriteId].invisible = 1; + gSprites[spriteId].invisible = TRUE; - spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x22, 0x50, 1); + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 34, 80, 1); r5 = (gPokedexView->unk61C % 100) / 10; if (r5 != 0 || _a != 0) StartSpriteAnim(&gSprites[spriteId], r5); else - gSprites[spriteId].invisible = 1; + gSprites[spriteId].invisible = TRUE; - spriteId = CreateSprite(&gSpriteTemplate_83A059C, 0x28, 0x50, 1); + spriteId = CreateSprite(&gSpriteTemplate_83A059C, 40, 80, 1); r5 = (gPokedexView->unk61C % 100) % 10; StartSpriteAnim(&gSprites[spriteId], r5); - spriteId = CreateSprite(&gSpriteTemplate_83A05B4, 0x8C, 0x60, 1); - gSprites[spriteId].invisible = 1; + spriteId = CreateSprite(&gSpriteTemplate_83A05B4, 140, 96, 1); + gSprites[spriteId].invisible = TRUE; } else { - spriteId = CreateSprite(&gSpriteTemplate_83A05B4, 0x8C, 0x50, 1); - gSprites[spriteId].invisible = 1; + spriteId = CreateSprite(&gSpriteTemplate_83A05B4, 140, 80, 1); + gSprites[spriteId].invisible = TRUE; } } @@ -3398,20 +3385,22 @@ void sub_808EDB8(struct Sprite *sprite) sprite->oam.affineMode = 0; sprite->pos2.x = 0; sprite->pos2.y = 0; - if (sprite->pos1.x != 0x30 || sprite->pos1.y != 0x38) + if (sprite->pos1.x != 48 || sprite->pos1.y != 56) { - if (sprite->pos1.x > 0x30) + if (sprite->pos1.x > 48) sprite->pos1.x--; - if (sprite->pos1.x < 0x30) + if (sprite->pos1.x < 48) sprite->pos1.x++; - if (sprite->pos1.y > 0x38) + + if (sprite->pos1.y > 56) sprite->pos1.y--; - if (sprite->pos1.y <0x38) + if (sprite->pos1.y < 56) sprite->pos1.y++; } - //_0808EE1C else + { sprite->callback = nullsub_58; + } } void sub_808EE28(struct Sprite *sprite) @@ -3425,34 +3414,31 @@ void sub_808EE28(struct Sprite *sprite) } else { - //_0808EE58 - s32 var; + u32 var; sprite->pos2.y = gSineTable[(u8)sprite->data5] * 76 / 256; var = 0x10000 / gSineTable[sprite->data5 + 0x40]; - if ((u32)var > 0xFFFF) + if (var > 0xFFFF) var = 0xFFFF; SetOamMatrix(sprite->data1 + 1, 0x100, 0, 0, var); sprite->oam.matrixNum = data1 + 1; - //ToDo: clean up these inequalities - if ((u16)(sprite->data5 + 0x3F) <= 0x7E) + if (sprite->data5 > -64 && sprite->data5 < 64) { - sprite->invisible = 0; + sprite->invisible = FALSE; sprite->data0 = 1; } else { - sprite->invisible = 1; + sprite->invisible = TRUE; } - //_0808EEF8 - if ((u16)(sprite->data5 + 0x3F) > 0x7E && sprite->data0 != 0) + + if ((sprite->data5 <= -64 || sprite->data5 >= 64) && sprite->data0 != 0) { DestroySprite(sprite); gPokedexView->unk61E[data1] = 0xFFFF; } } - //_0808EF16 } void sub_808EF38(struct Sprite *sprite) @@ -3460,39 +3446,41 @@ void sub_808EF38(struct Sprite *sprite) if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3) DestroySprite(sprite); else - sprite->pos2.y = gPokedexView->selectedPokemon * 120 / (gPokedexView->unk60C - 1); + sprite->pos2.y = gPokedexView->selectedPokemon * 120 / (gPokedexView->pokemonListCount - 1); } void sub_808EF8C(struct Sprite *sprite) { if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3) + { DestroySprite(sprite); + } else { u8 r0; if (sprite->data1 != 0) { - if (gPokedexView->selectedPokemon == gPokedexView->unk60C - 1) - sprite->invisible = 1; + if (gPokedexView->selectedPokemon == gPokedexView->pokemonListCount - 1) + sprite->invisible = TRUE; else - sprite->invisible = 0; + sprite->invisible = FALSE; r0 = sprite->data2; } else { if (gPokedexView->selectedPokemon == 0) - sprite->invisible = 1; + sprite->invisible = TRUE; else - sprite->invisible = 0; - r0 = sprite->data2 - 0x80; + sprite->invisible = FALSE; + r0 = sprite->data2 - 128; } sprite->pos2.y = gSineTable[r0] / 64; sprite->data2 = sprite->data2 + 8; if (gPokedexView->menuIsOpen == 0 && gPokedexView->menuY == 0 && sprite->invisible == 0) - sprite->invisible = 0; + sprite->invisible = FALSE; else - sprite->invisible = 1; + sprite->invisible = TRUE; } } @@ -3624,20 +3612,24 @@ _0808F164: .4byte gSineTable\n\ void sub_808F168(struct Sprite *sprite) { if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3) + { DestroySprite(sprite); + } else { - u16 r1 = gPokedexView->unk64A == 0 ? 0x50 : 0x60; + u16 r1 = gPokedexView->unk64A == 0 ? 80 : 96; if (gPokedexView->menuIsOpen != 0 && gPokedexView->menuY == r1) { - sprite->invisible = 0; + sprite->invisible = FALSE; sprite->pos2.y = gPokedexView->menuCursorPos * 16; sprite->pos2.x = gSineTable[(u8)sprite->data2] / 64; sprite->data2 += 8; } else - sprite->invisible = 1; + { + sprite->invisible = TRUE; + } } } @@ -3658,9 +3650,9 @@ static u8 sub_808F210(struct PokedexListItem *item, u8 b) bool8 sub_808F250(u8 taskId) { if (gTasks[taskId].data[0] == 0 && gTasks[taskId].func == Task_PageScreenProcessInput) - return 0; + return FALSE; else - return 1; + return TRUE; } static u8 sub_808F284(struct PokedexListItem *item, u8 b) @@ -3684,7 +3676,7 @@ void Task_InitPageScreenMultistep(u8 taskId) u16 r2; gPokedexView->unk64A = 1; - gPokedexView->unk64E = 0; + gPokedexView->descriptionPageNum = 0; gUnknown_03005CEC = gMain.vblankCallback; SetVBlankCallback(NULL); r2 = 0; @@ -3746,18 +3738,18 @@ void Task_InitPageScreenMultistep(u8 taskId) gMain.state++; break; case 6: - { - u32 r3 = 0; + { + u32 r3 = 0; - if (gTasks[taskId].data[2] != 0) - r3 = 0x14; - if (gTasks[taskId].data[1] != 0) - r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 0x10)); - BeginNormalPaletteFade(~r3, 0, 0x10, 0, 0); - SetVBlankCallback(gUnknown_03005CEC); - gMain.state++; + if (gTasks[taskId].data[2] != 0) + r3 = 0x14; + if (gTasks[taskId].data[1] != 0) + r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 16)); + BeginNormalPaletteFade(~r3, 0, 16, 0, 0); + SetVBlankCallback(gUnknown_03005CEC); + gMain.state++; + } break; - } case 7: REG_BLDCNT = 0; REG_BLDALPHA = 0; @@ -3777,7 +3769,9 @@ void Task_InitPageScreenMultistep(u8 taskId) PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), 0, 0x7D, 0xA); } else + { gMain.state++; + } } break; case 9: @@ -3799,17 +3793,19 @@ void Task_PageScreenProcessInput(u8 taskId) { if (gTasks[taskId].data[0] != 0) { - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_808F888; PlaySE(SE_Z_SCROLL); + return; } - else if (gMain.newKeys & B_BUTTON) + if (gMain.newKeys & B_BUTTON) { - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = Task_ClosePageScreen; PlaySE(SE_PC_OFF); + return; } - else if (gMain.newKeys & A_BUTTON) + if (gMain.newKeys & A_BUTTON) { switch (gPokedexView->selectedScreen) { @@ -3828,7 +3824,9 @@ void Task_PageScreenProcessInput(u8 taskId) break; case SIZE_SCREEN: if (!gUnknown_0202FFBC->owned) + { PlaySE(SE_HAZURE); + } else { BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); @@ -3837,22 +3835,25 @@ void Task_PageScreenProcessInput(u8 taskId) } break; } + return; } - else if (((gMain.newKeys & DPAD_LEFT) + if (((gMain.newKeys & DPAD_LEFT) || ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) && gPokedexView->selectedScreen > 0) { gPokedexView->selectedScreen--; sub_8090584(gPokedexView->selectedScreen, 0xD); PlaySE(SE_Z_PAGE); + return; } - else if (((gMain.newKeys & DPAD_RIGHT) + if (((gMain.newKeys & DPAD_RIGHT) || ((gMain.newKeys & R_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) && gPokedexView->selectedScreen < 3) { gPokedexView->selectedScreen++; sub_8090584(gPokedexView->selectedScreen, 0xD); PlaySE(SE_Z_PAGE); + return; } } @@ -3971,36 +3972,34 @@ void Task_InitCryScreenMultistep(u8 taskId) gMain.state++; break; case 6: - { - struct CryRelatedStruct sp8; - - sp8.unk0 = 0x4020; - sp8.unk2 = 0x1F; - sp8.paletteNo = 8; - sp8.yPos = 0x1E; - sp8.xPos = 0xC; - if (sub_8119E3C(&sp8, 0) != 0) { - gMain.state++; - gUnknown_03005E98 = 0; + struct CryRelatedStruct sp8; + + sp8.unk0 = 0x4020; + sp8.unk2 = 0x1F; + sp8.paletteNo = 8; + sp8.yPos = 0x1E; + sp8.xPos = 0xC; + if (sub_8119E3C(&sp8, 0) != 0) + { + gMain.state++; + gUnknown_03005E98 = 0; + } } break; - } case 7: - { - struct CryRelatedStruct sp10; - - sp10.unk0 = 0x3000; - sp10.unk2 = 0xE; - sp10.paletteNo = 9; - sp10.xPos = 0x12; - sp10.yPos = 3; - if (ShowPokedexCryScreen(&sp10, 1) != 0) { - gMain.state++; + struct CryRelatedStruct sp10; + + sp10.unk0 = 0x3000; + sp10.unk2 = 0xE; + sp10.paletteNo = 9; + sp10.xPos = 0x12; + sp10.yPos = 3; + if (ShowPokedexCryScreen(&sp10, 1) != 0) + gMain.state++; } break; - } case 8: BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0); SetVBlankCallback(gUnknown_03005CEC); @@ -4048,8 +4047,9 @@ void Task_CryScreenProcessInput(u8 taskId) gPokedexView->unk64F = 1; gTasks[taskId].func = sub_808FFBC; PlaySE(SE_PC_OFF); + return; } - else if ((gMain.newKeys & DPAD_LEFT) + if ((gMain.newKeys & DPAD_LEFT) || ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) { BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); @@ -4057,12 +4057,15 @@ void Task_CryScreenProcessInput(u8 taskId) gPokedexView->unk64F = 2; gTasks[taskId].func = sub_808FFBC; PlaySE(SE_Z_PAGE); + return; } - else if ((gMain.newKeys & DPAD_RIGHT) + if ((gMain.newKeys & DPAD_RIGHT) || ((gMain.newKeys & R_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) { if (!gUnknown_0202FFBC->owned) + { PlaySE(SE_HAZURE); + } else { BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); @@ -4071,6 +4074,7 @@ void Task_CryScreenProcessInput(u8 taskId) gTasks[taskId].func = sub_808FFBC; PlaySE(SE_Z_PAGE); } + return; } } } @@ -4091,6 +4095,7 @@ void sub_808FFBC(u8 taskId) break; case 3: gTasks[taskId].func = Task_InitSizeScreenMultistep; + break; } } } @@ -4136,24 +4141,24 @@ void Task_InitSizeScreenMultistep(u8 taskId) gMain.state++; break; case 3: - { - u8 string[40]; //I hope this is the correct size - - SetUpWindowConfig(&gWindowConfig_81E702C); - InitMenuWindow(&gWindowConfig_81E702C); - string[0] = EOS; - StringAppend(string, gDexText_SizeComparedTo); - StringAppend(string, gSaveBlock2.playerName); - sub_8072BD8(string, 3, 15, 0xC0); - gMain.state++; + { + u8 string[40]; //I hope this is the correct size + + SetUpWindowConfig(&gWindowConfig_81E702C); + InitMenuWindow(&gWindowConfig_81E702C); + string[0] = EOS; + StringAppend(string, gDexText_SizeComparedTo); + StringAppend(string, gSaveBlock2.playerName); + sub_8072BD8(string, 3, 15, 0xC0); + gMain.state++; + } break; - } case 4: ResetPaletteFade(); gMain.state++; break; case 5: - spriteId = sub_8091A4C(gSaveBlock2.playerGender, 0x98, 0x38, 0); + spriteId = sub_8091A4C(gSaveBlock2.playerGender, 152, 56, 0); gSprites[spriteId].oam.affineMode = 1; gSprites[spriteId].oam.matrixNum = 1; gSprites[spriteId].oam.priority = 0; @@ -4163,7 +4168,7 @@ void Task_InitSizeScreenMultistep(u8 taskId) gMain.state++; break; case 6: - spriteId = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x58, 0x38, 1); + spriteId = sub_80918EC(gUnknown_0202FFBC->dexNum, 88, 56, 1); gSprites[spriteId].oam.affineMode = 1; gSprites[spriteId].oam.matrixNum = 2; gSprites[spriteId].oam.priority = 0; @@ -5044,11 +5049,11 @@ void sub_8090C68(void) { if (gUnknown_0202FFBC->owned) { - if (gPokedexView->unk64E == 0) + if (gPokedexView->descriptionPageNum == 0) { MenuZeroFillWindowRect(2, 13, 27, 19); MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage2, 2, 13); - gPokedexView->unk64E = 1; + gPokedexView->descriptionPageNum = 1; (*(u16 *)(VRAM + 0x7ACA))++; (*(u16 *)(VRAM + 0x7B0A))++; PlaySE(SE_PIN); @@ -5057,7 +5062,7 @@ void sub_8090C68(void) { MenuZeroFillWindowRect(2, 13, 27, 19); MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); - gPokedexView->unk64E = 0; + gPokedexView->descriptionPageNum = 0; (*(u16 *)(VRAM + 0x7ACA))--; (*(u16 *)(VRAM + 0x7B0A))--; PlaySE(SE_PIN); @@ -5146,7 +5151,7 @@ u16 GetNationalPokedexCount(u8 a) u16 count = 0; u16 i; - for (i = 0; i < 386; i++) + for (i = 0; i < NATIONAL_DEX_COUNT; i++) { switch (a) { @@ -5579,7 +5584,7 @@ void sub_80918B0(u16 a, u8 b) gUnknown_02024E8C.anims = gUnknown_081EC2A4[0]; } -u16 sub_80918EC(u16 num, s16 b, s16 c, u16 d) +u16 sub_80918EC(u16 num, s16 x, s16 y, u16 paletteNum) { u8 spriteId; @@ -5592,7 +5597,7 @@ u16 sub_80918EC(u16 num, s16 b, s16 c, u16 d) gMonFrontPicCoords[num].coords, gMonFrontPicCoords[num].y_offset, (void *)0x02000000, - gUnknown_083B5584[d], + gUnknown_083B5584[paletteNum], num); break; case 0x134: @@ -5601,7 +5606,7 @@ u16 sub_80918EC(u16 num, s16 b, s16 c, u16 d) gMonFrontPicCoords[num].coords, gMonFrontPicCoords[num].y_offset, 0x02000000, - gUnknown_083B5584[d], + gUnknown_083B5584[paletteNum], num, gSaveBlock2.pokedex.spindaPersonality, 1); @@ -5612,20 +5617,20 @@ u16 sub_80918EC(u16 num, s16 b, s16 c, u16 d) gMonFrontPicCoords[num].coords, gMonFrontPicCoords[num].y_offset, 0x02000000, - gUnknown_083B5584[d], + gUnknown_083B5584[paletteNum], num, gSaveBlock2.pokedex.unownPersonality, 1); break; } - LoadCompressedPalette(gMonPaletteTable[num].data, 0x100 + d * 16, 32); - sub_8091878(d, d); - spriteId = CreateSprite(&gUnknown_02024E8C, b, c, 0); - gSprites[spriteId].oam.paletteNum = d; + LoadCompressedPalette(gMonPaletteTable[num].data, 0x100 + paletteNum * 16, 32); + sub_8091878(paletteNum, paletteNum); + spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0); + gSprites[spriteId].oam.paletteNum = paletteNum; return spriteId; } -u8 sub_8091A4C(u16 gender, u16 b, u16 c, u16 d) +u8 sub_8091A4C(u16 gender, s16 x, s16 y, u16 paletteNum) { u8 spriteId; @@ -5637,8 +5642,8 @@ u8 sub_8091A4C(u16 gender, u16 b, u16 c, u16 d) gUnknown_083B5584[0], gender); sub_80918B0(gender, 0); - spriteId = CreateSprite(&gUnknown_02024E8C, b, c, 0); - gSprites[spriteId].oam.paletteNum = d; + spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0); + gSprites[spriteId].oam.paletteNum = paletteNum; return spriteId; } @@ -5651,7 +5656,7 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) SortPokedex(a, b); - for (i = 0, resultsCount = 0; i < 386; i++) + for (i = 0, resultsCount = 0; i < NATIONAL_DEX_COUNT; i++) { if (gPokedexView->unk0[i].seen) { @@ -5659,12 +5664,12 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) resultsCount++; } } - gPokedexView->unk60C = resultsCount; + gPokedexView->pokemonListCount = resultsCount; // Search by name if (abcGroup != 0xFF) { - for (i = 0, resultsCount = 0; i < gPokedexView->unk60C; i++) + for (i = 0, resultsCount = 0; i < gPokedexView->pokemonListCount; i++) { u8 r3; @@ -5677,13 +5682,13 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) resultsCount++; } } - gPokedexView->unk60C = resultsCount; + gPokedexView->pokemonListCount = resultsCount; } // Search by body color if (bodyColor != 0xFF) { - for (i = 0, resultsCount = 0; i < gPokedexView->unk60C; i++) + for (i = 0, resultsCount = 0; i < gPokedexView->pokemonListCount; i++) { species = NationalPokedexNumToSpecies(gPokedexView->unk0[i].dexNum); @@ -5693,7 +5698,7 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) resultsCount++; } } - gPokedexView->unk60C = resultsCount; + gPokedexView->pokemonListCount = resultsCount; } // Search by type @@ -5707,7 +5712,7 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) if (type2 == 0xFF) { - for (i = 0, resultsCount = 0; i < gPokedexView->unk60C; i++) + for (i = 0, resultsCount = 0; i < gPokedexView->pokemonListCount; i++) { if (gPokedexView->unk0[i].owned) { @@ -5725,7 +5730,7 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) } else { - for (i = 0, resultsCount = 0; i < gPokedexView->unk60C; i++) + for (i = 0, resultsCount = 0; i < gPokedexView->pokemonListCount; i++) { if (gPokedexView->unk0[i].owned) { @@ -5741,12 +5746,12 @@ int sub_8091AF8(u8 a, u8 b, u8 abcGroup, u8 bodyColor, u8 type1, u8 type2) } } } - gPokedexView->unk60C = resultsCount; + gPokedexView->pokemonListCount = resultsCount; } - if (gPokedexView->unk60C != 0) + if (gPokedexView->pokemonListCount != 0) { - for (i = gPokedexView->unk60C; i < 386; i++) + for (i = gPokedexView->pokemonListCount; i < NATIONAL_DEX_COUNT; i++) { gPokedexView->unk0[i].dexNum = 0xFFFF; gPokedexView->unk0[i].seen = FALSE; @@ -5988,7 +5993,7 @@ void sub_80924A4(u8 taskId) { if (!IsSEPlaying()) { - if (gPokedexView->unk60C != 0) + if (gPokedexView->pokemonListCount != 0) { PlaySE(SE_SEIKAI); sub_8091E20(gDexText_SearchComplete); @@ -6006,11 +6011,11 @@ void sub_8092508(u8 taskId) { if (gMain.newKeys & A_BUTTON) { - if (gPokedexView->unk60C != 0) + if (gPokedexView->pokemonListCount != 0) { gPokedexView->unk64F = 1; - gPokedexView->unk612 = sub_8092E10(taskId, 5); - gPokedexView->unk616 = sub_8092E10(taskId, 4); + gPokedexView->dexMode = sub_8092E10(taskId, 5); + gPokedexView->dexOrder = sub_8092E10(taskId, 4); gTasks[taskId].func = sub_80927B8; PlaySE(SE_PC_OFF); } -- cgit v1.2.3 From 86a26c9282f03c751fc67e7da6e0d4014f69a688 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 15 Jun 2017 01:26:40 -0500 Subject: finish converting pokedex data to C --- src/data/pokedex_entries_en.h | 9651 +++++++++++++++++++++++++++++++++++++++++ src/data/pokedex_orders.h | 1192 +++++ src/pokedex.c | 2072 ++++----- 3 files changed, 11661 insertions(+), 1254 deletions(-) create mode 100644 src/data/pokedex_entries_en.h create mode 100644 src/data/pokedex_orders.h (limited to 'src') diff --git a/src/data/pokedex_entries_en.h b/src/data/pokedex_entries_en.h new file mode 100644 index 000000000..2d9eaf617 --- /dev/null +++ b/src/data/pokedex_entries_en.h @@ -0,0 +1,9651 @@ +const u8 DexDescription_Dummy_1[] = _( + "This is a newly discovered POKéMON.\n" + "It is currently under investigation."); +const u8 DexDescription_Dummy_2[] = _( + "No detailed information is available\n" + "at this time."); + +const u8 DexDescription_Bulbasaur_1[] = _( + "BULBASAUR can be seen napping in\n" + "bright sunlight.\n" + "There is a seed on its back."); +const u8 DexDescription_Bulbasaur_2[] = _( + "By soaking up the sun’s rays, the seed\n" + "grows progressively larger."); + +const u8 DexDescription_Ivysaur_1[] = _( + "There is a bud on this POKéMON’s back.\n" + "To support its weight, IVYSAUR’s legs\n" + "and trunk grow thick and strong."); +const u8 DexDescription_Ivysaur_2[] = _( + "If it starts spending more time lying\n" + "in the sunlight, it’s a sign that the\n" + "bud will bloom into a large flower soon."); + +const u8 DexDescription_Venusaur_1[] = _( + "There is a large flower on VENUSAUR’s\n" + "back. The flower is said to take on vivid\n" + "colors if it gets plenty of nutrition"); +const u8 DexDescription_Venusaur_2[] = _( + "and sunlight. The flower’s aroma\n" + "soothes the emotions of people."); + +const u8 DexDescription_Charmander_1[] = _( + "The flame that burns at the tip of its\n" + "tail is an indication of its emotions.\n" + "The flame wavers when CHARMANDER is"); +const u8 DexDescription_Charmander_2[] = _( + "enjoying itself. If the POKéMON becomes\n" + "enraged, the flame burns fiercely."); + +const u8 DexDescription_Charmeleon_1[] = _( + "CHARMELEON mercilessly destroys its\n" + "foes using its sharp claws.\n" + "If it encounters a strong foe, it turns"); +const u8 DexDescription_Charmeleon_2[] = _( + "aggressive. In this excited state, the\n" + "flame at the tip of its tail flares with a\n" + "bluish white color."); + +const u8 DexDescription_Charizard_1[] = _( + "CHARIZARD flies around the sky in\n" + "search of powerful opponents.\n" + "It breathes fire of such great heat"); +const u8 DexDescription_Charizard_2[] = _( + "that it melts anything. However, it\n" + "never turns its fiery breath on any\n" + "opponent weaker than itself."); + +const u8 DexDescription_Squirtle_1[] = _( + "SQUIRTLE’s shell is not merely used\n" + "for protection.\n" + "The shell’s rounded shape and the"); +const u8 DexDescription_Squirtle_2[] = _( + "grooves on its surface help minimize\n" + "resistance in water, enabling this\n" + "POKéMON to swim at high speeds."); + +const u8 DexDescription_Wartortle_1[] = _( + "Its tail is large and covered with a rich,\n" + "thick fur. The tail becomes increasingly\n" + "deeper in color as WARTORTLE ages."); +const u8 DexDescription_Wartortle_2[] = _( + "The scratches on its shell are evidence\n" + "of this POKéMON’s toughness as a\n" + "battler."); + +const u8 DexDescription_Blastoise_1[] = _( + "BLASTOISE has water spouts that\n" + "protrude from its shell. The water\n" + "spouts are very accurate."); +const u8 DexDescription_Blastoise_2[] = _( + "They can shoot bullets of water with\n" + "enough accuracy to strike empty cans\n" + "from a distance of over 160 feet."); + +const u8 DexDescription_Caterpie_1[] = _( + "CATERPIE has a voracious appetite.\n" + "It can devour leaves bigger than its\n" + "body right before your eyes."); +const u8 DexDescription_Caterpie_2[] = _( + "From its antenna, this POKéMON releases\n" + "a terrifically strong odor."); + +const u8 DexDescription_Metapod_1[] = _( + "The shell covering this POKéMON’s body\n" + "is as hard as an iron slab.\n" + "METAPOD does not move very much."); +const u8 DexDescription_Metapod_2[] = _( + "It stays still because it is preparing\n" + "its soft innards for evolution inside\n" + "the hard shell."); + +const u8 DexDescription_Butterfree_1[] = _( + "BUTTERFREE has a superior ability to\n" + "search for delicious honey from\n" + "flowers."); +const u8 DexDescription_Butterfree_2[] = _( + "It can even search out, extract, and\n" + "carry honey from flowers that are\n" + "blooming over six miles from its nest."); + +const u8 DexDescription_Weedle_1[] = _( + "WEEDLE has an extremely acute sense\n" + "of smell.\n" + "It is capable of distinguishing its"); +const u8 DexDescription_Weedle_2[] = _( + "favorite kinds of leaves from those it\n" + "dislikes just by sniffing with its big\n" + "red proboscis (nose)."); + +const u8 DexDescription_Kakuna_1[] = _( + "KAKUNA remains virtually immobile as it\n" + "clings to a tree. However, on the\n" + "inside, it is extremely busy as it"); +const u8 DexDescription_Kakuna_2[] = _( + "prepares for its coming evolution.\n" + "This is evident from how hot the shell\n" + "becomes to the touch."); + +const u8 DexDescription_Beedrill_1[] = _( + "BEEDRILL is extremely territorial.\n" + "No one should ever approach its nest -\n" + "this is for their own safety."); +const u8 DexDescription_Beedrill_2[] = _( + "If angered, they will attack in a furious\n" + "swarm."); + +const u8 DexDescription_Pidgey_1[] = _( + "PIDGEY has an extremely sharp sense\n" + "of direction.\n" + "It is capable of unerringly returning"); +const u8 DexDescription_Pidgey_2[] = _( + "home to its nest, however far it may be\n" + "removed from its familiar surroundings."); + +const u8 DexDescription_Pidgeotto_1[] = _( + "PIDGEOTTO claims a large area as its\n" + "own territory. This POKéMON flies\n" + "around, patrolling its living space."); +const u8 DexDescription_Pidgeotto_2[] = _( + "If its territory is violated, it shows\n" + "no mercy in thoroughly punishing the\n" + "foe with its sharp claws."); + +const u8 DexDescription_Pidgeot_1[] = _( + "This POKéMON has a dazzling plumage of\n" + "beautifully glossy feathers.\n" + "Many TRAINERS are captivated by the"); +const u8 DexDescription_Pidgeot_2[] = _( + "striking beauty of the feathers on its\n" + "head, compelling them to choose PIDGEOT\n" + "as their POKéMON."); + +const u8 DexDescription_Rattata_1[] = _( + "RATTATA is cautious in the extreme.\n" + "Even while it is asleep, it constantly\n" + "listens by moving its ears around."); +const u8 DexDescription_Rattata_2[] = _( + "It is not picky about where it lives -\n" + "it will make its nest anywhere."); + +const u8 DexDescription_Raticate_1[] = _( + "RATICATE’s sturdy fangs grow steadily.\n" + "To keep them ground down, it gnaws\n" + "on rocks and logs."); +const u8 DexDescription_Raticate_2[] = _( + "It may even chew on the walls of\n" + "houses."); + +const u8 DexDescription_Spearow_1[] = _( + "SPEAROW has a very loud cry that can\n" + "be heard over half a mile away.\n" + "If its high, keening cry is heard"); +const u8 DexDescription_Spearow_2[] = _( + "echoing all around, it is a sign that\n" + "they are warning each other of danger."); + +const u8 DexDescription_Fearow_1[] = _( + "FEAROW is recognized by its long neck\n" + "and elongated beak.\n" + "They are conveniently shaped for"); +const u8 DexDescription_Fearow_2[] = _( + "catching prey in soil or water.\n" + "It deftly moves its long and skinny\n" + "beak to pluck prey."); + +const u8 DexDescription_Ekans_1[] = _( + "EKANS curls itself up in a spiral while\n" + "it rests.\n" + "Assuming this position allows it to"); +const u8 DexDescription_Ekans_2[] = _( + "quickly respond to a threat from any\n" + "direction with a glare from its upraised\n" + "head."); + +const u8 DexDescription_Arbok_1[] = _( + "This POKéMON is terrifically strong in\n" + "order to constrict things with its body.\n" + "It can even flatten steel oil drums."); +const u8 DexDescription_Arbok_2[] = _( + "Once ARBOK wraps its body around its\n" + "foe, escaping its crunching embrace is\n" + "impossible."); + +#ifdef SAPPHIRE +const u8 DexDescription_Pikachu_1[] = _( + "This POKéMON has electricity-storing\n" + "pouches on its cheeks. These appear to\n" + "become electrically charged during the"); +const u8 DexDescription_Pikachu_2[] = _( + "night while PIKACHU sleeps.\n" + "It occasionally discharges electricity\n" + "when it is dozy after waking up."); +#else +const u8 DexDescription_Pikachu_1[] = _( + "Whenever PIKACHU comes across\n" + "something new, it blasts it with a jolt\n" + "of electricity."); +const u8 DexDescription_Pikachu_2[] = _( + "If you come across a blackened berry,\n" + "it’s evidence that this POKéMON\n" + "mistook the intensity of its charge."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Raichu_1[] = _( + "This POKéMON exudes a weak electrical\n" + "charge from all over its body that makes\n" + "it take on a slight glow in darkness."); +const u8 DexDescription_Raichu_2[] = _( + "RAICHU searches for electricity by\n" + "planting its tail in the ground."); +#else +const u8 DexDescription_Raichu_1[] = _( + "If the electrical sacks become\n" + "excessively charged, RAICHU plants its\n" + "tail in the ground and discharges."); +const u8 DexDescription_Raichu_2[] = _( + "Scorched patches of ground will be\n" + "found near this POKéMON’s nest."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Sandshrew_1[] = _( + "SANDSHREW has a very dry hide that is\n" + "extremely tough. The POKéMON can roll\n" + "into a ball that repels any attack."); +const u8 DexDescription_Sandshrew_2[] = _( + "At night, it burrows into the desert\n" + "sand to sleep."); +#else +const u8 DexDescription_Sandshrew_1[] = _( + "SANDSHREW’s body is configured to\n" + "absorb water without waste, enabling it\n" + "to survive in an arid desert."); +const u8 DexDescription_Sandshrew_2[] = _( + "This POKéMON curls up to protect itself\n" + "from its enemies."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Sandslash_1[] = _( + "SANDSLASH can roll up its body as if it\n" + "were a ball covered with large spikes.\n" + "In battle, this POKéMON will try to make"); +const u8 DexDescription_Sandslash_2[] = _( + "the foe flinch by jabbing it with its\n" + "spines. It then leaps at the stunned\n" + "foe to tear wildly with its sharp claws."); +#else +const u8 DexDescription_Sandslash_1[] = _( + "SANDSLASH’s body is covered by tough\n" + "spikes, which are hardened sections of\n" + "its hide. Once a year, the old spikes fall"); +const u8 DexDescription_Sandslash_2[] = _( + "out, to be replaced with new spikes that\n" + "grow out from beneath the old ones."); +#endif + +const u8 DexDescription_NidoranF_1[] = _( + "NIDORAN has barbs that secrete a\n" + "powerful poison. They are thought to\n" + "have developed as protection for this"); +const u8 DexDescription_NidoranF_2[] = _( + "small-bodied POKéMON.\n" + "When enraged, it releases a horrible\n" + "toxin from its horn."); + +const u8 DexDescription_Nidorina_1[] = _( + "When NIDORINA are with their friends or\n" + "family, they keep their barbs tucked\n" + "away to prevent hurting each other."); +const u8 DexDescription_Nidorina_2[] = _( + "This POKéMON appears to become\n" + "nervous if separated from the others."); + +const u8 DexDescription_Nidoqueen_1[] = _( + "NIDOQUEEN’s body is encased in\n" + "extremely hard scales. It is adept at\n" + "sending foes flying with harsh tackles."); +const u8 DexDescription_Nidoqueen_2[] = _( + "This POKéMON is at its strongest when\n" + "it is defending its young."); + +const u8 DexDescription_NidoranM_1[] = _( + "The male NIDORAN has developed\n" + "muscles for moving its ears. Thanks to\n" + "them, the ears can be freely moved in"); +const u8 DexDescription_NidoranM_2[] = _( + "any direction. Even the slightest sound\n" + "does not escape this POKéMON’s notice."); + +const u8 DexDescription_Nidorino_1[] = _( + "NIDORINO has a horn that is harder than\n" + "a diamond. If it senses a hostile\n" + "presence, all the barbs on its back"); +const u8 DexDescription_Nidorino_2[] = _( + "bristle up at once, and it challenges\n" + "the foe with all its might."); + +const u8 DexDescription_Nidoking_1[] = _( + "NIDOKING’s thick tail packs enormously\n" + "destructive power. With one swing, it\n" + "can topple a metal transmission tower."); +const u8 DexDescription_Nidoking_2[] = _( + "Once this POKéMON goes on a rampage,\n" + "there is no stopping it."); + +const u8 DexDescription_Clefairy_1[] = _( + "On every night of a full moon, groups of\n" + "this POKéMON come out to play.\n" + "When dawn arrives, the tired CLEFAIRY"); +const u8 DexDescription_Clefairy_2[] = _( + "return to their quiet mountain retreats\n" + "and go to sleep nestled up against each\n" + "other."); + +const u8 DexDescription_Clefable_1[] = _( + "CLEFABLE moves by skipping lightly as if\n" + "it were flying using its wings. Its\n" + "bouncy step lets it even walk on water."); +const u8 DexDescription_Clefable_2[] = _( + "It is known to take strolls on lakes on\n" + "quiet, moonlit nights."); + +#ifdef SAPPHIRE +const u8 DexDescription_Vulpix_1[] = _( + "Inside VULPIX’s body burns a flame that\n" + "never goes out. During the daytime,\n" + "when the temperatures rise, this"); +const u8 DexDescription_Vulpix_2[] = _( + "POKéMON releases flames from its mouth\n" + "to prevent its body from growing too\n" + "hot."); +#else +const u8 DexDescription_Vulpix_1[] = _( + "At the time of its birth, VULPIX has one\n" + "white tail. The tail separates into six\n" + "if this POKéMON receives plenty of love"); +const u8 DexDescription_Vulpix_2[] = _( + "from its TRAINER.\n" + "The six tails become magnificently\n" + "curled."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Ninetales_1[] = _( + "Legend has it that NINETALES came into\n" + "being when nine wizards possessing\n" + "sacred powers merged into one."); +const u8 DexDescription_Ninetales_2[] = _( + "This POKéMON is highly intelligent - it\n" + "can understand human speech."); +#else +const u8 DexDescription_Ninetales_1[] = _( + "NINETALES casts a sinister light from\n" + "its bright red eyes to gain total\n" + "control over its foe’s mind."); +const u8 DexDescription_Ninetales_2[] = _( + "This POKéMON is said to live for a\n" + "thousand years."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Jigglypuff_1[] = _( + "When this POKéMON sings, it never\n" + "pauses to breathe. If it is in a battle\n" + "against an opponent that does not"); +const u8 DexDescription_Jigglypuff_2[] = _( + "easily fall asleep, JIGGLYPUFF cannot\n" + "breathe, endangering its life."); +#else +const u8 DexDescription_Jigglypuff_1[] = _( + "JIGGLYPUFF’s vocal chords can freely\n" + "adjust the wavelength of its voice.\n" + "This POKéMON uses this ability to sing"); +const u8 DexDescription_Jigglypuff_2[] = _( + "at precisely the right wavelength to\n" + "make its foes most drowsy."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Wigglytuff_1[] = _( + "WIGGLYTUFF’s body is very flexible.\n" + "By inhaling deeply, this POKéMON can\n" + "inflate itself seemingly without end."); +const u8 DexDescription_Wigglytuff_2[] = _( + "Once inflated, WIGGLYTUFF bounces\n" + "along lightly like a balloon."); +#else +const u8 DexDescription_Wigglytuff_1[] = _( + "WIGGLYTUFF has large, saucerlike eyes.\n" + "The surfaces of its eyes are always\n" + "covered with a thin layer of tears."); +const u8 DexDescription_Wigglytuff_2[] = _( + "If any dust gets in this POKéMON’s\n" + "eyes, it is quickly washed away."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Zubat_1[] = _( + "ZUBAT avoids sunlight because exposure\n" + "causes it to become unhealthy.\n" + "During the daytime, it stays in caves or"); +const u8 DexDescription_Zubat_2[] = _( + "under the eaves of old houses, sleeping\n" + "while hanging upside down."); +#else +const u8 DexDescription_Zubat_1[] = _( + "ZUBAT remains quietly unmoving in a\n" + "dark spot during the bright daylight\n" + "hours. It does so because prolonged"); +const u8 DexDescription_Zubat_2[] = _( + "exposure to the sun causes its body to\n" + "become slightly burned."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Golbat_1[] = _( + "GOLBAT bites down on prey with its four\n" + "fangs and drinks the victim’s blood.\n" + "It becomes active on inky dark"); +const u8 DexDescription_Golbat_2[] = _( + "moonless nights, flying around to\n" + "attack people and POKéMON."); +#else +const u8 DexDescription_Golbat_1[] = _( + "GOLBAT loves to drink the blood of\n" + "living things. It is particularly active\n" + "in the pitch black of night."); +const u8 DexDescription_Golbat_2[] = _( + "This POKéMON flits around in the night\n" + "skies, seeking fresh blood."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Oddish_1[] = _( + "ODDISH searches for fertile, nutrient-\n" + "rich soil, then plants itself.\n" + "During the daytime, while it is planted,"); +const u8 DexDescription_Oddish_2[] = _( + "this POKéMON’s feet are thought to\n" + "change shape and become similar to\n" + "the roots of trees."); +#else +const u8 DexDescription_Oddish_1[] = _( + "During the daytime, ODDISH buries\n" + "itself in soil to absorb nutrients from \n" + "the ground using its entire body."); +const u8 DexDescription_Oddish_2[] = _( + "The more fertile the soil, the glossier\n" + "its leaves become."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Gloom_1[] = _( + "From its mouth GLOOM drips honey that\n" + "smells absolutely horrible.\n" + "Apparently, it loves the horrid stench."); +const u8 DexDescription_Gloom_2[] = _( + "It sniffs the noxious fumes and then \n" + "drools even more of its honey."); +#else +const u8 DexDescription_Gloom_1[] = _( + "GLOOM releases a foul fragrance from\n" + "the pistil of its flower. When faced\n" + "with danger, the stench worsens."); +const u8 DexDescription_Gloom_2[] = _( + "If this POKéMON is feeling calm and\n" + "secure, it does not release its usual\n" + "stinky aroma."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Vileplume_1[] = _( + "VILEPLUME has the world’s largest\n" + "petals. They are used to attract prey\n" + "that are then doused with toxic spores."); +const u8 DexDescription_Vileplume_2[] = _( + "Once the prey are immobilized, this\n" + "POKéMON catches and devours them."); +#else +const u8 DexDescription_Vileplume_1[] = _( + "VILEPLUME’s toxic pollen triggers\n" + "atrocious allergy attacks. That’s why\n" + "it is advisable never to approach any"); +const u8 DexDescription_Vileplume_2[] = _( + "attractive flowers in a jungle, however\n" + "pretty they may be."); +#endif + +#ifdef SAPPHIRE +#if REVISION >= 1 +const u8 DexDescription_Paras_1[] = _( + "PARAS has parasitic mushrooms growing\n" + "on its back called tochukaso. They grow\n" + "large by drawing nutrients from this"); +const u8 DexDescription_Paras_2[] = _( + "BUG/GRASS POKéMON host. They are\n" // Identify Paras as BUG/GRASS type rather than just BUG + "highly valued as a medicine for\n" + "extending life."); +#else +const u8 DexDescription_Paras_1[] = _( + "PARAS has parasitic mushrooms growing\n" + "on its back called tochukaso. They grow\n" + "large by drawing nutrients from this"); +const u8 DexDescription_Paras_2[] = _( + "BUG POKéMON host. They are highly\n" + "valued as a medicine for extending life."); +#endif +#else +#if REVISION >= 1 +const u8 DexDescription_Paras_1[] = _( + "PARAS has parasitic mushrooms growing\n" + "on its back called tochukaso. They grow\n" + "large by drawing nutrients from this"); +const u8 DexDescription_Paras_2[] = _( + "BUG/GRASS POKéMON host. They are\n" + "highly valued as a medicine for\n" + "extending life."); +#else +const u8 DexDescription_Paras_1[] = _( + "PARAS has parasitic mushrooms growing\n" + "on its back called tochukaso. They grow\n" + "large by drawing nutrients from the BUG"); +const u8 DexDescription_Paras_2[] = _( + "POKéMON host. They are highly valued as\n" + "a medicine for extending life."); +#endif +#endif + +const u8 DexDescription_Parasect_1[] = _( + "PARASECT is known to infest large trees\n" + "en masse and drain nutrients from the\n" + "lower trunk and roots."); +const u8 DexDescription_Parasect_2[] = _( + "When an infested tree dies, they move\n" + "onto another tree all at once."); + +const u8 DexDescription_Venonat_1[] = _( + "VENONAT is said to have evolved with\n" + "a coat of thin, stiff hair that covers\n" + "its entire body for protection."); +const u8 DexDescription_Venonat_2[] = _( + "It possesses large eyes that never fail\n" + "to spot even miniscule prey."); + +const u8 DexDescription_Venomoth_1[] = _( + "VENOMOTH is nocturnal - it is a POKéMON\n" + "that only becomes active at night.\n" + "Its favorite prey are small insects"); +const u8 DexDescription_Venomoth_2[] = _( + "that gather around streetlights,\n" + "attracted by the light in the darkness."); + +const u8 DexDescription_Diglett_1[] = _( + "DIGLETT are raised in most farms.\n" + "The reason is simple - wherever this\n" + "POKéMON burrows, the soil is left"); +const u8 DexDescription_Diglett_2[] = _( + "perfectly tilled for planting crops.\n" + "This soil is made ideal for growing\n" + "delicious vegetables."); + +const u8 DexDescription_Dugtrio_1[] = _( + "DUGTRIO are actually triplets that\n" + "emerged from one body. As a result,\n" + "each triplet thinks exactly like the"); +const u8 DexDescription_Dugtrio_2[] = _( + "other two triplets.\n" + "They work cooperatively to burrow\n" + "endlessly."); + +const u8 DexDescription_Meowth_1[] = _( + "MEOWTH withdraws its sharp claws into\n" + "its paws to slinkily sneak about without\n" + "making any incriminating footsteps."); +const u8 DexDescription_Meowth_2[] = _( + "For some reason, this POKéMON loves\n" + "shiny coins that glitter with light."); + +const u8 DexDescription_Persian_1[] = _( + "PERSIAN has six bold whiskers that give\n" + "it a look of toughness. The whiskers \n" + "sense air movements to determine what"); +const u8 DexDescription_Persian_2[] = _( + "is in the POKéMON’s surrounding\n" + "vicinity. It becomes docile if grabbed\n" + "by the whiskers."); + +#ifdef SAPPHIRE +const u8 DexDescription_Psyduck_1[] = _( + "If it uses its mysterious power,\n" + "PSYDUCK can’t remember having done so.\n" + "It apparently can’t form a memory of"); +const u8 DexDescription_Psyduck_2[] = _( + "such an event because it goes into\n" + "an altered state that is much like\n" + "deep sleep."); +#else +const u8 DexDescription_Psyduck_1[] = _( + "PSYDUCK uses a mysterious power.\n" + "When it does so, this POKéMON \n" + "generates brain waves that are"); +const u8 DexDescription_Psyduck_2[] = _( + "supposedly only seen in sleepers.\n" + "This discovery spurred controversy\n" + "among scholars."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Golduck_1[] = _( + "GOLDUCK is the fastest swimmer among\n" + "all POKéMON. It swims effortlessly, even\n" + "in a rough, stormy sea."); +const u8 DexDescription_Golduck_2[] = _( + "It sometimes rescues people from\n" + "wrecked ships floundering in high seas."); +#else +const u8 DexDescription_Golduck_1[] = _( + "The webbed flippers on its forelegs and\n" + "hind legs and the streamlined body of\n" + "GOLDUCK give it frightening speed."); +const u8 DexDescription_Golduck_2[] = _( + "This POKéMON is definitely much faster\n" + "than even the most athletic swimmer."); +#endif + +const u8 DexDescription_Mankey_1[] = _( + "When MANKEY starts shaking and its\n" + "nasal breathing turns rough, it’s a sure\n" + "sign that it is becoming angry."); +const u8 DexDescription_Mankey_2[] = _( + "However, because it goes into a\n" + "towering rage almost instantly, it is\n" + "impossible for anyone to flee its wrath."); + +const u8 DexDescription_Primeape_1[] = _( + "When PRIMEAPE becomes furious, its\n" + "blood circulation is boosted. In turn,\n" + "its muscles are made even stronger."); +const u8 DexDescription_Primeape_2[] = _( + "However, it also becomes much less\n" + "intelligent at the same time."); + +const u8 DexDescription_Growlithe_1[] = _( + "GROWLITHE has a superb sense of smell.\n" + "Once it smells anything, this POKéMON\n" + "won’t forget the scent, no matter what."); +const u8 DexDescription_Growlithe_2[] = _( + "It uses its advanced olfactory sense\n" + "to determine the emotions of other\n" + "living things."); + +const u8 DexDescription_Arcanine_1[] = _( + "ARCANINE is known for its high speed.\n" + "It is said to be capable of running over\n" + "6,200 miles in a single day and night."); +const u8 DexDescription_Arcanine_2[] = _( + "The fire that blazes wildly within this\n" + "POKéMON’s body is its source of power."); + +const u8 DexDescription_Poliwag_1[] = _( + "POLIWAG has a very thin skin. It is\n" + "possible to see the POKéMON’s spiral\n" + "innards right through the skin."); +const u8 DexDescription_Poliwag_2[] = _( + "Despite its thinness, however, the skin\n" + "is also very flexible. Even sharp fangs\n" + "bounce right off it."); + +const u8 DexDescription_Poliwhirl_1[] = _( + "The surface of POLIWHIRL’s body is\n" + "always wet and slick with an oily fluid.\n" + "Because of this greasy covering, it can"); +const u8 DexDescription_Poliwhirl_2[] = _( + "easily slip and slide out of the clutches\n" + "of any enemy in battle."); + +const u8 DexDescription_Poliwrath_1[] = _( + "POLIWRATH’s highly developed, brawny\n" + "muscles never grow fatigued, however\n" + "much it exercises."); +const u8 DexDescription_Poliwrath_2[] = _( + "It is so tirelessly strong, this POKéMON\n" + "can swim back and forth across the\n" + "Pacific Ocean without effort."); + +#ifdef SAPPHIRE +const u8 DexDescription_Abra_1[] = _( + "ABRA needs to sleep for eighteen hours\n" + "a day. If it doesn’t, this POKéMON loses\n" + "its ability to use telekinetic powers."); +const u8 DexDescription_Abra_2[] = _( + "If it is attacked, ABRA escapes using\n" + "TELEPORT while it is still sleeping."); +#else +const u8 DexDescription_Abra_1[] = _( + "ABRA sleeps for eighteen hours a day.\n" + "However, it can sense the presence of\n" + "foes even while it is sleeping."); +const u8 DexDescription_Abra_2[] = _( + "In such a situation, this POKéMON\n" + "immediately teleports to safety."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Kadabra_1[] = _( + "KADABRA holds a silver spoon in its\n" + "hand. The spoon is used to amplify the\n" + "alpha waves in its brain."); +const u8 DexDescription_Kadabra_2[] = _( + "Without the spoon, the POKéMON is said\n" + "to be limited to half the usual amount\n" + "of its telekinetic powers."); +#else +const u8 DexDescription_Kadabra_1[] = _( + "KADABRA emits a peculiar alpha wave\n" + "if it develops a headache. Only those\n" + "people with a particularly strong"); +const u8 DexDescription_Kadabra_2[] = _( + "psyche can hope to become a TRAINER\n" + "of this POKéMON."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Alakazam_1[] = _( + "ALAKAZAM’s brain continually grows,\n" + "infinitely multiplying brain cells.\n" + "This amazing brain gives this POKéMON"); +const u8 DexDescription_Alakazam_2[] = _( + "an astoundingly high IQ of 5,000.\n" + "It has a thorough memory of everything\n" + "that has occurred in the world."); +#else +const u8 DexDescription_Alakazam_1[] = _( + "ALAKAZAM’s brain continually grows,\n" + "making its head far too heavy to\n" + "support with its neck."); +const u8 DexDescription_Alakazam_2[] = _( + "This POKéMON holds its head up using\n" + "its psychokinetic power instead."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Machop_1[] = _( + "MACHOP exercises by hefting around\n" + "a GRAVELER as if it were a barbell.\n" + "There are some MACHOP that travel"); +const u8 DexDescription_Machop_2[] = _( + "the world in a quest to master all\n" + "kinds of martial arts."); +#else +const u8 DexDescription_Machop_1[] = _( + "MACHOP’s muscles are special - they\n" + "never get sore no matter how much they\n" + "are used in exercise."); +const u8 DexDescription_Machop_2[] = _( + "This POKéMON has sufficient power to\n" + "hurl a hundred adult humans."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Machoke_1[] = _( + "MACHOKE undertakes bodybuilding every\n" + "day even as it helps people with tough,\n" + "physically demanding labor."); +const u8 DexDescription_Machoke_2[] = _( + "On its days off, this POKéMON heads to\n" + "the fields and mountains to exercise\n" + "and train."); +#else +const u8 DexDescription_Machoke_1[] = _( + "MACHOKE’s thoroughly toned muscles\n" + "possess the hardness of steel.\n" + "This POKéMON has so much strength,"); +const u8 DexDescription_Machoke_2[] = _( + "it can easily hold aloft a sumo wrestler\n" + "on just one finger."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Machamp_1[] = _( + "MACHAMP is known as the POKéMON that\n" + "has mastered every kind of martial arts.\n" + "If it grabs hold of the foe with its four"); +const u8 DexDescription_Machamp_2[] = _( + "arms, the battle is all but over.\n" + "The hapless foe is thrown far over the\n" + "horizon."); +#else +const u8 DexDescription_Machamp_1[] = _( + "MACHAMP has the power to hurl anything\n" + "aside. However, trying to do any work\n" + "requiring care and dexterity causes"); +const u8 DexDescription_Machamp_2[] = _( + "its arms to get tangled.\n" + "This POKéMON tends to leap into action\n" + "before it thinks."); +#endif + +const u8 DexDescription_Bellsprout_1[] = _( + "BELLSPROUT’s thin and flexible body\n" + "lets it bend and sway to avoid any\n" + "attack, however strong it may be."); +const u8 DexDescription_Bellsprout_2[] = _( + "From its mouth, this POKéMON spits a\n" + "corrosive fluid that melts even iron."); + +const u8 DexDescription_Weepinbell_1[] = _( + "WEEPINBELL has a large hook on its rear\n" + "end. At night, the POKéMON hooks on to\n" + "a tree branch and goes to sleep."); +const u8 DexDescription_Weepinbell_2[] = _( + "If it moves around in its sleep, it may\n" + "wake up to find itself on the ground."); + +const u8 DexDescription_Victreebel_1[] = _( + "VICTREEBEL has a long vine that\n" + "extends from its head. This vine is\n" + "waved and flicked about as if it were"); +const u8 DexDescription_Victreebel_2[] = _( + "an animal to attract prey. When an\n" + "unsuspecting prey draws near, this\n" + "POKéMON swallows it whole."); + +#ifdef SAPPHIRE +const u8 DexDescription_Tentacool_1[] = _( + "TENTACOOL absorbs sunlight and\n" + "refracts it using water inside its body\n" + "to convert it into beam energy."); +const u8 DexDescription_Tentacool_2[] = _( + "This POKéMON shoots beams from its\n" + "crystal-like eyes."); +#else +const u8 DexDescription_Tentacool_1[] = _( + "TENTACOOL’s body is largely composed\n" + "of water. If it is removed from the\n" + "sea, it dries up like parchment."); +const u8 DexDescription_Tentacool_2[] = _( + "If this POKéMON happens to become\n" + "dehydrated, put it back into the sea."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Tentacruel_1[] = _( + "TENTACRUEL has tentacles that can be\n" + "freely elongated and shortened at will.\n" + "It ensnares prey with its tentacles and"); +const u8 DexDescription_Tentacruel_2[] = _( + "weakens the prey by dosing it with a\n" + "harsh toxin. It can catch up to 80\n" + "prey at the same time."); +#else +const u8 DexDescription_Tentacruel_1[] = _( + "TENTACRUEL has large red orbs on its\n" + "head. The orbs glow before lashing the\n" + "vicinity with a harsh ultrasonic blast."); +const u8 DexDescription_Tentacruel_2[] = _( + "This POKéMON’s outburst creates rough\n" + "waves around it."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Geodude_1[] = _( + "When GEODUDE sleeps deeply, it buries\n" + "itself halfway into the ground.\n" + "It will not awaken even if hikers step"); +const u8 DexDescription_Geodude_2[] = _( + "on it unwittingly.\n" + "In the morning, this POKéMON rolls\n" + "downhill in search of food."); +#else +const u8 DexDescription_Geodude_1[] = _( + "The longer a GEODUDE lives, the more\n" + "its edges are chipped and worn away,\n" + "making it more rounded in appearance."); +const u8 DexDescription_Geodude_2[] = _( + "However, this POKéMON’s heart will\n" + "remain hard, craggy, and rough always."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Graveler_1[] = _( + "Rocks are GRAVELER’s favorite food.\n" + "This POKéMON will climb a mountain from\n" + "the base to the summit, crunchingly"); +const u8 DexDescription_Graveler_2[] = _( + "feasting on rocks all the while.\n" + "Upon reaching the peak, it rolls back\n" + "down to the bottom."); +#else +const u8 DexDescription_Graveler_1[] = _( + "GRAVELER grows by feeding on rocks.\n" + "Apparently, it prefers to eat rocks\n" + "that are covered in moss."); +const u8 DexDescription_Graveler_2[] = _( + "This POKéMON eats its way through\n" + "a ton of rocks on a daily basis."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Golem_1[] = _( + "GOLEM is known for rolling down from\n" + "mountains. To prevent them from rolling\n" + "into the homes of people downhill,"); +const u8 DexDescription_Golem_2[] = _( + "grooves have been dug into the sides of\n" + "mountains to serve as guideways for\n" + "diverting this POKéMON’s course."); +#else +const u8 DexDescription_Golem_1[] = _( + "GOLEM live up on mountains.\n" + "If there is a large earthquake, these\n" + "POKéMON will come rolling down off"); +const u8 DexDescription_Golem_2[] = _( + "the mountains en masse to the\n" + "foothills below."); +#endif + +const u8 DexDescription_Ponyta_1[] = _( + "PONYTA is very weak at birth.\n" + "It can barely stand up.\n" + "This POKéMON becomes stronger by"); +const u8 DexDescription_Ponyta_2[] = _( + "stumbling and falling to keep up with\n" + "its parent."); + +const u8 DexDescription_Rapidash_1[] = _( + "RAPIDASH usually can be seen casually\n" + "cantering in the fields and plains.\n" + "However, when this POKéMON turns"); +const u8 DexDescription_Rapidash_2[] = _( + "serious, its fiery manes flare and blaze\n" + "as it gallops its way up to 150 mph."); + +const u8 DexDescription_Slowpoke_1[] = _( + "SLOWPOKE uses its tail to catch prey by\n" + "dipping it in water at the side of a\n" + "river."); +const u8 DexDescription_Slowpoke_2[] = _( + "However, this POKéMON often forgets\n" + "what it’s doing and often spends entire\n" + "days just loafing at water’s edge."); + +const u8 DexDescription_Slowbro_1[] = _( + "SLOWBRO’s tail has a SHELLDER firmly\n" + "attached with a bite. As a result, the\n" + "tail can’t be used for fishing anymore."); +const u8 DexDescription_Slowbro_2[] = _( + "This causes SLOWBRO to grudgingly swim\n" + "and catch prey instead."); + +#ifdef SAPPHIRE +const u8 DexDescription_Magnemite_1[] = _( + "MAGNEMITE floats in the air by emitting\n" + "electromagnetic waves from the units\n" + "at its sides. These waves block gravity."); +const u8 DexDescription_Magnemite_2[] = _( + "This POKéMON becomes incapable of\n" + "flight if its internal electrical supply\n" + "is depleted."); +#else +const u8 DexDescription_Magnemite_1[] = _( + "MAGNEMITE attaches itself to power\n" + "lines to feed on electricity.\n" + "If your house has a power outage,"); +const u8 DexDescription_Magnemite_2[] = _( + "check your circuit breakers. You may\n" + "find a large number of this POKéMON\n" + "clinging to the breaker box."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Magneton_1[] = _( + "MAGNETON emits a powerful magnetic\n" + "force that is fatal to electronics and\n" + "precision instruments. Because of"); +const u8 DexDescription_Magneton_2[] = _( + "this, it is said that some towns warn\n" + "people to keep this POKéMON inside\n" + "a POKé BALL."); +#else +const u8 DexDescription_Magneton_1[] = _( + "MAGNETON emits a powerful magnetic\n" + "force that is fatal to mechanical\n" + "devices. As a result, large cities sound"); +const u8 DexDescription_Magneton_2[] = _( + "sirens to warn citizens of large-scale\n" + "outbreaks of this POKéMON."); +#endif + +const u8 DexDescription_Farfetchd_1[] = _( + "FARFETCH’D is always seen with a stick\n" + "from a plant of some sort. Apparently,\n" + "there are good sticks and bad sticks."); +const u8 DexDescription_Farfetchd_2[] = _( + "This POKéMON has been known to fight\n" + "with others over sticks."); + +#ifdef SAPPHIRE +const u8 DexDescription_Doduo_1[] = _( + "DODUO’s two heads contain completely\n" + "identical brains.\n" + "A scientific study reported that on"); +const u8 DexDescription_Doduo_2[] = _( + "rare occasions, there will be examples\n" + "of this POKéMON possessing different\n" + "sets of brains."); +#else +const u8 DexDescription_Doduo_1[] = _( + "DODUO’s two heads never sleep at the\n" + "same time.\n" + "Its two heads take turns sleeping,"); +const u8 DexDescription_Doduo_2[] = _( + "so one head can always keep watch for\n" + "enemies while the other one sleeps."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Dodrio_1[] = _( + "Apparently, the heads aren’t the only\n" + "parts of the body that DODRIO has\n" + "three of."); +const u8 DexDescription_Dodrio_2[] = _( + "It has three sets of hearts and lungs\n" + "as well, so it is capable of running long\n" + "distances without rest."); +#else +const u8 DexDescription_Dodrio_1[] = _( + "Watch out if DODRIO’s three heads are\n" + "looking in three separate directions.\n" + "It’s a sure sign that it is on its guard."); +const u8 DexDescription_Dodrio_2[] = _( + "Don’t go near this POKéMON if it’s being\n" + "wary - it may decide to peck you."); +#endif + +const u8 DexDescription_Seel_1[] = _( + "SEEL hunts for prey in the frigid sea\n" + "underneath sheets of ice.\n" + "When it needs to breathe, it punches"); +const u8 DexDescription_Seel_2[] = _( + "a hole through the ice with the\n" + "sharply protruding section of its head."); + +const u8 DexDescription_Dewgong_1[] = _( + "DEWGONG loves to snooze on bitterly\n" + "cold ice.\n" + "The sight of this POKéMON sleeping on"); +const u8 DexDescription_Dewgong_2[] = _( + "a glacier was mistakenly thought to be\n" + "a mermaid by a mariner long ago."); + +#ifdef SAPPHIRE +const u8 DexDescription_Grimer_1[] = _( + "GRIMER emerged from the sludge that\n" + "settled on a polluted seabed.\n" + "This POKéMON loves anything filthy."); +const u8 DexDescription_Grimer_2[] = _( + "It constantly leaks a horribly germ-\n" + "infested fluid from all over its body."); +#else +const u8 DexDescription_Grimer_1[] = _( + "GRIMER’s sludgy and rubbery body can\n" + "be forced through any opening, however\n" + "small it may be."); +const u8 DexDescription_Grimer_2[] = _( + "This POKéMON enters sewer pipes to\n" + "drink filthy wastewater."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Muk_1[] = _( + "This POKéMON’s favorite food is\n" + "anything that is repugnantly filthy.\n" + "In dirty towns where people think"); +const u8 DexDescription_Muk_2[] = _( + "nothing of throwing away litter on the\n" + "streets, MUK are certain to gather."); +#else +const u8 DexDescription_Muk_1[] = _( + "From MUK’s body seeps a foul fluid that\n" + "gives off a nose-bendingly horrible\n" + "stench."); +const u8 DexDescription_Muk_2[] = _( + "Just one drop of this POKéMON’s body\n" + "fluid can turn a pool stagnant and\n" + "rancid."); +#endif + +const u8 DexDescription_Shellder_1[] = _( + "At night, this POKéMON uses its broad\n" + "tongue to burrow a hole in the seafloor\n" + "sand and then sleep in it."); +const u8 DexDescription_Shellder_2[] = _( + "While it is sleeping, SHELLDER closes its\n" + "shell, but leaves its tongue hanging\n" + "out."); + +const u8 DexDescription_Cloyster_1[] = _( + "CLOYSTER is capable of swimming in the\n" + "sea. It does so by swallowing water,\n" + "then jetting it out toward the rear."); +const u8 DexDescription_Cloyster_2[] = _( + "This POKéMON shoots spikes from its\n" + "shell using the same system."); + +const u8 DexDescription_Gastly_1[] = _( + "GASTLY is largely composed of gaseous\n" + "matter. When exposed to a strong wind,\n" + "the gaseous body quickly dwindles away."); +const u8 DexDescription_Gastly_2[] = _( + "Groups of this POKéMON cluster under\n" + "the eaves of houses to escape the\n" + "ravages of wind."); + +const u8 DexDescription_Haunter_1[] = _( + "HAUNTER is a dangerous POKéMON.\n" + "If one beckons you while floating in\n" + "darkness, you must never approach it."); +const u8 DexDescription_Haunter_2[] = _( + "This POKéMON will try to lick you with its\n" + "tongue and steal your life away."); + +const u8 DexDescription_Gengar_1[] = _( + "Sometimes, on a dark night, your shadow\n" + "thrown by a streetlight will suddenly\n" + "and startlingly overtake you."); +const u8 DexDescription_Gengar_2[] = _( + "It is actually a GENGAR running past\n" + "you, pretending to be your shadow."); + +const u8 DexDescription_Onix_1[] = _( + "ONIX has a magnet in its brain. It acts\n" + "as a compass so that this POKéMON does\n" + "not lose direction while it is tunneling."); +const u8 DexDescription_Onix_2[] = _( + "As it grows older, its body becomes\n" + "increasingly rounder and smoother."); + +const u8 DexDescription_Drowzee_1[] = _( + "If your nose becomes itchy while you\n" + "are sleeping, it’s a sure sign that one\n" + "of these POKéMON is standing above"); +const u8 DexDescription_Drowzee_2[] = _( + "your pillow and trying to eat your dream\n" + "through your nostrils."); + +const u8 DexDescription_Hypno_1[] = _( + "HYPNO holds a pendulum in its hand.\n" + "The arcing movement and glitter of the\n" + "pendulum lull the foe into a deep state"); +const u8 DexDescription_Hypno_2[] = _( + "of hypnosis.\n" + "While this POKéMON searches for prey,\n" + "it polishes the pendulum."); + +const u8 DexDescription_Krabby_1[] = _( + "KRABBY live on beaches, burrowed inside\n" + "holes dug into the sand.\n" + "On sandy beaches with little in the way"); +const u8 DexDescription_Krabby_2[] = _( + "of food, these POKéMON can be seen\n" + "squabbling with each other over\n" + "territory."); + +const u8 DexDescription_Kingler_1[] = _( + "KINGLER has an enormous, oversized\n" + "claw. It waves this huge claw in the\n" + "air to communicate with others."); +const u8 DexDescription_Kingler_2[] = _( + "However, because the claw is so heavy,\n" + "the POKéMON quickly tires."); + +#ifdef SAPPHIRE +const u8 DexDescription_Voltorb_1[] = _( + "VOLTORB is extremely sensitive - it\n" + "explodes at the slightest of shocks.\n" + "It is rumored that it was first created"); +const u8 DexDescription_Voltorb_2[] = _( + "when a POKé BALL was exposed to a\n" + "powerful pulse of energy."); +#else +const u8 DexDescription_Voltorb_1[] = _( + "VOLTORB was first sighted at a company\n" + "that manufactures POKé BALLS.\n" + "The link between that sighting and"); +const u8 DexDescription_Voltorb_2[] = _( + "the fact that this POKéMON looks very\n" + "similar to a POKé BALL remains a\n" + "mystery."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Electrode_1[] = _( + "One of ELECTRODE’s characteristics is\n" + "its attraction to electricity.\n" + "It is a problematical POKéMON that"); +const u8 DexDescription_Electrode_2[] = _( + "congregates mostly at electrical\n" + "power plants to feed on electricity\n" + "that has just been generated."); +#else +const u8 DexDescription_Electrode_1[] = _( + "ELECTRODE eats electricity in the\n" + "atmosphere. On days when lightning\n" + "strikes, you can see this POKéMON"); +const u8 DexDescription_Electrode_2[] = _( + "exploding all over the place from\n" + "eating too much electricity."); +#endif + +const u8 DexDescription_Exeggcute_1[] = _( + "This POKéMON consists of six eggs that\n" + "form a closely knit cluster. The six eggs\n" + "attract each other and spin around."); +const u8 DexDescription_Exeggcute_2[] = _( + "When cracks increasingly appear on the\n" + "eggs, EXEGGCUTE is close to evolution."); + +const u8 DexDescription_Exeggutor_1[] = _( + "EXEGGUTOR originally came from the\n" + "tropics. Its heads steadily grow larger\n" + "from exposure to strong sunlight."); +const u8 DexDescription_Exeggutor_2[] = _( + "It is said that when the heads fall off,\n" + "they group together to form EXEGGCUTE."); + +const u8 DexDescription_Cubone_1[] = _( + "CUBONE pines for the mother it will\n" + "never see again. Seeing a likeness of\n" + "its mother in the full moon, it cries."); +const u8 DexDescription_Cubone_2[] = _( + "The stains on the skull the POKéMON\n" + "wears are made by the tears it sheds."); + +const u8 DexDescription_Marowak_1[] = _( + "MAROWAK is the evolved form of a CUBONE\n" + "that has overcome its sadness at the\n" + "loss of its mother and grown tough."); +const u8 DexDescription_Marowak_2[] = _( + "This POKéMON’s tempered and hardened\n" + "spirit is not easily broken."); + +const u8 DexDescription_Hitmonlee_1[] = _( + "HITMONLEE’s legs freely contract and\n" + "stretch. Using these springlike legs, it\n" + "bowls over foes with devastating kicks."); +const u8 DexDescription_Hitmonlee_2[] = _( + "After battle, it rubs down its legs and\n" + "loosens the muscles to overcome\n" + "fatigue."); + +const u8 DexDescription_Hitmonchan_1[] = _( + "HITMONCHAN is said to possess the\n" + "spirit of a boxer who had been working\n" + "towards a world championship."); +const u8 DexDescription_Hitmonchan_2[] = _( + "This POKéMON has an indomitable spirit\n" + "and will never give up in the face of\n" + "adversity."); + +const u8 DexDescription_Lickitung_1[] = _( + "Whenever LICKITUNG comes across\n" + "something new, it will unfailingly give it\n" + "a lick. It does so because it memorizes"); +const u8 DexDescription_Lickitung_2[] = _( + "things by texture and by taste.\n" + "It is somewhat put off by sour things."); + +#ifdef SAPPHIRE +const u8 DexDescription_Koffing_1[] = _( + "KOFFING embodies toxic substances.\n" + "It mixes the toxins with raw garbage to\n" + "set off a chemical reaction that"); +const u8 DexDescription_Koffing_2[] = _( + "results in a terribly powerful poison\n" + "gas. The higher the temperature, the\n" + "more gas is concocted by this POKéMON."); +#else +const u8 DexDescription_Koffing_1[] = _( + "If KOFFING becomes agitated, it raises\n" + "the toxicity of its internal gases and\n" + "jets them out from all over its body."); +const u8 DexDescription_Koffing_2[] = _( + "This POKéMON may also overinflate its\n" + "round body, then explode."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Weezing_1[] = _( + "WEEZING alternately shrinks and\n" + "inflates its twin bodies to mix together\n" + "toxic gases inside."); +const u8 DexDescription_Weezing_2[] = _( + "The more the gases are mixed, the more\n" + "powerful the toxins become. The\n" + "POKéMON also becomes more putrid."); +#else +const u8 DexDescription_Weezing_1[] = _( + "WEEZING loves the gases given off by\n" + "rotted kitchen garbage. This POKéMON\n" + "will find a dirty, unkempt house and"); +const u8 DexDescription_Weezing_2[] = _( + "make it its home. At night, when the\n" + "people in the house are asleep, it will\n" + "go through the trash."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Rhyhorn_1[] = _( + "RHYHORN’s brain is very small. It is so\n" + "dense, while on a run it forgets why it\n" + "started running in the first place."); +const u8 DexDescription_Rhyhorn_2[] = _( + "It apparently remembers sometimes if it\n" + "demolishes something."); +#else +const u8 DexDescription_Rhyhorn_1[] = _( + "RHYHORN runs in a straight line,\n" + "smashing everything in its path.\n" + "It is not bothered even if it rushes"); +const u8 DexDescription_Rhyhorn_2[] = _( + "headlong into a block of steel.\n" + "This POKéMON may feel some pain from\n" + "the collision the next day, however."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Rhydon_1[] = _( + "RHYDON has a horn that serves as a\n" + "drill. It is used for destroying rocks\n" + "and boulders."); +const u8 DexDescription_Rhydon_2[] = _( + "This POKéMON occasionally rams into\n" + "streams of magma, but the armor-like\n" + "hide prevents it from feeling the heat."); +#else +const u8 DexDescription_Rhydon_1[] = _( + "RHYDON’s horn can crush even uncut\n" + "diamonds. One sweeping blow of its tail\n" + "can topple a building."); +const u8 DexDescription_Rhydon_2[] = _( + "This POKéMON’s hide is extremely tough.\n" + "Even direct cannon hits don’t leave\n" + "a scratch."); +#endif + +const u8 DexDescription_Chansey_1[] = _( + "CHANSEY lays nutritionally excellent\n" + "eggs on an everyday basis.\n" + "The eggs are so delicious, they are"); +const u8 DexDescription_Chansey_2[] = _( + "easily and eagerly devoured by even\n" + "those people who have lost their\n" + "appetite."); + +const u8 DexDescription_Tangela_1[] = _( + "TANGELA’s vines snap off easily if they\n" + "are grabbed. This happens without pain,\n" + "allowing it to make a quick getaway."); +const u8 DexDescription_Tangela_2[] = _( + "The lost vines are replaced by newly\n" + "grown vines the very next day."); + +const u8 DexDescription_Kangaskhan_1[] = _( + "If you come across a young KANGASKHAN\n" + "playing by itself, you must never\n" + "disturb it or attempt to catch it."); +const u8 DexDescription_Kangaskhan_2[] = _( + "The baby POKéMON’s parent is sure to\n" + "be in the area, and it will become\n" + "violently enraged at you."); + +#ifdef SAPPHIRE +const u8 DexDescription_Horsea_1[] = _( + "If HORSEA senses danger, it will\n" + "reflexively spray a dense black ink\n" + "from its mouth and try to escape."); +const u8 DexDescription_Horsea_2[] = _( + "This POKéMON swims by cleverly flapping\n" + "the fins on its back."); +#else +const u8 DexDescription_Horsea_1[] = _( + "HORSEA eats small insects and moss off\n" + "of rocks. If the ocean current turns\n" + "fast, this POKéMON anchors itself by"); +const u8 DexDescription_Horsea_2[] = _( + "wrapping its tail around rocks or coral\n" + "to prevent being washed away."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Seadra_1[] = _( + "SEADRA generates whirlpools by spinning\n" + "its body. The whirlpools are strong\n" + "enough to swallow even fishing boats."); +const u8 DexDescription_Seadra_2[] = _( + "This POKéMON weakens prey with these\n" + "currents, then swallows it whole."); +#else +const u8 DexDescription_Seadra_1[] = _( + "SEADRA sleeps after wriggling itself\n" + "between the branches of coral.\n" + "Those trying to harvest coral are"); +const u8 DexDescription_Seadra_2[] = _( + "occasionally stung by this POKéMON’s\n" + "poison barbs if they fail to notice it."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Goldeen_1[] = _( + "GOLDEEN loves swimming wild and free\n" + "in rivers and ponds.\n" + "If one of these POKéMON is placed in an"); +const u8 DexDescription_Goldeen_2[] = _( + "aquarium, it will shatter even the\n" + "thickest glass with one ram of its horn\n" + "and make its escape."); +#else +const u8 DexDescription_Goldeen_1[] = _( + "GOLDEEN is a very beautiful POKéMON\n" + "with fins that billow elegantly in water.\n" + "However, don’t let your guard down"); +const u8 DexDescription_Goldeen_2[] = _( + "around this POKéMON - it could ram you\n" + "powerfully with its horn."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Seaking_1[] = _( + "SEAKING is very protective of its eggs.\n" + "The male and female will take turns\n" + "patrolling around their nest and eggs."); +const u8 DexDescription_Seaking_2[] = _( + "The guarding of eggs by these POKéMON\n" + "goes on for over a month."); +#else +const u8 DexDescription_Seaking_1[] = _( + "In the autumn, SEAKING males can be\n" + "seen performing courtship dances in\n" + "riverbeds to woo females."); +const u8 DexDescription_Seaking_2[] = _( + "During this season, this POKéMON’s body\n" + "coloration is at its most beautiful."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Staryu_1[] = _( + "STARYU apparently communicates with\n" + "the stars in the night sky by flashing\n" + "the red core at the center of its body."); +const u8 DexDescription_Staryu_2[] = _( + "If parts of its body are torn, this\n" + "POKéMON simply regenerates the\n" + "missing pieces and limbs."); +#else +const u8 DexDescription_Staryu_1[] = _( + "STARYU’s center section has an organ\n" + "called the core that shines bright red.\n" + "If you go to a beach toward the"); +const u8 DexDescription_Staryu_2[] = _( + "end of summer, the glowing cores of\n" + "these POKéMON look like the stars\n" + "in the sky."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Starmie_1[] = _( + "STARMIE swims through water by\n" + "spinning its star-shaped body as if it\n" + "were a propeller on a ship."); +const u8 DexDescription_Starmie_2[] = _( + "The core at the center of this\n" + "POKéMON’s body glows in seven colors."); +#else +const u8 DexDescription_Starmie_1[] = _( + "STARMIE’s center section - the core -\n" + "glows brightly in seven colors.\n" + "Because of its luminous nature, this"); +const u8 DexDescription_Starmie_2[] = _( + "POKéMON has been given the nickname\n" + "“the gem of the sea.”"); +#endif + +const u8 DexDescription_Mrmime_1[] = _( + "MR. MIME is a master of pantomime.\n" + "Its gestures and motions convince\n" + "watchers that something unseeable"); +const u8 DexDescription_Mrmime_2[] = _( + "actually exists. Once it is believed,\n" + "it will exist as if it were a real thing."); + +const u8 DexDescription_Scyther_1[] = _( + "SCYTHER is blindingly fast. Its blazing\n" + "speed enhances the effectiveness of\n" + "the twin scythes on its forearms."); +const u8 DexDescription_Scyther_2[] = _( + "This POKéMON’s scythes are so\n" + "effective, they can slice through thick\n" + "logs in one wicked stroke."); + +const u8 DexDescription_Jynx_1[] = _( + "JYNX walks rhythmically, swaying and\n" + "shaking its hips as if it were dancing.\n" + "Its motions are so bouncingly alluring,"); +const u8 DexDescription_Jynx_2[] = _( + "people seeing it are compelled to shake\n" + "their hips without giving any thought\n" + "to what they are doing."); + +const u8 DexDescription_Electabuzz_1[] = _( + "When a storm arrives, gangs of this\n" + "POKéMON compete with each other to\n" + "scale heights that are likely to be"); +const u8 DexDescription_Electabuzz_2[] = _( + "stricken by lightning bolts.\n" + "Some towns use ELECTABUZZ in place of\n" + "lightning rods."); + +const u8 DexDescription_Magmar_1[] = _( + "In battle, MAGMAR blows out intensely\n" + "hot flames from all over its body to\n" + "intimidate its opponent."); +const u8 DexDescription_Magmar_2[] = _( + "This POKéMON’s fiery bursts create\n" + "heat waves that ignite grass and trees\n" + "in its surroundings."); + +#ifdef SAPPHIRE +const u8 DexDescription_Pinsir_1[] = _( + "PINSIR has a pair of massive horns \n" + "Protruding from the surface of these\n" + "horns are thorns."); +const u8 DexDescription_Pinsir_2[] = _( + "These thorns are driven deeply into the\n" + "foe’s body when the pincer closes,\n" + "making it tough for the foe to escape."); +#else +const u8 DexDescription_Pinsir_1[] = _( + "PINSIR is astoundingly strong. It can\n" + "grip a foe weighing twice its weight\n" + "in its horns and easily lift it."); +const u8 DexDescription_Pinsir_2[] = _( + "This POKéMON’s movements turn sluggish\n" + "in cold places."); +#endif + +const u8 DexDescription_Tauros_1[] = _( + "This POKéMON is not satisfied unless\n" + "it is rampaging at all times.\n" + "If there is no opponent for TAUROS to"); +const u8 DexDescription_Tauros_2[] = _( + "battle, it will charge at thick trees and\n" + "knock them down to calm itself."); + +#ifdef SAPPHIRE +const u8 DexDescription_Magikarp_1[] = _( + "MAGIKARP is virtually useless in battle\n" + "as it can only splash around.\n" + "As a result, it is considered to be weak."); +const u8 DexDescription_Magikarp_2[] = _( + "However, it is actually a very hardy\n" + "POKéMON that can survive in any body of\n" + "water no matter how polluted it is."); +#else +const u8 DexDescription_Magikarp_1[] = _( + "MAGIKARP is a pathetic excuse for a\n" + "POKéMON that is only capable of\n" + "flopping and splashing."); +const u8 DexDescription_Magikarp_2[] = _( + "This behavior prompted scientists to\n" + "undertake research into it."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Gyarados_1[] = _( + "Once GYARADOS goes on a rampage, its\n" + "ferociously violent blood doesn’t calm\n" + "until it has burned everything down."); +const u8 DexDescription_Gyarados_2[] = _( + "There are records of this POKéMON’s\n" + "rampages lasting a whole month."); +#else +const u8 DexDescription_Gyarados_1[] = _( + "When MAGIKARP evolves into GYARADOS,\n" + "its brain cells undergo a structural\n" + "transformation. It is said that this"); +const u8 DexDescription_Gyarados_2[] = _( + "transformation is to blame for this\n" + "POKéMON’s wildly violent nature."); +#endif + +const u8 DexDescription_Lapras_1[] = _( + "People have driven LAPRAS almost to the\n" + "point of extinction. In the evenings,\n" + "this POKéMON is said to sing plaintively"); +const u8 DexDescription_Lapras_2[] = _( + "as it seeks what few others of its kind\n" + "still remain."); + +const u8 DexDescription_Ditto_1[] = _( + "DITTO rearranges its cell structure to\n" + "transform itself into other shapes.\n" + "However, if it tries to transform itself"); +const u8 DexDescription_Ditto_2[] = _( + "into something by relying on its memory,\n" + "this POKéMON manages to get details\n" + "wrong."); + +const u8 DexDescription_Eevee_1[] = _( + "EEVEE has an unstable genetic makeup\n" + "that suddenly mutates due to the\n" + "environment in which it lives."); +const u8 DexDescription_Eevee_2[] = _( + "Radiation from various STONES causes\n" + "this POKéMON to evolve."); + +const u8 DexDescription_Vaporeon_1[] = _( + "VAPOREON underwent a spontaneous\n" + "mutation and grew fins and gills that\n" + "allow it to live underwater."); +const u8 DexDescription_Vaporeon_2[] = _( + "This POKéMON has the ability to freely\n" + "control water."); + +const u8 DexDescription_Jolteon_1[] = _( + "JOLTEON’s cells generate a low level of\n" + "electricity. This power is amplified by\n" + "the static electricity of its fur,"); +const u8 DexDescription_Jolteon_2[] = _( + "enabling the POKéMON to drop\n" + "thunderbolts. The bristling fur is made\n" + "of electrically charged needles."); + +const u8 DexDescription_Flareon_1[] = _( + "FLAREON’s fluffy fur has a functional\n" + "purpose - it releases heat into the air\n" + "so that its body does not get"); +const u8 DexDescription_Flareon_2[] = _( + "excessively hot.\n" + "This POKéMON’s body temperature can\n" + "rise to a maximum of 1,650 degrees F."); + +const u8 DexDescription_Porygon_1[] = _( + "PORYGON is capable of reverting itself\n" + "entirely back to program data and\n" + "entering cyberspace."); +const u8 DexDescription_Porygon_2[] = _( + "This POKéMON is copy-protected so it\n" + "cannot be duplicated by copying."); + +const u8 DexDescription_Omanyte_1[] = _( + "OMANYTE is one of the ancient and long-\n" + "since-extinct POKéMON that have been\n" + "regenerated from fossils by people."); +const u8 DexDescription_Omanyte_2[] = _( + "If attacked by an enemy, it withdraws\n" + "itself inside its hard shell."); + +const u8 DexDescription_Omastar_1[] = _( + "OMASTAR uses its tentacles to capture\n" + "its prey. It is believed to have become\n" + "extinct because its shell grew too large"); +const u8 DexDescription_Omastar_2[] = _( + "and heavy, causing its movements to\n" + "become too slow and ponderous."); + +const u8 DexDescription_Kabuto_1[] = _( + "KABUTO is a POKéMON that has been\n" + "regenerated from a fossil. However, in\n" + "extremely rare cases, living examples"); +const u8 DexDescription_Kabuto_2[] = _( + "have been discovered.\n" + "The POKéMON has not changed at all for\n" + "300 million years."); + +const u8 DexDescription_Kabutops_1[] = _( + "KABUTOPS swam underwater to hunt for\n" + "its prey in ancient times.\n" + "The POKéMON was apparently evolving"); +const u8 DexDescription_Kabutops_2[] = _( + "from being a water-dweller to living on\n" + "land as evident from the beginnings of\n" + "change in its gills and legs."); + +const u8 DexDescription_Aerodactyl_1[] = _( + "AERODACTYL is a POKéMON from the age\n" + "of dinosaurs. It was regenerated from\n" + "genetic material extracted from amber."); +const u8 DexDescription_Aerodactyl_2[] = _( + "It is imagined to have been the king of\n" + "the skies in ancient times."); + +const u8 DexDescription_Snorlax_1[] = _( + "SNORLAX’s typical day consists of\n" + "nothing more than eating and sleeping.\n" + "It is such a docile POKéMON that there"); +const u8 DexDescription_Snorlax_2[] = _( + "are children who use its expansive belly\n" + "as a place to play."); + +const u8 DexDescription_Articuno_1[] = _( + "ARTICUNO is a legendary bird POKéMON\n" + "that can control ice.\n" + "The flapping of its wings chills the air."); +const u8 DexDescription_Articuno_2[] = _( + "As a result, it is said that when this\n" + "POKéMON flies, snow will fall."); + +const u8 DexDescription_Zapdos_1[] = _( + "ZAPDOS is a legendary bird POKéMON that\n" + "has the ability to control electricity.\n" + "It usually lives in thunderclouds."); +const u8 DexDescription_Zapdos_2[] = _( + "The POKéMON gains power if it is\n" + "stricken by lightning bolts."); + +const u8 DexDescription_Moltres_1[] = _( + "MOLTRES is a legendary bird POKéMON\n" + "that has the ability to control fire.\n" + "If this POKéMON is injured, it is said to"); +const u8 DexDescription_Moltres_2[] = _( + "dip its body in the molten magma of a\n" + "volcano to burn and heal itself."); + +const u8 DexDescription_Dratini_1[] = _( + "DRATINI continually molts and sloughs\n" + "off its old skin.\n" + "It does so because the life energy"); +const u8 DexDescription_Dratini_2[] = _( + "within its body steadily builds to reach\n" + "uncontrollable levels."); + +const u8 DexDescription_Dragonair_1[] = _( + "DRAGONAIR stores an enormous amount\n" + "of energy inside its body.\n" + "It is said to alter weather conditions"); +const u8 DexDescription_Dragonair_2[] = _( + "in its vicinity by discharging energy\n" + "from the crystals on its neck and tail."); + +const u8 DexDescription_Dragonite_1[] = _( + "DRAGONITE is capable of circling the\n" + "globe in just sixteen hours.\n" + "It is a kindhearted POKéMON that leads"); +const u8 DexDescription_Dragonite_2[] = _( + "lost and foundering ships in a storm to\n" + "the safety of land."); + +const u8 DexDescription_Mewtwo_1[] = _( + "MEWTWO is a POKéMON that was created\n" + "by genetic manipulation.\n" + "However, even though the scientific"); +const u8 DexDescription_Mewtwo_2[] = _( + "power of humans created this POKéMON’s\n" + "body, they failed to endow MEWTWO with\n" + "a compassionate heart."); + +const u8 DexDescription_Mew_1[] = _( + "MEW is said to possess the genetic\n" + "composition of all POKéMON.\n" + "It is capable of making itself invisible"); +const u8 DexDescription_Mew_2[] = _( + "at will, so it entirely avoids notice even\n" + "if it approaches people."); + +const u8 DexDescription_Chikorita_1[] = _( + "In battle, CHIKORITA waves its leaf\n" + "around to keep the foe at bay.\n" + "However, a sweet fragrance also wafts"); +const u8 DexDescription_Chikorita_2[] = _( + "from the leaf, becalming the battling\n" + "POKéMON and creating a cozy, friendly\n" + "atmosphere all around."); + +const u8 DexDescription_Bayleef_1[] = _( + "BAYLEEF’s neck is ringed by curled-up\n" + "leaves. Inside each tubular leaf is a\n" + "small shoot of a tree."); +const u8 DexDescription_Bayleef_2[] = _( + "The fragrance of this shoot makes\n" + "people peppy."); + +const u8 DexDescription_Meganium_1[] = _( + "The fragrance of MEGANIUM’s flower\n" + "soothes and calms emotions.\n" + "In battle, this POKéMON gives off more"); +const u8 DexDescription_Meganium_2[] = _( + "of its becalming scent to blunt the\n" + "foe’s fighting spirit."); + +const u8 DexDescription_Cyndaquil_1[] = _( + "CYNDAQUIL protects itself by flaring up\n" + "the flames on its back.\n" + "The flames are vigorous if the POKéMON"); +const u8 DexDescription_Cyndaquil_2[] = _( + "is angry. However, if it is tired, the\n" + "flames splutter fitfully with incomplete\n" + "combustion."); + +const u8 DexDescription_Quilava_1[] = _( + "QUILAVA keeps its foes at bay with the\n" + "intensity of its flames and gusts of\n" + "superheated air."); +const u8 DexDescription_Quilava_2[] = _( + "This POKéMON applies its outstanding\n" + "nimbleness to dodge attacks even while\n" + "scorching the foe with flames."); + +const u8 DexDescription_Typhlosion_1[] = _( + "TYPHLOSION obscures itself behind a\n" + "shimmering heat haze that it creates\n" + "using its intensely hot flames."); +const u8 DexDescription_Typhlosion_2[] = _( + "This POKéMON creates blazing explosive\n" + "blasts that burn everything to cinders."); + +const u8 DexDescription_Totodile_1[] = _( + "Despite the smallness of its body,\n" + "TOTODILE’s jaws are very powerful.\n" + "While the POKéMON may think it is just"); +const u8 DexDescription_Totodile_2[] = _( + "playfully nipping, its bite has enough\n" + "power to cause serious injury."); + +const u8 DexDescription_Croconaw_1[] = _( + "Once CROCONAW has clamped its jaws on\n" + "its foe, it will absolutely not let go.\n" + "Because the tips of its fangs are"); +const u8 DexDescription_Croconaw_2[] = _( + "forked back like barbed fishhooks, they\n" + "become impossible to remove when \n" + "they have sunk in."); + +const u8 DexDescription_Feraligatr_1[] = _( + "FERALIGATR intimidates its foes by\n" + "opening its huge mouth.\n" + "In battle, it will kick the ground hard"); +const u8 DexDescription_Feraligatr_2[] = _( + "with its thick and powerful hind legs to\n" + "charge at the foe at an incredible\n" + "speed."); + +const u8 DexDescription_Sentret_1[] = _( + "When SENTRET sleeps, it does so while\n" + "another stands guard. The sentry wakes\n" + "the others at the first sign of danger."); +const u8 DexDescription_Sentret_2[] = _( + "When this POKéMON becomes separated\n" + "from its pack, it becomes incapable of\n" + "sleep due to fear."); + +const u8 DexDescription_Furret_1[] = _( + "FURRET has a very slim build.\n" + "When under attack, it can slickly squirm\n" + "through narrow spaces and get away."); +const u8 DexDescription_Furret_2[] = _( + "In spite of its short limbs, this\n" + "POKéMON is very nimble and fleet."); + +const u8 DexDescription_Hoothoot_1[] = _( + "HOOTHOOT has an internal organ that\n" + "senses and tracks the earth’s rotation.\n" + "Using this special organ, this POKéMON"); +const u8 DexDescription_Hoothoot_2[] = _( + "begins hooting at precisely the same\n" + "time every day."); + +const u8 DexDescription_Noctowl_1[] = _( + "NOCTOWL never fails at catching prey in\n" + "darkness. This POKéMON owes its\n" + "success to its superior vision that"); +const u8 DexDescription_Noctowl_2[] = _( + "allows it to see in minimal light, and to\n" + "its soft, supple wings that make no\n" + "sound in flight."); + +const u8 DexDescription_Ledyba_1[] = _( + "LEDYBA secretes an aromatic fluid from\n" + "where its legs join its body. This fluid\n" + "is used for communicating with others."); +const u8 DexDescription_Ledyba_2[] = _( + "This POKéMON conveys its feelings to\n" + "others by altering the fluid’s scent."); + +const u8 DexDescription_Ledian_1[] = _( + "It is said that in lands with clean air,\n" + "where the stars fill the sky, there live\n" + "LEDIAN in countless numbers."); +const u8 DexDescription_Ledian_2[] = _( + "There is a good reason for this - the\n" + "POKéMON uses the light of the stars\n" + "as its energy."); + +const u8 DexDescription_Spinarak_1[] = _( + "The web spun by SPINARAK can be\n" + "considered its second nervous system.\n" + "It is said that this POKéMON can"); +const u8 DexDescription_Spinarak_2[] = _( + "determine what kind of prey is touching\n" + "its web just by the tiny vibrations it\n" + "feels through the web’s strands."); + +const u8 DexDescription_Ariados_1[] = _( + "ARIADOS’s feet are tipped with tiny\n" + "hooked claws that enable it to scuttle\n" + "on ceilings and vertical walls."); +const u8 DexDescription_Ariados_2[] = _( + "This POKéMON constricts the foe with\n" + "thin and strong silk webbing."); + +#ifdef SAPPHIRE +const u8 DexDescription_Crobat_1[] = _( + "CROBAT sneaks up on its intended prey\n" + "using wings that barely make a sound.\n" + "This POKéMON rests by hanging on a"); +const u8 DexDescription_Crobat_2[] = _( + "tree branch with its rear legs that\n" + "serve as wings."); +#else +const u8 DexDescription_Crobat_1[] = _( + "If this POKéMON is flying by fluttering\n" + "only a pair of wings on either the\n" + "forelegs or hind legs, it’s proof that"); +const u8 DexDescription_Crobat_2[] = _( + "CROBAT has been flying a long distance.\n" + "It switches the wings it uses if it is\n" + "tired."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Chinchou_1[] = _( + "CHINCHOU’s two antennas are filled with\n" + "cells that generate strong electricity.\n" + "This POKéMON’s cells create so much"); +const u8 DexDescription_Chinchou_2[] = _( + "electrical power, it even makes itself\n" + "tingle slightly."); +#else +const u8 DexDescription_Chinchou_1[] = _( + "CHINCHOU lets loose positive and\n" + "negative electrical charges from its\n" + "two antennas to make its prey faint."); +const u8 DexDescription_Chinchou_2[] = _( + "This POKéMON flashes its electric\n" + "lights to exchange signals with others."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Lanturn_1[] = _( + "LANTURN is known to emit light.\n" + "If you peer down into the dark sea from\n" + "a ship at night, you can sometimes see"); +const u8 DexDescription_Lanturn_2[] = _( + "this POKéMON’s light rising from the\n" + "depths where it swims. It gives the sea\n" + "an appearance of a starlit night."); +#else +const u8 DexDescription_Lanturn_1[] = _( + "LANTURN is nicknamed “the deep-sea\n" + "star” for its illuminated antenna.\n" + "This POKéMON produces light by"); +const u8 DexDescription_Lanturn_2[] = _( + "causing a chemical reaction between\n" + "bacteria and its bodily fluids inside\n" + "the antenna."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Pichu_1[] = _( + "When PICHU plays with others, it may\n" + "short out electricity with another\n" + "PICHU, creating a shower of sparks."); +const u8 DexDescription_Pichu_2[] = _( + "In that event, this POKéMON will begin\n" + "crying, startled by the flash of sparks."); +#else +const u8 DexDescription_Pichu_1[] = _( + "PICHU charges itself with electricity\n" + "more easily on days with thunderclouds\n" + "or when the air is very dry."); +const u8 DexDescription_Pichu_2[] = _( + "You can hear the crackling of static\n" + "electricity coming off this POKéMON."); +#endif + +const u8 DexDescription_Cleffa_1[] = _( + "On nights with many shooting stars,\n" + "CLEFFA can be seen dancing in a ring.\n" + "They dance through the night and stop"); +const u8 DexDescription_Cleffa_2[] = _( + "only at the break of day, when these\n" + "POKéMON quench their thirst with the\n" + "morning dew."); + +#ifdef SAPPHIRE +const u8 DexDescription_Igglybuff_1[] = _( + "IGGLYBUFF has a soft and plushy body\n" + "that feels very much like a marshmallow.\n" + "From this body wafts a gently sweet"); +const u8 DexDescription_Igglybuff_2[] = _( + "fragrance that soothes and calms the\n" + "emotions of its foes."); +#else +const u8 DexDescription_Igglybuff_1[] = _( + "IGGLYBUFF’s vocal chords are not\n" + "sufficiently developed. It would hurt\n" + "its throat if it were to sing too much."); +const u8 DexDescription_Igglybuff_2[] = _( + "This POKéMON gargles with freshwater\n" + "from a clean stream."); +#endif + +const u8 DexDescription_Togepi_1[] = _( + "As its energy, TOGEPI uses the positive\n" + "emotions of compassion and pleasure\n" + "exuded by people and POKéMON."); +const u8 DexDescription_Togepi_2[] = _( + "This POKéMON stores up feelings of\n" + "happiness inside its shell, then shares\n" + "them with others."); + +const u8 DexDescription_Togetic_1[] = _( + "TOGETIC is said to be a POKéMON that\n" + "brings good fortune. When the POKéMON\n" + "spots someone who is pure of heart,"); +const u8 DexDescription_Togetic_2[] = _( + "it is said to appear and share its\n" + "happiness with that person."); + +#ifdef SAPPHIRE +const u8 DexDescription_Natu_1[] = _( + "NATU has a highly developed jumping\n" + "ability. The POKéMON flaps and leaps\n" + "onto tree branches that are taller than"); +const u8 DexDescription_Natu_2[] = _( + "grown-up people to pick at the tree’s\n" + "new shoots."); +#else +const u8 DexDescription_Natu_1[] = _( + "NATU cannot fly because its wings are\n" + "not yet fully grown. If your eyes meet\n" + "with this POKéMON’s eyes, it will stare"); +const u8 DexDescription_Natu_2[] = _( + "back intently at you. But if you move\n" + "even slightly, it will hop away to safety."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Xatu_1[] = _( + "XATU is known to stand motionless while\n" + "staring at the sun all day long.\n" + "Some people revere it as a mystical"); +const u8 DexDescription_Xatu_2[] = _( + "POKéMON out of their belief that XATU\n" + "is in possession of the power to see\n" + "into the future."); +#else +const u8 DexDescription_Xatu_1[] = _( + "XATU stands rooted and still in one\n" + "spot all day long. People believe that\n" + "this POKéMON does so out of fear of"); +const u8 DexDescription_Xatu_2[] = _( + "the terrible things it has foreseen in\n" + "the future."); +#endif + +const u8 DexDescription_Mareep_1[] = _( + "MAREEP’s fluffy coat of wool rubs\n" + "together and builds a static charge.\n" + "The more static electricity is charged,"); +const u8 DexDescription_Mareep_2[] = _( + "the more brightly the lightbulb at the\n" + "tip of its tail grows."); + +const u8 DexDescription_Flaaffy_1[] = _( + "FLAAFFY’s wool quality changes so that\n" + "it can generate a high amount of static\n" + "electricity with a small amount of wool."); +const u8 DexDescription_Flaaffy_2[] = _( + "The bare and slick parts of its hide are\n" + "shielded against electricity."); + +const u8 DexDescription_Ampharos_1[] = _( + "AMPHAROS gives off so much light that\n" + "it can be seen even from space.\n" + "People in the old days used the light of"); +const u8 DexDescription_Ampharos_2[] = _( + "this POKéMON to send signals back and\n" + "forth with others far away."); + +#ifdef SAPPHIRE +const u8 DexDescription_Bellossom_1[] = _( + "A BELLOSSOM grows flowers more\n" + "beautifully if it has evolved from a\n" + "smelly GLOOM - the stinkier the better."); +const u8 DexDescription_Bellossom_2[] = _( + "At night, this POKéMON closes its\n" + "petals and goes to sleep."); +#else +const u8 DexDescription_Bellossom_1[] = _( + "When BELLOSSOM gets exposed to plenty\n" + "of sunlight, the leaves ringing its body\n" + "begin to spin around."); +const u8 DexDescription_Bellossom_2[] = _( + "This POKéMON’s dancing is renowned in\n" + "the southern lands."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Marill_1[] = _( + "When fishing for food at the edge of a\n" + "fast-running stream, MARILL wraps its\n" + "tail around the trunk of a tree."); +const u8 DexDescription_Marill_2[] = _( + "This POKéMON’s tail is flexible and\n" + "configured to stretch."); +#else +const u8 DexDescription_Marill_1[] = _( + "MARILL’s oil-filled tail acts much like\n" + "a life preserver. If you see just its\n" + "tail bobbing on the water’s surface,"); +const u8 DexDescription_Marill_2[] = _( + "it’s a sure indication that this POKéMON\n" + "is diving beneath the water to feed on\n" + "aquatic plants."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Azumarill_1[] = _( + "AZUMARILL can make balloons out of\n" + "air. It makes these air balloons if it\n" + "spots a drowning POKéMON."); +const u8 DexDescription_Azumarill_2[] = _( + "The air balloons enable the POKéMON in\n" + "trouble to breathe."); +#else +const u8 DexDescription_Azumarill_1[] = _( + "AZUMARILL’s long ears are indispensable\n" + "sensors. By focusing its hearing, this\n" + "POKéMON can identify what kinds of"); +const u8 DexDescription_Azumarill_2[] = _( + "prey are around, even in rough and\n" + "fast-running rivers."); +#endif + +const u8 DexDescription_Sudowoodo_1[] = _( + "SUDOWOODO camouflages itself as a tree\n" + "to avoid being attacked by enemies.\n" + "However, because the forelegs remain"); +const u8 DexDescription_Sudowoodo_2[] = _( + "green throughout the year, the POKéMON\n" + "is easily identified as a fake during\n" + "the winter."); + +const u8 DexDescription_Politoed_1[] = _( + "The curled hair on POLITOED’s head is\n" + "proof of its status as a king. It is said\n" + "that the longer and more curled the"); +const u8 DexDescription_Politoed_2[] = _( + "hair, the more respect this POKéMON\n" + "earns from its peers."); + +const u8 DexDescription_Hoppip_1[] = _( + "This POKéMON drifts and floats with the\n" + "wind. If it senses the approach of\n" + "strong winds, HOPPIP links its leaves"); +const u8 DexDescription_Hoppip_2[] = _( + "with other HOPPIP to prepare against\n" + "being blown away."); + +const u8 DexDescription_Skiploom_1[] = _( + "SKIPLOOM’s flower blossoms when the\n" + "temperature rises above 64 degrees F.\n" + "How much the flower opens depends on"); +const u8 DexDescription_Skiploom_2[] = _( + "the temperature. For that reason, this\n" + "POKéMON is sometimes used as a\n" + "thermometer."); + +const u8 DexDescription_Jumpluff_1[] = _( + "JUMPLUFF rides warm southern winds to\n" + "cross the sea and fly to foreign lands.\n" + "The POKéMON descends to the ground"); +const u8 DexDescription_Jumpluff_2[] = _( + "when it encounters cold air while it is\n" + "floating."); + +const u8 DexDescription_Aipom_1[] = _( + "AIPOM’s tail ends in a hand-like\n" + "appendage that can be cleverly\n" + "manipulated."); +const u8 DexDescription_Aipom_2[] = _( + "However, because the POKéMON uses its\n" + "tail so much, its real hands have become\n" + "rather clumsy."); + +const u8 DexDescription_Sunkern_1[] = _( + "SUNKERN tries to move as little as it\n" + "possibly can. It does so because it\n" + "tries to conserve all the nutrients it"); +const u8 DexDescription_Sunkern_2[] = _( + "has stored in its body for its\n" + "evolution. It will not eat a thing, \n" + "subsisting only on morning dew."); + +const u8 DexDescription_Sunflora_1[] = _( + "SUNFLORA converts solar energy into\n" + "nutrition. It moves around actively in\n" + "the daytime when it is warm."); +const u8 DexDescription_Sunflora_2[] = _( + "It stops moving as soon as the sun goes\n" + "down for the night."); + +const u8 DexDescription_Yanma_1[] = _( + "YANMA is capable of seeing 360 degrees\n" + "without having to move its eyes.\n" + "It is a great flier that is adept at"); +const u8 DexDescription_Yanma_2[] = _( + "making sudden stops and turning midair.\n" + "This POKéMON uses its flying ability to\n" + "quickly chase down targeted prey."); + +const u8 DexDescription_Wooper_1[] = _( + "WOOPER usually lives in water.\n" + "However, it occasionally comes out onto\n" + "land in search of food."); +const u8 DexDescription_Wooper_2[] = _( + "On land, it coats its body with a gooey,\n" + "toxic film."); + +const u8 DexDescription_Quagsire_1[] = _( + "QUAGSIRE hunts for food by leaving\n" + "its mouth wide open in water and waiting\n" + "for its prey to blunder in unaware."); +const u8 DexDescription_Quagsire_2[] = _( + "Because the POKéMON does not move,\n" + "it does not get very hungry."); + +const u8 DexDescription_Espeon_1[] = _( + "ESPEON is extremely loyal to any\n" + "TRAINER it considers to be worthy.\n" + "It is said that this POKéMON developed"); +const u8 DexDescription_Espeon_2[] = _( + "its precognitive powers to protect its\n" + "TRAINER from harm."); + +const u8 DexDescription_Umbreon_1[] = _( + "UMBREON evolved as a result of exposure\n" + "to the moon’s waves.\n" + "It hides silently in darkness and waits"); +const u8 DexDescription_Umbreon_2[] = _( + "for its foes to make a move.\n" + "The rings on its body glow when it leaps\n" + "to attack."); + +const u8 DexDescription_Murkrow_1[] = _( + "MURKROW was feared and loathed as the\n" + "alleged bearer of ill fortune.\n" + "This POKéMON shows strong interest in"); +const u8 DexDescription_Murkrow_2[] = _( + "anything that sparkles or glitters.\n" + "It will even try to steal rings from\n" + "women."); + +const u8 DexDescription_Slowking_1[] = _( + "SLOWKING undertakes research every\n" + "day in an effort to solve the mysteries\n" + "of the world."); +const u8 DexDescription_Slowking_2[] = _( + "However, this POKéMON apparently\n" + "forgets everything it has learned if\n" + "the SHELLDER on its head comes off."); + +const u8 DexDescription_Misdreavus_1[] = _( + "MISDREAVUS frightens people with a\n" + "creepy, sobbing cry. The POKéMON\n" + "apparently uses its red spheres to"); +const u8 DexDescription_Misdreavus_2[] = _( + "absorb the fearful feelings of foes and\n" + "turn them into nutrition."); + +const u8 DexDescription_Unown_1[] = _( + "This POKéMON is shaped like ancient\n" + "writing. It is a mystery as to which\n" + "came first, the ancient writings or the"); +const u8 DexDescription_Unown_2[] = _( + "various UNOWN. Research into this\n" + "topic is ongoing but nothing is known."); + +#ifdef SAPPHIRE +const u8 DexDescription_Wobbuffet_1[] = _( + "WOBBUFFET does nothing but endure\n" + "attacks - it won’t attack on its own.\n" + "However, it won’t endure an attack on"); +const u8 DexDescription_Wobbuffet_2[] = _( + "its tail. When that happens, the\n" + "POKéMON will try to take the foe with it\n" + "using DESTINY BOND."); +#else +const u8 DexDescription_Wobbuffet_1[] = _( + "If two or more WOBBUFFET meet, they will\n" + "turn competitive and try to outdo each\n" + "other’s endurance."); +const u8 DexDescription_Wobbuffet_2[] = _( + "However, they may try to see which one\n" + "can endure the longest without food.\n" + "TRAINERS need to beware of this habit."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Girafarig_1[] = _( + "GIRAFARIG’s rear head contains a tiny\n" + "brain that is too small for thinking.\n" + "However, the rear head doesn’t need to"); +const u8 DexDescription_Girafarig_2[] = _( + "sleep, so it can keep watch over its\n" + "surroundings 24 hours a day."); +#else +const u8 DexDescription_Girafarig_1[] = _( + "GIRAFARIG’s rear head also has a brain,\n" + "but it is small. The rear head attacks in\n" + "response to smells and sounds."); +const u8 DexDescription_Girafarig_2[] = _( + "Approaching this POKéMON from behind\n" + "can cause the rear head to suddenly\n" + "lash out and bite."); +#endif + +const u8 DexDescription_Pineco_1[] = _( + "PINECO hangs from a tree branch and\n" + "patiently waits for prey to come along.\n" + "If the POKéMON is disturbed while"); +const u8 DexDescription_Pineco_2[] = _( + "eating by someone shaking its tree, it\n" + "drops down to the ground and explodes\n" + "with no warning."); + +const u8 DexDescription_Forretress_1[] = _( + "FORRETRESS conceals itself inside its\n" + "hardened steel shell. The shell is opened\n" + "when the POKéMON is catching prey,"); +const u8 DexDescription_Forretress_2[] = _( + "but it does so at such a quick pace\n" + "that the shell’s inside cannot be seen."); + +const u8 DexDescription_Dunsparce_1[] = _( + "DUNSPARCE has a drill for its tail.\n" + "It uses this tail to burrow into the\n" + "ground backwards."); +const u8 DexDescription_Dunsparce_2[] = _( + "This POKéMON is known to make its nest\n" + "in complex shapes deep under the\n" + "ground."); + +const u8 DexDescription_Gligar_1[] = _( + "GLIGAR glides through the air without\n" + "a sound as if it were sliding.\n" + "This POKéMON hangs on to the face of"); +const u8 DexDescription_Gligar_2[] = _( + "its foe using its clawed hind legs and\n" + "the large pincers on its forelegs, then\n" + "injects the prey with its poison barb."); + +const u8 DexDescription_Steelix_1[] = _( + "STEELIX lives even further underground\n" + "than ONIX. This POKéMON is known to dig\n" + "towards the earth’s core."); +const u8 DexDescription_Steelix_2[] = _( + "There are records of this POKéMON\n" + "reaching a depth of over six-tenths\n" + "of a mile underground."); + +const u8 DexDescription_Snubbull_1[] = _( + "By baring its fangs and making a scary\n" + "face, SNUBBULL sends smaller POKéMON\n" + "scurrying away in terror."); +const u8 DexDescription_Snubbull_2[] = _( + "However, this POKéMON seems a little\n" + "sad at making its foes flee."); + +const u8 DexDescription_Granbull_1[] = _( + "GRANBULL has a particularly well-\n" + "developed lower jaw. The enormous fangs\n" + "are heavy, causing the POKéMON to tip"); +const u8 DexDescription_Granbull_2[] = _( + "its head back for balance.\n" + "Unless it is startled, it will not try to\n" + "bite indiscriminately."); + +const u8 DexDescription_Qwilfish_1[] = _( + "QWILFISH sucks in water, inflating\n" + "itself. This POKéMON uses the pressure\n" + "of the water it swallowed to shoot"); +const u8 DexDescription_Qwilfish_2[] = _( + "toxic quills all at once from all over\n" + "its body. It finds swimming somewhat\n" + "challenging."); + +const u8 DexDescription_Scizor_1[] = _( + "SCIZOR has a body with the hardness of\n" + "steel. It is not easily fazed by ordinary\n" + "sorts of attacks."); +const u8 DexDescription_Scizor_2[] = _( + "This POKéMON flaps its wings to\n" + "regulate its body temperature."); + +const u8 DexDescription_Shuckle_1[] = _( + "SHUCKLE quietly hides itself under\n" + "rocks, keeping its body concealed\n" + "inside its hard shell while eating"); +const u8 DexDescription_Shuckle_2[] = _( + "berries it has stored away.\n" + "The berries mix with its body fluids to\n" + "become a juice."); + +#ifdef SAPPHIRE +const u8 DexDescription_Heracross_1[] = _( + "HERACROSS has sharp claws on its feet.\n" + "These are planted firmly into the\n" + "ground or the bark of a tree, giving the"); +const u8 DexDescription_Heracross_2[] = _( + "POKéMON a secure and solid footing\n" + "to forcefully fling away foes with\n" + "its proud horn."); +#else +const u8 DexDescription_Heracross_1[] = _( + "HERACROSS charges in a straight line at\n" + "its foe, slips beneath the foe’s grasp,\n" + "and then scoops up and hurls the"); +const u8 DexDescription_Heracross_2[] = _( + "opponent with its mighty horn.\n" + "This POKéMON even has enough power\n" + "to topple a massive tree."); +#endif + +const u8 DexDescription_Sneasel_1[] = _( + "SNEASEL scales trees by punching its\n" + "hooked claws into the bark.\n" + "This POKéMON seeks out unguarded"); +const u8 DexDescription_Sneasel_2[] = _( + "nests and steals eggs for food while\n" + "the parents are away."); + +const u8 DexDescription_Teddiursa_1[] = _( + "This POKéMON likes to lick its palms that\n" + "are sweetened by being soaked in honey.\n" + "TEDDIURSA concocts its own honey by"); +const u8 DexDescription_Teddiursa_2[] = _( + "blending fruits and pollen collected by\n" + "BEEDRILL."); + +const u8 DexDescription_Ursaring_1[] = _( + "In the forests inhabited by URSARING,\n" + "it is said that there are many streams\n" + "and towering trees where they"); +const u8 DexDescription_Ursaring_2[] = _( + "gather food. This POKéMON walks\n" + "through its forest gathering food\n" + "every day."); + +#ifdef SAPPHIRE +const u8 DexDescription_Slugma_1[] = _( + "SLUGMA does not have any blood in its\n" + "body. Instead, intensely hot magma\n" + "circulates throughout this POKéMON’s"); +const u8 DexDescription_Slugma_2[] = _( + "body, carrying essential nutrients and\n" + "oxygen to its organs."); +#else +const u8 DexDescription_Slugma_1[] = _( + "Molten magma courses throughout\n" + "SLUGMA’s circulatory system.\n" + "If this POKéMON is chilled, the magma"); +const u8 DexDescription_Slugma_2[] = _( + "cools and hardens. Its body turns\n" + "brittle and chunks fall off, reducing\n" + "its size."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Magcargo_1[] = _( + "MAGCARGO’s body temperature is\n" + "approximately 18,000 degrees F.\n" + "Water is vaporized on contact."); +const u8 DexDescription_Magcargo_2[] = _( + "If this POKéMON is caught in the rain,\n" + "the raindrops instantly turn into\n" + "steam, cloaking the area in a thick fog."); +#else +const u8 DexDescription_Magcargo_1[] = _( + "MAGCARGO’s shell is actually its skin\n" + "that hardened as a result of cooling.\n" + "Its shell is very brittle and fragile -"); +const u8 DexDescription_Magcargo_2[] = _( + "just touching it causes it to crumble\n" + "apart. This POKéMON returns to its\n" + "original size by dipping itself in magma."); +#endif + +const u8 DexDescription_Swinub_1[] = _( + "SWINUB roots for food by rubbing its\n" + "snout against the ground. Its favorite\n" + "food is a mushroom that grows under"); +const u8 DexDescription_Swinub_2[] = _( + "the cover of dead grass.\n" + "This POKéMON occasionally roots out\n" + "hot springs."); + +const u8 DexDescription_Piloswine_1[] = _( + "PILOSWINE is covered by a thick coat\n" + "of long hair that enables it to endure\n" + "the freezing cold."); +const u8 DexDescription_Piloswine_2[] = _( + "This POKéMON uses its tusks to dig up\n" + "food that has been buried under ice."); + +#ifdef SAPPHIRE +const u8 DexDescription_Corsola_1[] = _( + "Clusters of CORSOLA congregate in warm\n" + "seas where they serve as ideal hiding\n" + "places for smaller POKéMON."); +const u8 DexDescription_Corsola_2[] = _( + "When the water temperature falls, this\n" + "POKéMON migrates to the southern seas."); +#else +const u8 DexDescription_Corsola_1[] = _( + "CORSOLA’s branches glitter very\n" + "beautifully in seven colors when they\n" + "catch sunlight."); +const u8 DexDescription_Corsola_2[] = _( + "If any branch breaks off, this POKéMON\n" + "grows it back in just one night."); +#endif + +const u8 DexDescription_Remoraid_1[] = _( + "REMORAID sucks in water, then expels it\n" + "at high velocity using its abdominal\n" + "muscles to shoot down flying prey."); +const u8 DexDescription_Remoraid_2[] = _( + "When evolution draws near, this POKéMON\n" + "travels downstream from rivers."); + +const u8 DexDescription_Octillery_1[] = _( + "OCTILLERY grabs onto its foe using\n" + "its tentacles. This POKéMON tries to\n" + "immobilize it before delivering the"); +const u8 DexDescription_Octillery_2[] = _( + "finishing blow.\n" + "If the foe turns out to be too strong,\n" + "OCTILLERY spews ink to escape."); + +const u8 DexDescription_Delibird_1[] = _( + "DELIBIRD carries its food bundled up\n" + "in its tail. There once was a famous\n" + "explorer who managed to reach the peak"); +const u8 DexDescription_Delibird_2[] = _( + "of Mt. Everest thanks to one of these\n" + "POKéMON sharing its food."); + +const u8 DexDescription_Mantine_1[] = _( + "On sunny days, schools of MANTINE can\n" + "be seen elegantly leaping over the\n" + "sea’s waves."); +const u8 DexDescription_Mantine_2[] = _( + "This POKéMON is not bothered by the\n" + "REMORAID that hitches rides."); + +#ifdef SAPPHIRE +const u8 DexDescription_Skarmory_1[] = _( + "SKARMORY’s steel wings become tattered\n" + "and bashed in from repeated battles.\n" + "Once a year, the battered wings grow"); +const u8 DexDescription_Skarmory_2[] = _( + "back completely, restoring the cutting\n" + "edges to their pristine state."); +#else +const u8 DexDescription_Skarmory_1[] = _( + "SKARMORY is entirely encased in hard,\n" + "protective armor. This POKéMON flies at\n" + "close to 190 mph."); +const u8 DexDescription_Skarmory_2[] = _( + "It slashes foes with its wings that\n" + "possess swordlike cutting edges."); +#endif + +const u8 DexDescription_Houndour_1[] = _( + "HOUNDOUR hunt as a coordinated pack.\n" + "They communicate with each other using\n" + "a variety of cries to corner their prey."); +const u8 DexDescription_Houndour_2[] = _( + "This POKéMON’s remarkable teamwork is\n" + "unparalleled."); + +const u8 DexDescription_Houndoom_1[] = _( + "In a HOUNDOOM pack, the one with its\n" + "horns raked sharply towards the back\n" + "serves a leadership role."); +const u8 DexDescription_Houndoom_2[] = _( + "These POKéMON choose their leader by\n" + "fighting amongst themselves."); + +#ifdef SAPPHIRE +const u8 DexDescription_Kingdra_1[] = _( + "KINGDRA sleeps on the seafloor where\n" + "it is otherwise devoid of life.\n" + "When a storm arrives, the POKéMON is"); +const u8 DexDescription_Kingdra_2[] = _( + "said to awaken and wander about in\n" + "search of prey."); +#else +const u8 DexDescription_Kingdra_1[] = _( + "KINGDRA lives at extreme ocean depths\n" + "that are otherwise uninhabited.\n" + "It has long been believed that the"); +const u8 DexDescription_Kingdra_2[] = _( + "yawning of this POKéMON creates\n" + "spiraling ocean currents."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Phanpy_1[] = _( + "PHANPY uses its long nose to shower\n" + "itself. When others gather around, they\n" + "thoroughly douse each other with water."); +const u8 DexDescription_Phanpy_2[] = _( + "These POKéMON can be seen drying their\n" + "soaking-wet bodies at the edge of\n" + "water."); +#else +const u8 DexDescription_Phanpy_1[] = _( + "For its nest, PHANPY digs a vertical pit \n" + "in the ground at the edge of a river.\n" + "It marks the area around its nest with"); +const u8 DexDescription_Phanpy_2[] = _( + "its trunk to let the others know that\n" + "the area has been claimed."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Donphan_1[] = _( + "If DONPHAN were to tackle with its hard\n" + "body, even a house could be destroyed.\n" + "Using its massive strength, the"); +const u8 DexDescription_Donphan_2[] = _( + "POKéMON helps clear rock and mud slides\n" + "that block mountain trails."); +#else +const u8 DexDescription_Donphan_1[] = _( + "DONPHAN’s favorite attack is curling\n" + "its body into a ball, then charging at\n" + "its foe while rolling at high speed."); +const u8 DexDescription_Donphan_2[] = _( + "Once it starts rolling, this POKéMON\n" + "can’t stop very easily."); +#endif + +const u8 DexDescription_Porygon2_1[] = _( + "PORYGON2 was created by humans using\n" + "the power of science. The man-made\n" + "POKéMON has been endowed with"); +const u8 DexDescription_Porygon2_2[] = _( + "artificial intelligence that enables it\n" + "to learn new gestures and emotions\n" + "on its own."); + +const u8 DexDescription_Stantler_1[] = _( + "STANTLER’s magnificent antlers were\n" + "traded at high prices as works of art.\n" + "As a result, this POKéMON was hunted"); +const u8 DexDescription_Stantler_2[] = _( + "close to extinction by those who were\n" + "after the priceless antlers."); + +const u8 DexDescription_Smeargle_1[] = _( + "SMEARGLE marks the boundaries of its\n" + "territory using a body fluid that leaks\n" + "out from the tip of its tail."); +const u8 DexDescription_Smeargle_2[] = _( + "Over 5,000 different marks left by this\n" + "POKéMON have been found."); + +const u8 DexDescription_Tyrogue_1[] = _( + "TYROGUE becomes stressed out if it\n" + "does not get to train every day.\n" + "When raising this POKéMON, the TRAINER"); +const u8 DexDescription_Tyrogue_2[] = _( + "must establish and uphold various\n" + "training methods."); + +const u8 DexDescription_Hitmontop_1[] = _( + "HITMONTOP spins on its head at high\n" + "speed, all the while delivering kicks.\n" + "This technique is a remarkable mix of"); +const u8 DexDescription_Hitmontop_2[] = _( + "both offense and defense at the same\n" + "time. The POKéMON travels faster\n" + "spinning than it does walking."); + +const u8 DexDescription_Smoochum_1[] = _( + "SMOOCHUM actively runs about, but\n" + "also falls quite often.\n" + "Whenever the chance arrives, it will"); +const u8 DexDescription_Smoochum_2[] = _( + "look for its reflection to make sure its\n" + "face hasn’t become dirty."); + +const u8 DexDescription_Elekid_1[] = _( + "ELEKID stores electricity in its body.\n" + "If it touches metal and accidentally\n" + "discharges all its built-up electricity,"); +const u8 DexDescription_Elekid_2[] = _( + "this POKéMON begins swinging its arms\n" + "in circles to recharge itself."); + +const u8 DexDescription_Magby_1[] = _( + "MAGBY’s state of health is determined\n" + "by observing the fire it breathes.\n" + "If the POKéMON is spouting yellow"); +const u8 DexDescription_Magby_2[] = _( + "flames from its mouth, it is in good\n" + "health. When it is fatigued, black smoke\n" + "will be mixed in with the flames."); + +const u8 DexDescription_Miltank_1[] = _( + "MILTANK gives over five gallons of milk\n" + "on a daily basis. Its sweet milk is\n" + "enjoyed by children and grown-ups alike."); +const u8 DexDescription_Miltank_2[] = _( + "People who can’t drink milk turn it into\n" + "yogurt and eat it instead."); + +const u8 DexDescription_Blissey_1[] = _( + "BLISSEY senses sadness with its fluffy\n" + "coat of fur. If it does so, this POKéMON\n" + "will rush over to the sad person,"); +const u8 DexDescription_Blissey_2[] = _( + "however far they may be, to share an\n" + "egg of happiness that brings a smile\n" + "to any face."); + +const u8 DexDescription_Raikou_1[] = _( + "RAIKOU embodies the speed of lightning.\n" + "The roars of this POKéMON send shock\n" + "waves shuddering through the air and"); +const u8 DexDescription_Raikou_2[] = _( + "shake the ground as if lightning bolts\n" + "had come crashing down."); + +const u8 DexDescription_Entei_1[] = _( + "ENTEI embodies the passion of magma.\n" + "This POKéMON is thought to have been\n" + "born in the eruption of a volcano."); +const u8 DexDescription_Entei_2[] = _( + "It sends up massive bursts of fire that\n" + "utterly consume all that they touch."); + +const u8 DexDescription_Suicune_1[] = _( + "SUICUNE embodies the compassion of\n" + "a pure spring of water. It runs across\n" + "the land with gracefulness."); +const u8 DexDescription_Suicune_2[] = _( + "This POKéMON has the power to purify\n" + "dirty water."); + +const u8 DexDescription_Larvitar_1[] = _( + "LARVITAR is born deep under the ground.\n" + "To come up to the surface, this POKéMON\n" + "must eat its way through the soil above."); +const u8 DexDescription_Larvitar_2[] = _( + "Until it does so, LARVITAR cannot see\n" + "its parent’s face."); + +const u8 DexDescription_Pupitar_1[] = _( + "PUPITAR creates a gas inside its body\n" + "that it compresses and forcefully\n" + "ejects to propel itself like a jet."); +const u8 DexDescription_Pupitar_2[] = _( + "The body is very durable - it avoids\n" + "damage even if it hits solid steel."); + +const u8 DexDescription_Tyranitar_1[] = _( + "TYRANITAR is so overwhelmingly\n" + "powerful, it can bring down a whole\n" + "mountain to make its nest."); +const u8 DexDescription_Tyranitar_2[] = _( + "This POKéMON wanders about in\n" + "mountains seeking new opponents to\n" + "fight."); + +const u8 DexDescription_Lugia_1[] = _( + "LUGIA’s wings pack devastating power -\n" + "a light fluttering of its wings can blow\n" + "apart regular houses."); +const u8 DexDescription_Lugia_2[] = _( + "As a result, this POKéMON chooses to\n" + "live out of sight deep under the sea."); + +const u8 DexDescription_HoOh_1[] = _( + "HO-OH’s feathers glow in seven colors\n" + "depending on the angle at which they\n" + "are struck by light."); +const u8 DexDescription_HoOh_2[] = _( + "These feathers are said to bring\n" + "happiness to the bearers. This POKéMON\n" + "is said to live at the foot of a rainbow."); + +const u8 DexDescription_Celebi_1[] = _( + "This POKéMON came from the future by\n" + "crossing over time.\n" + "It is thought that so long as CELEBI"); +const u8 DexDescription_Celebi_2[] = _( + "appears, a bright and shining future\n" + "awaits us."); + +#ifdef SAPPHIRE +const u8 DexDescription_Treecko_1[] = _( + "TREECKO is cool, calm, and collected -\n" + "it never panics under any situation.\n" + "If a bigger foe were to glare at this"); +const u8 DexDescription_Treecko_2[] = _( + "POKéMON, it would glare right back\n" + "without conceding an inch of ground."); +#else +const u8 DexDescription_Treecko_1[] = _( + "TREECKO has small hooks on the bottom\n" + "of its feet that enable it to scale\n" + "vertical walls."); +const u8 DexDescription_Treecko_2[] = _( + "This POKéMON attacks by slamming foes\n" + "with its thick tail."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Grovyle_1[] = _( + "This POKéMON adeptly flies from branch\n" + "to branch in trees.\n" + "In a forest, no POKéMON can ever hope"); +const u8 DexDescription_Grovyle_2[] = _( + "to catch a fleeing GROVYLE however\n" + "fast they may be."); +#else +const u8 DexDescription_Grovyle_1[] = _( + "The leaves growing out of GROVYLE’s\n" + "body are convenient for camouflaging\n" + "it from enemies in the forest."); +const u8 DexDescription_Grovyle_2[] = _( + "This POKéMON is a master at climbing\n" + "trees in jungles."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Sceptile_1[] = _( + "SCEPTILE has seeds growing on its back.\n" + "They are said to be bursting with\n" + "nutrients that revitalize trees."); +const u8 DexDescription_Sceptile_2[] = _( + "This POKéMON raises the trees in a\n" + "forest with loving care."); +#else +const u8 DexDescription_Sceptile_1[] = _( + "The leaves growing on SCEPTILE’s body\n" + "are very sharp edged. This POKéMON is\n" + "very agile - it leaps all over the"); +const u8 DexDescription_Sceptile_2[] = _( + "branches of trees and jumps on its foe\n" + "from above or behind."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Torchic_1[] = _( + "TORCHIC has a place inside its body\n" + "where it keeps its flame. Give it a hug -\n" + "it will be glowing with warmth."); +const u8 DexDescription_Torchic_2[] = _( + "This POKéMON is covered all over by a\n" + "fluffy coat of down."); +#else +const u8 DexDescription_Torchic_1[] = _( + "TORCHIC sticks with its TRAINER,\n" + "following behind with unsteady\n" + "steps."); +const u8 DexDescription_Torchic_2[] = _( + "This POKéMON breathes fire of over\n" + "1,800 degrees F, including fireballs\n" + "that leave the foe scorched black."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Combusken_1[] = _( + "COMBUSKEN battles with the intensely\n" + "hot flames it spews from its beak and\n" + "with outstandingly destructive kicks."); +const u8 DexDescription_Combusken_2[] = _( + "This POKéMON’s cry is very loud and\n" + "distracting."); +#else +const u8 DexDescription_Combusken_1[] = _( + "COMBUSKEN toughens up its legs and\n" + "thighs by running through fields and\n" + "mountains."); +const u8 DexDescription_Combusken_2[] = _( + "This POKéMON’s legs possess both speed\n" + "and power, enabling it to dole out ten\n" + "kicks in one second."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Blaziken_1[] = _( + "BLAZIKEN has incredibly strong legs -\n" + "it can easily clear a 30-story building\n" + "in one leap."); +const u8 DexDescription_Blaziken_2[] = _( + "This POKéMON’s blazing punches leave\n" + "its foes scorched and blackened."); +#else +const u8 DexDescription_Blaziken_1[] = _( + "In battle, BLAZIKEN blows out intense\n" + "flames from its wrists and attacks foes\n" + "courageously."); +const u8 DexDescription_Blaziken_2[] = _( + "The stronger the foe, the more\n" + "intensely this POKéMON’s wrists burn."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Mudkip_1[] = _( + "In water, MUDKIP breathes using the\n" + "gills on its cheeks.\n" + "If it is faced with a tight situation in"); +const u8 DexDescription_Mudkip_2[] = _( + "battle, this POKéMON will unleash its\n" + "amazing power - it can crush rocks\n" + "bigger than itself."); +#else +const u8 DexDescription_Mudkip_1[] = _( + "The fin on MUDKIP’s head acts as highly\n" + "sensitive radar. Using this fin to sense\n" + "movements of water and air, this"); +const u8 DexDescription_Mudkip_2[] = _( + "POKéMON can determine what is taking\n" + "place around it without using its eyes."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Marshtomp_1[] = _( + "MARSHTOMP is much faster at traveling\n" + "through mud than it is at swimming.\n" + "This POKéMON’s hindquarters exhibit"); +const u8 DexDescription_Marshtomp_2[] = _( + "obvious development, giving it the\n" + "ability to walk on just its hind legs."); +#else +const u8 DexDescription_Marshtomp_1[] = _( + "The surface of MARSHTOMP’s body is\n" + "enveloped by a thin, sticky film that\n" + "enables it to live on land."); +const u8 DexDescription_Marshtomp_2[] = _( + "This POKéMON plays in mud on beaches\n" + "when the ocean tide is low."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Swampert_1[] = _( + "SWAMPERT predicts storms by sensing\n" + "subtle differences in the sounds of\n" + "waves and tidal winds with its fins."); +const u8 DexDescription_Swampert_2[] = _( + "If a storm is approaching, it piles up\n" + "boulders to protect itself."); +#else +const u8 DexDescription_Swampert_1[] = _( + "SWAMPERT is very strong. It has enough\n" + "power to easily drag a boulder weighing\n" + "more than a ton."); +const u8 DexDescription_Swampert_2[] = _( + "This POKéMON also has powerful vision\n" + "that lets it see even in murky water."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Poochyena_1[] = _( + "POOCHYENA is an omnivore - it will eat\n" + "anything. A distinguishing feature is\n" + "how large its fangs are compared to"); +const u8 DexDescription_Poochyena_2[] = _( + "its body. This POKéMON tries to\n" + "intimidate its foes by making the hair\n" + "on its tail bristle out."); +#else +const u8 DexDescription_Poochyena_1[] = _( + "At first sight, POOCHYENA takes a bite\n" + "at anything that moves.\n" + "This POKéMON chases after prey until"); +const u8 DexDescription_Poochyena_2[] = _( + "the victim becomes exhausted.\n" + "However, it may turn tail if the prey\n" + "strikes back."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Mightyena_1[] = _( + "MIGHTYENA travel and act as a pack\n" + "in the wild. The memory of its life in the\n" + "wild compels the POKéMON to obey only"); +const u8 DexDescription_Mightyena_2[] = _( + "those TRAINERS that it recognizes to\n" + "possess superior skill."); +#else +const u8 DexDescription_Mightyena_1[] = _( + "MIGHTYENA gives obvious signals when\n" + "it is preparing to attack. It starts to\n" + "growl deeply and then flattens its body."); +const u8 DexDescription_Mightyena_2[] = _( + "This POKéMON will bite savagely with its\n" + "sharply pointed fangs."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Zigzagoon_1[] = _( + "The hair on ZIGZAGOON’s back is \n" + "bristly. It rubs the hard back hair\n" + "against trees to leave its territorial"); +const u8 DexDescription_Zigzagoon_2[] = _( + "markings.\n" + "This POKéMON may play dead to fool foes\n" + "in battle."); +#else +const u8 DexDescription_Zigzagoon_1[] = _( + "ZIGZAGOON restlessly wanders\n" + "everywhere at all times. This POKéMON\n" + "does so because it is very curious."); +const u8 DexDescription_Zigzagoon_2[] = _( + "It becomes interested in anything\n" + "that it happens to see."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Linoone_1[] = _( + "When hunting, LINOONE will make a\n" + "beeline straight for the prey at a full\n" + "run. While this POKéMON is capable of"); +const u8 DexDescription_Linoone_2[] = _( + "topping 60 mph, it has to come to a\n" + "screeching halt before it can turn."); +#else +const u8 DexDescription_Linoone_1[] = _( + "LINOONE always runs full speed and only\n" + "in straight lines. If facing an obstacle,\n" + "it makes a right-angle turn to evade it."); +const u8 DexDescription_Linoone_2[] = _( + "This POKéMON is very challenged by\n" + "gently curving roads."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Wurmple_1[] = _( + "WURMPLE is targeted by SWELLOW as\n" + "prey. This POKéMON will try to resist by\n" + "pointing the spikes on its rear at the"); +const u8 DexDescription_Wurmple_2[] = _( + "attacking predator.\n" + "It will weaken the foe by leaking poison\n" + "from the spikes."); +#else +const u8 DexDescription_Wurmple_1[] = _( + "Using the spikes on its rear end, \n" + "WURMPLE peels the bark off trees and\n" + "feeds on the sap that oozes out."); +const u8 DexDescription_Wurmple_2[] = _( + "This POKéMON’s feet are tipped with\n" + "suction pads that allow it to cling to\n" + "glass without slipping."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Silcoon_1[] = _( + "SILCOON was thought to endure hunger\n" + "and not consume anything before its\n" + "evolution. However, it is now thought"); +const u8 DexDescription_Silcoon_2[] = _( + "that this POKéMON slakes its thirst by\n" + "drinking rainwater that collects on its\n" + "silk."); +#else +const u8 DexDescription_Silcoon_1[] = _( + "SILCOON tethers itself to a tree branch\n" + "using silk to keep from falling. There, \n" + "this POKéMON hangs quietly while it"); +const u8 DexDescription_Silcoon_2[] = _( + "awaits evolution.\n" + "It peers out of the silk cocoon through\n" + "a small hole."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Beautifly_1[] = _( + "BEAUTIFLY has a long mouth like a coiled\n" + "needle, which is very convenient for\n" + "collecting pollen from flowers."); +const u8 DexDescription_Beautifly_2[] = _( + "This POKéMON rides the spring winds as\n" + "it flits around gathering pollen."); +#else +const u8 DexDescription_Beautifly_1[] = _( + "BEAUTIFLY’s favorite food is the sweet\n" + "pollen of flowers. If you want to see\n" + "this POKéMON, just leave a potted"); +const u8 DexDescription_Beautifly_2[] = _( + "flower by an open window. BEAUTIFLY\n" + "is sure to come looking for pollen."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Cascoon_1[] = _( + "If it is attacked, CASCOON remains\n" + "motionless however badly it may be\n" + "hurt. It does so because if it were to"); +const u8 DexDescription_Cascoon_2[] = _( + "move, its body would be weak upon\n" + "evolution. This POKéMON will also not\n" + "forget the pain it endured."); +#else +const u8 DexDescription_Cascoon_1[] = _( + "CASCOON makes its protective cocoon\n" + "by wrapping its body entirely with a\n" + "fine silk from its mouth. Once the silk"); +const u8 DexDescription_Cascoon_2[] = _( + "goes around its body, it hardens.\n" + "This POKéMON prepares for its evolution\n" + "inside the cocoon."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Dustox_1[] = _( + "When DUSTOX flaps its wings, a fine\n" + "dust is scattered all over. This dust is\n" + "actually a powerful poison that will"); +const u8 DexDescription_Dustox_2[] = _( + "even make a pro wrestler sick.\n" + "This POKéMON searches for food using\n" + "its antennae like radar."); +#else +const u8 DexDescription_Dustox_1[] = _( + "DUSTOX is instinctively drawn to light.\n" + "Swarms of this POKéMON are attracted\n" + "by the bright lights of cities, where"); +const u8 DexDescription_Dustox_2[] = _( + "they wreak havoc by stripping the\n" + "leaves off roadside trees for food."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Lotad_1[] = _( + "LOTAD is said to have dwelled on land\n" + "before. However, this POKéMON is\n" + "thought to have returned to water"); +const u8 DexDescription_Lotad_2[] = _( + "because the leaf on its head grew large\n" + "and heavy. It now lives by floating\n" + "atop the water."); +#else +const u8 DexDescription_Lotad_1[] = _( + "LOTAD live in ponds and lakes, where\n" + "they float on the surface.\n" + "It grows weak if its broad leaf dies."); +const u8 DexDescription_Lotad_2[] = _( + "On rare occasions, this POKéMON travels\n" + "on land in search of clean water."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Lombre_1[] = _( + "LOMBRE’s entire body is covered by a\n" + "slippery, slimy film. It feels horribly\n" + "unpleasant to be touched by this"); +const u8 DexDescription_Lombre_2[] = _( + "POKéMON’s hands.\n" + "LOMBRE is often mistaken for a human\n" + "child."); +#else +const u8 DexDescription_Lombre_1[] = _( + "LOMBRE is nocturnal - it will get active\n" + "after dusk. It is also a mischief-maker.\n" + "When this POKéMON spots anglers,"); +const u8 DexDescription_Lombre_2[] = _( + "it tugs on their fishing lines from\n" + "beneath the surface and enjoys their\n" + "consternation."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Ludicolo_1[] = _( + "Upon hearing an upbeat and cheerful\n" + "rhythm, the cells in LUDICOLO’s body\n" + "become very energetic and active."); +const u8 DexDescription_Ludicolo_2[] = _( + "Even in battle, this POKéMON will\n" + "exhibit an amazing amount of power."); +#else +const u8 DexDescription_Ludicolo_1[] = _( + "LUDICOLO begins dancing as soon as\n" + "it hears cheerful, festive music.\n" + "This POKéMON is said to appear when it"); +const u8 DexDescription_Ludicolo_2[] = _( + "hears the singing of children on hiking\n" + "outings."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Seedot_1[] = _( + "SEEDOT looks exactly like an acorn\n" + "when it is dangling from a tree branch.\n" + "It startles other POKéMON by suddenly"); +const u8 DexDescription_Seedot_2[] = _( + "moving.\n" + "This POKéMON polishes its body once a\n" + "day using leaves."); +#else +const u8 DexDescription_Seedot_1[] = _( + "SEEDOT attaches itself to a tree\n" + "branch using the top of its head.\n" + "It sucks moisture from the tree while"); +const u8 DexDescription_Seedot_2[] = _( + "hanging off the branch.\n" + "The more water it drinks, the glossier\n" + "this POKéMON’s body becomes."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Nuzleaf_1[] = _( + "This POKéMON pulls out the leaf on its\n" + "head and makes a flute with it.\n" + "The sound of NUZLEAF’s flute strikes"); +const u8 DexDescription_Nuzleaf_2[] = _( + "fear and uncertainty in the hearts of\n" + "people lost in a forest."); +#else +const u8 DexDescription_Nuzleaf_1[] = _( + "NUZLEAF live in densely overgrown\n" + "forests. They occasionally venture out\n" + "of the forest to startle people."); +const u8 DexDescription_Nuzleaf_2[] = _( + "This POKéMON dislikes having its long\n" + "nose pinched."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Shiftry_1[] = _( + "SHIFTRY’s large fans generate awesome\n" + "gusts of wind at a speed close to 100\n" + "feet per second. The whipped-up wind"); +const u8 DexDescription_Shiftry_2[] = _( + "blows anything away.\n" + "This POKéMON chooses to live quietly\n" + "deep in forests."); +#else +const u8 DexDescription_Shiftry_1[] = _( + "SHIFTRY is a mysterious POKéMON that\n" + "is said to live atop towering trees \n" + "dating back over a thousand years."); +const u8 DexDescription_Shiftry_2[] = _( + "It creates terrific windstorms with\n" + "the fans it holds."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Taillow_1[] = _( + "TAILLOW is young - it has only just\n" + "left its nest. As a result, it sometimes\n" + "becomes lonesome and cries at night."); +const u8 DexDescription_Taillow_2[] = _( + "This POKéMON feeds on WURMPLE that\n" + "live in forests."); +#else +const u8 DexDescription_Taillow_1[] = _( + "TAILLOW courageously stands its\n" + "ground against foes, however strong\n" + "they may be."); +const u8 DexDescription_Taillow_2[] = _( + "This gutsy POKéMON will remain defiant\n" + "even after a loss. On the other hand,\n" + "it cries loudly if it becomes hungry."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Swellow_1[] = _( + "SWELLOW is very conscientious about\n" + "the upkeep of its glossy wings.\n" + "Once two SWELLOW are gathered, they"); +const u8 DexDescription_Swellow_2[] = _( + "diligently take care of cleaning each\n" + "other’s wings."); +#else +const u8 DexDescription_Swellow_1[] = _( + "SWELLOW flies high above our heads,\n" + "making graceful arcs in the sky.\n" + "This POKéMON dives at a steep angle as"); +const u8 DexDescription_Swellow_2[] = _( + "soon as it spots its prey. The hapless\n" + "prey is tightly grasped by SWELLOW’s\n" + "clawed feet, preventing escape."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Wingull_1[] = _( + "WINGULL rides updrafts rising from the\n" + "sea by extending its long and narrow\n" + "wings to glide."); +const u8 DexDescription_Wingull_2[] = _( + "This POKéMON’s long beak is useful for\n" + "catching prey."); +#else +const u8 DexDescription_Wingull_1[] = _( + "WINGULL has the habit of carrying prey\n" + "and valuables in its beak and hiding\n" + "them in all sorts of locations."); +const u8 DexDescription_Wingull_2[] = _( + "This POKéMON rides the winds and flies\n" + "as if it were skating across the sky."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Pelipper_1[] = _( + "PELIPPER searches for food while in\n" + "flight by skimming the wave tops.\n" + "This POKéMON dips its large bill in the"); +const u8 DexDescription_Pelipper_2[] = _( + "sea to scoop up food, then swallows\n" + "everything in one big gulp."); +#else +const u8 DexDescription_Pelipper_1[] = _( + "PELIPPER is a flying transporter that\n" + "carries small POKéMON and eggs inside\n" + "its massive bill."); +const u8 DexDescription_Pelipper_2[] = _( + "This POKéMON builds its nest on steep\n" + "cliffs facing the sea."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Ralts_1[] = _( + "RALTS has the ability to sense the\n" + "emotions of people.\n" + "If its TRAINER is in a cheerful mood,"); +const u8 DexDescription_Ralts_2[] = _( + "this POKéMON grows cheerful and joyous\n" + "in the same way."); +#else +const u8 DexDescription_Ralts_1[] = _( + "RALTS senses the emotions of\n" + "people using the horns on its head.\n" + "This POKéMON rarely appears before"); +const u8 DexDescription_Ralts_2[] = _( + "people. But when it does, it draws\n" + "closer if it senses that the person has\n" + "a positive disposition."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Kirlia_1[] = _( + "KIRLIA uses the horns on its head\n" + "to amplify its psychokinetic power.\n" + "When the POKéMON uses its power,"); +const u8 DexDescription_Kirlia_2[] = _( + "the air around it becomes distorted,\n" + "creating mirages of nonexistent\n" + "scenery."); +#else +const u8 DexDescription_Kirlia_1[] = _( + "It is said that a KIRLIA that is\n" + "exposed to the positive emotions of\n" + "its TRAINER grows beautiful."); +const u8 DexDescription_Kirlia_2[] = _( + "This POKéMON controls psychokinetic\n" + "powers with its highly developed brain."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Gardevoir_1[] = _( + "GARDEVOIR has the psychokinetic\n" + "power to distort the dimensions and\n" + "create a small black hole."); +const u8 DexDescription_Gardevoir_2[] = _( + "This POKéMON will try to protect its\n" + "TRAINER even at the risk of its own\n" + "life."); +#else +const u8 DexDescription_Gardevoir_1[] = _( + "GARDEVOIR has the ability to read the\n" + "future. If it senses impending danger\n" + "to its TRAINER, this POKéMON is said to"); +const u8 DexDescription_Gardevoir_2[] = _( + "unleash its psychokinetic energy at\n" + "full power."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Surskit_1[] = _( + "If SURSKIT senses danger, it secretes\n" + "a thick, sugary syrup from the tip of\n" + "its head."); +const u8 DexDescription_Surskit_2[] = _( + "There are some POKéMON that love\n" + "eating this syrup."); +#else +const u8 DexDescription_Surskit_1[] = _( + "From the tips of its feet, SURSKIT\n" + "secretes an oil that enables it to walk\n" + "on water as if it were skating."); +const u8 DexDescription_Surskit_2[] = _( + "This POKéMON feeds on microscopic\n" + "organisms in ponds and lakes."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Masquerain_1[] = _( + "MASQUERAIN’s antennas have eyelike\n" + "patterns that usually give it an angry\n" + "look. If the “eyes” are droopy and"); +const u8 DexDescription_Masquerain_2[] = _( + "appear sad, it is said to be a sign\n" + "that a heavy rainfall is on its way."); +#else +const u8 DexDescription_Masquerain_1[] = _( + "MASQUERAIN intimidates enemies with\n" + "the eyelike patterns on its antennas.\n" + "This POKéMON flaps its four wings to"); +const u8 DexDescription_Masquerain_2[] = _( + "freely fly in any direction - even\n" + "sideways and backwards - as if it were\n" + "a helicopter."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Shroomish_1[] = _( + "If SHROOMISH senses danger, it shakes\n" + "its body and scatters spores from the\n" + "top of its head."); +const u8 DexDescription_Shroomish_2[] = _( + "This POKéMON’s spores are so toxic,\n" + "they make trees and weeds wilt."); +#else +const u8 DexDescription_Shroomish_1[] = _( + "SHROOMISH live in damp soil in the dark\n" + "depths of forests. They are often\n" + "found keeping still under fallen leaves."); +const u8 DexDescription_Shroomish_2[] = _( + "This POKéMON feeds on compost that\n" + "is made up of fallen, rotted leaves."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Breloom_1[] = _( + "The seeds ringing BRELOOM’s tail are\n" + "made of hardened toxic spores. It is\n" + "horrible to eat the seeds."); +const u8 DexDescription_Breloom_2[] = _( + "Just taking a bite of this POKéMON’s\n" + "seed will cause your stomach to rumble."); +#else +const u8 DexDescription_Breloom_1[] = _( + "BRELOOM closes in on its foe with light\n" + "and sprightly footwork, then throws\n" + "punches with its stretchy arms."); +const u8 DexDescription_Breloom_2[] = _( + "This POKéMON’s fighting technique puts\n" + "boxers to shame."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Slakoth_1[] = _( + "SLAKOTH’s heart beats just once a\n" + "minute. Whatever happens, it is\n" + "content to loaf around motionless."); +const u8 DexDescription_Slakoth_2[] = _( + "It is rare to see this POKéMON in\n" + "motion."); +#else +const u8 DexDescription_Slakoth_1[] = _( + "SLAKOTH lolls around for over twenty\n" + "hours every day. Because it moves so\n" + "little, it does not need much food."); +const u8 DexDescription_Slakoth_2[] = _( + "This POKéMON’s sole daily meal consists\n" + "of just three leaves."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Vigoroth_1[] = _( + "VIGOROTH is simply incapable of\n" + "remaining still. Even when it tries to\n" + "sleep, the blood in its veins grows"); +const u8 DexDescription_Vigoroth_2[] = _( + "agitated, compelling this POKéMON to\n" + "run wild throughout the jungle before\n" + "it can settle down."); +#else +const u8 DexDescription_Vigoroth_1[] = _( + "VIGOROTH is always itching and agitated\n" + "to go on a wild rampage. It simply can’t\n" + "tolerate sitting still for even a minute."); +const u8 DexDescription_Vigoroth_2[] = _( + "This POKéMON’s stress level rises if it\n" + "can’t be moving constantly."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Slaking_1[] = _( + "Wherever SLAKING live, rings of over\n" + "a yard in diameter appear in grassy\n" + "fields. They are made by the POKéMON"); +const u8 DexDescription_Slaking_2[] = _( + "as it eats all the grass within reach\n" + "while lying prone on the ground."); +#else +const u8 DexDescription_Slaking_1[] = _( + "SLAKING spends all day lying down and\n" + "lolling about.\n" + "It eats grass growing within its reach."); +const u8 DexDescription_Slaking_2[] = _( + "If it eats all the grass it can reach,\n" + "this POKéMON reluctantly moves to\n" + "another spot."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Nincada_1[] = _( + "NINCADA lives underground. It uses its\n" + "sharp claws to carve the roots of trees\n" + "and absorb moisture and nutrients."); +const u8 DexDescription_Nincada_2[] = _( + "This POKéMON can’t withstand bright\n" + "sunlight so avoids it."); +#else +const u8 DexDescription_Nincada_1[] = _( + "NINCADA lives underground for many\n" + "years in complete darkness.\n" + "This POKéMON absorbs nutrients from"); +const u8 DexDescription_Nincada_2[] = _( + "the roots of trees. It stays motionless\n" + "as it waits for evolution."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Ninjask_1[] = _( + "If NINJASK is not trained properly,\n" + "it will refuse to obey the TRAINER and\n" + "cry loudly continuously."); +const u8 DexDescription_Ninjask_2[] = _( + "Because of this quality, this POKéMON\n" + "is said to be one that puts the\n" + "TRAINER’s abilities to the test."); +#else +const u8 DexDescription_Ninjask_1[] = _( + "NINJASK moves around at such a high\n" + "speed that it cannot be seen, even\n" + "while its crying can be clearly heard."); +const u8 DexDescription_Ninjask_2[] = _( + "For that reason, this POKéMON was long\n" + "believed to be invisible."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Shedinja_1[] = _( + "SHEDINJA is a peculiar POKéMON.\n" + "It seems to appear unsought in a POKé\n" + "BALL after a NINCADA evolves."); +const u8 DexDescription_Shedinja_2[] = _( + "This bizarre POKéMON is entirely\n" + "immobile - it doesn’t even breathe."); +#else +const u8 DexDescription_Shedinja_1[] = _( + "SHEDINJA’s hard body doesn’t move -\n" + "not even a twitch. In fact, its body\n" + "appears to be merely a hollow shell."); +const u8 DexDescription_Shedinja_2[] = _( + "It is believed that this POKéMON will\n" + "steal the spirit of anyone peering into\n" + "its hollow body from its back."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Whismur_1[] = _( + "WHISMUR is very timid. If it starts to\n" + "cry loudly, it becomes startled by its\n" + "own crying and cries even harder."); +const u8 DexDescription_Whismur_2[] = _( + "When it finally stops crying, the\n" + "POKéMON goes to sleep, all tired out."); +#else +const u8 DexDescription_Whismur_1[] = _( + "Normally, WHISMUR’s voice is very quiet -\n" + "it is barely audible even if one is\n" + "paying close attention."); +const u8 DexDescription_Whismur_2[] = _( + "However, if this POKéMON senses danger,\n" + "it starts crying at an earsplitting\n" + "volume."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Loudred_1[] = _( + "LOUDRED shouts while stamping its feet.\n" + "After it finishes shouting, this\n" + "POKéMON becomes incapable of hearing"); +const u8 DexDescription_Loudred_2[] = _( + "anything for a while. This is considered\n" + "to be a weak point."); +#else +const u8 DexDescription_Loudred_1[] = _( + "LOUDRED’s bellowing can completely\n" + "decimate a wood-frame house. It uses\n" + "its voice to punish its foes."); +const u8 DexDescription_Loudred_2[] = _( + "This POKéMON’s round ears serve as\n" + "loudspeakers."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Exploud_1[] = _( + "EXPLOUD communicates its feelings to\n" + "the others by emitting whistle-like\n" + "sounds from the tubes on its body."); +const u8 DexDescription_Exploud_2[] = _( + "This POKéMON only raises its voice when\n" + "it is in battle."); +#else +const u8 DexDescription_Exploud_1[] = _( + "EXPLOUD triggers earthquakes with the\n" + "tremors it creates by bellowing. If this\n" + "POKéMON violently inhales from the"); +const u8 DexDescription_Exploud_2[] = _( + "ports on its body, it’s a sign that it is\n" + "preparing to let loose a huge bellow."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Makuhita_1[] = _( + "MAKUHITA has a tireless spirit -\n" + "it will never give up hope. It eats a lot\n" + "of food, gets plenty of sleep, and it"); +const u8 DexDescription_Makuhita_2[] = _( + "trains very rigorously. By living that\n" + "way, this POKéMON packs its body with\n" + "energy."); +#else +const u8 DexDescription_Makuhita_1[] = _( + "MAKUHITA is tenacious - it will keep\n" + "getting up and attacking its foe\n" + "however many times it is knocked down."); +const u8 DexDescription_Makuhita_2[] = _( + "Every time it gets back up, this\n" + "POKéMON stores more energy in its body\n" + "for evolving."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Hariyama_1[] = _( + "HARIYAMA’s thick body may appear fat,\n" + "but it is actually a hunk of solid muscle.\n" + "If this POKéMON bears down and"); +const u8 DexDescription_Hariyama_2[] = _( + "tightens all its muscles, its body\n" + "becomes as hard as a rock."); +#else +const u8 DexDescription_Hariyama_1[] = _( + "HARIYAMA practices its straight-arm\n" + "slaps in any number of locations.\n" + "One hit of this POKéMON’s powerful,"); +const u8 DexDescription_Hariyama_2[] = _( + "openhanded, straight-arm punches\n" + "could snap a telephone pole in two."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Azurill_1[] = _( + "AZURILL’s tail is large and bouncy.\n" + "It is packed full of the nutrients this\n" + "POKéMON needs to grow."); +const u8 DexDescription_Azurill_2[] = _( + "AZURILL can be seen bouncing and\n" + "playing on its big, rubbery tail."); +#else +const u8 DexDescription_Azurill_1[] = _( + "AZURILL spins its tail as if it were a\n" + "lasso, then hurls it far. The momentum\n" + "of the throw sends its body flying, too."); +const u8 DexDescription_Azurill_2[] = _( + "Using this unique action, one of these\n" + "POKéMON managed to hurl itself a record\n" + "33 feet."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Nosepass_1[] = _( + "NOSEPASS had been said to be completely\n" + "unmoving, with its magnetic nose\n" + "pointed due north."); +const u8 DexDescription_Nosepass_2[] = _( + "However, close observation has revealed\n" + "that the POKéMON actually moves by a\n" + "little over 3/8 of an inch every year."); +#else +const u8 DexDescription_Nosepass_1[] = _( + "NOSEPASS’s magnetic nose is always\n" + "pointed to the north. If two of these\n" + "POKéMON meet, they cannot turn"); +const u8 DexDescription_Nosepass_2[] = _( + "their faces to each other when they\n" + "are close because their magnetic noses\n" + "repel one another."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Skitty_1[] = _( + "SKITTY is known to chase around\n" + "playfully after its own tail. In the wild,\n" + "this POKéMON lives in holes in the trees"); +const u8 DexDescription_Skitty_2[] = _( + "of forests. It is very popular as a pet\n" + "because of its adorable looks."); +#else +const u8 DexDescription_Skitty_1[] = _( + "SKITTY has the habit of becoming\n" + "fascinated by moving objects and\n" + "chasing them around."); +const u8 DexDescription_Skitty_2[] = _( + "This POKéMON is known to chase after\n" + "its own tail and become dizzy."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Delcatty_1[] = _( + "DELCATTY sleeps anywhere it wants\n" + "without keeping a permanent nest.\n" + "If other POKéMON approach it as it"); +const u8 DexDescription_Delcatty_2[] = _( + "sleeps, this POKéMON will never fight -\n" + "it will just move away somewhere else."); +#else +const u8 DexDescription_Delcatty_1[] = _( + "DELCATTY prefers to live an unfettered\n" + "existence in which it can do as it\n" + "pleases at its own pace."); +const u8 DexDescription_Delcatty_2[] = _( + "Because this POKéMON eats and sleeps\n" + "whenever it decides, its daily routines\n" + "are completely random."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Sableye_1[] = _( + "SABLEYE digs the ground with sharpened\n" + "claws to find rocks that it eats.\n" + "Substances in the eaten rocks"); +const u8 DexDescription_Sableye_2[] = _( + "crystallize and rise up to the POKéMON’s\n" + "body surface."); +#else +const u8 DexDescription_Sableye_1[] = _( + "SABLEYE lead quiet lives deep inside\n" + "caverns. They are feared, however,\n" + "because these POKéMON are thought to"); +const u8 DexDescription_Sableye_2[] = _( + "steal the spirits of people when their\n" + "eyes burn with a sinister glow in the\n" + "darkness."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Mawile_1[] = _( + "Don’t be taken in by this POKéMON’s\n" + "cute face - it’s very dangerous. MAWILE\n" + "fools the foe into letting down its"); +const u8 DexDescription_Mawile_2[] = _( + "guard, then chomps down with its\n" + "massive jaws. The steel jaws are really\n" + "horns that have been transformed."); +#else +#if REVISION >= 1 +const u8 DexDescription_Mawile_1[] = _( + "MAWILE’s huge jaws are actually steel\n" + "horns that have been transformed.\n" + "Its docile-looking face serves to lull"); +const u8 DexDescription_Mawile_2[] = _( + "its foe into letting down its guard.\n" + "When the foe least expects it, MAWILE\n" // Correct spelling of MAWILE + "chomps it with its gaping jaws."); +#else +const u8 DexDescription_Mawile_1[] = _( + "MAWHILE’s huge jaws are actually steel\n" + "horns that have been transformed.\n" + "Its docile-looking face serves to lull"); +const u8 DexDescription_Mawile_2[] = _( + "its foe into letting down its guard.\n" + "When the foe least expects it, MAWHILE\n" + "chomps it with its gaping jaws."); +#endif +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Aron_1[] = _( + "ARON has a body of steel.\n" + "With one all-out charge, this POKéMON\n" + "can demolish even a heavy dump truck."); +const u8 DexDescription_Aron_2[] = _( + "The destroyed dump truck then becomes\n" + "a handy meal for the POKéMON."); +#else +const u8 DexDescription_Aron_1[] = _( + "This POKéMON has a body of steel.\n" + "To make its body, ARON feeds on\n" + "iron ore that it digs from mountains."); +const u8 DexDescription_Aron_2[] = _( + "Occasionally, it causes major trouble by\n" + "eating bridges and rails."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Lairon_1[] = _( + "LAIRON feeds on iron contained in\n" + "rocks and water. It makes its nest on\n" + "mountains where iron ore is buried."); +const u8 DexDescription_Lairon_2[] = _( + "As a result, the POKéMON often clashes\n" + "with humans mining the iron ore."); +#else +const u8 DexDescription_Lairon_1[] = _( + "LAIRON tempers its steel body by\n" + "drinking highly nutritious mineral\n" + "springwater until it is bloated."); +const u8 DexDescription_Lairon_2[] = _( + "This POKéMON makes its nest close to\n" + "springs of delicious water."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Aggron_1[] = _( + "AGGRON is surprisingly protective\n" + "of its environment. If its mountain\n" + "is ravaged by a landslide or a fire, this"); +const u8 DexDescription_Aggron_2[] = _( + "POKéMON will haul topsoil to the area,\n" + "plant trees, and beautifully restore its\n" + "own territory."); +#else +const u8 DexDescription_Aggron_1[] = _( + "AGGRON claims an entire mountain as its\n" + "own territory. It mercilessly beats up\n" + "anything that violates its environment."); +const u8 DexDescription_Aggron_2[] = _( + "This POKéMON vigilantly patrols its\n" + "territory at all times."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Meditite_1[] = _( + "MEDITITE heightens its inner energy\n" + "through meditation. It survives on\n" + "just one berry a day."); +const u8 DexDescription_Meditite_2[] = _( + "Minimal eating is another aspect of\n" + "this POKéMON’s training."); +#else +const u8 DexDescription_Meditite_1[] = _( + "MEDITITE undertakes rigorous mental\n" + "training deep in the mountains.\n" + "However, whenever it meditates, this"); +const u8 DexDescription_Meditite_2[] = _( + "POKéMON always loses its concentration\n" + "and focus. As a result, its training\n" + "never ends."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Medicham_1[] = _( + "Through the power of meditation,\n" + "MEDICHAM developed its sixth sense.\n" + "It gained the ability to use"); +const u8 DexDescription_Medicham_2[] = _( + "psychokinetic powers. This POKéMON is\n" + "known to meditate for a whole month\n" + "without eating."); +#else +const u8 DexDescription_Medicham_1[] = _( + "It is said that through meditation,\n" + "MEDICHAM heightens energy inside\n" + "its body and sharpens its sixth sense."); +const u8 DexDescription_Medicham_2[] = _( + "This POKéMON hides its presence by\n" + "merging itself with fields and\n" + "mountains."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Electrike_1[] = _( + "ELECTRIKE runs faster than the human\n" + "eye can follow. The friction from\n" + "running is converted into electricity,"); +const u8 DexDescription_Electrike_2[] = _( + "which is then stored in this POKéMON’s\n" + "fur."); +#else +const u8 DexDescription_Electrike_1[] = _( + "ELECTRIKE stores electricity in its\n" + "long body hair. This POKéMON stimulates\n" + "its leg muscles with electric charges."); +const u8 DexDescription_Electrike_2[] = _( + "These jolts of power give its legs\n" + "explosive acceleration performance."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Manectric_1[] = _( + "MANECTRIC discharges strong\n" + "electricity from its mane. The mane is\n" + "used for collecting electricity in the"); +const u8 DexDescription_Manectric_2[] = _( + "atmosphere. This POKéMON creates\n" + "thunderclouds above its head."); +#else +const u8 DexDescription_Manectric_1[] = _( + "MANECTRIC is constantly discharging\n" + "electricity from its mane. The sparks\n" + "sometimes ignite forest fires."); +const u8 DexDescription_Manectric_2[] = _( + "When it enters a battle, this POKéMON\n" + "creates thunderclouds."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Plusle_1[] = _( + "When PLUSLE is cheering on its partner,\n" + "it flashes with electric sparks from all\n" + "over its body."); +const u8 DexDescription_Plusle_2[] = _( + "If its partner loses, this POKéMON cries\n" + "loudly."); +#else +const u8 DexDescription_Plusle_1[] = _( + "PLUSLE always acts as a cheerleader\n" + "for its partners. Whenever a teammate\n" + "puts out a good effort in battle, this"); +const u8 DexDescription_Plusle_2[] = _( + "POKéMON shorts out its body to create\n" + "the crackling noises of sparks to show\n" + "its joy."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Minun_1[] = _( + "MINUN loves to cheer on its partner in\n" + "battle. It gives off sparks from its\n" + "body while it is doing so."); +const u8 DexDescription_Minun_2[] = _( + "If its partner is in trouble, this\n" + "POKéMON gives off increasing amounts\n" + "of sparks."); +#else +const u8 DexDescription_Minun_1[] = _( + "MINUN is more concerned about cheering\n" + "on its partners than its own safety.\n" + "It shorts out the electricity in its"); +const u8 DexDescription_Minun_2[] = _( + "body to create brilliant showers of\n" + "sparks to cheer on its teammates."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Volbeat_1[] = _( + "VOLBEAT’s tail glows like a lightbulb.\n" + "With other VOLBEAT, it uses its tail to\n" + "draw geometric shapes in the night sky."); +const u8 DexDescription_Volbeat_2[] = _( + "This POKéMON loves the sweet aroma\n" + "given off by ILLUMISE."); +#else +const u8 DexDescription_Volbeat_1[] = _( + "With the arrival of night, VOLBEAT emits\n" + "light from its tail. It communicates with\n" + "others by adjusting the intensity and"); +const u8 DexDescription_Volbeat_2[] = _( + "flashing of its light.\n" + "This POKéMON is attracted by the sweet\n" + "aroma of ILLUMISE."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Illumise_1[] = _( + "ILLUMISE leads a flight of illuminated\n" + "VOLBEAT to draw signs in the night sky.\n" + "This POKéMON is said to earn greater"); +const u8 DexDescription_Illumise_2[] = _( + "respect from its peers by composing\n" + "more complex designs in the sky."); +#else +const u8 DexDescription_Illumise_1[] = _( + "ILLUMISE attracts a swarm of VOLBEAT\n" + "using a sweet fragrance. Once the\n" + "VOLBEAT have gathered, this POKéMON"); +const u8 DexDescription_Illumise_2[] = _( + "leads the lit-up swarm in drawing\n" + "geometric designs on the canvas of\n" + "the night sky."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Roselia_1[] = _( + "On extremely rare occasions, a ROSELIA\n" + "is said to appear with its flowers in\n" + "unusual colors."); +const u8 DexDescription_Roselia_2[] = _( + "The thorns on this POKéMON’s head\n" + "contain a vicious poison."); +#else +const u8 DexDescription_Roselia_1[] = _( + "ROSELIA shoots sharp thorns as\n" + "projectiles at any opponent that tries\n" + "to steal the flowers on its arms."); +const u8 DexDescription_Roselia_2[] = _( + "The aroma of this POKéMON brings\n" + "serenity to living things."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Gulpin_1[] = _( + "Most of GULPIN’s body is made up of its\n" + "stomach - its heart and brain are very\n" + "small in comparison."); +const u8 DexDescription_Gulpin_2[] = _( + "This POKéMON’s stomach contains\n" + "special enzymes that dissolve anything."); +#else +const u8 DexDescription_Gulpin_1[] = _( + "Virtually all of GULPIN’s body is its\n" + "stomach. As a result, it can swallow\n" + "something its own size."); +const u8 DexDescription_Gulpin_2[] = _( + "This POKéMON’s stomach contains a\n" + "special fluid that digests anything."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Swalot_1[] = _( + "SWALOT has no teeth, so what it\n" + "eats, it swallows whole, no matter what.\n" + "Its cavernous mouth yawns widely."); +const u8 DexDescription_Swalot_2[] = _( + "An automobile tire could easily fit\n" + "inside this POKéMON’s mouth."); +#else +const u8 DexDescription_Swalot_1[] = _( + "When SWALOT spots prey, it spurts out\n" + "a hideously toxic fluid from its pores\n" + "and sprays the target."); +const u8 DexDescription_Swalot_2[] = _( + "Once the prey has weakened, this\n" + "POKéMON gulps it down whole with its\n" + "cavernous mouth."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Carvanha_1[] = _( + "If anything invades CARVANHA’s\n" + "territory, it will swarm and tear at the\n" + "intruder with its pointed fangs."); +const u8 DexDescription_Carvanha_2[] = _( + "On its own, however, this POKéMON turns\n" + "suddenly timid."); +#else +const u8 DexDescription_Carvanha_1[] = _( + "CARVANHA’s strongly developed jaws\n" + "and its sharply pointed fangs pack the\n" + "destructive power to rip out boat hulls."); +const u8 DexDescription_Carvanha_2[] = _( + "Many boats have been attacked and\n" + "sunk by this POKéMON."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Sharpedo_1[] = _( + "SHARPEDO can swim at speeds of up to\n" + "75 mph by jetting seawater out of its\n" + "backside."); +const u8 DexDescription_Sharpedo_2[] = _( + "This POKéMON’s drawback is its inability\n" + "to swim long distances."); +#else +const u8 DexDescription_Sharpedo_1[] = _( + "Nicknamed “the bully of the sea,”\n" + "SHARPEDO is widely feared.\n" + "Its cruel fangs grow back immediately"); +const u8 DexDescription_Sharpedo_2[] = _( + "if they snap off.\n" + "Just one of these POKéMON can\n" + "thoroughly tear apart a supertanker."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Wailmer_1[] = _( + "WAILMER can store water inside its body\n" + "to transform itself into a ball for\n" + "bouncing around on the ground."); +const u8 DexDescription_Wailmer_2[] = _( + "By filling itself up with more water, this\n" + "POKéMON can elevate the height of its\n" + "bounces."); +#else +const u8 DexDescription_Wailmer_1[] = _( + "WAILMER’s nostrils are located above\n" + "its eyes. This playful POKéMON loves\n" + "to startle people by forcefully snorting"); +const u8 DexDescription_Wailmer_2[] = _( + "out seawater it stores inside its body\n" + "out of its nostrils."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Wailord_1[] = _( + "When chasing prey, WAILORD herds them\n" + "by leaping out of the water and making\n" + "a humongous splash."); +const u8 DexDescription_Wailord_2[] = _( + "It is breathtaking to see this POKéMON\n" + "leaping out of the sea with others in\n" + "its pod."); +#else +const u8 DexDescription_Wailord_1[] = _( + "WAILORD is the largest of all identified\n" + "POKéMON up to now.\n" + "This giant POKéMON swims languorously"); +const u8 DexDescription_Wailord_2[] = _( + "in the vast open sea, eating massive\n" + "amounts of food at once with its\n" + "enormous mouth."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Numel_1[] = _( + "NUMEL stores magma of almost 2,200\n" + "degrees F within its body. If it gets\n" + "wet, the magma cools and hardens."); +const u8 DexDescription_Numel_2[] = _( + "In that event, the POKéMON’s body\n" + "grows heavy and its movements become\n" + "sluggish."); +#else +const u8 DexDescription_Numel_1[] = _( + "NUMEL is extremely dull witted - it\n" + "doesn’t notice being hit. However, it\n" + "can’t stand hunger for even a second."); +const u8 DexDescription_Numel_2[] = _( + "This POKéMON’s body is a seething\n" + "cauldron of boiling magma."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Camerupt_1[] = _( + "The humps on CAMERUPT’s back are\n" + "formed by a transformation of its\n" + "bones. They sometimes blast out molten"); +const u8 DexDescription_Camerupt_2[] = _( + "magma. This POKéMON apparently erupts\n" + "often when it is enraged."); +#else +const u8 DexDescription_Camerupt_1[] = _( + "CAMERUPT has a volcano inside its body.\n" + "Magma of 18,000 degrees F courses\n" + "through its body."); +const u8 DexDescription_Camerupt_2[] = _( + "Occasionally, the humps on this\n" + "POKéMON’s back erupt, spewing the\n" + "superheated magma."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Torkoal_1[] = _( + "TORKOAL generates energy by burning\n" + "coal. It grows weaker as the fire\n" + "dies down."); +const u8 DexDescription_Torkoal_2[] = _( + "When it is preparing for battle, this\n" + "POKéMON burns more coal."); +#else +const u8 DexDescription_Torkoal_1[] = _( + "TORKOAL digs through mountains in\n" + "search of coal. If it finds some, it fills\n" + "hollow spaces on its shell with the coal"); +const u8 DexDescription_Torkoal_2[] = _( + "and burns it.\n" + "If it is attacked, this POKéMON spouts\n" + "thick black smoke to beat a retreat."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Spoink_1[] = _( + "SPOINK keeps a pearl on top of its head.\n" + "The pearl functions to amplify this\n" + "POKéMON’s psychokinetic powers."); +const u8 DexDescription_Spoink_2[] = _( + "It is therefore on a constant search\n" + "for a bigger pearl."); +#else +const u8 DexDescription_Spoink_1[] = _( + "SPOINK bounces around on its tail.\n" + "The shock of its bouncing makes its\n" + "heart pump. As a result, this POKéMON"); +const u8 DexDescription_Spoink_2[] = _( + "cannot afford to stop bouncing - if it\n" + "stops, its heart will stop."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Grumpig_1[] = _( + "GRUMPIG uses the black pearls on its\n" + "body to wield its fantastic powers.\n" + "When it is doing so, it dances bizarrely."); +const u8 DexDescription_Grumpig_2[] = _( + "This POKéMON’s black pearls are valuable\n" + "as works of art."); +#else +const u8 DexDescription_Grumpig_1[] = _( + "GRUMPIG uses the black pearls on its\n" + "body to amplify its psychic power waves\n" + "for gaining total control over its foe."); +const u8 DexDescription_Grumpig_2[] = _( + "When this POKéMON uses its special\n" + "power, its snorting breath grows\n" + "labored."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Spinda_1[] = _( + "No two SPINDA are said to have\n" + "identical spot patterns on their hides.\n" + "This POKéMON moves in a curious manner"); +const u8 DexDescription_Spinda_2[] = _( + "as if it is stumbling in dizziness.\n" + "Its lurching movements can cause the\n" + "opponent to become confused."); +#else +const u8 DexDescription_Spinda_1[] = _( + "All the SPINDA that exist in the\n" + "world are said to have utterly unique\n" + "spot patterns."); +const u8 DexDescription_Spinda_2[] = _( + "The shaky, tottering steps of this\n" + "POKéMON give it the appearance of\n" + "dancing."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Trapinch_1[] = _( + "TRAPINCH is a patient hunter. It digs\n" + "an inescapable pit in a desert and waits\n" + "for its prey to come tumbling down."); +const u8 DexDescription_Trapinch_2[] = _( + "This POKéMON can go a whole week\n" + "without access to any water."); +#else +const u8 DexDescription_Trapinch_1[] = _( + "TRAPINCH’s nest is a sloped, bowl-like\n" + "pit dug in sand. This POKéMON patiently\n" + "waits for prey to tumble down the pit."); +const u8 DexDescription_Trapinch_2[] = _( + "Its giant jaws have enough strength\n" + "to crush even boulders."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Vibrava_1[] = _( + "VIBRAVA’s wings have not yet\n" + "completed the process of growing.\n" + "Rather than flying long distances,"); +const u8 DexDescription_Vibrava_2[] = _( + "they are more useful for generating\n" + "ultrasonic waves by vibrating."); +#else +const u8 DexDescription_Vibrava_1[] = _( + "To make prey faint, VIBRAVA generates\n" + "ultrasonic waves by vigorously making\n" + "its two wings vibrate."); +const u8 DexDescription_Vibrava_2[] = _( + "This POKéMON’s ultrasonic waves are so\n" + "powerful, they can bring on headaches\n" + "in people."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Flygon_1[] = _( + "FLYGON whips up a sandstorm by\n" + "flapping its wings. The wings create a\n" + "series of notes that sound like singing."); +const u8 DexDescription_Flygon_2[] = _( + "Because the “singing” is the only thing\n" + "that can be heard in a sandstorm, this\n" + "POKéMON is said to be the desert spirit."); +#else +const u8 DexDescription_Flygon_1[] = _( + "FLYGON is nicknamed “the elemental \n" + "spirit of the desert.” Because its\n" + "flapping wings whip up a cloud of sand,"); +const u8 DexDescription_Flygon_2[] = _( + "this POKéMON is always enveloped in a\n" + "sandstorm while flying."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Cacnea_1[] = _( + "The more arid and harsh the\n" + "environment, the more pretty and\n" + "fragrant a flower CACNEA grows."); +const u8 DexDescription_Cacnea_2[] = _( + "This POKéMON battles by wildly swinging\n" + "its thorny arms."); +#else +const u8 DexDescription_Cacnea_1[] = _( + "CACNEA lives in arid locations such\n" + "as deserts. It releases a strong aroma\n" + "from its flower to attract prey."); +const u8 DexDescription_Cacnea_2[] = _( + "When prey comes near, this POKéMON\n" + "shoots sharp thorns from its body to\n" + "bring the victim down."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Cacturne_1[] = _( + "If a traveler is going through a desert\n" + "in the thick of night, CACTURNE\n" + "will follow in a ragtag group."); +const u8 DexDescription_Cacturne_2[] = _( + "The POKéMON are biding their time,\n" + "waiting for the traveler to tire and\n" + "become incapable of moving."); +#else +const u8 DexDescription_Cacturne_1[] = _( + "During the daytime, CACTURNE remains\n" + "unmoving so that it does not lose any\n" + "moisture to the harsh desert sun."); +const u8 DexDescription_Cacturne_2[] = _( + "This POKéMON becomes active at night\n" + "when the temperature drops."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Swablu_1[] = _( + "SWABLU loves to make things clean.\n" + "If it spots something dirty, it will wipe\n" + "and polish it with its cottony wings."); +const u8 DexDescription_Swablu_2[] = _( + "If its wings become dirty, this POKéMON\n" + "finds a stream and showers itself."); +#else +const u8 DexDescription_Swablu_1[] = _( + "SWABLU has light and fluffy wings that\n" + "are like cottony clouds. This POKéMON\n" + "is not frightened of people."); +const u8 DexDescription_Swablu_2[] = _( + "It lands on the heads of people and\n" + "sits there like a cotton-fluff hat."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Altaria_1[] = _( + "ALTARIA sings in a gorgeous soprano.\n" + "Its wings are like cotton clouds.\n" + "This POKéMON catches updrafts with its"); +const u8 DexDescription_Altaria_2[] = _( + "buoyant wings and soars way up into\n" + "the wild blue yonder."); +#else +const u8 DexDescription_Altaria_1[] = _( + "ALTARIA dances and wheels through the\n" + "sky among billowing, cotton-like clouds.\n" + "By singing melodies in its crystal-clear"); +const u8 DexDescription_Altaria_2[] = _( + "voice, this POKéMON makes its listeners\n" + "experience dreamy wonderment."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Zangoose_1[] = _( + "ZANGOOSE usually stays on all fours,\n" + "but when angered, it gets up on its\n" + "hind legs and extends its claws."); +const u8 DexDescription_Zangoose_2[] = _( + "This POKéMON shares a bitter rivalry\n" + "with SEVIPER that dates back over\n" + "generations."); +#else +const u8 DexDescription_Zangoose_1[] = _( + "Memories of battling its arch-rival\n" + "SEVIPER are etched into every cell of\n" + "ZANGOOSE’s body."); +const u8 DexDescription_Zangoose_2[] = _( + "This POKéMON adroitly dodges attacks\n" + "with incredible agility."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Seviper_1[] = _( + "SEVIPER’s swordlike tail serves two\n" + "purposes - it slashes foes and douses\n" + "them with secreted poison."); +const u8 DexDescription_Seviper_2[] = _( + "This POKéMON will not give up its long-\n" + "running blood feud with ZANGOOSE."); +#else +const u8 DexDescription_Seviper_1[] = _( + "SEVIPER shares a generations-long\n" + "feud with ZANGOOSE. The scars on its\n" + "body are evidence of vicious battles."); +const u8 DexDescription_Seviper_2[] = _( + "This POKéMON attacks using its sword-\n" + "edged tail."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Lunatone_1[] = _( + "LUNATONE becomes active around the\n" + "time of the full moon. Instead of\n" + "walking, it moves by floating in midair."); +const u8 DexDescription_Lunatone_2[] = _( + "The POKéMON’s intimidating red eyes\n" + "cause all those who see it to become\n" + "transfixed with fear."); +#else +const u8 DexDescription_Lunatone_1[] = _( + "LUNATONE was discovered at a location\n" + "where a meteorite fell. As a result, some\n" + "people theorize that this POKéMON"); +const u8 DexDescription_Lunatone_2[] = _( + "came from space. However, no one has\n" + "been able to prove this theory so far."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Solrock_1[] = _( + "Sunlight is the source of SOLROCK’s\n" + "power. It is said to possess the ability\n" + "to read the emotions of others."); +const u8 DexDescription_Solrock_2[] = _( + "This POKéMON gives off intense heat\n" + "while rotating its body."); +#else +const u8 DexDescription_Solrock_1[] = _( + "SOLROCK is a new species of POKéMON\n" + "that is said to have fallen from space.\n" + "It floats in air and moves silently."); +const u8 DexDescription_Solrock_2[] = _( + "In battle, this POKéMON releases\n" + "intensely bright light."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Barboach_1[] = _( + "BARBOACH’s body is covered with a\n" + "slimy film. If a foe grabs it, this\n" + "POKéMON just slips out of the enemy’s"); +const u8 DexDescription_Barboach_2[] = _( + "grip.\n" + "This POKéMON grows weak if the slimy\n" + "coating dries up."); +#else +const u8 DexDescription_Barboach_1[] = _( + "BARBOACH’s sensitive whiskers serve\n" + "as a superb radar system.\n" + "This POKéMON hides in mud, leaving only"); +const u8 DexDescription_Barboach_2[] = _( + "its two whiskers exposed while it waits\n" + "for prey to come along."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Whiscash_1[] = _( + "If WHISCASH goes on a wild rampage,\n" + "it sets off a quake-like tremor with a\n" + "radius of over three miles."); +const u8 DexDescription_Whiscash_2[] = _( + "This POKéMON has the ability to predict\n" + "real earthquakes."); +#else +const u8 DexDescription_Whiscash_1[] = _( + "WHISCASH is extremely territorial.\n" + "Just one of these POKéMON will claim a\n" + "large pond as its exclusive territory."); +const u8 DexDescription_Whiscash_2[] = _( + "If a foe approaches it, it thrashes\n" + "about and triggers a massive\n" + "earthquake."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Corphish_1[] = _( + "CORPHISH catches prey with its sharp\n" + "claws. It has no likes or dislikes when it\n" + "comes to food - it will eat anything."); +const u8 DexDescription_Corphish_2[] = _( + "This POKéMON has no trouble living in\n" + "filthy water."); +#else +const u8 DexDescription_Corphish_1[] = _( + "CORPHISH were originally foreign\n" + "POKéMON that were imported as pets.\n" + "They eventually turned up in the wild."); +const u8 DexDescription_Corphish_2[] = _( + "This POKéMON is very hardy and has\n" + "greatly increased its population."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Crawdaunt_1[] = _( + "CRAWDAUNT molts (sheds) its shell\n" + "regularly. Immediately after molting,\n" + "its shell is soft and tender."); +const u8 DexDescription_Crawdaunt_2[] = _( + "Until the shell hardens, this POKéMON\n" + "hides in its streambed burrow to avoid\n" + "attack from its foes."); +#else +const u8 DexDescription_Crawdaunt_1[] = _( + "CRAWDAUNT has an extremely violent\n" + "nature that compels it to challenge\n" + "other living things to battle."); +const u8 DexDescription_Crawdaunt_2[] = _( + "Other life-forms refuse to live in\n" + "ponds inhabited by this POKéMON,\n" + "making them desolate places."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Baltoy_1[] = _( + "As soon as it spots others of its kind,\n" + "BALTOY congregates with them and\n" + "then begins crying noisily in unison."); +const u8 DexDescription_Baltoy_2[] = _( + "This POKéMON sleeps while cleverly\n" + "balancing itself on its one foot."); +#else +const u8 DexDescription_Baltoy_1[] = _( + "BALTOY moves while spinning around on\n" + "its one foot. Primitive wall paintings\n" + "depicting this POKéMON living among"); +const u8 DexDescription_Baltoy_2[] = _( + "people were discovered in some ancient\n" + "ruins."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Claydol_1[] = _( + "CLAYDOL is an enigma that appeared\n" + "from a clay statue made by an ancient\n" + "civilization dating back 20,000 years."); +const u8 DexDescription_Claydol_2[] = _( + "This POKéMON shoots beams from both\n" + "its hands."); +#else +const u8 DexDescription_Claydol_1[] = _( + "CLAYDOL are said to be dolls of mud made\n" + "by primitive humans and brought to life\n" + "by exposure to a mysterious ray."); +const u8 DexDescription_Claydol_2[] = _( + "This POKéMON moves about while\n" + "levitating."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Lileep_1[] = _( + "LILEEP is an ancient POKéMON that was\n" + "regenerated from a fossil. It remains\n" + "permanently anchored to a rock."); +const u8 DexDescription_Lileep_2[] = _( + "From its immobile perch, this POKéMON\n" + "intently scans for prey with its two\n" + "eyes."); +#else +const u8 DexDescription_Lileep_1[] = _( + "LILEEP became extinct approximately\n" + "a hundred million years ago.\n" + "This ancient POKéMON attaches itself"); +const u8 DexDescription_Lileep_2[] = _( + "to a rock on the seafloor and catches\n" + "approaching prey using tentacles \n" + "shaped like flower petals."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Cradily_1[] = _( + "CRADILY’s body serves as an anchor,\n" + "preventing it from being washed away in\n" + "rough seas."); +const u8 DexDescription_Cradily_2[] = _( + "This POKéMON secretes a strong\n" + "digestive fluid from its tentacles."); +#else +const u8 DexDescription_Cradily_1[] = _( + "CRADILY roams around the ocean floor\n" + "in search of food. This POKéMON freely\n" + "extends its tree trunk-like neck and"); +const u8 DexDescription_Cradily_2[] = _( + "captures unwary prey using its eight\n" + "tentacles."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Anorith_1[] = _( + "ANORITH is said to be a type of \n" + "POKéMON predecessor, with eight wings\n" + "at the sides of its body."); +const u8 DexDescription_Anorith_2[] = _( + "This POKéMON swam in the primordial sea\n" + "by undulating these eight wings."); +#else +const u8 DexDescription_Anorith_1[] = _( + "ANORITH was regenerated from a\n" + "prehistoric fossil. This primitive\n" + "POKéMON once lived in warm seas."); +const u8 DexDescription_Anorith_2[] = _( + "It grips its prey firmly between its\n" + "two large claws."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Armaldo_1[] = _( + "ARMALDO is a POKéMON species that\n" + "became extinct in prehistoric times.\n" + "This POKéMON is said to have walked on"); +const u8 DexDescription_Armaldo_2[] = _( + "its hind legs, which would have been\n" + "more convenient for life on land."); +#else +const u8 DexDescription_Armaldo_1[] = _( + "ARMALDO’s tough armor makes all attacks\n" + "bounce off. This POKéMON’s two\n" + "enormous claws can be freely extended"); +const u8 DexDescription_Armaldo_2[] = _( + "or contracted. They have the power to\n" + "punch right through a steel slab."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Feebas_1[] = _( + "While FEEBAS’s body is in tatters,\n" + "it has a hardy and tenacious life force\n" + "that enables it to live anywhere."); +const u8 DexDescription_Feebas_2[] = _( + "However, this POKéMON is also slow and\n" + "dimwitted, making it an easy catch."); +#else +const u8 DexDescription_Feebas_1[] = _( + "FEEBAS’s fins are ragged and\n" + "tattered from the start of its life.\n" + "Because of its shoddy appearance, this"); +const u8 DexDescription_Feebas_2[] = _( + "POKéMON is largely ignored.\n" + "It is capable of living in both the sea\n" + "and in rivers."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Milotic_1[] = _( + "MILOTIC live at the bottom of large\n" + "lakes. When this POKéMON’s body glows a\n" + "vivid pink, it releases a pulsing wave of"); +const u8 DexDescription_Milotic_2[] = _( + "energy that brings soothing calm to\n" + "restless spirits."); +#else +const u8 DexDescription_Milotic_1[] = _( + "MILOTIC is said to be the most\n" + "beautiful of all the POKéMON.\n" + "It has the power to becalm such"); +const u8 DexDescription_Milotic_2[] = _( + "emotions as anger and hostility to quell\n" + "bitter feuding."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Castform_1[] = _( + "CASTFORM borrows the power of nature\n" + "to transform itself into the guises of\n" + "the sun, rain clouds, and snow clouds."); +const u8 DexDescription_Castform_2[] = _( + "This POKéMON’s feelings change with the\n" + "weather."); +#else +const u8 DexDescription_Castform_1[] = _( + "CASTFORM’s appearance changes with\n" + "the weather.\n" + "This POKéMON gained the ability to use"); +const u8 DexDescription_Castform_2[] = _( + "the vast power of nature to protect\n" + "its tiny body."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Kecleon_1[] = _( + "KECLEON alters its body coloration to\n" + "blend in with its surroundings, allowing\n" + "it to sneak up on its prey unnoticed."); +const u8 DexDescription_Kecleon_2[] = _( + "Then it lashes out with its long,\n" + "stretchy tongue to instantly ensnare\n" + "the unsuspecting target."); +#else +const u8 DexDescription_Kecleon_1[] = _( + "KECLEON is capable of changing its body\n" + "colors at will to blend in with its\n" + "surroundings."); +const u8 DexDescription_Kecleon_2[] = _( + "There is one exception - this POKéMON\n" + "can’t change the zigzag pattern on its\n" + "belly."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Shuppet_1[] = _( + "SHUPPET grows by feeding on dark\n" + "emotions, such as vengefulness and \n" + "envy, in the hearts of people."); +const u8 DexDescription_Shuppet_2[] = _( + "It roams through cities in search of\n" + "grudges that taint people."); +#else +const u8 DexDescription_Shuppet_1[] = _( + "SHUPPET is attracted by feelings\n" + "of jealousy and vindictiveness.\n" + "If someone develops strong feelings of"); +const u8 DexDescription_Shuppet_2[] = _( + "vengeance, this POKéMON will appear\n" + "in a swarm and line up beneath the eaves\n" + "of that person’s home."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Banette_1[] = _( + "A cursed energy permeated the stuffing\n" + "of a discarded and forgotten plush doll,\n" + "giving it new life as BANETTE."); +const u8 DexDescription_Banette_2[] = _( + "The POKéMON’s energy would escape if it\n" + "were to ever open its mouth."); +#else +const u8 DexDescription_Banette_1[] = _( + "BANETTE generates energy for laying\n" + "strong curses by sticking pins into its\n" + "own body."); +const u8 DexDescription_Banette_2[] = _( + "This POKéMON was originally a pitiful\n" + "plush doll that was thrown away."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Duskull_1[] = _( + "DUSKULL wanders lost among the deep\n" + "darkness of midnight. There is an oft-\n" + "told admonishment given to misbehaving"); +const u8 DexDescription_Duskull_2[] = _( + "children that this POKéMON will spirit\n" + "away bad children who earn scoldings\n" + "from their mothers."); +#else +const u8 DexDescription_Duskull_1[] = _( + "DUSKULL can pass through any wall no\n" + "matter how thick it may be.\n" + "Once this POKéMON chooses a target,"); +const u8 DexDescription_Duskull_2[] = _( + "it will doggedly pursue the intended\n" + "victim until the break of dawn."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Dusclops_1[] = _( + "DUSCLOPS absorbs anything, however\n" + "large the object may be. This POKéMON\n" + "hypnotizes its foe by waving its hands"); +const u8 DexDescription_Dusclops_2[] = _( + "in a macabre manner and by bringing its\n" + "single eye to bear. The hypnotized foe\n" + "is made to do DUSCLOPS’s bidding."); +#else +const u8 DexDescription_Dusclops_1[] = _( + "DUSCLOPS’s body is completely hollow -\n" + "there is nothing at all inside.\n" + "It is said that its body is like a black"); +const u8 DexDescription_Dusclops_2[] = _( + "hole. This POKéMON will absorb anything\n" + "into its body, but nothing will ever come\n" + "back out."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Tropius_1[] = _( + "Children of the southern tropics eat\n" + "as snacks the fruit that grows in\n" + "bunches around the neck of TROPIUS."); +const u8 DexDescription_Tropius_2[] = _( + "This POKéMON flies by flapping the\n" + "leaves on its back as if they were\n" + "wings."); +#else +const u8 DexDescription_Tropius_1[] = _( + "The bunches of fruit around TROPIUS’s\n" + "neck are very popular with children.\n" + "This POKéMON loves fruit, and eats it"); +const u8 DexDescription_Tropius_2[] = _( + "continuously. Apparently, its love for\n" + "fruit resulted in its own outgrowth\n" + "of fruit."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Chimecho_1[] = _( + "In high winds, CHIMECHO cries as it\n" + "hangs from a tree branch or the eaves\n" + "of a building using a suction cup on its"); +const u8 DexDescription_Chimecho_2[] = _( + "head.\n" + "This POKéMON plucks berries with its\n" + "long tail and eats them."); +#else +const u8 DexDescription_Chimecho_1[] = _( + "CHIMECHO makes its cries echo\n" + "inside its hollow body. When this\n" + "POKéMON becomes enraged, its cries"); +const u8 DexDescription_Chimecho_2[] = _( + "result in ultrasonic waves that have\n" + "the power to knock foes flying."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Absol_1[] = _( + "ABSOL has the ability to foretell the\n" + "coming of natural disasters.\n" + "It lives in a harsh, rugged mountain"); +const u8 DexDescription_Absol_2[] = _( + "environment. This POKéMON very rarely\n" + "ventures down from the mountains."); +#else +const u8 DexDescription_Absol_1[] = _( + "Every time ABSOL appears before people,\n" + "it is followed by a disaster such as an\n" + "earthquake or a tidal wave."); +const u8 DexDescription_Absol_2[] = _( + "As a result, it came to be known as the\n" + "disaster POKéMON."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Wynaut_1[] = _( + "WYNAUT gather on moonlit nights to play\n" + "by squeezing up against each other.\n" + "By being squeezed, this POKéMON gains"); +const u8 DexDescription_Wynaut_2[] = _( + "endurance and is trained to dole out\n" + "powerful counterattacks."); +#else +const u8 DexDescription_Wynaut_1[] = _( + "WYNAUT can always be seen with a big,\n" + "happy smile on its face. Look at its tail\n" + "to determine if it is angry."); +const u8 DexDescription_Wynaut_2[] = _( + "When angered, this POKéMON will be\n" + "slapping the ground with its tail."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Snorunt_1[] = _( + "SNORUNT survives by eating only snow\n" + "and ice.\n" + "Old folklore claims that a house visited"); +const u8 DexDescription_Snorunt_2[] = _( + "by this POKéMON is sure to prosper for\n" + "many generations to come."); +#else +const u8 DexDescription_Snorunt_1[] = _( + "SNORUNT live in regions with heavy\n" + "snowfall. In seasons without snow, such\n" + "as spring and summer, this POKéMON"); +const u8 DexDescription_Snorunt_2[] = _( + "steals away to live quietly among\n" + "stalactites and stalagmites deep in\n" + "caverns."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Glalie_1[] = _( + "GLALIE has the ability to freely\n" + "control ice. For example, it can\n" + "instantly freeze its foe solid."); +const u8 DexDescription_Glalie_2[] = _( + "After immobilizing its foe in ice, this\n" + "POKéMON enjoys eating it in leisurely\n" + "fashion."); +#else +const u8 DexDescription_Glalie_1[] = _( + "GLALIE has a body made of rock, which it\n" + "hardens with an armor of ice.\n" + "This POKéMON has the ability to freeze"); +const u8 DexDescription_Glalie_2[] = _( + "moisture in the atmosphere into any\n" + "shape it desires."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Spheal_1[] = _( + "SPHEAL always travels by rolling\n" + "around on its ball-like body. When the\n" + "season for ice floes arrives, this"); +const u8 DexDescription_Spheal_2[] = _( + "POKéMON can be seen rolling about on\n" + "ice and crossing the sea."); +#else +const u8 DexDescription_Spheal_1[] = _( + "SPHEAL is much faster rolling than \n" + "walking to get around. When groups of\n" + "this POKéMON eat, they all clap at once"); +const u8 DexDescription_Spheal_2[] = _( + "to show their pleasure. Because of this,\n" + "their mealtimes are noisy."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Sealeo_1[] = _( + "SEALEO often balances and rolls\n" + "things on the tip of its nose. While the\n" + "POKéMON is rolling something, it checks"); +const u8 DexDescription_Sealeo_2[] = _( + "the object’s aroma and texture to\n" + "determine whether it likes the object\n" + "or not."); +#else +const u8 DexDescription_Sealeo_1[] = _( + "SEALEO has the habit of always juggling\n" + "on the tip of its nose anything it sees\n" + "for the first time."); +const u8 DexDescription_Sealeo_2[] = _( + "This POKéMON occasionally entertains\n" + "itself by balancing and rolling a SPHEAL\n" + "on its nose."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Walrein_1[] = _( + "WALREIN swims all over in frigid\n" + "seawater while crushing icebergs with\n" + "its grand, imposing tusks."); +const u8 DexDescription_Walrein_2[] = _( + "Its thick layer of blubber makes enemy\n" + "attacks bounce off harmlessly."); +#else +const u8 DexDescription_Walrein_1[] = _( + "WALREIN’s two massively developed\n" + "tusks can totally shatter blocks of\n" + "ice weighing ten tons with one blow."); +const u8 DexDescription_Walrein_2[] = _( + "This POKéMON’s thick coat of blubber\n" + "insulates it from subzero temperatures."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Clamperl_1[] = _( + "CLAMPERL grows while being protected\n" + "by its rock-hard shell. When its body\n" + "becomes too large to fit inside the"); +const u8 DexDescription_Clamperl_2[] = _( + "shell, it is sure evidence that this\n" + "POKéMON is getting close to evolution."); +#else +const u8 DexDescription_Clamperl_1[] = _( + "CLAMPERL’s sturdy shell is not only good\n" + "for protection - it is also used for\n" + "clamping and catching prey."); +const u8 DexDescription_Clamperl_2[] = _( + "A fully grown CLAMPERL’s shell will be\n" + "scored with nicks and scratches all\n" + "over."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Huntail_1[] = _( + "HUNTAIL’s tail is shaped like a fish.\n" + "It uses the tail to attract prey, then\n" + "swallows the prey whole with its large,"); +const u8 DexDescription_Huntail_2[] = _( + "gaping mouth.\n" + "This POKéMON swims by wiggling its\n" + "slender body like a snake."); +#else +const u8 DexDescription_Huntail_1[] = _( + "HUNTAIL’s presence went unnoticed by\n" + "people for a long time because it lives\n" + "at extreme depths in the sea."); +const u8 DexDescription_Huntail_2[] = _( + "This POKéMON’s eyes can see clearly\n" + "even in the murky dark depths of the\n" + "ocean."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Gorebyss_1[] = _( + "Although GOREBYSS is the very picture\n" + "of elegance and beauty while swimming,\n" + "it is also cruel. When it spots prey, this"); +const u8 DexDescription_Gorebyss_2[] = _( + "POKéMON inserts its thin mouth into the\n" + "prey’s body and drains the prey of its\n" + "body fluids."); +#else +const u8 DexDescription_Gorebyss_1[] = _( + "GOREBYSS lives in the southern seas\n" + "at extreme depths. Its body is built to\n" + "withstand the enormous pressure of"); +const u8 DexDescription_Gorebyss_2[] = _( + "water at incredible depths. Because of\n" + "this, this POKéMON’s body is unharmed\n" + "by ordinary attacks."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Relicanth_1[] = _( + "RELICANTH is a rare species that was\n" + "discovered in deep-sea explorations.\n" + "This POKéMON’s body withstands the"); +const u8 DexDescription_Relicanth_2[] = _( + "enormous water pressure of the ocean\n" + "depths. Its body is covered in tough\n" + "scales that are like craggy rocks."); +#else +const u8 DexDescription_Relicanth_1[] = _( + "RELICANTH is a POKéMON species that\n" + "existed for a hundred million years\n" + "without ever changing its form."); +const u8 DexDescription_Relicanth_2[] = _( + "This ancient POKéMON feeds on\n" + "microscopic organisms with its\n" + "toothless mouth."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Luvdisc_1[] = _( + "LUVDISC’s heart-shaped body is a\n" + "symbol of love and romance.\n" + "It is said that any couple meeting this"); +const u8 DexDescription_Luvdisc_2[] = _( + "POKéMON is promised a loving\n" + "relationship that never ends."); +#else +const u8 DexDescription_Luvdisc_1[] = _( + "LUVDISC live in shallow seas in the\n" + "tropics. This heart-shaped POKéMON\n" + "earned its name by swimming after"); +const u8 DexDescription_Luvdisc_2[] = _( + "loving couples it spotted in the\n" + "ocean’s waves."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Bagon_1[] = _( + "BAGON harbors a never-ending dream of\n" + "one day soaring high among the clouds.\n" + "As if trying to dispel its frustration"); +const u8 DexDescription_Bagon_2[] = _( + "over its inability to fly, this POKéMON\n" + "slams its hard head against huge rocks\n" + "and shatters them into pebbles."); +#else +const u8 DexDescription_Bagon_1[] = _( + "BAGON has a dream of one day soaring\n" + "in the sky. In doomed efforts to fly,\n" + "this POKéMON hurls itself off cliffs."); +const u8 DexDescription_Bagon_2[] = _( + "As a result of its dives, its head has \n" + "grown tough and as hard as tempered\n" + "steel."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Shelgon_1[] = _( + "Covering SHELGON’s body are outgrowths\n" + "much like bones. The shell is very hard\n" + "and bounces off enemy attacks."); +const u8 DexDescription_Shelgon_2[] = _( + "When awaiting evolution, this POKéMON\n" + "hides away in a cavern."); +#else +const u8 DexDescription_Shelgon_1[] = _( + "Inside SHELGON’s armor-like shell, cells\n" + "are in the midst of transformation\n" + "to create an entirely new body."); +const u8 DexDescription_Shelgon_2[] = _( + "This POKéMON’s shell is extremely heavy,\n" + "making its movements sluggish."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Salamence_1[] = _( + "By evolving into SALAMENCE, this\n" + "POKéMON finally realizes its long-held\n" + "dream of growing wings."); +const u8 DexDescription_Salamence_2[] = _( + "To express its joy, it flies and wheels\n" + "all over the sky while spouting flames\n" + "from its mouth."); +#else +const u8 DexDescription_Salamence_1[] = _( + "SALAMENCE came about as a result of a\n" + "strong, long-held dream of growing\n" + "wings. It is said that this powerful"); +const u8 DexDescription_Salamence_2[] = _( + "desire triggered a sudden mutation in\n" + "this POKéMON’s cells, causing it to\n" + "sprout its magnificent wings."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Beldum_1[] = _( + "BELDUM keeps itself floating by\n" + "generating a magnetic force that\n" + "repels earth’s natural magnetism."); +const u8 DexDescription_Beldum_2[] = _( + "When it sleeps, this POKéMON anchors\n" + "itself to a cliff using the hooks on\n" + "its rear."); +#else +const u8 DexDescription_Beldum_1[] = _( + "Instead of blood, a powerful magnetic\n" + "force courses throughout BELDUM’s\n" + "body. This POKéMON communicates with"); +const u8 DexDescription_Beldum_2[] = _( + "others by sending controlled pulses of\n" + "magnetism."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Metang_1[] = _( + "When two BELDUM fuse together, METANG\n" + "is formed. The brains of the BELDUM are\n" + "joined by a magnetic nervous system."); +const u8 DexDescription_Metang_2[] = _( + "This POKéMON turns its arms to the rear\n" + "for traveling at high speed."); +#else +const u8 DexDescription_Metang_1[] = _( + "When two BELDUM fuse together, METANG\n" + "is formed. The brains of the BELDUM are\n" + "joined by a magnetic nervous system."); +const u8 DexDescription_Metang_2[] = _( + "By linking its brains magnetically,\n" + "this POKéMON generates strong\n" + "psychokinetic power."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Metagross_1[] = _( + "METAGROSS is the result of two METANG\n" + "achieving fusion. When hunting, this\n" + "POKéMON pins the prey to the ground"); +const u8 DexDescription_Metagross_2[] = _( + "under its massive body. It then eats\n" + "the helpless victim using the large \n" + "mouth on its stomach."); +#else +const u8 DexDescription_Metagross_1[] = _( + "METAGROSS has four brains in total.\n" + "Combined, the four brains can breeze\n" + "through difficult calculations faster"); +const u8 DexDescription_Metagross_2[] = _( + "than a supercomputer.\n" + "This POKéMON can float in the air by\n" + "tucking in its four legs."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Regirock_1[] = _( + "REGIROCK’s body is composed entirely of\n" + "rocks. Recently, a study made the\n" + "startling discovery that the rocks"); +const u8 DexDescription_Regirock_2[] = _( + "were all unearthed from different\n" + "locations."); +#else +const u8 DexDescription_Regirock_1[] = _( + "REGIROCK was sealed away by people\n" + "long ago. If this POKéMON’s body is\n" + "damaged in battle, it is said to seek"); +const u8 DexDescription_Regirock_2[] = _( + "out suitable rocks on its own to repair\n" + "itself."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Regice_1[] = _( + "REGICE cloaks itself with frigid air of\n" + "negative 328 degrees F.\n" + "Things will freeze solid just by going"); +const u8 DexDescription_Regice_2[] = _( + "near this POKéMON.\n" + "Its icy body is so cold, it will not melt\n" + "even if it is immersed in magma."); +#else +const u8 DexDescription_Regice_1[] = _( + "REGICE’s body was made during an ice\n" + "age. The deep-frozen body can’t be\n" + "melted, even by fire."); +const u8 DexDescription_Regice_2[] = _( + "This POKéMON controls frigid air of\n" + "minus 328 degrees F."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Registeel_1[] = _( + "REGISTEEL was imprisoned by people\n" + "in ancient times.\n" + "The metal composing its body is thought"); +const u8 DexDescription_Registeel_2[] = _( + "to be a curious substance that is not\n" + "of this earth."); +#else +const u8 DexDescription_Registeel_1[] = _( + "REGISTEEL has a body that is harder\n" + "than any kind of metal.\n" + "Its body is apparently hollow."); +const u8 DexDescription_Registeel_2[] = _( + "No one has any idea what this POKéMON\n" + "eats."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Latias_1[] = _( + "LATIAS is highly intelligent and capable\n" + "of understanding human speech.\n" + "It is covered with a glass-like down."); +const u8 DexDescription_Latias_2[] = _( + "The POKéMON enfolds its body with its\n" + "down and refracts light to alter its\n" + "appearance."); +#else +const u8 DexDescription_Latias_1[] = _( + "LATIAS is highly sensitive to the\n" + "emotions of people. If it senses any\n" + "hostility, this POKéMON ruffles the"); +const u8 DexDescription_Latias_2[] = _( + "feathers all over its body and cries\n" + "shrilly to intimidate the foe."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Latios_1[] = _( + "LATIOS will only open its heart to a\n" + "TRAINER with a compassionate spirit.\n" + "This POKéMON can fly faster than a jet"); +const u8 DexDescription_Latios_2[] = _( + "plane by folding its forelegs to minimize\n" + "air resistance."); +#else +const u8 DexDescription_Latios_1[] = _( + "LATIOS has the ability to make its foe\n" + "see an image of what it has seen or\n" + "imagines in its head."); +const u8 DexDescription_Latios_2[] = _( + "This POKéMON is intelligent and\n" + "understands human speech."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Kyogre_1[] = _( + "KYOGRE is named in mythology as the\n" + "POKéMON that expanded the sea by\n" + "covering the land with torrential rains"); +const u8 DexDescription_Kyogre_2[] = _( + "and towering tidal waves.\n" + "It took to sleep after a cataclysmic\n" + "battle with GROUDON."); +#else +const u8 DexDescription_Kyogre_1[] = _( + "KYOGRE has the power to create massive\n" + "rain clouds that cover the entire sky\n" + "and bring about torrential downpours."); +const u8 DexDescription_Kyogre_2[] = _( + "This POKéMON saved people who were\n" + "suffering from droughts."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Groudon_1[] = _( + "GROUDON has the power to scatter rain\n" + "clouds and make water evaporate with\n" + "light and heat."); +const u8 DexDescription_Groudon_2[] = _( + "It came as a savior to people who had\n" + "been suffering from terrible floods."); +#else +const u8 DexDescription_Groudon_1[] = _( + "GROUDON has long been described in \n" + "mythology as the POKéMON that raised\n" + "lands and expanded continents."); +const u8 DexDescription_Groudon_2[] = _( + "This POKéMON took to sleep after a\n" + "cataclysmic battle with KYOGRE."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Rayquaza_1[] = _( + "RAYQUAZA is said to have lived for\n" + "hundreds of millions of years in the\n" + "earth’s ozone layer, above the clouds."); +const u8 DexDescription_Rayquaza_2[] = _( + "Its existence had been completely\n" + "unknown because it lived so high in\n" + "the sky."); +#else +const u8 DexDescription_Rayquaza_1[] = _( + "RAYQUAZA lived for hundreds of millions\n" + "of years in the earth’s ozone layer, \n" + "never descending to the ground."); +const u8 DexDescription_Rayquaza_2[] = _( + "This POKéMON appears to feed on water\n" + "and particles in the atmosphere."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Jirachi_1[] = _( + "JIRACHI will awaken from its sleep of\n" + "a thousand years if you sing to it in a\n" + "voice of purity."); +const u8 DexDescription_Jirachi_2[] = _( + "It is said to make true any wish that\n" + "people desire."); +#else +const u8 DexDescription_Jirachi_1[] = _( + "A legend states that JIRACHI will make\n" + "true any wish that is written on notes\n" + "attached to its head when it awakens."); +const u8 DexDescription_Jirachi_2[] = _( + "If this POKéMON senses danger, it will\n" + "fight without awakening."); +#endif + +#ifdef SAPPHIRE +const u8 DexDescription_Deoxys_1[] = _( + "DEOXYS emerged from a virus that came\n" + "from space. It is highly intelligent and\n" + "wields psychokinetic powers."); +const u8 DexDescription_Deoxys_2[] = _( + "This POKéMON shoots lasers from the\n" + "crystalline organ on its chest."); +#else +const u8 DexDescription_Deoxys_1[] = _( + "The DNA of a space virus underwent a\n" + "sudden mutation upon exposure to a\n" + "laser beam and resulted in DEOXYS."); +const u8 DexDescription_Deoxys_2[] = _( + "The crystalline organ on this POKéMON’s\n" + "chest appears to be its brain."); +#endif + +const struct PokedexEntry gPokedexEntries[] = +{ + { //Dummy + .categoryName = _("UNKNOWN"), + .height = 0, + .weight = 0, + .descriptionPage1 = DexDescription_Dummy_1, + .descriptionPage2 = DexDescription_Dummy_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Bulbasaur + .categoryName = _("SEED"), + .height = 7, + .weight = 69, + .descriptionPage1 = DexDescription_Bulbasaur_1, + .descriptionPage2 = DexDescription_Bulbasaur_2, + .pokemonScale = 356, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Ivysaur + .categoryName = _("SEED"), + .height = 10, + .weight = 130, + .descriptionPage1 = DexDescription_Ivysaur_1, + .descriptionPage2 = DexDescription_Ivysaur_2, + .pokemonScale = 335, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Venusaur + .categoryName = _("SEED"), + .height = 20, + .weight = 1000, + .descriptionPage1 = DexDescription_Venusaur_1, + .descriptionPage2 = DexDescription_Venusaur_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 388, + .trainerOffset = 6, + }, + { //Charmander + .categoryName = _("LIZARD"), + .height = 6, + .weight = 85, + .descriptionPage1 = DexDescription_Charmander_1, + .descriptionPage2 = DexDescription_Charmander_2, + .pokemonScale = 444, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Charmeleon + .categoryName = _("FLAME"), + .height = 11, + .weight = 190, + .descriptionPage1 = DexDescription_Charmeleon_1, + .descriptionPage2 = DexDescription_Charmeleon_2, + .pokemonScale = 302, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Charizard + .categoryName = _("FLAME"), + .height = 17, + .weight = 905, + .descriptionPage1 = DexDescription_Charizard_1, + .descriptionPage2 = DexDescription_Charizard_2, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 302, + .trainerOffset = 3, + }, + { //Squirtle + .categoryName = _("TINY TURTLE"), + .height = 5, + .weight = 90, + .descriptionPage1 = DexDescription_Squirtle_1, + .descriptionPage2 = DexDescription_Squirtle_2, + .pokemonScale = 412, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Wartortle + .categoryName = _("TURTLE"), + .height = 10, + .weight = 225, + .descriptionPage1 = DexDescription_Wartortle_1, + .descriptionPage2 = DexDescription_Wartortle_2, + .pokemonScale = 332, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Blastoise + .categoryName = _("SHELLFISH"), + .height = 16, + .weight = 855, + .descriptionPage1 = DexDescription_Blastoise_1, + .descriptionPage2 = DexDescription_Blastoise_2, + .pokemonScale = 256, + .pokemonOffset = -1, + .trainerScale = 293, + .trainerOffset = 2, + }, + { //Caterpie + .categoryName = _("WORM"), + .height = 3, + .weight = 29, + .descriptionPage1 = DexDescription_Caterpie_1, + .descriptionPage2 = DexDescription_Caterpie_2, + .pokemonScale = 549, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Metapod + .categoryName = _("COCOON"), + .height = 7, + .weight = 99, + .descriptionPage1 = DexDescription_Metapod_1, + .descriptionPage2 = DexDescription_Metapod_2, + .pokemonScale = 350, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Butterfree + .categoryName = _("BUTTERFLY"), + .height = 11, + .weight = 320, + .descriptionPage1 = DexDescription_Butterfree_1, + .descriptionPage2 = DexDescription_Butterfree_2, + .pokemonScale = 312, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Weedle + .categoryName = _("HAIRY BUG"), + .height = 3, + .weight = 32, + .descriptionPage1 = DexDescription_Weedle_1, + .descriptionPage2 = DexDescription_Weedle_2, + .pokemonScale = 455, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Kakuna + .categoryName = _("COCOON"), + .height = 6, + .weight = 100, + .descriptionPage1 = DexDescription_Kakuna_1, + .descriptionPage2 = DexDescription_Kakuna_2, + .pokemonScale = 424, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Beedrill + .categoryName = _("POISON BEE"), + .height = 10, + .weight = 295, + .descriptionPage1 = DexDescription_Beedrill_1, + .descriptionPage2 = DexDescription_Beedrill_2, + .pokemonScale = 366, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Pidgey + .categoryName = _("TINY BIRD"), + .height = 3, + .weight = 18, + .descriptionPage1 = DexDescription_Pidgey_1, + .descriptionPage2 = DexDescription_Pidgey_2, + .pokemonScale = 508, + .pokemonOffset = -3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Pidgeotto + .categoryName = _("BIRD"), + .height = 11, + .weight = 300, + .descriptionPage1 = DexDescription_Pidgeotto_1, + .descriptionPage2 = DexDescription_Pidgeotto_2, + .pokemonScale = 331, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Pidgeot + .categoryName = _("BIRD"), + .height = 15, + .weight = 395, + .descriptionPage1 = DexDescription_Pidgeot_1, + .descriptionPage2 = DexDescription_Pidgeot_2, + .pokemonScale = 269, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Rattata + .categoryName = _("MOUSE"), + .height = 3, + .weight = 35, + .descriptionPage1 = DexDescription_Rattata_1, + .descriptionPage2 = DexDescription_Rattata_2, + .pokemonScale = 481, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Raticate + .categoryName = _("MOUSE"), + .height = 7, + .weight = 185, + .descriptionPage1 = DexDescription_Raticate_1, + .descriptionPage2 = DexDescription_Raticate_2, + .pokemonScale = 459, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Spearow + .categoryName = _("TINY BIRD"), + .height = 3, + .weight = 20, + .descriptionPage1 = DexDescription_Spearow_1, + .descriptionPage2 = DexDescription_Spearow_2, + .pokemonScale = 571, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Fearow + .categoryName = _("BEAK"), + .height = 12, + .weight = 380, + .descriptionPage1 = DexDescription_Fearow_1, + .descriptionPage2 = DexDescription_Fearow_2, + .pokemonScale = 278, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Ekans + .categoryName = _("SNAKE"), + .height = 20, + .weight = 69, + .descriptionPage1 = DexDescription_Ekans_1, + .descriptionPage2 = DexDescription_Ekans_2, + .pokemonScale = 298, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Arbok + .categoryName = _("COBRA"), + .height = 35, + .weight = 650, + .descriptionPage1 = DexDescription_Arbok_1, + .descriptionPage2 = DexDescription_Arbok_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 296, + .trainerOffset = 2, + }, + { //Pikachu + .categoryName = _("MOUSE"), + .height = 4, + .weight = 60, + .descriptionPage1 = DexDescription_Pikachu_1, + .descriptionPage2 = DexDescription_Pikachu_2, + .pokemonScale = 479, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Raichu + .categoryName = _("MOUSE"), + .height = 8, + .weight = 300, + .descriptionPage1 = DexDescription_Raichu_1, + .descriptionPage2 = DexDescription_Raichu_2, + .pokemonScale = 426, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Sandshrew + .categoryName = _("MOUSE"), + .height = 6, + .weight = 120, + .descriptionPage1 = DexDescription_Sandshrew_1, + .descriptionPage2 = DexDescription_Sandshrew_2, + .pokemonScale = 365, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Sandslash + .categoryName = _("MOUSE"), + .height = 10, + .weight = 295, + .descriptionPage1 = DexDescription_Sandslash_1, + .descriptionPage2 = DexDescription_Sandslash_2, + .pokemonScale = 341, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //NidoranF + .categoryName = _("POISON PIN"), + .height = 4, + .weight = 70, + .descriptionPage1 = DexDescription_NidoranF_1, + .descriptionPage2 = DexDescription_NidoranF_2, + .pokemonScale = 488, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Nidorina + .categoryName = _("POISON PIN"), + .height = 8, + .weight = 200, + .descriptionPage1 = DexDescription_Nidorina_1, + .descriptionPage2 = DexDescription_Nidorina_2, + .pokemonScale = 381, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Nidoqueen + .categoryName = _("DRILL"), + .height = 13, + .weight = 600, + .descriptionPage1 = DexDescription_Nidoqueen_1, + .descriptionPage2 = DexDescription_Nidoqueen_2, + .pokemonScale = 293, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //NidoranM + .categoryName = _("POISON PIN"), + .height = 5, + .weight = 90, + .descriptionPage1 = DexDescription_NidoranM_1, + .descriptionPage2 = DexDescription_NidoranM_2, + .pokemonScale = 511, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Nidorino + .categoryName = _("POISON PIN"), + .height = 9, + .weight = 195, + .descriptionPage1 = DexDescription_Nidorino_1, + .descriptionPage2 = DexDescription_Nidorino_2, + .pokemonScale = 408, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Nidoking + .categoryName = _("DRILL"), + .height = 14, + .weight = 620, + .descriptionPage1 = DexDescription_Nidoking_1, + .descriptionPage2 = DexDescription_Nidoking_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Clefairy + .categoryName = _("FAIRY"), + .height = 6, + .weight = 75, + .descriptionPage1 = DexDescription_Clefairy_1, + .descriptionPage2 = DexDescription_Clefairy_2, + .pokemonScale = 441, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Clefable + .categoryName = _("FAIRY"), + .height = 13, + .weight = 400, + .descriptionPage1 = DexDescription_Clefable_1, + .descriptionPage2 = DexDescription_Clefable_2, + .pokemonScale = 256, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Vulpix + .categoryName = _("FOX"), + .height = 6, + .weight = 99, + .descriptionPage1 = DexDescription_Vulpix_1, + .descriptionPage2 = DexDescription_Vulpix_2, + .pokemonScale = 542, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Ninetales + .categoryName = _("FOX"), + .height = 11, + .weight = 199, + .descriptionPage1 = DexDescription_Ninetales_1, + .descriptionPage2 = DexDescription_Ninetales_2, + .pokemonScale = 339, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Jigglypuff + .categoryName = _("BALLOON"), + .height = 5, + .weight = 55, + .descriptionPage1 = DexDescription_Jigglypuff_1, + .descriptionPage2 = DexDescription_Jigglypuff_2, + .pokemonScale = 433, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Wigglytuff + .categoryName = _("BALLOON"), + .height = 10, + .weight = 120, + .descriptionPage1 = DexDescription_Wigglytuff_1, + .descriptionPage2 = DexDescription_Wigglytuff_2, + .pokemonScale = 328, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Zubat + .categoryName = _("BAT"), + .height = 8, + .weight = 75, + .descriptionPage1 = DexDescription_Zubat_1, + .descriptionPage2 = DexDescription_Zubat_2, + .pokemonScale = 362, + .pokemonOffset = -5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Golbat + .categoryName = _("BAT"), + .height = 16, + .weight = 550, + .descriptionPage1 = DexDescription_Golbat_1, + .descriptionPage2 = DexDescription_Golbat_2, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Oddish + .categoryName = _("WEED"), + .height = 5, + .weight = 54, + .descriptionPage1 = DexDescription_Oddish_1, + .descriptionPage2 = DexDescription_Oddish_2, + .pokemonScale = 423, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Gloom + .categoryName = _("WEED"), + .height = 8, + .weight = 86, + .descriptionPage1 = DexDescription_Gloom_1, + .descriptionPage2 = DexDescription_Gloom_2, + .pokemonScale = 329, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Vileplume + .categoryName = _("FLOWER"), + .height = 12, + .weight = 186, + .descriptionPage1 = DexDescription_Vileplume_1, + .descriptionPage2 = DexDescription_Vileplume_2, + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Paras + .categoryName = _("MUSHROOM"), + .height = 3, + .weight = 54, + .descriptionPage1 = DexDescription_Paras_1, + .descriptionPage2 = DexDescription_Paras_2, + .pokemonScale = 593, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Parasect + .categoryName = _("MUSHROOM"), + .height = 10, + .weight = 295, + .descriptionPage1 = DexDescription_Parasect_1, + .descriptionPage2 = DexDescription_Parasect_2, + .pokemonScale = 307, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Venonat + .categoryName = _("INSECT"), + .height = 10, + .weight = 300, + .descriptionPage1 = DexDescription_Venonat_1, + .descriptionPage2 = DexDescription_Venonat_2, + .pokemonScale = 360, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = -1, + }, + { //Venomoth + .categoryName = _("POISON MOTH"), + .height = 15, + .weight = 125, + .descriptionPage1 = DexDescription_Venomoth_1, + .descriptionPage2 = DexDescription_Venomoth_2, + .pokemonScale = 285, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 1, + }, + { //Diglett + .categoryName = _("MOLE"), + .height = 2, + .weight = 8, + .descriptionPage1 = DexDescription_Diglett_1, + .descriptionPage2 = DexDescription_Diglett_2, + .pokemonScale = 833, + .pokemonOffset = 25, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Dugtrio + .categoryName = _("MOLE"), + .height = 7, + .weight = 333, + .descriptionPage1 = DexDescription_Dugtrio_1, + .descriptionPage2 = DexDescription_Dugtrio_2, + .pokemonScale = 406, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Meowth + .categoryName = _("SCRATCH CAT"), + .height = 4, + .weight = 42, + .descriptionPage1 = DexDescription_Meowth_1, + .descriptionPage2 = DexDescription_Meowth_2, + .pokemonScale = 480, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Persian + .categoryName = _("CLASSY CAT"), + .height = 10, + .weight = 320, + .descriptionPage1 = DexDescription_Persian_1, + .descriptionPage2 = DexDescription_Persian_2, + .pokemonScale = 320, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Psyduck + .categoryName = _("DUCK"), + .height = 8, + .weight = 196, + .descriptionPage1 = DexDescription_Psyduck_1, + .descriptionPage2 = DexDescription_Psyduck_2, + .pokemonScale = 369, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Golduck + .categoryName = _("DUCK"), + .height = 17, + .weight = 766, + .descriptionPage1 = DexDescription_Golduck_1, + .descriptionPage2 = DexDescription_Golduck_2, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 273, + .trainerOffset = 1, + }, + { //Mankey + .categoryName = _("PIG MONKEY"), + .height = 5, + .weight = 280, + .descriptionPage1 = DexDescription_Mankey_1, + .descriptionPage2 = DexDescription_Mankey_2, + .pokemonScale = 404, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Primeape + .categoryName = _("PIG MONKEY"), + .height = 10, + .weight = 320, + .descriptionPage1 = DexDescription_Primeape_1, + .descriptionPage2 = DexDescription_Primeape_2, + .pokemonScale = 326, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Growlithe + .categoryName = _("PUPPY"), + .height = 7, + .weight = 190, + .descriptionPage1 = DexDescription_Growlithe_1, + .descriptionPage2 = DexDescription_Growlithe_2, + .pokemonScale = 346, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Arcanine + .categoryName = _("LEGENDARY"), + .height = 19, + .weight = 1550, + .descriptionPage1 = DexDescription_Arcanine_1, + .descriptionPage2 = DexDescription_Arcanine_2, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 312, + .trainerOffset = 4, + }, + { //Poliwag + .categoryName = _("TADPOLE"), + .height = 6, + .weight = 124, + .descriptionPage1 = DexDescription_Poliwag_1, + .descriptionPage2 = DexDescription_Poliwag_2, + .pokemonScale = 369, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Poliwhirl + .categoryName = _("TADPOLE"), + .height = 10, + .weight = 200, + .descriptionPage1 = DexDescription_Poliwhirl_1, + .descriptionPage2 = DexDescription_Poliwhirl_2, + .pokemonScale = 288, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Poliwrath + .categoryName = _("TADPOLE"), + .height = 13, + .weight = 540, + .descriptionPage1 = DexDescription_Poliwrath_1, + .descriptionPage2 = DexDescription_Poliwrath_2, + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Abra + .categoryName = _("PSI"), + .height = 9, + .weight = 195, + .descriptionPage1 = DexDescription_Abra_1, + .descriptionPage2 = DexDescription_Abra_2, + .pokemonScale = 363, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Kadabra + .categoryName = _("PSI"), + .height = 13, + .weight = 565, + .descriptionPage1 = DexDescription_Kadabra_1, + .descriptionPage2 = DexDescription_Kadabra_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Alakazam + .categoryName = _("PSI"), + .height = 15, + .weight = 480, + .descriptionPage1 = DexDescription_Alakazam_1, + .descriptionPage2 = DexDescription_Alakazam_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Machop + .categoryName = _("SUPERPOWER"), + .height = 8, + .weight = 195, + .descriptionPage1 = DexDescription_Machop_1, + .descriptionPage2 = DexDescription_Machop_2, + .pokemonScale = 342, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Machoke + .categoryName = _("SUPERPOWER"), + .height = 15, + .weight = 705, + .descriptionPage1 = DexDescription_Machoke_1, + .descriptionPage2 = DexDescription_Machoke_2, + .pokemonScale = 323, + .pokemonOffset = 9, + .trainerScale = 257, + .trainerOffset = 0, + }, + { //Machamp + .categoryName = _("SUPERPOWER"), + .height = 16, + .weight = 1300, + .descriptionPage1 = DexDescription_Machamp_1, + .descriptionPage2 = DexDescription_Machamp_2, + .pokemonScale = 280, + .pokemonOffset = 1, + .trainerScale = 269, + .trainerOffset = -1, + }, + { //Bellsprout + .categoryName = _("FLOWER"), + .height = 7, + .weight = 40, + .descriptionPage1 = DexDescription_Bellsprout_1, + .descriptionPage2 = DexDescription_Bellsprout_2, + .pokemonScale = 354, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Weepinbell + .categoryName = _("FLYCATCHER"), + .height = 10, + .weight = 64, + .descriptionPage1 = DexDescription_Weepinbell_1, + .descriptionPage2 = DexDescription_Weepinbell_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Victreebel + .categoryName = _("FLYCATCHER"), + .height = 17, + .weight = 155, + .descriptionPage1 = DexDescription_Victreebel_1, + .descriptionPage2 = DexDescription_Victreebel_2, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 312, + .trainerOffset = 3, + }, + { //Tentacool + .categoryName = _("JELLYFISH"), + .height = 9, + .weight = 455, + .descriptionPage1 = DexDescription_Tentacool_1, + .descriptionPage2 = DexDescription_Tentacool_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Tentacruel + .categoryName = _("JELLYFISH"), + .height = 16, + .weight = 550, + .descriptionPage1 = DexDescription_Tentacruel_1, + .descriptionPage2 = DexDescription_Tentacruel_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 312, + .trainerOffset = 1, + }, + { //Geodude + .categoryName = _("ROCK"), + .height = 4, + .weight = 200, + .descriptionPage1 = DexDescription_Geodude_1, + .descriptionPage2 = DexDescription_Geodude_2, + .pokemonScale = 347, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Graveler + .categoryName = _("ROCK"), + .height = 10, + .weight = 1050, + .descriptionPage1 = DexDescription_Graveler_1, + .descriptionPage2 = DexDescription_Graveler_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Golem + .categoryName = _("MEGATON"), + .height = 14, + .weight = 3000, + .descriptionPage1 = DexDescription_Golem_1, + .descriptionPage2 = DexDescription_Golem_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 296, + .trainerOffset = 2, + }, + { //Ponyta + .categoryName = _("FIRE HORSE"), + .height = 10, + .weight = 300, + .descriptionPage1 = DexDescription_Ponyta_1, + .descriptionPage2 = DexDescription_Ponyta_2, + .pokemonScale = 283, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Rapidash + .categoryName = _("FIRE HORSE"), + .height = 17, + .weight = 950, + .descriptionPage1 = DexDescription_Rapidash_1, + .descriptionPage2 = DexDescription_Rapidash_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 289, + .trainerOffset = 1, + }, + { //Slowpoke + .categoryName = _("DOPEY"), + .height = 12, + .weight = 360, + .descriptionPage1 = DexDescription_Slowpoke_1, + .descriptionPage2 = DexDescription_Slowpoke_2, + .pokemonScale = 256, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Slowbro + .categoryName = _("HERMIT CRAB"), + .height = 16, + .weight = 785, + .descriptionPage1 = DexDescription_Slowbro_1, + .descriptionPage2 = DexDescription_Slowbro_2, + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 296, + .trainerOffset = 2, + }, + { //Magnemite + .categoryName = _("MAGNET"), + .height = 3, + .weight = 60, + .descriptionPage1 = DexDescription_Magnemite_1, + .descriptionPage2 = DexDescription_Magnemite_2, + .pokemonScale = 288, + .pokemonOffset = -9, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Magneton + .categoryName = _("MAGNET"), + .height = 10, + .weight = 600, + .descriptionPage1 = DexDescription_Magneton_1, + .descriptionPage2 = DexDescription_Magneton_2, + .pokemonScale = 292, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Farfetchd + .categoryName = _("WILD DUCK"), + .height = 8, + .weight = 150, + .descriptionPage1 = DexDescription_Farfetchd_1, + .descriptionPage2 = DexDescription_Farfetchd_2, + .pokemonScale = 330, + .pokemonOffset = 2, + .trainerScale = 293, + .trainerOffset = 2, + }, + { //Doduo + .categoryName = _("TWIN BIRD"), + .height = 14, + .weight = 392, + .descriptionPage1 = DexDescription_Doduo_1, + .descriptionPage2 = DexDescription_Doduo_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 257, + .trainerOffset = -1, + }, + { //Dodrio + .categoryName = _("TRIPLE BIRD"), + .height = 18, + .weight = 852, + .descriptionPage1 = DexDescription_Dodrio_1, + .descriptionPage2 = DexDescription_Dodrio_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 268, + .trainerOffset = 0, + }, + { //Seel + .categoryName = _("SEA LION"), + .height = 11, + .weight = 900, + .descriptionPage1 = DexDescription_Seel_1, + .descriptionPage2 = DexDescription_Seel_2, + .pokemonScale = 297, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Dewgong + .categoryName = _("SEA LION"), + .height = 17, + .weight = 1200, + .descriptionPage1 = DexDescription_Dewgong_1, + .descriptionPage2 = DexDescription_Dewgong_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 275, + .trainerOffset = 0, + }, + { //Grimer + .categoryName = _("SLUDGE"), + .height = 9, + .weight = 300, + .descriptionPage1 = DexDescription_Grimer_1, + .descriptionPage2 = DexDescription_Grimer_2, + .pokemonScale = 258, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Muk + .categoryName = _("SLUDGE"), + .height = 12, + .weight = 300, + .descriptionPage1 = DexDescription_Muk_1, + .descriptionPage2 = DexDescription_Muk_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Shellder + .categoryName = _("BIVALVE"), + .height = 3, + .weight = 40, + .descriptionPage1 = DexDescription_Shellder_1, + .descriptionPage2 = DexDescription_Shellder_2, + .pokemonScale = 675, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Cloyster + .categoryName = _("BIVALVE"), + .height = 15, + .weight = 1325, + .descriptionPage1 = DexDescription_Cloyster_1, + .descriptionPage2 = DexDescription_Cloyster_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 269, + .trainerOffset = 1, + }, + { //Gastly + .categoryName = _("GAS"), + .height = 13, + .weight = 1, + .descriptionPage1 = DexDescription_Gastly_1, + .descriptionPage2 = DexDescription_Gastly_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Haunter + .categoryName = _("GAS"), + .height = 16, + .weight = 1, + .descriptionPage1 = DexDescription_Haunter_1, + .descriptionPage2 = DexDescription_Haunter_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 293, + .trainerOffset = 2, + }, + { //Gengar + .categoryName = _("SHADOW"), + .height = 15, + .weight = 405, + .descriptionPage1 = DexDescription_Gengar_1, + .descriptionPage2 = DexDescription_Gengar_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 302, + .trainerOffset = 2, + }, + { //Onix + .categoryName = _("ROCK SNAKE"), + .height = 88, + .weight = 2100, + .descriptionPage1 = DexDescription_Onix_1, + .descriptionPage2 = DexDescription_Onix_2, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 515, + .trainerOffset = 14, + }, + { //Drowzee + .categoryName = _("HYPNOSIS"), + .height = 10, + .weight = 324, + .descriptionPage1 = DexDescription_Drowzee_1, + .descriptionPage2 = DexDescription_Drowzee_2, + .pokemonScale = 274, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Hypno + .categoryName = _("HYPNOSIS"), + .height = 16, + .weight = 756, + .descriptionPage1 = DexDescription_Hypno_1, + .descriptionPage2 = DexDescription_Hypno_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 257, + .trainerOffset = 0, + }, + { //Krabby + .categoryName = _("RIVER CRAB"), + .height = 4, + .weight = 65, + .descriptionPage1 = DexDescription_Krabby_1, + .descriptionPage2 = DexDescription_Krabby_2, + .pokemonScale = 469, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Kingler + .categoryName = _("PINCER"), + .height = 13, + .weight = 600, + .descriptionPage1 = DexDescription_Kingler_1, + .descriptionPage2 = DexDescription_Kingler_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Voltorb + .categoryName = _("BALL"), + .height = 5, + .weight = 104, + .descriptionPage1 = DexDescription_Voltorb_1, + .descriptionPage2 = DexDescription_Voltorb_2, + .pokemonScale = 364, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Electrode + .categoryName = _("BALL"), + .height = 12, + .weight = 666, + .descriptionPage1 = DexDescription_Electrode_1, + .descriptionPage2 = DexDescription_Electrode_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Exeggcute + .categoryName = _("EGG"), + .height = 4, + .weight = 25, + .descriptionPage1 = DexDescription_Exeggcute_1, + .descriptionPage2 = DexDescription_Exeggcute_2, + .pokemonScale = 489, + .pokemonOffset = -4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Exeggutor + .categoryName = _("COCONUT"), + .height = 20, + .weight = 1200, + .descriptionPage1 = DexDescription_Exeggutor_1, + .descriptionPage2 = DexDescription_Exeggutor_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 5, + }, + { //Cubone + .categoryName = _("LONELY"), + .height = 4, + .weight = 65, + .descriptionPage1 = DexDescription_Cubone_1, + .descriptionPage2 = DexDescription_Cubone_2, + .pokemonScale = 545, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Marowak + .categoryName = _("BONE KEEPER"), + .height = 10, + .weight = 450, + .descriptionPage1 = DexDescription_Marowak_1, + .descriptionPage2 = DexDescription_Marowak_2, + .pokemonScale = 293, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Hitmonlee + .categoryName = _("KICKING"), + .height = 15, + .weight = 498, + .descriptionPage1 = DexDescription_Hitmonlee_1, + .descriptionPage2 = DexDescription_Hitmonlee_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 259, + .trainerOffset = 1, + }, + { //Hitmonchan + .categoryName = _("PUNCHING"), + .height = 14, + .weight = 502, + .descriptionPage1 = DexDescription_Hitmonchan_1, + .descriptionPage2 = DexDescription_Hitmonchan_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 277, + .trainerOffset = 2, + }, + { //Lickitung + .categoryName = _("LICKING"), + .height = 12, + .weight = 655, + .descriptionPage1 = DexDescription_Lickitung_1, + .descriptionPage2 = DexDescription_Lickitung_2, + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Koffing + .categoryName = _("POISON GAS"), + .height = 6, + .weight = 10, + .descriptionPage1 = DexDescription_Koffing_1, + .descriptionPage2 = DexDescription_Koffing_2, + .pokemonScale = 369, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Weezing + .categoryName = _("POISON GAS"), + .height = 12, + .weight = 95, + .descriptionPage1 = DexDescription_Weezing_1, + .descriptionPage2 = DexDescription_Weezing_2, + .pokemonScale = 305, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Rhyhorn + .categoryName = _("SPIKES"), + .height = 10, + .weight = 1150, + .descriptionPage1 = DexDescription_Rhyhorn_1, + .descriptionPage2 = DexDescription_Rhyhorn_2, + .pokemonScale = 267, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Rhydon + .categoryName = _("DRILL"), + .height = 19, + .weight = 1200, + .descriptionPage1 = DexDescription_Rhydon_1, + .descriptionPage2 = DexDescription_Rhydon_2, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 299, + .trainerOffset = 2, + }, + { //Chansey + .categoryName = _("EGG"), + .height = 11, + .weight = 346, + .descriptionPage1 = DexDescription_Chansey_1, + .descriptionPage2 = DexDescription_Chansey_2, + .pokemonScale = 257, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Tangela + .categoryName = _("VINE"), + .height = 10, + .weight = 350, + .descriptionPage1 = DexDescription_Tangela_1, + .descriptionPage2 = DexDescription_Tangela_2, + .pokemonScale = 304, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Kangaskhan + .categoryName = _("PARENT"), + .height = 22, + .weight = 800, + .descriptionPage1 = DexDescription_Kangaskhan_1, + .descriptionPage2 = DexDescription_Kangaskhan_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 387, + .trainerOffset = 8, + }, + { //Horsea + .categoryName = _("DRAGON"), + .height = 4, + .weight = 80, + .descriptionPage1 = DexDescription_Horsea_1, + .descriptionPage2 = DexDescription_Horsea_2, + .pokemonScale = 399, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Seadra + .categoryName = _("DRAGON"), + .height = 12, + .weight = 250, + .descriptionPage1 = DexDescription_Seadra_1, + .descriptionPage2 = DexDescription_Seadra_2, + .pokemonScale = 299, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Goldeen + .categoryName = _("GOLDFISH"), + .height = 6, + .weight = 150, + .descriptionPage1 = DexDescription_Goldeen_1, + .descriptionPage2 = DexDescription_Goldeen_2, + .pokemonScale = 379, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Seaking + .categoryName = _("GOLDFISH"), + .height = 13, + .weight = 390, + .descriptionPage1 = DexDescription_Seaking_1, + .descriptionPage2 = DexDescription_Seaking_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Staryu + .categoryName = _("STAR SHAPE"), + .height = 8, + .weight = 345, + .descriptionPage1 = DexDescription_Staryu_1, + .descriptionPage2 = DexDescription_Staryu_2, + .pokemonScale = 326, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Starmie + .categoryName = _("MYSTERIOUS"), + .height = 11, + .weight = 800, + .descriptionPage1 = DexDescription_Starmie_1, + .descriptionPage2 = DexDescription_Starmie_2, + .pokemonScale = 301, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Mrmime + .categoryName = _("BARRIER"), + .height = 13, + .weight = 545, + .descriptionPage1 = DexDescription_Mrmime_1, + .descriptionPage2 = DexDescription_Mrmime_2, + .pokemonScale = 258, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Scyther + .categoryName = _("MANTIS"), + .height = 15, + .weight = 560, + .descriptionPage1 = DexDescription_Scyther_1, + .descriptionPage2 = DexDescription_Scyther_2, + .pokemonScale = 256, + .pokemonOffset = 1, + .trainerScale = 293, + .trainerOffset = 2, + }, + { //Jynx + .categoryName = _("HUMAN SHAPE"), + .height = 14, + .weight = 406, + .descriptionPage1 = DexDescription_Jynx_1, + .descriptionPage2 = DexDescription_Jynx_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 300, + .trainerOffset = 1, + }, + { //Electabuzz + .categoryName = _("ELECTRIC"), + .height = 11, + .weight = 300, + .descriptionPage1 = DexDescription_Electabuzz_1, + .descriptionPage2 = DexDescription_Electabuzz_2, + .pokemonScale = 351, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Magmar + .categoryName = _("SPITFIRE"), + .height = 13, + .weight = 445, + .descriptionPage1 = DexDescription_Magmar_1, + .descriptionPage2 = DexDescription_Magmar_2, + .pokemonScale = 277, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Pinsir + .categoryName = _("STAG BEETLE"), + .height = 15, + .weight = 550, + .descriptionPage1 = DexDescription_Pinsir_1, + .descriptionPage2 = DexDescription_Pinsir_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 257, + .trainerOffset = 0, + }, + { //Tauros + .categoryName = _("WILD BULL"), + .height = 14, + .weight = 884, + .descriptionPage1 = DexDescription_Tauros_1, + .descriptionPage2 = DexDescription_Tauros_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Magikarp + .categoryName = _("FISH"), + .height = 9, + .weight = 100, + .descriptionPage1 = DexDescription_Magikarp_1, + .descriptionPage2 = DexDescription_Magikarp_2, + .pokemonScale = 310, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Gyarados + .categoryName = _("ATROCIOUS"), + .height = 65, + .weight = 2350, + .descriptionPage1 = DexDescription_Gyarados_1, + .descriptionPage2 = DexDescription_Gyarados_2, + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 481, + .trainerOffset = 13, + }, + { //Lapras + .categoryName = _("TRANSPORT"), + .height = 25, + .weight = 2200, + .descriptionPage1 = DexDescription_Lapras_1, + .descriptionPage2 = DexDescription_Lapras_2, + .pokemonScale = 257, + .pokemonOffset = 10, + .trainerScale = 423, + .trainerOffset = 8, + }, + { //Ditto + .categoryName = _("TRANSFORM"), + .height = 3, + .weight = 40, + .descriptionPage1 = DexDescription_Ditto_1, + .descriptionPage2 = DexDescription_Ditto_2, + .pokemonScale = 633, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Eevee + .categoryName = _("EVOLUTION"), + .height = 3, + .weight = 65, + .descriptionPage1 = DexDescription_Eevee_1, + .descriptionPage2 = DexDescription_Eevee_2, + .pokemonScale = 476, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Vaporeon + .categoryName = _("BUBBLE JET"), + .height = 10, + .weight = 290, + .descriptionPage1 = DexDescription_Vaporeon_1, + .descriptionPage2 = DexDescription_Vaporeon_2, + .pokemonScale = 316, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Jolteon + .categoryName = _("LIGHTNING"), + .height = 8, + .weight = 245, + .descriptionPage1 = DexDescription_Jolteon_1, + .descriptionPage2 = DexDescription_Jolteon_2, + .pokemonScale = 283, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Flareon + .categoryName = _("FLAME"), + .height = 9, + .weight = 250, + .descriptionPage1 = DexDescription_Flareon_1, + .descriptionPage2 = DexDescription_Flareon_2, + .pokemonScale = 306, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Porygon + .categoryName = _("VIRTUAL"), + .height = 8, + .weight = 365, + .descriptionPage1 = DexDescription_Porygon_1, + .descriptionPage2 = DexDescription_Porygon_2, + .pokemonScale = 328, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Omanyte + .categoryName = _("SPIRAL"), + .height = 4, + .weight = 75, + .descriptionPage1 = DexDescription_Omanyte_1, + .descriptionPage2 = DexDescription_Omanyte_2, + .pokemonScale = 521, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Omastar + .categoryName = _("SPIRAL"), + .height = 10, + .weight = 350, + .descriptionPage1 = DexDescription_Omastar_1, + .descriptionPage2 = DexDescription_Omastar_2, + .pokemonScale = 307, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Kabuto + .categoryName = _("SHELLFISH"), + .height = 5, + .weight = 115, + .descriptionPage1 = DexDescription_Kabuto_1, + .descriptionPage2 = DexDescription_Kabuto_2, + .pokemonScale = 454, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Kabutops + .categoryName = _("SHELLFISH"), + .height = 13, + .weight = 405, + .descriptionPage1 = DexDescription_Kabutops_1, + .descriptionPage2 = DexDescription_Kabutops_2, + .pokemonScale = 271, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Aerodactyl + .categoryName = _("FOSSIL"), + .height = 18, + .weight = 590, + .descriptionPage1 = DexDescription_Aerodactyl_1, + .descriptionPage2 = DexDescription_Aerodactyl_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 302, + .trainerOffset = 4, + }, + { //Snorlax + .categoryName = _("SLEEPING"), + .height = 21, + .weight = 4600, + .descriptionPage1 = DexDescription_Snorlax_1, + .descriptionPage2 = DexDescription_Snorlax_2, + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 423, + .trainerOffset = 11, + }, + { //Articuno + .categoryName = _("FREEZE"), + .height = 17, + .weight = 554, + .descriptionPage1 = DexDescription_Articuno_1, + .descriptionPage2 = DexDescription_Articuno_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 2, + }, + { //Zapdos + .categoryName = _("ELECTRIC"), + .height = 16, + .weight = 526, + .descriptionPage1 = DexDescription_Zapdos_1, + .descriptionPage2 = DexDescription_Zapdos_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 318, + .trainerOffset = 3, + }, + { //Moltres + .categoryName = _("FLAME"), + .height = 20, + .weight = 600, + .descriptionPage1 = DexDescription_Moltres_1, + .descriptionPage2 = DexDescription_Moltres_2, + .pokemonScale = 270, + .pokemonOffset = 0, + .trainerScale = 387, + .trainerOffset = 8, + }, + { //Dratini + .categoryName = _("DRAGON"), + .height = 18, + .weight = 33, + .descriptionPage1 = DexDescription_Dratini_1, + .descriptionPage2 = DexDescription_Dratini_2, + .pokemonScale = 256, + .pokemonOffset = 8, + .trainerScale = 386, + .trainerOffset = 6, + }, + { //Dragonair + .categoryName = _("DRAGON"), + .height = 40, + .weight = 165, + .descriptionPage1 = DexDescription_Dragonair_1, + .descriptionPage2 = DexDescription_Dragonair_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 411, + .trainerOffset = 5, + }, + { //Dragonite + .categoryName = _("DRAGON"), + .height = 22, + .weight = 2100, + .descriptionPage1 = DexDescription_Dragonite_1, + .descriptionPage2 = DexDescription_Dragonite_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 4, + }, + { //Mewtwo + .categoryName = _("GENETIC"), + .height = 20, + .weight = 1220, + .descriptionPage1 = DexDescription_Mewtwo_1, + .descriptionPage2 = DexDescription_Mewtwo_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 4, + }, + { //Mew + .categoryName = _("NEW SPECIES"), + .height = 4, + .weight = 40, + .descriptionPage1 = DexDescription_Mew_1, + .descriptionPage2 = DexDescription_Mew_2, + .pokemonScale = 457, + .pokemonOffset = -2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Chikorita + .categoryName = _("LEAF"), + .height = 9, + .weight = 64, + .descriptionPage1 = DexDescription_Chikorita_1, + .descriptionPage2 = DexDescription_Chikorita_2, + .pokemonScale = 512, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Bayleef + .categoryName = _("LEAF"), + .height = 12, + .weight = 158, + .descriptionPage1 = DexDescription_Bayleef_1, + .descriptionPage2 = DexDescription_Bayleef_2, + .pokemonScale = 296, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Meganium + .categoryName = _("HERB"), + .height = 18, + .weight = 1005, + .descriptionPage1 = DexDescription_Meganium_1, + .descriptionPage2 = DexDescription_Meganium_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 277, + .trainerOffset = 1, + }, + { //Cyndaquil + .categoryName = _("FIRE MOUSE"), + .height = 5, + .weight = 79, + .descriptionPage1 = DexDescription_Cyndaquil_1, + .descriptionPage2 = DexDescription_Cyndaquil_2, + .pokemonScale = 539, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Quilava + .categoryName = _("VOLCANO"), + .height = 9, + .weight = 190, + .descriptionPage1 = DexDescription_Quilava_1, + .descriptionPage2 = DexDescription_Quilava_2, + .pokemonScale = 329, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Typhlosion + .categoryName = _("VOLCANO"), + .height = 17, + .weight = 795, + .descriptionPage1 = DexDescription_Typhlosion_1, + .descriptionPage2 = DexDescription_Typhlosion_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 268, + .trainerOffset = 1, + }, + { //Totodile + .categoryName = _("BIG JAW"), + .height = 6, + .weight = 95, + .descriptionPage1 = DexDescription_Totodile_1, + .descriptionPage2 = DexDescription_Totodile_2, + .pokemonScale = 487, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Croconaw + .categoryName = _("BIG JAW"), + .height = 11, + .weight = 250, + .descriptionPage1 = DexDescription_Croconaw_1, + .descriptionPage2 = DexDescription_Croconaw_2, + .pokemonScale = 378, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Feraligatr + .categoryName = _("BIG JAW"), + .height = 23, + .weight = 888, + .descriptionPage1 = DexDescription_Feraligatr_1, + .descriptionPage2 = DexDescription_Feraligatr_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 342, + .trainerOffset = 7, + }, + { //Sentret + .categoryName = _("SCOUT"), + .height = 8, + .weight = 60, + .descriptionPage1 = DexDescription_Sentret_1, + .descriptionPage2 = DexDescription_Sentret_2, + .pokemonScale = 439, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Furret + .categoryName = _("LONG BODY"), + .height = 18, + .weight = 325, + .descriptionPage1 = DexDescription_Furret_1, + .descriptionPage2 = DexDescription_Furret_2, + .pokemonScale = 346, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Hoothoot + .categoryName = _("OWL"), + .height = 7, + .weight = 212, + .descriptionPage1 = DexDescription_Hoothoot_1, + .descriptionPage2 = DexDescription_Hoothoot_2, + .pokemonScale = 380, + .pokemonOffset = -2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Noctowl + .categoryName = _("OWL"), + .height = 16, + .weight = 408, + .descriptionPage1 = DexDescription_Noctowl_1, + .descriptionPage2 = DexDescription_Noctowl_2, + .pokemonScale = 278, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Ledyba + .categoryName = _("FIVE STAR"), + .height = 10, + .weight = 108, + .descriptionPage1 = DexDescription_Ledyba_1, + .descriptionPage2 = DexDescription_Ledyba_2, + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Ledian + .categoryName = _("FIVE STAR"), + .height = 14, + .weight = 356, + .descriptionPage1 = DexDescription_Ledian_1, + .descriptionPage2 = DexDescription_Ledian_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Spinarak + .categoryName = _("STRING SPIT"), + .height = 5, + .weight = 85, + .descriptionPage1 = DexDescription_Spinarak_1, + .descriptionPage2 = DexDescription_Spinarak_2, + .pokemonScale = 414, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Ariados + .categoryName = _("LONG LEG"), + .height = 11, + .weight = 335, + .descriptionPage1 = DexDescription_Ariados_1, + .descriptionPage2 = DexDescription_Ariados_2, + .pokemonScale = 316, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Crobat + .categoryName = _("BAT"), + .height = 18, + .weight = 750, + .descriptionPage1 = DexDescription_Crobat_1, + .descriptionPage2 = DexDescription_Crobat_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 281, + .trainerOffset = 1, + }, + { //Chinchou + .categoryName = _("ANGLER"), + .height = 5, + .weight = 120, + .descriptionPage1 = DexDescription_Chinchou_1, + .descriptionPage2 = DexDescription_Chinchou_2, + .pokemonScale = 424, + .pokemonOffset = -2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Lanturn + .categoryName = _("LIGHT"), + .height = 12, + .weight = 225, + .descriptionPage1 = DexDescription_Lanturn_1, + .descriptionPage2 = DexDescription_Lanturn_2, + .pokemonScale = 269, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Pichu + .categoryName = _("TINY MOUSE"), + .height = 3, + .weight = 20, + .descriptionPage1 = DexDescription_Pichu_1, + .descriptionPage2 = DexDescription_Pichu_2, + .pokemonScale = 508, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Cleffa + .categoryName = _("STAR SHAPE"), + .height = 3, + .weight = 30, + .descriptionPage1 = DexDescription_Cleffa_1, + .descriptionPage2 = DexDescription_Cleffa_2, + .pokemonScale = 462, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Igglybuff + .categoryName = _("BALLOON"), + .height = 3, + .weight = 10, + .descriptionPage1 = DexDescription_Igglybuff_1, + .descriptionPage2 = DexDescription_Igglybuff_2, + .pokemonScale = 457, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Togepi + .categoryName = _("SPIKE BALL"), + .height = 3, + .weight = 15, + .descriptionPage1 = DexDescription_Togepi_1, + .descriptionPage2 = DexDescription_Togepi_2, + .pokemonScale = 507, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Togetic + .categoryName = _("HAPPINESS"), + .height = 6, + .weight = 32, + .descriptionPage1 = DexDescription_Togetic_1, + .descriptionPage2 = DexDescription_Togetic_2, + .pokemonScale = 424, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Natu + .categoryName = _("TINY BIRD"), + .height = 2, + .weight = 20, + .descriptionPage1 = DexDescription_Natu_1, + .descriptionPage2 = DexDescription_Natu_2, + .pokemonScale = 610, + .pokemonOffset = 25, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Xatu + .categoryName = _("MYSTIC"), + .height = 15, + .weight = 150, + .descriptionPage1 = DexDescription_Xatu_1, + .descriptionPage2 = DexDescription_Xatu_2, + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 318, + .trainerOffset = 4, + }, + { //Mareep + .categoryName = _("WOOL"), + .height = 6, + .weight = 78, + .descriptionPage1 = DexDescription_Mareep_1, + .descriptionPage2 = DexDescription_Mareep_2, + .pokemonScale = 379, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Flaaffy + .categoryName = _("WOOL"), + .height = 8, + .weight = 133, + .descriptionPage1 = DexDescription_Flaaffy_1, + .descriptionPage2 = DexDescription_Flaaffy_2, + .pokemonScale = 372, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Ampharos + .categoryName = _("LIGHT"), + .height = 14, + .weight = 615, + .descriptionPage1 = DexDescription_Ampharos_1, + .descriptionPage2 = DexDescription_Ampharos_2, + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Bellossom + .categoryName = _("FLOWER"), + .height = 4, + .weight = 58, + .descriptionPage1 = DexDescription_Bellossom_1, + .descriptionPage2 = DexDescription_Bellossom_2, + .pokemonScale = 472, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Marill + .categoryName = _("AQUA MOUSE"), + .height = 4, + .weight = 85, + .descriptionPage1 = DexDescription_Marill_1, + .descriptionPage2 = DexDescription_Marill_2, + .pokemonScale = 476, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Azumarill + .categoryName = _("AQUA RABBIT"), + .height = 8, + .weight = 285, + .descriptionPage1 = DexDescription_Azumarill_1, + .descriptionPage2 = DexDescription_Azumarill_2, + .pokemonScale = 448, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Sudowoodo + .categoryName = _("IMITATION"), + .height = 12, + .weight = 380, + .descriptionPage1 = DexDescription_Sudowoodo_1, + .descriptionPage2 = DexDescription_Sudowoodo_2, + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Politoed + .categoryName = _("FROG"), + .height = 11, + .weight = 339, + .descriptionPage1 = DexDescription_Politoed_1, + .descriptionPage2 = DexDescription_Politoed_2, + .pokemonScale = 289, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Hoppip + .categoryName = _("COTTONWEED"), + .height = 4, + .weight = 5, + .descriptionPage1 = DexDescription_Hoppip_1, + .descriptionPage2 = DexDescription_Hoppip_2, + .pokemonScale = 562, + .pokemonOffset = -7, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Skiploom + .categoryName = _("COTTONWEED"), + .height = 6, + .weight = 10, + .descriptionPage1 = DexDescription_Skiploom_1, + .descriptionPage2 = DexDescription_Skiploom_2, + .pokemonScale = 387, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Jumpluff + .categoryName = _("COTTONWEED"), + .height = 8, + .weight = 30, + .descriptionPage1 = DexDescription_Jumpluff_1, + .descriptionPage2 = DexDescription_Jumpluff_2, + .pokemonScale = 418, + .pokemonOffset = -4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Aipom + .categoryName = _("LONG TAIL"), + .height = 8, + .weight = 115, + .descriptionPage1 = DexDescription_Aipom_1, + .descriptionPage2 = DexDescription_Aipom_2, + .pokemonScale = 363, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Sunkern + .categoryName = _("SEED"), + .height = 3, + .weight = 18, + .descriptionPage1 = DexDescription_Sunkern_1, + .descriptionPage2 = DexDescription_Sunkern_2, + .pokemonScale = 541, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Sunflora + .categoryName = _("SUN"), + .height = 8, + .weight = 85, + .descriptionPage1 = DexDescription_Sunflora_1, + .descriptionPage2 = DexDescription_Sunflora_2, + .pokemonScale = 444, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Yanma + .categoryName = _("CLEAR WING"), + .height = 12, + .weight = 380, + .descriptionPage1 = DexDescription_Yanma_1, + .descriptionPage2 = DexDescription_Yanma_2, + .pokemonScale = 274, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Wooper + .categoryName = _("WATER FISH"), + .height = 4, + .weight = 85, + .descriptionPage1 = DexDescription_Wooper_1, + .descriptionPage2 = DexDescription_Wooper_2, + .pokemonScale = 479, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Quagsire + .categoryName = _("WATER FISH"), + .height = 14, + .weight = 750, + .descriptionPage1 = DexDescription_Quagsire_1, + .descriptionPage2 = DexDescription_Quagsire_2, + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Espeon + .categoryName = _("SUN"), + .height = 9, + .weight = 265, + .descriptionPage1 = DexDescription_Espeon_1, + .descriptionPage2 = DexDescription_Espeon_2, + .pokemonScale = 363, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Umbreon + .categoryName = _("MOONLIGHT"), + .height = 10, + .weight = 270, + .descriptionPage1 = DexDescription_Umbreon_1, + .descriptionPage2 = DexDescription_Umbreon_2, + .pokemonScale = 317, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Murkrow + .categoryName = _("DARKNESS"), + .height = 5, + .weight = 21, + .descriptionPage1 = DexDescription_Murkrow_1, + .descriptionPage2 = DexDescription_Murkrow_2, + .pokemonScale = 401, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 1, + }, + { //Slowking + .categoryName = _("ROYAL"), + .height = 20, + .weight = 795, + .descriptionPage1 = DexDescription_Slowking_1, + .descriptionPage2 = DexDescription_Slowking_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 309, + .trainerOffset = 5, + }, + { //Misdreavus + .categoryName = _("SCREECH"), + .height = 7, + .weight = 10, + .descriptionPage1 = DexDescription_Misdreavus_1, + .descriptionPage2 = DexDescription_Misdreavus_2, + .pokemonScale = 407, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Unown + .categoryName = _("SYMBOL"), + .height = 5, + .weight = 50, + .descriptionPage1 = DexDescription_Unown_1, + .descriptionPage2 = DexDescription_Unown_2, + .pokemonScale = 411, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Wobbuffet + .categoryName = _("PATIENT"), + .height = 13, + .weight = 285, + .descriptionPage1 = DexDescription_Wobbuffet_1, + .descriptionPage2 = DexDescription_Wobbuffet_2, + .pokemonScale = 274, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Girafarig + .categoryName = _("LONG NECK"), + .height = 15, + .weight = 415, + .descriptionPage1 = DexDescription_Girafarig_1, + .descriptionPage2 = DexDescription_Girafarig_2, + .pokemonScale = 281, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Pineco + .categoryName = _("BAGWORM"), + .height = 6, + .weight = 72, + .descriptionPage1 = DexDescription_Pineco_1, + .descriptionPage2 = DexDescription_Pineco_2, + .pokemonScale = 445, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Forretress + .categoryName = _("BAGWORM"), + .height = 12, + .weight = 1258, + .descriptionPage1 = DexDescription_Forretress_1, + .descriptionPage2 = DexDescription_Forretress_2, + .pokemonScale = 293, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Dunsparce + .categoryName = _("LAND SNAKE"), + .height = 15, + .weight = 140, + .descriptionPage1 = DexDescription_Dunsparce_1, + .descriptionPage2 = DexDescription_Dunsparce_2, + .pokemonScale = 316, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Gligar + .categoryName = _("FLYSCORPION"), + .height = 11, + .weight = 648, + .descriptionPage1 = DexDescription_Gligar_1, + .descriptionPage2 = DexDescription_Gligar_2, + .pokemonScale = 350, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Steelix + .categoryName = _("IRON SNAKE"), + .height = 92, + .weight = 4000, + .descriptionPage1 = DexDescription_Steelix_1, + .descriptionPage2 = DexDescription_Steelix_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 516, + .trainerOffset = 13, + }, + { //Snubbull + .categoryName = _("FAIRY"), + .height = 6, + .weight = 78, + .descriptionPage1 = DexDescription_Snubbull_1, + .descriptionPage2 = DexDescription_Snubbull_2, + .pokemonScale = 465, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Granbull + .categoryName = _("FAIRY"), + .height = 14, + .weight = 487, + .descriptionPage1 = DexDescription_Granbull_1, + .descriptionPage2 = DexDescription_Granbull_2, + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Qwilfish + .categoryName = _("BALLOON"), + .height = 5, + .weight = 39, + .descriptionPage1 = DexDescription_Qwilfish_1, + .descriptionPage2 = DexDescription_Qwilfish_2, + .pokemonScale = 430, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Scizor + .categoryName = _("PINCER"), + .height = 18, + .weight = 1180, + .descriptionPage1 = DexDescription_Scizor_1, + .descriptionPage2 = DexDescription_Scizor_2, + .pokemonScale = 278, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Shuckle + .categoryName = _("MOLD"), + .height = 6, + .weight = 205, + .descriptionPage1 = DexDescription_Shuckle_1, + .descriptionPage2 = DexDescription_Shuckle_2, + .pokemonScale = 485, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Heracross + .categoryName = _("SINGLE HORN"), + .height = 15, + .weight = 540, + .descriptionPage1 = DexDescription_Heracross_1, + .descriptionPage2 = DexDescription_Heracross_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Sneasel + .categoryName = _("SHARP CLAW"), + .height = 9, + .weight = 280, + .descriptionPage1 = DexDescription_Sneasel_1, + .descriptionPage2 = DexDescription_Sneasel_2, + .pokemonScale = 413, + .pokemonOffset = -3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Teddiursa + .categoryName = _("LITTLE BEAR"), + .height = 6, + .weight = 88, + .descriptionPage1 = DexDescription_Teddiursa_1, + .descriptionPage2 = DexDescription_Teddiursa_2, + .pokemonScale = 455, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Ursaring + .categoryName = _("HIBERNATOR"), + .height = 18, + .weight = 1258, + .descriptionPage1 = DexDescription_Ursaring_1, + .descriptionPage2 = DexDescription_Ursaring_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Slugma + .categoryName = _("LAVA"), + .height = 7, + .weight = 350, + .descriptionPage1 = DexDescription_Slugma_1, + .descriptionPage2 = DexDescription_Slugma_2, + .pokemonScale = 329, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Magcargo + .categoryName = _("LAVA"), + .height = 8, + .weight = 550, + .descriptionPage1 = DexDescription_Magcargo_1, + .descriptionPage2 = DexDescription_Magcargo_2, + .pokemonScale = 332, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Swinub + .categoryName = _("PIG"), + .height = 4, + .weight = 65, + .descriptionPage1 = DexDescription_Swinub_1, + .descriptionPage2 = DexDescription_Swinub_2, + .pokemonScale = 324, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Piloswine + .categoryName = _("SWINE"), + .height = 11, + .weight = 558, + .descriptionPage1 = DexDescription_Piloswine_1, + .descriptionPage2 = DexDescription_Piloswine_2, + .pokemonScale = 306, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Corsola + .categoryName = _("CORAL"), + .height = 6, + .weight = 50, + .descriptionPage1 = DexDescription_Corsola_1, + .descriptionPage2 = DexDescription_Corsola_2, + .pokemonScale = 410, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Remoraid + .categoryName = _("JET"), + .height = 6, + .weight = 120, + .descriptionPage1 = DexDescription_Remoraid_1, + .descriptionPage2 = DexDescription_Remoraid_2, + .pokemonScale = 316, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Octillery + .categoryName = _("JET"), + .height = 9, + .weight = 285, + .descriptionPage1 = DexDescription_Octillery_1, + .descriptionPage2 = DexDescription_Octillery_2, + .pokemonScale = 296, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Delibird + .categoryName = _("DELIVERY"), + .height = 9, + .weight = 160, + .descriptionPage1 = DexDescription_Delibird_1, + .descriptionPage2 = DexDescription_Delibird_2, + .pokemonScale = 293, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Mantine + .categoryName = _("KITE"), + .height = 21, + .weight = 2200, + .descriptionPage1 = DexDescription_Mantine_1, + .descriptionPage2 = DexDescription_Mantine_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 342, + .trainerOffset = 7, + }, + { //Skarmory + .categoryName = _("ARMOR BIRD"), + .height = 17, + .weight = 505, + .descriptionPage1 = DexDescription_Skarmory_1, + .descriptionPage2 = DexDescription_Skarmory_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 271, + .trainerOffset = 1, + }, + { //Houndour + .categoryName = _("DARK"), + .height = 6, + .weight = 108, + .descriptionPage1 = DexDescription_Houndour_1, + .descriptionPage2 = DexDescription_Houndour_2, + .pokemonScale = 393, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Houndoom + .categoryName = _("DARK"), + .height = 14, + .weight = 350, + .descriptionPage1 = DexDescription_Houndoom_1, + .descriptionPage2 = DexDescription_Houndoom_2, + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Kingdra + .categoryName = _("DRAGON"), + .height = 18, + .weight = 1520, + .descriptionPage1 = DexDescription_Kingdra_1, + .descriptionPage2 = DexDescription_Kingdra_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 287, + .trainerOffset = 0, + }, + { //Phanpy + .categoryName = _("LONG NOSE"), + .height = 5, + .weight = 335, + .descriptionPage1 = DexDescription_Phanpy_1, + .descriptionPage2 = DexDescription_Phanpy_2, + .pokemonScale = 465, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Donphan + .categoryName = _("ARMOR"), + .height = 11, + .weight = 1200, + .descriptionPage1 = DexDescription_Donphan_1, + .descriptionPage2 = DexDescription_Donphan_2, + .pokemonScale = 313, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Porygon2 + .categoryName = _("VIRTUAL"), + .height = 6, + .weight = 325, + .descriptionPage1 = DexDescription_Porygon2_1, + .descriptionPage2 = DexDescription_Porygon2_2, + .pokemonScale = 320, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Stantler + .categoryName = _("BIG HORN"), + .height = 14, + .weight = 712, + .descriptionPage1 = DexDescription_Stantler_1, + .descriptionPage2 = DexDescription_Stantler_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Smeargle + .categoryName = _("PAINTER"), + .height = 12, + .weight = 580, + .descriptionPage1 = DexDescription_Smeargle_1, + .descriptionPage2 = DexDescription_Smeargle_2, + .pokemonScale = 287, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Tyrogue + .categoryName = _("SCUFFLE"), + .height = 7, + .weight = 210, + .descriptionPage1 = DexDescription_Tyrogue_1, + .descriptionPage2 = DexDescription_Tyrogue_2, + .pokemonScale = 292, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Hitmontop + .categoryName = _("HANDSTAND"), + .height = 14, + .weight = 480, + .descriptionPage1 = DexDescription_Hitmontop_1, + .descriptionPage2 = DexDescription_Hitmontop_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 257, + .trainerOffset = 0, + }, + { //Smoochum + .categoryName = _("KISS"), + .height = 4, + .weight = 60, + .descriptionPage1 = DexDescription_Smoochum_1, + .descriptionPage2 = DexDescription_Smoochum_2, + .pokemonScale = 440, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Elekid + .categoryName = _("ELECTRIC"), + .height = 6, + .weight = 235, + .descriptionPage1 = DexDescription_Elekid_1, + .descriptionPage2 = DexDescription_Elekid_2, + .pokemonScale = 363, + .pokemonOffset = 14, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Magby + .categoryName = _("LIVE COAL"), + .height = 7, + .weight = 214, + .descriptionPage1 = DexDescription_Magby_1, + .descriptionPage2 = DexDescription_Magby_2, + .pokemonScale = 284, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Miltank + .categoryName = _("MILK COW"), + .height = 12, + .weight = 755, + .descriptionPage1 = DexDescription_Miltank_1, + .descriptionPage2 = DexDescription_Miltank_2, + .pokemonScale = 280, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Blissey + .categoryName = _("HAPPINESS"), + .height = 15, + .weight = 468, + .descriptionPage1 = DexDescription_Blissey_1, + .descriptionPage2 = DexDescription_Blissey_2, + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 310, + .trainerOffset = 3, + }, + { //Raikou + .categoryName = _("THUNDER"), + .height = 19, + .weight = 1780, + .descriptionPage1 = DexDescription_Raikou_1, + .descriptionPage2 = DexDescription_Raikou_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 345, + .trainerOffset = 7, + }, + { //Entei + .categoryName = _("VOLCANO"), + .height = 21, + .weight = 1980, + .descriptionPage1 = DexDescription_Entei_1, + .descriptionPage2 = DexDescription_Entei_2, + .pokemonScale = 259, + .pokemonOffset = 0, + .trainerScale = 345, + .trainerOffset = 7, + }, + { //Suicune + .categoryName = _("AURORA"), + .height = 20, + .weight = 1870, + .descriptionPage1 = DexDescription_Suicune_1, + .descriptionPage2 = DexDescription_Suicune_2, + .pokemonScale = 269, + .pokemonOffset = 0, + .trainerScale = 345, + .trainerOffset = 7, + }, + { //Larvitar + .categoryName = _("ROCK SKIN"), + .height = 6, + .weight = 720, + .descriptionPage1 = DexDescription_Larvitar_1, + .descriptionPage2 = DexDescription_Larvitar_2, + .pokemonScale = 472, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Pupitar + .categoryName = _("HARD SHELL"), + .height = 12, + .weight = 1520, + .descriptionPage1 = DexDescription_Pupitar_1, + .descriptionPage2 = DexDescription_Pupitar_2, + .pokemonScale = 292, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Tyranitar + .categoryName = _("ARMOR"), + .height = 20, + .weight = 2020, + .descriptionPage1 = DexDescription_Tyranitar_1, + .descriptionPage2 = DexDescription_Tyranitar_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 345, + .trainerOffset = 7, + }, + { //Lugia + .categoryName = _("DIVING"), + .height = 52, + .weight = 2160, + .descriptionPage1 = DexDescription_Lugia_1, + .descriptionPage2 = DexDescription_Lugia_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 721, + .trainerOffset = 19, + }, + { //HoOh + .categoryName = _("RAINBOW"), + .height = 38, + .weight = 1990, + .descriptionPage1 = DexDescription_HoOh_1, + .descriptionPage2 = DexDescription_HoOh_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 610, + .trainerOffset = 17, + }, + { //Celebi + .categoryName = _("TIME TRAVEL"), + .height = 6, + .weight = 50, + .descriptionPage1 = DexDescription_Celebi_1, + .descriptionPage2 = DexDescription_Celebi_2, + .pokemonScale = 393, + .pokemonOffset = -10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Treecko + .categoryName = _("WOOD GECKO"), + .height = 5, + .weight = 50, + .descriptionPage1 = DexDescription_Treecko_1, + .descriptionPage2 = DexDescription_Treecko_2, + .pokemonScale = 541, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Grovyle + .categoryName = _("WOOD GECKO"), + .height = 9, + .weight = 216, + .descriptionPage1 = DexDescription_Grovyle_1, + .descriptionPage2 = DexDescription_Grovyle_2, + .pokemonScale = 360, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Sceptile + .categoryName = _("FOREST"), + .height = 17, + .weight = 522, + .descriptionPage1 = DexDescription_Sceptile_1, + .descriptionPage2 = DexDescription_Sceptile_2, + .pokemonScale = 256, + .pokemonOffset = -1, + .trainerScale = 275, + .trainerOffset = 2, + }, + { //Torchic + .categoryName = _("CHICK"), + .height = 4, + .weight = 25, + .descriptionPage1 = DexDescription_Torchic_1, + .descriptionPage2 = DexDescription_Torchic_2, + .pokemonScale = 566, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Combusken + .categoryName = _("YOUNG FOWL"), + .height = 9, + .weight = 195, + .descriptionPage1 = DexDescription_Combusken_1, + .descriptionPage2 = DexDescription_Combusken_2, + .pokemonScale = 343, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Blaziken + .categoryName = _("BLAZE"), + .height = 19, + .weight = 520, + .descriptionPage1 = DexDescription_Blaziken_1, + .descriptionPage2 = DexDescription_Blaziken_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 301, + .trainerOffset = 4, + }, + { //Mudkip + .categoryName = _("MUD FISH"), + .height = 4, + .weight = 76, + .descriptionPage1 = DexDescription_Mudkip_1, + .descriptionPage2 = DexDescription_Mudkip_2, + .pokemonScale = 535, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Marshtomp + .categoryName = _("MUD FISH"), + .height = 7, + .weight = 280, + .descriptionPage1 = DexDescription_Marshtomp_1, + .descriptionPage2 = DexDescription_Marshtomp_2, + .pokemonScale = 340, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Swampert + .categoryName = _("MUD FISH"), + .height = 15, + .weight = 819, + .descriptionPage1 = DexDescription_Swampert_1, + .descriptionPage2 = DexDescription_Swampert_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Poochyena + .categoryName = _("BITE"), + .height = 5, + .weight = 136, + .descriptionPage1 = DexDescription_Poochyena_1, + .descriptionPage2 = DexDescription_Poochyena_2, + .pokemonScale = 481, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Mightyena + .categoryName = _("BITE"), + .height = 10, + .weight = 370, + .descriptionPage1 = DexDescription_Mightyena_1, + .descriptionPage2 = DexDescription_Mightyena_2, + .pokemonScale = 362, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Zigzagoon + .categoryName = _("TINYRACCOON"), + .height = 4, + .weight = 175, + .descriptionPage1 = DexDescription_Zigzagoon_1, + .descriptionPage2 = DexDescription_Zigzagoon_2, + .pokemonScale = 560, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Linoone + .categoryName = _("RUSHING"), + .height = 5, + .weight = 325, + .descriptionPage1 = DexDescription_Linoone_1, + .descriptionPage2 = DexDescription_Linoone_2, + .pokemonScale = 321, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Wurmple + .categoryName = _("WORM"), + .height = 3, + .weight = 36, + .descriptionPage1 = DexDescription_Wurmple_1, + .descriptionPage2 = DexDescription_Wurmple_2, + .pokemonScale = 711, + .pokemonOffset = 24, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Silcoon + .categoryName = _("COCOON"), + .height = 6, + .weight = 100, + .descriptionPage1 = DexDescription_Silcoon_1, + .descriptionPage2 = DexDescription_Silcoon_2, + .pokemonScale = 431, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Beautifly + .categoryName = _("BUTTERFLY"), + .height = 10, + .weight = 284, + .descriptionPage1 = DexDescription_Beautifly_1, + .descriptionPage2 = DexDescription_Beautifly_2, + .pokemonScale = 298, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Cascoon + .categoryName = _("COCOON"), + .height = 7, + .weight = 115, + .descriptionPage1 = DexDescription_Cascoon_1, + .descriptionPage2 = DexDescription_Cascoon_2, + .pokemonScale = 391, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Dustox + .categoryName = _("POISON MOTH"), + .height = 12, + .weight = 316, + .descriptionPage1 = DexDescription_Dustox_1, + .descriptionPage2 = DexDescription_Dustox_2, + .pokemonScale = 269, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Lotad + .categoryName = _("WATER WEED"), + .height = 5, + .weight = 26, + .descriptionPage1 = DexDescription_Lotad_1, + .descriptionPage2 = DexDescription_Lotad_2, + .pokemonScale = 406, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Lombre + .categoryName = _("JOLLY"), + .height = 12, + .weight = 325, + .descriptionPage1 = DexDescription_Lombre_1, + .descriptionPage2 = DexDescription_Lombre_2, + .pokemonScale = 277, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Ludicolo + .categoryName = _("CAREFREE"), + .height = 15, + .weight = 550, + .descriptionPage1 = DexDescription_Ludicolo_1, + .descriptionPage2 = DexDescription_Ludicolo_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 268, + .trainerOffset = -1, + }, + { //Seedot + .categoryName = _("ACORN"), + .height = 5, + .weight = 40, + .descriptionPage1 = DexDescription_Seedot_1, + .descriptionPage2 = DexDescription_Seedot_2, + .pokemonScale = 472, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Nuzleaf + .categoryName = _("WILY"), + .height = 10, + .weight = 280, + .descriptionPage1 = DexDescription_Nuzleaf_1, + .descriptionPage2 = DexDescription_Nuzleaf_2, + .pokemonScale = 299, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Shiftry + .categoryName = _("WICKED"), + .height = 13, + .weight = 596, + .descriptionPage1 = DexDescription_Shiftry_1, + .descriptionPage2 = DexDescription_Shiftry_2, + .pokemonScale = 290, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Taillow + .categoryName = _("TINYSWALLOW"), + .height = 3, + .weight = 23, + .descriptionPage1 = DexDescription_Taillow_1, + .descriptionPage2 = DexDescription_Taillow_2, + .pokemonScale = 465, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Swellow + .categoryName = _("SWALLOW"), + .height = 7, + .weight = 198, + .descriptionPage1 = DexDescription_Swellow_1, + .descriptionPage2 = DexDescription_Swellow_2, + .pokemonScale = 428, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Wingull + .categoryName = _("SEAGULL"), + .height = 6, + .weight = 95, + .descriptionPage1 = DexDescription_Wingull_1, + .descriptionPage2 = DexDescription_Wingull_2, + .pokemonScale = 295, + .pokemonOffset = -2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Pelipper + .categoryName = _("WATER BIRD"), + .height = 12, + .weight = 280, + .descriptionPage1 = DexDescription_Pelipper_1, + .descriptionPage2 = DexDescription_Pelipper_2, + .pokemonScale = 288, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Ralts + .categoryName = _("FEELING"), + .height = 4, + .weight = 66, + .descriptionPage1 = DexDescription_Ralts_1, + .descriptionPage2 = DexDescription_Ralts_2, + .pokemonScale = 457, + .pokemonOffset = -3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Kirlia + .categoryName = _("EMOTION"), + .height = 8, + .weight = 202, + .descriptionPage1 = DexDescription_Kirlia_1, + .descriptionPage2 = DexDescription_Kirlia_2, + .pokemonScale = 354, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Gardevoir + .categoryName = _("EMBRACE"), + .height = 16, + .weight = 484, + .descriptionPage1 = DexDescription_Gardevoir_1, + .descriptionPage2 = DexDescription_Gardevoir_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Surskit + .categoryName = _("POND SKATER"), + .height = 5, + .weight = 17, + .descriptionPage1 = DexDescription_Surskit_1, + .descriptionPage2 = DexDescription_Surskit_2, + .pokemonScale = 375, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Masquerain + .categoryName = _("EYEBALL"), + .height = 8, + .weight = 36, + .descriptionPage1 = DexDescription_Masquerain_1, + .descriptionPage2 = DexDescription_Masquerain_2, + .pokemonScale = 378, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Shroomish + .categoryName = _("MUSHROOM"), + .height = 4, + .weight = 45, + .descriptionPage1 = DexDescription_Shroomish_1, + .descriptionPage2 = DexDescription_Shroomish_2, + .pokemonScale = 513, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Breloom + .categoryName = _("MUSHROOM"), + .height = 12, + .weight = 392, + .descriptionPage1 = DexDescription_Breloom_1, + .descriptionPage2 = DexDescription_Breloom_2, + .pokemonScale = 324, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Slakoth + .categoryName = _("SLACKER"), + .height = 8, + .weight = 240, + .descriptionPage1 = DexDescription_Slakoth_1, + .descriptionPage2 = DexDescription_Slakoth_2, + .pokemonScale = 291, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Vigoroth + .categoryName = _("WILD MONKEY"), + .height = 14, + .weight = 465, + .descriptionPage1 = DexDescription_Vigoroth_1, + .descriptionPage2 = DexDescription_Vigoroth_2, + .pokemonScale = 301, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Slaking + .categoryName = _("LAZY"), + .height = 20, + .weight = 1305, + .descriptionPage1 = DexDescription_Slaking_1, + .descriptionPage2 = DexDescription_Slaking_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 300, + .trainerOffset = 1, + }, + { //Nincada + .categoryName = _("TRAINEE"), + .height = 5, + .weight = 55, + .descriptionPage1 = DexDescription_Nincada_1, + .descriptionPage2 = DexDescription_Nincada_2, + .pokemonScale = 405, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Ninjask + .categoryName = _("NINJA"), + .height = 8, + .weight = 120, + .descriptionPage1 = DexDescription_Ninjask_1, + .descriptionPage2 = DexDescription_Ninjask_2, + .pokemonScale = 383, + .pokemonOffset = -9, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Shedinja + .categoryName = _("SHED"), + .height = 8, + .weight = 12, + .descriptionPage1 = DexDescription_Shedinja_1, + .descriptionPage2 = DexDescription_Shedinja_2, + .pokemonScale = 372, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Whismur + .categoryName = _("WHISPER"), + .height = 6, + .weight = 163, + .descriptionPage1 = DexDescription_Whismur_1, + .descriptionPage2 = DexDescription_Whismur_2, + .pokemonScale = 373, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Loudred + .categoryName = _("BIG VOICE"), + .height = 10, + .weight = 405, + .descriptionPage1 = DexDescription_Loudred_1, + .descriptionPage2 = DexDescription_Loudred_2, + .pokemonScale = 356, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Exploud + .categoryName = _("LOUD NOISE"), + .height = 15, + .weight = 840, + .descriptionPage1 = DexDescription_Exploud_1, + .descriptionPage2 = DexDescription_Exploud_2, + .pokemonScale = 284, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Makuhita + .categoryName = _("GUTS"), + .height = 10, + .weight = 864, + .descriptionPage1 = DexDescription_Makuhita_1, + .descriptionPage2 = DexDescription_Makuhita_2, + .pokemonScale = 256, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Hariyama + .categoryName = _("ARM THRUST"), + .height = 23, + .weight = 2538, + .descriptionPage1 = DexDescription_Hariyama_1, + .descriptionPage2 = DexDescription_Hariyama_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 343, + .trainerOffset = 7, + }, + { //Azurill + .categoryName = _("POLKA DOT"), + .height = 2, + .weight = 20, + .descriptionPage1 = DexDescription_Azurill_1, + .descriptionPage2 = DexDescription_Azurill_2, + .pokemonScale = 603, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Nosepass + .categoryName = _("COMPASS"), + .height = 10, + .weight = 970, + .descriptionPage1 = DexDescription_Nosepass_1, + .descriptionPage2 = DexDescription_Nosepass_2, + .pokemonScale = 256, + .pokemonOffset = 9, + .trainerScale = 289, + .trainerOffset = 3, + }, + { //Skitty + .categoryName = _("KITTEN"), + .height = 6, + .weight = 110, + .descriptionPage1 = DexDescription_Skitty_1, + .descriptionPage2 = DexDescription_Skitty_2, + .pokemonScale = 492, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Delcatty + .categoryName = _("PRIM"), + .height = 11, + .weight = 326, + .descriptionPage1 = DexDescription_Delcatty_1, + .descriptionPage2 = DexDescription_Delcatty_2, + .pokemonScale = 322, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Sableye + .categoryName = _("DARKNESS"), + .height = 5, + .weight = 110, + .descriptionPage1 = DexDescription_Sableye_1, + .descriptionPage2 = DexDescription_Sableye_2, + .pokemonScale = 451, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Mawile + .categoryName = _("DECEIVER"), + .height = 6, + .weight = 115, + .descriptionPage1 = DexDescription_Mawile_1, + .descriptionPage2 = DexDescription_Mawile_2, + .pokemonScale = 466, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Aron + .categoryName = _("IRON ARMOR"), + .height = 4, + .weight = 600, + .descriptionPage1 = DexDescription_Aron_1, + .descriptionPage2 = DexDescription_Aron_2, + .pokemonScale = 419, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Lairon + .categoryName = _("IRON ARMOR"), + .height = 9, + .weight = 1200, + .descriptionPage1 = DexDescription_Lairon_1, + .descriptionPage2 = DexDescription_Lairon_2, + .pokemonScale = 275, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Aggron + .categoryName = _("IRON ARMOR"), + .height = 21, + .weight = 3600, + .descriptionPage1 = DexDescription_Aggron_1, + .descriptionPage2 = DexDescription_Aggron_2, + .pokemonScale = 256, + .pokemonOffset = -1, + .trainerScale = 350, + .trainerOffset = 6, + }, + { //Meditite + .categoryName = _("MEDITATE"), + .height = 6, + .weight = 112, + .descriptionPage1 = DexDescription_Meditite_1, + .descriptionPage2 = DexDescription_Meditite_2, + .pokemonScale = 465, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Medicham + .categoryName = _("MEDITATE"), + .height = 13, + .weight = 315, + .descriptionPage1 = DexDescription_Medicham_1, + .descriptionPage2 = DexDescription_Medicham_2, + .pokemonScale = 298, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Electrike + .categoryName = _("LIGHTNING"), + .height = 6, + .weight = 152, + .descriptionPage1 = DexDescription_Electrike_1, + .descriptionPage2 = DexDescription_Electrike_2, + .pokemonScale = 290, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Manectric + .categoryName = _("DISCHARGE"), + .height = 15, + .weight = 402, + .descriptionPage1 = DexDescription_Manectric_1, + .descriptionPage2 = DexDescription_Manectric_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 257, + .trainerOffset = 0, + }, + { //Plusle + .categoryName = _("CHEERING"), + .height = 4, + .weight = 42, + .descriptionPage1 = DexDescription_Plusle_1, + .descriptionPage2 = DexDescription_Plusle_2, + .pokemonScale = 515, + .pokemonOffset = -9, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Minun + .categoryName = _("CHEERING"), + .height = 4, + .weight = 42, + .descriptionPage1 = DexDescription_Minun_1, + .descriptionPage2 = DexDescription_Minun_2, + .pokemonScale = 512, + .pokemonOffset = -7, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Volbeat + .categoryName = _("FIREFLY"), + .height = 7, + .weight = 177, + .descriptionPage1 = DexDescription_Volbeat_1, + .descriptionPage2 = DexDescription_Volbeat_2, + .pokemonScale = 442, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Illumise + .categoryName = _("FIREFLY"), + .height = 6, + .weight = 177, + .descriptionPage1 = DexDescription_Illumise_1, + .descriptionPage2 = DexDescription_Illumise_2, + .pokemonScale = 572, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Roselia + .categoryName = _("THORN"), + .height = 3, + .weight = 20, + .descriptionPage1 = DexDescription_Roselia_1, + .descriptionPage2 = DexDescription_Roselia_2, + .pokemonScale = 677, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Gulpin + .categoryName = _("STOMACH"), + .height = 4, + .weight = 103, + .descriptionPage1 = DexDescription_Gulpin_1, + .descriptionPage2 = DexDescription_Gulpin_2, + .pokemonScale = 593, + .pokemonOffset = 23, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Swalot + .categoryName = _("POISON BAG"), + .height = 17, + .weight = 800, + .descriptionPage1 = DexDescription_Swalot_1, + .descriptionPage2 = DexDescription_Swalot_2, + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 345, + .trainerOffset = 3, + }, + { //Carvanha + .categoryName = _("SAVAGE"), + .height = 8, + .weight = 208, + .descriptionPage1 = DexDescription_Carvanha_1, + .descriptionPage2 = DexDescription_Carvanha_2, + .pokemonScale = 362, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Sharpedo + .categoryName = _("BRUTAL"), + .height = 18, + .weight = 888, + .descriptionPage1 = DexDescription_Sharpedo_1, + .descriptionPage2 = DexDescription_Sharpedo_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 317, + .trainerOffset = 3, + }, + { //Wailmer + .categoryName = _("BALL WHALE"), + .height = 20, + .weight = 1300, + .descriptionPage1 = DexDescription_Wailmer_1, + .descriptionPage2 = DexDescription_Wailmer_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 493, + .trainerOffset = 0, + }, + { //Wailord + .categoryName = _("FLOAT WHALE"), + .height = 145, + .weight = 3980, + .descriptionPage1 = DexDescription_Wailord_1, + .descriptionPage2 = DexDescription_Wailord_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 1352, + .trainerOffset = 18, + }, + { //Numel + .categoryName = _("NUMB"), + .height = 7, + .weight = 240, + .descriptionPage1 = DexDescription_Numel_1, + .descriptionPage2 = DexDescription_Numel_2, + .pokemonScale = 342, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Camerupt + .categoryName = _("ERUPTION"), + .height = 19, + .weight = 2200, + .descriptionPage1 = DexDescription_Camerupt_1, + .descriptionPage2 = DexDescription_Camerupt_2, + .pokemonScale = 256, + .pokemonOffset = 7, + .trainerScale = 345, + .trainerOffset = 6, + }, + { //Torkoal + .categoryName = _("COAL"), + .height = 5, + .weight = 804, + .descriptionPage1 = DexDescription_Torkoal_1, + .descriptionPage2 = DexDescription_Torkoal_2, + .pokemonScale = 390, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Spoink + .categoryName = _("BOUNCE"), + .height = 7, + .weight = 306, + .descriptionPage1 = DexDescription_Spoink_1, + .descriptionPage2 = DexDescription_Spoink_2, + .pokemonScale = 423, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Grumpig + .categoryName = _("MANIPULATE"), + .height = 9, + .weight = 715, + .descriptionPage1 = DexDescription_Grumpig_1, + .descriptionPage2 = DexDescription_Grumpig_2, + .pokemonScale = 358, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Spinda + .categoryName = _("SPOT PANDA"), + .height = 11, + .weight = 50, + .descriptionPage1 = DexDescription_Spinda_1, + .descriptionPage2 = DexDescription_Spinda_2, + .pokemonScale = 321, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Trapinch + .categoryName = _("ANT PIT"), + .height = 7, + .weight = 150, + .descriptionPage1 = DexDescription_Trapinch_1, + .descriptionPage2 = DexDescription_Trapinch_2, + .pokemonScale = 298, + .pokemonOffset = 17, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Vibrava + .categoryName = _("VIBRATION"), + .height = 11, + .weight = 153, + .descriptionPage1 = DexDescription_Vibrava_1, + .descriptionPage2 = DexDescription_Vibrava_2, + .pokemonScale = 370, + .pokemonOffset = 11, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Flygon + .categoryName = _("MYSTIC"), + .height = 20, + .weight = 820, + .descriptionPage1 = DexDescription_Flygon_1, + .descriptionPage2 = DexDescription_Flygon_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 268, + .trainerOffset = 1, + }, + { //Cacnea + .categoryName = _("CACTUS"), + .height = 4, + .weight = 513, + .descriptionPage1 = DexDescription_Cacnea_1, + .descriptionPage2 = DexDescription_Cacnea_2, + .pokemonScale = 455, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Cacturne + .categoryName = _("SCARECROW"), + .height = 13, + .weight = 774, + .descriptionPage1 = DexDescription_Cacturne_1, + .descriptionPage2 = DexDescription_Cacturne_2, + .pokemonScale = 327, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Swablu + .categoryName = _("COTTON BIRD"), + .height = 4, + .weight = 12, + .descriptionPage1 = DexDescription_Swablu_1, + .descriptionPage2 = DexDescription_Swablu_2, + .pokemonScale = 422, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Altaria + .categoryName = _("HUMMING"), + .height = 11, + .weight = 206, + .descriptionPage1 = DexDescription_Altaria_1, + .descriptionPage2 = DexDescription_Altaria_2, + .pokemonScale = 327, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Zangoose + .categoryName = _("CAT FERRET"), + .height = 13, + .weight = 403, + .descriptionPage1 = DexDescription_Zangoose_1, + .descriptionPage2 = DexDescription_Zangoose_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Seviper + .categoryName = _("FANG SNAKE"), + .height = 27, + .weight = 525, + .descriptionPage1 = DexDescription_Seviper_1, + .descriptionPage2 = DexDescription_Seviper_2, + .pokemonScale = 275, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Lunatone + .categoryName = _("METEORITE"), + .height = 10, + .weight = 1680, + .descriptionPage1 = DexDescription_Lunatone_1, + .descriptionPage2 = DexDescription_Lunatone_2, + .pokemonScale = 300, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Solrock + .categoryName = _("METEORITE"), + .height = 12, + .weight = 1540, + .descriptionPage1 = DexDescription_Solrock_1, + .descriptionPage2 = DexDescription_Solrock_2, + .pokemonScale = 328, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Barboach + .categoryName = _("WHISKERS"), + .height = 4, + .weight = 19, + .descriptionPage1 = DexDescription_Barboach_1, + .descriptionPage2 = DexDescription_Barboach_2, + .pokemonScale = 581, + .pokemonOffset = -3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Whiscash + .categoryName = _("WHISKERS"), + .height = 9, + .weight = 236, + .descriptionPage1 = DexDescription_Whiscash_1, + .descriptionPage2 = DexDescription_Whiscash_2, + .pokemonScale = 317, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Corphish + .categoryName = _("RUFFIAN"), + .height = 6, + .weight = 115, + .descriptionPage1 = DexDescription_Corphish_1, + .descriptionPage2 = DexDescription_Corphish_2, + .pokemonScale = 484, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Crawdaunt + .categoryName = _("ROGUE"), + .height = 11, + .weight = 328, + .descriptionPage1 = DexDescription_Crawdaunt_1, + .descriptionPage2 = DexDescription_Crawdaunt_2, + .pokemonScale = 365, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Baltoy + .categoryName = _("CLAY DOLL"), + .height = 5, + .weight = 215, + .descriptionPage1 = DexDescription_Baltoy_1, + .descriptionPage2 = DexDescription_Baltoy_2, + .pokemonScale = 457, + .pokemonOffset = 21, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Claydol + .categoryName = _("CLAY DOLL"), + .height = 15, + .weight = 1080, + .descriptionPage1 = DexDescription_Claydol_1, + .descriptionPage2 = DexDescription_Claydol_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 280, + .trainerOffset = 1, + }, + { //Lileep + .categoryName = _("SEA LILY"), + .height = 10, + .weight = 238, + .descriptionPage1 = DexDescription_Lileep_1, + .descriptionPage2 = DexDescription_Lileep_2, + .pokemonScale = 305, + .pokemonOffset = 8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Cradily + .categoryName = _("BARNACLE"), + .height = 15, + .weight = 604, + .descriptionPage1 = DexDescription_Cradily_1, + .descriptionPage2 = DexDescription_Cradily_2, + .pokemonScale = 267, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Anorith + .categoryName = _("OLD SHRIMP"), + .height = 7, + .weight = 125, + .descriptionPage1 = DexDescription_Anorith_1, + .descriptionPage2 = DexDescription_Anorith_2, + .pokemonScale = 296, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Armaldo + .categoryName = _("PLATE"), + .height = 15, + .weight = 682, + .descriptionPage1 = DexDescription_Armaldo_1, + .descriptionPage2 = DexDescription_Armaldo_2, + .pokemonScale = 312, + .pokemonOffset = 3, + .trainerScale = 271, + .trainerOffset = 0, + }, + { //Feebas + .categoryName = _("FISH"), + .height = 6, + .weight = 74, + .descriptionPage1 = DexDescription_Feebas_1, + .descriptionPage2 = DexDescription_Feebas_2, + .pokemonScale = 423, + .pokemonOffset = -4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Milotic + .categoryName = _("TENDER"), + .height = 62, + .weight = 1620, + .descriptionPage1 = DexDescription_Milotic_1, + .descriptionPage2 = DexDescription_Milotic_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 360, + .trainerOffset = 7, + }, + { //Castform + .categoryName = _("WEATHER"), + .height = 3, + .weight = 8, + .descriptionPage1 = DexDescription_Castform_1, + .descriptionPage2 = DexDescription_Castform_2, + .pokemonScale = 435, + .pokemonOffset = -5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Kecleon + .categoryName = _("COLOR SWAP"), + .height = 10, + .weight = 220, + .descriptionPage1 = DexDescription_Kecleon_1, + .descriptionPage2 = DexDescription_Kecleon_2, + .pokemonScale = 316, + .pokemonOffset = 10, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Shuppet + .categoryName = _("PUPPET"), + .height = 6, + .weight = 23, + .descriptionPage1 = DexDescription_Shuppet_1, + .descriptionPage2 = DexDescription_Shuppet_2, + .pokemonScale = 440, + .pokemonOffset = 20, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Banette + .categoryName = _("MARIONETTE"), + .height = 11, + .weight = 125, + .descriptionPage1 = DexDescription_Banette_1, + .descriptionPage2 = DexDescription_Banette_2, + .pokemonScale = 262, + .pokemonOffset = 9, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Duskull + .categoryName = _("REQUIEM"), + .height = 8, + .weight = 150, + .descriptionPage1 = DexDescription_Duskull_1, + .descriptionPage2 = DexDescription_Duskull_2, + .pokemonScale = 406, + .pokemonOffset = -4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Dusclops + .categoryName = _("BECKON"), + .height = 16, + .weight = 306, + .descriptionPage1 = DexDescription_Dusclops_1, + .descriptionPage2 = DexDescription_Dusclops_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 299, + .trainerOffset = 1, + }, + { //Tropius + .categoryName = _("FRUIT"), + .height = 20, + .weight = 1000, + .descriptionPage1 = DexDescription_Tropius_1, + .descriptionPage2 = DexDescription_Tropius_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 344, + .trainerOffset = 7, + }, + { //Chimecho + .categoryName = _("WIND CHIME"), + .height = 6, + .weight = 10, + .descriptionPage1 = DexDescription_Chimecho_1, + .descriptionPage2 = DexDescription_Chimecho_2, + .pokemonScale = 505, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Absol + .categoryName = _("DISASTER"), + .height = 12, + .weight = 470, + .descriptionPage1 = DexDescription_Absol_1, + .descriptionPage2 = DexDescription_Absol_2, + .pokemonScale = 301, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Wynaut + .categoryName = _("BRIGHT"), + .height = 6, + .weight = 140, + .descriptionPage1 = DexDescription_Wynaut_1, + .descriptionPage2 = DexDescription_Wynaut_2, + .pokemonScale = 484, + .pokemonOffset = 19, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Snorunt + .categoryName = _("SNOW HAT"), + .height = 7, + .weight = 168, + .descriptionPage1 = DexDescription_Snorunt_1, + .descriptionPage2 = DexDescription_Snorunt_2, + .pokemonScale = 380, + .pokemonOffset = 15, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Glalie + .categoryName = _("FACE"), + .height = 15, + .weight = 2565, + .descriptionPage1 = DexDescription_Glalie_1, + .descriptionPage2 = DexDescription_Glalie_2, + .pokemonScale = 256, + .pokemonOffset = 3, + .trainerScale = 344, + .trainerOffset = 0, + }, + { //Spheal + .categoryName = _("CLAP"), + .height = 8, + .weight = 395, + .descriptionPage1 = DexDescription_Spheal_1, + .descriptionPage2 = DexDescription_Spheal_2, + .pokemonScale = 315, + .pokemonOffset = 16, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Sealeo + .categoryName = _("BALL ROLL"), + .height = 11, + .weight = 876, + .descriptionPage1 = DexDescription_Sealeo_1, + .descriptionPage2 = DexDescription_Sealeo_2, + .pokemonScale = 338, + .pokemonOffset = 13, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Walrein + .categoryName = _("ICE BREAK"), + .height = 14, + .weight = 1506, + .descriptionPage1 = DexDescription_Walrein_1, + .descriptionPage2 = DexDescription_Walrein_2, + .pokemonScale = 316, + .pokemonOffset = 4, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Clamperl + .categoryName = _("BIVALVE"), + .height = 4, + .weight = 525, + .descriptionPage1 = DexDescription_Clamperl_1, + .descriptionPage2 = DexDescription_Clamperl_2, + .pokemonScale = 691, + .pokemonOffset = 22, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Huntail + .categoryName = _("DEEP SEA"), + .height = 17, + .weight = 270, + .descriptionPage1 = DexDescription_Huntail_1, + .descriptionPage2 = DexDescription_Huntail_2, + .pokemonScale = 307, + .pokemonOffset = 1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Gorebyss + .categoryName = _("SOUTH SEA"), + .height = 18, + .weight = 226, + .descriptionPage1 = DexDescription_Gorebyss_1, + .descriptionPage2 = DexDescription_Gorebyss_2, + .pokemonScale = 278, + .pokemonOffset = 5, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Relicanth + .categoryName = _("LONGEVITY"), + .height = 10, + .weight = 234, + .descriptionPage1 = DexDescription_Relicanth_1, + .descriptionPage2 = DexDescription_Relicanth_2, + .pokemonScale = 316, + .pokemonOffset = 7, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Luvdisc + .categoryName = _("RENDEZVOUS"), + .height = 6, + .weight = 87, + .descriptionPage1 = DexDescription_Luvdisc_1, + .descriptionPage2 = DexDescription_Luvdisc_2, + .pokemonScale = 371, + .pokemonOffset = 2, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Bagon + .categoryName = _("ROCK HEAD"), + .height = 6, + .weight = 421, + .descriptionPage1 = DexDescription_Bagon_1, + .descriptionPage2 = DexDescription_Bagon_2, + .pokemonScale = 448, + .pokemonOffset = 18, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Shelgon + .categoryName = _("ENDURANCE"), + .height = 11, + .weight = 1105, + .descriptionPage1 = DexDescription_Shelgon_1, + .descriptionPage2 = DexDescription_Shelgon_2, + .pokemonScale = 311, + .pokemonOffset = 12, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Salamence + .categoryName = _("DRAGON"), + .height = 15, + .weight = 1026, + .descriptionPage1 = DexDescription_Salamence_1, + .descriptionPage2 = DexDescription_Salamence_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Beldum + .categoryName = _("IRON BALL"), + .height = 6, + .weight = 952, + .descriptionPage1 = DexDescription_Beldum_1, + .descriptionPage2 = DexDescription_Beldum_2, + .pokemonScale = 414, + .pokemonOffset = -1, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Metang + .categoryName = _("IRON CLAW"), + .height = 12, + .weight = 2025, + .descriptionPage1 = DexDescription_Metang_1, + .descriptionPage2 = DexDescription_Metang_2, + .pokemonScale = 256, + .pokemonOffset = 6, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Metagross + .categoryName = _("IRON LEG"), + .height = 16, + .weight = 5500, + .descriptionPage1 = DexDescription_Metagross_1, + .descriptionPage2 = DexDescription_Metagross_2, + .pokemonScale = 256, + .pokemonOffset = 4, + .trainerScale = 447, + .trainerOffset = 9, + }, + { //Regirock + .categoryName = _("ROCK PEAK"), + .height = 17, + .weight = 2300, + .descriptionPage1 = DexDescription_Regirock_1, + .descriptionPage2 = DexDescription_Regirock_2, + .pokemonScale = 256, + .pokemonOffset = 2, + .trainerScale = 309, + .trainerOffset = 1, + }, + { //Regice + .categoryName = _("ICEBERG"), + .height = 18, + .weight = 1750, + .descriptionPage1 = DexDescription_Regice_1, + .descriptionPage2 = DexDescription_Regice_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 301, + .trainerOffset = 2, + }, + { //Registeel + .categoryName = _("IRON"), + .height = 19, + .weight = 2050, + .descriptionPage1 = DexDescription_Registeel_1, + .descriptionPage2 = DexDescription_Registeel_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 359, + .trainerOffset = 6, + }, + { //Latias + .categoryName = _("EON"), + .height = 14, + .weight = 400, + .descriptionPage1 = DexDescription_Latias_1, + .descriptionPage2 = DexDescription_Latias_2, + .pokemonScale = 304, + .pokemonOffset = 3, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Latios + .categoryName = _("EON"), + .height = 20, + .weight = 600, + .descriptionPage1 = DexDescription_Latios_1, + .descriptionPage2 = DexDescription_Latios_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 294, + .trainerOffset = 3, + }, + { //Kyogre + .categoryName = _("SEA BASIN"), + .height = 45, + .weight = 3520, + .descriptionPage1 = DexDescription_Kyogre_1, + .descriptionPage2 = DexDescription_Kyogre_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 614, + .trainerOffset = 13, + }, + { //Groudon + .categoryName = _("CONTINENT"), + .height = 35, + .weight = 9500, + .descriptionPage1 = DexDescription_Groudon_1, + .descriptionPage2 = DexDescription_Groudon_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 515, + .trainerOffset = 14, + }, + { //Rayquaza + .categoryName = _("SKY HIGH"), + .height = 70, + .weight = 2065, + .descriptionPage1 = DexDescription_Rayquaza_1, + .descriptionPage2 = DexDescription_Rayquaza_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 448, + .trainerOffset = 12, + }, + { //Jirachi + .categoryName = _("WISH"), + .height = 3, + .weight = 11, + .descriptionPage1 = DexDescription_Jirachi_1, + .descriptionPage2 = DexDescription_Jirachi_2, + .pokemonScale = 608, + .pokemonOffset = -8, + .trainerScale = 256, + .trainerOffset = 0, + }, + { //Deoxys + .categoryName = _("DNA"), + .height = 17, + .weight = 608, + .descriptionPage1 = DexDescription_Deoxys_1, + .descriptionPage2 = DexDescription_Deoxys_2, + .pokemonScale = 256, + .pokemonOffset = 0, + .trainerScale = 290, + .trainerOffset = 2, + }, +}; diff --git a/src/data/pokedex_orders.h b/src/data/pokedex_orders.h new file mode 100644 index 000000000..8abb1acd3 --- /dev/null +++ b/src/data/pokedex_orders.h @@ -0,0 +1,1192 @@ +const u16 gPokedexOrder_Alphabetical[] = +{ + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 397, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 410, + 411, + 63, // Abra + 359, // Absol + 142, // Aerodactyl + 306, // Aggron + 190, // Aipom + 65, // Alakazam + 334, // Altaria + 181, // Ampharos + 347, // Anorith + 24, // Arbok + 59, // Arcanine + 168, // Ariados + 348, // Armaldo + 304, // Aron + 144, // Articuno + 184, // Azumarill + 298, // Azurill + 371, // Bagon + 343, // Baltoy + 354, // Banette + 339, // Barboach + 153, // Bayleef + 267, // Beautifly + 15, // Beedrill + 374, // Beldum + 182, // Bellossom + 69, // Bellsprout + 9, // Blastoise + 257, // Blaziken + 242, // Blissey + 286, // Breloom + 1, // Bulbasaur + 12, // Butterfree + 331, // Cacnea + 332, // Cacturne + 323, // Camerupt + 318, // Carvanha + 268, // Cascoon + 351, // Castform + 10, // Caterpie + 251, // Celebi + 113, // Chansey + 6, // Charizard + 4, // Charmander + 5, // Charmeleon + 152, // Chikorita + 358, // Chimecho + 170, // Chinchou + 366, // Clamperl + 344, // Claydol + 36, // Clefable + 35, // Clefairy + 173, // Cleffa + 91, // Cloyster + 256, // Combusken + 341, // Corphish + 222, // Corsola + 346, // Cradily + 342, // Crawdaunt + 169, // Crobat + 159, // Croconaw + 104, // Cubone + 155, // Cyndaquil + 301, // Delcatty + 225, // Delibird + 386, // Deoxys + 87, // Dewgong + 50, // Diglett + 132, // Ditto + 85, // Dodrio + 84, // Doduo + 232, // Donphan + 148, // Dragonair + 149, // Dragonite + 147, // Dratini + 96, // Drowzee + 51, // Dugtrio + 206, // Dunsparce + 356, // Dusclops + 355, // Duskull + 269, // Dustox + 133, // Eevee + 23, // Ekans + 125, // Electabuzz + 309, // Electrike + 101, // Electrode + 239, // Elekid + 244, // Entei + 196, // Espeon + 102, // Exeggcute + 103, // Exeggutor + 295, // Exploud + 83, // Farfetchd + 22, // Fearow + 349, // Feebas + 160, // Feraligatr + 180, // Flaaffy + 136, // Flareon + 330, // Flygon + 205, // Forretress + 162, // Furret + 282, // Gardevoir + 92, // Gastly + 94, // Gengar + 74, // Geodude + 203, // Girafarig + 362, // Glalie + 207, // Gligar + 44, // Gloom + 42, // Golbat + 118, // Goldeen + 55, // Golduck + 76, // Golem + 368, // Gorebyss + 210, // Granbull + 75, // Graveler + 88, // Grimer + 383, // Groudon + 253, // Grovyle + 58, // Growlithe + 326, // Grumpig + 316, // Gulpin + 130, // Gyarados + 297, // Hariyama + 93, // Haunter + 214, // Heracross + 107, // Hitmonchan + 106, // Hitmonlee + 237, // Hitmontop + 250, // Ho-Oh + 163, // Hoothoot + 187, // Hoppip + 116, // Horsea + 229, // Houndoom + 228, // Houndour + 367, // Huntail + 97, // Hypno + 174, // Igglybuff + 314, // Illumise + 2, // Ivysaur + 39, // Jigglypuff + 385, // Jirachi + 135, // Jolteon + 189, // Jumpluff + 124, // Jynx + 140, // Kabuto + 141, // Kabutops + 64, // Kadabra + 14, // Kakuna + 115, // Kangaskhan + 352, // Kecleon + 230, // Kingdra + 99, // Kingler + 281, // Kirlia + 109, // Koffing + 98, // Krabby + 382, // Kyogre + 305, // Lairon + 171, // Lanturn + 131, // Lapras + 246, // Larvitar + 380, // Latias + 381, // Latios + 166, // Ledian + 165, // Ledyba + 108, // Lickitung + 345, // Lileep + 264, // Linoone + 271, // Lombre + 270, // Lotad + 294, // Loudred + 272, // Ludicolo + 249, // Lugia + 337, // Lunatone + 370, // Luvdisc + 68, // Machamp + 67, // Machoke + 66, // Machop + 240, // Magby + 219, // Magcargo + 129, // Magikarp + 126, // Magmar + 81, // Magnemite + 82, // Magneton + 296, // Makuhita + 310, // Manectric + 56, // Mankey + 226, // Mantine + 179, // Mareep + 183, // Marill + 105, // Marowak + 259, // Marshtomp + 284, // Masquerain + 303, // Mawile + 308, // Medicham + 307, // Meditite + 154, // Meganium + 52, // Meowth + 376, // Metagross + 375, // Metang + 11, // Metapod + 151, // Mew + 150, // Mewtwo + 262, // Mightyena + 350, // Milotic + 241, // Miltank + 312, // Minun + 200, // Misdreavus + 146, // Moltres + 122, // Mr. mime + 258, // Mudkip + 89, // Muk + 198, // Murkrow + 177, // Natu + 34, // Nidoking + 31, // Nidoqueen + 29, // Nidoran? + 32, // Nidoran? + 30, // Nidorina + 33, // Nidorino + 290, // Nincada + 38, // Ninetales + 291, // Ninjask + 164, // Noctowl + 299, // Nosepass + 322, // Numel + 274, // Nuzleaf + 224, // Octillery + 43, // Oddish + 138, // Omanyte + 139, // Omastar + 95, // Onix + 46, // Paras + 47, // Parasect + 279, // Pelipper + 53, // Persian + 231, // Phanpy + 172, // Pichu + 18, // Pidgeot + 17, // Pidgeotto + 16, // Pidgey + 25, // Pikachu + 221, // Piloswine + 204, // Pineco + 127, // Pinsir + 311, // Plusle + 186, // Politoed + 60, // Poliwag + 61, // Poliwhirl + 62, // Poliwrath + 77, // Ponyta + 261, // Poochyena + 137, // Porygon + 233, // Porygon2 + 57, // Primeape + 54, // Psyduck + 247, // Pupitar + 195, // Quagsire + 156, // Quilava + 211, // Qwilfish + 26, // Raichu + 243, // Raikou + 280, // Ralts + 78, // Rapidash + 20, // Raticate + 19, // Rattata + 384, // Rayquaza + 378, // Regice + 377, // Regirock + 379, // Registeel + 369, // Relicanth + 223, // Remoraid + 112, // Rhydon + 111, // Rhyhorn + 315, // Roselia + 302, // Sableye + 373, // Salamence + 27, // Sandshrew + 28, // Sandslash + 254, // Sceptile + 212, // Scizor + 123, // Scyther + 117, // Seadra + 119, // Seaking + 364, // Sealeo + 273, // Seedot + 86, // Seel + 161, // Sentret + 336, // Seviper + 319, // Sharpedo + 292, // Shedinja + 372, // Shelgon + 90, // Shellder + 275, // Shiftry + 285, // Shroomish + 213, // Shuckle + 353, // Shuppet + 266, // Silcoon + 227, // Skarmory + 188, // Skiploom + 300, // Skitty + 289, // Slaking + 287, // Slakoth + 80, // Slowbro + 199, // Slowking + 79, // Slowpoke + 218, // Slugma + 235, // Smeargle + 238, // Smoochum + 215, // Sneasel + 143, // Snorlax + 361, // Snorunt + 209, // Snubbull + 338, // Solrock + 21, // Spearow + 363, // Spheal + 167, // Spinarak + 327, // Spinda + 325, // Spoink + 7, // Squirtle + 234, // Stantler + 121, // Starmie + 120, // Staryu + 208, // Steelix + 185, // Sudowoodo + 245, // Suicune + 192, // Sunflora + 191, // Sunkern + 283, // Surskit + 333, // Swablu + 317, // Swalot + 260, // Swampert + 277, // Swellow + 220, // Swinub + 276, // Taillow + 114, // Tangela + 128, // Tauros + 216, // Teddiursa + 72, // Tentacool + 73, // Tentacruel + 175, // Togepi + 176, // Togetic + 255, // Torchic + 324, // Torkoal + 158, // Totodile + 328, // Trapinch + 252, // Treecko + 357, // Tropius + 157, // Typhlosion + 248, // Tyranitar + 236, // Tyrogue + 197, // Umbreon + 201, // Unown + 217, // Ursaring + 134, // Vaporeon + 49, // Venomoth + 48, // Venonat + 3, // Venusaur + 329, // Vibrava + 71, // Victreebel + 288, // Vigoroth + 45, // Vileplume + 313, // Volbeat + 100, // Voltorb + 37, // Vulpix + 320, // Wailmer + 321, // Wailord + 365, // Walrein + 8, // Wartortle + 13, // Weedle + 70, // Weepinbell + 110, // Weezing + 340, // Whiscash + 293, // Whismur + 40, // Wigglytuff + 278, // Wingull + 202, // Wobbuffet + 194, // Wooper + 265, // Wurmple + 360, // Wynaut + 178, // Xatu + 193, // Yanma + 335, // Zangoose + 145, // Zapdos + 263, // Zigzagoon + 41, // Zubat +}; +const u16 gPokedexOrder_Weight[] = +{ + 92, // Gastly + 93, // Haunter + 187, // Hoppip + 50, // Diglett + 351, // Castform + 109, // Koffing + 174, // Igglybuff + 200, // Misdreavus + 358, // Chimecho + 188, // Skiploom + 385, // Jirachi + 333, // Swablu + 292, // Shedinja + 175, // Togepi + 283, // Surskit + 16, // Pidgey + 191, // Sunkern + 339, // Barboach + 172, // Pichu + 298, // Azurill + 315, // Roselia + 177, // Natu + 21, // Spearow + 198, // Murkrow + 353, // Shuppet + 276, // Taillow + 102, // Exeggcute + 255, // Torchic + 270, // Lotad + 10, // Caterpie + 189, // Jumpluff + 173, // Cleffa + 13, // Weedle + 176, // Togetic + 147, // Dratini + 19, // Rattata + 284, // Masquerain + 265, // Wurmple + 211, // Qwilfish + 151, // Mew + 90, // Shellder + 273, // Seedot + 132, // Ditto + 69, // Bellsprout + 311, // Plusle + 52, // Meowth + 312, // Minun + 285, // Shroomish + 251, // Celebi + 222, // Corsola + 252, // Treecko + 327, // Spinda + 201, // Unown + 46, // Paras + 43, // Oddish + 39, // Jigglypuff + 290, // Nincada + 182, // Bellossom + 81, // Magnemite + 25, // Pikachu + 238, // Smoochum + 161, // Sentret + 70, // Weepinbell + 152, // Chikorita + 220, // Swinub + 133, // Eevee + 98, // Krabby + 104, // Cubone + 280, // Ralts + 1, // Bulbasaur + 23, // Ekans + 29, // Nidoran? + 204, // Pineco + 349, // Feebas + 138, // Omanyte + 41, // Zubat + 35, // Clefairy + 258, // Mudkip + 209, // Snubbull + 179, // Mareep + 155, // Cyndaquil + 116, // Horsea + 4, // Charmander + 192, // Sunflora + 183, // Marill + 194, // Wooper + 167, // Spinarak + 44, // Gloom + 370, // Luvdisc + 216, // Teddiursa + 32, // Nidoran? + 7, // Squirtle + 278, // Wingull + 158, // Totodile + 110, // Weezing + 37, // Vulpix + 11, // Metapod + 266, // Silcoon + 129, // Magikarp + 14, // Kakuna + 316, // Gulpin + 100, // Voltorb + 165, // Ledyba + 228, // Houndour + 300, // Skitty + 302, // Sableye + 307, // Meditite + 341, // Corphish + 190, // Aipom + 268, // Cascoon + 303, // Mawile + 140, // Kabuto + 40, // Wigglytuff + 27, // Sandshrew + 223, // Remoraid + 291, // Ninjask + 170, // Chinchou + 60, // Poliwag + 347, // Anorith + 49, // Venomoth + 354, // Banette + 2, // Ivysaur + 180, // Flaaffy + 261, // Poochyena + 360, // Wynaut + 206, // Dunsparce + 178, // Xatu + 355, // Duskull + 83, // Farfetchd + 328, // Trapinch + 118, // Goldeen + 309, // Electrike + 329, // Vibrava + 71, // Victreebel + 153, // Bayleef + 225, // Delibird + 293, // Whismur + 148, // Dragonair + 361, // Snorunt + 263, // Zigzagoon + 314, // Illumise + 313, // Volbeat + 20, // Raticate + 45, // Vileplume + 156, // Quilava + 5, // Charmeleon + 58, // Growlithe + 256, // Combusken + 66, // Machop + 63, // Abra + 33, // Nidorino + 54, // Psyduck + 277, // Swellow + 38, // Ninetales + 30, // Nidorina + 61, // Poliwhirl + 74, // Geodude + 281, // Kirlia + 213, // Shuckle + 334, // Altaria + 318, // Carvanha + 236, // Tyrogue + 163, // Hoothoot + 240, // Magby + 343, // Baltoy + 253, // Grovyle + 352, // Kecleon + 171, // Lanturn + 8, // Wartortle + 368, // Gorebyss + 369, // Relicanth + 239, // Elekid + 340, // Whiscash + 345, // Lileep + 322, // Numel + 287, // Slakoth + 135, // Jolteon + 159, // Croconaw + 136, // Flareon + 117, // Seadra + 196, // Espeon + 367, // Huntail + 197, // Umbreon + 259, // Marshtomp + 274, // Nuzleaf + 215, // Sneasel + 56, // Mankey + 279, // Pelipper + 267, // Beautifly + 224, // Octillery + 184, // Azumarill + 202, // Wobbuffet + 134, // Vaporeon + 28, // Sandslash + 47, // Parasect + 15, // Beedrill + 89, // Muk + 17, // Pidgeotto + 88, // Grimer + 26, // Raichu + 77, // Ponyta + 125, // Electabuzz + 48, // Venonat + 325, // Spoink + 356, // Dusclops + 308, // Medicham + 269, // Dustox + 53, // Persian + 12, // Butterfree + 57, // Primeape + 96, // Drowzee + 162, // Furret + 233, // Porygon2 + 271, // Lombre + 264, // Linoone + 301, // Delcatty + 342, // Crawdaunt + 51, // Dugtrio + 168, // Ariados + 231, // Phanpy + 186, // Politoed + 120, // Staryu + 113, // Chansey + 139, // Omastar + 114, // Tangela + 218, // Slugma + 229, // Houndoom + 166, // Ledian + 79, // Slowpoke + 137, // Porygon + 262, // Mightyena + 193, // Yanma + 22, // Fearow + 185, // Sudowoodo + 119, // Seaking + 286, // Breloom + 84, // Doduo + 18, // Pidgeot + 363, // Spheal + 36, // Clefable + 380, // Latias + 310, // Manectric + 335, // Zangoose + 141, // Kabutops + 94, // Gengar + 294, // Loudred + 124, // Jynx + 164, // Noctowl + 203, // Girafarig + 371, // Bagon + 126, // Magmar + 105, // Marowak + 72, // Tentacool + 288, // Vigoroth + 242, // Blissey + 359, // Absol + 65, // Alakazam + 237, // Hitmontop + 282, // Gardevoir + 210, // Granbull + 106, // Hitmonlee + 107, // Hitmonchan + 227, // Skarmory + 331, // Cacnea + 257, // Blaziken + 254, // Sceptile + 336, // Seviper + 366, // Clamperl + 145, // Zapdos + 214, // Heracross + 62, // Poliwrath + 122, // Mr. mime + 127, // Pinsir + 272, // Ludicolo + 73, // Tentacruel + 42, // Golbat + 219, // Magcargo + 144, // Articuno + 221, // Piloswine + 123, // Scyther + 64, // Kadabra + 235, // Smeargle + 142, // Aerodactyl + 275, // Shiftry + 99, // Kingler + 31, // Nidoqueen + 82, // Magneton + 304, // Aron + 381, // Latios + 146, // Moltres + 346, // Cradily + 386, // Deoxys + 181, // Ampharos + 34, // Nidoking + 207, // Gligar + 24, // Arbok + 108, // Lickitung + 101, // Electrode + 348, // Armaldo + 67, // Machoke + 234, // Stantler + 326, // Grumpig + 246, // Larvitar + 169, // Crobat + 195, // Quagsire + 241, // Miltank + 97, // Hypno + 55, // Golduck + 332, // Cacturne + 80, // Slowbro + 157, // Typhlosion + 199, // Slowking + 115, // Kangaskhan + 121, // Starmie + 317, // Swalot + 324, // Torkoal + 260, // Swampert + 330, // Flygon + 295, // Exploud + 85, // Dodrio + 9, // Blastoise + 296, // Makuhita + 364, // Sealeo + 128, // Tauros + 319, // Sharpedo + 160, // Feraligatr + 86, // Seel + 6, // Charizard + 78, // Rapidash + 374, // Beldum + 299, // Nosepass + 3, // Venusaur + 357, // Tropius + 154, // Meganium + 373, // Salamence + 75, // Graveler + 344, // Claydol + 372, // Shelgon + 111, // Rhyhorn + 212, // Scizor + 87, // Dewgong + 112, // Rhydon + 232, // Donphan + 103, // Exeggutor + 305, // Lairon + 150, // Mewtwo + 217, // Ursaring + 205, // Forretress + 68, // Machamp + 320, // Wailmer + 289, // Slaking + 91, // Cloyster + 365, // Walrein + 247, // Pupitar + 230, // Kingdra + 338, // Solrock + 59, // Arcanine + 350, // Milotic + 337, // Lunatone + 378, // Regice + 243, // Raikou + 245, // Suicune + 244, // Entei + 250, // Ho-Oh + 248, // Tyranitar + 375, // Metang + 379, // Registeel + 384, // Rayquaza + 95, // Onix + 149, // Dragonite + 249, // Lugia + 131, // Lapras + 323, // Camerupt + 226, // Mantine + 377, // Regirock + 130, // Gyarados + 297, // Hariyama + 362, // Glalie + 76, // Golem + 382, // Kyogre + 306, // Aggron + 321, // Wailord + 208, // Steelix + 143, // Snorlax + 376, // Metagross + 383, // Groudon +}; +const u16 gPokedexOrder_Height[] = +{ + 50, // Diglett + 298, // Azurill + 177, // Natu + 13, // Weedle + 172, // Pichu + 173, // Cleffa + 175, // Togepi + 351, // Castform + 174, // Igglybuff + 10, // Caterpie + 276, // Taillow + 132, // Ditto + 133, // Eevee + 315, // Roselia + 21, // Spearow + 16, // Pidgey + 191, // Sunkern + 90, // Shellder + 19, // Rattata + 81, // Magnemite + 46, // Paras + 265, // Wurmple + 385, // Jirachi + 104, // Cubone + 258, // Mudkip + 194, // Wooper + 116, // Horsea + 52, // Meowth + 29, // Nidoran? + 220, // Swinub + 151, // Mew + 333, // Swablu + 304, // Aron + 311, // Plusle + 312, // Minun + 102, // Exeggcute + 25, // Pikachu + 182, // Bellossom + 316, // Gulpin + 263, // Zigzagoon + 285, // Shroomish + 138, // Omanyte + 331, // Cacnea + 98, // Krabby + 280, // Ralts + 187, // Hoppip + 255, // Torchic + 366, // Clamperl + 74, // Geodude + 183, // Marill + 339, // Barboach + 238, // Smoochum + 100, // Voltorb + 290, // Nincada + 302, // Sableye + 198, // Murkrow + 211, // Qwilfish + 7, // Squirtle + 252, // Treecko + 343, // Baltoy + 43, // Oddish + 270, // Lotad + 39, // Jigglypuff + 283, // Surskit + 155, // Cyndaquil + 140, // Kabuto + 264, // Linoone + 324, // Torkoal + 32, // Nidoran? + 167, // Spinarak + 56, // Mankey + 273, // Seedot + 261, // Poochyena + 231, // Phanpy + 201, // Unown + 170, // Chinchou + 233, // Porygon2 + 60, // Poliwag + 371, // Bagon + 349, // Feebas + 353, // Shuppet + 158, // Totodile + 251, // Celebi + 360, // Wynaut + 27, // Sandshrew + 358, // Chimecho + 370, // Luvdisc + 228, // Houndour + 266, // Silcoon + 309, // Electrike + 4, // Charmander + 307, // Meditite + 278, // Wingull + 223, // Remoraid + 341, // Corphish + 222, // Corsola + 314, // Illumise + 209, // Snubbull + 37, // Vulpix + 246, // Larvitar + 374, // Beldum + 293, // Whismur + 204, // Pineco + 239, // Elekid + 35, // Clefairy + 213, // Shuckle + 216, // Teddiursa + 14, // Kakuna + 300, // Skitty + 176, // Togetic + 118, // Goldeen + 303, // Mawile + 179, // Mareep + 188, // Skiploom + 109, // Koffing + 51, // Dugtrio + 268, // Cascoon + 322, // Numel + 347, // Anorith + 313, // Volbeat + 163, // Hoothoot + 328, // Trapinch + 325, // Spoink + 11, // Metapod + 69, // Bellsprout + 361, // Snorunt + 20, // Raticate + 259, // Marshtomp + 277, // Swellow + 240, // Magby + 58, // Growlithe + 200, // Misdreavus + 1, // Bulbasaur + 236, // Tyrogue + 218, // Slugma + 287, // Slakoth + 281, // Kirlia + 190, // Aipom + 135, // Jolteon + 30, // Nidorina + 184, // Azumarill + 292, // Shedinja + 66, // Machop + 291, // Ninjask + 284, // Masquerain + 355, // Duskull + 192, // Sunflora + 189, // Jumpluff + 120, // Staryu + 180, // Flaaffy + 363, // Spheal + 54, // Psyduck + 219, // Magcargo + 83, // Farfetchd + 41, // Zubat + 137, // Porygon + 161, // Sentret + 318, // Carvanha + 44, // Gloom + 26, // Raichu + 129, // Magikarp + 215, // Sneasel + 305, // Lairon + 256, // Combusken + 224, // Octillery + 33, // Nidorino + 136, // Flareon + 225, // Delibird + 72, // Tentacool + 63, // Abra + 253, // Grovyle + 340, // Whiscash + 156, // Quilava + 196, // Espeon + 88, // Grimer + 152, // Chikorita + 326, // Grumpig + 299, // Nosepass + 53, // Persian + 262, // Mightyena + 48, // Venonat + 82, // Magneton + 77, // Ponyta + 296, // Makuhita + 337, // Lunatone + 28, // Sandslash + 96, // Drowzee + 114, // Tangela + 57, // Primeape + 165, // Ledyba + 40, // Wigglytuff + 47, // Parasect + 139, // Omastar + 294, // Loudred + 8, // Wartortle + 75, // Graveler + 197, // Umbreon + 345, // Lileep + 61, // Poliwhirl + 134, // Vaporeon + 15, // Beedrill + 105, // Marowak + 70, // Weepinbell + 369, // Relicanth + 111, // Rhyhorn + 2, // Ivysaur + 352, // Kecleon + 274, // Nuzleaf + 267, // Beautifly + 17, // Pidgeotto + 168, // Ariados + 86, // Seel + 186, // Politoed + 159, // Croconaw + 113, // Chansey + 354, // Banette + 232, // Donphan + 121, // Starmie + 5, // Charmeleon + 221, // Piloswine + 12, // Butterfree + 329, // Vibrava + 125, // Electabuzz + 342, // Crawdaunt + 301, // Delcatty + 334, // Altaria + 372, // Shelgon + 38, // Ninetales + 207, // Gligar + 364, // Sealeo + 327, // Spinda + 247, // Pupitar + 79, // Slowpoke + 338, // Solrock + 241, // Miltank + 22, // Fearow + 45, // Vileplume + 89, // Muk + 205, // Forretress + 185, // Sudowoodo + 359, // Absol + 193, // Yanma + 269, // Dustox + 108, // Lickitung + 235, // Smeargle + 171, // Lanturn + 101, // Electrode + 271, // Lombre + 286, // Breloom + 153, // Bayleef + 117, // Seadra + 110, // Weezing + 279, // Pelipper + 375, // Metang + 31, // Nidoqueen + 332, // Cacturne + 275, // Shiftry + 308, // Medicham + 335, // Zangoose + 141, // Kabutops + 99, // Kingler + 64, // Kadabra + 119, // Seaking + 36, // Clefable + 126, // Magmar + 202, // Wobbuffet + 92, // Gastly + 122, // Mr. mime + 62, // Poliwrath + 128, // Tauros + 380, // Latias + 181, // Ampharos + 288, // Vigoroth + 166, // Ledian + 76, // Golem + 365, // Walrein + 84, // Doduo + 229, // Houndoom + 34, // Nidoking + 124, // Jynx + 107, // Hitmonchan + 234, // Stantler + 210, // Granbull + 237, // Hitmontop + 195, // Quagsire + 344, // Claydol + 260, // Swampert + 242, // Blissey + 272, // Ludicolo + 295, // Exploud + 206, // Dunsparce + 127, // Pinsir + 91, // Cloyster + 67, // Machoke + 203, // Girafarig + 18, // Pidgeot + 178, // Xatu + 346, // Cradily + 106, // Hitmonlee + 49, // Venomoth + 94, // Gengar + 214, // Heracross + 362, // Glalie + 123, // Scyther + 373, // Salamence + 310, // Manectric + 348, // Armaldo + 65, // Alakazam + 97, // Hypno + 164, // Noctowl + 73, // Tentacruel + 356, // Dusclops + 145, // Zapdos + 42, // Golbat + 376, // Metagross + 282, // Gardevoir + 9, // Blastoise + 80, // Slowbro + 93, // Haunter + 68, // Machamp + 377, // Regirock + 317, // Swalot + 254, // Sceptile + 227, // Skarmory + 55, // Golduck + 386, // Deoxys + 71, // Victreebel + 78, // Rapidash + 6, // Charizard + 367, // Huntail + 87, // Dewgong + 144, // Articuno + 157, // Typhlosion + 142, // Aerodactyl + 368, // Gorebyss + 217, // Ursaring + 154, // Meganium + 378, // Regice + 212, // Scizor + 230, // Kingdra + 147, // Dratini + 85, // Dodrio + 319, // Sharpedo + 169, // Crobat + 162, // Furret + 59, // Arcanine + 243, // Raikou + 257, // Blaziken + 323, // Camerupt + 112, // Rhydon + 379, // Registeel + 23, // Ekans + 330, // Flygon + 357, // Tropius + 381, // Latios + 245, // Suicune + 146, // Moltres + 3, // Venusaur + 103, // Exeggutor + 199, // Slowking + 248, // Tyranitar + 289, // Slaking + 320, // Wailmer + 150, // Mewtwo + 306, // Aggron + 143, // Snorlax + 226, // Mantine + 244, // Entei + 149, // Dragonite + 115, // Kangaskhan + 297, // Hariyama + 160, // Feraligatr + 131, // Lapras + 336, // Seviper + 24, // Arbok + 383, // Groudon + 250, // Ho-Oh + 148, // Dragonair + 382, // Kyogre + 249, // Lugia + 350, // Milotic + 130, // Gyarados + 384, // Rayquaza + 95, // Onix + 208, // Steelix + 321, // Wailord +}; diff --git a/src/pokedex.c b/src/pokedex.c index 5f34a57c2..9e7ad1da0 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -5,6 +5,7 @@ #include "data2.h" #include "decompress.h" #include "event_data.h" +#include "graphics.h" #include "m4a.h" #include "main.h" #include "menu.h" @@ -92,8 +93,8 @@ struct PokedexEntry /*0x00*/ u8 categoryName[12]; /*0x0C*/ u16 height; //in decimeters /*0x0E*/ u16 weight; //in hectograms - /*0x10*/ u8 *descriptionPage1; - /*0x14*/ u8 *descriptionPage2; + /*0x10*/ const u8 *descriptionPage1; + /*0x14*/ const u8 *descriptionPage2; /*0x18*/ u16 unused; /*0x1A*/ u16 pokemonScale; /*0x1C*/ u16 pokemonOffset; @@ -149,27 +150,9 @@ extern u8 gUnknown_08E96738[]; extern u8 gUnknown_08E96888[]; extern u8 gUnknown_08E96994[]; extern u8 gUnknown_08E9C6DC[]; -extern struct SpriteTemplate gSpriteTemplate_83A0524; -extern struct SpriteTemplate gSpriteTemplate_83A053C; -extern struct SpriteTemplate gSpriteTemplate_83A0554; -extern struct SpriteTemplate gSpriteTemplate_83A056C; -extern struct SpriteTemplate gSpriteTemplate_83A0584; -extern struct SpriteTemplate gSpriteTemplate_83A059C; -extern struct SpriteTemplate gSpriteTemplate_83A05B4; -extern struct SpriteSheet gUnknown_083A05CC; -extern struct SpritePalette gUnknown_083A05DC[]; -extern u8 gUnknown_083A05EC[]; -extern u8 gUnknown_083A05F1[]; -extern u8 gUnknown_083A05F8[]; -extern u8 gUnknown_083B4EC4[]; -extern u8 gUnknown_083B5558[]; -extern void *const gUnknown_083B5584[]; -extern struct SpriteFrameImage *const gUnknown_083B5794[]; extern const struct SpriteTemplate gUnknown_083B57A4; -extern const u8 gUnknown_083B57BC[][4]; extern const struct UnknownStruct3 gUnknown_083B57E4[]; extern const struct UnknownStruct4 gUnknown_083B57FC[]; -extern const u8 gUnknown_083B5850[][4]; extern const u8 gUnknown_083B586C[][4]; extern const u8 gUnknown_083B5888[][4]; extern const u8 gUnknown_083B58A4[][4]; @@ -188,8 +171,8 @@ extern u8 gUnknown_08D00524[]; extern u8 gUnknown_08E96BD4[]; extern u8 gUnknown_08E96ACC[]; extern u8 gUnknown_08E96B58[]; -extern u16 gPokedexMenu_Pal[]; -extern u16 gPokedexMenu2_Pal[]; +extern const u16 gPokedexMenu_Pal[]; +extern const u16 gPokedexMenu2_Pal[]; extern const u8 *const gMonFootprintTable[]; extern const struct SpriteSheet gTrainerFrontPicTable[]; extern const struct MonCoords gTrainerFrontPicCoords[]; @@ -198,6 +181,8 @@ extern const struct BaseStats gBaseStats[]; extern const u8 gPokedexMenuSearch_Gfx[]; extern const u8 gUnknown_08E96D2C[]; extern const u16 gPokedexMenuSearch_Pal[]; +extern const u8 gTypeNames[][7]; +extern const u8 gPokedexMenu2_Gfx[]; extern void sub_814AD7C(u8, u8); extern void sub_800D74C(); @@ -217,1198 +202,7 @@ const u8 gEmptySpacce_839F7FC[0xA4] = {0}; const u8 gUnknown_0839F8A0[] = INCBIN_U8("graphics/pokedex/pokedex_cry_layout.bin.lz"); const u8 gUnknown_0839F988[] = INCBIN_U8("graphics/pokedex/pokedex_size_layout.bin.lz"); const u8 gUnknown_0839FA7C[] = INCBIN_U8("graphics/pokedex/noball.4bpp.lz"); -const u16 gPokedexOrder_Alphabetical[] = -{ - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 397, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 410, - 411, - 63, // Abra - 359, // Absol - 142, // Aerodactyl - 306, // Aggron - 190, // Aipom - 65, // Alakazam - 334, // Altaria - 181, // Ampharos - 347, // Anorith - 24, // Arbok - 59, // Arcanine - 168, // Ariados - 348, // Armaldo - 304, // Aron - 144, // Articuno - 184, // Azumarill - 298, // Azurill - 371, // Bagon - 343, // Baltoy - 354, // Banette - 339, // Barboach - 153, // Bayleef - 267, // Beautifly - 15, // Beedrill - 374, // Beldum - 182, // Bellossom - 69, // Bellsprout - 9, // Blastoise - 257, // Blaziken - 242, // Blissey - 286, // Breloom - 1, // Bulbasaur - 12, // Butterfree - 331, // Cacnea - 332, // Cacturne - 323, // Camerupt - 318, // Carvanha - 268, // Cascoon - 351, // Castform - 10, // Caterpie - 251, // Celebi - 113, // Chansey - 6, // Charizard - 4, // Charmander - 5, // Charmeleon - 152, // Chikorita - 358, // Chimecho - 170, // Chinchou - 366, // Clamperl - 344, // Claydol - 36, // Clefable - 35, // Clefairy - 173, // Cleffa - 91, // Cloyster - 256, // Combusken - 341, // Corphish - 222, // Corsola - 346, // Cradily - 342, // Crawdaunt - 169, // Crobat - 159, // Croconaw - 104, // Cubone - 155, // Cyndaquil - 301, // Delcatty - 225, // Delibird - 386, // Deoxys - 87, // Dewgong - 50, // Diglett - 132, // Ditto - 85, // Dodrio - 84, // Doduo - 232, // Donphan - 148, // Dragonair - 149, // Dragonite - 147, // Dratini - 96, // Drowzee - 51, // Dugtrio - 206, // Dunsparce - 356, // Dusclops - 355, // Duskull - 269, // Dustox - 133, // Eevee - 23, // Ekans - 125, // Electabuzz - 309, // Electrike - 101, // Electrode - 239, // Elekid - 244, // Entei - 196, // Espeon - 102, // Exeggcute - 103, // Exeggutor - 295, // Exploud - 83, // Farfetch’d - 22, // Fearow - 349, // Feebas - 160, // Feraligatr - 180, // Flaaffy - 136, // Flareon - 330, // Flygon - 205, // Forretress - 162, // Furret - 282, // Gardevoir - 92, // Gastly - 94, // Gengar - 74, // Geodude - 203, // Girafarig - 362, // Glalie - 207, // Gligar - 44, // Gloom - 42, // Golbat - 118, // Goldeen - 55, // Golduck - 76, // Golem - 368, // Gorebyss - 210, // Granbull - 75, // Graveler - 88, // Grimer - 383, // Groudon - 253, // Grovyle - 58, // Growlithe - 326, // Grumpig - 316, // Gulpin - 130, // Gyarados - 297, // Hariyama - 93, // Haunter - 214, // Heracross - 107, // Hitmonchan - 106, // Hitmonlee - 237, // Hitmontop - 250, // Ho-Oh - 163, // Hoothoot - 187, // Hoppip - 116, // Horsea - 229, // Houndoom - 228, // Houndour - 367, // Huntail - 97, // Hypno - 174, // Igglybuff - 314, // Illumise - 2, // Ivysaur - 39, // Jigglypuff - 385, // Jirachi - 135, // Jolteon - 189, // Jumpluff - 124, // Jynx - 140, // Kabuto - 141, // Kabutops - 64, // Kadabra - 14, // Kakuna - 115, // Kangaskhan - 352, // Kecleon - 230, // Kingdra - 99, // Kingler - 281, // Kirlia - 109, // Koffing - 98, // Krabby - 382, // Kyogre - 305, // Lairon - 171, // Lanturn - 131, // Lapras - 246, // Larvitar - 380, // Latias - 381, // Latios - 166, // Ledian - 165, // Ledyba - 108, // Lickitung - 345, // Lileep - 264, // Linoone - 271, // Lombre - 270, // Lotad - 294, // Loudred - 272, // Ludicolo - 249, // Lugia - 337, // Lunatone - 370, // Luvdisc - 68, // Machamp - 67, // Machoke - 66, // Machop - 240, // Magby - 219, // Magcargo - 129, // Magikarp - 126, // Magmar - 81, // Magnemite - 82, // Magneton - 296, // Makuhita - 310, // Manectric - 56, // Mankey - 226, // Mantine - 179, // Mareep - 183, // Marill - 105, // Marowak - 259, // Marshtomp - 284, // Masquerain - 303, // Mawile - 308, // Medicham - 307, // Meditite - 154, // Meganium - 52, // Meowth - 376, // Metagross - 375, // Metang - 11, // Metapod - 151, // Mew - 150, // Mewtwo - 262, // Mightyena - 350, // Milotic - 241, // Miltank - 312, // Minun - 200, // Misdreavus - 146, // Moltres - 122, // Mr. mime - 258, // Mudkip - 89, // Muk - 198, // Murkrow - 177, // Natu - 34, // Nidoking - 31, // Nidoqueen - 29, // Nidoran♀ - 32, // Nidoran♂ - 30, // Nidorina - 33, // Nidorino - 290, // Nincada - 38, // Ninetales - 291, // Ninjask - 164, // Noctowl - 299, // Nosepass - 322, // Numel - 274, // Nuzleaf - 224, // Octillery - 43, // Oddish - 138, // Omanyte - 139, // Omastar - 95, // Onix - 46, // Paras - 47, // Parasect - 279, // Pelipper - 53, // Persian - 231, // Phanpy - 172, // Pichu - 18, // Pidgeot - 17, // Pidgeotto - 16, // Pidgey - 25, // Pikachu - 221, // Piloswine - 204, // Pineco - 127, // Pinsir - 311, // Plusle - 186, // Politoed - 60, // Poliwag - 61, // Poliwhirl - 62, // Poliwrath - 77, // Ponyta - 261, // Poochyena - 137, // Porygon - 233, // Porygon2 - 57, // Primeape - 54, // Psyduck - 247, // Pupitar - 195, // Quagsire - 156, // Quilava - 211, // Qwilfish - 26, // Raichu - 243, // Raikou - 280, // Ralts - 78, // Rapidash - 20, // Raticate - 19, // Rattata - 384, // Rayquaza - 378, // Regice - 377, // Regirock - 379, // Registeel - 369, // Relicanth - 223, // Remoraid - 112, // Rhydon - 111, // Rhyhorn - 315, // Roselia - 302, // Sableye - 373, // Salamence - 27, // Sandshrew - 28, // Sandslash - 254, // Sceptile - 212, // Scizor - 123, // Scyther - 117, // Seadra - 119, // Seaking - 364, // Sealeo - 273, // Seedot - 86, // Seel - 161, // Sentret - 336, // Seviper - 319, // Sharpedo - 292, // Shedinja - 372, // Shelgon - 90, // Shellder - 275, // Shiftry - 285, // Shroomish - 213, // Shuckle - 353, // Shuppet - 266, // Silcoon - 227, // Skarmory - 188, // Skiploom - 300, // Skitty - 289, // Slaking - 287, // Slakoth - 80, // Slowbro - 199, // Slowking - 79, // Slowpoke - 218, // Slugma - 235, // Smeargle - 238, // Smoochum - 215, // Sneasel - 143, // Snorlax - 361, // Snorunt - 209, // Snubbull - 338, // Solrock - 21, // Spearow - 363, // Spheal - 167, // Spinarak - 327, // Spinda - 325, // Spoink - 7, // Squirtle - 234, // Stantler - 121, // Starmie - 120, // Staryu - 208, // Steelix - 185, // Sudowoodo - 245, // Suicune - 192, // Sunflora - 191, // Sunkern - 283, // Surskit - 333, // Swablu - 317, // Swalot - 260, // Swampert - 277, // Swellow - 220, // Swinub - 276, // Taillow - 114, // Tangela - 128, // Tauros - 216, // Teddiursa - 72, // Tentacool - 73, // Tentacruel - 175, // Togepi - 176, // Togetic - 255, // Torchic - 324, // Torkoal - 158, // Totodile - 328, // Trapinch - 252, // Treecko - 357, // Tropius - 157, // Typhlosion - 248, // Tyranitar - 236, // Tyrogue - 197, // Umbreon - 201, // Unown - 217, // Ursaring - 134, // Vaporeon - 49, // Venomoth - 48, // Venonat - 3, // Venusaur - 329, // Vibrava - 71, // Victreebel - 288, // Vigoroth - 45, // Vileplume - 313, // Volbeat - 100, // Voltorb - 37, // Vulpix - 320, // Wailmer - 321, // Wailord - 365, // Walrein - 8, // Wartortle - 13, // Weedle - 70, // Weepinbell - 110, // Weezing - 340, // Whiscash - 293, // Whismur - 40, // Wigglytuff - 278, // Wingull - 202, // Wobbuffet - 194, // Wooper - 265, // Wurmple - 360, // Wynaut - 178, // Xatu - 193, // Yanma - 335, // Zangoose - 145, // Zapdos - 263, // Zigzagoon - 41, // Zubat -}; -const u16 gPokedexOrder_Weight[] = -{ - 92, // Gastly - 93, // Haunter - 187, // Hoppip - 50, // Diglett - 351, // Castform - 109, // Koffing - 174, // Igglybuff - 200, // Misdreavus - 358, // Chimecho - 188, // Skiploom - 385, // Jirachi - 333, // Swablu - 292, // Shedinja - 175, // Togepi - 283, // Surskit - 16, // Pidgey - 191, // Sunkern - 339, // Barboach - 172, // Pichu - 298, // Azurill - 315, // Roselia - 177, // Natu - 21, // Spearow - 198, // Murkrow - 353, // Shuppet - 276, // Taillow - 102, // Exeggcute - 255, // Torchic - 270, // Lotad - 10, // Caterpie - 189, // Jumpluff - 173, // Cleffa - 13, // Weedle - 176, // Togetic - 147, // Dratini - 19, // Rattata - 284, // Masquerain - 265, // Wurmple - 211, // Qwilfish - 151, // Mew - 90, // Shellder - 273, // Seedot - 132, // Ditto - 69, // Bellsprout - 311, // Plusle - 52, // Meowth - 312, // Minun - 285, // Shroomish - 251, // Celebi - 222, // Corsola - 252, // Treecko - 327, // Spinda - 201, // Unown - 46, // Paras - 43, // Oddish - 39, // Jigglypuff - 290, // Nincada - 182, // Bellossom - 81, // Magnemite - 25, // Pikachu - 238, // Smoochum - 161, // Sentret - 70, // Weepinbell - 152, // Chikorita - 220, // Swinub - 133, // Eevee - 98, // Krabby - 104, // Cubone - 280, // Ralts - 1, // Bulbasaur - 23, // Ekans - 29, // Nidoran♀ - 204, // Pineco - 349, // Feebas - 138, // Omanyte - 41, // Zubat - 35, // Clefairy - 258, // Mudkip - 209, // Snubbull - 179, // Mareep - 155, // Cyndaquil - 116, // Horsea - 4, // Charmander - 192, // Sunflora - 183, // Marill - 194, // Wooper - 167, // Spinarak - 44, // Gloom - 370, // Luvdisc - 216, // Teddiursa - 32, // Nidoran♂ - 7, // Squirtle - 278, // Wingull - 158, // Totodile - 110, // Weezing - 37, // Vulpix - 11, // Metapod - 266, // Silcoon - 129, // Magikarp - 14, // Kakuna - 316, // Gulpin - 100, // Voltorb - 165, // Ledyba - 228, // Houndour - 300, // Skitty - 302, // Sableye - 307, // Meditite - 341, // Corphish - 190, // Aipom - 268, // Cascoon - 303, // Mawile - 140, // Kabuto - 40, // Wigglytuff - 27, // Sandshrew - 223, // Remoraid - 291, // Ninjask - 170, // Chinchou - 60, // Poliwag - 347, // Anorith - 49, // Venomoth - 354, // Banette - 2, // Ivysaur - 180, // Flaaffy - 261, // Poochyena - 360, // Wynaut - 206, // Dunsparce - 178, // Xatu - 355, // Duskull - 83, // Farfetch’d - 328, // Trapinch - 118, // Goldeen - 309, // Electrike - 329, // Vibrava - 71, // Victreebel - 153, // Bayleef - 225, // Delibird - 293, // Whismur - 148, // Dragonair - 361, // Snorunt - 263, // Zigzagoon - 314, // Illumise - 313, // Volbeat - 20, // Raticate - 45, // Vileplume - 156, // Quilava - 5, // Charmeleon - 58, // Growlithe - 256, // Combusken - 66, // Machop - 63, // Abra - 33, // Nidorino - 54, // Psyduck - 277, // Swellow - 38, // Ninetales - 30, // Nidorina - 61, // Poliwhirl - 74, // Geodude - 281, // Kirlia - 213, // Shuckle - 334, // Altaria - 318, // Carvanha - 236, // Tyrogue - 163, // Hoothoot - 240, // Magby - 343, // Baltoy - 253, // Grovyle - 352, // Kecleon - 171, // Lanturn - 8, // Wartortle - 368, // Gorebyss - 369, // Relicanth - 239, // Elekid - 340, // Whiscash - 345, // Lileep - 322, // Numel - 287, // Slakoth - 135, // Jolteon - 159, // Croconaw - 136, // Flareon - 117, // Seadra - 196, // Espeon - 367, // Huntail - 197, // Umbreon - 259, // Marshtomp - 274, // Nuzleaf - 215, // Sneasel - 56, // Mankey - 279, // Pelipper - 267, // Beautifly - 224, // Octillery - 184, // Azumarill - 202, // Wobbuffet - 134, // Vaporeon - 28, // Sandslash - 47, // Parasect - 15, // Beedrill - 89, // Muk - 17, // Pidgeotto - 88, // Grimer - 26, // Raichu - 77, // Ponyta - 125, // Electabuzz - 48, // Venonat - 325, // Spoink - 356, // Dusclops - 308, // Medicham - 269, // Dustox - 53, // Persian - 12, // Butterfree - 57, // Primeape - 96, // Drowzee - 162, // Furret - 233, // Porygon2 - 271, // Lombre - 264, // Linoone - 301, // Delcatty - 342, // Crawdaunt - 51, // Dugtrio - 168, // Ariados - 231, // Phanpy - 186, // Politoed - 120, // Staryu - 113, // Chansey - 139, // Omastar - 114, // Tangela - 218, // Slugma - 229, // Houndoom - 166, // Ledian - 79, // Slowpoke - 137, // Porygon - 262, // Mightyena - 193, // Yanma - 22, // Fearow - 185, // Sudowoodo - 119, // Seaking - 286, // Breloom - 84, // Doduo - 18, // Pidgeot - 363, // Spheal - 36, // Clefable - 380, // Latias - 310, // Manectric - 335, // Zangoose - 141, // Kabutops - 94, // Gengar - 294, // Loudred - 124, // Jynx - 164, // Noctowl - 203, // Girafarig - 371, // Bagon - 126, // Magmar - 105, // Marowak - 72, // Tentacool - 288, // Vigoroth - 242, // Blissey - 359, // Absol - 65, // Alakazam - 237, // Hitmontop - 282, // Gardevoir - 210, // Granbull - 106, // Hitmonlee - 107, // Hitmonchan - 227, // Skarmory - 331, // Cacnea - 257, // Blaziken - 254, // Sceptile - 336, // Seviper - 366, // Clamperl - 145, // Zapdos - 214, // Heracross - 62, // Poliwrath - 122, // Mr. mime - 127, // Pinsir - 272, // Ludicolo - 73, // Tentacruel - 42, // Golbat - 219, // Magcargo - 144, // Articuno - 221, // Piloswine - 123, // Scyther - 64, // Kadabra - 235, // Smeargle - 142, // Aerodactyl - 275, // Shiftry - 99, // Kingler - 31, // Nidoqueen - 82, // Magneton - 304, // Aron - 381, // Latios - 146, // Moltres - 346, // Cradily - 386, // Deoxys - 181, // Ampharos - 34, // Nidoking - 207, // Gligar - 24, // Arbok - 108, // Lickitung - 101, // Electrode - 348, // Armaldo - 67, // Machoke - 234, // Stantler - 326, // Grumpig - 246, // Larvitar - 169, // Crobat - 195, // Quagsire - 241, // Miltank - 97, // Hypno - 55, // Golduck - 332, // Cacturne - 80, // Slowbro - 157, // Typhlosion - 199, // Slowking - 115, // Kangaskhan - 121, // Starmie - 317, // Swalot - 324, // Torkoal - 260, // Swampert - 330, // Flygon - 295, // Exploud - 85, // Dodrio - 9, // Blastoise - 296, // Makuhita - 364, // Sealeo - 128, // Tauros - 319, // Sharpedo - 160, // Feraligatr - 86, // Seel - 6, // Charizard - 78, // Rapidash - 374, // Beldum - 299, // Nosepass - 3, // Venusaur - 357, // Tropius - 154, // Meganium - 373, // Salamence - 75, // Graveler - 344, // Claydol - 372, // Shelgon - 111, // Rhyhorn - 212, // Scizor - 87, // Dewgong - 112, // Rhydon - 232, // Donphan - 103, // Exeggutor - 305, // Lairon - 150, // Mewtwo - 217, // Ursaring - 205, // Forretress - 68, // Machamp - 320, // Wailmer - 289, // Slaking - 91, // Cloyster - 365, // Walrein - 247, // Pupitar - 230, // Kingdra - 338, // Solrock - 59, // Arcanine - 350, // Milotic - 337, // Lunatone - 378, // Regice - 243, // Raikou - 245, // Suicune - 244, // Entei - 250, // Ho-Oh - 248, // Tyranitar - 375, // Metang - 379, // Registeel - 384, // Rayquaza - 95, // Onix - 149, // Dragonite - 249, // Lugia - 131, // Lapras - 323, // Camerupt - 226, // Mantine - 377, // Regirock - 130, // Gyarados - 297, // Hariyama - 362, // Glalie - 76, // Golem - 382, // Kyogre - 306, // Aggron - 321, // Wailord - 208, // Steelix - 143, // Snorlax - 376, // Metagross - 383, // Groudon -}; -const u16 gPokedexOrder_Height[] = -{ - 50, // Diglett - 298, // Azurill - 177, // Natu - 13, // Weedle - 172, // Pichu - 173, // Cleffa - 175, // Togepi - 351, // Castform - 174, // Igglybuff - 10, // Caterpie - 276, // Taillow - 132, // Ditto - 133, // Eevee - 315, // Roselia - 21, // Spearow - 16, // Pidgey - 191, // Sunkern - 90, // Shellder - 19, // Rattata - 81, // Magnemite - 46, // Paras - 265, // Wurmple - 385, // Jirachi - 104, // Cubone - 258, // Mudkip - 194, // Wooper - 116, // Horsea - 52, // Meowth - 29, // Nidoran♀ - 220, // Swinub - 151, // Mew - 333, // Swablu - 304, // Aron - 311, // Plusle - 312, // Minun - 102, // Exeggcute - 25, // Pikachu - 182, // Bellossom - 316, // Gulpin - 263, // Zigzagoon - 285, // Shroomish - 138, // Omanyte - 331, // Cacnea - 98, // Krabby - 280, // Ralts - 187, // Hoppip - 255, // Torchic - 366, // Clamperl - 74, // Geodude - 183, // Marill - 339, // Barboach - 238, // Smoochum - 100, // Voltorb - 290, // Nincada - 302, // Sableye - 198, // Murkrow - 211, // Qwilfish - 7, // Squirtle - 252, // Treecko - 343, // Baltoy - 43, // Oddish - 270, // Lotad - 39, // Jigglypuff - 283, // Surskit - 155, // Cyndaquil - 140, // Kabuto - 264, // Linoone - 324, // Torkoal - 32, // Nidoran♂ - 167, // Spinarak - 56, // Mankey - 273, // Seedot - 261, // Poochyena - 231, // Phanpy - 201, // Unown - 170, // Chinchou - 233, // Porygon2 - 60, // Poliwag - 371, // Bagon - 349, // Feebas - 353, // Shuppet - 158, // Totodile - 251, // Celebi - 360, // Wynaut - 27, // Sandshrew - 358, // Chimecho - 370, // Luvdisc - 228, // Houndour - 266, // Silcoon - 309, // Electrike - 4, // Charmander - 307, // Meditite - 278, // Wingull - 223, // Remoraid - 341, // Corphish - 222, // Corsola - 314, // Illumise - 209, // Snubbull - 37, // Vulpix - 246, // Larvitar - 374, // Beldum - 293, // Whismur - 204, // Pineco - 239, // Elekid - 35, // Clefairy - 213, // Shuckle - 216, // Teddiursa - 14, // Kakuna - 300, // Skitty - 176, // Togetic - 118, // Goldeen - 303, // Mawile - 179, // Mareep - 188, // Skiploom - 109, // Koffing - 51, // Dugtrio - 268, // Cascoon - 322, // Numel - 347, // Anorith - 313, // Volbeat - 163, // Hoothoot - 328, // Trapinch - 325, // Spoink - 11, // Metapod - 69, // Bellsprout - 361, // Snorunt - 20, // Raticate - 259, // Marshtomp - 277, // Swellow - 240, // Magby - 58, // Growlithe - 200, // Misdreavus - 1, // Bulbasaur - 236, // Tyrogue - 218, // Slugma - 287, // Slakoth - 281, // Kirlia - 190, // Aipom - 135, // Jolteon - 30, // Nidorina - 184, // Azumarill - 292, // Shedinja - 66, // Machop - 291, // Ninjask - 284, // Masquerain - 355, // Duskull - 192, // Sunflora - 189, // Jumpluff - 120, // Staryu - 180, // Flaaffy - 363, // Spheal - 54, // Psyduck - 219, // Magcargo - 83, // Farfetch’d - 41, // Zubat - 137, // Porygon - 161, // Sentret - 318, // Carvanha - 44, // Gloom - 26, // Raichu - 129, // Magikarp - 215, // Sneasel - 305, // Lairon - 256, // Combusken - 224, // Octillery - 33, // Nidorino - 136, // Flareon - 225, // Delibird - 72, // Tentacool - 63, // Abra - 253, // Grovyle - 340, // Whiscash - 156, // Quilava - 196, // Espeon - 88, // Grimer - 152, // Chikorita - 326, // Grumpig - 299, // Nosepass - 53, // Persian - 262, // Mightyena - 48, // Venonat - 82, // Magneton - 77, // Ponyta - 296, // Makuhita - 337, // Lunatone - 28, // Sandslash - 96, // Drowzee - 114, // Tangela - 57, // Primeape - 165, // Ledyba - 40, // Wigglytuff - 47, // Parasect - 139, // Omastar - 294, // Loudred - 8, // Wartortle - 75, // Graveler - 197, // Umbreon - 345, // Lileep - 61, // Poliwhirl - 134, // Vaporeon - 15, // Beedrill - 105, // Marowak - 70, // Weepinbell - 369, // Relicanth - 111, // Rhyhorn - 2, // Ivysaur - 352, // Kecleon - 274, // Nuzleaf - 267, // Beautifly - 17, // Pidgeotto - 168, // Ariados - 86, // Seel - 186, // Politoed - 159, // Croconaw - 113, // Chansey - 354, // Banette - 232, // Donphan - 121, // Starmie - 5, // Charmeleon - 221, // Piloswine - 12, // Butterfree - 329, // Vibrava - 125, // Electabuzz - 342, // Crawdaunt - 301, // Delcatty - 334, // Altaria - 372, // Shelgon - 38, // Ninetales - 207, // Gligar - 364, // Sealeo - 327, // Spinda - 247, // Pupitar - 79, // Slowpoke - 338, // Solrock - 241, // Miltank - 22, // Fearow - 45, // Vileplume - 89, // Muk - 205, // Forretress - 185, // Sudowoodo - 359, // Absol - 193, // Yanma - 269, // Dustox - 108, // Lickitung - 235, // Smeargle - 171, // Lanturn - 101, // Electrode - 271, // Lombre - 286, // Breloom - 153, // Bayleef - 117, // Seadra - 110, // Weezing - 279, // Pelipper - 375, // Metang - 31, // Nidoqueen - 332, // Cacturne - 275, // Shiftry - 308, // Medicham - 335, // Zangoose - 141, // Kabutops - 99, // Kingler - 64, // Kadabra - 119, // Seaking - 36, // Clefable - 126, // Magmar - 202, // Wobbuffet - 92, // Gastly - 122, // Mr. mime - 62, // Poliwrath - 128, // Tauros - 380, // Latias - 181, // Ampharos - 288, // Vigoroth - 166, // Ledian - 76, // Golem - 365, // Walrein - 84, // Doduo - 229, // Houndoom - 34, // Nidoking - 124, // Jynx - 107, // Hitmonchan - 234, // Stantler - 210, // Granbull - 237, // Hitmontop - 195, // Quagsire - 344, // Claydol - 260, // Swampert - 242, // Blissey - 272, // Ludicolo - 295, // Exploud - 206, // Dunsparce - 127, // Pinsir - 91, // Cloyster - 67, // Machoke - 203, // Girafarig - 18, // Pidgeot - 178, // Xatu - 346, // Cradily - 106, // Hitmonlee - 49, // Venomoth - 94, // Gengar - 214, // Heracross - 362, // Glalie - 123, // Scyther - 373, // Salamence - 310, // Manectric - 348, // Armaldo - 65, // Alakazam - 97, // Hypno - 164, // Noctowl - 73, // Tentacruel - 356, // Dusclops - 145, // Zapdos - 42, // Golbat - 376, // Metagross - 282, // Gardevoir - 9, // Blastoise - 80, // Slowbro - 93, // Haunter - 68, // Machamp - 377, // Regirock - 317, // Swalot - 254, // Sceptile - 227, // Skarmory - 55, // Golduck - 386, // Deoxys - 71, // Victreebel - 78, // Rapidash - 6, // Charizard - 367, // Huntail - 87, // Dewgong - 144, // Articuno - 157, // Typhlosion - 142, // Aerodactyl - 368, // Gorebyss - 217, // Ursaring - 154, // Meganium - 378, // Regice - 212, // Scizor - 230, // Kingdra - 147, // Dratini - 85, // Dodrio - 319, // Sharpedo - 169, // Crobat - 162, // Furret - 59, // Arcanine - 243, // Raikou - 257, // Blaziken - 323, // Camerupt - 112, // Rhydon - 379, // Registeel - 23, // Ekans - 330, // Flygon - 357, // Tropius - 381, // Latios - 245, // Suicune - 146, // Moltres - 3, // Venusaur - 103, // Exeggutor - 199, // Slowking - 248, // Tyranitar - 289, // Slaking - 320, // Wailmer - 150, // Mewtwo - 306, // Aggron - 143, // Snorlax - 226, // Mantine - 244, // Entei - 149, // Dragonite - 115, // Kangaskhan - 297, // Hariyama - 160, // Feraligatr - 131, // Lapras - 336, // Seviper - 24, // Arbok - 383, // Groudon - 250, // Ho-Oh - 148, // Dragonair - 382, // Kyogre - 249, // Lugia - 350, // Milotic - 130, // Gyarados - 384, // Rayquaza - 95, // Onix - 208, // Steelix - 321, // Wailord -}; +#include "data/pokedex_orders.h" const struct OamData gOamData_83A0404 = { .y = 160, @@ -1646,6 +440,778 @@ const union AnimCmd *const gSpriteAnimTable_83A0520[] = { gSpriteAnim_83A04CC, }; +const struct SpriteTemplate gSpriteTemplate_83A0524 = +{ + .tileTag = 4096, + .paletteTag = 4096, + .oam = &gOamData_83A0404, + .anims = gSpriteAnimTable_83A04D4, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_808EF38, +}; +const struct SpriteTemplate gSpriteTemplate_83A053C = +{ + .tileTag = 4096, + .paletteTag = 4096, + .oam = &gOamData_83A040C, + .anims = gSpriteAnimTable_83A04D8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_808EF8C, +}; +const struct SpriteTemplate gSpriteTemplate_83A0554 = +{ + .tileTag = 4096, + .paletteTag = 4096, + .oam = &gOamData_83A0414, + .anims = gSpriteAnimTable_83A04E0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_808F08C, +}; +const struct SpriteTemplate gSpriteTemplate_83A056C = +{ + .tileTag = 4096, + .paletteTag = 4096, + .oam = &gOamData_83A041C, + .anims = gSpriteAnimTable_83A04DC, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_808F0B4, +}; +const struct SpriteTemplate gSpriteTemplate_83A0584 = +{ + .tileTag = 4096, + .paletteTag = 4096, + .oam = &gOamData_83A0424, + .anims = gSpriteAnimTable_83A04F0, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_808ED94, +}; +const struct SpriteTemplate gSpriteTemplate_83A059C = +{ + .tileTag = 4096, + .paletteTag = 4096, + .oam = &gOamData_83A042C, + .anims = gSpriteAnimTable_83A04F8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_808ED94, +}; +const struct SpriteTemplate gSpriteTemplate_83A05B4 = +{ + .tileTag = 4096, + .paletteTag = 4096, + .oam = &gOamData_83A042C, + .anims = gSpriteAnimTable_83A0520, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_808F168, +}; +const struct SpriteSheet gUnknown_083A05CC[] = +{ + {gPokedexMenu2_Gfx, 0x1F00, 0x1000}, + {NULL, 0, 0}, +}; +const struct SpritePalette gUnknown_083A05DC[] = +{ + {gPokedexMenu_Pal, 0x1000}, + {NULL, 0}, +}; +const u8 gUnknown_083A05EC[] = {2, 4, 8, 16, 32}; +const u8 gUnknown_083A05F1[] = {16, 8, 4, 2, 1}; +const u8 gEmptySpacce_83A05F6[] = {0, 0}; // Padding, maybe? +const u8 gUnknown_083A05F8[] = _(""); +// TODO: include German entries +#include "data/pokedex_entries_en.h" +const u16 gUnknown_083B4EC4[16] = {0}; +const u8 *const gMonFootprintTable[] = +{ + gMonFootprint_Bulbasaur, + gMonFootprint_Bulbasaur, + gMonFootprint_Ivysaur, + gMonFootprint_Venusaur, + gMonFootprint_Charmander, + gMonFootprint_Charmeleon, + gMonFootprint_Charizard, + gMonFootprint_Squirtle, + gMonFootprint_Wartortle, + gMonFootprint_Blastoise, + gMonFootprint_Caterpie, + gMonFootprint_Metapod, + gMonFootprint_Butterfree, + gMonFootprint_Weedle, + gMonFootprint_Kakuna, + gMonFootprint_Beedrill, + gMonFootprint_Pidgey, + gMonFootprint_Pidgeotto, + gMonFootprint_Pidgeot, + gMonFootprint_Rattata, + gMonFootprint_Raticate, + gMonFootprint_Spearow, + gMonFootprint_Fearow, + gMonFootprint_Ekans, + gMonFootprint_Arbok, + gMonFootprint_Pikachu, + gMonFootprint_Raichu, + gMonFootprint_Sandshrew, + gMonFootprint_Sandslash, + gMonFootprint_NidoranF, + gMonFootprint_Nidorina, + gMonFootprint_Nidoqueen, + gMonFootprint_NidoranM, + gMonFootprint_Nidorino, + gMonFootprint_Nidoking, + gMonFootprint_Clefairy, + gMonFootprint_Clefable, + gMonFootprint_Vulpix, + gMonFootprint_Ninetales, + gMonFootprint_Jigglypuff, + gMonFootprint_Wigglytuff, + gMonFootprint_Zubat, + gMonFootprint_Golbat, + gMonFootprint_Oddish, + gMonFootprint_Gloom, + gMonFootprint_Vileplume, + gMonFootprint_Paras, + gMonFootprint_Parasect, + gMonFootprint_Venonat, + gMonFootprint_Venomoth, + gMonFootprint_Diglett, + gMonFootprint_Dugtrio, + gMonFootprint_Meowth, + gMonFootprint_Persian, + gMonFootprint_Psyduck, + gMonFootprint_Golduck, + gMonFootprint_Mankey, + gMonFootprint_Primeape, + gMonFootprint_Growlithe, + gMonFootprint_Arcanine, + gMonFootprint_Poliwag, + gMonFootprint_Poliwhirl, + gMonFootprint_Poliwrath, + gMonFootprint_Abra, + gMonFootprint_Kadabra, + gMonFootprint_Alakazam, + gMonFootprint_Machop, + gMonFootprint_Machoke, + gMonFootprint_Machamp, + gMonFootprint_Bellsprout, + gMonFootprint_Weepinbell, + gMonFootprint_Victreebel, + gMonFootprint_Tentacool, + gMonFootprint_Tentacruel, + gMonFootprint_Geodude, + gMonFootprint_Graveler, + gMonFootprint_Golem, + gMonFootprint_Ponyta, + gMonFootprint_Rapidash, + gMonFootprint_Slowpoke, + gMonFootprint_Slowbro, + gMonFootprint_Magnemite, + gMonFootprint_Magneton, + gMonFootprint_Farfetchd, + gMonFootprint_Doduo, + gMonFootprint_Dodrio, + gMonFootprint_Seel, + gMonFootprint_Dewgong, + gMonFootprint_Grimer, + gMonFootprint_Muk, + gMonFootprint_Shellder, + gMonFootprint_Cloyster, + gMonFootprint_Gastly, + gMonFootprint_Haunter, + gMonFootprint_Gengar, + gMonFootprint_Onix, + gMonFootprint_Drowzee, + gMonFootprint_Hypno, + gMonFootprint_Krabby, + gMonFootprint_Kingler, + gMonFootprint_Voltorb, + gMonFootprint_Electrode, + gMonFootprint_Exeggcute, + gMonFootprint_Exeggutor, + gMonFootprint_Cubone, + gMonFootprint_Marowak, + gMonFootprint_Hitmonlee, + gMonFootprint_Hitmonchan, + gMonFootprint_Lickitung, + gMonFootprint_Koffing, + gMonFootprint_Weezing, + gMonFootprint_Rhyhorn, + gMonFootprint_Rhydon, + gMonFootprint_Chansey, + gMonFootprint_Tangela, + gMonFootprint_Kangaskhan, + gMonFootprint_Horsea, + gMonFootprint_Seadra, + gMonFootprint_Goldeen, + gMonFootprint_Seaking, + gMonFootprint_Staryu, + gMonFootprint_Starmie, + gMonFootprint_Mrmime, + gMonFootprint_Scyther, + gMonFootprint_Jynx, + gMonFootprint_Electabuzz, + gMonFootprint_Magmar, + gMonFootprint_Pinsir, + gMonFootprint_Tauros, + gMonFootprint_Magikarp, + gMonFootprint_Gyarados, + gMonFootprint_Lapras, + gMonFootprint_Ditto, + gMonFootprint_Eevee, + gMonFootprint_Vaporeon, + gMonFootprint_Jolteon, + gMonFootprint_Flareon, + gMonFootprint_Porygon, + gMonFootprint_Omanyte, + gMonFootprint_Omastar, + gMonFootprint_Kabuto, + gMonFootprint_Kabutops, + gMonFootprint_Aerodactyl, + gMonFootprint_Snorlax, + gMonFootprint_Articuno, + gMonFootprint_Zapdos, + gMonFootprint_Moltres, + gMonFootprint_Dratini, + gMonFootprint_Dragonair, + gMonFootprint_Dragonite, + gMonFootprint_Mewtwo, + gMonFootprint_Mew, + gMonFootprint_Chikorita, + gMonFootprint_Bayleef, + gMonFootprint_Meganium, + gMonFootprint_Cyndaquil, + gMonFootprint_Quilava, + gMonFootprint_Typhlosion, + gMonFootprint_Totodile, + gMonFootprint_Croconaw, + gMonFootprint_Feraligatr, + gMonFootprint_Sentret, + gMonFootprint_Furret, + gMonFootprint_Hoothoot, + gMonFootprint_Noctowl, + gMonFootprint_Ledyba, + gMonFootprint_Ledian, + gMonFootprint_Spinarak, + gMonFootprint_Ariados, + gMonFootprint_Crobat, + gMonFootprint_Chinchou, + gMonFootprint_Lanturn, + gMonFootprint_Pichu, + gMonFootprint_Cleffa, + gMonFootprint_Igglybuff, + gMonFootprint_Togepi, + gMonFootprint_Togetic, + gMonFootprint_Natu, + gMonFootprint_Xatu, + gMonFootprint_Mareep, + gMonFootprint_Flaaffy, + gMonFootprint_Ampharos, + gMonFootprint_Bellossom, + gMonFootprint_Marill, + gMonFootprint_Azumarill, + gMonFootprint_Sudowoodo, + gMonFootprint_Politoed, + gMonFootprint_Hoppip, + gMonFootprint_Skiploom, + gMonFootprint_Jumpluff, + gMonFootprint_Aipom, + gMonFootprint_Sunkern, + gMonFootprint_Sunflora, + gMonFootprint_Yanma, + gMonFootprint_Wooper, + gMonFootprint_Quagsire, + gMonFootprint_Espeon, + gMonFootprint_Umbreon, + gMonFootprint_Murkrow, + gMonFootprint_Slowking, + gMonFootprint_Misdreavus, + gMonFootprint_Unown, + gMonFootprint_Wobbuffet, + gMonFootprint_Girafarig, + gMonFootprint_Pineco, + gMonFootprint_Forretress, + gMonFootprint_Dunsparce, + gMonFootprint_Gligar, + gMonFootprint_Steelix, + gMonFootprint_Snubbull, + gMonFootprint_Granbull, + gMonFootprint_Qwilfish, + gMonFootprint_Scizor, + gMonFootprint_Shuckle, + gMonFootprint_Heracross, + gMonFootprint_Sneasel, + gMonFootprint_Teddiursa, + gMonFootprint_Ursaring, + gMonFootprint_Slugma, + gMonFootprint_Magcargo, + gMonFootprint_Swinub, + gMonFootprint_Piloswine, + gMonFootprint_Corsola, + gMonFootprint_Remoraid, + gMonFootprint_Octillery, + gMonFootprint_Delibird, + gMonFootprint_Mantine, + gMonFootprint_Skarmory, + gMonFootprint_Houndour, + gMonFootprint_Houndoom, + gMonFootprint_Kingdra, + gMonFootprint_Phanpy, + gMonFootprint_Donphan, + gMonFootprint_Porygon2, + gMonFootprint_Stantler, + gMonFootprint_Smeargle, + gMonFootprint_Tyrogue, + gMonFootprint_Hitmontop, + gMonFootprint_Smoochum, + gMonFootprint_Elekid, + gMonFootprint_Magby, + gMonFootprint_Miltank, + gMonFootprint_Blissey, + gMonFootprint_Raikou, + gMonFootprint_Entei, + gMonFootprint_Suicune, + gMonFootprint_Larvitar, + gMonFootprint_Pupitar, + gMonFootprint_Tyranitar, + gMonFootprint_Lugia, + gMonFootprint_HoOh, + gMonFootprint_Celebi, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_QuestionMark, + gMonFootprint_Treecko, + gMonFootprint_Grovyle, + gMonFootprint_Sceptile, + gMonFootprint_Torchic, + gMonFootprint_Combusken, + gMonFootprint_Blaziken, + gMonFootprint_Mudkip, + gMonFootprint_Marshtomp, + gMonFootprint_Swampert, + gMonFootprint_Poochyena, + gMonFootprint_Mightyena, + gMonFootprint_Zigzagoon, + gMonFootprint_Linoone, + gMonFootprint_Wurmple, + gMonFootprint_Silcoon, + gMonFootprint_Beautifly, + gMonFootprint_Cascoon, + gMonFootprint_Dustox, + gMonFootprint_Lotad, + gMonFootprint_Lombre, + gMonFootprint_Ludicolo, + gMonFootprint_Seedot, + gMonFootprint_Nuzleaf, + gMonFootprint_Shiftry, + gMonFootprint_Nincada, + gMonFootprint_Ninjask, + gMonFootprint_Shedinja, + gMonFootprint_Taillow, + gMonFootprint_Swellow, + gMonFootprint_Shroomish, + gMonFootprint_Breloom, + gMonFootprint_Spinda, + gMonFootprint_Wingull, + gMonFootprint_Pelipper, + gMonFootprint_Surskit, + gMonFootprint_Masquerain, + gMonFootprint_Wailmer, + gMonFootprint_Wailord, + gMonFootprint_Skitty, + gMonFootprint_Delcatty, + gMonFootprint_Kecleon, + gMonFootprint_Baltoy, + gMonFootprint_Claydol, + gMonFootprint_Nosepass, + gMonFootprint_Torkoal, + gMonFootprint_Sableye, + gMonFootprint_Barboach, + gMonFootprint_Whiscash, + gMonFootprint_Luvdisc, + gMonFootprint_Corphish, + gMonFootprint_Crawdaunt, + gMonFootprint_Feebas, + gMonFootprint_Milotic, + gMonFootprint_Carvanha, + gMonFootprint_Sharpedo, + gMonFootprint_Trapinch, + gMonFootprint_Vibrava, + gMonFootprint_Flygon, + gMonFootprint_Makuhita, + gMonFootprint_Hariyama, + gMonFootprint_Electrike, + gMonFootprint_Manectric, + gMonFootprint_Numel, + gMonFootprint_Camerupt, + gMonFootprint_Spheal, + gMonFootprint_Sealeo, + gMonFootprint_Walrein, + gMonFootprint_Cacnea, + gMonFootprint_Cacturne, + gMonFootprint_Snorunt, + gMonFootprint_Glalie, + gMonFootprint_Lunatone, + gMonFootprint_Solrock, + gMonFootprint_Azurill, + gMonFootprint_Spoink, + gMonFootprint_Grumpig, + gMonFootprint_Plusle, + gMonFootprint_Minun, + gMonFootprint_Mawile, + gMonFootprint_Meditite, + gMonFootprint_Medicham, + gMonFootprint_Swablu, + gMonFootprint_Altaria, + gMonFootprint_Wynaut, + gMonFootprint_Duskull, + gMonFootprint_Dusclops, + gMonFootprint_Roselia, + gMonFootprint_Slakoth, + gMonFootprint_Vigoroth, + gMonFootprint_Slaking, + gMonFootprint_Gulpin, + gMonFootprint_Swalot, + gMonFootprint_Tropius, + gMonFootprint_Whismur, + gMonFootprint_Loudred, + gMonFootprint_Exploud, + gMonFootprint_Clamperl, + gMonFootprint_Huntail, + gMonFootprint_Gorebyss, + gMonFootprint_Absol, + gMonFootprint_Shuppet, + gMonFootprint_Banette, + gMonFootprint_Seviper, + gMonFootprint_Zangoose, + gMonFootprint_Relicanth, + gMonFootprint_Aron, + gMonFootprint_Lairon, + gMonFootprint_Aggron, + gMonFootprint_Castform, + gMonFootprint_Volbeat, + gMonFootprint_Illumise, + gMonFootprint_Lileep, + gMonFootprint_Cradily, + gMonFootprint_Anorith, + gMonFootprint_Armaldo, + gMonFootprint_Ralts, + gMonFootprint_Kirlia, + gMonFootprint_Gardevoir, + gMonFootprint_Bagon, + gMonFootprint_Shelgon, + gMonFootprint_Salamence, + gMonFootprint_Beldum, + gMonFootprint_Metang, + gMonFootprint_Metagross, + gMonFootprint_Regirock, + gMonFootprint_Regice, + gMonFootprint_Registeel, + gMonFootprint_Kyogre, + gMonFootprint_Groudon, + gMonFootprint_Rayquaza, + gMonFootprint_Latias, + gMonFootprint_Latios, + gMonFootprint_Jirachi, + gMonFootprint_Deoxys, + gMonFootprint_Chimecho, + gMonFootprint_Bulbasaur, +}; +const u8 gUnknown_083B5558[] = _("{CLEAR_TO 0}"); +const u8 gUnknown_083B555C[] = INCBIN_U8("graphics/unknown/unknown_3B555C.bin"); +const struct OamData gOamData_83B557C = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 1, + .paletteNum = 0, + .affineParam = 0, +}; +void *const gUnknown_083B5584[] = +{ + (void *)0x02008000, + (void *)0x0200C000, + (void *)0x02010000, + (void *)0x02014000, +}; +const struct SpriteFrameImage gSpriteImageTable_83B5594[] = +{ + {(u8 *)0x02008000, 0x800}, + {(u8 *)0x02008800, 0x800}, + {(u8 *)0x02009000, 0x800}, + {(u8 *)0x02009800, 0x800}, + {(u8 *)0x0200A000, 0x800}, + {(u8 *)0x0200A800, 0x800}, + {(u8 *)0x0200B000, 0x800}, + {(u8 *)0x0200B800, 0x800}, + {(u8 *)0x0200C000, 0x800}, + {(u8 *)0x0200C800, 0x800}, + {(u8 *)0x0200D000, 0x800}, + {(u8 *)0x0200D800, 0x800}, + {(u8 *)0x0200E000, 0x800}, + {(u8 *)0x0200E800, 0x800}, + {(u8 *)0x0200F000, 0x800}, + {(u8 *)0x0200F800, 0x800}, +}; +const struct SpriteFrameImage gSpriteImageTable_83B5614[] = +{ + {(u8 *)0x0200C000, 0x800}, + {(u8 *)0x0200C800, 0x800}, + {(u8 *)0x0200D000, 0x800}, + {(u8 *)0x0200D800, 0x800}, + {(u8 *)0x0200E000, 0x800}, + {(u8 *)0x0200E800, 0x800}, + {(u8 *)0x0200F000, 0x800}, + {(u8 *)0x0200F800, 0x800}, + {(u8 *)0x02010000, 0x800}, + {(u8 *)0x02010800, 0x800}, + {(u8 *)0x02011000, 0x800}, + {(u8 *)0x02011800, 0x800}, + {(u8 *)0x02012000, 0x800}, + {(u8 *)0x02012800, 0x800}, + {(u8 *)0x02013000, 0x800}, + {(u8 *)0x02013800, 0x800}, +}; +const struct SpriteFrameImage gSpriteImageTable_83B5694[] = +{ + {(u8 *)0x02010000, 0x800}, + {(u8 *)0x02010800, 0x800}, + {(u8 *)0x02011000, 0x800}, + {(u8 *)0x02011800, 0x800}, + {(u8 *)0x02012000, 0x800}, + {(u8 *)0x02012800, 0x800}, + {(u8 *)0x02013000, 0x800}, + {(u8 *)0x02013800, 0x800}, + {(u8 *)0x02014000, 0x800}, + {(u8 *)0x02014800, 0x800}, + {(u8 *)0x02015000, 0x800}, + {(u8 *)0x02015800, 0x800}, + {(u8 *)0x02016000, 0x800}, + {(u8 *)0x02016800, 0x800}, + {(u8 *)0x02017000, 0x800}, + {(u8 *)0x02017800, 0x800}, +}; +const struct SpriteFrameImage gSpriteImageTable_83B5714[] = +{ + {(u8 *)0x02014000, 0x800}, + {(u8 *)0x02014800, 0x800}, + {(u8 *)0x02015000, 0x800}, + {(u8 *)0x02015800, 0x800}, + {(u8 *)0x02016000, 0x800}, + {(u8 *)0x02016800, 0x800}, + {(u8 *)0x02017000, 0x800}, + {(u8 *)0x02017800, 0x800}, + {(u8 *)0x02018000, 0x800}, + {(u8 *)0x02018800, 0x800}, + {(u8 *)0x02019000, 0x800}, + {(u8 *)0x02019800, 0x800}, + {(u8 *)0x0201A000, 0x800}, + {(u8 *)0x0201A800, 0x800}, + {(u8 *)0x0201B000, 0x800}, + {(u8 *)0x0201B800, 0x800}, +}; +const struct SpriteFrameImage *const gUnknown_083B5794[] = +{ + gSpriteImageTable_83B5594, + gSpriteImageTable_83B5614, + gSpriteImageTable_83B5694, + gSpriteImageTable_83B5714, +}; +static void nullsub_59(struct Sprite *); +const struct SpriteTemplate gUnknown_083B57A4 = +{ + .tileTag = 0xFFFF, + .paletteTag = 0, + .oam = &gOamData_83B557C, + .anims = NULL, + .images = gSpriteImageTable_83B5594, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = nullsub_59, +}; +const u8 gUnknown_083B57BC[][4] = +{ + {0, 0, 0, 0}, + {CHAR_A, 3, CHAR_a, 3}, + {CHAR_D, 3, CHAR_d, 3}, + {CHAR_G, 3, CHAR_g, 3}, + {CHAR_J, 3, CHAR_j, 3}, + {CHAR_M, 3, CHAR_m, 3}, + {CHAR_P, 3, CHAR_p, 3}, + {CHAR_S, 3, CHAR_s, 3}, + {CHAR_V, 3, CHAR_v, 3}, + {CHAR_Y, 2, CHAR_y, 2}, +}; +const struct UnknownStruct3 gUnknown_083B57E4[] = +{ + {DexText_SearchForPoke, 0, 0, 5}, + {DexText_SwitchDex, 6, 0, 5}, + {DexText_ReturnToDex, 12, 0, 5}, +}; +const struct UnknownStruct4 gUnknown_083B57FC[] = +{ + {DexText_ListByABC, 0, 2, 5, 5, 2, 12}, + {DexText_ListByColor, 0, 4, 5, 5, 4, 12}, + {DexText_ListByType, 0, 6, 5, 5, 6, 6}, + {DexText_ListByType, 0, 6, 5, 11, 6, 6}, + {DexText_SelectDexList, 0, 8, 5, 5, 8, 12}, + {DexText_SelectDexMode, 0, 10, 5, 5, 10, 12}, + {DexText_ExecuteSearchSwitch, 0, 12, 5, 0, 0, 0}, +}; +const u8 gUnknown_083B5850[][4] = +{ + {0xFF, 0xFF, 0xFF, 1}, + {0xFF, 0xFF, 0, 2}, + {0xFF, 3, 1, 4}, + { 2, 0xFF, 1, 4}, + {0xFF, 0xFF, 2, 5}, + {0xFF, 0xFF, 4, 6}, + {0xFF, 0xFF, 5, 0xFF}, +}; +const u8 gUnknown_083B586C[][4] = +{ + {0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 5}, + {0xFF, 0xFF, 4, 6}, + {0xFF, 0xFF, 5, 0xFF}, +}; +const u8 gUnknown_083B5888[][4] = +{ + {0xFF, 0xFF, 0xFF, 1}, + {0xFF, 0xFF, 0, 2}, + {0xFF, 3, 1, 4}, + { 2, 0xFF, 1, 4}, + {0xFF, 0xFF, 2, 6}, + {0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 4, 0xFF}, +}; +const u8 gUnknown_083B58A4[][4] = +{ + {0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 0xFF, 6}, + {0xFF, 0xFF, 0xFF, 0xFF}, + {0xFF, 0xFF, 4, 0xFF}, +}; +const struct UnknownStruct2 gUnknown_083B58C0[] = +{ + {DexText_HoennDex2, DexText_HoennDex}, + {DexText_NationalDex2, DexText_NationalDex}, + {NULL, NULL}, +}; +const struct UnknownStruct2 gUnknown_083B58D8[] = +{ + {DexText_ListByNumber, DexText_NumericalMode}, + {DexText_ListByABC2, DexText_ABCMode}, + {DexText_ListByHeavyToLightest, DexText_HeaviestMode}, + {DexText_ListByLightToHeaviest, DexText_LightestMode}, + {DexText_ListByTallToSmallest, DexText_TallestMode}, + {DexText_ListBySmallToTallest, DexText_SmallestMode}, + {NULL, NULL}, +}; +const struct UnknownStruct2 gUnknown_083B5910[] = +{ + {DexText_Terminator5, DexText_DontSpecify}, + {DexText_Terminator5, DexText_ABC}, + {DexText_Terminator5, DexText_DEF}, + {DexText_Terminator5, DexText_GHI}, + {DexText_Terminator5, DexText_JKL}, + {DexText_Terminator5, DexText_MNO}, + {DexText_Terminator5, DexText_PQR}, + {DexText_Terminator5, DexText_STU}, + {DexText_Terminator5, DexText_VWX}, + {DexText_Terminator5, DexText_YZ}, + {NULL, NULL}, +}; +const struct UnknownStruct2 gUnknown_083B5968[] = +{ + {DexText_Terminator5, DexText_DontSpecify}, + {DexText_Terminator5, DexText_Red}, + {DexText_Terminator5, DexText_Blue}, + {DexText_Terminator5, DexText_Yellow}, + {DexText_Terminator5, DexText_Green}, + {DexText_Terminator5, DexText_Black}, + {DexText_Terminator5, DexText_Brown}, + {DexText_Terminator5, DexText_Purple}, + {DexText_Terminator5, DexText_Gray}, + {DexText_Terminator5, DexText_White}, + {DexText_Terminator5, DexText_Pink}, + {NULL, NULL}, +}; +const struct UnknownStruct2 gUnknown_083B59C8[] = +{ + {DexText_Terminator5, DexText_None}, + {DexText_Terminator5, gTypeNames[TYPE_NORMAL]}, + {DexText_Terminator5, gTypeNames[TYPE_FIGHTING]}, + {DexText_Terminator5, gTypeNames[TYPE_FLYING]}, + {DexText_Terminator5, gTypeNames[TYPE_POISON]}, + {DexText_Terminator5, gTypeNames[TYPE_GROUND]}, + {DexText_Terminator5, gTypeNames[TYPE_ROCK]}, + {DexText_Terminator5, gTypeNames[TYPE_BUG]}, + {DexText_Terminator5, gTypeNames[TYPE_GHOST]}, + {DexText_Terminator5, gTypeNames[TYPE_STEEL]}, + {DexText_Terminator5, gTypeNames[TYPE_FIRE]}, + {DexText_Terminator5, gTypeNames[TYPE_WATER]}, + {DexText_Terminator5, gTypeNames[TYPE_GRASS]}, + {DexText_Terminator5, gTypeNames[TYPE_ELECTRIC]}, + {DexText_Terminator5, gTypeNames[TYPE_PSYCHIC]}, + {DexText_Terminator5, gTypeNames[TYPE_ICE]}, + {DexText_Terminator5, gTypeNames[TYPE_DRAGON]}, + {DexText_Terminator5, gTypeNames[TYPE_DARK]}, + {NULL, NULL}, +}; +const u8 gUnknown_083B5A60[] = {0, 1}; +const u8 gUnknown_083B5A62[] = {0, 1, 2, 3, 4, 5}; +const u8 gUnknown_083B5A68[] = {0xFF, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17}; +const struct UnknownStruct1 gUnknown_083B5A7C[] = +{ + {gUnknown_083B5910, 6, 7, 10}, + {gUnknown_083B5968, 8, 9, 11}, + {gUnknown_083B59C8, 10, 11, 18}, + {gUnknown_083B59C8, 12, 13, 18}, + {gUnknown_083B58D8, 4, 5, 6}, + {gUnknown_083B58C0, 2, 3, 2}, +}; +const u8 gUnknown_083B5AAC[] = _("{STR_VAR_1}{CLEAR_TO 43}"); +const u8 gUnknown_083B5AB2[] = _("{STR_VAR_1}{CLEAR_TO 96}"); static u32 sub_808E8C8(u16 a, s16 b, s16 c); static u8 sub_808F210(struct PokedexListItem *, u8); @@ -1771,30 +1337,30 @@ void CB2_InitPokedex(void) { case 0: default: - { - u8 *addr; - u32 size; - - SetVBlankCallback(NULL); - sub_8091060(0); - addr = (u8 *)VRAM; - size = VRAM_SIZE; - while (1) { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) + u8 *addr; + u32 size; + + SetVBlankCallback(NULL); + sub_8091060(0); + addr = (u8 *)VRAM; + size = VRAM_SIZE; + while (1) { - DmaFill16(3, 0, addr, size); - break; + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) + { + DmaFill16(3, 0, addr, size); + break; + } } + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + gMain.state = 1; } - DmaClear32(3, OAM, OAM_SIZE); - DmaClear16(3, PLTT, PLTT_SIZE); - gMain.state = 1; break; - } case 1: remove_some_task(); ResetTasks(); @@ -1847,19 +1413,20 @@ void CB2_InitPokedex(void) gMain.state++; break; case 3: - { - u16 savedIme; - - savedIme = REG_IME; - REG_IME = 0; - REG_IE |= 1; - REG_IME = savedIme; - REG_DISPSTAT |= 8; - SetVBlankCallback(sub_808C0B8); - SetMainCallback2(MainCB); - SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder); - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x80); - } + { + u16 savedIme; + + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = savedIme; + REG_DISPSTAT |= 8; + SetVBlankCallback(sub_808C0B8); + SetMainCallback2(MainCB); + SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder); + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x80); + } + break; } } @@ -2310,7 +1877,7 @@ bool8 sub_808D344(u8 a) ResetSpriteData(); FreeAllSpritePalettes(); gReservedSpritePaletteCount = 8; - LoadCompressedObjectPic(&gUnknown_083A05CC); + LoadCompressedObjectPic(&gUnknown_083A05CC[0]); LoadSpritePalettes(gUnknown_083A05DC); sub_808E978(a); gMain.state++; @@ -4164,7 +3731,7 @@ void Task_InitSizeScreenMultistep(u8 taskId) gSprites[spriteId].oam.priority = 0; gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerOffset; SetOamMatrix(1, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale); - LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); + LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, sizeof(gUnknown_083B4EC4)); gMain.state++; break; case 6: @@ -4174,7 +3741,7 @@ void Task_InitSizeScreenMultistep(u8 taskId) gSprites[spriteId].oam.priority = 0; gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonOffset; SetOamMatrix(2, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale); - LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); + LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, sizeof(gUnknown_083B4EC4)); gMain.state++; break; case 7: @@ -5423,9 +4990,6 @@ void sub_8091458(u16 height, u8 left, u8 top) #endif #ifdef UNITS_IMPERIAL -#define CHAR_b (0xD6) -#define CHAR_l (0xE0) -#define CHAR_s (0xE7) void sub_8091564(u16 weight, u8 left, u8 top) { u8 buffer[16]; @@ -5564,7 +5128,7 @@ u16 sub_8091818(u8 a, u16 b, u16 c, u16 d) return b; } -void nullsub_59(void) +static void nullsub_59(struct Sprite *sprite) { } @@ -5804,7 +5368,7 @@ void sub_8091E54(u8 taskId) case 1: SetUpWindowConfig(&gWindowConfig_81E7064); InitMenuWindow(&gWindowConfig_81E7064); - LoadCompressedObjectPic(&gUnknown_083A05CC); + LoadCompressedObjectPic(&gUnknown_083A05CC[0]); LoadSpritePalettes(gUnknown_083A05DC); sub_809308C(taskId); for (i = 0; i < 16; i++) -- cgit v1.2.3 From c8f941f5e3604c8cf1929d30890f935e2a47c450 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 15 Jun 2017 01:41:20 -0500 Subject: make it build again --- src/pokedex.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index e676dfbe4..97818eacb 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1218,6 +1218,7 @@ static u8 sub_808F210(struct PokedexListItem *, u8); static u8 sub_808F284(struct PokedexListItem *, u8); void sub_8090B8C(u8); void sub_8090C28(struct Sprite *); +s8 GetNationalPokedexFlag(u16, u8); u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d); //Not sure of return type void sub_8091E54(u8); void sub_809204C(u8); @@ -1273,7 +1274,7 @@ void sub_808C0A0(void) gUnknown_0202FFBA = 0x40; } -void sub_808C0B8(void) +static void sub_808C0B8(void) { LoadOam(); ProcessSpriteCopyRequests(); @@ -2014,7 +2015,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) { gPokedexView->unk0[gPokedexView->pokemonListCount].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->pokemonListCount].seen = 1; - gPokedexView->unk0[gPokedexView->pokemonListCount].owned = sub_8090D90(vars[2], 1); + gPokedexView->unk0[gPokedexView->pokemonListCount].owned = GetNationalPokedexFlag(vars[2], 1); gPokedexView->pokemonListCount++; } } @@ -4655,7 +4656,7 @@ u16 GetPokedexHeightWeight(u16 dexNum, u8 data) } } -s8 sub_8090D90(u16 a, u8 b) +s8 GetNationalPokedexFlag(u16 a, u8 b) { u8 index; u8 bit; @@ -4723,11 +4724,11 @@ u16 GetNationalPokedexCount(u8 a) switch (a) { case 0: - if (sub_8090D90(i + 1, 0) != 0) + if (GetNationalPokedexFlag(i + 1, 0) != 0) count++; break; case 1: - if (sub_8090D90(i + 1, 1) != 0) + if (GetNationalPokedexFlag(i + 1, 1) != 0) count++; break; } @@ -4745,11 +4746,11 @@ u16 GetHoennPokedexCount(u8 a) switch (a) { case 0: - if (sub_8090D90(HoennToNationalOrder(i + 1), 0) != 0) + if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 0) != 0) count++; break; case 1: - if (sub_8090D90(HoennToNationalOrder(i + 1), 1) != 0) + if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 1) != 0) count++; break; } @@ -4763,7 +4764,7 @@ bool8 sub_8090FC0(void) for (i = 0; i < 200; i++) { - if (sub_8090D90(HoennToNationalOrder(i + 1), 1) == 0) + if (GetNationalPokedexFlag(HoennToNationalOrder(i + 1), 1) == 0) return FALSE; } return TRUE; @@ -4775,17 +4776,17 @@ u16 sub_8090FF4(void) for (i = 0; i < 150; i++) { - if (sub_8090D90(i + 1, 1) == 0) + if (GetNationalPokedexFlag(i + 1, 1) == 0) return 0; } for (i = 152; i < 250; i++) { - if (sub_8090D90(i + 1, 1) == 0) + if (GetNationalPokedexFlag(i + 1, 1) == 0) return 0; } for (i = 252; i < 384; i++) { - if (sub_8090D90(i + 1, 1) == 0) + if (GetNationalPokedexFlag(i + 1, 1) == 0) return 0; } return 1; -- cgit v1.2.3 From 376e4f138497424d8b6061e03862128f54740dd9 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 15 Jun 2017 15:50:43 -0500 Subject: finish later --- src/data/pokedex_orders.h | 6 +- src/pokedex.c | 1094 ++++++++++----------------------------------- 2 files changed, 245 insertions(+), 855 deletions(-) (limited to 'src') diff --git a/src/data/pokedex_orders.h b/src/data/pokedex_orders.h index 8abb1acd3..3577e6793 100644 --- a/src/data/pokedex_orders.h +++ b/src/data/pokedex_orders.h @@ -1,4 +1,4 @@ -const u16 gPokedexOrder_Alphabetical[] = +static const u16 gPokedexOrder_Alphabetical[] = { 387, 388, @@ -412,7 +412,7 @@ const u16 gPokedexOrder_Alphabetical[] = 263, // Zigzagoon 41, // Zubat }; -const u16 gPokedexOrder_Weight[] = +static const u16 gPokedexOrder_Weight[] = { 92, // Gastly 93, // Haunter @@ -801,7 +801,7 @@ const u16 gPokedexOrder_Weight[] = 376, // Metagross 383, // Groudon }; -const u16 gPokedexOrder_Height[] = +static const u16 gPokedexOrder_Height[] = { 50, // Diglett 298, // Azurill diff --git a/src/pokedex.c b/src/pokedex.c index 97818eacb..e74cf5a39 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -145,35 +145,17 @@ extern struct PokedexListItem *gUnknown_0202FFBC; extern u8 gUnknown_03005CE8; extern IntrCallback gUnknown_03005CEC; extern u8 gUnknown_03005E98; -extern u8 gPokedexMenu_Gfx[]; -extern u8 gUnknown_08E96738[]; -extern u8 gUnknown_08E96888[]; -extern u8 gUnknown_08E96994[]; -extern u8 gUnknown_08E9C6DC[]; -extern const struct SpriteTemplate gUnknown_083B57A4; -extern const struct UnknownStruct3 gUnknown_083B57E4[]; -extern const struct UnknownStruct4 gUnknown_083B57FC[]; -extern const u8 gUnknown_083B586C[][4]; -extern const u8 gUnknown_083B5888[][4]; -extern const u8 gUnknown_083B58A4[][4]; -extern const struct UnknownStruct2 gUnknown_083B58C0[]; -extern const struct UnknownStruct2 gUnknown_083B58D8[]; -extern const struct UnknownStruct2 gUnknown_083B5910[]; -extern const struct UnknownStruct2 gUnknown_083B5968[]; -extern const struct UnknownStruct2 gUnknown_083B59C8[]; -extern const u8 gUnknown_083B5A60[]; -extern const u8 gUnknown_083B5A62[]; -extern const u8 gUnknown_083B5A68[]; -extern const struct UnknownStruct1 gUnknown_083B5A7C[]; -extern const u8 gUnknown_083B5AAC[]; -extern const u8 gUnknown_083B5AB2[]; -extern u8 gUnknown_08D00524[]; -extern u8 gUnknown_08E96BD4[]; -extern u8 gUnknown_08E96ACC[]; -extern u8 gUnknown_08E96B58[]; +extern const u8 gPokedexMenu_Gfx[]; +extern const u8 gUnknown_08E96738[]; +extern const u8 gUnknown_08E96888[]; +extern const u8 gUnknown_08E96994[]; +extern const u8 gUnknown_08E9C6DC[]; +extern const u8 gUnknown_08D00524[]; +extern const u8 gUnknown_08E96BD4[]; +extern const u8 gUnknown_08E96ACC[]; +extern const u8 gUnknown_08E96B58[]; extern const u16 gPokedexMenu_Pal[]; extern const u16 gPokedexMenu2_Pal[]; -extern const u8 *const gMonFootprintTable[]; extern const struct SpriteSheet gTrainerFrontPicTable[]; extern const struct MonCoords gTrainerFrontPicCoords[]; extern const struct PokedexEntry gPokedexEntries[]; @@ -196,14 +178,14 @@ extern void sub_805469C(void); extern u16 HoennToNationalOrder(u16); extern u16 NationalToHoennOrder(u16); -const u16 gUnknown_0839F67C[] = INCBIN_U16("graphics/pokedex/search.gbapal"); -const u16 gUnknown_0839F73C[] = INCBIN_U16("graphics/pokedex/national.gbapal"); +static const u16 sPokedexSearchPalette[] = INCBIN_U16("graphics/pokedex/search.gbapal"); +static const u16 sNationalPokedexPalette[] = INCBIN_U16("graphics/pokedex/national.gbapal"); const u8 gEmptySpacce_839F7FC[0xA4] = {0}; -const u8 gUnknown_0839F8A0[] = INCBIN_U8("graphics/pokedex/pokedex_cry_layout.bin.lz"); -const u8 gUnknown_0839F988[] = INCBIN_U8("graphics/pokedex/pokedex_size_layout.bin.lz"); -const u8 gUnknown_0839FA7C[] = INCBIN_U8("graphics/pokedex/noball.4bpp.lz"); +static const u8 gUnknown_0839F8A0[] = INCBIN_U8("graphics/pokedex/pokedex_cry_layout.bin.lz"); +static const u8 gUnknown_0839F988[] = INCBIN_U8("graphics/pokedex/pokedex_size_layout.bin.lz"); +static const u8 gUnknown_0839FA7C[] = INCBIN_U8("graphics/pokedex/noball.4bpp.lz"); #include "data/pokedex_orders.h" -const struct OamData gOamData_83A0404 = +static const struct OamData gOamData_83A0404 = { .y = 160, .affineMode = 0, @@ -219,7 +201,7 @@ const struct OamData gOamData_83A0404 = .paletteNum = 0, .affineParam = 0, }; -const struct OamData gOamData_83A040C = +static const struct OamData gOamData_83A040C = { .y = 160, .affineMode = 0, @@ -235,7 +217,7 @@ const struct OamData gOamData_83A040C = .paletteNum = 0, .affineParam = 0, }; -const struct OamData gOamData_83A0414 = +static const struct OamData gOamData_83A0414 = { .y = 160, .affineMode = 0, @@ -251,7 +233,7 @@ const struct OamData gOamData_83A0414 = .paletteNum = 0, .affineParam = 0, }; -const struct OamData gOamData_83A041C = +static const struct OamData gOamData_83A041C = { .y = 160, .affineMode = 0, @@ -267,7 +249,7 @@ const struct OamData gOamData_83A041C = .paletteNum = 0, .affineParam = 0, }; -const struct OamData gOamData_83A0424 = +static const struct OamData gOamData_83A0424 = { .y = 160, .affineMode = 0, @@ -283,7 +265,7 @@ const struct OamData gOamData_83A0424 = .paletteNum = 0, .affineParam = 0, }; -const struct OamData gOamData_83A042C = +static const struct OamData gOamData_83A042C = { .y = 160, .affineMode = 0, @@ -299,131 +281,131 @@ const struct OamData gOamData_83A042C = .paletteNum = 0, .affineParam = 0, }; -const union AnimCmd gSpriteAnim_83A0434[] = +static const union AnimCmd gSpriteAnim_83A0434[] = { ANIMCMD_FRAME(3, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A043C[] = +static const union AnimCmd gSpriteAnim_83A043C[] = { ANIMCMD_FRAME(1, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A0444[] = +static const union AnimCmd gSpriteAnim_83A0444[] = { ANIMCMD_FRAME(16, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A044C[] = +static const union AnimCmd gSpriteAnim_83A044C[] = { ANIMCMD_FRAME(32, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A0454[] = +static const union AnimCmd gSpriteAnim_83A0454[] = { ANIMCMD_FRAME(64, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A045C[] = +static const union AnimCmd gSpriteAnim_83A045C[] = { ANIMCMD_FRAME(96, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A0464[] = +static const union AnimCmd gSpriteAnim_83A0464[] = { ANIMCMD_FRAME(128, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A046C[] = +static const union AnimCmd gSpriteAnim_83A046C[] = { ANIMCMD_FRAME(160, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A0474[] = +static const union AnimCmd gSpriteAnim_83A0474[] = { ANIMCMD_FRAME(192, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A047C[] = +static const union AnimCmd gSpriteAnim_83A047C[] = { ANIMCMD_FRAME(224, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A0484[] = +static const union AnimCmd gSpriteAnim_83A0484[] = { ANIMCMD_FRAME(226, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A048C[] = +static const union AnimCmd gSpriteAnim_83A048C[] = { ANIMCMD_FRAME(228, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A0494[] = +static const union AnimCmd gSpriteAnim_83A0494[] = { ANIMCMD_FRAME(230, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A049C[] = +static const union AnimCmd gSpriteAnim_83A049C[] = { ANIMCMD_FRAME(232, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A04A4[] = +static const union AnimCmd gSpriteAnim_83A04A4[] = { ANIMCMD_FRAME(234, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A04AC[] = +static const union AnimCmd gSpriteAnim_83A04AC[] = { ANIMCMD_FRAME(236, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A04B4[] = +static const union AnimCmd gSpriteAnim_83A04B4[] = { ANIMCMD_FRAME(238, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A04BC[] = +static const union AnimCmd gSpriteAnim_83A04BC[] = { ANIMCMD_FRAME(240, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A04C4[] = +static const union AnimCmd gSpriteAnim_83A04C4[] = { ANIMCMD_FRAME(242, 30), ANIMCMD_END, }; -const union AnimCmd gSpriteAnim_83A04CC[] = +static const union AnimCmd gSpriteAnim_83A04CC[] = { ANIMCMD_FRAME(4, 30), ANIMCMD_END, }; -const union AnimCmd *const gSpriteAnimTable_83A04D4[] = +static const union AnimCmd *const gSpriteAnimTable_83A04D4[] = { gSpriteAnim_83A0434, }; -const union AnimCmd *const gSpriteAnimTable_83A04D8[] = +static const union AnimCmd *const gSpriteAnimTable_83A04D8[] = { gSpriteAnim_83A043C, }; -const union AnimCmd *const gSpriteAnimTable_83A04DC[] = +static const union AnimCmd *const gSpriteAnimTable_83A04DC[] = { gSpriteAnim_83A0444, }; -const union AnimCmd *const gSpriteAnimTable_83A04E0[] = +static const union AnimCmd *const gSpriteAnimTable_83A04E0[] = { gSpriteAnim_83A044C, gSpriteAnim_83A0454, gSpriteAnim_83A045C, gSpriteAnim_83A0464, }; -const union AnimCmd *const gSpriteAnimTable_83A04F0[] = +static const union AnimCmd *const gSpriteAnimTable_83A04F0[] = { gSpriteAnim_83A046C, gSpriteAnim_83A0474, }; -const union AnimCmd *const gSpriteAnimTable_83A04F8[] = +static const union AnimCmd *const gSpriteAnimTable_83A04F8[] = { gSpriteAnim_83A047C, gSpriteAnim_83A0484, @@ -436,11 +418,11 @@ const union AnimCmd *const gSpriteAnimTable_83A04F8[] = gSpriteAnim_83A04BC, gSpriteAnim_83A04C4, }; -const union AnimCmd *const gSpriteAnimTable_83A0520[] = +static const union AnimCmd *const gSpriteAnimTable_83A0520[] = { gSpriteAnim_83A04CC, }; -const struct SpriteTemplate gSpriteTemplate_83A0524 = +static const struct SpriteTemplate gSpriteTemplate_83A0524 = { .tileTag = 4096, .paletteTag = 4096, @@ -450,7 +432,7 @@ const struct SpriteTemplate gSpriteTemplate_83A0524 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808EF38, }; -const struct SpriteTemplate gSpriteTemplate_83A053C = +static const struct SpriteTemplate gSpriteTemplate_83A053C = { .tileTag = 4096, .paletteTag = 4096, @@ -460,7 +442,7 @@ const struct SpriteTemplate gSpriteTemplate_83A053C = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808EF8C, }; -const struct SpriteTemplate gSpriteTemplate_83A0554 = +static const struct SpriteTemplate gSpriteTemplate_83A0554 = { .tileTag = 4096, .paletteTag = 4096, @@ -470,7 +452,7 @@ const struct SpriteTemplate gSpriteTemplate_83A0554 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808F08C, }; -const struct SpriteTemplate gSpriteTemplate_83A056C = +static const struct SpriteTemplate gSpriteTemplate_83A056C = { .tileTag = 4096, .paletteTag = 4096, @@ -480,7 +462,7 @@ const struct SpriteTemplate gSpriteTemplate_83A056C = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808F0B4, }; -const struct SpriteTemplate gSpriteTemplate_83A0584 = +static const struct SpriteTemplate gSpriteTemplate_83A0584 = { .tileTag = 4096, .paletteTag = 4096, @@ -490,7 +472,7 @@ const struct SpriteTemplate gSpriteTemplate_83A0584 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808ED94, }; -const struct SpriteTemplate gSpriteTemplate_83A059C = +static const struct SpriteTemplate gSpriteTemplate_83A059C = { .tileTag = 4096, .paletteTag = 4096, @@ -500,7 +482,7 @@ const struct SpriteTemplate gSpriteTemplate_83A059C = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808ED94, }; -const struct SpriteTemplate gSpriteTemplate_83A05B4 = +static const struct SpriteTemplate gSpriteTemplate_83A05B4 = { .tileTag = 4096, .paletteTag = 4096, @@ -510,24 +492,24 @@ const struct SpriteTemplate gSpriteTemplate_83A05B4 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808F168, }; -const struct SpriteSheet gUnknown_083A05CC[] = +static const struct SpriteSheet gUnknown_083A05CC[] = { {gPokedexMenu2_Gfx, 0x1F00, 0x1000}, {NULL, 0, 0}, }; -const struct SpritePalette gUnknown_083A05DC[] = +static const struct SpritePalette gUnknown_083A05DC[] = { {gPokedexMenu_Pal, 0x1000}, {NULL, 0}, }; -const u8 gUnknown_083A05EC[] = {2, 4, 8, 16, 32}; -const u8 gUnknown_083A05F1[] = {16, 8, 4, 2, 1}; +static const u8 gUnknown_083A05EC[] = {2, 4, 8, 16, 32}; +static const u8 gUnknown_083A05F1[] = {16, 8, 4, 2, 1}; const u8 gEmptySpacce_83A05F6[] = {0, 0}; // Padding, maybe? -const u8 gUnknown_083A05F8[] = _(""); +static const u8 gUnknown_083A05F8[] = _(""); // TODO: include German entries #include "data/pokedex_entries_en.h" -const u16 gUnknown_083B4EC4[16] = {0}; -const u8 *const gMonFootprintTable[] = +static const u16 gUnknown_083B4EC4[16] = {0}; +static const u8 *const sMonFootprintTable[] = { gMonFootprint_Bulbasaur, gMonFootprint_Bulbasaur, @@ -943,9 +925,9 @@ const u8 *const gMonFootprintTable[] = gMonFootprint_Chimecho, gMonFootprint_Bulbasaur, }; -const u8 gUnknown_083B5558[] = _("{CLEAR_TO 0}"); +static const u8 gUnknown_083B5558[] = _("{CLEAR_TO 0}"); const u8 gUnknown_083B555C[] = INCBIN_U8("graphics/unknown/unknown_3B555C.bin"); -const struct OamData gOamData_83B557C = +static const struct OamData gOamData_83B557C = { .y = 0, .affineMode = 0, @@ -961,14 +943,14 @@ const struct OamData gOamData_83B557C = .paletteNum = 0, .affineParam = 0, }; -void *const gUnknown_083B5584[] = +static void *const gUnknown_083B5584[] = { (void *)0x02008000, (void *)0x0200C000, (void *)0x02010000, (void *)0x02014000, }; -const struct SpriteFrameImage gSpriteImageTable_83B5594[] = +static const struct SpriteFrameImage gSpriteImageTable_83B5594[] = { {(u8 *)0x02008000, 0x800}, {(u8 *)0x02008800, 0x800}, @@ -987,7 +969,7 @@ const struct SpriteFrameImage gSpriteImageTable_83B5594[] = {(u8 *)0x0200F000, 0x800}, {(u8 *)0x0200F800, 0x800}, }; -const struct SpriteFrameImage gSpriteImageTable_83B5614[] = +static const struct SpriteFrameImage gSpriteImageTable_83B5614[] = { {(u8 *)0x0200C000, 0x800}, {(u8 *)0x0200C800, 0x800}, @@ -1006,7 +988,7 @@ const struct SpriteFrameImage gSpriteImageTable_83B5614[] = {(u8 *)0x02013000, 0x800}, {(u8 *)0x02013800, 0x800}, }; -const struct SpriteFrameImage gSpriteImageTable_83B5694[] = +static const struct SpriteFrameImage gSpriteImageTable_83B5694[] = { {(u8 *)0x02010000, 0x800}, {(u8 *)0x02010800, 0x800}, @@ -1025,7 +1007,7 @@ const struct SpriteFrameImage gSpriteImageTable_83B5694[] = {(u8 *)0x02017000, 0x800}, {(u8 *)0x02017800, 0x800}, }; -const struct SpriteFrameImage gSpriteImageTable_83B5714[] = +static const struct SpriteFrameImage gSpriteImageTable_83B5714[] = { {(u8 *)0x02014000, 0x800}, {(u8 *)0x02014800, 0x800}, @@ -1044,7 +1026,7 @@ const struct SpriteFrameImage gSpriteImageTable_83B5714[] = {(u8 *)0x0201B000, 0x800}, {(u8 *)0x0201B800, 0x800}, }; -const struct SpriteFrameImage *const gUnknown_083B5794[] = +static const struct SpriteFrameImage *const gUnknown_083B5794[] = { gSpriteImageTable_83B5594, gSpriteImageTable_83B5614, @@ -1052,7 +1034,7 @@ const struct SpriteFrameImage *const gUnknown_083B5794[] = gSpriteImageTable_83B5714, }; static void nullsub_59(struct Sprite *); -const struct SpriteTemplate gUnknown_083B57A4 = +static const struct SpriteTemplate gUnknown_083B57A4 = { .tileTag = 0xFFFF, .paletteTag = 0, @@ -1062,7 +1044,7 @@ const struct SpriteTemplate gUnknown_083B57A4 = .affineAnims = gDummySpriteAffineAnimTable, .callback = nullsub_59, }; -const u8 gUnknown_083B57BC[][4] = +static const u8 gUnknown_083B57BC[][4] = { {0, 0, 0, 0}, {CHAR_A, 3, CHAR_a, 3}, @@ -1075,13 +1057,13 @@ const u8 gUnknown_083B57BC[][4] = {CHAR_V, 3, CHAR_v, 3}, {CHAR_Y, 2, CHAR_y, 2}, }; -const struct UnknownStruct3 gUnknown_083B57E4[] = +static const struct UnknownStruct3 gUnknown_083B57E4[] = { {DexText_SearchForPoke, 0, 0, 5}, {DexText_SwitchDex, 6, 0, 5}, {DexText_ReturnToDex, 12, 0, 5}, }; -const struct UnknownStruct4 gUnknown_083B57FC[] = +static const struct UnknownStruct4 gUnknown_083B57FC[] = { {DexText_ListByABC, 0, 2, 5, 5, 2, 12}, {DexText_ListByColor, 0, 4, 5, 5, 4, 12}, @@ -1091,7 +1073,7 @@ const struct UnknownStruct4 gUnknown_083B57FC[] = {DexText_SelectDexMode, 0, 10, 5, 5, 10, 12}, {DexText_ExecuteSearchSwitch, 0, 12, 5, 0, 0, 0}, }; -const u8 gUnknown_083B5850[][4] = +static const u8 gUnknown_083B5850[][4] = { {0xFF, 0xFF, 0xFF, 1}, {0xFF, 0xFF, 0, 2}, @@ -1101,7 +1083,7 @@ const u8 gUnknown_083B5850[][4] = {0xFF, 0xFF, 4, 6}, {0xFF, 0xFF, 5, 0xFF}, }; -const u8 gUnknown_083B586C[][4] = +static const u8 gUnknown_083B586C[][4] = { {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, @@ -1111,7 +1093,7 @@ const u8 gUnknown_083B586C[][4] = {0xFF, 0xFF, 4, 6}, {0xFF, 0xFF, 5, 0xFF}, }; -const u8 gUnknown_083B5888[][4] = +static const u8 gUnknown_083B5888[][4] = { {0xFF, 0xFF, 0xFF, 1}, {0xFF, 0xFF, 0, 2}, @@ -1121,7 +1103,7 @@ const u8 gUnknown_083B5888[][4] = {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 4, 0xFF}, }; -const u8 gUnknown_083B58A4[][4] = +static const u8 gUnknown_083B58A4[][4] = { {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF}, @@ -1131,13 +1113,13 @@ const u8 gUnknown_083B58A4[][4] = {0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 4, 0xFF}, }; -const struct UnknownStruct2 gUnknown_083B58C0[] = +static const struct UnknownStruct2 gUnknown_083B58C0[] = { {DexText_HoennDex2, DexText_HoennDex}, {DexText_NationalDex2, DexText_NationalDex}, {NULL, NULL}, }; -const struct UnknownStruct2 gUnknown_083B58D8[] = +static const struct UnknownStruct2 gUnknown_083B58D8[] = { {DexText_ListByNumber, DexText_NumericalMode}, {DexText_ListByABC2, DexText_ABCMode}, @@ -1147,7 +1129,7 @@ const struct UnknownStruct2 gUnknown_083B58D8[] = {DexText_ListBySmallToTallest, DexText_SmallestMode}, {NULL, NULL}, }; -const struct UnknownStruct2 gUnknown_083B5910[] = +static const struct UnknownStruct2 gUnknown_083B5910[] = { {DexText_Terminator5, DexText_DontSpecify}, {DexText_Terminator5, DexText_ABC}, @@ -1161,7 +1143,7 @@ const struct UnknownStruct2 gUnknown_083B5910[] = {DexText_Terminator5, DexText_YZ}, {NULL, NULL}, }; -const struct UnknownStruct2 gUnknown_083B5968[] = +static const struct UnknownStruct2 gUnknown_083B5968[] = { {DexText_Terminator5, DexText_DontSpecify}, {DexText_Terminator5, DexText_Red}, @@ -1176,7 +1158,7 @@ const struct UnknownStruct2 gUnknown_083B5968[] = {DexText_Terminator5, DexText_Pink}, {NULL, NULL}, }; -const struct UnknownStruct2 gUnknown_083B59C8[] = +static const struct UnknownStruct2 gUnknown_083B59C8[] = { {DexText_Terminator5, DexText_None}, {DexText_Terminator5, gTypeNames[TYPE_NORMAL]}, @@ -1198,10 +1180,10 @@ const struct UnknownStruct2 gUnknown_083B59C8[] = {DexText_Terminator5, gTypeNames[TYPE_DARK]}, {NULL, NULL}, }; -const u8 gUnknown_083B5A60[] = {0, 1}; -const u8 gUnknown_083B5A62[] = {0, 1, 2, 3, 4, 5}; -const u8 gUnknown_083B5A68[] = {0xFF, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17}; -const struct UnknownStruct1 gUnknown_083B5A7C[] = +static const u8 gUnknown_083B5A60[] = {0, 1}; +static const u8 gUnknown_083B5A62[] = {0, 1, 2, 3, 4, 5}; +static const u8 gUnknown_083B5A68[] = {0xFF, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17}; +static const struct UnknownStruct1 gUnknown_083B5A7C[] = { {gUnknown_083B5910, 6, 7, 10}, {gUnknown_083B5968, 8, 9, 11}, @@ -1210,36 +1192,62 @@ const struct UnknownStruct1 gUnknown_083B5A7C[] = {gUnknown_083B58D8, 4, 5, 6}, {gUnknown_083B58C0, 2, 3, 2}, }; -const u8 gUnknown_083B5AAC[] = _("{STR_VAR_1}{CLEAR_TO 43}"); -const u8 gUnknown_083B5AB2[] = _("{STR_VAR_1}{CLEAR_TO 96}"); - +static const u8 gUnknown_083B5AAC[] = _("{STR_VAR_1}{CLEAR_TO 43}"); +static const u8 gUnknown_083B5AB2[] = _("{STR_VAR_1}{CLEAR_TO 96}"); + +static void MainCB(void); +static void Task_PokedexShowMainScreen(u8 taskId); +static void Task_PokedexMainScreen(u8 taskId); +static void sub_808C898(u8 taskId); +static void Task_PokedexMainScreenMenu(u8 taskId); +static void sub_808CA64(u8 taskId); +static void sub_808CAE4(u8 taskId); +static void sub_808CB8C(u8 taskId); +static void Task_ClosePokedex(u8 taskId); +static void sub_808CCC4(u8 taskId); +static void Task_PokedexResultsScreen(u8 taskId); +static void sub_808CEF8(u8 taskId); +static void Task_PokedexResultsScreenMenu(u8 taskId); +static void sub_808D118(u8 taskId); +static void sub_808D198(u8 taskId); +static void Task_PokedexResultsScreenReturnToMainScreen(u8 taskId); +static void Task_PokedexResultsScreenExitPokedex(u8 taskId); +static bool8 sub_808D344(u8 a); +static void sub_808D640(void); +static void SortPokedex(u8 dexMode, u8 sortMode); +static void sub_808DEB0(u16 a, u8 b, u8 c, u16 d); +static void sub_808DF88(u16 a, u8 b, u8 c, u16 d); +static u8 sub_808DFE4(u16 num, u8 b, u8 c); +static void sub_808E090(u8 a, u8 b, u16 c); +static void sub_808E0CC(u16 a, u16 b); static u32 sub_808E8C8(u16 a, s16 b, s16 c); static u8 sub_808F210(struct PokedexListItem *, u8); static u8 sub_808F284(struct PokedexListItem *, u8); void sub_8090B8C(u8); void sub_8090C28(struct Sprite *); s8 GetNationalPokedexFlag(u16, u8); +static void sub_8091738(u16, u16, u16); u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d); //Not sure of return type -void sub_8091E54(u8); -void sub_809204C(u8); -void sub_809207C(u8); -void sub_809217C(u8); -void sub_80921B0(u8); -void sub_80923FC(u8); -void sub_80924A4(u8); -void sub_8092508(u8); -void sub_80925CC(u8); -void sub_8092644(u8); -void sub_80927B8(u8); -void sub_80927F0(u8); -void sub_8092AB0(u8); -void sub_8092AD4(u8, u8); -void sub_8092B68(u8); -void sub_8092C8C(u8); -void sub_8092D78(u8); -u8 sub_8092E10(u8, u8); -void sub_8092EB0(u8); -void sub_809308C(u8); +static void sub_8091E54(u8); +static void sub_809204C(u8); +static void sub_809207C(u8); +static void sub_809217C(u8); +static void sub_80921B0(u8); +static void sub_80923FC(u8); +static void sub_80924A4(u8); +static void sub_8092508(u8); +static void sub_80925CC(u8); +static void sub_8092644(u8); +static void sub_80927B8(u8); +static void sub_80927F0(u8); +static void sub_8092AB0(u8); +static void sub_8092AD4(u8, u8); +static void sub_8092B68(u8); +static void sub_8092C8C(u8); +static void sub_8092D78(u8); +static u8 sub_8092E10(u8, u8); +static void sub_8092EB0(u8); +static void sub_809308C(u8); extern u16 NationalPokedexNumToSpecies(u16); void ShowPokedexAreaScreen(u16 species, u8 *string); @@ -1456,7 +1464,7 @@ u8 unref_sub_808C540(void (*func)(u8)) return gTasks[taskId].data[0]; } -void MainCB(void) +static void MainCB(void) { RunTasks(); AnimateSprites(); @@ -1464,13 +1472,11 @@ void MainCB(void) UpdatePaletteFade(); } -void Task_PokedexShowMainScreen(u8 taskId) +static void Task_PokedexShowMainScreen(u8 taskId) { gPokedexView->unk64C_1 = 0; if (sub_808D344(0)) - { gTasks[taskId].func = Task_PokedexMainScreen; - } } //Hide menu and process input on main screen @@ -1531,14 +1537,14 @@ void Task_PokedexMainScreen(u8 taskId) } } -void sub_808C898(u8 taskId) +static void sub_808C898(u8 taskId) { if (sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636)) gTasks[taskId].func = Task_PokedexMainScreen; } //Bring up menu and process menu input -void Task_PokedexMainScreenMenu(u8 taskId) +static void Task_PokedexMainScreenMenu(u8 taskId) { REG_BG0VOFS = gPokedexView->menuY; @@ -1597,7 +1603,7 @@ void Task_PokedexMainScreenMenu(u8 taskId) } } -void sub_808CA64(u8 taskId) +static void sub_808CA64(u8 taskId) { if (gSprites[gPokedexView->selectedMonSpriteId].pos1.x == 48 && gSprites[gPokedexView->selectedMonSpriteId].pos1.y == 56) @@ -1608,7 +1614,7 @@ void sub_808CA64(u8 taskId) } } -void sub_808CAE4(u8 taskId) +static void sub_808CAE4(u8 taskId) { if (gTasks[gTasks[taskId].data[0]].isActive) { @@ -1623,7 +1629,7 @@ void sub_808CAE4(u8 taskId) } } -void sub_808CB8C(u8 taskId) +static void sub_808CB8C(u8 taskId) { bool8 isActive = gTasks[gTasks[taskId].data[0]].isActive; @@ -1648,7 +1654,7 @@ void sub_808CB8C(u8 taskId) } } -void Task_ClosePokedex(u8 taskId) +static void Task_ClosePokedex(u8 taskId) { if (!gPaletteFade.active) { @@ -1662,14 +1668,14 @@ void Task_ClosePokedex(u8 taskId) } } -void sub_808CCC4(u8 taskId) +static void sub_808CCC4(u8 taskId) { gPokedexView->unk64C_1 = 1; if (sub_808D344(3)) gTasks[taskId].func = Task_PokedexResultsScreen; } -void Task_PokedexResultsScreen(u8 taskId) +static void Task_PokedexResultsScreen(u8 taskId) { REG_BG0VOFS = gPokedexView->menuY; @@ -1722,13 +1728,13 @@ void Task_PokedexResultsScreen(u8 taskId) } } -void sub_808CEF8(u8 taskId) +static void sub_808CEF8(u8 taskId) { if (sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636)) gTasks[taskId].func = Task_PokedexResultsScreen; } -void Task_PokedexResultsScreenMenu(u8 taskId) +static void Task_PokedexResultsScreenMenu(u8 taskId) { REG_BG0VOFS = gPokedexView->menuY; @@ -1793,7 +1799,7 @@ void Task_PokedexResultsScreenMenu(u8 taskId) } } -void sub_808D118(u8 taskId) +static void sub_808D118(u8 taskId) { if (gSprites[gPokedexView->selectedMonSpriteId].pos1.x == 48 && gSprites[gPokedexView->selectedMonSpriteId].pos1.y == 56) @@ -1804,7 +1810,7 @@ void sub_808D118(u8 taskId) } } -void sub_808D198(u8 taskId) +static void sub_808D198(u8 taskId) { if (gTasks[gTasks[taskId].data[0]].isActive) { @@ -1817,7 +1823,7 @@ void sub_808D198(u8 taskId) } } -void Task_PokedexResultsScreenReturnToMainScreen(u8 taskId) +static void Task_PokedexResultsScreenReturnToMainScreen(u8 taskId) { if (!gPaletteFade.active) { @@ -1831,7 +1837,7 @@ void Task_PokedexResultsScreenReturnToMainScreen(u8 taskId) } } -void Task_PokedexResultsScreenExitPokedex(u8 taskId) +static void Task_PokedexResultsScreenExitPokedex(u8 taskId) { if (!gPaletteFade.active) { @@ -1845,8 +1851,7 @@ void Task_PokedexResultsScreenExitPokedex(u8 taskId) } } - -bool8 sub_808D344(u8 a) +static bool8 sub_808D344(u8 a) { switch (gMain.state) { @@ -1929,17 +1934,17 @@ bool8 sub_808D344(u8 a) return FALSE; } -void sub_808D640(void) +static void sub_808D640(void) { if (gPokedexView->unk64C_1) - LoadPalette(gUnknown_0839F67C + 1, 1, sizeof(gUnknown_0839F67C) - sizeof(u16)); + LoadPalette(sPokedexSearchPalette + 1, 1, sizeof(sPokedexSearchPalette) - sizeof(u16)); else if (!IsNationalPokedexEnabled()) LoadPalette(gPokedexMenu_Pal + 1, 1, 0xBE); else - LoadPalette(gUnknown_0839F73C + 1, 1, sizeof(gUnknown_0839F73C) - sizeof(u16)); + LoadPalette(sNationalPokedexPalette + 1, 1, sizeof(sNationalPokedexPalette) - sizeof(u16)); } -void SortPokedex(u8 dexMode, u8 sortMode) +static void SortPokedex(u8 dexMode, u8 sortMode) { u16 vars[3]; //I have no idea why three regular variables are stored in an array, but whatever. s16 i; @@ -2086,7 +2091,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) } } -void sub_808DBE8(u8 a, u16 b, u16 c) +static void sub_808DBE8(u8 a, u16 b, u16 c) { s16 _b; u16 i; @@ -2172,7 +2177,7 @@ void sub_808DBE8(u8 a, u16 b, u16 c) } } -void sub_808DEB0(u16 a, u8 b, u8 c, u16 d) +static void sub_808DEB0(u16 a, u8 b, u8 c, u16 d) { u8 text[4]; u16 unk[2]; @@ -2191,7 +2196,7 @@ void sub_808DEB0(u16 a, u8 b, u8 c, u16 d) MenuPrint(text, b - 15, c); } -void sub_808DF88(u16 a, u8 b, u8 c, u16 d) +static void sub_808DF88(u16 a, u8 b, u8 c, u16 d) { u16 unk[2]; @@ -2209,7 +2214,7 @@ void sub_808DF88(u16 a, u8 b, u8 c, u16 d) *(u16 *)(VRAM + d * 0x800 + (c + 1) * 0x40 + b * 2) = unk[1]; } -u8 sub_808DFE4(u16 num, u8 b, u8 c) +static u8 sub_808DFE4(u16 num, u8 b, u8 c) { u8 text[10]; u8 i; @@ -2234,7 +2239,7 @@ u8 sub_808DFE4(u16 num, u8 b, u8 c) return i; } -void sub_808E090(u8 a, u8 b, u16 c) +static void sub_808E090(u8 a, u8 b, u16 c) { u8 i; @@ -2245,7 +2250,7 @@ void sub_808E090(u8 a, u8 b, u16 c) } } -void sub_808E0CC(u16 a, u16 b) +static void sub_808E0CC(u16 a, u16 b) { u8 i; u16 unk; @@ -2334,7 +2339,6 @@ void sub_808E398(u8 a, u16 b) switch (a) { case 1: - { unk = sub_808E888(b - 1); if (unk != 0xFFFF) { @@ -2347,9 +2351,7 @@ void sub_808E398(u8 a, u16 b) else gPokedexView->unk630 = 15; break; - } case 2: - { unk = sub_808E888(b + 1); if (unk != 0xFFFF) { @@ -2363,368 +2365,87 @@ void sub_808E398(u8 a, u16 b) gPokedexView->unk630 = 0; break; } - } } -#ifdef NONMATCHING -//This one's ridiculous. Fix later + u16 sub_808E48C(u16 a, u16 b) { u8 r3; u8 r5; - u32 r10 = 0; - if (!(gMain.heldKeys & 0x40) || a == 0) + u8 i; + u16 r6; + u8 r10 = 0; + + if (!((gMain.heldKeys & 0x40) && (a > 0))) { - u8 i; - u16 r6; - //_0808E4B6 - if (gMain.heldKeys & 0x80) - { - if (a < gPokedexView->pokemonListCount - 1) - goto _0808E5C4; - } + if (!((gMain.heldKeys & 0x80) && (a < gPokedexView->pokemonListCount - 1))) //_0808E4CE - - if ((gMain.newKeys & 0x20) && a != 0) { - r6 = a; - //_0808E4E0 - for (i = 0; i < 7; i++) + if ((gMain.newKeys & 0x20) && (a > 0)) { - a = sub_8091818(1, a, 0, gPokedexView->pokemonListCount - 1); + r6 = a; + //_0808E4E0 + for (i = 0; i < 7; i++) + a = sub_8091818(1, a, 0, gPokedexView->pokemonListCount - 1); + gPokedexView->unk62C += 16 * (a - r6); + sub_808E82C(); + sub_808E0CC(a, 0xE); + PlaySE(0x6D); + } + //_0808E53C + else if ((gMain.newKeys & 0x10) && (a < gPokedexView->pokemonListCount - 1)) + { + r6 = a; + for (i = 0; i < 7; i++) + a = sub_8091818(0, a, 0, gPokedexView->pokemonListCount - 1); + gPokedexView->unk62C += (a - r6) * 16; + sub_808E82C(); + sub_808E0CC(a, 0xE); + PlaySE(0x6D); + } + _0808E5A2: + if (r10 == 0) + { + gPokedexView->unk638 = 0; + return a; } - - gPokedexView->unk62C += (a - r6) * 16; - sub_808E82C(); - sub_808E0CC(a, 0xE); - PlaySE(SE_Z_PAGE); - goto _0808E5A2; } - //_0808E53C - if (!(gMain.newKeys & 0x10) || a >= gPokedexView->pokemonListCount - 1) - goto _0808E5A2; - - r6 = a; - for (i = 0; i < 7; i++) + else { + // to _0808E5C4 + r10 = 2; a = sub_8091818(0, a, 0, gPokedexView->pokemonListCount - 1); + sub_808E398(2, a); + //goto _0808E60E + sub_808DBE8(2, a, b); + PlaySE(0x6C); + goto _0808E5A2; } - - gPokedexView->unk62C += (a - r6) * 16; - sub_808E82C(); - sub_808E0CC(a, 0xE); - PlaySE(SE_Z_PAGE); - goto _0808E5A2; - - _0808E5A2: - if (r10 != 0) - goto _0808E628; - gPokedexView->unk638 = r10; - return a; - - _0808E5C4: - r10 = 2; - a = sub_8091818(0, a, 0, gPokedexView->pokemonListCount - 1); - sub_808E398(2, a); - //goto _0808E60E - sub_808DBE8(2, a, b); - PlaySE(SE_Z_SCROLL); } - //_0808E5E4 else { + //to _0808E5E4 r10 = 1; a = sub_8091818(1, a, 0, gPokedexView->pokemonListCount - 1); sub_808E398(1, a); //_0808E60E sub_808DBE8(1, a, b); - PlaySE(SE_Z_SCROLL); + PlaySE(0x6C); + goto _0808E5A2; } - //_0808E60E - goto _0808E5A2; - - _0808E628: + //_0808E628 r5 = gUnknown_083A05EC[gPokedexView->unk638 / 4]; r3 = gUnknown_083A05F1[gPokedexView->unk638 / 4]; gPokedexView->unk62E = r3; gPokedexView->unk636 = r3; gPokedexView->unk634 = r5; gPokedexView->unk62F = r10; - gPokedexView->unk628 = r5; + gPokedexView->unk628 = r5 / 2; sub_808E208(gPokedexView->unk62F, gPokedexView->unk634, gPokedexView->unk636); if (gPokedexView->unk638 <= 0xB) gPokedexView->unk638++; return a; } -#else -__attribute__((naked)) -u16 sub_808E48C(u16 a, u16 b) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - lsls r0, 16\n\ - lsrs r7, r0, 16\n\ - lsls r1, 16\n\ - lsrs r4, r1, 16\n\ - movs r0, 0\n\ - mov r10, r0\n\ - ldr r1, _0808E52C\n\ - ldrh r2, [r1, 0x2C]\n\ - movs r0, 0x40\n\ - ands r0, r2\n\ - adds r3, r1, 0\n\ - cmp r0, 0\n\ - beq _0808E4B6\n\ - cmp r7, 0\n\ - beq _0808E4B6\n\ - b _0808E5E4\n\ -_0808E4B6:\n\ - movs r0, 0x80\n\ - ands r0, r2\n\ - cmp r0, 0\n\ - beq _0808E4CE\n\ - ldr r0, _0808E530\n\ - ldr r0, [r0]\n\ - ldr r1, _0808E534\n\ - adds r0, r1\n\ - ldrh r0, [r0]\n\ - subs r0, 0x1\n\ - cmp r7, r0\n\ - blt _0808E5C4\n\ -_0808E4CE:\n\ - ldrh r1, [r3, 0x2E]\n\ - movs r0, 0x20\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0808E53C\n\ - cmp r7, 0\n\ - beq _0808E53C\n\ - adds r6, r7, 0\n\ - movs r4, 0\n\ -_0808E4E0:\n\ - ldr r5, _0808E530\n\ - ldr r0, [r5]\n\ - ldr r2, _0808E534\n\ - adds r0, r2\n\ - ldrh r3, [r0]\n\ - subs r3, 0x1\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - movs r0, 0x1\n\ - adds r1, r7, 0\n\ - movs r2, 0\n\ - bl sub_8091818\n\ - adds r7, r0, 0\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0x6\n\ - bls _0808E4E0\n\ - ldr r1, [r5]\n\ - ldr r3, _0808E538\n\ - adds r1, r3\n\ - subs r0, r7, r6\n\ - lsls r0, 4\n\ - ldrb r2, [r1]\n\ - adds r0, r2\n\ - strb r0, [r1]\n\ - bl sub_808E82C\n\ - adds r0, r7, 0\n\ - movs r1, 0xE\n\ - bl sub_808E0CC\n\ - movs r0, 0x6D\n\ - bl PlaySE\n\ - b _0808E5A2\n\ - .align 2, 0\n\ -_0808E52C: .4byte gMain\n\ -_0808E530: .4byte gPokedexView\n\ -_0808E534: .4byte 0x0000060c\n\ -_0808E538: .4byte 0x0000062c\n\ -_0808E53C:\n\ - ldrh r1, [r3, 0x2E]\n\ - movs r0, 0x10\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0808E5A2\n\ - ldr r0, _0808E5B8\n\ - ldr r0, [r0]\n\ - ldr r3, _0808E5BC\n\ - adds r0, r3\n\ - ldrh r0, [r0]\n\ - subs r0, 0x1\n\ - cmp r7, r0\n\ - bge _0808E5A2\n\ - adds r6, r7, 0\n\ - movs r4, 0\n\ -_0808E55A:\n\ - ldr r5, _0808E5B8\n\ - ldr r0, [r5]\n\ - ldr r1, _0808E5BC\n\ - adds r0, r1\n\ - ldrh r3, [r0]\n\ - subs r3, 0x1\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - movs r0, 0\n\ - adds r1, r7, 0\n\ - movs r2, 0\n\ - bl sub_8091818\n\ - adds r7, r0, 0\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0x6\n\ - bls _0808E55A\n\ - ldr r1, [r5]\n\ - ldr r2, _0808E5C0\n\ - adds r1, r2\n\ - subs r0, r7, r6\n\ - lsls r0, 4\n\ - ldrb r3, [r1]\n\ - adds r0, r3\n\ - strb r0, [r1]\n\ - bl sub_808E82C\n\ - adds r0, r7, 0\n\ - movs r1, 0xE\n\ - bl sub_808E0CC\n\ - movs r0, 0x6D\n\ - bl PlaySE\n\ -_0808E5A2:\n\ - mov r0, r10\n\ - cmp r0, 0\n\ - bne _0808E628\n\ - ldr r0, _0808E5B8\n\ - ldr r0, [r0]\n\ - movs r1, 0xC7\n\ - lsls r1, 3\n\ - adds r0, r1\n\ - mov r2, r10\n\ - strh r2, [r0]\n\ - b _0808E68E\n\ - .align 2, 0\n\ -_0808E5B8: .4byte gPokedexView\n\ -_0808E5BC: .4byte 0x0000060c\n\ -_0808E5C0: .4byte 0x0000062c\n\ -_0808E5C4:\n\ - movs r3, 0x2\n\ - mov r10, r3\n\ - lsls r3, r0, 16\n\ - lsrs r3, 16\n\ - movs r0, 0\n\ - adds r1, r7, 0\n\ - movs r2, 0\n\ - bl sub_8091818\n\ - adds r7, r0, 0\n\ - movs r0, 0x2\n\ - adds r1, r7, 0\n\ - bl sub_808E398\n\ - movs r0, 0x2\n\ - b _0808E60E\n\ -_0808E5E4:\n\ - movs r0, 0x1\n\ - mov r10, r0\n\ - ldr r0, _0808E620\n\ - ldr r0, [r0]\n\ - ldr r1, _0808E624\n\ - adds r0, r1\n\ - ldrh r3, [r0]\n\ - subs r3, 0x1\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - movs r0, 0x1\n\ - adds r1, r7, 0\n\ - movs r2, 0\n\ - bl sub_8091818\n\ - adds r7, r0, 0\n\ - movs r0, 0x1\n\ - adds r1, r7, 0\n\ - bl sub_808E398\n\ - movs r0, 0x1\n\ -_0808E60E:\n\ - adds r1, r7, 0\n\ - adds r2, r4, 0\n\ - bl sub_808DBE8\n\ - movs r0, 0x6C\n\ - bl PlaySE\n\ - b _0808E5A2\n\ - .align 2, 0\n\ -_0808E620: .4byte gPokedexView\n\ -_0808E624: .4byte 0x0000060c\n\ -_0808E628:\n\ - ldr r1, _0808E6A0\n\ - ldr r6, _0808E6A4\n\ - ldr r2, [r6]\n\ - movs r3, 0xC7\n\ - lsls r3, 3\n\ - mov r9, r3\n\ - adds r0, r2, r3\n\ - ldrh r0, [r0]\n\ - lsrs r0, 2\n\ - adds r1, r0, r1\n\ - ldrb r5, [r1]\n\ - ldr r1, _0808E6A8\n\ - adds r0, r1\n\ - ldrb r3, [r0]\n\ - ldr r0, _0808E6AC\n\ - adds r2, r0\n\ - strb r3, [r2]\n\ - ldr r1, [r6]\n\ - ldr r2, _0808E6B0\n\ - mov r8, r2\n\ - adds r0, r1, r2\n\ - strh r3, [r0]\n\ - ldr r4, _0808E6B4\n\ - adds r0, r1, r4\n\ - strh r5, [r0]\n\ - ldr r3, _0808E6B8\n\ - adds r1, r3\n\ - mov r0, r10\n\ - strb r0, [r1]\n\ - ldr r2, [r6]\n\ - lsrs r5, 1\n\ - movs r1, 0xC5\n\ - lsls r1, 3\n\ - adds r0, r2, r1\n\ - strh r5, [r0]\n\ - adds r3, r2, r3\n\ - ldrb r0, [r3]\n\ - adds r4, r2, r4\n\ - ldrb r1, [r4]\n\ - add r2, r8\n\ - ldrb r2, [r2]\n\ - bl sub_808E208\n\ - ldr r0, [r6]\n\ - mov r2, r9\n\ - adds r1, r0, r2\n\ - ldrh r0, [r1]\n\ - cmp r0, 0xB\n\ - bhi _0808E68E\n\ - adds r0, 0x1\n\ - strh r0, [r1]\n\ -_0808E68E:\n\ - adds r0, r7, 0\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_0808E6A0: .4byte gUnknown_083A05EC\n\ -_0808E6A4: .4byte gPokedexView\n\ -_0808E6A8: .4byte gUnknown_083A05F1\n\ -_0808E6AC: .4byte 0x0000062e\n\ -_0808E6B0: .4byte 0x00000636\n\ -_0808E6B4: .4byte 0x00000634\n\ -_0808E6B8: .4byte 0x0000062f\n\ - .syntax divided\n"); -} -#endif void sub_808E6BC(void) { @@ -4125,7 +3846,6 @@ u8 sub_809070C(u16 dexNum, u32 b, u32 c) return taskId; } -#ifdef NONMATCHING // yet again... void sub_8090750(u8 taskId) { u8 spriteId; @@ -4148,7 +3868,12 @@ void sub_8090750(u8 taskId) LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM + 0x4000)); LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800)); for (i = 0; i < 0x280; i++) - ((u16 *)(VRAM + 0x7800))[i] += 0x2000; + { +#ifndef NONMATCHING + asm(""); +#endif + *(u16 *)(VRAM + 0x7800 + 2 * i) += 0x2000; + } sub_8091738(gTasks[taskId].data[1], 2, 0x3FC); ResetPaletteFade(); LoadPalette(gPokedexMenu_Pal + 1, 0x21, 0x9E); @@ -4204,341 +3929,6 @@ void sub_8090750(u8 taskId) break; } } -#else -__attribute__((naked)) -void sub_8090750(u8 taskId) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x8\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - ldr r1, _08090778 @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldrh r6, [r0, 0xA]\n\ - movs r2, 0x8\n\ - ldrsh r0, [r0, r2]\n\ - adds r4, r1, 0\n\ - cmp r0, 0x6\n\ - bhi _0809079C\n\ - lsls r0, 2\n\ - ldr r1, _0809077C @ =_08090780\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08090778: .4byte gTasks\n\ -_0809077C: .4byte _08090780\n\ - .align 2, 0\n\ -_08090780:\n\ - .4byte _0809079C\n\ - .4byte _080907E0\n\ - .4byte _0809085C\n\ - .4byte _080908A0\n\ - .4byte _08090960\n\ - .4byte _080909B8\n\ - .4byte _080909F4\n\ -_0809079C:\n\ - ldr r0, _080907D0 @ =gPaletteFade\n\ - ldrb r1, [r0, 0x7]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080907AA\n\ - b _08090A26\n\ -_080907AA:\n\ - ldr r1, _080907D4 @ =gUnknown_03005CEC\n\ - ldr r0, _080907D8 @ =gMain\n\ - ldr r0, [r0, 0xC]\n\ - str r0, [r1]\n\ - movs r0, 0\n\ - bl SetVBlankCallback\n\ - movs r0, 0x80\n\ - lsls r0, 1\n\ - bl sub_8091060\n\ - ldr r1, _080907DC @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x1\n\ - strh r1, [r0, 0x8]\n\ - b _08090A26\n\ - .align 2, 0\n\ -_080907D0: .4byte gPaletteFade\n\ -_080907D4: .4byte gUnknown_03005CEC\n\ -_080907D8: .4byte gMain\n\ -_080907DC: .4byte gTasks\n\ -_080907E0:\n\ - ldr r0, _08090840 @ =gPokedexMenu_Gfx\n\ - ldr r1, _08090844 @ =0x06004000\n\ - bl LZ77UnCompVram\n\ - ldr r0, _08090848 @ =gUnknown_08E96BD4\n\ - ldr r4, _0809084C @ =0x06007800\n\ - adds r1, r4, 0\n\ - bl LZ77UnCompVram\n\ - movs r2, 0\n\ - lsls r5, r7, 2\n\ - mov r12, r5\n\ - movs r0, 0x80\n\ - lsls r0, 6\n\ - adds r6, r0, 0\n\ - ldr r3, _08090850 @ =0x0000027f\n\ -_08090800:\n\ - lsls r0, r2, 1\n\ - adds r0, r4\n\ - ldrh r5, [r0]\n\ - adds r1, r6, r5\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, r3\n\ - bls _08090800\n\ - ldr r0, _08090854 @ =gTasks\n\ - mov r1, r12\n\ - adds r4, r1, r7\n\ - lsls r4, 3\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0xA]\n\ - movs r2, 0xFF\n\ - lsls r2, 2\n\ - movs r1, 0x2\n\ - bl sub_8091738\n\ - bl ResetPaletteFade\n\ - ldr r0, _08090858 @ =gPokedexMenu_Pal + 0x2\n\ - movs r1, 0x21\n\ - movs r2, 0x9E\n\ - bl LoadPalette\n\ - ldrh r0, [r4, 0x8]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x8]\n\ - b _08090A26\n\ - .align 2, 0\n\ -_08090840: .4byte gPokedexMenu_Gfx\n\ -_08090844: .4byte 0x06004000\n\ -_08090848: .4byte gUnknown_08E96BD4\n\ -_0809084C: .4byte 0x06007800\n\ -_08090850: .4byte 0x0000027f\n\ -_08090854: .4byte gTasks\n\ -_08090858: .4byte gPokedexMenu_Pal + 0x2\n\ -_0809085C:\n\ - ldr r4, _0809088C @ =gWindowConfig_81E7064\n\ - adds r0, r4, 0\n\ - bl SetUpWindowConfig\n\ - adds r0, r4, 0\n\ - bl InitMenuWindow\n\ - ldr r2, _08090890 @ =0x0600c000\n\ - add r1, sp, 0x4\n\ - movs r0, 0\n\ - strh r0, [r1]\n\ - ldr r0, _08090894 @ =0x040000d4\n\ - str r1, [r0]\n\ - str r2, [r0, 0x4]\n\ - ldr r1, _08090898 @ =0x81000100\n\ - str r1, [r0, 0x8]\n\ - ldr r0, [r0, 0x8]\n\ - ldr r1, _0809089C @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - b _080909E0\n\ - .align 2, 0\n\ -_0809088C: .4byte gWindowConfig_81E7064\n\ -_08090890: .4byte 0x0600c000\n\ -_08090894: .4byte 0x040000d4\n\ -_08090898: .4byte 0x81000100\n\ -_0809089C: .4byte gTasks\n\ -_080908A0:\n\ - ldr r0, _080908C8 @ =gDexText_RegisterComplete\n\ - movs r1, 0x2\n\ - movs r2, 0\n\ - movs r3, 0xD0\n\ - bl sub_8072BD8\n\ - bl IsNationalPokedexEnabled\n\ - cmp r0, 0\n\ - bne _080908CC\n\ - adds r0, r6, 0\n\ - bl NationalToHoennOrder\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0xD\n\ - movs r2, 0x3\n\ - bl sub_8091154\n\ - b _080908D6\n\ - .align 2, 0\n\ -_080908C8: .4byte gDexText_RegisterComplete\n\ -_080908CC:\n\ - adds r0, r6, 0\n\ - movs r1, 0xD\n\ - movs r2, 0x3\n\ - bl sub_8091154\n\ -_080908D6:\n\ - adds r0, r6, 0\n\ - movs r1, 0x10\n\ - movs r2, 0x3\n\ - bl sub_80911C8\n\ - ldr r0, _0809094C @ =gDexText_UnknownPoke\n\ - movs r1, 0xB\n\ - movs r2, 0x5\n\ - bl MenuPrint\n\ - ldr r0, _08090950 @ =gDexText_UnknownHeight\n\ - movs r1, 0x10\n\ - movs r2, 0x7\n\ - bl MenuPrint\n\ - ldr r0, _08090954 @ =gDexText_UnknownWeight\n\ - movs r1, 0x10\n\ - movs r2, 0x9\n\ - bl MenuPrint\n\ - lsls r4, r6, 3\n\ - adds r4, r6\n\ - lsls r4, 2\n\ - ldr r6, _08090958 @ =gPokedexEntries\n\ - adds r5, r4, r6\n\ - adds r0, r5, 0\n\ - movs r1, 0xB\n\ - movs r2, 0x5\n\ - bl sub_8091304\n\ - ldrh r0, [r5, 0xC]\n\ - movs r1, 0x10\n\ - movs r2, 0x7\n\ - bl sub_8091458\n\ - ldrh r0, [r5, 0xE]\n\ - movs r1, 0x10\n\ - movs r2, 0x9\n\ - bl sub_8091564\n\ - adds r6, 0x10\n\ - adds r4, r6\n\ - ldr r0, [r4]\n\ - movs r1, 0x2\n\ - movs r2, 0xD\n\ - bl MenuPrint\n\ - movs r1, 0xFF\n\ - lsls r1, 2\n\ - movs r0, 0xE\n\ - bl sub_80917CC\n\ - ldr r1, _0809095C @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - b _080909E0\n\ - .align 2, 0\n\ -_0809094C: .4byte gDexText_UnknownPoke\n\ -_08090950: .4byte gDexText_UnknownHeight\n\ -_08090954: .4byte gDexText_UnknownWeight\n\ -_08090958: .4byte gPokedexEntries\n\ -_0809095C: .4byte gTasks\n\ -_08090960:\n\ - adds r0, r6, 0\n\ - movs r1, 0x30\n\ - movs r2, 0x38\n\ - movs r3, 0\n\ - bl sub_80918EC\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - ldr r0, _080909AC @ =gSprites\n\ - lsls r1, r4, 4\n\ - adds r1, r4\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldrb r2, [r1, 0x5]\n\ - movs r0, 0xD\n\ - negs r0, r0\n\ - ands r0, r2\n\ - strb r0, [r1, 0x5]\n\ - movs r0, 0x1\n\ - negs r0, r0\n\ - movs r1, 0\n\ - str r1, [sp]\n\ - movs r2, 0x10\n\ - movs r3, 0\n\ - bl BeginNormalPaletteFade\n\ - ldr r0, _080909B0 @ =gUnknown_03005CEC\n\ - ldr r0, [r0]\n\ - bl SetVBlankCallback\n\ - ldr r1, _080909B4 @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r4, [r0, 0xE]\n\ - b _080909E0\n\ - .align 2, 0\n\ -_080909AC: .4byte gSprites\n\ -_080909B0: .4byte gUnknown_03005CEC\n\ -_080909B4: .4byte gTasks\n\ -_080909B8:\n\ - ldr r0, _080909E8 @ =REG_BLDCNT\n\ - movs r1, 0\n\ - strh r1, [r0]\n\ - adds r0, 0x2\n\ - strh r1, [r0]\n\ - adds r0, 0x2\n\ - strh r1, [r0]\n\ - ldr r1, _080909EC @ =REG_BG3CNT\n\ - ldr r2, _080909F0 @ =0x00000f07\n\ - adds r0, r2, 0\n\ - strh r0, [r1]\n\ - subs r1, 0xE\n\ - movs r5, 0xE2\n\ - lsls r5, 5\n\ - adds r0, r5, 0\n\ - strh r0, [r1]\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r4\n\ -_080909E0:\n\ - ldrh r1, [r0, 0x8]\n\ - adds r1, 0x1\n\ - strh r1, [r0, 0x8]\n\ - b _08090A26\n\ - .align 2, 0\n\ -_080909E8: .4byte 0x04000050\n\ -_080909EC: .4byte 0x0400000E\n\ -_080909F0: .4byte 0x00000f07\n\ -_080909F4:\n\ - ldr r0, _08090A30 @ =gPaletteFade\n\ - ldrb r1, [r0, 0x7]\n\ - movs r0, 0x80\n\ - ands r0, r1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, 0\n\ - bne _08090A26\n\ - adds r0, r6, 0\n\ - bl NationalPokedexNumToSpecies\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0\n\ - bl PlayCry1\n\ - ldr r1, _08090A34 @ =gTasks\n\ - lsls r0, r7, 2\n\ - adds r0, r7\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r5, [r0, 0xC]\n\ - strh r5, [r0, 0x10]\n\ - ldr r1, _08090A38 @ =sub_8090A3C\n\ - str r1, [r0]\n\ -_08090A26:\n\ - add sp, 0x8\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_08090A30: .4byte gPaletteFade\n\ -_08090A34: .4byte gTasks\n\ -_08090A38: .4byte sub_8090A3C\n\ - .syntax divided\n"); -} -#endif void sub_8090A3C(u8 taskId) { @@ -5060,7 +4450,7 @@ void sub_8091564(u16 arg0, u8 left, u8 top) } #endif -void sub_8091738(u16 a, u16 b, u16 c) +static void sub_8091738(u16 num, u16 b, u16 c) { u8 arr[0x80]; u16 i; @@ -5069,7 +4459,7 @@ void sub_8091738(u16 a, u16 b, u16 c) u16 r7; u8 r3; - r12 = gMonFootprintTable[NationalPokedexNumToSpecies(a)]; + r12 = sMonFootprintTable[NationalPokedexNumToSpecies(num)]; for (r7 = 0, i = 0; i < 32; i++) { r3 = r12[i]; @@ -5338,7 +4728,7 @@ u8 sub_8091E3C(void) return CreateTask(sub_8091E54, 0); } -void sub_8091E54(u8 taskId) +static void sub_8091E54(u8 taskId) { u16 i; @@ -5398,14 +4788,14 @@ void sub_8091E54(u8 taskId) } } -void sub_809204C(u8 taskId) +static void sub_809204C(u8 taskId) { sub_8092AB0(gTasks[taskId].data[0]); sub_8092B68(taskId); gTasks[taskId].func = sub_809207C; } -void sub_809207C(u8 taskId) +static void sub_809207C(u8 taskId) { if (gMain.newKeys & B_BUTTON) { @@ -5448,14 +4838,14 @@ void sub_809207C(u8 taskId) } } -void sub_809217C(u8 taskId) +static void sub_809217C(u8 taskId) { sub_8092AD4(gTasks[taskId].data[0], gTasks[taskId].data[1]); sub_8092B68(taskId); gTasks[taskId].func = sub_80921B0; } -void sub_80921B0(u8 taskId) +static void sub_80921B0(u8 taskId) { const u8 (*r6)[4]; @@ -5541,7 +4931,7 @@ void sub_80921B0(u8 taskId) } } -void sub_80923FC(u8 taskId) +static void sub_80923FC(u8 taskId) { u8 r10 = sub_8092E10(taskId, 5); u8 r9 = sub_8092E10(taskId, 4); @@ -5554,7 +4944,7 @@ void sub_80923FC(u8 taskId) gTasks[taskId].func = sub_80924A4; } -void sub_80924A4(u8 taskId) +static void sub_80924A4(u8 taskId) { if (!IsSEPlaying()) { @@ -5572,7 +4962,7 @@ void sub_80924A4(u8 taskId) } } -void sub_8092508(u8 taskId) +static void sub_8092508(u8 taskId) { if (gMain.newKeys & A_BUTTON) { @@ -5592,12 +4982,12 @@ void sub_8092508(u8 taskId) } } -void sub_80925B4(u16 a, int unused) +static void sub_80925B4(u16 a, int unused) { sub_814AD7C(0x90, (a * 2 + 1) * 8); } -void sub_80925CC(u8 taskId) +static void sub_80925CC(u8 taskId) { u8 r0; u16 *p1; @@ -5615,7 +5005,7 @@ void sub_80925CC(u8 taskId) gTasks[taskId].func = sub_8092644; } -void sub_8092644(u8 taskId) +static void sub_8092644(u8 taskId) { u8 r1; const struct UnknownStruct2 *r8; @@ -5698,13 +5088,13 @@ void sub_8092644(u8 taskId) } } -void sub_80927B8(u8 taskId) +static void sub_80927B8(u8 taskId) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); gTasks[taskId].func = sub_80927F0; } -void sub_80927F0(u8 taskId) +static void sub_80927F0(u8 taskId) { if (!gPaletteFade.active) DestroyTask(taskId); @@ -5779,7 +5169,7 @@ _08092868: .4byte 0x06007840\n\ } #endif -void sub_809286C(u8 a, u8 b, u8 c) +static void sub_809286C(u8 a, u8 b, u8 c) { u8 r5 = (b & 1) | ((c & 1) << 1); @@ -5812,7 +5202,7 @@ void sub_809286C(u8 a, u8 b, u8 c) } } -void sub_8092964(u8 a) +static void sub_8092964(u8 a) { switch (a) { @@ -5858,13 +5248,13 @@ void sub_8092964(u8 a) } } -void sub_8092AB0(u8 a) +static void sub_8092AB0(u8 a) { sub_8092964(a); sub_8091E20(gUnknown_083B57E4[a].text); } -void sub_8092AD4(u8 a, u8 b) +static void sub_8092AD4(u8 a, u8 b) { sub_8092964(a); switch (b) @@ -5896,7 +5286,7 @@ void sub_8092AD4(u8 a, u8 b) sub_8091E20(gUnknown_083B57FC[b].text); } -void sub_8092B68(u8 taskId) +static void sub_8092B68(u8 taskId) { u16 var; @@ -5928,7 +5318,7 @@ void sub_8092B68(u8 taskId) } } -void sub_8092C8C(u8 a) +static void sub_8092C8C(u8 a) { u16 i; u16 j; @@ -5963,7 +5353,7 @@ void sub_8092C8C(u8 a) } } -void sub_8092D78(u8 taskId) +static void sub_8092D78(u8 taskId) { const struct UnknownStruct2 *r6 = gUnknown_083B5A7C[gTasks[taskId].data[1]].unk0; const u16 *r8 = &gTasks[taskId].data[gUnknown_083B5A7C[gTasks[taskId].data[1]].unk4]; @@ -5982,7 +5372,7 @@ void sub_8092D78(u8 taskId) sub_8091E20(r6[*r8 + *r7].text1); } -u8 sub_8092E10(u8 taskId, u8 b) +static u8 sub_8092E10(u8 taskId, u8 b) { const u16 *ptr1 = &gTasks[taskId].data[gUnknown_083B5A7C[b].unk4]; const u16 *ptr2 = &gTasks[taskId].data[gUnknown_083B5A7C[b].unk5]; @@ -6012,7 +5402,7 @@ u8 sub_8092E10(u8 taskId, u8 b) } } -void sub_8092EB0(u8 taskId) +static void sub_8092EB0(u8 taskId) { u16 r3; @@ -6053,7 +5443,7 @@ void sub_8092EB0(u8 taskId) gTasks[taskId].data[4] = r3; } -bool8 sub_8092F44(u8 taskId) +static bool8 sub_8092F44(u8 taskId) { u8 val1 = gTasks[taskId].data[1]; const u16 *ptr = &gTasks[taskId].data[gUnknown_083B5A7C[val1].unk5]; @@ -6065,7 +5455,7 @@ bool8 sub_8092F44(u8 taskId) return TRUE; } -bool8 sub_8092F8C(u8 taskId) +static bool8 sub_8092F8C(u8 taskId) { u8 val1 = gTasks[taskId].data[1]; const u16 *ptr = &gTasks[taskId].data[gUnknown_083B5A7C[val1].unk5]; @@ -6077,7 +5467,7 @@ bool8 sub_8092F8C(u8 taskId) return TRUE; } -void sub_8092FD8(struct Sprite *sprite) +static void sub_8092FD8(struct Sprite *sprite) { if (gTasks[sprite->data0].func == sub_8092644) { @@ -6107,7 +5497,7 @@ void sub_8092FD8(struct Sprite *sprite) } } -void sub_809308C(u8 taskId) +static void sub_809308C(u8 taskId) { u8 spriteId; -- cgit v1.2.3 From 9fbdcdbc706f264c1a3a61ff7cd0499675b6a76c Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 15 Jun 2017 18:42:10 -0500 Subject: use static and fix a few nonmatching functions --- src/data/pokedex_entries_en.h | 2374 ++++++++++++++++++++--------------------- src/pokedex.c | 306 +++--- 2 files changed, 1316 insertions(+), 1364 deletions(-) (limited to 'src') diff --git a/src/data/pokedex_entries_en.h b/src/data/pokedex_entries_en.h index 2d9eaf617..86da3d67b 100644 --- a/src/data/pokedex_entries_en.h +++ b/src/data/pokedex_entries_en.h @@ -1,3830 +1,3830 @@ -const u8 DexDescription_Dummy_1[] = _( +static const u8 DexDescription_Dummy_1[] = _( "This is a newly discovered POKéMON.\n" "It is currently under investigation."); -const u8 DexDescription_Dummy_2[] = _( +static const u8 DexDescription_Dummy_2[] = _( "No detailed information is available\n" "at this time."); -const u8 DexDescription_Bulbasaur_1[] = _( +static const u8 DexDescription_Bulbasaur_1[] = _( "BULBASAUR can be seen napping in\n" "bright sunlight.\n" "There is a seed on its back."); -const u8 DexDescription_Bulbasaur_2[] = _( +static const u8 DexDescription_Bulbasaur_2[] = _( "By soaking up the sun’s rays, the seed\n" "grows progressively larger."); -const u8 DexDescription_Ivysaur_1[] = _( +static const u8 DexDescription_Ivysaur_1[] = _( "There is a bud on this POKéMON’s back.\n" "To support its weight, IVYSAUR’s legs\n" "and trunk grow thick and strong."); -const u8 DexDescription_Ivysaur_2[] = _( +static const u8 DexDescription_Ivysaur_2[] = _( "If it starts spending more time lying\n" "in the sunlight, it’s a sign that the\n" "bud will bloom into a large flower soon."); -const u8 DexDescription_Venusaur_1[] = _( +static const u8 DexDescription_Venusaur_1[] = _( "There is a large flower on VENUSAUR’s\n" "back. The flower is said to take on vivid\n" "colors if it gets plenty of nutrition"); -const u8 DexDescription_Venusaur_2[] = _( +static const u8 DexDescription_Venusaur_2[] = _( "and sunlight. The flower’s aroma\n" "soothes the emotions of people."); -const u8 DexDescription_Charmander_1[] = _( +static const u8 DexDescription_Charmander_1[] = _( "The flame that burns at the tip of its\n" "tail is an indication of its emotions.\n" "The flame wavers when CHARMANDER is"); -const u8 DexDescription_Charmander_2[] = _( +static const u8 DexDescription_Charmander_2[] = _( "enjoying itself. If the POKéMON becomes\n" "enraged, the flame burns fiercely."); -const u8 DexDescription_Charmeleon_1[] = _( +static const u8 DexDescription_Charmeleon_1[] = _( "CHARMELEON mercilessly destroys its\n" "foes using its sharp claws.\n" "If it encounters a strong foe, it turns"); -const u8 DexDescription_Charmeleon_2[] = _( +static const u8 DexDescription_Charmeleon_2[] = _( "aggressive. In this excited state, the\n" "flame at the tip of its tail flares with a\n" "bluish white color."); -const u8 DexDescription_Charizard_1[] = _( +static const u8 DexDescription_Charizard_1[] = _( "CHARIZARD flies around the sky in\n" "search of powerful opponents.\n" "It breathes fire of such great heat"); -const u8 DexDescription_Charizard_2[] = _( +static const u8 DexDescription_Charizard_2[] = _( "that it melts anything. However, it\n" "never turns its fiery breath on any\n" "opponent weaker than itself."); -const u8 DexDescription_Squirtle_1[] = _( +static const u8 DexDescription_Squirtle_1[] = _( "SQUIRTLE’s shell is not merely used\n" "for protection.\n" "The shell’s rounded shape and the"); -const u8 DexDescription_Squirtle_2[] = _( +static const u8 DexDescription_Squirtle_2[] = _( "grooves on its surface help minimize\n" "resistance in water, enabling this\n" "POKéMON to swim at high speeds."); -const u8 DexDescription_Wartortle_1[] = _( +static const u8 DexDescription_Wartortle_1[] = _( "Its tail is large and covered with a rich,\n" "thick fur. The tail becomes increasingly\n" "deeper in color as WARTORTLE ages."); -const u8 DexDescription_Wartortle_2[] = _( +static const u8 DexDescription_Wartortle_2[] = _( "The scratches on its shell are evidence\n" "of this POKéMON’s toughness as a\n" "battler."); -const u8 DexDescription_Blastoise_1[] = _( +static const u8 DexDescription_Blastoise_1[] = _( "BLASTOISE has water spouts that\n" "protrude from its shell. The water\n" "spouts are very accurate."); -const u8 DexDescription_Blastoise_2[] = _( +static const u8 DexDescription_Blastoise_2[] = _( "They can shoot bullets of water with\n" "enough accuracy to strike empty cans\n" "from a distance of over 160 feet."); -const u8 DexDescription_Caterpie_1[] = _( +static const u8 DexDescription_Caterpie_1[] = _( "CATERPIE has a voracious appetite.\n" "It can devour leaves bigger than its\n" "body right before your eyes."); -const u8 DexDescription_Caterpie_2[] = _( +static const u8 DexDescription_Caterpie_2[] = _( "From its antenna, this POKéMON releases\n" "a terrifically strong odor."); -const u8 DexDescription_Metapod_1[] = _( +static const u8 DexDescription_Metapod_1[] = _( "The shell covering this POKéMON’s body\n" "is as hard as an iron slab.\n" "METAPOD does not move very much."); -const u8 DexDescription_Metapod_2[] = _( +static const u8 DexDescription_Metapod_2[] = _( "It stays still because it is preparing\n" "its soft innards for evolution inside\n" "the hard shell."); -const u8 DexDescription_Butterfree_1[] = _( +static const u8 DexDescription_Butterfree_1[] = _( "BUTTERFREE has a superior ability to\n" "search for delicious honey from\n" "flowers."); -const u8 DexDescription_Butterfree_2[] = _( +static const u8 DexDescription_Butterfree_2[] = _( "It can even search out, extract, and\n" "carry honey from flowers that are\n" "blooming over six miles from its nest."); -const u8 DexDescription_Weedle_1[] = _( +static const u8 DexDescription_Weedle_1[] = _( "WEEDLE has an extremely acute sense\n" "of smell.\n" "It is capable of distinguishing its"); -const u8 DexDescription_Weedle_2[] = _( +static const u8 DexDescription_Weedle_2[] = _( "favorite kinds of leaves from those it\n" "dislikes just by sniffing with its big\n" "red proboscis (nose)."); -const u8 DexDescription_Kakuna_1[] = _( +static const u8 DexDescription_Kakuna_1[] = _( "KAKUNA remains virtually immobile as it\n" "clings to a tree. However, on the\n" "inside, it is extremely busy as it"); -const u8 DexDescription_Kakuna_2[] = _( +static const u8 DexDescription_Kakuna_2[] = _( "prepares for its coming evolution.\n" "This is evident from how hot the shell\n" "becomes to the touch."); -const u8 DexDescription_Beedrill_1[] = _( +static const u8 DexDescription_Beedrill_1[] = _( "BEEDRILL is extremely territorial.\n" "No one should ever approach its nest -\n" "this is for their own safety."); -const u8 DexDescription_Beedrill_2[] = _( +static const u8 DexDescription_Beedrill_2[] = _( "If angered, they will attack in a furious\n" "swarm."); -const u8 DexDescription_Pidgey_1[] = _( +static const u8 DexDescription_Pidgey_1[] = _( "PIDGEY has an extremely sharp sense\n" "of direction.\n" "It is capable of unerringly returning"); -const u8 DexDescription_Pidgey_2[] = _( +static const u8 DexDescription_Pidgey_2[] = _( "home to its nest, however far it may be\n" "removed from its familiar surroundings."); -const u8 DexDescription_Pidgeotto_1[] = _( +static const u8 DexDescription_Pidgeotto_1[] = _( "PIDGEOTTO claims a large area as its\n" "own territory. This POKéMON flies\n" "around, patrolling its living space."); -const u8 DexDescription_Pidgeotto_2[] = _( +static const u8 DexDescription_Pidgeotto_2[] = _( "If its territory is violated, it shows\n" "no mercy in thoroughly punishing the\n" "foe with its sharp claws."); -const u8 DexDescription_Pidgeot_1[] = _( +static const u8 DexDescription_Pidgeot_1[] = _( "This POKéMON has a dazzling plumage of\n" "beautifully glossy feathers.\n" "Many TRAINERS are captivated by the"); -const u8 DexDescription_Pidgeot_2[] = _( +static const u8 DexDescription_Pidgeot_2[] = _( "striking beauty of the feathers on its\n" "head, compelling them to choose PIDGEOT\n" "as their POKéMON."); -const u8 DexDescription_Rattata_1[] = _( +static const u8 DexDescription_Rattata_1[] = _( "RATTATA is cautious in the extreme.\n" "Even while it is asleep, it constantly\n" "listens by moving its ears around."); -const u8 DexDescription_Rattata_2[] = _( +static const u8 DexDescription_Rattata_2[] = _( "It is not picky about where it lives -\n" "it will make its nest anywhere."); -const u8 DexDescription_Raticate_1[] = _( +static const u8 DexDescription_Raticate_1[] = _( "RATICATE’s sturdy fangs grow steadily.\n" "To keep them ground down, it gnaws\n" "on rocks and logs."); -const u8 DexDescription_Raticate_2[] = _( +static const u8 DexDescription_Raticate_2[] = _( "It may even chew on the walls of\n" "houses."); -const u8 DexDescription_Spearow_1[] = _( +static const u8 DexDescription_Spearow_1[] = _( "SPEAROW has a very loud cry that can\n" "be heard over half a mile away.\n" "If its high, keening cry is heard"); -const u8 DexDescription_Spearow_2[] = _( +static const u8 DexDescription_Spearow_2[] = _( "echoing all around, it is a sign that\n" "they are warning each other of danger."); -const u8 DexDescription_Fearow_1[] = _( +static const u8 DexDescription_Fearow_1[] = _( "FEAROW is recognized by its long neck\n" "and elongated beak.\n" "They are conveniently shaped for"); -const u8 DexDescription_Fearow_2[] = _( +static const u8 DexDescription_Fearow_2[] = _( "catching prey in soil or water.\n" "It deftly moves its long and skinny\n" "beak to pluck prey."); -const u8 DexDescription_Ekans_1[] = _( +static const u8 DexDescription_Ekans_1[] = _( "EKANS curls itself up in a spiral while\n" "it rests.\n" "Assuming this position allows it to"); -const u8 DexDescription_Ekans_2[] = _( +static const u8 DexDescription_Ekans_2[] = _( "quickly respond to a threat from any\n" "direction with a glare from its upraised\n" "head."); -const u8 DexDescription_Arbok_1[] = _( +static const u8 DexDescription_Arbok_1[] = _( "This POKéMON is terrifically strong in\n" "order to constrict things with its body.\n" "It can even flatten steel oil drums."); -const u8 DexDescription_Arbok_2[] = _( +static const u8 DexDescription_Arbok_2[] = _( "Once ARBOK wraps its body around its\n" "foe, escaping its crunching embrace is\n" "impossible."); #ifdef SAPPHIRE -const u8 DexDescription_Pikachu_1[] = _( +static const u8 DexDescription_Pikachu_1[] = _( "This POKéMON has electricity-storing\n" "pouches on its cheeks. These appear to\n" "become electrically charged during the"); -const u8 DexDescription_Pikachu_2[] = _( +static const u8 DexDescription_Pikachu_2[] = _( "night while PIKACHU sleeps.\n" "It occasionally discharges electricity\n" "when it is dozy after waking up."); #else -const u8 DexDescription_Pikachu_1[] = _( +static const u8 DexDescription_Pikachu_1[] = _( "Whenever PIKACHU comes across\n" "something new, it blasts it with a jolt\n" "of electricity."); -const u8 DexDescription_Pikachu_2[] = _( +static const u8 DexDescription_Pikachu_2[] = _( "If you come across a blackened berry,\n" "it’s evidence that this POKéMON\n" "mistook the intensity of its charge."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Raichu_1[] = _( +static const u8 DexDescription_Raichu_1[] = _( "This POKéMON exudes a weak electrical\n" "charge from all over its body that makes\n" "it take on a slight glow in darkness."); -const u8 DexDescription_Raichu_2[] = _( +static const u8 DexDescription_Raichu_2[] = _( "RAICHU searches for electricity by\n" "planting its tail in the ground."); #else -const u8 DexDescription_Raichu_1[] = _( +static const u8 DexDescription_Raichu_1[] = _( "If the electrical sacks become\n" "excessively charged, RAICHU plants its\n" "tail in the ground and discharges."); -const u8 DexDescription_Raichu_2[] = _( +static const u8 DexDescription_Raichu_2[] = _( "Scorched patches of ground will be\n" "found near this POKéMON’s nest."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Sandshrew_1[] = _( +static const u8 DexDescription_Sandshrew_1[] = _( "SANDSHREW has a very dry hide that is\n" "extremely tough. The POKéMON can roll\n" "into a ball that repels any attack."); -const u8 DexDescription_Sandshrew_2[] = _( +static const u8 DexDescription_Sandshrew_2[] = _( "At night, it burrows into the desert\n" "sand to sleep."); #else -const u8 DexDescription_Sandshrew_1[] = _( +static const u8 DexDescription_Sandshrew_1[] = _( "SANDSHREW’s body is configured to\n" "absorb water without waste, enabling it\n" "to survive in an arid desert."); -const u8 DexDescription_Sandshrew_2[] = _( +static const u8 DexDescription_Sandshrew_2[] = _( "This POKéMON curls up to protect itself\n" "from its enemies."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Sandslash_1[] = _( +static const u8 DexDescription_Sandslash_1[] = _( "SANDSLASH can roll up its body as if it\n" "were a ball covered with large spikes.\n" "In battle, this POKéMON will try to make"); -const u8 DexDescription_Sandslash_2[] = _( +static const u8 DexDescription_Sandslash_2[] = _( "the foe flinch by jabbing it with its\n" "spines. It then leaps at the stunned\n" "foe to tear wildly with its sharp claws."); #else -const u8 DexDescription_Sandslash_1[] = _( +static const u8 DexDescription_Sandslash_1[] = _( "SANDSLASH’s body is covered by tough\n" "spikes, which are hardened sections of\n" "its hide. Once a year, the old spikes fall"); -const u8 DexDescription_Sandslash_2[] = _( +static const u8 DexDescription_Sandslash_2[] = _( "out, to be replaced with new spikes that\n" "grow out from beneath the old ones."); #endif -const u8 DexDescription_NidoranF_1[] = _( +static const u8 DexDescription_NidoranF_1[] = _( "NIDORAN has barbs that secrete a\n" "powerful poison. They are thought to\n" "have developed as protection for this"); -const u8 DexDescription_NidoranF_2[] = _( +static const u8 DexDescription_NidoranF_2[] = _( "small-bodied POKéMON.\n" "When enraged, it releases a horrible\n" "toxin from its horn."); -const u8 DexDescription_Nidorina_1[] = _( +static const u8 DexDescription_Nidorina_1[] = _( "When NIDORINA are with their friends or\n" "family, they keep their barbs tucked\n" "away to prevent hurting each other."); -const u8 DexDescription_Nidorina_2[] = _( +static const u8 DexDescription_Nidorina_2[] = _( "This POKéMON appears to become\n" "nervous if separated from the others."); -const u8 DexDescription_Nidoqueen_1[] = _( +static const u8 DexDescription_Nidoqueen_1[] = _( "NIDOQUEEN’s body is encased in\n" "extremely hard scales. It is adept at\n" "sending foes flying with harsh tackles."); -const u8 DexDescription_Nidoqueen_2[] = _( +static const u8 DexDescription_Nidoqueen_2[] = _( "This POKéMON is at its strongest when\n" "it is defending its young."); -const u8 DexDescription_NidoranM_1[] = _( +static const u8 DexDescription_NidoranM_1[] = _( "The male NIDORAN has developed\n" "muscles for moving its ears. Thanks to\n" "them, the ears can be freely moved in"); -const u8 DexDescription_NidoranM_2[] = _( +static const u8 DexDescription_NidoranM_2[] = _( "any direction. Even the slightest sound\n" "does not escape this POKéMON’s notice."); -const u8 DexDescription_Nidorino_1[] = _( +static const u8 DexDescription_Nidorino_1[] = _( "NIDORINO has a horn that is harder than\n" "a diamond. If it senses a hostile\n" "presence, all the barbs on its back"); -const u8 DexDescription_Nidorino_2[] = _( +static const u8 DexDescription_Nidorino_2[] = _( "bristle up at once, and it challenges\n" "the foe with all its might."); -const u8 DexDescription_Nidoking_1[] = _( +static const u8 DexDescription_Nidoking_1[] = _( "NIDOKING’s thick tail packs enormously\n" "destructive power. With one swing, it\n" "can topple a metal transmission tower."); -const u8 DexDescription_Nidoking_2[] = _( +static const u8 DexDescription_Nidoking_2[] = _( "Once this POKéMON goes on a rampage,\n" "there is no stopping it."); -const u8 DexDescription_Clefairy_1[] = _( +static const u8 DexDescription_Clefairy_1[] = _( "On every night of a full moon, groups of\n" "this POKéMON come out to play.\n" "When dawn arrives, the tired CLEFAIRY"); -const u8 DexDescription_Clefairy_2[] = _( +static const u8 DexDescription_Clefairy_2[] = _( "return to their quiet mountain retreats\n" "and go to sleep nestled up against each\n" "other."); -const u8 DexDescription_Clefable_1[] = _( +static const u8 DexDescription_Clefable_1[] = _( "CLEFABLE moves by skipping lightly as if\n" "it were flying using its wings. Its\n" "bouncy step lets it even walk on water."); -const u8 DexDescription_Clefable_2[] = _( +static const u8 DexDescription_Clefable_2[] = _( "It is known to take strolls on lakes on\n" "quiet, moonlit nights."); #ifdef SAPPHIRE -const u8 DexDescription_Vulpix_1[] = _( +static const u8 DexDescription_Vulpix_1[] = _( "Inside VULPIX’s body burns a flame that\n" "never goes out. During the daytime,\n" "when the temperatures rise, this"); -const u8 DexDescription_Vulpix_2[] = _( +static const u8 DexDescription_Vulpix_2[] = _( "POKéMON releases flames from its mouth\n" "to prevent its body from growing too\n" "hot."); #else -const u8 DexDescription_Vulpix_1[] = _( +static const u8 DexDescription_Vulpix_1[] = _( "At the time of its birth, VULPIX has one\n" "white tail. The tail separates into six\n" "if this POKéMON receives plenty of love"); -const u8 DexDescription_Vulpix_2[] = _( +static const u8 DexDescription_Vulpix_2[] = _( "from its TRAINER.\n" "The six tails become magnificently\n" "curled."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Ninetales_1[] = _( +static const u8 DexDescription_Ninetales_1[] = _( "Legend has it that NINETALES came into\n" "being when nine wizards possessing\n" "sacred powers merged into one."); -const u8 DexDescription_Ninetales_2[] = _( +static const u8 DexDescription_Ninetales_2[] = _( "This POKéMON is highly intelligent - it\n" "can understand human speech."); #else -const u8 DexDescription_Ninetales_1[] = _( +static const u8 DexDescription_Ninetales_1[] = _( "NINETALES casts a sinister light from\n" "its bright red eyes to gain total\n" "control over its foe’s mind."); -const u8 DexDescription_Ninetales_2[] = _( +static const u8 DexDescription_Ninetales_2[] = _( "This POKéMON is said to live for a\n" "thousand years."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Jigglypuff_1[] = _( +static const u8 DexDescription_Jigglypuff_1[] = _( "When this POKéMON sings, it never\n" "pauses to breathe. If it is in a battle\n" "against an opponent that does not"); -const u8 DexDescription_Jigglypuff_2[] = _( +static const u8 DexDescription_Jigglypuff_2[] = _( "easily fall asleep, JIGGLYPUFF cannot\n" "breathe, endangering its life."); #else -const u8 DexDescription_Jigglypuff_1[] = _( +static const u8 DexDescription_Jigglypuff_1[] = _( "JIGGLYPUFF’s vocal chords can freely\n" "adjust the wavelength of its voice.\n" "This POKéMON uses this ability to sing"); -const u8 DexDescription_Jigglypuff_2[] = _( +static const u8 DexDescription_Jigglypuff_2[] = _( "at precisely the right wavelength to\n" "make its foes most drowsy."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Wigglytuff_1[] = _( +static const u8 DexDescription_Wigglytuff_1[] = _( "WIGGLYTUFF’s body is very flexible.\n" "By inhaling deeply, this POKéMON can\n" "inflate itself seemingly without end."); -const u8 DexDescription_Wigglytuff_2[] = _( +static const u8 DexDescription_Wigglytuff_2[] = _( "Once inflated, WIGGLYTUFF bounces\n" "along lightly like a balloon."); #else -const u8 DexDescription_Wigglytuff_1[] = _( +static const u8 DexDescription_Wigglytuff_1[] = _( "WIGGLYTUFF has large, saucerlike eyes.\n" "The surfaces of its eyes are always\n" "covered with a thin layer of tears."); -const u8 DexDescription_Wigglytuff_2[] = _( +static const u8 DexDescription_Wigglytuff_2[] = _( "If any dust gets in this POKéMON’s\n" "eyes, it is quickly washed away."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Zubat_1[] = _( +static const u8 DexDescription_Zubat_1[] = _( "ZUBAT avoids sunlight because exposure\n" "causes it to become unhealthy.\n" "During the daytime, it stays in caves or"); -const u8 DexDescription_Zubat_2[] = _( +static const u8 DexDescription_Zubat_2[] = _( "under the eaves of old houses, sleeping\n" "while hanging upside down."); #else -const u8 DexDescription_Zubat_1[] = _( +static const u8 DexDescription_Zubat_1[] = _( "ZUBAT remains quietly unmoving in a\n" "dark spot during the bright daylight\n" "hours. It does so because prolonged"); -const u8 DexDescription_Zubat_2[] = _( +static const u8 DexDescription_Zubat_2[] = _( "exposure to the sun causes its body to\n" "become slightly burned."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Golbat_1[] = _( +static const u8 DexDescription_Golbat_1[] = _( "GOLBAT bites down on prey with its four\n" "fangs and drinks the victim’s blood.\n" "It becomes active on inky dark"); -const u8 DexDescription_Golbat_2[] = _( +static const u8 DexDescription_Golbat_2[] = _( "moonless nights, flying around to\n" "attack people and POKéMON."); #else -const u8 DexDescription_Golbat_1[] = _( +static const u8 DexDescription_Golbat_1[] = _( "GOLBAT loves to drink the blood of\n" "living things. It is particularly active\n" "in the pitch black of night."); -const u8 DexDescription_Golbat_2[] = _( +static const u8 DexDescription_Golbat_2[] = _( "This POKéMON flits around in the night\n" "skies, seeking fresh blood."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Oddish_1[] = _( +static const u8 DexDescription_Oddish_1[] = _( "ODDISH searches for fertile, nutrient-\n" "rich soil, then plants itself.\n" "During the daytime, while it is planted,"); -const u8 DexDescription_Oddish_2[] = _( +static const u8 DexDescription_Oddish_2[] = _( "this POKéMON’s feet are thought to\n" "change shape and become similar to\n" "the roots of trees."); #else -const u8 DexDescription_Oddish_1[] = _( +static const u8 DexDescription_Oddish_1[] = _( "During the daytime, ODDISH buries\n" "itself in soil to absorb nutrients from \n" "the ground using its entire body."); -const u8 DexDescription_Oddish_2[] = _( +static const u8 DexDescription_Oddish_2[] = _( "The more fertile the soil, the glossier\n" "its leaves become."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Gloom_1[] = _( +static const u8 DexDescription_Gloom_1[] = _( "From its mouth GLOOM drips honey that\n" "smells absolutely horrible.\n" "Apparently, it loves the horrid stench."); -const u8 DexDescription_Gloom_2[] = _( +static const u8 DexDescription_Gloom_2[] = _( "It sniffs the noxious fumes and then \n" "drools even more of its honey."); #else -const u8 DexDescription_Gloom_1[] = _( +static const u8 DexDescription_Gloom_1[] = _( "GLOOM releases a foul fragrance from\n" "the pistil of its flower. When faced\n" "with danger, the stench worsens."); -const u8 DexDescription_Gloom_2[] = _( +static const u8 DexDescription_Gloom_2[] = _( "If this POKéMON is feeling calm and\n" "secure, it does not release its usual\n" "stinky aroma."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Vileplume_1[] = _( +static const u8 DexDescription_Vileplume_1[] = _( "VILEPLUME has the world’s largest\n" "petals. They are used to attract prey\n" "that are then doused with toxic spores."); -const u8 DexDescription_Vileplume_2[] = _( +static const u8 DexDescription_Vileplume_2[] = _( "Once the prey are immobilized, this\n" "POKéMON catches and devours them."); #else -const u8 DexDescription_Vileplume_1[] = _( +static const u8 DexDescription_Vileplume_1[] = _( "VILEPLUME’s toxic pollen triggers\n" "atrocious allergy attacks. That’s why\n" "it is advisable never to approach any"); -const u8 DexDescription_Vileplume_2[] = _( +static const u8 DexDescription_Vileplume_2[] = _( "attractive flowers in a jungle, however\n" "pretty they may be."); #endif #ifdef SAPPHIRE #if REVISION >= 1 -const u8 DexDescription_Paras_1[] = _( +static const u8 DexDescription_Paras_1[] = _( "PARAS has parasitic mushrooms growing\n" "on its back called tochukaso. They grow\n" "large by drawing nutrients from this"); -const u8 DexDescription_Paras_2[] = _( +static const u8 DexDescription_Paras_2[] = _( "BUG/GRASS POKéMON host. They are\n" // Identify Paras as BUG/GRASS type rather than just BUG "highly valued as a medicine for\n" "extending life."); #else -const u8 DexDescription_Paras_1[] = _( +static const u8 DexDescription_Paras_1[] = _( "PARAS has parasitic mushrooms growing\n" "on its back called tochukaso. They grow\n" "large by drawing nutrients from this"); -const u8 DexDescription_Paras_2[] = _( +static const u8 DexDescription_Paras_2[] = _( "BUG POKéMON host. They are highly\n" "valued as a medicine for extending life."); #endif #else #if REVISION >= 1 -const u8 DexDescription_Paras_1[] = _( +static const u8 DexDescription_Paras_1[] = _( "PARAS has parasitic mushrooms growing\n" "on its back called tochukaso. They grow\n" "large by drawing nutrients from this"); -const u8 DexDescription_Paras_2[] = _( +static const u8 DexDescription_Paras_2[] = _( "BUG/GRASS POKéMON host. They are\n" "highly valued as a medicine for\n" "extending life."); #else -const u8 DexDescription_Paras_1[] = _( +static const u8 DexDescription_Paras_1[] = _( "PARAS has parasitic mushrooms growing\n" "on its back called tochukaso. They grow\n" "large by drawing nutrients from the BUG"); -const u8 DexDescription_Paras_2[] = _( +static const u8 DexDescription_Paras_2[] = _( "POKéMON host. They are highly valued as\n" "a medicine for extending life."); #endif #endif -const u8 DexDescription_Parasect_1[] = _( +static const u8 DexDescription_Parasect_1[] = _( "PARASECT is known to infest large trees\n" "en masse and drain nutrients from the\n" "lower trunk and roots."); -const u8 DexDescription_Parasect_2[] = _( +static const u8 DexDescription_Parasect_2[] = _( "When an infested tree dies, they move\n" "onto another tree all at once."); -const u8 DexDescription_Venonat_1[] = _( +static const u8 DexDescription_Venonat_1[] = _( "VENONAT is said to have evolved with\n" "a coat of thin, stiff hair that covers\n" "its entire body for protection."); -const u8 DexDescription_Venonat_2[] = _( +static const u8 DexDescription_Venonat_2[] = _( "It possesses large eyes that never fail\n" "to spot even miniscule prey."); -const u8 DexDescription_Venomoth_1[] = _( +static const u8 DexDescription_Venomoth_1[] = _( "VENOMOTH is nocturnal - it is a POKéMON\n" "that only becomes active at night.\n" "Its favorite prey are small insects"); -const u8 DexDescription_Venomoth_2[] = _( +static const u8 DexDescription_Venomoth_2[] = _( "that gather around streetlights,\n" "attracted by the light in the darkness."); -const u8 DexDescription_Diglett_1[] = _( +static const u8 DexDescription_Diglett_1[] = _( "DIGLETT are raised in most farms.\n" "The reason is simple - wherever this\n" "POKéMON burrows, the soil is left"); -const u8 DexDescription_Diglett_2[] = _( +static const u8 DexDescription_Diglett_2[] = _( "perfectly tilled for planting crops.\n" "This soil is made ideal for growing\n" "delicious vegetables."); -const u8 DexDescription_Dugtrio_1[] = _( +static const u8 DexDescription_Dugtrio_1[] = _( "DUGTRIO are actually triplets that\n" "emerged from one body. As a result,\n" "each triplet thinks exactly like the"); -const u8 DexDescription_Dugtrio_2[] = _( +static const u8 DexDescription_Dugtrio_2[] = _( "other two triplets.\n" "They work cooperatively to burrow\n" "endlessly."); -const u8 DexDescription_Meowth_1[] = _( +static const u8 DexDescription_Meowth_1[] = _( "MEOWTH withdraws its sharp claws into\n" "its paws to slinkily sneak about without\n" "making any incriminating footsteps."); -const u8 DexDescription_Meowth_2[] = _( +static const u8 DexDescription_Meowth_2[] = _( "For some reason, this POKéMON loves\n" "shiny coins that glitter with light."); -const u8 DexDescription_Persian_1[] = _( +static const u8 DexDescription_Persian_1[] = _( "PERSIAN has six bold whiskers that give\n" "it a look of toughness. The whiskers \n" "sense air movements to determine what"); -const u8 DexDescription_Persian_2[] = _( +static const u8 DexDescription_Persian_2[] = _( "is in the POKéMON’s surrounding\n" "vicinity. It becomes docile if grabbed\n" "by the whiskers."); #ifdef SAPPHIRE -const u8 DexDescription_Psyduck_1[] = _( +static const u8 DexDescription_Psyduck_1[] = _( "If it uses its mysterious power,\n" "PSYDUCK can’t remember having done so.\n" "It apparently can’t form a memory of"); -const u8 DexDescription_Psyduck_2[] = _( +static const u8 DexDescription_Psyduck_2[] = _( "such an event because it goes into\n" "an altered state that is much like\n" "deep sleep."); #else -const u8 DexDescription_Psyduck_1[] = _( +static const u8 DexDescription_Psyduck_1[] = _( "PSYDUCK uses a mysterious power.\n" "When it does so, this POKéMON \n" "generates brain waves that are"); -const u8 DexDescription_Psyduck_2[] = _( +static const u8 DexDescription_Psyduck_2[] = _( "supposedly only seen in sleepers.\n" "This discovery spurred controversy\n" "among scholars."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Golduck_1[] = _( +static const u8 DexDescription_Golduck_1[] = _( "GOLDUCK is the fastest swimmer among\n" "all POKéMON. It swims effortlessly, even\n" "in a rough, stormy sea."); -const u8 DexDescription_Golduck_2[] = _( +static const u8 DexDescription_Golduck_2[] = _( "It sometimes rescues people from\n" "wrecked ships floundering in high seas."); #else -const u8 DexDescription_Golduck_1[] = _( +static const u8 DexDescription_Golduck_1[] = _( "The webbed flippers on its forelegs and\n" "hind legs and the streamlined body of\n" "GOLDUCK give it frightening speed."); -const u8 DexDescription_Golduck_2[] = _( +static const u8 DexDescription_Golduck_2[] = _( "This POKéMON is definitely much faster\n" "than even the most athletic swimmer."); #endif -const u8 DexDescription_Mankey_1[] = _( +static const u8 DexDescription_Mankey_1[] = _( "When MANKEY starts shaking and its\n" "nasal breathing turns rough, it’s a sure\n" "sign that it is becoming angry."); -const u8 DexDescription_Mankey_2[] = _( +static const u8 DexDescription_Mankey_2[] = _( "However, because it goes into a\n" "towering rage almost instantly, it is\n" "impossible for anyone to flee its wrath."); -const u8 DexDescription_Primeape_1[] = _( +static const u8 DexDescription_Primeape_1[] = _( "When PRIMEAPE becomes furious, its\n" "blood circulation is boosted. In turn,\n" "its muscles are made even stronger."); -const u8 DexDescription_Primeape_2[] = _( +static const u8 DexDescription_Primeape_2[] = _( "However, it also becomes much less\n" "intelligent at the same time."); -const u8 DexDescription_Growlithe_1[] = _( +static const u8 DexDescription_Growlithe_1[] = _( "GROWLITHE has a superb sense of smell.\n" "Once it smells anything, this POKéMON\n" "won’t forget the scent, no matter what."); -const u8 DexDescription_Growlithe_2[] = _( +static const u8 DexDescription_Growlithe_2[] = _( "It uses its advanced olfactory sense\n" "to determine the emotions of other\n" "living things."); -const u8 DexDescription_Arcanine_1[] = _( +static const u8 DexDescription_Arcanine_1[] = _( "ARCANINE is known for its high speed.\n" "It is said to be capable of running over\n" "6,200 miles in a single day and night."); -const u8 DexDescription_Arcanine_2[] = _( +static const u8 DexDescription_Arcanine_2[] = _( "The fire that blazes wildly within this\n" "POKéMON’s body is its source of power."); -const u8 DexDescription_Poliwag_1[] = _( +static const u8 DexDescription_Poliwag_1[] = _( "POLIWAG has a very thin skin. It is\n" "possible to see the POKéMON’s spiral\n" "innards right through the skin."); -const u8 DexDescription_Poliwag_2[] = _( +static const u8 DexDescription_Poliwag_2[] = _( "Despite its thinness, however, the skin\n" "is also very flexible. Even sharp fangs\n" "bounce right off it."); -const u8 DexDescription_Poliwhirl_1[] = _( +static const u8 DexDescription_Poliwhirl_1[] = _( "The surface of POLIWHIRL’s body is\n" "always wet and slick with an oily fluid.\n" "Because of this greasy covering, it can"); -const u8 DexDescription_Poliwhirl_2[] = _( +static const u8 DexDescription_Poliwhirl_2[] = _( "easily slip and slide out of the clutches\n" "of any enemy in battle."); -const u8 DexDescription_Poliwrath_1[] = _( +static const u8 DexDescription_Poliwrath_1[] = _( "POLIWRATH’s highly developed, brawny\n" "muscles never grow fatigued, however\n" "much it exercises."); -const u8 DexDescription_Poliwrath_2[] = _( +static const u8 DexDescription_Poliwrath_2[] = _( "It is so tirelessly strong, this POKéMON\n" "can swim back and forth across the\n" "Pacific Ocean without effort."); #ifdef SAPPHIRE -const u8 DexDescription_Abra_1[] = _( +static const u8 DexDescription_Abra_1[] = _( "ABRA needs to sleep for eighteen hours\n" "a day. If it doesn’t, this POKéMON loses\n" "its ability to use telekinetic powers."); -const u8 DexDescription_Abra_2[] = _( +static const u8 DexDescription_Abra_2[] = _( "If it is attacked, ABRA escapes using\n" "TELEPORT while it is still sleeping."); #else -const u8 DexDescription_Abra_1[] = _( +static const u8 DexDescription_Abra_1[] = _( "ABRA sleeps for eighteen hours a day.\n" "However, it can sense the presence of\n" "foes even while it is sleeping."); -const u8 DexDescription_Abra_2[] = _( +static const u8 DexDescription_Abra_2[] = _( "In such a situation, this POKéMON\n" "immediately teleports to safety."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Kadabra_1[] = _( +static const u8 DexDescription_Kadabra_1[] = _( "KADABRA holds a silver spoon in its\n" "hand. The spoon is used to amplify the\n" "alpha waves in its brain."); -const u8 DexDescription_Kadabra_2[] = _( +static const u8 DexDescription_Kadabra_2[] = _( "Without the spoon, the POKéMON is said\n" "to be limited to half the usual amount\n" "of its telekinetic powers."); #else -const u8 DexDescription_Kadabra_1[] = _( +static const u8 DexDescription_Kadabra_1[] = _( "KADABRA emits a peculiar alpha wave\n" "if it develops a headache. Only those\n" "people with a particularly strong"); -const u8 DexDescription_Kadabra_2[] = _( +static const u8 DexDescription_Kadabra_2[] = _( "psyche can hope to become a TRAINER\n" "of this POKéMON."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Alakazam_1[] = _( +static const u8 DexDescription_Alakazam_1[] = _( "ALAKAZAM’s brain continually grows,\n" "infinitely multiplying brain cells.\n" "This amazing brain gives this POKéMON"); -const u8 DexDescription_Alakazam_2[] = _( +static const u8 DexDescription_Alakazam_2[] = _( "an astoundingly high IQ of 5,000.\n" "It has a thorough memory of everything\n" "that has occurred in the world."); #else -const u8 DexDescription_Alakazam_1[] = _( +static const u8 DexDescription_Alakazam_1[] = _( "ALAKAZAM’s brain continually grows,\n" "making its head far too heavy to\n" "support with its neck."); -const u8 DexDescription_Alakazam_2[] = _( +static const u8 DexDescription_Alakazam_2[] = _( "This POKéMON holds its head up using\n" "its psychokinetic power instead."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Machop_1[] = _( +static const u8 DexDescription_Machop_1[] = _( "MACHOP exercises by hefting around\n" "a GRAVELER as if it were a barbell.\n" "There are some MACHOP that travel"); -const u8 DexDescription_Machop_2[] = _( +static const u8 DexDescription_Machop_2[] = _( "the world in a quest to master all\n" "kinds of martial arts."); #else -const u8 DexDescription_Machop_1[] = _( +static const u8 DexDescription_Machop_1[] = _( "MACHOP’s muscles are special - they\n" "never get sore no matter how much they\n" "are used in exercise."); -const u8 DexDescription_Machop_2[] = _( +static const u8 DexDescription_Machop_2[] = _( "This POKéMON has sufficient power to\n" "hurl a hundred adult humans."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Machoke_1[] = _( +static const u8 DexDescription_Machoke_1[] = _( "MACHOKE undertakes bodybuilding every\n" "day even as it helps people with tough,\n" "physically demanding labor."); -const u8 DexDescription_Machoke_2[] = _( +static const u8 DexDescription_Machoke_2[] = _( "On its days off, this POKéMON heads to\n" "the fields and mountains to exercise\n" "and train."); #else -const u8 DexDescription_Machoke_1[] = _( +static const u8 DexDescription_Machoke_1[] = _( "MACHOKE’s thoroughly toned muscles\n" "possess the hardness of steel.\n" "This POKéMON has so much strength,"); -const u8 DexDescription_Machoke_2[] = _( +static const u8 DexDescription_Machoke_2[] = _( "it can easily hold aloft a sumo wrestler\n" "on just one finger."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Machamp_1[] = _( +static const u8 DexDescription_Machamp_1[] = _( "MACHAMP is known as the POKéMON that\n" "has mastered every kind of martial arts.\n" "If it grabs hold of the foe with its four"); -const u8 DexDescription_Machamp_2[] = _( +static const u8 DexDescription_Machamp_2[] = _( "arms, the battle is all but over.\n" "The hapless foe is thrown far over the\n" "horizon."); #else -const u8 DexDescription_Machamp_1[] = _( +static const u8 DexDescription_Machamp_1[] = _( "MACHAMP has the power to hurl anything\n" "aside. However, trying to do any work\n" "requiring care and dexterity causes"); -const u8 DexDescription_Machamp_2[] = _( +static const u8 DexDescription_Machamp_2[] = _( "its arms to get tangled.\n" "This POKéMON tends to leap into action\n" "before it thinks."); #endif -const u8 DexDescription_Bellsprout_1[] = _( +static const u8 DexDescription_Bellsprout_1[] = _( "BELLSPROUT’s thin and flexible body\n" "lets it bend and sway to avoid any\n" "attack, however strong it may be."); -const u8 DexDescription_Bellsprout_2[] = _( +static const u8 DexDescription_Bellsprout_2[] = _( "From its mouth, this POKéMON spits a\n" "corrosive fluid that melts even iron."); -const u8 DexDescription_Weepinbell_1[] = _( +static const u8 DexDescription_Weepinbell_1[] = _( "WEEPINBELL has a large hook on its rear\n" "end. At night, the POKéMON hooks on to\n" "a tree branch and goes to sleep."); -const u8 DexDescription_Weepinbell_2[] = _( +static const u8 DexDescription_Weepinbell_2[] = _( "If it moves around in its sleep, it may\n" "wake up to find itself on the ground."); -const u8 DexDescription_Victreebel_1[] = _( +static const u8 DexDescription_Victreebel_1[] = _( "VICTREEBEL has a long vine that\n" "extends from its head. This vine is\n" "waved and flicked about as if it were"); -const u8 DexDescription_Victreebel_2[] = _( +static const u8 DexDescription_Victreebel_2[] = _( "an animal to attract prey. When an\n" "unsuspecting prey draws near, this\n" "POKéMON swallows it whole."); #ifdef SAPPHIRE -const u8 DexDescription_Tentacool_1[] = _( +static const u8 DexDescription_Tentacool_1[] = _( "TENTACOOL absorbs sunlight and\n" "refracts it using water inside its body\n" "to convert it into beam energy."); -const u8 DexDescription_Tentacool_2[] = _( +static const u8 DexDescription_Tentacool_2[] = _( "This POKéMON shoots beams from its\n" "crystal-like eyes."); #else -const u8 DexDescription_Tentacool_1[] = _( +static const u8 DexDescription_Tentacool_1[] = _( "TENTACOOL’s body is largely composed\n" "of water. If it is removed from the\n" "sea, it dries up like parchment."); -const u8 DexDescription_Tentacool_2[] = _( +static const u8 DexDescription_Tentacool_2[] = _( "If this POKéMON happens to become\n" "dehydrated, put it back into the sea."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Tentacruel_1[] = _( +static const u8 DexDescription_Tentacruel_1[] = _( "TENTACRUEL has tentacles that can be\n" "freely elongated and shortened at will.\n" "It ensnares prey with its tentacles and"); -const u8 DexDescription_Tentacruel_2[] = _( +static const u8 DexDescription_Tentacruel_2[] = _( "weakens the prey by dosing it with a\n" "harsh toxin. It can catch up to 80\n" "prey at the same time."); #else -const u8 DexDescription_Tentacruel_1[] = _( +static const u8 DexDescription_Tentacruel_1[] = _( "TENTACRUEL has large red orbs on its\n" "head. The orbs glow before lashing the\n" "vicinity with a harsh ultrasonic blast."); -const u8 DexDescription_Tentacruel_2[] = _( +static const u8 DexDescription_Tentacruel_2[] = _( "This POKéMON’s outburst creates rough\n" "waves around it."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Geodude_1[] = _( +static const u8 DexDescription_Geodude_1[] = _( "When GEODUDE sleeps deeply, it buries\n" "itself halfway into the ground.\n" "It will not awaken even if hikers step"); -const u8 DexDescription_Geodude_2[] = _( +static const u8 DexDescription_Geodude_2[] = _( "on it unwittingly.\n" "In the morning, this POKéMON rolls\n" "downhill in search of food."); #else -const u8 DexDescription_Geodude_1[] = _( +static const u8 DexDescription_Geodude_1[] = _( "The longer a GEODUDE lives, the more\n" "its edges are chipped and worn away,\n" "making it more rounded in appearance."); -const u8 DexDescription_Geodude_2[] = _( +static const u8 DexDescription_Geodude_2[] = _( "However, this POKéMON’s heart will\n" "remain hard, craggy, and rough always."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Graveler_1[] = _( +static const u8 DexDescription_Graveler_1[] = _( "Rocks are GRAVELER’s favorite food.\n" "This POKéMON will climb a mountain from\n" "the base to the summit, crunchingly"); -const u8 DexDescription_Graveler_2[] = _( +static const u8 DexDescription_Graveler_2[] = _( "feasting on rocks all the while.\n" "Upon reaching the peak, it rolls back\n" "down to the bottom."); #else -const u8 DexDescription_Graveler_1[] = _( +static const u8 DexDescription_Graveler_1[] = _( "GRAVELER grows by feeding on rocks.\n" "Apparently, it prefers to eat rocks\n" "that are covered in moss."); -const u8 DexDescription_Graveler_2[] = _( +static const u8 DexDescription_Graveler_2[] = _( "This POKéMON eats its way through\n" "a ton of rocks on a daily basis."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Golem_1[] = _( +static const u8 DexDescription_Golem_1[] = _( "GOLEM is known for rolling down from\n" "mountains. To prevent them from rolling\n" "into the homes of people downhill,"); -const u8 DexDescription_Golem_2[] = _( +static const u8 DexDescription_Golem_2[] = _( "grooves have been dug into the sides of\n" "mountains to serve as guideways for\n" "diverting this POKéMON’s course."); #else -const u8 DexDescription_Golem_1[] = _( +static const u8 DexDescription_Golem_1[] = _( "GOLEM live up on mountains.\n" "If there is a large earthquake, these\n" "POKéMON will come rolling down off"); -const u8 DexDescription_Golem_2[] = _( +static const u8 DexDescription_Golem_2[] = _( "the mountains en masse to the\n" "foothills below."); #endif -const u8 DexDescription_Ponyta_1[] = _( +static const u8 DexDescription_Ponyta_1[] = _( "PONYTA is very weak at birth.\n" "It can barely stand up.\n" "This POKéMON becomes stronger by"); -const u8 DexDescription_Ponyta_2[] = _( +static const u8 DexDescription_Ponyta_2[] = _( "stumbling and falling to keep up with\n" "its parent."); -const u8 DexDescription_Rapidash_1[] = _( +static const u8 DexDescription_Rapidash_1[] = _( "RAPIDASH usually can be seen casually\n" "cantering in the fields and plains.\n" "However, when this POKéMON turns"); -const u8 DexDescription_Rapidash_2[] = _( +static const u8 DexDescription_Rapidash_2[] = _( "serious, its fiery manes flare and blaze\n" "as it gallops its way up to 150 mph."); -const u8 DexDescription_Slowpoke_1[] = _( +static const u8 DexDescription_Slowpoke_1[] = _( "SLOWPOKE uses its tail to catch prey by\n" "dipping it in water at the side of a\n" "river."); -const u8 DexDescription_Slowpoke_2[] = _( +static const u8 DexDescription_Slowpoke_2[] = _( "However, this POKéMON often forgets\n" "what it’s doing and often spends entire\n" "days just loafing at water’s edge."); -const u8 DexDescription_Slowbro_1[] = _( +static const u8 DexDescription_Slowbro_1[] = _( "SLOWBRO’s tail has a SHELLDER firmly\n" "attached with a bite. As a result, the\n" "tail can’t be used for fishing anymore."); -const u8 DexDescription_Slowbro_2[] = _( +static const u8 DexDescription_Slowbro_2[] = _( "This causes SLOWBRO to grudgingly swim\n" "and catch prey instead."); #ifdef SAPPHIRE -const u8 DexDescription_Magnemite_1[] = _( +static const u8 DexDescription_Magnemite_1[] = _( "MAGNEMITE floats in the air by emitting\n" "electromagnetic waves from the units\n" "at its sides. These waves block gravity."); -const u8 DexDescription_Magnemite_2[] = _( +static const u8 DexDescription_Magnemite_2[] = _( "This POKéMON becomes incapable of\n" "flight if its internal electrical supply\n" "is depleted."); #else -const u8 DexDescription_Magnemite_1[] = _( +static const u8 DexDescription_Magnemite_1[] = _( "MAGNEMITE attaches itself to power\n" "lines to feed on electricity.\n" "If your house has a power outage,"); -const u8 DexDescription_Magnemite_2[] = _( +static const u8 DexDescription_Magnemite_2[] = _( "check your circuit breakers. You may\n" "find a large number of this POKéMON\n" "clinging to the breaker box."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Magneton_1[] = _( +static const u8 DexDescription_Magneton_1[] = _( "MAGNETON emits a powerful magnetic\n" "force that is fatal to electronics and\n" "precision instruments. Because of"); -const u8 DexDescription_Magneton_2[] = _( +static const u8 DexDescription_Magneton_2[] = _( "this, it is said that some towns warn\n" "people to keep this POKéMON inside\n" "a POKé BALL."); #else -const u8 DexDescription_Magneton_1[] = _( +static const u8 DexDescription_Magneton_1[] = _( "MAGNETON emits a powerful magnetic\n" "force that is fatal to mechanical\n" "devices. As a result, large cities sound"); -const u8 DexDescription_Magneton_2[] = _( +static const u8 DexDescription_Magneton_2[] = _( "sirens to warn citizens of large-scale\n" "outbreaks of this POKéMON."); #endif -const u8 DexDescription_Farfetchd_1[] = _( +static const u8 DexDescription_Farfetchd_1[] = _( "FARFETCH’D is always seen with a stick\n" "from a plant of some sort. Apparently,\n" "there are good sticks and bad sticks."); -const u8 DexDescription_Farfetchd_2[] = _( +static const u8 DexDescription_Farfetchd_2[] = _( "This POKéMON has been known to fight\n" "with others over sticks."); #ifdef SAPPHIRE -const u8 DexDescription_Doduo_1[] = _( +static const u8 DexDescription_Doduo_1[] = _( "DODUO’s two heads contain completely\n" "identical brains.\n" "A scientific study reported that on"); -const u8 DexDescription_Doduo_2[] = _( +static const u8 DexDescription_Doduo_2[] = _( "rare occasions, there will be examples\n" "of this POKéMON possessing different\n" "sets of brains."); #else -const u8 DexDescription_Doduo_1[] = _( +static const u8 DexDescription_Doduo_1[] = _( "DODUO’s two heads never sleep at the\n" "same time.\n" "Its two heads take turns sleeping,"); -const u8 DexDescription_Doduo_2[] = _( +static const u8 DexDescription_Doduo_2[] = _( "so one head can always keep watch for\n" "enemies while the other one sleeps."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Dodrio_1[] = _( +static const u8 DexDescription_Dodrio_1[] = _( "Apparently, the heads aren’t the only\n" "parts of the body that DODRIO has\n" "three of."); -const u8 DexDescription_Dodrio_2[] = _( +static const u8 DexDescription_Dodrio_2[] = _( "It has three sets of hearts and lungs\n" "as well, so it is capable of running long\n" "distances without rest."); #else -const u8 DexDescription_Dodrio_1[] = _( +static const u8 DexDescription_Dodrio_1[] = _( "Watch out if DODRIO’s three heads are\n" "looking in three separate directions.\n" "It’s a sure sign that it is on its guard."); -const u8 DexDescription_Dodrio_2[] = _( +static const u8 DexDescription_Dodrio_2[] = _( "Don’t go near this POKéMON if it’s being\n" "wary - it may decide to peck you."); #endif -const u8 DexDescription_Seel_1[] = _( +static const u8 DexDescription_Seel_1[] = _( "SEEL hunts for prey in the frigid sea\n" "underneath sheets of ice.\n" "When it needs to breathe, it punches"); -const u8 DexDescription_Seel_2[] = _( +static const u8 DexDescription_Seel_2[] = _( "a hole through the ice with the\n" "sharply protruding section of its head."); -const u8 DexDescription_Dewgong_1[] = _( +static const u8 DexDescription_Dewgong_1[] = _( "DEWGONG loves to snooze on bitterly\n" "cold ice.\n" "The sight of this POKéMON sleeping on"); -const u8 DexDescription_Dewgong_2[] = _( +static const u8 DexDescription_Dewgong_2[] = _( "a glacier was mistakenly thought to be\n" "a mermaid by a mariner long ago."); #ifdef SAPPHIRE -const u8 DexDescription_Grimer_1[] = _( +static const u8 DexDescription_Grimer_1[] = _( "GRIMER emerged from the sludge that\n" "settled on a polluted seabed.\n" "This POKéMON loves anything filthy."); -const u8 DexDescription_Grimer_2[] = _( +static const u8 DexDescription_Grimer_2[] = _( "It constantly leaks a horribly germ-\n" "infested fluid from all over its body."); #else -const u8 DexDescription_Grimer_1[] = _( +static const u8 DexDescription_Grimer_1[] = _( "GRIMER’s sludgy and rubbery body can\n" "be forced through any opening, however\n" "small it may be."); -const u8 DexDescription_Grimer_2[] = _( +static const u8 DexDescription_Grimer_2[] = _( "This POKéMON enters sewer pipes to\n" "drink filthy wastewater."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Muk_1[] = _( +static const u8 DexDescription_Muk_1[] = _( "This POKéMON’s favorite food is\n" "anything that is repugnantly filthy.\n" "In dirty towns where people think"); -const u8 DexDescription_Muk_2[] = _( +static const u8 DexDescription_Muk_2[] = _( "nothing of throwing away litter on the\n" "streets, MUK are certain to gather."); #else -const u8 DexDescription_Muk_1[] = _( +static const u8 DexDescription_Muk_1[] = _( "From MUK’s body seeps a foul fluid that\n" "gives off a nose-bendingly horrible\n" "stench."); -const u8 DexDescription_Muk_2[] = _( +static const u8 DexDescription_Muk_2[] = _( "Just one drop of this POKéMON’s body\n" "fluid can turn a pool stagnant and\n" "rancid."); #endif -const u8 DexDescription_Shellder_1[] = _( +static const u8 DexDescription_Shellder_1[] = _( "At night, this POKéMON uses its broad\n" "tongue to burrow a hole in the seafloor\n" "sand and then sleep in it."); -const u8 DexDescription_Shellder_2[] = _( +static const u8 DexDescription_Shellder_2[] = _( "While it is sleeping, SHELLDER closes its\n" "shell, but leaves its tongue hanging\n" "out."); -const u8 DexDescription_Cloyster_1[] = _( +static const u8 DexDescription_Cloyster_1[] = _( "CLOYSTER is capable of swimming in the\n" "sea. It does so by swallowing water,\n" "then jetting it out toward the rear."); -const u8 DexDescription_Cloyster_2[] = _( +static const u8 DexDescription_Cloyster_2[] = _( "This POKéMON shoots spikes from its\n" "shell using the same system."); -const u8 DexDescription_Gastly_1[] = _( +static const u8 DexDescription_Gastly_1[] = _( "GASTLY is largely composed of gaseous\n" "matter. When exposed to a strong wind,\n" "the gaseous body quickly dwindles away."); -const u8 DexDescription_Gastly_2[] = _( +static const u8 DexDescription_Gastly_2[] = _( "Groups of this POKéMON cluster under\n" "the eaves of houses to escape the\n" "ravages of wind."); -const u8 DexDescription_Haunter_1[] = _( +static const u8 DexDescription_Haunter_1[] = _( "HAUNTER is a dangerous POKéMON.\n" "If one beckons you while floating in\n" "darkness, you must never approach it."); -const u8 DexDescription_Haunter_2[] = _( +static const u8 DexDescription_Haunter_2[] = _( "This POKéMON will try to lick you with its\n" "tongue and steal your life away."); -const u8 DexDescription_Gengar_1[] = _( +static const u8 DexDescription_Gengar_1[] = _( "Sometimes, on a dark night, your shadow\n" "thrown by a streetlight will suddenly\n" "and startlingly overtake you."); -const u8 DexDescription_Gengar_2[] = _( +static const u8 DexDescription_Gengar_2[] = _( "It is actually a GENGAR running past\n" "you, pretending to be your shadow."); -const u8 DexDescription_Onix_1[] = _( +static const u8 DexDescription_Onix_1[] = _( "ONIX has a magnet in its brain. It acts\n" "as a compass so that this POKéMON does\n" "not lose direction while it is tunneling."); -const u8 DexDescription_Onix_2[] = _( +static const u8 DexDescription_Onix_2[] = _( "As it grows older, its body becomes\n" "increasingly rounder and smoother."); -const u8 DexDescription_Drowzee_1[] = _( +static const u8 DexDescription_Drowzee_1[] = _( "If your nose becomes itchy while you\n" "are sleeping, it’s a sure sign that one\n" "of these POKéMON is standing above"); -const u8 DexDescription_Drowzee_2[] = _( +static const u8 DexDescription_Drowzee_2[] = _( "your pillow and trying to eat your dream\n" "through your nostrils."); -const u8 DexDescription_Hypno_1[] = _( +static const u8 DexDescription_Hypno_1[] = _( "HYPNO holds a pendulum in its hand.\n" "The arcing movement and glitter of the\n" "pendulum lull the foe into a deep state"); -const u8 DexDescription_Hypno_2[] = _( +static const u8 DexDescription_Hypno_2[] = _( "of hypnosis.\n" "While this POKéMON searches for prey,\n" "it polishes the pendulum."); -const u8 DexDescription_Krabby_1[] = _( +static const u8 DexDescription_Krabby_1[] = _( "KRABBY live on beaches, burrowed inside\n" "holes dug into the sand.\n" "On sandy beaches with little in the way"); -const u8 DexDescription_Krabby_2[] = _( +static const u8 DexDescription_Krabby_2[] = _( "of food, these POKéMON can be seen\n" "squabbling with each other over\n" "territory."); -const u8 DexDescription_Kingler_1[] = _( +static const u8 DexDescription_Kingler_1[] = _( "KINGLER has an enormous, oversized\n" "claw. It waves this huge claw in the\n" "air to communicate with others."); -const u8 DexDescription_Kingler_2[] = _( +static const u8 DexDescription_Kingler_2[] = _( "However, because the claw is so heavy,\n" "the POKéMON quickly tires."); #ifdef SAPPHIRE -const u8 DexDescription_Voltorb_1[] = _( +static const u8 DexDescription_Voltorb_1[] = _( "VOLTORB is extremely sensitive - it\n" "explodes at the slightest of shocks.\n" "It is rumored that it was first created"); -const u8 DexDescription_Voltorb_2[] = _( +static const u8 DexDescription_Voltorb_2[] = _( "when a POKé BALL was exposed to a\n" "powerful pulse of energy."); #else -const u8 DexDescription_Voltorb_1[] = _( +static const u8 DexDescription_Voltorb_1[] = _( "VOLTORB was first sighted at a company\n" "that manufactures POKé BALLS.\n" "The link between that sighting and"); -const u8 DexDescription_Voltorb_2[] = _( +static const u8 DexDescription_Voltorb_2[] = _( "the fact that this POKéMON looks very\n" "similar to a POKé BALL remains a\n" "mystery."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Electrode_1[] = _( +static const u8 DexDescription_Electrode_1[] = _( "One of ELECTRODE’s characteristics is\n" "its attraction to electricity.\n" "It is a problematical POKéMON that"); -const u8 DexDescription_Electrode_2[] = _( +static const u8 DexDescription_Electrode_2[] = _( "congregates mostly at electrical\n" "power plants to feed on electricity\n" "that has just been generated."); #else -const u8 DexDescription_Electrode_1[] = _( +static const u8 DexDescription_Electrode_1[] = _( "ELECTRODE eats electricity in the\n" "atmosphere. On days when lightning\n" "strikes, you can see this POKéMON"); -const u8 DexDescription_Electrode_2[] = _( +static const u8 DexDescription_Electrode_2[] = _( "exploding all over the place from\n" "eating too much electricity."); #endif -const u8 DexDescription_Exeggcute_1[] = _( +static const u8 DexDescription_Exeggcute_1[] = _( "This POKéMON consists of six eggs that\n" "form a closely knit cluster. The six eggs\n" "attract each other and spin around."); -const u8 DexDescription_Exeggcute_2[] = _( +static const u8 DexDescription_Exeggcute_2[] = _( "When cracks increasingly appear on the\n" "eggs, EXEGGCUTE is close to evolution."); -const u8 DexDescription_Exeggutor_1[] = _( +static const u8 DexDescription_Exeggutor_1[] = _( "EXEGGUTOR originally came from the\n" "tropics. Its heads steadily grow larger\n" "from exposure to strong sunlight."); -const u8 DexDescription_Exeggutor_2[] = _( +static const u8 DexDescription_Exeggutor_2[] = _( "It is said that when the heads fall off,\n" "they group together to form EXEGGCUTE."); -const u8 DexDescription_Cubone_1[] = _( +static const u8 DexDescription_Cubone_1[] = _( "CUBONE pines for the mother it will\n" "never see again. Seeing a likeness of\n" "its mother in the full moon, it cries."); -const u8 DexDescription_Cubone_2[] = _( +static const u8 DexDescription_Cubone_2[] = _( "The stains on the skull the POKéMON\n" "wears are made by the tears it sheds."); -const u8 DexDescription_Marowak_1[] = _( +static const u8 DexDescription_Marowak_1[] = _( "MAROWAK is the evolved form of a CUBONE\n" "that has overcome its sadness at the\n" "loss of its mother and grown tough."); -const u8 DexDescription_Marowak_2[] = _( +static const u8 DexDescription_Marowak_2[] = _( "This POKéMON’s tempered and hardened\n" "spirit is not easily broken."); -const u8 DexDescription_Hitmonlee_1[] = _( +static const u8 DexDescription_Hitmonlee_1[] = _( "HITMONLEE’s legs freely contract and\n" "stretch. Using these springlike legs, it\n" "bowls over foes with devastating kicks."); -const u8 DexDescription_Hitmonlee_2[] = _( +static const u8 DexDescription_Hitmonlee_2[] = _( "After battle, it rubs down its legs and\n" "loosens the muscles to overcome\n" "fatigue."); -const u8 DexDescription_Hitmonchan_1[] = _( +static const u8 DexDescription_Hitmonchan_1[] = _( "HITMONCHAN is said to possess the\n" "spirit of a boxer who had been working\n" "towards a world championship."); -const u8 DexDescription_Hitmonchan_2[] = _( +static const u8 DexDescription_Hitmonchan_2[] = _( "This POKéMON has an indomitable spirit\n" "and will never give up in the face of\n" "adversity."); -const u8 DexDescription_Lickitung_1[] = _( +static const u8 DexDescription_Lickitung_1[] = _( "Whenever LICKITUNG comes across\n" "something new, it will unfailingly give it\n" "a lick. It does so because it memorizes"); -const u8 DexDescription_Lickitung_2[] = _( +static const u8 DexDescription_Lickitung_2[] = _( "things by texture and by taste.\n" "It is somewhat put off by sour things."); #ifdef SAPPHIRE -const u8 DexDescription_Koffing_1[] = _( +static const u8 DexDescription_Koffing_1[] = _( "KOFFING embodies toxic substances.\n" "It mixes the toxins with raw garbage to\n" "set off a chemical reaction that"); -const u8 DexDescription_Koffing_2[] = _( +static const u8 DexDescription_Koffing_2[] = _( "results in a terribly powerful poison\n" "gas. The higher the temperature, the\n" "more gas is concocted by this POKéMON."); #else -const u8 DexDescription_Koffing_1[] = _( +static const u8 DexDescription_Koffing_1[] = _( "If KOFFING becomes agitated, it raises\n" "the toxicity of its internal gases and\n" "jets them out from all over its body."); -const u8 DexDescription_Koffing_2[] = _( +static const u8 DexDescription_Koffing_2[] = _( "This POKéMON may also overinflate its\n" "round body, then explode."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Weezing_1[] = _( +static const u8 DexDescription_Weezing_1[] = _( "WEEZING alternately shrinks and\n" "inflates its twin bodies to mix together\n" "toxic gases inside."); -const u8 DexDescription_Weezing_2[] = _( +static const u8 DexDescription_Weezing_2[] = _( "The more the gases are mixed, the more\n" "powerful the toxins become. The\n" "POKéMON also becomes more putrid."); #else -const u8 DexDescription_Weezing_1[] = _( +static const u8 DexDescription_Weezing_1[] = _( "WEEZING loves the gases given off by\n" "rotted kitchen garbage. This POKéMON\n" "will find a dirty, unkempt house and"); -const u8 DexDescription_Weezing_2[] = _( +static const u8 DexDescription_Weezing_2[] = _( "make it its home. At night, when the\n" "people in the house are asleep, it will\n" "go through the trash."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Rhyhorn_1[] = _( +static const u8 DexDescription_Rhyhorn_1[] = _( "RHYHORN’s brain is very small. It is so\n" "dense, while on a run it forgets why it\n" "started running in the first place."); -const u8 DexDescription_Rhyhorn_2[] = _( +static const u8 DexDescription_Rhyhorn_2[] = _( "It apparently remembers sometimes if it\n" "demolishes something."); #else -const u8 DexDescription_Rhyhorn_1[] = _( +static const u8 DexDescription_Rhyhorn_1[] = _( "RHYHORN runs in a straight line,\n" "smashing everything in its path.\n" "It is not bothered even if it rushes"); -const u8 DexDescription_Rhyhorn_2[] = _( +static const u8 DexDescription_Rhyhorn_2[] = _( "headlong into a block of steel.\n" "This POKéMON may feel some pain from\n" "the collision the next day, however."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Rhydon_1[] = _( +static const u8 DexDescription_Rhydon_1[] = _( "RHYDON has a horn that serves as a\n" "drill. It is used for destroying rocks\n" "and boulders."); -const u8 DexDescription_Rhydon_2[] = _( +static const u8 DexDescription_Rhydon_2[] = _( "This POKéMON occasionally rams into\n" "streams of magma, but the armor-like\n" "hide prevents it from feeling the heat."); #else -const u8 DexDescription_Rhydon_1[] = _( +static const u8 DexDescription_Rhydon_1[] = _( "RHYDON’s horn can crush even uncut\n" "diamonds. One sweeping blow of its tail\n" "can topple a building."); -const u8 DexDescription_Rhydon_2[] = _( +static const u8 DexDescription_Rhydon_2[] = _( "This POKéMON’s hide is extremely tough.\n" "Even direct cannon hits don’t leave\n" "a scratch."); #endif -const u8 DexDescription_Chansey_1[] = _( +static const u8 DexDescription_Chansey_1[] = _( "CHANSEY lays nutritionally excellent\n" "eggs on an everyday basis.\n" "The eggs are so delicious, they are"); -const u8 DexDescription_Chansey_2[] = _( +static const u8 DexDescription_Chansey_2[] = _( "easily and eagerly devoured by even\n" "those people who have lost their\n" "appetite."); -const u8 DexDescription_Tangela_1[] = _( +static const u8 DexDescription_Tangela_1[] = _( "TANGELA’s vines snap off easily if they\n" "are grabbed. This happens without pain,\n" "allowing it to make a quick getaway."); -const u8 DexDescription_Tangela_2[] = _( +static const u8 DexDescription_Tangela_2[] = _( "The lost vines are replaced by newly\n" "grown vines the very next day."); -const u8 DexDescription_Kangaskhan_1[] = _( +static const u8 DexDescription_Kangaskhan_1[] = _( "If you come across a young KANGASKHAN\n" "playing by itself, you must never\n" "disturb it or attempt to catch it."); -const u8 DexDescription_Kangaskhan_2[] = _( +static const u8 DexDescription_Kangaskhan_2[] = _( "The baby POKéMON’s parent is sure to\n" "be in the area, and it will become\n" "violently enraged at you."); #ifdef SAPPHIRE -const u8 DexDescription_Horsea_1[] = _( +static const u8 DexDescription_Horsea_1[] = _( "If HORSEA senses danger, it will\n" "reflexively spray a dense black ink\n" "from its mouth and try to escape."); -const u8 DexDescription_Horsea_2[] = _( +static const u8 DexDescription_Horsea_2[] = _( "This POKéMON swims by cleverly flapping\n" "the fins on its back."); #else -const u8 DexDescription_Horsea_1[] = _( +static const u8 DexDescription_Horsea_1[] = _( "HORSEA eats small insects and moss off\n" "of rocks. If the ocean current turns\n" "fast, this POKéMON anchors itself by"); -const u8 DexDescription_Horsea_2[] = _( +static const u8 DexDescription_Horsea_2[] = _( "wrapping its tail around rocks or coral\n" "to prevent being washed away."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Seadra_1[] = _( +static const u8 DexDescription_Seadra_1[] = _( "SEADRA generates whirlpools by spinning\n" "its body. The whirlpools are strong\n" "enough to swallow even fishing boats."); -const u8 DexDescription_Seadra_2[] = _( +static const u8 DexDescription_Seadra_2[] = _( "This POKéMON weakens prey with these\n" "currents, then swallows it whole."); #else -const u8 DexDescription_Seadra_1[] = _( +static const u8 DexDescription_Seadra_1[] = _( "SEADRA sleeps after wriggling itself\n" "between the branches of coral.\n" "Those trying to harvest coral are"); -const u8 DexDescription_Seadra_2[] = _( +static const u8 DexDescription_Seadra_2[] = _( "occasionally stung by this POKéMON’s\n" "poison barbs if they fail to notice it."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Goldeen_1[] = _( +static const u8 DexDescription_Goldeen_1[] = _( "GOLDEEN loves swimming wild and free\n" "in rivers and ponds.\n" "If one of these POKéMON is placed in an"); -const u8 DexDescription_Goldeen_2[] = _( +static const u8 DexDescription_Goldeen_2[] = _( "aquarium, it will shatter even the\n" "thickest glass with one ram of its horn\n" "and make its escape."); #else -const u8 DexDescription_Goldeen_1[] = _( +static const u8 DexDescription_Goldeen_1[] = _( "GOLDEEN is a very beautiful POKéMON\n" "with fins that billow elegantly in water.\n" "However, don’t let your guard down"); -const u8 DexDescription_Goldeen_2[] = _( +static const u8 DexDescription_Goldeen_2[] = _( "around this POKéMON - it could ram you\n" "powerfully with its horn."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Seaking_1[] = _( +static const u8 DexDescription_Seaking_1[] = _( "SEAKING is very protective of its eggs.\n" "The male and female will take turns\n" "patrolling around their nest and eggs."); -const u8 DexDescription_Seaking_2[] = _( +static const u8 DexDescription_Seaking_2[] = _( "The guarding of eggs by these POKéMON\n" "goes on for over a month."); #else -const u8 DexDescription_Seaking_1[] = _( +static const u8 DexDescription_Seaking_1[] = _( "In the autumn, SEAKING males can be\n" "seen performing courtship dances in\n" "riverbeds to woo females."); -const u8 DexDescription_Seaking_2[] = _( +static const u8 DexDescription_Seaking_2[] = _( "During this season, this POKéMON’s body\n" "coloration is at its most beautiful."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Staryu_1[] = _( +static const u8 DexDescription_Staryu_1[] = _( "STARYU apparently communicates with\n" "the stars in the night sky by flashing\n" "the red core at the center of its body."); -const u8 DexDescription_Staryu_2[] = _( +static const u8 DexDescription_Staryu_2[] = _( "If parts of its body are torn, this\n" "POKéMON simply regenerates the\n" "missing pieces and limbs."); #else -const u8 DexDescription_Staryu_1[] = _( +static const u8 DexDescription_Staryu_1[] = _( "STARYU’s center section has an organ\n" "called the core that shines bright red.\n" "If you go to a beach toward the"); -const u8 DexDescription_Staryu_2[] = _( +static const u8 DexDescription_Staryu_2[] = _( "end of summer, the glowing cores of\n" "these POKéMON look like the stars\n" "in the sky."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Starmie_1[] = _( +static const u8 DexDescription_Starmie_1[] = _( "STARMIE swims through water by\n" "spinning its star-shaped body as if it\n" "were a propeller on a ship."); -const u8 DexDescription_Starmie_2[] = _( +static const u8 DexDescription_Starmie_2[] = _( "The core at the center of this\n" "POKéMON’s body glows in seven colors."); #else -const u8 DexDescription_Starmie_1[] = _( +static const u8 DexDescription_Starmie_1[] = _( "STARMIE’s center section - the core -\n" "glows brightly in seven colors.\n" "Because of its luminous nature, this"); -const u8 DexDescription_Starmie_2[] = _( +static const u8 DexDescription_Starmie_2[] = _( "POKéMON has been given the nickname\n" "“the gem of the sea.”"); #endif -const u8 DexDescription_Mrmime_1[] = _( +static const u8 DexDescription_Mrmime_1[] = _( "MR. MIME is a master of pantomime.\n" "Its gestures and motions convince\n" "watchers that something unseeable"); -const u8 DexDescription_Mrmime_2[] = _( +static const u8 DexDescription_Mrmime_2[] = _( "actually exists. Once it is believed,\n" "it will exist as if it were a real thing."); -const u8 DexDescription_Scyther_1[] = _( +static const u8 DexDescription_Scyther_1[] = _( "SCYTHER is blindingly fast. Its blazing\n" "speed enhances the effectiveness of\n" "the twin scythes on its forearms."); -const u8 DexDescription_Scyther_2[] = _( +static const u8 DexDescription_Scyther_2[] = _( "This POKéMON’s scythes are so\n" "effective, they can slice through thick\n" "logs in one wicked stroke."); -const u8 DexDescription_Jynx_1[] = _( +static const u8 DexDescription_Jynx_1[] = _( "JYNX walks rhythmically, swaying and\n" "shaking its hips as if it were dancing.\n" "Its motions are so bouncingly alluring,"); -const u8 DexDescription_Jynx_2[] = _( +static const u8 DexDescription_Jynx_2[] = _( "people seeing it are compelled to shake\n" "their hips without giving any thought\n" "to what they are doing."); -const u8 DexDescription_Electabuzz_1[] = _( +static const u8 DexDescription_Electabuzz_1[] = _( "When a storm arrives, gangs of this\n" "POKéMON compete with each other to\n" "scale heights that are likely to be"); -const u8 DexDescription_Electabuzz_2[] = _( +static const u8 DexDescription_Electabuzz_2[] = _( "stricken by lightning bolts.\n" "Some towns use ELECTABUZZ in place of\n" "lightning rods."); -const u8 DexDescription_Magmar_1[] = _( +static const u8 DexDescription_Magmar_1[] = _( "In battle, MAGMAR blows out intensely\n" "hot flames from all over its body to\n" "intimidate its opponent."); -const u8 DexDescription_Magmar_2[] = _( +static const u8 DexDescription_Magmar_2[] = _( "This POKéMON’s fiery bursts create\n" "heat waves that ignite grass and trees\n" "in its surroundings."); #ifdef SAPPHIRE -const u8 DexDescription_Pinsir_1[] = _( +static const u8 DexDescription_Pinsir_1[] = _( "PINSIR has a pair of massive horns \n" "Protruding from the surface of these\n" "horns are thorns."); -const u8 DexDescription_Pinsir_2[] = _( +static const u8 DexDescription_Pinsir_2[] = _( "These thorns are driven deeply into the\n" "foe’s body when the pincer closes,\n" "making it tough for the foe to escape."); #else -const u8 DexDescription_Pinsir_1[] = _( +static const u8 DexDescription_Pinsir_1[] = _( "PINSIR is astoundingly strong. It can\n" "grip a foe weighing twice its weight\n" "in its horns and easily lift it."); -const u8 DexDescription_Pinsir_2[] = _( +static const u8 DexDescription_Pinsir_2[] = _( "This POKéMON’s movements turn sluggish\n" "in cold places."); #endif -const u8 DexDescription_Tauros_1[] = _( +static const u8 DexDescription_Tauros_1[] = _( "This POKéMON is not satisfied unless\n" "it is rampaging at all times.\n" "If there is no opponent for TAUROS to"); -const u8 DexDescription_Tauros_2[] = _( +static const u8 DexDescription_Tauros_2[] = _( "battle, it will charge at thick trees and\n" "knock them down to calm itself."); #ifdef SAPPHIRE -const u8 DexDescription_Magikarp_1[] = _( +static const u8 DexDescription_Magikarp_1[] = _( "MAGIKARP is virtually useless in battle\n" "as it can only splash around.\n" "As a result, it is considered to be weak."); -const u8 DexDescription_Magikarp_2[] = _( +static const u8 DexDescription_Magikarp_2[] = _( "However, it is actually a very hardy\n" "POKéMON that can survive in any body of\n" "water no matter how polluted it is."); #else -const u8 DexDescription_Magikarp_1[] = _( +static const u8 DexDescription_Magikarp_1[] = _( "MAGIKARP is a pathetic excuse for a\n" "POKéMON that is only capable of\n" "flopping and splashing."); -const u8 DexDescription_Magikarp_2[] = _( +static const u8 DexDescription_Magikarp_2[] = _( "This behavior prompted scientists to\n" "undertake research into it."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Gyarados_1[] = _( +static const u8 DexDescription_Gyarados_1[] = _( "Once GYARADOS goes on a rampage, its\n" "ferociously violent blood doesn’t calm\n" "until it has burned everything down."); -const u8 DexDescription_Gyarados_2[] = _( +static const u8 DexDescription_Gyarados_2[] = _( "There are records of this POKéMON’s\n" "rampages lasting a whole month."); #else -const u8 DexDescription_Gyarados_1[] = _( +static const u8 DexDescription_Gyarados_1[] = _( "When MAGIKARP evolves into GYARADOS,\n" "its brain cells undergo a structural\n" "transformation. It is said that this"); -const u8 DexDescription_Gyarados_2[] = _( +static const u8 DexDescription_Gyarados_2[] = _( "transformation is to blame for this\n" "POKéMON’s wildly violent nature."); #endif -const u8 DexDescription_Lapras_1[] = _( +static const u8 DexDescription_Lapras_1[] = _( "People have driven LAPRAS almost to the\n" "point of extinction. In the evenings,\n" "this POKéMON is said to sing plaintively"); -const u8 DexDescription_Lapras_2[] = _( +static const u8 DexDescription_Lapras_2[] = _( "as it seeks what few others of its kind\n" "still remain."); -const u8 DexDescription_Ditto_1[] = _( +static const u8 DexDescription_Ditto_1[] = _( "DITTO rearranges its cell structure to\n" "transform itself into other shapes.\n" "However, if it tries to transform itself"); -const u8 DexDescription_Ditto_2[] = _( +static const u8 DexDescription_Ditto_2[] = _( "into something by relying on its memory,\n" "this POKéMON manages to get details\n" "wrong."); -const u8 DexDescription_Eevee_1[] = _( +static const u8 DexDescription_Eevee_1[] = _( "EEVEE has an unstable genetic makeup\n" "that suddenly mutates due to the\n" "environment in which it lives."); -const u8 DexDescription_Eevee_2[] = _( +static const u8 DexDescription_Eevee_2[] = _( "Radiation from various STONES causes\n" "this POKéMON to evolve."); -const u8 DexDescription_Vaporeon_1[] = _( +static const u8 DexDescription_Vaporeon_1[] = _( "VAPOREON underwent a spontaneous\n" "mutation and grew fins and gills that\n" "allow it to live underwater."); -const u8 DexDescription_Vaporeon_2[] = _( +static const u8 DexDescription_Vaporeon_2[] = _( "This POKéMON has the ability to freely\n" "control water."); -const u8 DexDescription_Jolteon_1[] = _( +static const u8 DexDescription_Jolteon_1[] = _( "JOLTEON’s cells generate a low level of\n" "electricity. This power is amplified by\n" "the static electricity of its fur,"); -const u8 DexDescription_Jolteon_2[] = _( +static const u8 DexDescription_Jolteon_2[] = _( "enabling the POKéMON to drop\n" "thunderbolts. The bristling fur is made\n" "of electrically charged needles."); -const u8 DexDescription_Flareon_1[] = _( +static const u8 DexDescription_Flareon_1[] = _( "FLAREON’s fluffy fur has a functional\n" "purpose - it releases heat into the air\n" "so that its body does not get"); -const u8 DexDescription_Flareon_2[] = _( +static const u8 DexDescription_Flareon_2[] = _( "excessively hot.\n" "This POKéMON’s body temperature can\n" "rise to a maximum of 1,650 degrees F."); -const u8 DexDescription_Porygon_1[] = _( +static const u8 DexDescription_Porygon_1[] = _( "PORYGON is capable of reverting itself\n" "entirely back to program data and\n" "entering cyberspace."); -const u8 DexDescription_Porygon_2[] = _( +static const u8 DexDescription_Porygon_2[] = _( "This POKéMON is copy-protected so it\n" "cannot be duplicated by copying."); -const u8 DexDescription_Omanyte_1[] = _( +static const u8 DexDescription_Omanyte_1[] = _( "OMANYTE is one of the ancient and long-\n" "since-extinct POKéMON that have been\n" "regenerated from fossils by people."); -const u8 DexDescription_Omanyte_2[] = _( +static const u8 DexDescription_Omanyte_2[] = _( "If attacked by an enemy, it withdraws\n" "itself inside its hard shell."); -const u8 DexDescription_Omastar_1[] = _( +static const u8 DexDescription_Omastar_1[] = _( "OMASTAR uses its tentacles to capture\n" "its prey. It is believed to have become\n" "extinct because its shell grew too large"); -const u8 DexDescription_Omastar_2[] = _( +static const u8 DexDescription_Omastar_2[] = _( "and heavy, causing its movements to\n" "become too slow and ponderous."); -const u8 DexDescription_Kabuto_1[] = _( +static const u8 DexDescription_Kabuto_1[] = _( "KABUTO is a POKéMON that has been\n" "regenerated from a fossil. However, in\n" "extremely rare cases, living examples"); -const u8 DexDescription_Kabuto_2[] = _( +static const u8 DexDescription_Kabuto_2[] = _( "have been discovered.\n" "The POKéMON has not changed at all for\n" "300 million years."); -const u8 DexDescription_Kabutops_1[] = _( +static const u8 DexDescription_Kabutops_1[] = _( "KABUTOPS swam underwater to hunt for\n" "its prey in ancient times.\n" "The POKéMON was apparently evolving"); -const u8 DexDescription_Kabutops_2[] = _( +static const u8 DexDescription_Kabutops_2[] = _( "from being a water-dweller to living on\n" "land as evident from the beginnings of\n" "change in its gills and legs."); -const u8 DexDescription_Aerodactyl_1[] = _( +static const u8 DexDescription_Aerodactyl_1[] = _( "AERODACTYL is a POKéMON from the age\n" "of dinosaurs. It was regenerated from\n" "genetic material extracted from amber."); -const u8 DexDescription_Aerodactyl_2[] = _( +static const u8 DexDescription_Aerodactyl_2[] = _( "It is imagined to have been the king of\n" "the skies in ancient times."); -const u8 DexDescription_Snorlax_1[] = _( +static const u8 DexDescription_Snorlax_1[] = _( "SNORLAX’s typical day consists of\n" "nothing more than eating and sleeping.\n" "It is such a docile POKéMON that there"); -const u8 DexDescription_Snorlax_2[] = _( +static const u8 DexDescription_Snorlax_2[] = _( "are children who use its expansive belly\n" "as a place to play."); -const u8 DexDescription_Articuno_1[] = _( +static const u8 DexDescription_Articuno_1[] = _( "ARTICUNO is a legendary bird POKéMON\n" "that can control ice.\n" "The flapping of its wings chills the air."); -const u8 DexDescription_Articuno_2[] = _( +static const u8 DexDescription_Articuno_2[] = _( "As a result, it is said that when this\n" "POKéMON flies, snow will fall."); -const u8 DexDescription_Zapdos_1[] = _( +static const u8 DexDescription_Zapdos_1[] = _( "ZAPDOS is a legendary bird POKéMON that\n" "has the ability to control electricity.\n" "It usually lives in thunderclouds."); -const u8 DexDescription_Zapdos_2[] = _( +static const u8 DexDescription_Zapdos_2[] = _( "The POKéMON gains power if it is\n" "stricken by lightning bolts."); -const u8 DexDescription_Moltres_1[] = _( +static const u8 DexDescription_Moltres_1[] = _( "MOLTRES is a legendary bird POKéMON\n" "that has the ability to control fire.\n" "If this POKéMON is injured, it is said to"); -const u8 DexDescription_Moltres_2[] = _( +static const u8 DexDescription_Moltres_2[] = _( "dip its body in the molten magma of a\n" "volcano to burn and heal itself."); -const u8 DexDescription_Dratini_1[] = _( +static const u8 DexDescription_Dratini_1[] = _( "DRATINI continually molts and sloughs\n" "off its old skin.\n" "It does so because the life energy"); -const u8 DexDescription_Dratini_2[] = _( +static const u8 DexDescription_Dratini_2[] = _( "within its body steadily builds to reach\n" "uncontrollable levels."); -const u8 DexDescription_Dragonair_1[] = _( +static const u8 DexDescription_Dragonair_1[] = _( "DRAGONAIR stores an enormous amount\n" "of energy inside its body.\n" "It is said to alter weather conditions"); -const u8 DexDescription_Dragonair_2[] = _( +static const u8 DexDescription_Dragonair_2[] = _( "in its vicinity by discharging energy\n" "from the crystals on its neck and tail."); -const u8 DexDescription_Dragonite_1[] = _( +static const u8 DexDescription_Dragonite_1[] = _( "DRAGONITE is capable of circling the\n" "globe in just sixteen hours.\n" "It is a kindhearted POKéMON that leads"); -const u8 DexDescription_Dragonite_2[] = _( +static const u8 DexDescription_Dragonite_2[] = _( "lost and foundering ships in a storm to\n" "the safety of land."); -const u8 DexDescription_Mewtwo_1[] = _( +static const u8 DexDescription_Mewtwo_1[] = _( "MEWTWO is a POKéMON that was created\n" "by genetic manipulation.\n" "However, even though the scientific"); -const u8 DexDescription_Mewtwo_2[] = _( +static const u8 DexDescription_Mewtwo_2[] = _( "power of humans created this POKéMON’s\n" "body, they failed to endow MEWTWO with\n" "a compassionate heart."); -const u8 DexDescription_Mew_1[] = _( +static const u8 DexDescription_Mew_1[] = _( "MEW is said to possess the genetic\n" "composition of all POKéMON.\n" "It is capable of making itself invisible"); -const u8 DexDescription_Mew_2[] = _( +static const u8 DexDescription_Mew_2[] = _( "at will, so it entirely avoids notice even\n" "if it approaches people."); -const u8 DexDescription_Chikorita_1[] = _( +static const u8 DexDescription_Chikorita_1[] = _( "In battle, CHIKORITA waves its leaf\n" "around to keep the foe at bay.\n" "However, a sweet fragrance also wafts"); -const u8 DexDescription_Chikorita_2[] = _( +static const u8 DexDescription_Chikorita_2[] = _( "from the leaf, becalming the battling\n" "POKéMON and creating a cozy, friendly\n" "atmosphere all around."); -const u8 DexDescription_Bayleef_1[] = _( +static const u8 DexDescription_Bayleef_1[] = _( "BAYLEEF’s neck is ringed by curled-up\n" "leaves. Inside each tubular leaf is a\n" "small shoot of a tree."); -const u8 DexDescription_Bayleef_2[] = _( +static const u8 DexDescription_Bayleef_2[] = _( "The fragrance of this shoot makes\n" "people peppy."); -const u8 DexDescription_Meganium_1[] = _( +static const u8 DexDescription_Meganium_1[] = _( "The fragrance of MEGANIUM’s flower\n" "soothes and calms emotions.\n" "In battle, this POKéMON gives off more"); -const u8 DexDescription_Meganium_2[] = _( +static const u8 DexDescription_Meganium_2[] = _( "of its becalming scent to blunt the\n" "foe’s fighting spirit."); -const u8 DexDescription_Cyndaquil_1[] = _( +static const u8 DexDescription_Cyndaquil_1[] = _( "CYNDAQUIL protects itself by flaring up\n" "the flames on its back.\n" "The flames are vigorous if the POKéMON"); -const u8 DexDescription_Cyndaquil_2[] = _( +static const u8 DexDescription_Cyndaquil_2[] = _( "is angry. However, if it is tired, the\n" "flames splutter fitfully with incomplete\n" "combustion."); -const u8 DexDescription_Quilava_1[] = _( +static const u8 DexDescription_Quilava_1[] = _( "QUILAVA keeps its foes at bay with the\n" "intensity of its flames and gusts of\n" "superheated air."); -const u8 DexDescription_Quilava_2[] = _( +static const u8 DexDescription_Quilava_2[] = _( "This POKéMON applies its outstanding\n" "nimbleness to dodge attacks even while\n" "scorching the foe with flames."); -const u8 DexDescription_Typhlosion_1[] = _( +static const u8 DexDescription_Typhlosion_1[] = _( "TYPHLOSION obscures itself behind a\n" "shimmering heat haze that it creates\n" "using its intensely hot flames."); -const u8 DexDescription_Typhlosion_2[] = _( +static const u8 DexDescription_Typhlosion_2[] = _( "This POKéMON creates blazing explosive\n" "blasts that burn everything to cinders."); -const u8 DexDescription_Totodile_1[] = _( +static const u8 DexDescription_Totodile_1[] = _( "Despite the smallness of its body,\n" "TOTODILE’s jaws are very powerful.\n" "While the POKéMON may think it is just"); -const u8 DexDescription_Totodile_2[] = _( +static const u8 DexDescription_Totodile_2[] = _( "playfully nipping, its bite has enough\n" "power to cause serious injury."); -const u8 DexDescription_Croconaw_1[] = _( +static const u8 DexDescription_Croconaw_1[] = _( "Once CROCONAW has clamped its jaws on\n" "its foe, it will absolutely not let go.\n" "Because the tips of its fangs are"); -const u8 DexDescription_Croconaw_2[] = _( +static const u8 DexDescription_Croconaw_2[] = _( "forked back like barbed fishhooks, they\n" "become impossible to remove when \n" "they have sunk in."); -const u8 DexDescription_Feraligatr_1[] = _( +static const u8 DexDescription_Feraligatr_1[] = _( "FERALIGATR intimidates its foes by\n" "opening its huge mouth.\n" "In battle, it will kick the ground hard"); -const u8 DexDescription_Feraligatr_2[] = _( +static const u8 DexDescription_Feraligatr_2[] = _( "with its thick and powerful hind legs to\n" "charge at the foe at an incredible\n" "speed."); -const u8 DexDescription_Sentret_1[] = _( +static const u8 DexDescription_Sentret_1[] = _( "When SENTRET sleeps, it does so while\n" "another stands guard. The sentry wakes\n" "the others at the first sign of danger."); -const u8 DexDescription_Sentret_2[] = _( +static const u8 DexDescription_Sentret_2[] = _( "When this POKéMON becomes separated\n" "from its pack, it becomes incapable of\n" "sleep due to fear."); -const u8 DexDescription_Furret_1[] = _( +static const u8 DexDescription_Furret_1[] = _( "FURRET has a very slim build.\n" "When under attack, it can slickly squirm\n" "through narrow spaces and get away."); -const u8 DexDescription_Furret_2[] = _( +static const u8 DexDescription_Furret_2[] = _( "In spite of its short limbs, this\n" "POKéMON is very nimble and fleet."); -const u8 DexDescription_Hoothoot_1[] = _( +static const u8 DexDescription_Hoothoot_1[] = _( "HOOTHOOT has an internal organ that\n" "senses and tracks the earth’s rotation.\n" "Using this special organ, this POKéMON"); -const u8 DexDescription_Hoothoot_2[] = _( +static const u8 DexDescription_Hoothoot_2[] = _( "begins hooting at precisely the same\n" "time every day."); -const u8 DexDescription_Noctowl_1[] = _( +static const u8 DexDescription_Noctowl_1[] = _( "NOCTOWL never fails at catching prey in\n" "darkness. This POKéMON owes its\n" "success to its superior vision that"); -const u8 DexDescription_Noctowl_2[] = _( +static const u8 DexDescription_Noctowl_2[] = _( "allows it to see in minimal light, and to\n" "its soft, supple wings that make no\n" "sound in flight."); -const u8 DexDescription_Ledyba_1[] = _( +static const u8 DexDescription_Ledyba_1[] = _( "LEDYBA secretes an aromatic fluid from\n" "where its legs join its body. This fluid\n" "is used for communicating with others."); -const u8 DexDescription_Ledyba_2[] = _( +static const u8 DexDescription_Ledyba_2[] = _( "This POKéMON conveys its feelings to\n" "others by altering the fluid’s scent."); -const u8 DexDescription_Ledian_1[] = _( +static const u8 DexDescription_Ledian_1[] = _( "It is said that in lands with clean air,\n" "where the stars fill the sky, there live\n" "LEDIAN in countless numbers."); -const u8 DexDescription_Ledian_2[] = _( +static const u8 DexDescription_Ledian_2[] = _( "There is a good reason for this - the\n" "POKéMON uses the light of the stars\n" "as its energy."); -const u8 DexDescription_Spinarak_1[] = _( +static const u8 DexDescription_Spinarak_1[] = _( "The web spun by SPINARAK can be\n" "considered its second nervous system.\n" "It is said that this POKéMON can"); -const u8 DexDescription_Spinarak_2[] = _( +static const u8 DexDescription_Spinarak_2[] = _( "determine what kind of prey is touching\n" "its web just by the tiny vibrations it\n" "feels through the web’s strands."); -const u8 DexDescription_Ariados_1[] = _( +static const u8 DexDescription_Ariados_1[] = _( "ARIADOS’s feet are tipped with tiny\n" "hooked claws that enable it to scuttle\n" "on ceilings and vertical walls."); -const u8 DexDescription_Ariados_2[] = _( +static const u8 DexDescription_Ariados_2[] = _( "This POKéMON constricts the foe with\n" "thin and strong silk webbing."); #ifdef SAPPHIRE -const u8 DexDescription_Crobat_1[] = _( +static const u8 DexDescription_Crobat_1[] = _( "CROBAT sneaks up on its intended prey\n" "using wings that barely make a sound.\n" "This POKéMON rests by hanging on a"); -const u8 DexDescription_Crobat_2[] = _( +static const u8 DexDescription_Crobat_2[] = _( "tree branch with its rear legs that\n" "serve as wings."); #else -const u8 DexDescription_Crobat_1[] = _( +static const u8 DexDescription_Crobat_1[] = _( "If this POKéMON is flying by fluttering\n" "only a pair of wings on either the\n" "forelegs or hind legs, it’s proof that"); -const u8 DexDescription_Crobat_2[] = _( +static const u8 DexDescription_Crobat_2[] = _( "CROBAT has been flying a long distance.\n" "It switches the wings it uses if it is\n" "tired."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Chinchou_1[] = _( +static const u8 DexDescription_Chinchou_1[] = _( "CHINCHOU’s two antennas are filled with\n" "cells that generate strong electricity.\n" "This POKéMON’s cells create so much"); -const u8 DexDescription_Chinchou_2[] = _( +static const u8 DexDescription_Chinchou_2[] = _( "electrical power, it even makes itself\n" "tingle slightly."); #else -const u8 DexDescription_Chinchou_1[] = _( +static const u8 DexDescription_Chinchou_1[] = _( "CHINCHOU lets loose positive and\n" "negative electrical charges from its\n" "two antennas to make its prey faint."); -const u8 DexDescription_Chinchou_2[] = _( +static const u8 DexDescription_Chinchou_2[] = _( "This POKéMON flashes its electric\n" "lights to exchange signals with others."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Lanturn_1[] = _( +static const u8 DexDescription_Lanturn_1[] = _( "LANTURN is known to emit light.\n" "If you peer down into the dark sea from\n" "a ship at night, you can sometimes see"); -const u8 DexDescription_Lanturn_2[] = _( +static const u8 DexDescription_Lanturn_2[] = _( "this POKéMON’s light rising from the\n" "depths where it swims. It gives the sea\n" "an appearance of a starlit night."); #else -const u8 DexDescription_Lanturn_1[] = _( +static const u8 DexDescription_Lanturn_1[] = _( "LANTURN is nicknamed “the deep-sea\n" "star” for its illuminated antenna.\n" "This POKéMON produces light by"); -const u8 DexDescription_Lanturn_2[] = _( +static const u8 DexDescription_Lanturn_2[] = _( "causing a chemical reaction between\n" "bacteria and its bodily fluids inside\n" "the antenna."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Pichu_1[] = _( +static const u8 DexDescription_Pichu_1[] = _( "When PICHU plays with others, it may\n" "short out electricity with another\n" "PICHU, creating a shower of sparks."); -const u8 DexDescription_Pichu_2[] = _( +static const u8 DexDescription_Pichu_2[] = _( "In that event, this POKéMON will begin\n" "crying, startled by the flash of sparks."); #else -const u8 DexDescription_Pichu_1[] = _( +static const u8 DexDescription_Pichu_1[] = _( "PICHU charges itself with electricity\n" "more easily on days with thunderclouds\n" "or when the air is very dry."); -const u8 DexDescription_Pichu_2[] = _( +static const u8 DexDescription_Pichu_2[] = _( "You can hear the crackling of static\n" "electricity coming off this POKéMON."); #endif -const u8 DexDescription_Cleffa_1[] = _( +static const u8 DexDescription_Cleffa_1[] = _( "On nights with many shooting stars,\n" "CLEFFA can be seen dancing in a ring.\n" "They dance through the night and stop"); -const u8 DexDescription_Cleffa_2[] = _( +static const u8 DexDescription_Cleffa_2[] = _( "only at the break of day, when these\n" "POKéMON quench their thirst with the\n" "morning dew."); #ifdef SAPPHIRE -const u8 DexDescription_Igglybuff_1[] = _( +static const u8 DexDescription_Igglybuff_1[] = _( "IGGLYBUFF has a soft and plushy body\n" "that feels very much like a marshmallow.\n" "From this body wafts a gently sweet"); -const u8 DexDescription_Igglybuff_2[] = _( +static const u8 DexDescription_Igglybuff_2[] = _( "fragrance that soothes and calms the\n" "emotions of its foes."); #else -const u8 DexDescription_Igglybuff_1[] = _( +static const u8 DexDescription_Igglybuff_1[] = _( "IGGLYBUFF’s vocal chords are not\n" "sufficiently developed. It would hurt\n" "its throat if it were to sing too much."); -const u8 DexDescription_Igglybuff_2[] = _( +static const u8 DexDescription_Igglybuff_2[] = _( "This POKéMON gargles with freshwater\n" "from a clean stream."); #endif -const u8 DexDescription_Togepi_1[] = _( +static const u8 DexDescription_Togepi_1[] = _( "As its energy, TOGEPI uses the positive\n" "emotions of compassion and pleasure\n" "exuded by people and POKéMON."); -const u8 DexDescription_Togepi_2[] = _( +static const u8 DexDescription_Togepi_2[] = _( "This POKéMON stores up feelings of\n" "happiness inside its shell, then shares\n" "them with others."); -const u8 DexDescription_Togetic_1[] = _( +static const u8 DexDescription_Togetic_1[] = _( "TOGETIC is said to be a POKéMON that\n" "brings good fortune. When the POKéMON\n" "spots someone who is pure of heart,"); -const u8 DexDescription_Togetic_2[] = _( +static const u8 DexDescription_Togetic_2[] = _( "it is said to appear and share its\n" "happiness with that person."); #ifdef SAPPHIRE -const u8 DexDescription_Natu_1[] = _( +static const u8 DexDescription_Natu_1[] = _( "NATU has a highly developed jumping\n" "ability. The POKéMON flaps and leaps\n" "onto tree branches that are taller than"); -const u8 DexDescription_Natu_2[] = _( +static const u8 DexDescription_Natu_2[] = _( "grown-up people to pick at the tree’s\n" "new shoots."); #else -const u8 DexDescription_Natu_1[] = _( +static const u8 DexDescription_Natu_1[] = _( "NATU cannot fly because its wings are\n" "not yet fully grown. If your eyes meet\n" "with this POKéMON’s eyes, it will stare"); -const u8 DexDescription_Natu_2[] = _( +static const u8 DexDescription_Natu_2[] = _( "back intently at you. But if you move\n" "even slightly, it will hop away to safety."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Xatu_1[] = _( +static const u8 DexDescription_Xatu_1[] = _( "XATU is known to stand motionless while\n" "staring at the sun all day long.\n" "Some people revere it as a mystical"); -const u8 DexDescription_Xatu_2[] = _( +static const u8 DexDescription_Xatu_2[] = _( "POKéMON out of their belief that XATU\n" "is in possession of the power to see\n" "into the future."); #else -const u8 DexDescription_Xatu_1[] = _( +static const u8 DexDescription_Xatu_1[] = _( "XATU stands rooted and still in one\n" "spot all day long. People believe that\n" "this POKéMON does so out of fear of"); -const u8 DexDescription_Xatu_2[] = _( +static const u8 DexDescription_Xatu_2[] = _( "the terrible things it has foreseen in\n" "the future."); #endif -const u8 DexDescription_Mareep_1[] = _( +static const u8 DexDescription_Mareep_1[] = _( "MAREEP’s fluffy coat of wool rubs\n" "together and builds a static charge.\n" "The more static electricity is charged,"); -const u8 DexDescription_Mareep_2[] = _( +static const u8 DexDescription_Mareep_2[] = _( "the more brightly the lightbulb at the\n" "tip of its tail grows."); -const u8 DexDescription_Flaaffy_1[] = _( +static const u8 DexDescription_Flaaffy_1[] = _( "FLAAFFY’s wool quality changes so that\n" "it can generate a high amount of static\n" "electricity with a small amount of wool."); -const u8 DexDescription_Flaaffy_2[] = _( +static const u8 DexDescription_Flaaffy_2[] = _( "The bare and slick parts of its hide are\n" "shielded against electricity."); -const u8 DexDescription_Ampharos_1[] = _( +static const u8 DexDescription_Ampharos_1[] = _( "AMPHAROS gives off so much light that\n" "it can be seen even from space.\n" "People in the old days used the light of"); -const u8 DexDescription_Ampharos_2[] = _( +static const u8 DexDescription_Ampharos_2[] = _( "this POKéMON to send signals back and\n" "forth with others far away."); #ifdef SAPPHIRE -const u8 DexDescription_Bellossom_1[] = _( +static const u8 DexDescription_Bellossom_1[] = _( "A BELLOSSOM grows flowers more\n" "beautifully if it has evolved from a\n" "smelly GLOOM - the stinkier the better."); -const u8 DexDescription_Bellossom_2[] = _( +static const u8 DexDescription_Bellossom_2[] = _( "At night, this POKéMON closes its\n" "petals and goes to sleep."); #else -const u8 DexDescription_Bellossom_1[] = _( +static const u8 DexDescription_Bellossom_1[] = _( "When BELLOSSOM gets exposed to plenty\n" "of sunlight, the leaves ringing its body\n" "begin to spin around."); -const u8 DexDescription_Bellossom_2[] = _( +static const u8 DexDescription_Bellossom_2[] = _( "This POKéMON’s dancing is renowned in\n" "the southern lands."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Marill_1[] = _( +static const u8 DexDescription_Marill_1[] = _( "When fishing for food at the edge of a\n" "fast-running stream, MARILL wraps its\n" "tail around the trunk of a tree."); -const u8 DexDescription_Marill_2[] = _( +static const u8 DexDescription_Marill_2[] = _( "This POKéMON’s tail is flexible and\n" "configured to stretch."); #else -const u8 DexDescription_Marill_1[] = _( +static const u8 DexDescription_Marill_1[] = _( "MARILL’s oil-filled tail acts much like\n" "a life preserver. If you see just its\n" "tail bobbing on the water’s surface,"); -const u8 DexDescription_Marill_2[] = _( +static const u8 DexDescription_Marill_2[] = _( "it’s a sure indication that this POKéMON\n" "is diving beneath the water to feed on\n" "aquatic plants."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Azumarill_1[] = _( +static const u8 DexDescription_Azumarill_1[] = _( "AZUMARILL can make balloons out of\n" "air. It makes these air balloons if it\n" "spots a drowning POKéMON."); -const u8 DexDescription_Azumarill_2[] = _( +static const u8 DexDescription_Azumarill_2[] = _( "The air balloons enable the POKéMON in\n" "trouble to breathe."); #else -const u8 DexDescription_Azumarill_1[] = _( +static const u8 DexDescription_Azumarill_1[] = _( "AZUMARILL’s long ears are indispensable\n" "sensors. By focusing its hearing, this\n" "POKéMON can identify what kinds of"); -const u8 DexDescription_Azumarill_2[] = _( +static const u8 DexDescription_Azumarill_2[] = _( "prey are around, even in rough and\n" "fast-running rivers."); #endif -const u8 DexDescription_Sudowoodo_1[] = _( +static const u8 DexDescription_Sudowoodo_1[] = _( "SUDOWOODO camouflages itself as a tree\n" "to avoid being attacked by enemies.\n" "However, because the forelegs remain"); -const u8 DexDescription_Sudowoodo_2[] = _( +static const u8 DexDescription_Sudowoodo_2[] = _( "green throughout the year, the POKéMON\n" "is easily identified as a fake during\n" "the winter."); -const u8 DexDescription_Politoed_1[] = _( +static const u8 DexDescription_Politoed_1[] = _( "The curled hair on POLITOED’s head is\n" "proof of its status as a king. It is said\n" "that the longer and more curled the"); -const u8 DexDescription_Politoed_2[] = _( +static const u8 DexDescription_Politoed_2[] = _( "hair, the more respect this POKéMON\n" "earns from its peers."); -const u8 DexDescription_Hoppip_1[] = _( +static const u8 DexDescription_Hoppip_1[] = _( "This POKéMON drifts and floats with the\n" "wind. If it senses the approach of\n" "strong winds, HOPPIP links its leaves"); -const u8 DexDescription_Hoppip_2[] = _( +static const u8 DexDescription_Hoppip_2[] = _( "with other HOPPIP to prepare against\n" "being blown away."); -const u8 DexDescription_Skiploom_1[] = _( +static const u8 DexDescription_Skiploom_1[] = _( "SKIPLOOM’s flower blossoms when the\n" "temperature rises above 64 degrees F.\n" "How much the flower opens depends on"); -const u8 DexDescription_Skiploom_2[] = _( +static const u8 DexDescription_Skiploom_2[] = _( "the temperature. For that reason, this\n" "POKéMON is sometimes used as a\n" "thermometer."); -const u8 DexDescription_Jumpluff_1[] = _( +static const u8 DexDescription_Jumpluff_1[] = _( "JUMPLUFF rides warm southern winds to\n" "cross the sea and fly to foreign lands.\n" "The POKéMON descends to the ground"); -const u8 DexDescription_Jumpluff_2[] = _( +static const u8 DexDescription_Jumpluff_2[] = _( "when it encounters cold air while it is\n" "floating."); -const u8 DexDescription_Aipom_1[] = _( +static const u8 DexDescription_Aipom_1[] = _( "AIPOM’s tail ends in a hand-like\n" "appendage that can be cleverly\n" "manipulated."); -const u8 DexDescription_Aipom_2[] = _( +static const u8 DexDescription_Aipom_2[] = _( "However, because the POKéMON uses its\n" "tail so much, its real hands have become\n" "rather clumsy."); -const u8 DexDescription_Sunkern_1[] = _( +static const u8 DexDescription_Sunkern_1[] = _( "SUNKERN tries to move as little as it\n" "possibly can. It does so because it\n" "tries to conserve all the nutrients it"); -const u8 DexDescription_Sunkern_2[] = _( +static const u8 DexDescription_Sunkern_2[] = _( "has stored in its body for its\n" "evolution. It will not eat a thing, \n" "subsisting only on morning dew."); -const u8 DexDescription_Sunflora_1[] = _( +static const u8 DexDescription_Sunflora_1[] = _( "SUNFLORA converts solar energy into\n" "nutrition. It moves around actively in\n" "the daytime when it is warm."); -const u8 DexDescription_Sunflora_2[] = _( +static const u8 DexDescription_Sunflora_2[] = _( "It stops moving as soon as the sun goes\n" "down for the night."); -const u8 DexDescription_Yanma_1[] = _( +static const u8 DexDescription_Yanma_1[] = _( "YANMA is capable of seeing 360 degrees\n" "without having to move its eyes.\n" "It is a great flier that is adept at"); -const u8 DexDescription_Yanma_2[] = _( +static const u8 DexDescription_Yanma_2[] = _( "making sudden stops and turning midair.\n" "This POKéMON uses its flying ability to\n" "quickly chase down targeted prey."); -const u8 DexDescription_Wooper_1[] = _( +static const u8 DexDescription_Wooper_1[] = _( "WOOPER usually lives in water.\n" "However, it occasionally comes out onto\n" "land in search of food."); -const u8 DexDescription_Wooper_2[] = _( +static const u8 DexDescription_Wooper_2[] = _( "On land, it coats its body with a gooey,\n" "toxic film."); -const u8 DexDescription_Quagsire_1[] = _( +static const u8 DexDescription_Quagsire_1[] = _( "QUAGSIRE hunts for food by leaving\n" "its mouth wide open in water and waiting\n" "for its prey to blunder in unaware."); -const u8 DexDescription_Quagsire_2[] = _( +static const u8 DexDescription_Quagsire_2[] = _( "Because the POKéMON does not move,\n" "it does not get very hungry."); -const u8 DexDescription_Espeon_1[] = _( +static const u8 DexDescription_Espeon_1[] = _( "ESPEON is extremely loyal to any\n" "TRAINER it considers to be worthy.\n" "It is said that this POKéMON developed"); -const u8 DexDescription_Espeon_2[] = _( +static const u8 DexDescription_Espeon_2[] = _( "its precognitive powers to protect its\n" "TRAINER from harm."); -const u8 DexDescription_Umbreon_1[] = _( +static const u8 DexDescription_Umbreon_1[] = _( "UMBREON evolved as a result of exposure\n" "to the moon’s waves.\n" "It hides silently in darkness and waits"); -const u8 DexDescription_Umbreon_2[] = _( +static const u8 DexDescription_Umbreon_2[] = _( "for its foes to make a move.\n" "The rings on its body glow when it leaps\n" "to attack."); -const u8 DexDescription_Murkrow_1[] = _( +static const u8 DexDescription_Murkrow_1[] = _( "MURKROW was feared and loathed as the\n" "alleged bearer of ill fortune.\n" "This POKéMON shows strong interest in"); -const u8 DexDescription_Murkrow_2[] = _( +static const u8 DexDescription_Murkrow_2[] = _( "anything that sparkles or glitters.\n" "It will even try to steal rings from\n" "women."); -const u8 DexDescription_Slowking_1[] = _( +static const u8 DexDescription_Slowking_1[] = _( "SLOWKING undertakes research every\n" "day in an effort to solve the mysteries\n" "of the world."); -const u8 DexDescription_Slowking_2[] = _( +static const u8 DexDescription_Slowking_2[] = _( "However, this POKéMON apparently\n" "forgets everything it has learned if\n" "the SHELLDER on its head comes off."); -const u8 DexDescription_Misdreavus_1[] = _( +static const u8 DexDescription_Misdreavus_1[] = _( "MISDREAVUS frightens people with a\n" "creepy, sobbing cry. The POKéMON\n" "apparently uses its red spheres to"); -const u8 DexDescription_Misdreavus_2[] = _( +static const u8 DexDescription_Misdreavus_2[] = _( "absorb the fearful feelings of foes and\n" "turn them into nutrition."); -const u8 DexDescription_Unown_1[] = _( +static const u8 DexDescription_Unown_1[] = _( "This POKéMON is shaped like ancient\n" "writing. It is a mystery as to which\n" "came first, the ancient writings or the"); -const u8 DexDescription_Unown_2[] = _( +static const u8 DexDescription_Unown_2[] = _( "various UNOWN. Research into this\n" "topic is ongoing but nothing is known."); #ifdef SAPPHIRE -const u8 DexDescription_Wobbuffet_1[] = _( +static const u8 DexDescription_Wobbuffet_1[] = _( "WOBBUFFET does nothing but endure\n" "attacks - it won’t attack on its own.\n" "However, it won’t endure an attack on"); -const u8 DexDescription_Wobbuffet_2[] = _( +static const u8 DexDescription_Wobbuffet_2[] = _( "its tail. When that happens, the\n" "POKéMON will try to take the foe with it\n" "using DESTINY BOND."); #else -const u8 DexDescription_Wobbuffet_1[] = _( +static const u8 DexDescription_Wobbuffet_1[] = _( "If two or more WOBBUFFET meet, they will\n" "turn competitive and try to outdo each\n" "other’s endurance."); -const u8 DexDescription_Wobbuffet_2[] = _( +static const u8 DexDescription_Wobbuffet_2[] = _( "However, they may try to see which one\n" "can endure the longest without food.\n" "TRAINERS need to beware of this habit."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Girafarig_1[] = _( +static const u8 DexDescription_Girafarig_1[] = _( "GIRAFARIG’s rear head contains a tiny\n" "brain that is too small for thinking.\n" "However, the rear head doesn’t need to"); -const u8 DexDescription_Girafarig_2[] = _( +static const u8 DexDescription_Girafarig_2[] = _( "sleep, so it can keep watch over its\n" "surroundings 24 hours a day."); #else -const u8 DexDescription_Girafarig_1[] = _( +static const u8 DexDescription_Girafarig_1[] = _( "GIRAFARIG’s rear head also has a brain,\n" "but it is small. The rear head attacks in\n" "response to smells and sounds."); -const u8 DexDescription_Girafarig_2[] = _( +static const u8 DexDescription_Girafarig_2[] = _( "Approaching this POKéMON from behind\n" "can cause the rear head to suddenly\n" "lash out and bite."); #endif -const u8 DexDescription_Pineco_1[] = _( +static const u8 DexDescription_Pineco_1[] = _( "PINECO hangs from a tree branch and\n" "patiently waits for prey to come along.\n" "If the POKéMON is disturbed while"); -const u8 DexDescription_Pineco_2[] = _( +static const u8 DexDescription_Pineco_2[] = _( "eating by someone shaking its tree, it\n" "drops down to the ground and explodes\n" "with no warning."); -const u8 DexDescription_Forretress_1[] = _( +static const u8 DexDescription_Forretress_1[] = _( "FORRETRESS conceals itself inside its\n" "hardened steel shell. The shell is opened\n" "when the POKéMON is catching prey,"); -const u8 DexDescription_Forretress_2[] = _( +static const u8 DexDescription_Forretress_2[] = _( "but it does so at such a quick pace\n" "that the shell’s inside cannot be seen."); -const u8 DexDescription_Dunsparce_1[] = _( +static const u8 DexDescription_Dunsparce_1[] = _( "DUNSPARCE has a drill for its tail.\n" "It uses this tail to burrow into the\n" "ground backwards."); -const u8 DexDescription_Dunsparce_2[] = _( +static const u8 DexDescription_Dunsparce_2[] = _( "This POKéMON is known to make its nest\n" "in complex shapes deep under the\n" "ground."); -const u8 DexDescription_Gligar_1[] = _( +static const u8 DexDescription_Gligar_1[] = _( "GLIGAR glides through the air without\n" "a sound as if it were sliding.\n" "This POKéMON hangs on to the face of"); -const u8 DexDescription_Gligar_2[] = _( +static const u8 DexDescription_Gligar_2[] = _( "its foe using its clawed hind legs and\n" "the large pincers on its forelegs, then\n" "injects the prey with its poison barb."); -const u8 DexDescription_Steelix_1[] = _( +static const u8 DexDescription_Steelix_1[] = _( "STEELIX lives even further underground\n" "than ONIX. This POKéMON is known to dig\n" "towards the earth’s core."); -const u8 DexDescription_Steelix_2[] = _( +static const u8 DexDescription_Steelix_2[] = _( "There are records of this POKéMON\n" "reaching a depth of over six-tenths\n" "of a mile underground."); -const u8 DexDescription_Snubbull_1[] = _( +static const u8 DexDescription_Snubbull_1[] = _( "By baring its fangs and making a scary\n" "face, SNUBBULL sends smaller POKéMON\n" "scurrying away in terror."); -const u8 DexDescription_Snubbull_2[] = _( +static const u8 DexDescription_Snubbull_2[] = _( "However, this POKéMON seems a little\n" "sad at making its foes flee."); -const u8 DexDescription_Granbull_1[] = _( +static const u8 DexDescription_Granbull_1[] = _( "GRANBULL has a particularly well-\n" "developed lower jaw. The enormous fangs\n" "are heavy, causing the POKéMON to tip"); -const u8 DexDescription_Granbull_2[] = _( +static const u8 DexDescription_Granbull_2[] = _( "its head back for balance.\n" "Unless it is startled, it will not try to\n" "bite indiscriminately."); -const u8 DexDescription_Qwilfish_1[] = _( +static const u8 DexDescription_Qwilfish_1[] = _( "QWILFISH sucks in water, inflating\n" "itself. This POKéMON uses the pressure\n" "of the water it swallowed to shoot"); -const u8 DexDescription_Qwilfish_2[] = _( +static const u8 DexDescription_Qwilfish_2[] = _( "toxic quills all at once from all over\n" "its body. It finds swimming somewhat\n" "challenging."); -const u8 DexDescription_Scizor_1[] = _( +static const u8 DexDescription_Scizor_1[] = _( "SCIZOR has a body with the hardness of\n" "steel. It is not easily fazed by ordinary\n" "sorts of attacks."); -const u8 DexDescription_Scizor_2[] = _( +static const u8 DexDescription_Scizor_2[] = _( "This POKéMON flaps its wings to\n" "regulate its body temperature."); -const u8 DexDescription_Shuckle_1[] = _( +static const u8 DexDescription_Shuckle_1[] = _( "SHUCKLE quietly hides itself under\n" "rocks, keeping its body concealed\n" "inside its hard shell while eating"); -const u8 DexDescription_Shuckle_2[] = _( +static const u8 DexDescription_Shuckle_2[] = _( "berries it has stored away.\n" "The berries mix with its body fluids to\n" "become a juice."); #ifdef SAPPHIRE -const u8 DexDescription_Heracross_1[] = _( +static const u8 DexDescription_Heracross_1[] = _( "HERACROSS has sharp claws on its feet.\n" "These are planted firmly into the\n" "ground or the bark of a tree, giving the"); -const u8 DexDescription_Heracross_2[] = _( +static const u8 DexDescription_Heracross_2[] = _( "POKéMON a secure and solid footing\n" "to forcefully fling away foes with\n" "its proud horn."); #else -const u8 DexDescription_Heracross_1[] = _( +static const u8 DexDescription_Heracross_1[] = _( "HERACROSS charges in a straight line at\n" "its foe, slips beneath the foe’s grasp,\n" "and then scoops up and hurls the"); -const u8 DexDescription_Heracross_2[] = _( +static const u8 DexDescription_Heracross_2[] = _( "opponent with its mighty horn.\n" "This POKéMON even has enough power\n" "to topple a massive tree."); #endif -const u8 DexDescription_Sneasel_1[] = _( +static const u8 DexDescription_Sneasel_1[] = _( "SNEASEL scales trees by punching its\n" "hooked claws into the bark.\n" "This POKéMON seeks out unguarded"); -const u8 DexDescription_Sneasel_2[] = _( +static const u8 DexDescription_Sneasel_2[] = _( "nests and steals eggs for food while\n" "the parents are away."); -const u8 DexDescription_Teddiursa_1[] = _( +static const u8 DexDescription_Teddiursa_1[] = _( "This POKéMON likes to lick its palms that\n" "are sweetened by being soaked in honey.\n" "TEDDIURSA concocts its own honey by"); -const u8 DexDescription_Teddiursa_2[] = _( +static const u8 DexDescription_Teddiursa_2[] = _( "blending fruits and pollen collected by\n" "BEEDRILL."); -const u8 DexDescription_Ursaring_1[] = _( +static const u8 DexDescription_Ursaring_1[] = _( "In the forests inhabited by URSARING,\n" "it is said that there are many streams\n" "and towering trees where they"); -const u8 DexDescription_Ursaring_2[] = _( +static const u8 DexDescription_Ursaring_2[] = _( "gather food. This POKéMON walks\n" "through its forest gathering food\n" "every day."); #ifdef SAPPHIRE -const u8 DexDescription_Slugma_1[] = _( +static const u8 DexDescription_Slugma_1[] = _( "SLUGMA does not have any blood in its\n" "body. Instead, intensely hot magma\n" "circulates throughout this POKéMON’s"); -const u8 DexDescription_Slugma_2[] = _( +static const u8 DexDescription_Slugma_2[] = _( "body, carrying essential nutrients and\n" "oxygen to its organs."); #else -const u8 DexDescription_Slugma_1[] = _( +static const u8 DexDescription_Slugma_1[] = _( "Molten magma courses throughout\n" "SLUGMA’s circulatory system.\n" "If this POKéMON is chilled, the magma"); -const u8 DexDescription_Slugma_2[] = _( +static const u8 DexDescription_Slugma_2[] = _( "cools and hardens. Its body turns\n" "brittle and chunks fall off, reducing\n" "its size."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Magcargo_1[] = _( +static const u8 DexDescription_Magcargo_1[] = _( "MAGCARGO’s body temperature is\n" "approximately 18,000 degrees F.\n" "Water is vaporized on contact."); -const u8 DexDescription_Magcargo_2[] = _( +static const u8 DexDescription_Magcargo_2[] = _( "If this POKéMON is caught in the rain,\n" "the raindrops instantly turn into\n" "steam, cloaking the area in a thick fog."); #else -const u8 DexDescription_Magcargo_1[] = _( +static const u8 DexDescription_Magcargo_1[] = _( "MAGCARGO’s shell is actually its skin\n" "that hardened as a result of cooling.\n" "Its shell is very brittle and fragile -"); -const u8 DexDescription_Magcargo_2[] = _( +static const u8 DexDescription_Magcargo_2[] = _( "just touching it causes it to crumble\n" "apart. This POKéMON returns to its\n" "original size by dipping itself in magma."); #endif -const u8 DexDescription_Swinub_1[] = _( +static const u8 DexDescription_Swinub_1[] = _( "SWINUB roots for food by rubbing its\n" "snout against the ground. Its favorite\n" "food is a mushroom that grows under"); -const u8 DexDescription_Swinub_2[] = _( +static const u8 DexDescription_Swinub_2[] = _( "the cover of dead grass.\n" "This POKéMON occasionally roots out\n" "hot springs."); -const u8 DexDescription_Piloswine_1[] = _( +static const u8 DexDescription_Piloswine_1[] = _( "PILOSWINE is covered by a thick coat\n" "of long hair that enables it to endure\n" "the freezing cold."); -const u8 DexDescription_Piloswine_2[] = _( +static const u8 DexDescription_Piloswine_2[] = _( "This POKéMON uses its tusks to dig up\n" "food that has been buried under ice."); #ifdef SAPPHIRE -const u8 DexDescription_Corsola_1[] = _( +static const u8 DexDescription_Corsola_1[] = _( "Clusters of CORSOLA congregate in warm\n" "seas where they serve as ideal hiding\n" "places for smaller POKéMON."); -const u8 DexDescription_Corsola_2[] = _( +static const u8 DexDescription_Corsola_2[] = _( "When the water temperature falls, this\n" "POKéMON migrates to the southern seas."); #else -const u8 DexDescription_Corsola_1[] = _( +static const u8 DexDescription_Corsola_1[] = _( "CORSOLA’s branches glitter very\n" "beautifully in seven colors when they\n" "catch sunlight."); -const u8 DexDescription_Corsola_2[] = _( +static const u8 DexDescription_Corsola_2[] = _( "If any branch breaks off, this POKéMON\n" "grows it back in just one night."); #endif -const u8 DexDescription_Remoraid_1[] = _( +static const u8 DexDescription_Remoraid_1[] = _( "REMORAID sucks in water, then expels it\n" "at high velocity using its abdominal\n" "muscles to shoot down flying prey."); -const u8 DexDescription_Remoraid_2[] = _( +static const u8 DexDescription_Remoraid_2[] = _( "When evolution draws near, this POKéMON\n" "travels downstream from rivers."); -const u8 DexDescription_Octillery_1[] = _( +static const u8 DexDescription_Octillery_1[] = _( "OCTILLERY grabs onto its foe using\n" "its tentacles. This POKéMON tries to\n" "immobilize it before delivering the"); -const u8 DexDescription_Octillery_2[] = _( +static const u8 DexDescription_Octillery_2[] = _( "finishing blow.\n" "If the foe turns out to be too strong,\n" "OCTILLERY spews ink to escape."); -const u8 DexDescription_Delibird_1[] = _( +static const u8 DexDescription_Delibird_1[] = _( "DELIBIRD carries its food bundled up\n" "in its tail. There once was a famous\n" "explorer who managed to reach the peak"); -const u8 DexDescription_Delibird_2[] = _( +static const u8 DexDescription_Delibird_2[] = _( "of Mt. Everest thanks to one of these\n" "POKéMON sharing its food."); -const u8 DexDescription_Mantine_1[] = _( +static const u8 DexDescription_Mantine_1[] = _( "On sunny days, schools of MANTINE can\n" "be seen elegantly leaping over the\n" "sea’s waves."); -const u8 DexDescription_Mantine_2[] = _( +static const u8 DexDescription_Mantine_2[] = _( "This POKéMON is not bothered by the\n" "REMORAID that hitches rides."); #ifdef SAPPHIRE -const u8 DexDescription_Skarmory_1[] = _( +static const u8 DexDescription_Skarmory_1[] = _( "SKARMORY’s steel wings become tattered\n" "and bashed in from repeated battles.\n" "Once a year, the battered wings grow"); -const u8 DexDescription_Skarmory_2[] = _( +static const u8 DexDescription_Skarmory_2[] = _( "back completely, restoring the cutting\n" "edges to their pristine state."); #else -const u8 DexDescription_Skarmory_1[] = _( +static const u8 DexDescription_Skarmory_1[] = _( "SKARMORY is entirely encased in hard,\n" "protective armor. This POKéMON flies at\n" "close to 190 mph."); -const u8 DexDescription_Skarmory_2[] = _( +static const u8 DexDescription_Skarmory_2[] = _( "It slashes foes with its wings that\n" "possess swordlike cutting edges."); #endif -const u8 DexDescription_Houndour_1[] = _( +static const u8 DexDescription_Houndour_1[] = _( "HOUNDOUR hunt as a coordinated pack.\n" "They communicate with each other using\n" "a variety of cries to corner their prey."); -const u8 DexDescription_Houndour_2[] = _( +static const u8 DexDescription_Houndour_2[] = _( "This POKéMON’s remarkable teamwork is\n" "unparalleled."); -const u8 DexDescription_Houndoom_1[] = _( +static const u8 DexDescription_Houndoom_1[] = _( "In a HOUNDOOM pack, the one with its\n" "horns raked sharply towards the back\n" "serves a leadership role."); -const u8 DexDescription_Houndoom_2[] = _( +static const u8 DexDescription_Houndoom_2[] = _( "These POKéMON choose their leader by\n" "fighting amongst themselves."); #ifdef SAPPHIRE -const u8 DexDescription_Kingdra_1[] = _( +static const u8 DexDescription_Kingdra_1[] = _( "KINGDRA sleeps on the seafloor where\n" "it is otherwise devoid of life.\n" "When a storm arrives, the POKéMON is"); -const u8 DexDescription_Kingdra_2[] = _( +static const u8 DexDescription_Kingdra_2[] = _( "said to awaken and wander about in\n" "search of prey."); #else -const u8 DexDescription_Kingdra_1[] = _( +static const u8 DexDescription_Kingdra_1[] = _( "KINGDRA lives at extreme ocean depths\n" "that are otherwise uninhabited.\n" "It has long been believed that the"); -const u8 DexDescription_Kingdra_2[] = _( +static const u8 DexDescription_Kingdra_2[] = _( "yawning of this POKéMON creates\n" "spiraling ocean currents."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Phanpy_1[] = _( +static const u8 DexDescription_Phanpy_1[] = _( "PHANPY uses its long nose to shower\n" "itself. When others gather around, they\n" "thoroughly douse each other with water."); -const u8 DexDescription_Phanpy_2[] = _( +static const u8 DexDescription_Phanpy_2[] = _( "These POKéMON can be seen drying their\n" "soaking-wet bodies at the edge of\n" "water."); #else -const u8 DexDescription_Phanpy_1[] = _( +static const u8 DexDescription_Phanpy_1[] = _( "For its nest, PHANPY digs a vertical pit \n" "in the ground at the edge of a river.\n" "It marks the area around its nest with"); -const u8 DexDescription_Phanpy_2[] = _( +static const u8 DexDescription_Phanpy_2[] = _( "its trunk to let the others know that\n" "the area has been claimed."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Donphan_1[] = _( +static const u8 DexDescription_Donphan_1[] = _( "If DONPHAN were to tackle with its hard\n" "body, even a house could be destroyed.\n" "Using its massive strength, the"); -const u8 DexDescription_Donphan_2[] = _( +static const u8 DexDescription_Donphan_2[] = _( "POKéMON helps clear rock and mud slides\n" "that block mountain trails."); #else -const u8 DexDescription_Donphan_1[] = _( +static const u8 DexDescription_Donphan_1[] = _( "DONPHAN’s favorite attack is curling\n" "its body into a ball, then charging at\n" "its foe while rolling at high speed."); -const u8 DexDescription_Donphan_2[] = _( +static const u8 DexDescription_Donphan_2[] = _( "Once it starts rolling, this POKéMON\n" "can’t stop very easily."); #endif -const u8 DexDescription_Porygon2_1[] = _( +static const u8 DexDescription_Porygon2_1[] = _( "PORYGON2 was created by humans using\n" "the power of science. The man-made\n" "POKéMON has been endowed with"); -const u8 DexDescription_Porygon2_2[] = _( +static const u8 DexDescription_Porygon2_2[] = _( "artificial intelligence that enables it\n" "to learn new gestures and emotions\n" "on its own."); -const u8 DexDescription_Stantler_1[] = _( +static const u8 DexDescription_Stantler_1[] = _( "STANTLER’s magnificent antlers were\n" "traded at high prices as works of art.\n" "As a result, this POKéMON was hunted"); -const u8 DexDescription_Stantler_2[] = _( +static const u8 DexDescription_Stantler_2[] = _( "close to extinction by those who were\n" "after the priceless antlers."); -const u8 DexDescription_Smeargle_1[] = _( +static const u8 DexDescription_Smeargle_1[] = _( "SMEARGLE marks the boundaries of its\n" "territory using a body fluid that leaks\n" "out from the tip of its tail."); -const u8 DexDescription_Smeargle_2[] = _( +static const u8 DexDescription_Smeargle_2[] = _( "Over 5,000 different marks left by this\n" "POKéMON have been found."); -const u8 DexDescription_Tyrogue_1[] = _( +static const u8 DexDescription_Tyrogue_1[] = _( "TYROGUE becomes stressed out if it\n" "does not get to train every day.\n" "When raising this POKéMON, the TRAINER"); -const u8 DexDescription_Tyrogue_2[] = _( +static const u8 DexDescription_Tyrogue_2[] = _( "must establish and uphold various\n" "training methods."); -const u8 DexDescription_Hitmontop_1[] = _( +static const u8 DexDescription_Hitmontop_1[] = _( "HITMONTOP spins on its head at high\n" "speed, all the while delivering kicks.\n" "This technique is a remarkable mix of"); -const u8 DexDescription_Hitmontop_2[] = _( +static const u8 DexDescription_Hitmontop_2[] = _( "both offense and defense at the same\n" "time. The POKéMON travels faster\n" "spinning than it does walking."); -const u8 DexDescription_Smoochum_1[] = _( +static const u8 DexDescription_Smoochum_1[] = _( "SMOOCHUM actively runs about, but\n" "also falls quite often.\n" "Whenever the chance arrives, it will"); -const u8 DexDescription_Smoochum_2[] = _( +static const u8 DexDescription_Smoochum_2[] = _( "look for its reflection to make sure its\n" "face hasn’t become dirty."); -const u8 DexDescription_Elekid_1[] = _( +static const u8 DexDescription_Elekid_1[] = _( "ELEKID stores electricity in its body.\n" "If it touches metal and accidentally\n" "discharges all its built-up electricity,"); -const u8 DexDescription_Elekid_2[] = _( +static const u8 DexDescription_Elekid_2[] = _( "this POKéMON begins swinging its arms\n" "in circles to recharge itself."); -const u8 DexDescription_Magby_1[] = _( +static const u8 DexDescription_Magby_1[] = _( "MAGBY’s state of health is determined\n" "by observing the fire it breathes.\n" "If the POKéMON is spouting yellow"); -const u8 DexDescription_Magby_2[] = _( +static const u8 DexDescription_Magby_2[] = _( "flames from its mouth, it is in good\n" "health. When it is fatigued, black smoke\n" "will be mixed in with the flames."); -const u8 DexDescription_Miltank_1[] = _( +static const u8 DexDescription_Miltank_1[] = _( "MILTANK gives over five gallons of milk\n" "on a daily basis. Its sweet milk is\n" "enjoyed by children and grown-ups alike."); -const u8 DexDescription_Miltank_2[] = _( +static const u8 DexDescription_Miltank_2[] = _( "People who can’t drink milk turn it into\n" "yogurt and eat it instead."); -const u8 DexDescription_Blissey_1[] = _( +static const u8 DexDescription_Blissey_1[] = _( "BLISSEY senses sadness with its fluffy\n" "coat of fur. If it does so, this POKéMON\n" "will rush over to the sad person,"); -const u8 DexDescription_Blissey_2[] = _( +static const u8 DexDescription_Blissey_2[] = _( "however far they may be, to share an\n" "egg of happiness that brings a smile\n" "to any face."); -const u8 DexDescription_Raikou_1[] = _( +static const u8 DexDescription_Raikou_1[] = _( "RAIKOU embodies the speed of lightning.\n" "The roars of this POKéMON send shock\n" "waves shuddering through the air and"); -const u8 DexDescription_Raikou_2[] = _( +static const u8 DexDescription_Raikou_2[] = _( "shake the ground as if lightning bolts\n" "had come crashing down."); -const u8 DexDescription_Entei_1[] = _( +static const u8 DexDescription_Entei_1[] = _( "ENTEI embodies the passion of magma.\n" "This POKéMON is thought to have been\n" "born in the eruption of a volcano."); -const u8 DexDescription_Entei_2[] = _( +static const u8 DexDescription_Entei_2[] = _( "It sends up massive bursts of fire that\n" "utterly consume all that they touch."); -const u8 DexDescription_Suicune_1[] = _( +static const u8 DexDescription_Suicune_1[] = _( "SUICUNE embodies the compassion of\n" "a pure spring of water. It runs across\n" "the land with gracefulness."); -const u8 DexDescription_Suicune_2[] = _( +static const u8 DexDescription_Suicune_2[] = _( "This POKéMON has the power to purify\n" "dirty water."); -const u8 DexDescription_Larvitar_1[] = _( +static const u8 DexDescription_Larvitar_1[] = _( "LARVITAR is born deep under the ground.\n" "To come up to the surface, this POKéMON\n" "must eat its way through the soil above."); -const u8 DexDescription_Larvitar_2[] = _( +static const u8 DexDescription_Larvitar_2[] = _( "Until it does so, LARVITAR cannot see\n" "its parent’s face."); -const u8 DexDescription_Pupitar_1[] = _( +static const u8 DexDescription_Pupitar_1[] = _( "PUPITAR creates a gas inside its body\n" "that it compresses and forcefully\n" "ejects to propel itself like a jet."); -const u8 DexDescription_Pupitar_2[] = _( +static const u8 DexDescription_Pupitar_2[] = _( "The body is very durable - it avoids\n" "damage even if it hits solid steel."); -const u8 DexDescription_Tyranitar_1[] = _( +static const u8 DexDescription_Tyranitar_1[] = _( "TYRANITAR is so overwhelmingly\n" "powerful, it can bring down a whole\n" "mountain to make its nest."); -const u8 DexDescription_Tyranitar_2[] = _( +static const u8 DexDescription_Tyranitar_2[] = _( "This POKéMON wanders about in\n" "mountains seeking new opponents to\n" "fight."); -const u8 DexDescription_Lugia_1[] = _( +static const u8 DexDescription_Lugia_1[] = _( "LUGIA’s wings pack devastating power -\n" "a light fluttering of its wings can blow\n" "apart regular houses."); -const u8 DexDescription_Lugia_2[] = _( +static const u8 DexDescription_Lugia_2[] = _( "As a result, this POKéMON chooses to\n" "live out of sight deep under the sea."); -const u8 DexDescription_HoOh_1[] = _( +static const u8 DexDescription_HoOh_1[] = _( "HO-OH’s feathers glow in seven colors\n" "depending on the angle at which they\n" "are struck by light."); -const u8 DexDescription_HoOh_2[] = _( +static const u8 DexDescription_HoOh_2[] = _( "These feathers are said to bring\n" "happiness to the bearers. This POKéMON\n" "is said to live at the foot of a rainbow."); -const u8 DexDescription_Celebi_1[] = _( +static const u8 DexDescription_Celebi_1[] = _( "This POKéMON came from the future by\n" "crossing over time.\n" "It is thought that so long as CELEBI"); -const u8 DexDescription_Celebi_2[] = _( +static const u8 DexDescription_Celebi_2[] = _( "appears, a bright and shining future\n" "awaits us."); #ifdef SAPPHIRE -const u8 DexDescription_Treecko_1[] = _( +static const u8 DexDescription_Treecko_1[] = _( "TREECKO is cool, calm, and collected -\n" "it never panics under any situation.\n" "If a bigger foe were to glare at this"); -const u8 DexDescription_Treecko_2[] = _( +static const u8 DexDescription_Treecko_2[] = _( "POKéMON, it would glare right back\n" "without conceding an inch of ground."); #else -const u8 DexDescription_Treecko_1[] = _( +static const u8 DexDescription_Treecko_1[] = _( "TREECKO has small hooks on the bottom\n" "of its feet that enable it to scale\n" "vertical walls."); -const u8 DexDescription_Treecko_2[] = _( +static const u8 DexDescription_Treecko_2[] = _( "This POKéMON attacks by slamming foes\n" "with its thick tail."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Grovyle_1[] = _( +static const u8 DexDescription_Grovyle_1[] = _( "This POKéMON adeptly flies from branch\n" "to branch in trees.\n" "In a forest, no POKéMON can ever hope"); -const u8 DexDescription_Grovyle_2[] = _( +static const u8 DexDescription_Grovyle_2[] = _( "to catch a fleeing GROVYLE however\n" "fast they may be."); #else -const u8 DexDescription_Grovyle_1[] = _( +static const u8 DexDescription_Grovyle_1[] = _( "The leaves growing out of GROVYLE’s\n" "body are convenient for camouflaging\n" "it from enemies in the forest."); -const u8 DexDescription_Grovyle_2[] = _( +static const u8 DexDescription_Grovyle_2[] = _( "This POKéMON is a master at climbing\n" "trees in jungles."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Sceptile_1[] = _( +static const u8 DexDescription_Sceptile_1[] = _( "SCEPTILE has seeds growing on its back.\n" "They are said to be bursting with\n" "nutrients that revitalize trees."); -const u8 DexDescription_Sceptile_2[] = _( +static const u8 DexDescription_Sceptile_2[] = _( "This POKéMON raises the trees in a\n" "forest with loving care."); #else -const u8 DexDescription_Sceptile_1[] = _( +static const u8 DexDescription_Sceptile_1[] = _( "The leaves growing on SCEPTILE’s body\n" "are very sharp edged. This POKéMON is\n" "very agile - it leaps all over the"); -const u8 DexDescription_Sceptile_2[] = _( +static const u8 DexDescription_Sceptile_2[] = _( "branches of trees and jumps on its foe\n" "from above or behind."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Torchic_1[] = _( +static const u8 DexDescription_Torchic_1[] = _( "TORCHIC has a place inside its body\n" "where it keeps its flame. Give it a hug -\n" "it will be glowing with warmth."); -const u8 DexDescription_Torchic_2[] = _( +static const u8 DexDescription_Torchic_2[] = _( "This POKéMON is covered all over by a\n" "fluffy coat of down."); #else -const u8 DexDescription_Torchic_1[] = _( +static const u8 DexDescription_Torchic_1[] = _( "TORCHIC sticks with its TRAINER,\n" "following behind with unsteady\n" "steps."); -const u8 DexDescription_Torchic_2[] = _( +static const u8 DexDescription_Torchic_2[] = _( "This POKéMON breathes fire of over\n" "1,800 degrees F, including fireballs\n" "that leave the foe scorched black."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Combusken_1[] = _( +static const u8 DexDescription_Combusken_1[] = _( "COMBUSKEN battles with the intensely\n" "hot flames it spews from its beak and\n" "with outstandingly destructive kicks."); -const u8 DexDescription_Combusken_2[] = _( +static const u8 DexDescription_Combusken_2[] = _( "This POKéMON’s cry is very loud and\n" "distracting."); #else -const u8 DexDescription_Combusken_1[] = _( +static const u8 DexDescription_Combusken_1[] = _( "COMBUSKEN toughens up its legs and\n" "thighs by running through fields and\n" "mountains."); -const u8 DexDescription_Combusken_2[] = _( +static const u8 DexDescription_Combusken_2[] = _( "This POKéMON’s legs possess both speed\n" "and power, enabling it to dole out ten\n" "kicks in one second."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Blaziken_1[] = _( +static const u8 DexDescription_Blaziken_1[] = _( "BLAZIKEN has incredibly strong legs -\n" "it can easily clear a 30-story building\n" "in one leap."); -const u8 DexDescription_Blaziken_2[] = _( +static const u8 DexDescription_Blaziken_2[] = _( "This POKéMON’s blazing punches leave\n" "its foes scorched and blackened."); #else -const u8 DexDescription_Blaziken_1[] = _( +static const u8 DexDescription_Blaziken_1[] = _( "In battle, BLAZIKEN blows out intense\n" "flames from its wrists and attacks foes\n" "courageously."); -const u8 DexDescription_Blaziken_2[] = _( +static const u8 DexDescription_Blaziken_2[] = _( "The stronger the foe, the more\n" "intensely this POKéMON’s wrists burn."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Mudkip_1[] = _( +static const u8 DexDescription_Mudkip_1[] = _( "In water, MUDKIP breathes using the\n" "gills on its cheeks.\n" "If it is faced with a tight situation in"); -const u8 DexDescription_Mudkip_2[] = _( +static const u8 DexDescription_Mudkip_2[] = _( "battle, this POKéMON will unleash its\n" "amazing power - it can crush rocks\n" "bigger than itself."); #else -const u8 DexDescription_Mudkip_1[] = _( +static const u8 DexDescription_Mudkip_1[] = _( "The fin on MUDKIP’s head acts as highly\n" "sensitive radar. Using this fin to sense\n" "movements of water and air, this"); -const u8 DexDescription_Mudkip_2[] = _( +static const u8 DexDescription_Mudkip_2[] = _( "POKéMON can determine what is taking\n" "place around it without using its eyes."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Marshtomp_1[] = _( +static const u8 DexDescription_Marshtomp_1[] = _( "MARSHTOMP is much faster at traveling\n" "through mud than it is at swimming.\n" "This POKéMON’s hindquarters exhibit"); -const u8 DexDescription_Marshtomp_2[] = _( +static const u8 DexDescription_Marshtomp_2[] = _( "obvious development, giving it the\n" "ability to walk on just its hind legs."); #else -const u8 DexDescription_Marshtomp_1[] = _( +static const u8 DexDescription_Marshtomp_1[] = _( "The surface of MARSHTOMP’s body is\n" "enveloped by a thin, sticky film that\n" "enables it to live on land."); -const u8 DexDescription_Marshtomp_2[] = _( +static const u8 DexDescription_Marshtomp_2[] = _( "This POKéMON plays in mud on beaches\n" "when the ocean tide is low."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Swampert_1[] = _( +static const u8 DexDescription_Swampert_1[] = _( "SWAMPERT predicts storms by sensing\n" "subtle differences in the sounds of\n" "waves and tidal winds with its fins."); -const u8 DexDescription_Swampert_2[] = _( +static const u8 DexDescription_Swampert_2[] = _( "If a storm is approaching, it piles up\n" "boulders to protect itself."); #else -const u8 DexDescription_Swampert_1[] = _( +static const u8 DexDescription_Swampert_1[] = _( "SWAMPERT is very strong. It has enough\n" "power to easily drag a boulder weighing\n" "more than a ton."); -const u8 DexDescription_Swampert_2[] = _( +static const u8 DexDescription_Swampert_2[] = _( "This POKéMON also has powerful vision\n" "that lets it see even in murky water."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Poochyena_1[] = _( +static const u8 DexDescription_Poochyena_1[] = _( "POOCHYENA is an omnivore - it will eat\n" "anything. A distinguishing feature is\n" "how large its fangs are compared to"); -const u8 DexDescription_Poochyena_2[] = _( +static const u8 DexDescription_Poochyena_2[] = _( "its body. This POKéMON tries to\n" "intimidate its foes by making the hair\n" "on its tail bristle out."); #else -const u8 DexDescription_Poochyena_1[] = _( +static const u8 DexDescription_Poochyena_1[] = _( "At first sight, POOCHYENA takes a bite\n" "at anything that moves.\n" "This POKéMON chases after prey until"); -const u8 DexDescription_Poochyena_2[] = _( +static const u8 DexDescription_Poochyena_2[] = _( "the victim becomes exhausted.\n" "However, it may turn tail if the prey\n" "strikes back."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Mightyena_1[] = _( +static const u8 DexDescription_Mightyena_1[] = _( "MIGHTYENA travel and act as a pack\n" "in the wild. The memory of its life in the\n" "wild compels the POKéMON to obey only"); -const u8 DexDescription_Mightyena_2[] = _( +static const u8 DexDescription_Mightyena_2[] = _( "those TRAINERS that it recognizes to\n" "possess superior skill."); #else -const u8 DexDescription_Mightyena_1[] = _( +static const u8 DexDescription_Mightyena_1[] = _( "MIGHTYENA gives obvious signals when\n" "it is preparing to attack. It starts to\n" "growl deeply and then flattens its body."); -const u8 DexDescription_Mightyena_2[] = _( +static const u8 DexDescription_Mightyena_2[] = _( "This POKéMON will bite savagely with its\n" "sharply pointed fangs."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Zigzagoon_1[] = _( +static const u8 DexDescription_Zigzagoon_1[] = _( "The hair on ZIGZAGOON’s back is \n" "bristly. It rubs the hard back hair\n" "against trees to leave its territorial"); -const u8 DexDescription_Zigzagoon_2[] = _( +static const u8 DexDescription_Zigzagoon_2[] = _( "markings.\n" "This POKéMON may play dead to fool foes\n" "in battle."); #else -const u8 DexDescription_Zigzagoon_1[] = _( +static const u8 DexDescription_Zigzagoon_1[] = _( "ZIGZAGOON restlessly wanders\n" "everywhere at all times. This POKéMON\n" "does so because it is very curious."); -const u8 DexDescription_Zigzagoon_2[] = _( +static const u8 DexDescription_Zigzagoon_2[] = _( "It becomes interested in anything\n" "that it happens to see."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Linoone_1[] = _( +static const u8 DexDescription_Linoone_1[] = _( "When hunting, LINOONE will make a\n" "beeline straight for the prey at a full\n" "run. While this POKéMON is capable of"); -const u8 DexDescription_Linoone_2[] = _( +static const u8 DexDescription_Linoone_2[] = _( "topping 60 mph, it has to come to a\n" "screeching halt before it can turn."); #else -const u8 DexDescription_Linoone_1[] = _( +static const u8 DexDescription_Linoone_1[] = _( "LINOONE always runs full speed and only\n" "in straight lines. If facing an obstacle,\n" "it makes a right-angle turn to evade it."); -const u8 DexDescription_Linoone_2[] = _( +static const u8 DexDescription_Linoone_2[] = _( "This POKéMON is very challenged by\n" "gently curving roads."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Wurmple_1[] = _( +static const u8 DexDescription_Wurmple_1[] = _( "WURMPLE is targeted by SWELLOW as\n" "prey. This POKéMON will try to resist by\n" "pointing the spikes on its rear at the"); -const u8 DexDescription_Wurmple_2[] = _( +static const u8 DexDescription_Wurmple_2[] = _( "attacking predator.\n" "It will weaken the foe by leaking poison\n" "from the spikes."); #else -const u8 DexDescription_Wurmple_1[] = _( +static const u8 DexDescription_Wurmple_1[] = _( "Using the spikes on its rear end, \n" "WURMPLE peels the bark off trees and\n" "feeds on the sap that oozes out."); -const u8 DexDescription_Wurmple_2[] = _( +static const u8 DexDescription_Wurmple_2[] = _( "This POKéMON’s feet are tipped with\n" "suction pads that allow it to cling to\n" "glass without slipping."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Silcoon_1[] = _( +static const u8 DexDescription_Silcoon_1[] = _( "SILCOON was thought to endure hunger\n" "and not consume anything before its\n" "evolution. However, it is now thought"); -const u8 DexDescription_Silcoon_2[] = _( +static const u8 DexDescription_Silcoon_2[] = _( "that this POKéMON slakes its thirst by\n" "drinking rainwater that collects on its\n" "silk."); #else -const u8 DexDescription_Silcoon_1[] = _( +static const u8 DexDescription_Silcoon_1[] = _( "SILCOON tethers itself to a tree branch\n" "using silk to keep from falling. There, \n" "this POKéMON hangs quietly while it"); -const u8 DexDescription_Silcoon_2[] = _( +static const u8 DexDescription_Silcoon_2[] = _( "awaits evolution.\n" "It peers out of the silk cocoon through\n" "a small hole."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Beautifly_1[] = _( +static const u8 DexDescription_Beautifly_1[] = _( "BEAUTIFLY has a long mouth like a coiled\n" "needle, which is very convenient for\n" "collecting pollen from flowers."); -const u8 DexDescription_Beautifly_2[] = _( +static const u8 DexDescription_Beautifly_2[] = _( "This POKéMON rides the spring winds as\n" "it flits around gathering pollen."); #else -const u8 DexDescription_Beautifly_1[] = _( +static const u8 DexDescription_Beautifly_1[] = _( "BEAUTIFLY’s favorite food is the sweet\n" "pollen of flowers. If you want to see\n" "this POKéMON, just leave a potted"); -const u8 DexDescription_Beautifly_2[] = _( +static const u8 DexDescription_Beautifly_2[] = _( "flower by an open window. BEAUTIFLY\n" "is sure to come looking for pollen."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Cascoon_1[] = _( +static const u8 DexDescription_Cascoon_1[] = _( "If it is attacked, CASCOON remains\n" "motionless however badly it may be\n" "hurt. It does so because if it were to"); -const u8 DexDescription_Cascoon_2[] = _( +static const u8 DexDescription_Cascoon_2[] = _( "move, its body would be weak upon\n" "evolution. This POKéMON will also not\n" "forget the pain it endured."); #else -const u8 DexDescription_Cascoon_1[] = _( +static const u8 DexDescription_Cascoon_1[] = _( "CASCOON makes its protective cocoon\n" "by wrapping its body entirely with a\n" "fine silk from its mouth. Once the silk"); -const u8 DexDescription_Cascoon_2[] = _( +static const u8 DexDescription_Cascoon_2[] = _( "goes around its body, it hardens.\n" "This POKéMON prepares for its evolution\n" "inside the cocoon."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Dustox_1[] = _( +static const u8 DexDescription_Dustox_1[] = _( "When DUSTOX flaps its wings, a fine\n" "dust is scattered all over. This dust is\n" "actually a powerful poison that will"); -const u8 DexDescription_Dustox_2[] = _( +static const u8 DexDescription_Dustox_2[] = _( "even make a pro wrestler sick.\n" "This POKéMON searches for food using\n" "its antennae like radar."); #else -const u8 DexDescription_Dustox_1[] = _( +static const u8 DexDescription_Dustox_1[] = _( "DUSTOX is instinctively drawn to light.\n" "Swarms of this POKéMON are attracted\n" "by the bright lights of cities, where"); -const u8 DexDescription_Dustox_2[] = _( +static const u8 DexDescription_Dustox_2[] = _( "they wreak havoc by stripping the\n" "leaves off roadside trees for food."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Lotad_1[] = _( +static const u8 DexDescription_Lotad_1[] = _( "LOTAD is said to have dwelled on land\n" "before. However, this POKéMON is\n" "thought to have returned to water"); -const u8 DexDescription_Lotad_2[] = _( +static const u8 DexDescription_Lotad_2[] = _( "because the leaf on its head grew large\n" "and heavy. It now lives by floating\n" "atop the water."); #else -const u8 DexDescription_Lotad_1[] = _( +static const u8 DexDescription_Lotad_1[] = _( "LOTAD live in ponds and lakes, where\n" "they float on the surface.\n" "It grows weak if its broad leaf dies."); -const u8 DexDescription_Lotad_2[] = _( +static const u8 DexDescription_Lotad_2[] = _( "On rare occasions, this POKéMON travels\n" "on land in search of clean water."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Lombre_1[] = _( +static const u8 DexDescription_Lombre_1[] = _( "LOMBRE’s entire body is covered by a\n" "slippery, slimy film. It feels horribly\n" "unpleasant to be touched by this"); -const u8 DexDescription_Lombre_2[] = _( +static const u8 DexDescription_Lombre_2[] = _( "POKéMON’s hands.\n" "LOMBRE is often mistaken for a human\n" "child."); #else -const u8 DexDescription_Lombre_1[] = _( +static const u8 DexDescription_Lombre_1[] = _( "LOMBRE is nocturnal - it will get active\n" "after dusk. It is also a mischief-maker.\n" "When this POKéMON spots anglers,"); -const u8 DexDescription_Lombre_2[] = _( +static const u8 DexDescription_Lombre_2[] = _( "it tugs on their fishing lines from\n" "beneath the surface and enjoys their\n" "consternation."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Ludicolo_1[] = _( +static const u8 DexDescription_Ludicolo_1[] = _( "Upon hearing an upbeat and cheerful\n" "rhythm, the cells in LUDICOLO’s body\n" "become very energetic and active."); -const u8 DexDescription_Ludicolo_2[] = _( +static const u8 DexDescription_Ludicolo_2[] = _( "Even in battle, this POKéMON will\n" "exhibit an amazing amount of power."); #else -const u8 DexDescription_Ludicolo_1[] = _( +static const u8 DexDescription_Ludicolo_1[] = _( "LUDICOLO begins dancing as soon as\n" "it hears cheerful, festive music.\n" "This POKéMON is said to appear when it"); -const u8 DexDescription_Ludicolo_2[] = _( +static const u8 DexDescription_Ludicolo_2[] = _( "hears the singing of children on hiking\n" "outings."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Seedot_1[] = _( +static const u8 DexDescription_Seedot_1[] = _( "SEEDOT looks exactly like an acorn\n" "when it is dangling from a tree branch.\n" "It startles other POKéMON by suddenly"); -const u8 DexDescription_Seedot_2[] = _( +static const u8 DexDescription_Seedot_2[] = _( "moving.\n" "This POKéMON polishes its body once a\n" "day using leaves."); #else -const u8 DexDescription_Seedot_1[] = _( +static const u8 DexDescription_Seedot_1[] = _( "SEEDOT attaches itself to a tree\n" "branch using the top of its head.\n" "It sucks moisture from the tree while"); -const u8 DexDescription_Seedot_2[] = _( +static const u8 DexDescription_Seedot_2[] = _( "hanging off the branch.\n" "The more water it drinks, the glossier\n" "this POKéMON’s body becomes."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Nuzleaf_1[] = _( +static const u8 DexDescription_Nuzleaf_1[] = _( "This POKéMON pulls out the leaf on its\n" "head and makes a flute with it.\n" "The sound of NUZLEAF’s flute strikes"); -const u8 DexDescription_Nuzleaf_2[] = _( +static const u8 DexDescription_Nuzleaf_2[] = _( "fear and uncertainty in the hearts of\n" "people lost in a forest."); #else -const u8 DexDescription_Nuzleaf_1[] = _( +static const u8 DexDescription_Nuzleaf_1[] = _( "NUZLEAF live in densely overgrown\n" "forests. They occasionally venture out\n" "of the forest to startle people."); -const u8 DexDescription_Nuzleaf_2[] = _( +static const u8 DexDescription_Nuzleaf_2[] = _( "This POKéMON dislikes having its long\n" "nose pinched."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Shiftry_1[] = _( +static const u8 DexDescription_Shiftry_1[] = _( "SHIFTRY’s large fans generate awesome\n" "gusts of wind at a speed close to 100\n" "feet per second. The whipped-up wind"); -const u8 DexDescription_Shiftry_2[] = _( +static const u8 DexDescription_Shiftry_2[] = _( "blows anything away.\n" "This POKéMON chooses to live quietly\n" "deep in forests."); #else -const u8 DexDescription_Shiftry_1[] = _( +static const u8 DexDescription_Shiftry_1[] = _( "SHIFTRY is a mysterious POKéMON that\n" "is said to live atop towering trees \n" "dating back over a thousand years."); -const u8 DexDescription_Shiftry_2[] = _( +static const u8 DexDescription_Shiftry_2[] = _( "It creates terrific windstorms with\n" "the fans it holds."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Taillow_1[] = _( +static const u8 DexDescription_Taillow_1[] = _( "TAILLOW is young - it has only just\n" "left its nest. As a result, it sometimes\n" "becomes lonesome and cries at night."); -const u8 DexDescription_Taillow_2[] = _( +static const u8 DexDescription_Taillow_2[] = _( "This POKéMON feeds on WURMPLE that\n" "live in forests."); #else -const u8 DexDescription_Taillow_1[] = _( +static const u8 DexDescription_Taillow_1[] = _( "TAILLOW courageously stands its\n" "ground against foes, however strong\n" "they may be."); -const u8 DexDescription_Taillow_2[] = _( +static const u8 DexDescription_Taillow_2[] = _( "This gutsy POKéMON will remain defiant\n" "even after a loss. On the other hand,\n" "it cries loudly if it becomes hungry."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Swellow_1[] = _( +static const u8 DexDescription_Swellow_1[] = _( "SWELLOW is very conscientious about\n" "the upkeep of its glossy wings.\n" "Once two SWELLOW are gathered, they"); -const u8 DexDescription_Swellow_2[] = _( +static const u8 DexDescription_Swellow_2[] = _( "diligently take care of cleaning each\n" "other’s wings."); #else -const u8 DexDescription_Swellow_1[] = _( +static const u8 DexDescription_Swellow_1[] = _( "SWELLOW flies high above our heads,\n" "making graceful arcs in the sky.\n" "This POKéMON dives at a steep angle as"); -const u8 DexDescription_Swellow_2[] = _( +static const u8 DexDescription_Swellow_2[] = _( "soon as it spots its prey. The hapless\n" "prey is tightly grasped by SWELLOW’s\n" "clawed feet, preventing escape."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Wingull_1[] = _( +static const u8 DexDescription_Wingull_1[] = _( "WINGULL rides updrafts rising from the\n" "sea by extending its long and narrow\n" "wings to glide."); -const u8 DexDescription_Wingull_2[] = _( +static const u8 DexDescription_Wingull_2[] = _( "This POKéMON’s long beak is useful for\n" "catching prey."); #else -const u8 DexDescription_Wingull_1[] = _( +static const u8 DexDescription_Wingull_1[] = _( "WINGULL has the habit of carrying prey\n" "and valuables in its beak and hiding\n" "them in all sorts of locations."); -const u8 DexDescription_Wingull_2[] = _( +static const u8 DexDescription_Wingull_2[] = _( "This POKéMON rides the winds and flies\n" "as if it were skating across the sky."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Pelipper_1[] = _( +static const u8 DexDescription_Pelipper_1[] = _( "PELIPPER searches for food while in\n" "flight by skimming the wave tops.\n" "This POKéMON dips its large bill in the"); -const u8 DexDescription_Pelipper_2[] = _( +static const u8 DexDescription_Pelipper_2[] = _( "sea to scoop up food, then swallows\n" "everything in one big gulp."); #else -const u8 DexDescription_Pelipper_1[] = _( +static const u8 DexDescription_Pelipper_1[] = _( "PELIPPER is a flying transporter that\n" "carries small POKéMON and eggs inside\n" "its massive bill."); -const u8 DexDescription_Pelipper_2[] = _( +static const u8 DexDescription_Pelipper_2[] = _( "This POKéMON builds its nest on steep\n" "cliffs facing the sea."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Ralts_1[] = _( +static const u8 DexDescription_Ralts_1[] = _( "RALTS has the ability to sense the\n" "emotions of people.\n" "If its TRAINER is in a cheerful mood,"); -const u8 DexDescription_Ralts_2[] = _( +static const u8 DexDescription_Ralts_2[] = _( "this POKéMON grows cheerful and joyous\n" "in the same way."); #else -const u8 DexDescription_Ralts_1[] = _( +static const u8 DexDescription_Ralts_1[] = _( "RALTS senses the emotions of\n" "people using the horns on its head.\n" "This POKéMON rarely appears before"); -const u8 DexDescription_Ralts_2[] = _( +static const u8 DexDescription_Ralts_2[] = _( "people. But when it does, it draws\n" "closer if it senses that the person has\n" "a positive disposition."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Kirlia_1[] = _( +static const u8 DexDescription_Kirlia_1[] = _( "KIRLIA uses the horns on its head\n" "to amplify its psychokinetic power.\n" "When the POKéMON uses its power,"); -const u8 DexDescription_Kirlia_2[] = _( +static const u8 DexDescription_Kirlia_2[] = _( "the air around it becomes distorted,\n" "creating mirages of nonexistent\n" "scenery."); #else -const u8 DexDescription_Kirlia_1[] = _( +static const u8 DexDescription_Kirlia_1[] = _( "It is said that a KIRLIA that is\n" "exposed to the positive emotions of\n" "its TRAINER grows beautiful."); -const u8 DexDescription_Kirlia_2[] = _( +static const u8 DexDescription_Kirlia_2[] = _( "This POKéMON controls psychokinetic\n" "powers with its highly developed brain."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Gardevoir_1[] = _( +static const u8 DexDescription_Gardevoir_1[] = _( "GARDEVOIR has the psychokinetic\n" "power to distort the dimensions and\n" "create a small black hole."); -const u8 DexDescription_Gardevoir_2[] = _( +static const u8 DexDescription_Gardevoir_2[] = _( "This POKéMON will try to protect its\n" "TRAINER even at the risk of its own\n" "life."); #else -const u8 DexDescription_Gardevoir_1[] = _( +static const u8 DexDescription_Gardevoir_1[] = _( "GARDEVOIR has the ability to read the\n" "future. If it senses impending danger\n" "to its TRAINER, this POKéMON is said to"); -const u8 DexDescription_Gardevoir_2[] = _( +static const u8 DexDescription_Gardevoir_2[] = _( "unleash its psychokinetic energy at\n" "full power."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Surskit_1[] = _( +static const u8 DexDescription_Surskit_1[] = _( "If SURSKIT senses danger, it secretes\n" "a thick, sugary syrup from the tip of\n" "its head."); -const u8 DexDescription_Surskit_2[] = _( +static const u8 DexDescription_Surskit_2[] = _( "There are some POKéMON that love\n" "eating this syrup."); #else -const u8 DexDescription_Surskit_1[] = _( +static const u8 DexDescription_Surskit_1[] = _( "From the tips of its feet, SURSKIT\n" "secretes an oil that enables it to walk\n" "on water as if it were skating."); -const u8 DexDescription_Surskit_2[] = _( +static const u8 DexDescription_Surskit_2[] = _( "This POKéMON feeds on microscopic\n" "organisms in ponds and lakes."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Masquerain_1[] = _( +static const u8 DexDescription_Masquerain_1[] = _( "MASQUERAIN’s antennas have eyelike\n" "patterns that usually give it an angry\n" "look. If the “eyes” are droopy and"); -const u8 DexDescription_Masquerain_2[] = _( +static const u8 DexDescription_Masquerain_2[] = _( "appear sad, it is said to be a sign\n" "that a heavy rainfall is on its way."); #else -const u8 DexDescription_Masquerain_1[] = _( +static const u8 DexDescription_Masquerain_1[] = _( "MASQUERAIN intimidates enemies with\n" "the eyelike patterns on its antennas.\n" "This POKéMON flaps its four wings to"); -const u8 DexDescription_Masquerain_2[] = _( +static const u8 DexDescription_Masquerain_2[] = _( "freely fly in any direction - even\n" "sideways and backwards - as if it were\n" "a helicopter."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Shroomish_1[] = _( +static const u8 DexDescription_Shroomish_1[] = _( "If SHROOMISH senses danger, it shakes\n" "its body and scatters spores from the\n" "top of its head."); -const u8 DexDescription_Shroomish_2[] = _( +static const u8 DexDescription_Shroomish_2[] = _( "This POKéMON’s spores are so toxic,\n" "they make trees and weeds wilt."); #else -const u8 DexDescription_Shroomish_1[] = _( +static const u8 DexDescription_Shroomish_1[] = _( "SHROOMISH live in damp soil in the dark\n" "depths of forests. They are often\n" "found keeping still under fallen leaves."); -const u8 DexDescription_Shroomish_2[] = _( +static const u8 DexDescription_Shroomish_2[] = _( "This POKéMON feeds on compost that\n" "is made up of fallen, rotted leaves."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Breloom_1[] = _( +static const u8 DexDescription_Breloom_1[] = _( "The seeds ringing BRELOOM’s tail are\n" "made of hardened toxic spores. It is\n" "horrible to eat the seeds."); -const u8 DexDescription_Breloom_2[] = _( +static const u8 DexDescription_Breloom_2[] = _( "Just taking a bite of this POKéMON’s\n" "seed will cause your stomach to rumble."); #else -const u8 DexDescription_Breloom_1[] = _( +static const u8 DexDescription_Breloom_1[] = _( "BRELOOM closes in on its foe with light\n" "and sprightly footwork, then throws\n" "punches with its stretchy arms."); -const u8 DexDescription_Breloom_2[] = _( +static const u8 DexDescription_Breloom_2[] = _( "This POKéMON’s fighting technique puts\n" "boxers to shame."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Slakoth_1[] = _( +static const u8 DexDescription_Slakoth_1[] = _( "SLAKOTH’s heart beats just once a\n" "minute. Whatever happens, it is\n" "content to loaf around motionless."); -const u8 DexDescription_Slakoth_2[] = _( +static const u8 DexDescription_Slakoth_2[] = _( "It is rare to see this POKéMON in\n" "motion."); #else -const u8 DexDescription_Slakoth_1[] = _( +static const u8 DexDescription_Slakoth_1[] = _( "SLAKOTH lolls around for over twenty\n" "hours every day. Because it moves so\n" "little, it does not need much food."); -const u8 DexDescription_Slakoth_2[] = _( +static const u8 DexDescription_Slakoth_2[] = _( "This POKéMON’s sole daily meal consists\n" "of just three leaves."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Vigoroth_1[] = _( +static const u8 DexDescription_Vigoroth_1[] = _( "VIGOROTH is simply incapable of\n" "remaining still. Even when it tries to\n" "sleep, the blood in its veins grows"); -const u8 DexDescription_Vigoroth_2[] = _( +static const u8 DexDescription_Vigoroth_2[] = _( "agitated, compelling this POKéMON to\n" "run wild throughout the jungle before\n" "it can settle down."); #else -const u8 DexDescription_Vigoroth_1[] = _( +static const u8 DexDescription_Vigoroth_1[] = _( "VIGOROTH is always itching and agitated\n" "to go on a wild rampage. It simply can’t\n" "tolerate sitting still for even a minute."); -const u8 DexDescription_Vigoroth_2[] = _( +static const u8 DexDescription_Vigoroth_2[] = _( "This POKéMON’s stress level rises if it\n" "can’t be moving constantly."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Slaking_1[] = _( +static const u8 DexDescription_Slaking_1[] = _( "Wherever SLAKING live, rings of over\n" "a yard in diameter appear in grassy\n" "fields. They are made by the POKéMON"); -const u8 DexDescription_Slaking_2[] = _( +static const u8 DexDescription_Slaking_2[] = _( "as it eats all the grass within reach\n" "while lying prone on the ground."); #else -const u8 DexDescription_Slaking_1[] = _( +static const u8 DexDescription_Slaking_1[] = _( "SLAKING spends all day lying down and\n" "lolling about.\n" "It eats grass growing within its reach."); -const u8 DexDescription_Slaking_2[] = _( +static const u8 DexDescription_Slaking_2[] = _( "If it eats all the grass it can reach,\n" "this POKéMON reluctantly moves to\n" "another spot."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Nincada_1[] = _( +static const u8 DexDescription_Nincada_1[] = _( "NINCADA lives underground. It uses its\n" "sharp claws to carve the roots of trees\n" "and absorb moisture and nutrients."); -const u8 DexDescription_Nincada_2[] = _( +static const u8 DexDescription_Nincada_2[] = _( "This POKéMON can’t withstand bright\n" "sunlight so avoids it."); #else -const u8 DexDescription_Nincada_1[] = _( +static const u8 DexDescription_Nincada_1[] = _( "NINCADA lives underground for many\n" "years in complete darkness.\n" "This POKéMON absorbs nutrients from"); -const u8 DexDescription_Nincada_2[] = _( +static const u8 DexDescription_Nincada_2[] = _( "the roots of trees. It stays motionless\n" "as it waits for evolution."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Ninjask_1[] = _( +static const u8 DexDescription_Ninjask_1[] = _( "If NINJASK is not trained properly,\n" "it will refuse to obey the TRAINER and\n" "cry loudly continuously."); -const u8 DexDescription_Ninjask_2[] = _( +static const u8 DexDescription_Ninjask_2[] = _( "Because of this quality, this POKéMON\n" "is said to be one that puts the\n" "TRAINER’s abilities to the test."); #else -const u8 DexDescription_Ninjask_1[] = _( +static const u8 DexDescription_Ninjask_1[] = _( "NINJASK moves around at such a high\n" "speed that it cannot be seen, even\n" "while its crying can be clearly heard."); -const u8 DexDescription_Ninjask_2[] = _( +static const u8 DexDescription_Ninjask_2[] = _( "For that reason, this POKéMON was long\n" "believed to be invisible."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Shedinja_1[] = _( +static const u8 DexDescription_Shedinja_1[] = _( "SHEDINJA is a peculiar POKéMON.\n" "It seems to appear unsought in a POKé\n" "BALL after a NINCADA evolves."); -const u8 DexDescription_Shedinja_2[] = _( +static const u8 DexDescription_Shedinja_2[] = _( "This bizarre POKéMON is entirely\n" "immobile - it doesn’t even breathe."); #else -const u8 DexDescription_Shedinja_1[] = _( +static const u8 DexDescription_Shedinja_1[] = _( "SHEDINJA’s hard body doesn’t move -\n" "not even a twitch. In fact, its body\n" "appears to be merely a hollow shell."); -const u8 DexDescription_Shedinja_2[] = _( +static const u8 DexDescription_Shedinja_2[] = _( "It is believed that this POKéMON will\n" "steal the spirit of anyone peering into\n" "its hollow body from its back."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Whismur_1[] = _( +static const u8 DexDescription_Whismur_1[] = _( "WHISMUR is very timid. If it starts to\n" "cry loudly, it becomes startled by its\n" "own crying and cries even harder."); -const u8 DexDescription_Whismur_2[] = _( +static const u8 DexDescription_Whismur_2[] = _( "When it finally stops crying, the\n" "POKéMON goes to sleep, all tired out."); #else -const u8 DexDescription_Whismur_1[] = _( +static const u8 DexDescription_Whismur_1[] = _( "Normally, WHISMUR’s voice is very quiet -\n" "it is barely audible even if one is\n" "paying close attention."); -const u8 DexDescription_Whismur_2[] = _( +static const u8 DexDescription_Whismur_2[] = _( "However, if this POKéMON senses danger,\n" "it starts crying at an earsplitting\n" "volume."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Loudred_1[] = _( +static const u8 DexDescription_Loudred_1[] = _( "LOUDRED shouts while stamping its feet.\n" "After it finishes shouting, this\n" "POKéMON becomes incapable of hearing"); -const u8 DexDescription_Loudred_2[] = _( +static const u8 DexDescription_Loudred_2[] = _( "anything for a while. This is considered\n" "to be a weak point."); #else -const u8 DexDescription_Loudred_1[] = _( +static const u8 DexDescription_Loudred_1[] = _( "LOUDRED’s bellowing can completely\n" "decimate a wood-frame house. It uses\n" "its voice to punish its foes."); -const u8 DexDescription_Loudred_2[] = _( +static const u8 DexDescription_Loudred_2[] = _( "This POKéMON’s round ears serve as\n" "loudspeakers."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Exploud_1[] = _( +static const u8 DexDescription_Exploud_1[] = _( "EXPLOUD communicates its feelings to\n" "the others by emitting whistle-like\n" "sounds from the tubes on its body."); -const u8 DexDescription_Exploud_2[] = _( +static const u8 DexDescription_Exploud_2[] = _( "This POKéMON only raises its voice when\n" "it is in battle."); #else -const u8 DexDescription_Exploud_1[] = _( +static const u8 DexDescription_Exploud_1[] = _( "EXPLOUD triggers earthquakes with the\n" "tremors it creates by bellowing. If this\n" "POKéMON violently inhales from the"); -const u8 DexDescription_Exploud_2[] = _( +static const u8 DexDescription_Exploud_2[] = _( "ports on its body, it’s a sign that it is\n" "preparing to let loose a huge bellow."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Makuhita_1[] = _( +static const u8 DexDescription_Makuhita_1[] = _( "MAKUHITA has a tireless spirit -\n" "it will never give up hope. It eats a lot\n" "of food, gets plenty of sleep, and it"); -const u8 DexDescription_Makuhita_2[] = _( +static const u8 DexDescription_Makuhita_2[] = _( "trains very rigorously. By living that\n" "way, this POKéMON packs its body with\n" "energy."); #else -const u8 DexDescription_Makuhita_1[] = _( +static const u8 DexDescription_Makuhita_1[] = _( "MAKUHITA is tenacious - it will keep\n" "getting up and attacking its foe\n" "however many times it is knocked down."); -const u8 DexDescription_Makuhita_2[] = _( +static const u8 DexDescription_Makuhita_2[] = _( "Every time it gets back up, this\n" "POKéMON stores more energy in its body\n" "for evolving."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Hariyama_1[] = _( +static const u8 DexDescription_Hariyama_1[] = _( "HARIYAMA’s thick body may appear fat,\n" "but it is actually a hunk of solid muscle.\n" "If this POKéMON bears down and"); -const u8 DexDescription_Hariyama_2[] = _( +static const u8 DexDescription_Hariyama_2[] = _( "tightens all its muscles, its body\n" "becomes as hard as a rock."); #else -const u8 DexDescription_Hariyama_1[] = _( +static const u8 DexDescription_Hariyama_1[] = _( "HARIYAMA practices its straight-arm\n" "slaps in any number of locations.\n" "One hit of this POKéMON’s powerful,"); -const u8 DexDescription_Hariyama_2[] = _( +static const u8 DexDescription_Hariyama_2[] = _( "openhanded, straight-arm punches\n" "could snap a telephone pole in two."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Azurill_1[] = _( +static const u8 DexDescription_Azurill_1[] = _( "AZURILL’s tail is large and bouncy.\n" "It is packed full of the nutrients this\n" "POKéMON needs to grow."); -const u8 DexDescription_Azurill_2[] = _( +static const u8 DexDescription_Azurill_2[] = _( "AZURILL can be seen bouncing and\n" "playing on its big, rubbery tail."); #else -const u8 DexDescription_Azurill_1[] = _( +static const u8 DexDescription_Azurill_1[] = _( "AZURILL spins its tail as if it were a\n" "lasso, then hurls it far. The momentum\n" "of the throw sends its body flying, too."); -const u8 DexDescription_Azurill_2[] = _( +static const u8 DexDescription_Azurill_2[] = _( "Using this unique action, one of these\n" "POKéMON managed to hurl itself a record\n" "33 feet."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Nosepass_1[] = _( +static const u8 DexDescription_Nosepass_1[] = _( "NOSEPASS had been said to be completely\n" "unmoving, with its magnetic nose\n" "pointed due north."); -const u8 DexDescription_Nosepass_2[] = _( +static const u8 DexDescription_Nosepass_2[] = _( "However, close observation has revealed\n" "that the POKéMON actually moves by a\n" "little over 3/8 of an inch every year."); #else -const u8 DexDescription_Nosepass_1[] = _( +static const u8 DexDescription_Nosepass_1[] = _( "NOSEPASS’s magnetic nose is always\n" "pointed to the north. If two of these\n" "POKéMON meet, they cannot turn"); -const u8 DexDescription_Nosepass_2[] = _( +static const u8 DexDescription_Nosepass_2[] = _( "their faces to each other when they\n" "are close because their magnetic noses\n" "repel one another."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Skitty_1[] = _( +static const u8 DexDescription_Skitty_1[] = _( "SKITTY is known to chase around\n" "playfully after its own tail. In the wild,\n" "this POKéMON lives in holes in the trees"); -const u8 DexDescription_Skitty_2[] = _( +static const u8 DexDescription_Skitty_2[] = _( "of forests. It is very popular as a pet\n" "because of its adorable looks."); #else -const u8 DexDescription_Skitty_1[] = _( +static const u8 DexDescription_Skitty_1[] = _( "SKITTY has the habit of becoming\n" "fascinated by moving objects and\n" "chasing them around."); -const u8 DexDescription_Skitty_2[] = _( +static const u8 DexDescription_Skitty_2[] = _( "This POKéMON is known to chase after\n" "its own tail and become dizzy."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Delcatty_1[] = _( +static const u8 DexDescription_Delcatty_1[] = _( "DELCATTY sleeps anywhere it wants\n" "without keeping a permanent nest.\n" "If other POKéMON approach it as it"); -const u8 DexDescription_Delcatty_2[] = _( +static const u8 DexDescription_Delcatty_2[] = _( "sleeps, this POKéMON will never fight -\n" "it will just move away somewhere else."); #else -const u8 DexDescription_Delcatty_1[] = _( +static const u8 DexDescription_Delcatty_1[] = _( "DELCATTY prefers to live an unfettered\n" "existence in which it can do as it\n" "pleases at its own pace."); -const u8 DexDescription_Delcatty_2[] = _( +static const u8 DexDescription_Delcatty_2[] = _( "Because this POKéMON eats and sleeps\n" "whenever it decides, its daily routines\n" "are completely random."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Sableye_1[] = _( +static const u8 DexDescription_Sableye_1[] = _( "SABLEYE digs the ground with sharpened\n" "claws to find rocks that it eats.\n" "Substances in the eaten rocks"); -const u8 DexDescription_Sableye_2[] = _( +static const u8 DexDescription_Sableye_2[] = _( "crystallize and rise up to the POKéMON’s\n" "body surface."); #else -const u8 DexDescription_Sableye_1[] = _( +static const u8 DexDescription_Sableye_1[] = _( "SABLEYE lead quiet lives deep inside\n" "caverns. They are feared, however,\n" "because these POKéMON are thought to"); -const u8 DexDescription_Sableye_2[] = _( +static const u8 DexDescription_Sableye_2[] = _( "steal the spirits of people when their\n" "eyes burn with a sinister glow in the\n" "darkness."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Mawile_1[] = _( +static const u8 DexDescription_Mawile_1[] = _( "Don’t be taken in by this POKéMON’s\n" "cute face - it’s very dangerous. MAWILE\n" "fools the foe into letting down its"); -const u8 DexDescription_Mawile_2[] = _( +static const u8 DexDescription_Mawile_2[] = _( "guard, then chomps down with its\n" "massive jaws. The steel jaws are really\n" "horns that have been transformed."); #else #if REVISION >= 1 -const u8 DexDescription_Mawile_1[] = _( +static const u8 DexDescription_Mawile_1[] = _( "MAWILE’s huge jaws are actually steel\n" "horns that have been transformed.\n" "Its docile-looking face serves to lull"); -const u8 DexDescription_Mawile_2[] = _( +static const u8 DexDescription_Mawile_2[] = _( "its foe into letting down its guard.\n" "When the foe least expects it, MAWILE\n" // Correct spelling of MAWILE "chomps it with its gaping jaws."); #else -const u8 DexDescription_Mawile_1[] = _( +static const u8 DexDescription_Mawile_1[] = _( "MAWHILE’s huge jaws are actually steel\n" "horns that have been transformed.\n" "Its docile-looking face serves to lull"); -const u8 DexDescription_Mawile_2[] = _( +static const u8 DexDescription_Mawile_2[] = _( "its foe into letting down its guard.\n" "When the foe least expects it, MAWHILE\n" "chomps it with its gaping jaws."); @@ -3832,1564 +3832,1564 @@ const u8 DexDescription_Mawile_2[] = _( #endif #ifdef SAPPHIRE -const u8 DexDescription_Aron_1[] = _( +static const u8 DexDescription_Aron_1[] = _( "ARON has a body of steel.\n" "With one all-out charge, this POKéMON\n" "can demolish even a heavy dump truck."); -const u8 DexDescription_Aron_2[] = _( +static const u8 DexDescription_Aron_2[] = _( "The destroyed dump truck then becomes\n" "a handy meal for the POKéMON."); #else -const u8 DexDescription_Aron_1[] = _( +static const u8 DexDescription_Aron_1[] = _( "This POKéMON has a body of steel.\n" "To make its body, ARON feeds on\n" "iron ore that it digs from mountains."); -const u8 DexDescription_Aron_2[] = _( +static const u8 DexDescription_Aron_2[] = _( "Occasionally, it causes major trouble by\n" "eating bridges and rails."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Lairon_1[] = _( +static const u8 DexDescription_Lairon_1[] = _( "LAIRON feeds on iron contained in\n" "rocks and water. It makes its nest on\n" "mountains where iron ore is buried."); -const u8 DexDescription_Lairon_2[] = _( +static const u8 DexDescription_Lairon_2[] = _( "As a result, the POKéMON often clashes\n" "with humans mining the iron ore."); #else -const u8 DexDescription_Lairon_1[] = _( +static const u8 DexDescription_Lairon_1[] = _( "LAIRON tempers its steel body by\n" "drinking highly nutritious mineral\n" "springwater until it is bloated."); -const u8 DexDescription_Lairon_2[] = _( +static const u8 DexDescription_Lairon_2[] = _( "This POKéMON makes its nest close to\n" "springs of delicious water."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Aggron_1[] = _( +static const u8 DexDescription_Aggron_1[] = _( "AGGRON is surprisingly protective\n" "of its environment. If its mountain\n" "is ravaged by a landslide or a fire, this"); -const u8 DexDescription_Aggron_2[] = _( +static const u8 DexDescription_Aggron_2[] = _( "POKéMON will haul topsoil to the area,\n" "plant trees, and beautifully restore its\n" "own territory."); #else -const u8 DexDescription_Aggron_1[] = _( +static const u8 DexDescription_Aggron_1[] = _( "AGGRON claims an entire mountain as its\n" "own territory. It mercilessly beats up\n" "anything that violates its environment."); -const u8 DexDescription_Aggron_2[] = _( +static const u8 DexDescription_Aggron_2[] = _( "This POKéMON vigilantly patrols its\n" "territory at all times."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Meditite_1[] = _( +static const u8 DexDescription_Meditite_1[] = _( "MEDITITE heightens its inner energy\n" "through meditation. It survives on\n" "just one berry a day."); -const u8 DexDescription_Meditite_2[] = _( +static const u8 DexDescription_Meditite_2[] = _( "Minimal eating is another aspect of\n" "this POKéMON’s training."); #else -const u8 DexDescription_Meditite_1[] = _( +static const u8 DexDescription_Meditite_1[] = _( "MEDITITE undertakes rigorous mental\n" "training deep in the mountains.\n" "However, whenever it meditates, this"); -const u8 DexDescription_Meditite_2[] = _( +static const u8 DexDescription_Meditite_2[] = _( "POKéMON always loses its concentration\n" "and focus. As a result, its training\n" "never ends."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Medicham_1[] = _( +static const u8 DexDescription_Medicham_1[] = _( "Through the power of meditation,\n" "MEDICHAM developed its sixth sense.\n" "It gained the ability to use"); -const u8 DexDescription_Medicham_2[] = _( +static const u8 DexDescription_Medicham_2[] = _( "psychokinetic powers. This POKéMON is\n" "known to meditate for a whole month\n" "without eating."); #else -const u8 DexDescription_Medicham_1[] = _( +static const u8 DexDescription_Medicham_1[] = _( "It is said that through meditation,\n" "MEDICHAM heightens energy inside\n" "its body and sharpens its sixth sense."); -const u8 DexDescription_Medicham_2[] = _( +static const u8 DexDescription_Medicham_2[] = _( "This POKéMON hides its presence by\n" "merging itself with fields and\n" "mountains."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Electrike_1[] = _( +static const u8 DexDescription_Electrike_1[] = _( "ELECTRIKE runs faster than the human\n" "eye can follow. The friction from\n" "running is converted into electricity,"); -const u8 DexDescription_Electrike_2[] = _( +static const u8 DexDescription_Electrike_2[] = _( "which is then stored in this POKéMON’s\n" "fur."); #else -const u8 DexDescription_Electrike_1[] = _( +static const u8 DexDescription_Electrike_1[] = _( "ELECTRIKE stores electricity in its\n" "long body hair. This POKéMON stimulates\n" "its leg muscles with electric charges."); -const u8 DexDescription_Electrike_2[] = _( +static const u8 DexDescription_Electrike_2[] = _( "These jolts of power give its legs\n" "explosive acceleration performance."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Manectric_1[] = _( +static const u8 DexDescription_Manectric_1[] = _( "MANECTRIC discharges strong\n" "electricity from its mane. The mane is\n" "used for collecting electricity in the"); -const u8 DexDescription_Manectric_2[] = _( +static const u8 DexDescription_Manectric_2[] = _( "atmosphere. This POKéMON creates\n" "thunderclouds above its head."); #else -const u8 DexDescription_Manectric_1[] = _( +static const u8 DexDescription_Manectric_1[] = _( "MANECTRIC is constantly discharging\n" "electricity from its mane. The sparks\n" "sometimes ignite forest fires."); -const u8 DexDescription_Manectric_2[] = _( +static const u8 DexDescription_Manectric_2[] = _( "When it enters a battle, this POKéMON\n" "creates thunderclouds."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Plusle_1[] = _( +static const u8 DexDescription_Plusle_1[] = _( "When PLUSLE is cheering on its partner,\n" "it flashes with electric sparks from all\n" "over its body."); -const u8 DexDescription_Plusle_2[] = _( +static const u8 DexDescription_Plusle_2[] = _( "If its partner loses, this POKéMON cries\n" "loudly."); #else -const u8 DexDescription_Plusle_1[] = _( +static const u8 DexDescription_Plusle_1[] = _( "PLUSLE always acts as a cheerleader\n" "for its partners. Whenever a teammate\n" "puts out a good effort in battle, this"); -const u8 DexDescription_Plusle_2[] = _( +static const u8 DexDescription_Plusle_2[] = _( "POKéMON shorts out its body to create\n" "the crackling noises of sparks to show\n" "its joy."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Minun_1[] = _( +static const u8 DexDescription_Minun_1[] = _( "MINUN loves to cheer on its partner in\n" "battle. It gives off sparks from its\n" "body while it is doing so."); -const u8 DexDescription_Minun_2[] = _( +static const u8 DexDescription_Minun_2[] = _( "If its partner is in trouble, this\n" "POKéMON gives off increasing amounts\n" "of sparks."); #else -const u8 DexDescription_Minun_1[] = _( +static const u8 DexDescription_Minun_1[] = _( "MINUN is more concerned about cheering\n" "on its partners than its own safety.\n" "It shorts out the electricity in its"); -const u8 DexDescription_Minun_2[] = _( +static const u8 DexDescription_Minun_2[] = _( "body to create brilliant showers of\n" "sparks to cheer on its teammates."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Volbeat_1[] = _( +static const u8 DexDescription_Volbeat_1[] = _( "VOLBEAT’s tail glows like a lightbulb.\n" "With other VOLBEAT, it uses its tail to\n" "draw geometric shapes in the night sky."); -const u8 DexDescription_Volbeat_2[] = _( +static const u8 DexDescription_Volbeat_2[] = _( "This POKéMON loves the sweet aroma\n" "given off by ILLUMISE."); #else -const u8 DexDescription_Volbeat_1[] = _( +static const u8 DexDescription_Volbeat_1[] = _( "With the arrival of night, VOLBEAT emits\n" "light from its tail. It communicates with\n" "others by adjusting the intensity and"); -const u8 DexDescription_Volbeat_2[] = _( +static const u8 DexDescription_Volbeat_2[] = _( "flashing of its light.\n" "This POKéMON is attracted by the sweet\n" "aroma of ILLUMISE."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Illumise_1[] = _( +static const u8 DexDescription_Illumise_1[] = _( "ILLUMISE leads a flight of illuminated\n" "VOLBEAT to draw signs in the night sky.\n" "This POKéMON is said to earn greater"); -const u8 DexDescription_Illumise_2[] = _( +static const u8 DexDescription_Illumise_2[] = _( "respect from its peers by composing\n" "more complex designs in the sky."); #else -const u8 DexDescription_Illumise_1[] = _( +static const u8 DexDescription_Illumise_1[] = _( "ILLUMISE attracts a swarm of VOLBEAT\n" "using a sweet fragrance. Once the\n" "VOLBEAT have gathered, this POKéMON"); -const u8 DexDescription_Illumise_2[] = _( +static const u8 DexDescription_Illumise_2[] = _( "leads the lit-up swarm in drawing\n" "geometric designs on the canvas of\n" "the night sky."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Roselia_1[] = _( +static const u8 DexDescription_Roselia_1[] = _( "On extremely rare occasions, a ROSELIA\n" "is said to appear with its flowers in\n" "unusual colors."); -const u8 DexDescription_Roselia_2[] = _( +static const u8 DexDescription_Roselia_2[] = _( "The thorns on this POKéMON’s head\n" "contain a vicious poison."); #else -const u8 DexDescription_Roselia_1[] = _( +static const u8 DexDescription_Roselia_1[] = _( "ROSELIA shoots sharp thorns as\n" "projectiles at any opponent that tries\n" "to steal the flowers on its arms."); -const u8 DexDescription_Roselia_2[] = _( +static const u8 DexDescription_Roselia_2[] = _( "The aroma of this POKéMON brings\n" "serenity to living things."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Gulpin_1[] = _( +static const u8 DexDescription_Gulpin_1[] = _( "Most of GULPIN’s body is made up of its\n" "stomach - its heart and brain are very\n" "small in comparison."); -const u8 DexDescription_Gulpin_2[] = _( +static const u8 DexDescription_Gulpin_2[] = _( "This POKéMON’s stomach contains\n" "special enzymes that dissolve anything."); #else -const u8 DexDescription_Gulpin_1[] = _( +static const u8 DexDescription_Gulpin_1[] = _( "Virtually all of GULPIN’s body is its\n" "stomach. As a result, it can swallow\n" "something its own size."); -const u8 DexDescription_Gulpin_2[] = _( +static const u8 DexDescription_Gulpin_2[] = _( "This POKéMON’s stomach contains a\n" "special fluid that digests anything."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Swalot_1[] = _( +static const u8 DexDescription_Swalot_1[] = _( "SWALOT has no teeth, so what it\n" "eats, it swallows whole, no matter what.\n" "Its cavernous mouth yawns widely."); -const u8 DexDescription_Swalot_2[] = _( +static const u8 DexDescription_Swalot_2[] = _( "An automobile tire could easily fit\n" "inside this POKéMON’s mouth."); #else -const u8 DexDescription_Swalot_1[] = _( +static const u8 DexDescription_Swalot_1[] = _( "When SWALOT spots prey, it spurts out\n" "a hideously toxic fluid from its pores\n" "and sprays the target."); -const u8 DexDescription_Swalot_2[] = _( +static const u8 DexDescription_Swalot_2[] = _( "Once the prey has weakened, this\n" "POKéMON gulps it down whole with its\n" "cavernous mouth."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Carvanha_1[] = _( +static const u8 DexDescription_Carvanha_1[] = _( "If anything invades CARVANHA’s\n" "territory, it will swarm and tear at the\n" "intruder with its pointed fangs."); -const u8 DexDescription_Carvanha_2[] = _( +static const u8 DexDescription_Carvanha_2[] = _( "On its own, however, this POKéMON turns\n" "suddenly timid."); #else -const u8 DexDescription_Carvanha_1[] = _( +static const u8 DexDescription_Carvanha_1[] = _( "CARVANHA’s strongly developed jaws\n" "and its sharply pointed fangs pack the\n" "destructive power to rip out boat hulls."); -const u8 DexDescription_Carvanha_2[] = _( +static const u8 DexDescription_Carvanha_2[] = _( "Many boats have been attacked and\n" "sunk by this POKéMON."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Sharpedo_1[] = _( +static const u8 DexDescription_Sharpedo_1[] = _( "SHARPEDO can swim at speeds of up to\n" "75 mph by jetting seawater out of its\n" "backside."); -const u8 DexDescription_Sharpedo_2[] = _( +static const u8 DexDescription_Sharpedo_2[] = _( "This POKéMON’s drawback is its inability\n" "to swim long distances."); #else -const u8 DexDescription_Sharpedo_1[] = _( +static const u8 DexDescription_Sharpedo_1[] = _( "Nicknamed “the bully of the sea,”\n" "SHARPEDO is widely feared.\n" "Its cruel fangs grow back immediately"); -const u8 DexDescription_Sharpedo_2[] = _( +static const u8 DexDescription_Sharpedo_2[] = _( "if they snap off.\n" "Just one of these POKéMON can\n" "thoroughly tear apart a supertanker."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Wailmer_1[] = _( +static const u8 DexDescription_Wailmer_1[] = _( "WAILMER can store water inside its body\n" "to transform itself into a ball for\n" "bouncing around on the ground."); -const u8 DexDescription_Wailmer_2[] = _( +static const u8 DexDescription_Wailmer_2[] = _( "By filling itself up with more water, this\n" "POKéMON can elevate the height of its\n" "bounces."); #else -const u8 DexDescription_Wailmer_1[] = _( +static const u8 DexDescription_Wailmer_1[] = _( "WAILMER’s nostrils are located above\n" "its eyes. This playful POKéMON loves\n" "to startle people by forcefully snorting"); -const u8 DexDescription_Wailmer_2[] = _( +static const u8 DexDescription_Wailmer_2[] = _( "out seawater it stores inside its body\n" "out of its nostrils."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Wailord_1[] = _( +static const u8 DexDescription_Wailord_1[] = _( "When chasing prey, WAILORD herds them\n" "by leaping out of the water and making\n" "a humongous splash."); -const u8 DexDescription_Wailord_2[] = _( +static const u8 DexDescription_Wailord_2[] = _( "It is breathtaking to see this POKéMON\n" "leaping out of the sea with others in\n" "its pod."); #else -const u8 DexDescription_Wailord_1[] = _( +static const u8 DexDescription_Wailord_1[] = _( "WAILORD is the largest of all identified\n" "POKéMON up to now.\n" "This giant POKéMON swims languorously"); -const u8 DexDescription_Wailord_2[] = _( +static const u8 DexDescription_Wailord_2[] = _( "in the vast open sea, eating massive\n" "amounts of food at once with its\n" "enormous mouth."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Numel_1[] = _( +static const u8 DexDescription_Numel_1[] = _( "NUMEL stores magma of almost 2,200\n" "degrees F within its body. If it gets\n" "wet, the magma cools and hardens."); -const u8 DexDescription_Numel_2[] = _( +static const u8 DexDescription_Numel_2[] = _( "In that event, the POKéMON’s body\n" "grows heavy and its movements become\n" "sluggish."); #else -const u8 DexDescription_Numel_1[] = _( +static const u8 DexDescription_Numel_1[] = _( "NUMEL is extremely dull witted - it\n" "doesn’t notice being hit. However, it\n" "can’t stand hunger for even a second."); -const u8 DexDescription_Numel_2[] = _( +static const u8 DexDescription_Numel_2[] = _( "This POKéMON’s body is a seething\n" "cauldron of boiling magma."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Camerupt_1[] = _( +static const u8 DexDescription_Camerupt_1[] = _( "The humps on CAMERUPT’s back are\n" "formed by a transformation of its\n" "bones. They sometimes blast out molten"); -const u8 DexDescription_Camerupt_2[] = _( +static const u8 DexDescription_Camerupt_2[] = _( "magma. This POKéMON apparently erupts\n" "often when it is enraged."); #else -const u8 DexDescription_Camerupt_1[] = _( +static const u8 DexDescription_Camerupt_1[] = _( "CAMERUPT has a volcano inside its body.\n" "Magma of 18,000 degrees F courses\n" "through its body."); -const u8 DexDescription_Camerupt_2[] = _( +static const u8 DexDescription_Camerupt_2[] = _( "Occasionally, the humps on this\n" "POKéMON’s back erupt, spewing the\n" "superheated magma."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Torkoal_1[] = _( +static const u8 DexDescription_Torkoal_1[] = _( "TORKOAL generates energy by burning\n" "coal. It grows weaker as the fire\n" "dies down."); -const u8 DexDescription_Torkoal_2[] = _( +static const u8 DexDescription_Torkoal_2[] = _( "When it is preparing for battle, this\n" "POKéMON burns more coal."); #else -const u8 DexDescription_Torkoal_1[] = _( +static const u8 DexDescription_Torkoal_1[] = _( "TORKOAL digs through mountains in\n" "search of coal. If it finds some, it fills\n" "hollow spaces on its shell with the coal"); -const u8 DexDescription_Torkoal_2[] = _( +static const u8 DexDescription_Torkoal_2[] = _( "and burns it.\n" "If it is attacked, this POKéMON spouts\n" "thick black smoke to beat a retreat."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Spoink_1[] = _( +static const u8 DexDescription_Spoink_1[] = _( "SPOINK keeps a pearl on top of its head.\n" "The pearl functions to amplify this\n" "POKéMON’s psychokinetic powers."); -const u8 DexDescription_Spoink_2[] = _( +static const u8 DexDescription_Spoink_2[] = _( "It is therefore on a constant search\n" "for a bigger pearl."); #else -const u8 DexDescription_Spoink_1[] = _( +static const u8 DexDescription_Spoink_1[] = _( "SPOINK bounces around on its tail.\n" "The shock of its bouncing makes its\n" "heart pump. As a result, this POKéMON"); -const u8 DexDescription_Spoink_2[] = _( +static const u8 DexDescription_Spoink_2[] = _( "cannot afford to stop bouncing - if it\n" "stops, its heart will stop."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Grumpig_1[] = _( +static const u8 DexDescription_Grumpig_1[] = _( "GRUMPIG uses the black pearls on its\n" "body to wield its fantastic powers.\n" "When it is doing so, it dances bizarrely."); -const u8 DexDescription_Grumpig_2[] = _( +static const u8 DexDescription_Grumpig_2[] = _( "This POKéMON’s black pearls are valuable\n" "as works of art."); #else -const u8 DexDescription_Grumpig_1[] = _( +static const u8 DexDescription_Grumpig_1[] = _( "GRUMPIG uses the black pearls on its\n" "body to amplify its psychic power waves\n" "for gaining total control over its foe."); -const u8 DexDescription_Grumpig_2[] = _( +static const u8 DexDescription_Grumpig_2[] = _( "When this POKéMON uses its special\n" "power, its snorting breath grows\n" "labored."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Spinda_1[] = _( +static const u8 DexDescription_Spinda_1[] = _( "No two SPINDA are said to have\n" "identical spot patterns on their hides.\n" "This POKéMON moves in a curious manner"); -const u8 DexDescription_Spinda_2[] = _( +static const u8 DexDescription_Spinda_2[] = _( "as if it is stumbling in dizziness.\n" "Its lurching movements can cause the\n" "opponent to become confused."); #else -const u8 DexDescription_Spinda_1[] = _( +static const u8 DexDescription_Spinda_1[] = _( "All the SPINDA that exist in the\n" "world are said to have utterly unique\n" "spot patterns."); -const u8 DexDescription_Spinda_2[] = _( +static const u8 DexDescription_Spinda_2[] = _( "The shaky, tottering steps of this\n" "POKéMON give it the appearance of\n" "dancing."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Trapinch_1[] = _( +static const u8 DexDescription_Trapinch_1[] = _( "TRAPINCH is a patient hunter. It digs\n" "an inescapable pit in a desert and waits\n" "for its prey to come tumbling down."); -const u8 DexDescription_Trapinch_2[] = _( +static const u8 DexDescription_Trapinch_2[] = _( "This POKéMON can go a whole week\n" "without access to any water."); #else -const u8 DexDescription_Trapinch_1[] = _( +static const u8 DexDescription_Trapinch_1[] = _( "TRAPINCH’s nest is a sloped, bowl-like\n" "pit dug in sand. This POKéMON patiently\n" "waits for prey to tumble down the pit."); -const u8 DexDescription_Trapinch_2[] = _( +static const u8 DexDescription_Trapinch_2[] = _( "Its giant jaws have enough strength\n" "to crush even boulders."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Vibrava_1[] = _( +static const u8 DexDescription_Vibrava_1[] = _( "VIBRAVA’s wings have not yet\n" "completed the process of growing.\n" "Rather than flying long distances,"); -const u8 DexDescription_Vibrava_2[] = _( +static const u8 DexDescription_Vibrava_2[] = _( "they are more useful for generating\n" "ultrasonic waves by vibrating."); #else -const u8 DexDescription_Vibrava_1[] = _( +static const u8 DexDescription_Vibrava_1[] = _( "To make prey faint, VIBRAVA generates\n" "ultrasonic waves by vigorously making\n" "its two wings vibrate."); -const u8 DexDescription_Vibrava_2[] = _( +static const u8 DexDescription_Vibrava_2[] = _( "This POKéMON’s ultrasonic waves are so\n" "powerful, they can bring on headaches\n" "in people."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Flygon_1[] = _( +static const u8 DexDescription_Flygon_1[] = _( "FLYGON whips up a sandstorm by\n" "flapping its wings. The wings create a\n" "series of notes that sound like singing."); -const u8 DexDescription_Flygon_2[] = _( +static const u8 DexDescription_Flygon_2[] = _( "Because the “singing” is the only thing\n" "that can be heard in a sandstorm, this\n" "POKéMON is said to be the desert spirit."); #else -const u8 DexDescription_Flygon_1[] = _( +static const u8 DexDescription_Flygon_1[] = _( "FLYGON is nicknamed “the elemental \n" "spirit of the desert.” Because its\n" "flapping wings whip up a cloud of sand,"); -const u8 DexDescription_Flygon_2[] = _( +static const u8 DexDescription_Flygon_2[] = _( "this POKéMON is always enveloped in a\n" "sandstorm while flying."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Cacnea_1[] = _( +static const u8 DexDescription_Cacnea_1[] = _( "The more arid and harsh the\n" "environment, the more pretty and\n" "fragrant a flower CACNEA grows."); -const u8 DexDescription_Cacnea_2[] = _( +static const u8 DexDescription_Cacnea_2[] = _( "This POKéMON battles by wildly swinging\n" "its thorny arms."); #else -const u8 DexDescription_Cacnea_1[] = _( +static const u8 DexDescription_Cacnea_1[] = _( "CACNEA lives in arid locations such\n" "as deserts. It releases a strong aroma\n" "from its flower to attract prey."); -const u8 DexDescription_Cacnea_2[] = _( +static const u8 DexDescription_Cacnea_2[] = _( "When prey comes near, this POKéMON\n" "shoots sharp thorns from its body to\n" "bring the victim down."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Cacturne_1[] = _( +static const u8 DexDescription_Cacturne_1[] = _( "If a traveler is going through a desert\n" "in the thick of night, CACTURNE\n" "will follow in a ragtag group."); -const u8 DexDescription_Cacturne_2[] = _( +static const u8 DexDescription_Cacturne_2[] = _( "The POKéMON are biding their time,\n" "waiting for the traveler to tire and\n" "become incapable of moving."); #else -const u8 DexDescription_Cacturne_1[] = _( +static const u8 DexDescription_Cacturne_1[] = _( "During the daytime, CACTURNE remains\n" "unmoving so that it does not lose any\n" "moisture to the harsh desert sun."); -const u8 DexDescription_Cacturne_2[] = _( +static const u8 DexDescription_Cacturne_2[] = _( "This POKéMON becomes active at night\n" "when the temperature drops."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Swablu_1[] = _( +static const u8 DexDescription_Swablu_1[] = _( "SWABLU loves to make things clean.\n" "If it spots something dirty, it will wipe\n" "and polish it with its cottony wings."); -const u8 DexDescription_Swablu_2[] = _( +static const u8 DexDescription_Swablu_2[] = _( "If its wings become dirty, this POKéMON\n" "finds a stream and showers itself."); #else -const u8 DexDescription_Swablu_1[] = _( +static const u8 DexDescription_Swablu_1[] = _( "SWABLU has light and fluffy wings that\n" "are like cottony clouds. This POKéMON\n" "is not frightened of people."); -const u8 DexDescription_Swablu_2[] = _( +static const u8 DexDescription_Swablu_2[] = _( "It lands on the heads of people and\n" "sits there like a cotton-fluff hat."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Altaria_1[] = _( +static const u8 DexDescription_Altaria_1[] = _( "ALTARIA sings in a gorgeous soprano.\n" "Its wings are like cotton clouds.\n" "This POKéMON catches updrafts with its"); -const u8 DexDescription_Altaria_2[] = _( +static const u8 DexDescription_Altaria_2[] = _( "buoyant wings and soars way up into\n" "the wild blue yonder."); #else -const u8 DexDescription_Altaria_1[] = _( +static const u8 DexDescription_Altaria_1[] = _( "ALTARIA dances and wheels through the\n" "sky among billowing, cotton-like clouds.\n" "By singing melodies in its crystal-clear"); -const u8 DexDescription_Altaria_2[] = _( +static const u8 DexDescription_Altaria_2[] = _( "voice, this POKéMON makes its listeners\n" "experience dreamy wonderment."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Zangoose_1[] = _( +static const u8 DexDescription_Zangoose_1[] = _( "ZANGOOSE usually stays on all fours,\n" "but when angered, it gets up on its\n" "hind legs and extends its claws."); -const u8 DexDescription_Zangoose_2[] = _( +static const u8 DexDescription_Zangoose_2[] = _( "This POKéMON shares a bitter rivalry\n" "with SEVIPER that dates back over\n" "generations."); #else -const u8 DexDescription_Zangoose_1[] = _( +static const u8 DexDescription_Zangoose_1[] = _( "Memories of battling its arch-rival\n" "SEVIPER are etched into every cell of\n" "ZANGOOSE’s body."); -const u8 DexDescription_Zangoose_2[] = _( +static const u8 DexDescription_Zangoose_2[] = _( "This POKéMON adroitly dodges attacks\n" "with incredible agility."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Seviper_1[] = _( +static const u8 DexDescription_Seviper_1[] = _( "SEVIPER’s swordlike tail serves two\n" "purposes - it slashes foes and douses\n" "them with secreted poison."); -const u8 DexDescription_Seviper_2[] = _( +static const u8 DexDescription_Seviper_2[] = _( "This POKéMON will not give up its long-\n" "running blood feud with ZANGOOSE."); #else -const u8 DexDescription_Seviper_1[] = _( +static const u8 DexDescription_Seviper_1[] = _( "SEVIPER shares a generations-long\n" "feud with ZANGOOSE. The scars on its\n" "body are evidence of vicious battles."); -const u8 DexDescription_Seviper_2[] = _( +static const u8 DexDescription_Seviper_2[] = _( "This POKéMON attacks using its sword-\n" "edged tail."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Lunatone_1[] = _( +static const u8 DexDescription_Lunatone_1[] = _( "LUNATONE becomes active around the\n" "time of the full moon. Instead of\n" "walking, it moves by floating in midair."); -const u8 DexDescription_Lunatone_2[] = _( +static const u8 DexDescription_Lunatone_2[] = _( "The POKéMON’s intimidating red eyes\n" "cause all those who see it to become\n" "transfixed with fear."); #else -const u8 DexDescription_Lunatone_1[] = _( +static const u8 DexDescription_Lunatone_1[] = _( "LUNATONE was discovered at a location\n" "where a meteorite fell. As a result, some\n" "people theorize that this POKéMON"); -const u8 DexDescription_Lunatone_2[] = _( +static const u8 DexDescription_Lunatone_2[] = _( "came from space. However, no one has\n" "been able to prove this theory so far."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Solrock_1[] = _( +static const u8 DexDescription_Solrock_1[] = _( "Sunlight is the source of SOLROCK’s\n" "power. It is said to possess the ability\n" "to read the emotions of others."); -const u8 DexDescription_Solrock_2[] = _( +static const u8 DexDescription_Solrock_2[] = _( "This POKéMON gives off intense heat\n" "while rotating its body."); #else -const u8 DexDescription_Solrock_1[] = _( +static const u8 DexDescription_Solrock_1[] = _( "SOLROCK is a new species of POKéMON\n" "that is said to have fallen from space.\n" "It floats in air and moves silently."); -const u8 DexDescription_Solrock_2[] = _( +static const u8 DexDescription_Solrock_2[] = _( "In battle, this POKéMON releases\n" "intensely bright light."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Barboach_1[] = _( +static const u8 DexDescription_Barboach_1[] = _( "BARBOACH’s body is covered with a\n" "slimy film. If a foe grabs it, this\n" "POKéMON just slips out of the enemy’s"); -const u8 DexDescription_Barboach_2[] = _( +static const u8 DexDescription_Barboach_2[] = _( "grip.\n" "This POKéMON grows weak if the slimy\n" "coating dries up."); #else -const u8 DexDescription_Barboach_1[] = _( +static const u8 DexDescription_Barboach_1[] = _( "BARBOACH’s sensitive whiskers serve\n" "as a superb radar system.\n" "This POKéMON hides in mud, leaving only"); -const u8 DexDescription_Barboach_2[] = _( +static const u8 DexDescription_Barboach_2[] = _( "its two whiskers exposed while it waits\n" "for prey to come along."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Whiscash_1[] = _( +static const u8 DexDescription_Whiscash_1[] = _( "If WHISCASH goes on a wild rampage,\n" "it sets off a quake-like tremor with a\n" "radius of over three miles."); -const u8 DexDescription_Whiscash_2[] = _( +static const u8 DexDescription_Whiscash_2[] = _( "This POKéMON has the ability to predict\n" "real earthquakes."); #else -const u8 DexDescription_Whiscash_1[] = _( +static const u8 DexDescription_Whiscash_1[] = _( "WHISCASH is extremely territorial.\n" "Just one of these POKéMON will claim a\n" "large pond as its exclusive territory."); -const u8 DexDescription_Whiscash_2[] = _( +static const u8 DexDescription_Whiscash_2[] = _( "If a foe approaches it, it thrashes\n" "about and triggers a massive\n" "earthquake."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Corphish_1[] = _( +static const u8 DexDescription_Corphish_1[] = _( "CORPHISH catches prey with its sharp\n" "claws. It has no likes or dislikes when it\n" "comes to food - it will eat anything."); -const u8 DexDescription_Corphish_2[] = _( +static const u8 DexDescription_Corphish_2[] = _( "This POKéMON has no trouble living in\n" "filthy water."); #else -const u8 DexDescription_Corphish_1[] = _( +static const u8 DexDescription_Corphish_1[] = _( "CORPHISH were originally foreign\n" "POKéMON that were imported as pets.\n" "They eventually turned up in the wild."); -const u8 DexDescription_Corphish_2[] = _( +static const u8 DexDescription_Corphish_2[] = _( "This POKéMON is very hardy and has\n" "greatly increased its population."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Crawdaunt_1[] = _( +static const u8 DexDescription_Crawdaunt_1[] = _( "CRAWDAUNT molts (sheds) its shell\n" "regularly. Immediately after molting,\n" "its shell is soft and tender."); -const u8 DexDescription_Crawdaunt_2[] = _( +static const u8 DexDescription_Crawdaunt_2[] = _( "Until the shell hardens, this POKéMON\n" "hides in its streambed burrow to avoid\n" "attack from its foes."); #else -const u8 DexDescription_Crawdaunt_1[] = _( +static const u8 DexDescription_Crawdaunt_1[] = _( "CRAWDAUNT has an extremely violent\n" "nature that compels it to challenge\n" "other living things to battle."); -const u8 DexDescription_Crawdaunt_2[] = _( +static const u8 DexDescription_Crawdaunt_2[] = _( "Other life-forms refuse to live in\n" "ponds inhabited by this POKéMON,\n" "making them desolate places."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Baltoy_1[] = _( +static const u8 DexDescription_Baltoy_1[] = _( "As soon as it spots others of its kind,\n" "BALTOY congregates with them and\n" "then begins crying noisily in unison."); -const u8 DexDescription_Baltoy_2[] = _( +static const u8 DexDescription_Baltoy_2[] = _( "This POKéMON sleeps while cleverly\n" "balancing itself on its one foot."); #else -const u8 DexDescription_Baltoy_1[] = _( +static const u8 DexDescription_Baltoy_1[] = _( "BALTOY moves while spinning around on\n" "its one foot. Primitive wall paintings\n" "depicting this POKéMON living among"); -const u8 DexDescription_Baltoy_2[] = _( +static const u8 DexDescription_Baltoy_2[] = _( "people were discovered in some ancient\n" "ruins."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Claydol_1[] = _( +static const u8 DexDescription_Claydol_1[] = _( "CLAYDOL is an enigma that appeared\n" "from a clay statue made by an ancient\n" "civilization dating back 20,000 years."); -const u8 DexDescription_Claydol_2[] = _( +static const u8 DexDescription_Claydol_2[] = _( "This POKéMON shoots beams from both\n" "its hands."); #else -const u8 DexDescription_Claydol_1[] = _( +static const u8 DexDescription_Claydol_1[] = _( "CLAYDOL are said to be dolls of mud made\n" "by primitive humans and brought to life\n" "by exposure to a mysterious ray."); -const u8 DexDescription_Claydol_2[] = _( +static const u8 DexDescription_Claydol_2[] = _( "This POKéMON moves about while\n" "levitating."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Lileep_1[] = _( +static const u8 DexDescription_Lileep_1[] = _( "LILEEP is an ancient POKéMON that was\n" "regenerated from a fossil. It remains\n" "permanently anchored to a rock."); -const u8 DexDescription_Lileep_2[] = _( +static const u8 DexDescription_Lileep_2[] = _( "From its immobile perch, this POKéMON\n" "intently scans for prey with its two\n" "eyes."); #else -const u8 DexDescription_Lileep_1[] = _( +static const u8 DexDescription_Lileep_1[] = _( "LILEEP became extinct approximately\n" "a hundred million years ago.\n" "This ancient POKéMON attaches itself"); -const u8 DexDescription_Lileep_2[] = _( +static const u8 DexDescription_Lileep_2[] = _( "to a rock on the seafloor and catches\n" "approaching prey using tentacles \n" "shaped like flower petals."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Cradily_1[] = _( +static const u8 DexDescription_Cradily_1[] = _( "CRADILY’s body serves as an anchor,\n" "preventing it from being washed away in\n" "rough seas."); -const u8 DexDescription_Cradily_2[] = _( +static const u8 DexDescription_Cradily_2[] = _( "This POKéMON secretes a strong\n" "digestive fluid from its tentacles."); #else -const u8 DexDescription_Cradily_1[] = _( +static const u8 DexDescription_Cradily_1[] = _( "CRADILY roams around the ocean floor\n" "in search of food. This POKéMON freely\n" "extends its tree trunk-like neck and"); -const u8 DexDescription_Cradily_2[] = _( +static const u8 DexDescription_Cradily_2[] = _( "captures unwary prey using its eight\n" "tentacles."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Anorith_1[] = _( +static const u8 DexDescription_Anorith_1[] = _( "ANORITH is said to be a type of \n" "POKéMON predecessor, with eight wings\n" "at the sides of its body."); -const u8 DexDescription_Anorith_2[] = _( +static const u8 DexDescription_Anorith_2[] = _( "This POKéMON swam in the primordial sea\n" "by undulating these eight wings."); #else -const u8 DexDescription_Anorith_1[] = _( +static const u8 DexDescription_Anorith_1[] = _( "ANORITH was regenerated from a\n" "prehistoric fossil. This primitive\n" "POKéMON once lived in warm seas."); -const u8 DexDescription_Anorith_2[] = _( +static const u8 DexDescription_Anorith_2[] = _( "It grips its prey firmly between its\n" "two large claws."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Armaldo_1[] = _( +static const u8 DexDescription_Armaldo_1[] = _( "ARMALDO is a POKéMON species that\n" "became extinct in prehistoric times.\n" "This POKéMON is said to have walked on"); -const u8 DexDescription_Armaldo_2[] = _( +static const u8 DexDescription_Armaldo_2[] = _( "its hind legs, which would have been\n" "more convenient for life on land."); #else -const u8 DexDescription_Armaldo_1[] = _( +static const u8 DexDescription_Armaldo_1[] = _( "ARMALDO’s tough armor makes all attacks\n" "bounce off. This POKéMON’s two\n" "enormous claws can be freely extended"); -const u8 DexDescription_Armaldo_2[] = _( +static const u8 DexDescription_Armaldo_2[] = _( "or contracted. They have the power to\n" "punch right through a steel slab."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Feebas_1[] = _( +static const u8 DexDescription_Feebas_1[] = _( "While FEEBAS’s body is in tatters,\n" "it has a hardy and tenacious life force\n" "that enables it to live anywhere."); -const u8 DexDescription_Feebas_2[] = _( +static const u8 DexDescription_Feebas_2[] = _( "However, this POKéMON is also slow and\n" "dimwitted, making it an easy catch."); #else -const u8 DexDescription_Feebas_1[] = _( +static const u8 DexDescription_Feebas_1[] = _( "FEEBAS’s fins are ragged and\n" "tattered from the start of its life.\n" "Because of its shoddy appearance, this"); -const u8 DexDescription_Feebas_2[] = _( +static const u8 DexDescription_Feebas_2[] = _( "POKéMON is largely ignored.\n" "It is capable of living in both the sea\n" "and in rivers."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Milotic_1[] = _( +static const u8 DexDescription_Milotic_1[] = _( "MILOTIC live at the bottom of large\n" "lakes. When this POKéMON’s body glows a\n" "vivid pink, it releases a pulsing wave of"); -const u8 DexDescription_Milotic_2[] = _( +static const u8 DexDescription_Milotic_2[] = _( "energy that brings soothing calm to\n" "restless spirits."); #else -const u8 DexDescription_Milotic_1[] = _( +static const u8 DexDescription_Milotic_1[] = _( "MILOTIC is said to be the most\n" "beautiful of all the POKéMON.\n" "It has the power to becalm such"); -const u8 DexDescription_Milotic_2[] = _( +static const u8 DexDescription_Milotic_2[] = _( "emotions as anger and hostility to quell\n" "bitter feuding."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Castform_1[] = _( +static const u8 DexDescription_Castform_1[] = _( "CASTFORM borrows the power of nature\n" "to transform itself into the guises of\n" "the sun, rain clouds, and snow clouds."); -const u8 DexDescription_Castform_2[] = _( +static const u8 DexDescription_Castform_2[] = _( "This POKéMON’s feelings change with the\n" "weather."); #else -const u8 DexDescription_Castform_1[] = _( +static const u8 DexDescription_Castform_1[] = _( "CASTFORM’s appearance changes with\n" "the weather.\n" "This POKéMON gained the ability to use"); -const u8 DexDescription_Castform_2[] = _( +static const u8 DexDescription_Castform_2[] = _( "the vast power of nature to protect\n" "its tiny body."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Kecleon_1[] = _( +static const u8 DexDescription_Kecleon_1[] = _( "KECLEON alters its body coloration to\n" "blend in with its surroundings, allowing\n" "it to sneak up on its prey unnoticed."); -const u8 DexDescription_Kecleon_2[] = _( +static const u8 DexDescription_Kecleon_2[] = _( "Then it lashes out with its long,\n" "stretchy tongue to instantly ensnare\n" "the unsuspecting target."); #else -const u8 DexDescription_Kecleon_1[] = _( +static const u8 DexDescription_Kecleon_1[] = _( "KECLEON is capable of changing its body\n" "colors at will to blend in with its\n" "surroundings."); -const u8 DexDescription_Kecleon_2[] = _( +static const u8 DexDescription_Kecleon_2[] = _( "There is one exception - this POKéMON\n" "can’t change the zigzag pattern on its\n" "belly."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Shuppet_1[] = _( +static const u8 DexDescription_Shuppet_1[] = _( "SHUPPET grows by feeding on dark\n" "emotions, such as vengefulness and \n" "envy, in the hearts of people."); -const u8 DexDescription_Shuppet_2[] = _( +static const u8 DexDescription_Shuppet_2[] = _( "It roams through cities in search of\n" "grudges that taint people."); #else -const u8 DexDescription_Shuppet_1[] = _( +static const u8 DexDescription_Shuppet_1[] = _( "SHUPPET is attracted by feelings\n" "of jealousy and vindictiveness.\n" "If someone develops strong feelings of"); -const u8 DexDescription_Shuppet_2[] = _( +static const u8 DexDescription_Shuppet_2[] = _( "vengeance, this POKéMON will appear\n" "in a swarm and line up beneath the eaves\n" "of that person’s home."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Banette_1[] = _( +static const u8 DexDescription_Banette_1[] = _( "A cursed energy permeated the stuffing\n" "of a discarded and forgotten plush doll,\n" "giving it new life as BANETTE."); -const u8 DexDescription_Banette_2[] = _( +static const u8 DexDescription_Banette_2[] = _( "The POKéMON’s energy would escape if it\n" "were to ever open its mouth."); #else -const u8 DexDescription_Banette_1[] = _( +static const u8 DexDescription_Banette_1[] = _( "BANETTE generates energy for laying\n" "strong curses by sticking pins into its\n" "own body."); -const u8 DexDescription_Banette_2[] = _( +static const u8 DexDescription_Banette_2[] = _( "This POKéMON was originally a pitiful\n" "plush doll that was thrown away."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Duskull_1[] = _( +static const u8 DexDescription_Duskull_1[] = _( "DUSKULL wanders lost among the deep\n" "darkness of midnight. There is an oft-\n" "told admonishment given to misbehaving"); -const u8 DexDescription_Duskull_2[] = _( +static const u8 DexDescription_Duskull_2[] = _( "children that this POKéMON will spirit\n" "away bad children who earn scoldings\n" "from their mothers."); #else -const u8 DexDescription_Duskull_1[] = _( +static const u8 DexDescription_Duskull_1[] = _( "DUSKULL can pass through any wall no\n" "matter how thick it may be.\n" "Once this POKéMON chooses a target,"); -const u8 DexDescription_Duskull_2[] = _( +static const u8 DexDescription_Duskull_2[] = _( "it will doggedly pursue the intended\n" "victim until the break of dawn."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Dusclops_1[] = _( +static const u8 DexDescription_Dusclops_1[] = _( "DUSCLOPS absorbs anything, however\n" "large the object may be. This POKéMON\n" "hypnotizes its foe by waving its hands"); -const u8 DexDescription_Dusclops_2[] = _( +static const u8 DexDescription_Dusclops_2[] = _( "in a macabre manner and by bringing its\n" "single eye to bear. The hypnotized foe\n" "is made to do DUSCLOPS’s bidding."); #else -const u8 DexDescription_Dusclops_1[] = _( +static const u8 DexDescription_Dusclops_1[] = _( "DUSCLOPS’s body is completely hollow -\n" "there is nothing at all inside.\n" "It is said that its body is like a black"); -const u8 DexDescription_Dusclops_2[] = _( +static const u8 DexDescription_Dusclops_2[] = _( "hole. This POKéMON will absorb anything\n" "into its body, but nothing will ever come\n" "back out."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Tropius_1[] = _( +static const u8 DexDescription_Tropius_1[] = _( "Children of the southern tropics eat\n" "as snacks the fruit that grows in\n" "bunches around the neck of TROPIUS."); -const u8 DexDescription_Tropius_2[] = _( +static const u8 DexDescription_Tropius_2[] = _( "This POKéMON flies by flapping the\n" "leaves on its back as if they were\n" "wings."); #else -const u8 DexDescription_Tropius_1[] = _( +static const u8 DexDescription_Tropius_1[] = _( "The bunches of fruit around TROPIUS’s\n" "neck are very popular with children.\n" "This POKéMON loves fruit, and eats it"); -const u8 DexDescription_Tropius_2[] = _( +static const u8 DexDescription_Tropius_2[] = _( "continuously. Apparently, its love for\n" "fruit resulted in its own outgrowth\n" "of fruit."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Chimecho_1[] = _( +static const u8 DexDescription_Chimecho_1[] = _( "In high winds, CHIMECHO cries as it\n" "hangs from a tree branch or the eaves\n" "of a building using a suction cup on its"); -const u8 DexDescription_Chimecho_2[] = _( +static const u8 DexDescription_Chimecho_2[] = _( "head.\n" "This POKéMON plucks berries with its\n" "long tail and eats them."); #else -const u8 DexDescription_Chimecho_1[] = _( +static const u8 DexDescription_Chimecho_1[] = _( "CHIMECHO makes its cries echo\n" "inside its hollow body. When this\n" "POKéMON becomes enraged, its cries"); -const u8 DexDescription_Chimecho_2[] = _( +static const u8 DexDescription_Chimecho_2[] = _( "result in ultrasonic waves that have\n" "the power to knock foes flying."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Absol_1[] = _( +static const u8 DexDescription_Absol_1[] = _( "ABSOL has the ability to foretell the\n" "coming of natural disasters.\n" "It lives in a harsh, rugged mountain"); -const u8 DexDescription_Absol_2[] = _( +static const u8 DexDescription_Absol_2[] = _( "environment. This POKéMON very rarely\n" "ventures down from the mountains."); #else -const u8 DexDescription_Absol_1[] = _( +static const u8 DexDescription_Absol_1[] = _( "Every time ABSOL appears before people,\n" "it is followed by a disaster such as an\n" "earthquake or a tidal wave."); -const u8 DexDescription_Absol_2[] = _( +static const u8 DexDescription_Absol_2[] = _( "As a result, it came to be known as the\n" "disaster POKéMON."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Wynaut_1[] = _( +static const u8 DexDescription_Wynaut_1[] = _( "WYNAUT gather on moonlit nights to play\n" "by squeezing up against each other.\n" "By being squeezed, this POKéMON gains"); -const u8 DexDescription_Wynaut_2[] = _( +static const u8 DexDescription_Wynaut_2[] = _( "endurance and is trained to dole out\n" "powerful counterattacks."); #else -const u8 DexDescription_Wynaut_1[] = _( +static const u8 DexDescription_Wynaut_1[] = _( "WYNAUT can always be seen with a big,\n" "happy smile on its face. Look at its tail\n" "to determine if it is angry."); -const u8 DexDescription_Wynaut_2[] = _( +static const u8 DexDescription_Wynaut_2[] = _( "When angered, this POKéMON will be\n" "slapping the ground with its tail."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Snorunt_1[] = _( +static const u8 DexDescription_Snorunt_1[] = _( "SNORUNT survives by eating only snow\n" "and ice.\n" "Old folklore claims that a house visited"); -const u8 DexDescription_Snorunt_2[] = _( +static const u8 DexDescription_Snorunt_2[] = _( "by this POKéMON is sure to prosper for\n" "many generations to come."); #else -const u8 DexDescription_Snorunt_1[] = _( +static const u8 DexDescription_Snorunt_1[] = _( "SNORUNT live in regions with heavy\n" "snowfall. In seasons without snow, such\n" "as spring and summer, this POKéMON"); -const u8 DexDescription_Snorunt_2[] = _( +static const u8 DexDescription_Snorunt_2[] = _( "steals away to live quietly among\n" "stalactites and stalagmites deep in\n" "caverns."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Glalie_1[] = _( +static const u8 DexDescription_Glalie_1[] = _( "GLALIE has the ability to freely\n" "control ice. For example, it can\n" "instantly freeze its foe solid."); -const u8 DexDescription_Glalie_2[] = _( +static const u8 DexDescription_Glalie_2[] = _( "After immobilizing its foe in ice, this\n" "POKéMON enjoys eating it in leisurely\n" "fashion."); #else -const u8 DexDescription_Glalie_1[] = _( +static const u8 DexDescription_Glalie_1[] = _( "GLALIE has a body made of rock, which it\n" "hardens with an armor of ice.\n" "This POKéMON has the ability to freeze"); -const u8 DexDescription_Glalie_2[] = _( +static const u8 DexDescription_Glalie_2[] = _( "moisture in the atmosphere into any\n" "shape it desires."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Spheal_1[] = _( +static const u8 DexDescription_Spheal_1[] = _( "SPHEAL always travels by rolling\n" "around on its ball-like body. When the\n" "season for ice floes arrives, this"); -const u8 DexDescription_Spheal_2[] = _( +static const u8 DexDescription_Spheal_2[] = _( "POKéMON can be seen rolling about on\n" "ice and crossing the sea."); #else -const u8 DexDescription_Spheal_1[] = _( +static const u8 DexDescription_Spheal_1[] = _( "SPHEAL is much faster rolling than \n" "walking to get around. When groups of\n" "this POKéMON eat, they all clap at once"); -const u8 DexDescription_Spheal_2[] = _( +static const u8 DexDescription_Spheal_2[] = _( "to show their pleasure. Because of this,\n" "their mealtimes are noisy."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Sealeo_1[] = _( +static const u8 DexDescription_Sealeo_1[] = _( "SEALEO often balances and rolls\n" "things on the tip of its nose. While the\n" "POKéMON is rolling something, it checks"); -const u8 DexDescription_Sealeo_2[] = _( +static const u8 DexDescription_Sealeo_2[] = _( "the object’s aroma and texture to\n" "determine whether it likes the object\n" "or not."); #else -const u8 DexDescription_Sealeo_1[] = _( +static const u8 DexDescription_Sealeo_1[] = _( "SEALEO has the habit of always juggling\n" "on the tip of its nose anything it sees\n" "for the first time."); -const u8 DexDescription_Sealeo_2[] = _( +static const u8 DexDescription_Sealeo_2[] = _( "This POKéMON occasionally entertains\n" "itself by balancing and rolling a SPHEAL\n" "on its nose."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Walrein_1[] = _( +static const u8 DexDescription_Walrein_1[] = _( "WALREIN swims all over in frigid\n" "seawater while crushing icebergs with\n" "its grand, imposing tusks."); -const u8 DexDescription_Walrein_2[] = _( +static const u8 DexDescription_Walrein_2[] = _( "Its thick layer of blubber makes enemy\n" "attacks bounce off harmlessly."); #else -const u8 DexDescription_Walrein_1[] = _( +static const u8 DexDescription_Walrein_1[] = _( "WALREIN’s two massively developed\n" "tusks can totally shatter blocks of\n" "ice weighing ten tons with one blow."); -const u8 DexDescription_Walrein_2[] = _( +static const u8 DexDescription_Walrein_2[] = _( "This POKéMON’s thick coat of blubber\n" "insulates it from subzero temperatures."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Clamperl_1[] = _( +static const u8 DexDescription_Clamperl_1[] = _( "CLAMPERL grows while being protected\n" "by its rock-hard shell. When its body\n" "becomes too large to fit inside the"); -const u8 DexDescription_Clamperl_2[] = _( +static const u8 DexDescription_Clamperl_2[] = _( "shell, it is sure evidence that this\n" "POKéMON is getting close to evolution."); #else -const u8 DexDescription_Clamperl_1[] = _( +static const u8 DexDescription_Clamperl_1[] = _( "CLAMPERL’s sturdy shell is not only good\n" "for protection - it is also used for\n" "clamping and catching prey."); -const u8 DexDescription_Clamperl_2[] = _( +static const u8 DexDescription_Clamperl_2[] = _( "A fully grown CLAMPERL’s shell will be\n" "scored with nicks and scratches all\n" "over."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Huntail_1[] = _( +static const u8 DexDescription_Huntail_1[] = _( "HUNTAIL’s tail is shaped like a fish.\n" "It uses the tail to attract prey, then\n" "swallows the prey whole with its large,"); -const u8 DexDescription_Huntail_2[] = _( +static const u8 DexDescription_Huntail_2[] = _( "gaping mouth.\n" "This POKéMON swims by wiggling its\n" "slender body like a snake."); #else -const u8 DexDescription_Huntail_1[] = _( +static const u8 DexDescription_Huntail_1[] = _( "HUNTAIL’s presence went unnoticed by\n" "people for a long time because it lives\n" "at extreme depths in the sea."); -const u8 DexDescription_Huntail_2[] = _( +static const u8 DexDescription_Huntail_2[] = _( "This POKéMON’s eyes can see clearly\n" "even in the murky dark depths of the\n" "ocean."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Gorebyss_1[] = _( +static const u8 DexDescription_Gorebyss_1[] = _( "Although GOREBYSS is the very picture\n" "of elegance and beauty while swimming,\n" "it is also cruel. When it spots prey, this"); -const u8 DexDescription_Gorebyss_2[] = _( +static const u8 DexDescription_Gorebyss_2[] = _( "POKéMON inserts its thin mouth into the\n" "prey’s body and drains the prey of its\n" "body fluids."); #else -const u8 DexDescription_Gorebyss_1[] = _( +static const u8 DexDescription_Gorebyss_1[] = _( "GOREBYSS lives in the southern seas\n" "at extreme depths. Its body is built to\n" "withstand the enormous pressure of"); -const u8 DexDescription_Gorebyss_2[] = _( +static const u8 DexDescription_Gorebyss_2[] = _( "water at incredible depths. Because of\n" "this, this POKéMON’s body is unharmed\n" "by ordinary attacks."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Relicanth_1[] = _( +static const u8 DexDescription_Relicanth_1[] = _( "RELICANTH is a rare species that was\n" "discovered in deep-sea explorations.\n" "This POKéMON’s body withstands the"); -const u8 DexDescription_Relicanth_2[] = _( +static const u8 DexDescription_Relicanth_2[] = _( "enormous water pressure of the ocean\n" "depths. Its body is covered in tough\n" "scales that are like craggy rocks."); #else -const u8 DexDescription_Relicanth_1[] = _( +static const u8 DexDescription_Relicanth_1[] = _( "RELICANTH is a POKéMON species that\n" "existed for a hundred million years\n" "without ever changing its form."); -const u8 DexDescription_Relicanth_2[] = _( +static const u8 DexDescription_Relicanth_2[] = _( "This ancient POKéMON feeds on\n" "microscopic organisms with its\n" "toothless mouth."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Luvdisc_1[] = _( +static const u8 DexDescription_Luvdisc_1[] = _( "LUVDISC’s heart-shaped body is a\n" "symbol of love and romance.\n" "It is said that any couple meeting this"); -const u8 DexDescription_Luvdisc_2[] = _( +static const u8 DexDescription_Luvdisc_2[] = _( "POKéMON is promised a loving\n" "relationship that never ends."); #else -const u8 DexDescription_Luvdisc_1[] = _( +static const u8 DexDescription_Luvdisc_1[] = _( "LUVDISC live in shallow seas in the\n" "tropics. This heart-shaped POKéMON\n" "earned its name by swimming after"); -const u8 DexDescription_Luvdisc_2[] = _( +static const u8 DexDescription_Luvdisc_2[] = _( "loving couples it spotted in the\n" "ocean’s waves."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Bagon_1[] = _( +static const u8 DexDescription_Bagon_1[] = _( "BAGON harbors a never-ending dream of\n" "one day soaring high among the clouds.\n" "As if trying to dispel its frustration"); -const u8 DexDescription_Bagon_2[] = _( +static const u8 DexDescription_Bagon_2[] = _( "over its inability to fly, this POKéMON\n" "slams its hard head against huge rocks\n" "and shatters them into pebbles."); #else -const u8 DexDescription_Bagon_1[] = _( +static const u8 DexDescription_Bagon_1[] = _( "BAGON has a dream of one day soaring\n" "in the sky. In doomed efforts to fly,\n" "this POKéMON hurls itself off cliffs."); -const u8 DexDescription_Bagon_2[] = _( +static const u8 DexDescription_Bagon_2[] = _( "As a result of its dives, its head has \n" "grown tough and as hard as tempered\n" "steel."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Shelgon_1[] = _( +static const u8 DexDescription_Shelgon_1[] = _( "Covering SHELGON’s body are outgrowths\n" "much like bones. The shell is very hard\n" "and bounces off enemy attacks."); -const u8 DexDescription_Shelgon_2[] = _( +static const u8 DexDescription_Shelgon_2[] = _( "When awaiting evolution, this POKéMON\n" "hides away in a cavern."); #else -const u8 DexDescription_Shelgon_1[] = _( +static const u8 DexDescription_Shelgon_1[] = _( "Inside SHELGON’s armor-like shell, cells\n" "are in the midst of transformation\n" "to create an entirely new body."); -const u8 DexDescription_Shelgon_2[] = _( +static const u8 DexDescription_Shelgon_2[] = _( "This POKéMON’s shell is extremely heavy,\n" "making its movements sluggish."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Salamence_1[] = _( +static const u8 DexDescription_Salamence_1[] = _( "By evolving into SALAMENCE, this\n" "POKéMON finally realizes its long-held\n" "dream of growing wings."); -const u8 DexDescription_Salamence_2[] = _( +static const u8 DexDescription_Salamence_2[] = _( "To express its joy, it flies and wheels\n" "all over the sky while spouting flames\n" "from its mouth."); #else -const u8 DexDescription_Salamence_1[] = _( +static const u8 DexDescription_Salamence_1[] = _( "SALAMENCE came about as a result of a\n" "strong, long-held dream of growing\n" "wings. It is said that this powerful"); -const u8 DexDescription_Salamence_2[] = _( +static const u8 DexDescription_Salamence_2[] = _( "desire triggered a sudden mutation in\n" "this POKéMON’s cells, causing it to\n" "sprout its magnificent wings."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Beldum_1[] = _( +static const u8 DexDescription_Beldum_1[] = _( "BELDUM keeps itself floating by\n" "generating a magnetic force that\n" "repels earth’s natural magnetism."); -const u8 DexDescription_Beldum_2[] = _( +static const u8 DexDescription_Beldum_2[] = _( "When it sleeps, this POKéMON anchors\n" "itself to a cliff using the hooks on\n" "its rear."); #else -const u8 DexDescription_Beldum_1[] = _( +static const u8 DexDescription_Beldum_1[] = _( "Instead of blood, a powerful magnetic\n" "force courses throughout BELDUM’s\n" "body. This POKéMON communicates with"); -const u8 DexDescription_Beldum_2[] = _( +static const u8 DexDescription_Beldum_2[] = _( "others by sending controlled pulses of\n" "magnetism."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Metang_1[] = _( +static const u8 DexDescription_Metang_1[] = _( "When two BELDUM fuse together, METANG\n" "is formed. The brains of the BELDUM are\n" "joined by a magnetic nervous system."); -const u8 DexDescription_Metang_2[] = _( +static const u8 DexDescription_Metang_2[] = _( "This POKéMON turns its arms to the rear\n" "for traveling at high speed."); #else -const u8 DexDescription_Metang_1[] = _( +static const u8 DexDescription_Metang_1[] = _( "When two BELDUM fuse together, METANG\n" "is formed. The brains of the BELDUM are\n" "joined by a magnetic nervous system."); -const u8 DexDescription_Metang_2[] = _( +static const u8 DexDescription_Metang_2[] = _( "By linking its brains magnetically,\n" "this POKéMON generates strong\n" "psychokinetic power."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Metagross_1[] = _( +static const u8 DexDescription_Metagross_1[] = _( "METAGROSS is the result of two METANG\n" "achieving fusion. When hunting, this\n" "POKéMON pins the prey to the ground"); -const u8 DexDescription_Metagross_2[] = _( +static const u8 DexDescription_Metagross_2[] = _( "under its massive body. It then eats\n" "the helpless victim using the large \n" "mouth on its stomach."); #else -const u8 DexDescription_Metagross_1[] = _( +static const u8 DexDescription_Metagross_1[] = _( "METAGROSS has four brains in total.\n" "Combined, the four brains can breeze\n" "through difficult calculations faster"); -const u8 DexDescription_Metagross_2[] = _( +static const u8 DexDescription_Metagross_2[] = _( "than a supercomputer.\n" "This POKéMON can float in the air by\n" "tucking in its four legs."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Regirock_1[] = _( +static const u8 DexDescription_Regirock_1[] = _( "REGIROCK’s body is composed entirely of\n" "rocks. Recently, a study made the\n" "startling discovery that the rocks"); -const u8 DexDescription_Regirock_2[] = _( +static const u8 DexDescription_Regirock_2[] = _( "were all unearthed from different\n" "locations."); #else -const u8 DexDescription_Regirock_1[] = _( +static const u8 DexDescription_Regirock_1[] = _( "REGIROCK was sealed away by people\n" "long ago. If this POKéMON’s body is\n" "damaged in battle, it is said to seek"); -const u8 DexDescription_Regirock_2[] = _( +static const u8 DexDescription_Regirock_2[] = _( "out suitable rocks on its own to repair\n" "itself."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Regice_1[] = _( +static const u8 DexDescription_Regice_1[] = _( "REGICE cloaks itself with frigid air of\n" "negative 328 degrees F.\n" "Things will freeze solid just by going"); -const u8 DexDescription_Regice_2[] = _( +static const u8 DexDescription_Regice_2[] = _( "near this POKéMON.\n" "Its icy body is so cold, it will not melt\n" "even if it is immersed in magma."); #else -const u8 DexDescription_Regice_1[] = _( +static const u8 DexDescription_Regice_1[] = _( "REGICE’s body was made during an ice\n" "age. The deep-frozen body can’t be\n" "melted, even by fire."); -const u8 DexDescription_Regice_2[] = _( +static const u8 DexDescription_Regice_2[] = _( "This POKéMON controls frigid air of\n" "minus 328 degrees F."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Registeel_1[] = _( +static const u8 DexDescription_Registeel_1[] = _( "REGISTEEL was imprisoned by people\n" "in ancient times.\n" "The metal composing its body is thought"); -const u8 DexDescription_Registeel_2[] = _( +static const u8 DexDescription_Registeel_2[] = _( "to be a curious substance that is not\n" "of this earth."); #else -const u8 DexDescription_Registeel_1[] = _( +static const u8 DexDescription_Registeel_1[] = _( "REGISTEEL has a body that is harder\n" "than any kind of metal.\n" "Its body is apparently hollow."); -const u8 DexDescription_Registeel_2[] = _( +static const u8 DexDescription_Registeel_2[] = _( "No one has any idea what this POKéMON\n" "eats."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Latias_1[] = _( +static const u8 DexDescription_Latias_1[] = _( "LATIAS is highly intelligent and capable\n" "of understanding human speech.\n" "It is covered with a glass-like down."); -const u8 DexDescription_Latias_2[] = _( +static const u8 DexDescription_Latias_2[] = _( "The POKéMON enfolds its body with its\n" "down and refracts light to alter its\n" "appearance."); #else -const u8 DexDescription_Latias_1[] = _( +static const u8 DexDescription_Latias_1[] = _( "LATIAS is highly sensitive to the\n" "emotions of people. If it senses any\n" "hostility, this POKéMON ruffles the"); -const u8 DexDescription_Latias_2[] = _( +static const u8 DexDescription_Latias_2[] = _( "feathers all over its body and cries\n" "shrilly to intimidate the foe."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Latios_1[] = _( +static const u8 DexDescription_Latios_1[] = _( "LATIOS will only open its heart to a\n" "TRAINER with a compassionate spirit.\n" "This POKéMON can fly faster than a jet"); -const u8 DexDescription_Latios_2[] = _( +static const u8 DexDescription_Latios_2[] = _( "plane by folding its forelegs to minimize\n" "air resistance."); #else -const u8 DexDescription_Latios_1[] = _( +static const u8 DexDescription_Latios_1[] = _( "LATIOS has the ability to make its foe\n" "see an image of what it has seen or\n" "imagines in its head."); -const u8 DexDescription_Latios_2[] = _( +static const u8 DexDescription_Latios_2[] = _( "This POKéMON is intelligent and\n" "understands human speech."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Kyogre_1[] = _( +static const u8 DexDescription_Kyogre_1[] = _( "KYOGRE is named in mythology as the\n" "POKéMON that expanded the sea by\n" "covering the land with torrential rains"); -const u8 DexDescription_Kyogre_2[] = _( +static const u8 DexDescription_Kyogre_2[] = _( "and towering tidal waves.\n" "It took to sleep after a cataclysmic\n" "battle with GROUDON."); #else -const u8 DexDescription_Kyogre_1[] = _( +static const u8 DexDescription_Kyogre_1[] = _( "KYOGRE has the power to create massive\n" "rain clouds that cover the entire sky\n" "and bring about torrential downpours."); -const u8 DexDescription_Kyogre_2[] = _( +static const u8 DexDescription_Kyogre_2[] = _( "This POKéMON saved people who were\n" "suffering from droughts."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Groudon_1[] = _( +static const u8 DexDescription_Groudon_1[] = _( "GROUDON has the power to scatter rain\n" "clouds and make water evaporate with\n" "light and heat."); -const u8 DexDescription_Groudon_2[] = _( +static const u8 DexDescription_Groudon_2[] = _( "It came as a savior to people who had\n" "been suffering from terrible floods."); #else -const u8 DexDescription_Groudon_1[] = _( +static const u8 DexDescription_Groudon_1[] = _( "GROUDON has long been described in \n" "mythology as the POKéMON that raised\n" "lands and expanded continents."); -const u8 DexDescription_Groudon_2[] = _( +static const u8 DexDescription_Groudon_2[] = _( "This POKéMON took to sleep after a\n" "cataclysmic battle with KYOGRE."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Rayquaza_1[] = _( +static const u8 DexDescription_Rayquaza_1[] = _( "RAYQUAZA is said to have lived for\n" "hundreds of millions of years in the\n" "earth’s ozone layer, above the clouds."); -const u8 DexDescription_Rayquaza_2[] = _( +static const u8 DexDescription_Rayquaza_2[] = _( "Its existence had been completely\n" "unknown because it lived so high in\n" "the sky."); #else -const u8 DexDescription_Rayquaza_1[] = _( +static const u8 DexDescription_Rayquaza_1[] = _( "RAYQUAZA lived for hundreds of millions\n" "of years in the earth’s ozone layer, \n" "never descending to the ground."); -const u8 DexDescription_Rayquaza_2[] = _( +static const u8 DexDescription_Rayquaza_2[] = _( "This POKéMON appears to feed on water\n" "and particles in the atmosphere."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Jirachi_1[] = _( +static const u8 DexDescription_Jirachi_1[] = _( "JIRACHI will awaken from its sleep of\n" "a thousand years if you sing to it in a\n" "voice of purity."); -const u8 DexDescription_Jirachi_2[] = _( +static const u8 DexDescription_Jirachi_2[] = _( "It is said to make true any wish that\n" "people desire."); #else -const u8 DexDescription_Jirachi_1[] = _( +static const u8 DexDescription_Jirachi_1[] = _( "A legend states that JIRACHI will make\n" "true any wish that is written on notes\n" "attached to its head when it awakens."); -const u8 DexDescription_Jirachi_2[] = _( +static const u8 DexDescription_Jirachi_2[] = _( "If this POKéMON senses danger, it will\n" "fight without awakening."); #endif #ifdef SAPPHIRE -const u8 DexDescription_Deoxys_1[] = _( +static const u8 DexDescription_Deoxys_1[] = _( "DEOXYS emerged from a virus that came\n" "from space. It is highly intelligent and\n" "wields psychokinetic powers."); -const u8 DexDescription_Deoxys_2[] = _( +static const u8 DexDescription_Deoxys_2[] = _( "This POKéMON shoots lasers from the\n" "crystalline organ on its chest."); #else -const u8 DexDescription_Deoxys_1[] = _( +static const u8 DexDescription_Deoxys_1[] = _( "The DNA of a space virus underwent a\n" "sudden mutation upon exposure to a\n" "laser beam and resulted in DEOXYS."); -const u8 DexDescription_Deoxys_2[] = _( +static const u8 DexDescription_Deoxys_2[] = _( "The crystalline organ on this POKéMON’s\n" "chest appears to be its brain."); #endif -const struct PokedexEntry gPokedexEntries[] = +static const struct PokedexEntry gPokedexEntries[] = { { //Dummy .categoryName = _("UNKNOWN"), diff --git a/src/pokedex.c b/src/pokedex.c index e74cf5a39..92db38da9 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -166,6 +166,8 @@ extern const u16 gPokedexMenuSearch_Pal[]; extern const u8 gTypeNames[][7]; extern const u8 gPokedexMenu2_Gfx[]; +extern u16 NationalPokedexNumToSpecies(u16); +extern void ShowPokedexAreaScreen(u16 species, u8 *string); extern void sub_814AD7C(u8, u8); extern void sub_800D74C(); extern const u16 *species_and_otid_get_pal(u16, u32, u32); @@ -422,6 +424,7 @@ static const union AnimCmd *const gSpriteAnimTable_83A0520[] = { gSpriteAnim_83A04CC, }; +static void sub_808EF38(struct Sprite *); static const struct SpriteTemplate gSpriteTemplate_83A0524 = { .tileTag = 4096, @@ -432,6 +435,7 @@ static const struct SpriteTemplate gSpriteTemplate_83A0524 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808EF38, }; +static void sub_808EF8C(struct Sprite *); static const struct SpriteTemplate gSpriteTemplate_83A053C = { .tileTag = 4096, @@ -442,6 +446,7 @@ static const struct SpriteTemplate gSpriteTemplate_83A053C = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808EF8C, }; +static void sub_808F08C(struct Sprite *); static const struct SpriteTemplate gSpriteTemplate_83A0554 = { .tileTag = 4096, @@ -452,6 +457,7 @@ static const struct SpriteTemplate gSpriteTemplate_83A0554 = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808F08C, }; +static void sub_808F0B4(struct Sprite *); static const struct SpriteTemplate gSpriteTemplate_83A056C = { .tileTag = 4096, @@ -462,6 +468,7 @@ static const struct SpriteTemplate gSpriteTemplate_83A056C = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808F0B4, }; +static void sub_808ED94(struct Sprite *); static const struct SpriteTemplate gSpriteTemplate_83A0584 = { .tileTag = 4096, @@ -482,6 +489,7 @@ static const struct SpriteTemplate gSpriteTemplate_83A059C = .affineAnims = gDummySpriteAffineAnimTable, .callback = sub_808ED94, }; +static void sub_808F168(struct Sprite *); static const struct SpriteTemplate gSpriteTemplate_83A05B4 = { .tileTag = 4096, @@ -1220,14 +1228,54 @@ static void sub_808DF88(u16 a, u8 b, u8 c, u16 d); static u8 sub_808DFE4(u16 num, u8 b, u8 c); static void sub_808E090(u8 a, u8 b, u16 c); static void sub_808E0CC(u16 a, u16 b); +static bool8 sub_808E208(u8 a, u8 b, u8 c); +static u16 sub_808E48C(u16 a, u16 b); +static void sub_808E6BC(void); +static u8 sub_808E71C(void); +static u8 sub_808E82C(void); +static u16 sub_808E888(u16 a1); static u32 sub_808E8C8(u16 a, s16 b, s16 c); +static void sub_808E978(u8 a); +static void sub_808EDB8(struct Sprite *sprite); +static void sub_808EE28(struct Sprite *sprite); static u8 sub_808F210(struct PokedexListItem *, u8); +static bool8 sub_808F250(u8 taskId); static u8 sub_808F284(struct PokedexListItem *, u8); -void sub_8090B8C(u8); -void sub_8090C28(struct Sprite *); -s8 GetNationalPokedexFlag(u16, u8); +static void Task_InitPageScreenMultistep(u8 taskId); +static void Task_PageScreenProcessInput(u8 taskId); +static void sub_808F888(u8 taskId); +static void Task_ClosePageScreen(u8 taskId); +static void Task_InitAreaScreenMultistep(u8 taskId); +static void Task_AreaScreenProcessInput(u8 taskId); +static void sub_808FA00(u8 taskId); +static void Task_InitCryScreenMultistep(u8 taskId); +static void Task_CryScreenProcessInput(u8 taskId); +static void sub_808FFBC(u8 taskId); +static void sub_8090040(u8 a); +static void Task_InitSizeScreenMultistep(u8 taskId); +static void Task_SizeScreenProcessInput(u8 taskId); +static void sub_8090498(u8 taskId); +static void sub_80904FC(u16 a); +static void sub_8090540(u16 a); +static void sub_8090584(u8 a, u16 b); +static void sub_8090644(u8 a, u16 b); +static void sub_8090750(u8); +static void sub_8090A3C(u8); +static void sub_8090B8C(u8); +static void sub_8090C28(struct Sprite *); +static void sub_8090C68(void); +static void sub_8091060(u16); +static void sub_8091154(u16 order, u8, u8); +static u8 sub_80911C8(u16 num, u8, u8); +static u8 sub_8091260(u16 num, u8, u8, u8); +static void sub_8091304(const u8 *name, u8, u8); +static void sub_8091458(u16 height, u8 i, u8 i1); +static void sub_8091564(u16 weight, u8 i, u8 i1); static void sub_8091738(u16, u16, u16); -u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d); //Not sure of return type +static void sub_80917CC(u16 i, u16 i1); +static u16 sub_8091818(u8, u16, u16, u16); +static u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d); +static u8 sub_8091A4C(u16 gender, s16, s16, u16); static void sub_8091E54(u8); static void sub_809204C(u8); static void sub_809207C(u8); @@ -1249,9 +1297,6 @@ static u8 sub_8092E10(u8, u8); static void sub_8092EB0(u8); static void sub_809308C(u8); -extern u16 NationalPokedexNumToSpecies(u16); -void ShowPokedexAreaScreen(u16 species, u8 *string); - void ResetPokedex(void) { u16 i; @@ -2290,7 +2335,7 @@ static void sub_808E0CC(u16 a, u16 b) gPokedexView->unk632 = 0; } -bool8 sub_808E208(u8 a, u8 b, u8 c) +static bool8 sub_808E208(u8 a, u8 b, u8 c) { u16 i; u8 foo; @@ -2330,7 +2375,7 @@ bool8 sub_808E208(u8 a, u8 b, u8 c) } } -void sub_808E398(u8 a, u16 b) +static void sub_808E398(u8 a, u16 b) { u16 unk; u8 spriteId; @@ -2367,14 +2412,15 @@ void sub_808E398(u8 a, u16 b) } } -u16 sub_808E48C(u16 a, u16 b) +// Ugly, ugly, ugly. I couldn't get it to match otherwise. +static u16 sub_808E48C(u16 a, u16 b) { u8 r3; u8 r5; u8 i; u16 r6; u8 r10 = 0; - + if (!((gMain.heldKeys & 0x40) && (a > 0))) { //_0808E4B6 @@ -2447,7 +2493,7 @@ u16 sub_808E48C(u16 a, u16 b) return a; } -void sub_808E6BC(void) +static void sub_808E6BC(void) { u16 i; @@ -2460,7 +2506,7 @@ void sub_808E6BC(void) } } -u8 sub_808E71C(void) +static u8 sub_808E71C(void) { u16 r2; u16 r4 = gPokedexView->selectedPokemon; @@ -2514,7 +2560,7 @@ u8 sub_808E71C(void) return 0; } -u8 sub_808E82C(void) +static u8 sub_808E82C(void) { u16 i; @@ -2529,7 +2575,7 @@ u8 sub_808E82C(void) return 0; } -u16 sub_808E888(u16 a1) +static u16 sub_808E888(u16 a1) { if (a1 >= NATIONAL_DEX_COUNT || gPokedexView->unk0[a1].dexNum == 0xFFFF) return 0xFFFF; @@ -2561,7 +2607,7 @@ static u32 sub_808E8C8(u16 a, s16 b, s16 c) return 0xFFFF; } -void sub_808E978(u8 a) +static void sub_808E978(u8 a) { u8 spriteId; u16 r5; @@ -2571,7 +2617,7 @@ void sub_808E978(u8 a) spriteId = CreateSprite(&gSpriteTemplate_83A053C, 184, 156, 0); gSprites[spriteId].data1 = 1; - gSprites[spriteId].vFlip = 1; + gSprites[spriteId].vFlip = TRUE; CreateSprite(&gSpriteTemplate_83A0524, 234, 20, 0); CreateSprite(&gSpriteTemplate_83A0554, 16, 138, 0); @@ -2657,18 +2703,18 @@ void sub_808E978(u8 a) } } -void nullsub_58(struct Sprite *sprite) +static void nullsub_58(struct Sprite *sprite) { } -void sub_808ED94(struct Sprite *sprite) +static void sub_808ED94(struct Sprite *sprite) { if (gPokedexView->unk64A != 0) DestroySprite(sprite); } //Move Pokemon into position for description page -void sub_808EDB8(struct Sprite *sprite) +static void sub_808EDB8(struct Sprite *sprite) { sprite->oam.priority = 0; sprite->oam.affineMode = 0; @@ -2692,7 +2738,7 @@ void sub_808EDB8(struct Sprite *sprite) } } -void sub_808EE28(struct Sprite *sprite) +static void sub_808EE28(struct Sprite *sprite) { u8 data1 = sprite->data1; @@ -2730,7 +2776,7 @@ void sub_808EE28(struct Sprite *sprite) } } -void sub_808EF38(struct Sprite *sprite) +static void sub_808EF38(struct Sprite *sprite) { if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3) DestroySprite(sprite); @@ -2738,7 +2784,7 @@ void sub_808EF38(struct Sprite *sprite) sprite->pos2.y = gPokedexView->selectedPokemon * 120 / (gPokedexView->pokemonListCount - 1); } -void sub_808EF8C(struct Sprite *sprite) +static void sub_808EF8C(struct Sprite *sprite) { if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3) { @@ -2773,132 +2819,38 @@ void sub_808EF8C(struct Sprite *sprite) } } -void sub_808F08C(struct Sprite *sprite) +static void sub_808F08C(struct Sprite *sprite) { if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3) DestroySprite(sprite); } -#ifdef NONMATCHING -void sub_808F0B4(struct Sprite *sprite) +static void sub_808F0B4(struct Sprite *sprite) { if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3) + { DestroySprite(sprite); + } else { + u8 val; s16 r3; + s16 r0; - u8 unk = gPokedexView->unk62C + sprite->data1; - u16 foo = gSineTable[unk]; - //u8 unk2 = sprite->data0; - //u16 bar = gSineTable[unk + 0x40]; - - SetOamMatrix(sprite->data0, foo, gSineTable[unk + 0x40], (-(u16)foo) >> 16, gSineTable[unk + 0x40]); + val = gPokedexView->unk62C + sprite->data1; + r3 = gSineTable[val]; + r0 = gSineTable[val + 0x40]; + SetOamMatrix(sprite->data0, r0, r3, -r3, r0); - r3 = gSineTable[sprite->data1 + gPokedexView->unk62C]; - sprite->pos2.x = gSineTable[sprite->data1 + gPokedexView->unk62C + 0x40] * 5 / 256; + val = gPokedexView->unk62C + (sprite->data1 + 0x40); + r3 = gSineTable[val]; + r0 = gSineTable[val + 0x40]; + sprite->pos2.x = r0 * 40 / 256; sprite->pos2.y = r3 * 40 / 256; } } -#else -__attribute__((naked)) -void sub_808F0B4(struct Sprite *sprite) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x4\n\ - adds r6, r0, 0\n\ - ldr r1, _0808F0D8 @ =gPokedexView\n\ - ldr r0, [r1]\n\ - ldr r2, _0808F0DC @ =0x0000064a\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ - adds r7, r1, 0\n\ - cmp r0, 0\n\ - beq _0808F0E0\n\ - cmp r0, 0x3\n\ - beq _0808F0E0\n\ - adds r0, r6, 0\n\ - bl DestroySprite\n\ - b _0808F158\n\ - .align 2, 0\n\ -_0808F0D8: .4byte gPokedexView\n\ -_0808F0DC: .4byte 0x0000064a\n\ -_0808F0E0:\n\ - ldr r0, [r7]\n\ - ldr r5, _0808F160 @ =0x0000062c\n\ - adds r0, r5\n\ - ldrb r1, [r0]\n\ - ldrh r0, [r6, 0x30]\n\ - adds r1, r0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - ldr r4, _0808F164 @ =gSineTable\n\ - lsls r0, r1, 1\n\ - adds r0, r4\n\ - ldrh r3, [r0]\n\ - adds r1, 0x40\n\ - lsls r1, 1\n\ - adds r1, r4\n\ - ldrh r0, [r6, 0x2E]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldrh r1, [r1]\n\ - lsls r3, 16\n\ - lsrs r2, r3, 16\n\ - negs r3, r3\n\ - lsrs r3, 16\n\ - str r1, [sp]\n\ - bl SetOamMatrix\n\ - ldr r1, [r7]\n\ - adds r1, r5\n\ - ldrh r0, [r6, 0x30]\n\ - adds r0, 0x40\n\ - ldrb r1, [r1]\n\ - adds r0, r1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - lsls r1, r0, 1\n\ - adds r1, r4\n\ - ldrh r3, [r1]\n\ - adds r0, 0x40\n\ - lsls r0, 1\n\ - adds r0, r4\n\ - movs r2, 0\n\ - ldrsh r1, [r0, r2]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - cmp r0, 0\n\ - bge _0808F140\n\ - adds r0, 0xFF\n\ -_0808F140:\n\ - asrs r0, 8\n\ - strh r0, [r6, 0x24]\n\ - lsls r1, r3, 16\n\ - asrs r1, 16\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - cmp r0, 0\n\ - bge _0808F154\n\ - adds r0, 0xFF\n\ -_0808F154:\n\ - asrs r0, 8\n\ - strh r0, [r6, 0x26]\n\ -_0808F158:\n\ - add sp, 0x4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0808F160: .4byte 0x0000062c\n\ -_0808F164: .4byte gSineTable\n\ - .syntax divided\n"); -} -#endif -void sub_808F168(struct Sprite *sprite) +static void sub_808F168(struct Sprite *sprite) { if (gPokedexView->unk64A != 0 && gPokedexView->unk64A != 3) { @@ -2936,7 +2888,7 @@ static u8 sub_808F210(struct PokedexListItem *item, u8 b) return taskId; } -bool8 sub_808F250(u8 taskId) +static bool8 sub_808F250(u8 taskId) { if (gTasks[taskId].data[0] == 0 && gTasks[taskId].func == Task_PageScreenProcessInput) return FALSE; @@ -2954,7 +2906,7 @@ static u8 sub_808F284(struct PokedexListItem *item, u8 b) return b; } -void Task_InitPageScreenMultistep(u8 taskId) +static void Task_InitPageScreenMultistep(u8 taskId) { switch (gMain.state) { @@ -3078,7 +3030,7 @@ void Task_InitPageScreenMultistep(u8 taskId) } } -void Task_PageScreenProcessInput(u8 taskId) +static void Task_PageScreenProcessInput(u8 taskId) { if (gTasks[taskId].data[0] != 0) { @@ -3146,19 +3098,19 @@ void Task_PageScreenProcessInput(u8 taskId) } } -void sub_808F888(u8 taskId) +static void sub_808F888(u8 taskId) { if (!gPaletteFade.active) gTasks[taskId].func = Task_InitPageScreenMultistep; } -void Task_ClosePageScreen(u8 taskId) +static void Task_ClosePageScreen(u8 taskId) { if (!gPaletteFade.active) DestroyTask(taskId); } -void Task_InitAreaScreenMultistep(u8 taskId) +static void Task_InitAreaScreenMultistep(u8 taskId) { switch (gMain.state) { @@ -3191,13 +3143,13 @@ void Task_InitAreaScreenMultistep(u8 taskId) } } -void Task_AreaScreenProcessInput(u8 taskId) +static void Task_AreaScreenProcessInput(u8 taskId) { if (gPokedexView->unk64F != 0) gTasks[taskId].func = sub_808FA00; } -void sub_808FA00(u8 taskId) +static void sub_808FA00(u8 taskId) { if (!gPaletteFade.active) { @@ -3214,7 +3166,7 @@ void sub_808FA00(u8 taskId) } } -void Task_InitCryScreenMultistep(u8 taskId) +static void Task_InitCryScreenMultistep(u8 taskId) { switch (gMain.state) { @@ -3312,7 +3264,7 @@ void Task_InitCryScreenMultistep(u8 taskId) } } -void Task_CryScreenProcessInput(u8 taskId) +static void Task_CryScreenProcessInput(u8 taskId) { sub_8119F88(0); @@ -3368,7 +3320,7 @@ void Task_CryScreenProcessInput(u8 taskId) } } -void sub_808FFBC(u8 taskId) +static void sub_808FFBC(u8 taskId) { if (!gPaletteFade.active) { @@ -3389,7 +3341,7 @@ void sub_808FFBC(u8 taskId) } } -void sub_8090040(u8 a) +static void sub_8090040(u8 a) { u16 unk; @@ -3400,7 +3352,7 @@ void sub_8090040(u8 a) LoadPalette(&unk, 0x5D, 2); } -void Task_InitSizeScreenMultistep(u8 taskId) +static void Task_InitSizeScreenMultistep(u8 taskId) { u8 spriteId; @@ -3490,7 +3442,7 @@ void Task_InitSizeScreenMultistep(u8 taskId) } } -void Task_SizeScreenProcessInput(u8 taskId) +static void Task_SizeScreenProcessInput(u8 taskId) { if (gMain.newKeys & B_BUTTON) { @@ -3509,7 +3461,7 @@ void Task_SizeScreenProcessInput(u8 taskId) } } -void sub_8090498(u8 taskId) +static void sub_8090498(u8 taskId) { if (!gPaletteFade.active) { @@ -3526,20 +3478,20 @@ void sub_8090498(u8 taskId) } } -void sub_80904FC(u16 a) +static void sub_80904FC(u16 a) { LZ77UnCompVram(gUnknown_08E96ACC, (void *)(VRAM + a * 0x800)); DmaClear16(3, (void *)(VRAM + a * 0x800 + 0xC0), 0x440); } -void sub_8090540(u16 a) +static void sub_8090540(u16 a) { LZ77UnCompVram(gUnknown_08E96B58, (void *)(VRAM + a * 0x800)); DmaClear16(3, (void *)(VRAM + a * 0x800 + 0xC0), 0x440); } #ifdef NONMATCHING -void sub_8090584(u8 a, u16 b) +static void sub_8090584(u8 a, u16 b) { u8 i; //r1 u8 j; //r3 @@ -3579,7 +3531,7 @@ void sub_8090584(u8 a, u16 b) } #else __attribute__((naked)) -void sub_8090584(u8 a, u16 b) +static void sub_8090584(u8 a, u16 b) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -3685,7 +3637,7 @@ _08090640: .4byte 0x06000072\n\ //Nope, can't get this one to match, either. #ifdef NONMATCHING -void sub_8090644(u8 a, u16 b) +static void sub_8090644(u8 a, u16 b) { u8 i; u8 j; @@ -3723,7 +3675,7 @@ void sub_8090644(u8 a, u16 b) } #else __attribute__((naked)) -void sub_8090644(u8 a, u16 b) +static void sub_8090644(u8 a, u16 b) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -3846,7 +3798,7 @@ u8 sub_809070C(u16 dexNum, u32 b, u32 c) return taskId; } -void sub_8090750(u8 taskId) +static void sub_8090750(u8 taskId) { u8 spriteId; u16 dexNum = gTasks[taskId].data[1]; @@ -3930,7 +3882,7 @@ void sub_8090750(u8 taskId) } } -void sub_8090A3C(u8 taskId) +static void sub_8090A3C(u8 taskId) { if (gMain.newKeys & B_BUTTON) { @@ -3967,7 +3919,7 @@ void sub_8090A3C(u8 taskId) LoadPalette(gPokedexMenu2_Pal + 1, 0x51, 14); } -void sub_8090B8C(u8 taskId) +static void sub_8090B8C(u8 taskId) { if (!gPaletteFade.active) { @@ -3990,7 +3942,7 @@ void sub_8090B8C(u8 taskId) } } -void sub_8090C28(struct Sprite *sprite) +static void sub_8090C28(struct Sprite *sprite) { if (sprite->pos1.x < 0x78) sprite->pos1.x += 2; @@ -4003,7 +3955,7 @@ void sub_8090C28(struct Sprite *sprite) sprite->pos1.y -= 1; } -void sub_8090C68(void) +static void sub_8090C68(void) { if (gUnknown_0202FFBC->owned) { @@ -4182,7 +4134,7 @@ u16 sub_8090FF4(void) return 1; } -void sub_8091060(u16 a) +static void sub_8091060(u16 a) { if (!(a & 0x100)) { @@ -4221,18 +4173,18 @@ void sub_8091060(u16 a) } } -void sub_8091154(u16 order, u8 b, u8 c) +static void sub_8091154(u16 order, u8 b, u8 c) { u8 str[4]; - str[0] = 0xA1 + order / 100; - str[1] = 0xA1 + (order % 100) / 10; - str[2] = 0xA1 + (order % 100) % 10; + str[0] = CHAR_0 + order / 100; + str[1] = CHAR_0 + (order % 100) / 10; + str[2] = CHAR_0 + (order % 100) % 10; str[3] = EOS; MenuPrint(str, b, c); } -u8 sub_80911C8(u16 num, u8 b, u8 c) +static u8 sub_80911C8(u16 num, u8 b, u8 c) { u8 str[11]; u8 i; @@ -4255,9 +4207,9 @@ u8 sub_80911C8(u16 num, u8 b, u8 c) return i; } -u8 sub_8091260(u16 num, u8 b, u8 c, u8 d) +static u8 sub_8091260(u16 num, u8 b, u8 c, u8 d) { - u8 str[40]; // Not exactly sure how long this needs to be + u8 str[40]; u8 *end; u8 i; @@ -4280,9 +4232,9 @@ u8 sub_8091260(u16 num, u8 b, u8 c, u8 d) return i; } -void sub_8091304(const u8 *name, u8 left, u8 top) +static void sub_8091304(const u8 *name, u8 left, u8 top) { - u8 str[32]; // Not exactly sure how long this needs to be + u8 str[32]; u8 i; #if ENGLISH u8 j; @@ -4341,7 +4293,7 @@ void unref_sub_80913A4(u16 a, u8 left, u8 top) #ifdef UNITS_IMPERIAL #define CHAR_PRIME (0xB4) #define CHAR_DOUBLE_PRIME (0xB2) -void sub_8091458(u16 height, u8 left, u8 top) +static void sub_8091458(u16 height, u8 left, u8 top) { u8 buffer[16]; u32 inches, feet; @@ -4374,14 +4326,14 @@ void sub_8091458(u16 height, u8 left, u8 top) MenuPrint(buffer, left, top); } #else -void sub_8091458(u16 height, u8 left, u8 top) +static void sub_8091458(u16 height, u8 left, u8 top) { unref_sub_80913A4(height, left, top); } #endif #ifdef UNITS_IMPERIAL -void sub_8091564(u16 weight, u8 left, u8 top) +static void sub_8091564(u16 weight, u8 left, u8 top) { u8 buffer[16]; u32 lbs; @@ -4444,7 +4396,7 @@ void sub_8091564(u16 weight, u8 left, u8 top) MenuPrint(buffer, left, top); } #else -void sub_8091564(u16 arg0, u8 left, u8 top) +static void sub_8091564(u16 arg0, u8 left, u8 top) { unref_sub_80913A4(arg0, left, top); } @@ -4483,7 +4435,7 @@ static void sub_8091738(u16 num, u16 b, u16 c) CpuCopy16(arr, (u16 *)(VRAM + b * 0x4000 + c * 0x20), 0x80); } -void sub_80917CC(u16 a, u16 b) +static void sub_80917CC(u16 a, u16 b) { *(u16 *)(VRAM + a * 0x800 + 0x232) = 0xF000 + b + 0; *(u16 *)(VRAM + a * 0x800 + 0x234) = 0xF000 + b + 1; @@ -4491,7 +4443,7 @@ void sub_80917CC(u16 a, u16 b) *(u16 *)(VRAM + a * 0x800 + 0x274) = 0xF000 + b + 3; } -u16 sub_8091818(u8 a, u16 b, u16 c, u16 d) +static u16 sub_8091818(u8 a, u16 b, u16 c, u16 d) { switch (a) { @@ -4523,7 +4475,7 @@ static void nullsub_59(struct Sprite *sprite) { } -void sub_8091878(u16 a, u8 b) +static void sub_8091878(u16 a, u8 b) { gUnknown_02024E8C = gUnknown_083B57A4; gUnknown_02024E8C.paletteTag = a; @@ -4531,7 +4483,7 @@ void sub_8091878(u16 a, u8 b) gUnknown_02024E8C.anims = gSpriteAnimTable_81E7C64; } -void sub_80918B0(u16 a, u8 b) +static void sub_80918B0(u16 a, u8 b) { gUnknown_02024E8C = gUnknown_083B57A4; gUnknown_02024E8C.paletteTag = a; @@ -4585,7 +4537,7 @@ u16 sub_80918EC(u16 num, s16 x, s16 y, u16 paletteNum) return spriteId; } -u8 sub_8091A4C(u16 gender, s16 x, s16 y, u16 paletteNum) +static u8 sub_8091A4C(u16 gender, s16 x, s16 y, u16 paletteNum) { u8 spriteId; -- cgit v1.2.3 From 61e65d1b8e266bfa8909ba0d010947dcbc70979c Mon Sep 17 00:00:00 2001 From: yenatch Date: Thu, 15 Jun 2017 21:57:45 -0400 Subject: 0x134 -> SPECIES_SPINDA --- src/pokedex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/pokedex.c b/src/pokedex.c index 92db38da9..be6ef03a9 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -4507,7 +4507,7 @@ u16 sub_80918EC(u16 num, s16 x, s16 y, u16 paletteNum) gUnknown_083B5584[paletteNum], num); break; - case 0x134: + case SPECIES_SPINDA: LoadSpecialPokePic( &gMonFrontPicTable[num], gMonFrontPicCoords[num].coords, -- cgit v1.2.3