From 18e060cd532fbe5678d08dd1a1386ae0763f6fc1 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 31 May 2017 10:12:55 -0400 Subject: Start to decompile use_pokeblock.s --- asm/use_pokeblock.s | 31 ------------------------------- include/pokenav.h | 31 +++++++++++++++++++++++++++++++ include/use_pokeblock.h | 8 ++++++++ ld_script.txt | 1 + src/pokenav.c | 17 +---------------- src/use_pokeblock.c | 26 ++++++++++++++++++++++++++ 6 files changed, 67 insertions(+), 47 deletions(-) create mode 100644 include/pokenav.h create mode 100644 include/use_pokeblock.h create mode 100644 src/use_pokeblock.c diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index a9913b6d0..ba7001051 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,37 +6,6 @@ .text - thumb_func_start sub_8136130 -sub_8136130: @ 8136130 - push {r4,r5,lr} - ldr r4, _0813615C @ =gUnknown_02039304 - ldr r2, _08136160 @ =gUnknown_083DFEC4 - ldr r3, [r2] - ldr r5, _08136164 @ =0x0000d164 - adds r2, r3, r5 - str r2, [r4] - str r0, [r2, 0x8] - str r1, [r2, 0x4] - ldr r0, _08136168 @ =0x0000d162 - adds r3, r0 - movs r0, 0x2 - strb r0, [r3] - ldr r0, _0813616C @ =sub_8136294 - bl launch_c3_walk_stairs_and_run_once - ldr r0, _08136170 @ =sub_8136244 - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813615C: .4byte gUnknown_02039304 -_08136160: .4byte gUnknown_083DFEC4 -_08136164: .4byte 0x0000d164 -_08136168: .4byte 0x0000d162 -_0813616C: .4byte sub_8136294 -_08136170: .4byte sub_8136244 - thumb_func_end sub_8136130 - thumb_func_start sub_8136174 sub_8136174: @ 8136174 push {r4,r5,lr} diff --git a/include/pokenav.h b/include/pokenav.h new file mode 100644 index 000000000..df7d73b75 --- /dev/null +++ b/include/pokenav.h @@ -0,0 +1,31 @@ +// +// Created by Scott Norton on 5/31/17. +// + +#ifndef POKERUBY_POKENAV_H +#define POKERUBY_POKENAV_H + +struct UnkPokenavStruct_Sub { + /*0x0*/ u16 unk0; + /*0x2*/ u8 filler2[6]; +}; + +struct UnkPokenavStruct_Sub1 { + /*0x0*/ u32 unk0; + /*0x1*/ u32 unk4; + /*0x2*/ u32 unk8; +}; + +struct UnkPokenavStruct { + /*0x0000*/ u8 filler0000[0xCEE8]; + /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78]; + /*0xD158*/ u16 unkD158; + /*0xd15a*/ u8 fillerD15A[8]; + /*0xd162*/ u8 unkD162[2]; + /*0xd164*/ struct UnkPokenavStruct_Sub1 unkD164; +}; + +extern struct UnkPokenavStruct *gUnknown_083DFEC4; + + +#endif //POKERUBY_POKENAV_H diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h new file mode 100644 index 000000000..ca999e0ed --- /dev/null +++ b/include/use_pokeblock.h @@ -0,0 +1,8 @@ +// +// Created by Scott Norton on 5/31/17. +// + +#ifndef POKERUBY_USE_POKEBLOCK_H +#define POKERUBY_USE_POKEBLOCK_H + +#endif //POKERUBY_USE_POKEBLOCK_H diff --git a/ld_script.txt b/ld_script.txt index cae32faa2..cca808e89 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -258,6 +258,7 @@ SECTIONS { asm/decoration_inventory.o(.text); src/roamer.o(.text); asm/battle_tower.o(.text); + src/use_pokeblock.o(.text); asm/use_pokeblock.o(.text); asm/battle_anim_8137220.o(.text); src/player_pc.o(.text); diff --git a/src/pokenav.c b/src/pokenav.c index f50f039f8..4d1ecf421 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -1,24 +1,9 @@ #include "global.h" #include "battle.h" #include "data2.h" +#include "pokenav.h" #include "string_util.h" -struct UnkPokenavStruct_Sub { - /*0x0*/ u16 unk0; - /*0x2*/ u8 filler2[6]; -}; - - -struct UnkPokenavStruct { - /*0x0000*/ u8 filler0000[0xCEE8]; - /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78]; - /*0xD158*/ u16 unkD158; - -}; - -extern struct UnkPokenavStruct *gUnknown_083DFEC4; - - void sub_80F700C(u8 *arg0, u16 arg1) { struct Trainer *trainer; u8 *ptr; diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c new file mode 100644 index 000000000..78415cbd7 --- /dev/null +++ b/src/use_pokeblock.c @@ -0,0 +1,26 @@ +// +// Created by Scott Norton on 5/31/17. +// + +#include "global.h" +#include "main.h" +#include "pokemon.h" +#include "pokenav.h" +#include "use_pokeblock.h" + +asm(".text"); + +extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; +void launch_c3_walk_stairs_and_run_once(void *); +void sub_8136244(void); +void sub_8136294(void); + +void sub_8136130(u32 a0, u32 a1) +{ + gUnknown_02039304 = &gUnknown_083DFEC4->unkD164; + gUnknown_02039304->unk8 = a0; + gUnknown_02039304->unk4 = a1; + gUnknown_083DFEC4->unkD162[0] = 2; + launch_c3_walk_stairs_and_run_once(sub_8136294); + SetMainCallback2(sub_8136244); +} -- cgit v1.2.3 From 508d11da9b1503a8b40f0f34a2c2242d1ef73c7d Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 31 May 2017 10:55:51 -0400 Subject: Continue decompilation of use_pokeblock.s --- asm/use_pokeblock.s | 137 ---------------------------------------------------- include/pokenav.h | 11 +++-- src/use_pokeblock.c | 72 ++++++++++++++++++++++++++- 3 files changed, 78 insertions(+), 142 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index ba7001051..0b34669af 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,143 +6,6 @@ .text - thumb_func_start sub_8136174 -sub_8136174: @ 8136174 - push {r4,r5,lr} - ldr r5, _081361C4 @ =gUnknown_02039304 - ldr r1, [r5] - ldr r0, _081361C8 @ =gUnknown_0203930C - ldr r0, [r0] - str r0, [r1, 0x8] - ldr r0, _081361CC @ =gUnknown_02039308 - ldr r0, [r0] - str r0, [r1, 0x4] - ldr r4, _081361D0 @ =gUnknown_02039310 - ldrb r0, [r4] - bl sub_81370E4 - strb r0, [r4] - ldr r5, [r5] - movs r1, 0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bls _0813619E - movs r1, 0x1 -_0813619E: - adds r0, r5, 0 - adds r0, 0x56 - strb r1, [r0] - ldr r0, _081361D4 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _081361D8 @ =0x0000d162 - adds r0, r1 - movs r1, 0x2 - strb r1, [r0] - ldr r0, _081361DC @ =sub_8136294 - bl launch_c3_walk_stairs_and_run_once - ldr r0, _081361E0 @ =sub_81361E4 - bl SetMainCallback2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081361C4: .4byte gUnknown_02039304 -_081361C8: .4byte gUnknown_0203930C -_081361CC: .4byte gUnknown_02039308 -_081361D0: .4byte gUnknown_02039310 -_081361D4: .4byte gUnknown_083DFEC4 -_081361D8: .4byte 0x0000d162 -_081361DC: .4byte sub_8136294 -_081361E0: .4byte sub_81361E4 - thumb_func_end sub_8136174 - - thumb_func_start sub_81361E4 -sub_81361E4: @ 81361E4 - push {r4,lr} - ldr r4, _08136220 @ =gUnknown_02039304 - ldr r0, [r4] - ldr r0, [r0] - bl _call_via_r0 - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - ldr r4, [r4] - ldr r1, [r4] - ldr r0, _08136224 @ =sub_81365C8 - cmp r1, r0 - bne _0813621A - movs r0, 0x80 - lsls r0, 19 - movs r1, 0 - strh r1, [r0] - adds r0, r4, 0 - adds r0, 0x50 - strb r1, [r0] - ldr r0, _08136228 @ =sub_813622C - bl SetMainCallback2 -_0813621A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08136220: .4byte gUnknown_02039304 -_08136224: .4byte sub_81365C8 -_08136228: .4byte sub_813622C - thumb_func_end sub_81361E4 - - thumb_func_start sub_813622C -sub_813622C: @ 813622C - push {lr} - bl sub_81368A4 - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_813622C - - thumb_func_start sub_8136244 -sub_8136244: @ 8136244 - push {lr} - ldr r0, _08136260 @ =gUnknown_02039304 - ldr r0, [r0] - ldr r0, [r0] - bl _call_via_r0 - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - .align 2, 0 -_08136260: .4byte gUnknown_02039304 - thumb_func_end sub_8136244 - - thumb_func_start sub_8136264 -sub_8136264: @ 8136264 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - movs r0, 0x6 - bl sub_80F5CDC - bl sub_8089668 - pop {r0} - bx r0 - thumb_func_end sub_8136264 - - thumb_func_start launch_c3_walk_stairs_and_run_once -launch_c3_walk_stairs_and_run_once: @ 8136280 - ldr r1, _08136290 @ =gUnknown_02039304 - ldr r1, [r1] - str r0, [r1] - adds r1, 0x50 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_08136290: .4byte gUnknown_02039304 - thumb_func_end launch_c3_walk_stairs_and_run_once - thumb_func_start sub_8136294 sub_8136294: @ 8136294 push {r4,r5,lr} diff --git a/include/pokenav.h b/include/pokenav.h index df7d73b75..2a8060191 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -11,9 +11,13 @@ struct UnkPokenavStruct_Sub { }; struct UnkPokenavStruct_Sub1 { - /*0x0*/ u32 unk0; - /*0x1*/ u32 unk4; - /*0x2*/ u32 unk8; + /*0x00*/ void (*unk0)(void); + /*0x04*/ void *unk4; + /*0x08*/ void *unk8; + /*0x0C*/ u8 fillerC[0x44]; + /*0x50*/ u8 unk50; + /*0x51*/ u8 unk51[5]; + /*0x56*/ u8 unk56; }; struct UnkPokenavStruct { @@ -27,5 +31,6 @@ struct UnkPokenavStruct { extern struct UnkPokenavStruct *gUnknown_083DFEC4; +void sub_80F5CDC(u8); #endif //POKERUBY_POKENAV_H diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 78415cbd7..c45064b80 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -4,18 +4,30 @@ #include "global.h" #include "main.h" +#include "asm.h" +#include "sprite.h" #include "pokemon.h" #include "pokenav.h" +#include "palette.h" #include "use_pokeblock.h" asm(".text"); +void *gUnknown_02039308; +void *gUnknown_0203930C; +u8 gUnknown_02039310; + extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; -void launch_c3_walk_stairs_and_run_once(void *); +void launch_c3_walk_stairs_and_run_once(void (*const)(void)); +void sub_81361E4(void); +void sub_813622C(void); void sub_8136244(void); void sub_8136294(void); +void sub_81365C8(void); +void sub_81368A4(void); +u8 sub_81370E4(u8); -void sub_8136130(u32 a0, u32 a1) +void sub_8136130(void *a0, void *a1) { gUnknown_02039304 = &gUnknown_083DFEC4->unkD164; gUnknown_02039304->unk8 = a0; @@ -24,3 +36,59 @@ void sub_8136130(u32 a0, u32 a1) launch_c3_walk_stairs_and_run_once(sub_8136294); SetMainCallback2(sub_8136244); } + +void sub_8136174(void) +{ + gUnknown_02039304->unk8 = gUnknown_0203930C; + gUnknown_02039304->unk4 = gUnknown_02039308; + gUnknown_02039310 = sub_81370E4(gUnknown_02039310); + gUnknown_02039304->unk56 = gUnknown_02039310 < 4 ? 0 : 1; + gUnknown_083DFEC4->unkD162[0] = 2; + launch_c3_walk_stairs_and_run_once(sub_8136294); + SetMainCallback2(sub_81361E4); +} + +void sub_81361E4(void) +{ + gUnknown_02039304->unk0(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + if (gUnknown_02039304->unk0 == sub_81365C8) + { + REG_DISPCNT = 0; + gUnknown_02039304->unk50 = 0; + SetMainCallback2(sub_813622C); + } +} + +void sub_813622C(void) +{ + sub_81368A4(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_8136244(void) +{ + gUnknown_02039304->unk0(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_8136264(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_80F5CDC(6); + sub_8089668(); +} + +void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) +{ + gUnknown_02039304->unk0 = func; + gUnknown_02039304->unk50 = 0; +} -- cgit v1.2.3 From e3025532d0d9ce7ad3f4581dac145f97d77905a1 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 31 May 2017 13:07:23 -0400 Subject: Some more decompilation (giant function nonmatching, need help fixing pokenav struct?) --- asm/use_pokeblock.s | 370 ------------------------------------- include/main.h | 2 +- include/pokenav.h | 45 ++++- src/use_pokeblock.c | 511 +++++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 552 insertions(+), 376 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 0b34669af..a79b07bc6 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,376 +6,6 @@ .text - thumb_func_start sub_8136294 -sub_8136294: @ 8136294 - push {r4,r5,lr} - sub sp, 0x4 - ldr r1, _081362B4 @ =gUnknown_02039304 - ldr r0, [r1] - adds r0, 0x50 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x16 - bls _081362A8 - b _0813657A -_081362A8: - lsls r0, 2 - ldr r1, _081362B8 @ =_081362BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081362B4: .4byte gUnknown_02039304 -_081362B8: .4byte _081362BC - .align 2, 0 -_081362BC: - .4byte _08136318 - .4byte _08136354 - .4byte _0813635E - .4byte _08136366 - .4byte _08136374 - .4byte _08136380 - .4byte _0813638C - .4byte _081363B8 - .4byte _081363C8 - .4byte _081363DC - .4byte _081363EE - .4byte _08136404 - .4byte _08136448 - .4byte _08136464 - .4byte _08136488 - .4byte _08136494 - .4byte _0813649A - .4byte _081364D8 - .4byte _081364FC - .4byte _08136508 - .4byte _08136520 - .4byte _08136538 - .4byte _0813656C -_08136318: - bl is_c1_link_related_active - ldr r1, _08136344 @ =gUnknown_083DFEC4 - ldr r1, [r1] - ldr r2, _08136348 @ =0x00006dac - adds r1, r2 - strb r0, [r1] - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08136330 - b _0813657A -_08136330: - ldr r4, _0813634C @ =gUnknown_02039304 - ldr r0, [r4] - adds r0, 0x55 - strb r1, [r0] - ldr r0, _08136350 @ =sub_81365A0 - bl launch_c3_walk_stairs_and_run_once - ldr r1, [r4] - b _08136528 - .align 2, 0 -_08136344: .4byte gUnknown_083DFEC4 -_08136348: .4byte 0x00006dac -_0813634C: .4byte gUnknown_02039304 -_08136350: .4byte sub_81365A0 -_08136354: - bl ResetSpriteData - bl FreeAllSpritePalettes - b _08136524 -_0813635E: - movs r0, 0 - bl SetVBlankCallback - b _08136524 -_08136366: - ldr r0, _08136370 @ =gWindowConfig_81E7080 - bl SetUpWindowConfig - b _08136524 - .align 2, 0 -_08136370: .4byte gWindowConfig_81E7080 -_08136374: - ldr r0, _0813637C @ =gWindowConfig_81E7080 - bl MultistepInitMenuWindowBegin - b _08136524 - .align 2, 0 -_0813637C: .4byte gWindowConfig_81E7080 -_08136380: - bl MultistepInitMenuWindowContinue - cmp r0, 0 - bne _0813638A - b _0813657A -_0813638A: - b _08136524 -_0813638C: - ldr r0, _081363AC @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r4, _081363B0 @ =0x000076aa - adds r0, r1, r4 - movs r2, 0 - strb r2, [r0] - ldr r4, _081363B4 @ =0x000087e0 - adds r0, r1, r4 - str r2, [r0] - movs r0, 0xC3 - lsls r0, 2 - adds r1, r0 - movs r0, 0x20 - strh r0, [r1] - ldr r1, [r3] - b _08136528 - .align 2, 0 -_081363AC: .4byte gUnknown_083DFEC4 -_081363B0: .4byte 0x000076aa -_081363B4: .4byte 0x000087e0 -_081363B8: - bl sub_80F2688 - ldr r0, _081363D8 @ =gUnknown_02039304 - ldr r1, [r0] - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_081363C8: - bl sub_80F26BC - lsls r0, 24 - cmp r0, 0 - beq _081363D4 - b _0813657A -_081363D4: - b _08136524 - .align 2, 0 -_081363D8: .4byte gUnknown_02039304 -_081363DC: - movs r0, 0x1 - bl sub_80F2C80 - ldr r0, _08136400 @ =gUnknown_02039304 - ldr r1, [r0] - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_081363EE: - movs r0, 0x1 - bl sub_80F2CBC - lsls r0, 24 - cmp r0, 0 - beq _081363FC - b _0813657A -_081363FC: - b _08136524 - .align 2, 0 -_08136400: .4byte gUnknown_02039304 -_08136404: - ldr r1, _08136434 @ =gKeyRepeatStartDelay - movs r0, 0x14 - strh r0, [r1] - bl CalculatePlayerPartyCount - ldr r1, _08136438 @ =gUnknown_083DFEC4 - ldr r4, [r1] - ldr r2, _0813643C @ =0x00008828 - adds r1, r4, r2 - movs r5, 0 - strb r0, [r1] - ldr r1, _08136440 @ =0x00009344 - adds r0, r4, r1 - strb r5, [r0] - subs r2, 0xC0 - adds r0, r4, r2 - str r5, [r0] - bl sub_80F4BD0 - ldr r0, _08136444 @ =0x0000d160 - adds r4, r0 - strh r5, [r4] - b _08136524 - .align 2, 0 -_08136434: .4byte gKeyRepeatStartDelay -_08136438: .4byte gUnknown_083DFEC4 -_0813643C: .4byte 0x00008828 -_08136440: .4byte 0x00009344 -_08136444: .4byte 0x0000d160 -_08136448: - bl sub_80F1778 - lsls r0, 24 - cmp r0, 0 - beq _08136454 - b _0813657A -_08136454: - ldr r0, _08136460 @ =REG_BG2VOFS - movs r1, 0x6 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - b _08136524 - .align 2, 0 -_08136460: .4byte REG_BG2VOFS -_08136464: - movs r0, 0 - bl sub_80F2E18 - ldr r0, _0813647C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _08136480 @ =0x00008768 - adds r0, r1 - ldr r1, [r0] - ldr r0, _08136484 @ =0x0000ffd8 - strh r0, [r1, 0x26] - b _08136524 - .align 2, 0 -_0813647C: .4byte gUnknown_083DFEC4 -_08136480: .4byte 0x00008768 -_08136484: .4byte 0x0000ffd8 -_08136488: - bl sub_80F170C - lsls r0, 24 - cmp r0, 0 - bne _0813657A - b _08136524 -_08136494: - bl sub_80F33A8 - b _08136524 -_0813649A: - ldr r1, _081364C4 @ =0x0600f800 - movs r2, 0 - str r2, [sp] - ldr r0, _081364C8 @ =0x040000d4 - mov r4, sp - str r4, [r0] - str r1, [r0, 0x4] - ldr r1, _081364CC @ =0x85000200 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - ldr r0, _081364D0 @ =REG_BG1VOFS - strh r2, [r0] - subs r0, 0x2 - strh r2, [r0] - ldr r1, _081364D4 @ =REG_BG1CNT - movs r2, 0xF8 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, [r3] - b _08136528 - .align 2, 0 -_081364C4: .4byte 0x0600f800 -_081364C8: .4byte 0x040000d4 -_081364CC: .4byte 0x85000200 -_081364D0: .4byte REG_BG1VOFS -_081364D4: .4byte REG_BG1CNT -_081364D8: - ldr r0, _081364F0 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r4, _081364F4 @ =0x00008ff0 - adds r0, r1, r4 - ldr r2, _081364F8 @ =0x00009004 - adds r1, r2 - bl sub_80F567C - bl sub_80F5B38 - b _08136524 - .align 2, 0 -_081364F0: .4byte gUnknown_083DFEC4 -_081364F4: .4byte 0x00008ff0 -_081364F8: .4byte 0x00009004 -_081364FC: - bl sub_80F5B50 - lsls r0, 24 - cmp r0, 0 - bne _0813657A - b _08136524 -_08136508: - ldr r0, _08136518 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r4, _0813651C @ =0x00009004 - adds r0, r4 - bl sub_80F556C - b _08136524 - .align 2, 0 -_08136518: .4byte gUnknown_083DFEC4 -_0813651C: .4byte 0x00009004 -_08136520: - bl sub_80F1934 -_08136524: - ldr r0, _08136534 @ =gUnknown_02039304 - ldr r1, [r0] -_08136528: - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0813657A - .align 2, 0 -_08136534: .4byte gUnknown_02039304 -_08136538: - ldr r1, _08136584 @ =REG_WIN0H - movs r0, 0xF0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x9B - strh r0, [r1] - ldr r0, _08136588 @ =REG_WIN0V - ldr r2, _0813658C @ =0x00003273 - adds r1, r2, 0 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - ldr r1, _08136590 @ =REG_WININ - ldr r4, _08136594 @ =0x00003f3f - adds r0, r4, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x1B - strh r0, [r1] - subs r1, 0x38 - movs r0, 0x28 - strh r0, [r1] - subs r1, 0x12 - ldr r2, _08136598 @ =0x00007f40 - adds r0, r2, 0 - strh r0, [r1] -_0813656C: - ldr r0, [r3] - adds r0, 0x55 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _0813659C @ =sub_81365C8 - bl launch_c3_walk_stairs_and_run_once -_0813657A: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08136584: .4byte REG_WIN0H -_08136588: .4byte REG_WIN0V -_0813658C: .4byte 0x00003273 -_08136590: .4byte REG_WININ -_08136594: .4byte 0x00003f3f -_08136598: .4byte 0x00007f40 -_0813659C: .4byte sub_81365C8 - thumb_func_end sub_8136294 - - thumb_func_start sub_81365A0 -sub_81365A0: @ 81365A0 - push {r4,lr} - ldr r1, _081365C4 @ =gUnknown_02039304 - ldr r0, [r1] - adds r0, 0x55 - ldrb r0, [r0] - cmp r0, 0 - bne _081365BE - adds r4, r1, 0 -_081365B0: - bl sub_8136294 - ldr r0, [r4] - adds r0, 0x55 - ldrb r0, [r0] - cmp r0, 0 - beq _081365B0 -_081365BE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081365C4: .4byte gUnknown_02039304 - thumb_func_end sub_81365A0 - thumb_func_start sub_81365C8 sub_81365C8: @ 81365C8 push {r4,lr} diff --git a/include/main.h b/include/main.h index e0cb09370..ff9bb89c7 100644 --- a/include/main.h +++ b/include/main.h @@ -46,8 +46,8 @@ struct Main extern u8 gLinkTransferringData; extern struct Main gMain; extern bool8 gSoftResetDisabled; -extern bool8 gLinkVSyncDisabled; +extern bool8 gLinkVSyncDisabled; extern const u8 gGameVersion; extern const u8 gGameLanguage; diff --git a/include/pokenav.h b/include/pokenav.h index 2a8060191..f32611161 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -16,21 +16,60 @@ struct UnkPokenavStruct_Sub1 { /*0x08*/ void *unk8; /*0x0C*/ u8 fillerC[0x44]; /*0x50*/ u8 unk50; - /*0x51*/ u8 unk51[5]; + /*0x51*/ u8 unk51[4]; + /*0x56*/ u8 unk55; /*0x56*/ u8 unk56; }; +struct UnkPokenavStruct_Sub2 { + /*0x00*/ u8 filler_00[0x26]; + /*0x26*/ u16 unk26; +}; + struct UnkPokenavStruct { - /*0x0000*/ u8 filler0000[0xCEE8]; + /*0x0000*/ u8 filler0000[0x30c]; + /*0x0000*/ u16 unk030C; + /*0x0000*/ u8 filler030E[0x6a9e]; + /*0x6DAC*/ u8 unk6DAC; + /*0x6DAD*/ u8 filler6DAD[0x8fd]; + /*0x6DAD*/ u8 unk76AA; + /*0x6DAD*/ u8 filler76AB[0x10bd]; + /*0x6DAD*/ struct UnkPokenavStruct_Sub2 *unk8768; + /*0x6DAD*/ u8 filler876C[0x74]; + /*0x6DAD*/ void *unk87E0; + /*0x6DAD*/ u8 filler87E4[0x44]; + /*0x6DAD*/ u8 unk8828; + /*0x6DAD*/ u8 filler8829[0x7c7]; + /*0x6DAD*/ u8 unk8ff0; + /*0x6DAD*/ u8 filler8ff1[0x13]; + /*0x6DAD*/ u8 unk9004; + /*0x6DAD*/ u8 filler9005[0x33f]; + /*0x6DAD*/ u8 unk9344; + /*0x6DAD*/ u8 filler9345[0x3ba3]; /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78]; /*0xD158*/ u16 unkD158; - /*0xd15a*/ u8 fillerD15A[8]; + /*0xd15a*/ u8 fillerD15A[6]; + /*0xd162*/ u16 unkD160; /*0xd162*/ u8 unkD162[2]; /*0xd164*/ struct UnkPokenavStruct_Sub1 unkD164; }; extern struct UnkPokenavStruct *gUnknown_083DFEC4; +bool8 sub_80F170C(void); +bool8 sub_80F1778(void); +void sub_80F1934(void); +void sub_80F2C80(u8); +void sub_80F2688(void); +bool8 sub_80F26BC(void); +bool8 sub_80F2CBC(u8); +void sub_80F2E18(u8); +void sub_80F33A8(void); +void sub_80F4BD0(void); +void sub_80F556C(void *); +void sub_80F567C(void *, void *); +void sub_80F5B38(void); +bool8 sub_80F5B50(void); void sub_80F5CDC(u8); #endif //POKERUBY_POKENAV_H diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index c45064b80..351248cbd 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -5,24 +5,30 @@ #include "global.h" #include "main.h" #include "asm.h" -#include "sprite.h" +#include "rom4.h" #include "pokemon.h" #include "pokenav.h" #include "palette.h" +#include "text.h" +#include "menu.h" #include "use_pokeblock.h" -asm(".text"); +asm(".text\n" + ".include \"constants/gba_constants.inc\""); void *gUnknown_02039308; void *gUnknown_0203930C; u8 gUnknown_02039310; extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; +extern u16 gKeyRepeatStartDelay; + void launch_c3_walk_stairs_and_run_once(void (*const)(void)); void sub_81361E4(void); void sub_813622C(void); void sub_8136244(void); void sub_8136294(void); +void sub_81365A0(void); void sub_81365C8(void); void sub_81368A4(void); u8 sub_81370E4(u8); @@ -92,3 +98,504 @@ void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) gUnknown_02039304->unk0 = func; gUnknown_02039304->unk50 = 0; } + +#ifdef NONMATCHING +void sub_8136294(void) +{ + u32 dma3sad; + bool32 c1LinkRelatedActive; + switch (gUnknown_02039304->unk50) + { + case 0: + c1LinkRelatedActive = is_c1_link_related_active(); + gUnknown_083DFEC4->unk6DAC = c1LinkRelatedActive; + if ((bool8)c1LinkRelatedActive == FALSE) + { + gUnknown_02039304->unk55 = 0; + launch_c3_walk_stairs_and_run_once(sub_81365A0); + gUnknown_02039304->unk50++; + } + break; + case 1: + ResetSpriteData(); + FreeAllSpritePalettes(); + gUnknown_02039304->unk50++; + break; + case 2: + SetVBlankCallback(NULL); + gUnknown_02039304->unk50++; + break; + case 3: + SetUpWindowConfig(&gWindowConfig_81E7080); + gUnknown_02039304->unk50++; + break; + case 4: + MultistepInitMenuWindowBegin(&gWindowConfig_81E7080); + gUnknown_02039304->unk50++; + break; + case 5: + if (MultistepInitMenuWindowContinue()) + { + gUnknown_02039304->unk50++; + } + break; + case 6: + gUnknown_083DFEC4->unk76AA = 0; + gUnknown_083DFEC4->unk87E0 = NULL; + gUnknown_083DFEC4->unk030C = 0x20; + gUnknown_02039304->unk50++; + break; + case 7: + sub_80F2688(); + gUnknown_02039304->unk50++; + // fallthrough + case 8: + if (!sub_80F26BC()) + { + gUnknown_02039304->unk50++; + } + break; + case 9: + sub_80F2C80(1); + gUnknown_02039304->unk50++; + // fallthrough + case 10: + if (!sub_80F2CBC(1)) + { + gUnknown_02039304->unk50++; + } + break; + case 11: + gKeyRepeatStartDelay = 20; + gUnknown_083DFEC4->unk8828 = CalculatePlayerPartyCount(); + gUnknown_083DFEC4->unk9344 = 0; + gUnknown_083DFEC4->unk8768 = NULL; + sub_80F4BD0(); + gUnknown_083DFEC4->unkD160 = 0; + gUnknown_02039304->unk50++; + break; + case 12: + if (!sub_80F1778()) + { + REG_BG2VOFS = 6; + REG_BG3VOFS = 6; + gUnknown_02039304->unk50++; + } + break; + case 13: + sub_80F2E18(0); + gUnknown_083DFEC4->unk8768->unk26 = 0xffd8; + gUnknown_02039304->unk50++; + break; + case 14: + if (!sub_80F170C()) + { + gUnknown_02039304->unk50++; + } + break; + case 15: + sub_80F33A8(); + gUnknown_02039304->unk50++; + break; + case 16: + dma3sad = 0; + REG_DMA3SAD = (vu32)&dma3sad; + REG_DMA3DAD = 0x600F800; + REG_DMA3CNT = 0x85000200; + REG_BG1VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1CNT = 0x1f00; + gUnknown_02039304->unk50++; + break; + case 17: + sub_80F567C(&gUnknown_083DFEC4->unk8ff0, &gUnknown_083DFEC4->unk9004); + sub_80F5B38(); + gUnknown_02039304->unk50++; + break; + case 18: + if (!sub_80F5B50()) + { + gUnknown_02039304->unk50++; + } + break; + case 19: + sub_80F556C(&gUnknown_083DFEC4->unk9004); + gUnknown_02039304->unk50++; + break; + case 20: + sub_80F1934(); + gUnknown_02039304->unk50++; + break; + case 21: + REG_WIN0H = 0xf0; + REG_WIN1H = 0x9b; + REG_WIN0V = 0x3273; + REG_WIN1V = 0x3273; + REG_WININ = 0x3f3f; + REG_WINOUT = 0x1b; + REG_BG0VOFS = 0x28; + REG_DISPCNT = 0x7f40; + // fallthrough + case 22: + gUnknown_02039304->unk55 = 1; + launch_c3_walk_stairs_and_run_once(sub_81365C8); + break; + } +} +#else +__attribute__((naked)) +void sub_8136294(void) +{ + asm(".syntax unified\n" + "\tpush {r4,r5,lr}\n" + "\tsub sp, 0x4\n" + "\tldr r1, _081362B4 @ =gUnknown_02039304\n" + "\tldr r0, [r1]\n" + "\tadds r0, 0x50\n" + "\tldrb r0, [r0]\n" + "\tadds r3, r1, 0\n" + "\tcmp r0, 0x16\n" + "\tbls _081362A8\n" + "\tb _0813657A\n" + "_081362A8:\n" + "\tlsls r0, 2\n" + "\tldr r1, _081362B8 @ =_081362BC\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_081362B4: .4byte gUnknown_02039304\n" + "_081362B8: .4byte _081362BC\n" + "\t.align 2, 0\n" + "_081362BC:\n" + "\t.4byte _08136318\n" + "\t.4byte _08136354\n" + "\t.4byte _0813635E\n" + "\t.4byte _08136366\n" + "\t.4byte _08136374\n" + "\t.4byte _08136380\n" + "\t.4byte _0813638C\n" + "\t.4byte _081363B8\n" + "\t.4byte _081363C8\n" + "\t.4byte _081363DC\n" + "\t.4byte _081363EE\n" + "\t.4byte _08136404\n" + "\t.4byte _08136448\n" + "\t.4byte _08136464\n" + "\t.4byte _08136488\n" + "\t.4byte _08136494\n" + "\t.4byte _0813649A\n" + "\t.4byte _081364D8\n" + "\t.4byte _081364FC\n" + "\t.4byte _08136508\n" + "\t.4byte _08136520\n" + "\t.4byte _08136538\n" + "\t.4byte _0813656C\n" + "_08136318:\n" + "\tbl is_c1_link_related_active\n" + "\tldr r1, _08136344 @ =gUnknown_083DFEC4\n" + "\tldr r1, [r1]\n" + "\tldr r2, _08136348 @ =0x00006dac\n" + "\tadds r1, r2\n" + "\tstrb r0, [r1]\n" + "\tlsls r0, 24\n" + "\tlsrs r1, r0, 24\n" + "\tcmp r1, 0\n" + "\tbeq _08136330\n" + "\tb _0813657A\n" + "_08136330:\n" + "\tldr r4, _0813634C @ =gUnknown_02039304\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x55\n" + "\tstrb r1, [r0]\n" + "\tldr r0, _08136350 @ =sub_81365A0\n" + "\tbl launch_c3_walk_stairs_and_run_once\n" + "\tldr r1, [r4]\n" + "\tb _08136528\n" + "\t.align 2, 0\n" + "_08136344: .4byte gUnknown_083DFEC4\n" + "_08136348: .4byte 0x00006dac\n" + "_0813634C: .4byte gUnknown_02039304\n" + "_08136350: .4byte sub_81365A0\n" + "_08136354:\n" + "\tbl ResetSpriteData\n" + "\tbl FreeAllSpritePalettes\n" + "\tb _08136524\n" + "_0813635E:\n" + "\tmovs r0, 0\n" + "\tbl SetVBlankCallback\n" + "\tb _08136524\n" + "_08136366:\n" + "\tldr r0, _08136370 @ =gWindowConfig_81E7080\n" + "\tbl SetUpWindowConfig\n" + "\tb _08136524\n" + "\t.align 2, 0\n" + "_08136370: .4byte gWindowConfig_81E7080\n" + "_08136374:\n" + "\tldr r0, _0813637C @ =gWindowConfig_81E7080\n" + "\tbl MultistepInitMenuWindowBegin\n" + "\tb _08136524\n" + "\t.align 2, 0\n" + "_0813637C: .4byte gWindowConfig_81E7080\n" + "_08136380:\n" + "\tbl MultistepInitMenuWindowContinue\n" + "\tcmp r0, 0\n" + "\tbne _0813638A\n" + "\tb _0813657A\n" + "_0813638A:\n" + "\tb _08136524\n" + "_0813638C:\n" + "\tldr r0, _081363AC @ =gUnknown_083DFEC4\n" + "\tldr r1, [r0]\n" + "\tldr r4, _081363B0 @ =0x000076aa\n" + "\tadds r0, r1, r4\n" + "\tmovs r2, 0\n" + "\tstrb r2, [r0]\n" + "\tldr r4, _081363B4 @ =0x000087e0\n" + "\tadds r0, r1, r4\n" + "\tstr r2, [r0]\n" + "\tmovs r0, 0xC3\n" + "\tlsls r0, 2\n" + "\tadds r1, r0\n" + "\tmovs r0, 0x20\n" + "\tstrh r0, [r1]\n" + "\tldr r1, [r3]\n" + "\tb _08136528\n" + "\t.align 2, 0\n" + "_081363AC: .4byte gUnknown_083DFEC4\n" + "_081363B0: .4byte 0x000076aa\n" + "_081363B4: .4byte 0x000087e0\n" + "_081363B8:\n" + "\tbl sub_80F2688\n" + "\tldr r0, _081363D8 @ =gUnknown_02039304\n" + "\tldr r1, [r0]\n" + "\tadds r1, 0x50\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "_081363C8:\n" + "\tbl sub_80F26BC\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _081363D4\n" + "\tb _0813657A\n" + "_081363D4:\n" + "\tb _08136524\n" + "\t.align 2, 0\n" + "_081363D8: .4byte gUnknown_02039304\n" + "_081363DC:\n" + "\tmovs r0, 0x1\n" + "\tbl sub_80F2C80\n" + "\tldr r0, _08136400 @ =gUnknown_02039304\n" + "\tldr r1, [r0]\n" + "\tadds r1, 0x50\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "_081363EE:\n" + "\tmovs r0, 0x1\n" + "\tbl sub_80F2CBC\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _081363FC\n" + "\tb _0813657A\n" + "_081363FC:\n" + "\tb _08136524\n" + "\t.align 2, 0\n" + "_08136400: .4byte gUnknown_02039304\n" + "_08136404:\n" + "\tldr r1, _08136434 @ =gKeyRepeatStartDelay\n" + "\tmovs r0, 0x14\n" + "\tstrh r0, [r1]\n" + "\tbl CalculatePlayerPartyCount\n" + "\tldr r1, _08136438 @ =gUnknown_083DFEC4\n" + "\tldr r4, [r1]\n" + "\tldr r2, _0813643C @ =0x00008828\n" + "\tadds r1, r4, r2\n" + "\tmovs r5, 0\n" + "\tstrb r0, [r1]\n" + "\tldr r1, _08136440 @ =0x00009344\n" + "\tadds r0, r4, r1\n" + "\tstrb r5, [r0]\n" + "\tsubs r2, 0xC0\n" + "\tadds r0, r4, r2\n" + "\tstr r5, [r0]\n" + "\tbl sub_80F4BD0\n" + "\tldr r0, _08136444 @ =0x0000d160\n" + "\tadds r4, r0\n" + "\tstrh r5, [r4]\n" + "\tb _08136524\n" + "\t.align 2, 0\n" + "_08136434: .4byte gKeyRepeatStartDelay\n" + "_08136438: .4byte gUnknown_083DFEC4\n" + "_0813643C: .4byte 0x00008828\n" + "_08136440: .4byte 0x00009344\n" + "_08136444: .4byte 0x0000d160\n" + "_08136448:\n" + "\tbl sub_80F1778\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08136454\n" + "\tb _0813657A\n" + "_08136454:\n" + "\tldr r0, _08136460 @ =REG_BG2VOFS\n" + "\tmovs r1, 0x6\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x4\n" + "\tstrh r1, [r0]\n" + "\tb _08136524\n" + "\t.align 2, 0\n" + "_08136460: .4byte REG_BG2VOFS\n" + "_08136464:\n" + "\tmovs r0, 0\n" + "\tbl sub_80F2E18\n" + "\tldr r0, _0813647C @ =gUnknown_083DFEC4\n" + "\tldr r0, [r0]\n" + "\tldr r1, _08136480 @ =0x00008768\n" + "\tadds r0, r1\n" + "\tldr r1, [r0]\n" + "\tldr r0, _08136484 @ =0x0000ffd8\n" + "\tstrh r0, [r1, 0x26]\n" + "\tb _08136524\n" + "\t.align 2, 0\n" + "_0813647C: .4byte gUnknown_083DFEC4\n" + "_08136480: .4byte 0x00008768\n" + "_08136484: .4byte 0x0000ffd8\n" + "_08136488:\n" + "\tbl sub_80F170C\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0813657A\n" + "\tb _08136524\n" + "_08136494:\n" + "\tbl sub_80F33A8\n" + "\tb _08136524\n" + "_0813649A:\n" + "\tldr r1, _081364C4 @ =0x0600f800\n" + "\tmovs r2, 0\n" + "\tstr r2, [sp]\n" + "\tldr r0, _081364C8 @ =0x040000d4\n" + "\tmov r4, sp\n" + "\tstr r4, [r0]\n" + "\tstr r1, [r0, 0x4]\n" + "\tldr r1, _081364CC @ =0x85000200\n" + "\tstr r1, [r0, 0x8]\n" + "\tldr r0, [r0, 0x8]\n" + "\tldr r0, _081364D0 @ =REG_BG1VOFS\n" + "\tstrh r2, [r0]\n" + "\tsubs r0, 0x2\n" + "\tstrh r2, [r0]\n" + "\tldr r1, _081364D4 @ =REG_BG1CNT\n" + "\tmovs r2, 0xF8\n" + "\tlsls r2, 5\n" + "\tadds r0, r2, 0\n" + "\tstrh r0, [r1]\n" + "\tldr r1, [r3]\n" + "\tb _08136528\n" + "\t.align 2, 0\n" + "_081364C4: .4byte 0x0600f800\n" + "_081364C8: .4byte 0x040000d4\n" + "_081364CC: .4byte 0x85000200\n" + "_081364D0: .4byte REG_BG1VOFS\n" + "_081364D4: .4byte REG_BG1CNT\n" + "_081364D8:\n" + "\tldr r0, _081364F0 @ =gUnknown_083DFEC4\n" + "\tldr r1, [r0]\n" + "\tldr r4, _081364F4 @ =0x00008ff0\n" + "\tadds r0, r1, r4\n" + "\tldr r2, _081364F8 @ =0x00009004\n" + "\tadds r1, r2\n" + "\tbl sub_80F567C\n" + "\tbl sub_80F5B38\n" + "\tb _08136524\n" + "\t.align 2, 0\n" + "_081364F0: .4byte gUnknown_083DFEC4\n" + "_081364F4: .4byte 0x00008ff0\n" + "_081364F8: .4byte 0x00009004\n" + "_081364FC:\n" + "\tbl sub_80F5B50\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _0813657A\n" + "\tb _08136524\n" + "_08136508:\n" + "\tldr r0, _08136518 @ =gUnknown_083DFEC4\n" + "\tldr r0, [r0]\n" + "\tldr r4, _0813651C @ =0x00009004\n" + "\tadds r0, r4\n" + "\tbl sub_80F556C\n" + "\tb _08136524\n" + "\t.align 2, 0\n" + "_08136518: .4byte gUnknown_083DFEC4\n" + "_0813651C: .4byte 0x00009004\n" + "_08136520:\n" + "\tbl sub_80F1934\n" + "_08136524:\n" + "\tldr r0, _08136534 @ =gUnknown_02039304\n" + "\tldr r1, [r0]\n" + "_08136528:\n" + "\tadds r1, 0x50\n" + "\tldrb r0, [r1]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r1]\n" + "\tb _0813657A\n" + "\t.align 2, 0\n" + "_08136534: .4byte gUnknown_02039304\n" + "_08136538:\n" + "\tldr r1, _08136584 @ =REG_WIN0H\n" + "\tmovs r0, 0xF0\n" + "\tstrh r0, [r1]\n" + "\tadds r1, 0x2\n" + "\tmovs r0, 0x9B\n" + "\tstrh r0, [r1]\n" + "\tldr r0, _08136588 @ =REG_WIN0V\n" + "\tldr r2, _0813658C @ =0x00003273\n" + "\tadds r1, r2, 0\n" + "\tstrh r1, [r0]\n" + "\tadds r0, 0x2\n" + "\tstrh r1, [r0]\n" + "\tldr r1, _08136590 @ =REG_WININ\n" + "\tldr r4, _08136594 @ =0x00003f3f\n" + "\tadds r0, r4, 0\n" + "\tstrh r0, [r1]\n" + "\tadds r1, 0x2\n" + "\tmovs r0, 0x1B\n" + "\tstrh r0, [r1]\n" + "\tsubs r1, 0x38\n" + "\tmovs r0, 0x28\n" + "\tstrh r0, [r1]\n" + "\tsubs r1, 0x12\n" + "\tldr r2, _08136598 @ =0x00007f40\n" + "\tadds r0, r2, 0\n" + "\tstrh r0, [r1]\n" + "_0813656C:\n" + "\tldr r0, [r3]\n" + "\tadds r0, 0x55\n" + "\tmovs r1, 0x1\n" + "\tstrb r1, [r0]\n" + "\tldr r0, _0813659C @ =sub_81365C8\n" + "\tbl launch_c3_walk_stairs_and_run_once\n" + "_0813657A:\n" + "\tadd sp, 0x4\n" + "\tpop {r4,r5}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08136584: .4byte REG_WIN0H\n" + "_08136588: .4byte REG_WIN0V\n" + "_0813658C: .4byte 0x00003273\n" + "_08136590: .4byte REG_WININ\n" + "_08136594: .4byte 0x00003f3f\n" + "_08136598: .4byte 0x00007f40\n" + "_0813659C: .4byte sub_81365C8\n" + ".syntax divided\n"); +} +#endif + +void sub_81365A0(void) +{ + while (!gUnknown_02039304->unk55) + { + sub_8136294(); + } +} -- cgit v1.2.3 From 39efcb2a6d169fba0ff33f1bd25e2947b74881a0 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 31 May 2017 13:37:37 -0400 Subject: sub_81365C8 --- asm/use_pokeblock.s | 54 ----------------------------------------------------- include/pokenav.h | 2 ++ src/use_pokeblock.c | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+), 54 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index a79b07bc6..c8e96ae0b 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,60 +6,6 @@ .text - thumb_func_start sub_81365C8 -sub_81365C8: @ 81365C8 - push {r4,lr} - sub sp, 0x4 - ldr r4, _081365E0 @ =gUnknown_02039304 - ldr r0, [r4] - adds r0, 0x50 - ldrb r1, [r0] - cmp r1, 0 - beq _081365E4 - cmp r1, 0x1 - beq _0813660C - b _08136626 - .align 2, 0 -_081365E0: .4byte gUnknown_02039304 -_081365E4: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _08136608 @ =sub_8136264 - bl SetVBlankCallback - ldr r1, [r4] - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08136626 - .align 2, 0 -_08136608: .4byte sub_8136264 -_0813660C: - ldr r0, _08136630 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08136626 - bl sub_80F3C94 - bl sub_80F3D00 - ldr r0, _08136634 @ =sub_8136638 - bl launch_c3_walk_stairs_and_run_once -_08136626: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08136630: .4byte gPaletteFade -_08136634: .4byte sub_8136638 - thumb_func_end sub_81365C8 - thumb_func_start sub_8136638 sub_8136638: @ 8136638 push {r4,lr} diff --git a/include/pokenav.h b/include/pokenav.h index f32611161..4c9ec43eb 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -65,6 +65,8 @@ bool8 sub_80F26BC(void); bool8 sub_80F2CBC(u8); void sub_80F2E18(u8); void sub_80F33A8(void); +void sub_80F3C94(void); +void sub_80F3D00(void); void sub_80F4BD0(void); void sub_80F556C(void *); void sub_80F567C(void *, void *); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 351248cbd..39003a1e3 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -27,9 +27,11 @@ void launch_c3_walk_stairs_and_run_once(void (*const)(void)); void sub_81361E4(void); void sub_813622C(void); void sub_8136244(void); +void sub_8136264(void); void sub_8136294(void); void sub_81365A0(void); void sub_81365C8(void); +void sub_8136638(void); void sub_81368A4(void); u8 sub_81370E4(u8); @@ -599,3 +601,23 @@ void sub_81365A0(void) sub_8136294(); } } + +void sub_81365C8(void) +{ + switch (gUnknown_02039304->unk50) + { + case 0: + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + SetVBlankCallback(sub_8136264); + gUnknown_02039304->unk50++; + break; + case 1: + if (!gPaletteFade.active) + { + sub_80F3C94(); + sub_80F3D00(); + launch_c3_walk_stairs_and_run_once(sub_8136638); + } + break; + } +} -- cgit v1.2.3 From e6f77628b1a0eae67d36b80ed422758ed40ecc51 Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 11:41:38 -0400 Subject: Enum egg groups --- include/pokemon.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/include/pokemon.h b/include/pokemon.h index a9c780dbb..248bc480a 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -119,6 +119,25 @@ #define NUM_STATS 6 #define UNOWN_FORM_COUNT 28 +enum { + EGG_GROUP_NONE, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + EGG_GROUP_BUG, + EGG_GROUP_FLYING, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_WATER_3, + EGG_GROUP_MINERAL, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_WATER_2, + EGG_GROUP_DITTO, + EGG_GROUP_DRAGON, + EGG_GROUP_UNDISCOVERED +}; + enum { NATURE_HARDY, NATURE_LONELY, -- cgit v1.2.3 From 16b17f15f45593677f791d0dc5e835889834533e Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 11:54:55 -0400 Subject: Convert species id conversion tables to C objects --- data/pokemon.s | 3 - data/species_id_conversion_tables.inc | 1241 --------------------------------- ld_script.txt | 1 + src/pokemon_data.c | 10 + 4 files changed, 11 insertions(+), 1244 deletions(-) delete mode 100644 data/species_id_conversion_tables.inc create mode 100644 src/pokemon_data.c diff --git a/data/pokemon.s b/data/pokemon.s index 2229512a4..45de7afce 100644 --- a/data/pokemon.s +++ b/data/pokemon.s @@ -3,9 +3,6 @@ .section .rodata -@ 81FC1E0 - .include "data/species_id_conversion_tables.inc" - @ 81FCB84 .include "data/spinda_spot_graphics.inc" diff --git a/data/species_id_conversion_tables.inc b/data/species_id_conversion_tables.inc deleted file mode 100644 index 88725d2bd..000000000 --- a/data/species_id_conversion_tables.inc +++ /dev/null @@ -1,1241 +0,0 @@ - .align 2 @ TODO: Find out if this could be 1. -gSpeciesToHoennPokedexNum:: @ 81FC1E0 - .2byte 203 - .2byte 204 - .2byte 205 - .2byte 206 - .2byte 207 - .2byte 208 - .2byte 209 - .2byte 210 - .2byte 211 - .2byte 212 - .2byte 213 - .2byte 214 - .2byte 215 - .2byte 216 - .2byte 217 - .2byte 218 - .2byte 219 - .2byte 220 - .2byte 221 - .2byte 222 - .2byte 223 - .2byte 224 - .2byte 225 - .2byte 226 - .2byte 156 - .2byte 157 - .2byte 112 - .2byte 113 - .2byte 227 - .2byte 228 - .2byte 229 - .2byte 230 - .2byte 231 - .2byte 232 - .2byte 233 - .2byte 234 - .2byte 153 - .2byte 154 - .2byte 138 - .2byte 139 - .2byte 63 - .2byte 64 - .2byte 88 - .2byte 89 - .2byte 90 - .2byte 235 - .2byte 236 - .2byte 237 - .2byte 238 - .2byte 239 - .2byte 240 - .2byte 241 - .2byte 242 - .2byte 158 - .2byte 159 - .2byte 243 - .2byte 244 - .2byte 245 - .2byte 246 - .2byte 247 - .2byte 248 - .2byte 249 - .2byte 39 - .2byte 40 - .2byte 41 - .2byte 73 - .2byte 74 - .2byte 75 - .2byte 250 - .2byte 251 - .2byte 252 - .2byte 66 - .2byte 67 - .2byte 57 - .2byte 58 - .2byte 59 - .2byte 253 - .2byte 254 - .2byte 255 - .2byte 256 - .2byte 82 - .2byte 83 - .2byte 257 - .2byte 92 - .2byte 93 - .2byte 258 - .2byte 259 - .2byte 106 - .2byte 107 - .2byte 260 - .2byte 261 - .2byte 262 - .2byte 263 - .2byte 264 - .2byte 265 - .2byte 266 - .2byte 267 - .2byte 268 - .2byte 269 - .2byte 84 - .2byte 85 - .2byte 270 - .2byte 271 - .2byte 272 - .2byte 273 - .2byte 274 - .2byte 275 - .2byte 276 - .2byte 108 - .2byte 109 - .2byte 169 - .2byte 170 - .2byte 277 - .2byte 278 - .2byte 279 - .2byte 184 - .2byte 185 - .2byte 50 - .2byte 51 - .2byte 143 - .2byte 144 - .2byte 280 - .2byte 281 - .2byte 282 - .2byte 283 - .2byte 284 - .2byte 167 - .2byte 285 - .2byte 52 - .2byte 53 - .2byte 286 - .2byte 287 - .2byte 288 - .2byte 289 - .2byte 290 - .2byte 291 - .2byte 292 - .2byte 293 - .2byte 294 - .2byte 295 - .2byte 296 - .2byte 297 - .2byte 298 - .2byte 299 - .2byte 300 - .2byte 301 - .2byte 302 - .2byte 303 - .2byte 304 - .2byte 305 - .2byte 306 - .2byte 307 - .2byte 308 - .2byte 309 - .2byte 310 - .2byte 311 - .2byte 312 - .2byte 313 - .2byte 314 - .2byte 315 - .2byte 316 - .2byte 317 - .2byte 318 - .2byte 319 - .2byte 320 - .2byte 321 - .2byte 322 - .2byte 323 - .2byte 65 - .2byte 181 - .2byte 182 - .2byte 155 - .2byte 324 - .2byte 137 - .2byte 325 - .2byte 326 - .2byte 162 - .2byte 163 - .2byte 327 - .2byte 328 - .2byte 329 - .2byte 91 - .2byte 55 - .2byte 56 - .2byte 330 - .2byte 331 - .2byte 332 - .2byte 333 - .2byte 334 - .2byte 335 - .2byte 336 - .2byte 337 - .2byte 338 - .2byte 339 - .2byte 340 - .2byte 341 - .2byte 342 - .2byte 343 - .2byte 344 - .2byte 345 - .2byte 346 - .2byte 161 - .2byte 164 - .2byte 347 - .2byte 348 - .2byte 349 - .2byte 350 - .2byte 351 - .2byte 352 - .2byte 353 - .2byte 354 - .2byte 355 - .2byte 356 - .2byte 168 - .2byte 357 - .2byte 358 - .2byte 359 - .2byte 103 - .2byte 104 - .2byte 360 - .2byte 361 - .2byte 180 - .2byte 362 - .2byte 363 - .2byte 364 - .2byte 365 - .2byte 115 - .2byte 366 - .2byte 367 - .2byte 186 - .2byte 165 - .2byte 166 - .2byte 368 - .2byte 369 - .2byte 370 - .2byte 371 - .2byte 372 - .2byte 373 - .2byte 374 - .2byte 375 - .2byte 376 - .2byte 377 - .2byte 378 - .2byte 379 - .2byte 380 - .2byte 381 - .2byte 382 - .2byte 383 - .2byte 384 - .2byte 385 - .2byte 386 - .2byte 387 - .2byte 388 - .2byte 389 - .2byte 390 - .2byte 391 - .2byte 392 - .2byte 393 - .2byte 394 - .2byte 395 - .2byte 396 - .2byte 397 - .2byte 398 - .2byte 399 - .2byte 400 - .2byte 401 - .2byte 402 - .2byte 403 - .2byte 404 - .2byte 405 - .2byte 406 - .2byte 407 - .2byte 408 - .2byte 409 - .2byte 410 - .2byte 411 - .2byte 1 - .2byte 2 - .2byte 3 - .2byte 4 - .2byte 5 - .2byte 6 - .2byte 7 - .2byte 8 - .2byte 9 - .2byte 10 - .2byte 11 - .2byte 12 - .2byte 13 - .2byte 14 - .2byte 15 - .2byte 16 - .2byte 17 - .2byte 18 - .2byte 19 - .2byte 20 - .2byte 21 - .2byte 22 - .2byte 23 - .2byte 24 - .2byte 42 - .2byte 43 - .2byte 44 - .2byte 25 - .2byte 26 - .2byte 34 - .2byte 35 - .2byte 114 - .2byte 27 - .2byte 28 - .2byte 32 - .2byte 33 - .2byte 99 - .2byte 100 - .2byte 61 - .2byte 62 - .2byte 145 - .2byte 131 - .2byte 132 - .2byte 60 - .2byte 105 - .2byte 68 - .2byte 127 - .2byte 128 - .2byte 183 - .2byte 129 - .2byte 130 - .2byte 140 - .2byte 141 - .2byte 97 - .2byte 98 - .2byte 116 - .2byte 117 - .2byte 118 - .2byte 48 - .2byte 49 - .2byte 78 - .2byte 79 - .2byte 101 - .2byte 102 - .2byte 173 - .2byte 174 - .2byte 175 - .2byte 119 - .2byte 120 - .2byte 171 - .2byte 172 - .2byte 125 - .2byte 126 - .2byte 54 - .2byte 110 - .2byte 111 - .2byte 80 - .2byte 81 - .2byte 69 - .2byte 76 - .2byte 77 - .2byte 121 - .2byte 122 - .2byte 160 - .2byte 148 - .2byte 149 - .2byte 94 - .2byte 36 - .2byte 37 - .2byte 38 - .2byte 95 - .2byte 96 - .2byte 150 - .2byte 45 - .2byte 46 - .2byte 47 - .2byte 176 - .2byte 177 - .2byte 178 - .2byte 152 - .2byte 146 - .2byte 147 - .2byte 124 - .2byte 123 - .2byte 179 - .2byte 70 - .2byte 71 - .2byte 72 - .2byte 142 - .2byte 86 - .2byte 87 - .2byte 133 - .2byte 134 - .2byte 135 - .2byte 136 - .2byte 29 - .2byte 30 - .2byte 31 - .2byte 187 - .2byte 188 - .2byte 189 - .2byte 190 - .2byte 191 - .2byte 192 - .2byte 193 - .2byte 194 - .2byte 195 - .2byte 198 - .2byte 199 - .2byte 200 - .2byte 196 - .2byte 197 - .2byte 201 - .2byte 202 - .2byte 151 - - .align 1 -gSpeciesToNationalPokedexNum:: @ 81FC516 - .2byte 1 - .2byte 2 - .2byte 3 - .2byte 4 - .2byte 5 - .2byte 6 - .2byte 7 - .2byte 8 - .2byte 9 - .2byte 10 - .2byte 11 - .2byte 12 - .2byte 13 - .2byte 14 - .2byte 15 - .2byte 16 - .2byte 17 - .2byte 18 - .2byte 19 - .2byte 20 - .2byte 21 - .2byte 22 - .2byte 23 - .2byte 24 - .2byte 25 - .2byte 26 - .2byte 27 - .2byte 28 - .2byte 29 - .2byte 30 - .2byte 31 - .2byte 32 - .2byte 33 - .2byte 34 - .2byte 35 - .2byte 36 - .2byte 37 - .2byte 38 - .2byte 39 - .2byte 40 - .2byte 41 - .2byte 42 - .2byte 43 - .2byte 44 - .2byte 45 - .2byte 46 - .2byte 47 - .2byte 48 - .2byte 49 - .2byte 50 - .2byte 51 - .2byte 52 - .2byte 53 - .2byte 54 - .2byte 55 - .2byte 56 - .2byte 57 - .2byte 58 - .2byte 59 - .2byte 60 - .2byte 61 - .2byte 62 - .2byte 63 - .2byte 64 - .2byte 65 - .2byte 66 - .2byte 67 - .2byte 68 - .2byte 69 - .2byte 70 - .2byte 71 - .2byte 72 - .2byte 73 - .2byte 74 - .2byte 75 - .2byte 76 - .2byte 77 - .2byte 78 - .2byte 79 - .2byte 80 - .2byte 81 - .2byte 82 - .2byte 83 - .2byte 84 - .2byte 85 - .2byte 86 - .2byte 87 - .2byte 88 - .2byte 89 - .2byte 90 - .2byte 91 - .2byte 92 - .2byte 93 - .2byte 94 - .2byte 95 - .2byte 96 - .2byte 97 - .2byte 98 - .2byte 99 - .2byte 100 - .2byte 101 - .2byte 102 - .2byte 103 - .2byte 104 - .2byte 105 - .2byte 106 - .2byte 107 - .2byte 108 - .2byte 109 - .2byte 110 - .2byte 111 - .2byte 112 - .2byte 113 - .2byte 114 - .2byte 115 - .2byte 116 - .2byte 117 - .2byte 118 - .2byte 119 - .2byte 120 - .2byte 121 - .2byte 122 - .2byte 123 - .2byte 124 - .2byte 125 - .2byte 126 - .2byte 127 - .2byte 128 - .2byte 129 - .2byte 130 - .2byte 131 - .2byte 132 - .2byte 133 - .2byte 134 - .2byte 135 - .2byte 136 - .2byte 137 - .2byte 138 - .2byte 139 - .2byte 140 - .2byte 141 - .2byte 142 - .2byte 143 - .2byte 144 - .2byte 145 - .2byte 146 - .2byte 147 - .2byte 148 - .2byte 149 - .2byte 150 - .2byte 151 - .2byte 152 - .2byte 153 - .2byte 154 - .2byte 155 - .2byte 156 - .2byte 157 - .2byte 158 - .2byte 159 - .2byte 160 - .2byte 161 - .2byte 162 - .2byte 163 - .2byte 164 - .2byte 165 - .2byte 166 - .2byte 167 - .2byte 168 - .2byte 169 - .2byte 170 - .2byte 171 - .2byte 172 - .2byte 173 - .2byte 174 - .2byte 175 - .2byte 176 - .2byte 177 - .2byte 178 - .2byte 179 - .2byte 180 - .2byte 181 - .2byte 182 - .2byte 183 - .2byte 184 - .2byte 185 - .2byte 186 - .2byte 187 - .2byte 188 - .2byte 189 - .2byte 190 - .2byte 191 - .2byte 192 - .2byte 193 - .2byte 194 - .2byte 195 - .2byte 196 - .2byte 197 - .2byte 198 - .2byte 199 - .2byte 200 - .2byte 201 - .2byte 202 - .2byte 203 - .2byte 204 - .2byte 205 - .2byte 206 - .2byte 207 - .2byte 208 - .2byte 209 - .2byte 210 - .2byte 211 - .2byte 212 - .2byte 213 - .2byte 214 - .2byte 215 - .2byte 216 - .2byte 217 - .2byte 218 - .2byte 219 - .2byte 220 - .2byte 221 - .2byte 222 - .2byte 223 - .2byte 224 - .2byte 225 - .2byte 226 - .2byte 227 - .2byte 228 - .2byte 229 - .2byte 230 - .2byte 231 - .2byte 232 - .2byte 233 - .2byte 234 - .2byte 235 - .2byte 236 - .2byte 237 - .2byte 238 - .2byte 239 - .2byte 240 - .2byte 241 - .2byte 242 - .2byte 243 - .2byte 244 - .2byte 245 - .2byte 246 - .2byte 247 - .2byte 248 - .2byte 249 - .2byte 250 - .2byte 251 - .2byte 387 - .2byte 388 - .2byte 389 - .2byte 390 - .2byte 391 - .2byte 392 - .2byte 393 - .2byte 394 - .2byte 395 - .2byte 396 - .2byte 397 - .2byte 398 - .2byte 399 - .2byte 400 - .2byte 401 - .2byte 402 - .2byte 403 - .2byte 404 - .2byte 405 - .2byte 406 - .2byte 407 - .2byte 408 - .2byte 409 - .2byte 410 - .2byte 411 - .2byte 252 - .2byte 253 - .2byte 254 - .2byte 255 - .2byte 256 - .2byte 257 - .2byte 258 - .2byte 259 - .2byte 260 - .2byte 261 - .2byte 262 - .2byte 263 - .2byte 264 - .2byte 265 - .2byte 266 - .2byte 267 - .2byte 268 - .2byte 269 - .2byte 270 - .2byte 271 - .2byte 272 - .2byte 273 - .2byte 274 - .2byte 275 - .2byte 290 - .2byte 291 - .2byte 292 - .2byte 276 - .2byte 277 - .2byte 285 - .2byte 286 - .2byte 327 - .2byte 278 - .2byte 279 - .2byte 283 - .2byte 284 - .2byte 320 - .2byte 321 - .2byte 300 - .2byte 301 - .2byte 352 - .2byte 343 - .2byte 344 - .2byte 299 - .2byte 324 - .2byte 302 - .2byte 339 - .2byte 340 - .2byte 370 - .2byte 341 - .2byte 342 - .2byte 349 - .2byte 350 - .2byte 318 - .2byte 319 - .2byte 328 - .2byte 329 - .2byte 330 - .2byte 296 - .2byte 297 - .2byte 309 - .2byte 310 - .2byte 322 - .2byte 323 - .2byte 363 - .2byte 364 - .2byte 365 - .2byte 331 - .2byte 332 - .2byte 361 - .2byte 362 - .2byte 337 - .2byte 338 - .2byte 298 - .2byte 325 - .2byte 326 - .2byte 311 - .2byte 312 - .2byte 303 - .2byte 307 - .2byte 308 - .2byte 333 - .2byte 334 - .2byte 360 - .2byte 355 - .2byte 356 - .2byte 315 - .2byte 287 - .2byte 288 - .2byte 289 - .2byte 316 - .2byte 317 - .2byte 357 - .2byte 293 - .2byte 294 - .2byte 295 - .2byte 366 - .2byte 367 - .2byte 368 - .2byte 359 - .2byte 353 - .2byte 354 - .2byte 336 - .2byte 335 - .2byte 369 - .2byte 304 - .2byte 305 - .2byte 306 - .2byte 351 - .2byte 313 - .2byte 314 - .2byte 345 - .2byte 346 - .2byte 347 - .2byte 348 - .2byte 280 - .2byte 281 - .2byte 282 - .2byte 371 - .2byte 372 - .2byte 373 - .2byte 374 - .2byte 375 - .2byte 376 - .2byte 377 - .2byte 378 - .2byte 379 - .2byte 382 - .2byte 383 - .2byte 384 - .2byte 380 - .2byte 381 - .2byte 385 - .2byte 386 - .2byte 358 - - .align 1 -gHoennToNationalOrder:: @ 81FC84C - .2byte 252 - .2byte 253 - .2byte 254 - .2byte 255 - .2byte 256 - .2byte 257 - .2byte 258 - .2byte 259 - .2byte 260 - .2byte 261 - .2byte 262 - .2byte 263 - .2byte 264 - .2byte 265 - .2byte 266 - .2byte 267 - .2byte 268 - .2byte 269 - .2byte 270 - .2byte 271 - .2byte 272 - .2byte 273 - .2byte 274 - .2byte 275 - .2byte 276 - .2byte 277 - .2byte 278 - .2byte 279 - .2byte 280 - .2byte 281 - .2byte 282 - .2byte 283 - .2byte 284 - .2byte 285 - .2byte 286 - .2byte 287 - .2byte 288 - .2byte 289 - .2byte 63 - .2byte 64 - .2byte 65 - .2byte 290 - .2byte 291 - .2byte 292 - .2byte 293 - .2byte 294 - .2byte 295 - .2byte 296 - .2byte 297 - .2byte 118 - .2byte 119 - .2byte 129 - .2byte 130 - .2byte 298 - .2byte 183 - .2byte 184 - .2byte 74 - .2byte 75 - .2byte 76 - .2byte 299 - .2byte 300 - .2byte 301 - .2byte 41 - .2byte 42 - .2byte 169 - .2byte 72 - .2byte 73 - .2byte 302 - .2byte 303 - .2byte 304 - .2byte 305 - .2byte 306 - .2byte 66 - .2byte 67 - .2byte 68 - .2byte 307 - .2byte 308 - .2byte 309 - .2byte 310 - .2byte 311 - .2byte 312 - .2byte 81 - .2byte 82 - .2byte 100 - .2byte 101 - .2byte 313 - .2byte 314 - .2byte 43 - .2byte 44 - .2byte 45 - .2byte 182 - .2byte 84 - .2byte 85 - .2byte 315 - .2byte 316 - .2byte 317 - .2byte 318 - .2byte 319 - .2byte 320 - .2byte 321 - .2byte 322 - .2byte 323 - .2byte 218 - .2byte 219 - .2byte 324 - .2byte 88 - .2byte 89 - .2byte 109 - .2byte 110 - .2byte 325 - .2byte 326 - .2byte 27 - .2byte 28 - .2byte 327 - .2byte 227 - .2byte 328 - .2byte 329 - .2byte 330 - .2byte 331 - .2byte 332 - .2byte 333 - .2byte 334 - .2byte 335 - .2byte 336 - .2byte 337 - .2byte 338 - .2byte 339 - .2byte 340 - .2byte 341 - .2byte 342 - .2byte 343 - .2byte 344 - .2byte 345 - .2byte 346 - .2byte 347 - .2byte 348 - .2byte 174 - .2byte 39 - .2byte 40 - .2byte 349 - .2byte 350 - .2byte 351 - .2byte 120 - .2byte 121 - .2byte 352 - .2byte 353 - .2byte 354 - .2byte 355 - .2byte 356 - .2byte 357 - .2byte 358 - .2byte 359 - .2byte 37 - .2byte 38 - .2byte 172 - .2byte 25 - .2byte 26 - .2byte 54 - .2byte 55 - .2byte 360 - .2byte 202 - .2byte 177 - .2byte 178 - .2byte 203 - .2byte 231 - .2byte 232 - .2byte 127 - .2byte 214 - .2byte 111 - .2byte 112 - .2byte 361 - .2byte 362 - .2byte 363 - .2byte 364 - .2byte 365 - .2byte 366 - .2byte 367 - .2byte 368 - .2byte 369 - .2byte 222 - .2byte 170 - .2byte 171 - .2byte 370 - .2byte 116 - .2byte 117 - .2byte 230 - .2byte 371 - .2byte 372 - .2byte 373 - .2byte 374 - .2byte 375 - .2byte 376 - .2byte 377 - .2byte 378 - .2byte 379 - .2byte 380 - .2byte 381 - .2byte 382 - .2byte 383 - .2byte 384 - .2byte 385 - .2byte 386 - .2byte 1 - .2byte 2 - .2byte 3 - .2byte 4 - .2byte 5 - .2byte 6 - .2byte 7 - .2byte 8 - .2byte 9 - .2byte 10 - .2byte 11 - .2byte 12 - .2byte 13 - .2byte 14 - .2byte 15 - .2byte 16 - .2byte 17 - .2byte 18 - .2byte 19 - .2byte 20 - .2byte 21 - .2byte 22 - .2byte 23 - .2byte 24 - .2byte 29 - .2byte 30 - .2byte 31 - .2byte 32 - .2byte 33 - .2byte 34 - .2byte 35 - .2byte 36 - .2byte 46 - .2byte 47 - .2byte 48 - .2byte 49 - .2byte 50 - .2byte 51 - .2byte 52 - .2byte 53 - .2byte 56 - .2byte 57 - .2byte 58 - .2byte 59 - .2byte 60 - .2byte 61 - .2byte 62 - .2byte 69 - .2byte 70 - .2byte 71 - .2byte 77 - .2byte 78 - .2byte 79 - .2byte 80 - .2byte 83 - .2byte 86 - .2byte 87 - .2byte 90 - .2byte 91 - .2byte 92 - .2byte 93 - .2byte 94 - .2byte 95 - .2byte 96 - .2byte 97 - .2byte 98 - .2byte 99 - .2byte 102 - .2byte 103 - .2byte 104 - .2byte 105 - .2byte 106 - .2byte 107 - .2byte 108 - .2byte 113 - .2byte 114 - .2byte 115 - .2byte 122 - .2byte 123 - .2byte 124 - .2byte 125 - .2byte 126 - .2byte 128 - .2byte 131 - .2byte 132 - .2byte 133 - .2byte 134 - .2byte 135 - .2byte 136 - .2byte 137 - .2byte 138 - .2byte 139 - .2byte 140 - .2byte 141 - .2byte 142 - .2byte 143 - .2byte 144 - .2byte 145 - .2byte 146 - .2byte 147 - .2byte 148 - .2byte 149 - .2byte 150 - .2byte 151 - .2byte 152 - .2byte 153 - .2byte 154 - .2byte 155 - .2byte 156 - .2byte 157 - .2byte 158 - .2byte 159 - .2byte 160 - .2byte 161 - .2byte 162 - .2byte 163 - .2byte 164 - .2byte 165 - .2byte 166 - .2byte 167 - .2byte 168 - .2byte 173 - .2byte 175 - .2byte 176 - .2byte 179 - .2byte 180 - .2byte 181 - .2byte 185 - .2byte 186 - .2byte 187 - .2byte 188 - .2byte 189 - .2byte 190 - .2byte 191 - .2byte 192 - .2byte 193 - .2byte 194 - .2byte 195 - .2byte 196 - .2byte 197 - .2byte 198 - .2byte 199 - .2byte 200 - .2byte 201 - .2byte 204 - .2byte 205 - .2byte 206 - .2byte 207 - .2byte 208 - .2byte 209 - .2byte 210 - .2byte 211 - .2byte 212 - .2byte 213 - .2byte 215 - .2byte 216 - .2byte 217 - .2byte 220 - .2byte 221 - .2byte 223 - .2byte 224 - .2byte 225 - .2byte 226 - .2byte 228 - .2byte 229 - .2byte 233 - .2byte 234 - .2byte 235 - .2byte 236 - .2byte 237 - .2byte 238 - .2byte 239 - .2byte 240 - .2byte 241 - .2byte 242 - .2byte 243 - .2byte 244 - .2byte 245 - .2byte 246 - .2byte 247 - .2byte 248 - .2byte 249 - .2byte 250 - .2byte 251 - .2byte 387 - .2byte 388 - .2byte 389 - .2byte 390 - .2byte 391 - .2byte 392 - .2byte 393 - .2byte 394 - .2byte 395 - .2byte 396 - .2byte 397 - .2byte 398 - .2byte 399 - .2byte 400 - .2byte 401 - .2byte 402 - .2byte 403 - .2byte 404 - .2byte 405 - .2byte 406 - .2byte 407 - .2byte 408 - .2byte 409 - .2byte 410 - .2byte 411 diff --git a/ld_script.txt b/ld_script.txt index b20e05223..516fa143d 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -332,6 +332,7 @@ SECTIONS { src/rtc.o(.rodata); data/main_menu.o(.rodata); data/data2.o(.rodata); + src/pokemon_data.o(.rodata); data/pokemon.o(.rodata); . = ALIGN(4); data/trig.o(.rodata); diff --git a/src/pokemon_data.c b/src/pokemon_data.c new file mode 100644 index 000000000..b09298ca7 --- /dev/null +++ b/src/pokemon_data.c @@ -0,0 +1,10 @@ +#include "global.h" +#include "pokemon.h" +#include "species.h" + +const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151 +}; + +const u16 gSpeciesToNationalPokedexNum[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 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, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 290, 291, 292, 276, 277, 285, 286, 327, 278, 279, 283, 284, 320, 321, 300, 301, 352, 343, 344, 299, 324, 302, 339, 340, 370, 341, 342, 349, 350, 318, 319, 328, 329, 330, 296, 297, 309, 310, 322, 323, 363, 364, 365, 331, 332, 361, 362, 337, 338, 298, 325, 326, 311, 312, 303, 307, 308, 333, 334, 360, 355, 356, 315, 287, 288, 289, 316, 317, 357, 293, 294, 295, 366, 367, 368, 359, 353, 354, 336, 335, 369, 304, 305, 306, 351, 313, 314, 345, 346, 347, 348, 280, 281, 282, 371, 372, 373, 374, 375, 376, 377, 378, 379, 382, 383, 384, 380, 381, 385, 386, 358}; + +const u16 gHoennToNationalOrder[] = {252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 63, 64, 65, 290, 291, 292, 293, 294, 295, 296, 297, 118, 119, 129, 130, 298, 183, 184, 74, 75, 76, 299, 300, 301, 41, 42, 169, 72, 73, 302, 303, 304, 305, 306, 66, 67, 68, 307, 308, 309, 310, 311, 312, 81, 82, 100, 101, 313, 314, 43, 44, 45, 182, 84, 85, 315, 316, 317, 318, 319, 320, 321, 322, 323, 218, 219, 324, 88, 89, 109, 110, 325, 326, 27, 28, 327, 227, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 174, 39, 40, 349, 350, 351, 120, 121, 352, 353, 354, 355, 356, 357, 358, 359, 37, 38, 172, 25, 26, 54, 55, 360, 202, 177, 178, 203, 231, 232, 127, 214, 111, 112, 361, 362, 363, 364, 365, 366, 367, 368, 369, 222, 170, 171, 370, 116, 117, 230, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 69, 70, 71, 77, 78, 79, 80, 83, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 107, 108, 113, 114, 115, 122, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 173, 175, 176, 179, 180, 181, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 220, 221, 223, 224, 225, 226, 228, 229, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 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}; -- cgit v1.2.3 From 11ef8dab95729a27da98733924f7cfa38ae268fb Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 12:21:13 -0400 Subject: Convert spinda spot graphics to c objects --- data/pokemon.s | 3 -- data/spinda_spot_graphics.inc | 81 ------------------------------------------- include/pokemon.h | 35 +++++++++++++++++++ src/pokemon_3.c | 33 ------------------ src/pokemon_data.c | 78 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 113 insertions(+), 117 deletions(-) delete mode 100644 data/spinda_spot_graphics.inc diff --git a/data/pokemon.s b/data/pokemon.s index 45de7afce..00da88bfd 100644 --- a/data/pokemon.s +++ b/data/pokemon.s @@ -3,9 +3,6 @@ .section .rodata -@ 81FCB84 - .include "data/spinda_spot_graphics.inc" - @ 81FCC14 .include "data/item_effects.inc" diff --git a/data/spinda_spot_graphics.inc b/data/spinda_spot_graphics.inc deleted file mode 100644 index 3316a5639..000000000 --- a/data/spinda_spot_graphics.inc +++ /dev/null @@ -1,81 +0,0 @@ - .align 2 -gSpindaSpotGraphics:: @ 81FCB84 - .byte 16 @ X - .byte 14 @ Y - .2byte 0b0000000001110000 - .2byte 0b0000000111111100 - .2byte 0b0000001111111110 - .2byte 0b0000011111111110 - .2byte 0b0000011111111111 - .2byte 0b0000111111111111 - .2byte 0b0000111111111111 - .2byte 0b0000111111111111 - .2byte 0b0000011111111110 - .2byte 0b0000011111111110 - .2byte 0b0000001111111100 - .2byte 0b0000000111100000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - - .byte 40 @ X - .byte 15 @ Y - .2byte 0b0000000111100000 - .2byte 0b0000001111111000 - .2byte 0b0000011111111100 - .2byte 0b0000111111111110 - .2byte 0b0000111111111110 - .2byte 0b0001111111111111 - .2byte 0b0001111111111111 - .2byte 0b0001111111111111 - .2byte 0b0000111111111110 - .2byte 0b0000111111111110 - .2byte 0b0000011111111100 - .2byte 0b0000011111111000 - .2byte 0b0000000011100000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - - .byte 22 @ X - .byte 32 @ Y - .2byte 0b0000000000011100 - .2byte 0b0000000000111110 - .2byte 0b0000000001111111 - .2byte 0b0000000001111111 - .2byte 0b0000000001111111 - .2byte 0b0000000001111111 - .2byte 0b0000000001111111 - .2byte 0b0000000000111110 - .2byte 0b0000000000011100 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - - .byte 34 @ X - .byte 33 @ Y - .2byte 0b0000000000111100 - .2byte 0b0000000001111110 - .2byte 0b0000000011111111 - .2byte 0b0000000011111111 - .2byte 0b0000000011111111 - .2byte 0b0000000011111111 - .2byte 0b0000000011111111 - .2byte 0b0000000001111110 - .2byte 0b0000000000111100 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 - .2byte 0b0000000000000000 diff --git a/include/pokemon.h b/include/pokemon.h index 248bc480a..28f9cbc1c 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -401,6 +401,41 @@ struct PokemonStorage u8 unkArray[14]; }; +struct SpindaSpot +{ + u8 x, y; + u16 image[16]; +}; + +#define EVO_FRIENDSHIP 0x0001 // Pokémon levels up with friendship ≥ 220 +#define EVO_FRIENDSHIP_DAY 0x0002 // Pokémon levels up during the day with friendship ≥ 220 +#define EVO_FRIENDSHIP_NIGHT 0x0003 // Pokémon levels up at night with friendship ≥ 220 +#define EVO_LEVEL 0x0004 // Pokémon reaches the specified level +#define EVO_TRADE 0x0005 // Pokémon is traded +#define EVO_TRADE_ITEM 0x0006 // Pokémon is traded while it's holding the specified item +#define EVO_ITEM 0x0007 // specified item is used on Pokémon +#define EVO_LEVEL_ATK_GT_DEF 0x0008 // Pokémon reaches the specified level with attack > defense +#define EVO_LEVEL_ATK_EQ_DEF 0x0009 // Pokémon reaches the specified level with attack = defense +#define EVO_LEVEL_ATK_LT_DEF 0x000a // Pokémon reaches the specified level with attack < defense +#define EVO_LEVEL_SILCOON 0x000b // Pokémon reaches the specified level with a Silcoon personality value +#define EVO_LEVEL_CASCOON 0x000c // Pokémon reaches the specified level with a Cascoon personality value +#define EVO_LEVEL_NINJASK 0x000d // Pokémon reaches the specified level (special value for Ninjask) +#define EVO_LEVEL_SHEDINJA 0x000e // Pokémon reaches the specified level (special value for Shedinja) +#define EVO_BEAUTY 0x000f // Pokémon levels up with beauty ≥ specified value + +struct Evolution +{ + u16 method; + u16 param; + u16 targetSpecies; +}; + +struct EvolutionData +{ + struct Evolution evolutions[5]; +}; + + extern struct Pokemon gPlayerParty[PARTY_SIZE]; extern struct Pokemon gEnemyParty[PARTY_SIZE]; diff --git a/src/pokemon_3.c b/src/pokemon_3.c index f4eac79a7..105893f70 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -20,39 +20,6 @@ #include "string_util.h" #include "text.h" -#define EVO_FRIENDSHIP 0x0001 // Pokémon levels up with friendship ≥ 220 -#define EVO_FRIENDSHIP_DAY 0x0002 // Pokémon levels up during the day with friendship ≥ 220 -#define EVO_FRIENDSHIP_NIGHT 0x0003 // Pokémon levels up at night with friendship ≥ 220 -#define EVO_LEVEL 0x0004 // Pokémon reaches the specified level -#define EVO_TRADE 0x0005 // Pokémon is traded -#define EVO_TRADE_ITEM 0x0006 // Pokémon is traded while it's holding the specified item -#define EVO_ITEM 0x0007 // specified item is used on Pokémon -#define EVO_LEVEL_ATK_GT_DEF 0x0008 // Pokémon reaches the specified level with attack > defense -#define EVO_LEVEL_ATK_EQ_DEF 0x0009 // Pokémon reaches the specified level with attack = defense -#define EVO_LEVEL_ATK_LT_DEF 0x000a // Pokémon reaches the specified level with attack < defense -#define EVO_LEVEL_SILCOON 0x000b // Pokémon reaches the specified level with a Silcoon personality value -#define EVO_LEVEL_CASCOON 0x000c // Pokémon reaches the specified level with a Cascoon personality value -#define EVO_LEVEL_NINJASK 0x000d // Pokémon reaches the specified level (special value for Ninjask) -#define EVO_LEVEL_SHEDINJA 0x000e // Pokémon reaches the specified level (special value for Shedinja) -#define EVO_BEAUTY 0x000f // Pokémon levels up with beauty ≥ specified value - -struct Evolution -{ - u16 method; - u16 param; - u16 targetSpecies; -}; - -struct EvolutionData -{ - struct Evolution evolutions[5]; -}; - -struct SpindaSpot -{ - u8 x, y; - u16 image[16]; -}; extern u8 gPlayerPartyCount; extern struct Pokemon gPlayerParty[6]; diff --git a/src/pokemon_data.c b/src/pokemon_data.c index b09298ca7..c75294ceb 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -8,3 +8,81 @@ const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, const u16 gSpeciesToNationalPokedexNum[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 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, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 290, 291, 292, 276, 277, 285, 286, 327, 278, 279, 283, 284, 320, 321, 300, 301, 352, 343, 344, 299, 324, 302, 339, 340, 370, 341, 342, 349, 350, 318, 319, 328, 329, 330, 296, 297, 309, 310, 322, 323, 363, 364, 365, 331, 332, 361, 362, 337, 338, 298, 325, 326, 311, 312, 303, 307, 308, 333, 334, 360, 355, 356, 315, 287, 288, 289, 316, 317, 357, 293, 294, 295, 366, 367, 368, 359, 353, 354, 336, 335, 369, 304, 305, 306, 351, 313, 314, 345, 346, 347, 348, 280, 281, 282, 371, 372, 373, 374, 375, 376, 377, 378, 379, 382, 383, 384, 380, 381, 385, 386, 358}; const u16 gHoennToNationalOrder[] = {252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 63, 64, 65, 290, 291, 292, 293, 294, 295, 296, 297, 118, 119, 129, 130, 298, 183, 184, 74, 75, 76, 299, 300, 301, 41, 42, 169, 72, 73, 302, 303, 304, 305, 306, 66, 67, 68, 307, 308, 309, 310, 311, 312, 81, 82, 100, 101, 313, 314, 43, 44, 45, 182, 84, 85, 315, 316, 317, 318, 319, 320, 321, 322, 323, 218, 219, 324, 88, 89, 109, 110, 325, 326, 27, 28, 327, 227, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 174, 39, 40, 349, 350, 351, 120, 121, 352, 353, 354, 355, 356, 357, 358, 359, 37, 38, 172, 25, 26, 54, 55, 360, 202, 177, 178, 203, 231, 232, 127, 214, 111, 112, 361, 362, 363, 364, 365, 366, 367, 368, 369, 222, 170, 171, 370, 116, 117, 230, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 69, 70, 71, 77, 78, 79, 80, 83, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 107, 108, 113, 114, 115, 122, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 173, 175, 176, 179, 180, 181, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 220, 221, 223, 224, 225, 226, 228, 229, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 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}; + +const struct SpindaSpot gSpindaSpotGraphics[] = { + {16, 14, { + 0x0070, // 0000000001110000 + 0x01fc, // 0000000111111100 + 0x03fe, // 0000001111111110 + 0x07fe, // 0000011111111110 + 0x07ff, // 0000011111111111 + 0x0fff, // 0000111111111111 + 0x0fff, // 0000111111111111 + 0x0fff, // 0000111111111111 + 0x07fe, // 0000011111111110 + 0x07fe, // 0000011111111110 + 0x03fc, // 0000001111111100 + 0x01e0, // 0000000111100000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000 // 0000000000000000 + }}, + + {40, 15, { + 0x01e0, // 0000000111100000 + 0x03f8, // 0000001111111000 + 0x07fc, // 0000011111111100 + 0x0ffe, // 0000111111111110 + 0x0ffe, // 0000111111111110 + 0x1fff, // 0001111111111111 + 0x1fff, // 0001111111111111 + 0x1fff, // 0001111111111111 + 0x0ffe, // 0000111111111110 + 0x0ffe, // 0000111111111110 + 0x07fc, // 0000011111111100 + 0x07f8, // 0000011111111000 + 0x00e0, // 0000000011100000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000 // 0000000000000000 + }}, + + {22, 32, { + 0x001c, // 0000000000011100 + 0x003e, // 0000000000111110 + 0x007f, // 0000000001111111 + 0x007f, // 0000000001111111 + 0x007f, // 0000000001111111 + 0x007f, // 0000000001111111 + 0x007f, // 0000000001111111 + 0x003e, // 0000000000111110 + 0x001c, // 0000000000011100 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000 // 0000000000000000 + }}, + + {34, 33, { + 0x003c, // 0000000000111100 + 0x007e, // 0000000001111110 + 0x00ff, // 0000000011111111 + 0x00ff, // 0000000011111111 + 0x00ff, // 0000000011111111 + 0x00ff, // 0000000011111111 + 0x00ff, // 0000000011111111 + 0x007e, // 0000000001111110 + 0x003c, // 0000000000111100 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000 // 0000000000000000 + }} +}; -- cgit v1.2.3 From 5872d36df62ea253c1771a6761848d5291bc8a3c Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 12:28:43 -0400 Subject: Convert item effects into c objects --- data/item_effects.inc | 752 ---------------------------------------------- data/pokemon.s | 3 - src/pokemon_data.c | 816 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 816 insertions(+), 755 deletions(-) delete mode 100644 data/item_effects.inc diff --git a/data/item_effects.inc b/data/item_effects.inc deleted file mode 100644 index 7b05354c2..000000000 --- a/data/item_effects.inc +++ /dev/null @@ -1,752 +0,0 @@ -gItemEffect_Potion: @ 81FCC14 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 20 - -gItemEffect_Antidote: @ 81FCC1B - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x10 - .byte 0x00 - .byte 0x00 - -gItemEffect_BurnHeal: @ 81FCC21 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x08 - .byte 0x00 - .byte 0x00 - -gItemEffect_IceHeal: @ 81FCC27 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 0x00 - -gItemEffect_Awakening: @ 81FCC2D - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x20 - .byte 0x00 - .byte 0x00 - -gItemEffect_ParalyzeHeal: @ 81FCC33 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x02 - .byte 0x00 - .byte 0x00 - -gItemEffect_FullRestore: @ 81FCC39 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x3f - .byte 0x04 - .byte 0x00 - .byte 0xff - -gItemEffect_MaxPotion: @ 81FCC40 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 0xff - -gItemEffect_HyperPotion: @ 81FCC47 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 200 - -gItemEffect_SuperPotion: @ 81FCC4E - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 50 - -gItemEffect_FullHeal: @ 81FCC55 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x3f - .byte 0x00 - .byte 0x00 - -gItemEffect_Revive: @ 81FCC5B - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x44 - .byte 0x00 - .byte 0xfe - -gItemEffect_MaxRevive: @ 81FCC62 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x44 - .byte 0x00 - .byte 0xff - -gItemEffect_FreshWater: @ 81FCC69 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 50 - -gItemEffect_SodaPop: @ 81FCC70 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 60 - -gItemEffect_Lemonade: @ 81FCC77 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 80 - -gItemEffect_MoomooMilk: @ 81FCC7E - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 100 - -gItemEffect_EnergyPowder: @ 81FCC85 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0xe0 - .byte 50 - .byte 0xfb - .byte 0xfb - .byte 0xf6 - -gItemEffect_EnergyRoot: @ 81FCC8F - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0xe0 - .byte 200 - .byte 0xf6 - .byte 0xf6 - .byte 0xf1 - -gItemEffect_HealPowder: @ 81FCC99 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x3f - .byte 0x00 - .byte 0xe0 - .byte 0xfb - .byte 0xfb - .byte 0xf6 - -gItemEffect_RevivalHerb: @ 81FCCA2 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x44 - .byte 0xe0 - .byte 0xfe - .byte 0xf1 - .byte 0xf1 - .byte 0xec - -gItemEffect_Ether: @ 81FCCAC - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x18 - .byte 0x00 - .byte 0x0a - -gItemEffect_MaxEther: @ 81FCCB3 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x18 - .byte 0x00 - .byte 0x7f - -gItemEffect_Elixir: @ 81FCCBA - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x08 - .byte 0x00 - .byte 0x0a - -gItemEffect_MaxElixir: @ 81FCCC1 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x08 - .byte 0x00 - .byte 0x7f - -gItemEffect_LavaCookie: @ 81FCCC8 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x3f - .byte 0x00 - .byte 0x00 - -gItemEffect_BlueFlute: @ 81FCCCE - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x20 - .byte 0x00 - .byte 0x00 - -gItemEffect_YellowFlute: @ 81FCCD4 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x01 - .byte 0x00 - .byte 0x00 - -gItemEffect_RedFlute: @ 81FCCDA - .byte 0x80 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - -gItemEffect_BerryJuice: @ 81FCCE0 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 20 - -gItemEffect_SacredAsh: @ 81FCCE7 - .byte 0x40 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x44 - .byte 0x00 - .byte 0xff - -gItemEffect_HPUp: @ 81FCCEE - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x01 - .byte 0xe0 - .byte 0x0a - .byte 0x05 - .byte 0x03 - .byte 0x02 - -gItemEffect_Protein: @ 81FCCF8 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x02 - .byte 0xe0 - .byte 0x0a - .byte 0x05 - .byte 0x03 - .byte 0x02 - -gItemEffect_Iron: @ 81FCD02 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0xe1 - .byte 0x0a - .byte 0x05 - .byte 0x03 - .byte 0x02 - -gItemEffect_Carbos: @ 81FCD0C - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0xe2 - .byte 0x0a - .byte 0x05 - .byte 0x03 - .byte 0x02 - -gItemEffect_Calcium: @ 81FCD16 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0xe8 - .byte 0x0a - .byte 0x05 - .byte 0x03 - .byte 0x02 - -gItemEffect_RareCandy: @ 81FCD20 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x40 - .byte 0x44 - .byte 0xe0 - .byte 253 - .byte 0x05 - .byte 0x03 - .byte 0x02 - -gItemEffect_PPUp: @ 81FCD2A - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x20 - .byte 0xe0 - .byte 0x05 - .byte 0x03 - .byte 0x02 - -gItemEffect_Zinc: @ 81FCD33 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0xe4 - .byte 0x0a - .byte 0x05 - .byte 0x03 - .byte 0x02 - -gItemEffect_PPMax: @ 81FCD3D - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0xf0 - .byte 0x05 - .byte 0x03 - .byte 0x02 - -gItemEffect_GuardSpec: @ 81FCD46 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x80 - .byte 0x00 - .byte 0x60 - .byte 0x01 - .byte 0x01 - -gItemEffect_DireHit: @ 81FCD4E - .byte 0x20 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x60 - .byte 0x01 - .byte 0x01 - -gItemEffect_XAttack: @ 81FCD56 - .byte 0x01 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x60 - .byte 0x01 - .byte 0x01 - -gItemEffect_XDefend: @ 81FCD5E - .byte 0x00 - .byte 0x10 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x60 - .byte 0x01 - .byte 0x01 - -gItemEffect_XSpeed: @ 81FCD66 - .byte 0x00 - .byte 0x01 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x60 - .byte 0x01 - .byte 0x01 - -gItemEffect_XAccuracy: @ 81FCD6E - .byte 0x00 - .byte 0x00 - .byte 0x10 - .byte 0x00 - .byte 0x00 - .byte 0x60 - .byte 0x01 - .byte 0x01 - -gItemEffect_XSpecial: @ 81FCD76 - .byte 0x00 - .byte 0x00 - .byte 0x01 - .byte 0x00 - .byte 0x00 - .byte 0x60 - .byte 0x01 - .byte 0x01 - -gItemEffect_SunStone: @ 81FCD7E - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x80 - .byte 0x00 - -gItemEffect_MoonStone: @ 81FCD84 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x80 - .byte 0x00 - -gItemEffect_FireStone: @ 81FCD8A - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x80 - .byte 0x00 - -gItemEffect_ThunderStone: @ 81FCD90 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x80 - .byte 0x00 - -gItemEffect_WaterStone: @ 81FCD96 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x80 - .byte 0x00 - -gItemEffect_LeafStone: @ 81FCD9C - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x80 - .byte 0x00 - -gItemEffect_CheriBerry: @ 81FCDA2 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x02 - .byte 0x00 - .byte 0x00 - -gItemEffect_ChestoBerry: @ 81FCDA8 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x20 - .byte 0x00 - .byte 0x00 - -gItemEffect_PechaBerry: @ 81FCDAE - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x10 - .byte 0x00 - .byte 0x00 - -gItemEffect_RawstBerry: @ 81FCDB4 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x08 - .byte 0x00 - .byte 0x00 - -gItemEffect_AspearBerry: @ 81FCDBA - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 0x00 - -gItemEffect_LeppaBerry: @ 81FCDC0 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x18 - .byte 0x00 - .byte 0x0a - -gItemEffect_OranBerry: @ 81FCDC7 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 10 - -gItemEffect_PersimBerry: @ 81FCDCE - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x01 - .byte 0x00 - .byte 0x00 - -gItemEffect_LumBerry: @ 81FCDD4 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x3f - .byte 0x00 - .byte 0x00 - -gItemEffect_SitrusBerry: @ 81FCDDA - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x00 - .byte 0x04 - .byte 0x00 - .byte 30 - - .align 2 -gItemEffectTable:: @ 81FCDE4 - .4byte gItemEffect_Potion - .4byte gItemEffect_Antidote - .4byte gItemEffect_BurnHeal - .4byte gItemEffect_IceHeal - .4byte gItemEffect_Awakening - .4byte gItemEffect_ParalyzeHeal - .4byte gItemEffect_FullRestore - .4byte gItemEffect_MaxPotion - .4byte gItemEffect_HyperPotion - .4byte gItemEffect_SuperPotion - .4byte gItemEffect_FullHeal - .4byte gItemEffect_Revive - .4byte gItemEffect_MaxRevive - .4byte gItemEffect_FreshWater - .4byte gItemEffect_SodaPop - .4byte gItemEffect_Lemonade - .4byte gItemEffect_MoomooMilk - .4byte gItemEffect_EnergyPowder - .4byte gItemEffect_EnergyRoot - .4byte gItemEffect_HealPowder - .4byte gItemEffect_RevivalHerb - .4byte gItemEffect_Ether - .4byte gItemEffect_MaxEther - .4byte gItemEffect_Elixir - .4byte gItemEffect_MaxElixir - .4byte gItemEffect_LavaCookie - .4byte gItemEffect_BlueFlute - .4byte gItemEffect_YellowFlute - .4byte gItemEffect_RedFlute - .4byte NULL - .4byte NULL - .4byte gItemEffect_BerryJuice - .4byte gItemEffect_SacredAsh - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte gItemEffect_HPUp - .4byte gItemEffect_Protein - .4byte gItemEffect_Iron - .4byte gItemEffect_Carbos - .4byte gItemEffect_Calcium - .4byte gItemEffect_RareCandy - .4byte gItemEffect_PPUp - .4byte gItemEffect_Zinc - .4byte gItemEffect_PPMax - .4byte NULL - .4byte gItemEffect_GuardSpec - .4byte gItemEffect_DireHit - .4byte gItemEffect_XAttack - .4byte gItemEffect_XDefend - .4byte gItemEffect_XSpeed - .4byte gItemEffect_XAccuracy - .4byte gItemEffect_XSpecial - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte gItemEffect_SunStone - .4byte gItemEffect_MoonStone - .4byte gItemEffect_FireStone - .4byte gItemEffect_ThunderStone - .4byte gItemEffect_WaterStone - .4byte gItemEffect_LeafStone - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte gItemEffect_CheriBerry - .4byte gItemEffect_ChestoBerry - .4byte gItemEffect_PechaBerry - .4byte gItemEffect_RawstBerry - .4byte gItemEffect_AspearBerry - .4byte gItemEffect_LeppaBerry - .4byte gItemEffect_OranBerry - .4byte gItemEffect_PersimBerry - .4byte gItemEffect_LumBerry - .4byte gItemEffect_SitrusBerry - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL - .4byte NULL diff --git a/data/pokemon.s b/data/pokemon.s index 00da88bfd..9b517810c 100644 --- a/data/pokemon.s +++ b/data/pokemon.s @@ -3,9 +3,6 @@ .section .rodata -@ 81FCC14 - .include "data/item_effects.inc" - @ 81FD070 .include "data/nature_stat_table.inc" diff --git a/src/pokemon_data.c b/src/pokemon_data.c index c75294ceb..39f2a7509 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -86,3 +86,819 @@ const struct SpindaSpot gSpindaSpotGraphics[] = { 0x0000 // 0000000000000000 }} }; + +const u8 gItemEffect_Potion[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 20 +}; + +const u8 gItemEffect_Antidote[] = { + 0x00, + 0x00, + 0x00, + 0x10, + 0x00, + 0x00 +}; + +const u8 gItemEffect_BurnHeal[] = { + 0x00, + 0x00, + 0x00, + 0x08, + 0x00, + 0x00 +}; + +const u8 gItemEffect_IceHeal[] = { + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0x00 +}; + +const u8 gItemEffect_Awakening[] = { + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x00 +}; + +const u8 gItemEffect_ParalyzeHeal[] = { + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00 +}; + +const u8 gItemEffect_FullRestore[] = { + 0x00, + 0x00, + 0x00, + 0x3f, + 0x04, + 0x00, + 0xff +}; + +const u8 gItemEffect_MaxPotion[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0xff +}; + +const u8 gItemEffect_HyperPotion[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 200 +}; + +const u8 gItemEffect_SuperPotion[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 50 +}; + +const u8 gItemEffect_FullHeal[] = { + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00 +}; + +const u8 gItemEffect_Revive[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x44, + 0x00, + 0xfe +}; + +const u8 gItemEffect_MaxRevive[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x44, + 0x00, + 0xff +}; + +const u8 gItemEffect_FreshWater[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 50 +}; + +const u8 gItemEffect_SodaPop[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 60 +}; + +const u8 gItemEffect_Lemonade[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 80 +}; + +const u8 gItemEffect_MoomooMilk[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 100 +}; + +const u8 gItemEffect_EnergyPowder[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0xe0, + 50, + 0xfb, + 0xfb, + 0xf6 +}; + +const u8 gItemEffect_EnergyRoot[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0xe0, + 200, + 0xf6, + 0xf6, + 0xf1 +}; + +const u8 gItemEffect_HealPowder[] = { + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0xe0, + 0xfb, + 0xfb, + 0xf6 +}; + +const u8 gItemEffect_RevivalHerb[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x44, + 0xe0, + 0xfe, + 0xf1, + 0xf1, + 0xec +}; + +const u8 gItemEffect_Ether[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x18, + 0x00, + 0x0a +}; + +const u8 gItemEffect_MaxEther[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x18, + 0x00, + 0x7f +}; + +const u8 gItemEffect_Elixir[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x08, + 0x00, + 0x0a +}; + +const u8 gItemEffect_MaxElixir[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x08, + 0x00, + 0x7f +}; + +const u8 gItemEffect_LavaCookie[] = { + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00 +}; + +const u8 gItemEffect_BlueFlute[] = { + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x00 +}; + +const u8 gItemEffect_YellowFlute[] = { + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00 +}; + +const u8 gItemEffect_RedFlute[] = { + 0x80, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00 +}; + +const u8 gItemEffect_BerryJuice[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 20 +}; + +const u8 gItemEffect_SacredAsh[] = { + 0x40, + 0x00, + 0x00, + 0x00, + 0x44, + 0x00, + 0xff +}; + +const u8 gItemEffect_HPUp[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0xe0, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_Protein[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x02, + 0xe0, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_Iron[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xe1, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_Carbos[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xe2, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_Calcium[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xe8, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_RareCandy[] = { + 0x00, + 0x00, + 0x00, + 0x40, + 0x44, + 0xe0, + 253, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_PPUp[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x20, + 0xe0, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_Zinc[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xe4, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_PPMax[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xf0, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_GuardSpec[] = { + 0x00, + 0x00, + 0x00, + 0x80, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_DireHit[] = { + 0x20, + 0x00, + 0x00, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_XAttack[] = { + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_XDefend[] = { + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_XSpeed[] = { + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_XAccuracy[] = { + 0x00, + 0x00, + 0x10, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_XSpecial[] = { + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_SunStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_MoonStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_FireStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_ThunderStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_WaterStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_LeafStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_CheriBerry[] = { + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00 +}; + +const u8 gItemEffect_ChestoBerry[] = { + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x00 +}; + +const u8 gItemEffect_PechaBerry[] = { + 0x00, + 0x00, + 0x00, + 0x10, + 0x00, + 0x00 +}; + +const u8 gItemEffect_RawstBerry[] = { + 0x00, + 0x00, + 0x00, + 0x08, + 0x00, + 0x00 +}; + +const u8 gItemEffect_AspearBerry[] = { + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0x00 +}; + +const u8 gItemEffect_LeppaBerry[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x18, + 0x00, + 0x0a +}; + +const u8 gItemEffect_OranBerry[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 10 +}; + +const u8 gItemEffect_PersimBerry[] = { + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00 +}; + +const u8 gItemEffect_LumBerry[] = { + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00 +}; + +const u8 gItemEffect_SitrusBerry[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 30 +}; + +const u8 *const gItemEffectTable[] = { + gItemEffect_Potion, + gItemEffect_Antidote, + gItemEffect_BurnHeal, + gItemEffect_IceHeal, + gItemEffect_Awakening, + gItemEffect_ParalyzeHeal, + gItemEffect_FullRestore, + gItemEffect_MaxPotion, + gItemEffect_HyperPotion, + gItemEffect_SuperPotion, + gItemEffect_FullHeal, + gItemEffect_Revive, + gItemEffect_MaxRevive, + gItemEffect_FreshWater, + gItemEffect_SodaPop, + gItemEffect_Lemonade, + gItemEffect_MoomooMilk, + gItemEffect_EnergyPowder, + gItemEffect_EnergyRoot, + gItemEffect_HealPowder, + gItemEffect_RevivalHerb, + gItemEffect_Ether, + gItemEffect_MaxEther, + gItemEffect_Elixir, + gItemEffect_MaxElixir, + gItemEffect_LavaCookie, + gItemEffect_BlueFlute, + gItemEffect_YellowFlute, + gItemEffect_RedFlute, + NULL, + NULL, + gItemEffect_BerryJuice, + gItemEffect_SacredAsh, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_HPUp, + gItemEffect_Protein, + gItemEffect_Iron, + gItemEffect_Carbos, + gItemEffect_Calcium, + gItemEffect_RareCandy, + gItemEffect_PPUp, + gItemEffect_Zinc, + gItemEffect_PPMax, + NULL, + gItemEffect_GuardSpec, + gItemEffect_DireHit, + gItemEffect_XAttack, + gItemEffect_XDefend, + gItemEffect_XSpeed, + gItemEffect_XAccuracy, + gItemEffect_XSpecial, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_SunStone, + gItemEffect_MoonStone, + gItemEffect_FireStone, + gItemEffect_ThunderStone, + gItemEffect_WaterStone, + gItemEffect_LeafStone, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_CheriBerry, + gItemEffect_ChestoBerry, + gItemEffect_PechaBerry, + gItemEffect_RawstBerry, + gItemEffect_AspearBerry, + gItemEffect_LeppaBerry, + gItemEffect_OranBerry, + gItemEffect_PersimBerry, + gItemEffect_LumBerry, + gItemEffect_SitrusBerry, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; -- cgit v1.2.3 From 81d1e4e5d1cf89a49a5ba3b96ab03ec78b46ff8c Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 12:47:15 -0400 Subject: Convert nature stat table to c object --- data/nature_stat_table.inc | 27 --------------------------- data/pokemon.s | 3 --- src/pokemon_data.c | 29 +++++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 30 deletions(-) delete mode 100644 data/nature_stat_table.inc diff --git a/data/nature_stat_table.inc b/data/nature_stat_table.inc deleted file mode 100644 index e09d41a43..000000000 --- a/data/nature_stat_table.inc +++ /dev/null @@ -1,27 +0,0 @@ -gNatureStatTable:: @ 81FD070 - @ Atk Def Spd Sp.Atk Sp.Def - .byte 0, 0, 0, 0, 0 @ Hardy - .byte 1, -1, 0, 0, 0 @ Lonely - .byte 1, 0, -1, 0, 0 @ Brave - .byte 1, 0, 0, -1, 0 @ Adamant - .byte 1, 0, 0, 0, -1 @ Naughty - .byte -1, 1, 0, 0, 0 @ Bold - .byte 0, 0, 0, 0, 0 @ Docile - .byte 0, 1, -1, 0, 0 @ Relaxed - .byte 0, 1, 0, -1, 0 @ Impish - .byte 0, 1, 0, 0, -1 @ Lax - .byte -1, 0, 1, 0, 0 @ Timid - .byte 0, -1, 1, 0, 0 @ Hasty - .byte 0, 0, 0, 0, 0 @ Serious - .byte 0, 0, 1, -1, 0 @ Jolly - .byte 0, 0, 1, 0, -1 @ Naive - .byte -1, 0, 0, 1, 0 @ Modest - .byte 0, -1, 0, 1, 0 @ Mild - .byte 0, 0, -1, 1, 0 @ Quiet - .byte 0, 0, 0, 0, 0 @ Bashful - .byte 0, 0, 0, 1, -1 @ Rash - .byte -1, 0, 0, 0, 1 @ Calm - .byte 0, -1, 0, 0, 1 @ Gentle - .byte 0, 0, -1, 0, 1 @ Sassy - .byte 0, 0, 0, -1, 1 @ Careful - .byte 0, 0, 0, 0, 0 @ Quirky diff --git a/data/pokemon.s b/data/pokemon.s index 9b517810c..1fcbcebc4 100644 --- a/data/pokemon.s +++ b/data/pokemon.s @@ -3,9 +3,6 @@ .section .rodata -@ 81FD070 - .include "data/nature_stat_table.inc" - @ 81FD0F0 .include "data/tm_hm_learnsets.inc" diff --git a/src/pokemon_data.c b/src/pokemon_data.c index 39f2a7509..df698d12d 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -902,3 +902,32 @@ const u8 *const gItemEffectTable[] = { NULL, NULL }; + +const s8 gNatureStatTable[][5] = { + // Atk Def Spd Sp.Atk Sp.Def + { 0, 0, 0, 0, 0}, // Hardy + { 1, -1, 0, 0, 0}, // Lonely + { 1, 0, -1, 0, 0}, // Brave + { 1, 0, 0, -1, 0}, // Adamant + { 1, 0, 0, 0, -1}, // Naughty + { -1, 1, 0, 0, 0}, // Bold + { 0, 0, 0, 0, 0}, // Docile + { 0, 1, -1, 0, 0}, // Relaxed + { 0, 1, 0, -1, 0}, // Impish + { 0, 1, 0, 0, -1}, // Lax + { -1, 0, 1, 0, 0}, // Timid + { 0, -1, 1, 0, 0}, // Hasty + { 0, 0, 0, 0, 0}, // Serious + { 0, 0, 1, -1, 0}, // Jolly + { 0, 0, 1, 0, -1}, // Naive + { -1, 0, 0, 1, 0}, // Modest + { 0, -1, 0, 1, 0}, // Mild + { 0, 0, -1, 1, 0}, // Quiet + { 0, 0, 0, 0, 0}, // Bashful + { 0, 0, 0, 1, -1}, // Rash + { -1, 0, 0, 0, 1}, // Calm + { 0, -1, 0, 0, 1}, // Gentle + { 0, 0, -1, 0, 1}, // Sassy + { 0, 0, 0, -1, 1}, // Careful + { 0, 0, 0, 0, 0} // Quirky +}; -- cgit v1.2.3 From 7ea632588f484bf8d3e240315a284986fba53992 Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 14:19:51 -0400 Subject: Convert TM/HM learns to c object (to-do: make definition of TM/HM learns more user-friendly) --- data/pokemon.s | 3 - data/tm_hm_learnsets.inc | 414 ---------------------------------------------- src/pokemon_data.c | 419 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 419 insertions(+), 417 deletions(-) delete mode 100644 data/tm_hm_learnsets.inc diff --git a/data/pokemon.s b/data/pokemon.s index 1fcbcebc4..d5d40e201 100644 --- a/data/pokemon.s +++ b/data/pokemon.s @@ -3,9 +3,6 @@ .section .rodata -@ 81FD0F0 - .include "data/tm_hm_learnsets.inc" - @ 81FDDD0 .include "data/trainer_class_index_tables.inc" diff --git a/data/tm_hm_learnsets.inc b/data/tm_hm_learnsets.inc deleted file mode 100644 index be4522310..000000000 --- a/data/tm_hm_learnsets.inc +++ /dev/null @@ -1,414 +0,0 @@ - .align 2 -gTMHMLearnsets:: @ 81FD0F0 - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ?????????? - .8byte 0b0011100100000111100000100010000100001101010000011100100000 @ Bulbasaur - .8byte 0b0011100100000111100000100010000100001101010000011100100000 @ Ivysaur - .8byte 0b0011100100000111100000100010000110001101010100011100110000 @ Venusaur - .8byte 0b0010100110000111101010010011001100010100010000011000100011 @ Charmander - .8byte 0b0010100110000111101010010011001100010100010000011000100011 @ Charmeleon - .8byte 0b0010101110010111101010010011001110010100010100011000110011 @ Charizard - .8byte 0b1110110000000111100000000011001100010100110011001001100101 @ Squirtle - .8byte 0b1110110000000111100000000011001100010100110011001001100101 @ Wartortle - .8byte 0b1110110000000111100000000011001110010100110111001001110101 @ Blastoise - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Caterpie - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Metapod - .8byte 0b0001000000101111101000000010110100001111110100011000100000 @ Butterfree - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Weedle - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Kakuna - .8byte 0b0010000100001111101000100011000100001101010100011000100000 @ Beedrill - .8byte 0b0000001000011111101000000010000100000100110000011000100000 @ Pidgey - .8byte 0b0000001000011111101000000010000100000100110000011000100000 @ Pidgeotto - .8byte 0b0000001000011111101000000010000100000100110100011000100000 @ Pidgeot - .8byte 0b0010000100001111100000001010101101110100110011111000100000 @ Rattata - .8byte 0b0010100100001111100000001010101101110100110111111000110000 @ Raticate - .8byte 0b0000001000011111101000000010000100000100110000011000100000 @ Spearow - .8byte 0b0000001000011111101000000010000100000100110100011000100000 @ Fearow - .8byte 0b0000100001001111110000100010001110010101110000011000100000 @ Ekans - .8byte 0b0000100001001111110000100010001110010101110100011000100000 @ Arbok - .8byte 0b0011100000000111100000001011001101110100111000001000100001 @ Pikachu - .8byte 0b0011100000001111100000001011001101110100111100001000100001 @ Raichu - .8byte 0b0010100100001111101101000011001110010100010000011000100001 @ Sandshrew - .8byte 0b0010100100001111101101000011001110010100010100011000100001 @ Sandslash - .8byte 0b0010100100001111101000101010001101110100110011011000100100 @ Nidoran♀ - .8byte 0b0010100100001111101000101010001101110100110011011000100100 @ Nidorina - .8byte 0b0010110100001111111111111011101111110100110111111000110101 @ Nidoqueen - .8byte 0b0010100100001111100000101010001101110100110011011000100100 @ Nidoran♂ - .8byte 0b0010100100001111100000101010001101110100110011011000100100 @ Nidorino - .8byte 0b0010110100001111110111111011101111110100110111111000110101 @ Nidoking - .8byte 0b0001100001000111100010011111111101111110111011011000101101 @ Clefairy - .8byte 0b0001100001000111100010011111111101111110111111011000101101 @ Clefable - .8byte 0b0000000010000111100010010010001100010110010000011000110000 @ Vulpix - .8byte 0b0000000010000111100010010010001100010110010100011000110000 @ Ninetales - .8byte 0b0001100001000111100010011111111101101110111011011000100101 @ Jigglypuff - .8byte 0b0001100001000111100010011111111101101110111111011000100101 @ Wigglytuff - .8byte 0b0000000001011111111000100010100100000101110000111000100000 @ Zubat - .8byte 0b0000000001011111111000100010100100000101110100111000100000 @ Golbat - .8byte 0b0001000100000111100000100010000100001101010000011100100000 @ Oddish - .8byte 0b0001000100000111100000100010000100001101010000011100100000 @ Gloom - .8byte 0b0001000100000111100000100010000100001101010100011100100000 @ Vileplume - .8byte 0b0011000100001111101000100010001100001101010000011100100000 @ Paras - .8byte 0b0011000100001111101000100010001100001101010100011100100000 @ Parasect - .8byte 0b0001000000101111100000100010010100001101010000011000100000 @ Venonat - .8byte 0b0001000000101111101000100010010100001101010100011000100000 @ Venomoth - .8byte 0b0010000100001111101100100010001110000100010000011000100000 @ Diglett - .8byte 0b0010000100001111101100100010001110000100010100011000100000 @ Dugtrio - .8byte 0b0001000101001111111000001010101101110100110000111000100100 @ Meowth - .8byte 0b0001000101001111111000001010101101110100110100111000110100 @ Persian - .8byte 0b1111110000000111101000000011001100010100110011001001101101 @ Psyduck - .8byte 0b1111110000000111101000000011001100010100110111001001101101 @ Golduck - .8byte 0b0010100010001111101100000011001111110100110000111010100001 @ Mankey - .8byte 0b0010100010001111101100000011001111110100110100111010100001 @ Primeape - .8byte 0b0010100010001111101010010010001100010100010000011000110000 @ Growlithe - .8byte 0b0010100010001111101010010010001100010100010100011000110000 @ Arcanine - .8byte 0b1100010000001111100000000010011100000100110011001001100100 @ Poliwag - .8byte 0b1110110000001111100000000011011110000100110011001001100101 @ Poliwhirl - .8byte 0b1110110000001111100100000011011110000100110111001011100101 @ Poliwrath - .8byte 0b0001000001101111110000001110110100010110111000111000101001 @ Abra - .8byte 0b0001000001101111110000001110110100010110111000111000101001 @ Kadabra - .8byte 0b0001000001101111110000001110110100010110111100111000101001 @ Alakazam - .8byte 0b0010100000001111100110010011001110000100110000011010100001 @ Machop - .8byte 0b0010100000001111100110010011001110000100110000011010100001 @ Machoke - .8byte 0b0010100000001111100110010011001110000100110100011010100001 @ Machamp - .8byte 0b0001000100001111100000100010000100001101010000011100100000 @ Bellsprout - .8byte 0b0001000100001111100000100010000100001101010000011100100000 @ Weepinbell - .8byte 0b0001000100001111100000100010000100001101010100011100100000 @ Victreebel - .8byte 0b1100010100001111100000100010000100000101110011001001100100 @ Tentacool - .8byte 0b1100010100001111100000100010000100000101110111001001100100 @ Tentacruel - .8byte 0b0010100000000111100111010011001110000100010000011000100001 @ Geodude - .8byte 0b0010100000000111100111010011001110000100010000011000100001 @ Graveler - .8byte 0b0010100000000111100111010011001110000100010100011000110001 @ Golem - .8byte 0b0000100010000111100010010010000100011100010000011000100000 @ Ponyta - .8byte 0b0000100010000111100010010010000100011100010100011000100000 @ Rapidash - .8byte 0b1001110000100111100010010010111110010110110011011001101100 @ Slowpoke - .8byte 0b1011110000100111100010010011111110010110110111011001101101 @ Slowbro - .8byte 0b0001000000000011100000001110000101100100110000011000100000 @ Magnemite - .8byte 0b0001000000000011100000001110000101100100110100011000100000 @ Magneton - .8byte 0b0000001100011111101000000010000100010100010000011000100000 @ Farfetch'd - .8byte 0b0000001000011111101000000010000100000100010000011000100000 @ Doduo - .8byte 0b0000001000011111111000000010000100000100010100111000100000 @ Dodrio - .8byte 0b1100010000001111100000000010000100000110110011001001100100 @ Seel - .8byte 0b1100010000001111100000000010000100000110110111001001100100 @ Dewgong - .8byte 0b0000000000001111110110111010001101100101110000111000100000 @ Grimer - .8byte 0b0010100000001111110110111011001101100101110100111000100001 @ Muk - .8byte 0b1000010000000111100000000010000100000100110011001001100100 @ Shellder - .8byte 0b1000010000000111110000000010000100000100110111001001100100 @ Cloyster - .8byte 0b0000000001101111110000100010110100100101110000111000100000 @ Gastly - .8byte 0b0000000001101111110000100010110100100101110000111000100000 @ Haunter - .8byte 0b0010100001101111110000100011110101100101110100111000100001 @ Gengar - .8byte 0b0010100000000111110101000010001110010100010000111000110000 @ Onix - .8byte 0b0001000001101111110000000111110100000110111000111000101001 @ Drowzee - .8byte 0b0001000001101111110000000111110100000110111100111000101001 @ Hypno - .8byte 0b1010110100001111100100000010001100000100110011001001100100 @ Krabby - .8byte 0b1010110100001111100100000010001100000100110111001001100100 @ Kingler - .8byte 0b0001000000001011110000001010000101100100111000101000100000 @ Voltorb - .8byte 0b0001000000001011110000001010000101100100111100101000100000 @ Electrode - .8byte 0b0001100000101111100000100110010100001101011000011100100000 @ Exeggcute - .8byte 0b0001100000101111100000100110010100001101011100011100100000 @ Exeggutor - .8byte 0b0010100000001111101111010011001110010100010011011000100001 @ Cubone - .8byte 0b0010100000001111101111010011001110010100010111011000100001 @ Marowak - .8byte 0b0010100000001111100100000011000110000100110000011010100001 @ Hitmonlee - .8byte 0b0010100000001111100100000011000110000100110000011010100001 @ Hitmonchan - .8byte 0b0010110100001111100111011011101111111100110111011000100101 @ Lickitung - .8byte 0b0001000000001111110010111010100101100100110000111000100000 @ Koffing - .8byte 0b0001000000001111110010111010100101100100110100111000100000 @ Weezing - .8byte 0b0010100000001111100111011010001111110100110011011000110000 @ Rhyhorn - .8byte 0b0010110100001111100111011011001111110100110111011000110001 @ Rhydon - .8byte 0b0011100001100111100111011011110111111110111111011001101101 @ Chansey - .8byte 0b0011000100001111100000100010000100001101010100011100100000 @ Tangela - .8byte 0b0010110100001111101111011011101111111100110111011001110101 @ Kangaskhan - .8byte 0b1100010000000111100000000010000100000100110011001001100100 @ Horsea - .8byte 0b1100010000000111100000000010000100000100110111001001100100 @ Seadra - .8byte 0b1100010000000111100000000010000100000100110011001001100100 @ Goldeen - .8byte 0b1100010000000111100000000010000100000100110111001001100100 @ Seaking - .8byte 0b1101010000000011100000000110010101100100111011001001100100 @ Staryu - .8byte 0b1101010000100011100000000110010101100100111111001001100100 @ Starmie - .8byte 0b0001000001101111110000001111110101101110111100111000101001 @ Mr. mime - .8byte 0b0010000100011111101000000010000100000100110100011000100000 @ Scyther - .8byte 0b0001000000101111110000000111110100000100111111101001101101 @ Jynx - .8byte 0b0011100000001111100000001011010101110100111100001000100001 @ Electabuzz - .8byte 0b0010100000001111100010010011010100010100010100011000100001 @ Magmar - .8byte 0b0010100100001111100100000011001110000100110100011010100001 @ Pinsir - .8byte 0b0010110000000111100111011010000111111100110111011000100100 @ Tauros - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Magikarp - .8byte 0b1110110000000111110011010010000111100100110111101001110100 @ Gyarados - .8byte 0b1110110000000111100000001010010101110110110111001001110100 @ Lapras - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Ditto - .8byte 0b0000000000000111100000000010101100010100110000011000100000 @ Eevee - .8byte 0b1100010000000111100000000010101100010100110111011001110100 @ Vaporeon - .8byte 0b0001000000000111100000001010101101110100110100011000110000 @ Jolteon - .8byte 0b0000000010000111100010010010101100010100110100011000110000 @ Flareon - .8byte 0b0001000000001011101000001010110101111100110111011000100000 @ Porygon - .8byte 0b1110010000001111100101000010000100000100110011001001100100 @ Omanyte - .8byte 0b1110010000001111100101000010000100000100110111001001100100 @ Omastar - .8byte 0b0110010000001111101101000010001100000101110011001001100100 @ Kabuto - .8byte 0b1110010100001111101101000011001100000101110111001001100100 @ Kabutops - .8byte 0b0010101000011111111111010010000110010100110100111000110010 @ Aerodactyl - .8byte 0b0000110000000111100111011011110111101100110111011000100101 @ Snorlax - .8byte 0b0010001000010011101001000110000100000100110111011001110100 @ Articuno - .8byte 0b0011001000010011101001001010000101100100111100011000110000 @ Zapdos - .8byte 0b0010001010010011101011010010000100000110110100011000110000 @ Moltres - .8byte 0b0100010000000111100010011010000101110110110111011001100100 @ Dratini - .8byte 0b0100010000000111100010011010000101110110110111011001100100 @ Dragonair - .8byte 0b1110111100010111101111011011000111110110110111011001110111 @ Dragonite - .8byte 0b0011100001100011111111011111110111111110111111111011101101 @ Mewtwo - .8byte 0b1111111111111111111111111111111111111111111111111111111111 @ Mew - .8byte 0b0001000100000111100000000110000100011111011000011100100000 @ Chikorita - .8byte 0b0011100100000111100000000110000100011111011000011100100000 @ Bayleef - .8byte 0b0011100100000111100000000110000110011111011100011100100000 @ Meganium - .8byte 0b0000000110000111101010010010001100000100010000011000100000 @ Cyndaquil - .8byte 0b0010100110000111101010010011001100000100010000011000110001 @ Quilava - .8byte 0b0010100110000111101010010011001110000100010100011000110001 @ Typhlosion - .8byte 0b1100010100000111101000000011001100010100110011001001100101 @ Totodile - .8byte 0b1110110100000111101000000011001100010100110011001001110101 @ Croconaw - .8byte 0b1110110100000111101000000011001110010100110111001001110111 @ Feraligatr - .8byte 0b0000010100001111100000011011101100111100110001011000100101 @ Sentret - .8byte 0b0010110100001111100000011011101101111100110111011000100101 @ Furret - .8byte 0b0001001000011111101000000110110100000100110000011000100000 @ Hoothoot - .8byte 0b0001001000011111101000000110110100000100110100011000100000 @ Noctowl - .8byte 0b0001000000001111101000000111001100001111011000011000100001 @ Ledyba - .8byte 0b0001000000001111101000000111001100001111011100011000100001 @ Ledian - .8byte 0b0001000000001111100000100010011100001101010000011000100000 @ Spinarak - .8byte 0b0001000000001111100000100010011100001101010100011000100000 @ Ariados - .8byte 0b0000001001011111111000100010100100000101110100111000100000 @ Crobat - .8byte 0b1101010000000111100000001010000101100100110011001001100100 @ Chinchou - .8byte 0b1101010000000111100000001010000101100100110111001001100100 @ Lanturn - .8byte 0b0001000000000111100000001010000101110100111000001000100000 @ Pichu - .8byte 0b0001000000000111100010011110111100011110111000011000100100 @ Cleffa - .8byte 0b0001000000000111100010011110111100001110111000011000100100 @ Igglybuff - .8byte 0b0011000000000111100010011110110100001110111000011000100100 @ Togepi - .8byte 0b0011001000010111101010011111110100001110111100011000100101 @ Togetic - .8byte 0b0001000000111111101000000110110100001101111000011000101000 @ Natu - .8byte 0b0001001000111111101000000110110100001101111100011000101000 @ Xatu - .8byte 0b0001000000000111100000001010000101110100111000001000100000 @ Mareep - .8byte 0b0011100000000111100000001011000101110100111000001000100001 @ Flaaffy - .8byte 0b0011100000000111100000001011000101110100111100001000100001 @ Ampharos - .8byte 0b0001000100000111100000100010000100001111010100011100100000 @ Bellossom - .8byte 0b1110110000000111100000000011001100010100110011001001100101 @ Marill - .8byte 0b1110110000000111100000000011001100010100110111001001100101 @ Azumarill - .8byte 0b0010100000001111100101000011001110000100010000111000101001 @ Sudowoodo - .8byte 0b1110110000001111100000000011011110000100110111001001100101 @ Politoed - .8byte 0b0001000000000111101000000010000100001101010000011100100000 @ Hoppip - .8byte 0b0001000000000111101000000010000100001101010000011100100000 @ Skiploom - .8byte 0b0001000000000111101000000010000100001101010100011100100000 @ Jumpluff - .8byte 0b0010100101001111101000001011101101111100110000111000100101 @ Aipom - .8byte 0b0001000100000111100000100010000100001111011000011100100000 @ Sunkern - .8byte 0b0001000100000111100000100010000100001111011100011100100000 @ Sunflora - .8byte 0b0001000000011111101000000010110100001101010000011000100000 @ Yanma - .8byte 0b1111010000000111100001100010001110010100110011001001100100 @ Wooper - .8byte 0b1111110000000111100101100011001110010100110111001001100101 @ Quagsire - .8byte 0b0001000100100111100000000110111100010100111100011000101000 @ Espeon - .8byte 0b0001000101000111110000000010111100010100110100111000100000 @ Umbreon - .8byte 0b0000001001011111111000000010100100000100110000111000101000 @ Murkrow - .8byte 0b1011110000100111100010010011111110010110110111011001101101 @ Slowking - .8byte 0b0001000001101111111000001010110101100100110000111000101000 @ Misdreavus - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Unown - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Wobbuffet - .8byte 0b0011100000101111100000001110110111110100111000011000101000 @ Girafarig - .8byte 0b0010100000000111100001000110001110001101011000011000100000 @ Pineco - .8byte 0b0010100000000111100001000110001110001101011100011000100000 @ Forretress - .8byte 0b0010100000001111100110011010101111111100110011011000101100 @ Dunsparce - .8byte 0b0010100100011111101101100010001110010100110000011000100000 @ Gligar - .8byte 0b0010100100000111110101000010001110010100010100111000110000 @ Steelix - .8byte 0b0010100010001111110010111011101111101100110000111010110101 @ Snubbull - .8byte 0b0010100010001111110110111011101111111100110100111010110101 @ Granbull - .8byte 0b1100010000000111100000101010100100000100110011001001100100 @ Qwilfish - .8byte 0b0010100100011111101001000010000100000100110100011000100000 @ Scizor - .8byte 0b0011100000000111100101100010001110000110010000011000100000 @ Shuckle - .8byte 0b0010100100001111100100000011001110000100110100011010100001 @ Heracross - .8byte 0b0010110101001111111000000011101100010100110011111001101001 @ Sneasel - .8byte 0b0010100100001111111000000011001110000100110000111010110001 @ Teddiursa - .8byte 0b0010100100001111111100000011001110000100110100111010110001 @ Ursaring - .8byte 0b0010000010000111100010010110000100000100011000011000100000 @ Slugma - .8byte 0b0010100010000111100111010110000110000100011100011000100000 @ Magcargo - .8byte 0b0010100000000111100101000110001110000100111011001001110000 @ Swinub - .8byte 0b0010100000000111100101000110001110000100111111001001110000 @ Piloswine - .8byte 0b0010110000000111100101000110111110000110111011011001101100 @ Corsola - .8byte 0b1100010000001111100010010010010100000100110111011000100100 @ Remoraid - .8byte 0b1100010000001111100010110010010100000100110111011100100100 @ Octillery - .8byte 0b0000001000001111101000000010000100000100110011001001100101 @ Delibird - .8byte 0b1100010000000111101000000010000110000100110011001001100100 @ Mantine - .8byte 0b0010001100011111111001000010000100000100010000111000110000 @ Skarmory - .8byte 0b0010000011001111110010110010100100011100010000111000110000 @ Houndour - .8byte 0b0010100011001111110010110010100100011100010100111000110000 @ Houndoom - .8byte 0b1100010000000111100000000010000100000100110111001001100100 @ Kingdra - .8byte 0b0010100000000111100101000010000110010100010000011000110000 @ Phanpy - .8byte 0b0010100000000111100101000010000110010100010100011000110000 @ Donphan - .8byte 0b0001000000001011101000001010110101111100110111011000100000 @ Porygon2 - .8byte 0b0001000000101111100000001110110111111100111000011000111000 @ Stantler - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Smeargle - .8byte 0b0010100000001111100000000011000110000100110000011010100000 @ Tyrogue - .8byte 0b0010100000001111100001000011001110000100110000011010100000 @ Hitmontop - .8byte 0b0001000000101111100000000110110100000100111011001001101100 @ Smoochum - .8byte 0b0011000000001111100000001011010101100100111000001000100001 @ Elekid - .8byte 0b0010000000001111100010010011010100010100010000011000100001 @ Magby - .8byte 0b0010110000000111100101001011100111111100110111011000100101 @ Miltank - .8byte 0b0011100001100111100111011011110111111110111111011001101101 @ Blissey - .8byte 0b0011100100000011100001001110001101110100110100011000111000 @ Raikou - .8byte 0b0011100100000011100011010110001100011100110100011000111000 @ Entei - .8byte 0b1110010100000011100001000110001100010100110111011001111100 @ Suicune - .8byte 0b0010000000000111110001000011001110000100110100111000100000 @ Larvitar - .8byte 0b0010000000000111110001000011001110000100110100111000100000 @ Pupitar - .8byte 0b0010110100000111111111011011001111110100110111111000110111 @ Tyranitar - .8byte 0b1110111000110011101001001110110111110111111111011001111100 @ Lugia - .8byte 0b0011101010010011101011011110110111101111111100011000111000 @ Ho-Oh - .8byte 0b0001000100100011101001001110110100001111111100011000101100 @ Celebi - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ ? - .8byte 0b0011100100000111101100000011001100011111010000011100100001 @ Treecko - .8byte 0b0011100100000111101100000011001100011111010000011100100001 @ Grovyle - .8byte 0b0011100100000111101100000011001110011111010100011100110011 @ Sceptile - .8byte 0b0010100110000111101110010010001100000100010000011000100000 @ Torchic - .8byte 0b0010100110000111101110010011001100000100010000011010100001 @ Combusken - .8byte 0b0010100110000111101110010011001110000100010100011010110001 @ Blaziken - .8byte 0b1110110000000111100100000010001100010100110011001001100100 @ Mudkip - .8byte 0b1110110000000111100100000010001110010100110011001001100100 @ Marshtomp - .8byte 0b1110110000000111100100000011001110010100110111001001110101 @ Swampert - .8byte 0b0010000001001111110000000010101100010100110000111000110000 @ Poochyena - .8byte 0b0010100001001111110000000010101100010100110100111000110000 @ Mightyena - .8byte 0b0010010100001111100000001010101101110100110011011000100100 @ Zigzagoon - .8byte 0b0010110100001111100000001010101101110100110111011000110100 @ Linoone - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Wurmple - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Silcoon - .8byte 0b0001000000001111101000000010110100001111010100011000100000 @ Beautifly - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Cascoon - .8byte 0b0001000000001111101000100010110100001101011100011000100000 @ Dustox - .8byte 0b0001010000001111100000000010000100001101110011011101100100 @ Lotad - .8byte 0b1111110000001111100000000011000100001101110011011101100100 @ Lombre - .8byte 0b1111110000001111100000000011000100001101110111011101100101 @ Ludicolo - .8byte 0b0011000000000111100000000010101100001101010000011100100000 @ Seedot - .8byte 0b0011100100001111110100000011101100001101010100011100100000 @ Nuzleaf - .8byte 0b0011100100001111111100000011101100001101010100011100100000 @ Shiftry - .8byte 0b0001000100000011101001000010101100001101010000011000100000 @ Nincada - .8byte 0b0001000100001111101001000010101100001101010100011000100000 @ Ninjask - .8byte 0b0001000100001011101001000010101100001101010100011000100000 @ Shedinja - .8byte 0b0000001000011111101000000010000100000100110000011000100000 @ Taillow - .8byte 0b0000001000011111101000000010000100000100110100011000100000 @ Swellow - .8byte 0b0001000001000111100000100010000100001111010000011100100000 @ Shroomish - .8byte 0b0011100101000111100000100011000100011111010100011110100001 @ Breloom - .8byte 0b0011100001101111100100001011111100000110110000011000101101 @ Spinda - .8byte 0b0000001000011111101000001010000100000100110011001001100100 @ Wingull - .8byte 0b0000011000011111101000001010000100000100110111001001100100 @ Pelipper - .8byte 0b0001000000001111100000000010100100001101110011011000100100 @ Surskit - .8byte 0b0001000000001111101000000010100100001101110111011000100100 @ Masquerain - .8byte 0b1110110000000111100100000010000110000100110011001001110100 @ Wailmer - .8byte 0b1110110000000111100100000010000110000100110111001001110100 @ Wailord - .8byte 0b0001000000000111100000001010101101111110110011011000101100 @ Skitty - .8byte 0b0011100000000111100000001010101101111110110111011000101100 @ Delcatty - .8byte 0b0011100101101111101110011011101101111100110011011000100101 @ Kecleon - .8byte 0b0001000000100011100101000110111110001100111001011000100000 @ Baltoy - .8byte 0b0011100000100011100101000110111110001100111101011000100000 @ Claydol - .8byte 0b0010100000000111110101001010000111100100010000111000100000 @ Nosepass - .8byte 0b0010100010000111100010110010000100010100010000011000100000 @ Torkoal - .8byte 0b0011000101001111111100001011111100000100110000111000101101 @ Sableye - .8byte 0b1100010000000111100101000010000110000100110011001001100100 @ Barboach - .8byte 0b1110110000000111100101000010000110000100110111001001100100 @ Whiscash - .8byte 0b1100010000000111100000000010000100000110110011001001100100 @ Luvdisc - .8byte 0b0110110100000111101100100011001100000100110011101001100100 @ Corphish - .8byte 0b1110110100000111101100100011001100000100110111101001100100 @ Crawdaunt - .8byte 0b1100010000000111100000000010000100000100110011001001100100 @ Feebas - .8byte 0b1100010000000111100000000010000100010110110111001001100100 @ Milotic - .8byte 0b1100010000001111110000000010000100000100110011101001100100 @ Carvanha - .8byte 0b1110110000001111110100000010000110000100110111101001110100 @ Sharpedo - .8byte 0b0010100000000111100101000010001110001101010100011000100000 @ Trapinch - .8byte 0b0010101000010111100101000010001110001101010100011000100000 @ Vibrava - .8byte 0b0010101000010111100111010010001110011101010100011000100010 @ Flygon - .8byte 0b0010110000000111100100000011001110000100110000011010100001 @ Makuhita - .8byte 0b0010110000000111100100000011001110000100110100011010100001 @ Hariyama - .8byte 0b0001100000001111100000001010000101110100110000001000110000 @ Electrike - .8byte 0b0001100000001111100000001010000101110100110100001000110000 @ Manectric - .8byte 0b0010100010000111100111010010001110000100010000011000100000 @ Numel - .8byte 0b0010100010000111100111010010001110000100010100011000110000 @ Camerupt - .8byte 0b1110110000000111100100000010000110010100110011001001100100 @ Spheal - .8byte 0b1110110000000111100100000010000110010100110011001001110100 @ Sealeo - .8byte 0b1110110000000111100100000010000110010100110111001001110100 @ Walrein - .8byte 0b0001000100000111100001000010000100001101010000011100100001 @ Cacnea - .8byte 0b0001100100000111100001000010000100001101010100011100100001 @ Cacturne - .8byte 0b0001000000000111100000000010100100000110111011001001100100 @ Snorunt - .8byte 0b0001000000000111110000000010100110000110111111101001100100 @ Glalie - .8byte 0b0001000000100011100101000110110110000110111101001000101000 @ Lunatone - .8byte 0b0001000010100011100111010110110110001110011100011000101000 @ Solrock - .8byte 0b0100010000000111100000000010000100010100110011001001100100 @ Azurill - .8byte 0b0001000001101111110000001110110100010100111000111000101000 @ Spoink - .8byte 0b0001000001101111110000001110110100010100111100111000101001 @ Grumpig - .8byte 0b0001000000000111100000001010000101110100111000001000100000 @ Plusle - .8byte 0b0001000000000111100000001010000101110100111000001000100000 @ Minun - .8byte 0b0010100000000111110111110011000100001100110101111000100001 @ Mawile - .8byte 0b0011100000000111100100000111110100000100111000011010101001 @ Meditite - .8byte 0b0011100000000111100100000111110100000100111100011010101001 @ Medicham - .8byte 0b0000001000011111101000000010000100001110110001011000100000 @ Swablu - .8byte 0b0010001000011111101010010010000110011110110101011000110010 @ Altaria - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Wynaut - .8byte 0b0001000001101111110000000010110100000100110011111000101000 @ Duskull - .8byte 0b0011100001101111110100000010110110000100110111111000101001 @ Dusclops - .8byte 0b0001000100000111100000100010100100001101010000011100100000 @ Roselia - .8byte 0b0010100100000111101010011011100101101100110011011010100101 @ Slakoth - .8byte 0b0010100100000111101010011011100111101100110011111010110101 @ Vigoroth - .8byte 0b0010100100000111101010011011100111101100110111111010110101 @ Slaking - .8byte 0b0010100001000111100000101010100100001101110001011100100100 @ Gulpin - .8byte 0b0010100001000111100000101010100100001101110101011100100100 @ Swalot - .8byte 0b0011101100010111101000000010000110001111010100011100110000 @ Tropius - .8byte 0b0000000000000111100010011010100100001100110011011000110100 @ Whismur - .8byte 0b0010100010000111110010011011100110001100110011111000110100 @ Loudred - .8byte 0b0010100010000111110010011011100110001100110111111000110100 @ Exploud - .8byte 0b1100010000000111100000000010000100000100110011001001100100 @ Clamperl - .8byte 0b1100010001000111100100000010000100000100110111001001100100 @ Huntail - .8byte 0b1100010000000111100000000010110100000110110111001001100100 @ Gorebyss - .8byte 0b0011100101001111111011011010100101110100110111111001101100 @ Absol - .8byte 0b0001000001101111110000001010110101100100110000111000101000 @ Shuppet - .8byte 0b0001000001101111110000001010110101100100110100111000101000 @ Banette - .8byte 0b0010100001001111100000110010001110010101110000111000100000 @ Seviper - .8byte 0b0010100000001111101010011011101101111101110011111000110101 @ Zangoose - .8byte 0b1110010000000111100101000010000110000110110111001001101100 @ Relicanth - .8byte 0b0010100100000111101101001010001110010100110000011000110100 @ Aron - .8byte 0b0010100100000111101101001010001110010100110000011000110100 @ Lairon - .8byte 0b0010110100000111101111011011001111111100110111111000110111 @ Aggron - .8byte 0b0001000000001111100011011010100101101100110011011001100100 @ Castform - .8byte 0b0001000000001111101000001011100101101101111000011000100101 @ Volbeat - .8byte 0b0001000000001111101000001011100101101101111000011000100101 @ Illumise - .8byte 0b0000000000000111100001100010000100001101010000011100100000 @ Lileep - .8byte 0b0010100000000111100101100010000110001101010100011100100000 @ Cradily - .8byte 0b0010000100000111101101000011001100000100010000011000100100 @ Anorith - .8byte 0b0010100100000111101101000011001110010100010100011000100100 @ Armaldo - .8byte 0b0001000001101111110000001110110100100110111000111000101000 @ Ralts - .8byte 0b0001000001101111110000001110110100100110111000111000101000 @ Kirlia - .8byte 0b0001000001101111110000001110110100100110111100111000101000 @ Gardevoir - .8byte 0b0010100100000111101110010011000100000100110000011000110010 @ Bagon - .8byte 0b0010100100000111101110010011000100000100110000011000110010 @ Shelgon - .8byte 0b0010101100010111101110010011000110010100110100011000110010 @ Salamence - .8byte 0b0000000000000000000000000000000000000000000000000000000000 @ Beldum - .8byte 0b0011100100000011101101100111110110000100111100011000100000 @ Metang - .8byte 0b0011100100000011101101100111110110000100111100011000100000 @ Metagross - .8byte 0b0010100000000011100101001011001111100110010100011000100001 @ Regirock - .8byte 0b0010100000000011100000001011000111100110110111001001100001 @ Regice - .8byte 0b0010100000000011101101001011000111100110110100011000100001 @ Registeel - .8byte 0b1110110000000011100100001011000111100110110111001001111100 @ Kyogre - .8byte 0b0010100110000011101111011011001111111110010100011010110010 @ Groudon - .8byte 0b1110111010000011101011011011000111111100110111011010110110 @ Rayquaza - .8byte 0b1101011100010111101001001110110111101110111101011000111110 @ Latias - .8byte 0b1101011100010111101001001110110111101110111101011000111110 @ Latios - .8byte 0b0001000000100011101001001110110101100110111100011000101100 @ Jirachi - .8byte 0b0011100101100011111100001111110101101110111101111000101101 @ Deoxys - .8byte 0b0001000001100111110000001110110100000110111000111000101000 @ Chimecho diff --git a/src/pokemon_data.c b/src/pokemon_data.c index df698d12d..eb7a39b52 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -931,3 +931,422 @@ const s8 gNatureStatTable[][5] = { { 0, 0, 0, -1, 1}, // Careful { 0, 0, 0, 0, 0} // Quirky }; + +// TO-DO: Rewrite this declaration to allow assignment of TM/HM learns by name. +// These are 58-bit numbers aligned to 64 bits. The least significant bit represents TM01, +// while the most significant bit represents HM08. + +const u32 gTMHMLearnsets[][2] = { + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (??????????) + {0x84350720, 0x00e41e08}, // 0b0011100100000111100000100010000100001101010000011100100000 (Bulbasaur) + {0x84350720, 0x00e41e08}, // 0b0011100100000111100000100010000100001101010000011100100000 (Ivysaur) + {0x86354730, 0x00e41e08}, // 0b0011100100000111100000100010000110001101010100011100110000 (Venusaur) + {0xcc510623, 0x00a61ea4}, // 0b0010100110000111101010010011001100010100010000011000100011 (Charmander) + {0xcc510623, 0x00a61ea4}, // 0b0010100110000111101010010011001100010100010000011000100011 (Charmeleon) + {0xce514633, 0x00ae5ea4}, // 0b0010101110010111101010010011001110010100010100011000110011 (Charizard) + {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Squirtle) + {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Wartortle) + {0xce537275, 0x03b01e00}, // 0b1110110000000111100000000011001110010100110111001001110101 (Blastoise) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Caterpie) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Metapod) + {0xb43f4620, 0x0040be80}, // 0b0001000000101111101000000010110100001111110100011000100000 (Butterfree) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Weedle) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Kakuna) + {0xc4354620, 0x00843e88}, // 0b0010000100001111101000100011000100001101010100011000100000 (Beedrill) + {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Pidgey) + {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Pidgeotto) + {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Pidgeot) + {0xadd33e20, 0x00843e02}, // 0b0010000100001111100000001010101101110100110011111000100000 (Rattata) + {0xadd37e30, 0x00a43e02}, // 0b0010100100001111100000001010101101110100110111111000110000 (Raticate) + {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Spearow) + {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Fearow) + {0x8e570620, 0x00213f08}, // 0b0000100001001111110000100010001110010101110000011000100000 (Ekans) + {0x8e574620, 0x00213f08}, // 0b0000100001001111110000100010001110010101110100011000100000 (Arbok) + {0xcdd38221, 0x00e01e02}, // 0b0011100000000111100000001011001101110100111000001000100001 (Pikachu) + {0xcdd3c221, 0x00e03e02}, // 0b0011100000001111100000001011001101110100111100001000100001 (Raichu) + {0xce510621, 0x00a43ed0}, // 0b0010100100001111101101000011001110010100010000011000100001 (Sandshrew) + {0xce514621, 0x00a43ed0}, // 0b0010100100001111101101000011001110010100010100011000100001 (Sandslash) + {0x8dd33624, 0x00a43e8a}, // 0b0010100100001111101000101010001101110100110011011000100100 (Nidoran♀) + {0x8dd33624, 0x00a43e8a}, // 0b0010100100001111101000101010001101110100110011011000100100 (Nidorina) + {0xefd37e35, 0x00b43ffe}, // 0b0010110100001111111111111011101111110100110111111000110101 (Nidoqueen) + {0x8dd33624, 0x00a43e0a}, // 0b0010100100001111100000101010001101110100110011011000100100 (Nidoran♂) + {0x8dd33624, 0x00a43e0a}, // 0b0010100100001111100000101010001101110100110011011000100100 (Nidorino) + {0xefd37e35, 0x00b43f7e}, // 0b0010110100001111110111111011101111110100110111111000110101 (Nidoking) + {0xfdfbb62d, 0x00611e27}, // 0b0001100001000111100010011111111101111110111011011000101101 (Clefairy) + {0xfdfbf62d, 0x00611e27}, // 0b0001100001000111100010011111111101111110111111011000101101 (Clefable) + {0x8c590630, 0x00021e24}, // 0b0000000010000111100010010010001100010110010000011000110000 (Vulpix) + {0x8c594630, 0x00021e24}, // 0b0000000010000111100010010010001100010110010100011000110000 (Ninetales) + {0xfdbbb625, 0x00611e27}, // 0b0001100001000111100010011111111101101110111011011000100101 (Jigglypuff) + {0xfdbbf625, 0x00611e27}, // 0b0001100001000111100010011111111101101110111111011000100101 (Wigglytuff) + {0xa4170e20, 0x00017f88}, // 0b0000000001011111111000100010100100000101110000111000100000 (Zubat) + {0xa4174e20, 0x00017f88}, // 0b0000000001011111111000100010100100000101110100111000100000 (Golbat) + {0x84350720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010000011100100000 (Oddish) + {0x84350720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010000011100100000 (Gloom) + {0x84354720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010100011100100000 (Vileplume) + {0x8c350720, 0x00c43e88}, // 0b0011000100001111101000100010001100001101010000011100100000 (Paras) + {0x8c354720, 0x00c43e88}, // 0b0011000100001111101000100010001100001101010100011100100000 (Parasect) + {0x94350620, 0x0040be08}, // 0b0001000000101111100000100010010100001101010000011000100000 (Venonat) + {0x94354620, 0x0040be88}, // 0b0001000000101111101000100010010100001101010100011000100000 (Venomoth) + {0x8e110620, 0x00843ec8}, // 0b0010000100001111101100100010001110000100010000011000100000 (Diglett) + {0x8e114620, 0x00843ec8}, // 0b0010000100001111101100100010001110000100010100011000100000 (Dugtrio) + {0xadd30e24, 0x00453f82}, // 0b0001000101001111111000001010101101110100110000111000100100 (Meowth) + {0xadd34e34, 0x00453f82}, // 0b0001000101001111111000001010101101110100110100111000110100 (Persian) + {0xcc53326d, 0x03f01e80}, // 0b1111110000000111101000000011001100010100110011001001101101 (Psyduck) + {0xcc53726d, 0x03f01e80}, // 0b1111110000000111101000000011001100010100110111001001101101 (Golduck) + {0xcfd30ea1, 0x00a23ec0}, // 0b0010100010001111101100000011001111110100110000111010100001 (Mankey) + {0xcfd34ea1, 0x00a23ec0}, // 0b0010100010001111101100000011001111110100110100111010100001 (Primeape) + {0x8c510630, 0x00a23ea4}, // 0b0010100010001111101010010010001100010100010000011000110000 (Growlithe) + {0x8c514630, 0x00a23ea4}, // 0b0010100010001111101010010010001100010100010100011000110000 (Arcanine) + {0x9c133264, 0x03103e00}, // 0b1100010000001111100000000010011100000100110011001001100100 (Poliwag) + {0xde133265, 0x03b03e00}, // 0b1110110000001111100000000011011110000100110011001001100101 (Poliwhirl) + {0xde1372e5, 0x03b03e40}, // 0b1110110000001111100100000011011110000100110111001011100101 (Poliwrath) + {0xb45b8e29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111000111000101001 (Abra) + {0xb45b8e29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111000111000101001 (Kadabra) + {0xb45bce29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111100111000101001 (Alakazam) + {0xce1306a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110000011010100001 (Machop) + {0xce1306a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110000011010100001 (Machoke) + {0xce1346a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110100011010100001 (Machamp) + {0x84350720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010000011100100000 (Bellsprout) + {0x84350720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010000011100100000 (Weepinbell) + {0x84354720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010100011100100000 (Victreebel) + {0x84173264, 0x03143e08}, // 0b1100010100001111100000100010000100000101110011001001100100 (Tentacool) + {0x84177264, 0x03143e08}, // 0b1100010100001111100000100010000100000101110111001001100100 (Tentacruel) + {0xce110621, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010000011000100001 (Geodude) + {0xce110621, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010000011000100001 (Graveler) + {0xce114631, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010100011000110001 (Golem) + {0x84710620, 0x00221e24}, // 0b0000100010000111100010010010000100011100010000011000100000 (Ponyta) + {0x84714620, 0x00221e24}, // 0b0000100010000111100010010010000100011100010100011000100000 (Rapidash) + {0xbe5b366c, 0x02709e24}, // 0b1001110000100111100010010010111110010110110011011001101100 (Slowpoke) + {0xfe5b766d, 0x02f09e24}, // 0b1011110000100111100010010011111110010110110111011001101101 (Slowbro) + {0x85930620, 0x00400e03}, // 0b0001000000000011100000001110000101100100110000011000100000 (Magnemite) + {0x85934620, 0x00400e03}, // 0b0001000000000011100000001110000101100100110100011000100000 (Magneton) + {0x84510620, 0x000c7e80}, // 0b0000001100011111101000000010000100010100010000011000100000 (Farfetch'd) + {0x84110620, 0x00087e80}, // 0b0000001000011111101000000010000100000100010000011000100000 (Doduo) + {0x84114e20, 0x00087f80}, // 0b0000001000011111111000000010000100000100010100111000100000 (Dodrio) + {0x841b3264, 0x03103e00}, // 0b1100010000001111100000000010000100000110110011001001100100 (Seel) + {0x841b7264, 0x03103e00}, // 0b1100010000001111100000000010000100000110110111001001100100 (Dewgong) + {0x8d970e20, 0x00003f6e}, // 0b0000000000001111110110111010001101100101110000111000100000 (Grimer) + {0xcd974e21, 0x00a03f6e}, // 0b0010100000001111110110111011001101100101110100111000100001 (Muk) + {0x84133264, 0x02101e00}, // 0b1000010000000111100000000010000100000100110011001001100100 (Shellder) + {0x84137264, 0x02101f00}, // 0b1000010000000111110000000010000100000100110111001001100100 (Cloyster) + {0xb4970e20, 0x0001bf08}, // 0b0000000001101111110000100010110100100101110000111000100000 (Gastly) + {0xb4970e20, 0x0001bf08}, // 0b0000000001101111110000100010110100100101110000111000100000 (Haunter) + {0xf5974e21, 0x00a1bf08}, // 0b0010100001101111110000100011110101100101110100111000100001 (Gengar) + {0x8e510e30, 0x00a01f50}, // 0b0010100000000111110101000010001110010100010000111000110000 (Onix) + {0xf41b8e29, 0x0041bf01}, // 0b0001000001101111110000000111110100000110111000111000101001 (Drowzee) + {0xf41bce29, 0x0041bf01}, // 0b0001000001101111110000000111110100000110111100111000101001 (Hypno) + {0x8c133264, 0x02b43e40}, // 0b1010110100001111100100000010001100000100110011001001100100 (Krabby) + {0x8c137264, 0x02b43e40}, // 0b1010110100001111100100000010001100000100110111001001100100 (Kingler) + {0x85938a20, 0x00402f02}, // 0b0001000000001011110000001010000101100100111000101000100000 (Voltorb) + {0x8593ca20, 0x00402f02}, // 0b0001000000001011110000001010000101100100111100101000100000 (Electrode) + {0x94358720, 0x0060be09}, // 0b0001100000101111100000100110010100001101011000011100100000 (Exeggcute) + {0x9435c720, 0x0060be09}, // 0b0001100000101111100000100110010100001101011100011100100000 (Exeggutor) + {0xce513621, 0x00a03ef4}, // 0b0010100000001111101111010011001110010100010011011000100001 (Cubone) + {0xce517621, 0x00a03ef4}, // 0b0010100000001111101111010011001110010100010111011000100001 (Marowak) + {0xc61306a1, 0x00a03e40}, // 0b0010100000001111100100000011000110000100110000011010100001 (Hitmonlee) + {0xc61306a1, 0x00a03e40}, // 0b0010100000001111100100000011000110000100110000011010100001 (Hitmonchan) + {0xeff37625, 0x00b43e76}, // 0b0010110100001111100111011011101111111100110111011000100101 (Lickitung) + {0xa5930e20, 0x00403f2e}, // 0b0001000000001111110010111010100101100100110000111000100000 (Koffing) + {0xa5934e20, 0x00403f2e}, // 0b0001000000001111110010111010100101100100110100111000100000 (Weezing) + {0x8fd33630, 0x00a03e76}, // 0b0010100000001111100111011010001111110100110011011000110000 (Rhyhorn) + {0xcfd37631, 0x00b43e76}, // 0b0010110100001111100111011011001111110100110111011000110001 (Rhydon) + {0xf7fbf66d, 0x00e19e76}, // 0b0011100001100111100111011011110111111110111111011001101101 (Chansey) + {0x84354720, 0x00c43e08}, // 0b0011000100001111100000100010000100001101010100011100100000 (Tangela) + {0xeff37675, 0x00b43ef6}, // 0b0010110100001111101111011011101111111100110111011001110101 (Kangaskhan) + {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Horsea) + {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Seadra) + {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Goldeen) + {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Seaking) + {0x9593b264, 0x03500e01}, // 0b1101010000000011100000000110010101100100111011001001100100 (Staryu) + {0x9593f264, 0x03508e01}, // 0b1101010000100011100000000110010101100100111111001001100100 (Starmie) + {0xf5bbce29, 0x0041bf03}, // 0b0001000001101111110000001111110101101110111100111000101001 (Mr. mime) + {0x84134620, 0x00847e80}, // 0b0010000100011111101000000010000100000100110100011000100000 (Scyther) + {0xf413fa6d, 0x0040bf01}, // 0b0001000000101111110000000111110100000100111111101001101101 (Jynx) + {0xd5d3c221, 0x00e03e02}, // 0b0011100000001111100000001011010101110100111100001000100001 (Electabuzz) + {0xd4514621, 0x00a03e24}, // 0b0010100000001111100010010011010100010100010100011000100001 (Magmar) + {0xce1346a1, 0x00a43e40}, // 0b0010100100001111100100000011001110000100110100011010100001 (Pinsir) + {0x87f37624, 0x00b01e76}, // 0b0010110000000111100111011010000111111100110111011000100100 (Tauros) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Magikarp) + {0x87937a74, 0x03b01f34}, // 0b1110110000000111110011010010000111100100110111101001110100 (Gyarados) + {0x95db7274, 0x03b01e02}, // 0b1110110000000111100000001010010101110110110111001001110100 (Lapras) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Ditto) + {0xac530620, 0x00001e00}, // 0b0000000000000111100000000010101100010100110000011000100000 (Eevee) + {0xac537674, 0x03101e00}, // 0b1100010000000111100000000010101100010100110111011001110100 (Vaporeon) + {0xadd34630, 0x00401e02}, // 0b0001000000000111100000001010101101110100110100011000110000 (Jolteon) + {0xac534630, 0x00021e24}, // 0b0000000010000111100010010010101100010100110100011000110000 (Flareon) + {0xb5f37620, 0x00402e82}, // 0b0001000000001011101000001010110101111100110111011000100000 (Porygon) + {0x84133264, 0x03903e50}, // 0b1110010000001111100101000010000100000100110011001001100100 (Omanyte) + {0x84137264, 0x03903e50}, // 0b1110010000001111100101000010000100000100110111001001100100 (Omastar) + {0x8c173264, 0x01903ed0}, // 0b0110010000001111101101000010001100000101110011001001100100 (Kabuto) + {0xcc177264, 0x03943ed0}, // 0b1110010100001111101101000011001100000101110111001001100100 (Kabutops) + {0x86534e32, 0x00a87ff4}, // 0b0010101000011111111111010010000110010100110100111000110010 (Aerodactyl) + {0xf7b37625, 0x00301e76}, // 0b0000110000000111100111011011110111101100110111011000100101 (Snorlax) + {0x84137674, 0x00884e91}, // 0b0010001000010011101001000110000100000100110111011001110100 (Articuno) + {0x8593c630, 0x00c84e92}, // 0b0011001000010011101001001010000101100100111100011000110000 (Zapdos) + {0x841b4630, 0x008a4eb4}, // 0b0010001010010011101011010010000100000110110100011000110000 (Moltres) + {0x85db7664, 0x01101e26}, // 0b0100010000000111100010011010000101110110110111011001100100 (Dratini) + {0x85db7664, 0x01101e26}, // 0b0100010000000111100010011010000101110110110111011001100100 (Dragonair) + {0xc7db7677, 0x03bc5ef6}, // 0b1110111100010111101111011011000111110110110111011001110111 (Dragonite) + {0xf7fbfeed, 0x00e18ff7}, // 0b0011100001100011111111011111110111111110111111111011101101 (Mewtwo) + {0xffffffff, 0x03ffffff}, // 0b1111111111111111111111111111111111111111111111111111111111 (Mew) + {0x847d8720, 0x00441e01}, // 0b0001000100000111100000000110000100011111011000011100100000 (Chikorita) + {0x847d8720, 0x00e41e01}, // 0b0011100100000111100000000110000100011111011000011100100000 (Bayleef) + {0x867dc720, 0x00e41e01}, // 0b0011100100000111100000000110000110011111011100011100100000 (Meganium) + {0x8c110620, 0x00061ea4}, // 0b0000000110000111101010010010001100000100010000011000100000 (Cyndaquil) + {0xcc110631, 0x00a61ea4}, // 0b0010100110000111101010010011001100000100010000011000110001 (Quilava) + {0xce114631, 0x00a61ea4}, // 0b0010100110000111101010010011001110000100010100011000110001 (Typhlosion) + {0xcc533265, 0x03141e80}, // 0b1100010100000111101000000011001100010100110011001001100101 (Totodile) + {0xcc533275, 0x03b41e80}, // 0b1110110100000111101000000011001100010100110011001001110101 (Croconaw) + {0xce537277, 0x03b41e80}, // 0b1110110100000111101000000011001110010100110111001001110111 (Feraligatr) + {0xecf31625, 0x00143e06}, // 0b0000010100001111100000011011101100111100110001011000100101 (Sentret) + {0xedf37625, 0x00b43e06}, // 0b0010110100001111100000011011101101111100110111011000100101 (Furret) + {0xb4130620, 0x00487e81}, // 0b0001001000011111101000000110110100000100110000011000100000 (Hoothoot) + {0xb4134620, 0x00487e81}, // 0b0001001000011111101000000110110100000100110100011000100000 (Noctowl) + {0xcc3d8621, 0x00403e81}, // 0b0001000000001111101000000111001100001111011000011000100001 (Ledyba) + {0xcc3dc621, 0x00403e81}, // 0b0001000000001111101000000111001100001111011100011000100001 (Ledian) + {0x9c350620, 0x00403e08}, // 0b0001000000001111100000100010011100001101010000011000100000 (Spinarak) + {0x9c354620, 0x00403e08}, // 0b0001000000001111100000100010011100001101010100011000100000 (Ariados) + {0xa4174e20, 0x00097f88}, // 0b0000001001011111111000100010100100000101110100111000100000 (Crobat) + {0x85933264, 0x03501e02}, // 0b1101010000000111100000001010000101100100110011001001100100 (Chinchou) + {0x85937264, 0x03501e02}, // 0b1101010000000111100000001010000101100100110111001001100100 (Lanturn) + {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Pichu) + {0xbc7b8624, 0x00401e27}, // 0b0001000000000111100010011110111100011110111000011000100100 (Cleffa) + {0xbc3b8624, 0x00401e27}, // 0b0001000000000111100010011110111100001110111000011000100100 (Igglybuff) + {0xb43b8624, 0x00c01e27}, // 0b0011000000000111100010011110110100001110111000011000100100 (Togepi) + {0xf43bc625, 0x00c85ea7}, // 0b0011001000010111101010011111110100001110111100011000100101 (Togetic) + {0xb4378628, 0x0040fe81}, // 0b0001000000111111101000000110110100001101111000011000101000 (Natu) + {0xb437c628, 0x0048fe81}, // 0b0001001000111111101000000110110100001101111100011000101000 (Xatu) + {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Mareep) + {0xc5d38221, 0x00e01e02}, // 0b0011100000000111100000001011000101110100111000001000100001 (Flaaffy) + {0xc5d3c221, 0x00e01e02}, // 0b0011100000000111100000001011000101110100111100001000100001 (Ampharos) + {0x843d4720, 0x00441e08}, // 0b0001000100000111100000100010000100001111010100011100100000 (Bellossom) + {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Marill) + {0xcc537265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110111001001100101 (Azumarill) + {0xce110e29, 0x00a03e50}, // 0b0010100000001111100101000011001110000100010000111000101001 (Sudowoodo) + {0xde137265, 0x03b03e00}, // 0b1110110000001111100000000011011110000100110111001001100101 (Politoed) + {0x84350720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010000011100100000 (Hoppip) + {0x84350720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010000011100100000 (Skiploom) + {0x84354720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010100011100100000 (Jumpluff) + {0xedf30e25, 0x00a53e82}, // 0b0010100101001111101000001011101101111100110000111000100101 (Aipom) + {0x843d8720, 0x00441e08}, // 0b0001000100000111100000100010000100001111011000011100100000 (Sunkern) + {0x843dc720, 0x00441e08}, // 0b0001000100000111100000100010000100001111011100011100100000 (Sunflora) + {0xb4350620, 0x00407e80}, // 0b0001000000011111101000000010110100001101010000011000100000 (Yanma) + {0x8e533264, 0x03d01e18}, // 0b1111010000000111100001100010001110010100110011001001100100 (Wooper) + {0xce537265, 0x03f01e58}, // 0b1111110000000111100101100011001110010100110111001001100101 (Quagsire) + {0xbc53c628, 0x00449e01}, // 0b0001000100100111100000000110111100010100111100011000101000 (Espeon) + {0xbc534e20, 0x00451f00}, // 0b0001000101000111110000000010111100010100110100111000100000 (Umbreon) + {0xa4130e28, 0x00097f80}, // 0b0000001001011111111000000010100100000100110000111000101000 (Murkrow) + {0xfe5b766d, 0x02f09e24}, // 0b1011110000100111100010010011111110010110110111011001101101 (Slowking) + {0xb5930e28, 0x0041bf82}, // 0b0001000001101111111000001010110101100100110000111000101000 (Misdreavus) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Unown) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wobbuffet) + {0xb7d38628, 0x00e0be03}, // 0b0011100000101111100000001110110111110100111000011000101000 (Girafarig) + {0x8e358620, 0x00a01e11}, // 0b0010100000000111100001000110001110001101011000011000100000 (Pineco) + {0x8e35c620, 0x00a01e11}, // 0b0010100000000111100001000110001110001101011100011000100000 (Forretress) + {0xaff3362c, 0x00a03e66}, // 0b0010100000001111100110011010101111111100110011011000101100 (Dunsparce) + {0x8e530620, 0x00a47ed8}, // 0b0010100100011111101101100010001110010100110000011000100000 (Gligar) + {0x8e514e30, 0x00a41f50}, // 0b0010100100000111110101000010001110010100010100111000110000 (Steelix) + {0xefb30eb5, 0x00a23f2e}, // 0b0010100010001111110010111011101111101100110000111010110101 (Snubbull) + {0xeff34eb5, 0x00a23f6e}, // 0b0010100010001111110110111011101111111100110100111010110101 (Granbull) + {0xa4133264, 0x03101e0a}, // 0b1100010000000111100000101010100100000100110011001001100100 (Qwilfish) + {0x84134620, 0x00a47e90}, // 0b0010100100011111101001000010000100000100110100011000100000 (Scizor) + {0x8e190620, 0x00e01e58}, // 0b0011100000000111100101100010001110000110010000011000100000 (Shuckle) + {0xce1346a1, 0x00a43e40}, // 0b0010100100001111100100000011001110000100110100011010100001 (Heracross) + {0xec533e69, 0x00b53f80}, // 0b0010110101001111111000000011101100010100110011111001101001 (Sneasel) + {0xce130eb1, 0x00a43f80}, // 0b0010100100001111111000000011001110000100110000111010110001 (Teddiursa) + {0xce134eb1, 0x00a43fc0}, // 0b0010100100001111111100000011001110000100110100111010110001 (Ursaring) + {0x84118620, 0x00821e25}, // 0b0010000010000111100010010110000100000100011000011000100000 (Slugma) + {0x8611c620, 0x00a21e75}, // 0b0010100010000111100111010110000110000100011100011000100000 (Magcargo) + {0x8e13b270, 0x00a01e51}, // 0b0010100000000111100101000110001110000100111011001001110000 (Swinub) + {0x8e13f270, 0x00a01e51}, // 0b0010100000000111100101000110001110000100111111001001110000 (Piloswine) + {0xbe1bb66c, 0x00b01e51}, // 0b0010110000000111100101000110111110000110111011011001101100 (Corsola) + {0x94137624, 0x03103e24}, // 0b1100010000001111100010010010010100000100110111011000100100 (Remoraid) + {0x94137724, 0x03103e2c}, // 0b1100010000001111100010110010010100000100110111011100100100 (Octillery) + {0x84133265, 0x00083e80}, // 0b0000001000001111101000000010000100000100110011001001100101 (Delibird) + {0x86133264, 0x03101e80}, // 0b1100010000000111101000000010000110000100110011001001100100 (Mantine) + {0x84110e30, 0x008c7f90}, // 0b0010001100011111111001000010000100000100010000111000110000 (Skarmory) + {0xa4710e30, 0x00833f2c}, // 0b0010000011001111110010110010100100011100010000111000110000 (Houndour) + {0xa4714e30, 0x00a33f2c}, // 0b0010100011001111110010110010100100011100010100111000110000 (Houndoom) + {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Kingdra) + {0x86510630, 0x00a01e50}, // 0b0010100000000111100101000010000110010100010000011000110000 (Phanpy) + {0x86514630, 0x00a01e50}, // 0b0010100000000111100101000010000110010100010100011000110000 (Donphan) + {0xb5f37620, 0x00402e82}, // 0b0001000000001011101000001010110101111100110111011000100000 (Porygon2) + {0xb7f38638, 0x0040be03}, // 0b0001000000101111100000001110110111111100111000011000111000 (Stantler) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Smeargle) + {0xc61306a0, 0x00a03e00}, // 0b0010100000001111100000000011000110000100110000011010100000 (Tyrogue) + {0xce1306a0, 0x00a03e10}, // 0b0010100000001111100001000011001110000100110000011010100000 (Hitmontop) + {0xb413b26c, 0x0040be01}, // 0b0001000000101111100000000110110100000100111011001001101100 (Smoochum) + {0xd5938221, 0x00c03e02}, // 0b0011000000001111100000001011010101100100111000001000100001 (Elekid) + {0xd4510621, 0x00803e24}, // 0b0010000000001111100010010011010100010100010000011000100001 (Magby) + {0xe7f37625, 0x00b01e52}, // 0b0010110000000111100101001011100111111100110111011000100101 (Miltank) + {0xf7fbf66d, 0x00e19e76}, // 0b0011100001100111100111011011110111111110111111011001101101 (Blissey) + {0x8dd34638, 0x00e40e13}, // 0b0011100100000011100001001110001101110100110100011000111000 (Raikou) + {0x8c734638, 0x00e40e35}, // 0b0011100100000011100011010110001100011100110100011000111000 (Entei) + {0x8c53767c, 0x03940e11}, // 0b1110010100000011100001000110001100010100110111011001111100 (Suicune) + {0xce134e20, 0x00801f10}, // 0b0010000000000111110001000011001110000100110100111000100000 (Larvitar) + {0xce134e20, 0x00801f10}, // 0b0010000000000111110001000011001110000100110100111000100000 (Pupitar) + {0xcfd37e37, 0x00b41ff6}, // 0b0010110100000111111111011011001111110100110111111000110111 (Tyranitar) + {0xb7dff67c, 0x03b8ce93}, // 0b1110111000110011101001001110110111110111111111011001111100 (Lugia) + {0xb7bfc638, 0x00ea4eb7}, // 0b0011101010010011101011011110110111101111111100011000111000 (Ho-Oh) + {0xb43fc62c, 0x00448e93}, // 0b0001000100100011101001001110110100001111111100011000101100 (Celebi) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0xcc7d0721, 0x00e41ec0}, // 0b0011100100000111101100000011001100011111010000011100100001 (Treecko) + {0xcc7d0721, 0x00e41ec0}, // 0b0011100100000111101100000011001100011111010000011100100001 (Grovyle) + {0xce7d4733, 0x00e41ec0}, // 0b0011100100000111101100000011001110011111010100011100110011 (Sceptile) + {0x8c110620, 0x00a61ee4}, // 0b0010100110000111101110010010001100000100010000011000100000 (Torchic) + {0xcc1106a1, 0x00a61ee4}, // 0b0010100110000111101110010011001100000100010000011010100001 (Combusken) + {0xce1146b1, 0x00a61ee4}, // 0b0010100110000111101110010011001110000100010100011010110001 (Blaziken) + {0x8c533264, 0x03b01e40}, // 0b1110110000000111100100000010001100010100110011001001100100 (Mudkip) + {0x8e533264, 0x03b01e40}, // 0b1110110000000111100100000010001110010100110011001001100100 (Marshtomp) + {0xce537275, 0x03b01e40}, // 0b1110110000000111100100000011001110010100110111001001110101 (Swampert) + {0xac530e30, 0x00813f00}, // 0b0010000001001111110000000010101100010100110000111000110000 (Poochyena) + {0xac534e30, 0x00a13f00}, // 0b0010100001001111110000000010101100010100110100111000110000 (Mightyena) + {0xadd33624, 0x00943e02}, // 0b0010010100001111100000001010101101110100110011011000100100 (Zigzagoon) + {0xadd37634, 0x00b43e02}, // 0b0010110100001111100000001010101101110100110111011000110100 (Linoone) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wurmple) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Silcoon) + {0xb43d4620, 0x00403e80}, // 0b0001000000001111101000000010110100001111010100011000100000 (Beautifly) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Cascoon) + {0xb435c620, 0x00403e88}, // 0b0001000000001111101000100010110100001101011100011000100000 (Dustox) + {0x84373764, 0x00503e00}, // 0b0001010000001111100000000010000100001101110011011101100100 (Lotad) + {0xc4373764, 0x03f03e00}, // 0b1111110000001111100000000011000100001101110011011101100100 (Lombre) + {0xc4377765, 0x03f03e00}, // 0b1111110000001111100000000011000100001101110111011101100101 (Ludicolo) + {0xac350720, 0x00c01e00}, // 0b0011000000000111100000000010101100001101010000011100100000 (Seedot) + {0xec354720, 0x00e43f40}, // 0b0011100100001111110100000011101100001101010100011100100000 (Nuzleaf) + {0xec354720, 0x00e43fc0}, // 0b0011100100001111111100000011101100001101010100011100100000 (Shiftry) + {0xac350620, 0x00440e90}, // 0b0001000100000011101001000010101100001101010000011000100000 (Nincada) + {0xac354620, 0x00443e90}, // 0b0001000100001111101001000010101100001101010100011000100000 (Ninjask) + {0xac354620, 0x00442e90}, // 0b0001000100001011101001000010101100001101010100011000100000 (Shedinja) + {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Taillow) + {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Swellow) + {0x843d0720, 0x00411e08}, // 0b0001000001000111100000100010000100001111010000011100100000 (Shroomish) + {0xc47d47a1, 0x00e51e08}, // 0b0011100101000111100000100011000100011111010100011110100001 (Breloom) + {0xfc1b062d, 0x00e1be42}, // 0b0011100001101111100100001011111100000110110000011000101101 (Spinda) + {0x84133264, 0x00087e82}, // 0b0000001000011111101000001010000100000100110011001001100100 (Wingull) + {0x84137264, 0x00187e82}, // 0b0000011000011111101000001010000100000100110111001001100100 (Pelipper) + {0xa4373624, 0x00403e00}, // 0b0001000000001111100000000010100100001101110011011000100100 (Surskit) + {0xa4377624, 0x00403e80}, // 0b0001000000001111101000000010100100001101110111011000100100 (Masquerain) + {0x86133274, 0x03b01e40}, // 0b1110110000000111100100000010000110000100110011001001110100 (Wailmer) + {0x86137274, 0x03b01e40}, // 0b1110110000000111100100000010000110000100110111001001110100 (Wailord) + {0xadfb362c, 0x00401e02}, // 0b0001000000000111100000001010101101111110110011011000101100 (Skitty) + {0xadfb762c, 0x00e01e02}, // 0b0011100000000111100000001010101101111110110111011000101100 (Delcatty) + {0xedf33625, 0x00e5bee6}, // 0b0011100101101111101110011011101101111100110011011000100101 (Kecleon) + {0xbe339620, 0x00408e51}, // 0b0001000000100011100101000110111110001100111001011000100000 (Baltoy) + {0xbe33d620, 0x00e08e51}, // 0b0011100000100011100101000110111110001100111101011000100000 (Claydol) + {0x87910e20, 0x00a01f52}, // 0b0010100000000111110101001010000111100100010000111000100000 (Nosepass) + {0x84510620, 0x00a21e2c}, // 0b0010100010000111100010110010000100010100010000011000100000 (Torkoal) + {0xfc130e2d, 0x00c53fc2}, // 0b0011000101001111111100001011111100000100110000111000101101 (Sableye) + {0x86133264, 0x03101e50}, // 0b1100010000000111100101000010000110000100110011001001100100 (Barboach) + {0x86137264, 0x03b01e50}, // 0b1110110000000111100101000010000110000100110111001001100100 (Whiscash) + {0x841b3264, 0x03101e00}, // 0b1100010000000111100000000010000100000110110011001001100100 (Luvdisc) + {0xcc133a64, 0x01b41ec8}, // 0b0110110100000111101100100011001100000100110011101001100100 (Corphish) + {0xcc137a64, 0x03b41ec8}, // 0b1110110100000111101100100011001100000100110111101001100100 (Crawdaunt) + {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Feebas) + {0x845b7264, 0x03101e00}, // 0b1100010000000111100000000010000100010110110111001001100100 (Milotic) + {0x84133a64, 0x03103f00}, // 0b1100010000001111110000000010000100000100110011101001100100 (Carvanha) + {0x86137a74, 0x03b03f40}, // 0b1110110000001111110100000010000110000100110111101001110100 (Sharpedo) + {0x8e354620, 0x00a01e50}, // 0b0010100000000111100101000010001110001101010100011000100000 (Trapinch) + {0x8e354620, 0x00a85e50}, // 0b0010101000010111100101000010001110001101010100011000100000 (Vibrava) + {0x8e754622, 0x00a85e74}, // 0b0010101000010111100111010010001110011101010100011000100010 (Flygon) + {0xce1306a1, 0x00b01e40}, // 0b0010110000000111100100000011001110000100110000011010100001 (Makuhita) + {0xce1346a1, 0x00b01e40}, // 0b0010110000000111100100000011001110000100110100011010100001 (Hariyama) + {0x85d30230, 0x00603e02}, // 0b0001100000001111100000001010000101110100110000001000110000 (Electrike) + {0x85d34230, 0x00603e02}, // 0b0001100000001111100000001010000101110100110100001000110000 (Manectric) + {0x8e110620, 0x00a21e74}, // 0b0010100010000111100111010010001110000100010000011000100000 (Numel) + {0x8e114630, 0x00a21e74}, // 0b0010100010000111100111010010001110000100010100011000110000 (Camerupt) + {0x86533264, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110011001001100100 (Spheal) + {0x86533274, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110011001001110100 (Sealeo) + {0x86537274, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110111001001110100 (Walrein) + {0x84350721, 0x00441e10}, // 0b0001000100000111100001000010000100001101010000011100100001 (Cacnea) + {0x84354721, 0x00641e10}, // 0b0001100100000111100001000010000100001101010100011100100001 (Cacturne) + {0xa41bb264, 0x00401e00}, // 0b0001000000000111100000000010100100000110111011001001100100 (Snorunt) + {0xa61bfa64, 0x00401f00}, // 0b0001000000000111110000000010100110000110111111101001100100 (Glalie) + {0xb61bd228, 0x00408e51}, // 0b0001000000100011100101000110110110000110111101001000101000 (Lunatone) + {0xb639c628, 0x00428e75}, // 0b0001000010100011100111010110110110001110011100011000101000 (Solrock) + {0x84533264, 0x01101e00}, // 0b0100010000000111100000000010000100010100110011001001100100 (Azurill) + {0xb4538e28, 0x0041bf03}, // 0b0001000001101111110000001110110100010100111000111000101000 (Spoink) + {0xb453ce29, 0x0041bf03}, // 0b0001000001101111110000001110110100010100111100111000101001 (Grumpig) + {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Plusle) + {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Minun) + {0xc4335e21, 0x00a01f7c}, // 0b0010100000000111110111110011000100001100110101111000100001 (Mawile) + {0xf41386a9, 0x00e01e41}, // 0b0011100000000111100100000111110100000100111000011010101001 (Meditite) + {0xf413c6a9, 0x00e01e41}, // 0b0011100000000111100100000111110100000100111100011010101001 (Medicham) + {0x843b1620, 0x00087e80}, // 0b0000001000011111101000000010000100001110110001011000100000 (Swablu) + {0x867b5632, 0x00887ea4}, // 0b0010001000011111101010010010000110011110110101011000110010 (Altaria) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wynaut) + {0xb4133e28, 0x0041bf00}, // 0b0001000001101111110000000010110100000100110011111000101000 (Duskull) + {0xb6137e29, 0x00e1bf40}, // 0b0011100001101111110100000010110110000100110111111000101001 (Dusclops) + {0xa4350720, 0x00441e08}, // 0b0001000100000111100000100010100100001101010000011100100000 (Roselia) + {0xe5b336a5, 0x00a41ea6}, // 0b0010100100000111101010011011100101101100110011011010100101 (Slakoth) + {0xe7b33eb5, 0x00a41ea6}, // 0b0010100100000111101010011011100111101100110011111010110101 (Vigoroth) + {0xe7b37eb5, 0x00a41ea6}, // 0b0010100100000111101010011011100111101100110111111010110101 (Slaking) + {0xa4371724, 0x00a11e0a}, // 0b0010100001000111100000101010100100001101110001011100100100 (Gulpin) + {0xa4375724, 0x00a11e0a}, // 0b0010100001000111100000101010100100001101110101011100100100 (Swalot) + {0x863d4730, 0x00ec5e80}, // 0b0011101100010111101000000010000110001111010100011100110000 (Tropius) + {0xa4333634, 0x00001e26}, // 0b0000000000000111100010011010100100001100110011011000110100 (Whismur) + {0xe6333e34, 0x00a21f26}, // 0b0010100010000111110010011011100110001100110011111000110100 (Loudred) + {0xe6337e34, 0x00a21f26}, // 0b0010100010000111110010011011100110001100110111111000110100 (Exploud) + {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Clamperl) + {0x84137264, 0x03111e40}, // 0b1100010001000111100100000010000100000100110111001001100100 (Huntail) + {0xb41b7264, 0x03101e00}, // 0b1100010000000111100000000010110100000110110111001001100100 (Gorebyss) + {0xa5d37e6c, 0x00e53fb6}, // 0b0011100101001111111011011010100101110100110111111001101100 (Absol) + {0xb5930e28, 0x0041bf02}, // 0b0001000001101111110000001010110101100100110000111000101000 (Shuppet) + {0xb5934e28, 0x0041bf02}, // 0b0001000001101111110000001010110101100100110100111000101000 (Banette) + {0x8e570e20, 0x00a13e0c}, // 0b0010100001001111100000110010001110010101110000111000100000 (Seviper) + {0xedf73e35, 0x00a03ea6}, // 0b0010100000001111101010011011101101111101110011111000110101 (Zangoose) + {0x861b726c, 0x03901e50}, // 0b1110010000000111100101000010000110000110110111001001101100 (Relicanth) + {0x8e530634, 0x00a41ed2}, // 0b0010100100000111101101001010001110010100110000011000110100 (Aron) + {0x8e530634, 0x00a41ed2}, // 0b0010100100000111101101001010001110010100110000011000110100 (Lairon) + {0xcff37e37, 0x00b41ef6}, // 0b0010110100000111101111011011001111111100110111111000110111 (Aggron) + {0xa5b33664, 0x00403e36}, // 0b0001000000001111100011011010100101101100110011011001100100 (Castform) + {0xe5b78625, 0x00403e82}, // 0b0001000000001111101000001011100101101101111000011000100101 (Volbeat) + {0xe5b78625, 0x00403e82}, // 0b0001000000001111101000001011100101101101111000011000100101 (Illumise) + {0x84350720, 0x00001e18}, // 0b0000000000000111100001100010000100001101010000011100100000 (Lileep) + {0x86354720, 0x00a01e58}, // 0b0010100000000111100101100010000110001101010100011100100000 (Cradily) + {0xcc110624, 0x00841ed0}, // 0b0010000100000111101101000011001100000100010000011000100100 (Anorith) + {0xce514624, 0x00a41ed0}, // 0b0010100100000111101101000011001110010100010100011000100100 (Armaldo) + {0xb49b8e28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111000111000101000 (Ralts) + {0xb49b8e28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111000111000101000 (Kirlia) + {0xb49bce28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111100111000101000 (Gardevoir) + {0xc4130632, 0x00a41ee4}, // 0b0010100100000111101110010011000100000100110000011000110010 (Bagon) + {0xc4130632, 0x00a41ee4}, // 0b0010100100000111101110010011000100000100110000011000110010 (Shelgon) + {0xc6534632, 0x00ac5ee4}, // 0b0010101100010111101110010011000110010100110100011000110010 (Salamence) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Beldum) + {0xf613c620, 0x00e40ed9}, // 0b0011100100000011101101100111110110000100111100011000100000 (Metang) + {0xf613c620, 0x00e40ed9}, // 0b0011100100000011101101100111110110000100111100011000100000 (Metagross) + {0xcf994621, 0x00a00e52}, // 0b0010100000000011100101001011001111100110010100011000100001 (Regirock) + {0xc79b7261, 0x00a00e02}, // 0b0010100000000011100000001011000111100110110111001001100001 (Regice) + {0xc79b4621, 0x00a00ed2}, // 0b0010100000000011101101001011000111100110110100011000100001 (Registeel) + {0xc79b727c, 0x03b00e42}, // 0b1110110000000011100100001011000111100110110111001001111100 (Kyogre) + {0xcff946b2, 0x00a60ef6}, // 0b0010100110000011101111011011001111111110010100011010110010 (Groudon) + {0xc7f376b6, 0x03ba0eb6}, // 0b1110111010000011101011011011000111111100110111011010110110 (Rayquaza) + {0xb7bbd63e, 0x035c5e93}, // 0b1101011100010111101001001110110111101110111101011000111110 (Latias) + {0xb7bbd63e, 0x035c5e93}, // 0b1101011100010111101001001110110111101110111101011000111110 (Latios) + {0xb59bc62c, 0x00408e93}, // 0b0001000000100011101001001110110101100110111100011000101100 (Jirachi) + {0xf5bbde2d, 0x00e58fc3}, // 0b0011100101100011111100001111110101101110111101111000101101 (Deoxys) + {0xb41b8e28, 0x00419f03}, // 0b0001000001100111110000001110110100000110111000111000101000 (Chimecho) +}; -- cgit v1.2.3 From 4d1a197f4d1a203d6110e34ab2d9a986f94288f8 Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 14:31:46 -0400 Subject: Convert trainer class and cry lookup tables to c objects --- data/cry_id_table.inc | 137 ----------------- data/pokemon.s | 6 - data/trainer_class_index_tables.inc | 157 ------------------- include/trainer.h | 227 +++++++++++++++++++++++++++ src/pokemon_data.c | 299 ++++++++++++++++++++++++++++++++++++ 5 files changed, 526 insertions(+), 300 deletions(-) delete mode 100644 data/cry_id_table.inc delete mode 100644 data/trainer_class_index_tables.inc diff --git a/data/cry_id_table.inc b/data/cry_id_table.inc deleted file mode 100644 index 5a39a2194..000000000 --- a/data/cry_id_table.inc +++ /dev/null @@ -1,137 +0,0 @@ - .align 1 -gSpeciesIdToCryId:: @ 81FDE6A - .2byte 273 @ TREECKO - .2byte 274 @ GROVYLE - .2byte 275 @ SCEPTILE - .2byte 270 @ TORCHIC - .2byte 271 @ COMBUSKEN - .2byte 272 @ BLAZIKEN - .2byte 276 @ MUDKIP - .2byte 277 @ MARSHTOMP - .2byte 278 @ SWAMPERT - .2byte 359 @ POOCHYENA - .2byte 360 @ MIGHTYENA - .2byte 378 @ ZIGZAGOON - .2byte 375 @ LINOONE - .2byte 290 @ WURMPLE - .2byte 291 @ SILCOON - .2byte 292 @ BEAUTIFLY - .2byte 293 @ CASCOON - .2byte 294 @ DUSTOX - .2byte 283 @ LOTAD - .2byte 284 @ LOMBRE - .2byte 285 @ LUDICOLO - .2byte 286 @ SEEDOT - .2byte 287 @ NUZLEAF - .2byte 288 @ SHIFTRY - .2byte 301 @ NINCADA - .2byte 302 @ NINJASK - .2byte 303 @ SHEDINJA - .2byte 266 @ TAILLOW - .2byte 267 @ SWELLOW - .2byte 374 @ SHROOMISH - .2byte 373 @ BRELOOM - .2byte 269 @ SPINDA - .2byte 280 @ WINGULL - .2byte 279 @ PELIPPER - .2byte 310 @ SURSKIT - .2byte 311 @ MASQUERAIN - .2byte 377 @ WAILMER - .2byte 381 @ WAILORD - .2byte 312 @ SKITTY - .2byte 313 @ DELCATTY - .2byte 251 @ KECLEON - .2byte 329 @ BALTOY - .2byte 330 @ CLAYDOL - .2byte 306 @ NOSEPASS - .2byte 253 @ TORKOAL - .2byte 362 @ SABLEYE - .2byte 318 @ BARBOACH - .2byte 319 @ WHISCASH - .2byte 368 @ LUVDISC - .2byte 320 @ CORPHISH - .2byte 321 @ CRAWDAUNT - .2byte 333 @ FEEBAS - .2byte 334 @ MILOTIC - .2byte 289 @ CARVANHA - .2byte 260 @ SHARPEDO - .2byte 324 @ TRAPINCH - .2byte 325 @ VIBRAVA - .2byte 326 @ FLYGON - .2byte 304 @ MAKUHITA - .2byte 305 @ HARIYAMA - .2byte 254 @ ELECTRIKE - .2byte 255 @ MANECTRIC - .2byte 316 @ NUMEL - .2byte 317 @ CAMERUPT - .2byte 338 @ SPHEAL - .2byte 339 @ SEALEO - .2byte 340 @ WALREIN - .2byte 327 @ CACNEA - .2byte 328 @ CACTURNE - .2byte 383 @ SNORUNT - .2byte 307 @ GLALIE - .2byte 331 @ LUNATONE - .2byte 332 @ SOLROCK - .2byte 262 @ AZURILL - .2byte 322 @ SPOINK - .2byte 323 @ GRUMPIG - .2byte 308 @ PLUSLE - .2byte 309 @ MINUN - .2byte 363 @ MAWILE - .2byte 336 @ MEDITITE - .2byte 337 @ MEDICHAM - .2byte 263 @ SWABLU - .2byte 264 @ ALTARIA - .2byte 258 @ WYNAUT - .2byte 256 @ DUSKULL - .2byte 361 @ DUSCLOPS - .2byte 252 @ ROSELIA - .2byte 298 @ SLAKOTH - .2byte 299 @ VIGOROTH - .2byte 300 @ SLAKING - .2byte 314 @ GULPIN - .2byte 315 @ SWALOT - .2byte 376 @ TROPIUS - .2byte 382 @ WHISMUR - .2byte 380 @ LOUDRED - .2byte 379 @ EXPLOUD - .2byte 341 @ CLAMPERL - .2byte 342 @ HUNTAIL - .2byte 343 @ GOREBYSS - .2byte 335 @ ABSOL - .2byte 282 @ SHUPPET - .2byte 281 @ BANETTE - .2byte 259 @ SEVIPER - .2byte 261 @ ZANGOOSE - .2byte 367 @ RELICANTH - .2byte 364 @ ARON - .2byte 365 @ LAIRON - .2byte 366 @ AGGRON - .2byte 356 @ CASTFORM - .2byte 357 @ VOLBEAT - .2byte 358 @ ILLUMISE - .2byte 344 @ LILEEP - .2byte 345 @ CRADILY - .2byte 346 @ ANORITH - .2byte 347 @ ARMALDO - .2byte 295 @ RALTS - .2byte 296 @ KIRLIA - .2byte 297 @ GARDEVOIR - .2byte 351 @ BAGON - .2byte 352 @ SHELGON - .2byte 372 @ SALAMENCE - .2byte 348 @ BELDUM - .2byte 349 @ METANG - .2byte 350 @ METAGROSS - .2byte 353 @ REGIROCK - .2byte 354 @ REGICE - .2byte 355 @ REGISTEEL - .2byte 370 @ KYOGRE - .2byte 369 @ GROUDON - .2byte 371 @ RAYQUAZA - .2byte 257 @ LATIAS - .2byte 384 @ LATIOS - .2byte 385 @ JIRACHI - .2byte 386 @ DEOXYS - .2byte 387 @ CHIMECHO diff --git a/data/pokemon.s b/data/pokemon.s index d5d40e201..955d912cc 100644 --- a/data/pokemon.s +++ b/data/pokemon.s @@ -3,12 +3,6 @@ .section .rodata -@ 81FDDD0 - .include "data/trainer_class_index_tables.inc" - -@ 81FDE6A - .include "data/cry_id_table.inc" - @ 81FDF78 .include "data/experience_tables/tables.inc" diff --git a/data/trainer_class_index_tables.inc b/data/trainer_class_index_tables.inc deleted file mode 100644 index 25762e510..000000000 --- a/data/trainer_class_index_tables.inc +++ /dev/null @@ -1,157 +0,0 @@ -gTrainerClassToPicIndex:: @ 81FDDD0 - .byte TRAINER_PIC_ARCHIE @ AQUA_LEADER - .byte TRAINER_PIC_AQUA_GRUNT_M @ TEAM_AQUA_M - .byte TRAINER_PIC_AQUA_GRUNT_F @ TEAM_AQUA_F - .byte TRAINER_PIC_AROMA_LADY @ AROMA_LADY - .byte TRAINER_PIC_RUIN_MANIAC @ RUIN_MANIAC - .byte TRAINER_PIC_INTERVIEWER @ INTERVIEWER - .byte TRAINER_PIC_TUBER_F @ TUBER_F - .byte TRAINER_PIC_TUBER_M @ TUBER_M - .byte TRAINER_PIC_COOL_TRAINER_M @ COOL_TRAINER_M - .byte TRAINER_PIC_COOL_TRAINER_F @ COOL_TRAINER_F - .byte TRAINER_PIC_HEX_MANIAC @ HEX_MANIAC - .byte TRAINER_PIC_LADY @ LADY - .byte TRAINER_PIC_BEAUTY @ BEAUTY - .byte TRAINER_PIC_RICH_BOY @ RICH_BOY - .byte TRAINER_PIC_POKEMANIAC @ POKEMANIAC - .byte TRAINER_PIC_SWIMMER_M @ SWIMMER_M - .byte TRAINER_PIC_BLACK_BELT @ BLACK_BELT - .byte TRAINER_PIC_GUITARIST @ GUITARIST - .byte TRAINER_PIC_KINDLER @ KINDLER - .byte TRAINER_PIC_CAMPER @ CAMPER - .byte TRAINER_PIC_BUG_MANIAC @ BUG_MANIAC - .byte TRAINER_PIC_PSYCHIC_M @ PSYCHIC_M - .byte TRAINER_PIC_PSYCHIC_F @ PSYCHIC_F - .byte TRAINER_PIC_GENTLEMAN @ GENTLEMAN - .byte TRAINER_PIC_SIDNEY @ ELITE_FOUR_M - .byte TRAINER_PIC_PHOEBE @ ELITE_FOUR_F - .byte TRAINER_PIC_ROXANNE @ LEADER_F - .byte TRAINER_PIC_BRAWLY @ LEADER_M - .byte TRAINER_PIC_TATE_AND_LIZA @ LEADER_MF - .byte TRAINER_PIC_SCHOOL_KID_M @ SCHOOL_KID_M - .byte TRAINER_PIC_SCHOOL_KID_F @ SCHOOL_KID_F - .byte TRAINER_PIC_SR_AND_JR @ SR_AND_JR - .byte TRAINER_PIC_POKEFAN_M @ POKEFAN_M - .byte TRAINER_PIC_POKEFAN_F @ POKEFAN_F - .byte TRAINER_PIC_EXPERT_M @ EXPERT_M - .byte TRAINER_PIC_EXPERT_F @ EXPERT_F - .byte TRAINER_PIC_YOUNGSTER @ YOUNGSTER - .byte TRAINER_PIC_STEVEN @ CHAMPION - .byte TRAINER_PIC_FISHERMAN @ FISHERMAN - .byte TRAINER_PIC_CYCLING_TRIATHLETE_M @ CYCLING_TRIATHLETE_M - .byte TRAINER_PIC_CYCLING_TRIATHLETE_F @ CYCLING_TRIATHLETE_F - .byte TRAINER_PIC_RUNNING_TRIATHLETE_M @ RUNNING_TRIATHLETE_M - .byte TRAINER_PIC_RUNNING_TRIATHLETE_F @ RUNNING_TRIATHLETE_F - .byte TRAINER_PIC_SWIMMING_TRIATHLETE_M @ SWIMMING_TRIATHLETE_M - .byte TRAINER_PIC_SWIMMING_TRIATHLETE_F @ SWIMMING_TRIATHLETE_F - .byte TRAINER_PIC_DRAGON_TAMER @ DRAGON_TAMER - .byte TRAINER_PIC_BIRD_KEEPER @ BIRD_KEEPER - .byte TRAINER_PIC_NINJA_BOY @ NINJA_BOY - .byte TRAINER_PIC_BATTLE_GIRL @ BATTLE_GIRL - .byte TRAINER_PIC_PARASOL_LADY @ PARASOL_LADY - .byte TRAINER_PIC_SWIMMER_F @ SWIMMER_F - .byte TRAINER_PIC_PICNICKER @ PICNICKER - .byte TRAINER_PIC_TWINS @ TWINS - .byte TRAINER_PIC_SAILOR @ SAILOR - .byte TRAINER_PIC_YOUNGSTER @ BOARDER_1 - .byte TRAINER_PIC_YOUNGSTER @ BOARDER_2 - .byte TRAINER_PIC_COLLECTOR @ COLLECTOR - .byte TRAINER_PIC_WALLY @ WALLY - .byte TRAINER_PIC_BRENDAN @ BRENDAN_1 - .byte TRAINER_PIC_BRENDAN @ BRENDAN_2 - .byte TRAINER_PIC_BRENDAN @ BRENDAN_3 - .byte TRAINER_PIC_MAY @ MAY_1 - .byte TRAINER_PIC_MAY @ MAY_2 - .byte TRAINER_PIC_MAY @ MAY_3 - .byte TRAINER_PIC_POKEMON_BREEDER_M @ POKEMON_BREEDER_M - .byte TRAINER_PIC_POKEMON_BREEDER_F @ POKEMON_BREEDER_F - .byte TRAINER_PIC_POKEMON_RANGER_M @ POKEMON_RANGER_M - .byte TRAINER_PIC_POKEMON_RANGER_F @ POKEMON_RANGER_F - .byte TRAINER_PIC_MAXIE @ MAGMA_LEADER - .byte TRAINER_PIC_MAGMA_GRUNT_M @ TEAM_MAGMA_M - .byte TRAINER_PIC_MAGMA_GRUNT_F @ TEAM_MAGMA_F - .byte TRAINER_PIC_LASS @ LASS - .byte TRAINER_PIC_BUG_CATCHER @ BUG_CATCHER - .byte TRAINER_PIC_HIKER @ HIKER - .byte TRAINER_PIC_YOUNG_COUPLE @ YOUNG_COUPLE - .byte TRAINER_PIC_OLD_COUPLE @ OLD_COUPLE - .byte TRAINER_PIC_SIS_AND_BRO @ SIS_AND_BRO - -gTrainerClassToNameIndex:: @ 81FDE1D - .byte TRAINER_CLASS_NAME_AQUA_LEADER @ AQUA_LEADER - .byte TRAINER_CLASS_NAME_TEAM_AQUA @ TEAM_AQUA_M - .byte TRAINER_CLASS_NAME_TEAM_AQUA @ TEAM_AQUA_F - .byte TRAINER_CLASS_NAME_AROMA_LADY @ AROMA_LADY - .byte TRAINER_CLASS_NAME_RUIN_MANIAC @ RUIN_MANIAC - .byte TRAINER_CLASS_NAME_INTERVIEWER @ INTERVIEWER - .byte TRAINER_CLASS_NAME_TUBER_F @ TUBER_F - .byte TRAINER_CLASS_NAME_TUBER_M @ TUBER_M - .byte TRAINER_CLASS_NAME_COOL_TRAINER @ COOL_TRAINER_M - .byte TRAINER_CLASS_NAME_COOL_TRAINER @ COOL_TRAINER_F - .byte TRAINER_CLASS_NAME_HEX_MANIAC @ HEX_MANIAC - .byte TRAINER_CLASS_NAME_LADY @ LADY - .byte TRAINER_CLASS_NAME_BEAUTY @ BEAUTY - .byte TRAINER_CLASS_NAME_RICH_BOY @ RICH_BOY - .byte TRAINER_CLASS_NAME_POKEMANIAC @ POKEMANIAC - .byte TRAINER_CLASS_NAME_SWIMMER_M @ SWIMMER_M - .byte TRAINER_CLASS_NAME_BLACK_BELT @ BLACK_BELT - .byte TRAINER_CLASS_NAME_GUITARIST @ GUITARIST - .byte TRAINER_CLASS_NAME_KINDLER @ KINDLER - .byte TRAINER_CLASS_NAME_CAMPER @ CAMPER - .byte TRAINER_CLASS_NAME_BUG_MANIAC @ BUG_MANIAC - .byte TRAINER_CLASS_NAME_PSYCHIC @ PSYCHIC_M - .byte TRAINER_CLASS_NAME_PSYCHIC @ PSYCHIC_F - .byte TRAINER_CLASS_NAME_GENTLEMAN @ GENTLEMAN - .byte TRAINER_CLASS_NAME_ELITE_FOUR @ ELITE_FOUR_M - .byte TRAINER_CLASS_NAME_ELITE_FOUR @ ELITE_FOUR_F - .byte TRAINER_CLASS_NAME_LEADER @ LEADER_F - .byte TRAINER_CLASS_NAME_LEADER @ LEADER_M - .byte TRAINER_CLASS_NAME_LEADER @ LEADER_MF - .byte TRAINER_CLASS_NAME_SCHOOL_KID @ SCHOOL_KID_M - .byte TRAINER_CLASS_NAME_SCHOOL_KID @ SCHOOL_KID_F - .byte TRAINER_CLASS_NAME_SR_AND_JR @ SR_AND_JR - .byte TRAINER_CLASS_NAME_POKEFAN @ POKEFAN_M - .byte TRAINER_CLASS_NAME_POKEFAN @ POKEFAN_F - .byte TRAINER_CLASS_NAME_EXPERT @ EXPERT_M - .byte TRAINER_CLASS_NAME_EXPERT @ EXPERT_F - .byte TRAINER_CLASS_NAME_YOUNGSTER @ YOUNGSTER - .byte TRAINER_CLASS_NAME_CHAMPION @ CHAMPION - .byte TRAINER_CLASS_NAME_FISHERMAN @ FISHERMAN - .byte TRAINER_CLASS_NAME_TRIATHLETE @ CYCLING_TRIATHLETE_M - .byte TRAINER_CLASS_NAME_TRIATHLETE @ CYCLING_TRIATHLETE_F - .byte TRAINER_CLASS_NAME_TRIATHLETE @ RUNNING_TRIATHLETE_M - .byte TRAINER_CLASS_NAME_TRIATHLETE @ RUNNING_TRIATHLETE_F - .byte TRAINER_CLASS_NAME_TRIATHLETE @ SWIMMING_TRIATHLETE_M - .byte TRAINER_CLASS_NAME_TRIATHLETE @ SWIMMING_TRIATHLETE_F - .byte TRAINER_CLASS_NAME_DRAGON_TAMER @ DRAGON_TAMER - .byte TRAINER_CLASS_NAME_BIRD_KEEPER @ BIRD_KEEPER - .byte TRAINER_CLASS_NAME_NINJA_BOY @ NINJA_BOY - .byte TRAINER_CLASS_NAME_BATTLE_GIRL @ BATTLE_GIRL - .byte TRAINER_CLASS_NAME_PARASOL_LADY @ PARASOL_LADY - .byte TRAINER_CLASS_NAME_SWIMMER_F @ SWIMMER_F - .byte TRAINER_CLASS_NAME_PICNICKER @ PICNICKER - .byte TRAINER_CLASS_NAME_TWINS @ TWINS - .byte TRAINER_CLASS_NAME_SAILOR @ SAILOR - .byte TRAINER_CLASS_NAME_BOARDER @ BOARDER_1 - .byte TRAINER_CLASS_NAME_BOARDER @ BOARDER_2 - .byte TRAINER_CLASS_NAME_COLLECTOR @ COLLECTOR - .byte TRAINER_CLASS_NAME_POKEMON_TRAINER_3 @ WALLY - .byte TRAINER_CLASS_NAME_POKEMON_TRAINER_3 @ BRENDAN_1 - .byte TRAINER_CLASS_NAME_POKEMON_TRAINER_3 @ BRENDAN_2 - .byte TRAINER_CLASS_NAME_POKEMON_TRAINER_3 @ BRENDAN_3 - .byte TRAINER_CLASS_NAME_POKEMON_TRAINER_3 @ MAY_1 - .byte TRAINER_CLASS_NAME_POKEMON_TRAINER_3 @ MAY_2 - .byte TRAINER_CLASS_NAME_POKEMON_TRAINER_3 @ MAY_3 - .byte TRAINER_CLASS_NAME_POKEMON_BREEDER @ POKEMON_BREEDER_M - .byte TRAINER_CLASS_NAME_POKEMON_BREEDER @ POKEMON_BREEDER_F - .byte TRAINER_CLASS_NAME_POKEMON_RANGER @ POKEMON_RANGER_M - .byte TRAINER_CLASS_NAME_POKEMON_RANGER @ POKEMON_RANGER_F - .byte TRAINER_CLASS_NAME_MAGMA_LEADER @ MAGMA_LEADER - .byte TRAINER_CLASS_NAME_TEAM_MAGMA @ TEAM_MAGMA_M - .byte TRAINER_CLASS_NAME_TEAM_MAGMA @ TEAM_MAGMA_F - .byte TRAINER_CLASS_NAME_LASS @ LASS - .byte TRAINER_CLASS_NAME_BUG_CATCHER @ BUG_CATCHER - .byte TRAINER_CLASS_NAME_HIKER @ HIKER - .byte TRAINER_CLASS_NAME_YOUNG_COUPLE @ YOUNG_COUPLE - .byte TRAINER_CLASS_NAME_OLD_COUPLE @ OLD_COUPLE - .byte TRAINER_CLASS_NAME_SIS_AND_BRO @ SIS_AND_BRO diff --git a/include/trainer.h b/include/trainer.h index 232cde608..2e0beb342 100644 --- a/include/trainer.h +++ b/include/trainer.h @@ -16,4 +16,231 @@ #define TRAINER_ENCOUNTER_MUSIC_INTERVIEWER 12 #define TRAINER_ENCOUNTER_MUSIC_RICH 13 // Rich Boys and Gentlemen +enum { + TRAINER_CLASS_AQUA_LEADER, + TRAINER_CLASS_TEAM_AQUA_M, + TRAINER_CLASS_TEAM_AQUA_F, + TRAINER_CLASS_AROMA_LADY, + TRAINER_CLASS_RUIN_MANIAC, + TRAINER_CLASS_INTERVIEWER, + TRAINER_CLASS_TUBER_F, + TRAINER_CLASS_TUBER_M, + TRAINER_CLASS_COOL_TRAINER_M, + TRAINER_CLASS_COOL_TRAINER_F, + TRAINER_CLASS_HEX_MANIAC, + TRAINER_CLASS_LADY, + TRAINER_CLASS_BEAUTY, + TRAINER_CLASS_RICH_BOY, + TRAINER_CLASS_POKEMANIAC, + TRAINER_CLASS_SWIMMER_M, + TRAINER_CLASS_BLACK_BELT, + TRAINER_CLASS_GUITARIST, + TRAINER_CLASS_KINDLER, + TRAINER_CLASS_CAMPER, + TRAINER_CLASS_BUG_MANIAC, + TRAINER_CLASS_PSYCHIC_M, + TRAINER_CLASS_PSYCHIC_F, + TRAINER_CLASS_GENTLEMAN, + TRAINER_CLASS_ELITE_FOUR_M, + TRAINER_CLASS_ELITE_FOUR_F, + TRAINER_CLASS_LEADER_F, + TRAINER_CLASS_LEADER_M, + TRAINER_CLASS_LEADER_MF, + TRAINER_CLASS_SCHOOL_KID_M, + TRAINER_CLASS_SCHOOL_KID_F, + TRAINER_CLASS_SR_AND_JR, + TRAINER_CLASS_POKEFAN_M, + TRAINER_CLASS_POKEFAN_F, + TRAINER_CLASS_EXPERT_M, + TRAINER_CLASS_EXPERT_F, + TRAINER_CLASS_YOUNGSTER, + TRAINER_CLASS_CHAMPION, + TRAINER_CLASS_FISHERMAN, + TRAINER_CLASS_CYCLING_TRIATHLETE_M, + TRAINER_CLASS_CYCLING_TRIATHLETE_F, + TRAINER_CLASS_RUNNING_TRIATHLETE_M, + TRAINER_CLASS_RUNNING_TRIATHLETE_F, + TRAINER_CLASS_SWIMMING_TRIATHLETE_M, + TRAINER_CLASS_SWIMMING_TRIATHLETE_F, + TRAINER_CLASS_DRAGON_TAMER, + TRAINER_CLASS_BIRD_KEEPER, + TRAINER_CLASS_NINJA_BOY, + TRAINER_CLASS_BATTLE_GIRL, + TRAINER_CLASS_PARASOL_LADY, + TRAINER_CLASS_SWIMMER_F, + TRAINER_CLASS_PICNICKER, + TRAINER_CLASS_TWINS, + TRAINER_CLASS_SAILOR, + TRAINER_CLASS_BOARDER_1, + TRAINER_CLASS_BOARDER_2, + TRAINER_CLASS_COLLECTOR, + TRAINER_CLASS_WALLY, + TRAINER_CLASS_BRENDAN_1, + TRAINER_CLASS_BRENDAN_2, + TRAINER_CLASS_BRENDAN_3, + TRAINER_CLASS_MAY_1, + TRAINER_CLASS_MAY_2, + TRAINER_CLASS_MAY_3, + TRAINER_CLASS_POKEMON_BREEDER_M, + TRAINER_CLASS_POKEMON_BREEDER_F, + TRAINER_CLASS_POKEMON_RANGER_M, + TRAINER_CLASS_POKEMON_RANGER_F, + TRAINER_CLASS_MAGMA_LEADER, + TRAINER_CLASS_TEAM_MAGMA_M, + TRAINER_CLASS_TEAM_MAGMA_F, + TRAINER_CLASS_LASS, + TRAINER_CLASS_BUG_CATCHER, + TRAINER_CLASS_HIKER, + TRAINER_CLASS_YOUNG_COUPLE, + TRAINER_CLASS_OLD_COUPLE, + TRAINER_CLASS_SIS_AND_BRO +}; + +enum { + TRAINER_PIC_BRENDAN, + TRAINER_PIC_MAY, + TRAINER_PIC_LASS, + TRAINER_PIC_YOUNGSTER, + TRAINER_PIC_HIKER, + TRAINER_PIC_BEAUTY, + TRAINER_PIC_FISHERMAN, + TRAINER_PIC_LADY, + TRAINER_PIC_CYCLING_TRIATHLETE_M, + TRAINER_PIC_AQUA_GRUNT_M, + TRAINER_PIC_TWINS, + TRAINER_PIC_SWIMMER_F, + TRAINER_PIC_BUG_CATCHER, + TRAINER_PIC_SCHOOL_KID_M, + TRAINER_PIC_RICH_BOY, + TRAINER_PIC_SR_AND_JR, + TRAINER_PIC_BLACK_BELT, + TRAINER_PIC_WALLY, + TRAINER_PIC_AQUA_GRUNT_F, + TRAINER_PIC_TUBER_F, + TRAINER_PIC_HEX_MANIAC, + TRAINER_PIC_POKEMON_BREEDER_F, + TRAINER_PIC_MAGMA_GRUNT_M, + TRAINER_PIC_MAGMA_GRUNT_F, + TRAINER_PIC_INTERVIEWER, + TRAINER_PIC_TUBER_M, + TRAINER_PIC_YOUNG_COUPLE, + TRAINER_PIC_GUITARIST, + TRAINER_PIC_GENTLEMAN, + TRAINER_PIC_STEVEN, + TRAINER_PIC_MAXIE, + TRAINER_PIC_RUNNING_TRIATHLETE_F, + TRAINER_PIC_RUNNING_TRIATHLETE_M, + TRAINER_PIC_BATTLE_GIRL, + TRAINER_PIC_CYCLING_TRIATHLETE_F, + TRAINER_PIC_SWIMMER_M, + TRAINER_PIC_POKEFAN_F, + TRAINER_PIC_EXPERT_M, + TRAINER_PIC_EXPERT_F, + TRAINER_PIC_SWIMMING_TRIATHLETE_M, + TRAINER_PIC_SWIMMING_TRIATHLETE_F, + TRAINER_PIC_DRAGON_TAMER, + TRAINER_PIC_BIRD_KEEPER, + TRAINER_PIC_NINJA_BOY, + TRAINER_PIC_PARASOL_LADY, + TRAINER_PIC_BUG_MANIAC, + TRAINER_PIC_SAILOR, + TRAINER_PIC_COLLECTOR, + TRAINER_PIC_POKEMON_BREEDER_M, + TRAINER_PIC_POKEMON_RANGER_M, + TRAINER_PIC_POKEMON_RANGER_F, + TRAINER_PIC_MAGMA_ADMIN_M, + TRAINER_PIC_MAGMA_ADMIN_F, + TRAINER_PIC_AROMA_LADY, + TRAINER_PIC_RUIN_MANIAC, + TRAINER_PIC_COOL_TRAINER_M, + TRAINER_PIC_COOL_TRAINER_F, + TRAINER_PIC_POKEMANIAC, + TRAINER_PIC_KINDLER, + TRAINER_PIC_CAMPER, + TRAINER_PIC_PICNICKER, + TRAINER_PIC_PSYCHIC_M, + TRAINER_PIC_PSYCHIC_F, + TRAINER_PIC_SCHOOL_KID_F, + TRAINER_PIC_POKEFAN_M, + TRAINER_PIC_SIS_AND_BRO, + TRAINER_PIC_OLD_COUPLE, + TRAINER_PIC_AQUA_ADMIN_M, + TRAINER_PIC_AQUA_ADMIN_F, + TRAINER_PIC_UNUSED_AQUA, + TRAINER_PIC_ARCHIE, + TRAINER_PIC_ROXANNE, + TRAINER_PIC_BRAWLY, + TRAINER_PIC_WATTSON, + TRAINER_PIC_FLANNERY, + TRAINER_PIC_NORMAN, + TRAINER_PIC_WINONA, + TRAINER_PIC_TATE_AND_LIZA, + TRAINER_PIC_WALLACE, + TRAINER_PIC_SIDNEY, + TRAINER_PIC_PHOEBE, + TRAINER_PIC_GLACIA, + TRAINER_PIC_DRAKE, +}; + +enum { + TRAINER_CLASS_NAME_POKEMON_TRAINER_1, + TRAINER_CLASS_NAME_POKEMON_TRAINER_2, + TRAINER_CLASS_NAME_AQUA_LEADER, + TRAINER_CLASS_NAME_TEAM_AQUA, + TRAINER_CLASS_NAME_AQUA_ADMIN, + TRAINER_CLASS_NAME_AROMA_LADY, + TRAINER_CLASS_NAME_RUIN_MANIAC, + TRAINER_CLASS_NAME_INTERVIEWER, + TRAINER_CLASS_NAME_TUBER_F, + TRAINER_CLASS_NAME_TUBER_M, + TRAINER_CLASS_NAME_COOL_TRAINER, + TRAINER_CLASS_NAME_HEX_MANIAC, + TRAINER_CLASS_NAME_LADY, + TRAINER_CLASS_NAME_BEAUTY, + TRAINER_CLASS_NAME_RICH_BOY, + TRAINER_CLASS_NAME_POKEMANIAC, + TRAINER_CLASS_NAME_SWIMMER_M, + TRAINER_CLASS_NAME_BLACK_BELT, + TRAINER_CLASS_NAME_GUITARIST, + TRAINER_CLASS_NAME_KINDLER, + TRAINER_CLASS_NAME_CAMPER, + TRAINER_CLASS_NAME_BUG_MANIAC, + TRAINER_CLASS_NAME_PSYCHIC, + TRAINER_CLASS_NAME_GENTLEMAN, + TRAINER_CLASS_NAME_ELITE_FOUR, + TRAINER_CLASS_NAME_LEADER, + TRAINER_CLASS_NAME_SCHOOL_KID, + TRAINER_CLASS_NAME_SR_AND_JR, + TRAINER_CLASS_NAME_WINSTRATE, + TRAINER_CLASS_NAME_POKEFAN, + TRAINER_CLASS_NAME_EXPERT, + TRAINER_CLASS_NAME_YOUNGSTER, + TRAINER_CLASS_NAME_CHAMPION, + TRAINER_CLASS_NAME_FISHERMAN, + TRAINER_CLASS_NAME_TRIATHLETE, + TRAINER_CLASS_NAME_DRAGON_TAMER, + TRAINER_CLASS_NAME_BIRD_KEEPER, + TRAINER_CLASS_NAME_NINJA_BOY, + TRAINER_CLASS_NAME_BATTLE_GIRL, + TRAINER_CLASS_NAME_PARASOL_LADY, + TRAINER_CLASS_NAME_SWIMMER_F, + TRAINER_CLASS_NAME_PICNICKER, + TRAINER_CLASS_NAME_TWINS, + TRAINER_CLASS_NAME_SAILOR, + TRAINER_CLASS_NAME_BOARDER, + TRAINER_CLASS_NAME_COLLECTOR, + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, + TRAINER_CLASS_NAME_POKEMON_BREEDER, + TRAINER_CLASS_NAME_POKEMON_RANGER, + TRAINER_CLASS_NAME_MAGMA_LEADER, + TRAINER_CLASS_NAME_TEAM_MAGMA, + TRAINER_CLASS_NAME_MAGMA_ADMIN, + TRAINER_CLASS_NAME_LASS, + TRAINER_CLASS_NAME_BUG_CATCHER, + TRAINER_CLASS_NAME_HIKER, + TRAINER_CLASS_NAME_YOUNG_COUPLE, + TRAINER_CLASS_NAME_OLD_COUPLE, + TRAINER_CLASS_NAME_SIS_AND_BRO +}; + #endif // GUARD_TRAINER_H diff --git a/src/pokemon_data.c b/src/pokemon_data.c index eb7a39b52..3a0e770ec 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -1,6 +1,7 @@ #include "global.h" #include "pokemon.h" #include "species.h" +#include "trainer.h" const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151 }; @@ -1350,3 +1351,301 @@ const u32 gTMHMLearnsets[][2] = { {0xf5bbde2d, 0x00e58fc3}, // 0b0011100101100011111100001111110101101110111101111000101101 (Deoxys) {0xb41b8e28, 0x00419f03}, // 0b0001000001100111110000001110110100000110111000111000101000 (Chimecho) }; + +const u8 gTrainerClassToPicIndex[] = { + TRAINER_PIC_ARCHIE, // AQUA_LEADER + TRAINER_PIC_AQUA_GRUNT_M, // TEAM_AQUA_M + TRAINER_PIC_AQUA_GRUNT_F, // TEAM_AQUA_F + TRAINER_PIC_AROMA_LADY, // AROMA_LADY + TRAINER_PIC_RUIN_MANIAC, // RUIN_MANIAC + TRAINER_PIC_INTERVIEWER, // INTERVIEWER + TRAINER_PIC_TUBER_F, // TUBER_F + TRAINER_PIC_TUBER_M, // TUBER_M + TRAINER_PIC_COOL_TRAINER_M, // COOL_TRAINER_M + TRAINER_PIC_COOL_TRAINER_F, // COOL_TRAINER_F + TRAINER_PIC_HEX_MANIAC, // HEX_MANIAC + TRAINER_PIC_LADY, // LADY + TRAINER_PIC_BEAUTY, // BEAUTY + TRAINER_PIC_RICH_BOY, // RICH_BOY + TRAINER_PIC_POKEMANIAC, // POKEMANIAC + TRAINER_PIC_SWIMMER_M, // SWIMMER_M + TRAINER_PIC_BLACK_BELT, // BLACK_BELT + TRAINER_PIC_GUITARIST, // GUITARIST + TRAINER_PIC_KINDLER, // KINDLER + TRAINER_PIC_CAMPER, // CAMPER + TRAINER_PIC_BUG_MANIAC, // BUG_MANIAC + TRAINER_PIC_PSYCHIC_M, // PSYCHIC_M + TRAINER_PIC_PSYCHIC_F, // PSYCHIC_F + TRAINER_PIC_GENTLEMAN, // GENTLEMAN + TRAINER_PIC_SIDNEY, // ELITE_FOUR_M + TRAINER_PIC_PHOEBE, // ELITE_FOUR_F + TRAINER_PIC_ROXANNE, // LEADER_F + TRAINER_PIC_BRAWLY, // LEADER_M + TRAINER_PIC_TATE_AND_LIZA, // LEADER_MF + TRAINER_PIC_SCHOOL_KID_M, // SCHOOL_KID_M + TRAINER_PIC_SCHOOL_KID_F, // SCHOOL_KID_F + TRAINER_PIC_SR_AND_JR, // SR_AND_JR + TRAINER_PIC_POKEFAN_M, // POKEFAN_M + TRAINER_PIC_POKEFAN_F, // POKEFAN_F + TRAINER_PIC_EXPERT_M, // EXPERT_M + TRAINER_PIC_EXPERT_F, // EXPERT_F + TRAINER_PIC_YOUNGSTER, // YOUNGSTER + TRAINER_PIC_STEVEN, // CHAMPION + TRAINER_PIC_FISHERMAN, // FISHERMAN + TRAINER_PIC_CYCLING_TRIATHLETE_M, // CYCLING_TRIATHLETE_M + TRAINER_PIC_CYCLING_TRIATHLETE_F, // CYCLING_TRIATHLETE_F + TRAINER_PIC_RUNNING_TRIATHLETE_M, // RUNNING_TRIATHLETE_M + TRAINER_PIC_RUNNING_TRIATHLETE_F, // RUNNING_TRIATHLETE_F + TRAINER_PIC_SWIMMING_TRIATHLETE_M, // SWIMMING_TRIATHLETE_M + TRAINER_PIC_SWIMMING_TRIATHLETE_F, // SWIMMING_TRIATHLETE_F + TRAINER_PIC_DRAGON_TAMER, // DRAGON_TAMER + TRAINER_PIC_BIRD_KEEPER, // BIRD_KEEPER + TRAINER_PIC_NINJA_BOY, // NINJA_BOY + TRAINER_PIC_BATTLE_GIRL, // BATTLE_GIRL + TRAINER_PIC_PARASOL_LADY, // PARASOL_LADY + TRAINER_PIC_SWIMMER_F, // SWIMMER_F + TRAINER_PIC_PICNICKER, // PICNICKER + TRAINER_PIC_TWINS, // TWINS + TRAINER_PIC_SAILOR, // SAILOR + TRAINER_PIC_YOUNGSTER, // BOARDER_1 + TRAINER_PIC_YOUNGSTER, // BOARDER_2 + TRAINER_PIC_COLLECTOR, // COLLECTOR + TRAINER_PIC_WALLY, // WALLY + TRAINER_PIC_BRENDAN, // BRENDAN_1 + TRAINER_PIC_BRENDAN, // BRENDAN_2 + TRAINER_PIC_BRENDAN, // BRENDAN_3 + TRAINER_PIC_MAY, // MAY_1 + TRAINER_PIC_MAY, // MAY_2 + TRAINER_PIC_MAY, // MAY_3 + TRAINER_PIC_POKEMON_BREEDER_M, // POKEMON_BREEDER_M + TRAINER_PIC_POKEMON_BREEDER_F, // POKEMON_BREEDER_F + TRAINER_PIC_POKEMON_RANGER_M, // POKEMON_RANGER_M + TRAINER_PIC_POKEMON_RANGER_F, // POKEMON_RANGER_F + TRAINER_PIC_MAXIE, // MAGMA_LEADER + TRAINER_PIC_MAGMA_GRUNT_M, // TEAM_MAGMA_M + TRAINER_PIC_MAGMA_GRUNT_F, // TEAM_MAGMA_F + TRAINER_PIC_LASS, // LASS + TRAINER_PIC_BUG_CATCHER, // BUG_CATCHER + TRAINER_PIC_HIKER, // HIKER + TRAINER_PIC_YOUNG_COUPLE, // YOUNG_COUPLE + TRAINER_PIC_OLD_COUPLE, // OLD_COUPLE + TRAINER_PIC_SIS_AND_BRO // SIS_AND_BRO +}; + +const u8 gTrainerClassToNameIndex[] = { + TRAINER_CLASS_NAME_AQUA_LEADER, // AQUA_LEADER + TRAINER_CLASS_NAME_TEAM_AQUA, // TEAM_AQUA_M + TRAINER_CLASS_NAME_TEAM_AQUA, // TEAM_AQUA_F + TRAINER_CLASS_NAME_AROMA_LADY, // AROMA_LADY + TRAINER_CLASS_NAME_RUIN_MANIAC, // RUIN_MANIAC + TRAINER_CLASS_NAME_INTERVIEWER, // INTERVIEWER + TRAINER_CLASS_NAME_TUBER_F, // TUBER_F + TRAINER_CLASS_NAME_TUBER_M, // TUBER_M + TRAINER_CLASS_NAME_COOL_TRAINER, // COOL_TRAINER_M + TRAINER_CLASS_NAME_COOL_TRAINER, // COOL_TRAINER_F + TRAINER_CLASS_NAME_HEX_MANIAC, // HEX_MANIAC + TRAINER_CLASS_NAME_LADY, // LADY + TRAINER_CLASS_NAME_BEAUTY, // BEAUTY + TRAINER_CLASS_NAME_RICH_BOY, // RICH_BOY + TRAINER_CLASS_NAME_POKEMANIAC, // POKEMANIAC + TRAINER_CLASS_NAME_SWIMMER_M, // SWIMMER_M + TRAINER_CLASS_NAME_BLACK_BELT, // BLACK_BELT + TRAINER_CLASS_NAME_GUITARIST, // GUITARIST + TRAINER_CLASS_NAME_KINDLER, // KINDLER + TRAINER_CLASS_NAME_CAMPER, // CAMPER + TRAINER_CLASS_NAME_BUG_MANIAC, // BUG_MANIAC + TRAINER_CLASS_NAME_PSYCHIC, // PSYCHIC_M + TRAINER_CLASS_NAME_PSYCHIC, // PSYCHIC_F + TRAINER_CLASS_NAME_GENTLEMAN, // GENTLEMAN + TRAINER_CLASS_NAME_ELITE_FOUR, // ELITE_FOUR_M + TRAINER_CLASS_NAME_ELITE_FOUR, // ELITE_FOUR_F + TRAINER_CLASS_NAME_LEADER, // LEADER_F + TRAINER_CLASS_NAME_LEADER, // LEADER_M + TRAINER_CLASS_NAME_LEADER, // LEADER_MF + TRAINER_CLASS_NAME_SCHOOL_KID, // SCHOOL_KID_M + TRAINER_CLASS_NAME_SCHOOL_KID, // SCHOOL_KID_F + TRAINER_CLASS_NAME_SR_AND_JR, // SR_AND_JR + TRAINER_CLASS_NAME_POKEFAN, // POKEFAN_M + TRAINER_CLASS_NAME_POKEFAN, // POKEFAN_F + TRAINER_CLASS_NAME_EXPERT, // EXPERT_M + TRAINER_CLASS_NAME_EXPERT, // EXPERT_F + TRAINER_CLASS_NAME_YOUNGSTER, // YOUNGSTER + TRAINER_CLASS_NAME_CHAMPION, // CHAMPION + TRAINER_CLASS_NAME_FISHERMAN, // FISHERMAN + TRAINER_CLASS_NAME_TRIATHLETE, // CYCLING_TRIATHLETE_M + TRAINER_CLASS_NAME_TRIATHLETE, // CYCLING_TRIATHLETE_F + TRAINER_CLASS_NAME_TRIATHLETE, // RUNNING_TRIATHLETE_M + TRAINER_CLASS_NAME_TRIATHLETE, // RUNNING_TRIATHLETE_F + TRAINER_CLASS_NAME_TRIATHLETE, // SWIMMING_TRIATHLETE_M + TRAINER_CLASS_NAME_TRIATHLETE, // SWIMMING_TRIATHLETE_F + TRAINER_CLASS_NAME_DRAGON_TAMER, // DRAGON_TAMER + TRAINER_CLASS_NAME_BIRD_KEEPER, // BIRD_KEEPER + TRAINER_CLASS_NAME_NINJA_BOY, // NINJA_BOY + TRAINER_CLASS_NAME_BATTLE_GIRL, // BATTLE_GIRL + TRAINER_CLASS_NAME_PARASOL_LADY, // PARASOL_LADY + TRAINER_CLASS_NAME_SWIMMER_F, // SWIMMER_F + TRAINER_CLASS_NAME_PICNICKER, // PICNICKER + TRAINER_CLASS_NAME_TWINS, // TWINS + TRAINER_CLASS_NAME_SAILOR, // SAILOR + TRAINER_CLASS_NAME_BOARDER, // BOARDER_1 + TRAINER_CLASS_NAME_BOARDER, // BOARDER_2 + TRAINER_CLASS_NAME_COLLECTOR, // COLLECTOR + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // WALLY + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_1 + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_2 + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_3 + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_1 + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_2 + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_3 + TRAINER_CLASS_NAME_POKEMON_BREEDER, // POKEMON_BREEDER_M + TRAINER_CLASS_NAME_POKEMON_BREEDER, // POKEMON_BREEDER_F + TRAINER_CLASS_NAME_POKEMON_RANGER, // POKEMON_RANGER_M + TRAINER_CLASS_NAME_POKEMON_RANGER, // POKEMON_RANGER_F + TRAINER_CLASS_NAME_MAGMA_LEADER, // MAGMA_LEADER + TRAINER_CLASS_NAME_TEAM_MAGMA, // TEAM_MAGMA_M + TRAINER_CLASS_NAME_TEAM_MAGMA, // TEAM_MAGMA_F + TRAINER_CLASS_NAME_LASS, // LASS + TRAINER_CLASS_NAME_BUG_CATCHER, // BUG_CATCHER + TRAINER_CLASS_NAME_HIKER, // HIKER + TRAINER_CLASS_NAME_YOUNG_COUPLE, // YOUNG_COUPLE + TRAINER_CLASS_NAME_OLD_COUPLE, // OLD_COUPLE + TRAINER_CLASS_NAME_SIS_AND_BRO // SIS_AND_BRO +}; + +const u16 gSpeciesIdToCryId[] = { + 273, // TREECKO + 274, // GROVYLE + 275, // SCEPTILE + 270, // TORCHIC + 271, // COMBUSKEN + 272, // BLAZIKEN + 276, // MUDKIP + 277, // MARSHTOMP + 278, // SWAMPERT + 359, // POOCHYENA + 360, // MIGHTYENA + 378, // ZIGZAGOON + 375, // LINOONE + 290, // WURMPLE + 291, // SILCOON + 292, // BEAUTIFLY + 293, // CASCOON + 294, // DUSTOX + 283, // LOTAD + 284, // LOMBRE + 285, // LUDICOLO + 286, // SEEDOT + 287, // NUZLEAF + 288, // SHIFTRY + 301, // NINCADA + 302, // NINJASK + 303, // SHEDINJA + 266, // TAILLOW + 267, // SWELLOW + 374, // SHROOMISH + 373, // BRELOOM + 269, // SPINDA + 280, // WINGULL + 279, // PELIPPER + 310, // SURSKIT + 311, // MASQUERAIN + 377, // WAILMER + 381, // WAILORD + 312, // SKITTY + 313, // DELCATTY + 251, // KECLEON + 329, // BALTOY + 330, // CLAYDOL + 306, // NOSEPASS + 253, // TORKOAL + 362, // SABLEYE + 318, // BARBOACH + 319, // WHISCASH + 368, // LUVDISC + 320, // CORPHISH + 321, // CRAWDAUNT + 333, // FEEBAS + 334, // MILOTIC + 289, // CARVANHA + 260, // SHARPEDO + 324, // TRAPINCH + 325, // VIBRAVA + 326, // FLYGON + 304, // MAKUHITA + 305, // HARIYAMA + 254, // ELECTRIKE + 255, // MANECTRIC + 316, // NUMEL + 317, // CAMERUPT + 338, // SPHEAL + 339, // SEALEO + 340, // WALREIN + 327, // CACNEA + 328, // CACTURNE + 383, // SNORUNT + 307, // GLALIE + 331, // LUNATONE + 332, // SOLROCK + 262, // AZURILL + 322, // SPOINK + 323, // GRUMPIG + 308, // PLUSLE + 309, // MINUN + 363, // MAWILE + 336, // MEDITITE + 337, // MEDICHAM + 263, // SWABLU + 264, // ALTARIA + 258, // WYNAUT + 256, // DUSKULL + 361, // DUSCLOPS + 252, // ROSELIA + 298, // SLAKOTH + 299, // VIGOROTH + 300, // SLAKING + 314, // GULPIN + 315, // SWALOT + 376, // TROPIUS + 382, // WHISMUR + 380, // LOUDRED + 379, // EXPLOUD + 341, // CLAMPERL + 342, // HUNTAIL + 343, // GOREBYSS + 335, // ABSOL + 282, // SHUPPET + 281, // BANETTE + 259, // SEVIPER + 261, // ZANGOOSE + 367, // RELICANTH + 364, // ARON + 365, // LAIRON + 366, // AGGRON + 356, // CASTFORM + 357, // VOLBEAT + 358, // ILLUMISE + 344, // LILEEP + 345, // CRADILY + 346, // ANORITH + 347, // ARMALDO + 295, // RALTS + 296, // KIRLIA + 297, // GARDEVOIR + 351, // BAGON + 352, // SHELGON + 372, // SALAMENCE + 348, // BELDUM + 349, // METANG + 350, // METAGROSS + 353, // REGIROCK + 354, // REGICE + 355, // REGISTEEL + 370, // KYOGRE + 369, // GROUDON + 371, // RAYQUAZA + 257, // LATIAS + 384, // LATIOS + 385, // JIRACHI + 386, // DEOXYS + 387 // CHIMECHO +}; -- cgit v1.2.3 From dc9db3f9716cad46f946d502e374c40c57441a25 Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 14:41:23 -0400 Subject: Convert experience tables into c objects --- data/experience_tables/erratic_growth_rate.inc | 101 --- data/experience_tables/fast_growth_rate.inc | 101 --- data/experience_tables/fluctuating_growth_rate.inc | 101 --- data/experience_tables/medium_fast_growth_rate.inc | 101 --- data/experience_tables/medium_slow_growth_rate.inc | 101 --- data/experience_tables/slow_growth_rate.inc | 101 --- data/experience_tables/tables.inc | 11 - data/pokemon.s | 3 - src/pokemon_data.c | 820 +++++++++++++++++++++ 9 files changed, 820 insertions(+), 620 deletions(-) delete mode 100644 data/experience_tables/erratic_growth_rate.inc delete mode 100644 data/experience_tables/fast_growth_rate.inc delete mode 100644 data/experience_tables/fluctuating_growth_rate.inc delete mode 100644 data/experience_tables/medium_fast_growth_rate.inc delete mode 100644 data/experience_tables/medium_slow_growth_rate.inc delete mode 100644 data/experience_tables/slow_growth_rate.inc delete mode 100644 data/experience_tables/tables.inc diff --git a/data/experience_tables/erratic_growth_rate.inc b/data/experience_tables/erratic_growth_rate.inc deleted file mode 100644 index d3a455a9f..000000000 --- a/data/experience_tables/erratic_growth_rate.inc +++ /dev/null @@ -1,101 +0,0 @@ - .4byte 0 @ 0 - .4byte 1 @ 1 - .4byte 15 @ 2 - .4byte 52 @ 3 - .4byte 122 @ 4 - .4byte 237 @ 5 - .4byte 406 @ 6 - .4byte 637 @ 7 - .4byte 942 @ 8 - .4byte 1326 @ 9 - .4byte 1800 @ 10 - .4byte 2369 @ 11 - .4byte 3041 @ 12 - .4byte 3822 @ 13 - .4byte 4719 @ 14 - .4byte 5737 @ 15 - .4byte 6881 @ 16 - .4byte 8155 @ 17 - .4byte 9564 @ 18 - .4byte 11111 @ 19 - .4byte 12800 @ 20 - .4byte 14632 @ 21 - .4byte 16610 @ 22 - .4byte 18737 @ 23 - .4byte 21012 @ 24 - .4byte 23437 @ 25 - .4byte 26012 @ 26 - .4byte 28737 @ 27 - .4byte 31610 @ 28 - .4byte 34632 @ 29 - .4byte 37800 @ 30 - .4byte 41111 @ 31 - .4byte 44564 @ 32 - .4byte 48155 @ 33 - .4byte 51881 @ 34 - .4byte 55737 @ 35 - .4byte 59719 @ 36 - .4byte 63822 @ 37 - .4byte 68041 @ 38 - .4byte 72369 @ 39 - .4byte 76800 @ 40 - .4byte 81326 @ 41 - .4byte 85942 @ 42 - .4byte 90637 @ 43 - .4byte 95406 @ 44 - .4byte 100237 @ 45 - .4byte 105122 @ 46 - .4byte 110052 @ 47 - .4byte 115015 @ 48 - .4byte 120001 @ 49 - .4byte 125000 @ 50 - .4byte 131324 @ 51 - .4byte 137795 @ 52 - .4byte 144410 @ 53 - .4byte 151165 @ 54 - .4byte 158056 @ 55 - .4byte 165079 @ 56 - .4byte 172229 @ 57 - .4byte 179503 @ 58 - .4byte 186894 @ 59 - .4byte 194400 @ 60 - .4byte 202013 @ 61 - .4byte 209728 @ 62 - .4byte 217540 @ 63 - .4byte 225443 @ 64 - .4byte 233431 @ 65 - .4byte 241496 @ 66 - .4byte 249633 @ 67 - .4byte 257834 @ 68 - .4byte 267406 @ 69 - .4byte 276458 @ 70 - .4byte 286328 @ 71 - .4byte 296358 @ 72 - .4byte 305767 @ 73 - .4byte 316074 @ 74 - .4byte 326531 @ 75 - .4byte 336255 @ 76 - .4byte 346965 @ 77 - .4byte 357812 @ 78 - .4byte 367807 @ 79 - .4byte 378880 @ 80 - .4byte 390077 @ 81 - .4byte 400293 @ 82 - .4byte 411686 @ 83 - .4byte 423190 @ 84 - .4byte 433572 @ 85 - .4byte 445239 @ 86 - .4byte 457001 @ 87 - .4byte 467489 @ 88 - .4byte 479378 @ 89 - .4byte 491346 @ 90 - .4byte 501878 @ 91 - .4byte 513934 @ 92 - .4byte 526049 @ 93 - .4byte 536557 @ 94 - .4byte 548720 @ 95 - .4byte 560922 @ 96 - .4byte 571333 @ 97 - .4byte 583539 @ 98 - .4byte 591882 @ 99 - .4byte 600000 @ 100 diff --git a/data/experience_tables/fast_growth_rate.inc b/data/experience_tables/fast_growth_rate.inc deleted file mode 100644 index d8675fdc0..000000000 --- a/data/experience_tables/fast_growth_rate.inc +++ /dev/null @@ -1,101 +0,0 @@ - .4byte 0 @ 0 - .4byte 1 @ 1 - .4byte 6 @ 2 - .4byte 21 @ 3 - .4byte 51 @ 4 - .4byte 100 @ 5 - .4byte 172 @ 6 - .4byte 274 @ 7 - .4byte 409 @ 8 - .4byte 583 @ 9 - .4byte 800 @ 10 - .4byte 1064 @ 11 - .4byte 1382 @ 12 - .4byte 1757 @ 13 - .4byte 2195 @ 14 - .4byte 2700 @ 15 - .4byte 3276 @ 16 - .4byte 3930 @ 17 - .4byte 4665 @ 18 - .4byte 5487 @ 19 - .4byte 6400 @ 20 - .4byte 7408 @ 21 - .4byte 8518 @ 22 - .4byte 9733 @ 23 - .4byte 11059 @ 24 - .4byte 12500 @ 25 - .4byte 14060 @ 26 - .4byte 15746 @ 27 - .4byte 17561 @ 28 - .4byte 19511 @ 29 - .4byte 21600 @ 30 - .4byte 23832 @ 31 - .4byte 26214 @ 32 - .4byte 28749 @ 33 - .4byte 31443 @ 34 - .4byte 34300 @ 35 - .4byte 37324 @ 36 - .4byte 40522 @ 37 - .4byte 43897 @ 38 - .4byte 47455 @ 39 - .4byte 51200 @ 40 - .4byte 55136 @ 41 - .4byte 59270 @ 42 - .4byte 63605 @ 43 - .4byte 68147 @ 44 - .4byte 72900 @ 45 - .4byte 77868 @ 46 - .4byte 83058 @ 47 - .4byte 88473 @ 48 - .4byte 94119 @ 49 - .4byte 100000 @ 50 - .4byte 106120 @ 51 - .4byte 112486 @ 52 - .4byte 119101 @ 53 - .4byte 125971 @ 54 - .4byte 133100 @ 55 - .4byte 140492 @ 56 - .4byte 148154 @ 57 - .4byte 156089 @ 58 - .4byte 164303 @ 59 - .4byte 172800 @ 60 - .4byte 181584 @ 61 - .4byte 190662 @ 62 - .4byte 200037 @ 63 - .4byte 209715 @ 64 - .4byte 219700 @ 65 - .4byte 229996 @ 66 - .4byte 240610 @ 67 - .4byte 251545 @ 68 - .4byte 262807 @ 69 - .4byte 274400 @ 70 - .4byte 286328 @ 71 - .4byte 298598 @ 72 - .4byte 311213 @ 73 - .4byte 324179 @ 74 - .4byte 337500 @ 75 - .4byte 351180 @ 76 - .4byte 365226 @ 77 - .4byte 379641 @ 78 - .4byte 394431 @ 79 - .4byte 409600 @ 80 - .4byte 425152 @ 81 - .4byte 441094 @ 82 - .4byte 457429 @ 83 - .4byte 474163 @ 84 - .4byte 491300 @ 85 - .4byte 508844 @ 86 - .4byte 526802 @ 87 - .4byte 545177 @ 88 - .4byte 563975 @ 89 - .4byte 583200 @ 90 - .4byte 602856 @ 91 - .4byte 622950 @ 92 - .4byte 643485 @ 93 - .4byte 664467 @ 94 - .4byte 685900 @ 95 - .4byte 707788 @ 96 - .4byte 730138 @ 97 - .4byte 752953 @ 98 - .4byte 776239 @ 99 - .4byte 800000 @ 100 diff --git a/data/experience_tables/fluctuating_growth_rate.inc b/data/experience_tables/fluctuating_growth_rate.inc deleted file mode 100644 index 81a962327..000000000 --- a/data/experience_tables/fluctuating_growth_rate.inc +++ /dev/null @@ -1,101 +0,0 @@ - .4byte 0 @ 0 - .4byte 1 @ 1 - .4byte 4 @ 2 - .4byte 13 @ 3 - .4byte 32 @ 4 - .4byte 65 @ 5 - .4byte 112 @ 6 - .4byte 178 @ 7 - .4byte 276 @ 8 - .4byte 393 @ 9 - .4byte 540 @ 10 - .4byte 745 @ 11 - .4byte 967 @ 12 - .4byte 1230 @ 13 - .4byte 1591 @ 14 - .4byte 1957 @ 15 - .4byte 2457 @ 16 - .4byte 3046 @ 17 - .4byte 3732 @ 18 - .4byte 4526 @ 19 - .4byte 5440 @ 20 - .4byte 6482 @ 21 - .4byte 7666 @ 22 - .4byte 9003 @ 23 - .4byte 10506 @ 24 - .4byte 12187 @ 25 - .4byte 14060 @ 26 - .4byte 16140 @ 27 - .4byte 18439 @ 28 - .4byte 20974 @ 29 - .4byte 23760 @ 30 - .4byte 26811 @ 31 - .4byte 30146 @ 32 - .4byte 33780 @ 33 - .4byte 37731 @ 34 - .4byte 42017 @ 35 - .4byte 46656 @ 36 - .4byte 50653 @ 37 - .4byte 55969 @ 38 - .4byte 60505 @ 39 - .4byte 66560 @ 40 - .4byte 71677 @ 41 - .4byte 78533 @ 42 - .4byte 84277 @ 43 - .4byte 91998 @ 44 - .4byte 98415 @ 45 - .4byte 107069 @ 46 - .4byte 114205 @ 47 - .4byte 123863 @ 48 - .4byte 131766 @ 49 - .4byte 142500 @ 50 - .4byte 151222 @ 51 - .4byte 163105 @ 52 - .4byte 172697 @ 53 - .4byte 185807 @ 54 - .4byte 196322 @ 55 - .4byte 210739 @ 56 - .4byte 222231 @ 57 - .4byte 238036 @ 58 - .4byte 250562 @ 59 - .4byte 267840 @ 60 - .4byte 281456 @ 61 - .4byte 300293 @ 62 - .4byte 315059 @ 63 - .4byte 335544 @ 64 - .4byte 351520 @ 65 - .4byte 373744 @ 66 - .4byte 390991 @ 67 - .4byte 415050 @ 68 - .4byte 433631 @ 69 - .4byte 459620 @ 70 - .4byte 479600 @ 71 - .4byte 507617 @ 72 - .4byte 529063 @ 73 - .4byte 559209 @ 74 - .4byte 582187 @ 75 - .4byte 614566 @ 76 - .4byte 639146 @ 77 - .4byte 673863 @ 78 - .4byte 700115 @ 79 - .4byte 737280 @ 80 - .4byte 765275 @ 81 - .4byte 804997 @ 82 - .4byte 834809 @ 83 - .4byte 877201 @ 84 - .4byte 908905 @ 85 - .4byte 954084 @ 86 - .4byte 987754 @ 87 - .4byte 1035837 @ 88 - .4byte 1071552 @ 89 - .4byte 1122660 @ 90 - .4byte 1160499 @ 91 - .4byte 1214753 @ 92 - .4byte 1254796 @ 93 - .4byte 1312322 @ 94 - .4byte 1354652 @ 95 - .4byte 1415577 @ 96 - .4byte 1460276 @ 97 - .4byte 1524731 @ 98 - .4byte 1571884 @ 99 - .4byte 1640000 @ 100 diff --git a/data/experience_tables/medium_fast_growth_rate.inc b/data/experience_tables/medium_fast_growth_rate.inc deleted file mode 100644 index 5a51dd381..000000000 --- a/data/experience_tables/medium_fast_growth_rate.inc +++ /dev/null @@ -1,101 +0,0 @@ - .4byte 0 @ 0 - .4byte 1 @ 1 - .4byte 8 @ 2 - .4byte 27 @ 3 - .4byte 64 @ 4 - .4byte 125 @ 5 - .4byte 216 @ 6 - .4byte 343 @ 7 - .4byte 512 @ 8 - .4byte 729 @ 9 - .4byte 1000 @ 10 - .4byte 1331 @ 11 - .4byte 1728 @ 12 - .4byte 2197 @ 13 - .4byte 2744 @ 14 - .4byte 3375 @ 15 - .4byte 4096 @ 16 - .4byte 4913 @ 17 - .4byte 5832 @ 18 - .4byte 6859 @ 19 - .4byte 8000 @ 20 - .4byte 9261 @ 21 - .4byte 10648 @ 22 - .4byte 12167 @ 23 - .4byte 13824 @ 24 - .4byte 15625 @ 25 - .4byte 17576 @ 26 - .4byte 19683 @ 27 - .4byte 21952 @ 28 - .4byte 24389 @ 29 - .4byte 27000 @ 30 - .4byte 29791 @ 31 - .4byte 32768 @ 32 - .4byte 35937 @ 33 - .4byte 39304 @ 34 - .4byte 42875 @ 35 - .4byte 46656 @ 36 - .4byte 50653 @ 37 - .4byte 54872 @ 38 - .4byte 59319 @ 39 - .4byte 64000 @ 40 - .4byte 68921 @ 41 - .4byte 74088 @ 42 - .4byte 79507 @ 43 - .4byte 85184 @ 44 - .4byte 91125 @ 45 - .4byte 97336 @ 46 - .4byte 103823 @ 47 - .4byte 110592 @ 48 - .4byte 117649 @ 49 - .4byte 125000 @ 50 - .4byte 132651 @ 51 - .4byte 140608 @ 52 - .4byte 148877 @ 53 - .4byte 157464 @ 54 - .4byte 166375 @ 55 - .4byte 175616 @ 56 - .4byte 185193 @ 57 - .4byte 195112 @ 58 - .4byte 205379 @ 59 - .4byte 216000 @ 60 - .4byte 226981 @ 61 - .4byte 238328 @ 62 - .4byte 250047 @ 63 - .4byte 262144 @ 64 - .4byte 274625 @ 65 - .4byte 287496 @ 66 - .4byte 300763 @ 67 - .4byte 314432 @ 68 - .4byte 328509 @ 69 - .4byte 343000 @ 70 - .4byte 357911 @ 71 - .4byte 373248 @ 72 - .4byte 389017 @ 73 - .4byte 405224 @ 74 - .4byte 421875 @ 75 - .4byte 438976 @ 76 - .4byte 456533 @ 77 - .4byte 474552 @ 78 - .4byte 493039 @ 79 - .4byte 512000 @ 80 - .4byte 531441 @ 81 - .4byte 551368 @ 82 - .4byte 571787 @ 83 - .4byte 592704 @ 84 - .4byte 614125 @ 85 - .4byte 636056 @ 86 - .4byte 658503 @ 87 - .4byte 681472 @ 88 - .4byte 704969 @ 89 - .4byte 729000 @ 90 - .4byte 753571 @ 91 - .4byte 778688 @ 92 - .4byte 804357 @ 93 - .4byte 830584 @ 94 - .4byte 857375 @ 95 - .4byte 884736 @ 96 - .4byte 912673 @ 97 - .4byte 941192 @ 98 - .4byte 970299 @ 99 - .4byte 1000000 @ 100 diff --git a/data/experience_tables/medium_slow_growth_rate.inc b/data/experience_tables/medium_slow_growth_rate.inc deleted file mode 100644 index d4c16b8c0..000000000 --- a/data/experience_tables/medium_slow_growth_rate.inc +++ /dev/null @@ -1,101 +0,0 @@ - .4byte 0 @ 0 - .4byte 1 @ 1 - .4byte 9 @ 2 - .4byte 57 @ 3 - .4byte 96 @ 4 - .4byte 135 @ 5 - .4byte 179 @ 6 - .4byte 236 @ 7 - .4byte 314 @ 8 - .4byte 419 @ 9 - .4byte 560 @ 10 - .4byte 742 @ 11 - .4byte 973 @ 12 - .4byte 1261 @ 13 - .4byte 1612 @ 14 - .4byte 2035 @ 15 - .4byte 2535 @ 16 - .4byte 3120 @ 17 - .4byte 3798 @ 18 - .4byte 4575 @ 19 - .4byte 5460 @ 20 - .4byte 6458 @ 21 - .4byte 7577 @ 22 - .4byte 8825 @ 23 - .4byte 10208 @ 24 - .4byte 11735 @ 25 - .4byte 13411 @ 26 - .4byte 15244 @ 27 - .4byte 17242 @ 28 - .4byte 19411 @ 29 - .4byte 21760 @ 30 - .4byte 24294 @ 31 - .4byte 27021 @ 32 - .4byte 29949 @ 33 - .4byte 33084 @ 34 - .4byte 36435 @ 35 - .4byte 40007 @ 36 - .4byte 43808 @ 37 - .4byte 47846 @ 38 - .4byte 52127 @ 39 - .4byte 56660 @ 40 - .4byte 61450 @ 41 - .4byte 66505 @ 42 - .4byte 71833 @ 43 - .4byte 77440 @ 44 - .4byte 83335 @ 45 - .4byte 89523 @ 46 - .4byte 96012 @ 47 - .4byte 102810 @ 48 - .4byte 109923 @ 49 - .4byte 117360 @ 50 - .4byte 125126 @ 51 - .4byte 133229 @ 52 - .4byte 141677 @ 53 - .4byte 150476 @ 54 - .4byte 159635 @ 55 - .4byte 169159 @ 56 - .4byte 179056 @ 57 - .4byte 189334 @ 58 - .4byte 199999 @ 59 - .4byte 211060 @ 60 - .4byte 222522 @ 61 - .4byte 234393 @ 62 - .4byte 246681 @ 63 - .4byte 259392 @ 64 - .4byte 272535 @ 65 - .4byte 286115 @ 66 - .4byte 300140 @ 67 - .4byte 314618 @ 68 - .4byte 329555 @ 69 - .4byte 344960 @ 70 - .4byte 360838 @ 71 - .4byte 377197 @ 72 - .4byte 394045 @ 73 - .4byte 411388 @ 74 - .4byte 429235 @ 75 - .4byte 447591 @ 76 - .4byte 466464 @ 77 - .4byte 485862 @ 78 - .4byte 505791 @ 79 - .4byte 526260 @ 80 - .4byte 547274 @ 81 - .4byte 568841 @ 82 - .4byte 590969 @ 83 - .4byte 613664 @ 84 - .4byte 636935 @ 85 - .4byte 660787 @ 86 - .4byte 685228 @ 87 - .4byte 710266 @ 88 - .4byte 735907 @ 89 - .4byte 762160 @ 90 - .4byte 789030 @ 91 - .4byte 816525 @ 92 - .4byte 844653 @ 93 - .4byte 873420 @ 94 - .4byte 902835 @ 95 - .4byte 932903 @ 96 - .4byte 963632 @ 97 - .4byte 995030 @ 98 - .4byte 1027103 @ 99 - .4byte 1059860 @ 100 diff --git a/data/experience_tables/slow_growth_rate.inc b/data/experience_tables/slow_growth_rate.inc deleted file mode 100644 index 8d10b34ed..000000000 --- a/data/experience_tables/slow_growth_rate.inc +++ /dev/null @@ -1,101 +0,0 @@ - .4byte 0 @ 0 - .4byte 1 @ 1 - .4byte 10 @ 2 - .4byte 33 @ 3 - .4byte 80 @ 4 - .4byte 156 @ 5 - .4byte 270 @ 6 - .4byte 428 @ 7 - .4byte 640 @ 8 - .4byte 911 @ 9 - .4byte 1250 @ 10 - .4byte 1663 @ 11 - .4byte 2160 @ 12 - .4byte 2746 @ 13 - .4byte 3430 @ 14 - .4byte 4218 @ 15 - .4byte 5120 @ 16 - .4byte 6141 @ 17 - .4byte 7290 @ 18 - .4byte 8573 @ 19 - .4byte 10000 @ 20 - .4byte 11576 @ 21 - .4byte 13310 @ 22 - .4byte 15208 @ 23 - .4byte 17280 @ 24 - .4byte 19531 @ 25 - .4byte 21970 @ 26 - .4byte 24603 @ 27 - .4byte 27440 @ 28 - .4byte 30486 @ 29 - .4byte 33750 @ 30 - .4byte 37238 @ 31 - .4byte 40960 @ 32 - .4byte 44921 @ 33 - .4byte 49130 @ 34 - .4byte 53593 @ 35 - .4byte 58320 @ 36 - .4byte 63316 @ 37 - .4byte 68590 @ 38 - .4byte 74148 @ 39 - .4byte 80000 @ 40 - .4byte 86151 @ 41 - .4byte 92610 @ 42 - .4byte 99383 @ 43 - .4byte 106480 @ 44 - .4byte 113906 @ 45 - .4byte 121670 @ 46 - .4byte 129778 @ 47 - .4byte 138240 @ 48 - .4byte 147061 @ 49 - .4byte 156250 @ 50 - .4byte 165813 @ 51 - .4byte 175760 @ 52 - .4byte 186096 @ 53 - .4byte 196830 @ 54 - .4byte 207968 @ 55 - .4byte 219520 @ 56 - .4byte 231491 @ 57 - .4byte 243890 @ 58 - .4byte 256723 @ 59 - .4byte 270000 @ 60 - .4byte 283726 @ 61 - .4byte 297910 @ 62 - .4byte 312558 @ 63 - .4byte 327680 @ 64 - .4byte 343281 @ 65 - .4byte 359370 @ 66 - .4byte 375953 @ 67 - .4byte 393040 @ 68 - .4byte 410636 @ 69 - .4byte 428750 @ 70 - .4byte 447388 @ 71 - .4byte 466560 @ 72 - .4byte 486271 @ 73 - .4byte 506530 @ 74 - .4byte 527343 @ 75 - .4byte 548720 @ 76 - .4byte 570666 @ 77 - .4byte 593190 @ 78 - .4byte 616298 @ 79 - .4byte 640000 @ 80 - .4byte 664301 @ 81 - .4byte 689210 @ 82 - .4byte 714733 @ 83 - .4byte 740880 @ 84 - .4byte 767656 @ 85 - .4byte 795070 @ 86 - .4byte 823128 @ 87 - .4byte 851840 @ 88 - .4byte 881211 @ 89 - .4byte 911250 @ 90 - .4byte 941963 @ 91 - .4byte 973360 @ 92 - .4byte 1005446 @ 93 - .4byte 1038230 @ 94 - .4byte 1071718 @ 95 - .4byte 1105920 @ 96 - .4byte 1140841 @ 97 - .4byte 1176490 @ 98 - .4byte 1212873 @ 99 - .4byte 1250000 @ 100 diff --git a/data/experience_tables/tables.inc b/data/experience_tables/tables.inc deleted file mode 100644 index 763d6f8bb..000000000 --- a/data/experience_tables/tables.inc +++ /dev/null @@ -1,11 +0,0 @@ - .align 2 -gExperienceTables:: @ 81FDF78 - .include "data/experience_tables/medium_fast_growth_rate.inc" - .include "data/experience_tables/erratic_growth_rate.inc" - .include "data/experience_tables/fluctuating_growth_rate.inc" - .include "data/experience_tables/medium_slow_growth_rate.inc" - .include "data/experience_tables/fast_growth_rate.inc" - .include "data/experience_tables/slow_growth_rate.inc" -@ TODO: find out if these copies are used - .include "data/experience_tables/medium_fast_growth_rate.inc" - .include "data/experience_tables/medium_fast_growth_rate.inc" diff --git a/data/pokemon.s b/data/pokemon.s index 955d912cc..58c103e1c 100644 --- a/data/pokemon.s +++ b/data/pokemon.s @@ -3,9 +3,6 @@ .section .rodata -@ 81FDF78 - .include "data/experience_tables/tables.inc" - @ 81FEC18 .include "data/base_stats.inc" diff --git a/src/pokemon_data.c b/src/pokemon_data.c index 3a0e770ec..cf5af617f 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -1649,3 +1649,823 @@ const u16 gSpeciesIdToCryId[] = { 386, // DEOXYS 387 // CHIMECHO }; + +const u32 gExperienceTables[][101] = { + { // Medium Fast + 0, // 0 + 1, // 1 + 8, // 2 + 27, // 3 + 64, // 4 + 125, // 5 + 216, // 6 + 343, // 7 + 512, // 8 + 729, // 9 + 1000, // 10 + 1331, // 11 + 1728, // 12 + 2197, // 13 + 2744, // 14 + 3375, // 15 + 4096, // 16 + 4913, // 17 + 5832, // 18 + 6859, // 19 + 8000, // 20 + 9261, // 21 + 10648, // 22 + 12167, // 23 + 13824, // 24 + 15625, // 25 + 17576, // 26 + 19683, // 27 + 21952, // 28 + 24389, // 29 + 27000, // 30 + 29791, // 31 + 32768, // 32 + 35937, // 33 + 39304, // 34 + 42875, // 35 + 46656, // 36 + 50653, // 37 + 54872, // 38 + 59319, // 39 + 64000, // 40 + 68921, // 41 + 74088, // 42 + 79507, // 43 + 85184, // 44 + 91125, // 45 + 97336, // 46 + 103823, // 47 + 110592, // 48 + 117649, // 49 + 125000, // 50 + 132651, // 51 + 140608, // 52 + 148877, // 53 + 157464, // 54 + 166375, // 55 + 175616, // 56 + 185193, // 57 + 195112, // 58 + 205379, // 59 + 216000, // 60 + 226981, // 61 + 238328, // 62 + 250047, // 63 + 262144, // 64 + 274625, // 65 + 287496, // 66 + 300763, // 67 + 314432, // 68 + 328509, // 69 + 343000, // 70 + 357911, // 71 + 373248, // 72 + 389017, // 73 + 405224, // 74 + 421875, // 75 + 438976, // 76 + 456533, // 77 + 474552, // 78 + 493039, // 79 + 512000, // 80 + 531441, // 81 + 551368, // 82 + 571787, // 83 + 592704, // 84 + 614125, // 85 + 636056, // 86 + 658503, // 87 + 681472, // 88 + 704969, // 89 + 729000, // 90 + 753571, // 91 + 778688, // 92 + 804357, // 93 + 830584, // 94 + 857375, // 95 + 884736, // 96 + 912673, // 97 + 941192, // 98 + 970299, // 99 + 1000000 // 100 + }, { // Erratic + 0, // 0 + 1, // 1 + 15, // 2 + 52, // 3 + 122, // 4 + 237, // 5 + 406, // 6 + 637, // 7 + 942, // 8 + 1326, // 9 + 1800, // 10 + 2369, // 11 + 3041, // 12 + 3822, // 13 + 4719, // 14 + 5737, // 15 + 6881, // 16 + 8155, // 17 + 9564, // 18 + 11111, // 19 + 12800, // 20 + 14632, // 21 + 16610, // 22 + 18737, // 23 + 21012, // 24 + 23437, // 25 + 26012, // 26 + 28737, // 27 + 31610, // 28 + 34632, // 29 + 37800, // 30 + 41111, // 31 + 44564, // 32 + 48155, // 33 + 51881, // 34 + 55737, // 35 + 59719, // 36 + 63822, // 37 + 68041, // 38 + 72369, // 39 + 76800, // 40 + 81326, // 41 + 85942, // 42 + 90637, // 43 + 95406, // 44 + 100237, // 45 + 105122, // 46 + 110052, // 47 + 115015, // 48 + 120001, // 49 + 125000, // 50 + 131324, // 51 + 137795, // 52 + 144410, // 53 + 151165, // 54 + 158056, // 55 + 165079, // 56 + 172229, // 57 + 179503, // 58 + 186894, // 59 + 194400, // 60 + 202013, // 61 + 209728, // 62 + 217540, // 63 + 225443, // 64 + 233431, // 65 + 241496, // 66 + 249633, // 67 + 257834, // 68 + 267406, // 69 + 276458, // 70 + 286328, // 71 + 296358, // 72 + 305767, // 73 + 316074, // 74 + 326531, // 75 + 336255, // 76 + 346965, // 77 + 357812, // 78 + 367807, // 79 + 378880, // 80 + 390077, // 81 + 400293, // 82 + 411686, // 83 + 423190, // 84 + 433572, // 85 + 445239, // 86 + 457001, // 87 + 467489, // 88 + 479378, // 89 + 491346, // 90 + 501878, // 91 + 513934, // 92 + 526049, // 93 + 536557, // 94 + 548720, // 95 + 560922, // 96 + 571333, // 97 + 583539, // 98 + 591882, // 99 + 600000 // 100 + }, { // Fluctuating + 0, // 0 + 1, // 1 + 4, // 2 + 13, // 3 + 32, // 4 + 65, // 5 + 112, // 6 + 178, // 7 + 276, // 8 + 393, // 9 + 540, // 10 + 745, // 11 + 967, // 12 + 1230, // 13 + 1591, // 14 + 1957, // 15 + 2457, // 16 + 3046, // 17 + 3732, // 18 + 4526, // 19 + 5440, // 20 + 6482, // 21 + 7666, // 22 + 9003, // 23 + 10506, // 24 + 12187, // 25 + 14060, // 26 + 16140, // 27 + 18439, // 28 + 20974, // 29 + 23760, // 30 + 26811, // 31 + 30146, // 32 + 33780, // 33 + 37731, // 34 + 42017, // 35 + 46656, // 36 + 50653, // 37 + 55969, // 38 + 60505, // 39 + 66560, // 40 + 71677, // 41 + 78533, // 42 + 84277, // 43 + 91998, // 44 + 98415, // 45 + 107069, // 46 + 114205, // 47 + 123863, // 48 + 131766, // 49 + 142500, // 50 + 151222, // 51 + 163105, // 52 + 172697, // 53 + 185807, // 54 + 196322, // 55 + 210739, // 56 + 222231, // 57 + 238036, // 58 + 250562, // 59 + 267840, // 60 + 281456, // 61 + 300293, // 62 + 315059, // 63 + 335544, // 64 + 351520, // 65 + 373744, // 66 + 390991, // 67 + 415050, // 68 + 433631, // 69 + 459620, // 70 + 479600, // 71 + 507617, // 72 + 529063, // 73 + 559209, // 74 + 582187, // 75 + 614566, // 76 + 639146, // 77 + 673863, // 78 + 700115, // 79 + 737280, // 80 + 765275, // 81 + 804997, // 82 + 834809, // 83 + 877201, // 84 + 908905, // 85 + 954084, // 86 + 987754, // 87 + 1035837, // 88 + 1071552, // 89 + 1122660, // 90 + 1160499, // 91 + 1214753, // 92 + 1254796, // 93 + 1312322, // 94 + 1354652, // 95 + 1415577, // 96 + 1460276, // 97 + 1524731, // 98 + 1571884, // 99 + 1640000 // 100 + }, { // Medium Slow + 0, // 0 + 1, // 1 + 9, // 2 + 57, // 3 + 96, // 4 + 135, // 5 + 179, // 6 + 236, // 7 + 314, // 8 + 419, // 9 + 560, // 10 + 742, // 11 + 973, // 12 + 1261, // 13 + 1612, // 14 + 2035, // 15 + 2535, // 16 + 3120, // 17 + 3798, // 18 + 4575, // 19 + 5460, // 20 + 6458, // 21 + 7577, // 22 + 8825, // 23 + 10208, // 24 + 11735, // 25 + 13411, // 26 + 15244, // 27 + 17242, // 28 + 19411, // 29 + 21760, // 30 + 24294, // 31 + 27021, // 32 + 29949, // 33 + 33084, // 34 + 36435, // 35 + 40007, // 36 + 43808, // 37 + 47846, // 38 + 52127, // 39 + 56660, // 40 + 61450, // 41 + 66505, // 42 + 71833, // 43 + 77440, // 44 + 83335, // 45 + 89523, // 46 + 96012, // 47 + 102810, // 48 + 109923, // 49 + 117360, // 50 + 125126, // 51 + 133229, // 52 + 141677, // 53 + 150476, // 54 + 159635, // 55 + 169159, // 56 + 179056, // 57 + 189334, // 58 + 199999, // 59 + 211060, // 60 + 222522, // 61 + 234393, // 62 + 246681, // 63 + 259392, // 64 + 272535, // 65 + 286115, // 66 + 300140, // 67 + 314618, // 68 + 329555, // 69 + 344960, // 70 + 360838, // 71 + 377197, // 72 + 394045, // 73 + 411388, // 74 + 429235, // 75 + 447591, // 76 + 466464, // 77 + 485862, // 78 + 505791, // 79 + 526260, // 80 + 547274, // 81 + 568841, // 82 + 590969, // 83 + 613664, // 84 + 636935, // 85 + 660787, // 86 + 685228, // 87 + 710266, // 88 + 735907, // 89 + 762160, // 90 + 789030, // 91 + 816525, // 92 + 844653, // 93 + 873420, // 94 + 902835, // 95 + 932903, // 96 + 963632, // 97 + 995030, // 98 + 1027103, // 99 + 1059860 // 100 + }, { // Fast + 0, // 0 + 1, // 1 + 6, // 2 + 21, // 3 + 51, // 4 + 100, // 5 + 172, // 6 + 274, // 7 + 409, // 8 + 583, // 9 + 800, // 10 + 1064, // 11 + 1382, // 12 + 1757, // 13 + 2195, // 14 + 2700, // 15 + 3276, // 16 + 3930, // 17 + 4665, // 18 + 5487, // 19 + 6400, // 20 + 7408, // 21 + 8518, // 22 + 9733, // 23 + 11059, // 24 + 12500, // 25 + 14060, // 26 + 15746, // 27 + 17561, // 28 + 19511, // 29 + 21600, // 30 + 23832, // 31 + 26214, // 32 + 28749, // 33 + 31443, // 34 + 34300, // 35 + 37324, // 36 + 40522, // 37 + 43897, // 38 + 47455, // 39 + 51200, // 40 + 55136, // 41 + 59270, // 42 + 63605, // 43 + 68147, // 44 + 72900, // 45 + 77868, // 46 + 83058, // 47 + 88473, // 48 + 94119, // 49 + 100000, // 50 + 106120, // 51 + 112486, // 52 + 119101, // 53 + 125971, // 54 + 133100, // 55 + 140492, // 56 + 148154, // 57 + 156089, // 58 + 164303, // 59 + 172800, // 60 + 181584, // 61 + 190662, // 62 + 200037, // 63 + 209715, // 64 + 219700, // 65 + 229996, // 66 + 240610, // 67 + 251545, // 68 + 262807, // 69 + 274400, // 70 + 286328, // 71 + 298598, // 72 + 311213, // 73 + 324179, // 74 + 337500, // 75 + 351180, // 76 + 365226, // 77 + 379641, // 78 + 394431, // 79 + 409600, // 80 + 425152, // 81 + 441094, // 82 + 457429, // 83 + 474163, // 84 + 491300, // 85 + 508844, // 86 + 526802, // 87 + 545177, // 88 + 563975, // 89 + 583200, // 90 + 602856, // 91 + 622950, // 92 + 643485, // 93 + 664467, // 94 + 685900, // 95 + 707788, // 96 + 730138, // 97 + 752953, // 98 + 776239, // 99 + 800000 // 100 + }, { // Slow + 0, // 0 + 1, // 1 + 10, // 2 + 33, // 3 + 80, // 4 + 156, // 5 + 270, // 6 + 428, // 7 + 640, // 8 + 911, // 9 + 1250, // 10 + 1663, // 11 + 2160, // 12 + 2746, // 13 + 3430, // 14 + 4218, // 15 + 5120, // 16 + 6141, // 17 + 7290, // 18 + 8573, // 19 + 10000, // 20 + 11576, // 21 + 13310, // 22 + 15208, // 23 + 17280, // 24 + 19531, // 25 + 21970, // 26 + 24603, // 27 + 27440, // 28 + 30486, // 29 + 33750, // 30 + 37238, // 31 + 40960, // 32 + 44921, // 33 + 49130, // 34 + 53593, // 35 + 58320, // 36 + 63316, // 37 + 68590, // 38 + 74148, // 39 + 80000, // 40 + 86151, // 41 + 92610, // 42 + 99383, // 43 + 106480, // 44 + 113906, // 45 + 121670, // 46 + 129778, // 47 + 138240, // 48 + 147061, // 49 + 156250, // 50 + 165813, // 51 + 175760, // 52 + 186096, // 53 + 196830, // 54 + 207968, // 55 + 219520, // 56 + 231491, // 57 + 243890, // 58 + 256723, // 59 + 270000, // 60 + 283726, // 61 + 297910, // 62 + 312558, // 63 + 327680, // 64 + 343281, // 65 + 359370, // 66 + 375953, // 67 + 393040, // 68 + 410636, // 69 + 428750, // 70 + 447388, // 71 + 466560, // 72 + 486271, // 73 + 506530, // 74 + 527343, // 75 + 548720, // 76 + 570666, // 77 + 593190, // 78 + 616298, // 79 + 640000, // 80 + 664301, // 81 + 689210, // 82 + 714733, // 83 + 740880, // 84 + 767656, // 85 + 795070, // 86 + 823128, // 87 + 851840, // 88 + 881211, // 89 + 911250, // 90 + 941963, // 91 + 973360, // 92 + 1005446, // 93 + 1038230, // 94 + 1071718, // 95 + 1105920, // 96 + 1140841, // 97 + 1176490, // 98 + 1212873, // 99 + 1250000 // 100 + }, { // Medium Fast copy 2 (unused? to-do: investigate) + 0, // 0 + 1, // 1 + 8, // 2 + 27, // 3 + 64, // 4 + 125, // 5 + 216, // 6 + 343, // 7 + 512, // 8 + 729, // 9 + 1000, // 10 + 1331, // 11 + 1728, // 12 + 2197, // 13 + 2744, // 14 + 3375, // 15 + 4096, // 16 + 4913, // 17 + 5832, // 18 + 6859, // 19 + 8000, // 20 + 9261, // 21 + 10648, // 22 + 12167, // 23 + 13824, // 24 + 15625, // 25 + 17576, // 26 + 19683, // 27 + 21952, // 28 + 24389, // 29 + 27000, // 30 + 29791, // 31 + 32768, // 32 + 35937, // 33 + 39304, // 34 + 42875, // 35 + 46656, // 36 + 50653, // 37 + 54872, // 38 + 59319, // 39 + 64000, // 40 + 68921, // 41 + 74088, // 42 + 79507, // 43 + 85184, // 44 + 91125, // 45 + 97336, // 46 + 103823, // 47 + 110592, // 48 + 117649, // 49 + 125000, // 50 + 132651, // 51 + 140608, // 52 + 148877, // 53 + 157464, // 54 + 166375, // 55 + 175616, // 56 + 185193, // 57 + 195112, // 58 + 205379, // 59 + 216000, // 60 + 226981, // 61 + 238328, // 62 + 250047, // 63 + 262144, // 64 + 274625, // 65 + 287496, // 66 + 300763, // 67 + 314432, // 68 + 328509, // 69 + 343000, // 70 + 357911, // 71 + 373248, // 72 + 389017, // 73 + 405224, // 74 + 421875, // 75 + 438976, // 76 + 456533, // 77 + 474552, // 78 + 493039, // 79 + 512000, // 80 + 531441, // 81 + 551368, // 82 + 571787, // 83 + 592704, // 84 + 614125, // 85 + 636056, // 86 + 658503, // 87 + 681472, // 88 + 704969, // 89 + 729000, // 90 + 753571, // 91 + 778688, // 92 + 804357, // 93 + 830584, // 94 + 857375, // 95 + 884736, // 96 + 912673, // 97 + 941192, // 98 + 970299, // 99 + 1000000 // 100 + }, { // Medium Fast copy 3 (unused? to-do: investigate) + 0, // 0 + 1, // 1 + 8, // 2 + 27, // 3 + 64, // 4 + 125, // 5 + 216, // 6 + 343, // 7 + 512, // 8 + 729, // 9 + 1000, // 10 + 1331, // 11 + 1728, // 12 + 2197, // 13 + 2744, // 14 + 3375, // 15 + 4096, // 16 + 4913, // 17 + 5832, // 18 + 6859, // 19 + 8000, // 20 + 9261, // 21 + 10648, // 22 + 12167, // 23 + 13824, // 24 + 15625, // 25 + 17576, // 26 + 19683, // 27 + 21952, // 28 + 24389, // 29 + 27000, // 30 + 29791, // 31 + 32768, // 32 + 35937, // 33 + 39304, // 34 + 42875, // 35 + 46656, // 36 + 50653, // 37 + 54872, // 38 + 59319, // 39 + 64000, // 40 + 68921, // 41 + 74088, // 42 + 79507, // 43 + 85184, // 44 + 91125, // 45 + 97336, // 46 + 103823, // 47 + 110592, // 48 + 117649, // 49 + 125000, // 50 + 132651, // 51 + 140608, // 52 + 148877, // 53 + 157464, // 54 + 166375, // 55 + 175616, // 56 + 185193, // 57 + 195112, // 58 + 205379, // 59 + 216000, // 60 + 226981, // 61 + 238328, // 62 + 250047, // 63 + 262144, // 64 + 274625, // 65 + 287496, // 66 + 300763, // 67 + 314432, // 68 + 328509, // 69 + 343000, // 70 + 357911, // 71 + 373248, // 72 + 389017, // 73 + 405224, // 74 + 421875, // 75 + 438976, // 76 + 456533, // 77 + 474552, // 78 + 493039, // 79 + 512000, // 80 + 531441, // 81 + 551368, // 82 + 571787, // 83 + 592704, // 84 + 614125, // 85 + 636056, // 86 + 658503, // 87 + 681472, // 88 + 704969, // 89 + 729000, // 90 + 753571, // 91 + 778688, // 92 + 804357, // 93 + 830584, // 94 + 857375, // 95 + 884736, // 96 + 912673, // 97 + 941192, // 98 + 970299, // 99 + 1000000 // 100 + } +}; -- cgit v1.2.3 From 7325a0e0bfba773900a051bf802a16c16b4f3fd8 Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 14:55:28 -0400 Subject: Convert base stats to c objects --- data/base_stats.inc | 8635 --------------------------------------------------- data/pokemon.s | 3 - include/pokemon.h | 22 + src/pokemon_data.c | 7817 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 7839 insertions(+), 8638 deletions(-) delete mode 100644 data/base_stats.inc diff --git a/data/base_stats.inc b/data/base_stats.inc deleted file mode 100644 index 47128c8a6..000000000 --- a/data/base_stats.inc +++ /dev/null @@ -1,8635 +0,0 @@ - .align 2 -gBaseStats:: @ 81FEC18 -@ ?????????? - .fill 28, 1, 0 - -@ Bulbasaur - base_stats 45, 49, 49, 45, 65, 65 - .byte TYPE_GRASS - .byte TYPE_POISON - .byte 45 @ catch rate - .byte 64 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_GRASS - .byte ABILITY_OVERGROW - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Ivysaur - base_stats 60, 62, 63, 60, 80, 80 - .byte TYPE_GRASS - .byte TYPE_POISON - .byte 45 @ catch rate - .byte 141 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_GRASS - .byte ABILITY_OVERGROW - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Venusaur - base_stats 80, 82, 83, 80, 100, 100 - .byte TYPE_GRASS - .byte TYPE_POISON - .byte 45 @ catch rate - .byte 208 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_GRASS - .byte ABILITY_OVERGROW - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Charmander - base_stats 39, 52, 43, 65, 60, 50 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 45 @ catch rate - .byte 65 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_DRAGON - .byte ABILITY_BLAZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Charmeleon - base_stats 58, 64, 58, 80, 80, 65 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 45 @ catch rate - .byte 142 @ base exp. yield - ev_yield 0, 0, 0, 1, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_DRAGON - .byte ABILITY_BLAZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Charizard - base_stats 78, 84, 78, 100, 109, 85 - .byte TYPE_FIRE - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 209 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_DRAGON - .byte ABILITY_BLAZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Squirtle - base_stats 44, 48, 65, 43, 50, 64 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 66 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_TORRENT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Wartortle - base_stats 59, 63, 80, 58, 65, 80 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 143 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_TORRENT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Blastoise - base_stats 79, 83, 100, 78, 85, 105 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 210 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 3 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_TORRENT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Caterpie - base_stats 45, 30, 35, 45, 20, 20 - .byte TYPE_BUG - .byte TYPE_BUG - .byte 255 @ catch rate - .byte 53 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SHIELD_DUST - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Metapod - base_stats 50, 20, 55, 30, 25, 25 - .byte TYPE_BUG - .byte TYPE_BUG - .byte 120 @ catch rate - .byte 72 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SHED_SKIN - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Butterfree - base_stats 60, 45, 50, 70, 80, 80 - .byte TYPE_BUG - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 160 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 1 - .2byte ITEM_NONE - .2byte ITEM_SILVER_POWDER - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_COMPOUND_EYES - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Weedle - base_stats 40, 35, 30, 50, 20, 20 - .byte TYPE_BUG - .byte TYPE_POISON - .byte 255 @ catch rate - .byte 52 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SHIELD_DUST - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Kakuna - base_stats 45, 25, 50, 35, 25, 25 - .byte TYPE_BUG - .byte TYPE_POISON - .byte 120 @ catch rate - .byte 71 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SHED_SKIN - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Beedrill - base_stats 65, 80, 40, 75, 45, 80 - .byte TYPE_BUG - .byte TYPE_POISON - .byte 45 @ catch rate - .byte 159 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_POISON_BARB - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SWARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Pidgey - base_stats 40, 45, 40, 56, 35, 35 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 255 @ catch rate - .byte 55 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_KEEN_EYE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Pidgeotto - base_stats 63, 60, 55, 71, 50, 50 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 120 @ catch rate - .byte 113 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_KEEN_EYE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Pidgeot - base_stats 83, 80, 75, 91, 70, 70 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 172 @ base exp. yield - ev_yield 0, 0, 0, 3, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_KEEN_EYE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Rattata - base_stats 30, 56, 35, 72, 25, 35 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 255 @ catch rate - .byte 57 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_RUN_AWAY - .byte ABILITY_GUTS - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Raticate - base_stats 55, 81, 60, 97, 50, 70 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 127 @ catch rate - .byte 116 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_RUN_AWAY - .byte ABILITY_GUTS - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Spearow - base_stats 40, 60, 30, 70, 31, 31 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 255 @ catch rate - .byte 58 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_KEEN_EYE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Fearow - base_stats 65, 90, 65, 100, 61, 61 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 90 @ catch rate - .byte 162 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_SHARP_BEAK - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_KEEN_EYE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Ekans - base_stats 35, 60, 44, 55, 40, 54 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 255 @ catch rate - .byte 62 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_DRAGON - .byte ABILITY_INTIMIDATE - .byte ABILITY_SHED_SKIN - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Arbok - base_stats 60, 85, 69, 80, 65, 79 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 90 @ catch rate - .byte 147 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_DRAGON - .byte ABILITY_INTIMIDATE - .byte ABILITY_SHED_SKIN - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Pikachu - base_stats 35, 55, 30, 90, 50, 40 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 190 @ catch rate - .byte 82 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_ORAN_BERRY - .2byte ITEM_LIGHT_BALL - .byte 127 @ gender - .byte 10 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FAIRY - .byte ABILITY_STATIC - .byte ABILITY_NONE - .byte 6 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Raichu - base_stats 60, 90, 55, 100, 90, 80 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 75 @ catch rate - .byte 122 @ base exp. yield - ev_yield 0, 0, 0, 3, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_ORAN_BERRY - .byte 127 @ gender - .byte 10 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FAIRY - .byte ABILITY_STATIC - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Sandshrew - base_stats 50, 75, 85, 40, 20, 30 - .byte TYPE_GROUND - .byte TYPE_GROUND - .byte 255 @ catch rate - .byte 93 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_QUICK_CLAW - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_SAND_VEIL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Sandslash - base_stats 75, 100, 110, 65, 45, 55 - .byte TYPE_GROUND - .byte TYPE_GROUND - .byte 90 @ catch rate - .byte 163 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_QUICK_CLAW - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_SAND_VEIL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Nidoran♀ - base_stats 55, 47, 52, 41, 40, 40 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 235 @ catch rate - .byte 59 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 254 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_POISON_POINT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Nidorina - base_stats 70, 62, 67, 56, 55, 55 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 120 @ catch rate - .byte 117 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 254 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_POISON_POINT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Nidoqueen - base_stats 90, 82, 87, 76, 75, 85 - .byte TYPE_POISON - .byte TYPE_GROUND - .byte 45 @ catch rate - .byte 194 @ base exp. yield - ev_yield 3, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 254 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_POISON_POINT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Nidoran♂ - base_stats 46, 57, 40, 50, 40, 40 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 235 @ catch rate - .byte 60 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 0 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_POISON_POINT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Nidorino - base_stats 61, 72, 57, 65, 55, 55 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 120 @ catch rate - .byte 118 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 0 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_POISON_POINT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Nidoking - base_stats 81, 92, 77, 85, 85, 75 - .byte TYPE_POISON - .byte TYPE_GROUND - .byte 45 @ catch rate - .byte 195 @ base exp. yield - ev_yield 0, 3, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 0 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_POISON_POINT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Clefairy - base_stats 70, 45, 48, 35, 60, 65 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 150 @ catch rate - .byte 68 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_LEPPA_BERRY - .2byte ITEM_MOON_STONE - .byte 191 @ gender - .byte 10 @ egg cycles - .byte 140 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_FAIRY - .byte ABILITY_CUTE_CHARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Clefable - base_stats 95, 70, 73, 60, 85, 90 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 25 @ catch rate - .byte 129 @ base exp. yield - ev_yield 3, 0, 0, 0, 0, 0 - .2byte ITEM_LEPPA_BERRY - .2byte ITEM_MOON_STONE - .byte 191 @ gender - .byte 10 @ egg cycles - .byte 140 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_FAIRY - .byte ABILITY_CUTE_CHARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Vulpix - base_stats 38, 41, 40, 65, 50, 65 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 190 @ catch rate - .byte 63 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_RAWST_BERRY - .2byte ITEM_RAWST_BERRY - .byte 191 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_FLASH_FIRE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Ninetales - base_stats 73, 76, 75, 100, 81, 100 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 75 @ catch rate - .byte 178 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 1 - .2byte ITEM_RAWST_BERRY - .2byte ITEM_RAWST_BERRY - .byte 191 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_FLASH_FIRE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Jigglypuff - base_stats 115, 45, 20, 20, 45, 25 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 170 @ catch rate - .byte 76 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 191 @ gender - .byte 10 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_FAIRY - .byte ABILITY_CUTE_CHARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Wigglytuff - base_stats 140, 70, 45, 45, 75, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 50 @ catch rate - .byte 109 @ base exp. yield - ev_yield 3, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 191 @ gender - .byte 10 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_FAIRY - .byte ABILITY_CUTE_CHARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Zubat - base_stats 40, 45, 35, 55, 30, 40 - .byte TYPE_POISON - .byte TYPE_FLYING - .byte 255 @ catch rate - .byte 54 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_INNER_FOCUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Golbat - base_stats 75, 80, 70, 90, 65, 75 - .byte TYPE_POISON - .byte TYPE_FLYING - .byte 90 @ catch rate - .byte 171 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_INNER_FOCUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Oddish - base_stats 45, 50, 55, 30, 75, 65 - .byte TYPE_GRASS - .byte TYPE_POISON - .byte 255 @ catch rate - .byte 78 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 4 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Gloom - base_stats 60, 65, 70, 40, 85, 75 - .byte TYPE_GRASS - .byte TYPE_POISON - .byte 120 @ catch rate - .byte 132 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 6 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Vileplume - base_stats 75, 80, 85, 50, 100, 90 - .byte TYPE_GRASS - .byte TYPE_POISON - .byte 45 @ catch rate - .byte 184 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Paras - base_stats 35, 70, 55, 25, 45, 55 - .byte TYPE_BUG - .byte TYPE_GRASS - .byte 190 @ catch rate - .byte 70 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_TINY_MUSHROOM - .2byte ITEM_BIG_MUSHROOM - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_GRASS - .byte ABILITY_EFFECT_SPORE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Parasect - base_stats 60, 95, 80, 30, 60, 80 - .byte TYPE_BUG - .byte TYPE_GRASS - .byte 75 @ catch rate - .byte 128 @ base exp. yield - ev_yield 0, 2, 1, 0, 0, 0 - .2byte ITEM_TINY_MUSHROOM - .2byte ITEM_BIG_MUSHROOM - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_GRASS - .byte ABILITY_EFFECT_SPORE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Venonat - base_stats 60, 55, 50, 45, 40, 55 - .byte TYPE_BUG - .byte TYPE_POISON - .byte 190 @ catch rate - .byte 75 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_COMPOUND_EYES - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Venomoth - base_stats 70, 65, 60, 90, 90, 75 - .byte TYPE_BUG - .byte TYPE_POISON - .byte 75 @ catch rate - .byte 138 @ base exp. yield - ev_yield 0, 0, 0, 1, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SHIELD_DUST - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Diglett - base_stats 10, 55, 25, 95, 35, 45 - .byte TYPE_GROUND - .byte TYPE_GROUND - .byte 255 @ catch rate - .byte 81 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_SAND_VEIL - .byte ABILITY_ARENA_TRAP - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Dugtrio - base_stats 35, 80, 50, 120, 50, 70 - .byte TYPE_GROUND - .byte TYPE_GROUND - .byte 50 @ catch rate - .byte 153 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_SAND_VEIL - .byte ABILITY_ARENA_TRAP - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Meowth - base_stats 40, 45, 35, 90, 40, 40 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 255 @ catch rate - .byte 69 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_PICKUP - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Persian - base_stats 65, 70, 60, 115, 65, 65 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 90 @ catch rate - .byte 148 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_LIMBER - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Psyduck - base_stats 50, 52, 48, 55, 65, 50 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 190 @ catch rate - .byte 80 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FIELD - .byte ABILITY_DAMP - .byte ABILITY_CLOUD_NINE - .byte 6 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Golduck - base_stats 80, 82, 78, 85, 95, 80 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 75 @ catch rate - .byte 174 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FIELD - .byte ABILITY_DAMP - .byte ABILITY_CLOUD_NINE - .byte 8 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Mankey - base_stats 40, 80, 35, 70, 35, 45 - .byte TYPE_FIGHTING - .byte TYPE_FIGHTING - .byte 190 @ catch rate - .byte 74 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_VITAL_SPIRIT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Primeape - base_stats 65, 105, 60, 95, 60, 70 - .byte TYPE_FIGHTING - .byte TYPE_FIGHTING - .byte 75 @ catch rate - .byte 149 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_VITAL_SPIRIT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Growlithe - base_stats 55, 70, 45, 60, 70, 50 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 190 @ catch rate - .byte 91 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_RAWST_BERRY - .2byte ITEM_RAWST_BERRY - .byte 63 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_INTIMIDATE - .byte ABILITY_FLASH_FIRE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Arcanine - base_stats 90, 110, 80, 95, 100, 80 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 75 @ catch rate - .byte 213 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_RAWST_BERRY - .2byte ITEM_RAWST_BERRY - .byte 63 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_INTIMIDATE - .byte ABILITY_FLASH_FIRE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Poliwag - base_stats 40, 50, 40, 90, 40, 40 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 255 @ catch rate - .byte 77 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_1 - .byte ABILITY_WATER_ABSORB - .byte ABILITY_DAMP - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Poliwhirl - base_stats 65, 65, 65, 90, 50, 50 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 120 @ catch rate - .byte 131 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_KINGS_ROCK - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_1 - .byte ABILITY_WATER_ABSORB - .byte ABILITY_DAMP - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Poliwrath - base_stats 90, 85, 95, 70, 70, 90 - .byte TYPE_WATER - .byte TYPE_FIGHTING - .byte 45 @ catch rate - .byte 185 @ base exp. yield - ev_yield 0, 0, 3, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_KINGS_ROCK - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_1 - .byte ABILITY_WATER_ABSORB - .byte ABILITY_DAMP - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Abra - base_stats 25, 20, 15, 90, 105, 55 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 200 @ catch rate - .byte 73 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_TWISTED_SPOON - .byte 63 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_SYNCHRONIZE - .byte ABILITY_INNER_FOCUS - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Kadabra - base_stats 40, 35, 30, 105, 120, 70 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 100 @ catch rate - .byte 145 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_TWISTED_SPOON - .byte 63 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_SYNCHRONIZE - .byte ABILITY_INNER_FOCUS - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Alakazam - base_stats 55, 50, 45, 120, 135, 85 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 50 @ catch rate - .byte 186 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_TWISTED_SPOON - .byte 63 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_SYNCHRONIZE - .byte ABILITY_INNER_FOCUS - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Machop - base_stats 70, 80, 50, 35, 35, 35 - .byte TYPE_FIGHTING - .byte TYPE_FIGHTING - .byte 180 @ catch rate - .byte 88 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 63 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_GUTS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Machoke - base_stats 80, 100, 70, 45, 50, 60 - .byte TYPE_FIGHTING - .byte TYPE_FIGHTING - .byte 90 @ catch rate - .byte 146 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 63 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_GUTS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Machamp - base_stats 90, 130, 80, 55, 65, 85 - .byte TYPE_FIGHTING - .byte TYPE_FIGHTING - .byte 45 @ catch rate - .byte 193 @ base exp. yield - ev_yield 0, 3, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 63 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_GUTS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Bellsprout - base_stats 50, 75, 35, 40, 70, 30 - .byte TYPE_GRASS - .byte TYPE_POISON - .byte 255 @ catch rate - .byte 84 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Weepinbell - base_stats 65, 90, 50, 55, 85, 45 - .byte TYPE_GRASS - .byte TYPE_POISON - .byte 120 @ catch rate - .byte 151 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Victreebel - base_stats 80, 105, 65, 70, 100, 60 - .byte TYPE_GRASS - .byte TYPE_POISON - .byte 45 @ catch rate - .byte 191 @ base exp. yield - ev_yield 0, 3, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Tentacool - base_stats 40, 40, 35, 70, 50, 100 - .byte TYPE_WATER - .byte TYPE_POISON - .byte 190 @ catch rate - .byte 105 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_CLEAR_BODY - .byte ABILITY_LIQUID_OOZE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Tentacruel - base_stats 80, 70, 65, 100, 80, 120 - .byte TYPE_WATER - .byte TYPE_POISON - .byte 60 @ catch rate - .byte 205 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_CLEAR_BODY - .byte ABILITY_LIQUID_OOZE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Geodude - base_stats 40, 80, 100, 20, 30, 30 - .byte TYPE_ROCK - .byte TYPE_GROUND - .byte 255 @ catch rate - .byte 86 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_EVERSTONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_ROCK_HEAD - .byte ABILITY_STURDY - .byte 4 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Graveler - base_stats 55, 95, 115, 35, 45, 45 - .byte TYPE_ROCK - .byte TYPE_GROUND - .byte 120 @ catch rate - .byte 134 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_EVERSTONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_ROCK_HEAD - .byte ABILITY_STURDY - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Golem - base_stats 80, 110, 130, 45, 55, 65 - .byte TYPE_ROCK - .byte TYPE_GROUND - .byte 45 @ catch rate - .byte 177 @ base exp. yield - ev_yield 0, 0, 3, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_EVERSTONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_ROCK_HEAD - .byte ABILITY_STURDY - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Ponyta - base_stats 50, 85, 55, 90, 65, 65 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 190 @ catch rate - .byte 152 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_RUN_AWAY - .byte ABILITY_FLASH_FIRE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Rapidash - base_stats 65, 100, 70, 105, 80, 80 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 60 @ catch rate - .byte 192 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_RUN_AWAY - .byte ABILITY_FLASH_FIRE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Slowpoke - base_stats 90, 65, 65, 15, 40, 40 - .byte TYPE_WATER - .byte TYPE_PSYCHIC - .byte 190 @ catch rate - .byte 99 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_KINGS_ROCK - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_OBLIVIOUS - .byte ABILITY_OWN_TEMPO - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Slowbro - base_stats 95, 75, 110, 30, 100, 80 - .byte TYPE_WATER - .byte TYPE_PSYCHIC - .byte 75 @ catch rate - .byte 164 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_KINGS_ROCK - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_OBLIVIOUS - .byte ABILITY_OWN_TEMPO - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Magnemite - base_stats 25, 35, 70, 45, 95, 55 - .byte TYPE_ELECTRIC - .byte TYPE_STEEL - .byte 190 @ catch rate - .byte 89 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_METAL_COAT - .byte 255 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_MAGNET_PULL - .byte ABILITY_STURDY - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Magneton - base_stats 50, 60, 95, 70, 120, 70 - .byte TYPE_ELECTRIC - .byte TYPE_STEEL - .byte 60 @ catch rate - .byte 161 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_METAL_COAT - .byte 255 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_MAGNET_PULL - .byte ABILITY_STURDY - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Farfetch'd - base_stats 52, 65, 55, 60, 58, 62 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 94 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_STICK - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FIELD - .byte ABILITY_KEEN_EYE - .byte ABILITY_INNER_FOCUS - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Doduo - base_stats 35, 85, 45, 75, 35, 35 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 190 @ catch rate - .byte 96 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_SHARP_BEAK - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_RUN_AWAY - .byte ABILITY_EARLY_BIRD - .byte 8 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Dodrio - base_stats 60, 110, 70, 100, 60, 60 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 158 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_SHARP_BEAK - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_RUN_AWAY - .byte ABILITY_EARLY_BIRD - .byte 10 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Seel - base_stats 65, 45, 55, 45, 45, 70 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 190 @ catch rate - .byte 100 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FIELD - .byte ABILITY_THICK_FAT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Dewgong - base_stats 90, 70, 80, 70, 70, 95 - .byte TYPE_WATER - .byte TYPE_ICE - .byte 75 @ catch rate - .byte 176 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FIELD - .byte ABILITY_THICK_FAT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Grimer - base_stats 80, 80, 50, 25, 40, 50 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 190 @ catch rate - .byte 90 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NUGGET - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_STENCH - .byte ABILITY_STICKY_HOLD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Muk - base_stats 105, 105, 75, 50, 65, 100 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 75 @ catch rate - .byte 157 @ base exp. yield - ev_yield 1, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NUGGET - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_STENCH - .byte ABILITY_STICKY_HOLD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Shellder - base_stats 30, 65, 100, 40, 45, 25 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 190 @ catch rate - .byte 97 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_PEARL - .2byte ITEM_BIG_PEARL - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_SHELL_ARMOR - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Cloyster - base_stats 50, 95, 180, 70, 85, 45 - .byte TYPE_WATER - .byte TYPE_ICE - .byte 60 @ catch rate - .byte 203 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_PEARL - .2byte ITEM_BIG_PEARL - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_SHELL_ARMOR - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Gastly - base_stats 30, 35, 30, 80, 100, 35 - .byte TYPE_GHOST - .byte TYPE_POISON - .byte 190 @ catch rate - .byte 95 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Haunter - base_stats 45, 50, 45, 95, 115, 55 - .byte TYPE_GHOST - .byte TYPE_POISON - .byte 90 @ catch rate - .byte 126 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Gengar - base_stats 60, 65, 60, 110, 130, 75 - .byte TYPE_GHOST - .byte TYPE_POISON - .byte 45 @ catch rate - .byte 190 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Onix - base_stats 35, 45, 160, 70, 30, 45 - .byte TYPE_ROCK - .byte TYPE_GROUND - .byte 45 @ catch rate - .byte 108 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_ROCK_HEAD - .byte ABILITY_STURDY - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Drowzee - base_stats 60, 48, 45, 42, 43, 90 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 190 @ catch rate - .byte 102 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_INSOMNIA - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Hypno - base_stats 85, 73, 70, 67, 73, 115 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 75 @ catch rate - .byte 165 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_INSOMNIA - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Krabby - base_stats 30, 105, 90, 50, 25, 25 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 225 @ catch rate - .byte 115 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_HYPER_CUTTER - .byte ABILITY_SHELL_ARMOR - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Kingler - base_stats 55, 130, 115, 75, 50, 50 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 60 @ catch rate - .byte 206 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_HYPER_CUTTER - .byte ABILITY_SHELL_ARMOR - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_RED - .2byte 0 @ padding - -@ Voltorb - base_stats 40, 30, 50, 100, 55, 55 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 190 @ catch rate - .byte 103 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_SOUNDPROOF - .byte ABILITY_STATIC - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Electrode - base_stats 60, 50, 70, 140, 80, 80 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 60 @ catch rate - .byte 150 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_SOUNDPROOF - .byte ABILITY_STATIC - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Exeggcute - base_stats 60, 40, 80, 40, 60, 45 - .byte TYPE_GRASS - .byte TYPE_PSYCHIC - .byte 90 @ catch rate - .byte 98 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Exeggutor - base_stats 95, 95, 85, 55, 125, 65 - .byte TYPE_GRASS - .byte TYPE_PSYCHIC - .byte 45 @ catch rate - .byte 212 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Cubone - base_stats 50, 50, 95, 35, 40, 50 - .byte TYPE_GROUND - .byte TYPE_GROUND - .byte 190 @ catch rate - .byte 87 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_THICK_CLUB - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_MONSTER - .byte ABILITY_ROCK_HEAD - .byte ABILITY_LIGHTNING_ROD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Marowak - base_stats 60, 80, 110, 45, 50, 80 - .byte TYPE_GROUND - .byte TYPE_GROUND - .byte 75 @ catch rate - .byte 124 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_THICK_CLUB - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_MONSTER - .byte ABILITY_ROCK_HEAD - .byte ABILITY_LIGHTNING_ROD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Hitmonlee - base_stats 50, 120, 53, 87, 35, 110 - .byte TYPE_FIGHTING - .byte TYPE_FIGHTING - .byte 45 @ catch rate - .byte 139 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 0 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_LIMBER - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Hitmonchan - base_stats 50, 105, 79, 76, 35, 110 - .byte TYPE_FIGHTING - .byte TYPE_FIGHTING - .byte 45 @ catch rate - .byte 140 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 0 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_KEEN_EYE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Lickitung - base_stats 90, 55, 75, 30, 60, 75 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 127 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_MONSTER - .byte ABILITY_OWN_TEMPO - .byte ABILITY_OBLIVIOUS - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Koffing - base_stats 40, 65, 95, 35, 60, 45 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 190 @ catch rate - .byte 114 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_SMOKE_BALL - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Weezing - base_stats 65, 90, 120, 60, 85, 70 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 60 @ catch rate - .byte 173 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_SMOKE_BALL - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Rhyhorn - base_stats 80, 85, 95, 25, 30, 30 - .byte TYPE_GROUND - .byte TYPE_ROCK - .byte 120 @ catch rate - .byte 135 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_LIGHTNING_ROD - .byte ABILITY_ROCK_HEAD - .byte 4 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Rhydon - base_stats 105, 130, 120, 40, 45, 45 - .byte TYPE_GROUND - .byte TYPE_ROCK - .byte 60 @ catch rate - .byte 204 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_LIGHTNING_ROD - .byte ABILITY_ROCK_HEAD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Chansey - base_stats 250, 5, 5, 50, 35, 105 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 30 @ catch rate - .byte 255 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_LUCKY_EGG - .byte 254 @ gender - .byte 40 @ egg cycles - .byte 140 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_FAIRY - .byte ABILITY_NATURAL_CURE - .byte ABILITY_SERENE_GRACE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Tangela - base_stats 65, 55, 115, 60, 100, 40 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 166 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Kangaskhan - base_stats 105, 95, 80, 90, 40, 80 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 175 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 254 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_MONSTER - .byte ABILITY_EARLY_BIRD - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Horsea - base_stats 30, 40, 70, 60, 70, 25 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 225 @ catch rate - .byte 83 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_DRAGON_SCALE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_DRAGON - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Seadra - base_stats 55, 65, 95, 85, 95, 45 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 75 @ catch rate - .byte 155 @ base exp. yield - ev_yield 0, 0, 1, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_DRAGON_SCALE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_DRAGON - .byte ABILITY_POISON_POINT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Goldeen - base_stats 45, 67, 60, 63, 35, 50 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 225 @ catch rate - .byte 111 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_WATER_VEIL - .byte 4 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Seaking - base_stats 80, 92, 65, 68, 65, 80 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 60 @ catch rate - .byte 170 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_WATER_VEIL - .byte 6 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Staryu - base_stats 30, 45, 55, 85, 70, 55 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 225 @ catch rate - .byte 106 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_STARDUST - .2byte ITEM_STAR_PIECE - .byte 255 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_ILLUMINATE - .byte ABILITY_NATURAL_CURE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Starmie - base_stats 60, 75, 85, 115, 100, 85 - .byte TYPE_WATER - .byte TYPE_PSYCHIC - .byte 60 @ catch rate - .byte 207 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_STARDUST - .2byte ITEM_STAR_PIECE - .byte 255 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_ILLUMINATE - .byte ABILITY_NATURAL_CURE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Mr. mime - base_stats 40, 45, 65, 90, 100, 120 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 45 @ catch rate - .byte 136 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_LEPPA_BERRY - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_SOUNDPROOF - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Scyther - base_stats 70, 110, 80, 105, 55, 80 - .byte TYPE_BUG - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 187 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SWARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Jynx - base_stats 65, 50, 35, 95, 115, 95 - .byte TYPE_ICE - .byte TYPE_PSYCHIC - .byte 45 @ catch rate - .byte 137 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_ASPEAR_BERRY - .2byte ITEM_ASPEAR_BERRY - .byte 254 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_OBLIVIOUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Electabuzz - base_stats 65, 83, 57, 105, 95, 85 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 45 @ catch rate - .byte 156 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 63 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_STATIC - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Magmar - base_stats 65, 95, 57, 93, 100, 85 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 45 @ catch rate - .byte 167 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_RAWST_BERRY - .2byte ITEM_RAWST_BERRY - .byte 63 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_FLAME_BODY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Pinsir - base_stats 65, 125, 100, 85, 55, 70 - .byte TYPE_BUG - .byte TYPE_BUG - .byte 45 @ catch rate - .byte 200 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_HYPER_CUTTER - .byte ABILITY_NONE - .byte 8 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Tauros - base_stats 75, 100, 95, 110, 40, 70 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 211 @ base exp. yield - ev_yield 0, 1, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 0 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_INTIMIDATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Magikarp - base_stats 20, 10, 55, 80, 15, 20 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 255 @ catch rate - .byte 20 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 5 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_DRAGON - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_NONE - .byte 4 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Gyarados - base_stats 95, 125, 79, 81, 60, 100 - .byte TYPE_WATER - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 214 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 5 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_DRAGON - .byte ABILITY_INTIMIDATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Lapras - base_stats 130, 85, 80, 60, 85, 95 - .byte TYPE_WATER - .byte TYPE_ICE - .byte 45 @ catch rate - .byte 219 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_WATER_ABSORB - .byte ABILITY_SHELL_ARMOR - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Ditto - base_stats 48, 48, 48, 48, 48, 48 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 35 @ catch rate - .byte 61 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_METAL_POWDER - .byte 255 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_DITTO - .byte EGG_GROUP_DITTO - .byte ABILITY_LIMBER - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Eevee - base_stats 55, 55, 50, 55, 45, 65 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 92 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 35 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_RUN_AWAY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Vaporeon - base_stats 130, 65, 60, 65, 110, 95 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 196 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 35 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_WATER_ABSORB - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Jolteon - base_stats 65, 65, 60, 130, 110, 95 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 45 @ catch rate - .byte 197 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 35 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_VOLT_ABSORB - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Flareon - base_stats 65, 130, 60, 65, 95, 110 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 45 @ catch rate - .byte 198 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 35 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_FLASH_FIRE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Porygon - base_stats 65, 60, 70, 40, 85, 75 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 130 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_TRACE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Omanyte - base_stats 35, 40, 100, 35, 90, 55 - .byte TYPE_ROCK - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 120 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 30 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_SHELL_ARMOR - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Omastar - base_stats 70, 60, 125, 55, 115, 70 - .byte TYPE_ROCK - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 199 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 30 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_SHELL_ARMOR - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Kabuto - base_stats 30, 80, 90, 55, 55, 45 - .byte TYPE_ROCK - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 119 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 30 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_BATTLE_ARMOR - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Kabutops - base_stats 60, 115, 105, 80, 65, 70 - .byte TYPE_ROCK - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 201 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 30 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_BATTLE_ARMOR - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Aerodactyl - base_stats 80, 105, 65, 130, 60, 75 - .byte TYPE_ROCK - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 202 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 35 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_ROCK_HEAD - .byte ABILITY_PRESSURE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Snorlax - base_stats 160, 110, 65, 30, 65, 110 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 25 @ catch rate - .byte 154 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_LEFTOVERS - .2byte ITEM_LEFTOVERS - .byte 31 @ gender - .byte 40 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_MONSTER - .byte ABILITY_IMMUNITY - .byte ABILITY_THICK_FAT - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Articuno - base_stats 90, 85, 100, 85, 95, 125 - .byte TYPE_ICE - .byte TYPE_FLYING - .byte 3 @ catch rate - .byte 215 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 3 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 80 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Zapdos - base_stats 90, 90, 85, 100, 125, 90 - .byte TYPE_ELECTRIC - .byte TYPE_FLYING - .byte 3 @ catch rate - .byte 216 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 80 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Moltres - base_stats 90, 100, 90, 90, 125, 85 - .byte TYPE_FIRE - .byte TYPE_FLYING - .byte 3 @ catch rate - .byte 217 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 80 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Dratini - base_stats 41, 64, 45, 50, 50, 50 - .byte TYPE_DRAGON - .byte TYPE_DRAGON - .byte 45 @ catch rate - .byte 67 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_DRAGON_SCALE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_DRAGON - .byte ABILITY_SHED_SKIN - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Dragonair - base_stats 61, 84, 65, 70, 70, 70 - .byte TYPE_DRAGON - .byte TYPE_DRAGON - .byte 45 @ catch rate - .byte 144 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_DRAGON_SCALE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_DRAGON - .byte ABILITY_SHED_SKIN - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Dragonite - base_stats 91, 134, 95, 80, 100, 100 - .byte TYPE_DRAGON - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 218 @ base exp. yield - ev_yield 0, 3, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_DRAGON_SCALE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_DRAGON - .byte ABILITY_INNER_FOCUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Mewtwo - base_stats 106, 110, 90, 130, 154, 90 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 3 @ catch rate - .byte 220 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Mew - base_stats 100, 100, 100, 100, 100, 100 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 45 @ catch rate - .byte 64 @ base exp. yield - ev_yield 3, 0, 0, 0, 0, 0 - .2byte ITEM_LUM_BERRY - .2byte ITEM_LUM_BERRY - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 100 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_SYNCHRONIZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Chikorita - base_stats 45, 49, 65, 45, 49, 65 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 64 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_GRASS - .byte ABILITY_OVERGROW - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Bayleef - base_stats 60, 62, 80, 60, 63, 80 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 141 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_GRASS - .byte ABILITY_OVERGROW - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Meganium - base_stats 80, 82, 100, 80, 83, 100 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 208 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_GRASS - .byte ABILITY_OVERGROW - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Cyndaquil - base_stats 39, 52, 43, 65, 60, 50 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 45 @ catch rate - .byte 65 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_BLAZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Quilava - base_stats 58, 64, 58, 80, 80, 65 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 45 @ catch rate - .byte 142 @ base exp. yield - ev_yield 0, 0, 0, 1, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_BLAZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Typhlosion - base_stats 78, 84, 78, 100, 109, 85 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 45 @ catch rate - .byte 209 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_BLAZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Totodile - base_stats 50, 65, 64, 43, 44, 48 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 66 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_TORRENT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Croconaw - base_stats 65, 80, 80, 58, 59, 63 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 143 @ base exp. yield - ev_yield 0, 1, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_TORRENT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Feraligatr - base_stats 85, 105, 100, 78, 79, 83 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 210 @ base exp. yield - ev_yield 0, 2, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_TORRENT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Sentret - base_stats 35, 46, 34, 20, 35, 45 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 255 @ catch rate - .byte 57 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_ORAN_BERRY - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_RUN_AWAY - .byte ABILITY_KEEN_EYE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Furret - base_stats 85, 76, 64, 90, 45, 55 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 90 @ catch rate - .byte 116 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_ORAN_BERRY - .2byte ITEM_SITRUS_BERRY - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_RUN_AWAY - .byte ABILITY_KEEN_EYE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Hoothoot - base_stats 60, 30, 30, 50, 36, 56 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 255 @ catch rate - .byte 58 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_INSOMNIA - .byte ABILITY_KEEN_EYE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Noctowl - base_stats 100, 50, 50, 70, 76, 96 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 90 @ catch rate - .byte 162 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_INSOMNIA - .byte ABILITY_KEEN_EYE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Ledyba - base_stats 40, 20, 30, 55, 40, 80 - .byte TYPE_BUG - .byte TYPE_FLYING - .byte 255 @ catch rate - .byte 54 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SWARM - .byte ABILITY_EARLY_BIRD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Ledian - base_stats 55, 35, 50, 85, 55, 110 - .byte TYPE_BUG - .byte TYPE_FLYING - .byte 90 @ catch rate - .byte 134 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SWARM - .byte ABILITY_EARLY_BIRD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Spinarak - base_stats 40, 60, 40, 30, 40, 40 - .byte TYPE_BUG - .byte TYPE_POISON - .byte 255 @ catch rate - .byte 54 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SWARM - .byte ABILITY_INSOMNIA - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Ariados - base_stats 70, 90, 70, 40, 60, 60 - .byte TYPE_BUG - .byte TYPE_POISON - .byte 90 @ catch rate - .byte 134 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SWARM - .byte ABILITY_INSOMNIA - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Crobat - base_stats 85, 90, 80, 130, 70, 80 - .byte TYPE_POISON - .byte TYPE_FLYING - .byte 90 @ catch rate - .byte 204 @ base exp. yield - ev_yield 0, 0, 0, 3, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_INNER_FOCUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Chinchou - base_stats 75, 38, 38, 67, 56, 56 - .byte TYPE_WATER - .byte TYPE_ELECTRIC - .byte 190 @ catch rate - .byte 90 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_YELLOW_SHARD - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_VOLT_ABSORB - .byte ABILITY_ILLUMINATE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Lanturn - base_stats 125, 58, 58, 67, 76, 76 - .byte TYPE_WATER - .byte TYPE_ELECTRIC - .byte 75 @ catch rate - .byte 156 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_YELLOW_SHARD - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_VOLT_ABSORB - .byte ABILITY_ILLUMINATE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Pichu - base_stats 20, 40, 15, 60, 35, 35 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 190 @ catch rate - .byte 42 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_ORAN_BERRY - .byte 127 @ gender - .byte 10 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_STATIC - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Cleffa - base_stats 50, 25, 28, 15, 45, 55 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 150 @ catch rate - .byte 37 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_LEPPA_BERRY - .2byte ITEM_MOON_STONE - .byte 191 @ gender - .byte 10 @ egg cycles - .byte 140 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_CUTE_CHARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Igglybuff - base_stats 90, 30, 15, 15, 40, 20 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 170 @ catch rate - .byte 39 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 191 @ gender - .byte 10 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_CUTE_CHARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_PINK - .2byte 0 @ padding - -@ Togepi - base_stats 35, 20, 65, 20, 40, 65 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 190 @ catch rate - .byte 74 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 10 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_HUSTLE - .byte ABILITY_SERENE_GRACE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Togetic - base_stats 55, 40, 85, 40, 80, 105 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 75 @ catch rate - .byte 114 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 10 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FAIRY - .byte ABILITY_HUSTLE - .byte ABILITY_SERENE_GRACE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Natu - base_stats 40, 50, 45, 70, 70, 45 - .byte TYPE_PSYCHIC - .byte TYPE_FLYING - .byte 190 @ catch rate - .byte 73 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_SYNCHRONIZE - .byte ABILITY_EARLY_BIRD - .byte 6 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Xatu - base_stats 65, 75, 70, 95, 95, 70 - .byte TYPE_PSYCHIC - .byte TYPE_FLYING - .byte 75 @ catch rate - .byte 171 @ base exp. yield - ev_yield 0, 0, 0, 1, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_SYNCHRONIZE - .byte ABILITY_EARLY_BIRD - .byte 8 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Mareep - base_stats 55, 40, 40, 35, 65, 45 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 235 @ catch rate - .byte 59 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_STATIC - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Flaaffy - base_stats 70, 55, 55, 45, 80, 60 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 120 @ catch rate - .byte 117 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_STATIC - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Ampharos - base_stats 90, 75, 75, 55, 115, 90 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 45 @ catch rate - .byte 194 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_STATIC - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Bellossom - base_stats 75, 80, 85, 50, 90, 100 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 184 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 3 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Marill - base_stats 70, 20, 50, 40, 20, 50 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 190 @ catch rate - .byte 58 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 10 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FAIRY - .byte ABILITY_THICK_FAT - .byte ABILITY_HUGE_POWER - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Azumarill - base_stats 100, 50, 80, 50, 50, 80 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 75 @ catch rate - .byte 153 @ base exp. yield - ev_yield 3, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 10 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FAIRY - .byte ABILITY_THICK_FAT - .byte ABILITY_HUGE_POWER - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Sudowoodo - base_stats 70, 100, 115, 30, 30, 65 - .byte TYPE_ROCK - .byte TYPE_ROCK - .byte 65 @ catch rate - .byte 135 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_STURDY - .byte ABILITY_ROCK_HEAD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Politoed - base_stats 90, 75, 75, 70, 90, 100 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 185 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 3 - .2byte ITEM_NONE - .2byte ITEM_KINGS_ROCK - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_1 - .byte ABILITY_WATER_ABSORB - .byte ABILITY_DAMP - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Hoppip - base_stats 35, 35, 40, 50, 35, 55 - .byte TYPE_GRASS - .byte TYPE_FLYING - .byte 255 @ catch rate - .byte 74 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Skiploom - base_stats 55, 45, 50, 80, 45, 65 - .byte TYPE_GRASS - .byte TYPE_FLYING - .byte 120 @ catch rate - .byte 136 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Jumpluff - base_stats 75, 55, 70, 110, 55, 85 - .byte TYPE_GRASS - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 176 @ base exp. yield - ev_yield 0, 0, 0, 3, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Aipom - base_stats 55, 70, 55, 85, 40, 55 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 94 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_RUN_AWAY - .byte ABILITY_PICKUP - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Sunkern - base_stats 30, 30, 30, 30, 30, 30 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 235 @ catch rate - .byte 52 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Sunflora - base_stats 75, 75, 55, 30, 105, 85 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 120 @ catch rate - .byte 146 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Yanma - base_stats 65, 65, 45, 95, 75, 45 - .byte TYPE_BUG - .byte TYPE_FLYING - .byte 75 @ catch rate - .byte 147 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SPEED_BOOST - .byte ABILITY_COMPOUND_EYES - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Wooper - base_stats 55, 45, 45, 15, 25, 25 - .byte TYPE_WATER - .byte TYPE_GROUND - .byte 255 @ catch rate - .byte 52 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FIELD - .byte ABILITY_DAMP - .byte ABILITY_WATER_ABSORB - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Quagsire - base_stats 95, 85, 85, 35, 65, 65 - .byte TYPE_WATER - .byte TYPE_GROUND - .byte 90 @ catch rate - .byte 137 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FIELD - .byte ABILITY_DAMP - .byte ABILITY_WATER_ABSORB - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Espeon - base_stats 65, 65, 60, 110, 130, 95 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 45 @ catch rate - .byte 197 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 35 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_SYNCHRONIZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Umbreon - base_stats 95, 65, 110, 65, 60, 130 - .byte TYPE_DARK - .byte TYPE_DARK - .byte 45 @ catch rate - .byte 197 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 35 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_SYNCHRONIZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Murkrow - base_stats 60, 85, 42, 91, 85, 42 - .byte TYPE_DARK - .byte TYPE_FLYING - .byte 30 @ catch rate - .byte 107 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_INSOMNIA - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Slowking - base_stats 95, 75, 80, 30, 100, 110 - .byte TYPE_WATER - .byte TYPE_PSYCHIC - .byte 70 @ catch rate - .byte 164 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 3 - .2byte ITEM_NONE - .2byte ITEM_KINGS_ROCK - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_OBLIVIOUS - .byte ABILITY_OWN_TEMPO - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Misdreavus - base_stats 60, 60, 60, 85, 85, 85 - .byte TYPE_GHOST - .byte TYPE_GHOST - .byte 45 @ catch rate - .byte 147 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 1 - .2byte ITEM_NONE - .2byte ITEM_SPELL_TAG - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Unown - base_stats 48, 72, 48, 48, 72, 48 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 225 @ catch rate - .byte 61 @ base exp. yield - ev_yield 0, 1, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 40 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Wobbuffet - base_stats 190, 33, 58, 33, 33, 58 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 45 @ catch rate - .byte 177 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_SHADOW_TAG - .byte ABILITY_NONE - .byte 4 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Girafarig - base_stats 70, 80, 65, 85, 90, 65 - .byte TYPE_NORMAL - .byte TYPE_PSYCHIC - .byte 60 @ catch rate - .byte 149 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_PERSIM_BERRY - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_INNER_FOCUS - .byte ABILITY_EARLY_BIRD - .byte 4 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Pineco - base_stats 50, 65, 90, 15, 35, 35 - .byte TYPE_BUG - .byte TYPE_BUG - .byte 190 @ catch rate - .byte 60 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_STURDY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Forretress - base_stats 75, 90, 140, 40, 60, 60 - .byte TYPE_BUG - .byte TYPE_STEEL - .byte 75 @ catch rate - .byte 118 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_STURDY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Dunsparce - base_stats 100, 70, 70, 45, 65, 65 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 190 @ catch rate - .byte 75 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_SERENE_GRACE - .byte ABILITY_RUN_AWAY - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Gligar - base_stats 65, 75, 105, 85, 35, 65 - .byte TYPE_GROUND - .byte TYPE_FLYING - .byte 60 @ catch rate - .byte 108 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_HYPER_CUTTER - .byte ABILITY_SAND_VEIL - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Steelix - base_stats 75, 85, 200, 30, 55, 65 - .byte TYPE_STEEL - .byte TYPE_GROUND - .byte 25 @ catch rate - .byte 196 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_METAL_COAT - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_ROCK_HEAD - .byte ABILITY_STURDY - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Snubbull - base_stats 60, 80, 50, 30, 40, 40 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 190 @ catch rate - .byte 63 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 191 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FAIRY - .byte ABILITY_INTIMIDATE - .byte ABILITY_RUN_AWAY - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Granbull - base_stats 90, 120, 75, 45, 60, 60 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 75 @ catch rate - .byte 178 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 191 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FAIRY - .byte ABILITY_INTIMIDATE - .byte ABILITY_INTIMIDATE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Qwilfish - base_stats 65, 95, 75, 85, 55, 55 - .byte TYPE_WATER - .byte TYPE_POISON - .byte 45 @ catch rate - .byte 100 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_POISON_POINT - .byte ABILITY_SWIFT_SWIM - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Scizor - base_stats 70, 130, 100, 65, 55, 80 - .byte TYPE_BUG - .byte TYPE_STEEL - .byte 25 @ catch rate - .byte 200 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SWARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Shuckle - base_stats 20, 10, 230, 5, 10, 230 - .byte TYPE_BUG - .byte TYPE_ROCK - .byte 190 @ catch rate - .byte 80 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 1 - .2byte ITEM_ORAN_BERRY - .2byte ITEM_ORAN_BERRY - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_STURDY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Heracross - base_stats 80, 125, 75, 85, 40, 95 - .byte TYPE_BUG - .byte TYPE_FIGHTING - .byte 45 @ catch rate - .byte 200 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SWARM - .byte ABILITY_GUTS - .byte 8 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Sneasel - base_stats 55, 95, 55, 115, 35, 75 - .byte TYPE_DARK - .byte TYPE_ICE - .byte 60 @ catch rate - .byte 132 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_QUICK_CLAW - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_INNER_FOCUS - .byte ABILITY_KEEN_EYE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Teddiursa - base_stats 60, 80, 50, 40, 50, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 120 @ catch rate - .byte 124 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_PICKUP - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Ursaring - base_stats 90, 130, 75, 55, 75, 75 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 60 @ catch rate - .byte 189 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_GUTS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Slugma - base_stats 40, 40, 40, 20, 70, 40 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 190 @ catch rate - .byte 78 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_MAGMA_ARMOR - .byte ABILITY_FLAME_BODY - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Magcargo - base_stats 50, 50, 120, 30, 80, 80 - .byte TYPE_FIRE - .byte TYPE_ROCK - .byte 75 @ catch rate - .byte 154 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_MAGMA_ARMOR - .byte ABILITY_FLAME_BODY - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Swinub - base_stats 50, 50, 40, 50, 30, 30 - .byte TYPE_ICE - .byte TYPE_GROUND - .byte 225 @ catch rate - .byte 78 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_OBLIVIOUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Piloswine - base_stats 100, 100, 80, 50, 60, 60 - .byte TYPE_ICE - .byte TYPE_GROUND - .byte 75 @ catch rate - .byte 160 @ base exp. yield - ev_yield 1, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_OBLIVIOUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Corsola - base_stats 55, 55, 85, 35, 65, 85 - .byte TYPE_WATER - .byte TYPE_ROCK - .byte 60 @ catch rate - .byte 113 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_RED_SHARD - .byte 191 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_HUSTLE - .byte ABILITY_NATURAL_CURE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Remoraid - base_stats 35, 65, 35, 65, 65, 35 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 190 @ catch rate - .byte 78 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_HUSTLE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Octillery - base_stats 75, 105, 75, 45, 105, 75 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 75 @ catch rate - .byte 164 @ base exp. yield - ev_yield 0, 1, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_SUCTION_CUPS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Delibird - base_stats 45, 55, 45, 75, 65, 45 - .byte TYPE_ICE - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 183 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FIELD - .byte ABILITY_VITAL_SPIRIT - .byte ABILITY_HUSTLE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Mantine - base_stats 65, 40, 70, 70, 80, 140 - .byte TYPE_WATER - .byte TYPE_FLYING - .byte 25 @ catch rate - .byte 168 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_1 - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_WATER_ABSORB - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Skarmory - base_stats 65, 80, 140, 70, 40, 70 - .byte TYPE_STEEL - .byte TYPE_FLYING - .byte 25 @ catch rate - .byte 168 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_KEEN_EYE - .byte ABILITY_STURDY - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Houndour - base_stats 45, 60, 30, 65, 80, 50 - .byte TYPE_DARK - .byte TYPE_FIRE - .byte 120 @ catch rate - .byte 114 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_EARLY_BIRD - .byte ABILITY_FLASH_FIRE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Houndoom - base_stats 75, 90, 50, 95, 110, 80 - .byte TYPE_DARK - .byte TYPE_FIRE - .byte 45 @ catch rate - .byte 204 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_EARLY_BIRD - .byte ABILITY_FLASH_FIRE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Kingdra - base_stats 75, 95, 95, 85, 95, 95 - .byte TYPE_WATER - .byte TYPE_DRAGON - .byte 45 @ catch rate - .byte 207 @ base exp. yield - ev_yield 0, 1, 0, 0, 1, 1 - .2byte ITEM_NONE - .2byte ITEM_DRAGON_SCALE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_DRAGON - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Phanpy - base_stats 90, 60, 60, 40, 40, 40 - .byte TYPE_GROUND - .byte TYPE_GROUND - .byte 120 @ catch rate - .byte 124 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_PICKUP - .byte ABILITY_NONE - .byte 10 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Donphan - base_stats 90, 120, 120, 50, 60, 60 - .byte TYPE_GROUND - .byte TYPE_GROUND - .byte 60 @ catch rate - .byte 189 @ base exp. yield - ev_yield 0, 1, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_STURDY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Porygon2 - base_stats 85, 80, 90, 60, 105, 95 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 180 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_TRACE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Stantler - base_stats 73, 95, 62, 85, 85, 65 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 165 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_INTIMIDATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Smeargle - base_stats 55, 20, 35, 75, 20, 45 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 106 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_OWN_TEMPO - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Tyrogue - base_stats 35, 35, 35, 35, 35, 35 - .byte TYPE_FIGHTING - .byte TYPE_FIGHTING - .byte 75 @ catch rate - .byte 91 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 0 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_GUTS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Hitmontop - base_stats 50, 95, 95, 70, 35, 110 - .byte TYPE_FIGHTING - .byte TYPE_FIGHTING - .byte 45 @ catch rate - .byte 138 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 0 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_INTIMIDATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Smoochum - base_stats 45, 30, 15, 65, 85, 65 - .byte TYPE_ICE - .byte TYPE_PSYCHIC - .byte 45 @ catch rate - .byte 87 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_ASPEAR_BERRY - .2byte ITEM_ASPEAR_BERRY - .byte 254 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_OBLIVIOUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Elekid - base_stats 45, 63, 37, 95, 65, 55 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 45 @ catch rate - .byte 106 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 63 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_STATIC - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Magby - base_stats 45, 75, 37, 83, 70, 55 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 45 @ catch rate - .byte 117 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_RAWST_BERRY - .2byte ITEM_RAWST_BERRY - .byte 63 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_FLAME_BODY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Miltank - base_stats 95, 80, 105, 100, 40, 70 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 200 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_MOOMOO_MILK - .2byte ITEM_MOOMOO_MILK - .byte 254 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_THICK_FAT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Blissey - base_stats 255, 10, 10, 55, 75, 135 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 30 @ catch rate - .byte 255 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_LUCKY_EGG - .byte 254 @ gender - .byte 40 @ egg cycles - .byte 140 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_FAIRY - .byte ABILITY_NATURAL_CURE - .byte ABILITY_SERENE_GRACE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Raikou - base_stats 90, 85, 75, 115, 115, 100 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 3 @ catch rate - .byte 216 @ base exp. yield - ev_yield 0, 0, 0, 2, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 80 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Entei - base_stats 115, 115, 85, 100, 90, 75 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 3 @ catch rate - .byte 217 @ base exp. yield - ev_yield 1, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 80 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Suicune - base_stats 100, 75, 115, 85, 90, 115 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 3 @ catch rate - .byte 215 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 80 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Larvitar - base_stats 50, 64, 50, 41, 45, 50 - .byte TYPE_ROCK - .byte TYPE_GROUND - .byte 45 @ catch rate - .byte 67 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_MONSTER - .byte ABILITY_GUTS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Pupitar - base_stats 70, 84, 70, 51, 65, 70 - .byte TYPE_ROCK - .byte TYPE_GROUND - .byte 45 @ catch rate - .byte 144 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_MONSTER - .byte ABILITY_SHED_SKIN - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Tyranitar - base_stats 100, 134, 110, 61, 95, 100 - .byte TYPE_ROCK - .byte TYPE_DARK - .byte 45 @ catch rate - .byte 218 @ base exp. yield - ev_yield 0, 3, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_MONSTER - .byte ABILITY_SAND_STREAM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Lugia - base_stats 106, 90, 130, 110, 90, 154 - .byte TYPE_PSYCHIC - .byte TYPE_FLYING - .byte 3 @ catch rate - .byte 220 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 3 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Ho-Oh - base_stats 106, 130, 90, 90, 110, 154 - .byte TYPE_FIRE - .byte TYPE_FLYING - .byte 3 @ catch rate - .byte 220 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 3 - .2byte ITEM_SACRED_ASH - .2byte ITEM_SACRED_ASH - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Celebi - base_stats 100, 100, 100, 100, 100, 100 - .byte TYPE_PSYCHIC - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 64 @ base exp. yield - ev_yield 3, 0, 0, 0, 0, 0 - .2byte ITEM_LUM_BERRY - .2byte ITEM_LUM_BERRY - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 100 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NATURAL_CURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ ? - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 3 @ catch rate - .byte 1 @ base exp. yield - ev_yield 2, 2, 2, 2, 2, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_NONE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Treecko - base_stats 40, 45, 35, 70, 65, 55 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 65 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_DRAGON - .byte ABILITY_OVERGROW - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Grovyle - base_stats 50, 65, 45, 95, 85, 65 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 141 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_DRAGON - .byte ABILITY_OVERGROW - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Sceptile - base_stats 70, 85, 65, 120, 105, 85 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 208 @ base exp. yield - ev_yield 0, 0, 0, 3, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_DRAGON - .byte ABILITY_OVERGROW - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Torchic - base_stats 45, 60, 40, 45, 70, 50 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 45 @ catch rate - .byte 65 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_BLAZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Combusken - base_stats 60, 85, 60, 55, 85, 60 - .byte TYPE_FIRE - .byte TYPE_FIGHTING - .byte 45 @ catch rate - .byte 142 @ base exp. yield - ev_yield 0, 1, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_BLAZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Blaziken - base_stats 80, 120, 70, 80, 110, 70 - .byte TYPE_FIRE - .byte TYPE_FIGHTING - .byte 45 @ catch rate - .byte 209 @ base exp. yield - ev_yield 0, 3, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_BLAZE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Mudkip - base_stats 50, 70, 50, 40, 50, 50 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 65 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_TORRENT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Marshtomp - base_stats 70, 85, 70, 50, 60, 70 - .byte TYPE_WATER - .byte TYPE_GROUND - .byte 45 @ catch rate - .byte 143 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_TORRENT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Swampert - base_stats 100, 110, 90, 60, 85, 90 - .byte TYPE_WATER - .byte TYPE_GROUND - .byte 45 @ catch rate - .byte 210 @ base exp. yield - ev_yield 0, 3, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_WATER_1 - .byte ABILITY_TORRENT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Poochyena - base_stats 35, 55, 35, 35, 30, 30 - .byte TYPE_DARK - .byte TYPE_DARK - .byte 255 @ catch rate - .byte 55 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_PECHA_BERRY - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_RUN_AWAY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Mightyena - base_stats 70, 90, 70, 70, 60, 60 - .byte TYPE_DARK - .byte TYPE_DARK - .byte 127 @ catch rate - .byte 128 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_PECHA_BERRY - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_INTIMIDATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Zigzagoon - base_stats 38, 30, 41, 60, 30, 41 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 255 @ catch rate - .byte 60 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_ORAN_BERRY - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_PICKUP - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Linoone - base_stats 78, 70, 61, 100, 50, 61 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 90 @ catch rate - .byte 128 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_ORAN_BERRY - .2byte ITEM_SITRUS_BERRY - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_PICKUP - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Wurmple - base_stats 45, 45, 35, 20, 20, 30 - .byte TYPE_BUG - .byte TYPE_BUG - .byte 255 @ catch rate - .byte 54 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SHIELD_DUST - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Silcoon - base_stats 50, 35, 55, 15, 25, 25 - .byte TYPE_BUG - .byte TYPE_BUG - .byte 120 @ catch rate - .byte 71 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SHED_SKIN - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Beautifly - base_stats 60, 70, 50, 65, 90, 50 - .byte TYPE_BUG - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 161 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_SILVER_POWDER - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SWARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Cascoon - base_stats 50, 35, 55, 15, 25, 25 - .byte TYPE_BUG - .byte TYPE_BUG - .byte 120 @ catch rate - .byte 72 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SHED_SKIN - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Dustox - base_stats 60, 50, 70, 65, 50, 90 - .byte TYPE_BUG - .byte TYPE_POISON - .byte 45 @ catch rate - .byte 160 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 3 - .2byte ITEM_NONE - .2byte ITEM_SILVER_POWDER - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SHIELD_DUST - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Lotad - base_stats 40, 30, 30, 30, 40, 50 - .byte TYPE_WATER - .byte TYPE_GRASS - .byte 255 @ catch rate - .byte 74 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_GRASS - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_RAIN_DISH - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Lombre - base_stats 60, 50, 50, 50, 60, 70 - .byte TYPE_WATER - .byte TYPE_GRASS - .byte 120 @ catch rate - .byte 141 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_GRASS - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_RAIN_DISH - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Ludicolo - base_stats 80, 70, 70, 70, 90, 100 - .byte TYPE_WATER - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 181 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 3 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_GRASS - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_RAIN_DISH - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Seedot - base_stats 40, 40, 50, 30, 30, 30 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 255 @ catch rate - .byte 74 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_EARLY_BIRD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Nuzleaf - base_stats 70, 70, 40, 60, 60, 40 - .byte TYPE_GRASS - .byte TYPE_DARK - .byte 120 @ catch rate - .byte 141 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_EARLY_BIRD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Shiftry - base_stats 90, 100, 60, 80, 90, 60 - .byte TYPE_GRASS - .byte TYPE_DARK - .byte 45 @ catch rate - .byte 181 @ base exp. yield - ev_yield 0, 3, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_EARLY_BIRD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Nincada - base_stats 31, 45, 90, 40, 30, 30 - .byte TYPE_BUG - .byte TYPE_GROUND - .byte 255 @ catch rate - .byte 65 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_COMPOUND_EYES - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Ninjask - base_stats 61, 90, 45, 160, 50, 50 - .byte TYPE_BUG - .byte TYPE_FLYING - .byte 120 @ catch rate - .byte 155 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_SPEED_BOOST - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Shedinja - base_stats 1, 90, 45, 40, 30, 30 - .byte TYPE_BUG - .byte TYPE_GHOST - .byte 45 @ catch rate - .byte 95 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_WONDER_GUARD - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Taillow - base_stats 40, 55, 30, 85, 30, 30 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 200 @ catch rate - .byte 59 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_GUTS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Swellow - base_stats 60, 85, 60, 125, 50, 50 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 162 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_FLYING - .byte ABILITY_GUTS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Shroomish - base_stats 60, 40, 60, 35, 40, 60 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 255 @ catch rate - .byte 65 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_GRASS - .byte ABILITY_EFFECT_SPORE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Breloom - base_stats 60, 130, 80, 70, 60, 60 - .byte TYPE_GRASS - .byte TYPE_FIGHTING - .byte 90 @ catch rate - .byte 165 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_GRASS - .byte ABILITY_EFFECT_SPORE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Spinda - base_stats 60, 60, 60, 60, 60, 60 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 255 @ catch rate - .byte 85 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_CHESTO_BERRY - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_OWN_TEMPO - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Wingull - base_stats 40, 30, 30, 85, 55, 30 - .byte TYPE_WATER - .byte TYPE_FLYING - .byte 190 @ catch rate - .byte 64 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FLYING - .byte ABILITY_KEEN_EYE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Pelipper - base_stats 60, 50, 100, 65, 85, 70 - .byte TYPE_WATER - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 164 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FLYING - .byte ABILITY_KEEN_EYE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Surskit - base_stats 40, 30, 32, 65, 50, 52 - .byte TYPE_BUG - .byte TYPE_WATER - .byte 200 @ catch rate - .byte 63 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_BUG - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Masquerain - base_stats 70, 60, 62, 60, 80, 82 - .byte TYPE_BUG - .byte TYPE_FLYING - .byte 75 @ catch rate - .byte 128 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 1 - .2byte ITEM_NONE - .2byte ITEM_SILVER_POWDER - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_BUG - .byte ABILITY_INTIMIDATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Wailmer - base_stats 130, 70, 35, 60, 70, 35 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 125 @ catch rate - .byte 137 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_WATER_2 - .byte ABILITY_WATER_VEIL - .byte ABILITY_OBLIVIOUS - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Wailord - base_stats 170, 90, 45, 60, 90, 45 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 60 @ catch rate - .byte 206 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_WATER_2 - .byte ABILITY_WATER_VEIL - .byte ABILITY_OBLIVIOUS - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Skitty - base_stats 50, 45, 45, 50, 35, 35 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 255 @ catch rate - .byte 65 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_LEPPA_BERRY - .byte 191 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FAIRY - .byte ABILITY_CUTE_CHARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Delcatty - base_stats 70, 65, 65, 70, 55, 55 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 60 @ catch rate - .byte 138 @ base exp. yield - ev_yield 1, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_LEPPA_BERRY - .byte 191 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FAIRY - .byte ABILITY_CUTE_CHARM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Kecleon - base_stats 60, 90, 70, 40, 60, 120 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 200 @ catch rate - .byte 132 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_PERSIM_BERRY - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_COLOR_CHANGE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Baltoy - base_stats 40, 40, 55, 55, 40, 70 - .byte TYPE_GROUND - .byte TYPE_PSYCHIC - .byte 255 @ catch rate - .byte 58 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Claydol - base_stats 60, 70, 105, 75, 70, 120 - .byte TYPE_GROUND - .byte TYPE_PSYCHIC - .byte 90 @ catch rate - .byte 189 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Nosepass - base_stats 30, 45, 135, 30, 45, 90 - .byte TYPE_ROCK - .byte TYPE_ROCK - .byte 255 @ catch rate - .byte 108 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_STURDY - .byte ABILITY_MAGNET_PULL - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Torkoal - base_stats 70, 85, 140, 20, 85, 70 - .byte TYPE_FIRE - .byte TYPE_FIRE - .byte 90 @ catch rate - .byte 161 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_WHITE_SMOKE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Sableye - base_stats 50, 75, 75, 50, 65, 65 - .byte TYPE_DARK - .byte TYPE_GHOST - .byte 45 @ catch rate - .byte 98 @ base exp. yield - ev_yield 0, 1, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_KEEN_EYE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Barboach - base_stats 50, 48, 43, 60, 46, 41 - .byte TYPE_WATER - .byte TYPE_GROUND - .byte 190 @ catch rate - .byte 92 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_OBLIVIOUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Whiscash - base_stats 110, 78, 73, 60, 76, 71 - .byte TYPE_WATER - .byte TYPE_GROUND - .byte 75 @ catch rate - .byte 158 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_OBLIVIOUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Luvdisc - base_stats 43, 30, 55, 97, 40, 65 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 225 @ catch rate - .byte 110 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_HEART_SCALE - .2byte ITEM_NONE - .byte 191 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Corphish - base_stats 43, 80, 65, 35, 50, 35 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 205 @ catch rate - .byte 111 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_HYPER_CUTTER - .byte ABILITY_SHELL_ARMOR - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Crawdaunt - base_stats 63, 120, 85, 55, 90, 55 - .byte TYPE_WATER - .byte TYPE_DARK - .byte 155 @ catch rate - .byte 161 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_HYPER_CUTTER - .byte ABILITY_SHELL_ARMOR - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Feebas - base_stats 20, 15, 20, 80, 10, 55 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 255 @ catch rate - .byte 61 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_DRAGON - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Milotic - base_stats 95, 60, 79, 81, 100, 125 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 60 @ catch rate - .byte 213 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_DRAGON - .byte ABILITY_MARVEL_SCALE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Carvanha - base_stats 45, 90, 20, 65, 65, 20 - .byte TYPE_WATER - .byte TYPE_DARK - .byte 225 @ catch rate - .byte 88 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_ROUGH_SKIN - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Sharpedo - base_stats 70, 120, 40, 95, 95, 40 - .byte TYPE_WATER - .byte TYPE_DARK - .byte 60 @ catch rate - .byte 175 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_2 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_ROUGH_SKIN - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Trapinch - base_stats 45, 100, 45, 10, 45, 45 - .byte TYPE_GROUND - .byte TYPE_GROUND - .byte 255 @ catch rate - .byte 73 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_SOFT_SAND - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_HYPER_CUTTER - .byte ABILITY_ARENA_TRAP - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Vibrava - base_stats 50, 70, 50, 70, 50, 50 - .byte TYPE_GROUND - .byte TYPE_DRAGON - .byte 120 @ catch rate - .byte 126 @ base exp. yield - ev_yield 0, 1, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_LEVITATE - .byte ABILITY_LEVITATE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Flygon - base_stats 80, 100, 80, 100, 80, 80 - .byte TYPE_GROUND - .byte TYPE_DRAGON - .byte 45 @ catch rate - .byte 197 @ base exp. yield - ev_yield 0, 1, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_BUG - .byte EGG_GROUP_BUG - .byte ABILITY_LEVITATE - .byte ABILITY_LEVITATE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Makuhita - base_stats 72, 60, 30, 25, 20, 30 - .byte TYPE_FIGHTING - .byte TYPE_FIGHTING - .byte 180 @ catch rate - .byte 87 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 63 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_THICK_FAT - .byte ABILITY_GUTS - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Hariyama - base_stats 144, 120, 60, 50, 40, 60 - .byte TYPE_FIGHTING - .byte TYPE_FIGHTING - .byte 200 @ catch rate - .byte 184 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_KINGS_ROCK - .byte 63 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_THICK_FAT - .byte ABILITY_GUTS - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Electrike - base_stats 40, 45, 40, 65, 65, 40 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 120 @ catch rate - .byte 104 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_STATIC - .byte ABILITY_LIGHTNING_ROD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Manectric - base_stats 70, 75, 60, 105, 105, 60 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 45 @ catch rate - .byte 168 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_STATIC - .byte ABILITY_LIGHTNING_ROD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Numel - base_stats 60, 60, 40, 35, 65, 45 - .byte TYPE_FIRE - .byte TYPE_GROUND - .byte 255 @ catch rate - .byte 88 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_RAWST_BERRY - .2byte ITEM_RAWST_BERRY - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_OBLIVIOUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Camerupt - base_stats 70, 100, 70, 40, 105, 75 - .byte TYPE_FIRE - .byte TYPE_GROUND - .byte 150 @ catch rate - .byte 175 @ base exp. yield - ev_yield 0, 1, 0, 0, 1, 0 - .2byte ITEM_RAWST_BERRY - .2byte ITEM_RAWST_BERRY - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_MAGMA_ARMOR - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Spheal - base_stats 70, 40, 50, 25, 55, 50 - .byte TYPE_ICE - .byte TYPE_WATER - .byte 255 @ catch rate - .byte 75 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FIELD - .byte ABILITY_THICK_FAT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Sealeo - base_stats 90, 60, 70, 45, 75, 70 - .byte TYPE_ICE - .byte TYPE_WATER - .byte 120 @ catch rate - .byte 128 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FIELD - .byte ABILITY_THICK_FAT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Walrein - base_stats 110, 80, 90, 65, 95, 90 - .byte TYPE_ICE - .byte TYPE_WATER - .byte 45 @ catch rate - .byte 192 @ base exp. yield - ev_yield 3, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_FIELD - .byte ABILITY_THICK_FAT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Cacnea - base_stats 50, 85, 40, 35, 85, 40 - .byte TYPE_GRASS - .byte TYPE_GRASS - .byte 190 @ catch rate - .byte 97 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_POISON_BARB - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_SAND_VEIL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Cacturne - base_stats 70, 115, 60, 55, 115, 60 - .byte TYPE_GRASS - .byte TYPE_DARK - .byte 60 @ catch rate - .byte 177 @ base exp. yield - ev_yield 0, 1, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_POISON_BARB - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_GRASS - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_SAND_VEIL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Snorunt - base_stats 50, 50, 50, 50, 50, 50 - .byte TYPE_ICE - .byte TYPE_ICE - .byte 190 @ catch rate - .byte 74 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_MINERAL - .byte ABILITY_INNER_FOCUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Glalie - base_stats 80, 80, 80, 80, 80, 80 - .byte TYPE_ICE - .byte TYPE_ICE - .byte 75 @ catch rate - .byte 187 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NEVER_MELT_ICE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_MINERAL - .byte ABILITY_INNER_FOCUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Lunatone - base_stats 70, 55, 65, 70, 95, 85 - .byte TYPE_ROCK - .byte TYPE_PSYCHIC - .byte 45 @ catch rate - .byte 150 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_MOON_STONE - .byte 255 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Solrock - base_stats 70, 95, 85, 70, 55, 65 - .byte TYPE_ROCK - .byte TYPE_PSYCHIC - .byte 45 @ catch rate - .byte 150 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_SUN_STONE - .byte 255 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Azurill - base_stats 50, 20, 40, 20, 20, 40 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 150 @ catch rate - .byte 33 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 191 @ gender - .byte 10 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_THICK_FAT - .byte ABILITY_HUGE_POWER - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Spoink - base_stats 60, 25, 35, 60, 70, 80 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 255 @ catch rate - .byte 89 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_THICK_FAT - .byte ABILITY_OWN_TEMPO - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Grumpig - base_stats 80, 45, 65, 80, 90, 110 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 60 @ catch rate - .byte 164 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_THICK_FAT - .byte ABILITY_OWN_TEMPO - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Plusle - base_stats 60, 50, 40, 95, 85, 75 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 200 @ catch rate - .byte 120 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_FAIRY - .byte ABILITY_PLUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Minun - base_stats 60, 40, 50, 95, 75, 85 - .byte TYPE_ELECTRIC - .byte TYPE_ELECTRIC - .byte 200 @ catch rate - .byte 120 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_FAIRY - .byte ABILITY_MINUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Mawile - base_stats 50, 85, 85, 50, 55, 55 - .byte TYPE_STEEL - .byte TYPE_STEEL - .byte 45 @ catch rate - .byte 98 @ base exp. yield - ev_yield 0, 1, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FAIRY - .byte ABILITY_HYPER_CUTTER - .byte ABILITY_INTIMIDATE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Meditite - base_stats 30, 40, 55, 60, 40, 55 - .byte TYPE_FIGHTING - .byte TYPE_PSYCHIC - .byte 180 @ catch rate - .byte 91 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_PURE_POWER - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Medicham - base_stats 60, 60, 75, 80, 60, 75 - .byte TYPE_FIGHTING - .byte TYPE_PSYCHIC - .byte 90 @ catch rate - .byte 153 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_HUMAN_LIKE - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_PURE_POWER - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Swablu - base_stats 45, 40, 60, 50, 40, 75 - .byte TYPE_NORMAL - .byte TYPE_FLYING - .byte 255 @ catch rate - .byte 74 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_DRAGON - .byte ABILITY_NATURAL_CURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Altaria - base_stats 75, 70, 90, 80, 70, 105 - .byte TYPE_DRAGON - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 188 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_FLYING - .byte EGG_GROUP_DRAGON - .byte ABILITY_NATURAL_CURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Wynaut - base_stats 95, 23, 48, 23, 23, 48 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 125 @ catch rate - .byte 44 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_SHADOW_TAG - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Duskull - base_stats 20, 40, 90, 25, 30, 90 - .byte TYPE_GHOST - .byte TYPE_GHOST - .byte 190 @ catch rate - .byte 97 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_SPELL_TAG - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Dusclops - base_stats 40, 70, 130, 25, 60, 130 - .byte TYPE_GHOST - .byte TYPE_GHOST - .byte 90 @ catch rate - .byte 179 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_SPELL_TAG - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Roselia - base_stats 50, 60, 45, 65, 100, 80 - .byte TYPE_GRASS - .byte TYPE_POISON - .byte 150 @ catch rate - .byte 152 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_POISON_BARB - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_GRASS - .byte ABILITY_NATURAL_CURE - .byte ABILITY_POISON_POINT - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Slakoth - base_stats 60, 60, 60, 30, 35, 35 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 255 @ catch rate - .byte 83 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_TRUANT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Vigoroth - base_stats 80, 80, 80, 90, 55, 55 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 120 @ catch rate - .byte 126 @ base exp. yield - ev_yield 0, 0, 0, 2, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_VITAL_SPIRIT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Slaking - base_stats 150, 160, 100, 100, 95, 65 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 210 @ base exp. yield - ev_yield 3, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_TRUANT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Gulpin - base_stats 70, 43, 53, 40, 43, 53 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 225 @ catch rate - .byte 75 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_BIG_PEARL - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_LIQUID_OOZE - .byte ABILITY_STICKY_HOLD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Swalot - base_stats 100, 73, 83, 55, 73, 83 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 75 @ catch rate - .byte 168 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_BIG_PEARL - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_LIQUID_OOZE - .byte ABILITY_STICKY_HOLD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Tropius - base_stats 99, 68, 83, 51, 72, 87 - .byte TYPE_GRASS - .byte TYPE_FLYING - .byte 200 @ catch rate - .byte 169 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_GRASS - .byte ABILITY_CHLOROPHYLL - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Whismur - base_stats 64, 51, 23, 28, 51, 23 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 190 @ catch rate - .byte 68 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_CHESTO_BERRY - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_SOUNDPROOF - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Loudred - base_stats 84, 71, 43, 48, 71, 43 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 120 @ catch rate - .byte 126 @ base exp. yield - ev_yield 2, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_CHESTO_BERRY - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_SOUNDPROOF - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Exploud - base_stats 104, 91, 63, 68, 91, 63 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 184 @ base exp. yield - ev_yield 3, 0, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_CHESTO_BERRY - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_FIELD - .byte ABILITY_SOUNDPROOF - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Clamperl - base_stats 35, 64, 85, 32, 74, 55 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 255 @ catch rate - .byte 142 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_BLUE_SHARD - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_1 - .byte ABILITY_SHELL_ARMOR - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Huntail - base_stats 55, 104, 105, 52, 94, 75 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 60 @ catch rate - .byte 178 @ base exp. yield - ev_yield 0, 1, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_1 - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Gorebyss - base_stats 55, 84, 105, 52, 114, 75 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 60 @ catch rate - .byte 178 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_1 - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PINK - .2byte 0 @ padding - -@ Absol - base_stats 65, 130, 60, 75, 75, 60 - .byte TYPE_DARK - .byte TYPE_DARK - .byte 30 @ catch rate - .byte 174 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_MEDIUM_SLOW - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Shuppet - base_stats 44, 75, 35, 45, 63, 33 - .byte TYPE_GHOST - .byte TYPE_GHOST - .byte 225 @ catch rate - .byte 97 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_SPELL_TAG - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_INSOMNIA - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Banette - base_stats 64, 115, 65, 65, 83, 63 - .byte TYPE_GHOST - .byte TYPE_GHOST - .byte 45 @ catch rate - .byte 179 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_SPELL_TAG - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_INSOMNIA - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Seviper - base_stats 73, 100, 60, 65, 100, 60 - .byte TYPE_POISON - .byte TYPE_POISON - .byte 90 @ catch rate - .byte 165 @ base exp. yield - ev_yield 0, 1, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_DRAGON - .byte ABILITY_SHED_SKIN - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_BLACK - .2byte 0 @ padding - -@ Zangoose - base_stats 73, 115, 60, 90, 60, 60 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 90 @ catch rate - .byte 165 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_FIELD - .byte EGG_GROUP_FIELD - .byte ABILITY_IMMUNITY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Relicanth - base_stats 100, 90, 130, 55, 45, 65 - .byte TYPE_WATER - .byte TYPE_ROCK - .byte 25 @ catch rate - .byte 198 @ base exp. yield - ev_yield 1, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_GREEN_SHARD - .byte 31 @ gender - .byte 40 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_WATER_1 - .byte EGG_GROUP_WATER_2 - .byte ABILITY_SWIFT_SWIM - .byte ABILITY_ROCK_HEAD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Aron - base_stats 50, 70, 100, 30, 40, 40 - .byte TYPE_STEEL - .byte TYPE_ROCK - .byte 180 @ catch rate - .byte 96 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_HARD_STONE - .byte 127 @ gender - .byte 35 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_MONSTER - .byte ABILITY_STURDY - .byte ABILITY_ROCK_HEAD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Lairon - base_stats 60, 90, 140, 40, 50, 50 - .byte TYPE_STEEL - .byte TYPE_ROCK - .byte 90 @ catch rate - .byte 152 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_HARD_STONE - .byte 127 @ gender - .byte 35 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_MONSTER - .byte ABILITY_STURDY - .byte ABILITY_ROCK_HEAD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Aggron - base_stats 70, 110, 180, 50, 60, 60 - .byte TYPE_STEEL - .byte TYPE_ROCK - .byte 45 @ catch rate - .byte 205 @ base exp. yield - ev_yield 0, 0, 3, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_HARD_STONE - .byte 127 @ gender - .byte 35 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MONSTER - .byte EGG_GROUP_MONSTER - .byte ABILITY_STURDY - .byte ABILITY_ROCK_HEAD - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Castform - base_stats 70, 70, 70, 70, 70, 70 - .byte TYPE_NORMAL - .byte TYPE_NORMAL - .byte 45 @ catch rate - .byte 145 @ base exp. yield - ev_yield 1, 0, 0, 0, 0, 0 - .2byte ITEM_MYSTIC_WATER - .2byte ITEM_MYSTIC_WATER - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_MEDIUM_FAST - .byte EGG_GROUP_FAIRY - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_FORECAST - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Volbeat - base_stats 65, 73, 55, 85, 47, 75 - .byte TYPE_BUG - .byte TYPE_BUG - .byte 150 @ catch rate - .byte 146 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 0 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_BUG - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_ILLUMINATE - .byte ABILITY_SWARM - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Illumise - base_stats 65, 47, 55, 85, 73, 75 - .byte TYPE_BUG - .byte TYPE_BUG - .byte 150 @ catch rate - .byte 146 @ base exp. yield - ev_yield 0, 0, 0, 1, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 254 @ gender - .byte 15 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FLUCTUATING - .byte EGG_GROUP_BUG - .byte EGG_GROUP_HUMAN_LIKE - .byte ABILITY_OBLIVIOUS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Lileep - base_stats 66, 41, 77, 23, 61, 87 - .byte TYPE_ROCK - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 121 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 30 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_SUCTION_CUPS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_PURPLE - .2byte 0 @ padding - -@ Cradily - base_stats 86, 81, 97, 43, 81, 107 - .byte TYPE_ROCK - .byte TYPE_GRASS - .byte 45 @ catch rate - .byte 201 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 2 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 30 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_SUCTION_CUPS - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Anorith - base_stats 45, 95, 50, 75, 40, 50 - .byte TYPE_ROCK - .byte TYPE_BUG - .byte 45 @ catch rate - .byte 119 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 30 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_BATTLE_ARMOR - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Armaldo - base_stats 75, 125, 100, 45, 70, 80 - .byte TYPE_ROCK - .byte TYPE_BUG - .byte 45 @ catch rate - .byte 200 @ base exp. yield - ev_yield 0, 2, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 31 @ gender - .byte 30 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_ERRATIC - .byte EGG_GROUP_WATER_3 - .byte EGG_GROUP_WATER_3 - .byte ABILITY_BATTLE_ARMOR - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Ralts - base_stats 28, 25, 25, 40, 45, 35 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 235 @ catch rate - .byte 70 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_SYNCHRONIZE - .byte ABILITY_TRACE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Kirlia - base_stats 38, 35, 35, 50, 65, 55 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 120 @ catch rate - .byte 140 @ base exp. yield - ev_yield 0, 0, 0, 0, 2, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_SYNCHRONIZE - .byte ABILITY_TRACE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Gardevoir - base_stats 68, 65, 65, 80, 125, 115 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 45 @ catch rate - .byte 208 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 20 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_SYNCHRONIZE - .byte ABILITY_TRACE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Bagon - base_stats 45, 75, 60, 50, 40, 30 - .byte TYPE_DRAGON - .byte TYPE_DRAGON - .byte 45 @ catch rate - .byte 89 @ base exp. yield - ev_yield 0, 1, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_DRAGON_SCALE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_DRAGON - .byte EGG_GROUP_DRAGON - .byte ABILITY_ROCK_HEAD - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Shelgon - base_stats 65, 95, 100, 50, 60, 50 - .byte TYPE_DRAGON - .byte TYPE_DRAGON - .byte 45 @ catch rate - .byte 144 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_DRAGON_SCALE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_DRAGON - .byte EGG_GROUP_DRAGON - .byte ABILITY_ROCK_HEAD - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_WHITE - .2byte 0 @ padding - -@ Salamence - base_stats 95, 135, 80, 100, 110, 80 - .byte TYPE_DRAGON - .byte TYPE_FLYING - .byte 45 @ catch rate - .byte 218 @ base exp. yield - ev_yield 0, 3, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_DRAGON_SCALE - .byte 127 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_DRAGON - .byte EGG_GROUP_DRAGON - .byte ABILITY_INTIMIDATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Beldum - base_stats 40, 55, 80, 30, 35, 60 - .byte TYPE_STEEL - .byte TYPE_PSYCHIC - .byte 3 @ catch rate - .byte 103 @ base exp. yield - ev_yield 0, 0, 1, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_METAL_COAT - .byte 255 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_CLEAR_BODY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Metang - base_stats 60, 75, 100, 50, 55, 80 - .byte TYPE_STEEL - .byte TYPE_PSYCHIC - .byte 3 @ catch rate - .byte 153 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_METAL_COAT - .byte 255 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_CLEAR_BODY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Metagross - base_stats 80, 135, 130, 70, 95, 90 - .byte TYPE_STEEL - .byte TYPE_PSYCHIC - .byte 3 @ catch rate - .byte 210 @ base exp. yield - ev_yield 0, 0, 3, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_METAL_COAT - .byte 255 @ gender - .byte 40 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_MINERAL - .byte EGG_GROUP_MINERAL - .byte ABILITY_CLEAR_BODY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Regirock - base_stats 80, 100, 200, 50, 50, 100 - .byte TYPE_ROCK - .byte TYPE_ROCK - .byte 3 @ catch rate - .byte 217 @ base exp. yield - ev_yield 0, 0, 3, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 80 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_CLEAR_BODY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BROWN - .2byte 0 @ padding - -@ Regice - base_stats 80, 50, 100, 50, 100, 200 - .byte TYPE_ICE - .byte TYPE_ICE - .byte 3 @ catch rate - .byte 216 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 3 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 80 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_CLEAR_BODY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Registeel - base_stats 80, 75, 150, 50, 75, 150 - .byte TYPE_STEEL - .byte TYPE_STEEL - .byte 3 @ catch rate - .byte 215 @ base exp. yield - ev_yield 0, 0, 2, 0, 0, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 80 @ egg cycles - .byte 35 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_CLEAR_BODY - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GRAY - .2byte 0 @ padding - -@ Kyogre - base_stats 100, 100, 90, 90, 150, 140 - .byte TYPE_WATER - .byte TYPE_WATER - .byte 5 @ catch rate - .byte 218 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_DRIZZLE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Groudon - base_stats 100, 150, 140, 90, 100, 90 - .byte TYPE_GROUND - .byte TYPE_GROUND - .byte 5 @ catch rate - .byte 218 @ base exp. yield - ev_yield 0, 3, 0, 0, 0, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_DROUGHT - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Rayquaza - base_stats 105, 150, 90, 95, 150, 90 - .byte TYPE_DRAGON - .byte TYPE_FLYING - .byte 3 @ catch rate - .byte 220 @ base exp. yield - ev_yield 0, 2, 0, 0, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_AIR_LOCK - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_GREEN - .2byte 0 @ padding - -@ Latias - base_stats 80, 80, 90, 110, 110, 130 - .byte TYPE_DRAGON - .byte TYPE_PSYCHIC - .byte 3 @ catch rate - .byte 211 @ base exp. yield - ev_yield 0, 0, 0, 0, 0, 3 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 254 @ gender - .byte 120 @ egg cycles - .byte 90 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_RED - .2byte 0 @ padding - -@ Latios - base_stats 80, 90, 80, 110, 130, 110 - .byte TYPE_DRAGON - .byte TYPE_PSYCHIC - .byte 3 @ catch rate - .byte 211 @ base exp. yield - ev_yield 0, 0, 0, 0, 3, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 0 @ gender - .byte 120 @ egg cycles - .byte 90 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding - -@ Jirachi - base_stats 100, 100, 100, 100, 100, 100 - .byte TYPE_STEEL - .byte TYPE_PSYCHIC - .byte 3 @ catch rate - .byte 215 @ base exp. yield - ev_yield 3, 0, 0, 0, 0, 0 - .2byte ITEM_STAR_PIECE - .2byte ITEM_STAR_PIECE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 100 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_SERENE_GRACE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_YELLOW - .2byte 0 @ padding - -@ Deoxys - base_stats 50, 150, 50, 150, 150, 50 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 3 @ catch rate - .byte 215 @ base exp. yield - ev_yield 0, 1, 0, 1, 1, 0 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 255 @ gender - .byte 120 @ egg cycles - .byte 0 @ base friendship - .byte GROWTH_SLOW - .byte EGG_GROUP_UNDISCOVERED - .byte EGG_GROUP_UNDISCOVERED - .byte ABILITY_PRESSURE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte F_SUMMARY_SCREEN_FLIP_SPRITE | BODY_COLOR_RED - .2byte 0 @ padding - -@ Chimecho - base_stats 65, 50, 70, 65, 95, 80 - .byte TYPE_PSYCHIC - .byte TYPE_PSYCHIC - .byte 45 @ catch rate - .byte 147 @ base exp. yield - ev_yield 0, 0, 0, 0, 1, 1 - .2byte ITEM_NONE - .2byte ITEM_NONE - .byte 127 @ gender - .byte 25 @ egg cycles - .byte 70 @ base friendship - .byte GROWTH_FAST - .byte EGG_GROUP_AMORPHOUS - .byte EGG_GROUP_AMORPHOUS - .byte ABILITY_LEVITATE - .byte ABILITY_NONE - .byte 0 @ Safari Zone flee rate - .byte BODY_COLOR_BLUE - .2byte 0 @ padding diff --git a/data/pokemon.s b/data/pokemon.s index 58c103e1c..ed65fe681 100644 --- a/data/pokemon.s +++ b/data/pokemon.s @@ -3,9 +3,6 @@ .section .rodata -@ 81FEC18 - .include "data/base_stats.inc" - @ 8201928 .include "data/level_up_learnsets.inc" diff --git a/include/pokemon.h b/include/pokemon.h index 28f9cbc1c..e3956df7a 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -407,6 +407,28 @@ struct SpindaSpot u16 image[16]; }; +enum { + GROWTH_MEDIUM_FAST, + GROWTH_ERRATIC, + GROWTH_FLUCTUATING, + GROWTH_MEDIUM_SLOW, + GROWTH_FAST, + GROWTH_SLOW +}; + +enum { + BODY_COLOR_RED, + BODY_COLOR_BLUE, + BODY_COLOR_YELLOW, + BODY_COLOR_GREEN, + BODY_COLOR_BLACK, + BODY_COLOR_BROWN, + BODY_COLOR_PURPLE, + BODY_COLOR_GRAY, + BODY_COLOR_WHITE, + BODY_COLOR_PINK +}; + #define EVO_FRIENDSHIP 0x0001 // Pokémon levels up with friendship ≥ 220 #define EVO_FRIENDSHIP_DAY 0x0002 // Pokémon levels up during the day with friendship ≥ 220 #define EVO_FRIENDSHIP_NIGHT 0x0003 // Pokémon levels up at night with friendship ≥ 220 diff --git a/src/pokemon_data.c b/src/pokemon_data.c index cf5af617f..c00a16609 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -2,6 +2,8 @@ #include "pokemon.h" #include "species.h" #include "trainer.h" +#include "abilities.h" +#include "items.h" const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151 }; @@ -2469,3 +2471,7818 @@ const u32 gExperienceTables[][101] = { 1000000 // 100 } }; + +const struct BaseStats gBaseStats[] = { + { // ?????????? + }, { + // Bulbasaur + 45, 49, 49, 45, 65, 65, + TYPE_GRASS, + TYPE_POISON, + 45, // catch rate + 64, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Ivysaur + 60, 62, 63, 60, 80, 80, + TYPE_GRASS, + TYPE_POISON, + 45, // catch rate + 141, // base exp. yield + 0, 0, 0, 0, 1, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Venusaur + 80, 82, 83, 80, 100, 100, + TYPE_GRASS, + TYPE_POISON, + 45, // catch rate + 208, // base exp. yield + 0, 0, 0, 0, 2, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Charmander + 39, 52, 43, 65, 60, 50, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 65, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Charmeleon + 58, 64, 58, 80, 80, 65, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 142, // base exp. yield + 0, 0, 0, 1, 1, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Charizard + 78, 84, 78, 100, 109, 85, + TYPE_FIRE, + TYPE_FLYING, + 45, // catch rate + 209, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Squirtle + 44, 48, 65, 43, 50, 64, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 66, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Wartortle + 59, 63, 80, 58, 65, 80, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 143, // base exp. yield + 0, 0, 1, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Blastoise + 79, 83, 100, 78, 85, 105, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 210, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Caterpie + 45, 30, 35, 45, 20, 20, + TYPE_BUG, + TYPE_BUG, + 255, // catch rate + 53, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHIELD_DUST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Metapod + 50, 20, 55, 30, 25, 25, + TYPE_BUG, + TYPE_BUG, + 120, // catch rate + 72, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Butterfree + 60, 45, 50, 70, 80, 80, + TYPE_BUG, + TYPE_FLYING, + 45, // catch rate + 160, // base exp. yield + 0, 0, 0, 0, 2, 1, + ITEM_NONE, + ITEM_SILVER_POWDER, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_COMPOUND_EYES, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Weedle + 40, 35, 30, 50, 20, 20, + TYPE_BUG, + TYPE_POISON, + 255, // catch rate + 52, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHIELD_DUST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Kakuna + 45, 25, 50, 35, 25, 25, + TYPE_BUG, + TYPE_POISON, + 120, // catch rate + 71, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Beedrill + 65, 80, 40, 75, 45, 80, + TYPE_BUG, + TYPE_POISON, + 45, // catch rate + 159, // base exp. yield + 0, 2, 0, 0, 0, 1, + ITEM_NONE, + ITEM_POISON_BARB, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Pidgey + 40, 45, 40, 56, 35, 35, + TYPE_NORMAL, + TYPE_FLYING, + 255, // catch rate + 55, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Pidgeotto + 63, 60, 55, 71, 50, 50, + TYPE_NORMAL, + TYPE_FLYING, + 120, // catch rate + 113, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Pidgeot + 83, 80, 75, 91, 70, 70, + TYPE_NORMAL, + TYPE_FLYING, + 45, // catch rate + 172, // base exp. yield + 0, 0, 0, 3, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Rattata + 30, 56, 35, 72, 25, 35, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 57, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_GUTS, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Raticate + 55, 81, 60, 97, 50, 70, + TYPE_NORMAL, + TYPE_NORMAL, + 127, // catch rate + 116, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_GUTS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Spearow + 40, 60, 30, 70, 31, 31, + TYPE_NORMAL, + TYPE_FLYING, + 255, // catch rate + 58, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Fearow + 65, 90, 65, 100, 61, 61, + TYPE_NORMAL, + TYPE_FLYING, + 90, // catch rate + 162, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_SHARP_BEAK, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Ekans + 35, 60, 44, 55, 40, 54, + TYPE_POISON, + TYPE_POISON, + 255, // catch rate + 62, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_DRAGON, + ABILITY_INTIMIDATE, + ABILITY_SHED_SKIN, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Arbok + 60, 85, 69, 80, 65, 79, + TYPE_POISON, + TYPE_POISON, + 90, // catch rate + 147, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_DRAGON, + ABILITY_INTIMIDATE, + ABILITY_SHED_SKIN, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Pikachu + 35, 55, 30, 90, 50, 40, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 190, // catch rate + 82, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_ORAN_BERRY, + ITEM_LIGHT_BALL, + 127, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_STATIC, + ABILITY_NONE, + 6, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Raichu + 60, 90, 55, 100, 90, 80, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 75, // catch rate + 122, // base exp. yield + 0, 0, 0, 3, 0, 0, + ITEM_NONE, + ITEM_ORAN_BERRY, + 127, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Sandshrew + 50, 75, 85, 40, 20, 30, + TYPE_GROUND, + TYPE_GROUND, + 255, // catch rate + 93, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_QUICK_CLAW, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SAND_VEIL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Sandslash + 75, 100, 110, 65, 45, 55, + TYPE_GROUND, + TYPE_GROUND, + 90, // catch rate + 163, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_QUICK_CLAW, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SAND_VEIL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Nidoran♀ + 55, 47, 52, 41, 40, 40, + TYPE_POISON, + TYPE_POISON, + 235, // catch rate + 59, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Nidorina + 70, 62, 67, 56, 55, 55, + TYPE_POISON, + TYPE_POISON, + 120, // catch rate + 117, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Nidoqueen + 90, 82, 87, 76, 75, 85, + TYPE_POISON, + TYPE_GROUND, + 45, // catch rate + 194, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Nidoran♂ + 46, 57, 40, 50, 40, 40, + TYPE_POISON, + TYPE_POISON, + 235, // catch rate + 60, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Nidorino + 61, 72, 57, 65, 55, 55, + TYPE_POISON, + TYPE_POISON, + 120, // catch rate + 118, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Nidoking + 81, 92, 77, 85, 85, 75, + TYPE_POISON, + TYPE_GROUND, + 45, // catch rate + 195, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Clefairy + 70, 45, 48, 35, 60, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 150, // catch rate + 68, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_LEPPA_BERRY, + ITEM_MOON_STONE, + 191, // gender + 10, // egg cycles + 140, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Clefable + 95, 70, 73, 60, 85, 90, + TYPE_NORMAL, + TYPE_NORMAL, + 25, // catch rate + 129, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_LEPPA_BERRY, + ITEM_MOON_STONE, + 191, // gender + 10, // egg cycles + 140, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Vulpix + 38, 41, 40, 65, 50, 65, + TYPE_FIRE, + TYPE_FIRE, + 190, // catch rate + 63, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_FLASH_FIRE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Ninetales + 73, 76, 75, 100, 81, 100, + TYPE_FIRE, + TYPE_FIRE, + 75, // catch rate + 178, // base exp. yield + 0, 0, 0, 1, 0, 1, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_FLASH_FIRE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Jigglypuff + 115, 45, 20, 20, 45, 25, + TYPE_NORMAL, + TYPE_NORMAL, + 170, // catch rate + 76, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Wigglytuff + 140, 70, 45, 45, 75, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 50, // catch rate + 109, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Zubat + 40, 45, 35, 55, 30, 40, + TYPE_POISON, + TYPE_FLYING, + 255, // catch rate + 54, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Golbat + 75, 80, 70, 90, 65, 75, + TYPE_POISON, + TYPE_FLYING, + 90, // catch rate + 171, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Oddish + 45, 50, 55, 30, 75, 65, + TYPE_GRASS, + TYPE_POISON, + 255, // catch rate + 78, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 4, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Gloom + 60, 65, 70, 40, 85, 75, + TYPE_GRASS, + TYPE_POISON, + 120, // catch rate + 132, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 6, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Vileplume + 75, 80, 85, 50, 100, 90, + TYPE_GRASS, + TYPE_POISON, + 45, // catch rate + 184, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Paras + 35, 70, 55, 25, 45, 55, + TYPE_BUG, + TYPE_GRASS, + 190, // catch rate + 70, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_TINY_MUSHROOM, + ITEM_BIG_MUSHROOM, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_GRASS, + ABILITY_EFFECT_SPORE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Parasect + 60, 95, 80, 30, 60, 80, + TYPE_BUG, + TYPE_GRASS, + 75, // catch rate + 128, // base exp. yield + 0, 2, 1, 0, 0, 0, + ITEM_TINY_MUSHROOM, + ITEM_BIG_MUSHROOM, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_GRASS, + ABILITY_EFFECT_SPORE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Venonat + 60, 55, 50, 45, 40, 55, + TYPE_BUG, + TYPE_POISON, + 190, // catch rate + 75, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_COMPOUND_EYES, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Venomoth + 70, 65, 60, 90, 90, 75, + TYPE_BUG, + TYPE_POISON, + 75, // catch rate + 138, // base exp. yield + 0, 0, 0, 1, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHIELD_DUST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Diglett + 10, 55, 25, 95, 35, 45, + TYPE_GROUND, + TYPE_GROUND, + 255, // catch rate + 81, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SAND_VEIL, + ABILITY_ARENA_TRAP, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Dugtrio + 35, 80, 50, 120, 50, 70, + TYPE_GROUND, + TYPE_GROUND, + 50, // catch rate + 153, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SAND_VEIL, + ABILITY_ARENA_TRAP, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Meowth + 40, 45, 35, 90, 40, 40, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 69, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PICKUP, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Persian + 65, 70, 60, 115, 65, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 90, // catch rate + 148, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_LIMBER, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Psyduck + 50, 52, 48, 55, 65, 50, + TYPE_WATER, + TYPE_WATER, + 190, // catch rate + 80, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_DAMP, + ABILITY_CLOUD_NINE, + 6, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Golduck + 80, 82, 78, 85, 95, 80, + TYPE_WATER, + TYPE_WATER, + 75, // catch rate + 174, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_DAMP, + ABILITY_CLOUD_NINE, + 8, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Mankey + 40, 80, 35, 70, 35, 45, + TYPE_FIGHTING, + TYPE_FIGHTING, + 190, // catch rate + 74, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_VITAL_SPIRIT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Primeape + 65, 105, 60, 95, 60, 70, + TYPE_FIGHTING, + TYPE_FIGHTING, + 75, // catch rate + 149, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_VITAL_SPIRIT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Growlithe + 55, 70, 45, 60, 70, 50, + TYPE_FIRE, + TYPE_FIRE, + 190, // catch rate + 91, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INTIMIDATE, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Arcanine + 90, 110, 80, 95, 100, 80, + TYPE_FIRE, + TYPE_FIRE, + 75, // catch rate + 213, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INTIMIDATE, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Poliwag + 40, 50, 40, 90, 40, 40, + TYPE_WATER, + TYPE_WATER, + 255, // catch rate + 77, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_WATER_ABSORB, + ABILITY_DAMP, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE, TRUE + }, { // Poliwhirl + 65, 65, 65, 90, 50, 50, + TYPE_WATER, + TYPE_WATER, + 120, // catch rate + 131, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_WATER_ABSORB, + ABILITY_DAMP, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE, TRUE + }, { // Poliwrath + 90, 85, 95, 70, 70, 90, + TYPE_WATER, + TYPE_FIGHTING, + 45, // catch rate + 185, // base exp. yield + 0, 0, 3, 0, 0, 0, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_WATER_ABSORB, + ABILITY_DAMP, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE, TRUE + }, { // Abra + 25, 20, 15, 90, 105, 55, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 200, // catch rate + 73, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_TWISTED_SPOON, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SYNCHRONIZE, + ABILITY_INNER_FOCUS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Kadabra + 40, 35, 30, 105, 120, 70, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 100, // catch rate + 145, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_TWISTED_SPOON, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SYNCHRONIZE, + ABILITY_INNER_FOCUS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Alakazam + 55, 50, 45, 120, 135, 85, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 50, // catch rate + 186, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_TWISTED_SPOON, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SYNCHRONIZE, + ABILITY_INNER_FOCUS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Machop + 70, 80, 50, 35, 35, 35, + TYPE_FIGHTING, + TYPE_FIGHTING, + 180, // catch rate + 88, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Machoke + 80, 100, 70, 45, 50, 60, + TYPE_FIGHTING, + TYPE_FIGHTING, + 90, // catch rate + 146, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Machamp + 90, 130, 80, 55, 65, 85, + TYPE_FIGHTING, + TYPE_FIGHTING, + 45, // catch rate + 193, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Bellsprout + 50, 75, 35, 40, 70, 30, + TYPE_GRASS, + TYPE_POISON, + 255, // catch rate + 84, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Weepinbell + 65, 90, 50, 55, 85, 45, + TYPE_GRASS, + TYPE_POISON, + 120, // catch rate + 151, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Victreebel + 80, 105, 65, 70, 100, 60, + TYPE_GRASS, + TYPE_POISON, + 45, // catch rate + 191, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Tentacool + 40, 40, 35, 70, 50, 100, + TYPE_WATER, + TYPE_POISON, + 190, // catch rate + 105, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_CLEAR_BODY, + ABILITY_LIQUID_OOZE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Tentacruel + 80, 70, 65, 100, 80, 120, + TYPE_WATER, + TYPE_POISON, + 60, // catch rate + 205, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_CLEAR_BODY, + ABILITY_LIQUID_OOZE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Geodude + 40, 80, 100, 20, 30, 30, + TYPE_ROCK, + TYPE_GROUND, + 255, // catch rate + 86, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_EVERSTONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_ROCK_HEAD, + ABILITY_STURDY, + 4, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Graveler + 55, 95, 115, 35, 45, 45, + TYPE_ROCK, + TYPE_GROUND, + 120, // catch rate + 134, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_EVERSTONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_ROCK_HEAD, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Golem + 80, 110, 130, 45, 55, 65, + TYPE_ROCK, + TYPE_GROUND, + 45, // catch rate + 177, // base exp. yield + 0, 0, 3, 0, 0, 0, + ITEM_NONE, + ITEM_EVERSTONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_ROCK_HEAD, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Ponyta + 50, 85, 55, 90, 65, 65, + TYPE_FIRE, + TYPE_FIRE, + 190, // catch rate + 152, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Rapidash + 65, 100, 70, 105, 80, 80, + TYPE_FIRE, + TYPE_FIRE, + 60, // catch rate + 192, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Slowpoke + 90, 65, 65, 15, 40, 40, + TYPE_WATER, + TYPE_PSYCHIC, + 190, // catch rate + 99, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_OBLIVIOUS, + ABILITY_OWN_TEMPO, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Slowbro + 95, 75, 110, 30, 100, 80, + TYPE_WATER, + TYPE_PSYCHIC, + 75, // catch rate + 164, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_OBLIVIOUS, + ABILITY_OWN_TEMPO, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Magnemite + 25, 35, 70, 45, 95, 55, + TYPE_ELECTRIC, + TYPE_STEEL, + 190, // catch rate + 89, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_MAGNET_PULL, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Magneton + 50, 60, 95, 70, 120, 70, + TYPE_ELECTRIC, + TYPE_STEEL, + 60, // catch rate + 161, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_MAGNET_PULL, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Farfetch'd + 52, 65, 55, 60, 58, 62, + TYPE_NORMAL, + TYPE_FLYING, + 45, // catch rate + 94, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_STICK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FIELD, + ABILITY_KEEN_EYE, + ABILITY_INNER_FOCUS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Doduo + 35, 85, 45, 75, 35, 35, + TYPE_NORMAL, + TYPE_FLYING, + 190, // catch rate + 96, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SHARP_BEAK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_RUN_AWAY, + ABILITY_EARLY_BIRD, + 8, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Dodrio + 60, 110, 70, 100, 60, 60, + TYPE_NORMAL, + TYPE_FLYING, + 45, // catch rate + 158, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SHARP_BEAK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_RUN_AWAY, + ABILITY_EARLY_BIRD, + 10, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Seel + 65, 45, 55, 45, 45, 70, + TYPE_WATER, + TYPE_WATER, + 190, // catch rate + 100, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Dewgong + 90, 70, 80, 70, 70, 95, + TYPE_WATER, + TYPE_ICE, + 75, // catch rate + 176, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Grimer + 80, 80, 50, 25, 40, 50, + TYPE_POISON, + TYPE_POISON, + 190, // catch rate + 90, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NUGGET, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_STENCH, + ABILITY_STICKY_HOLD, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Muk + 105, 105, 75, 50, 65, 100, + TYPE_POISON, + TYPE_POISON, + 75, // catch rate + 157, // base exp. yield + 1, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NUGGET, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_STENCH, + ABILITY_STICKY_HOLD, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Shellder + 30, 65, 100, 40, 45, 25, + TYPE_WATER, + TYPE_WATER, + 190, // catch rate + 97, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_PEARL, + ITEM_BIG_PEARL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_SHELL_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Cloyster + 50, 95, 180, 70, 85, 45, + TYPE_WATER, + TYPE_ICE, + 60, // catch rate + 203, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_PEARL, + ITEM_BIG_PEARL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_SHELL_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Gastly + 30, 35, 30, 80, 100, 35, + TYPE_GHOST, + TYPE_POISON, + 190, // catch rate + 95, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Haunter + 45, 50, 45, 95, 115, 55, + TYPE_GHOST, + TYPE_POISON, + 90, // catch rate + 126, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Gengar + 60, 65, 60, 110, 130, 75, + TYPE_GHOST, + TYPE_POISON, + 45, // catch rate + 190, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Onix + 35, 45, 160, 70, 30, 45, + TYPE_ROCK, + TYPE_GROUND, + 45, // catch rate + 108, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_ROCK_HEAD, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Drowzee + 60, 48, 45, 42, 43, 90, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 190, // catch rate + 102, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_INSOMNIA, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Hypno + 85, 73, 70, 67, 73, 115, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 75, // catch rate + 165, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_INSOMNIA, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Krabby + 30, 105, 90, 50, 25, 25, + TYPE_WATER, + TYPE_WATER, + 225, // catch rate + 115, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_HYPER_CUTTER, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Kingler + 55, 130, 115, 75, 50, 50, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 206, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_HYPER_CUTTER, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_RED, TRUE + }, { // Voltorb + 40, 30, 50, 100, 55, 55, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 190, // catch rate + 103, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_SOUNDPROOF, + ABILITY_STATIC, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Electrode + 60, 50, 70, 140, 80, 80, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 60, // catch rate + 150, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_SOUNDPROOF, + ABILITY_STATIC, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Exeggcute + 60, 40, 80, 40, 60, 45, + TYPE_GRASS, + TYPE_PSYCHIC, + 90, // catch rate + 98, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Exeggutor + 95, 95, 85, 55, 125, 65, + TYPE_GRASS, + TYPE_PSYCHIC, + 45, // catch rate + 212, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Cubone + 50, 50, 95, 35, 40, 50, + TYPE_GROUND, + TYPE_GROUND, + 190, // catch rate + 87, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_THICK_CLUB, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_ROCK_HEAD, + ABILITY_LIGHTNING_ROD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Marowak + 60, 80, 110, 45, 50, 80, + TYPE_GROUND, + TYPE_GROUND, + 75, // catch rate + 124, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_THICK_CLUB, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_ROCK_HEAD, + ABILITY_LIGHTNING_ROD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Hitmonlee + 50, 120, 53, 87, 35, 110, + TYPE_FIGHTING, + TYPE_FIGHTING, + 45, // catch rate + 139, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_LIMBER, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Hitmonchan + 50, 105, 79, 76, 35, 110, + TYPE_FIGHTING, + TYPE_FIGHTING, + 45, // catch rate + 140, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Lickitung + 90, 55, 75, 30, 60, 75, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 127, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_OWN_TEMPO, + ABILITY_OBLIVIOUS, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Koffing + 40, 65, 95, 35, 60, 45, + TYPE_POISON, + TYPE_POISON, + 190, // catch rate + 114, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_SMOKE_BALL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Weezing + 65, 90, 120, 60, 85, 70, + TYPE_POISON, + TYPE_POISON, + 60, // catch rate + 173, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_SMOKE_BALL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Rhyhorn + 80, 85, 95, 25, 30, 30, + TYPE_GROUND, + TYPE_ROCK, + 120, // catch rate + 135, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_LIGHTNING_ROD, + ABILITY_ROCK_HEAD, + 4, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Rhydon + 105, 130, 120, 40, 45, 45, + TYPE_GROUND, + TYPE_ROCK, + 60, // catch rate + 204, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_LIGHTNING_ROD, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Chansey + 250, 5, 5, 50, 35, 105, + TYPE_NORMAL, + TYPE_NORMAL, + 30, // catch rate + 255, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_LUCKY_EGG, + 254, // gender + 40, // egg cycles + 140, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_NATURAL_CURE, + ABILITY_SERENE_GRACE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Tangela + 65, 55, 115, 60, 100, 40, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 166, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Kangaskhan + 105, 95, 80, 90, 40, 80, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 175, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_EARLY_BIRD, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Horsea + 30, 40, 70, 60, 70, 25, + TYPE_WATER, + TYPE_WATER, + 225, // catch rate + 83, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Seadra + 55, 65, 95, 85, 95, 45, + TYPE_WATER, + TYPE_WATER, + 75, // catch rate + 155, // base exp. yield + 0, 0, 1, 0, 1, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Goldeen + 45, 67, 60, 63, 35, 50, + TYPE_WATER, + TYPE_WATER, + 225, // catch rate + 111, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_SWIFT_SWIM, + ABILITY_WATER_VEIL, + 4, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Seaking + 80, 92, 65, 68, 65, 80, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 170, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_SWIFT_SWIM, + ABILITY_WATER_VEIL, + 6, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Staryu + 30, 45, 55, 85, 70, 55, + TYPE_WATER, + TYPE_WATER, + 225, // catch rate + 106, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_STARDUST, + ITEM_STAR_PIECE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_ILLUMINATE, + ABILITY_NATURAL_CURE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Starmie + 60, 75, 85, 115, 100, 85, + TYPE_WATER, + TYPE_PSYCHIC, + 60, // catch rate + 207, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_STARDUST, + ITEM_STAR_PIECE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_ILLUMINATE, + ABILITY_NATURAL_CURE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Mr. mime + 40, 45, 65, 90, 100, 120, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 136, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_LEPPA_BERRY, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SOUNDPROOF, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Scyther + 70, 110, 80, 105, 55, 80, + TYPE_BUG, + TYPE_FLYING, + 45, // catch rate + 187, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Jynx + 65, 50, 35, 95, 115, 95, + TYPE_ICE, + TYPE_PSYCHIC, + 45, // catch rate + 137, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_ASPEAR_BERRY, + ITEM_ASPEAR_BERRY, + 254, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Electabuzz + 65, 83, 57, 105, 95, 85, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 45, // catch rate + 156, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW, TRUE + }, { // Magmar + 65, 95, 57, 93, 100, 85, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 167, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 63, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_FLAME_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Pinsir + 65, 125, 100, 85, 55, 70, + TYPE_BUG, + TYPE_BUG, + 45, // catch rate + 200, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_HYPER_CUTTER, + ABILITY_NONE, + 8, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Tauros + 75, 100, 95, 110, 40, 70, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 211, // base exp. yield + 0, 1, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Magikarp + 20, 10, 55, 80, 15, 20, + TYPE_WATER, + TYPE_WATER, + 255, // catch rate + 20, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 5, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_DRAGON, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 4, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Gyarados + 95, 125, 79, 81, 60, 100, + TYPE_WATER, + TYPE_FLYING, + 45, // catch rate + 214, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 5, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_DRAGON, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Lapras + 130, 85, 80, 60, 85, 95, + TYPE_WATER, + TYPE_ICE, + 45, // catch rate + 219, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_WATER_ABSORB, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Ditto + 48, 48, 48, 48, 48, 48, + TYPE_NORMAL, + TYPE_NORMAL, + 35, // catch rate + 61, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_METAL_POWDER, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_DITTO, + EGG_GROUP_DITTO, + ABILITY_LIMBER, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Eevee + 55, 55, 50, 55, 45, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 92, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Vaporeon + 130, 65, 60, 65, 110, 95, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 196, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_WATER_ABSORB, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Jolteon + 65, 65, 60, 130, 110, 95, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 45, // catch rate + 197, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_VOLT_ABSORB, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Flareon + 65, 130, 60, 65, 95, 110, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 198, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_FLASH_FIRE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Porygon + 65, 60, 70, 40, 85, 75, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 130, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_TRACE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Omanyte + 35, 40, 100, 35, 90, 55, + TYPE_ROCK, + TYPE_WATER, + 45, // catch rate + 120, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_SWIFT_SWIM, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Omastar + 70, 60, 125, 55, 115, 70, + TYPE_ROCK, + TYPE_WATER, + 45, // catch rate + 199, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_SWIFT_SWIM, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Kabuto + 30, 80, 90, 55, 55, 45, + TYPE_ROCK, + TYPE_WATER, + 45, // catch rate + 119, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_SWIFT_SWIM, + ABILITY_BATTLE_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Kabutops + 60, 115, 105, 80, 65, 70, + TYPE_ROCK, + TYPE_WATER, + 45, // catch rate + 201, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_SWIFT_SWIM, + ABILITY_BATTLE_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Aerodactyl + 80, 105, 65, 130, 60, 75, + TYPE_ROCK, + TYPE_FLYING, + 45, // catch rate + 202, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_ROCK_HEAD, + ABILITY_PRESSURE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Snorlax + 160, 110, 65, 30, 65, 110, + TYPE_NORMAL, + TYPE_NORMAL, + 25, // catch rate + 154, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_LEFTOVERS, + ITEM_LEFTOVERS, + 31, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_IMMUNITY, + ABILITY_THICK_FAT, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Articuno + 90, 85, 100, 85, 95, 125, + TYPE_ICE, + TYPE_FLYING, + 3, // catch rate + 215, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Zapdos + 90, 90, 85, 100, 125, 90, + TYPE_ELECTRIC, + TYPE_FLYING, + 3, // catch rate + 216, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Moltres + 90, 100, 90, 90, 125, 85, + TYPE_FIRE, + TYPE_FLYING, + 3, // catch rate + 217, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Dratini + 41, 64, 45, 50, 50, 50, + TYPE_DRAGON, + TYPE_DRAGON, + 45, // catch rate + 67, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Dragonair + 61, 84, 65, 70, 70, 70, + TYPE_DRAGON, + TYPE_DRAGON, + 45, // catch rate + 144, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Dragonite + 91, 134, 95, 80, 100, 100, + TYPE_DRAGON, + TYPE_FLYING, + 45, // catch rate + 218, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Mewtwo + 106, 110, 90, 130, 154, 90, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 3, // catch rate + 220, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Mew + 100, 100, 100, 100, 100, 100, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 64, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_LUM_BERRY, + ITEM_LUM_BERRY, + 255, // gender + 120, // egg cycles + 100, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_SYNCHRONIZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Chikorita + 45, 49, 65, 45, 49, 65, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 64, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Bayleef + 60, 62, 80, 60, 63, 80, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 141, // base exp. yield + 0, 0, 1, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Meganium + 80, 82, 100, 80, 83, 100, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 208, // base exp. yield + 0, 0, 1, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Cyndaquil + 39, 52, 43, 65, 60, 50, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 65, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Quilava + 58, 64, 58, 80, 80, 65, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 142, // base exp. yield + 0, 0, 0, 1, 1, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Typhlosion + 78, 84, 78, 100, 109, 85, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 209, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Totodile + 50, 65, 64, 43, 44, 48, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 66, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Croconaw + 65, 80, 80, 58, 59, 63, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 143, // base exp. yield + 0, 1, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE, TRUE + }, { // Feraligatr + 85, 105, 100, 78, 79, 83, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 210, // base exp. yield + 0, 2, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Sentret + 35, 46, 34, 20, 35, 45, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 57, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_ORAN_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_KEEN_EYE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Furret + 85, 76, 64, 90, 45, 55, + TYPE_NORMAL, + TYPE_NORMAL, + 90, // catch rate + 116, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_ORAN_BERRY, + ITEM_SITRUS_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_KEEN_EYE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Hoothoot + 60, 30, 30, 50, 36, 56, + TYPE_NORMAL, + TYPE_FLYING, + 255, // catch rate + 58, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INSOMNIA, + ABILITY_KEEN_EYE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Noctowl + 100, 50, 50, 70, 76, 96, + TYPE_NORMAL, + TYPE_FLYING, + 90, // catch rate + 162, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INSOMNIA, + ABILITY_KEEN_EYE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Ledyba + 40, 20, 30, 55, 40, 80, + TYPE_BUG, + TYPE_FLYING, + 255, // catch rate + 54, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_EARLY_BIRD, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Ledian + 55, 35, 50, 85, 55, 110, + TYPE_BUG, + TYPE_FLYING, + 90, // catch rate + 134, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_EARLY_BIRD, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Spinarak + 40, 60, 40, 30, 40, 40, + TYPE_BUG, + TYPE_POISON, + 255, // catch rate + 54, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_INSOMNIA, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Ariados + 70, 90, 70, 40, 60, 60, + TYPE_BUG, + TYPE_POISON, + 90, // catch rate + 134, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_INSOMNIA, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Crobat + 85, 90, 80, 130, 70, 80, + TYPE_POISON, + TYPE_FLYING, + 90, // catch rate + 204, // base exp. yield + 0, 0, 0, 3, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Chinchou + 75, 38, 38, 67, 56, 56, + TYPE_WATER, + TYPE_ELECTRIC, + 190, // catch rate + 90, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_YELLOW_SHARD, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_VOLT_ABSORB, + ABILITY_ILLUMINATE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Lanturn + 125, 58, 58, 67, 76, 76, + TYPE_WATER, + TYPE_ELECTRIC, + 75, // catch rate + 156, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_YELLOW_SHARD, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_VOLT_ABSORB, + ABILITY_ILLUMINATE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Pichu + 20, 40, 15, 60, 35, 35, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 190, // catch rate + 42, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_ORAN_BERRY, + 127, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Cleffa + 50, 25, 28, 15, 45, 55, + TYPE_NORMAL, + TYPE_NORMAL, + 150, // catch rate + 37, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_LEPPA_BERRY, + ITEM_MOON_STONE, + 191, // gender + 10, // egg cycles + 140, // base friendship + GROWTH_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Igglybuff + 90, 30, 15, 15, 40, 20, + TYPE_NORMAL, + TYPE_NORMAL, + 170, // catch rate + 39, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK, TRUE + }, { // Togepi + 35, 20, 65, 20, 40, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 190, // catch rate + 74, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_HUSTLE, + ABILITY_SERENE_GRACE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Togetic + 55, 40, 85, 40, 80, 105, + TYPE_NORMAL, + TYPE_FLYING, + 75, // catch rate + 114, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FAIRY, + ABILITY_HUSTLE, + ABILITY_SERENE_GRACE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Natu + 40, 50, 45, 70, 70, 45, + TYPE_PSYCHIC, + TYPE_FLYING, + 190, // catch rate + 73, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_SYNCHRONIZE, + ABILITY_EARLY_BIRD, + 6, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Xatu + 65, 75, 70, 95, 95, 70, + TYPE_PSYCHIC, + TYPE_FLYING, + 75, // catch rate + 171, // base exp. yield + 0, 0, 0, 1, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_SYNCHRONIZE, + ABILITY_EARLY_BIRD, + 8, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Mareep + 55, 40, 40, 35, 65, 45, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 235, // catch rate + 59, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Flaaffy + 70, 55, 55, 45, 80, 60, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 120, // catch rate + 117, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Ampharos + 90, 75, 75, 55, 115, 90, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 45, // catch rate + 194, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Bellossom + 75, 80, 85, 50, 90, 100, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 184, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Marill + 70, 20, 50, 40, 20, 50, + TYPE_WATER, + TYPE_WATER, + 190, // catch rate + 58, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FAIRY, + ABILITY_THICK_FAT, + ABILITY_HUGE_POWER, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Azumarill + 100, 50, 80, 50, 50, 80, + TYPE_WATER, + TYPE_WATER, + 75, // catch rate + 153, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FAIRY, + ABILITY_THICK_FAT, + ABILITY_HUGE_POWER, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Sudowoodo + 70, 100, 115, 30, 30, 65, + TYPE_ROCK, + TYPE_ROCK, + 65, // catch rate + 135, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_STURDY, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Politoed + 90, 75, 75, 70, 90, 100, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 185, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_WATER_ABSORB, + ABILITY_DAMP, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN, TRUE + }, { // Hoppip + 35, 35, 40, 50, 35, 55, + TYPE_GRASS, + TYPE_FLYING, + 255, // catch rate + 74, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Skiploom + 55, 45, 50, 80, 45, 65, + TYPE_GRASS, + TYPE_FLYING, + 120, // catch rate + 136, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Jumpluff + 75, 55, 70, 110, 55, 85, + TYPE_GRASS, + TYPE_FLYING, + 45, // catch rate + 176, // base exp. yield + 0, 0, 0, 3, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Aipom + 55, 70, 55, 85, 40, 55, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 94, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_PICKUP, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Sunkern + 30, 30, 30, 30, 30, 30, + TYPE_GRASS, + TYPE_GRASS, + 235, // catch rate + 52, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Sunflora + 75, 75, 55, 30, 105, 85, + TYPE_GRASS, + TYPE_GRASS, + 120, // catch rate + 146, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Yanma + 65, 65, 45, 95, 75, 45, + TYPE_BUG, + TYPE_FLYING, + 75, // catch rate + 147, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SPEED_BOOST, + ABILITY_COMPOUND_EYES, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Wooper + 55, 45, 45, 15, 25, 25, + TYPE_WATER, + TYPE_GROUND, + 255, // catch rate + 52, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_DAMP, + ABILITY_WATER_ABSORB, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Quagsire + 95, 85, 85, 35, 65, 65, + TYPE_WATER, + TYPE_GROUND, + 90, // catch rate + 137, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_DAMP, + ABILITY_WATER_ABSORB, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Espeon + 65, 65, 60, 110, 130, 95, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 197, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SYNCHRONIZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Umbreon + 95, 65, 110, 65, 60, 130, + TYPE_DARK, + TYPE_DARK, + 45, // catch rate + 197, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SYNCHRONIZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Murkrow + 60, 85, 42, 91, 85, 42, + TYPE_DARK, + TYPE_FLYING, + 30, // catch rate + 107, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INSOMNIA, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Slowking + 95, 75, 80, 30, 100, 110, + TYPE_WATER, + TYPE_PSYCHIC, + 70, // catch rate + 164, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_OBLIVIOUS, + ABILITY_OWN_TEMPO, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Misdreavus + 60, 60, 60, 85, 85, 85, + TYPE_GHOST, + TYPE_GHOST, + 45, // catch rate + 147, // base exp. yield + 0, 0, 0, 0, 1, 1, + ITEM_NONE, + ITEM_SPELL_TAG, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Unown + 48, 72, 48, 48, 72, 48, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 225, // catch rate + 61, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK, TRUE + }, { // Wobbuffet + 190, 33, 58, 33, 33, 58, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 177, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_SHADOW_TAG, + ABILITY_NONE, + 4, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Girafarig + 70, 80, 65, 85, 90, 65, + TYPE_NORMAL, + TYPE_PSYCHIC, + 60, // catch rate + 149, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_PERSIM_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INNER_FOCUS, + ABILITY_EARLY_BIRD, + 4, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Pineco + 50, 65, 90, 15, 35, 35, + TYPE_BUG, + TYPE_BUG, + 190, // catch rate + 60, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_STURDY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Forretress + 75, 90, 140, 40, 60, 60, + TYPE_BUG, + TYPE_STEEL, + 75, // catch rate + 118, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_STURDY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Dunsparce + 100, 70, 70, 45, 65, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 190, // catch rate + 75, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SERENE_GRACE, + ABILITY_RUN_AWAY, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Gligar + 65, 75, 105, 85, 35, 65, + TYPE_GROUND, + TYPE_FLYING, + 60, // catch rate + 108, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_HYPER_CUTTER, + ABILITY_SAND_VEIL, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Steelix + 75, 85, 200, 30, 55, 65, + TYPE_STEEL, + TYPE_GROUND, + 25, // catch rate + 196, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_ROCK_HEAD, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Snubbull + 60, 80, 50, 30, 40, 40, + TYPE_NORMAL, + TYPE_NORMAL, + 190, // catch rate + 63, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_INTIMIDATE, + ABILITY_RUN_AWAY, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Granbull + 90, 120, 75, 45, 60, 60, + TYPE_NORMAL, + TYPE_NORMAL, + 75, // catch rate + 178, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_INTIMIDATE, + ABILITY_INTIMIDATE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Qwilfish + 65, 95, 75, 85, 55, 55, + TYPE_WATER, + TYPE_POISON, + 45, // catch rate + 100, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_POISON_POINT, + ABILITY_SWIFT_SWIM, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Scizor + 70, 130, 100, 65, 55, 80, + TYPE_BUG, + TYPE_STEEL, + 25, // catch rate + 200, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Shuckle + 20, 10, 230, 5, 10, 230, + TYPE_BUG, + TYPE_ROCK, + 190, // catch rate + 80, // base exp. yield + 0, 0, 1, 0, 0, 1, + ITEM_ORAN_BERRY, + ITEM_ORAN_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_STURDY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Heracross + 80, 125, 75, 85, 40, 95, + TYPE_BUG, + TYPE_FIGHTING, + 45, // catch rate + 200, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_GUTS, + 8, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Sneasel + 55, 95, 55, 115, 35, 75, + TYPE_DARK, + TYPE_ICE, + 60, // catch rate + 132, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_QUICK_CLAW, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INNER_FOCUS, + ABILITY_KEEN_EYE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK, TRUE + }, { // Teddiursa + 60, 80, 50, 40, 50, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 120, // catch rate + 124, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PICKUP, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN, TRUE + }, { // Ursaring + 90, 130, 75, 55, 75, 75, + TYPE_NORMAL, + TYPE_NORMAL, + 60, // catch rate + 189, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Slugma + 40, 40, 40, 20, 70, 40, + TYPE_FIRE, + TYPE_FIRE, + 190, // catch rate + 78, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_MAGMA_ARMOR, + ABILITY_FLAME_BODY, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Magcargo + 50, 50, 120, 30, 80, 80, + TYPE_FIRE, + TYPE_ROCK, + 75, // catch rate + 154, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_MAGMA_ARMOR, + ABILITY_FLAME_BODY, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Swinub + 50, 50, 40, 50, 30, 30, + TYPE_ICE, + TYPE_GROUND, + 225, // catch rate + 78, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Piloswine + 100, 100, 80, 50, 60, 60, + TYPE_ICE, + TYPE_GROUND, + 75, // catch rate + 160, // base exp. yield + 1, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Corsola + 55, 55, 85, 35, 65, 85, + TYPE_WATER, + TYPE_ROCK, + 60, // catch rate + 113, // base exp. yield + 0, 0, 1, 0, 0, 1, + ITEM_NONE, + ITEM_RED_SHARD, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_HUSTLE, + ABILITY_NATURAL_CURE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Remoraid + 35, 65, 35, 65, 65, 35, + TYPE_WATER, + TYPE_WATER, + 190, // catch rate + 78, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_2, + ABILITY_HUSTLE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Octillery + 75, 105, 75, 45, 105, 75, + TYPE_WATER, + TYPE_WATER, + 75, // catch rate + 164, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_2, + ABILITY_SUCTION_CUPS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Delibird + 45, 55, 45, 75, 65, 45, + TYPE_ICE, + TYPE_FLYING, + 45, // catch rate + 183, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_VITAL_SPIRIT, + ABILITY_HUSTLE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Mantine + 65, 40, 70, 70, 80, 140, + TYPE_WATER, + TYPE_FLYING, + 25, // catch rate + 168, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_SWIFT_SWIM, + ABILITY_WATER_ABSORB, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Skarmory + 65, 80, 140, 70, 40, 70, + TYPE_STEEL, + TYPE_FLYING, + 25, // catch rate + 168, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Houndour + 45, 60, 30, 65, 80, 50, + TYPE_DARK, + TYPE_FIRE, + 120, // catch rate + 114, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_EARLY_BIRD, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Houndoom + 75, 90, 50, 95, 110, 80, + TYPE_DARK, + TYPE_FIRE, + 45, // catch rate + 204, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_EARLY_BIRD, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Kingdra + 75, 95, 95, 85, 95, 95, + TYPE_WATER, + TYPE_DRAGON, + 45, // catch rate + 207, // base exp. yield + 0, 1, 0, 0, 1, 1, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Phanpy + 90, 60, 60, 40, 40, 40, + TYPE_GROUND, + TYPE_GROUND, + 120, // catch rate + 124, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PICKUP, + ABILITY_NONE, + 10, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Donphan + 90, 120, 120, 50, 60, 60, + TYPE_GROUND, + TYPE_GROUND, + 60, // catch rate + 189, // base exp. yield + 0, 1, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_STURDY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Porygon2 + 85, 80, 90, 60, 105, 95, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 180, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_TRACE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Stantler + 73, 95, 62, 85, 85, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 165, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Smeargle + 55, 20, 35, 75, 20, 45, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 106, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_OWN_TEMPO, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Tyrogue + 35, 35, 35, 35, 35, 35, + TYPE_FIGHTING, + TYPE_FIGHTING, + 75, // catch rate + 91, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Hitmontop + 50, 95, 95, 70, 35, 110, + TYPE_FIGHTING, + TYPE_FIGHTING, + 45, // catch rate + 138, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Smoochum + 45, 30, 15, 65, 85, 65, + TYPE_ICE, + TYPE_PSYCHIC, + 45, // catch rate + 87, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_ASPEAR_BERRY, + ITEM_ASPEAR_BERRY, + 254, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Elekid + 45, 63, 37, 95, 65, 55, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 45, // catch rate + 106, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW, TRUE + }, { // Magby + 45, 75, 37, 83, 70, 55, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 117, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 63, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_FLAME_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Miltank + 95, 80, 105, 100, 40, 70, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 200, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_MOOMOO_MILK, + ITEM_MOOMOO_MILK, + 254, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Blissey + 255, 10, 10, 55, 75, 135, + TYPE_NORMAL, + TYPE_NORMAL, + 30, // catch rate + 255, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_LUCKY_EGG, + 254, // gender + 40, // egg cycles + 140, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_NATURAL_CURE, + ABILITY_SERENE_GRACE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Raikou + 90, 85, 75, 115, 115, 100, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 3, // catch rate + 216, // base exp. yield + 0, 0, 0, 2, 1, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Entei + 115, 115, 85, 100, 90, 75, + TYPE_FIRE, + TYPE_FIRE, + 3, // catch rate + 217, // base exp. yield + 1, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Suicune + 100, 75, 115, 85, 90, 115, + TYPE_WATER, + TYPE_WATER, + 3, // catch rate + 215, // base exp. yield + 0, 0, 1, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Larvitar + 50, 64, 50, 41, 45, 50, + TYPE_ROCK, + TYPE_GROUND, + 45, // catch rate + 67, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Pupitar + 70, 84, 70, 51, 65, 70, + TYPE_ROCK, + TYPE_GROUND, + 45, // catch rate + 144, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Tyranitar + 100, 134, 110, 61, 95, 100, + TYPE_ROCK, + TYPE_DARK, + 45, // catch rate + 218, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_SAND_STREAM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Lugia + 106, 90, 130, 110, 90, 154, + TYPE_PSYCHIC, + TYPE_FLYING, + 3, // catch rate + 220, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Ho-Oh + 106, 130, 90, 90, 110, 154, + TYPE_FIRE, + TYPE_FLYING, + 3, // catch rate + 220, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_SACRED_ASH, + ITEM_SACRED_ASH, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Celebi + 100, 100, 100, 100, 100, 100, + TYPE_PSYCHIC, + TYPE_GRASS, + 45, // catch rate + 64, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_LUM_BERRY, + ITEM_LUM_BERRY, + 255, // gender + 120, // egg cycles + 100, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NATURAL_CURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Treecko + 40, 45, 35, 70, 65, 55, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 65, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Grovyle + 50, 65, 45, 95, 85, 65, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 141, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Sceptile + 70, 85, 65, 120, 105, 85, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 208, // base exp. yield + 0, 0, 0, 3, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Torchic + 45, 60, 40, 45, 70, 50, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 65, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Combusken + 60, 85, 60, 55, 85, 60, + TYPE_FIRE, + TYPE_FIGHTING, + 45, // catch rate + 142, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Blaziken + 80, 120, 70, 80, 110, 70, + TYPE_FIRE, + TYPE_FIGHTING, + 45, // catch rate + 209, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Mudkip + 50, 70, 50, 40, 50, 50, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 65, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Marshtomp + 70, 85, 70, 50, 60, 70, + TYPE_WATER, + TYPE_GROUND, + 45, // catch rate + 143, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Swampert + 100, 110, 90, 60, 85, 90, + TYPE_WATER, + TYPE_GROUND, + 45, // catch rate + 210, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Poochyena + 35, 55, 35, 35, 30, 30, + TYPE_DARK, + TYPE_DARK, + 255, // catch rate + 55, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_PECHA_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Mightyena + 70, 90, 70, 70, 60, 60, + TYPE_DARK, + TYPE_DARK, + 127, // catch rate + 128, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_PECHA_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Zigzagoon + 38, 30, 41, 60, 30, 41, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 60, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_ORAN_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PICKUP, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Linoone + 78, 70, 61, 100, 50, 61, + TYPE_NORMAL, + TYPE_NORMAL, + 90, // catch rate + 128, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_ORAN_BERRY, + ITEM_SITRUS_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PICKUP, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Wurmple + 45, 45, 35, 20, 20, 30, + TYPE_BUG, + TYPE_BUG, + 255, // catch rate + 54, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHIELD_DUST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Silcoon + 50, 35, 55, 15, 25, 25, + TYPE_BUG, + TYPE_BUG, + 120, // catch rate + 71, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Beautifly + 60, 70, 50, 65, 90, 50, + TYPE_BUG, + TYPE_FLYING, + 45, // catch rate + 161, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_SILVER_POWDER, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Cascoon + 50, 35, 55, 15, 25, 25, + TYPE_BUG, + TYPE_BUG, + 120, // catch rate + 72, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Dustox + 60, 50, 70, 65, 50, 90, + TYPE_BUG, + TYPE_POISON, + 45, // catch rate + 160, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_SILVER_POWDER, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHIELD_DUST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Lotad + 40, 30, 30, 30, 40, 50, + TYPE_WATER, + TYPE_GRASS, + 255, // catch rate + 74, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_GRASS, + ABILITY_SWIFT_SWIM, + ABILITY_RAIN_DISH, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Lombre + 60, 50, 50, 50, 60, 70, + TYPE_WATER, + TYPE_GRASS, + 120, // catch rate + 141, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_GRASS, + ABILITY_SWIFT_SWIM, + ABILITY_RAIN_DISH, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Ludicolo + 80, 70, 70, 70, 90, 100, + TYPE_WATER, + TYPE_GRASS, + 45, // catch rate + 181, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_GRASS, + ABILITY_SWIFT_SWIM, + ABILITY_RAIN_DISH, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Seedot + 40, 40, 50, 30, 30, 30, + TYPE_GRASS, + TYPE_GRASS, + 255, // catch rate + 74, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_EARLY_BIRD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Nuzleaf + 70, 70, 40, 60, 60, 40, + TYPE_GRASS, + TYPE_DARK, + 120, // catch rate + 141, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_EARLY_BIRD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Shiftry + 90, 100, 60, 80, 90, 60, + TYPE_GRASS, + TYPE_DARK, + 45, // catch rate + 181, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_EARLY_BIRD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Nincada + 31, 45, 90, 40, 30, 30, + TYPE_BUG, + TYPE_GROUND, + 255, // catch rate + 65, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_COMPOUND_EYES, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Ninjask + 61, 90, 45, 160, 50, 50, + TYPE_BUG, + TYPE_FLYING, + 120, // catch rate + 155, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SPEED_BOOST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Shedinja + 1, 90, 45, 40, 30, 30, + TYPE_BUG, + TYPE_GHOST, + 45, // catch rate + 95, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_WONDER_GUARD, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Taillow + 40, 55, 30, 85, 30, 30, + TYPE_NORMAL, + TYPE_FLYING, + 200, // catch rate + 59, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Swellow + 60, 85, 60, 125, 50, 50, + TYPE_NORMAL, + TYPE_FLYING, + 45, // catch rate + 162, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Shroomish + 60, 40, 60, 35, 40, 60, + TYPE_GRASS, + TYPE_GRASS, + 255, // catch rate + 65, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_EFFECT_SPORE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Breloom + 60, 130, 80, 70, 60, 60, + TYPE_GRASS, + TYPE_FIGHTING, + 90, // catch rate + 165, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_EFFECT_SPORE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Spinda + 60, 60, 60, 60, 60, 60, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 85, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_CHESTO_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_HUMAN_LIKE, + ABILITY_OWN_TEMPO, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN, TRUE + }, { // Wingull + 40, 30, 30, 85, 55, 30, + TYPE_WATER, + TYPE_FLYING, + 190, // catch rate + 64, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Pelipper + 60, 50, 100, 65, 85, 70, + TYPE_WATER, + TYPE_FLYING, + 45, // catch rate + 164, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Surskit + 40, 30, 32, 65, 50, 52, + TYPE_BUG, + TYPE_WATER, + 200, // catch rate + 63, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_BUG, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Masquerain + 70, 60, 62, 60, 80, 82, + TYPE_BUG, + TYPE_FLYING, + 75, // catch rate + 128, // base exp. yield + 0, 0, 0, 0, 1, 1, + ITEM_NONE, + ITEM_SILVER_POWDER, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_BUG, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Wailmer + 130, 70, 35, 60, 70, 35, + TYPE_WATER, + TYPE_WATER, + 125, // catch rate + 137, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_FIELD, + EGG_GROUP_WATER_2, + ABILITY_WATER_VEIL, + ABILITY_OBLIVIOUS, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Wailord + 170, 90, 45, 60, 90, 45, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 206, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_FIELD, + EGG_GROUP_WATER_2, + ABILITY_WATER_VEIL, + ABILITY_OBLIVIOUS, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Skitty + 50, 45, 45, 50, 35, 35, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 65, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_LEPPA_BERRY, + 191, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Delcatty + 70, 65, 65, 70, 55, 55, + TYPE_NORMAL, + TYPE_NORMAL, + 60, // catch rate + 138, // base exp. yield + 1, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_LEPPA_BERRY, + 191, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Kecleon + 60, 90, 70, 40, 60, 120, + TYPE_NORMAL, + TYPE_NORMAL, + 200, // catch rate + 132, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_PERSIM_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_COLOR_CHANGE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Baltoy + 40, 40, 55, 55, 40, 70, + TYPE_GROUND, + TYPE_PSYCHIC, + 255, // catch rate + 58, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Claydol + 60, 70, 105, 75, 70, 120, + TYPE_GROUND, + TYPE_PSYCHIC, + 90, // catch rate + 189, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Nosepass + 30, 45, 135, 30, 45, 90, + TYPE_ROCK, + TYPE_ROCK, + 255, // catch rate + 108, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_STURDY, + ABILITY_MAGNET_PULL, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Torkoal + 70, 85, 140, 20, 85, 70, + TYPE_FIRE, + TYPE_FIRE, + 90, // catch rate + 161, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_WHITE_SMOKE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Sableye + 50, 75, 75, 50, 65, 65, + TYPE_DARK, + TYPE_GHOST, + 45, // catch rate + 98, // base exp. yield + 0, 1, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Barboach + 50, 48, 43, 60, 46, 41, + TYPE_WATER, + TYPE_GROUND, + 190, // catch rate + 92, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Whiscash + 110, 78, 73, 60, 76, 71, + TYPE_WATER, + TYPE_GROUND, + 75, // catch rate + 158, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Luvdisc + 43, 30, 55, 97, 40, 65, + TYPE_WATER, + TYPE_WATER, + 225, // catch rate + 110, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_HEART_SCALE, + ITEM_NONE, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Corphish + 43, 80, 65, 35, 50, 35, + TYPE_WATER, + TYPE_WATER, + 205, // catch rate + 111, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_HYPER_CUTTER, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Crawdaunt + 63, 120, 85, 55, 90, 55, + TYPE_WATER, + TYPE_DARK, + 155, // catch rate + 161, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_HYPER_CUTTER, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Feebas + 20, 15, 20, 80, 10, 55, + TYPE_WATER, + TYPE_WATER, + 255, // catch rate + 61, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Milotic + 95, 60, 79, 81, 100, 125, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 213, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_MARVEL_SCALE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Carvanha + 45, 90, 20, 65, 65, 20, + TYPE_WATER, + TYPE_DARK, + 225, // catch rate + 88, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_ROUGH_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Sharpedo + 70, 120, 40, 95, 95, 40, + TYPE_WATER, + TYPE_DARK, + 60, // catch rate + 175, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_ROUGH_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Trapinch + 45, 100, 45, 10, 45, 45, + TYPE_GROUND, + TYPE_GROUND, + 255, // catch rate + 73, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SOFT_SAND, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_HYPER_CUTTER, + ABILITY_ARENA_TRAP, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Vibrava + 50, 70, 50, 70, 50, 50, + TYPE_GROUND, + TYPE_DRAGON, + 120, // catch rate + 126, // base exp. yield + 0, 1, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_LEVITATE, + ABILITY_LEVITATE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Flygon + 80, 100, 80, 100, 80, 80, + TYPE_GROUND, + TYPE_DRAGON, + 45, // catch rate + 197, // base exp. yield + 0, 1, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_LEVITATE, + ABILITY_LEVITATE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Makuhita + 72, 60, 30, 25, 20, 30, + TYPE_FIGHTING, + TYPE_FIGHTING, + 180, // catch rate + 87, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_THICK_FAT, + ABILITY_GUTS, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Hariyama + 144, 120, 60, 50, 40, 60, + TYPE_FIGHTING, + TYPE_FIGHTING, + 200, // catch rate + 184, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_KINGS_ROCK, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_THICK_FAT, + ABILITY_GUTS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Electrike + 40, 45, 40, 65, 65, 40, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 120, // catch rate + 104, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_STATIC, + ABILITY_LIGHTNING_ROD, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Manectric + 70, 75, 60, 105, 105, 60, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 45, // catch rate + 168, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_STATIC, + ABILITY_LIGHTNING_ROD, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Numel + 60, 60, 40, 35, 65, 45, + TYPE_FIRE, + TYPE_GROUND, + 255, // catch rate + 88, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Camerupt + 70, 100, 70, 40, 105, 75, + TYPE_FIRE, + TYPE_GROUND, + 150, // catch rate + 175, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_MAGMA_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Spheal + 70, 40, 50, 25, 55, 50, + TYPE_ICE, + TYPE_WATER, + 255, // catch rate + 75, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Sealeo + 90, 60, 70, 45, 75, 70, + TYPE_ICE, + TYPE_WATER, + 120, // catch rate + 128, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Walrein + 110, 80, 90, 65, 95, 90, + TYPE_ICE, + TYPE_WATER, + 45, // catch rate + 192, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Cacnea + 50, 85, 40, 35, 85, 40, + TYPE_GRASS, + TYPE_GRASS, + 190, // catch rate + 97, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_POISON_BARB, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SAND_VEIL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Cacturne + 70, 115, 60, 55, 115, 60, + TYPE_GRASS, + TYPE_DARK, + 60, // catch rate + 177, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_NONE, + ITEM_POISON_BARB, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SAND_VEIL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Snorunt + 50, 50, 50, 50, 50, 50, + TYPE_ICE, + TYPE_ICE, + 190, // catch rate + 74, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_MINERAL, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Glalie + 80, 80, 80, 80, 80, 80, + TYPE_ICE, + TYPE_ICE, + 75, // catch rate + 187, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NEVER_MELT_ICE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_MINERAL, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Lunatone + 70, 55, 65, 70, 95, 85, + TYPE_ROCK, + TYPE_PSYCHIC, + 45, // catch rate + 150, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_MOON_STONE, + 255, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Solrock + 70, 95, 85, 70, 55, 65, + TYPE_ROCK, + TYPE_PSYCHIC, + 45, // catch rate + 150, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SUN_STONE, + 255, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Azurill + 50, 20, 40, 20, 20, 40, + TYPE_NORMAL, + TYPE_NORMAL, + 150, // catch rate + 33, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_THICK_FAT, + ABILITY_HUGE_POWER, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Spoink + 60, 25, 35, 60, 70, 80, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 255, // catch rate + 89, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_OWN_TEMPO, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Grumpig + 80, 45, 65, 80, 90, 110, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 60, // catch rate + 164, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_OWN_TEMPO, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Plusle + 60, 50, 40, 95, 85, 75, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 200, // catch rate + 120, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_PLUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Minun + 60, 40, 50, 95, 75, 85, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 200, // catch rate + 120, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_MINUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Mawile + 50, 85, 85, 50, 55, 55, + TYPE_STEEL, + TYPE_STEEL, + 45, // catch rate + 98, // base exp. yield + 0, 1, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_HYPER_CUTTER, + ABILITY_INTIMIDATE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Meditite + 30, 40, 55, 60, 40, 55, + TYPE_FIGHTING, + TYPE_PSYCHIC, + 180, // catch rate + 91, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_PURE_POWER, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Medicham + 60, 60, 75, 80, 60, 75, + TYPE_FIGHTING, + TYPE_PSYCHIC, + 90, // catch rate + 153, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_PURE_POWER, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Swablu + 45, 40, 60, 50, 40, 75, + TYPE_NORMAL, + TYPE_FLYING, + 255, // catch rate + 74, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_FLYING, + EGG_GROUP_DRAGON, + ABILITY_NATURAL_CURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Altaria + 75, 70, 90, 80, 70, 105, + TYPE_DRAGON, + TYPE_FLYING, + 45, // catch rate + 188, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_FLYING, + EGG_GROUP_DRAGON, + ABILITY_NATURAL_CURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Wynaut + 95, 23, 48, 23, 23, 48, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 125, // catch rate + 44, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_SHADOW_TAG, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Duskull + 20, 40, 90, 25, 30, 90, + TYPE_GHOST, + TYPE_GHOST, + 190, // catch rate + 97, // base exp. yield + 0, 0, 1, 0, 0, 1, + ITEM_NONE, + ITEM_SPELL_TAG, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Dusclops + 40, 70, 130, 25, 60, 130, + TYPE_GHOST, + TYPE_GHOST, + 90, // catch rate + 179, // base exp. yield + 0, 0, 1, 0, 0, 2, + ITEM_NONE, + ITEM_SPELL_TAG, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Roselia + 50, 60, 45, 65, 100, 80, + TYPE_GRASS, + TYPE_POISON, + 150, // catch rate + 152, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_POISON_BARB, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_NATURAL_CURE, + ABILITY_POISON_POINT, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN, TRUE + }, { // Slakoth + 60, 60, 60, 30, 35, 35, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 83, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_TRUANT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Vigoroth + 80, 80, 80, 90, 55, 55, + TYPE_NORMAL, + TYPE_NORMAL, + 120, // catch rate + 126, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_VITAL_SPIRIT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Slaking + 150, 160, 100, 100, 95, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 210, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_TRUANT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Gulpin + 70, 43, 53, 40, 43, 53, + TYPE_POISON, + TYPE_POISON, + 225, // catch rate + 75, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_BIG_PEARL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LIQUID_OOZE, + ABILITY_STICKY_HOLD, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Swalot + 100, 73, 83, 55, 73, 83, + TYPE_POISON, + TYPE_POISON, + 75, // catch rate + 168, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_BIG_PEARL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LIQUID_OOZE, + ABILITY_STICKY_HOLD, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Tropius + 99, 68, 83, 51, 72, 87, + TYPE_GRASS, + TYPE_FLYING, + 200, // catch rate + 169, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Whismur + 64, 51, 23, 28, 51, 23, + TYPE_NORMAL, + TYPE_NORMAL, + 190, // catch rate + 68, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_CHESTO_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_SOUNDPROOF, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Loudred + 84, 71, 43, 48, 71, 43, + TYPE_NORMAL, + TYPE_NORMAL, + 120, // catch rate + 126, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_CHESTO_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_SOUNDPROOF, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Exploud + 104, 91, 63, 68, 91, 63, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 184, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_CHESTO_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_SOUNDPROOF, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Clamperl + 35, 64, 85, 32, 74, 55, + TYPE_WATER, + TYPE_WATER, + 255, // catch rate + 142, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_BLUE_SHARD, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_SHELL_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Huntail + 55, 104, 105, 52, 94, 75, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 178, // base exp. yield + 0, 1, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Gorebyss + 55, 84, 105, 52, 114, 75, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 178, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Absol + 65, 130, 60, 75, 75, 60, + TYPE_DARK, + TYPE_DARK, + 30, // catch rate + 174, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE, TRUE + }, { // Shuppet + 44, 75, 35, 45, 63, 33, + TYPE_GHOST, + TYPE_GHOST, + 225, // catch rate + 97, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SPELL_TAG, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_INSOMNIA, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Banette + 64, 115, 65, 65, 83, 63, + TYPE_GHOST, + TYPE_GHOST, + 45, // catch rate + 179, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SPELL_TAG, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_INSOMNIA, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Seviper + 73, 100, 60, 65, 100, 60, + TYPE_POISON, + TYPE_POISON, + 90, // catch rate + 165, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_FIELD, + EGG_GROUP_DRAGON, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK, TRUE + }, { // Zangoose + 73, 115, 60, 90, 60, 60, + TYPE_NORMAL, + TYPE_NORMAL, + 90, // catch rate + 165, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_IMMUNITY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE, TRUE + }, { // Relicanth + 100, 90, 130, 55, 45, 65, + TYPE_WATER, + TYPE_ROCK, + 25, // catch rate + 198, // base exp. yield + 1, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_GREEN_SHARD, + 31, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_2, + ABILITY_SWIFT_SWIM, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Aron + 50, 70, 100, 30, 40, 40, + TYPE_STEEL, + TYPE_ROCK, + 180, // catch rate + 96, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_HARD_STONE, + 127, // gender + 35, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_STURDY, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Lairon + 60, 90, 140, 40, 50, 50, + TYPE_STEEL, + TYPE_ROCK, + 90, // catch rate + 152, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_HARD_STONE, + 127, // gender + 35, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_STURDY, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Aggron + 70, 110, 180, 50, 60, 60, + TYPE_STEEL, + TYPE_ROCK, + 45, // catch rate + 205, // base exp. yield + 0, 0, 3, 0, 0, 0, + ITEM_NONE, + ITEM_HARD_STONE, + 127, // gender + 35, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_STURDY, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Castform + 70, 70, 70, 70, 70, 70, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 145, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_MYSTIC_WATER, + ITEM_MYSTIC_WATER, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_AMORPHOUS, + ABILITY_FORECAST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Volbeat + 65, 73, 55, 85, 47, 75, + TYPE_BUG, + TYPE_BUG, + 150, // catch rate + 146, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_BUG, + EGG_GROUP_HUMAN_LIKE, + ABILITY_ILLUMINATE, + ABILITY_SWARM, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Illumise + 65, 47, 55, 85, 73, 75, + TYPE_BUG, + TYPE_BUG, + 150, // catch rate + 146, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_BUG, + EGG_GROUP_HUMAN_LIKE, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Lileep + 66, 41, 77, 23, 61, 87, + TYPE_ROCK, + TYPE_GRASS, + 45, // catch rate + 121, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_SUCTION_CUPS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Cradily + 86, 81, 97, 43, 81, 107, + TYPE_ROCK, + TYPE_GRASS, + 45, // catch rate + 201, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_SUCTION_CUPS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Anorith + 45, 95, 50, 75, 40, 50, + TYPE_ROCK, + TYPE_BUG, + 45, // catch rate + 119, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_BATTLE_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Armaldo + 75, 125, 100, 45, 70, 80, + TYPE_ROCK, + TYPE_BUG, + 45, // catch rate + 200, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_BATTLE_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Ralts + 28, 25, 25, 40, 45, 35, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 235, // catch rate + 70, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_SYNCHRONIZE, + ABILITY_TRACE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Kirlia + 38, 35, 35, 50, 65, 55, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 120, // catch rate + 140, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_SYNCHRONIZE, + ABILITY_TRACE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Gardevoir + 68, 65, 65, 80, 125, 115, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 208, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_SYNCHRONIZE, + ABILITY_TRACE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Bagon + 45, 75, 60, 50, 40, 30, + TYPE_DRAGON, + TYPE_DRAGON, + 45, // catch rate + 89, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_DRAGON, + EGG_GROUP_DRAGON, + ABILITY_ROCK_HEAD, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Shelgon + 65, 95, 100, 50, 60, 50, + TYPE_DRAGON, + TYPE_DRAGON, + 45, // catch rate + 144, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_DRAGON, + EGG_GROUP_DRAGON, + ABILITY_ROCK_HEAD, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Salamence + 95, 135, 80, 100, 110, 80, + TYPE_DRAGON, + TYPE_FLYING, + 45, // catch rate + 218, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_DRAGON, + EGG_GROUP_DRAGON, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Beldum + 40, 55, 80, 30, 35, 60, + TYPE_STEEL, + TYPE_PSYCHIC, + 3, // catch rate + 103, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 255, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Metang + 60, 75, 100, 50, 55, 80, + TYPE_STEEL, + TYPE_PSYCHIC, + 3, // catch rate + 153, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 255, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Metagross + 80, 135, 130, 70, 95, 90, + TYPE_STEEL, + TYPE_PSYCHIC, + 3, // catch rate + 210, // base exp. yield + 0, 0, 3, 0, 0, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 255, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Regirock + 80, 100, 200, 50, 50, 100, + TYPE_ROCK, + TYPE_ROCK, + 3, // catch rate + 217, // base exp. yield + 0, 0, 3, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Regice + 80, 50, 100, 50, 100, 200, + TYPE_ICE, + TYPE_ICE, + 3, // catch rate + 216, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Registeel + 80, 75, 150, 50, 75, 150, + TYPE_STEEL, + TYPE_STEEL, + 3, // catch rate + 215, // base exp. yield + 0, 0, 2, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Kyogre + 100, 100, 90, 90, 150, 140, + TYPE_WATER, + TYPE_WATER, + 5, // catch rate + 218, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_DRIZZLE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Groudon + 100, 150, 140, 90, 100, 90, + TYPE_GROUND, + TYPE_GROUND, + 5, // catch rate + 218, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_DROUGHT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Rayquaza + 105, 150, 90, 95, 150, 90, + TYPE_DRAGON, + TYPE_FLYING, + 3, // catch rate + 220, // base exp. yield + 0, 2, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_AIR_LOCK, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Latias + 80, 80, 90, 110, 110, 130, + TYPE_DRAGON, + TYPE_PSYCHIC, + 3, // catch rate + 211, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 120, // egg cycles + 90, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Latios + 80, 90, 80, 110, 130, 110, + TYPE_DRAGON, + TYPE_PSYCHIC, + 3, // catch rate + 211, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 120, // egg cycles + 90, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Jirachi + 100, 100, 100, 100, 100, 100, + TYPE_STEEL, + TYPE_PSYCHIC, + 3, // catch rate + 215, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_STAR_PIECE, + ITEM_STAR_PIECE, + 255, // gender + 120, // egg cycles + 100, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_SERENE_GRACE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Deoxys + 50, 150, 50, 150, 150, 50, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 3, // catch rate + 215, // base exp. yield + 0, 1, 0, 1, 1, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED, TRUE + }, { // Chimecho + 65, 50, 70, 65, 95, 80, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 147, // base exp. yield + 0, 0, 0, 0, 1, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + } +}; -- cgit v1.2.3 From 803af50dafe276876d6e6d8d850ed3f69674d505 Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 15:45:07 -0400 Subject: Convert level up learnsets to c objects --- data/level_up_learnsets.inc | 5206 --------------------------------------- data/pokemon.s | 3 - include/pokemon.h | 5 + src/pokemon_data.c | 5621 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 5626 insertions(+), 5209 deletions(-) delete mode 100644 data/level_up_learnsets.inc diff --git a/data/level_up_learnsets.inc b/data/level_up_learnsets.inc deleted file mode 100644 index b2a445dda..000000000 --- a/data/level_up_learnsets.inc +++ /dev/null @@ -1,5206 +0,0 @@ - .align 2 - -gBulbasaurLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 4, MOVE_GROWL - level_up_move 7, MOVE_LEECH_SEED - level_up_move 10, MOVE_VINE_WHIP - level_up_move 15, MOVE_POISON_POWDER - level_up_move 15, MOVE_SLEEP_POWDER - level_up_move 20, MOVE_RAZOR_LEAF - level_up_move 25, MOVE_SWEET_SCENT - level_up_move 32, MOVE_GROWTH - level_up_move 39, MOVE_SYNTHESIS - level_up_move 46, MOVE_SOLAR_BEAM - .2byte -1 - -gIvysaurLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_LEECH_SEED - level_up_move 4, MOVE_GROWL - level_up_move 7, MOVE_LEECH_SEED - level_up_move 10, MOVE_VINE_WHIP - level_up_move 15, MOVE_POISON_POWDER - level_up_move 15, MOVE_SLEEP_POWDER - level_up_move 22, MOVE_RAZOR_LEAF - level_up_move 29, MOVE_SWEET_SCENT - level_up_move 38, MOVE_GROWTH - level_up_move 47, MOVE_SYNTHESIS - level_up_move 56, MOVE_SOLAR_BEAM - .2byte -1 - -gVenusaurLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_LEECH_SEED - level_up_move 1, MOVE_VINE_WHIP - level_up_move 4, MOVE_GROWL - level_up_move 7, MOVE_LEECH_SEED - level_up_move 10, MOVE_VINE_WHIP - level_up_move 15, MOVE_POISON_POWDER - level_up_move 15, MOVE_SLEEP_POWDER - level_up_move 22, MOVE_RAZOR_LEAF - level_up_move 29, MOVE_SWEET_SCENT - level_up_move 41, MOVE_GROWTH - level_up_move 53, MOVE_SYNTHESIS - level_up_move 65, MOVE_SOLAR_BEAM - .2byte -1 - -gCharmanderLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_GROWL - level_up_move 7, MOVE_EMBER - level_up_move 13, MOVE_SMOKESCREEN - level_up_move 19, MOVE_RAGE - level_up_move 25, MOVE_SCARY_FACE - level_up_move 31, MOVE_FLAMETHROWER - level_up_move 37, MOVE_SLASH - level_up_move 43, MOVE_DRAGON_RAGE - level_up_move 49, MOVE_FIRE_SPIN - .2byte -1 - -gCharmeleonLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_EMBER - level_up_move 7, MOVE_EMBER - level_up_move 13, MOVE_SMOKESCREEN - level_up_move 20, MOVE_RAGE - level_up_move 27, MOVE_SCARY_FACE - level_up_move 34, MOVE_FLAMETHROWER - level_up_move 41, MOVE_SLASH - level_up_move 48, MOVE_DRAGON_RAGE - level_up_move 55, MOVE_FIRE_SPIN - .2byte -1 - -gCharizardLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_EMBER - level_up_move 1, MOVE_SMOKESCREEN - level_up_move 7, MOVE_EMBER - level_up_move 13, MOVE_SMOKESCREEN - level_up_move 20, MOVE_RAGE - level_up_move 27, MOVE_SCARY_FACE - level_up_move 34, MOVE_FLAMETHROWER - level_up_move 36, MOVE_WING_ATTACK - level_up_move 44, MOVE_SLASH - level_up_move 54, MOVE_DRAGON_RAGE - level_up_move 64, MOVE_FIRE_SPIN - .2byte -1 - -gSquirtleLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 4, MOVE_TAIL_WHIP - level_up_move 7, MOVE_BUBBLE - level_up_move 10, MOVE_WITHDRAW - level_up_move 13, MOVE_WATER_GUN - level_up_move 18, MOVE_BITE - level_up_move 23, MOVE_RAPID_SPIN - level_up_move 28, MOVE_PROTECT - level_up_move 33, MOVE_RAIN_DANCE - level_up_move 40, MOVE_SKULL_BASH - level_up_move 47, MOVE_HYDRO_PUMP - .2byte -1 - -gWartortleLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_BUBBLE - level_up_move 4, MOVE_TAIL_WHIP - level_up_move 7, MOVE_BUBBLE - level_up_move 10, MOVE_WITHDRAW - level_up_move 13, MOVE_WATER_GUN - level_up_move 19, MOVE_BITE - level_up_move 25, MOVE_RAPID_SPIN - level_up_move 31, MOVE_PROTECT - level_up_move 37, MOVE_RAIN_DANCE - level_up_move 45, MOVE_SKULL_BASH - level_up_move 53, MOVE_HYDRO_PUMP - .2byte -1 - -gBlastoiseLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_BUBBLE - level_up_move 1, MOVE_WITHDRAW - level_up_move 4, MOVE_TAIL_WHIP - level_up_move 7, MOVE_BUBBLE - level_up_move 10, MOVE_WITHDRAW - level_up_move 13, MOVE_WATER_GUN - level_up_move 19, MOVE_BITE - level_up_move 25, MOVE_RAPID_SPIN - level_up_move 31, MOVE_PROTECT - level_up_move 42, MOVE_RAIN_DANCE - level_up_move 55, MOVE_SKULL_BASH - level_up_move 68, MOVE_HYDRO_PUMP - .2byte -1 - -gCaterpieLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_STRING_SHOT - .2byte -1 - -gMetapodLevelUpLearnset: - level_up_move 1, MOVE_HARDEN - level_up_move 7, MOVE_HARDEN - .2byte -1 - -gButterfreeLevelUpLearnset: - level_up_move 1, MOVE_CONFUSION - level_up_move 10, MOVE_CONFUSION - level_up_move 13, MOVE_POISON_POWDER - level_up_move 14, MOVE_STUN_SPORE - level_up_move 15, MOVE_SLEEP_POWDER - level_up_move 18, MOVE_SUPERSONIC - level_up_move 23, MOVE_WHIRLWIND - level_up_move 28, MOVE_GUST - level_up_move 34, MOVE_PSYBEAM - level_up_move 40, MOVE_SAFEGUARD - level_up_move 47, MOVE_SILVER_WIND - .2byte -1 - -gWeedleLevelUpLearnset: - level_up_move 1, MOVE_POISON_STING - level_up_move 1, MOVE_STRING_SHOT - .2byte -1 - -gKakunaLevelUpLearnset: - level_up_move 1, MOVE_HARDEN - level_up_move 7, MOVE_HARDEN - .2byte -1 - -gBeedrillLevelUpLearnset: - level_up_move 1, MOVE_FURY_ATTACK - level_up_move 10, MOVE_FURY_ATTACK - level_up_move 15, MOVE_FOCUS_ENERGY - level_up_move 20, MOVE_TWINEEDLE - level_up_move 25, MOVE_RAGE - level_up_move 30, MOVE_PURSUIT - level_up_move 35, MOVE_PIN_MISSILE - level_up_move 40, MOVE_AGILITY - level_up_move 45, MOVE_ENDEAVOR - .2byte -1 - -gPidgeyLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 5, MOVE_SAND_ATTACK - level_up_move 9, MOVE_GUST - level_up_move 13, MOVE_QUICK_ATTACK - level_up_move 19, MOVE_WHIRLWIND - level_up_move 25, MOVE_WING_ATTACK - level_up_move 31, MOVE_FEATHER_DANCE - level_up_move 39, MOVE_AGILITY - level_up_move 47, MOVE_MIRROR_MOVE - .2byte -1 - -gPidgeottoLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_SAND_ATTACK - level_up_move 1, MOVE_GUST - level_up_move 5, MOVE_SAND_ATTACK - level_up_move 9, MOVE_GUST - level_up_move 13, MOVE_QUICK_ATTACK - level_up_move 20, MOVE_WHIRLWIND - level_up_move 27, MOVE_WING_ATTACK - level_up_move 34, MOVE_FEATHER_DANCE - level_up_move 43, MOVE_AGILITY - level_up_move 52, MOVE_MIRROR_MOVE - .2byte -1 - -gPidgeotLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_SAND_ATTACK - level_up_move 1, MOVE_GUST - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 5, MOVE_SAND_ATTACK - level_up_move 9, MOVE_GUST - level_up_move 13, MOVE_QUICK_ATTACK - level_up_move 20, MOVE_WHIRLWIND - level_up_move 27, MOVE_WING_ATTACK - level_up_move 34, MOVE_FEATHER_DANCE - level_up_move 48, MOVE_AGILITY - level_up_move 62, MOVE_MIRROR_MOVE - .2byte -1 - -gRattataLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 7, MOVE_QUICK_ATTACK - level_up_move 13, MOVE_HYPER_FANG - level_up_move 20, MOVE_FOCUS_ENERGY - level_up_move 27, MOVE_PURSUIT - level_up_move 34, MOVE_SUPER_FANG - level_up_move 41, MOVE_ENDEAVOR - .2byte -1 - -gRaticateLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 7, MOVE_QUICK_ATTACK - level_up_move 13, MOVE_HYPER_FANG - level_up_move 20, MOVE_SCARY_FACE - level_up_move 30, MOVE_PURSUIT - level_up_move 40, MOVE_SUPER_FANG - level_up_move 50, MOVE_ENDEAVOR - .2byte -1 - -gSpearowLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_GROWL - level_up_move 7, MOVE_LEER - level_up_move 13, MOVE_FURY_ATTACK - level_up_move 19, MOVE_PURSUIT - level_up_move 25, MOVE_AERIAL_ACE - level_up_move 31, MOVE_MIRROR_MOVE - level_up_move 37, MOVE_DRILL_PECK - level_up_move 43, MOVE_AGILITY - .2byte -1 - -gFearowLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_FURY_ATTACK - level_up_move 7, MOVE_LEER - level_up_move 13, MOVE_FURY_ATTACK - level_up_move 26, MOVE_PURSUIT - level_up_move 32, MOVE_MIRROR_MOVE - level_up_move 40, MOVE_DRILL_PECK - level_up_move 47, MOVE_AGILITY - .2byte -1 - -gEkansLevelUpLearnset: - level_up_move 1, MOVE_WRAP - level_up_move 1, MOVE_LEER - level_up_move 8, MOVE_POISON_STING - level_up_move 13, MOVE_BITE - level_up_move 20, MOVE_GLARE - level_up_move 25, MOVE_SCREECH - level_up_move 32, MOVE_ACID - level_up_move 37, MOVE_STOCKPILE - level_up_move 37, MOVE_SWALLOW - level_up_move 37, MOVE_SPIT_UP - level_up_move 44, MOVE_HAZE - .2byte -1 - -gArbokLevelUpLearnset: - level_up_move 1, MOVE_WRAP - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_POISON_STING - level_up_move 1, MOVE_BITE - level_up_move 8, MOVE_POISON_STING - level_up_move 13, MOVE_BITE - level_up_move 20, MOVE_GLARE - level_up_move 28, MOVE_SCREECH - level_up_move 38, MOVE_ACID - level_up_move 46, MOVE_STOCKPILE - level_up_move 46, MOVE_SWALLOW - level_up_move 46, MOVE_SPIT_UP - level_up_move 56, MOVE_HAZE - .2byte -1 - -gPikachuLevelUpLearnset: - level_up_move 1, MOVE_THUNDER_SHOCK - level_up_move 1, MOVE_GROWL - level_up_move 6, MOVE_TAIL_WHIP - level_up_move 8, MOVE_THUNDER_WAVE - level_up_move 11, MOVE_QUICK_ATTACK - level_up_move 15, MOVE_DOUBLE_TEAM - level_up_move 20, MOVE_SLAM - level_up_move 26, MOVE_THUNDERBOLT - level_up_move 33, MOVE_AGILITY - level_up_move 41, MOVE_THUNDER - level_up_move 50, MOVE_LIGHT_SCREEN - .2byte -1 - -gRaichuLevelUpLearnset: - level_up_move 1, MOVE_THUNDER_SHOCK - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 1, MOVE_THUNDERBOLT - .2byte -1 - -gSandshrewLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 6, MOVE_DEFENSE_CURL - level_up_move 11, MOVE_SAND_ATTACK - level_up_move 17, MOVE_POISON_STING - level_up_move 23, MOVE_SLASH - level_up_move 30, MOVE_SWIFT - level_up_move 37, MOVE_FURY_SWIPES - level_up_move 45, MOVE_SAND_TOMB - level_up_move 53, MOVE_SANDSTORM - .2byte -1 - -gSandslashLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_DEFENSE_CURL - level_up_move 1, MOVE_SAND_ATTACK - level_up_move 6, MOVE_DEFENSE_CURL - level_up_move 11, MOVE_SAND_ATTACK - level_up_move 17, MOVE_POISON_STING - level_up_move 24, MOVE_SLASH - level_up_move 33, MOVE_SWIFT - level_up_move 42, MOVE_FURY_SWIPES - level_up_move 52, MOVE_SAND_TOMB - level_up_move 62, MOVE_SANDSTORM - .2byte -1 - -gNidoranFLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_SCRATCH - level_up_move 8, MOVE_TAIL_WHIP - level_up_move 12, MOVE_DOUBLE_KICK - level_up_move 17, MOVE_POISON_STING - level_up_move 20, MOVE_BITE - level_up_move 23, MOVE_HELPING_HAND - level_up_move 30, MOVE_FURY_SWIPES - level_up_move 38, MOVE_FLATTER - level_up_move 47, MOVE_CRUNCH - .2byte -1 - -gNidorinaLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_SCRATCH - level_up_move 8, MOVE_TAIL_WHIP - level_up_move 12, MOVE_DOUBLE_KICK - level_up_move 18, MOVE_POISON_STING - level_up_move 22, MOVE_BITE - level_up_move 26, MOVE_HELPING_HAND - level_up_move 34, MOVE_FURY_SWIPES - level_up_move 43, MOVE_FLATTER - level_up_move 53, MOVE_CRUNCH - .2byte -1 - -gNidoqueenLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_DOUBLE_KICK - level_up_move 1, MOVE_POISON_STING - level_up_move 23, MOVE_BODY_SLAM - .2byte -1 - -gNidoranMLevelUpLearnset: - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_PECK - level_up_move 8, MOVE_FOCUS_ENERGY - level_up_move 12, MOVE_DOUBLE_KICK - level_up_move 17, MOVE_POISON_STING - level_up_move 20, MOVE_HORN_ATTACK - level_up_move 23, MOVE_HELPING_HAND - level_up_move 30, MOVE_FURY_ATTACK - level_up_move 38, MOVE_FLATTER - level_up_move 47, MOVE_HORN_DRILL - .2byte -1 - -gNidorinoLevelUpLearnset: - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_PECK - level_up_move 8, MOVE_FOCUS_ENERGY - level_up_move 12, MOVE_DOUBLE_KICK - level_up_move 18, MOVE_POISON_STING - level_up_move 22, MOVE_HORN_ATTACK - level_up_move 26, MOVE_HELPING_HAND - level_up_move 34, MOVE_FURY_ATTACK - level_up_move 43, MOVE_FLATTER - level_up_move 53, MOVE_HORN_DRILL - .2byte -1 - -gNidokingLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_FOCUS_ENERGY - level_up_move 1, MOVE_DOUBLE_KICK - level_up_move 1, MOVE_POISON_STING - level_up_move 23, MOVE_THRASH - .2byte -1 - -gClefairyLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_GROWL - level_up_move 5, MOVE_ENCORE - level_up_move 9, MOVE_SING - level_up_move 13, MOVE_DOUBLE_SLAP - level_up_move 17, MOVE_FOLLOW_ME - level_up_move 21, MOVE_MINIMIZE - level_up_move 25, MOVE_DEFENSE_CURL - level_up_move 29, MOVE_METRONOME - level_up_move 33, MOVE_COSMIC_POWER - level_up_move 37, MOVE_MOONLIGHT - level_up_move 41, MOVE_LIGHT_SCREEN - level_up_move 45, MOVE_METEOR_MASH - .2byte -1 - -gClefableLevelUpLearnset: - level_up_move 1, MOVE_SING - level_up_move 1, MOVE_DOUBLE_SLAP - level_up_move 1, MOVE_MINIMIZE - level_up_move 1, MOVE_METRONOME - .2byte -1 - -gVulpixLevelUpLearnset: - level_up_move 1, MOVE_EMBER - level_up_move 5, MOVE_TAIL_WHIP - level_up_move 9, MOVE_ROAR - level_up_move 13, MOVE_QUICK_ATTACK - level_up_move 17, MOVE_WILL_O_WISP - level_up_move 21, MOVE_CONFUSE_RAY - level_up_move 25, MOVE_IMPRISON - level_up_move 29, MOVE_FLAMETHROWER - level_up_move 33, MOVE_SAFEGUARD - level_up_move 37, MOVE_GRUDGE - level_up_move 41, MOVE_FIRE_SPIN - .2byte -1 - -gNinetalesLevelUpLearnset: - level_up_move 1, MOVE_EMBER - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 1, MOVE_CONFUSE_RAY - level_up_move 1, MOVE_SAFEGUARD - level_up_move 45, MOVE_FIRE_SPIN - .2byte -1 - -gJigglypuffLevelUpLearnset: - level_up_move 1, MOVE_SING - level_up_move 4, MOVE_DEFENSE_CURL - level_up_move 9, MOVE_POUND - level_up_move 14, MOVE_DISABLE - level_up_move 19, MOVE_ROLLOUT - level_up_move 24, MOVE_DOUBLE_SLAP - level_up_move 29, MOVE_REST - level_up_move 34, MOVE_BODY_SLAM - level_up_move 39, MOVE_MIMIC - level_up_move 44, MOVE_HYPER_VOICE - level_up_move 49, MOVE_DOUBLE_EDGE - .2byte -1 - -gWigglytuffLevelUpLearnset: - level_up_move 1, MOVE_SING - level_up_move 1, MOVE_DISABLE - level_up_move 1, MOVE_DEFENSE_CURL - level_up_move 1, MOVE_DOUBLE_SLAP - .2byte -1 - -gZubatLevelUpLearnset: - level_up_move 1, MOVE_LEECH_LIFE - level_up_move 6, MOVE_SUPERSONIC - level_up_move 11, MOVE_ASTONISH - level_up_move 16, MOVE_BITE - level_up_move 21, MOVE_WING_ATTACK - level_up_move 26, MOVE_CONFUSE_RAY - level_up_move 31, MOVE_AIR_CUTTER - level_up_move 36, MOVE_MEAN_LOOK - level_up_move 41, MOVE_POISON_FANG - level_up_move 46, MOVE_HAZE - .2byte -1 - -gGolbatLevelUpLearnset: - level_up_move 1, MOVE_SCREECH - level_up_move 1, MOVE_LEECH_LIFE - level_up_move 1, MOVE_SUPERSONIC - level_up_move 1, MOVE_ASTONISH - level_up_move 6, MOVE_SUPERSONIC - level_up_move 11, MOVE_ASTONISH - level_up_move 16, MOVE_BITE - level_up_move 21, MOVE_WING_ATTACK - level_up_move 28, MOVE_CONFUSE_RAY - level_up_move 35, MOVE_AIR_CUTTER - level_up_move 42, MOVE_MEAN_LOOK - level_up_move 49, MOVE_POISON_FANG - level_up_move 56, MOVE_HAZE - .2byte -1 - -gOddishLevelUpLearnset: - level_up_move 1, MOVE_ABSORB - level_up_move 7, MOVE_SWEET_SCENT - level_up_move 14, MOVE_POISON_POWDER - level_up_move 16, MOVE_STUN_SPORE - level_up_move 18, MOVE_SLEEP_POWDER - level_up_move 23, MOVE_ACID - level_up_move 32, MOVE_MOONLIGHT - level_up_move 39, MOVE_PETAL_DANCE - .2byte -1 - -gGloomLevelUpLearnset: - level_up_move 1, MOVE_ABSORB - level_up_move 1, MOVE_SWEET_SCENT - level_up_move 1, MOVE_POISON_POWDER - level_up_move 7, MOVE_SWEET_SCENT - level_up_move 14, MOVE_POISON_POWDER - level_up_move 16, MOVE_STUN_SPORE - level_up_move 18, MOVE_SLEEP_POWDER - level_up_move 24, MOVE_ACID - level_up_move 35, MOVE_MOONLIGHT - level_up_move 44, MOVE_PETAL_DANCE - .2byte -1 - -gVileplumeLevelUpLearnset: - level_up_move 1, MOVE_ABSORB - level_up_move 1, MOVE_AROMATHERAPY - level_up_move 1, MOVE_STUN_SPORE - level_up_move 1, MOVE_MEGA_DRAIN - level_up_move 44, MOVE_PETAL_DANCE - .2byte -1 - -gParasLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 7, MOVE_STUN_SPORE - level_up_move 13, MOVE_POISON_POWDER - level_up_move 19, MOVE_LEECH_LIFE - level_up_move 25, MOVE_SPORE - level_up_move 31, MOVE_SLASH - level_up_move 37, MOVE_GROWTH - level_up_move 43, MOVE_GIGA_DRAIN - level_up_move 49, MOVE_AROMATHERAPY - .2byte -1 - -gParasectLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_STUN_SPORE - level_up_move 1, MOVE_POISON_POWDER - level_up_move 7, MOVE_STUN_SPORE - level_up_move 13, MOVE_POISON_POWDER - level_up_move 19, MOVE_LEECH_LIFE - level_up_move 27, MOVE_SPORE - level_up_move 35, MOVE_SLASH - level_up_move 43, MOVE_GROWTH - level_up_move 51, MOVE_GIGA_DRAIN - level_up_move 59, MOVE_AROMATHERAPY - .2byte -1 - -gVenonatLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_DISABLE - level_up_move 1, MOVE_FORESIGHT - level_up_move 9, MOVE_SUPERSONIC - level_up_move 17, MOVE_CONFUSION - level_up_move 20, MOVE_POISON_POWDER - level_up_move 25, MOVE_LEECH_LIFE - level_up_move 28, MOVE_STUN_SPORE - level_up_move 33, MOVE_PSYBEAM - level_up_move 36, MOVE_SLEEP_POWDER - level_up_move 41, MOVE_PSYCHIC - .2byte -1 - -gVenomothLevelUpLearnset: - level_up_move 1, MOVE_SILVER_WIND - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_DISABLE - level_up_move 1, MOVE_FORESIGHT - level_up_move 1, MOVE_SUPERSONIC - level_up_move 9, MOVE_SUPERSONIC - level_up_move 17, MOVE_CONFUSION - level_up_move 20, MOVE_POISON_POWDER - level_up_move 25, MOVE_LEECH_LIFE - level_up_move 28, MOVE_STUN_SPORE - level_up_move 31, MOVE_GUST - level_up_move 36, MOVE_PSYBEAM - level_up_move 42, MOVE_SLEEP_POWDER - level_up_move 52, MOVE_PSYCHIC - .2byte -1 - -gDiglettLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_SAND_ATTACK - level_up_move 5, MOVE_GROWL - level_up_move 9, MOVE_MAGNITUDE - level_up_move 17, MOVE_DIG - level_up_move 25, MOVE_MUD_SLAP - level_up_move 33, MOVE_SLASH - level_up_move 41, MOVE_EARTHQUAKE - level_up_move 49, MOVE_FISSURE - .2byte -1 - -gDugtrioLevelUpLearnset: - level_up_move 1, MOVE_TRI_ATTACK - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_SAND_ATTACK - level_up_move 1, MOVE_GROWL - level_up_move 5, MOVE_GROWL - level_up_move 9, MOVE_MAGNITUDE - level_up_move 17, MOVE_DIG - level_up_move 25, MOVE_MUD_SLAP - level_up_move 26, MOVE_SAND_TOMB - level_up_move 38, MOVE_SLASH - level_up_move 51, MOVE_EARTHQUAKE - level_up_move 64, MOVE_FISSURE - .2byte -1 - -gMeowthLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_GROWL - level_up_move 11, MOVE_BITE - level_up_move 20, MOVE_PAY_DAY - level_up_move 28, MOVE_FAINT_ATTACK - level_up_move 35, MOVE_SCREECH - level_up_move 41, MOVE_FURY_SWIPES - level_up_move 46, MOVE_SLASH - level_up_move 50, MOVE_FAKE_OUT - .2byte -1 - -gPersianLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_BITE - level_up_move 11, MOVE_BITE - level_up_move 20, MOVE_PAY_DAY - level_up_move 29, MOVE_FAINT_ATTACK - level_up_move 38, MOVE_SCREECH - level_up_move 46, MOVE_FURY_SWIPES - level_up_move 53, MOVE_SLASH - level_up_move 59, MOVE_FAKE_OUT - .2byte -1 - -gPsyduckLevelUpLearnset: - level_up_move 1, MOVE_WATER_SPORT - level_up_move 1, MOVE_SCRATCH - level_up_move 5, MOVE_TAIL_WHIP - level_up_move 10, MOVE_DISABLE - level_up_move 16, MOVE_CONFUSION - level_up_move 23, MOVE_SCREECH - level_up_move 31, MOVE_PSYCH_UP - level_up_move 40, MOVE_FURY_SWIPES - level_up_move 50, MOVE_HYDRO_PUMP - .2byte -1 - -gGolduckLevelUpLearnset: - level_up_move 1, MOVE_WATER_SPORT - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_DISABLE - level_up_move 5, MOVE_TAIL_WHIP - level_up_move 10, MOVE_DISABLE - level_up_move 16, MOVE_CONFUSION - level_up_move 23, MOVE_SCREECH - level_up_move 31, MOVE_PSYCH_UP - level_up_move 44, MOVE_FURY_SWIPES - level_up_move 58, MOVE_HYDRO_PUMP - .2byte -1 - -gMankeyLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_LEER - level_up_move 9, MOVE_LOW_KICK - level_up_move 15, MOVE_KARATE_CHOP - level_up_move 21, MOVE_FURY_SWIPES - level_up_move 27, MOVE_FOCUS_ENERGY - level_up_move 33, MOVE_SEISMIC_TOSS - level_up_move 39, MOVE_CROSS_CHOP - level_up_move 45, MOVE_SCREECH - level_up_move 51, MOVE_THRASH - .2byte -1 - -gPrimeapeLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_LOW_KICK - level_up_move 1, MOVE_RAGE - level_up_move 9, MOVE_LOW_KICK - level_up_move 15, MOVE_KARATE_CHOP - level_up_move 21, MOVE_FURY_SWIPES - level_up_move 27, MOVE_FOCUS_ENERGY - level_up_move 28, MOVE_RAGE - level_up_move 36, MOVE_SEISMIC_TOSS - level_up_move 45, MOVE_CROSS_CHOP - level_up_move 54, MOVE_SCREECH - level_up_move 63, MOVE_THRASH - .2byte -1 - -gGrowlitheLevelUpLearnset: - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_ROAR - level_up_move 7, MOVE_EMBER - level_up_move 13, MOVE_LEER - level_up_move 19, MOVE_ODOR_SLEUTH - level_up_move 25, MOVE_TAKE_DOWN - level_up_move 31, MOVE_FLAME_WHEEL - level_up_move 37, MOVE_HELPING_HAND - level_up_move 43, MOVE_AGILITY - level_up_move 49, MOVE_FLAMETHROWER - .2byte -1 - -gArcanineLevelUpLearnset: - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_ROAR - level_up_move 1, MOVE_EMBER - level_up_move 1, MOVE_ODOR_SLEUTH - level_up_move 49, MOVE_EXTREME_SPEED - .2byte -1 - -gPoliwagLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 7, MOVE_HYPNOSIS - level_up_move 13, MOVE_WATER_GUN - level_up_move 19, MOVE_DOUBLE_SLAP - level_up_move 25, MOVE_RAIN_DANCE - level_up_move 31, MOVE_BODY_SLAM - level_up_move 37, MOVE_BELLY_DRUM - level_up_move 43, MOVE_HYDRO_PUMP - .2byte -1 - -gPoliwhirlLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 1, MOVE_HYPNOSIS - level_up_move 1, MOVE_WATER_GUN - level_up_move 7, MOVE_HYPNOSIS - level_up_move 13, MOVE_WATER_GUN - level_up_move 19, MOVE_DOUBLE_SLAP - level_up_move 27, MOVE_RAIN_DANCE - level_up_move 35, MOVE_BODY_SLAM - level_up_move 43, MOVE_BELLY_DRUM - level_up_move 51, MOVE_HYDRO_PUMP - .2byte -1 - -gPoliwrathLevelUpLearnset: - level_up_move 1, MOVE_WATER_GUN - level_up_move 1, MOVE_HYPNOSIS - level_up_move 1, MOVE_DOUBLE_SLAP - level_up_move 1, MOVE_SUBMISSION - level_up_move 35, MOVE_SUBMISSION - level_up_move 51, MOVE_MIND_READER - .2byte -1 - -gAbraLevelUpLearnset: - level_up_move 1, MOVE_TELEPORT - .2byte -1 - -gKadabraLevelUpLearnset: - level_up_move 1, MOVE_TELEPORT - level_up_move 1, MOVE_KINESIS - level_up_move 1, MOVE_CONFUSION - level_up_move 16, MOVE_CONFUSION - level_up_move 18, MOVE_DISABLE - level_up_move 21, MOVE_PSYBEAM - level_up_move 23, MOVE_REFLECT - level_up_move 25, MOVE_RECOVER - level_up_move 30, MOVE_FUTURE_SIGHT - level_up_move 33, MOVE_ROLE_PLAY - level_up_move 36, MOVE_PSYCHIC - level_up_move 43, MOVE_TRICK - .2byte -1 - -gAlakazamLevelUpLearnset: - level_up_move 1, MOVE_TELEPORT - level_up_move 1, MOVE_KINESIS - level_up_move 1, MOVE_CONFUSION - level_up_move 16, MOVE_CONFUSION - level_up_move 18, MOVE_DISABLE - level_up_move 21, MOVE_PSYBEAM - level_up_move 23, MOVE_REFLECT - level_up_move 25, MOVE_RECOVER - level_up_move 30, MOVE_FUTURE_SIGHT - level_up_move 33, MOVE_CALM_MIND - level_up_move 36, MOVE_PSYCHIC - level_up_move 43, MOVE_TRICK - .2byte -1 - -gMachopLevelUpLearnset: - level_up_move 1, MOVE_LOW_KICK - level_up_move 1, MOVE_LEER - level_up_move 7, MOVE_FOCUS_ENERGY - level_up_move 13, MOVE_KARATE_CHOP - level_up_move 19, MOVE_SEISMIC_TOSS - level_up_move 22, MOVE_FORESIGHT - level_up_move 25, MOVE_REVENGE - level_up_move 31, MOVE_VITAL_THROW - level_up_move 37, MOVE_SUBMISSION - level_up_move 40, MOVE_CROSS_CHOP - level_up_move 43, MOVE_SCARY_FACE - level_up_move 49, MOVE_DYNAMIC_PUNCH - .2byte -1 - -gMachokeLevelUpLearnset: - level_up_move 1, MOVE_LOW_KICK - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_FOCUS_ENERGY - level_up_move 7, MOVE_FOCUS_ENERGY - level_up_move 13, MOVE_KARATE_CHOP - level_up_move 19, MOVE_SEISMIC_TOSS - level_up_move 22, MOVE_FORESIGHT - level_up_move 25, MOVE_REVENGE - level_up_move 33, MOVE_VITAL_THROW - level_up_move 41, MOVE_SUBMISSION - level_up_move 46, MOVE_CROSS_CHOP - level_up_move 51, MOVE_SCARY_FACE - level_up_move 59, MOVE_DYNAMIC_PUNCH - .2byte -1 - -gMachampLevelUpLearnset: - level_up_move 1, MOVE_LOW_KICK - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_FOCUS_ENERGY - level_up_move 7, MOVE_FOCUS_ENERGY - level_up_move 13, MOVE_KARATE_CHOP - level_up_move 19, MOVE_SEISMIC_TOSS - level_up_move 22, MOVE_FORESIGHT - level_up_move 25, MOVE_REVENGE - level_up_move 33, MOVE_VITAL_THROW - level_up_move 41, MOVE_SUBMISSION - level_up_move 46, MOVE_CROSS_CHOP - level_up_move 51, MOVE_SCARY_FACE - level_up_move 59, MOVE_DYNAMIC_PUNCH - .2byte -1 - -gBellsproutLevelUpLearnset: - level_up_move 1, MOVE_VINE_WHIP - level_up_move 6, MOVE_GROWTH - level_up_move 11, MOVE_WRAP - level_up_move 15, MOVE_SLEEP_POWDER - level_up_move 17, MOVE_POISON_POWDER - level_up_move 19, MOVE_STUN_SPORE - level_up_move 23, MOVE_ACID - level_up_move 30, MOVE_SWEET_SCENT - level_up_move 37, MOVE_RAZOR_LEAF - level_up_move 45, MOVE_SLAM - .2byte -1 - -gWeepinbellLevelUpLearnset: - level_up_move 1, MOVE_VINE_WHIP - level_up_move 1, MOVE_GROWTH - level_up_move 1, MOVE_WRAP - level_up_move 6, MOVE_GROWTH - level_up_move 11, MOVE_WRAP - level_up_move 15, MOVE_SLEEP_POWDER - level_up_move 17, MOVE_POISON_POWDER - level_up_move 19, MOVE_STUN_SPORE - level_up_move 24, MOVE_ACID - level_up_move 33, MOVE_SWEET_SCENT - level_up_move 42, MOVE_RAZOR_LEAF - level_up_move 54, MOVE_SLAM - .2byte -1 - -gVictreebelLevelUpLearnset: - level_up_move 1, MOVE_VINE_WHIP - level_up_move 1, MOVE_SLEEP_POWDER - level_up_move 1, MOVE_SWEET_SCENT - level_up_move 1, MOVE_RAZOR_LEAF - .2byte -1 - -gTentacoolLevelUpLearnset: - level_up_move 1, MOVE_POISON_STING - level_up_move 6, MOVE_SUPERSONIC - level_up_move 12, MOVE_CONSTRICT - level_up_move 19, MOVE_ACID - level_up_move 25, MOVE_BUBBLE_BEAM - level_up_move 30, MOVE_WRAP - level_up_move 36, MOVE_BARRIER - level_up_move 43, MOVE_SCREECH - level_up_move 49, MOVE_HYDRO_PUMP - .2byte -1 - -gTentacruelLevelUpLearnset: - level_up_move 1, MOVE_POISON_STING - level_up_move 1, MOVE_SUPERSONIC - level_up_move 1, MOVE_CONSTRICT - level_up_move 6, MOVE_SUPERSONIC - level_up_move 12, MOVE_CONSTRICT - level_up_move 19, MOVE_ACID - level_up_move 25, MOVE_BUBBLE_BEAM - level_up_move 30, MOVE_WRAP - level_up_move 38, MOVE_BARRIER - level_up_move 47, MOVE_SCREECH - level_up_move 55, MOVE_HYDRO_PUMP - .2byte -1 - -gGeodudeLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_DEFENSE_CURL - level_up_move 6, MOVE_MUD_SPORT - level_up_move 11, MOVE_ROCK_THROW - level_up_move 16, MOVE_MAGNITUDE - level_up_move 21, MOVE_SELF_DESTRUCT - level_up_move 26, MOVE_ROLLOUT - level_up_move 31, MOVE_ROCK_BLAST - level_up_move 36, MOVE_EARTHQUAKE - level_up_move 41, MOVE_EXPLOSION - level_up_move 46, MOVE_DOUBLE_EDGE - .2byte -1 - -gGravelerLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_DEFENSE_CURL - level_up_move 1, MOVE_MUD_SPORT - level_up_move 1, MOVE_ROCK_THROW - level_up_move 6, MOVE_MUD_SPORT - level_up_move 11, MOVE_ROCK_THROW - level_up_move 16, MOVE_MAGNITUDE - level_up_move 21, MOVE_SELF_DESTRUCT - level_up_move 29, MOVE_ROLLOUT - level_up_move 37, MOVE_ROCK_BLAST - level_up_move 45, MOVE_EARTHQUAKE - level_up_move 53, MOVE_EXPLOSION - level_up_move 62, MOVE_DOUBLE_EDGE - .2byte -1 - -gGolemLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_DEFENSE_CURL - level_up_move 1, MOVE_MUD_SPORT - level_up_move 1, MOVE_ROCK_THROW - level_up_move 6, MOVE_MUD_SPORT - level_up_move 11, MOVE_ROCK_THROW - level_up_move 16, MOVE_MAGNITUDE - level_up_move 21, MOVE_SELF_DESTRUCT - level_up_move 29, MOVE_ROLLOUT - level_up_move 37, MOVE_ROCK_BLAST - level_up_move 45, MOVE_EARTHQUAKE - level_up_move 53, MOVE_EXPLOSION - level_up_move 62, MOVE_DOUBLE_EDGE - .2byte -1 - -gPonytaLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 5, MOVE_GROWL - level_up_move 9, MOVE_TAIL_WHIP - level_up_move 14, MOVE_EMBER - level_up_move 19, MOVE_STOMP - level_up_move 25, MOVE_FIRE_SPIN - level_up_move 31, MOVE_TAKE_DOWN - level_up_move 38, MOVE_AGILITY - level_up_move 45, MOVE_BOUNCE - level_up_move 53, MOVE_FIRE_BLAST - .2byte -1 - -gRapidashLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_EMBER - level_up_move 5, MOVE_GROWL - level_up_move 9, MOVE_TAIL_WHIP - level_up_move 14, MOVE_EMBER - level_up_move 19, MOVE_STOMP - level_up_move 25, MOVE_FIRE_SPIN - level_up_move 31, MOVE_TAKE_DOWN - level_up_move 38, MOVE_AGILITY - level_up_move 40, MOVE_FURY_ATTACK - level_up_move 50, MOVE_BOUNCE - level_up_move 63, MOVE_FIRE_BLAST - .2byte -1 - -gSlowpokeLevelUpLearnset: - level_up_move 1, MOVE_CURSE - level_up_move 1, MOVE_YAWN - level_up_move 1, MOVE_TACKLE - level_up_move 6, MOVE_GROWL - level_up_move 15, MOVE_WATER_GUN - level_up_move 20, MOVE_CONFUSION - level_up_move 29, MOVE_DISABLE - level_up_move 34, MOVE_HEADBUTT - level_up_move 43, MOVE_AMNESIA - level_up_move 48, MOVE_PSYCHIC - .2byte -1 - -gSlowbroLevelUpLearnset: - level_up_move 1, MOVE_CURSE - level_up_move 1, MOVE_YAWN - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 6, MOVE_GROWL - level_up_move 15, MOVE_WATER_GUN - level_up_move 20, MOVE_CONFUSION - level_up_move 29, MOVE_DISABLE - level_up_move 34, MOVE_HEADBUTT - level_up_move 37, MOVE_WITHDRAW - level_up_move 46, MOVE_AMNESIA - level_up_move 54, MOVE_PSYCHIC - .2byte -1 - -gMagnemiteLevelUpLearnset: - level_up_move 1, MOVE_METAL_SOUND - level_up_move 1, MOVE_TACKLE - level_up_move 6, MOVE_THUNDER_SHOCK - level_up_move 11, MOVE_SUPERSONIC - level_up_move 16, MOVE_SONIC_BOOM - level_up_move 21, MOVE_THUNDER_WAVE - level_up_move 26, MOVE_SPARK - level_up_move 32, MOVE_LOCK_ON - level_up_move 38, MOVE_SWIFT - level_up_move 44, MOVE_SCREECH - level_up_move 50, MOVE_ZAP_CANNON - .2byte -1 - -gMagnetonLevelUpLearnset: - level_up_move 1, MOVE_METAL_SOUND - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_THUNDER_SHOCK - level_up_move 1, MOVE_SUPERSONIC - level_up_move 6, MOVE_THUNDER_SHOCK - level_up_move 11, MOVE_SUPERSONIC - level_up_move 16, MOVE_SONIC_BOOM - level_up_move 21, MOVE_THUNDER_WAVE - level_up_move 26, MOVE_SPARK - level_up_move 35, MOVE_LOCK_ON - level_up_move 44, MOVE_TRI_ATTACK - level_up_move 53, MOVE_SCREECH - level_up_move 62, MOVE_ZAP_CANNON - .2byte -1 - -gFarfetchdLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 6, MOVE_SAND_ATTACK - level_up_move 11, MOVE_LEER - level_up_move 16, MOVE_FURY_ATTACK - level_up_move 21, MOVE_KNOCK_OFF - level_up_move 26, MOVE_FURY_CUTTER - level_up_move 31, MOVE_SWORDS_DANCE - level_up_move 36, MOVE_AGILITY - level_up_move 41, MOVE_SLASH - level_up_move 46, MOVE_FALSE_SWIPE - .2byte -1 - -gDoduoLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_GROWL - level_up_move 9, MOVE_PURSUIT - level_up_move 13, MOVE_FURY_ATTACK - level_up_move 21, MOVE_TRI_ATTACK - level_up_move 25, MOVE_RAGE - level_up_move 33, MOVE_UPROAR - level_up_move 37, MOVE_DRILL_PECK - level_up_move 45, MOVE_AGILITY - .2byte -1 - -gDodrioLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_PURSUIT - level_up_move 1, MOVE_FURY_ATTACK - level_up_move 9, MOVE_PURSUIT - level_up_move 13, MOVE_FURY_ATTACK - level_up_move 21, MOVE_TRI_ATTACK - level_up_move 25, MOVE_RAGE - level_up_move 38, MOVE_UPROAR - level_up_move 47, MOVE_DRILL_PECK - level_up_move 60, MOVE_AGILITY - .2byte -1 - -gSeelLevelUpLearnset: - level_up_move 1, MOVE_HEADBUTT - level_up_move 9, MOVE_GROWL - level_up_move 17, MOVE_ICY_WIND - level_up_move 21, MOVE_AURORA_BEAM - level_up_move 29, MOVE_REST - level_up_move 37, MOVE_TAKE_DOWN - level_up_move 41, MOVE_ICE_BEAM - level_up_move 49, MOVE_SAFEGUARD - .2byte -1 - -gDewgongLevelUpLearnset: - level_up_move 1, MOVE_HEADBUTT - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_ICY_WIND - level_up_move 1, MOVE_AURORA_BEAM - level_up_move 9, MOVE_GROWL - level_up_move 17, MOVE_ICY_WIND - level_up_move 21, MOVE_AURORA_BEAM - level_up_move 29, MOVE_REST - level_up_move 34, MOVE_SHEER_COLD - level_up_move 42, MOVE_TAKE_DOWN - level_up_move 51, MOVE_ICE_BEAM - level_up_move 64, MOVE_SAFEGUARD - .2byte -1 - -gGrimerLevelUpLearnset: - level_up_move 1, MOVE_POISON_GAS - level_up_move 1, MOVE_POUND - level_up_move 4, MOVE_HARDEN - level_up_move 8, MOVE_DISABLE - level_up_move 13, MOVE_SLUDGE - level_up_move 19, MOVE_MINIMIZE - level_up_move 26, MOVE_SCREECH - level_up_move 34, MOVE_ACID_ARMOR - level_up_move 43, MOVE_SLUDGE_BOMB - level_up_move 53, MOVE_MEMENTO - .2byte -1 - -gMukLevelUpLearnset: - level_up_move 1, MOVE_POISON_GAS - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_HARDEN - level_up_move 4, MOVE_HARDEN - level_up_move 8, MOVE_DISABLE - level_up_move 13, MOVE_SLUDGE - level_up_move 19, MOVE_MINIMIZE - level_up_move 26, MOVE_SCREECH - level_up_move 34, MOVE_ACID_ARMOR - level_up_move 47, MOVE_SLUDGE_BOMB - level_up_move 61, MOVE_MEMENTO - .2byte -1 - -gShellderLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_WITHDRAW - level_up_move 9, MOVE_SUPERSONIC - level_up_move 17, MOVE_AURORA_BEAM - level_up_move 25, MOVE_PROTECT - level_up_move 33, MOVE_LEER - level_up_move 41, MOVE_CLAMP - level_up_move 49, MOVE_ICE_BEAM - .2byte -1 - -gCloysterLevelUpLearnset: - level_up_move 1, MOVE_WITHDRAW - level_up_move 1, MOVE_SUPERSONIC - level_up_move 1, MOVE_AURORA_BEAM - level_up_move 1, MOVE_PROTECT - level_up_move 33, MOVE_SPIKES - level_up_move 41, MOVE_SPIKE_CANNON - .2byte -1 - -gGastlyLevelUpLearnset: - level_up_move 1, MOVE_HYPNOSIS - level_up_move 1, MOVE_LICK - level_up_move 8, MOVE_SPITE - level_up_move 13, MOVE_MEAN_LOOK - level_up_move 16, MOVE_CURSE - level_up_move 21, MOVE_NIGHT_SHADE - level_up_move 28, MOVE_CONFUSE_RAY - level_up_move 33, MOVE_DREAM_EATER - level_up_move 36, MOVE_DESTINY_BOND - .2byte -1 - -gHaunterLevelUpLearnset: - level_up_move 1, MOVE_HYPNOSIS - level_up_move 1, MOVE_LICK - level_up_move 1, MOVE_SPITE - level_up_move 8, MOVE_SPITE - level_up_move 13, MOVE_MEAN_LOOK - level_up_move 16, MOVE_CURSE - level_up_move 21, MOVE_NIGHT_SHADE - level_up_move 25, MOVE_SHADOW_PUNCH - level_up_move 31, MOVE_CONFUSE_RAY - level_up_move 39, MOVE_DREAM_EATER - level_up_move 48, MOVE_DESTINY_BOND - .2byte -1 - -gGengarLevelUpLearnset: - level_up_move 1, MOVE_HYPNOSIS - level_up_move 1, MOVE_LICK - level_up_move 1, MOVE_SPITE - level_up_move 8, MOVE_SPITE - level_up_move 13, MOVE_MEAN_LOOK - level_up_move 16, MOVE_CURSE - level_up_move 21, MOVE_NIGHT_SHADE - level_up_move 25, MOVE_SHADOW_PUNCH - level_up_move 31, MOVE_CONFUSE_RAY - level_up_move 39, MOVE_DREAM_EATER - level_up_move 48, MOVE_DESTINY_BOND - .2byte -1 - -gOnixLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_SCREECH - level_up_move 9, MOVE_BIND - level_up_move 13, MOVE_ROCK_THROW - level_up_move 21, MOVE_HARDEN - level_up_move 25, MOVE_RAGE - level_up_move 33, MOVE_SANDSTORM - level_up_move 37, MOVE_SLAM - level_up_move 45, MOVE_IRON_TAIL - level_up_move 49, MOVE_SAND_TOMB - level_up_move 57, MOVE_DOUBLE_EDGE - .2byte -1 - -gDrowzeeLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_HYPNOSIS - level_up_move 10, MOVE_DISABLE - level_up_move 18, MOVE_CONFUSION - level_up_move 25, MOVE_HEADBUTT - level_up_move 31, MOVE_POISON_GAS - level_up_move 36, MOVE_MEDITATE - level_up_move 40, MOVE_PSYCHIC - level_up_move 43, MOVE_PSYCH_UP - level_up_move 45, MOVE_FUTURE_SIGHT - .2byte -1 - -gHypnoLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_HYPNOSIS - level_up_move 1, MOVE_DISABLE - level_up_move 1, MOVE_CONFUSION - level_up_move 10, MOVE_DISABLE - level_up_move 18, MOVE_CONFUSION - level_up_move 25, MOVE_HEADBUTT - level_up_move 33, MOVE_POISON_GAS - level_up_move 40, MOVE_MEDITATE - level_up_move 49, MOVE_PSYCHIC - level_up_move 55, MOVE_PSYCH_UP - level_up_move 60, MOVE_FUTURE_SIGHT - .2byte -1 - -gKrabbyLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 5, MOVE_LEER - level_up_move 12, MOVE_VICE_GRIP - level_up_move 16, MOVE_HARDEN - level_up_move 23, MOVE_MUD_SHOT - level_up_move 27, MOVE_STOMP - level_up_move 34, MOVE_GUILLOTINE - level_up_move 41, MOVE_PROTECT - level_up_move 45, MOVE_CRABHAMMER - .2byte -1 - -gKinglerLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_VICE_GRIP - level_up_move 5, MOVE_LEER - level_up_move 12, MOVE_VICE_GRIP - level_up_move 16, MOVE_HARDEN - level_up_move 23, MOVE_MUD_SHOT - level_up_move 27, MOVE_STOMP - level_up_move 38, MOVE_GUILLOTINE - level_up_move 49, MOVE_PROTECT - level_up_move 57, MOVE_CRABHAMMER - .2byte -1 - -gVoltorbLevelUpLearnset: - level_up_move 1, MOVE_CHARGE - level_up_move 1, MOVE_TACKLE - level_up_move 8, MOVE_SCREECH - level_up_move 15, MOVE_SONIC_BOOM - level_up_move 21, MOVE_SPARK - level_up_move 27, MOVE_SELF_DESTRUCT - level_up_move 32, MOVE_ROLLOUT - level_up_move 37, MOVE_LIGHT_SCREEN - level_up_move 42, MOVE_SWIFT - level_up_move 46, MOVE_EXPLOSION - level_up_move 49, MOVE_MIRROR_COAT - .2byte -1 - -gElectrodeLevelUpLearnset: - level_up_move 1, MOVE_CHARGE - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_SCREECH - level_up_move 1, MOVE_SONIC_BOOM - level_up_move 8, MOVE_SCREECH - level_up_move 15, MOVE_SONIC_BOOM - level_up_move 21, MOVE_SPARK - level_up_move 27, MOVE_SELF_DESTRUCT - level_up_move 34, MOVE_ROLLOUT - level_up_move 41, MOVE_LIGHT_SCREEN - level_up_move 48, MOVE_SWIFT - level_up_move 54, MOVE_EXPLOSION - level_up_move 59, MOVE_MIRROR_COAT - .2byte -1 - -gExeggcuteLevelUpLearnset: - level_up_move 1, MOVE_BARRAGE - level_up_move 1, MOVE_UPROAR - level_up_move 1, MOVE_HYPNOSIS - level_up_move 7, MOVE_REFLECT - level_up_move 13, MOVE_LEECH_SEED - level_up_move 19, MOVE_CONFUSION - level_up_move 25, MOVE_STUN_SPORE - level_up_move 31, MOVE_POISON_POWDER - level_up_move 37, MOVE_SLEEP_POWDER - level_up_move 43, MOVE_SOLAR_BEAM - .2byte -1 - -gExeggutorLevelUpLearnset: - level_up_move 1, MOVE_BARRAGE - level_up_move 1, MOVE_HYPNOSIS - level_up_move 1, MOVE_CONFUSION - level_up_move 19, MOVE_STOMP - level_up_move 31, MOVE_EGG_BOMB - .2byte -1 - -gCuboneLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 5, MOVE_TAIL_WHIP - level_up_move 9, MOVE_BONE_CLUB - level_up_move 13, MOVE_HEADBUTT - level_up_move 17, MOVE_LEER - level_up_move 21, MOVE_FOCUS_ENERGY - level_up_move 25, MOVE_BONEMERANG - level_up_move 29, MOVE_RAGE - level_up_move 33, MOVE_FALSE_SWIPE - level_up_move 37, MOVE_THRASH - level_up_move 41, MOVE_BONE_RUSH - level_up_move 45, MOVE_DOUBLE_EDGE - .2byte -1 - -gMarowakLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_BONE_CLUB - level_up_move 1, MOVE_HEADBUTT - level_up_move 5, MOVE_TAIL_WHIP - level_up_move 9, MOVE_BONE_CLUB - level_up_move 13, MOVE_HEADBUTT - level_up_move 17, MOVE_LEER - level_up_move 21, MOVE_FOCUS_ENERGY - level_up_move 25, MOVE_BONEMERANG - level_up_move 32, MOVE_RAGE - level_up_move 39, MOVE_FALSE_SWIPE - level_up_move 46, MOVE_THRASH - level_up_move 53, MOVE_BONE_RUSH - level_up_move 61, MOVE_DOUBLE_EDGE - .2byte -1 - -gHitmonleeLevelUpLearnset: - level_up_move 1, MOVE_REVENGE - level_up_move 1, MOVE_DOUBLE_KICK - level_up_move 6, MOVE_MEDITATE - level_up_move 11, MOVE_ROLLING_KICK - level_up_move 16, MOVE_JUMP_KICK - level_up_move 20, MOVE_BRICK_BREAK - level_up_move 21, MOVE_FOCUS_ENERGY - level_up_move 26, MOVE_HI_JUMP_KICK - level_up_move 31, MOVE_MIND_READER - level_up_move 36, MOVE_FORESIGHT - level_up_move 41, MOVE_ENDURE - level_up_move 46, MOVE_MEGA_KICK - level_up_move 51, MOVE_REVERSAL - .2byte -1 - -gHitmonchanLevelUpLearnset: - level_up_move 1, MOVE_REVENGE - level_up_move 1, MOVE_COMET_PUNCH - level_up_move 7, MOVE_AGILITY - level_up_move 13, MOVE_PURSUIT - level_up_move 20, MOVE_MACH_PUNCH - level_up_move 26, MOVE_THUNDER_PUNCH - level_up_move 26, MOVE_ICE_PUNCH - level_up_move 26, MOVE_FIRE_PUNCH - level_up_move 32, MOVE_SKY_UPPERCUT - level_up_move 38, MOVE_MEGA_PUNCH - level_up_move 44, MOVE_DETECT - level_up_move 50, MOVE_COUNTER - .2byte -1 - -gLickitungLevelUpLearnset: - level_up_move 1, MOVE_LICK - level_up_move 7, MOVE_SUPERSONIC - level_up_move 12, MOVE_DEFENSE_CURL - level_up_move 18, MOVE_KNOCK_OFF - level_up_move 23, MOVE_STOMP - level_up_move 29, MOVE_WRAP - level_up_move 34, MOVE_DISABLE - level_up_move 40, MOVE_SLAM - level_up_move 45, MOVE_SCREECH - level_up_move 51, MOVE_REFRESH - .2byte -1 - -gKoffingLevelUpLearnset: - level_up_move 1, MOVE_POISON_GAS - level_up_move 1, MOVE_TACKLE - level_up_move 9, MOVE_SMOG - level_up_move 17, MOVE_SELF_DESTRUCT - level_up_move 21, MOVE_SLUDGE - level_up_move 25, MOVE_SMOKESCREEN - level_up_move 33, MOVE_HAZE - level_up_move 41, MOVE_EXPLOSION - level_up_move 45, MOVE_DESTINY_BOND - level_up_move 49, MOVE_MEMENTO - .2byte -1 - -gWeezingLevelUpLearnset: - level_up_move 1, MOVE_POISON_GAS - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_SMOG - level_up_move 1, MOVE_SELF_DESTRUCT - level_up_move 9, MOVE_SMOG - level_up_move 17, MOVE_SELF_DESTRUCT - level_up_move 21, MOVE_SLUDGE - level_up_move 25, MOVE_SMOKESCREEN - level_up_move 33, MOVE_HAZE - level_up_move 44, MOVE_EXPLOSION - level_up_move 51, MOVE_DESTINY_BOND - level_up_move 58, MOVE_MEMENTO - .2byte -1 - -gRhyhornLevelUpLearnset: - level_up_move 1, MOVE_HORN_ATTACK - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 10, MOVE_STOMP - level_up_move 15, MOVE_FURY_ATTACK - level_up_move 24, MOVE_SCARY_FACE - level_up_move 29, MOVE_ROCK_BLAST - level_up_move 38, MOVE_HORN_DRILL - level_up_move 43, MOVE_TAKE_DOWN - level_up_move 52, MOVE_EARTHQUAKE - level_up_move 57, MOVE_MEGAHORN - .2byte -1 - -gRhydonLevelUpLearnset: - level_up_move 1, MOVE_HORN_ATTACK - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_STOMP - level_up_move 1, MOVE_FURY_ATTACK - level_up_move 10, MOVE_STOMP - level_up_move 15, MOVE_FURY_ATTACK - level_up_move 24, MOVE_SCARY_FACE - level_up_move 29, MOVE_ROCK_BLAST - level_up_move 38, MOVE_HORN_DRILL - level_up_move 46, MOVE_TAKE_DOWN - level_up_move 58, MOVE_EARTHQUAKE - level_up_move 66, MOVE_MEGAHORN - .2byte -1 - -gChanseyLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_GROWL - level_up_move 5, MOVE_TAIL_WHIP - level_up_move 9, MOVE_REFRESH - level_up_move 13, MOVE_SOFT_BOILED - level_up_move 17, MOVE_DOUBLE_SLAP - level_up_move 23, MOVE_MINIMIZE - level_up_move 29, MOVE_SING - level_up_move 35, MOVE_EGG_BOMB - level_up_move 41, MOVE_DEFENSE_CURL - level_up_move 49, MOVE_LIGHT_SCREEN - level_up_move 57, MOVE_DOUBLE_EDGE - .2byte -1 - -gTangelaLevelUpLearnset: - level_up_move 1, MOVE_INGRAIN - level_up_move 1, MOVE_CONSTRICT - level_up_move 4, MOVE_SLEEP_POWDER - level_up_move 10, MOVE_ABSORB - level_up_move 13, MOVE_GROWTH - level_up_move 19, MOVE_POISON_POWDER - level_up_move 22, MOVE_VINE_WHIP - level_up_move 28, MOVE_BIND - level_up_move 31, MOVE_MEGA_DRAIN - level_up_move 37, MOVE_STUN_SPORE - level_up_move 40, MOVE_SLAM - level_up_move 46, MOVE_TICKLE - .2byte -1 - -gKangaskhanLevelUpLearnset: - level_up_move 1, MOVE_COMET_PUNCH - level_up_move 1, MOVE_LEER - level_up_move 7, MOVE_BITE - level_up_move 13, MOVE_TAIL_WHIP - level_up_move 19, MOVE_FAKE_OUT - level_up_move 25, MOVE_MEGA_PUNCH - level_up_move 31, MOVE_RAGE - level_up_move 37, MOVE_ENDURE - level_up_move 43, MOVE_DIZZY_PUNCH - level_up_move 49, MOVE_REVERSAL - .2byte -1 - -gHorseaLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 8, MOVE_SMOKESCREEN - level_up_move 15, MOVE_LEER - level_up_move 22, MOVE_WATER_GUN - level_up_move 29, MOVE_TWISTER - level_up_move 36, MOVE_AGILITY - level_up_move 43, MOVE_HYDRO_PUMP - level_up_move 50, MOVE_DRAGON_DANCE - .2byte -1 - -gSeadraLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 1, MOVE_SMOKESCREEN - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_WATER_GUN - level_up_move 8, MOVE_SMOKESCREEN - level_up_move 15, MOVE_LEER - level_up_move 22, MOVE_WATER_GUN - level_up_move 29, MOVE_TWISTER - level_up_move 40, MOVE_AGILITY - level_up_move 51, MOVE_HYDRO_PUMP - level_up_move 62, MOVE_DRAGON_DANCE - .2byte -1 - -gGoldeenLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_WATER_SPORT - level_up_move 10, MOVE_SUPERSONIC - level_up_move 15, MOVE_HORN_ATTACK - level_up_move 24, MOVE_FLAIL - level_up_move 29, MOVE_FURY_ATTACK - level_up_move 38, MOVE_WATERFALL - level_up_move 43, MOVE_HORN_DRILL - level_up_move 52, MOVE_AGILITY - .2byte -1 - -gSeakingLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_WATER_SPORT - level_up_move 1, MOVE_SUPERSONIC - level_up_move 10, MOVE_SUPERSONIC - level_up_move 15, MOVE_HORN_ATTACK - level_up_move 24, MOVE_FLAIL - level_up_move 29, MOVE_FURY_ATTACK - level_up_move 41, MOVE_WATERFALL - level_up_move 49, MOVE_HORN_DRILL - level_up_move 61, MOVE_AGILITY - .2byte -1 - -gStaryuLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_HARDEN - level_up_move 6, MOVE_WATER_GUN - level_up_move 10, MOVE_RAPID_SPIN - level_up_move 15, MOVE_RECOVER - level_up_move 19, MOVE_CAMOUFLAGE - level_up_move 24, MOVE_SWIFT - level_up_move 28, MOVE_BUBBLE_BEAM - level_up_move 33, MOVE_MINIMIZE - level_up_move 37, MOVE_LIGHT_SCREEN - level_up_move 42, MOVE_COSMIC_POWER - level_up_move 46, MOVE_HYDRO_PUMP - .2byte -1 - -gStarmieLevelUpLearnset: - level_up_move 1, MOVE_WATER_GUN - level_up_move 1, MOVE_RAPID_SPIN - level_up_move 1, MOVE_RECOVER - level_up_move 1, MOVE_SWIFT - level_up_move 33, MOVE_CONFUSE_RAY - .2byte -1 - -gMrmimeLevelUpLearnset: - level_up_move 1, MOVE_BARRIER - level_up_move 5, MOVE_CONFUSION - level_up_move 9, MOVE_SUBSTITUTE - level_up_move 13, MOVE_MEDITATE - level_up_move 17, MOVE_DOUBLE_SLAP - level_up_move 21, MOVE_LIGHT_SCREEN - level_up_move 21, MOVE_REFLECT - level_up_move 25, MOVE_ENCORE - level_up_move 29, MOVE_PSYBEAM - level_up_move 33, MOVE_RECYCLE - level_up_move 37, MOVE_TRICK - level_up_move 41, MOVE_ROLE_PLAY - level_up_move 45, MOVE_PSYCHIC - level_up_move 49, MOVE_BATON_PASS - level_up_move 53, MOVE_SAFEGUARD - .2byte -1 - -gScytherLevelUpLearnset: - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 1, MOVE_LEER - level_up_move 6, MOVE_FOCUS_ENERGY - level_up_move 11, MOVE_PURSUIT - level_up_move 16, MOVE_FALSE_SWIPE - level_up_move 21, MOVE_AGILITY - level_up_move 26, MOVE_WING_ATTACK - level_up_move 31, MOVE_SLASH - level_up_move 36, MOVE_SWORDS_DANCE - level_up_move 41, MOVE_DOUBLE_TEAM - level_up_move 46, MOVE_FURY_CUTTER - .2byte -1 - -gJynxLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_LICK - level_up_move 1, MOVE_LOVELY_KISS - level_up_move 1, MOVE_POWDER_SNOW - level_up_move 9, MOVE_LOVELY_KISS - level_up_move 13, MOVE_POWDER_SNOW - level_up_move 21, MOVE_DOUBLE_SLAP - level_up_move 25, MOVE_ICE_PUNCH - level_up_move 35, MOVE_MEAN_LOOK - level_up_move 41, MOVE_FAKE_TEARS - level_up_move 51, MOVE_BODY_SLAM - level_up_move 57, MOVE_PERISH_SONG - level_up_move 67, MOVE_BLIZZARD - .2byte -1 - -gElectabuzzLevelUpLearnset: - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_THUNDER_PUNCH - level_up_move 9, MOVE_THUNDER_PUNCH - level_up_move 17, MOVE_LIGHT_SCREEN - level_up_move 25, MOVE_SWIFT - level_up_move 36, MOVE_SCREECH - level_up_move 47, MOVE_THUNDERBOLT - level_up_move 58, MOVE_THUNDER - .2byte -1 - -gMagmarLevelUpLearnset: - level_up_move 1, MOVE_EMBER - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_SMOG - level_up_move 1, MOVE_FIRE_PUNCH - level_up_move 7, MOVE_LEER - level_up_move 13, MOVE_SMOG - level_up_move 19, MOVE_FIRE_PUNCH - level_up_move 25, MOVE_SMOKESCREEN - level_up_move 33, MOVE_SUNNY_DAY - level_up_move 41, MOVE_FLAMETHROWER - level_up_move 49, MOVE_CONFUSE_RAY - level_up_move 57, MOVE_FIRE_BLAST - .2byte -1 - -gPinsirLevelUpLearnset: - level_up_move 1, MOVE_VICE_GRIP - level_up_move 1, MOVE_FOCUS_ENERGY - level_up_move 7, MOVE_BIND - level_up_move 13, MOVE_SEISMIC_TOSS - level_up_move 19, MOVE_HARDEN - level_up_move 25, MOVE_REVENGE - level_up_move 31, MOVE_BRICK_BREAK - level_up_move 37, MOVE_GUILLOTINE - level_up_move 43, MOVE_SUBMISSION - level_up_move 49, MOVE_SWORDS_DANCE - .2byte -1 - -gTaurosLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 4, MOVE_TAIL_WHIP - level_up_move 8, MOVE_RAGE - level_up_move 13, MOVE_HORN_ATTACK - level_up_move 19, MOVE_SCARY_FACE - level_up_move 26, MOVE_PURSUIT - level_up_move 34, MOVE_REST - level_up_move 43, MOVE_THRASH - level_up_move 53, MOVE_TAKE_DOWN - .2byte -1 - -gMagikarpLevelUpLearnset: - level_up_move 1, MOVE_SPLASH - level_up_move 15, MOVE_TACKLE - level_up_move 30, MOVE_FLAIL - .2byte -1 - -gGyaradosLevelUpLearnset: - level_up_move 1, MOVE_THRASH - level_up_move 20, MOVE_BITE - level_up_move 25, MOVE_DRAGON_RAGE - level_up_move 30, MOVE_LEER - level_up_move 35, MOVE_TWISTER - level_up_move 40, MOVE_HYDRO_PUMP - level_up_move 45, MOVE_RAIN_DANCE - level_up_move 50, MOVE_DRAGON_DANCE - level_up_move 55, MOVE_HYPER_BEAM - .2byte -1 - -gLaprasLevelUpLearnset: - level_up_move 1, MOVE_WATER_GUN - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_SING - level_up_move 7, MOVE_MIST - level_up_move 13, MOVE_BODY_SLAM - level_up_move 19, MOVE_CONFUSE_RAY - level_up_move 25, MOVE_PERISH_SONG - level_up_move 31, MOVE_ICE_BEAM - level_up_move 37, MOVE_RAIN_DANCE - level_up_move 43, MOVE_SAFEGUARD - level_up_move 49, MOVE_HYDRO_PUMP - level_up_move 55, MOVE_SHEER_COLD - .2byte -1 - -gDittoLevelUpLearnset: - level_up_move 1, MOVE_TRANSFORM - .2byte -1 - -gEeveeLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_HELPING_HAND - level_up_move 8, MOVE_SAND_ATTACK - level_up_move 16, MOVE_GROWL - level_up_move 23, MOVE_QUICK_ATTACK - level_up_move 30, MOVE_BITE - level_up_move 36, MOVE_BATON_PASS - level_up_move 42, MOVE_TAKE_DOWN - .2byte -1 - -gVaporeonLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_HELPING_HAND - level_up_move 8, MOVE_SAND_ATTACK - level_up_move 16, MOVE_WATER_GUN - level_up_move 23, MOVE_QUICK_ATTACK - level_up_move 30, MOVE_BITE - level_up_move 36, MOVE_AURORA_BEAM - level_up_move 42, MOVE_HAZE - level_up_move 47, MOVE_ACID_ARMOR - level_up_move 52, MOVE_HYDRO_PUMP - .2byte -1 - -gJolteonLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_HELPING_HAND - level_up_move 8, MOVE_SAND_ATTACK - level_up_move 16, MOVE_THUNDER_SHOCK - level_up_move 23, MOVE_QUICK_ATTACK - level_up_move 30, MOVE_DOUBLE_KICK - level_up_move 36, MOVE_PIN_MISSILE - level_up_move 42, MOVE_THUNDER_WAVE - level_up_move 47, MOVE_AGILITY - level_up_move 52, MOVE_THUNDER - .2byte -1 - -gFlareonLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_HELPING_HAND - level_up_move 8, MOVE_SAND_ATTACK - level_up_move 16, MOVE_EMBER - level_up_move 23, MOVE_QUICK_ATTACK - level_up_move 30, MOVE_BITE - level_up_move 36, MOVE_FIRE_SPIN - level_up_move 42, MOVE_SMOG - level_up_move 47, MOVE_LEER - level_up_move 52, MOVE_FLAMETHROWER - .2byte -1 - -gPorygonLevelUpLearnset: - level_up_move 1, MOVE_CONVERSION_2 - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_CONVERSION - level_up_move 9, MOVE_AGILITY - level_up_move 12, MOVE_PSYBEAM - level_up_move 20, MOVE_RECOVER - level_up_move 24, MOVE_SHARPEN - level_up_move 32, MOVE_LOCK_ON - level_up_move 36, MOVE_TRI_ATTACK - level_up_move 44, MOVE_RECYCLE - level_up_move 48, MOVE_ZAP_CANNON - .2byte -1 - -gOmanyteLevelUpLearnset: - level_up_move 1, MOVE_CONSTRICT - level_up_move 1, MOVE_WITHDRAW - level_up_move 13, MOVE_BITE - level_up_move 19, MOVE_WATER_GUN - level_up_move 25, MOVE_MUD_SHOT - level_up_move 31, MOVE_LEER - level_up_move 37, MOVE_PROTECT - level_up_move 43, MOVE_TICKLE - level_up_move 49, MOVE_ANCIENT_POWER - level_up_move 55, MOVE_HYDRO_PUMP - .2byte -1 - -gOmastarLevelUpLearnset: - level_up_move 1, MOVE_CONSTRICT - level_up_move 1, MOVE_WITHDRAW - level_up_move 1, MOVE_BITE - level_up_move 13, MOVE_BITE - level_up_move 19, MOVE_WATER_GUN - level_up_move 25, MOVE_MUD_SHOT - level_up_move 31, MOVE_LEER - level_up_move 37, MOVE_PROTECT - level_up_move 40, MOVE_SPIKE_CANNON - level_up_move 46, MOVE_TICKLE - level_up_move 55, MOVE_ANCIENT_POWER - level_up_move 65, MOVE_HYDRO_PUMP - .2byte -1 - -gKabutoLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_HARDEN - level_up_move 13, MOVE_ABSORB - level_up_move 19, MOVE_LEER - level_up_move 25, MOVE_MUD_SHOT - level_up_move 31, MOVE_SAND_ATTACK - level_up_move 37, MOVE_ENDURE - level_up_move 43, MOVE_METAL_SOUND - level_up_move 49, MOVE_MEGA_DRAIN - level_up_move 55, MOVE_ANCIENT_POWER - .2byte -1 - -gKabutopsLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_HARDEN - level_up_move 1, MOVE_ABSORB - level_up_move 13, MOVE_ABSORB - level_up_move 19, MOVE_LEER - level_up_move 25, MOVE_MUD_SHOT - level_up_move 31, MOVE_SAND_ATTACK - level_up_move 37, MOVE_ENDURE - level_up_move 40, MOVE_SLASH - level_up_move 46, MOVE_METAL_SOUND - level_up_move 55, MOVE_MEGA_DRAIN - level_up_move 65, MOVE_ANCIENT_POWER - .2byte -1 - -gAerodactylLevelUpLearnset: - level_up_move 1, MOVE_WING_ATTACK - level_up_move 8, MOVE_AGILITY - level_up_move 15, MOVE_BITE - level_up_move 22, MOVE_SUPERSONIC - level_up_move 29, MOVE_ANCIENT_POWER - level_up_move 36, MOVE_SCARY_FACE - level_up_move 43, MOVE_TAKE_DOWN - level_up_move 50, MOVE_HYPER_BEAM - .2byte -1 - -gSnorlaxLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 6, MOVE_AMNESIA - level_up_move 10, MOVE_DEFENSE_CURL - level_up_move 15, MOVE_BELLY_DRUM - level_up_move 19, MOVE_HEADBUTT - level_up_move 24, MOVE_YAWN - level_up_move 28, MOVE_REST - level_up_move 28, MOVE_SNORE - level_up_move 33, MOVE_BODY_SLAM - level_up_move 37, MOVE_BLOCK - level_up_move 42, MOVE_COVET - level_up_move 46, MOVE_ROLLOUT - level_up_move 51, MOVE_HYPER_BEAM - .2byte -1 - -gArticunoLevelUpLearnset: - level_up_move 1, MOVE_GUST - level_up_move 1, MOVE_POWDER_SNOW - level_up_move 13, MOVE_MIST - level_up_move 25, MOVE_AGILITY - level_up_move 37, MOVE_MIND_READER - level_up_move 49, MOVE_ICE_BEAM - level_up_move 61, MOVE_REFLECT - level_up_move 73, MOVE_BLIZZARD - level_up_move 85, MOVE_SHEER_COLD - .2byte -1 - -gZapdosLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_THUNDER_SHOCK - level_up_move 13, MOVE_THUNDER_WAVE - level_up_move 25, MOVE_AGILITY - level_up_move 37, MOVE_DETECT - level_up_move 49, MOVE_DRILL_PECK - level_up_move 61, MOVE_CHARGE - level_up_move 73, MOVE_LIGHT_SCREEN - level_up_move 85, MOVE_THUNDER - .2byte -1 - -gMoltresLevelUpLearnset: - level_up_move 1, MOVE_WING_ATTACK - level_up_move 1, MOVE_EMBER - level_up_move 13, MOVE_FIRE_SPIN - level_up_move 25, MOVE_AGILITY - level_up_move 37, MOVE_ENDURE - level_up_move 49, MOVE_FLAMETHROWER - level_up_move 61, MOVE_SAFEGUARD - level_up_move 73, MOVE_HEAT_WAVE - level_up_move 85, MOVE_SKY_ATTACK - .2byte -1 - -gDratiniLevelUpLearnset: - level_up_move 1, MOVE_WRAP - level_up_move 1, MOVE_LEER - level_up_move 8, MOVE_THUNDER_WAVE - level_up_move 15, MOVE_TWISTER - level_up_move 22, MOVE_DRAGON_RAGE - level_up_move 29, MOVE_SLAM - level_up_move 36, MOVE_AGILITY - level_up_move 43, MOVE_SAFEGUARD - level_up_move 50, MOVE_OUTRAGE - level_up_move 57, MOVE_HYPER_BEAM - .2byte -1 - -gDragonairLevelUpLearnset: - level_up_move 1, MOVE_WRAP - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_THUNDER_WAVE - level_up_move 1, MOVE_TWISTER - level_up_move 8, MOVE_THUNDER_WAVE - level_up_move 15, MOVE_TWISTER - level_up_move 22, MOVE_DRAGON_RAGE - level_up_move 29, MOVE_SLAM - level_up_move 38, MOVE_AGILITY - level_up_move 47, MOVE_SAFEGUARD - level_up_move 56, MOVE_OUTRAGE - level_up_move 65, MOVE_HYPER_BEAM - .2byte -1 - -gDragoniteLevelUpLearnset: - level_up_move 1, MOVE_WRAP - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_THUNDER_WAVE - level_up_move 1, MOVE_TWISTER - level_up_move 8, MOVE_THUNDER_WAVE - level_up_move 15, MOVE_TWISTER - level_up_move 22, MOVE_DRAGON_RAGE - level_up_move 29, MOVE_SLAM - level_up_move 38, MOVE_AGILITY - level_up_move 47, MOVE_SAFEGUARD - level_up_move 55, MOVE_WING_ATTACK - level_up_move 61, MOVE_OUTRAGE - level_up_move 75, MOVE_HYPER_BEAM - .2byte -1 - -gMewtwoLevelUpLearnset: - level_up_move 1, MOVE_CONFUSION - level_up_move 1, MOVE_DISABLE - level_up_move 11, MOVE_BARRIER - level_up_move 22, MOVE_SWIFT - level_up_move 33, MOVE_PSYCH_UP - level_up_move 44, MOVE_FUTURE_SIGHT - level_up_move 55, MOVE_MIST - level_up_move 66, MOVE_PSYCHIC - level_up_move 77, MOVE_AMNESIA - level_up_move 88, MOVE_RECOVER - level_up_move 99, MOVE_SAFEGUARD - .2byte -1 - -gMewLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 10, MOVE_TRANSFORM - level_up_move 20, MOVE_MEGA_PUNCH - level_up_move 30, MOVE_METRONOME - level_up_move 40, MOVE_PSYCHIC - level_up_move 50, MOVE_ANCIENT_POWER - .2byte -1 - -gChikoritaLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 8, MOVE_RAZOR_LEAF - level_up_move 12, MOVE_REFLECT - level_up_move 15, MOVE_POISON_POWDER - level_up_move 22, MOVE_SYNTHESIS - level_up_move 29, MOVE_BODY_SLAM - level_up_move 36, MOVE_LIGHT_SCREEN - level_up_move 43, MOVE_SAFEGUARD - level_up_move 50, MOVE_SOLAR_BEAM - .2byte -1 - -gBayleefLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_RAZOR_LEAF - level_up_move 1, MOVE_REFLECT - level_up_move 8, MOVE_RAZOR_LEAF - level_up_move 12, MOVE_REFLECT - level_up_move 15, MOVE_POISON_POWDER - level_up_move 23, MOVE_SYNTHESIS - level_up_move 31, MOVE_BODY_SLAM - level_up_move 39, MOVE_LIGHT_SCREEN - level_up_move 47, MOVE_SAFEGUARD - level_up_move 55, MOVE_SOLAR_BEAM - .2byte -1 - -gMeganiumLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_RAZOR_LEAF - level_up_move 1, MOVE_REFLECT - level_up_move 8, MOVE_RAZOR_LEAF - level_up_move 12, MOVE_REFLECT - level_up_move 15, MOVE_POISON_POWDER - level_up_move 23, MOVE_SYNTHESIS - level_up_move 31, MOVE_BODY_SLAM - level_up_move 41, MOVE_LIGHT_SCREEN - level_up_move 51, MOVE_SAFEGUARD - level_up_move 61, MOVE_SOLAR_BEAM - .2byte -1 - -gCyndaquilLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_LEER - level_up_move 6, MOVE_SMOKESCREEN - level_up_move 12, MOVE_EMBER - level_up_move 19, MOVE_QUICK_ATTACK - level_up_move 27, MOVE_FLAME_WHEEL - level_up_move 36, MOVE_SWIFT - level_up_move 46, MOVE_FLAMETHROWER - .2byte -1 - -gQuilavaLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_SMOKESCREEN - level_up_move 6, MOVE_SMOKESCREEN - level_up_move 12, MOVE_EMBER - level_up_move 21, MOVE_QUICK_ATTACK - level_up_move 31, MOVE_FLAME_WHEEL - level_up_move 42, MOVE_SWIFT - level_up_move 54, MOVE_FLAMETHROWER - .2byte -1 - -gTyphlosionLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_SMOKESCREEN - level_up_move 1, MOVE_EMBER - level_up_move 6, MOVE_SMOKESCREEN - level_up_move 12, MOVE_EMBER - level_up_move 21, MOVE_QUICK_ATTACK - level_up_move 31, MOVE_FLAME_WHEEL - level_up_move 45, MOVE_SWIFT - level_up_move 60, MOVE_FLAMETHROWER - .2byte -1 - -gTotodileLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_LEER - level_up_move 7, MOVE_RAGE - level_up_move 13, MOVE_WATER_GUN - level_up_move 20, MOVE_BITE - level_up_move 27, MOVE_SCARY_FACE - level_up_move 35, MOVE_SLASH - level_up_move 43, MOVE_SCREECH - level_up_move 52, MOVE_HYDRO_PUMP - .2byte -1 - -gCroconawLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_RAGE - level_up_move 7, MOVE_RAGE - level_up_move 13, MOVE_WATER_GUN - level_up_move 21, MOVE_BITE - level_up_move 28, MOVE_SCARY_FACE - level_up_move 37, MOVE_SLASH - level_up_move 45, MOVE_SCREECH - level_up_move 55, MOVE_HYDRO_PUMP - .2byte -1 - -gFeraligatrLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_RAGE - level_up_move 1, MOVE_WATER_GUN - level_up_move 7, MOVE_RAGE - level_up_move 13, MOVE_WATER_GUN - level_up_move 21, MOVE_BITE - level_up_move 28, MOVE_SCARY_FACE - level_up_move 38, MOVE_SLASH - level_up_move 47, MOVE_SCREECH - level_up_move 58, MOVE_HYDRO_PUMP - .2byte -1 - -gSentretLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 4, MOVE_DEFENSE_CURL - level_up_move 7, MOVE_QUICK_ATTACK - level_up_move 12, MOVE_FURY_SWIPES - level_up_move 17, MOVE_HELPING_HAND - level_up_move 24, MOVE_SLAM - level_up_move 31, MOVE_FOLLOW_ME - level_up_move 40, MOVE_REST - level_up_move 49, MOVE_AMNESIA - .2byte -1 - -gFurretLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_DEFENSE_CURL - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 4, MOVE_DEFENSE_CURL - level_up_move 7, MOVE_QUICK_ATTACK - level_up_move 12, MOVE_FURY_SWIPES - level_up_move 19, MOVE_HELPING_HAND - level_up_move 28, MOVE_SLAM - level_up_move 37, MOVE_FOLLOW_ME - level_up_move 48, MOVE_REST - level_up_move 59, MOVE_AMNESIA - .2byte -1 - -gHoothootLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 6, MOVE_FORESIGHT - level_up_move 11, MOVE_PECK - level_up_move 16, MOVE_HYPNOSIS - level_up_move 22, MOVE_REFLECT - level_up_move 28, MOVE_TAKE_DOWN - level_up_move 34, MOVE_CONFUSION - level_up_move 48, MOVE_DREAM_EATER - .2byte -1 - -gNoctowlLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_FORESIGHT - level_up_move 1, MOVE_PECK - level_up_move 6, MOVE_FORESIGHT - level_up_move 11, MOVE_PECK - level_up_move 16, MOVE_HYPNOSIS - level_up_move 25, MOVE_REFLECT - level_up_move 33, MOVE_TAKE_DOWN - level_up_move 41, MOVE_CONFUSION - level_up_move 57, MOVE_DREAM_EATER - .2byte -1 - -gLedybaLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 8, MOVE_SUPERSONIC - level_up_move 15, MOVE_COMET_PUNCH - level_up_move 22, MOVE_LIGHT_SCREEN - level_up_move 22, MOVE_REFLECT - level_up_move 22, MOVE_SAFEGUARD - level_up_move 29, MOVE_BATON_PASS - level_up_move 36, MOVE_SWIFT - level_up_move 43, MOVE_AGILITY - level_up_move 50, MOVE_DOUBLE_EDGE - .2byte -1 - -gLedianLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_SUPERSONIC - level_up_move 8, MOVE_SUPERSONIC - level_up_move 15, MOVE_COMET_PUNCH - level_up_move 24, MOVE_LIGHT_SCREEN - level_up_move 24, MOVE_REFLECT - level_up_move 24, MOVE_SAFEGUARD - level_up_move 33, MOVE_BATON_PASS - level_up_move 42, MOVE_SWIFT - level_up_move 51, MOVE_AGILITY - level_up_move 60, MOVE_DOUBLE_EDGE - .2byte -1 - -gSpinarakLevelUpLearnset: - level_up_move 1, MOVE_POISON_STING - level_up_move 1, MOVE_STRING_SHOT - level_up_move 6, MOVE_SCARY_FACE - level_up_move 11, MOVE_CONSTRICT - level_up_move 17, MOVE_NIGHT_SHADE - level_up_move 23, MOVE_LEECH_LIFE - level_up_move 30, MOVE_FURY_SWIPES - level_up_move 37, MOVE_SPIDER_WEB - level_up_move 45, MOVE_AGILITY - level_up_move 53, MOVE_PSYCHIC - .2byte -1 - -gAriadosLevelUpLearnset: - level_up_move 1, MOVE_POISON_STING - level_up_move 1, MOVE_STRING_SHOT - level_up_move 1, MOVE_SCARY_FACE - level_up_move 1, MOVE_CONSTRICT - level_up_move 6, MOVE_SCARY_FACE - level_up_move 11, MOVE_CONSTRICT - level_up_move 17, MOVE_NIGHT_SHADE - level_up_move 25, MOVE_LEECH_LIFE - level_up_move 34, MOVE_FURY_SWIPES - level_up_move 43, MOVE_SPIDER_WEB - level_up_move 53, MOVE_AGILITY - level_up_move 63, MOVE_PSYCHIC - .2byte -1 - -gCrobatLevelUpLearnset: - level_up_move 1, MOVE_SCREECH - level_up_move 1, MOVE_LEECH_LIFE - level_up_move 1, MOVE_SUPERSONIC - level_up_move 1, MOVE_ASTONISH - level_up_move 6, MOVE_SUPERSONIC - level_up_move 11, MOVE_ASTONISH - level_up_move 16, MOVE_BITE - level_up_move 21, MOVE_WING_ATTACK - level_up_move 28, MOVE_CONFUSE_RAY - level_up_move 35, MOVE_AIR_CUTTER - level_up_move 42, MOVE_MEAN_LOOK - level_up_move 49, MOVE_POISON_FANG - level_up_move 56, MOVE_HAZE - .2byte -1 - -gChinchouLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 1, MOVE_THUNDER_WAVE - level_up_move 5, MOVE_SUPERSONIC - level_up_move 13, MOVE_FLAIL - level_up_move 17, MOVE_WATER_GUN - level_up_move 25, MOVE_SPARK - level_up_move 29, MOVE_CONFUSE_RAY - level_up_move 37, MOVE_TAKE_DOWN - level_up_move 41, MOVE_HYDRO_PUMP - level_up_move 49, MOVE_CHARGE - .2byte -1 - -gLanturnLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 1, MOVE_THUNDER_WAVE - level_up_move 1, MOVE_SUPERSONIC - level_up_move 5, MOVE_SUPERSONIC - level_up_move 13, MOVE_FLAIL - level_up_move 17, MOVE_WATER_GUN - level_up_move 25, MOVE_SPARK - level_up_move 32, MOVE_CONFUSE_RAY - level_up_move 43, MOVE_TAKE_DOWN - level_up_move 50, MOVE_HYDRO_PUMP - level_up_move 61, MOVE_CHARGE - .2byte -1 - -gPichuLevelUpLearnset: - level_up_move 1, MOVE_THUNDER_SHOCK - level_up_move 1, MOVE_CHARM - level_up_move 6, MOVE_TAIL_WHIP - level_up_move 8, MOVE_THUNDER_WAVE - level_up_move 11, MOVE_SWEET_KISS - .2byte -1 - -gCleffaLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_CHARM - level_up_move 4, MOVE_ENCORE - level_up_move 8, MOVE_SING - level_up_move 13, MOVE_SWEET_KISS - .2byte -1 - -gIgglybuffLevelUpLearnset: - level_up_move 1, MOVE_SING - level_up_move 1, MOVE_CHARM - level_up_move 4, MOVE_DEFENSE_CURL - level_up_move 9, MOVE_POUND - level_up_move 14, MOVE_SWEET_KISS - .2byte -1 - -gTogepiLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_CHARM - level_up_move 6, MOVE_METRONOME - level_up_move 11, MOVE_SWEET_KISS - level_up_move 16, MOVE_YAWN - level_up_move 21, MOVE_ENCORE - level_up_move 26, MOVE_FOLLOW_ME - level_up_move 31, MOVE_WISH - level_up_move 36, MOVE_SAFEGUARD - level_up_move 41, MOVE_DOUBLE_EDGE - .2byte -1 - -gTogeticLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_CHARM - level_up_move 6, MOVE_METRONOME - level_up_move 11, MOVE_SWEET_KISS - level_up_move 16, MOVE_YAWN - level_up_move 21, MOVE_ENCORE - level_up_move 26, MOVE_FOLLOW_ME - level_up_move 31, MOVE_WISH - level_up_move 36, MOVE_SAFEGUARD - level_up_move 41, MOVE_DOUBLE_EDGE - .2byte -1 - -gNatuLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_LEER - level_up_move 10, MOVE_NIGHT_SHADE - level_up_move 20, MOVE_TELEPORT - level_up_move 30, MOVE_WISH - level_up_move 30, MOVE_FUTURE_SIGHT - level_up_move 40, MOVE_CONFUSE_RAY - level_up_move 50, MOVE_PSYCHIC - .2byte -1 - -gXatuLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_LEER - level_up_move 10, MOVE_NIGHT_SHADE - level_up_move 20, MOVE_TELEPORT - level_up_move 35, MOVE_WISH - level_up_move 35, MOVE_FUTURE_SIGHT - level_up_move 50, MOVE_CONFUSE_RAY - level_up_move 65, MOVE_PSYCHIC - .2byte -1 - -gMareepLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 9, MOVE_THUNDER_SHOCK - level_up_move 16, MOVE_THUNDER_WAVE - level_up_move 23, MOVE_COTTON_SPORE - level_up_move 30, MOVE_LIGHT_SCREEN - level_up_move 37, MOVE_THUNDER - .2byte -1 - -gFlaaffyLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_THUNDER_SHOCK - level_up_move 9, MOVE_THUNDER_SHOCK - level_up_move 18, MOVE_THUNDER_WAVE - level_up_move 27, MOVE_COTTON_SPORE - level_up_move 36, MOVE_LIGHT_SCREEN - level_up_move 45, MOVE_THUNDER - .2byte -1 - -gAmpharosLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_THUNDER_SHOCK - level_up_move 1, MOVE_THUNDER_WAVE - level_up_move 9, MOVE_THUNDER_SHOCK - level_up_move 18, MOVE_THUNDER_WAVE - level_up_move 27, MOVE_COTTON_SPORE - level_up_move 30, MOVE_THUNDER_PUNCH - level_up_move 42, MOVE_LIGHT_SCREEN - level_up_move 57, MOVE_THUNDER - .2byte -1 - -gBellossomLevelUpLearnset: - level_up_move 1, MOVE_ABSORB - level_up_move 1, MOVE_SWEET_SCENT - level_up_move 1, MOVE_STUN_SPORE - level_up_move 1, MOVE_MAGICAL_LEAF - level_up_move 44, MOVE_PETAL_DANCE - level_up_move 55, MOVE_SOLAR_BEAM - .2byte -1 - -gMarillLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 3, MOVE_DEFENSE_CURL - level_up_move 6, MOVE_TAIL_WHIP - level_up_move 10, MOVE_WATER_GUN - level_up_move 15, MOVE_ROLLOUT - level_up_move 21, MOVE_BUBBLE_BEAM - level_up_move 28, MOVE_DOUBLE_EDGE - level_up_move 36, MOVE_RAIN_DANCE - level_up_move 45, MOVE_HYDRO_PUMP - .2byte -1 - -gAzumarillLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_DEFENSE_CURL - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_WATER_GUN - level_up_move 3, MOVE_DEFENSE_CURL - level_up_move 6, MOVE_TAIL_WHIP - level_up_move 10, MOVE_WATER_GUN - level_up_move 15, MOVE_ROLLOUT - level_up_move 24, MOVE_BUBBLE_BEAM - level_up_move 34, MOVE_DOUBLE_EDGE - level_up_move 45, MOVE_RAIN_DANCE - level_up_move 57, MOVE_HYDRO_PUMP - .2byte -1 - -gSudowoodoLevelUpLearnset: - level_up_move 1, MOVE_ROCK_THROW - level_up_move 1, MOVE_MIMIC - level_up_move 9, MOVE_FLAIL - level_up_move 17, MOVE_LOW_KICK - level_up_move 25, MOVE_ROCK_SLIDE - level_up_move 33, MOVE_BLOCK - level_up_move 41, MOVE_FAINT_ATTACK - level_up_move 49, MOVE_SLAM - level_up_move 57, MOVE_DOUBLE_EDGE - .2byte -1 - -gPolitoedLevelUpLearnset: - level_up_move 1, MOVE_WATER_GUN - level_up_move 1, MOVE_HYPNOSIS - level_up_move 1, MOVE_DOUBLE_SLAP - level_up_move 1, MOVE_PERISH_SONG - level_up_move 35, MOVE_PERISH_SONG - level_up_move 51, MOVE_SWAGGER - .2byte -1 - -gHoppipLevelUpLearnset: - level_up_move 1, MOVE_SPLASH - level_up_move 5, MOVE_SYNTHESIS - level_up_move 5, MOVE_TAIL_WHIP - level_up_move 10, MOVE_TACKLE - level_up_move 13, MOVE_POISON_POWDER - level_up_move 15, MOVE_STUN_SPORE - level_up_move 17, MOVE_SLEEP_POWDER - level_up_move 20, MOVE_LEECH_SEED - level_up_move 25, MOVE_COTTON_SPORE - level_up_move 30, MOVE_MEGA_DRAIN - .2byte -1 - -gSkiploomLevelUpLearnset: - level_up_move 1, MOVE_SPLASH - level_up_move 1, MOVE_SYNTHESIS - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_TACKLE - level_up_move 5, MOVE_SYNTHESIS - level_up_move 5, MOVE_TAIL_WHIP - level_up_move 10, MOVE_TACKLE - level_up_move 13, MOVE_POISON_POWDER - level_up_move 15, MOVE_STUN_SPORE - level_up_move 17, MOVE_SLEEP_POWDER - level_up_move 22, MOVE_LEECH_SEED - level_up_move 29, MOVE_COTTON_SPORE - level_up_move 36, MOVE_MEGA_DRAIN - .2byte -1 - -gJumpluffLevelUpLearnset: - level_up_move 1, MOVE_SPLASH - level_up_move 1, MOVE_SYNTHESIS - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_TACKLE - level_up_move 5, MOVE_SYNTHESIS - level_up_move 5, MOVE_TAIL_WHIP - level_up_move 10, MOVE_TACKLE - level_up_move 13, MOVE_POISON_POWDER - level_up_move 15, MOVE_STUN_SPORE - level_up_move 17, MOVE_SLEEP_POWDER - level_up_move 22, MOVE_LEECH_SEED - level_up_move 33, MOVE_COTTON_SPORE - level_up_move 44, MOVE_MEGA_DRAIN - .2byte -1 - -gAipomLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 6, MOVE_SAND_ATTACK - level_up_move 13, MOVE_ASTONISH - level_up_move 18, MOVE_BATON_PASS - level_up_move 25, MOVE_TICKLE - level_up_move 31, MOVE_FURY_SWIPES - level_up_move 38, MOVE_SWIFT - level_up_move 43, MOVE_SCREECH - level_up_move 50, MOVE_AGILITY - .2byte -1 - -gSunkernLevelUpLearnset: - level_up_move 1, MOVE_ABSORB - level_up_move 6, MOVE_GROWTH - level_up_move 13, MOVE_MEGA_DRAIN - level_up_move 18, MOVE_INGRAIN - level_up_move 25, MOVE_ENDEAVOR - level_up_move 30, MOVE_SUNNY_DAY - level_up_move 37, MOVE_SYNTHESIS - level_up_move 42, MOVE_GIGA_DRAIN - .2byte -1 - -gSunfloraLevelUpLearnset: - level_up_move 1, MOVE_ABSORB - level_up_move 1, MOVE_POUND - level_up_move 6, MOVE_GROWTH - level_up_move 13, MOVE_RAZOR_LEAF - level_up_move 18, MOVE_INGRAIN - level_up_move 25, MOVE_BULLET_SEED - level_up_move 30, MOVE_SUNNY_DAY - level_up_move 37, MOVE_PETAL_DANCE - level_up_move 42, MOVE_SOLAR_BEAM - .2byte -1 - -gYanmaLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_FORESIGHT - level_up_move 7, MOVE_QUICK_ATTACK - level_up_move 13, MOVE_DOUBLE_TEAM - level_up_move 19, MOVE_SONIC_BOOM - level_up_move 25, MOVE_DETECT - level_up_move 31, MOVE_SUPERSONIC - level_up_move 37, MOVE_UPROAR - level_up_move 43, MOVE_WING_ATTACK - level_up_move 49, MOVE_SCREECH - .2byte -1 - -gWooperLevelUpLearnset: - level_up_move 1, MOVE_WATER_GUN - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 11, MOVE_SLAM - level_up_move 16, MOVE_MUD_SHOT - level_up_move 21, MOVE_AMNESIA - level_up_move 31, MOVE_YAWN - level_up_move 36, MOVE_EARTHQUAKE - level_up_move 41, MOVE_RAIN_DANCE - level_up_move 51, MOVE_MIST - level_up_move 51, MOVE_HAZE - .2byte -1 - -gQuagsireLevelUpLearnset: - level_up_move 1, MOVE_WATER_GUN - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 11, MOVE_SLAM - level_up_move 16, MOVE_MUD_SHOT - level_up_move 23, MOVE_AMNESIA - level_up_move 35, MOVE_YAWN - level_up_move 42, MOVE_EARTHQUAKE - level_up_move 49, MOVE_RAIN_DANCE - level_up_move 61, MOVE_MIST - level_up_move 61, MOVE_HAZE - .2byte -1 - -gEspeonLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_HELPING_HAND - level_up_move 8, MOVE_SAND_ATTACK - level_up_move 16, MOVE_CONFUSION - level_up_move 23, MOVE_QUICK_ATTACK - level_up_move 30, MOVE_SWIFT - level_up_move 36, MOVE_PSYBEAM - level_up_move 42, MOVE_PSYCH_UP - level_up_move 47, MOVE_PSYCHIC - level_up_move 52, MOVE_MORNING_SUN - .2byte -1 - -gUmbreonLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_HELPING_HAND - level_up_move 8, MOVE_SAND_ATTACK - level_up_move 16, MOVE_PURSUIT - level_up_move 23, MOVE_QUICK_ATTACK - level_up_move 30, MOVE_CONFUSE_RAY - level_up_move 36, MOVE_FAINT_ATTACK - level_up_move 42, MOVE_MEAN_LOOK - level_up_move 47, MOVE_SCREECH - level_up_move 52, MOVE_MOONLIGHT - .2byte -1 - -gMurkrowLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 9, MOVE_ASTONISH - level_up_move 14, MOVE_PURSUIT - level_up_move 22, MOVE_HAZE - level_up_move 27, MOVE_NIGHT_SHADE - level_up_move 35, MOVE_FAINT_ATTACK - level_up_move 40, MOVE_TAUNT - level_up_move 48, MOVE_MEAN_LOOK - .2byte -1 - -gSlowkingLevelUpLearnset: - level_up_move 1, MOVE_CURSE - level_up_move 1, MOVE_YAWN - level_up_move 1, MOVE_TACKLE - level_up_move 6, MOVE_GROWL - level_up_move 15, MOVE_WATER_GUN - level_up_move 20, MOVE_CONFUSION - level_up_move 29, MOVE_DISABLE - level_up_move 34, MOVE_HEADBUTT - level_up_move 43, MOVE_SWAGGER - level_up_move 48, MOVE_PSYCHIC - .2byte -1 - -gMisdreavusLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_PSYWAVE - level_up_move 6, MOVE_SPITE - level_up_move 11, MOVE_ASTONISH - level_up_move 17, MOVE_CONFUSE_RAY - level_up_move 23, MOVE_MEAN_LOOK - level_up_move 30, MOVE_PSYBEAM - level_up_move 37, MOVE_PAIN_SPLIT - level_up_move 45, MOVE_PERISH_SONG - level_up_move 53, MOVE_GRUDGE - .2byte -1 - -gUnownLevelUpLearnset: - level_up_move 1, MOVE_HIDDEN_POWER - .2byte -1 - -gWobbuffetLevelUpLearnset: - level_up_move 1, MOVE_COUNTER - level_up_move 1, MOVE_MIRROR_COAT - level_up_move 1, MOVE_SAFEGUARD - level_up_move 1, MOVE_DESTINY_BOND - .2byte -1 - -gGirafarigLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 7, MOVE_ASTONISH - level_up_move 13, MOVE_CONFUSION - level_up_move 19, MOVE_STOMP - level_up_move 25, MOVE_ODOR_SLEUTH - level_up_move 31, MOVE_AGILITY - level_up_move 37, MOVE_BATON_PASS - level_up_move 43, MOVE_PSYBEAM - level_up_move 49, MOVE_CRUNCH - .2byte -1 - -gPinecoLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_PROTECT - level_up_move 8, MOVE_SELF_DESTRUCT - level_up_move 15, MOVE_TAKE_DOWN - level_up_move 22, MOVE_RAPID_SPIN - level_up_move 29, MOVE_BIDE - level_up_move 36, MOVE_EXPLOSION - level_up_move 43, MOVE_SPIKES - level_up_move 50, MOVE_DOUBLE_EDGE - .2byte -1 - -gForretressLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_PROTECT - level_up_move 1, MOVE_SELF_DESTRUCT - level_up_move 8, MOVE_SELF_DESTRUCT - level_up_move 15, MOVE_TAKE_DOWN - level_up_move 22, MOVE_RAPID_SPIN - level_up_move 29, MOVE_BIDE - level_up_move 39, MOVE_EXPLOSION - level_up_move 49, MOVE_SPIKES - level_up_move 59, MOVE_DOUBLE_EDGE - .2byte -1 - -gDunsparceLevelUpLearnset: - level_up_move 1, MOVE_RAGE - level_up_move 4, MOVE_DEFENSE_CURL - level_up_move 11, MOVE_YAWN - level_up_move 14, MOVE_GLARE - level_up_move 21, MOVE_SPITE - level_up_move 24, MOVE_PURSUIT - level_up_move 31, MOVE_SCREECH - level_up_move 34, MOVE_TAKE_DOWN - level_up_move 41, MOVE_ENDEAVOR - .2byte -1 - -gGligarLevelUpLearnset: - level_up_move 1, MOVE_POISON_STING - level_up_move 6, MOVE_SAND_ATTACK - level_up_move 13, MOVE_HARDEN - level_up_move 20, MOVE_QUICK_ATTACK - level_up_move 28, MOVE_FAINT_ATTACK - level_up_move 36, MOVE_SLASH - level_up_move 44, MOVE_SCREECH - level_up_move 52, MOVE_GUILLOTINE - .2byte -1 - -gSteelixLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_SCREECH - level_up_move 9, MOVE_BIND - level_up_move 13, MOVE_ROCK_THROW - level_up_move 21, MOVE_HARDEN - level_up_move 25, MOVE_RAGE - level_up_move 33, MOVE_SANDSTORM - level_up_move 37, MOVE_SLAM - level_up_move 45, MOVE_IRON_TAIL - level_up_move 49, MOVE_CRUNCH - level_up_move 57, MOVE_DOUBLE_EDGE - .2byte -1 - -gSnubbullLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_SCARY_FACE - level_up_move 4, MOVE_TAIL_WHIP - level_up_move 8, MOVE_CHARM - level_up_move 13, MOVE_BITE - level_up_move 19, MOVE_LICK - level_up_move 26, MOVE_ROAR - level_up_move 34, MOVE_RAGE - level_up_move 43, MOVE_TAKE_DOWN - level_up_move 53, MOVE_CRUNCH - .2byte -1 - -gGranbullLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_SCARY_FACE - level_up_move 4, MOVE_TAIL_WHIP - level_up_move 8, MOVE_CHARM - level_up_move 13, MOVE_BITE - level_up_move 19, MOVE_LICK - level_up_move 28, MOVE_ROAR - level_up_move 38, MOVE_RAGE - level_up_move 49, MOVE_TAKE_DOWN - level_up_move 61, MOVE_CRUNCH - .2byte -1 - -gQwilfishLevelUpLearnset: - level_up_move 1, MOVE_SPIKES - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_POISON_STING - level_up_move 10, MOVE_HARDEN - level_up_move 10, MOVE_MINIMIZE - level_up_move 19, MOVE_WATER_GUN - level_up_move 28, MOVE_PIN_MISSILE - level_up_move 37, MOVE_TAKE_DOWN - level_up_move 46, MOVE_HYDRO_PUMP - .2byte -1 - -gScizorLevelUpLearnset: - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 1, MOVE_LEER - level_up_move 6, MOVE_FOCUS_ENERGY - level_up_move 11, MOVE_PURSUIT - level_up_move 16, MOVE_FALSE_SWIPE - level_up_move 21, MOVE_AGILITY - level_up_move 26, MOVE_METAL_CLAW - level_up_move 31, MOVE_SLASH - level_up_move 36, MOVE_SWORDS_DANCE - level_up_move 41, MOVE_DOUBLE_TEAM - level_up_move 46, MOVE_FURY_CUTTER - .2byte -1 - -gShuckleLevelUpLearnset: - level_up_move 1, MOVE_CONSTRICT - level_up_move 1, MOVE_WITHDRAW - level_up_move 9, MOVE_WRAP - level_up_move 14, MOVE_ENCORE - level_up_move 23, MOVE_SAFEGUARD - level_up_move 28, MOVE_BIDE - level_up_move 37, MOVE_REST - .2byte -1 - -gHeracrossLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_LEER - level_up_move 6, MOVE_HORN_ATTACK - level_up_move 11, MOVE_ENDURE - level_up_move 17, MOVE_FURY_ATTACK - level_up_move 23, MOVE_BRICK_BREAK - level_up_move 30, MOVE_COUNTER - level_up_move 37, MOVE_TAKE_DOWN - level_up_move 45, MOVE_REVERSAL - level_up_move 53, MOVE_MEGAHORN - .2byte -1 - -gSneaselLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_TAUNT - level_up_move 8, MOVE_QUICK_ATTACK - level_up_move 15, MOVE_SCREECH - level_up_move 22, MOVE_FAINT_ATTACK - level_up_move 29, MOVE_FURY_SWIPES - level_up_move 36, MOVE_AGILITY - level_up_move 43, MOVE_ICY_WIND - level_up_move 50, MOVE_SLASH - level_up_move 57, MOVE_BEAT_UP - level_up_move 64, MOVE_METAL_CLAW - .2byte -1 - -gTeddiursaLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_LEER - level_up_move 7, MOVE_LICK - level_up_move 13, MOVE_FURY_SWIPES - level_up_move 19, MOVE_FAKE_TEARS - level_up_move 25, MOVE_FAINT_ATTACK - level_up_move 31, MOVE_REST - level_up_move 37, MOVE_SLASH - level_up_move 43, MOVE_SNORE - level_up_move 49, MOVE_THRASH - .2byte -1 - -gUrsaringLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_LICK - level_up_move 1, MOVE_FURY_SWIPES - level_up_move 7, MOVE_LICK - level_up_move 13, MOVE_FURY_SWIPES - level_up_move 19, MOVE_FAKE_TEARS - level_up_move 25, MOVE_FAINT_ATTACK - level_up_move 31, MOVE_REST - level_up_move 37, MOVE_SLASH - level_up_move 43, MOVE_SNORE - level_up_move 49, MOVE_THRASH - .2byte -1 - -gSlugmaLevelUpLearnset: - level_up_move 1, MOVE_YAWN - level_up_move 1, MOVE_SMOG - level_up_move 8, MOVE_EMBER - level_up_move 15, MOVE_ROCK_THROW - level_up_move 22, MOVE_HARDEN - level_up_move 29, MOVE_AMNESIA - level_up_move 36, MOVE_FLAMETHROWER - level_up_move 43, MOVE_ROCK_SLIDE - level_up_move 50, MOVE_BODY_SLAM - .2byte -1 - -gMagcargoLevelUpLearnset: - level_up_move 1, MOVE_YAWN - level_up_move 1, MOVE_SMOG - level_up_move 1, MOVE_EMBER - level_up_move 1, MOVE_ROCK_THROW - level_up_move 8, MOVE_EMBER - level_up_move 15, MOVE_ROCK_THROW - level_up_move 22, MOVE_HARDEN - level_up_move 29, MOVE_AMNESIA - level_up_move 36, MOVE_FLAMETHROWER - level_up_move 48, MOVE_ROCK_SLIDE - level_up_move 60, MOVE_BODY_SLAM - .2byte -1 - -gSwinubLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_ODOR_SLEUTH - level_up_move 10, MOVE_POWDER_SNOW - level_up_move 19, MOVE_ENDURE - level_up_move 28, MOVE_TAKE_DOWN - level_up_move 37, MOVE_MIST - level_up_move 46, MOVE_BLIZZARD - level_up_move 55, MOVE_AMNESIA - .2byte -1 - -gPiloswineLevelUpLearnset: - level_up_move 1, MOVE_HORN_ATTACK - level_up_move 1, MOVE_ODOR_SLEUTH - level_up_move 1, MOVE_POWDER_SNOW - level_up_move 1, MOVE_ENDURE - level_up_move 10, MOVE_POWDER_SNOW - level_up_move 19, MOVE_ENDURE - level_up_move 28, MOVE_TAKE_DOWN - level_up_move 33, MOVE_FURY_ATTACK - level_up_move 42, MOVE_MIST - level_up_move 56, MOVE_BLIZZARD - level_up_move 70, MOVE_AMNESIA - .2byte -1 - -gCorsolaLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 6, MOVE_HARDEN - level_up_move 12, MOVE_BUBBLE - level_up_move 17, MOVE_RECOVER - level_up_move 17, MOVE_REFRESH - level_up_move 23, MOVE_BUBBLE_BEAM - level_up_move 28, MOVE_SPIKE_CANNON - level_up_move 34, MOVE_ROCK_BLAST - level_up_move 39, MOVE_MIRROR_COAT - level_up_move 45, MOVE_ANCIENT_POWER - .2byte -1 - -gRemoraidLevelUpLearnset: - level_up_move 1, MOVE_WATER_GUN - level_up_move 11, MOVE_LOCK_ON - level_up_move 22, MOVE_PSYBEAM - level_up_move 22, MOVE_AURORA_BEAM - level_up_move 22, MOVE_BUBBLE_BEAM - level_up_move 33, MOVE_FOCUS_ENERGY - level_up_move 44, MOVE_ICE_BEAM - level_up_move 55, MOVE_HYPER_BEAM - .2byte -1 - -gOctilleryLevelUpLearnset: - level_up_move 1, MOVE_WATER_GUN - level_up_move 11, MOVE_CONSTRICT - level_up_move 22, MOVE_PSYBEAM - level_up_move 22, MOVE_AURORA_BEAM - level_up_move 22, MOVE_BUBBLE_BEAM - level_up_move 25, MOVE_OCTAZOOKA - level_up_move 38, MOVE_FOCUS_ENERGY - level_up_move 54, MOVE_ICE_BEAM - level_up_move 70, MOVE_HYPER_BEAM - .2byte -1 - -gDelibirdLevelUpLearnset: - level_up_move 1, MOVE_PRESENT - .2byte -1 - -gMantineLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_BUBBLE - level_up_move 8, MOVE_SUPERSONIC - level_up_move 15, MOVE_BUBBLE_BEAM - level_up_move 22, MOVE_TAKE_DOWN - level_up_move 29, MOVE_AGILITY - level_up_move 36, MOVE_WING_ATTACK - level_up_move 43, MOVE_WATER_PULSE - level_up_move 50, MOVE_CONFUSE_RAY - .2byte -1 - -gSkarmoryLevelUpLearnset: - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_PECK - level_up_move 10, MOVE_SAND_ATTACK - level_up_move 13, MOVE_SWIFT - level_up_move 16, MOVE_AGILITY - level_up_move 26, MOVE_FURY_ATTACK - level_up_move 29, MOVE_AIR_CUTTER - level_up_move 32, MOVE_STEEL_WING - level_up_move 42, MOVE_SPIKES - level_up_move 45, MOVE_METAL_SOUND - .2byte -1 - -gHoundourLevelUpLearnset: - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_EMBER - level_up_move 7, MOVE_HOWL - level_up_move 13, MOVE_SMOG - level_up_move 19, MOVE_ROAR - level_up_move 25, MOVE_BITE - level_up_move 31, MOVE_ODOR_SLEUTH - level_up_move 37, MOVE_FAINT_ATTACK - level_up_move 43, MOVE_FLAMETHROWER - level_up_move 49, MOVE_CRUNCH - .2byte -1 - -gHoundoomLevelUpLearnset: - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_EMBER - level_up_move 1, MOVE_HOWL - level_up_move 7, MOVE_HOWL - level_up_move 13, MOVE_SMOG - level_up_move 19, MOVE_ROAR - level_up_move 27, MOVE_BITE - level_up_move 35, MOVE_ODOR_SLEUTH - level_up_move 43, MOVE_FAINT_ATTACK - level_up_move 51, MOVE_FLAMETHROWER - level_up_move 59, MOVE_CRUNCH - .2byte -1 - -gKingdraLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 1, MOVE_SMOKESCREEN - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_WATER_GUN - level_up_move 8, MOVE_SMOKESCREEN - level_up_move 15, MOVE_LEER - level_up_move 22, MOVE_WATER_GUN - level_up_move 29, MOVE_TWISTER - level_up_move 40, MOVE_AGILITY - level_up_move 51, MOVE_HYDRO_PUMP - level_up_move 62, MOVE_DRAGON_DANCE - .2byte -1 - -gPhanpyLevelUpLearnset: - level_up_move 1, MOVE_ODOR_SLEUTH - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 9, MOVE_DEFENSE_CURL - level_up_move 17, MOVE_FLAIL - level_up_move 25, MOVE_TAKE_DOWN - level_up_move 33, MOVE_ROLLOUT - level_up_move 41, MOVE_ENDURE - level_up_move 49, MOVE_DOUBLE_EDGE - .2byte -1 - -gDonphanLevelUpLearnset: - level_up_move 1, MOVE_ODOR_SLEUTH - level_up_move 1, MOVE_HORN_ATTACK - level_up_move 1, MOVE_GROWL - level_up_move 9, MOVE_DEFENSE_CURL - level_up_move 17, MOVE_FLAIL - level_up_move 25, MOVE_FURY_ATTACK - level_up_move 33, MOVE_ROLLOUT - level_up_move 41, MOVE_RAPID_SPIN - level_up_move 49, MOVE_EARTHQUAKE - .2byte -1 - -gPorygon2LevelUpLearnset: - level_up_move 1, MOVE_CONVERSION_2 - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_CONVERSION - level_up_move 9, MOVE_AGILITY - level_up_move 12, MOVE_PSYBEAM - level_up_move 20, MOVE_RECOVER - level_up_move 24, MOVE_DEFENSE_CURL - level_up_move 32, MOVE_LOCK_ON - level_up_move 36, MOVE_TRI_ATTACK - level_up_move 44, MOVE_RECYCLE - level_up_move 48, MOVE_ZAP_CANNON - .2byte -1 - -gStantlerLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 7, MOVE_LEER - level_up_move 13, MOVE_ASTONISH - level_up_move 19, MOVE_HYPNOSIS - level_up_move 25, MOVE_STOMP - level_up_move 31, MOVE_SAND_ATTACK - level_up_move 37, MOVE_TAKE_DOWN - level_up_move 43, MOVE_CONFUSE_RAY - level_up_move 49, MOVE_CALM_MIND - .2byte -1 - -gSmeargleLevelUpLearnset: - level_up_move 1, MOVE_SKETCH - level_up_move 11, MOVE_SKETCH - level_up_move 21, MOVE_SKETCH - level_up_move 31, MOVE_SKETCH - level_up_move 41, MOVE_SKETCH - level_up_move 51, MOVE_SKETCH - level_up_move 61, MOVE_SKETCH - level_up_move 71, MOVE_SKETCH - level_up_move 81, MOVE_SKETCH - level_up_move 91, MOVE_SKETCH - .2byte -1 - -gTyrogueLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gHitmontopLevelUpLearnset: - level_up_move 1, MOVE_REVENGE - level_up_move 1, MOVE_ROLLING_KICK - level_up_move 7, MOVE_FOCUS_ENERGY - level_up_move 13, MOVE_PURSUIT - level_up_move 19, MOVE_QUICK_ATTACK - level_up_move 20, MOVE_TRIPLE_KICK - level_up_move 25, MOVE_RAPID_SPIN - level_up_move 31, MOVE_COUNTER - level_up_move 37, MOVE_AGILITY - level_up_move 43, MOVE_DETECT - level_up_move 49, MOVE_ENDEAVOR - .2byte -1 - -gSmoochumLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_LICK - level_up_move 9, MOVE_SWEET_KISS - level_up_move 13, MOVE_POWDER_SNOW - level_up_move 21, MOVE_CONFUSION - level_up_move 25, MOVE_SING - level_up_move 33, MOVE_MEAN_LOOK - level_up_move 37, MOVE_FAKE_TEARS - level_up_move 45, MOVE_PSYCHIC - level_up_move 49, MOVE_PERISH_SONG - level_up_move 57, MOVE_BLIZZARD - .2byte -1 - -gElekidLevelUpLearnset: - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 1, MOVE_LEER - level_up_move 9, MOVE_THUNDER_PUNCH - level_up_move 17, MOVE_LIGHT_SCREEN - level_up_move 25, MOVE_SWIFT - level_up_move 33, MOVE_SCREECH - level_up_move 41, MOVE_THUNDERBOLT - level_up_move 49, MOVE_THUNDER - .2byte -1 - -gMagbyLevelUpLearnset: - level_up_move 1, MOVE_EMBER - level_up_move 7, MOVE_LEER - level_up_move 13, MOVE_SMOG - level_up_move 19, MOVE_FIRE_PUNCH - level_up_move 25, MOVE_SMOKESCREEN - level_up_move 31, MOVE_SUNNY_DAY - level_up_move 37, MOVE_FLAMETHROWER - level_up_move 43, MOVE_CONFUSE_RAY - level_up_move 49, MOVE_FIRE_BLAST - .2byte -1 - -gMiltankLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 4, MOVE_GROWL - level_up_move 8, MOVE_DEFENSE_CURL - level_up_move 13, MOVE_STOMP - level_up_move 19, MOVE_MILK_DRINK - level_up_move 26, MOVE_BIDE - level_up_move 34, MOVE_ROLLOUT - level_up_move 43, MOVE_BODY_SLAM - level_up_move 53, MOVE_HEAL_BELL - .2byte -1 - -gBlisseyLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_GROWL - level_up_move 4, MOVE_TAIL_WHIP - level_up_move 7, MOVE_REFRESH - level_up_move 10, MOVE_SOFT_BOILED - level_up_move 13, MOVE_DOUBLE_SLAP - level_up_move 18, MOVE_MINIMIZE - level_up_move 23, MOVE_SING - level_up_move 28, MOVE_EGG_BOMB - level_up_move 33, MOVE_DEFENSE_CURL - level_up_move 40, MOVE_LIGHT_SCREEN - level_up_move 47, MOVE_DOUBLE_EDGE - .2byte -1 - -gRaikouLevelUpLearnset: - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_LEER - level_up_move 11, MOVE_THUNDER_SHOCK - level_up_move 21, MOVE_ROAR - level_up_move 31, MOVE_QUICK_ATTACK - level_up_move 41, MOVE_SPARK - level_up_move 51, MOVE_REFLECT - level_up_move 61, MOVE_CRUNCH - level_up_move 71, MOVE_THUNDER - level_up_move 81, MOVE_CALM_MIND - .2byte -1 - -gEnteiLevelUpLearnset: - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_LEER - level_up_move 11, MOVE_EMBER - level_up_move 21, MOVE_ROAR - level_up_move 31, MOVE_FIRE_SPIN - level_up_move 41, MOVE_STOMP - level_up_move 51, MOVE_FLAMETHROWER - level_up_move 61, MOVE_SWAGGER - level_up_move 71, MOVE_FIRE_BLAST - level_up_move 81, MOVE_CALM_MIND - .2byte -1 - -gSuicuneLevelUpLearnset: - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_LEER - level_up_move 11, MOVE_BUBBLE_BEAM - level_up_move 21, MOVE_RAIN_DANCE - level_up_move 31, MOVE_GUST - level_up_move 41, MOVE_AURORA_BEAM - level_up_move 51, MOVE_MIST - level_up_move 61, MOVE_MIRROR_COAT - level_up_move 71, MOVE_HYDRO_PUMP - level_up_move 81, MOVE_CALM_MIND - .2byte -1 - -gLarvitarLevelUpLearnset: - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_LEER - level_up_move 8, MOVE_SANDSTORM - level_up_move 15, MOVE_SCREECH - level_up_move 22, MOVE_ROCK_SLIDE - level_up_move 29, MOVE_THRASH - level_up_move 36, MOVE_SCARY_FACE - level_up_move 43, MOVE_CRUNCH - level_up_move 50, MOVE_EARTHQUAKE - level_up_move 57, MOVE_HYPER_BEAM - .2byte -1 - -gPupitarLevelUpLearnset: - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_SANDSTORM - level_up_move 1, MOVE_SCREECH - level_up_move 8, MOVE_SANDSTORM - level_up_move 15, MOVE_SCREECH - level_up_move 22, MOVE_ROCK_SLIDE - level_up_move 29, MOVE_THRASH - level_up_move 38, MOVE_SCARY_FACE - level_up_move 47, MOVE_CRUNCH - level_up_move 56, MOVE_EARTHQUAKE - level_up_move 65, MOVE_HYPER_BEAM - .2byte -1 - -gTyranitarLevelUpLearnset: - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_SANDSTORM - level_up_move 1, MOVE_SCREECH - level_up_move 8, MOVE_SANDSTORM - level_up_move 15, MOVE_SCREECH - level_up_move 22, MOVE_ROCK_SLIDE - level_up_move 29, MOVE_THRASH - level_up_move 38, MOVE_SCARY_FACE - level_up_move 47, MOVE_CRUNCH - level_up_move 61, MOVE_EARTHQUAKE - level_up_move 75, MOVE_HYPER_BEAM - .2byte -1 - -gLugiaLevelUpLearnset: - level_up_move 1, MOVE_WHIRLWIND - level_up_move 11, MOVE_SAFEGUARD - level_up_move 22, MOVE_GUST - level_up_move 33, MOVE_RECOVER - level_up_move 44, MOVE_HYDRO_PUMP - level_up_move 55, MOVE_RAIN_DANCE - level_up_move 66, MOVE_SWIFT - level_up_move 77, MOVE_AEROBLAST - level_up_move 88, MOVE_ANCIENT_POWER - level_up_move 99, MOVE_FUTURE_SIGHT - .2byte -1 - -gHoOhLevelUpLearnset: - level_up_move 1, MOVE_WHIRLWIND - level_up_move 11, MOVE_SAFEGUARD - level_up_move 22, MOVE_GUST - level_up_move 33, MOVE_RECOVER - level_up_move 44, MOVE_FIRE_BLAST - level_up_move 55, MOVE_SUNNY_DAY - level_up_move 66, MOVE_SWIFT - level_up_move 77, MOVE_SACRED_FIRE - level_up_move 88, MOVE_ANCIENT_POWER - level_up_move 99, MOVE_FUTURE_SIGHT - .2byte -1 - -gCelebiLevelUpLearnset: - level_up_move 1, MOVE_LEECH_SEED - level_up_move 1, MOVE_CONFUSION - level_up_move 1, MOVE_RECOVER - level_up_move 1, MOVE_HEAL_BELL - level_up_move 10, MOVE_SAFEGUARD - level_up_move 20, MOVE_ANCIENT_POWER - level_up_move 30, MOVE_FUTURE_SIGHT - level_up_move 40, MOVE_BATON_PASS - level_up_move 50, MOVE_PERISH_SONG - .2byte -1 - -gSpecies252LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies253LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies254LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies255LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies256LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies257LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies258LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies259LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies260LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies261LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies262LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies263LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies264LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies265LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies266LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies267LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies268LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies269LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies270LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies271LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies272LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies273LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies274LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies275LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gSpecies276LevelUpLearnset: - level_up_move 1, MOVE_TACKLE - .2byte -1 - -gTreeckoLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_LEER - level_up_move 6, MOVE_ABSORB - level_up_move 11, MOVE_QUICK_ATTACK - level_up_move 16, MOVE_PURSUIT - level_up_move 21, MOVE_SCREECH - level_up_move 26, MOVE_MEGA_DRAIN - level_up_move 31, MOVE_AGILITY - level_up_move 36, MOVE_SLAM - level_up_move 41, MOVE_DETECT - level_up_move 46, MOVE_GIGA_DRAIN - .2byte -1 - -gGrovyleLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_ABSORB - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 6, MOVE_ABSORB - level_up_move 11, MOVE_QUICK_ATTACK - level_up_move 16, MOVE_FURY_CUTTER - level_up_move 17, MOVE_PURSUIT - level_up_move 23, MOVE_SCREECH - level_up_move 29, MOVE_LEAF_BLADE - level_up_move 35, MOVE_AGILITY - level_up_move 41, MOVE_SLAM - level_up_move 47, MOVE_DETECT - level_up_move 53, MOVE_FALSE_SWIPE - .2byte -1 - -gSceptileLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_ABSORB - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 6, MOVE_ABSORB - level_up_move 11, MOVE_QUICK_ATTACK - level_up_move 16, MOVE_FURY_CUTTER - level_up_move 17, MOVE_PURSUIT - level_up_move 23, MOVE_SCREECH - level_up_move 29, MOVE_LEAF_BLADE - level_up_move 35, MOVE_AGILITY - level_up_move 43, MOVE_SLAM - level_up_move 51, MOVE_DETECT - level_up_move 59, MOVE_FALSE_SWIPE - .2byte -1 - -gTorchicLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_GROWL - level_up_move 7, MOVE_FOCUS_ENERGY - level_up_move 10, MOVE_EMBER - level_up_move 16, MOVE_PECK - level_up_move 19, MOVE_SAND_ATTACK - level_up_move 25, MOVE_FIRE_SPIN - level_up_move 28, MOVE_QUICK_ATTACK - level_up_move 34, MOVE_SLASH - level_up_move 37, MOVE_MIRROR_MOVE - level_up_move 43, MOVE_FLAMETHROWER - .2byte -1 - -gCombuskenLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_FOCUS_ENERGY - level_up_move 1, MOVE_EMBER - level_up_move 7, MOVE_FOCUS_ENERGY - level_up_move 13, MOVE_EMBER - level_up_move 16, MOVE_DOUBLE_KICK - level_up_move 17, MOVE_PECK - level_up_move 21, MOVE_SAND_ATTACK - level_up_move 28, MOVE_BULK_UP - level_up_move 32, MOVE_QUICK_ATTACK - level_up_move 39, MOVE_SLASH - level_up_move 43, MOVE_MIRROR_MOVE - level_up_move 50, MOVE_SKY_UPPERCUT - .2byte -1 - -gBlazikenLevelUpLearnset: - level_up_move 1, MOVE_FIRE_PUNCH - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_FOCUS_ENERGY - level_up_move 1, MOVE_EMBER - level_up_move 7, MOVE_FOCUS_ENERGY - level_up_move 13, MOVE_EMBER - level_up_move 16, MOVE_DOUBLE_KICK - level_up_move 17, MOVE_PECK - level_up_move 21, MOVE_SAND_ATTACK - level_up_move 28, MOVE_BULK_UP - level_up_move 32, MOVE_QUICK_ATTACK - level_up_move 36, MOVE_BLAZE_KICK - level_up_move 42, MOVE_SLASH - level_up_move 49, MOVE_MIRROR_MOVE - level_up_move 59, MOVE_SKY_UPPERCUT - .2byte -1 - -gMudkipLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 6, MOVE_MUD_SLAP - level_up_move 10, MOVE_WATER_GUN - level_up_move 15, MOVE_BIDE - level_up_move 19, MOVE_FORESIGHT - level_up_move 24, MOVE_MUD_SPORT - level_up_move 28, MOVE_TAKE_DOWN - level_up_move 33, MOVE_WHIRLPOOL - level_up_move 37, MOVE_PROTECT - level_up_move 42, MOVE_HYDRO_PUMP - level_up_move 46, MOVE_ENDEAVOR - .2byte -1 - -gMarshtompLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_MUD_SLAP - level_up_move 1, MOVE_WATER_GUN - level_up_move 6, MOVE_MUD_SLAP - level_up_move 10, MOVE_WATER_GUN - level_up_move 15, MOVE_BIDE - level_up_move 16, MOVE_MUD_SHOT - level_up_move 20, MOVE_FORESIGHT - level_up_move 25, MOVE_MUD_SPORT - level_up_move 31, MOVE_TAKE_DOWN - level_up_move 37, MOVE_MUDDY_WATER - level_up_move 42, MOVE_PROTECT - level_up_move 46, MOVE_EARTHQUAKE - level_up_move 53, MOVE_ENDEAVOR - .2byte -1 - -gSwampertLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_MUD_SLAP - level_up_move 1, MOVE_WATER_GUN - level_up_move 6, MOVE_MUD_SLAP - level_up_move 10, MOVE_WATER_GUN - level_up_move 15, MOVE_BIDE - level_up_move 16, MOVE_MUD_SHOT - level_up_move 20, MOVE_FORESIGHT - level_up_move 25, MOVE_MUD_SPORT - level_up_move 31, MOVE_TAKE_DOWN - level_up_move 39, MOVE_MUDDY_WATER - level_up_move 46, MOVE_PROTECT - level_up_move 52, MOVE_EARTHQUAKE - level_up_move 61, MOVE_ENDEAVOR - .2byte -1 - -gPoochyenaLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 5, MOVE_HOWL - level_up_move 9, MOVE_SAND_ATTACK - level_up_move 13, MOVE_BITE - level_up_move 17, MOVE_ODOR_SLEUTH - level_up_move 21, MOVE_ROAR - level_up_move 25, MOVE_SWAGGER - level_up_move 29, MOVE_SCARY_FACE - level_up_move 33, MOVE_TAKE_DOWN - level_up_move 37, MOVE_TAUNT - level_up_move 41, MOVE_CRUNCH - level_up_move 45, MOVE_THIEF - .2byte -1 - -gMightyenaLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_HOWL - level_up_move 1, MOVE_SAND_ATTACK - level_up_move 1, MOVE_BITE - level_up_move 5, MOVE_HOWL - level_up_move 9, MOVE_SAND_ATTACK - level_up_move 13, MOVE_BITE - level_up_move 17, MOVE_ODOR_SLEUTH - level_up_move 22, MOVE_ROAR - level_up_move 27, MOVE_SWAGGER - level_up_move 32, MOVE_SCARY_FACE - level_up_move 37, MOVE_TAKE_DOWN - level_up_move 42, MOVE_TAUNT - level_up_move 47, MOVE_CRUNCH - level_up_move 52, MOVE_THIEF - .2byte -1 - -gZigzagoonLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 5, MOVE_TAIL_WHIP - level_up_move 9, MOVE_HEADBUTT - level_up_move 13, MOVE_SAND_ATTACK - level_up_move 17, MOVE_ODOR_SLEUTH - level_up_move 21, MOVE_MUD_SPORT - level_up_move 25, MOVE_PIN_MISSILE - level_up_move 29, MOVE_COVET - level_up_move 33, MOVE_FLAIL - level_up_move 37, MOVE_REST - level_up_move 41, MOVE_BELLY_DRUM - .2byte -1 - -gLinooneLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_HEADBUTT - level_up_move 5, MOVE_TAIL_WHIP - level_up_move 9, MOVE_HEADBUTT - level_up_move 13, MOVE_SAND_ATTACK - level_up_move 17, MOVE_ODOR_SLEUTH - level_up_move 23, MOVE_MUD_SPORT - level_up_move 29, MOVE_FURY_SWIPES - level_up_move 35, MOVE_COVET - level_up_move 41, MOVE_SLASH - level_up_move 47, MOVE_REST - level_up_move 53, MOVE_BELLY_DRUM - .2byte -1 - -gWurmpleLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_STRING_SHOT - level_up_move 5, MOVE_POISON_STING - .2byte -1 - -gSilcoonLevelUpLearnset: - level_up_move 1, MOVE_HARDEN - level_up_move 7, MOVE_HARDEN - .2byte -1 - -gBeautiflyLevelUpLearnset: - level_up_move 1, MOVE_ABSORB - level_up_move 10, MOVE_ABSORB - level_up_move 13, MOVE_GUST - level_up_move 17, MOVE_STUN_SPORE - level_up_move 20, MOVE_MORNING_SUN - level_up_move 24, MOVE_MEGA_DRAIN - level_up_move 27, MOVE_WHIRLWIND - level_up_move 31, MOVE_ATTRACT - level_up_move 34, MOVE_SILVER_WIND - level_up_move 38, MOVE_GIGA_DRAIN - .2byte -1 - -gCascoonLevelUpLearnset: - level_up_move 1, MOVE_HARDEN - level_up_move 7, MOVE_HARDEN - .2byte -1 - -gDustoxLevelUpLearnset: - level_up_move 1, MOVE_CONFUSION - level_up_move 10, MOVE_CONFUSION - level_up_move 13, MOVE_GUST - level_up_move 17, MOVE_PROTECT - level_up_move 20, MOVE_MOONLIGHT - level_up_move 24, MOVE_PSYBEAM - level_up_move 27, MOVE_WHIRLWIND - level_up_move 31, MOVE_LIGHT_SCREEN - level_up_move 34, MOVE_SILVER_WIND - level_up_move 38, MOVE_TOXIC - .2byte -1 - -gLotadLevelUpLearnset: - level_up_move 1, MOVE_ASTONISH - level_up_move 3, MOVE_GROWL - level_up_move 7, MOVE_ABSORB - level_up_move 13, MOVE_NATURE_POWER - level_up_move 21, MOVE_MIST - level_up_move 31, MOVE_RAIN_DANCE - level_up_move 43, MOVE_MEGA_DRAIN - .2byte -1 - -gLombreLevelUpLearnset: - level_up_move 1, MOVE_ASTONISH - level_up_move 3, MOVE_GROWL - level_up_move 7, MOVE_ABSORB - level_up_move 13, MOVE_NATURE_POWER - level_up_move 19, MOVE_FAKE_OUT - level_up_move 25, MOVE_FURY_SWIPES - level_up_move 31, MOVE_WATER_SPORT - level_up_move 37, MOVE_THIEF - level_up_move 43, MOVE_UPROAR - level_up_move 49, MOVE_HYDRO_PUMP - .2byte -1 - -gLudicoloLevelUpLearnset: - level_up_move 1, MOVE_ASTONISH - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_ABSORB - level_up_move 1, MOVE_NATURE_POWER - .2byte -1 - -gSeedotLevelUpLearnset: - level_up_move 1, MOVE_BIDE - level_up_move 3, MOVE_HARDEN - level_up_move 7, MOVE_GROWTH - level_up_move 13, MOVE_NATURE_POWER - level_up_move 21, MOVE_SYNTHESIS - level_up_move 31, MOVE_SUNNY_DAY - level_up_move 43, MOVE_EXPLOSION - .2byte -1 - -gNuzleafLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 3, MOVE_HARDEN - level_up_move 7, MOVE_GROWTH - level_up_move 13, MOVE_NATURE_POWER - level_up_move 19, MOVE_FAKE_OUT - level_up_move 25, MOVE_TORMENT - level_up_move 31, MOVE_FAINT_ATTACK - level_up_move 37, MOVE_RAZOR_WIND - level_up_move 43, MOVE_SWAGGER - level_up_move 49, MOVE_EXTRASENSORY - .2byte -1 - -gShiftryLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_HARDEN - level_up_move 1, MOVE_GROWTH - level_up_move 1, MOVE_NATURE_POWER - .2byte -1 - -gNincadaLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_HARDEN - level_up_move 5, MOVE_LEECH_LIFE - level_up_move 9, MOVE_SAND_ATTACK - level_up_move 14, MOVE_FURY_SWIPES - level_up_move 19, MOVE_MIND_READER - level_up_move 25, MOVE_FALSE_SWIPE - level_up_move 31, MOVE_MUD_SLAP - level_up_move 38, MOVE_METAL_CLAW - level_up_move 45, MOVE_DIG - .2byte -1 - -gNinjaskLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_HARDEN - level_up_move 1, MOVE_LEECH_LIFE - level_up_move 1, MOVE_SAND_ATTACK - level_up_move 5, MOVE_LEECH_LIFE - level_up_move 9, MOVE_SAND_ATTACK - level_up_move 14, MOVE_FURY_SWIPES - level_up_move 19, MOVE_MIND_READER - level_up_move 20, MOVE_DOUBLE_TEAM - level_up_move 20, MOVE_FURY_CUTTER - level_up_move 20, MOVE_SCREECH - level_up_move 25, MOVE_SWORDS_DANCE - level_up_move 31, MOVE_SLASH - level_up_move 38, MOVE_AGILITY - level_up_move 45, MOVE_BATON_PASS - .2byte -1 - -gShedinjaLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_HARDEN - level_up_move 5, MOVE_LEECH_LIFE - level_up_move 9, MOVE_SAND_ATTACK - level_up_move 14, MOVE_FURY_SWIPES - level_up_move 19, MOVE_MIND_READER - level_up_move 25, MOVE_SPITE - level_up_move 31, MOVE_CONFUSE_RAY - level_up_move 38, MOVE_SHADOW_BALL - level_up_move 45, MOVE_GRUDGE - .2byte -1 - -gTaillowLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_GROWL - level_up_move 4, MOVE_FOCUS_ENERGY - level_up_move 8, MOVE_QUICK_ATTACK - level_up_move 13, MOVE_WING_ATTACK - level_up_move 19, MOVE_DOUBLE_TEAM - level_up_move 26, MOVE_ENDEAVOR - level_up_move 34, MOVE_AERIAL_ACE - level_up_move 43, MOVE_AGILITY - .2byte -1 - -gSwellowLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_FOCUS_ENERGY - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 4, MOVE_FOCUS_ENERGY - level_up_move 8, MOVE_QUICK_ATTACK - level_up_move 13, MOVE_WING_ATTACK - level_up_move 19, MOVE_DOUBLE_TEAM - level_up_move 28, MOVE_ENDEAVOR - level_up_move 38, MOVE_AERIAL_ACE - level_up_move 49, MOVE_AGILITY - .2byte -1 - -gShroomishLevelUpLearnset: - level_up_move 1, MOVE_ABSORB - level_up_move 4, MOVE_TACKLE - level_up_move 7, MOVE_STUN_SPORE - level_up_move 10, MOVE_LEECH_SEED - level_up_move 16, MOVE_MEGA_DRAIN - level_up_move 22, MOVE_HEADBUTT - level_up_move 28, MOVE_POISON_POWDER - level_up_move 36, MOVE_GROWTH - level_up_move 45, MOVE_GIGA_DRAIN - level_up_move 54, MOVE_SPORE - .2byte -1 - -gBreloomLevelUpLearnset: - level_up_move 1, MOVE_ABSORB - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_STUN_SPORE - level_up_move 1, MOVE_LEECH_SEED - level_up_move 4, MOVE_TACKLE - level_up_move 7, MOVE_STUN_SPORE - level_up_move 10, MOVE_LEECH_SEED - level_up_move 16, MOVE_MEGA_DRAIN - level_up_move 22, MOVE_HEADBUTT - level_up_move 23, MOVE_MACH_PUNCH - level_up_move 28, MOVE_COUNTER - level_up_move 36, MOVE_SKY_UPPERCUT - level_up_move 45, MOVE_MIND_READER - level_up_move 54, MOVE_DYNAMIC_PUNCH - .2byte -1 - -gSpindaLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 5, MOVE_UPROAR - level_up_move 12, MOVE_FAINT_ATTACK - level_up_move 16, MOVE_PSYBEAM - level_up_move 23, MOVE_HYPNOSIS - level_up_move 27, MOVE_DIZZY_PUNCH - level_up_move 34, MOVE_TEETER_DANCE - level_up_move 38, MOVE_PSYCH_UP - level_up_move 45, MOVE_DOUBLE_EDGE - level_up_move 49, MOVE_FLAIL - level_up_move 56, MOVE_THRASH - .2byte -1 - -gWingullLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_WATER_GUN - level_up_move 7, MOVE_SUPERSONIC - level_up_move 13, MOVE_WING_ATTACK - level_up_move 21, MOVE_MIST - level_up_move 31, MOVE_QUICK_ATTACK - level_up_move 43, MOVE_PURSUIT - level_up_move 55, MOVE_AGILITY - .2byte -1 - -gPelipperLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_WATER_GUN - level_up_move 1, MOVE_WATER_SPORT - level_up_move 1, MOVE_WING_ATTACK - level_up_move 3, MOVE_WATER_GUN - level_up_move 7, MOVE_SUPERSONIC - level_up_move 13, MOVE_WING_ATTACK - level_up_move 21, MOVE_MIST - level_up_move 25, MOVE_PROTECT - level_up_move 33, MOVE_STOCKPILE - level_up_move 33, MOVE_SWALLOW - level_up_move 47, MOVE_SPIT_UP - level_up_move 61, MOVE_HYDRO_PUMP - .2byte -1 - -gSurskitLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 7, MOVE_QUICK_ATTACK - level_up_move 13, MOVE_SWEET_SCENT - level_up_move 19, MOVE_WATER_SPORT - level_up_move 25, MOVE_BUBBLE_BEAM - level_up_move 31, MOVE_AGILITY - level_up_move 37, MOVE_MIST - level_up_move 37, MOVE_HAZE - .2byte -1 - -gMasquerainLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 1, MOVE_QUICK_ATTACK - level_up_move 1, MOVE_SWEET_SCENT - level_up_move 1, MOVE_WATER_SPORT - level_up_move 7, MOVE_QUICK_ATTACK - level_up_move 13, MOVE_SWEET_SCENT - level_up_move 19, MOVE_WATER_SPORT - level_up_move 26, MOVE_GUST - level_up_move 33, MOVE_SCARY_FACE - level_up_move 40, MOVE_STUN_SPORE - level_up_move 47, MOVE_SILVER_WIND - level_up_move 53, MOVE_WHIRLWIND - .2byte -1 - -gWailmerLevelUpLearnset: - level_up_move 1, MOVE_SPLASH - level_up_move 5, MOVE_GROWL - level_up_move 10, MOVE_WATER_GUN - level_up_move 14, MOVE_ROLLOUT - level_up_move 19, MOVE_WHIRLPOOL - level_up_move 23, MOVE_ASTONISH - level_up_move 28, MOVE_WATER_PULSE - level_up_move 32, MOVE_MIST - level_up_move 37, MOVE_REST - level_up_move 41, MOVE_WATER_SPOUT - level_up_move 46, MOVE_AMNESIA - level_up_move 50, MOVE_HYDRO_PUMP - .2byte -1 - -gWailordLevelUpLearnset: - level_up_move 1, MOVE_SPLASH - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_WATER_GUN - level_up_move 1, MOVE_ROLLOUT - level_up_move 5, MOVE_GROWL - level_up_move 10, MOVE_WATER_GUN - level_up_move 14, MOVE_ROLLOUT - level_up_move 19, MOVE_WHIRLPOOL - level_up_move 23, MOVE_ASTONISH - level_up_move 28, MOVE_WATER_PULSE - level_up_move 32, MOVE_MIST - level_up_move 37, MOVE_REST - level_up_move 44, MOVE_WATER_SPOUT - level_up_move 52, MOVE_AMNESIA - level_up_move 59, MOVE_HYDRO_PUMP - .2byte -1 - -gSkittyLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_TACKLE - level_up_move 3, MOVE_TAIL_WHIP - level_up_move 7, MOVE_ATTRACT - level_up_move 13, MOVE_SING - level_up_move 15, MOVE_DOUBLE_SLAP - level_up_move 19, MOVE_ASSIST - level_up_move 25, MOVE_CHARM - level_up_move 27, MOVE_FAINT_ATTACK - level_up_move 31, MOVE_COVET - level_up_move 37, MOVE_HEAL_BELL - level_up_move 39, MOVE_DOUBLE_EDGE - .2byte -1 - -gDelcattyLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_ATTRACT - level_up_move 1, MOVE_SING - level_up_move 1, MOVE_DOUBLE_SLAP - .2byte -1 - -gKecleonLevelUpLearnset: - level_up_move 1, MOVE_THIEF - level_up_move 1, MOVE_TAIL_WHIP - level_up_move 1, MOVE_ASTONISH - level_up_move 1, MOVE_LICK - level_up_move 1, MOVE_SCRATCH - level_up_move 4, MOVE_BIND - level_up_move 7, MOVE_FAINT_ATTACK - level_up_move 12, MOVE_FURY_SWIPES - level_up_move 17, MOVE_PSYBEAM - level_up_move 24, MOVE_SCREECH - level_up_move 31, MOVE_SLASH - level_up_move 40, MOVE_SUBSTITUTE - level_up_move 49, MOVE_ANCIENT_POWER - .2byte -1 - -gBaltoyLevelUpLearnset: - level_up_move 1, MOVE_CONFUSION - level_up_move 3, MOVE_HARDEN - level_up_move 5, MOVE_RAPID_SPIN - level_up_move 7, MOVE_MUD_SLAP - level_up_move 11, MOVE_PSYBEAM - level_up_move 15, MOVE_ROCK_TOMB - level_up_move 19, MOVE_SELF_DESTRUCT - level_up_move 25, MOVE_ANCIENT_POWER - level_up_move 31, MOVE_SANDSTORM - level_up_move 37, MOVE_COSMIC_POWER - level_up_move 45, MOVE_EXPLOSION - .2byte -1 - -gClaydolLevelUpLearnset: - level_up_move 1, MOVE_TELEPORT - level_up_move 1, MOVE_CONFUSION - level_up_move 1, MOVE_HARDEN - level_up_move 1, MOVE_RAPID_SPIN - level_up_move 3, MOVE_HARDEN - level_up_move 5, MOVE_RAPID_SPIN - level_up_move 7, MOVE_MUD_SLAP - level_up_move 11, MOVE_PSYBEAM - level_up_move 15, MOVE_ROCK_TOMB - level_up_move 19, MOVE_SELF_DESTRUCT - level_up_move 25, MOVE_ANCIENT_POWER - level_up_move 31, MOVE_SANDSTORM - level_up_move 36, MOVE_HYPER_BEAM - level_up_move 42, MOVE_COSMIC_POWER - level_up_move 55, MOVE_EXPLOSION - .2byte -1 - -gNosepassLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 7, MOVE_HARDEN - level_up_move 13, MOVE_ROCK_THROW - level_up_move 16, MOVE_BLOCK - level_up_move 22, MOVE_THUNDER_WAVE - level_up_move 28, MOVE_ROCK_SLIDE - level_up_move 31, MOVE_SANDSTORM - level_up_move 37, MOVE_REST - level_up_move 43, MOVE_ZAP_CANNON - level_up_move 46, MOVE_LOCK_ON - .2byte -1 - -gTorkoalLevelUpLearnset: - level_up_move 1, MOVE_EMBER - level_up_move 4, MOVE_SMOG - level_up_move 7, MOVE_CURSE - level_up_move 14, MOVE_SMOKESCREEN - level_up_move 17, MOVE_FIRE_SPIN - level_up_move 20, MOVE_BODY_SLAM - level_up_move 27, MOVE_PROTECT - level_up_move 30, MOVE_FLAMETHROWER - level_up_move 33, MOVE_IRON_DEFENSE - level_up_move 40, MOVE_AMNESIA - level_up_move 43, MOVE_FLAIL - level_up_move 46, MOVE_HEAT_WAVE - .2byte -1 - -gSableyeLevelUpLearnset: - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_SCRATCH - level_up_move 5, MOVE_FORESIGHT - level_up_move 9, MOVE_NIGHT_SHADE - level_up_move 13, MOVE_ASTONISH - level_up_move 17, MOVE_FURY_SWIPES - level_up_move 21, MOVE_FAKE_OUT - level_up_move 25, MOVE_DETECT - level_up_move 29, MOVE_FAINT_ATTACK - level_up_move 33, MOVE_KNOCK_OFF - level_up_move 37, MOVE_CONFUSE_RAY - level_up_move 41, MOVE_SHADOW_BALL - level_up_move 45, MOVE_MEAN_LOOK - .2byte -1 - -gBarboachLevelUpLearnset: - level_up_move 1, MOVE_MUD_SLAP - level_up_move 6, MOVE_MUD_SPORT - level_up_move 6, MOVE_WATER_SPORT - level_up_move 11, MOVE_WATER_GUN - level_up_move 16, MOVE_MAGNITUDE - level_up_move 21, MOVE_AMNESIA - level_up_move 26, MOVE_REST - level_up_move 26, MOVE_SNORE - level_up_move 31, MOVE_EARTHQUAKE - level_up_move 36, MOVE_FUTURE_SIGHT - level_up_move 41, MOVE_FISSURE - .2byte -1 - -gWhiscashLevelUpLearnset: - level_up_move 1, MOVE_TICKLE - level_up_move 1, MOVE_MUD_SLAP - level_up_move 1, MOVE_MUD_SPORT - level_up_move 1, MOVE_WATER_SPORT - level_up_move 6, MOVE_MUD_SPORT - level_up_move 6, MOVE_WATER_SPORT - level_up_move 11, MOVE_WATER_GUN - level_up_move 16, MOVE_MAGNITUDE - level_up_move 21, MOVE_AMNESIA - level_up_move 26, MOVE_REST - level_up_move 26, MOVE_SNORE - level_up_move 36, MOVE_EARTHQUAKE - level_up_move 46, MOVE_FUTURE_SIGHT - level_up_move 56, MOVE_FISSURE - .2byte -1 - -gLuvdiscLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 4, MOVE_CHARM - level_up_move 12, MOVE_WATER_GUN - level_up_move 16, MOVE_AGILITY - level_up_move 24, MOVE_TAKE_DOWN - level_up_move 28, MOVE_ATTRACT - level_up_move 36, MOVE_SWEET_KISS - level_up_move 40, MOVE_FLAIL - level_up_move 48, MOVE_SAFEGUARD - .2byte -1 - -gCorphishLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 7, MOVE_HARDEN - level_up_move 10, MOVE_VICE_GRIP - level_up_move 13, MOVE_LEER - level_up_move 20, MOVE_BUBBLE_BEAM - level_up_move 23, MOVE_PROTECT - level_up_move 26, MOVE_KNOCK_OFF - level_up_move 32, MOVE_TAUNT - level_up_move 35, MOVE_CRABHAMMER - level_up_move 38, MOVE_SWORDS_DANCE - level_up_move 44, MOVE_GUILLOTINE - .2byte -1 - -gCrawdauntLevelUpLearnset: - level_up_move 1, MOVE_BUBBLE - level_up_move 1, MOVE_HARDEN - level_up_move 1, MOVE_VICE_GRIP - level_up_move 1, MOVE_LEER - level_up_move 7, MOVE_HARDEN - level_up_move 10, MOVE_VICE_GRIP - level_up_move 13, MOVE_LEER - level_up_move 20, MOVE_BUBBLE_BEAM - level_up_move 23, MOVE_PROTECT - level_up_move 26, MOVE_KNOCK_OFF - level_up_move 34, MOVE_TAUNT - level_up_move 39, MOVE_CRABHAMMER - level_up_move 44, MOVE_SWORDS_DANCE - level_up_move 52, MOVE_GUILLOTINE - .2byte -1 - -gFeebasLevelUpLearnset: - level_up_move 1, MOVE_SPLASH - level_up_move 15, MOVE_TACKLE - level_up_move 30, MOVE_FLAIL - .2byte -1 - -gMiloticLevelUpLearnset: - level_up_move 1, MOVE_WATER_GUN - level_up_move 5, MOVE_WRAP - level_up_move 10, MOVE_WATER_SPORT - level_up_move 15, MOVE_REFRESH - level_up_move 20, MOVE_WATER_PULSE - level_up_move 25, MOVE_TWISTER - level_up_move 30, MOVE_RECOVER - level_up_move 35, MOVE_RAIN_DANCE - level_up_move 40, MOVE_HYDRO_PUMP - level_up_move 45, MOVE_ATTRACT - level_up_move 50, MOVE_SAFEGUARD - .2byte -1 - -gCarvanhaLevelUpLearnset: - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_BITE - level_up_move 7, MOVE_RAGE - level_up_move 13, MOVE_FOCUS_ENERGY - level_up_move 16, MOVE_SCARY_FACE - level_up_move 22, MOVE_CRUNCH - level_up_move 28, MOVE_SCREECH - level_up_move 31, MOVE_TAKE_DOWN - level_up_move 37, MOVE_SWAGGER - level_up_move 43, MOVE_AGILITY - .2byte -1 - -gSharpedoLevelUpLearnset: - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_RAGE - level_up_move 1, MOVE_FOCUS_ENERGY - level_up_move 7, MOVE_RAGE - level_up_move 13, MOVE_FOCUS_ENERGY - level_up_move 16, MOVE_SCARY_FACE - level_up_move 22, MOVE_CRUNCH - level_up_move 28, MOVE_SCREECH - level_up_move 33, MOVE_SLASH - level_up_move 38, MOVE_TAUNT - level_up_move 43, MOVE_SWAGGER - level_up_move 48, MOVE_SKULL_BASH - level_up_move 53, MOVE_AGILITY - .2byte -1 - -gTrapinchLevelUpLearnset: - level_up_move 1, MOVE_BITE - level_up_move 9, MOVE_SAND_ATTACK - level_up_move 17, MOVE_FAINT_ATTACK - level_up_move 25, MOVE_SAND_TOMB - level_up_move 33, MOVE_CRUNCH - level_up_move 41, MOVE_DIG - level_up_move 49, MOVE_SANDSTORM - level_up_move 57, MOVE_HYPER_BEAM - .2byte -1 - -gVibravaLevelUpLearnset: - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_SAND_ATTACK - level_up_move 1, MOVE_FAINT_ATTACK - level_up_move 1, MOVE_SAND_TOMB - level_up_move 9, MOVE_SAND_ATTACK - level_up_move 17, MOVE_FAINT_ATTACK - level_up_move 25, MOVE_SAND_TOMB - level_up_move 33, MOVE_CRUNCH - level_up_move 35, MOVE_DRAGON_BREATH - level_up_move 41, MOVE_SCREECH - level_up_move 49, MOVE_SANDSTORM - level_up_move 57, MOVE_HYPER_BEAM - .2byte -1 - -gFlygonLevelUpLearnset: - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_SAND_ATTACK - level_up_move 1, MOVE_FAINT_ATTACK - level_up_move 1, MOVE_SAND_TOMB - level_up_move 9, MOVE_SAND_ATTACK - level_up_move 17, MOVE_FAINT_ATTACK - level_up_move 25, MOVE_SAND_TOMB - level_up_move 33, MOVE_CRUNCH - level_up_move 35, MOVE_DRAGON_BREATH - level_up_move 41, MOVE_SCREECH - level_up_move 53, MOVE_SANDSTORM - level_up_move 65, MOVE_HYPER_BEAM - .2byte -1 - -gMakuhitaLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_FOCUS_ENERGY - level_up_move 4, MOVE_SAND_ATTACK - level_up_move 10, MOVE_ARM_THRUST - level_up_move 13, MOVE_VITAL_THROW - level_up_move 19, MOVE_FAKE_OUT - level_up_move 22, MOVE_WHIRLWIND - level_up_move 28, MOVE_KNOCK_OFF - level_up_move 31, MOVE_SMELLING_SALT - level_up_move 37, MOVE_BELLY_DRUM - level_up_move 40, MOVE_ENDURE - level_up_move 46, MOVE_SEISMIC_TOSS - level_up_move 49, MOVE_REVERSAL - .2byte -1 - -gHariyamaLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_FOCUS_ENERGY - level_up_move 1, MOVE_SAND_ATTACK - level_up_move 1, MOVE_ARM_THRUST - level_up_move 4, MOVE_SAND_ATTACK - level_up_move 10, MOVE_ARM_THRUST - level_up_move 13, MOVE_VITAL_THROW - level_up_move 19, MOVE_FAKE_OUT - level_up_move 22, MOVE_WHIRLWIND - level_up_move 29, MOVE_KNOCK_OFF - level_up_move 33, MOVE_SMELLING_SALT - level_up_move 40, MOVE_BELLY_DRUM - level_up_move 44, MOVE_ENDURE - level_up_move 51, MOVE_SEISMIC_TOSS - level_up_move 55, MOVE_REVERSAL - .2byte -1 - -gElectrikeLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 4, MOVE_THUNDER_WAVE - level_up_move 9, MOVE_LEER - level_up_move 12, MOVE_HOWL - level_up_move 17, MOVE_QUICK_ATTACK - level_up_move 20, MOVE_SPARK - level_up_move 25, MOVE_ODOR_SLEUTH - level_up_move 28, MOVE_ROAR - level_up_move 33, MOVE_BITE - level_up_move 36, MOVE_THUNDER - level_up_move 41, MOVE_CHARGE - .2byte -1 - -gManectricLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_THUNDER_WAVE - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_HOWL - level_up_move 4, MOVE_THUNDER_WAVE - level_up_move 9, MOVE_LEER - level_up_move 12, MOVE_HOWL - level_up_move 17, MOVE_QUICK_ATTACK - level_up_move 20, MOVE_SPARK - level_up_move 25, MOVE_ODOR_SLEUTH - level_up_move 31, MOVE_ROAR - level_up_move 39, MOVE_BITE - level_up_move 45, MOVE_THUNDER - level_up_move 53, MOVE_CHARGE - .2byte -1 - -gNumelLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_TACKLE - level_up_move 11, MOVE_EMBER - level_up_move 19, MOVE_MAGNITUDE - level_up_move 25, MOVE_FOCUS_ENERGY - level_up_move 29, MOVE_TAKE_DOWN - level_up_move 31, MOVE_AMNESIA - level_up_move 35, MOVE_EARTHQUAKE - level_up_move 41, MOVE_FLAMETHROWER - level_up_move 49, MOVE_DOUBLE_EDGE - .2byte -1 - -gCameruptLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_EMBER - level_up_move 1, MOVE_MAGNITUDE - level_up_move 11, MOVE_EMBER - level_up_move 19, MOVE_MAGNITUDE - level_up_move 25, MOVE_FOCUS_ENERGY - level_up_move 29, MOVE_TAKE_DOWN - level_up_move 31, MOVE_AMNESIA - level_up_move 33, MOVE_ROCK_SLIDE - level_up_move 37, MOVE_EARTHQUAKE - level_up_move 45, MOVE_ERUPTION - level_up_move 55, MOVE_FISSURE - .2byte -1 - -gSphealLevelUpLearnset: - level_up_move 1, MOVE_POWDER_SNOW - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_WATER_GUN - level_up_move 7, MOVE_ENCORE - level_up_move 13, MOVE_ICE_BALL - level_up_move 19, MOVE_BODY_SLAM - level_up_move 25, MOVE_AURORA_BEAM - level_up_move 31, MOVE_HAIL - level_up_move 37, MOVE_REST - level_up_move 37, MOVE_SNORE - level_up_move 43, MOVE_BLIZZARD - level_up_move 49, MOVE_SHEER_COLD - .2byte -1 - -gSealeoLevelUpLearnset: - level_up_move 1, MOVE_POWDER_SNOW - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_WATER_GUN - level_up_move 1, MOVE_ENCORE - level_up_move 7, MOVE_ENCORE - level_up_move 13, MOVE_ICE_BALL - level_up_move 19, MOVE_BODY_SLAM - level_up_move 25, MOVE_AURORA_BEAM - level_up_move 31, MOVE_HAIL - level_up_move 39, MOVE_REST - level_up_move 39, MOVE_SNORE - level_up_move 47, MOVE_BLIZZARD - level_up_move 55, MOVE_SHEER_COLD - .2byte -1 - -gWalreinLevelUpLearnset: - level_up_move 1, MOVE_POWDER_SNOW - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_WATER_GUN - level_up_move 1, MOVE_ENCORE - level_up_move 7, MOVE_ENCORE - level_up_move 13, MOVE_ICE_BALL - level_up_move 19, MOVE_BODY_SLAM - level_up_move 25, MOVE_AURORA_BEAM - level_up_move 31, MOVE_HAIL - level_up_move 39, MOVE_REST - level_up_move 39, MOVE_SNORE - level_up_move 50, MOVE_BLIZZARD - level_up_move 61, MOVE_SHEER_COLD - .2byte -1 - -gCacneaLevelUpLearnset: - level_up_move 1, MOVE_POISON_STING - level_up_move 1, MOVE_LEER - level_up_move 5, MOVE_ABSORB - level_up_move 9, MOVE_GROWTH - level_up_move 13, MOVE_LEECH_SEED - level_up_move 17, MOVE_SAND_ATTACK - level_up_move 21, MOVE_PIN_MISSILE - level_up_move 25, MOVE_INGRAIN - level_up_move 29, MOVE_FAINT_ATTACK - level_up_move 33, MOVE_SPIKES - level_up_move 37, MOVE_NEEDLE_ARM - level_up_move 41, MOVE_COTTON_SPORE - level_up_move 45, MOVE_SANDSTORM - .2byte -1 - -gCacturneLevelUpLearnset: - level_up_move 1, MOVE_POISON_STING - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_ABSORB - level_up_move 1, MOVE_GROWTH - level_up_move 5, MOVE_ABSORB - level_up_move 9, MOVE_GROWTH - level_up_move 13, MOVE_LEECH_SEED - level_up_move 17, MOVE_SAND_ATTACK - level_up_move 21, MOVE_PIN_MISSILE - level_up_move 25, MOVE_INGRAIN - level_up_move 29, MOVE_FAINT_ATTACK - level_up_move 35, MOVE_SPIKES - level_up_move 41, MOVE_NEEDLE_ARM - level_up_move 47, MOVE_COTTON_SPORE - level_up_move 53, MOVE_SANDSTORM - .2byte -1 - -gSnoruntLevelUpLearnset: - level_up_move 1, MOVE_POWDER_SNOW - level_up_move 1, MOVE_LEER - level_up_move 7, MOVE_DOUBLE_TEAM - level_up_move 10, MOVE_BITE - level_up_move 16, MOVE_ICY_WIND - level_up_move 19, MOVE_HEADBUTT - level_up_move 25, MOVE_PROTECT - level_up_move 28, MOVE_CRUNCH - level_up_move 34, MOVE_ICE_BEAM - level_up_move 37, MOVE_HAIL - level_up_move 43, MOVE_BLIZZARD - .2byte -1 - -gGlalieLevelUpLearnset: - level_up_move 1, MOVE_POWDER_SNOW - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_DOUBLE_TEAM - level_up_move 1, MOVE_BITE - level_up_move 7, MOVE_DOUBLE_TEAM - level_up_move 10, MOVE_BITE - level_up_move 16, MOVE_ICY_WIND - level_up_move 19, MOVE_HEADBUTT - level_up_move 25, MOVE_PROTECT - level_up_move 28, MOVE_CRUNCH - level_up_move 34, MOVE_ICE_BEAM - level_up_move 42, MOVE_HAIL - level_up_move 53, MOVE_BLIZZARD - level_up_move 61, MOVE_SHEER_COLD - .2byte -1 - -gLunatoneLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_HARDEN - level_up_move 7, MOVE_CONFUSION - level_up_move 13, MOVE_ROCK_THROW - level_up_move 19, MOVE_HYPNOSIS - level_up_move 25, MOVE_PSYWAVE - level_up_move 31, MOVE_COSMIC_POWER - level_up_move 37, MOVE_PSYCHIC - level_up_move 43, MOVE_FUTURE_SIGHT - level_up_move 49, MOVE_EXPLOSION - .2byte -1 - -gSolrockLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_HARDEN - level_up_move 7, MOVE_CONFUSION - level_up_move 13, MOVE_ROCK_THROW - level_up_move 19, MOVE_FIRE_SPIN - level_up_move 25, MOVE_PSYWAVE - level_up_move 31, MOVE_COSMIC_POWER - level_up_move 37, MOVE_ROCK_SLIDE - level_up_move 43, MOVE_SOLAR_BEAM - level_up_move 49, MOVE_EXPLOSION - .2byte -1 - -gAzurillLevelUpLearnset: - level_up_move 1, MOVE_SPLASH - level_up_move 3, MOVE_CHARM - level_up_move 6, MOVE_TAIL_WHIP - level_up_move 10, MOVE_BUBBLE - level_up_move 15, MOVE_SLAM - level_up_move 21, MOVE_WATER_GUN - .2byte -1 - -gSpoinkLevelUpLearnset: - level_up_move 1, MOVE_SPLASH - level_up_move 7, MOVE_PSYWAVE - level_up_move 10, MOVE_ODOR_SLEUTH - level_up_move 16, MOVE_PSYBEAM - level_up_move 19, MOVE_PSYCH_UP - level_up_move 25, MOVE_CONFUSE_RAY - level_up_move 28, MOVE_MAGIC_COAT - level_up_move 34, MOVE_PSYCHIC - level_up_move 37, MOVE_REST - level_up_move 37, MOVE_SNORE - level_up_move 43, MOVE_BOUNCE - .2byte -1 - -gGrumpigLevelUpLearnset: - level_up_move 1, MOVE_SPLASH - level_up_move 1, MOVE_PSYWAVE - level_up_move 1, MOVE_ODOR_SLEUTH - level_up_move 1, MOVE_PSYBEAM - level_up_move 7, MOVE_PSYWAVE - level_up_move 10, MOVE_ODOR_SLEUTH - level_up_move 16, MOVE_PSYBEAM - level_up_move 19, MOVE_PSYCH_UP - level_up_move 25, MOVE_CONFUSE_RAY - level_up_move 28, MOVE_MAGIC_COAT - level_up_move 37, MOVE_PSYCHIC - level_up_move 43, MOVE_REST - level_up_move 43, MOVE_SNORE - level_up_move 55, MOVE_BOUNCE - .2byte -1 - -gPlusleLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 4, MOVE_THUNDER_WAVE - level_up_move 10, MOVE_QUICK_ATTACK - level_up_move 13, MOVE_HELPING_HAND - level_up_move 19, MOVE_SPARK - level_up_move 22, MOVE_ENCORE - level_up_move 28, MOVE_FAKE_TEARS - level_up_move 31, MOVE_CHARGE - level_up_move 37, MOVE_THUNDER - level_up_move 40, MOVE_BATON_PASS - level_up_move 47, MOVE_AGILITY - .2byte -1 - -gMinunLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 4, MOVE_THUNDER_WAVE - level_up_move 10, MOVE_QUICK_ATTACK - level_up_move 13, MOVE_HELPING_HAND - level_up_move 19, MOVE_SPARK - level_up_move 22, MOVE_ENCORE - level_up_move 28, MOVE_CHARM - level_up_move 31, MOVE_CHARGE - level_up_move 37, MOVE_THUNDER - level_up_move 40, MOVE_BATON_PASS - level_up_move 47, MOVE_AGILITY - .2byte -1 - -gMawileLevelUpLearnset: - level_up_move 1, MOVE_ASTONISH - level_up_move 6, MOVE_FAKE_TEARS - level_up_move 11, MOVE_BITE - level_up_move 16, MOVE_SWEET_SCENT - level_up_move 21, MOVE_VICE_GRIP - level_up_move 26, MOVE_FAINT_ATTACK - level_up_move 31, MOVE_BATON_PASS - level_up_move 36, MOVE_CRUNCH - level_up_move 41, MOVE_IRON_DEFENSE - level_up_move 46, MOVE_STOCKPILE - level_up_move 46, MOVE_SWALLOW - level_up_move 46, MOVE_SPIT_UP - .2byte -1 - -gMedititeLevelUpLearnset: - level_up_move 1, MOVE_BIDE - level_up_move 4, MOVE_MEDITATE - level_up_move 9, MOVE_CONFUSION - level_up_move 12, MOVE_DETECT - level_up_move 18, MOVE_HIDDEN_POWER - level_up_move 22, MOVE_MIND_READER - level_up_move 28, MOVE_CALM_MIND - level_up_move 32, MOVE_HI_JUMP_KICK - level_up_move 38, MOVE_PSYCH_UP - level_up_move 42, MOVE_REVERSAL - level_up_move 48, MOVE_RECOVER - .2byte -1 - -gMedichamLevelUpLearnset: - level_up_move 1, MOVE_FIRE_PUNCH - level_up_move 1, MOVE_THUNDER_PUNCH - level_up_move 1, MOVE_ICE_PUNCH - level_up_move 1, MOVE_BIDE - level_up_move 1, MOVE_MEDITATE - level_up_move 1, MOVE_CONFUSION - level_up_move 1, MOVE_DETECT - level_up_move 4, MOVE_MEDITATE - level_up_move 9, MOVE_CONFUSION - level_up_move 12, MOVE_DETECT - level_up_move 18, MOVE_HIDDEN_POWER - level_up_move 22, MOVE_MIND_READER - level_up_move 28, MOVE_CALM_MIND - level_up_move 32, MOVE_HI_JUMP_KICK - level_up_move 40, MOVE_PSYCH_UP - level_up_move 46, MOVE_REVERSAL - level_up_move 54, MOVE_RECOVER - .2byte -1 - -gSwabluLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_GROWL - level_up_move 8, MOVE_ASTONISH - level_up_move 11, MOVE_SING - level_up_move 18, MOVE_FURY_ATTACK - level_up_move 21, MOVE_SAFEGUARD - level_up_move 28, MOVE_MIST - level_up_move 31, MOVE_TAKE_DOWN - level_up_move 38, MOVE_MIRROR_MOVE - level_up_move 41, MOVE_REFRESH - level_up_move 48, MOVE_PERISH_SONG - .2byte -1 - -gAltariaLevelUpLearnset: - level_up_move 1, MOVE_PECK - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_ASTONISH - level_up_move 1, MOVE_SING - level_up_move 8, MOVE_ASTONISH - level_up_move 11, MOVE_SING - level_up_move 18, MOVE_FURY_ATTACK - level_up_move 21, MOVE_SAFEGUARD - level_up_move 28, MOVE_MIST - level_up_move 31, MOVE_TAKE_DOWN - level_up_move 35, MOVE_DRAGON_BREATH - level_up_move 40, MOVE_DRAGON_DANCE - level_up_move 45, MOVE_REFRESH - level_up_move 54, MOVE_PERISH_SONG - level_up_move 59, MOVE_SKY_ATTACK - .2byte -1 - -gWynautLevelUpLearnset: - level_up_move 1, MOVE_SPLASH - level_up_move 1, MOVE_CHARM - level_up_move 1, MOVE_ENCORE - level_up_move 15, MOVE_COUNTER - level_up_move 15, MOVE_MIRROR_COAT - level_up_move 15, MOVE_SAFEGUARD - level_up_move 15, MOVE_DESTINY_BOND - .2byte -1 - -gDuskullLevelUpLearnset: - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_NIGHT_SHADE - level_up_move 5, MOVE_DISABLE - level_up_move 12, MOVE_FORESIGHT - level_up_move 16, MOVE_ASTONISH - level_up_move 23, MOVE_CONFUSE_RAY - level_up_move 27, MOVE_PURSUIT - level_up_move 34, MOVE_CURSE - level_up_move 38, MOVE_WILL_O_WISP - level_up_move 45, MOVE_MEAN_LOOK - level_up_move 49, MOVE_FUTURE_SIGHT - .2byte -1 - -gDusclopsLevelUpLearnset: - level_up_move 1, MOVE_BIND - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_NIGHT_SHADE - level_up_move 1, MOVE_DISABLE - level_up_move 5, MOVE_DISABLE - level_up_move 12, MOVE_FORESIGHT - level_up_move 16, MOVE_ASTONISH - level_up_move 23, MOVE_CONFUSE_RAY - level_up_move 27, MOVE_PURSUIT - level_up_move 34, MOVE_CURSE - level_up_move 37, MOVE_SHADOW_PUNCH - level_up_move 41, MOVE_WILL_O_WISP - level_up_move 51, MOVE_MEAN_LOOK - level_up_move 58, MOVE_FUTURE_SIGHT - .2byte -1 - -gRoseliaLevelUpLearnset: - level_up_move 1, MOVE_ABSORB - level_up_move 5, MOVE_GROWTH - level_up_move 9, MOVE_POISON_STING - level_up_move 13, MOVE_STUN_SPORE - level_up_move 17, MOVE_MEGA_DRAIN - level_up_move 21, MOVE_LEECH_SEED - level_up_move 25, MOVE_MAGICAL_LEAF - level_up_move 29, MOVE_GRASS_WHISTLE - level_up_move 33, MOVE_GIGA_DRAIN - level_up_move 37, MOVE_SWEET_SCENT - level_up_move 41, MOVE_INGRAIN - level_up_move 45, MOVE_TOXIC - level_up_move 49, MOVE_PETAL_DANCE - level_up_move 53, MOVE_AROMATHERAPY - level_up_move 57, MOVE_SYNTHESIS - .2byte -1 - -gSlakothLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_YAWN - level_up_move 7, MOVE_ENCORE - level_up_move 13, MOVE_SLACK_OFF - level_up_move 19, MOVE_FAINT_ATTACK - level_up_move 25, MOVE_AMNESIA - level_up_move 31, MOVE_COVET - level_up_move 37, MOVE_COUNTER - level_up_move 43, MOVE_FLAIL - .2byte -1 - -gVigorothLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_FOCUS_ENERGY - level_up_move 1, MOVE_ENCORE - level_up_move 1, MOVE_UPROAR - level_up_move 7, MOVE_ENCORE - level_up_move 13, MOVE_UPROAR - level_up_move 19, MOVE_FURY_SWIPES - level_up_move 25, MOVE_ENDURE - level_up_move 31, MOVE_SLASH - level_up_move 37, MOVE_COUNTER - level_up_move 43, MOVE_FOCUS_PUNCH - level_up_move 49, MOVE_REVERSAL - .2byte -1 - -gSlakingLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_YAWN - level_up_move 1, MOVE_ENCORE - level_up_move 1, MOVE_SLACK_OFF - level_up_move 7, MOVE_ENCORE - level_up_move 13, MOVE_SLACK_OFF - level_up_move 19, MOVE_FAINT_ATTACK - level_up_move 25, MOVE_AMNESIA - level_up_move 31, MOVE_COVET - level_up_move 36, MOVE_SWAGGER - level_up_move 37, MOVE_COUNTER - level_up_move 43, MOVE_FLAIL - .2byte -1 - -gGulpinLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 6, MOVE_YAWN - level_up_move 9, MOVE_POISON_GAS - level_up_move 14, MOVE_SLUDGE - level_up_move 17, MOVE_AMNESIA - level_up_move 23, MOVE_ENCORE - level_up_move 28, MOVE_TOXIC - level_up_move 34, MOVE_STOCKPILE - level_up_move 34, MOVE_SPIT_UP - level_up_move 34, MOVE_SWALLOW - level_up_move 39, MOVE_SLUDGE_BOMB - .2byte -1 - -gSwalotLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_YAWN - level_up_move 1, MOVE_POISON_GAS - level_up_move 1, MOVE_SLUDGE - level_up_move 6, MOVE_YAWN - level_up_move 9, MOVE_POISON_GAS - level_up_move 14, MOVE_SLUDGE - level_up_move 17, MOVE_AMNESIA - level_up_move 23, MOVE_ENCORE - level_up_move 26, MOVE_BODY_SLAM - level_up_move 31, MOVE_TOXIC - level_up_move 40, MOVE_STOCKPILE - level_up_move 40, MOVE_SPIT_UP - level_up_move 40, MOVE_SWALLOW - level_up_move 48, MOVE_SLUDGE_BOMB - .2byte -1 - -gTropiusLevelUpLearnset: - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_GUST - level_up_move 7, MOVE_GROWTH - level_up_move 11, MOVE_RAZOR_LEAF - level_up_move 17, MOVE_STOMP - level_up_move 21, MOVE_SWEET_SCENT - level_up_move 27, MOVE_WHIRLWIND - level_up_move 31, MOVE_MAGICAL_LEAF - level_up_move 37, MOVE_BODY_SLAM - level_up_move 41, MOVE_SOLAR_BEAM - level_up_move 47, MOVE_SYNTHESIS - .2byte -1 - -gWhismurLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 5, MOVE_UPROAR - level_up_move 11, MOVE_ASTONISH - level_up_move 15, MOVE_HOWL - level_up_move 21, MOVE_SUPERSONIC - level_up_move 25, MOVE_STOMP - level_up_move 31, MOVE_SCREECH - level_up_move 35, MOVE_ROAR - level_up_move 41, MOVE_REST - level_up_move 41, MOVE_SLEEP_TALK - level_up_move 45, MOVE_HYPER_VOICE - .2byte -1 - -gLoudredLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_UPROAR - level_up_move 1, MOVE_ASTONISH - level_up_move 1, MOVE_HOWL - level_up_move 5, MOVE_UPROAR - level_up_move 11, MOVE_ASTONISH - level_up_move 15, MOVE_HOWL - level_up_move 23, MOVE_SUPERSONIC - level_up_move 29, MOVE_STOMP - level_up_move 37, MOVE_SCREECH - level_up_move 43, MOVE_ROAR - level_up_move 51, MOVE_REST - level_up_move 51, MOVE_SLEEP_TALK - level_up_move 57, MOVE_HYPER_VOICE - .2byte -1 - -gExploudLevelUpLearnset: - level_up_move 1, MOVE_POUND - level_up_move 1, MOVE_UPROAR - level_up_move 1, MOVE_ASTONISH - level_up_move 1, MOVE_HOWL - level_up_move 5, MOVE_UPROAR - level_up_move 11, MOVE_ASTONISH - level_up_move 15, MOVE_HOWL - level_up_move 23, MOVE_SUPERSONIC - level_up_move 29, MOVE_STOMP - level_up_move 37, MOVE_SCREECH - level_up_move 40, MOVE_HYPER_BEAM - level_up_move 45, MOVE_ROAR - level_up_move 55, MOVE_REST - level_up_move 55, MOVE_SLEEP_TALK - level_up_move 63, MOVE_HYPER_VOICE - .2byte -1 - -gClamperlLevelUpLearnset: - level_up_move 1, MOVE_CLAMP - level_up_move 1, MOVE_WATER_GUN - level_up_move 1, MOVE_WHIRLPOOL - level_up_move 1, MOVE_IRON_DEFENSE - .2byte -1 - -gHuntailLevelUpLearnset: - level_up_move 1, MOVE_WHIRLPOOL - level_up_move 8, MOVE_BITE - level_up_move 15, MOVE_SCREECH - level_up_move 22, MOVE_WATER_PULSE - level_up_move 29, MOVE_SCARY_FACE - level_up_move 36, MOVE_CRUNCH - level_up_move 43, MOVE_BATON_PASS - level_up_move 50, MOVE_HYDRO_PUMP - .2byte -1 - -gGorebyssLevelUpLearnset: - level_up_move 1, MOVE_WHIRLPOOL - level_up_move 8, MOVE_CONFUSION - level_up_move 15, MOVE_AGILITY - level_up_move 22, MOVE_WATER_PULSE - level_up_move 29, MOVE_AMNESIA - level_up_move 36, MOVE_PSYCHIC - level_up_move 43, MOVE_BATON_PASS - level_up_move 50, MOVE_HYDRO_PUMP - .2byte -1 - -gAbsolLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 5, MOVE_LEER - level_up_move 9, MOVE_TAUNT - level_up_move 13, MOVE_QUICK_ATTACK - level_up_move 17, MOVE_RAZOR_WIND - level_up_move 21, MOVE_BITE - level_up_move 26, MOVE_SWORDS_DANCE - level_up_move 31, MOVE_DOUBLE_TEAM - level_up_move 36, MOVE_SLASH - level_up_move 41, MOVE_FUTURE_SIGHT - level_up_move 46, MOVE_PERISH_SONG - .2byte -1 - -gShuppetLevelUpLearnset: - level_up_move 1, MOVE_KNOCK_OFF - level_up_move 8, MOVE_SCREECH - level_up_move 13, MOVE_NIGHT_SHADE - level_up_move 20, MOVE_CURSE - level_up_move 25, MOVE_SPITE - level_up_move 32, MOVE_WILL_O_WISP - level_up_move 37, MOVE_FAINT_ATTACK - level_up_move 44, MOVE_SHADOW_BALL - level_up_move 49, MOVE_SNATCH - level_up_move 56, MOVE_GRUDGE - .2byte -1 - -gBanetteLevelUpLearnset: - level_up_move 1, MOVE_KNOCK_OFF - level_up_move 1, MOVE_SCREECH - level_up_move 1, MOVE_NIGHT_SHADE - level_up_move 1, MOVE_CURSE - level_up_move 8, MOVE_SCREECH - level_up_move 13, MOVE_NIGHT_SHADE - level_up_move 20, MOVE_CURSE - level_up_move 25, MOVE_SPITE - level_up_move 32, MOVE_WILL_O_WISP - level_up_move 39, MOVE_FAINT_ATTACK - level_up_move 48, MOVE_SHADOW_BALL - level_up_move 55, MOVE_SNATCH - level_up_move 64, MOVE_GRUDGE - .2byte -1 - -gSeviperLevelUpLearnset: - level_up_move 1, MOVE_WRAP - level_up_move 7, MOVE_LICK - level_up_move 10, MOVE_BITE - level_up_move 16, MOVE_POISON_TAIL - level_up_move 19, MOVE_SCREECH - level_up_move 25, MOVE_GLARE - level_up_move 28, MOVE_CRUNCH - level_up_move 34, MOVE_POISON_FANG - level_up_move 37, MOVE_SWAGGER - level_up_move 43, MOVE_HAZE - .2byte -1 - -gZangooseLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 4, MOVE_LEER - level_up_move 7, MOVE_QUICK_ATTACK - level_up_move 10, MOVE_SWORDS_DANCE - level_up_move 13, MOVE_FURY_CUTTER - level_up_move 19, MOVE_SLASH - level_up_move 25, MOVE_PURSUIT - level_up_move 31, MOVE_CRUSH_CLAW - level_up_move 37, MOVE_TAUNT - level_up_move 46, MOVE_DETECT - level_up_move 55, MOVE_FALSE_SWIPE - .2byte -1 - -gRelicanthLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_HARDEN - level_up_move 8, MOVE_WATER_GUN - level_up_move 15, MOVE_ROCK_TOMB - level_up_move 22, MOVE_YAWN - level_up_move 29, MOVE_TAKE_DOWN - level_up_move 36, MOVE_MUD_SPORT - level_up_move 43, MOVE_ANCIENT_POWER - level_up_move 50, MOVE_REST - level_up_move 57, MOVE_DOUBLE_EDGE - level_up_move 64, MOVE_HYDRO_PUMP - .2byte -1 - -gAronLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 4, MOVE_HARDEN - level_up_move 7, MOVE_MUD_SLAP - level_up_move 10, MOVE_HEADBUTT - level_up_move 13, MOVE_METAL_CLAW - level_up_move 17, MOVE_IRON_DEFENSE - level_up_move 21, MOVE_ROAR - level_up_move 25, MOVE_TAKE_DOWN - level_up_move 29, MOVE_IRON_TAIL - level_up_move 34, MOVE_PROTECT - level_up_move 39, MOVE_METAL_SOUND - level_up_move 44, MOVE_DOUBLE_EDGE - .2byte -1 - -gLaironLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_HARDEN - level_up_move 1, MOVE_MUD_SLAP - level_up_move 1, MOVE_HEADBUTT - level_up_move 4, MOVE_HARDEN - level_up_move 7, MOVE_MUD_SLAP - level_up_move 10, MOVE_HEADBUTT - level_up_move 13, MOVE_METAL_CLAW - level_up_move 17, MOVE_IRON_DEFENSE - level_up_move 21, MOVE_ROAR - level_up_move 25, MOVE_TAKE_DOWN - level_up_move 29, MOVE_IRON_TAIL - level_up_move 37, MOVE_PROTECT - level_up_move 45, MOVE_METAL_SOUND - level_up_move 53, MOVE_DOUBLE_EDGE - .2byte -1 - -gAggronLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 1, MOVE_HARDEN - level_up_move 1, MOVE_MUD_SLAP - level_up_move 1, MOVE_HEADBUTT - level_up_move 4, MOVE_HARDEN - level_up_move 7, MOVE_MUD_SLAP - level_up_move 10, MOVE_HEADBUTT - level_up_move 13, MOVE_METAL_CLAW - level_up_move 17, MOVE_IRON_DEFENSE - level_up_move 21, MOVE_ROAR - level_up_move 25, MOVE_TAKE_DOWN - level_up_move 29, MOVE_IRON_TAIL - level_up_move 37, MOVE_PROTECT - level_up_move 50, MOVE_METAL_SOUND - level_up_move 63, MOVE_DOUBLE_EDGE - .2byte -1 - -gCastformLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 10, MOVE_WATER_GUN - level_up_move 10, MOVE_EMBER - level_up_move 10, MOVE_POWDER_SNOW - level_up_move 20, MOVE_RAIN_DANCE - level_up_move 20, MOVE_SUNNY_DAY - level_up_move 20, MOVE_HAIL - level_up_move 30, MOVE_WEATHER_BALL - .2byte -1 - -gVolbeatLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 5, MOVE_CONFUSE_RAY - level_up_move 9, MOVE_DOUBLE_TEAM - level_up_move 13, MOVE_MOONLIGHT - level_up_move 17, MOVE_QUICK_ATTACK - level_up_move 21, MOVE_TAIL_GLOW - level_up_move 25, MOVE_SIGNAL_BEAM - level_up_move 29, MOVE_PROTECT - level_up_move 33, MOVE_HELPING_HAND - level_up_move 37, MOVE_DOUBLE_EDGE - .2byte -1 - -gIllumiseLevelUpLearnset: - level_up_move 1, MOVE_TACKLE - level_up_move 5, MOVE_SWEET_SCENT - level_up_move 9, MOVE_CHARM - level_up_move 13, MOVE_MOONLIGHT - level_up_move 17, MOVE_QUICK_ATTACK - level_up_move 21, MOVE_WISH - level_up_move 25, MOVE_ENCORE - level_up_move 29, MOVE_FLATTER - level_up_move 33, MOVE_HELPING_HAND - level_up_move 37, MOVE_COVET - .2byte -1 - -gLileepLevelUpLearnset: - level_up_move 1, MOVE_ASTONISH - level_up_move 8, MOVE_CONSTRICT - level_up_move 15, MOVE_ACID - level_up_move 22, MOVE_INGRAIN - level_up_move 29, MOVE_CONFUSE_RAY - level_up_move 36, MOVE_AMNESIA - level_up_move 43, MOVE_ANCIENT_POWER - level_up_move 50, MOVE_STOCKPILE - level_up_move 50, MOVE_SPIT_UP - level_up_move 50, MOVE_SWALLOW - .2byte -1 - -gCradilyLevelUpLearnset: - level_up_move 1, MOVE_ASTONISH - level_up_move 1, MOVE_CONSTRICT - level_up_move 1, MOVE_ACID - level_up_move 1, MOVE_INGRAIN - level_up_move 8, MOVE_CONSTRICT - level_up_move 15, MOVE_ACID - level_up_move 22, MOVE_INGRAIN - level_up_move 29, MOVE_CONFUSE_RAY - level_up_move 36, MOVE_AMNESIA - level_up_move 48, MOVE_ANCIENT_POWER - level_up_move 60, MOVE_STOCKPILE - level_up_move 60, MOVE_SPIT_UP - level_up_move 60, MOVE_SWALLOW - .2byte -1 - -gAnorithLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 7, MOVE_HARDEN - level_up_move 13, MOVE_MUD_SPORT - level_up_move 19, MOVE_WATER_GUN - level_up_move 25, MOVE_METAL_CLAW - level_up_move 31, MOVE_PROTECT - level_up_move 37, MOVE_ANCIENT_POWER - level_up_move 43, MOVE_FURY_CUTTER - level_up_move 49, MOVE_SLASH - level_up_move 55, MOVE_ROCK_BLAST - .2byte -1 - -gArmaldoLevelUpLearnset: - level_up_move 1, MOVE_SCRATCH - level_up_move 1, MOVE_HARDEN - level_up_move 1, MOVE_MUD_SPORT - level_up_move 1, MOVE_WATER_GUN - level_up_move 7, MOVE_HARDEN - level_up_move 13, MOVE_MUD_SPORT - level_up_move 19, MOVE_WATER_GUN - level_up_move 25, MOVE_METAL_CLAW - level_up_move 31, MOVE_PROTECT - level_up_move 37, MOVE_ANCIENT_POWER - level_up_move 46, MOVE_FURY_CUTTER - level_up_move 55, MOVE_SLASH - level_up_move 64, MOVE_ROCK_BLAST - .2byte -1 - -gRaltsLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 6, MOVE_CONFUSION - level_up_move 11, MOVE_DOUBLE_TEAM - level_up_move 16, MOVE_TELEPORT - level_up_move 21, MOVE_CALM_MIND - level_up_move 26, MOVE_PSYCHIC - level_up_move 31, MOVE_IMPRISON - level_up_move 36, MOVE_FUTURE_SIGHT - level_up_move 41, MOVE_HYPNOSIS - level_up_move 46, MOVE_DREAM_EATER - .2byte -1 - -gKirliaLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_CONFUSION - level_up_move 1, MOVE_DOUBLE_TEAM - level_up_move 1, MOVE_TELEPORT - level_up_move 6, MOVE_CONFUSION - level_up_move 11, MOVE_DOUBLE_TEAM - level_up_move 16, MOVE_TELEPORT - level_up_move 21, MOVE_CALM_MIND - level_up_move 26, MOVE_PSYCHIC - level_up_move 33, MOVE_IMPRISON - level_up_move 40, MOVE_FUTURE_SIGHT - level_up_move 47, MOVE_HYPNOSIS - level_up_move 54, MOVE_DREAM_EATER - .2byte -1 - -gGardevoirLevelUpLearnset: - level_up_move 1, MOVE_GROWL - level_up_move 1, MOVE_CONFUSION - level_up_move 1, MOVE_DOUBLE_TEAM - level_up_move 1, MOVE_TELEPORT - level_up_move 6, MOVE_CONFUSION - level_up_move 11, MOVE_DOUBLE_TEAM - level_up_move 16, MOVE_TELEPORT - level_up_move 21, MOVE_CALM_MIND - level_up_move 26, MOVE_PSYCHIC - level_up_move 33, MOVE_IMPRISON - level_up_move 42, MOVE_FUTURE_SIGHT - level_up_move 51, MOVE_HYPNOSIS - level_up_move 60, MOVE_DREAM_EATER - .2byte -1 - -gBagonLevelUpLearnset: - level_up_move 1, MOVE_RAGE - level_up_move 5, MOVE_BITE - level_up_move 9, MOVE_LEER - level_up_move 17, MOVE_HEADBUTT - level_up_move 21, MOVE_FOCUS_ENERGY - level_up_move 25, MOVE_EMBER - level_up_move 33, MOVE_DRAGON_BREATH - level_up_move 37, MOVE_SCARY_FACE - level_up_move 41, MOVE_CRUNCH - level_up_move 49, MOVE_DRAGON_CLAW - level_up_move 53, MOVE_DOUBLE_EDGE - .2byte -1 - -gShelgonLevelUpLearnset: - level_up_move 1, MOVE_RAGE - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_HEADBUTT - level_up_move 5, MOVE_BITE - level_up_move 9, MOVE_LEER - level_up_move 17, MOVE_HEADBUTT - level_up_move 21, MOVE_FOCUS_ENERGY - level_up_move 25, MOVE_EMBER - level_up_move 30, MOVE_PROTECT - level_up_move 38, MOVE_DRAGON_BREATH - level_up_move 47, MOVE_SCARY_FACE - level_up_move 56, MOVE_CRUNCH - level_up_move 69, MOVE_DRAGON_CLAW - level_up_move 78, MOVE_DOUBLE_EDGE - .2byte -1 - -gSalamenceLevelUpLearnset: - level_up_move 1, MOVE_RAGE - level_up_move 1, MOVE_BITE - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_HEADBUTT - level_up_move 5, MOVE_BITE - level_up_move 9, MOVE_LEER - level_up_move 17, MOVE_HEADBUTT - level_up_move 21, MOVE_FOCUS_ENERGY - level_up_move 25, MOVE_EMBER - level_up_move 30, MOVE_PROTECT - level_up_move 38, MOVE_DRAGON_BREATH - level_up_move 47, MOVE_SCARY_FACE - level_up_move 50, MOVE_FLY - level_up_move 61, MOVE_CRUNCH - level_up_move 79, MOVE_DRAGON_CLAW - level_up_move 93, MOVE_DOUBLE_EDGE - .2byte -1 - -gBeldumLevelUpLearnset: - level_up_move 1, MOVE_TAKE_DOWN - .2byte -1 - -gMetangLevelUpLearnset: - level_up_move 1, MOVE_TAKE_DOWN - level_up_move 20, MOVE_CONFUSION - level_up_move 20, MOVE_METAL_CLAW - level_up_move 26, MOVE_SCARY_FACE - level_up_move 32, MOVE_PURSUIT - level_up_move 38, MOVE_PSYCHIC - level_up_move 44, MOVE_IRON_DEFENSE - level_up_move 50, MOVE_METEOR_MASH - level_up_move 56, MOVE_AGILITY - level_up_move 62, MOVE_HYPER_BEAM - .2byte -1 - -gMetagrossLevelUpLearnset: - level_up_move 1, MOVE_TAKE_DOWN - level_up_move 1, MOVE_CONFUSION - level_up_move 1, MOVE_METAL_CLAW - level_up_move 1, MOVE_SCARY_FACE - level_up_move 20, MOVE_CONFUSION - level_up_move 20, MOVE_METAL_CLAW - level_up_move 26, MOVE_SCARY_FACE - level_up_move 32, MOVE_PURSUIT - level_up_move 38, MOVE_PSYCHIC - level_up_move 44, MOVE_IRON_DEFENSE - level_up_move 55, MOVE_METEOR_MASH - level_up_move 66, MOVE_AGILITY - level_up_move 77, MOVE_HYPER_BEAM - .2byte -1 - -gRegirockLevelUpLearnset: - level_up_move 1, MOVE_EXPLOSION - level_up_move 9, MOVE_ROCK_THROW - level_up_move 17, MOVE_CURSE - level_up_move 25, MOVE_SUPERPOWER - level_up_move 33, MOVE_ANCIENT_POWER - level_up_move 41, MOVE_IRON_DEFENSE - level_up_move 49, MOVE_ZAP_CANNON - level_up_move 57, MOVE_LOCK_ON - level_up_move 65, MOVE_HYPER_BEAM - .2byte -1 - -gRegiceLevelUpLearnset: - level_up_move 1, MOVE_EXPLOSION - level_up_move 9, MOVE_ICY_WIND - level_up_move 17, MOVE_CURSE - level_up_move 25, MOVE_SUPERPOWER - level_up_move 33, MOVE_ANCIENT_POWER - level_up_move 41, MOVE_AMNESIA - level_up_move 49, MOVE_ZAP_CANNON - level_up_move 57, MOVE_LOCK_ON - level_up_move 65, MOVE_HYPER_BEAM - .2byte -1 - -gRegisteelLevelUpLearnset: - level_up_move 1, MOVE_EXPLOSION - level_up_move 9, MOVE_METAL_CLAW - level_up_move 17, MOVE_CURSE - level_up_move 25, MOVE_SUPERPOWER - level_up_move 33, MOVE_ANCIENT_POWER - level_up_move 41, MOVE_IRON_DEFENSE - level_up_move 41, MOVE_AMNESIA - level_up_move 49, MOVE_ZAP_CANNON - level_up_move 57, MOVE_LOCK_ON - level_up_move 65, MOVE_HYPER_BEAM - .2byte -1 - -gKyogreLevelUpLearnset: - level_up_move 1, MOVE_WATER_PULSE - level_up_move 5, MOVE_SCARY_FACE - level_up_move 15, MOVE_ANCIENT_POWER - level_up_move 20, MOVE_BODY_SLAM - level_up_move 30, MOVE_CALM_MIND - level_up_move 35, MOVE_ICE_BEAM - level_up_move 45, MOVE_HYDRO_PUMP - level_up_move 50, MOVE_REST - level_up_move 60, MOVE_SHEER_COLD - level_up_move 65, MOVE_DOUBLE_EDGE - level_up_move 75, MOVE_WATER_SPOUT - .2byte -1 - -gGroudonLevelUpLearnset: - level_up_move 1, MOVE_MUD_SHOT - level_up_move 5, MOVE_SCARY_FACE - level_up_move 15, MOVE_ANCIENT_POWER - level_up_move 20, MOVE_SLASH - level_up_move 30, MOVE_BULK_UP - level_up_move 35, MOVE_EARTHQUAKE - level_up_move 45, MOVE_FIRE_BLAST - level_up_move 50, MOVE_REST - level_up_move 60, MOVE_FISSURE - level_up_move 65, MOVE_SOLAR_BEAM - level_up_move 75, MOVE_ERUPTION - .2byte -1 - -gRayquazaLevelUpLearnset: - level_up_move 1, MOVE_TWISTER - level_up_move 5, MOVE_SCARY_FACE - level_up_move 15, MOVE_ANCIENT_POWER - level_up_move 20, MOVE_DRAGON_CLAW - level_up_move 30, MOVE_DRAGON_DANCE - level_up_move 35, MOVE_CRUNCH - level_up_move 45, MOVE_FLY - level_up_move 50, MOVE_REST - level_up_move 60, MOVE_EXTREME_SPEED - level_up_move 65, MOVE_OUTRAGE - level_up_move 75, MOVE_HYPER_BEAM - .2byte -1 - -gLatiasLevelUpLearnset: - level_up_move 1, MOVE_PSYWAVE - level_up_move 5, MOVE_WISH - level_up_move 10, MOVE_HELPING_HAND - level_up_move 15, MOVE_SAFEGUARD - level_up_move 20, MOVE_DRAGON_BREATH - level_up_move 25, MOVE_WATER_SPORT - level_up_move 30, MOVE_REFRESH - level_up_move 35, MOVE_MIST_BALL - level_up_move 40, MOVE_PSYCHIC - level_up_move 45, MOVE_RECOVER - level_up_move 50, MOVE_CHARM - .2byte -1 - -gLatiosLevelUpLearnset: - level_up_move 1, MOVE_PSYWAVE - level_up_move 5, MOVE_MEMENTO - level_up_move 10, MOVE_HELPING_HAND - level_up_move 15, MOVE_SAFEGUARD - level_up_move 20, MOVE_DRAGON_BREATH - level_up_move 25, MOVE_PROTECT - level_up_move 30, MOVE_REFRESH - level_up_move 35, MOVE_LUSTER_PURGE - level_up_move 40, MOVE_PSYCHIC - level_up_move 45, MOVE_RECOVER - level_up_move 50, MOVE_DRAGON_DANCE - .2byte -1 - -gJirachiLevelUpLearnset: - level_up_move 1, MOVE_WISH - level_up_move 1, MOVE_CONFUSION - level_up_move 5, MOVE_REST - level_up_move 10, MOVE_SWIFT - level_up_move 15, MOVE_HELPING_HAND - level_up_move 20, MOVE_PSYCHIC - level_up_move 25, MOVE_REFRESH - level_up_move 30, MOVE_REST - level_up_move 35, MOVE_DOUBLE_EDGE - level_up_move 40, MOVE_FUTURE_SIGHT - level_up_move 45, MOVE_COSMIC_POWER - level_up_move 50, MOVE_DOOM_DESIRE - .2byte -1 - -gDeoxysLevelUpLearnset: - level_up_move 1, MOVE_LEER - level_up_move 1, MOVE_WRAP - level_up_move 5, MOVE_NIGHT_SHADE - level_up_move 10, MOVE_TELEPORT - level_up_move 15, MOVE_KNOCK_OFF - level_up_move 20, MOVE_PURSUIT - level_up_move 25, MOVE_PSYCHIC - level_up_move 30, MOVE_SNATCH - level_up_move 35, MOVE_COSMIC_POWER - level_up_move 40, MOVE_RECOVER - level_up_move 45, MOVE_PSYCHO_BOOST - level_up_move 50, MOVE_HYPER_BEAM - .2byte -1 - -gChimechoLevelUpLearnset: - level_up_move 1, MOVE_WRAP - level_up_move 6, MOVE_GROWL - level_up_move 9, MOVE_ASTONISH - level_up_move 14, MOVE_CONFUSION - level_up_move 17, MOVE_TAKE_DOWN - level_up_move 22, MOVE_UPROAR - level_up_move 25, MOVE_YAWN - level_up_move 30, MOVE_PSYWAVE - level_up_move 33, MOVE_DOUBLE_EDGE - level_up_move 38, MOVE_HEAL_BELL - level_up_move 41, MOVE_SAFEGUARD - level_up_move 46, MOVE_PSYCHIC - .2byte -1 diff --git a/data/pokemon.s b/data/pokemon.s index ed65fe681..a33d519ef 100644 --- a/data/pokemon.s +++ b/data/pokemon.s @@ -3,9 +3,6 @@ .section .rodata -@ 8201928 - .include "data/level_up_learnsets.inc" - @ 8203B68 .include "data/evolution_table.inc" diff --git a/include/pokemon.h b/include/pokemon.h index e3956df7a..15fa37c13 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -407,6 +407,11 @@ struct SpindaSpot u16 image[16]; }; +struct __attribute__((packed)) LevelUpMove { + u16 move:9; + u16 level:7; +}; + enum { GROWTH_MEDIUM_FAST, GROWTH_ERRATIC, diff --git a/src/pokemon_data.c b/src/pokemon_data.c index c00a16609..4f8304c23 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -3,8 +3,11 @@ #include "species.h" #include "trainer.h" #include "abilities.h" +#include "moves.h" #include "items.h" +#define LEVEL_UP_MOVE(lvl, move) ((lvl << 9) | move) + const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151 }; @@ -10286,3 +10289,5621 @@ const struct BaseStats gBaseStats[] = { BODY_COLOR_BLUE } }; + +.align 2 + +const u16 gBulbasaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(20, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(25, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(32, MOVE_GROWTH), + LEVEL_UP_MOVE(39, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(46, MOVE_SOLAR_BEAM), + -1 +}; + +const u16 gIvysaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(38, MOVE_GROWTH), + LEVEL_UP_MOVE(47, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(56, MOVE_SOLAR_BEAM), + -1 +}; + +const u16 gVenusaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(41, MOVE_GROWTH), + LEVEL_UP_MOVE(53, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM), + -1 +}; + +const u16 gCharmanderLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(19, MOVE_RAGE), + LEVEL_UP_MOVE(25, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(31, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(49, MOVE_FIRE_SPIN), + -1 +}; + +const u16 gCharmeleonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(20, MOVE_RAGE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(48, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(55, MOVE_FIRE_SPIN), + -1 +}; + +const u16 gCharizardLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(20, MOVE_RAGE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(36, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(44, MOVE_SLASH), + LEVEL_UP_MOVE(54, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(64, MOVE_FIRE_SPIN), + -1 +}; + +const u16 gSquirtleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(18, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(28, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(40, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(47, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gWartortleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(45, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(53, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gBlastoiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(55, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(68, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gCaterpieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + -1 +}; + +const u16 gMetapodLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + -1 +}; + +const u16 gButterfreeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(14, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(23, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(28, MOVE_GUST), + LEVEL_UP_MOVE(34, MOVE_PSYBEAM), + LEVEL_UP_MOVE(40, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(47, MOVE_SILVER_WIND), + -1 +}; + +const u16 gWeedleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + -1 +}; + +const u16 gKakunaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + -1 +}; + +const u16 gBeedrillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(10, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(15, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(20, MOVE_TWINEEDLE), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(30, MOVE_PURSUIT), + LEVEL_UP_MOVE(35, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_ENDEAVOR), + -1 +}; + +const u16 gPidgeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(19, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(25, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(39, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_MIRROR_MOVE), + -1 +}; + +const u16 gPidgeottoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(27, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(52, MOVE_MIRROR_MOVE), + -1 +}; + +const u16 gPidgeotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(27, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(48, MOVE_AGILITY), + LEVEL_UP_MOVE(62, MOVE_MIRROR_MOVE), + -1 +}; + +const u16 gRattataLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HYPER_FANG), + LEVEL_UP_MOVE(20, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(41, MOVE_ENDEAVOR), + -1 +}; + +const u16 gRaticateLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HYPER_FANG), + LEVEL_UP_MOVE(20, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(30, MOVE_PURSUIT), + LEVEL_UP_MOVE(40, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(50, MOVE_ENDEAVOR), + -1 +}; + +const u16 gSpearowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(19, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(31, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(37, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + -1 +}; + +const u16 gFearowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(26, MOVE_PURSUIT), + LEVEL_UP_MOVE(32, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(40, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + -1 +}; + +const u16 gEkansLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_GLARE), + LEVEL_UP_MOVE(25, MOVE_SCREECH), + LEVEL_UP_MOVE(32, MOVE_ACID), + LEVEL_UP_MOVE(37, MOVE_STOCKPILE), + LEVEL_UP_MOVE(37, MOVE_SWALLOW), + LEVEL_UP_MOVE(37, MOVE_SPIT_UP), + LEVEL_UP_MOVE(44, MOVE_HAZE), + -1 +}; + +const u16 gArbokLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 8, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_GLARE), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(38, MOVE_ACID), + LEVEL_UP_MOVE(46, MOVE_STOCKPILE), + LEVEL_UP_MOVE(46, MOVE_SWALLOW), + LEVEL_UP_MOVE(46, MOVE_SPIT_UP), + LEVEL_UP_MOVE(56, MOVE_HAZE), + -1 +}; + +const u16 gPikachuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(20, MOVE_SLAM), + LEVEL_UP_MOVE(26, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(33, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_THUNDER), + LEVEL_UP_MOVE(50, MOVE_LIGHT_SCREEN), + -1 +}; + +const u16 gRaichuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_THUNDERBOLT), + -1 +}; + +const u16 gSandshrewLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 6, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_SLASH), + LEVEL_UP_MOVE(30, MOVE_SWIFT), + LEVEL_UP_MOVE(37, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(45, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + -1 +}; + +const u16 gSandslashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(24, MOVE_SLASH), + LEVEL_UP_MOVE(33, MOVE_SWIFT), + LEVEL_UP_MOVE(42, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(52, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(62, MOVE_SANDSTORM), + -1 +}; + +const u16 gNidoranFLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 8, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(38, MOVE_FLATTER), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + -1 +}; + +const u16 gNidorinaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 8, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(18, MOVE_POISON_STING), + LEVEL_UP_MOVE(22, MOVE_BITE), + LEVEL_UP_MOVE(26, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(43, MOVE_FLATTER), + LEVEL_UP_MOVE(53, MOVE_CRUNCH), + -1 +}; + +const u16 gNidoqueenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_BODY_SLAM), + -1 +}; + +const u16 gNidoranMLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(20, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(23, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(30, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(38, MOVE_FLATTER), + LEVEL_UP_MOVE(47, MOVE_HORN_DRILL), + -1 +}; + +const u16 gNidorinoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(18, MOVE_POISON_STING), + LEVEL_UP_MOVE(22, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(26, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(34, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(43, MOVE_FLATTER), + LEVEL_UP_MOVE(53, MOVE_HORN_DRILL), + -1 +}; + +const u16 gNidokingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_THRASH), + -1 +}; + +const u16 gClefairyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_ENCORE), + LEVEL_UP_MOVE( 9, MOVE_SING), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(17, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(21, MOVE_MINIMIZE), + LEVEL_UP_MOVE(25, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(29, MOVE_METRONOME), + LEVEL_UP_MOVE(33, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(45, MOVE_METEOR_MASH), + -1 +}; + +const u16 gClefableLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_MINIMIZE), + LEVEL_UP_MOVE( 1, MOVE_METRONOME), + -1 +}; + +const u16 gVulpixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_ROAR), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(21, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(25, MOVE_IMPRISON), + LEVEL_UP_MOVE(29, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(33, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(37, MOVE_GRUDGE), + LEVEL_UP_MOVE(41, MOVE_FIRE_SPIN), + -1 +}; + +const u16 gNinetalesLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(45, MOVE_FIRE_SPIN), + -1 +}; + +const u16 gJigglypuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9, MOVE_POUND), + LEVEL_UP_MOVE(14, MOVE_DISABLE), + LEVEL_UP_MOVE(19, MOVE_ROLLOUT), + LEVEL_UP_MOVE(24, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(34, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(39, MOVE_MIMIC), + LEVEL_UP_MOVE(44, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gWigglytuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + -1 +}; + +const u16 gZubatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(26, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(31, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(36, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(41, MOVE_POISON_FANG), + LEVEL_UP_MOVE(46, MOVE_HAZE), + -1 +}; + +const u16 gGolbatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_POISON_FANG), + LEVEL_UP_MOVE(56, MOVE_HAZE), + -1 +}; + +const u16 gOddishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 7, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(16, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(23, MOVE_ACID), + LEVEL_UP_MOVE(32, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(39, MOVE_PETAL_DANCE), + -1 +}; + +const u16 gGloomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 7, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(16, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(24, MOVE_ACID), + LEVEL_UP_MOVE(35, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + -1 +}; + +const u16 gVileplumeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + -1 +}; + +const u16 gParasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(25, MOVE_SPORE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_GROWTH), + LEVEL_UP_MOVE(43, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(49, MOVE_AROMATHERAPY), + -1 +}; + +const u16 gParasectLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(27, MOVE_SPORE), + LEVEL_UP_MOVE(35, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_GROWTH), + LEVEL_UP_MOVE(51, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(59, MOVE_AROMATHERAPY), + -1 +}; + +const u16 gVenonatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(28, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(33, MOVE_PSYBEAM), + LEVEL_UP_MOVE(36, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(41, MOVE_PSYCHIC), + -1 +}; + +const u16 gVenomothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SILVER_WIND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(28, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(31, MOVE_GUST), + LEVEL_UP_MOVE(36, MOVE_PSYBEAM), + LEVEL_UP_MOVE(42, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(52, MOVE_PSYCHIC), + -1 +}; + +const u16 gDiglettLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(17, MOVE_DIG), + LEVEL_UP_MOVE(25, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(33, MOVE_SLASH), + LEVEL_UP_MOVE(41, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(49, MOVE_FISSURE), + -1 +}; + +const u16 gDugtrioLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(17, MOVE_DIG), + LEVEL_UP_MOVE(25, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(26, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(38, MOVE_SLASH), + LEVEL_UP_MOVE(51, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(64, MOVE_FISSURE), + -1 +}; + +const u16 gMeowthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_PAY_DAY), + LEVEL_UP_MOVE(28, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(35, MOVE_SCREECH), + LEVEL_UP_MOVE(41, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(46, MOVE_SLASH), + LEVEL_UP_MOVE(50, MOVE_FAKE_OUT), + -1 +}; + +const u16 gPersianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_PAY_DAY), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(38, MOVE_SCREECH), + LEVEL_UP_MOVE(46, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(53, MOVE_SLASH), + LEVEL_UP_MOVE(59, MOVE_FAKE_OUT), + -1 +}; + +const u16 gPsyduckLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(40, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gGolduckLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(44, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gMankeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_LOW_KICK), + LEVEL_UP_MOVE(15, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(27, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(33, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(39, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(51, MOVE_THRASH), + -1 +}; + +const u16 gPrimeapeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 9, MOVE_LOW_KICK), + LEVEL_UP_MOVE(15, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(27, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(28, MOVE_RAGE), + LEVEL_UP_MOVE(36, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(45, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(54, MOVE_SCREECH), + LEVEL_UP_MOVE(63, MOVE_THRASH), + -1 +}; + +const u16 gGrowlitheLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_ROAR), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(19, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(37, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), + -1 +}; + +const u16 gArcanineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_ROAR), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(49, MOVE_EXTREME_SPEED), + -1 +}; + +const u16 gPoliwagLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(25, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gPoliwhirlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(27, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(35, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(43, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gPoliwrathLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_SUBMISSION), + LEVEL_UP_MOVE(35, MOVE_SUBMISSION), + LEVEL_UP_MOVE(51, MOVE_MIND_READER), + -1 +}; + +const u16 gAbraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + -1 +}; + +const u16 gKadabraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_KINESIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(18, MOVE_DISABLE), + LEVEL_UP_MOVE(21, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_RECOVER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(33, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_TRICK), + -1 +}; + +const u16 gAlakazamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_KINESIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(18, MOVE_DISABLE), + LEVEL_UP_MOVE(21, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_RECOVER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(33, MOVE_CALM_MIND), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_TRICK), + -1 +}; + +const u16 gMachopLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(31, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(37, MOVE_SUBMISSION), + LEVEL_UP_MOVE(40, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(43, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(49, MOVE_DYNAMIC_PUNCH), + -1 +}; + +const u16 gMachokeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(33, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(41, MOVE_SUBMISSION), + LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH), + -1 +}; + +const u16 gMachampLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(33, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(41, MOVE_SUBMISSION), + LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH), + -1 +}; + +const u16 gBellsproutLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_WRAP), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(17, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(23, MOVE_ACID), + LEVEL_UP_MOVE(30, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(37, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(45, MOVE_SLAM), + -1 +}; + +const u16 gWeepinbellLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_WRAP), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(17, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(24, MOVE_ACID), + LEVEL_UP_MOVE(33, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(42, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(54, MOVE_SLAM), + -1 +}; + +const u16 gVictreebelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 1, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + -1 +}; + +const u16 gTentacoolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_CONSTRICT), + LEVEL_UP_MOVE(19, MOVE_ACID), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(30, MOVE_WRAP), + LEVEL_UP_MOVE(36, MOVE_BARRIER), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gTentacruelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_CONSTRICT), + LEVEL_UP_MOVE(19, MOVE_ACID), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(30, MOVE_WRAP), + LEVEL_UP_MOVE(38, MOVE_BARRIER), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gGeodudeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(26, MOVE_ROLLOUT), + LEVEL_UP_MOVE(31, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gGravelerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_EXPLOSION), + LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gGolemLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_EXPLOSION), + LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gPonytaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(14, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_BOUNCE), + LEVEL_UP_MOVE(53, MOVE_FIRE_BLAST), + -1 +}; + +const u16 gRapidashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(14, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(50, MOVE_BOUNCE), + LEVEL_UP_MOVE(63, MOVE_FIRE_BLAST), + -1 +}; + +const u16 gSlowpokeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(43, MOVE_AMNESIA), + LEVEL_UP_MOVE(48, MOVE_PSYCHIC), + -1 +}; + +const u16 gSlowbroLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(37, MOVE_WITHDRAW), + LEVEL_UP_MOVE(46, MOVE_AMNESIA), + LEVEL_UP_MOVE(54, MOVE_PSYCHIC), + -1 +}; + +const u16 gMagnemiteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(11, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(26, MOVE_SPARK), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(38, MOVE_SWIFT), + LEVEL_UP_MOVE(44, MOVE_SCREECH), + LEVEL_UP_MOVE(50, MOVE_ZAP_CANNON), + -1 +}; + +const u16 gMagnetonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 6, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(11, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(26, MOVE_SPARK), + LEVEL_UP_MOVE(35, MOVE_LOCK_ON), + LEVEL_UP_MOVE(44, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(53, MOVE_SCREECH), + LEVEL_UP_MOVE(62, MOVE_ZAP_CANNON), + -1 +}; + +const u16 gFarfetchdLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(11, MOVE_LEER), + LEVEL_UP_MOVE(16, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(26, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(31, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(46, MOVE_FALSE_SWIPE), + -1 +}; + +const u16 gDoduoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_PURSUIT), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_UPROAR), + LEVEL_UP_MOVE(37, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(45, MOVE_AGILITY), + -1 +}; + +const u16 gDodrioLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PURSUIT), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_PURSUIT), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(38, MOVE_UPROAR), + LEVEL_UP_MOVE(47, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(60, MOVE_AGILITY), + -1 +}; + +const u16 gSeelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 9, MOVE_GROWL), + LEVEL_UP_MOVE(17, MOVE_ICY_WIND), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(49, MOVE_SAFEGUARD), + -1 +}; + +const u16 gDewgongLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 9, MOVE_GROWL), + LEVEL_UP_MOVE(17, MOVE_ICY_WIND), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(34, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(51, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(64, MOVE_SAFEGUARD), + -1 +}; + +const u16 gGrimerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_DISABLE), + LEVEL_UP_MOVE(13, MOVE_SLUDGE), + LEVEL_UP_MOVE(19, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(43, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(53, MOVE_MEMENTO), + -1 +}; + +const u16 gMukLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_DISABLE), + LEVEL_UP_MOVE(13, MOVE_SLUDGE), + LEVEL_UP_MOVE(19, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(47, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(61, MOVE_MEMENTO), + -1 +}; + +const u16 gShellderLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_LEER), + LEVEL_UP_MOVE(41, MOVE_CLAMP), + LEVEL_UP_MOVE(49, MOVE_ICE_BEAM), + -1 +}; + +const u16 gCloysterLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_SPIKES), + LEVEL_UP_MOVE(41, MOVE_SPIKE_CANNON), + -1 +}; + +const u16 gGastlyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(36, MOVE_DESTINY_BOND), + -1 +}; + +const u16 gHaunterLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(39, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(48, MOVE_DESTINY_BOND), + -1 +}; + +const u16 gGengarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(39, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(48, MOVE_DESTINY_BOND), + -1 +}; + +const u16 gOnixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 9, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(21, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(49, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gDrowzeeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_HEADBUTT), + LEVEL_UP_MOVE(31, MOVE_POISON_GAS), + LEVEL_UP_MOVE(36, MOVE_MEDITATE), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(45, MOVE_FUTURE_SIGHT), + -1 +}; + +const u16 gHypnoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_HEADBUTT), + LEVEL_UP_MOVE(33, MOVE_POISON_GAS), + LEVEL_UP_MOVE(40, MOVE_MEDITATE), + LEVEL_UP_MOVE(49, MOVE_PSYCHIC), + LEVEL_UP_MOVE(55, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(60, MOVE_FUTURE_SIGHT), + -1 +}; + +const u16 gKrabbyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(16, MOVE_HARDEN), + LEVEL_UP_MOVE(23, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(27, MOVE_STOMP), + LEVEL_UP_MOVE(34, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(41, MOVE_PROTECT), + LEVEL_UP_MOVE(45, MOVE_CRABHAMMER), + -1 +}; + +const u16 gKinglerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(16, MOVE_HARDEN), + LEVEL_UP_MOVE(23, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(27, MOVE_STOMP), + LEVEL_UP_MOVE(38, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(49, MOVE_PROTECT), + LEVEL_UP_MOVE(57, MOVE_CRABHAMMER), + -1 +}; + +const u16 gVoltorbLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_SPARK), + LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(32, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(46, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_MIRROR_COAT), + -1 +}; + +const u16 gElectrodeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_SPARK), + LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(34, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(48, MOVE_SWIFT), + LEVEL_UP_MOVE(54, MOVE_EXPLOSION), + LEVEL_UP_MOVE(59, MOVE_MIRROR_COAT), + -1 +}; + +const u16 gExeggcuteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRAGE), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7, MOVE_REFLECT), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(19, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(31, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(37, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM), + -1 +}; + +const u16 gExeggutorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRAGE), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_EGG_BOMB), + -1 +}; + +const u16 gCuboneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_BONE_CLUB), + LEVEL_UP_MOVE(13, MOVE_HEADBUTT), + LEVEL_UP_MOVE(17, MOVE_LEER), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_BONEMERANG), + LEVEL_UP_MOVE(29, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(37, MOVE_THRASH), + LEVEL_UP_MOVE(41, MOVE_BONE_RUSH), + LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gMarowakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_BONE_CLUB), + LEVEL_UP_MOVE(13, MOVE_HEADBUTT), + LEVEL_UP_MOVE(17, MOVE_LEER), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_BONEMERANG), + LEVEL_UP_MOVE(32, MOVE_RAGE), + LEVEL_UP_MOVE(39, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(46, MOVE_THRASH), + LEVEL_UP_MOVE(53, MOVE_BONE_RUSH), + LEVEL_UP_MOVE(61, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gHitmonleeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 6, MOVE_MEDITATE), + LEVEL_UP_MOVE(11, MOVE_ROLLING_KICK), + LEVEL_UP_MOVE(16, MOVE_JUMP_KICK), + LEVEL_UP_MOVE(20, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(26, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(31, MOVE_MIND_READER), + LEVEL_UP_MOVE(36, MOVE_FORESIGHT), + LEVEL_UP_MOVE(41, MOVE_ENDURE), + LEVEL_UP_MOVE(46, MOVE_MEGA_KICK), + LEVEL_UP_MOVE(51, MOVE_REVERSAL), + -1 +}; + +const u16 gHitmonchanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 7, MOVE_AGILITY), + LEVEL_UP_MOVE(13, MOVE_PURSUIT), + LEVEL_UP_MOVE(20, MOVE_MACH_PUNCH), + LEVEL_UP_MOVE(26, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(26, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE(26, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(32, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(38, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(44, MOVE_DETECT), + LEVEL_UP_MOVE(50, MOVE_COUNTER), + -1 +}; + +const u16 gLickitungLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(18, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(23, MOVE_STOMP), + LEVEL_UP_MOVE(29, MOVE_WRAP), + LEVEL_UP_MOVE(34, MOVE_DISABLE), + LEVEL_UP_MOVE(40, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(51, MOVE_REFRESH), + -1 +}; + +const u16 gKoffingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 9, MOVE_SMOG), + LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(21, MOVE_SLUDGE), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_HAZE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(45, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE(49, MOVE_MEMENTO), + -1 +}; + +const u16 gWeezingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 9, MOVE_SMOG), + LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(21, MOVE_SLUDGE), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_HAZE), + LEVEL_UP_MOVE(44, MOVE_EXPLOSION), + LEVEL_UP_MOVE(51, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE(58, MOVE_MEMENTO), + -1 +}; + +const u16 gRhyhornLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_STOMP), + LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(38, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(57, MOVE_MEGAHORN), + -1 +}; + +const u16 gRhydonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_STOMP), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(10, MOVE_STOMP), + LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(38, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(46, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(58, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(66, MOVE_MEGAHORN), + -1 +}; + +const u16 gChanseyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_REFRESH), + LEVEL_UP_MOVE(13, MOVE_SOFT_BOILED), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(23, MOVE_MINIMIZE), + LEVEL_UP_MOVE(29, MOVE_SING), + LEVEL_UP_MOVE(35, MOVE_EGG_BOMB), + LEVEL_UP_MOVE(41, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(49, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gTangelaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_INGRAIN), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 4, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(10, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_GROWTH), + LEVEL_UP_MOVE(19, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(22, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(28, MOVE_BIND), + LEVEL_UP_MOVE(31, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(37, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(40, MOVE_SLAM), + LEVEL_UP_MOVE(46, MOVE_TICKLE), + -1 +}; + +const u16 gKangaskhanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(31, MOVE_RAGE), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(43, MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + -1 +}; + +const u16 gHorseaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + -1 +}; + +const u16 gSeadraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE), + -1 +}; + +const u16 gGoldeenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(10, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(24, MOVE_FLAIL), + LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(38, MOVE_WATERFALL), + LEVEL_UP_MOVE(43, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(52, MOVE_AGILITY), + -1 +}; + +const u16 gSeakingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(10, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(24, MOVE_FLAIL), + LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(41, MOVE_WATERFALL), + LEVEL_UP_MOVE(49, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(61, MOVE_AGILITY), + -1 +}; + +const u16 gStaryuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 6, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(15, MOVE_RECOVER), + LEVEL_UP_MOVE(19, MOVE_CAMOUFLAGE), + LEVEL_UP_MOVE(24, MOVE_SWIFT), + LEVEL_UP_MOVE(28, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(33, MOVE_MINIMIZE), + LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gStarmieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 1, MOVE_RECOVER), + LEVEL_UP_MOVE( 1, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_CONFUSE_RAY), + -1 +}; + +const u16 gMrmimeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRIER), + LEVEL_UP_MOVE( 5, MOVE_CONFUSION), + LEVEL_UP_MOVE( 9, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(13, MOVE_MEDITATE), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(21, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(21, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_ENCORE), + LEVEL_UP_MOVE(29, MOVE_PSYBEAM), + LEVEL_UP_MOVE(33, MOVE_RECYCLE), + LEVEL_UP_MOVE(37, MOVE_TRICK), + LEVEL_UP_MOVE(41, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(45, MOVE_PSYCHIC), + LEVEL_UP_MOVE(49, MOVE_BATON_PASS), + LEVEL_UP_MOVE(53, MOVE_SAFEGUARD), + -1 +}; + +const u16 gScytherLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(11, MOVE_PURSUIT), + LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(21, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + -1 +}; + +const u16 gJynxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_LOVELY_KISS), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 9, MOVE_LOVELY_KISS), + LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(21, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(25, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE(35, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(41, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(51, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(57, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(67, MOVE_BLIZZARD), + -1 +}; + +const u16 gElectabuzzLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(25, MOVE_SWIFT), + LEVEL_UP_MOVE(36, MOVE_SCREECH), + LEVEL_UP_MOVE(47, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(58, MOVE_THUNDER), + -1 +}; + +const u16 gMagmarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(57, MOVE_FIRE_BLAST), + -1 +}; + +const u16 gPinsirLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(19, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(31, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(37, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(43, MOVE_SUBMISSION), + LEVEL_UP_MOVE(49, MOVE_SWORDS_DANCE), + -1 +}; + +const u16 gTaurosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(19, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(26, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_THRASH), + LEVEL_UP_MOVE(53, MOVE_TAKE_DOWN), + -1 +}; + +const u16 gMagikarpLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE(15, MOVE_TACKLE), + LEVEL_UP_MOVE(30, MOVE_FLAIL), + -1 +}; + +const u16 gGyaradosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THRASH), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(30, MOVE_LEER), + LEVEL_UP_MOVE(35, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gLaprasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 7, MOVE_MIST), + LEVEL_UP_MOVE(13, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(19, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(25, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(31, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(55, MOVE_SHEER_COLD), + -1 +}; + +const u16 gDittoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TRANSFORM), + -1 +}; + +const u16 gEeveeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_GROWL), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_BATON_PASS), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + -1 +}; + +const u16 gVaporeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_WATER_GUN), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(42, MOVE_HAZE), + LEVEL_UP_MOVE(47, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gJolteonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(36, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(42, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_MOVE(52, MOVE_THUNDER), + -1 +}; + +const u16 gFlareonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_EMBER), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(42, MOVE_SMOG), + LEVEL_UP_MOVE(47, MOVE_LEER), + LEVEL_UP_MOVE(52, MOVE_FLAMETHROWER), + -1 +}; + +const u16 gPorygonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION), + LEVEL_UP_MOVE( 9, MOVE_AGILITY), + LEVEL_UP_MOVE(12, MOVE_PSYBEAM), + LEVEL_UP_MOVE(20, MOVE_RECOVER), + LEVEL_UP_MOVE(24, MOVE_SHARPEN), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(44, MOVE_RECYCLE), + LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON), + -1 +}; + +const u16 gOmanyteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_LEER), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(43, MOVE_TICKLE), + LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gOmastarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_LEER), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(40, MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE(46, MOVE_TICKLE), + LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(65, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gKabutoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_ABSORB), + LEVEL_UP_MOVE(19, MOVE_LEER), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(43, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(49, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER), + -1 +}; + +const u16 gKabutopsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_ABSORB), + LEVEL_UP_MOVE(19, MOVE_LEER), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(40, MOVE_SLASH), + LEVEL_UP_MOVE(46, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(55, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(65, MOVE_ANCIENT_POWER), + -1 +}; + +const u16 gAerodactylLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 8, MOVE_AGILITY), + LEVEL_UP_MOVE(15, MOVE_BITE), + LEVEL_UP_MOVE(22, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(36, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gSnorlaxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_AMNESIA), + LEVEL_UP_MOVE(10, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(15, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(24, MOVE_YAWN), + LEVEL_UP_MOVE(28, MOVE_REST), + LEVEL_UP_MOVE(28, MOVE_SNORE), + LEVEL_UP_MOVE(33, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(37, MOVE_BLOCK), + LEVEL_UP_MOVE(42, MOVE_COVET), + LEVEL_UP_MOVE(46, MOVE_ROLLOUT), + LEVEL_UP_MOVE(51, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gArticunoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(13, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_MIND_READER), + LEVEL_UP_MOVE(49, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(61, MOVE_REFLECT), + LEVEL_UP_MOVE(73, MOVE_BLIZZARD), + LEVEL_UP_MOVE(85, MOVE_SHEER_COLD), + -1 +}; + +const u16 gZapdosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_DETECT), + LEVEL_UP_MOVE(49, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(61, MOVE_CHARGE), + LEVEL_UP_MOVE(73, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(85, MOVE_THUNDER), + -1 +}; + +const u16 gMoltresLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(61, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(73, MOVE_HEAT_WAVE), + LEVEL_UP_MOVE(85, MOVE_SKY_ATTACK), + -1 +}; + +const u16 gDratiniLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(50, MOVE_OUTRAGE), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gDragonairLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(56, MOVE_OUTRAGE), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gDragoniteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(55, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(61, MOVE_OUTRAGE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gMewtwoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE(11, MOVE_BARRIER), + LEVEL_UP_MOVE(22, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(44, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(55, MOVE_MIST), + LEVEL_UP_MOVE(66, MOVE_PSYCHIC), + LEVEL_UP_MOVE(77, MOVE_AMNESIA), + LEVEL_UP_MOVE(88, MOVE_RECOVER), + LEVEL_UP_MOVE(99, MOVE_SAFEGUARD), + -1 +}; + +const u16 gMewLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE(10, MOVE_TRANSFORM), + LEVEL_UP_MOVE(20, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(30, MOVE_METRONOME), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(50, MOVE_ANCIENT_POWER), + -1 +}; + +const u16 gChikoritaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(22, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(29, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(50, MOVE_SOLAR_BEAM), + -1 +}; + +const u16 gBayleefLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 1, MOVE_REFLECT), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(23, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(39, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM), + -1 +}; + +const u16 gMeganiumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 1, MOVE_REFLECT), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(23, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(51, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(61, MOVE_SOLAR_BEAM), + -1 +}; + +const u16 gCyndaquilLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(27, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(36, MOVE_SWIFT), + LEVEL_UP_MOVE(46, MOVE_FLAMETHROWER), + -1 +}; + +const u16 gQuilavaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(54, MOVE_FLAMETHROWER), + -1 +}; + +const u16 gTyphlosionLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(45, MOVE_SWIFT), + LEVEL_UP_MOVE(60, MOVE_FLAMETHROWER), + -1 +}; + +const u16 gTotodileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(35, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gCroconawLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(28, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gFeraligatrLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(28, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(38, MOVE_SLASH), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gSentretLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(24, MOVE_SLAM), + LEVEL_UP_MOVE(31, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(40, MOVE_REST), + LEVEL_UP_MOVE(49, MOVE_AMNESIA), + -1 +}; + +const u16 gFurretLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(28, MOVE_SLAM), + LEVEL_UP_MOVE(37, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(48, MOVE_REST), + LEVEL_UP_MOVE(59, MOVE_AMNESIA), + -1 +}; + +const u16 gHoothootLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_FORESIGHT), + LEVEL_UP_MOVE(11, MOVE_PECK), + LEVEL_UP_MOVE(16, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(22, MOVE_REFLECT), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(34, MOVE_CONFUSION), + LEVEL_UP_MOVE(48, MOVE_DREAM_EATER), + -1 +}; + +const u16 gNoctowlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 6, MOVE_FORESIGHT), + LEVEL_UP_MOVE(11, MOVE_PECK), + LEVEL_UP_MOVE(16, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_REFLECT), + LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_CONFUSION), + LEVEL_UP_MOVE(57, MOVE_DREAM_EATER), + -1 +}; + +const u16 gLedybaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE(22, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(22, MOVE_REFLECT), + LEVEL_UP_MOVE(22, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(29, MOVE_BATON_PASS), + LEVEL_UP_MOVE(36, MOVE_SWIFT), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gLedianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE(24, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(24, MOVE_REFLECT), + LEVEL_UP_MOVE(24, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(33, MOVE_BATON_PASS), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(51, MOVE_AGILITY), + LEVEL_UP_MOVE(60, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gSpinarakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 6, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(23, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(37, MOVE_SPIDER_WEB), + LEVEL_UP_MOVE(45, MOVE_AGILITY), + LEVEL_UP_MOVE(53, MOVE_PSYCHIC), + -1 +}; + +const u16 gAriadosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 6, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(43, MOVE_SPIDER_WEB), + LEVEL_UP_MOVE(53, MOVE_AGILITY), + LEVEL_UP_MOVE(63, MOVE_PSYCHIC), + -1 +}; + +const u16 gCrobatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_POISON_FANG), + LEVEL_UP_MOVE(56, MOVE_HAZE), + -1 +}; + +const u16 gChinchouLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_SPARK), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(49, MOVE_CHARGE), + -1 +}; + +const u16 gLanturnLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_SPARK), + LEVEL_UP_MOVE(32, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(61, MOVE_CHARGE), + -1 +}; + +const u16 gPichuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + -1 +}; + +const u16 gCleffaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 4, MOVE_ENCORE), + LEVEL_UP_MOVE( 8, MOVE_SING), + LEVEL_UP_MOVE(13, MOVE_SWEET_KISS), + -1 +}; + +const u16 gIgglybuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9, MOVE_POUND), + LEVEL_UP_MOVE(14, MOVE_SWEET_KISS), + -1 +}; + +const u16 gTogepiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_METRONOME), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(16, MOVE_YAWN), + LEVEL_UP_MOVE(21, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(31, MOVE_WISH), + LEVEL_UP_MOVE(36, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gTogeticLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_METRONOME), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(16, MOVE_YAWN), + LEVEL_UP_MOVE(21, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(31, MOVE_WISH), + LEVEL_UP_MOVE(36, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gNatuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_TELEPORT), + LEVEL_UP_MOVE(30, MOVE_WISH), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(40, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(50, MOVE_PSYCHIC), + -1 +}; + +const u16 gXatuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_TELEPORT), + LEVEL_UP_MOVE(35, MOVE_WISH), + LEVEL_UP_MOVE(35, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(65, MOVE_PSYCHIC), + -1 +}; + +const u16 gMareepLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(16, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(23, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + -1 +}; + +const u16 gFlaaffyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(45, MOVE_THUNDER), + -1 +}; + +const u16 gAmpharosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(42, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(57, MOVE_THUNDER), + -1 +}; + +const u16 gBellossomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM), + -1 +}; + +const u16 gMarillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROLLOUT), + LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(28, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(36, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gAzumarillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROLLOUT), + LEVEL_UP_MOVE(24, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(34, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(57, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gSudowoodoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_MIMIC), + LEVEL_UP_MOVE( 9, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_LOW_KICK), + LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(33, MOVE_BLOCK), + LEVEL_UP_MOVE(41, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(49, MOVE_SLAM), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gPolitoedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(35, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(51, MOVE_SWAGGER), + -1 +}; + +const u16 gHoppipLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(20, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(25, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_MEGA_DRAIN), + -1 +}; + +const u16 gSkiploomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(29, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(36, MOVE_MEGA_DRAIN), + -1 +}; + +const u16 gJumpluffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(33, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(44, MOVE_MEGA_DRAIN), + -1 +}; + +const u16 gAipomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(18, MOVE_BATON_PASS), + LEVEL_UP_MOVE(25, MOVE_TICKLE), + LEVEL_UP_MOVE(31, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(38, MOVE_SWIFT), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(50, MOVE_AGILITY), + -1 +}; + +const u16 gSunkernLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(18, MOVE_INGRAIN), + LEVEL_UP_MOVE(25, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(42, MOVE_GIGA_DRAIN), + -1 +}; + +const u16 gSunfloraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(18, MOVE_INGRAIN), + LEVEL_UP_MOVE(25, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(42, MOVE_SOLAR_BEAM), + -1 +}; + +const u16 gYanmaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(19, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(25, MOVE_DETECT), + LEVEL_UP_MOVE(31, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(37, MOVE_UPROAR), + LEVEL_UP_MOVE(43, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(49, MOVE_SCREECH), + -1 +}; + +const u16 gWooperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(11, MOVE_SLAM), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_YAWN), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(51, MOVE_MIST), + LEVEL_UP_MOVE(51, MOVE_HAZE), + -1 +}; + +const u16 gQuagsireLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(11, MOVE_SLAM), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(23, MOVE_AMNESIA), + LEVEL_UP_MOVE(35, MOVE_YAWN), + LEVEL_UP_MOVE(42, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(49, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(61, MOVE_MIST), + LEVEL_UP_MOVE(61, MOVE_HAZE), + -1 +}; + +const u16 gEspeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_SWIFT), + LEVEL_UP_MOVE(36, MOVE_PSYBEAM), + LEVEL_UP_MOVE(42, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(47, MOVE_PSYCHIC), + LEVEL_UP_MOVE(52, MOVE_MORNING_SUN), + -1 +}; + +const u16 gUmbreonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_MOONLIGHT), + -1 +}; + +const u16 gMurkrowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_PURSUIT), + LEVEL_UP_MOVE(22, MOVE_HAZE), + LEVEL_UP_MOVE(27, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(35, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(40, MOVE_TAUNT), + LEVEL_UP_MOVE(48, MOVE_MEAN_LOOK), + -1 +}; + +const u16 gSlowkingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(48, MOVE_PSYCHIC), + -1 +}; + +const u16 gMisdreavusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 6, MOVE_SPITE), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(23, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(30, MOVE_PSYBEAM), + LEVEL_UP_MOVE(37, MOVE_PAIN_SPLIT), + LEVEL_UP_MOVE(45, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(53, MOVE_GRUDGE), + -1 +}; + +const u16 gUnownLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HIDDEN_POWER), + -1 +}; + +const u16 gWobbuffetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_COUNTER), + LEVEL_UP_MOVE( 1, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), + -1 +}; + +const u16 gGirafarigLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(13, MOVE_CONFUSION), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_BATON_PASS), + LEVEL_UP_MOVE(43, MOVE_PSYBEAM), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + -1 +}; + +const u16 gPinecoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 8, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(29, MOVE_BIDE), + LEVEL_UP_MOVE(36, MOVE_EXPLOSION), + LEVEL_UP_MOVE(43, MOVE_SPIKES), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gForretressLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 1, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 8, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(29, MOVE_BIDE), + LEVEL_UP_MOVE(39, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_SPIKES), + LEVEL_UP_MOVE(59, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gDunsparceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_YAWN), + LEVEL_UP_MOVE(14, MOVE_GLARE), + LEVEL_UP_MOVE(21, MOVE_SPITE), + LEVEL_UP_MOVE(24, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_ENDEAVOR), + -1 +}; + +const u16 gGligarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HARDEN), + LEVEL_UP_MOVE(20, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(28, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(44, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_GUILLOTINE), + -1 +}; + +const u16 gSteelixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 9, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(21, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gSnubbullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_LICK), + LEVEL_UP_MOVE(26, MOVE_ROAR), + LEVEL_UP_MOVE(34, MOVE_RAGE), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(53, MOVE_CRUNCH), + -1 +}; + +const u16 gGranbullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_LICK), + LEVEL_UP_MOVE(28, MOVE_ROAR), + LEVEL_UP_MOVE(38, MOVE_RAGE), + LEVEL_UP_MOVE(49, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + -1 +}; + +const u16 gQwilfishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPIKES), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(10, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_MINIMIZE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(28, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gScizorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(11, MOVE_PURSUIT), + LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(21, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + -1 +}; + +const u16 gShuckleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 9, MOVE_WRAP), + LEVEL_UP_MOVE(14, MOVE_ENCORE), + LEVEL_UP_MOVE(23, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_BIDE), + LEVEL_UP_MOVE(37, MOVE_REST), + -1 +}; + +const u16 gHeracrossLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(11, MOVE_ENDURE), + LEVEL_UP_MOVE(17, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(23, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(30, MOVE_COUNTER), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(45, MOVE_REVERSAL), + LEVEL_UP_MOVE(53, MOVE_MEGAHORN), + -1 +}; + +const u16 gSneaselLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_TAUNT), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_ICY_WIND), + LEVEL_UP_MOVE(50, MOVE_SLASH), + LEVEL_UP_MOVE(57, MOVE_BEAT_UP), + LEVEL_UP_MOVE(64, MOVE_METAL_CLAW), + -1 +}; + +const u16 gTeddiursaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(49, MOVE_THRASH), + -1 +}; + +const u16 gUrsaringLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(49, MOVE_THRASH), + -1 +}; + +const u16 gSlugmaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 8, MOVE_EMBER), + LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(22, MOVE_HARDEN), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(43, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(50, MOVE_BODY_SLAM), + -1 +}; + +const u16 gMagcargoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 8, MOVE_EMBER), + LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(22, MOVE_HARDEN), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(48, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(60, MOVE_BODY_SLAM), + -1 +}; + +const u16 gSwinubLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(19, MOVE_ENDURE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_MIST), + LEVEL_UP_MOVE(46, MOVE_BLIZZARD), + LEVEL_UP_MOVE(55, MOVE_AMNESIA), + -1 +}; + +const u16 gPiloswineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_ENDURE), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(19, MOVE_ENDURE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(42, MOVE_MIST), + LEVEL_UP_MOVE(56, MOVE_BLIZZARD), + LEVEL_UP_MOVE(70, MOVE_AMNESIA), + -1 +}; + +const u16 gCorsolaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_HARDEN), + LEVEL_UP_MOVE(12, MOVE_BUBBLE), + LEVEL_UP_MOVE(17, MOVE_RECOVER), + LEVEL_UP_MOVE(17, MOVE_REFRESH), + LEVEL_UP_MOVE(23, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(28, MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(39, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(45, MOVE_ANCIENT_POWER), + -1 +}; + +const u16 gRemoraidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(11, MOVE_LOCK_ON), + LEVEL_UP_MOVE(22, MOVE_PSYBEAM), + LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(33, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(44, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gOctilleryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(22, MOVE_PSYBEAM), + LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(25, MOVE_OCTAZOOKA), + LEVEL_UP_MOVE(38, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(54, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(70, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gDelibirdLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PRESENT), + -1 +}; + +const u16 gMantineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(22, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(43, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY), + -1 +}; + +const u16 gSkarmoryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE(10, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWIFT), + LEVEL_UP_MOVE(16, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(29, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(32, MOVE_STEEL_WING), + LEVEL_UP_MOVE(42, MOVE_SPIKES), + LEVEL_UP_MOVE(45, MOVE_METAL_SOUND), + -1 +}; + +const u16 gHoundourLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_BITE), + LEVEL_UP_MOVE(31, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + -1 +}; + +const u16 gHoundoomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(27, MOVE_BITE), + LEVEL_UP_MOVE(35, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(43, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(59, MOVE_CRUNCH), + -1 +}; + +const u16 gKingdraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE), + -1 +}; + +const u16 gPhanpyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(17, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_ENDURE), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gDonphanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(17, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(33, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(49, MOVE_EARTHQUAKE), + -1 +}; + +const u16 gPorygon2LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION), + LEVEL_UP_MOVE( 9, MOVE_AGILITY), + LEVEL_UP_MOVE(12, MOVE_PSYBEAM), + LEVEL_UP_MOVE(20, MOVE_RECOVER), + LEVEL_UP_MOVE(24, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(44, MOVE_RECYCLE), + LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON), + -1 +}; + +const u16 gStantlerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(43, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(49, MOVE_CALM_MIND), + -1 +}; + +const u16 gSmeargleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SKETCH), + LEVEL_UP_MOVE(11, MOVE_SKETCH), + LEVEL_UP_MOVE(21, MOVE_SKETCH), + LEVEL_UP_MOVE(31, MOVE_SKETCH), + LEVEL_UP_MOVE(41, MOVE_SKETCH), + LEVEL_UP_MOVE(51, MOVE_SKETCH), + LEVEL_UP_MOVE(61, MOVE_SKETCH), + LEVEL_UP_MOVE(71, MOVE_SKETCH), + LEVEL_UP_MOVE(81, MOVE_SKETCH), + LEVEL_UP_MOVE(91, MOVE_SKETCH), + -1 +}; + +const u16 gTyrogueLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gHitmontopLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_ROLLING_KICK), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_PURSUIT), + LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_TRIPLE_KICK), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_COUNTER), + LEVEL_UP_MOVE(37, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_DETECT), + LEVEL_UP_MOVE(49, MOVE_ENDEAVOR), + -1 +}; + +const u16 gSmoochumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 9, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(21, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_SING), + LEVEL_UP_MOVE(33, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(37, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(45, MOVE_PSYCHIC), + LEVEL_UP_MOVE(49, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(57, MOVE_BLIZZARD), + -1 +}; + +const u16 gElekidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(25, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_SCREECH), + LEVEL_UP_MOVE(41, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(49, MOVE_THUNDER), + -1 +}; + +const u16 gMagbyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(43, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(49, MOVE_FIRE_BLAST), + -1 +}; + +const u16 gMiltankLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(13, MOVE_STOMP), + LEVEL_UP_MOVE(19, MOVE_MILK_DRINK), + LEVEL_UP_MOVE(26, MOVE_BIDE), + LEVEL_UP_MOVE(34, MOVE_ROLLOUT), + LEVEL_UP_MOVE(43, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(53, MOVE_HEAL_BELL), + -1 +}; + +const u16 gBlisseyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_REFRESH), + LEVEL_UP_MOVE(10, MOVE_SOFT_BOILED), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(18, MOVE_MINIMIZE), + LEVEL_UP_MOVE(23, MOVE_SING), + LEVEL_UP_MOVE(28, MOVE_EGG_BOMB), + LEVEL_UP_MOVE(33, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(40, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gRaikouLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(41, MOVE_SPARK), + LEVEL_UP_MOVE(51, MOVE_REFLECT), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + LEVEL_UP_MOVE(71, MOVE_THUNDER), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + -1 +}; + +const u16 gEnteiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(31, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(41, MOVE_STOMP), + LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(61, MOVE_SWAGGER), + LEVEL_UP_MOVE(71, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + -1 +}; + +const u16 gSuicuneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(21, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(31, MOVE_GUST), + LEVEL_UP_MOVE(41, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(51, MOVE_MIST), + LEVEL_UP_MOVE(61, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(71, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + -1 +}; + +const u16 gLarvitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(36, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(43, MOVE_CRUNCH), + LEVEL_UP_MOVE(50, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gPupitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SANDSTORM), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(38, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(56, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gTyranitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SANDSTORM), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(38, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(61, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gLugiaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(11, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(22, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_RECOVER), + LEVEL_UP_MOVE(44, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(55, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(66, MOVE_SWIFT), + LEVEL_UP_MOVE(77, MOVE_AEROBLAST), + LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT), + -1 +}; + +const u16 gHoOhLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(11, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(22, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_RECOVER), + LEVEL_UP_MOVE(44, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(55, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(66, MOVE_SWIFT), + LEVEL_UP_MOVE(77, MOVE_SACRED_FIRE), + LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT), + -1 +}; + +const u16 gCelebiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_RECOVER), + LEVEL_UP_MOVE( 1, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(10, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_PERISH_SONG), + -1 +}; + +const u16 gSpecies252LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies253LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies254LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies255LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies256LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies257LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies258LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies259LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies260LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies261LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies262LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies263LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies264LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies265LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies266LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies267LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies268LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies269LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies270LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies271LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies272LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies273LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies274LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies275LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gSpecies276LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + -1 +}; + +const u16 gTreeckoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PURSUIT), + LEVEL_UP_MOVE(21, MOVE_SCREECH), + LEVEL_UP_MOVE(26, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_SLAM), + LEVEL_UP_MOVE(41, MOVE_DETECT), + LEVEL_UP_MOVE(46, MOVE_GIGA_DRAIN), + -1 +}; + +const u16 gGrovyleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(17, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_SLAM), + LEVEL_UP_MOVE(47, MOVE_DETECT), + LEVEL_UP_MOVE(53, MOVE_FALSE_SWIPE), + -1 +}; + +const u16 gSceptileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(17, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_SLAM), + LEVEL_UP_MOVE(51, MOVE_DETECT), + LEVEL_UP_MOVE(59, MOVE_FALSE_SWIPE), + -1 +}; + +const u16 gTorchicLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(10, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_PECK), + LEVEL_UP_MOVE(19, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(28, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(34, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), + -1 +}; + +const u16 gCombuskenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_PECK), + LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(28, MOVE_BULK_UP), + LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(39, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(50, MOVE_SKY_UPPERCUT), + -1 +}; + +const u16 gBlazikenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_PECK), + LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(28, MOVE_BULK_UP), + LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(36, MOVE_BLAZE_KICK), + LEVEL_UP_MOVE(42, MOVE_SLASH), + LEVEL_UP_MOVE(49, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(59, MOVE_SKY_UPPERCUT), + -1 +}; + +const u16 gMudkipLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(19, MOVE_FORESIGHT), + LEVEL_UP_MOVE(24, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(42, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(46, MOVE_ENDEAVOR), + -1 +}; + +const u16 gMarshtompLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(20, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(42, MOVE_PROTECT), + LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_ENDEAVOR), + -1 +}; + +const u16 gSwampertLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(20, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(39, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(46, MOVE_PROTECT), + LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(61, MOVE_ENDEAVOR), + -1 +}; + +const u16 gPoochyenaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_HOWL), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_SWAGGER), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_TAUNT), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_THIEF), + -1 +}; + +const u16 gMightyenaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 5, MOVE_HOWL), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(22, MOVE_ROAR), + LEVEL_UP_MOVE(27, MOVE_SWAGGER), + LEVEL_UP_MOVE(32, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(42, MOVE_TAUNT), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(52, MOVE_THIEF), + -1 +}; + +const u16 gZigzagoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(21, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(25, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(29, MOVE_COVET), + LEVEL_UP_MOVE(33, MOVE_FLAIL), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_BELLY_DRUM), + -1 +}; + +const u16 gLinooneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(23, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(35, MOVE_COVET), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(47, MOVE_REST), + LEVEL_UP_MOVE(53, MOVE_BELLY_DRUM), + -1 +}; + +const u16 gWurmpleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 5, MOVE_POISON_STING), + -1 +}; + +const u16 gSilcoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + -1 +}; + +const u16 gBeautiflyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE(10, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_GUST), + LEVEL_UP_MOVE(17, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(20, MOVE_MORNING_SUN), + LEVEL_UP_MOVE(24, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_ATTRACT), + LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(38, MOVE_GIGA_DRAIN), + -1 +}; + +const u16 gCascoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + -1 +}; + +const u16 gDustoxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_GUST), + LEVEL_UP_MOVE(17, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(24, MOVE_PSYBEAM), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(38, MOVE_TOXIC), + -1 +}; + +const u16 gLotadLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 3, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(43, MOVE_MEGA_DRAIN), + -1 +}; + +const u16 gLombreLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 3, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(31, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(37, MOVE_THIEF), + LEVEL_UP_MOVE(43, MOVE_UPROAR), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gLudicoloLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_NATURE_POWER), + -1 +}; + +const u16 gSeedotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(21, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(43, MOVE_EXPLOSION), + -1 +}; + +const u16 gNuzleafLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_TORMENT), + LEVEL_UP_MOVE(31, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(37, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(49, MOVE_EXTRASENSORY), + -1 +}; + +const u16 gShiftryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_NATURE_POWER), + -1 +}; + +const u16 gNincadaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(25, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(31, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(38, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(45, MOVE_DIG), + -1 +}; + +const u16 gNinjaskLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(20, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(20, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(20, MOVE_SCREECH), + LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_BATON_PASS), + -1 +}; + +const u16 gShedinjaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(38, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(45, MOVE_GRUDGE), + -1 +}; + +const u16 gTaillowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(26, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(34, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + -1 +}; + +const u16 gSwellowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(28, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(38, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(49, MOVE_AGILITY), + -1 +}; + +const u16 gShroomishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 4, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(22, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(36, MOVE_GROWTH), + LEVEL_UP_MOVE(45, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(54, MOVE_SPORE), + -1 +}; + +const u16 gBreloomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 4, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(22, MOVE_HEADBUTT), + LEVEL_UP_MOVE(23, MOVE_MACH_PUNCH), + LEVEL_UP_MOVE(28, MOVE_COUNTER), + LEVEL_UP_MOVE(36, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(45, MOVE_MIND_READER), + LEVEL_UP_MOVE(54, MOVE_DYNAMIC_PUNCH), + -1 +}; + +const u16 gSpindaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(12, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(27, MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE(34, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE(38, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(49, MOVE_FLAIL), + LEVEL_UP_MOVE(56, MOVE_THRASH), + -1 +}; + +const u16 gWingullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(43, MOVE_PURSUIT), + LEVEL_UP_MOVE(55, MOVE_AGILITY), + -1 +}; + +const u16 gPelipperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 3, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_STOCKPILE), + LEVEL_UP_MOVE(33, MOVE_SWALLOW), + LEVEL_UP_MOVE(47, MOVE_SPIT_UP), + LEVEL_UP_MOVE(61, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gSurskitLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_HAZE), + -1 +}; + +const u16 gMasquerainLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(26, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(40, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(47, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(53, MOVE_WHIRLWIND), + -1 +}; + +const u16 gWailmerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(14, MOVE_ROLLOUT), + LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(23, MOVE_ASTONISH), + LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(32, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(46, MOVE_AMNESIA), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gWailordLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(14, MOVE_ROLLOUT), + LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(23, MOVE_ASTONISH), + LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(32, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(44, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(52, MOVE_AMNESIA), + LEVEL_UP_MOVE(59, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gSkittyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 3, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_ATTRACT), + LEVEL_UP_MOVE(13, MOVE_SING), + LEVEL_UP_MOVE(15, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(19, MOVE_ASSIST), + LEVEL_UP_MOVE(25, MOVE_CHARM), + LEVEL_UP_MOVE(27, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(37, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(39, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gDelcattyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ATTRACT), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + -1 +}; + +const u16 gKecleonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THIEF), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_BIND), + LEVEL_UP_MOVE( 7, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_PSYBEAM), + LEVEL_UP_MOVE(24, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(40, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER), + -1 +}; + +const u16 gBaltoyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(11, MOVE_PSYBEAM), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(45, MOVE_EXPLOSION), + -1 +}; + +const u16 gClaydolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(11, MOVE_PSYBEAM), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(36, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(55, MOVE_EXPLOSION), + -1 +}; + +const u16 gNosepassLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_BLOCK), + LEVEL_UP_MOVE(22, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(28, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(46, MOVE_LOCK_ON), + -1 +}; + +const u16 gTorkoalLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 4, MOVE_SMOG), + LEVEL_UP_MOVE( 7, MOVE_CURSE), + LEVEL_UP_MOVE(14, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(17, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(27, MOVE_PROTECT), + LEVEL_UP_MOVE(30, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(33, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(40, MOVE_AMNESIA), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + LEVEL_UP_MOVE(46, MOVE_HEAT_WAVE), + -1 +}; + +const u16 gSableyeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(17, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(21, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_DETECT), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(33, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(37, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(41, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK), + -1 +}; + +const u16 gBarboachLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(11, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(26, MOVE_REST), + LEVEL_UP_MOVE(26, MOVE_SNORE), + LEVEL_UP_MOVE(31, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(41, MOVE_FISSURE), + -1 +}; + +const u16 gWhiscashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TICKLE), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(11, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(26, MOVE_REST), + LEVEL_UP_MOVE(26, MOVE_SNORE), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(46, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(56, MOVE_FISSURE), + -1 +}; + +const u16 gLuvdiscLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_CHARM), + LEVEL_UP_MOVE(12, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_AGILITY), + LEVEL_UP_MOVE(24, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(28, MOVE_ATTRACT), + LEVEL_UP_MOVE(36, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(40, MOVE_FLAIL), + LEVEL_UP_MOVE(48, MOVE_SAFEGUARD), + -1 +}; + +const u16 gCorphishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(23, MOVE_PROTECT), + LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(32, MOVE_TAUNT), + LEVEL_UP_MOVE(35, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(38, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(44, MOVE_GUILLOTINE), + -1 +}; + +const u16 gCrawdauntLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(23, MOVE_PROTECT), + LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(34, MOVE_TAUNT), + LEVEL_UP_MOVE(39, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(44, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(52, MOVE_GUILLOTINE), + -1 +}; + +const u16 gFeebasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE(15, MOVE_TACKLE), + LEVEL_UP_MOVE(30, MOVE_FLAIL), + -1 +}; + +const u16 gMiloticLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 5, MOVE_WRAP), + LEVEL_UP_MOVE(10, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(15, MOVE_REFRESH), + LEVEL_UP_MOVE(20, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(25, MOVE_TWISTER), + LEVEL_UP_MOVE(30, MOVE_RECOVER), + LEVEL_UP_MOVE(35, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(45, MOVE_ATTRACT), + LEVEL_UP_MOVE(50, MOVE_SAFEGUARD), + -1 +}; + +const u16 gCarvanhaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(16, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(22, MOVE_CRUNCH), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_SWAGGER), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + -1 +}; + +const u16 gSharpedoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(16, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(22, MOVE_CRUNCH), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(33, MOVE_SLASH), + LEVEL_UP_MOVE(38, MOVE_TAUNT), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(48, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(53, MOVE_AGILITY), + -1 +}; + +const u16 gTrapinchLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(41, MOVE_DIG), + LEVEL_UP_MOVE(49, MOVE_SANDSTORM), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gVibravaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(41, MOVE_SCREECH), + LEVEL_UP_MOVE(49, MOVE_SANDSTORM), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gFlygonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(41, MOVE_SCREECH), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gMakuhitaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(10, MOVE_ARM_THRUST), + LEVEL_UP_MOVE(13, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(22, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(28, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(31, MOVE_SMELLING_SALT), + LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(40, MOVE_ENDURE), + LEVEL_UP_MOVE(46, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + -1 +}; + +const u16 gHariyamaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_ARM_THRUST), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(10, MOVE_ARM_THRUST), + LEVEL_UP_MOVE(13, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(22, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(29, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(33, MOVE_SMELLING_SALT), + LEVEL_UP_MOVE(40, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(44, MOVE_ENDURE), + LEVEL_UP_MOVE(51, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(55, MOVE_REVERSAL), + -1 +}; + +const u16 gElectrikeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_HOWL), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_SPARK), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(28, MOVE_ROAR), + LEVEL_UP_MOVE(33, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_THUNDER), + LEVEL_UP_MOVE(41, MOVE_CHARGE), + -1 +}; + +const u16 gManectricLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_HOWL), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_SPARK), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(31, MOVE_ROAR), + LEVEL_UP_MOVE(39, MOVE_BITE), + LEVEL_UP_MOVE(45, MOVE_THUNDER), + LEVEL_UP_MOVE(53, MOVE_CHARGE), + -1 +}; + +const u16 gNumelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_AMNESIA), + LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gCameruptLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_AMNESIA), + LEVEL_UP_MOVE(33, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(37, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(45, MOVE_ERUPTION), + LEVEL_UP_MOVE(55, MOVE_FISSURE), + -1 +}; + +const u16 gSphealLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SNORE), + LEVEL_UP_MOVE(43, MOVE_BLIZZARD), + LEVEL_UP_MOVE(49, MOVE_SHEER_COLD), + -1 +}; + +const u16 gSealeoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(39, MOVE_REST), + LEVEL_UP_MOVE(39, MOVE_SNORE), + LEVEL_UP_MOVE(47, MOVE_BLIZZARD), + LEVEL_UP_MOVE(55, MOVE_SHEER_COLD), + -1 +}; + +const u16 gWalreinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(39, MOVE_REST), + LEVEL_UP_MOVE(39, MOVE_SNORE), + LEVEL_UP_MOVE(50, MOVE_BLIZZARD), + LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), + -1 +}; + +const u16 gCacneaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(25, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(33, MOVE_SPIKES), + LEVEL_UP_MOVE(37, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(41, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(45, MOVE_SANDSTORM), + -1 +}; + +const u16 gCacturneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(25, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(35, MOVE_SPIKES), + LEVEL_UP_MOVE(41, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(47, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + -1 +}; + +const u16 gSnoruntLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(37, MOVE_HAIL), + LEVEL_UP_MOVE(43, MOVE_BLIZZARD), + -1 +}; + +const u16 gGlalieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 7, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(42, MOVE_HAIL), + LEVEL_UP_MOVE(53, MOVE_BLIZZARD), + LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), + -1 +}; + +const u16 gLunatoneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_PSYWAVE), + LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(49, MOVE_EXPLOSION), + -1 +}; + +const u16 gSolrockLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(19, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(25, MOVE_PSYWAVE), + LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(49, MOVE_EXPLOSION), + -1 +}; + +const u16 gAzurillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 3, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_BUBBLE), + LEVEL_UP_MOVE(15, MOVE_SLAM), + LEVEL_UP_MOVE(21, MOVE_WATER_GUN), + -1 +}; + +const u16 gSpoinkLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), + LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(34, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SNORE), + LEVEL_UP_MOVE(43, MOVE_BOUNCE), + -1 +}; + +const u16 gGrumpigLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_PSYBEAM), + LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), + LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(37, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(55, MOVE_BOUNCE), + -1 +}; + +const u16 gPlusleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(31, MOVE_CHARGE), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + -1 +}; + +const u16 gMinunLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_CHARM), + LEVEL_UP_MOVE(31, MOVE_CHARGE), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + -1 +}; + +const u16 gMawileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(21, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(26, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_BATON_PASS), + LEVEL_UP_MOVE(36, MOVE_CRUNCH), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(46, MOVE_STOCKPILE), + LEVEL_UP_MOVE(46, MOVE_SWALLOW), + LEVEL_UP_MOVE(46, MOVE_SPIT_UP), + -1 +}; + +const u16 gMedititeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 4, MOVE_MEDITATE), + LEVEL_UP_MOVE( 9, MOVE_CONFUSION), + LEVEL_UP_MOVE(12, MOVE_DETECT), + LEVEL_UP_MOVE(18, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(22, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_CALM_MIND), + LEVEL_UP_MOVE(32, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(38, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(42, MOVE_REVERSAL), + LEVEL_UP_MOVE(48, MOVE_RECOVER), + -1 +}; + +const u16 gMedichamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 1, MOVE_MEDITATE), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DETECT), + LEVEL_UP_MOVE( 4, MOVE_MEDITATE), + LEVEL_UP_MOVE( 9, MOVE_CONFUSION), + LEVEL_UP_MOVE(12, MOVE_DETECT), + LEVEL_UP_MOVE(18, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(22, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_CALM_MIND), + LEVEL_UP_MOVE(32, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(40, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(46, MOVE_REVERSAL), + LEVEL_UP_MOVE(54, MOVE_RECOVER), + -1 +}; + +const u16 gSwabluLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_SING), + LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(41, MOVE_REFRESH), + LEVEL_UP_MOVE(48, MOVE_PERISH_SONG), + -1 +}; + +const u16 gAltariaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 8, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_SING), + LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(40, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(45, MOVE_REFRESH), + LEVEL_UP_MOVE(54, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(59, MOVE_SKY_ATTACK), + -1 +}; + +const u16 gWynautLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE(15, MOVE_COUNTER), + LEVEL_UP_MOVE(15, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(15, MOVE_DESTINY_BOND), + -1 +}; + +const u16 gDuskullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 5, MOVE_DISABLE), + LEVEL_UP_MOVE(12, MOVE_FORESIGHT), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_CURSE), + LEVEL_UP_MOVE(38, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_FUTURE_SIGHT), + -1 +}; + +const u16 gDusclopsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 5, MOVE_DISABLE), + LEVEL_UP_MOVE(12, MOVE_FORESIGHT), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_CURSE), + LEVEL_UP_MOVE(37, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(41, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(51, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(58, MOVE_FUTURE_SIGHT), + -1 +}; + +const u16 gRoseliaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 5, MOVE_GROWTH), + LEVEL_UP_MOVE( 9, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(21, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(25, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(29, MOVE_GRASS_WHISTLE), + LEVEL_UP_MOVE(33, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(37, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(41, MOVE_INGRAIN), + LEVEL_UP_MOVE(45, MOVE_TOXIC), + LEVEL_UP_MOVE(49, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(53, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE(57, MOVE_SYNTHESIS), + -1 +}; + +const u16 gSlakothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + -1 +}; + +const u16 gVigorothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_UPROAR), + LEVEL_UP_MOVE(19, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(25, MOVE_ENDURE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FOCUS_PUNCH), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + -1 +}; + +const u16 gSlakingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(36, MOVE_SWAGGER), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + -1 +}; + +const u16 gGulpinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 6, MOVE_YAWN), + LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), + LEVEL_UP_MOVE(14, MOVE_SLUDGE), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(23, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_TOXIC), + LEVEL_UP_MOVE(34, MOVE_STOCKPILE), + LEVEL_UP_MOVE(34, MOVE_SPIT_UP), + LEVEL_UP_MOVE(34, MOVE_SWALLOW), + LEVEL_UP_MOVE(39, MOVE_SLUDGE_BOMB), + -1 +}; + +const u16 gSwalotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_SLUDGE), + LEVEL_UP_MOVE( 6, MOVE_YAWN), + LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), + LEVEL_UP_MOVE(14, MOVE_SLUDGE), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(23, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(31, MOVE_TOXIC), + LEVEL_UP_MOVE(40, MOVE_STOCKPILE), + LEVEL_UP_MOVE(40, MOVE_SPIT_UP), + LEVEL_UP_MOVE(40, MOVE_SWALLOW), + LEVEL_UP_MOVE(48, MOVE_SLUDGE_BOMB), + -1 +}; + +const u16 gTropiusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(17, MOVE_STOMP), + LEVEL_UP_MOVE(21, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(37, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(41, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(47, MOVE_SYNTHESIS), + -1 +}; + +const u16 gWhismurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(21, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(25, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_SCREECH), + LEVEL_UP_MOVE(35, MOVE_ROAR), + LEVEL_UP_MOVE(41, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(45, MOVE_HYPER_VOICE), + -1 +}; + +const u16 gLoudredLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_STOMP), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(43, MOVE_ROAR), + LEVEL_UP_MOVE(51, MOVE_REST), + LEVEL_UP_MOVE(51, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(57, MOVE_HYPER_VOICE), + -1 +}; + +const u16 gExploudLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_STOMP), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(40, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(45, MOVE_ROAR), + LEVEL_UP_MOVE(55, MOVE_REST), + LEVEL_UP_MOVE(55, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(63, MOVE_HYPER_VOICE), + -1 +}; + +const u16 gClamperlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CLAMP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), + -1 +}; + +const u16 gHuntailLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(36, MOVE_CRUNCH), + LEVEL_UP_MOVE(43, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gGorebyssLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 8, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_AGILITY), + LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gAbsolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_TAUNT), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(26, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(31, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(41, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(46, MOVE_PERISH_SONG), + -1 +}; + +const u16 gShuppetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(44, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(49, MOVE_SNATCH), + LEVEL_UP_MOVE(56, MOVE_GRUDGE), + -1 +}; + +const u16 gBanetteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(39, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(48, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(55, MOVE_SNATCH), + LEVEL_UP_MOVE(64, MOVE_GRUDGE), + -1 +}; + +const u16 gSeviperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_POISON_TAIL), + LEVEL_UP_MOVE(19, MOVE_SCREECH), + LEVEL_UP_MOVE(25, MOVE_GLARE), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_POISON_FANG), + LEVEL_UP_MOVE(37, MOVE_SWAGGER), + LEVEL_UP_MOVE(43, MOVE_HAZE), + -1 +}; + +const u16 gZangooseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(10, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(13, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(19, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(37, MOVE_TAUNT), + LEVEL_UP_MOVE(46, MOVE_DETECT), + LEVEL_UP_MOVE(55, MOVE_FALSE_SWIPE), + -1 +}; + +const u16 gRelicanthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(22, MOVE_YAWN), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(36, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(64, MOVE_HYDRO_PUMP), + -1 +}; + +const u16 gAronLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(34, MOVE_PROTECT), + LEVEL_UP_MOVE(39, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(44, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gLaironLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(45, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gAggronLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(50, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(63, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gCastformLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_EMBER), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(20, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(20, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(20, MOVE_HAIL), + LEVEL_UP_MOVE(30, MOVE_WEATHER_BALL), + -1 +}; + +const u16 gVolbeatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 9, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TAIL_GLOW), + LEVEL_UP_MOVE(25, MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE(29, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gIllumiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 9, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(21, MOVE_WISH), + LEVEL_UP_MOVE(25, MOVE_ENCORE), + LEVEL_UP_MOVE(29, MOVE_FLATTER), + LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(37, MOVE_COVET), + -1 +}; + +const u16 gLileepLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), + LEVEL_UP_MOVE(15, MOVE_ACID), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(50, MOVE_STOCKPILE), + LEVEL_UP_MOVE(50, MOVE_SPIT_UP), + LEVEL_UP_MOVE(50, MOVE_SWALLOW), + -1 +}; + +const u16 gCradilyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_ACID), + LEVEL_UP_MOVE( 1, MOVE_INGRAIN), + LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), + LEVEL_UP_MOVE(15, MOVE_ACID), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(48, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(60, MOVE_STOCKPILE), + LEVEL_UP_MOVE(60, MOVE_SPIT_UP), + LEVEL_UP_MOVE(60, MOVE_SWALLOW), + -1 +}; + +const u16 gAnorithLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(43, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(49, MOVE_SLASH), + LEVEL_UP_MOVE(55, MOVE_ROCK_BLAST), + -1 +}; + +const u16 gArmaldoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(55, MOVE_SLASH), + LEVEL_UP_MOVE(64, MOVE_ROCK_BLAST), + -1 +}; + +const u16 gRaltsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(31, MOVE_IMPRISON), + LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(41, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(46, MOVE_DREAM_EATER), + -1 +}; + +const u16 gKirliaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_IMPRISON), + LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(47, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(54, MOVE_DREAM_EATER), + -1 +}; + +const u16 gGardevoirLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_IMPRISON), + LEVEL_UP_MOVE(42, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(51, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(60, MOVE_DREAM_EATER), + -1 +}; + +const u16 gBagonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(33, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(37, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(49, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gShelgonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(30, MOVE_PROTECT), + LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(47, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(56, MOVE_CRUNCH), + LEVEL_UP_MOVE(69, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(78, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gSalamenceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(30, MOVE_PROTECT), + LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(47, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(50, MOVE_FLY), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + LEVEL_UP_MOVE(79, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(93, MOVE_DOUBLE_EDGE), + -1 +}; + +const u16 gBeldumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + -1 +}; + +const u16 gMetangLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(26, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(32, MOVE_PURSUIT), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(50, MOVE_METEOR_MASH), + LEVEL_UP_MOVE(56, MOVE_AGILITY), + LEVEL_UP_MOVE(62, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gMetagrossLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(26, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(32, MOVE_PURSUIT), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(55, MOVE_METEOR_MASH), + LEVEL_UP_MOVE(66, MOVE_AGILITY), + LEVEL_UP_MOVE(77, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gRegirockLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gRegiceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_ICY_WIND), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_AMNESIA), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gRegisteelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(41, MOVE_AMNESIA), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gKyogreLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(30, MOVE_CALM_MIND), + LEVEL_UP_MOVE(35, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(65, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(75, MOVE_WATER_SPOUT), + -1 +}; + +const u16 gGroudonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_SLASH), + LEVEL_UP_MOVE(30, MOVE_BULK_UP), + LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(45, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_FISSURE), + LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(75, MOVE_ERUPTION), + -1 +}; + +const u16 gRayquazaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(30, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(35, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_FLY), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_EXTREME_SPEED), + LEVEL_UP_MOVE(65, MOVE_OUTRAGE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gLatiasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 5, MOVE_WISH), + LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(25, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(30, MOVE_REFRESH), + LEVEL_UP_MOVE(35, MOVE_MIST_BALL), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(45, MOVE_RECOVER), + LEVEL_UP_MOVE(50, MOVE_CHARM), + -1 +}; + +const u16 gLatiosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 5, MOVE_MEMENTO), + LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(30, MOVE_REFRESH), + LEVEL_UP_MOVE(35, MOVE_LUSTER_PURGE), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(45, MOVE_RECOVER), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + -1 +}; + +const u16 gJirachiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WISH), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 5, MOVE_REST), + LEVEL_UP_MOVE(10, MOVE_SWIFT), + LEVEL_UP_MOVE(15, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(20, MOVE_PSYCHIC), + LEVEL_UP_MOVE(25, MOVE_REFRESH), + LEVEL_UP_MOVE(30, MOVE_REST), + LEVEL_UP_MOVE(35, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(45, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(50, MOVE_DOOM_DESIRE), + -1 +}; + +const u16 gDeoxysLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 5, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(10, MOVE_TELEPORT), + LEVEL_UP_MOVE(15, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(20, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_PSYCHIC), + LEVEL_UP_MOVE(30, MOVE_SNATCH), + LEVEL_UP_MOVE(35, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(40, MOVE_RECOVER), + LEVEL_UP_MOVE(45, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM), + -1 +}; + +const u16 gChimechoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_CONFUSION), + LEVEL_UP_MOVE(17, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_UPROAR), + LEVEL_UP_MOVE(25, MOVE_YAWN), + LEVEL_UP_MOVE(30, MOVE_PSYWAVE), + LEVEL_UP_MOVE(33, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(38, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(41, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(46, MOVE_PSYCHIC), + -1 +}; -- cgit v1.2.3 From 958c7afbd295001343b32686558c5eba4918d689 Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 15:55:00 -0400 Subject: Convert evolution table to c objects --- data/evolution_table.inc | 1420 ---------------------------------------------- data/pokemon.s | 3 - src/pokemon_data.c | 602 +++++++++++++++++++- 3 files changed, 600 insertions(+), 1425 deletions(-) delete mode 100644 data/evolution_table.inc diff --git a/data/evolution_table.inc b/data/evolution_table.inc deleted file mode 100644 index 8234ac7a2..000000000 --- a/data/evolution_table.inc +++ /dev/null @@ -1,1420 +0,0 @@ - .align 2 -gEvolutionTable:: @ 8203B68 -@ ?????????? - empty_evo_entries 5 - -@ Bulbasaur - evo_entry EVO_LEVEL, 16, SPECIES_IVYSAUR - empty_evo_entries 4 - -@ Ivysaur - evo_entry EVO_LEVEL, 32, SPECIES_VENUSAUR - empty_evo_entries 4 - -@ Venusaur - empty_evo_entries 5 - -@ Charmander - evo_entry EVO_LEVEL, 16, SPECIES_CHARMELEON - empty_evo_entries 4 - -@ Charmeleon - evo_entry EVO_LEVEL, 36, SPECIES_CHARIZARD - empty_evo_entries 4 - -@ Charizard - empty_evo_entries 5 - -@ Squirtle - evo_entry EVO_LEVEL, 16, SPECIES_WARTORTLE - empty_evo_entries 4 - -@ Wartortle - evo_entry EVO_LEVEL, 36, SPECIES_BLASTOISE - empty_evo_entries 4 - -@ Blastoise - empty_evo_entries 5 - -@ Caterpie - evo_entry EVO_LEVEL, 7, SPECIES_METAPOD - empty_evo_entries 4 - -@ Metapod - evo_entry EVO_LEVEL, 10, SPECIES_BUTTERFREE - empty_evo_entries 4 - -@ Butterfree - empty_evo_entries 5 - -@ Weedle - evo_entry EVO_LEVEL, 7, SPECIES_KAKUNA - empty_evo_entries 4 - -@ Kakuna - evo_entry EVO_LEVEL, 10, SPECIES_BEEDRILL - empty_evo_entries 4 - -@ Beedrill - empty_evo_entries 5 - -@ Pidgey - evo_entry EVO_LEVEL, 18, SPECIES_PIDGEOTTO - empty_evo_entries 4 - -@ Pidgeotto - evo_entry EVO_LEVEL, 36, SPECIES_PIDGEOT - empty_evo_entries 4 - -@ Pidgeot - empty_evo_entries 5 - -@ Rattata - evo_entry EVO_LEVEL, 20, SPECIES_RATICATE - empty_evo_entries 4 - -@ Raticate - empty_evo_entries 5 - -@ Spearow - evo_entry EVO_LEVEL, 20, SPECIES_FEAROW - empty_evo_entries 4 - -@ Fearow - empty_evo_entries 5 - -@ Ekans - evo_entry EVO_LEVEL, 22, SPECIES_ARBOK - empty_evo_entries 4 - -@ Arbok - empty_evo_entries 5 - -@ Pikachu - evo_entry EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU - empty_evo_entries 4 - -@ Raichu - empty_evo_entries 5 - -@ Sandshrew - evo_entry EVO_LEVEL, 22, SPECIES_SANDSLASH - empty_evo_entries 4 - -@ Sandslash - empty_evo_entries 5 - -@ Nidoran♀ - evo_entry EVO_LEVEL, 16, SPECIES_NIDORINA - empty_evo_entries 4 - -@ Nidorina - evo_entry EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN - empty_evo_entries 4 - -@ Nidoqueen - empty_evo_entries 5 - -@ Nidoran♂ - evo_entry EVO_LEVEL, 16, SPECIES_NIDORINO - empty_evo_entries 4 - -@ Nidorino - evo_entry EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING - empty_evo_entries 4 - -@ Nidoking - empty_evo_entries 5 - -@ Clefairy - evo_entry EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE - empty_evo_entries 4 - -@ Clefable - empty_evo_entries 5 - -@ Vulpix - evo_entry EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES - empty_evo_entries 4 - -@ Ninetales - empty_evo_entries 5 - -@ Jigglypuff - evo_entry EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF - empty_evo_entries 4 - -@ Wigglytuff - empty_evo_entries 5 - -@ Zubat - evo_entry EVO_LEVEL, 22, SPECIES_GOLBAT - empty_evo_entries 4 - -@ Golbat - evo_entry EVO_FRIENDSHIP, 0, SPECIES_CROBAT - empty_evo_entries 4 - -@ Oddish - evo_entry EVO_LEVEL, 21, SPECIES_GLOOM - empty_evo_entries 4 - -@ Gloom - evo_entry EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME - evo_entry EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM - empty_evo_entries 3 - -@ Vileplume - empty_evo_entries 5 - -@ Paras - evo_entry EVO_LEVEL, 24, SPECIES_PARASECT - empty_evo_entries 4 - -@ Parasect - empty_evo_entries 5 - -@ Venonat - evo_entry EVO_LEVEL, 31, SPECIES_VENOMOTH - empty_evo_entries 4 - -@ Venomoth - empty_evo_entries 5 - -@ Diglett - evo_entry EVO_LEVEL, 26, SPECIES_DUGTRIO - empty_evo_entries 4 - -@ Dugtrio - empty_evo_entries 5 - -@ Meowth - evo_entry EVO_LEVEL, 28, SPECIES_PERSIAN - empty_evo_entries 4 - -@ Persian - empty_evo_entries 5 - -@ Psyduck - evo_entry EVO_LEVEL, 33, SPECIES_GOLDUCK - empty_evo_entries 4 - -@ Golduck - empty_evo_entries 5 - -@ Mankey - evo_entry EVO_LEVEL, 28, SPECIES_PRIMEAPE - empty_evo_entries 4 - -@ Primeape - empty_evo_entries 5 - -@ Growlithe - evo_entry EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE - empty_evo_entries 4 - -@ Arcanine - empty_evo_entries 5 - -@ Poliwag - evo_entry EVO_LEVEL, 25, SPECIES_POLIWHIRL - empty_evo_entries 4 - -@ Poliwhirl - evo_entry EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH - evo_entry EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED - empty_evo_entries 3 - -@ Poliwrath - empty_evo_entries 5 - -@ Abra - evo_entry EVO_LEVEL, 16, SPECIES_KADABRA - empty_evo_entries 4 - -@ Kadabra - evo_entry EVO_TRADE, 0, SPECIES_ALAKAZAM - empty_evo_entries 4 - -@ Alakazam - empty_evo_entries 5 - -@ Machop - evo_entry EVO_LEVEL, 28, SPECIES_MACHOKE - empty_evo_entries 4 - -@ Machoke - evo_entry EVO_TRADE, 0, SPECIES_MACHAMP - empty_evo_entries 4 - -@ Machamp - empty_evo_entries 5 - -@ Bellsprout - evo_entry EVO_LEVEL, 21, SPECIES_WEEPINBELL - empty_evo_entries 4 - -@ Weepinbell - evo_entry EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL - empty_evo_entries 4 - -@ Victreebel - empty_evo_entries 5 - -@ Tentacool - evo_entry EVO_LEVEL, 30, SPECIES_TENTACRUEL - empty_evo_entries 4 - -@ Tentacruel - empty_evo_entries 5 - -@ Geodude - evo_entry EVO_LEVEL, 25, SPECIES_GRAVELER - empty_evo_entries 4 - -@ Graveler - evo_entry EVO_TRADE, 0, SPECIES_GOLEM - empty_evo_entries 4 - -@ Golem - empty_evo_entries 5 - -@ Ponyta - evo_entry EVO_LEVEL, 40, SPECIES_RAPIDASH - empty_evo_entries 4 - -@ Rapidash - empty_evo_entries 5 - -@ Slowpoke - evo_entry EVO_LEVEL, 37, SPECIES_SLOWBRO - evo_entry EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING - empty_evo_entries 3 - -@ Slowbro - empty_evo_entries 5 - -@ Magnemite - evo_entry EVO_LEVEL, 30, SPECIES_MAGNETON - empty_evo_entries 4 - -@ Magneton - empty_evo_entries 5 - -@ Farfetch'd - empty_evo_entries 5 - -@ Doduo - evo_entry EVO_LEVEL, 31, SPECIES_DODRIO - empty_evo_entries 4 - -@ Dodrio - empty_evo_entries 5 - -@ Seel - evo_entry EVO_LEVEL, 34, SPECIES_DEWGONG - empty_evo_entries 4 - -@ Dewgong - empty_evo_entries 5 - -@ Grimer - evo_entry EVO_LEVEL, 38, SPECIES_MUK - empty_evo_entries 4 - -@ Muk - empty_evo_entries 5 - -@ Shellder - evo_entry EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER - empty_evo_entries 4 - -@ Cloyster - empty_evo_entries 5 - -@ Gastly - evo_entry EVO_LEVEL, 25, SPECIES_HAUNTER - empty_evo_entries 4 - -@ Haunter - evo_entry EVO_TRADE, 0, SPECIES_GENGAR - empty_evo_entries 4 - -@ Gengar - empty_evo_entries 5 - -@ Onix - evo_entry EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX - empty_evo_entries 4 - -@ Drowzee - evo_entry EVO_LEVEL, 26, SPECIES_HYPNO - empty_evo_entries 4 - -@ Hypno - empty_evo_entries 5 - -@ Krabby - evo_entry EVO_LEVEL, 28, SPECIES_KINGLER - empty_evo_entries 4 - -@ Kingler - empty_evo_entries 5 - -@ Voltorb - evo_entry EVO_LEVEL, 30, SPECIES_ELECTRODE - empty_evo_entries 4 - -@ Electrode - empty_evo_entries 5 - -@ Exeggcute - evo_entry EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR - empty_evo_entries 4 - -@ Exeggutor - empty_evo_entries 5 - -@ Cubone - evo_entry EVO_LEVEL, 28, SPECIES_MAROWAK - empty_evo_entries 4 - -@ Marowak - empty_evo_entries 5 - -@ Hitmonlee - empty_evo_entries 5 - -@ Hitmonchan - empty_evo_entries 5 - -@ Lickitung - empty_evo_entries 5 - -@ Koffing - evo_entry EVO_LEVEL, 35, SPECIES_WEEZING - empty_evo_entries 4 - -@ Weezing - empty_evo_entries 5 - -@ Rhyhorn - evo_entry EVO_LEVEL, 42, SPECIES_RHYDON - empty_evo_entries 4 - -@ Rhydon - empty_evo_entries 5 - -@ Chansey - evo_entry EVO_FRIENDSHIP, 0, SPECIES_BLISSEY - empty_evo_entries 4 - -@ Tangela - empty_evo_entries 5 - -@ Kangaskhan - empty_evo_entries 5 - -@ Horsea - evo_entry EVO_LEVEL, 32, SPECIES_SEADRA - empty_evo_entries 4 - -@ Seadra - evo_entry EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA - empty_evo_entries 4 - -@ Goldeen - evo_entry EVO_LEVEL, 33, SPECIES_SEAKING - empty_evo_entries 4 - -@ Seaking - empty_evo_entries 5 - -@ Staryu - evo_entry EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE - empty_evo_entries 4 - -@ Starmie - empty_evo_entries 5 - -@ Mr. mime - empty_evo_entries 5 - -@ Scyther - evo_entry EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR - empty_evo_entries 4 - -@ Jynx - empty_evo_entries 5 - -@ Electabuzz - empty_evo_entries 5 - -@ Magmar - empty_evo_entries 5 - -@ Pinsir - empty_evo_entries 5 - -@ Tauros - empty_evo_entries 5 - -@ Magikarp - evo_entry EVO_LEVEL, 20, SPECIES_GYARADOS - empty_evo_entries 4 - -@ Gyarados - empty_evo_entries 5 - -@ Lapras - empty_evo_entries 5 - -@ Ditto - empty_evo_entries 5 - -@ Eevee - evo_entry EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON - evo_entry EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON - evo_entry EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON - evo_entry EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON - evo_entry EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON - -@ Vaporeon - empty_evo_entries 5 - -@ Jolteon - empty_evo_entries 5 - -@ Flareon - empty_evo_entries 5 - -@ Porygon - evo_entry EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2 - empty_evo_entries 4 - -@ Omanyte - evo_entry EVO_LEVEL, 40, SPECIES_OMASTAR - empty_evo_entries 4 - -@ Omastar - empty_evo_entries 5 - -@ Kabuto - evo_entry EVO_LEVEL, 40, SPECIES_KABUTOPS - empty_evo_entries 4 - -@ Kabutops - empty_evo_entries 5 - -@ Aerodactyl - empty_evo_entries 5 - -@ Snorlax - empty_evo_entries 5 - -@ Articuno - empty_evo_entries 5 - -@ Zapdos - empty_evo_entries 5 - -@ Moltres - empty_evo_entries 5 - -@ Dratini - evo_entry EVO_LEVEL, 30, SPECIES_DRAGONAIR - empty_evo_entries 4 - -@ Dragonair - evo_entry EVO_LEVEL, 55, SPECIES_DRAGONITE - empty_evo_entries 4 - -@ Dragonite - empty_evo_entries 5 - -@ Mewtwo - empty_evo_entries 5 - -@ Mew - empty_evo_entries 5 - -@ Chikorita - evo_entry EVO_LEVEL, 16, SPECIES_BAYLEEF - empty_evo_entries 4 - -@ Bayleef - evo_entry EVO_LEVEL, 32, SPECIES_MEGANIUM - empty_evo_entries 4 - -@ Meganium - empty_evo_entries 5 - -@ Cyndaquil - evo_entry EVO_LEVEL, 14, SPECIES_QUILAVA - empty_evo_entries 4 - -@ Quilava - evo_entry EVO_LEVEL, 36, SPECIES_TYPHLOSION - empty_evo_entries 4 - -@ Typhlosion - empty_evo_entries 5 - -@ Totodile - evo_entry EVO_LEVEL, 18, SPECIES_CROCONAW - empty_evo_entries 4 - -@ Croconaw - evo_entry EVO_LEVEL, 30, SPECIES_FERALIGATR - empty_evo_entries 4 - -@ Feraligatr - empty_evo_entries 5 - -@ Sentret - evo_entry EVO_LEVEL, 15, SPECIES_FURRET - empty_evo_entries 4 - -@ Furret - empty_evo_entries 5 - -@ Hoothoot - evo_entry EVO_LEVEL, 20, SPECIES_NOCTOWL - empty_evo_entries 4 - -@ Noctowl - empty_evo_entries 5 - -@ Ledyba - evo_entry EVO_LEVEL, 18, SPECIES_LEDIAN - empty_evo_entries 4 - -@ Ledian - empty_evo_entries 5 - -@ Spinarak - evo_entry EVO_LEVEL, 22, SPECIES_ARIADOS - empty_evo_entries 4 - -@ Ariados - empty_evo_entries 5 - -@ Crobat - empty_evo_entries 5 - -@ Chinchou - evo_entry EVO_LEVEL, 27, SPECIES_LANTURN - empty_evo_entries 4 - -@ Lanturn - empty_evo_entries 5 - -@ Pichu - evo_entry EVO_FRIENDSHIP, 0, SPECIES_PIKACHU - empty_evo_entries 4 - -@ Cleffa - evo_entry EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY - empty_evo_entries 4 - -@ Igglybuff - evo_entry EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF - empty_evo_entries 4 - -@ Togepi - evo_entry EVO_FRIENDSHIP, 0, SPECIES_TOGETIC - empty_evo_entries 4 - -@ Togetic - empty_evo_entries 5 - -@ Natu - evo_entry EVO_LEVEL, 25, SPECIES_XATU - empty_evo_entries 4 - -@ Xatu - empty_evo_entries 5 - -@ Mareep - evo_entry EVO_LEVEL, 15, SPECIES_FLAAFFY - empty_evo_entries 4 - -@ Flaaffy - evo_entry EVO_LEVEL, 30, SPECIES_AMPHAROS - empty_evo_entries 4 - -@ Ampharos - empty_evo_entries 5 - -@ Bellossom - empty_evo_entries 5 - -@ Marill - evo_entry EVO_LEVEL, 18, SPECIES_AZUMARILL - empty_evo_entries 4 - -@ Azumarill - empty_evo_entries 5 - -@ Sudowoodo - empty_evo_entries 5 - -@ Politoed - empty_evo_entries 5 - -@ Hoppip - evo_entry EVO_LEVEL, 18, SPECIES_SKIPLOOM - empty_evo_entries 4 - -@ Skiploom - evo_entry EVO_LEVEL, 27, SPECIES_JUMPLUFF - empty_evo_entries 4 - -@ Jumpluff - empty_evo_entries 5 - -@ Aipom - empty_evo_entries 5 - -@ Sunkern - evo_entry EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA - empty_evo_entries 4 - -@ Sunflora - empty_evo_entries 5 - -@ Yanma - empty_evo_entries 5 - -@ Wooper - evo_entry EVO_LEVEL, 20, SPECIES_QUAGSIRE - empty_evo_entries 4 - -@ Quagsire - empty_evo_entries 5 - -@ Espeon - empty_evo_entries 5 - -@ Umbreon - empty_evo_entries 5 - -@ Murkrow - empty_evo_entries 5 - -@ Slowking - empty_evo_entries 5 - -@ Misdreavus - empty_evo_entries 5 - -@ Unown - empty_evo_entries 5 - -@ Wobbuffet - empty_evo_entries 5 - -@ Girafarig - empty_evo_entries 5 - -@ Pineco - evo_entry EVO_LEVEL, 31, SPECIES_FORRETRESS - empty_evo_entries 4 - -@ Forretress - empty_evo_entries 5 - -@ Dunsparce - empty_evo_entries 5 - -@ Gligar - empty_evo_entries 5 - -@ Steelix - empty_evo_entries 5 - -@ Snubbull - evo_entry EVO_LEVEL, 23, SPECIES_GRANBULL - empty_evo_entries 4 - -@ Granbull - empty_evo_entries 5 - -@ Qwilfish - empty_evo_entries 5 - -@ Scizor - empty_evo_entries 5 - -@ Shuckle - empty_evo_entries 5 - -@ Heracross - empty_evo_entries 5 - -@ Sneasel - empty_evo_entries 5 - -@ Teddiursa - evo_entry EVO_LEVEL, 30, SPECIES_URSARING - empty_evo_entries 4 - -@ Ursaring - empty_evo_entries 5 - -@ Slugma - evo_entry EVO_LEVEL, 38, SPECIES_MAGCARGO - empty_evo_entries 4 - -@ Magcargo - empty_evo_entries 5 - -@ Swinub - evo_entry EVO_LEVEL, 33, SPECIES_PILOSWINE - empty_evo_entries 4 - -@ Piloswine - empty_evo_entries 5 - -@ Corsola - empty_evo_entries 5 - -@ Remoraid - evo_entry EVO_LEVEL, 25, SPECIES_OCTILLERY - empty_evo_entries 4 - -@ Octillery - empty_evo_entries 5 - -@ Delibird - empty_evo_entries 5 - -@ Mantine - empty_evo_entries 5 - -@ Skarmory - empty_evo_entries 5 - -@ Houndour - evo_entry EVO_LEVEL, 24, SPECIES_HOUNDOOM - empty_evo_entries 4 - -@ Houndoom - empty_evo_entries 5 - -@ Kingdra - empty_evo_entries 5 - -@ Phanpy - evo_entry EVO_LEVEL, 25, SPECIES_DONPHAN - empty_evo_entries 4 - -@ Donphan - empty_evo_entries 5 - -@ Porygon2 - empty_evo_entries 5 - -@ Stantler - empty_evo_entries 5 - -@ Smeargle - empty_evo_entries 5 - -@ Tyrogue - evo_entry EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN - evo_entry EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE - evo_entry EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP - empty_evo_entries 2 - -@ Hitmontop - empty_evo_entries 5 - -@ Smoochum - evo_entry EVO_LEVEL, 30, SPECIES_JYNX - empty_evo_entries 4 - -@ Elekid - evo_entry EVO_LEVEL, 30, SPECIES_ELECTABUZZ - empty_evo_entries 4 - -@ Magby - evo_entry EVO_LEVEL, 30, SPECIES_MAGMAR - empty_evo_entries 4 - -@ Miltank - empty_evo_entries 5 - -@ Blissey - empty_evo_entries 5 - -@ Raikou - empty_evo_entries 5 - -@ Entei - empty_evo_entries 5 - -@ Suicune - empty_evo_entries 5 - -@ Larvitar - evo_entry EVO_LEVEL, 30, SPECIES_PUPITAR - empty_evo_entries 4 - -@ Pupitar - evo_entry EVO_LEVEL, 55, SPECIES_TYRANITAR - empty_evo_entries 4 - -@ Tyranitar - empty_evo_entries 5 - -@ Lugia - empty_evo_entries 5 - -@ Ho-Oh - empty_evo_entries 5 - -@ Celebi - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ ? - empty_evo_entries 5 - -@ Treecko - evo_entry EVO_LEVEL, 16, SPECIES_GROVYLE - empty_evo_entries 4 - -@ Grovyle - evo_entry EVO_LEVEL, 36, SPECIES_SCEPTILE - empty_evo_entries 4 - -@ Sceptile - empty_evo_entries 5 - -@ Torchic - evo_entry EVO_LEVEL, 16, SPECIES_COMBUSKEN - empty_evo_entries 4 - -@ Combusken - evo_entry EVO_LEVEL, 36, SPECIES_BLAZIKEN - empty_evo_entries 4 - -@ Blaziken - empty_evo_entries 5 - -@ Mudkip - evo_entry EVO_LEVEL, 16, SPECIES_MARSHTOMP - empty_evo_entries 4 - -@ Marshtomp - evo_entry EVO_LEVEL, 36, SPECIES_SWAMPERT - empty_evo_entries 4 - -@ Swampert - empty_evo_entries 5 - -@ Poochyena - evo_entry EVO_LEVEL, 18, SPECIES_MIGHTYENA - empty_evo_entries 4 - -@ Mightyena - empty_evo_entries 5 - -@ Zigzagoon - evo_entry EVO_LEVEL, 20, SPECIES_LINOONE - empty_evo_entries 4 - -@ Linoone - empty_evo_entries 5 - -@ Wurmple - evo_entry EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON - evo_entry EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON - empty_evo_entries 3 - -@ Silcoon - evo_entry EVO_LEVEL, 10, SPECIES_BEAUTIFLY - empty_evo_entries 4 - -@ Beautifly - empty_evo_entries 5 - -@ Cascoon - evo_entry EVO_LEVEL, 10, SPECIES_DUSTOX - empty_evo_entries 4 - -@ Dustox - empty_evo_entries 5 - -@ Lotad - evo_entry EVO_LEVEL, 14, SPECIES_LOMBRE - empty_evo_entries 4 - -@ Lombre - evo_entry EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO - empty_evo_entries 4 - -@ Ludicolo - empty_evo_entries 5 - -@ Seedot - evo_entry EVO_LEVEL, 14, SPECIES_NUZLEAF - empty_evo_entries 4 - -@ Nuzleaf - evo_entry EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY - empty_evo_entries 4 - -@ Shiftry - empty_evo_entries 5 - -@ Nincada - evo_entry EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK - evo_entry EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA - empty_evo_entries 3 - -@ Ninjask - empty_evo_entries 5 - -@ Shedinja - empty_evo_entries 5 - -@ Taillow - evo_entry EVO_LEVEL, 22, SPECIES_SWELLOW - empty_evo_entries 4 - -@ Swellow - empty_evo_entries 5 - -@ Shroomish - evo_entry EVO_LEVEL, 23, SPECIES_BRELOOM - empty_evo_entries 4 - -@ Breloom - empty_evo_entries 5 - -@ Spinda - empty_evo_entries 5 - -@ Wingull - evo_entry EVO_LEVEL, 25, SPECIES_PELIPPER - empty_evo_entries 4 - -@ Pelipper - empty_evo_entries 5 - -@ Surskit - evo_entry EVO_LEVEL, 22, SPECIES_MASQUERAIN - empty_evo_entries 4 - -@ Masquerain - empty_evo_entries 5 - -@ Wailmer - evo_entry EVO_LEVEL, 40, SPECIES_WAILORD - empty_evo_entries 4 - -@ Wailord - empty_evo_entries 5 - -@ Skitty - evo_entry EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY - empty_evo_entries 4 - -@ Delcatty - empty_evo_entries 5 - -@ Kecleon - empty_evo_entries 5 - -@ Baltoy - evo_entry EVO_LEVEL, 36, SPECIES_CLAYDOL - empty_evo_entries 4 - -@ Claydol - empty_evo_entries 5 - -@ Nosepass - empty_evo_entries 5 - -@ Torkoal - empty_evo_entries 5 - -@ Sableye - empty_evo_entries 5 - -@ Barboach - evo_entry EVO_LEVEL, 30, SPECIES_WHISCASH - empty_evo_entries 4 - -@ Whiscash - empty_evo_entries 5 - -@ Luvdisc - empty_evo_entries 5 - -@ Corphish - evo_entry EVO_LEVEL, 30, SPECIES_CRAWDAUNT - empty_evo_entries 4 - -@ Crawdaunt - empty_evo_entries 5 - -@ Feebas - evo_entry EVO_BEAUTY, 170, SPECIES_MILOTIC - empty_evo_entries 4 - -@ Milotic - empty_evo_entries 5 - -@ Carvanha - evo_entry EVO_LEVEL, 30, SPECIES_SHARPEDO - empty_evo_entries 4 - -@ Sharpedo - empty_evo_entries 5 - -@ Trapinch - evo_entry EVO_LEVEL, 35, SPECIES_VIBRAVA - empty_evo_entries 4 - -@ Vibrava - evo_entry EVO_LEVEL, 45, SPECIES_FLYGON - empty_evo_entries 4 - -@ Flygon - empty_evo_entries 5 - -@ Makuhita - evo_entry EVO_LEVEL, 24, SPECIES_HARIYAMA - empty_evo_entries 4 - -@ Hariyama - empty_evo_entries 5 - -@ Electrike - evo_entry EVO_LEVEL, 26, SPECIES_MANECTRIC - empty_evo_entries 4 - -@ Manectric - empty_evo_entries 5 - -@ Numel - evo_entry EVO_LEVEL, 33, SPECIES_CAMERUPT - empty_evo_entries 4 - -@ Camerupt - empty_evo_entries 5 - -@ Spheal - evo_entry EVO_LEVEL, 32, SPECIES_SEALEO - empty_evo_entries 4 - -@ Sealeo - evo_entry EVO_LEVEL, 44, SPECIES_WALREIN - empty_evo_entries 4 - -@ Walrein - empty_evo_entries 5 - -@ Cacnea - evo_entry EVO_LEVEL, 32, SPECIES_CACTURNE - empty_evo_entries 4 - -@ Cacturne - empty_evo_entries 5 - -@ Snorunt - evo_entry EVO_LEVEL, 42, SPECIES_GLALIE - empty_evo_entries 4 - -@ Glalie - empty_evo_entries 5 - -@ Lunatone - empty_evo_entries 5 - -@ Solrock - empty_evo_entries 5 - -@ Azurill - evo_entry EVO_FRIENDSHIP, 0, SPECIES_MARILL - empty_evo_entries 4 - -@ Spoink - evo_entry EVO_LEVEL, 32, SPECIES_GRUMPIG - empty_evo_entries 4 - -@ Grumpig - empty_evo_entries 5 - -@ Plusle - empty_evo_entries 5 - -@ Minun - empty_evo_entries 5 - -@ Mawile - empty_evo_entries 5 - -@ Meditite - evo_entry EVO_LEVEL, 37, SPECIES_MEDICHAM - empty_evo_entries 4 - -@ Medicham - empty_evo_entries 5 - -@ Swablu - evo_entry EVO_LEVEL, 35, SPECIES_ALTARIA - empty_evo_entries 4 - -@ Altaria - empty_evo_entries 5 - -@ Wynaut - evo_entry EVO_LEVEL, 15, SPECIES_WOBBUFFET - empty_evo_entries 4 - -@ Duskull - evo_entry EVO_LEVEL, 37, SPECIES_DUSCLOPS - empty_evo_entries 4 - -@ Dusclops - empty_evo_entries 5 - -@ Roselia - empty_evo_entries 5 - -@ Slakoth - evo_entry EVO_LEVEL, 18, SPECIES_VIGOROTH - empty_evo_entries 4 - -@ Vigoroth - evo_entry EVO_LEVEL, 36, SPECIES_SLAKING - empty_evo_entries 4 - -@ Slaking - empty_evo_entries 5 - -@ Gulpin - evo_entry EVO_LEVEL, 26, SPECIES_SWALOT - empty_evo_entries 4 - -@ Swalot - empty_evo_entries 5 - -@ Tropius - empty_evo_entries 5 - -@ Whismur - evo_entry EVO_LEVEL, 20, SPECIES_LOUDRED - empty_evo_entries 4 - -@ Loudred - evo_entry EVO_LEVEL, 40, SPECIES_EXPLOUD - empty_evo_entries 4 - -@ Exploud - empty_evo_entries 5 - -@ Clamperl - evo_entry EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL - evo_entry EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS - empty_evo_entries 3 - -@ Huntail - empty_evo_entries 5 - -@ Gorebyss - empty_evo_entries 5 - -@ Absol - empty_evo_entries 5 - -@ Shuppet - evo_entry EVO_LEVEL, 37, SPECIES_BANETTE - empty_evo_entries 4 - -@ Banette - empty_evo_entries 5 - -@ Seviper - empty_evo_entries 5 - -@ Zangoose - empty_evo_entries 5 - -@ Relicanth - empty_evo_entries 5 - -@ Aron - evo_entry EVO_LEVEL, 32, SPECIES_LAIRON - empty_evo_entries 4 - -@ Lairon - evo_entry EVO_LEVEL, 42, SPECIES_AGGRON - empty_evo_entries 4 - -@ Aggron - empty_evo_entries 5 - -@ Castform - empty_evo_entries 5 - -@ Volbeat - empty_evo_entries 5 - -@ Illumise - empty_evo_entries 5 - -@ Lileep - evo_entry EVO_LEVEL, 40, SPECIES_CRADILY - empty_evo_entries 4 - -@ Cradily - empty_evo_entries 5 - -@ Anorith - evo_entry EVO_LEVEL, 40, SPECIES_ARMALDO - empty_evo_entries 4 - -@ Armaldo - empty_evo_entries 5 - -@ Ralts - evo_entry EVO_LEVEL, 20, SPECIES_KIRLIA - empty_evo_entries 4 - -@ Kirlia - evo_entry EVO_LEVEL, 30, SPECIES_GARDEVOIR - empty_evo_entries 4 - -@ Gardevoir - empty_evo_entries 5 - -@ Bagon - evo_entry EVO_LEVEL, 30, SPECIES_SHELGON - empty_evo_entries 4 - -@ Shelgon - evo_entry EVO_LEVEL, 50, SPECIES_SALAMENCE - empty_evo_entries 4 - -@ Salamence - empty_evo_entries 5 - -@ Beldum - evo_entry EVO_LEVEL, 20, SPECIES_METANG - empty_evo_entries 4 - -@ Metang - evo_entry EVO_LEVEL, 45, SPECIES_METAGROSS - empty_evo_entries 4 - -@ Metagross - empty_evo_entries 5 - -@ Regirock - empty_evo_entries 5 - -@ Regice - empty_evo_entries 5 - -@ Registeel - empty_evo_entries 5 - -@ Kyogre - empty_evo_entries 5 - -@ Groudon - empty_evo_entries 5 - -@ Rayquaza - empty_evo_entries 5 - -@ Latias - empty_evo_entries 5 - -@ Latios - empty_evo_entries 5 - -@ Jirachi - empty_evo_entries 5 - -@ Deoxys - empty_evo_entries 5 - -@ Chimecho - empty_evo_entries 5 diff --git a/data/pokemon.s b/data/pokemon.s index a33d519ef..985ec8dec 100644 --- a/data/pokemon.s +++ b/data/pokemon.s @@ -3,9 +3,6 @@ .section .rodata -@ 8203B68 - .include "data/evolution_table.inc" - @ 8207BC8 .include "data/level_up_learnset_pointers.inc" diff --git a/src/pokemon_data.c b/src/pokemon_data.c index 4f8304c23..9b1603291 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -10290,8 +10290,6 @@ const struct BaseStats gBaseStats[] = { } }; -.align 2 - const u16 gBulbasaurLevelUpLearnset[] = { LEVEL_UP_MOVE( 1, MOVE_TACKLE), LEVEL_UP_MOVE( 4, MOVE_GROWL), @@ -15907,3 +15905,603 @@ const u16 gChimechoLevelUpLearnset[] = { LEVEL_UP_MOVE(46, MOVE_PSYCHIC), -1 }; + +const struct EvolutionData gEvolutionTable[] = { + {{ // ?????????? + }}, {{ // Bulbasaur + {EVO_LEVEL, 16, SPECIES_IVYSAUR}, + }}, {{ // Ivysaur + {EVO_LEVEL, 32, SPECIES_VENUSAUR}, + }}, {{ // Venusaur + }}, {{ // Charmander + {EVO_LEVEL, 16, SPECIES_CHARMELEON}, + }}, {{ // Charmeleon + {EVO_LEVEL, 36, SPECIES_CHARIZARD}, + }}, {{ // Charizard + }}, {{ // Squirtle + {EVO_LEVEL, 16, SPECIES_WARTORTLE}, + }}, {{ // Wartortle + {EVO_LEVEL, 36, SPECIES_BLASTOISE}, + }}, {{ // Blastoise + }}, {{ // Caterpie + {EVO_LEVEL, 7, SPECIES_METAPOD}, + }}, {{ // Metapod + {EVO_LEVEL, 10, SPECIES_BUTTERFREE}, + }}, {{ // Butterfree + }}, {{ // Weedle + {EVO_LEVEL, 7, SPECIES_KAKUNA}, + }}, {{ // Kakuna + {EVO_LEVEL, 10, SPECIES_BEEDRILL}, + }}, {{ // Beedrill + }}, {{ // Pidgey + {EVO_LEVEL, 18, SPECIES_PIDGEOTTO}, + }}, {{ // Pidgeotto + {EVO_LEVEL, 36, SPECIES_PIDGEOT}, + }}, {{ // Pidgeot + }}, {{ // Rattata + {EVO_LEVEL, 20, SPECIES_RATICATE}, + }}, {{ // Raticate + }}, {{ // Spearow + {EVO_LEVEL, 20, SPECIES_FEAROW}, + }}, {{ // Fearow + }}, {{ // Ekans + {EVO_LEVEL, 22, SPECIES_ARBOK}, + }}, {{ // Arbok + }}, {{ // Pikachu + {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}, + }}, {{ // Raichu + }}, {{ // Sandshrew + {EVO_LEVEL, 22, SPECIES_SANDSLASH}, + }}, {{ // Sandslash + }}, {{ // Nidoran♀ + {EVO_LEVEL, 16, SPECIES_NIDORINA}, + }}, {{ // Nidorina + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}, + }}, {{ // Nidoqueen + }}, {{ // Nidoran♂ + {EVO_LEVEL, 16, SPECIES_NIDORINO}, + }}, {{ // Nidorino + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}, + }}, {{ // Nidoking + }}, {{ // Clefairy + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}, + }}, {{ // Clefable + }}, {{ // Vulpix + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}, + }}, {{ // Ninetales + }}, {{ // Jigglypuff + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}, + }}, {{ // Wigglytuff + }}, {{ // Zubat + {EVO_LEVEL, 22, SPECIES_GOLBAT}, + }}, {{ // Golbat + {EVO_FRIENDSHIP, 0, SPECIES_CROBAT}, + }}, {{ // Oddish + {EVO_LEVEL, 21, SPECIES_GLOOM}, + }}, {{ // Gloom + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, + {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}, + }}, {{ // Vileplume + }}, {{ // Paras + {EVO_LEVEL, 24, SPECIES_PARASECT}, + }}, {{ // Parasect + }}, {{ // Venonat + {EVO_LEVEL, 31, SPECIES_VENOMOTH}, + }}, {{ // Venomoth + }}, {{ // Diglett + {EVO_LEVEL, 26, SPECIES_DUGTRIO}, + }}, {{ // Dugtrio + }}, {{ // Meowth + {EVO_LEVEL, 28, SPECIES_PERSIAN}, + }}, {{ // Persian + }}, {{ // Psyduck + {EVO_LEVEL, 33, SPECIES_GOLDUCK}, + }}, {{ // Golduck + }}, {{ // Mankey + {EVO_LEVEL, 28, SPECIES_PRIMEAPE}, + }}, {{ // Primeape + }}, {{ // Growlithe + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}, + }}, {{ // Arcanine + }}, {{ // Poliwag + {EVO_LEVEL, 25, SPECIES_POLIWHIRL}, + }}, {{ // Poliwhirl + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, + }}, {{ // Poliwrath + }}, {{ // Abra + {EVO_LEVEL, 16, SPECIES_KADABRA}, + }}, {{ // Kadabra + {EVO_TRADE, 0, SPECIES_ALAKAZAM}, + }}, {{ // Alakazam + }}, {{ // Machop + {EVO_LEVEL, 28, SPECIES_MACHOKE}, + }}, {{ // Machoke + {EVO_TRADE, 0, SPECIES_MACHAMP}, + }}, {{ // Machamp + }}, {{ // Bellsprout + {EVO_LEVEL, 21, SPECIES_WEEPINBELL}, + }}, {{ // Weepinbell + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}, + }}, {{ // Victreebel + }}, {{ // Tentacool + {EVO_LEVEL, 30, SPECIES_TENTACRUEL}, + }}, {{ // Tentacruel + }}, {{ // Geodude + {EVO_LEVEL, 25, SPECIES_GRAVELER}, + }}, {{ // Graveler + {EVO_TRADE, 0, SPECIES_GOLEM}, + }}, {{ // Golem + }}, {{ // Ponyta + {EVO_LEVEL, 40, SPECIES_RAPIDASH}, + }}, {{ // Rapidash + }}, {{ // Slowpoke + {EVO_LEVEL, 37, SPECIES_SLOWBRO}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, + }}, {{ // Slowbro + }}, {{ // Magnemite + {EVO_LEVEL, 30, SPECIES_MAGNETON}, + }}, {{ // Magneton + }}, {{ // Farfetch'd + }}, {{ // Doduo + {EVO_LEVEL, 31, SPECIES_DODRIO}, + }}, {{ // Dodrio + }}, {{ // Seel + {EVO_LEVEL, 34, SPECIES_DEWGONG}, + }}, {{ // Dewgong + }}, {{ // Grimer + {EVO_LEVEL, 38, SPECIES_MUK}, + }}, {{ // Muk + }}, {{ // Shellder + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}, + }}, {{ // Cloyster + }}, {{ // Gastly + {EVO_LEVEL, 25, SPECIES_HAUNTER}, + }}, {{ // Haunter + {EVO_TRADE, 0, SPECIES_GENGAR}, + }}, {{ // Gengar + }}, {{ // Onix + {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, + }}, {{ // Drowzee + {EVO_LEVEL, 26, SPECIES_HYPNO}, + }}, {{ // Hypno + }}, {{ // Krabby + {EVO_LEVEL, 28, SPECIES_KINGLER}, + }}, {{ // Kingler + }}, {{ // Voltorb + {EVO_LEVEL, 30, SPECIES_ELECTRODE}, + }}, {{ // Electrode + }}, {{ // Exeggcute + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, + }}, {{ // Exeggutor + }}, {{ // Cubone + {EVO_LEVEL, 28, SPECIES_MAROWAK}, + }}, {{ // Marowak + }}, {{ // Hitmonlee + }}, {{ // Hitmonchan + }}, {{ // Lickitung + }}, {{ // Koffing + {EVO_LEVEL, 35, SPECIES_WEEZING}, + }}, {{ // Weezing + }}, {{ // Rhyhorn + {EVO_LEVEL, 42, SPECIES_RHYDON}, + }}, {{ // Rhydon + }}, {{ // Chansey + {EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}, + }}, {{ // Tangela + }}, {{ // Kangaskhan + }}, {{ // Horsea + {EVO_LEVEL, 32, SPECIES_SEADRA}, + }}, {{ // Seadra + {EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, + }}, {{ // Goldeen + {EVO_LEVEL, 33, SPECIES_SEAKING}, + }}, {{ // Seaking + }}, {{ // Staryu + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}, + }}, {{ // Starmie + }}, {{ // Mr. mime + }}, {{ // Scyther + {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, + }}, {{ // Jynx + }}, {{ // Electabuzz + }}, {{ // Magmar + }}, {{ // Pinsir + }}, {{ // Tauros + }}, {{ // Magikarp + {EVO_LEVEL, 20, SPECIES_GYARADOS}, + }}, {{ // Gyarados + }}, {{ // Lapras + }}, {{ // Ditto + }}, {{ // Eevee + {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, + {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, + {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}, + }}, {{ // Vaporeon + }}, {{ // Jolteon + }}, {{ // Flareon + }}, {{ // Porygon + {EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}, + }}, {{ // Omanyte + {EVO_LEVEL, 40, SPECIES_OMASTAR}, + }}, {{ // Omastar + }}, {{ // Kabuto + {EVO_LEVEL, 40, SPECIES_KABUTOPS}, + }}, {{ // Kabutops + }}, {{ // Aerodactyl + }}, {{ // Snorlax + }}, {{ // Articuno + }}, {{ // Zapdos + }}, {{ // Moltres + }}, {{ // Dratini + {EVO_LEVEL, 30, SPECIES_DRAGONAIR}, + }}, {{ // Dragonair + {EVO_LEVEL, 55, SPECIES_DRAGONITE}, + }}, {{ // Dragonite + }}, {{ // Mewtwo + }}, {{ // Mew + }}, {{ // Chikorita + {EVO_LEVEL, 16, SPECIES_BAYLEEF}, + }}, {{ // Bayleef + {EVO_LEVEL, 32, SPECIES_MEGANIUM}, + }}, {{ // Meganium + }}, {{ // Cyndaquil + {EVO_LEVEL, 14, SPECIES_QUILAVA}, + }}, {{ // Quilava + {EVO_LEVEL, 36, SPECIES_TYPHLOSION}, + }}, {{ // Typhlosion + }}, {{ // Totodile + {EVO_LEVEL, 18, SPECIES_CROCONAW}, + }}, {{ // Croconaw + {EVO_LEVEL, 30, SPECIES_FERALIGATR}, + }}, {{ // Feraligatr + }}, {{ // Sentret + {EVO_LEVEL, 15, SPECIES_FURRET}, + }}, {{ // Furret + }}, {{ // Hoothoot + {EVO_LEVEL, 20, SPECIES_NOCTOWL}, + }}, {{ // Noctowl + }}, {{ // Ledyba + {EVO_LEVEL, 18, SPECIES_LEDIAN}, + }}, {{ // Ledian + }}, {{ // Spinarak + {EVO_LEVEL, 22, SPECIES_ARIADOS}, + }}, {{ // Ariados + }}, {{ // Crobat + }}, {{ // Chinchou + {EVO_LEVEL, 27, SPECIES_LANTURN}, + }}, {{ // Lanturn + }}, {{ // Pichu + {EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}, + }}, {{ // Cleffa + {EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}, + }}, {{ // Igglybuff + {EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}, + }}, {{ // Togepi + {EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}, + }}, {{ // Togetic + }}, {{ // Natu + {EVO_LEVEL, 25, SPECIES_XATU}, + }}, {{ // Xatu + }}, {{ // Mareep + {EVO_LEVEL, 15, SPECIES_FLAAFFY}, + }}, {{ // Flaaffy + {EVO_LEVEL, 30, SPECIES_AMPHAROS}, + }}, {{ // Ampharos + }}, {{ // Bellossom + }}, {{ // Marill + {EVO_LEVEL, 18, SPECIES_AZUMARILL}, + }}, {{ // Azumarill + }}, {{ // Sudowoodo + }}, {{ // Politoed + }}, {{ // Hoppip + {EVO_LEVEL, 18, SPECIES_SKIPLOOM}, + }}, {{ // Skiploom + {EVO_LEVEL, 27, SPECIES_JUMPLUFF}, + }}, {{ // Jumpluff + }}, {{ // Aipom + }}, {{ // Sunkern + {EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}, + }}, {{ // Sunflora + }}, {{ // Yanma + }}, {{ // Wooper + {EVO_LEVEL, 20, SPECIES_QUAGSIRE}, + }}, {{ // Quagsire + }}, {{ // Espeon + }}, {{ // Umbreon + }}, {{ // Murkrow + }}, {{ // Slowking + }}, {{ // Misdreavus + }}, {{ // Unown + }}, {{ // Wobbuffet + }}, {{ // Girafarig + }}, {{ // Pineco + {EVO_LEVEL, 31, SPECIES_FORRETRESS}, + }}, {{ // Forretress + }}, {{ // Dunsparce + }}, {{ // Gligar + }}, {{ // Steelix + }}, {{ // Snubbull + {EVO_LEVEL, 23, SPECIES_GRANBULL}, + }}, {{ // Granbull + }}, {{ // Qwilfish + }}, {{ // Scizor + }}, {{ // Shuckle + }}, {{ // Heracross + }}, {{ // Sneasel + }}, {{ // Teddiursa + {EVO_LEVEL, 30, SPECIES_URSARING}, + }}, {{ // Ursaring + }}, {{ // Slugma + {EVO_LEVEL, 38, SPECIES_MAGCARGO}, + }}, {{ // Magcargo + }}, {{ // Swinub + {EVO_LEVEL, 33, SPECIES_PILOSWINE}, + }}, {{ // Piloswine + }}, {{ // Corsola + }}, {{ // Remoraid + {EVO_LEVEL, 25, SPECIES_OCTILLERY}, + }}, {{ // Octillery + }}, {{ // Delibird + }}, {{ // Mantine + }}, {{ // Skarmory + }}, {{ // Houndour + {EVO_LEVEL, 24, SPECIES_HOUNDOOM}, + }}, {{ // Houndoom + }}, {{ // Kingdra + }}, {{ // Phanpy + {EVO_LEVEL, 25, SPECIES_DONPHAN}, + }}, {{ // Donphan + }}, {{ // Porygon2 + }}, {{ // Stantler + }}, {{ // Smeargle + }}, {{ // Tyrogue + {EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, + {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, + {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}, + }}, {{ // Hitmontop + }}, {{ // Smoochum + {EVO_LEVEL, 30, SPECIES_JYNX}, + }}, {{ // Elekid + {EVO_LEVEL, 30, SPECIES_ELECTABUZZ}, + }}, {{ // Magby + {EVO_LEVEL, 30, SPECIES_MAGMAR}, + }}, {{ // Miltank + }}, {{ // Blissey + }}, {{ // Raikou + }}, {{ // Entei + }}, {{ // Suicune + }}, {{ // Larvitar + {EVO_LEVEL, 30, SPECIES_PUPITAR}, + }}, {{ // Pupitar + {EVO_LEVEL, 55, SPECIES_TYRANITAR}, + }}, {{ // Tyranitar + }}, {{ // Lugia + }}, {{ // Ho-Oh + }}, {{ // Celebi + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // Treecko + {EVO_LEVEL, 16, SPECIES_GROVYLE}, + }}, {{ // Grovyle + {EVO_LEVEL, 36, SPECIES_SCEPTILE}, + }}, {{ // Sceptile + }}, {{ // Torchic + {EVO_LEVEL, 16, SPECIES_COMBUSKEN}, + }}, {{ // Combusken + {EVO_LEVEL, 36, SPECIES_BLAZIKEN}, + }}, {{ // Blaziken + }}, {{ // Mudkip + {EVO_LEVEL, 16, SPECIES_MARSHTOMP}, + }}, {{ // Marshtomp + {EVO_LEVEL, 36, SPECIES_SWAMPERT}, + }}, {{ // Swampert + }}, {{ // Poochyena + {EVO_LEVEL, 18, SPECIES_MIGHTYENA}, + }}, {{ // Mightyena + }}, {{ // Zigzagoon + {EVO_LEVEL, 20, SPECIES_LINOONE}, + }}, {{ // Linoone + }}, {{ // Wurmple + {EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, + {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}, + }}, {{ // Silcoon + {EVO_LEVEL, 10, SPECIES_BEAUTIFLY}, + }}, {{ // Beautifly + }}, {{ // Cascoon + {EVO_LEVEL, 10, SPECIES_DUSTOX}, + }}, {{ // Dustox + }}, {{ // Lotad + {EVO_LEVEL, 14, SPECIES_LOMBRE}, + }}, {{ // Lombre + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}, + }}, {{ // Ludicolo + }}, {{ // Seedot + {EVO_LEVEL, 14, SPECIES_NUZLEAF}, + }}, {{ // Nuzleaf + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}, + }}, {{ // Shiftry + }}, {{ // Nincada + {EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, + {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}, + }}, {{ // Ninjask + }}, {{ // Shedinja + }}, {{ // Taillow + {EVO_LEVEL, 22, SPECIES_SWELLOW}, + }}, {{ // Swellow + }}, {{ // Shroomish + {EVO_LEVEL, 23, SPECIES_BRELOOM}, + }}, {{ // Breloom + }}, {{ // Spinda + }}, {{ // Wingull + {EVO_LEVEL, 25, SPECIES_PELIPPER}, + }}, {{ // Pelipper + }}, {{ // Surskit + {EVO_LEVEL, 22, SPECIES_MASQUERAIN}, + }}, {{ // Masquerain + }}, {{ // Wailmer + {EVO_LEVEL, 40, SPECIES_WAILORD}, + }}, {{ // Wailord + }}, {{ // Skitty + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}, + }}, {{ // Delcatty + }}, {{ // Kecleon + }}, {{ // Baltoy + {EVO_LEVEL, 36, SPECIES_CLAYDOL}, + }}, {{ // Claydol + }}, {{ // Nosepass + }}, {{ // Torkoal + }}, {{ // Sableye + }}, {{ // Barboach + {EVO_LEVEL, 30, SPECIES_WHISCASH}, + }}, {{ // Whiscash + }}, {{ // Luvdisc + }}, {{ // Corphish + {EVO_LEVEL, 30, SPECIES_CRAWDAUNT}, + }}, {{ // Crawdaunt + }}, {{ // Feebas + {EVO_BEAUTY, 170, SPECIES_MILOTIC}, + }}, {{ // Milotic + }}, {{ // Carvanha + {EVO_LEVEL, 30, SPECIES_SHARPEDO}, + }}, {{ // Sharpedo + }}, {{ // Trapinch + {EVO_LEVEL, 35, SPECIES_VIBRAVA}, + }}, {{ // Vibrava + {EVO_LEVEL, 45, SPECIES_FLYGON}, + }}, {{ // Flygon + }}, {{ // Makuhita + {EVO_LEVEL, 24, SPECIES_HARIYAMA}, + }}, {{ // Hariyama + }}, {{ // Electrike + {EVO_LEVEL, 26, SPECIES_MANECTRIC}, + }}, {{ // Manectric + }}, {{ // Numel + {EVO_LEVEL, 33, SPECIES_CAMERUPT}, + }}, {{ // Camerupt + }}, {{ // Spheal + {EVO_LEVEL, 32, SPECIES_SEALEO}, + }}, {{ // Sealeo + {EVO_LEVEL, 44, SPECIES_WALREIN}, + }}, {{ // Walrein + }}, {{ // Cacnea + {EVO_LEVEL, 32, SPECIES_CACTURNE}, + }}, {{ // Cacturne + }}, {{ // Snorunt + {EVO_LEVEL, 42, SPECIES_GLALIE}, + }}, {{ // Glalie + }}, {{ // Lunatone + }}, {{ // Solrock + }}, {{ // Azurill + {EVO_FRIENDSHIP, 0, SPECIES_MARILL}, + }}, {{ // Spoink + {EVO_LEVEL, 32, SPECIES_GRUMPIG}, + }}, {{ // Grumpig + }}, {{ // Plusle + }}, {{ // Minun + }}, {{ // Mawile + }}, {{ // Meditite + {EVO_LEVEL, 37, SPECIES_MEDICHAM}, + }}, {{ // Medicham + }}, {{ // Swablu + {EVO_LEVEL, 35, SPECIES_ALTARIA}, + }}, {{ // Altaria + }}, {{ // Wynaut + {EVO_LEVEL, 15, SPECIES_WOBBUFFET}, + }}, {{ // Duskull + {EVO_LEVEL, 37, SPECIES_DUSCLOPS}, + }}, {{ // Dusclops + }}, {{ // Roselia + }}, {{ // Slakoth + {EVO_LEVEL, 18, SPECIES_VIGOROTH}, + }}, {{ // Vigoroth + {EVO_LEVEL, 36, SPECIES_SLAKING}, + }}, {{ // Slaking + }}, {{ // Gulpin + {EVO_LEVEL, 26, SPECIES_SWALOT}, + }}, {{ // Swalot + }}, {{ // Tropius + }}, {{ // Whismur + {EVO_LEVEL, 20, SPECIES_LOUDRED}, + }}, {{ // Loudred + {EVO_LEVEL, 40, SPECIES_EXPLOUD}, + }}, {{ // Exploud + }}, {{ // Clamperl + {EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, + {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, + }}, {{ // Huntail + }}, {{ // Gorebyss + }}, {{ // Absol + }}, {{ // Shuppet + {EVO_LEVEL, 37, SPECIES_BANETTE}, + }}, {{ // Banette + }}, {{ // Seviper + }}, {{ // Zangoose + }}, {{ // Relicanth + }}, {{ // Aron + {EVO_LEVEL, 32, SPECIES_LAIRON}, + }}, {{ // Lairon + {EVO_LEVEL, 42, SPECIES_AGGRON}, + }}, {{ // Aggron + }}, {{ // Castform + }}, {{ // Volbeat + }}, {{ // Illumise + }}, {{ // Lileep + {EVO_LEVEL, 40, SPECIES_CRADILY}, + }}, {{ // Cradily + }}, {{ // Anorith + {EVO_LEVEL, 40, SPECIES_ARMALDO}, + }}, {{ // Armaldo + }}, {{ // Ralts + {EVO_LEVEL, 20, SPECIES_KIRLIA}, + }}, {{ // Kirlia + {EVO_LEVEL, 30, SPECIES_GARDEVOIR}, + }}, {{ // Gardevoir + }}, {{ // Bagon + {EVO_LEVEL, 30, SPECIES_SHELGON}, + }}, {{ // Shelgon + {EVO_LEVEL, 50, SPECIES_SALAMENCE}, + }}, {{ // Salamence + }}, {{ // Beldum + {EVO_LEVEL, 20, SPECIES_METANG}, + }}, {{ // Metang + {EVO_LEVEL, 45, SPECIES_METAGROSS}, + }}, {{ // Metagross + }}, {{ // Regirock + }}, {{ // Regice + }}, {{ // Registeel + }}, {{ // Kyogre + }}, {{ // Groudon + }}, {{ // Rayquaza + }}, {{ // Latias + }}, {{ // Latios + }}, {{ // Jirachi + }}, {{ // Deoxys + }}, {{ // Chimecho + }} +}; -- cgit v1.2.3 From 244ef10a3ffb2f9f00526cca37cee354c5cc5b3f Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 15:57:10 -0400 Subject: Convert level up learnset pointers to c array --- data/level_up_learnset_pointers.inc | 414 ----------------------------------- data/pokemon.s | 3 - src/pokemon_data.c | 416 ++++++++++++++++++++++++++++++++++++ 3 files changed, 416 insertions(+), 417 deletions(-) delete mode 100644 data/level_up_learnset_pointers.inc diff --git a/data/level_up_learnset_pointers.inc b/data/level_up_learnset_pointers.inc deleted file mode 100644 index 31055be5c..000000000 --- a/data/level_up_learnset_pointers.inc +++ /dev/null @@ -1,414 +0,0 @@ - .align 2 -gLevelUpLearnsets:: @ 8207BC8 - .4byte gBulbasaurLevelUpLearnset - .4byte gBulbasaurLevelUpLearnset - .4byte gIvysaurLevelUpLearnset - .4byte gVenusaurLevelUpLearnset - .4byte gCharmanderLevelUpLearnset - .4byte gCharmeleonLevelUpLearnset - .4byte gCharizardLevelUpLearnset - .4byte gSquirtleLevelUpLearnset - .4byte gWartortleLevelUpLearnset - .4byte gBlastoiseLevelUpLearnset - .4byte gCaterpieLevelUpLearnset - .4byte gMetapodLevelUpLearnset - .4byte gButterfreeLevelUpLearnset - .4byte gWeedleLevelUpLearnset - .4byte gKakunaLevelUpLearnset - .4byte gBeedrillLevelUpLearnset - .4byte gPidgeyLevelUpLearnset - .4byte gPidgeottoLevelUpLearnset - .4byte gPidgeotLevelUpLearnset - .4byte gRattataLevelUpLearnset - .4byte gRaticateLevelUpLearnset - .4byte gSpearowLevelUpLearnset - .4byte gFearowLevelUpLearnset - .4byte gEkansLevelUpLearnset - .4byte gArbokLevelUpLearnset - .4byte gPikachuLevelUpLearnset - .4byte gRaichuLevelUpLearnset - .4byte gSandshrewLevelUpLearnset - .4byte gSandslashLevelUpLearnset - .4byte gNidoranFLevelUpLearnset - .4byte gNidorinaLevelUpLearnset - .4byte gNidoqueenLevelUpLearnset - .4byte gNidoranMLevelUpLearnset - .4byte gNidorinoLevelUpLearnset - .4byte gNidokingLevelUpLearnset - .4byte gClefairyLevelUpLearnset - .4byte gClefableLevelUpLearnset - .4byte gVulpixLevelUpLearnset - .4byte gNinetalesLevelUpLearnset - .4byte gJigglypuffLevelUpLearnset - .4byte gWigglytuffLevelUpLearnset - .4byte gZubatLevelUpLearnset - .4byte gGolbatLevelUpLearnset - .4byte gOddishLevelUpLearnset - .4byte gGloomLevelUpLearnset - .4byte gVileplumeLevelUpLearnset - .4byte gParasLevelUpLearnset - .4byte gParasectLevelUpLearnset - .4byte gVenonatLevelUpLearnset - .4byte gVenomothLevelUpLearnset - .4byte gDiglettLevelUpLearnset - .4byte gDugtrioLevelUpLearnset - .4byte gMeowthLevelUpLearnset - .4byte gPersianLevelUpLearnset - .4byte gPsyduckLevelUpLearnset - .4byte gGolduckLevelUpLearnset - .4byte gMankeyLevelUpLearnset - .4byte gPrimeapeLevelUpLearnset - .4byte gGrowlitheLevelUpLearnset - .4byte gArcanineLevelUpLearnset - .4byte gPoliwagLevelUpLearnset - .4byte gPoliwhirlLevelUpLearnset - .4byte gPoliwrathLevelUpLearnset - .4byte gAbraLevelUpLearnset - .4byte gKadabraLevelUpLearnset - .4byte gAlakazamLevelUpLearnset - .4byte gMachopLevelUpLearnset - .4byte gMachokeLevelUpLearnset - .4byte gMachampLevelUpLearnset - .4byte gBellsproutLevelUpLearnset - .4byte gWeepinbellLevelUpLearnset - .4byte gVictreebelLevelUpLearnset - .4byte gTentacoolLevelUpLearnset - .4byte gTentacruelLevelUpLearnset - .4byte gGeodudeLevelUpLearnset - .4byte gGravelerLevelUpLearnset - .4byte gGolemLevelUpLearnset - .4byte gPonytaLevelUpLearnset - .4byte gRapidashLevelUpLearnset - .4byte gSlowpokeLevelUpLearnset - .4byte gSlowbroLevelUpLearnset - .4byte gMagnemiteLevelUpLearnset - .4byte gMagnetonLevelUpLearnset - .4byte gFarfetchdLevelUpLearnset - .4byte gDoduoLevelUpLearnset - .4byte gDodrioLevelUpLearnset - .4byte gSeelLevelUpLearnset - .4byte gDewgongLevelUpLearnset - .4byte gGrimerLevelUpLearnset - .4byte gMukLevelUpLearnset - .4byte gShellderLevelUpLearnset - .4byte gCloysterLevelUpLearnset - .4byte gGastlyLevelUpLearnset - .4byte gHaunterLevelUpLearnset - .4byte gGengarLevelUpLearnset - .4byte gOnixLevelUpLearnset - .4byte gDrowzeeLevelUpLearnset - .4byte gHypnoLevelUpLearnset - .4byte gKrabbyLevelUpLearnset - .4byte gKinglerLevelUpLearnset - .4byte gVoltorbLevelUpLearnset - .4byte gElectrodeLevelUpLearnset - .4byte gExeggcuteLevelUpLearnset - .4byte gExeggutorLevelUpLearnset - .4byte gCuboneLevelUpLearnset - .4byte gMarowakLevelUpLearnset - .4byte gHitmonleeLevelUpLearnset - .4byte gHitmonchanLevelUpLearnset - .4byte gLickitungLevelUpLearnset - .4byte gKoffingLevelUpLearnset - .4byte gWeezingLevelUpLearnset - .4byte gRhyhornLevelUpLearnset - .4byte gRhydonLevelUpLearnset - .4byte gChanseyLevelUpLearnset - .4byte gTangelaLevelUpLearnset - .4byte gKangaskhanLevelUpLearnset - .4byte gHorseaLevelUpLearnset - .4byte gSeadraLevelUpLearnset - .4byte gGoldeenLevelUpLearnset - .4byte gSeakingLevelUpLearnset - .4byte gStaryuLevelUpLearnset - .4byte gStarmieLevelUpLearnset - .4byte gMrmimeLevelUpLearnset - .4byte gScytherLevelUpLearnset - .4byte gJynxLevelUpLearnset - .4byte gElectabuzzLevelUpLearnset - .4byte gMagmarLevelUpLearnset - .4byte gPinsirLevelUpLearnset - .4byte gTaurosLevelUpLearnset - .4byte gMagikarpLevelUpLearnset - .4byte gGyaradosLevelUpLearnset - .4byte gLaprasLevelUpLearnset - .4byte gDittoLevelUpLearnset - .4byte gEeveeLevelUpLearnset - .4byte gVaporeonLevelUpLearnset - .4byte gJolteonLevelUpLearnset - .4byte gFlareonLevelUpLearnset - .4byte gPorygonLevelUpLearnset - .4byte gOmanyteLevelUpLearnset - .4byte gOmastarLevelUpLearnset - .4byte gKabutoLevelUpLearnset - .4byte gKabutopsLevelUpLearnset - .4byte gAerodactylLevelUpLearnset - .4byte gSnorlaxLevelUpLearnset - .4byte gArticunoLevelUpLearnset - .4byte gZapdosLevelUpLearnset - .4byte gMoltresLevelUpLearnset - .4byte gDratiniLevelUpLearnset - .4byte gDragonairLevelUpLearnset - .4byte gDragoniteLevelUpLearnset - .4byte gMewtwoLevelUpLearnset - .4byte gMewLevelUpLearnset - .4byte gChikoritaLevelUpLearnset - .4byte gBayleefLevelUpLearnset - .4byte gMeganiumLevelUpLearnset - .4byte gCyndaquilLevelUpLearnset - .4byte gQuilavaLevelUpLearnset - .4byte gTyphlosionLevelUpLearnset - .4byte gTotodileLevelUpLearnset - .4byte gCroconawLevelUpLearnset - .4byte gFeraligatrLevelUpLearnset - .4byte gSentretLevelUpLearnset - .4byte gFurretLevelUpLearnset - .4byte gHoothootLevelUpLearnset - .4byte gNoctowlLevelUpLearnset - .4byte gLedybaLevelUpLearnset - .4byte gLedianLevelUpLearnset - .4byte gSpinarakLevelUpLearnset - .4byte gAriadosLevelUpLearnset - .4byte gCrobatLevelUpLearnset - .4byte gChinchouLevelUpLearnset - .4byte gLanturnLevelUpLearnset - .4byte gPichuLevelUpLearnset - .4byte gCleffaLevelUpLearnset - .4byte gIgglybuffLevelUpLearnset - .4byte gTogepiLevelUpLearnset - .4byte gTogeticLevelUpLearnset - .4byte gNatuLevelUpLearnset - .4byte gXatuLevelUpLearnset - .4byte gMareepLevelUpLearnset - .4byte gFlaaffyLevelUpLearnset - .4byte gAmpharosLevelUpLearnset - .4byte gBellossomLevelUpLearnset - .4byte gMarillLevelUpLearnset - .4byte gAzumarillLevelUpLearnset - .4byte gSudowoodoLevelUpLearnset - .4byte gPolitoedLevelUpLearnset - .4byte gHoppipLevelUpLearnset - .4byte gSkiploomLevelUpLearnset - .4byte gJumpluffLevelUpLearnset - .4byte gAipomLevelUpLearnset - .4byte gSunkernLevelUpLearnset - .4byte gSunfloraLevelUpLearnset - .4byte gYanmaLevelUpLearnset - .4byte gWooperLevelUpLearnset - .4byte gQuagsireLevelUpLearnset - .4byte gEspeonLevelUpLearnset - .4byte gUmbreonLevelUpLearnset - .4byte gMurkrowLevelUpLearnset - .4byte gSlowkingLevelUpLearnset - .4byte gMisdreavusLevelUpLearnset - .4byte gUnownLevelUpLearnset - .4byte gWobbuffetLevelUpLearnset - .4byte gGirafarigLevelUpLearnset - .4byte gPinecoLevelUpLearnset - .4byte gForretressLevelUpLearnset - .4byte gDunsparceLevelUpLearnset - .4byte gGligarLevelUpLearnset - .4byte gSteelixLevelUpLearnset - .4byte gSnubbullLevelUpLearnset - .4byte gGranbullLevelUpLearnset - .4byte gQwilfishLevelUpLearnset - .4byte gScizorLevelUpLearnset - .4byte gShuckleLevelUpLearnset - .4byte gHeracrossLevelUpLearnset - .4byte gSneaselLevelUpLearnset - .4byte gTeddiursaLevelUpLearnset - .4byte gUrsaringLevelUpLearnset - .4byte gSlugmaLevelUpLearnset - .4byte gMagcargoLevelUpLearnset - .4byte gSwinubLevelUpLearnset - .4byte gPiloswineLevelUpLearnset - .4byte gCorsolaLevelUpLearnset - .4byte gRemoraidLevelUpLearnset - .4byte gOctilleryLevelUpLearnset - .4byte gDelibirdLevelUpLearnset - .4byte gMantineLevelUpLearnset - .4byte gSkarmoryLevelUpLearnset - .4byte gHoundourLevelUpLearnset - .4byte gHoundoomLevelUpLearnset - .4byte gKingdraLevelUpLearnset - .4byte gPhanpyLevelUpLearnset - .4byte gDonphanLevelUpLearnset - .4byte gPorygon2LevelUpLearnset - .4byte gStantlerLevelUpLearnset - .4byte gSmeargleLevelUpLearnset - .4byte gTyrogueLevelUpLearnset - .4byte gHitmontopLevelUpLearnset - .4byte gSmoochumLevelUpLearnset - .4byte gElekidLevelUpLearnset - .4byte gMagbyLevelUpLearnset - .4byte gMiltankLevelUpLearnset - .4byte gBlisseyLevelUpLearnset - .4byte gRaikouLevelUpLearnset - .4byte gEnteiLevelUpLearnset - .4byte gSuicuneLevelUpLearnset - .4byte gLarvitarLevelUpLearnset - .4byte gPupitarLevelUpLearnset - .4byte gTyranitarLevelUpLearnset - .4byte gLugiaLevelUpLearnset - .4byte gHoOhLevelUpLearnset - .4byte gCelebiLevelUpLearnset - .4byte gSpecies252LevelUpLearnset - .4byte gSpecies253LevelUpLearnset - .4byte gSpecies254LevelUpLearnset - .4byte gSpecies255LevelUpLearnset - .4byte gSpecies256LevelUpLearnset - .4byte gSpecies257LevelUpLearnset - .4byte gSpecies258LevelUpLearnset - .4byte gSpecies259LevelUpLearnset - .4byte gSpecies260LevelUpLearnset - .4byte gSpecies261LevelUpLearnset - .4byte gSpecies262LevelUpLearnset - .4byte gSpecies263LevelUpLearnset - .4byte gSpecies264LevelUpLearnset - .4byte gSpecies265LevelUpLearnset - .4byte gSpecies266LevelUpLearnset - .4byte gSpecies267LevelUpLearnset - .4byte gSpecies268LevelUpLearnset - .4byte gSpecies269LevelUpLearnset - .4byte gSpecies270LevelUpLearnset - .4byte gSpecies271LevelUpLearnset - .4byte gSpecies272LevelUpLearnset - .4byte gSpecies273LevelUpLearnset - .4byte gSpecies274LevelUpLearnset - .4byte gSpecies275LevelUpLearnset - .4byte gSpecies276LevelUpLearnset - .4byte gTreeckoLevelUpLearnset - .4byte gGrovyleLevelUpLearnset - .4byte gSceptileLevelUpLearnset - .4byte gTorchicLevelUpLearnset - .4byte gCombuskenLevelUpLearnset - .4byte gBlazikenLevelUpLearnset - .4byte gMudkipLevelUpLearnset - .4byte gMarshtompLevelUpLearnset - .4byte gSwampertLevelUpLearnset - .4byte gPoochyenaLevelUpLearnset - .4byte gMightyenaLevelUpLearnset - .4byte gZigzagoonLevelUpLearnset - .4byte gLinooneLevelUpLearnset - .4byte gWurmpleLevelUpLearnset - .4byte gSilcoonLevelUpLearnset - .4byte gBeautiflyLevelUpLearnset - .4byte gCascoonLevelUpLearnset - .4byte gDustoxLevelUpLearnset - .4byte gLotadLevelUpLearnset - .4byte gLombreLevelUpLearnset - .4byte gLudicoloLevelUpLearnset - .4byte gSeedotLevelUpLearnset - .4byte gNuzleafLevelUpLearnset - .4byte gShiftryLevelUpLearnset - .4byte gNincadaLevelUpLearnset - .4byte gNinjaskLevelUpLearnset - .4byte gShedinjaLevelUpLearnset - .4byte gTaillowLevelUpLearnset - .4byte gSwellowLevelUpLearnset - .4byte gShroomishLevelUpLearnset - .4byte gBreloomLevelUpLearnset - .4byte gSpindaLevelUpLearnset - .4byte gWingullLevelUpLearnset - .4byte gPelipperLevelUpLearnset - .4byte gSurskitLevelUpLearnset - .4byte gMasquerainLevelUpLearnset - .4byte gWailmerLevelUpLearnset - .4byte gWailordLevelUpLearnset - .4byte gSkittyLevelUpLearnset - .4byte gDelcattyLevelUpLearnset - .4byte gKecleonLevelUpLearnset - .4byte gBaltoyLevelUpLearnset - .4byte gClaydolLevelUpLearnset - .4byte gNosepassLevelUpLearnset - .4byte gTorkoalLevelUpLearnset - .4byte gSableyeLevelUpLearnset - .4byte gBarboachLevelUpLearnset - .4byte gWhiscashLevelUpLearnset - .4byte gLuvdiscLevelUpLearnset - .4byte gCorphishLevelUpLearnset - .4byte gCrawdauntLevelUpLearnset - .4byte gFeebasLevelUpLearnset - .4byte gMiloticLevelUpLearnset - .4byte gCarvanhaLevelUpLearnset - .4byte gSharpedoLevelUpLearnset - .4byte gTrapinchLevelUpLearnset - .4byte gVibravaLevelUpLearnset - .4byte gFlygonLevelUpLearnset - .4byte gMakuhitaLevelUpLearnset - .4byte gHariyamaLevelUpLearnset - .4byte gElectrikeLevelUpLearnset - .4byte gManectricLevelUpLearnset - .4byte gNumelLevelUpLearnset - .4byte gCameruptLevelUpLearnset - .4byte gSphealLevelUpLearnset - .4byte gSealeoLevelUpLearnset - .4byte gWalreinLevelUpLearnset - .4byte gCacneaLevelUpLearnset - .4byte gCacturneLevelUpLearnset - .4byte gSnoruntLevelUpLearnset - .4byte gGlalieLevelUpLearnset - .4byte gLunatoneLevelUpLearnset - .4byte gSolrockLevelUpLearnset - .4byte gAzurillLevelUpLearnset - .4byte gSpoinkLevelUpLearnset - .4byte gGrumpigLevelUpLearnset - .4byte gPlusleLevelUpLearnset - .4byte gMinunLevelUpLearnset - .4byte gMawileLevelUpLearnset - .4byte gMedititeLevelUpLearnset - .4byte gMedichamLevelUpLearnset - .4byte gSwabluLevelUpLearnset - .4byte gAltariaLevelUpLearnset - .4byte gWynautLevelUpLearnset - .4byte gDuskullLevelUpLearnset - .4byte gDusclopsLevelUpLearnset - .4byte gRoseliaLevelUpLearnset - .4byte gSlakothLevelUpLearnset - .4byte gVigorothLevelUpLearnset - .4byte gSlakingLevelUpLearnset - .4byte gGulpinLevelUpLearnset - .4byte gSwalotLevelUpLearnset - .4byte gTropiusLevelUpLearnset - .4byte gWhismurLevelUpLearnset - .4byte gLoudredLevelUpLearnset - .4byte gExploudLevelUpLearnset - .4byte gClamperlLevelUpLearnset - .4byte gHuntailLevelUpLearnset - .4byte gGorebyssLevelUpLearnset - .4byte gAbsolLevelUpLearnset - .4byte gShuppetLevelUpLearnset - .4byte gBanetteLevelUpLearnset - .4byte gSeviperLevelUpLearnset - .4byte gZangooseLevelUpLearnset - .4byte gRelicanthLevelUpLearnset - .4byte gAronLevelUpLearnset - .4byte gLaironLevelUpLearnset - .4byte gAggronLevelUpLearnset - .4byte gCastformLevelUpLearnset - .4byte gVolbeatLevelUpLearnset - .4byte gIllumiseLevelUpLearnset - .4byte gLileepLevelUpLearnset - .4byte gCradilyLevelUpLearnset - .4byte gAnorithLevelUpLearnset - .4byte gArmaldoLevelUpLearnset - .4byte gRaltsLevelUpLearnset - .4byte gKirliaLevelUpLearnset - .4byte gGardevoirLevelUpLearnset - .4byte gBagonLevelUpLearnset - .4byte gShelgonLevelUpLearnset - .4byte gSalamenceLevelUpLearnset - .4byte gBeldumLevelUpLearnset - .4byte gMetangLevelUpLearnset - .4byte gMetagrossLevelUpLearnset - .4byte gRegirockLevelUpLearnset - .4byte gRegiceLevelUpLearnset - .4byte gRegisteelLevelUpLearnset - .4byte gKyogreLevelUpLearnset - .4byte gGroudonLevelUpLearnset - .4byte gRayquazaLevelUpLearnset - .4byte gLatiasLevelUpLearnset - .4byte gLatiosLevelUpLearnset - .4byte gJirachiLevelUpLearnset - .4byte gDeoxysLevelUpLearnset - .4byte gChimechoLevelUpLearnset diff --git a/data/pokemon.s b/data/pokemon.s index 985ec8dec..2e09e5a13 100644 --- a/data/pokemon.s +++ b/data/pokemon.s @@ -3,9 +3,6 @@ .section .rodata -@ 8207BC8 - .include "data/level_up_learnset_pointers.inc" - gUnknown_08208238:: @ 8208238 .byte 0x03, 0x0C, 0x30, 0xC0 diff --git a/src/pokemon_data.c b/src/pokemon_data.c index 9b1603291..75790b0c3 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -16505,3 +16505,419 @@ const struct EvolutionData gEvolutionTable[] = { }}, {{ // Chimecho }} }; + +const u16 *const gLevelUpLearnsets[] = { + gBulbasaurLevelUpLearnset, + gBulbasaurLevelUpLearnset, + gIvysaurLevelUpLearnset, + gVenusaurLevelUpLearnset, + gCharmanderLevelUpLearnset, + gCharmeleonLevelUpLearnset, + gCharizardLevelUpLearnset, + gSquirtleLevelUpLearnset, + gWartortleLevelUpLearnset, + gBlastoiseLevelUpLearnset, + gCaterpieLevelUpLearnset, + gMetapodLevelUpLearnset, + gButterfreeLevelUpLearnset, + gWeedleLevelUpLearnset, + gKakunaLevelUpLearnset, + gBeedrillLevelUpLearnset, + gPidgeyLevelUpLearnset, + gPidgeottoLevelUpLearnset, + gPidgeotLevelUpLearnset, + gRattataLevelUpLearnset, + gRaticateLevelUpLearnset, + gSpearowLevelUpLearnset, + gFearowLevelUpLearnset, + gEkansLevelUpLearnset, + gArbokLevelUpLearnset, + gPikachuLevelUpLearnset, + gRaichuLevelUpLearnset, + gSandshrewLevelUpLearnset, + gSandslashLevelUpLearnset, + gNidoranFLevelUpLearnset, + gNidorinaLevelUpLearnset, + gNidoqueenLevelUpLearnset, + gNidoranMLevelUpLearnset, + gNidorinoLevelUpLearnset, + gNidokingLevelUpLearnset, + gClefairyLevelUpLearnset, + gClefableLevelUpLearnset, + gVulpixLevelUpLearnset, + gNinetalesLevelUpLearnset, + gJigglypuffLevelUpLearnset, + gWigglytuffLevelUpLearnset, + gZubatLevelUpLearnset, + gGolbatLevelUpLearnset, + gOddishLevelUpLearnset, + gGloomLevelUpLearnset, + gVileplumeLevelUpLearnset, + gParasLevelUpLearnset, + gParasectLevelUpLearnset, + gVenonatLevelUpLearnset, + gVenomothLevelUpLearnset, + gDiglettLevelUpLearnset, + gDugtrioLevelUpLearnset, + gMeowthLevelUpLearnset, + gPersianLevelUpLearnset, + gPsyduckLevelUpLearnset, + gGolduckLevelUpLearnset, + gMankeyLevelUpLearnset, + gPrimeapeLevelUpLearnset, + gGrowlitheLevelUpLearnset, + gArcanineLevelUpLearnset, + gPoliwagLevelUpLearnset, + gPoliwhirlLevelUpLearnset, + gPoliwrathLevelUpLearnset, + gAbraLevelUpLearnset, + gKadabraLevelUpLearnset, + gAlakazamLevelUpLearnset, + gMachopLevelUpLearnset, + gMachokeLevelUpLearnset, + gMachampLevelUpLearnset, + gBellsproutLevelUpLearnset, + gWeepinbellLevelUpLearnset, + gVictreebelLevelUpLearnset, + gTentacoolLevelUpLearnset, + gTentacruelLevelUpLearnset, + gGeodudeLevelUpLearnset, + gGravelerLevelUpLearnset, + gGolemLevelUpLearnset, + gPonytaLevelUpLearnset, + gRapidashLevelUpLearnset, + gSlowpokeLevelUpLearnset, + gSlowbroLevelUpLearnset, + gMagnemiteLevelUpLearnset, + gMagnetonLevelUpLearnset, + gFarfetchdLevelUpLearnset, + gDoduoLevelUpLearnset, + gDodrioLevelUpLearnset, + gSeelLevelUpLearnset, + gDewgongLevelUpLearnset, + gGrimerLevelUpLearnset, + gMukLevelUpLearnset, + gShellderLevelUpLearnset, + gCloysterLevelUpLearnset, + gGastlyLevelUpLearnset, + gHaunterLevelUpLearnset, + gGengarLevelUpLearnset, + gOnixLevelUpLearnset, + gDrowzeeLevelUpLearnset, + gHypnoLevelUpLearnset, + gKrabbyLevelUpLearnset, + gKinglerLevelUpLearnset, + gVoltorbLevelUpLearnset, + gElectrodeLevelUpLearnset, + gExeggcuteLevelUpLearnset, + gExeggutorLevelUpLearnset, + gCuboneLevelUpLearnset, + gMarowakLevelUpLearnset, + gHitmonleeLevelUpLearnset, + gHitmonchanLevelUpLearnset, + gLickitungLevelUpLearnset, + gKoffingLevelUpLearnset, + gWeezingLevelUpLearnset, + gRhyhornLevelUpLearnset, + gRhydonLevelUpLearnset, + gChanseyLevelUpLearnset, + gTangelaLevelUpLearnset, + gKangaskhanLevelUpLearnset, + gHorseaLevelUpLearnset, + gSeadraLevelUpLearnset, + gGoldeenLevelUpLearnset, + gSeakingLevelUpLearnset, + gStaryuLevelUpLearnset, + gStarmieLevelUpLearnset, + gMrmimeLevelUpLearnset, + gScytherLevelUpLearnset, + gJynxLevelUpLearnset, + gElectabuzzLevelUpLearnset, + gMagmarLevelUpLearnset, + gPinsirLevelUpLearnset, + gTaurosLevelUpLearnset, + gMagikarpLevelUpLearnset, + gGyaradosLevelUpLearnset, + gLaprasLevelUpLearnset, + gDittoLevelUpLearnset, + gEeveeLevelUpLearnset, + gVaporeonLevelUpLearnset, + gJolteonLevelUpLearnset, + gFlareonLevelUpLearnset, + gPorygonLevelUpLearnset, + gOmanyteLevelUpLearnset, + gOmastarLevelUpLearnset, + gKabutoLevelUpLearnset, + gKabutopsLevelUpLearnset, + gAerodactylLevelUpLearnset, + gSnorlaxLevelUpLearnset, + gArticunoLevelUpLearnset, + gZapdosLevelUpLearnset, + gMoltresLevelUpLearnset, + gDratiniLevelUpLearnset, + gDragonairLevelUpLearnset, + gDragoniteLevelUpLearnset, + gMewtwoLevelUpLearnset, + gMewLevelUpLearnset, + gChikoritaLevelUpLearnset, + gBayleefLevelUpLearnset, + gMeganiumLevelUpLearnset, + gCyndaquilLevelUpLearnset, + gQuilavaLevelUpLearnset, + gTyphlosionLevelUpLearnset, + gTotodileLevelUpLearnset, + gCroconawLevelUpLearnset, + gFeraligatrLevelUpLearnset, + gSentretLevelUpLearnset, + gFurretLevelUpLearnset, + gHoothootLevelUpLearnset, + gNoctowlLevelUpLearnset, + gLedybaLevelUpLearnset, + gLedianLevelUpLearnset, + gSpinarakLevelUpLearnset, + gAriadosLevelUpLearnset, + gCrobatLevelUpLearnset, + gChinchouLevelUpLearnset, + gLanturnLevelUpLearnset, + gPichuLevelUpLearnset, + gCleffaLevelUpLearnset, + gIgglybuffLevelUpLearnset, + gTogepiLevelUpLearnset, + gTogeticLevelUpLearnset, + gNatuLevelUpLearnset, + gXatuLevelUpLearnset, + gMareepLevelUpLearnset, + gFlaaffyLevelUpLearnset, + gAmpharosLevelUpLearnset, + gBellossomLevelUpLearnset, + gMarillLevelUpLearnset, + gAzumarillLevelUpLearnset, + gSudowoodoLevelUpLearnset, + gPolitoedLevelUpLearnset, + gHoppipLevelUpLearnset, + gSkiploomLevelUpLearnset, + gJumpluffLevelUpLearnset, + gAipomLevelUpLearnset, + gSunkernLevelUpLearnset, + gSunfloraLevelUpLearnset, + gYanmaLevelUpLearnset, + gWooperLevelUpLearnset, + gQuagsireLevelUpLearnset, + gEspeonLevelUpLearnset, + gUmbreonLevelUpLearnset, + gMurkrowLevelUpLearnset, + gSlowkingLevelUpLearnset, + gMisdreavusLevelUpLearnset, + gUnownLevelUpLearnset, + gWobbuffetLevelUpLearnset, + gGirafarigLevelUpLearnset, + gPinecoLevelUpLearnset, + gForretressLevelUpLearnset, + gDunsparceLevelUpLearnset, + gGligarLevelUpLearnset, + gSteelixLevelUpLearnset, + gSnubbullLevelUpLearnset, + gGranbullLevelUpLearnset, + gQwilfishLevelUpLearnset, + gScizorLevelUpLearnset, + gShuckleLevelUpLearnset, + gHeracrossLevelUpLearnset, + gSneaselLevelUpLearnset, + gTeddiursaLevelUpLearnset, + gUrsaringLevelUpLearnset, + gSlugmaLevelUpLearnset, + gMagcargoLevelUpLearnset, + gSwinubLevelUpLearnset, + gPiloswineLevelUpLearnset, + gCorsolaLevelUpLearnset, + gRemoraidLevelUpLearnset, + gOctilleryLevelUpLearnset, + gDelibirdLevelUpLearnset, + gMantineLevelUpLearnset, + gSkarmoryLevelUpLearnset, + gHoundourLevelUpLearnset, + gHoundoomLevelUpLearnset, + gKingdraLevelUpLearnset, + gPhanpyLevelUpLearnset, + gDonphanLevelUpLearnset, + gPorygon2LevelUpLearnset, + gStantlerLevelUpLearnset, + gSmeargleLevelUpLearnset, + gTyrogueLevelUpLearnset, + gHitmontopLevelUpLearnset, + gSmoochumLevelUpLearnset, + gElekidLevelUpLearnset, + gMagbyLevelUpLearnset, + gMiltankLevelUpLearnset, + gBlisseyLevelUpLearnset, + gRaikouLevelUpLearnset, + gEnteiLevelUpLearnset, + gSuicuneLevelUpLearnset, + gLarvitarLevelUpLearnset, + gPupitarLevelUpLearnset, + gTyranitarLevelUpLearnset, + gLugiaLevelUpLearnset, + gHoOhLevelUpLearnset, + gCelebiLevelUpLearnset, + gSpecies252LevelUpLearnset, + gSpecies253LevelUpLearnset, + gSpecies254LevelUpLearnset, + gSpecies255LevelUpLearnset, + gSpecies256LevelUpLearnset, + gSpecies257LevelUpLearnset, + gSpecies258LevelUpLearnset, + gSpecies259LevelUpLearnset, + gSpecies260LevelUpLearnset, + gSpecies261LevelUpLearnset, + gSpecies262LevelUpLearnset, + gSpecies263LevelUpLearnset, + gSpecies264LevelUpLearnset, + gSpecies265LevelUpLearnset, + gSpecies266LevelUpLearnset, + gSpecies267LevelUpLearnset, + gSpecies268LevelUpLearnset, + gSpecies269LevelUpLearnset, + gSpecies270LevelUpLearnset, + gSpecies271LevelUpLearnset, + gSpecies272LevelUpLearnset, + gSpecies273LevelUpLearnset, + gSpecies274LevelUpLearnset, + gSpecies275LevelUpLearnset, + gSpecies276LevelUpLearnset, + gTreeckoLevelUpLearnset, + gGrovyleLevelUpLearnset, + gSceptileLevelUpLearnset, + gTorchicLevelUpLearnset, + gCombuskenLevelUpLearnset, + gBlazikenLevelUpLearnset, + gMudkipLevelUpLearnset, + gMarshtompLevelUpLearnset, + gSwampertLevelUpLearnset, + gPoochyenaLevelUpLearnset, + gMightyenaLevelUpLearnset, + gZigzagoonLevelUpLearnset, + gLinooneLevelUpLearnset, + gWurmpleLevelUpLearnset, + gSilcoonLevelUpLearnset, + gBeautiflyLevelUpLearnset, + gCascoonLevelUpLearnset, + gDustoxLevelUpLearnset, + gLotadLevelUpLearnset, + gLombreLevelUpLearnset, + gLudicoloLevelUpLearnset, + gSeedotLevelUpLearnset, + gNuzleafLevelUpLearnset, + gShiftryLevelUpLearnset, + gNincadaLevelUpLearnset, + gNinjaskLevelUpLearnset, + gShedinjaLevelUpLearnset, + gTaillowLevelUpLearnset, + gSwellowLevelUpLearnset, + gShroomishLevelUpLearnset, + gBreloomLevelUpLearnset, + gSpindaLevelUpLearnset, + gWingullLevelUpLearnset, + gPelipperLevelUpLearnset, + gSurskitLevelUpLearnset, + gMasquerainLevelUpLearnset, + gWailmerLevelUpLearnset, + gWailordLevelUpLearnset, + gSkittyLevelUpLearnset, + gDelcattyLevelUpLearnset, + gKecleonLevelUpLearnset, + gBaltoyLevelUpLearnset, + gClaydolLevelUpLearnset, + gNosepassLevelUpLearnset, + gTorkoalLevelUpLearnset, + gSableyeLevelUpLearnset, + gBarboachLevelUpLearnset, + gWhiscashLevelUpLearnset, + gLuvdiscLevelUpLearnset, + gCorphishLevelUpLearnset, + gCrawdauntLevelUpLearnset, + gFeebasLevelUpLearnset, + gMiloticLevelUpLearnset, + gCarvanhaLevelUpLearnset, + gSharpedoLevelUpLearnset, + gTrapinchLevelUpLearnset, + gVibravaLevelUpLearnset, + gFlygonLevelUpLearnset, + gMakuhitaLevelUpLearnset, + gHariyamaLevelUpLearnset, + gElectrikeLevelUpLearnset, + gManectricLevelUpLearnset, + gNumelLevelUpLearnset, + gCameruptLevelUpLearnset, + gSphealLevelUpLearnset, + gSealeoLevelUpLearnset, + gWalreinLevelUpLearnset, + gCacneaLevelUpLearnset, + gCacturneLevelUpLearnset, + gSnoruntLevelUpLearnset, + gGlalieLevelUpLearnset, + gLunatoneLevelUpLearnset, + gSolrockLevelUpLearnset, + gAzurillLevelUpLearnset, + gSpoinkLevelUpLearnset, + gGrumpigLevelUpLearnset, + gPlusleLevelUpLearnset, + gMinunLevelUpLearnset, + gMawileLevelUpLearnset, + gMedititeLevelUpLearnset, + gMedichamLevelUpLearnset, + gSwabluLevelUpLearnset, + gAltariaLevelUpLearnset, + gWynautLevelUpLearnset, + gDuskullLevelUpLearnset, + gDusclopsLevelUpLearnset, + gRoseliaLevelUpLearnset, + gSlakothLevelUpLearnset, + gVigorothLevelUpLearnset, + gSlakingLevelUpLearnset, + gGulpinLevelUpLearnset, + gSwalotLevelUpLearnset, + gTropiusLevelUpLearnset, + gWhismurLevelUpLearnset, + gLoudredLevelUpLearnset, + gExploudLevelUpLearnset, + gClamperlLevelUpLearnset, + gHuntailLevelUpLearnset, + gGorebyssLevelUpLearnset, + gAbsolLevelUpLearnset, + gShuppetLevelUpLearnset, + gBanetteLevelUpLearnset, + gSeviperLevelUpLearnset, + gZangooseLevelUpLearnset, + gRelicanthLevelUpLearnset, + gAronLevelUpLearnset, + gLaironLevelUpLearnset, + gAggronLevelUpLearnset, + gCastformLevelUpLearnset, + gVolbeatLevelUpLearnset, + gIllumiseLevelUpLearnset, + gLileepLevelUpLearnset, + gCradilyLevelUpLearnset, + gAnorithLevelUpLearnset, + gArmaldoLevelUpLearnset, + gRaltsLevelUpLearnset, + gKirliaLevelUpLearnset, + gGardevoirLevelUpLearnset, + gBagonLevelUpLearnset, + gShelgonLevelUpLearnset, + gSalamenceLevelUpLearnset, + gBeldumLevelUpLearnset, + gMetangLevelUpLearnset, + gMetagrossLevelUpLearnset, + gRegirockLevelUpLearnset, + gRegiceLevelUpLearnset, + gRegisteelLevelUpLearnset, + gKyogreLevelUpLearnset, + gGroudonLevelUpLearnset, + gRayquazaLevelUpLearnset, + gLatiasLevelUpLearnset, + gLatiosLevelUpLearnset, + gJirachiLevelUpLearnset, + gDeoxysLevelUpLearnset, + gChimechoLevelUpLearnset +}; + -- cgit v1.2.3 From 3d9eb18add0d8a9eb5bfa77fc64cd7b1f37fea5d Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 16 Jun 2017 18:01:33 -0400 Subject: Decompile remaining Pokemon data into c objects --- data/pokemon.s | 95 --------------------------------------- include/data2.h | 9 ++++ ld_script.txt | 1 - src/calculate_base_damage.c | 2 +- src/pokemon_2.c | 6 +-- src/pokemon_data.c | 107 ++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 120 insertions(+), 100 deletions(-) delete mode 100644 data/pokemon.s diff --git a/data/pokemon.s b/data/pokemon.s deleted file mode 100644 index 2e09e5a13..000000000 --- a/data/pokemon.s +++ /dev/null @@ -1,95 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_08208238:: @ 8208238 - .byte 0x03, 0x0C, 0x30, 0xC0 - -gUnknown_0820823C:: @ 820823C - .byte 0xFC, 0xF3, 0xCF, 0x3F - -gUnknown_08208240:: @ 8208240 - .byte 0x01, 0x04, 0x10, 0x40 - -gStatStageRatios:: @ 8208244 - .byte 10, 40 @ -6 - .byte 10, 35 @ -5 - .byte 10, 30 @ -4 - .byte 10, 25 @ -3 - .byte 10, 20 @ -2 - .byte 10, 15 @ -1 - .byte 10, 10 @ 0 - .byte 15, 10 @ +1 - .byte 20, 10 @ +2 - .byte 25, 10 @ +3 - .byte 30, 10 @ +4 - .byte 35, 10 @ +5 - .byte 40, 10 @ +6 - -@ abbreviation of Game Freak - .string "ゲーフリ$" - -gHoldEffectToType:: @ 8208263 - .byte HOLD_EFFECT_BUG_POWER, TYPE_BUG - .byte HOLD_EFFECT_STEEL_POWER, TYPE_STEEL - .byte HOLD_EFFECT_GROUND_POWER, TYPE_GROUND - .byte HOLD_EFFECT_ROCK_POWER, TYPE_ROCK - .byte HOLD_EFFECT_GRASS_POWER, TYPE_GRASS - .byte HOLD_EFFECT_DARK_POWER, TYPE_DARK - .byte HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING - .byte HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC - .byte HOLD_EFFECT_WATER_POWER, TYPE_WATER - .byte HOLD_EFFECT_FLYING_POWER, TYPE_FLYING - .byte HOLD_EFFECT_POISON_POWER, TYPE_POISON - .byte HOLD_EFFECT_ICE_POWER, TYPE_ICE - .byte HOLD_EFFECT_GHOST_POWER, TYPE_GHOST - .byte HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC - .byte HOLD_EFFECT_FIRE_POWER, TYPE_FIRE - .byte HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON - .byte HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL - .byte 0, 0 - - .align 2 -gSpriteTemplate_8208288:: @ 8208288 - spr_template 0xFFFF, 0, gOamData_81F96F0, NULL, gSpriteImageTable_81E7A10, gSpriteAffineAnimTable_81E7B70, sub_80105A0 - spr_template 0xFFFF, 0, gOamData_81F96E8, NULL, gSpriteImageTable_81E7A30, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent - spr_template 0xFFFF, 0, gOamData_81F96F0, NULL, gSpriteImageTable_81E7A50, gSpriteAffineAnimTable_81E7B70, sub_80105A0 - spr_template 0xFFFF, 0, gOamData_81F96E8, NULL, gSpriteImageTable_81E7A70, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent - -gSecretBaseTrainerClasses:: @ 82082E8 - .byte TRAINER_CLASS_YOUNGSTER, TRAINER_CLASS_BUG_CATCHER, TRAINER_CLASS_RICH_BOY, TRAINER_CLASS_CAMPER, TRAINER_CLASS_COOL_TRAINER_M - .byte TRAINER_CLASS_LASS, TRAINER_CLASS_SCHOOL_KID_F, TRAINER_CLASS_LADY, TRAINER_CLASS_PICNICKER, TRAINER_CLASS_COOL_TRAINER_F - -gUnknown_082082F2:: @ 82082F2 - .byte 0x1A, 0x1B, 0x1C, 0x1D, 0x1F, 0x1E - -gUnknown_082082F8:: @ 82082F8 - .byte 1, 1, 3, 2, 4, 6 - -gUnknown_082082FE:: @ 82082FE - .byte 5, 3, 2 - .byte 5, 3, 2 - .byte 1, 1, 0 - .byte 3, 2, 1 - .byte 1, 1, 0 - .byte 1, 1, 1 - .byte -1, -1, -1 - .byte -5, -5, -10 - .byte -5, -5, -10 - - .align 1 -gHMMoves:: @ 820831A - .2byte MOVE_CUT - .2byte MOVE_FLY - .2byte MOVE_SURF - .2byte MOVE_STRENGTH - .2byte MOVE_FLASH - .2byte MOVE_ROCK_SMASH - .2byte MOVE_WATERFALL - .2byte MOVE_DIVE - .2byte 0xFFFF - -gJapaneseNidoranNames:: @ 820832C - .string "ニドラン♂$", 11 - .string "ニドラン♀$", 11 diff --git a/include/data2.h b/include/data2.h index 759efe3d3..98c9405a0 100644 --- a/include/data2.h +++ b/include/data2.h @@ -17,6 +17,15 @@ struct MonCoords u8 y_offset; }; +extern const struct OamData gOamData_81F96F0; +extern const struct OamData gOamData_81F96E8; +extern const struct SpriteFrameImage gSpriteImageTable_81E7A10[]; +extern const struct SpriteFrameImage gSpriteImageTable_81E7A30[]; +extern const struct SpriteFrameImage gSpriteImageTable_81E7A50[]; +extern const struct SpriteFrameImage gSpriteImageTable_81E7A70[]; +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7B70[]; +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7BEC[]; + extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18; extern const union AnimCmd *const gSpriteAnimTable_81E7C64[]; extern struct MonCoords gMonFrontPicCoords[]; diff --git a/ld_script.txt b/ld_script.txt index 516fa143d..7617236f8 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -333,7 +333,6 @@ SECTIONS { data/main_menu.o(.rodata); data/data2.o(.rodata); src/pokemon_data.o(.rodata); - data/pokemon.o(.rodata); . = ALIGN(4); data/trig.o(.rodata); data/util.o(.rodata); diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c index 7868a2c67..1b4cd92c0 100644 --- a/src/calculate_base_damage.c +++ b/src/calculate_base_damage.c @@ -41,7 +41,7 @@ extern struct BaseStats gBaseStats[]; extern struct SpriteTemplate gSpriteTemplate_8208288[]; extern u8 gTrainerClassToPicIndex[]; extern u8 gTrainerClassToNameIndex[]; -extern u8 gSecretBaseTrainerClasses[]; +// extern u8 gSecretBaseTrainerClasses[]; extern u8 gUnknown_08208238[]; extern u8 gUnknown_0820823C[]; extern u8 gStatStageRatios[]; diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 7fbfc1271..8301ca39f 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -42,7 +42,7 @@ extern const struct SpriteTemplate gSpriteTemplate_8208288[]; //array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.) extern u8 gTrainerClassToPicIndex[]; extern u8 gTrainerClassToNameIndex[]; -extern u8 gSecretBaseTrainerClasses[]; +extern u8 gSecretBaseTrainerClasses[][5]; extern u8 gUnknown_08208238[]; extern u8 gUnknown_0820823C[]; extern u8 gStatStageRatios[][2]; @@ -1191,13 +1191,13 @@ void CreateSecretBaseEnemyParty(struct SecretBaseRecord *secretBaseRecord) u8 GetSecretBaseTrainerPicIndex(void) { - u8 trainerClass = gSecretBaseTrainerClasses[(gSecretBaseRecord.trainerId[0] % 5) + (5 * gSecretBaseRecord.gender)]; + u8 trainerClass = gSecretBaseTrainerClasses[gSecretBaseRecord.gender][gSecretBaseRecord.trainerId[0] % 5]; return gTrainerClassToPicIndex[trainerClass]; } u8 GetSecretBaseTrainerNameIndex(void) { - u8 trainerClass = gSecretBaseTrainerClasses[(gSecretBaseRecord.trainerId[0] % 5) + (5 * gSecretBaseRecord.gender)]; + u8 trainerClass = gSecretBaseTrainerClasses[gSecretBaseRecord.gender][gSecretBaseRecord.trainerId[0] % 5]; return gTrainerClassToNameIndex[trainerClass]; } diff --git a/src/pokemon_data.c b/src/pokemon_data.c index 75790b0c3..bd2f4513f 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -4,7 +4,10 @@ #include "trainer.h" #include "abilities.h" #include "moves.h" +#include "hold_effects.h" #include "items.h" +#include "sprite.h" +#include "data2.h" #define LEVEL_UP_MOVE(lvl, move) ((lvl << 9) | move) @@ -16921,3 +16924,107 @@ const u16 *const gLevelUpLearnsets[] = { gChimechoLevelUpLearnset }; +const u8 gUnknown_08208238[] = { // Masks for getting PP Up count, also PP Max values + 0x03, 0x0c, 0x30, 0xc0 +}; + +const u8 gUnknown_0820823C[] = { // Masks for setting PP Up count + 0xFC, 0xF3, 0xCF, 0x3F +}; + +const u8 gUnknown_08208240[] = { // Values added to PP Up count + 0x01, 0x04, 0x10, 0x40 +}; + +const u8 gStatStageRatios[][2] = { + {10, 40}, // -6 + {10, 35}, // -5 + {10, 30}, // -4 + {10, 25}, // -3 + {10, 20}, // -2 + {10, 15}, // -1 + {10, 10}, // 0 + {15, 10}, // 1 + {20, 10}, // 2 + {25, 10}, // 3 + {30, 10}, // 4 + {35, 10}, // 5 + {40, 10} // 6 +}; + +const u8 unknownGameFreakAbbrev_820825E[] = _("ゲーフリ"); + +const u8 gHoldEffectToType[][2] = { + {HOLD_EFFECT_BUG_POWER, TYPE_BUG}, + {HOLD_EFFECT_STEEL_POWER, TYPE_STEEL}, + {HOLD_EFFECT_GROUND_POWER, TYPE_GROUND}, + {HOLD_EFFECT_ROCK_POWER, TYPE_ROCK}, + {HOLD_EFFECT_GRASS_POWER, TYPE_GRASS}, + {HOLD_EFFECT_DARK_POWER, TYPE_DARK}, + {HOLD_EFFECT_FIGHTING_POWER, TYPE_FIGHTING}, + {HOLD_EFFECT_ELECTRIC_POWER, TYPE_ELECTRIC}, + {HOLD_EFFECT_WATER_POWER, TYPE_WATER}, + {HOLD_EFFECT_FLYING_POWER, TYPE_FLYING}, + {HOLD_EFFECT_POISON_POWER, TYPE_POISON}, + {HOLD_EFFECT_ICE_POWER, TYPE_ICE}, + {HOLD_EFFECT_GHOST_POWER, TYPE_GHOST}, + {HOLD_EFFECT_PSYCHIC_POWER, TYPE_PSYCHIC}, + {HOLD_EFFECT_FIRE_POWER, TYPE_FIRE}, + {HOLD_EFFECT_DRAGON_POWER, TYPE_DRAGON}, + {HOLD_EFFECT_NORMAL_POWER, TYPE_NORMAL} +}; + +extern void sub_80105A0(struct Sprite *); +extern void oac_poke_opponent(struct Sprite *); + +const struct SpriteTemplate gSpriteTemplate_8208288[] = { + {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A10, gSpriteAffineAnimTable_81E7B70, sub_80105A0}, + {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A30, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent}, + {0xFFFF, 0, &gOamData_81F96F0, NULL, gSpriteImageTable_81E7A50, gSpriteAffineAnimTable_81E7B70, sub_80105A0}, + {0xFFFF, 0, &gOamData_81F96E8, NULL, gSpriteImageTable_81E7A70, gSpriteAffineAnimTable_81E7BEC, oac_poke_opponent}, +}; + +const u8 gSecretBaseTrainerClasses[][5] = { + // male + {TRAINER_CLASS_YOUNGSTER, TRAINER_CLASS_BUG_CATCHER, TRAINER_CLASS_RICH_BOY, TRAINER_CLASS_CAMPER, TRAINER_CLASS_COOL_TRAINER_M}, + // female + {TRAINER_CLASS_LASS, TRAINER_CLASS_SCHOOL_KID_F, TRAINER_CLASS_LADY, TRAINER_CLASS_PICNICKER, TRAINER_CLASS_COOL_TRAINER_F} +}; + +const u8 gUnknown_082082F2[] = { + MON_DATA_HP_EV, + MON_DATA_ATK_EV, + MON_DATA_DEF_EV, + MON_DATA_SPD_EV, + MON_DATA_SPDEF_EV, + MON_DATA_SPATK_EV +}; + +const u8 gUnknown_082082F8[] = {1, 1, 3, 2, 4, 6}; + +const s8 gUnknown_082082FE[][3] = { + // Happiness deltas + { 5, 3, 2}, + { 5, 3, 2}, + { 1, 1, 0}, + { 3, 2, 1}, + { 1, 1, 0}, + { 1, 1, 1}, + {-1, -1, -1}, + {-5, -5, -10}, + {-5, -5, -10} +}; + +const u16 gHMMoves[] = { + MOVE_CUT, + MOVE_FLY, + MOVE_SURF, + MOVE_STRENGTH, + MOVE_FLASH, + MOVE_ROCK_SMASH, + MOVE_WATERFALL, + MOVE_DIVE, + 0xffff +}; + +const u8 gJapaneseNidoranNames[][11] = {_("ニドラン♂"), _("ニドラン♀")}; -- cgit v1.2.3 From 2f0e6350b186e3f6d1db00459d6f5499b025cf10 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Wed, 21 Jun 2017 20:56:11 +0200 Subject: battle_h update, labelling battle2.c --- asm/battle_2.s | 2 +- asm/battle_3.s | 6 +- asm/battle_4.s | 74 +++++----- asm/battle_9.s | 6 +- include/battle.h | 438 ++++++++++++++++++++++++++++++++++++++++++++++++------- src/battle_2.c | 201 +++++++++++-------------- src/battle_ai.c | 249 ++++++++++++++++--------------- src/pokemon_3.c | 10 +- src/tv.c | 23 ++- 9 files changed, 654 insertions(+), 355 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index c1f75dad5..ed4140583 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -4092,7 +4092,7 @@ _08014522: adds r1, r2 adds r1, 0x20 ldrb r1, [r1] - bl sub_81074C4 + bl RecordAbilityBattle ldr r2, _08014568 @ =gSpecialStatuses ldrb r1, [r4] lsls r0, r1, 2 diff --git a/asm/battle_3.s b/asm/battle_3.s index ffe32f27b..8f3097c3d 100644 --- a/asm/battle_3.s +++ b/asm/battle_3.s @@ -8590,7 +8590,7 @@ _08019F7C: beq _08019F92 adds r1, r0, 0 mov r0, r10 - bl sub_81074C4 + bl RecordAbilityBattle _08019F92: mov r0, r9 add sp, 0x28 @@ -9185,7 +9185,7 @@ _0801A4A8: str r3, [sp, 0xC] adds r0, r7, 0 adds r1, r5, 0 - bl sub_81074F8 + bl RecordItemBattle bl _0801AD5A .align 2, 0 _0801A4C4: .4byte gBattleMoveDamage @@ -11475,7 +11475,7 @@ _0801B7C2: adds r0, 0x20 ldrb r1, [r0] adds r0, r5, 0 - bl sub_81074C4 + bl RecordAbilityBattle ldr r1, _0801B804 @ =gSpecialStatuses lsls r0, r5, 2 adds r0, r5 diff --git a/asm/battle_4.s b/asm/battle_4.s index 5436d3e55..6747abc6c 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -291,7 +291,7 @@ _0801BE7E: mov r2, r8 ldrb r0, [r2] ldrb r1, [r4] - bl sub_81074C4 + bl RecordAbilityBattle b _0801BFF4 .align 2, 0 _0801BEB8: .4byte gNoOfAllBanks @@ -1812,8 +1812,8 @@ _0801CAF0: .4byte gProtectStructs _0801CAF4: .4byte gBattlescriptCurrInstr thumb_func_end atk05_damagecalc1 - thumb_func_start sub_801CAF8 -sub_801CAF8: @ 801CAF8 + thumb_func_start AI_CalcDmg +AI_CalcDmg: @ 801CAF8 push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -1923,7 +1923,7 @@ _0801CBDC: .4byte 0x0001601f _0801CBE0: .4byte gStatuses3 _0801CBE4: .4byte gBattleMoves _0801CBE8: .4byte gProtectStructs - thumb_func_end sub_801CAF8 + thumb_func_end AI_CalcDmg thumb_func_start battle_attack_damage_modulate_by_effectivity battle_attack_damage_modulate_by_effectivity: @ 801CBEC @@ -2143,7 +2143,7 @@ _0801CD44: strb r2, [r0, 0x6] ldrb r0, [r4] ldrb r1, [r3] - bl sub_81074C4 + bl RecordAbilityBattle b _0801CE58 .align 2, 0 _0801CD94: .4byte gBattleMoves @@ -2300,7 +2300,7 @@ _0801CE94: strb r0, [r1, 0x6] ldrb r0, [r5] ldrb r1, [r3] - bl sub_81074C4 + bl RecordAbilityBattle _0801CED6: ldr r0, _0801CF1C @ =gBattleMoveFlags ldrb r1, [r0] @@ -2412,7 +2412,7 @@ _0801CF94: strb r1, [r0, 0x6] ldrb r0, [r3] movs r1, 0x1A - bl sub_81074C4 + bl RecordAbilityBattle b _0801D1A4 .align 2, 0 _0801CFC8: .4byte gBattleMons @@ -2657,7 +2657,7 @@ _0801D14E: mov r1, r8 ldrb r0, [r1] movs r1, 0x19 - bl sub_81074C4 + bl RecordAbilityBattle _0801D1A4: pop {r3,r4} mov r8, r3 @@ -2778,8 +2778,8 @@ _0801D27A: bx r0 thumb_func_end b_attack_effectivity_adapt - thumb_func_start move_effectiveness_something -move_effectiveness_something: @ 801D280 + thumb_func_start TypeCalc +TypeCalc: @ 801D280 push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -3020,7 +3020,7 @@ _0801D44C: .4byte gTypeEffectiveness _0801D450: .4byte gBattleMons _0801D454: .4byte gBankTarget _0801D458: .4byte gBattleMoves - thumb_func_end move_effectiveness_something + thumb_func_end TypeCalc thumb_func_start ai_rate_move ai_rate_move: @ 801D45C @@ -3280,7 +3280,7 @@ _0801D632: bcs _0801D670 ldrb r0, [r5] movs r1, 0x27 - bl sub_81074F8 + bl RecordItemBattle ldr r2, _0801D6FC @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 @@ -3484,7 +3484,7 @@ _0801D7E2: bcs _0801D820 ldrb r0, [r5] movs r1, 0x27 - bl sub_81074F8 + bl RecordItemBattle ldr r2, _0801D890 @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 @@ -5294,7 +5294,7 @@ _0801E64A: mov r3, r8 ldrb r0, [r3] movs r1, 0x11 - bl sub_81074C4 + bl RecordAbilityBattle ldr r4, _0801E67C @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 @@ -5417,7 +5417,7 @@ _0801E72E: mov r3, r8 ldrb r0, [r3] movs r1, 0x29 - bl sub_81074C4 + bl RecordAbilityBattle ldr r4, _0801E750 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 @@ -5608,7 +5608,7 @@ _0801E8A6: mov r3, r8 ldrb r0, [r3] movs r1, 0x7 - bl sub_81074C4 + bl RecordAbilityBattle ldr r4, _0801E8C8 @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 @@ -5651,7 +5651,7 @@ _0801E8FE: mov r1, r8 ldrb r0, [r1] movs r1, 0x11 - bl sub_81074C4 + bl RecordAbilityBattle ldr r4, _0801E93C @ =gBattlescriptCurrInstr ldr r0, [r4] adds r0, 0x1 @@ -6081,7 +6081,7 @@ _0801ECF4: mov r1, r8 ldrb r0, [r1] movs r1, 0x27 - bl sub_81074C4 + bl RecordAbilityBattle ldr r1, _0801ED10 @ =gBattlescriptCurrInstr ldr r0, _0801ED14 @ =BattleScript_FlinchPrevention str r0, [r1] @@ -6712,7 +6712,7 @@ _0801F214: strb r0, [r1] ldrb r0, [r7] ldrb r1, [r1] - bl sub_81074C4 + bl RecordAbilityBattle b _0801F5FA .align 2, 0 _0801F254: .4byte gBankAttacker @@ -7044,7 +7044,7 @@ _0801F500: str r0, [r1] ldrb r0, [r5] movs r1, 0x3C - bl sub_81074C4 + bl RecordAbilityBattle b _0801F5FA .align 2, 0 _0801F534: .4byte gLastUsedAbility @@ -8058,7 +8058,7 @@ _0801FD5C: ldrb r1, [r0] adds r0, r4, 0 _0801FD80: - bl sub_81074C4 + bl RecordAbilityBattle ldr r0, _0801FD98 @ =0x02000000 ldr r1, _0801FD9C @ =0x000160f8 adds r0, r1 @@ -12829,7 +12829,7 @@ atk4A_damageflags: @ 80222DC strb r2, [r0, 0x6] ldrb r0, [r7] ldrb r1, [r3] - bl sub_81074C4 + bl RecordAbilityBattle b _08022452 .align 2, 0 _08022340: .4byte gBattleMoves @@ -13030,7 +13030,7 @@ _08022494: strb r0, [r1, 0x6] ldrb r0, [r2] ldrb r1, [r3] - bl sub_81074C4 + bl RecordAbilityBattle _080224CE: ldr r0, _08022518 @ =gBattleMoveFlags ldrb r1, [r0] @@ -13310,7 +13310,7 @@ _080226EA: ldr r1, [sp, 0x50] str r1, [r0] _08022710: - bl sub_8010B88 + bl SwitchInClearStructs ldr r0, _08022778 @ =0x02000000 ldr r3, _08022754 @ =gActiveBank ldrb r2, [r3] @@ -17237,7 +17237,7 @@ _08024726: bcs _08024764 ldrb r0, [r5] movs r1, 0x27 - bl sub_81074F8 + bl RecordItemBattle ldr r2, _080247F0 @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 @@ -17919,7 +17919,7 @@ atk70_record_ability_usage_of_side: @ 8024CB8 ldrb r0, [r1] ldr r1, _08024CE8 @ =gLastUsedAbility ldrb r1, [r1] - bl sub_81074C4 + bl RecordAbilityBattle ldr r0, [r4] adds r0, 0x1 str r0, [r4] @@ -18739,7 +18739,7 @@ _08025354: adds r1, r6 adds r1, 0x20 ldrb r1, [r1] - bl sub_81074C4 + bl RecordAbilityBattle ldr r1, _08025380 @ =gBattlescriptCurrInstr ldr r0, _08025384 @ =gUnknown_081D9834 str r0, [r1] @@ -19746,7 +19746,7 @@ _08025B2C: str r4, [r5] ldrb r1, [r2] adds r0, r3, 0 - bl sub_81074C4 + bl RecordAbilityBattle b _08025B56 .align 2, 0 _08025B44: .4byte gBattleMons @@ -20345,7 +20345,7 @@ _08025FE0: strb r0, [r1] ldrb r0, [r2] ldrb r1, [r1] - bl sub_81074C4 + bl RecordAbilityBattle ldr r0, _0802602C @ =gActiveBank ldrb r1, [r0] lsls r0, r1, 2 @@ -20401,7 +20401,7 @@ _08026040: strb r0, [r1] ldrb r0, [r3] ldrb r1, [r1] - bl sub_81074C4 + bl RecordAbilityBattle b _08025F74 .align 2, 0 _08026090: .4byte gActiveBank @@ -20449,7 +20449,7 @@ _080260CA: strb r0, [r1] ldrb r0, [r3] ldrb r1, [r1] - bl sub_81074C4 + bl RecordAbilityBattle b _08025F74 .align 2, 0 _080260FC: .4byte gActiveBank @@ -21840,7 +21840,7 @@ _08026BCE: bcs _08026C0C ldrb r0, [r5] movs r1, 0x27 - bl sub_81074F8 + bl RecordItemBattle ldr r2, _08026C54 @ =gSpecialStatuses ldrb r1, [r5] lsls r0, r1, 2 @@ -21880,7 +21880,7 @@ _08026C0C: ldr r1, _08026C50 @ =gBankTarget ldrb r0, [r1] movs r1, 0x5 - bl sub_81074C4 + bl RecordAbilityBattle b _08026E40 .align 2, 0 _08026C4C: .4byte gStringBank @@ -22497,7 +22497,7 @@ _080270F0: strb r2, [r0] ldrb r0, [r5] movs r1, 0xC - bl sub_81074C4 + bl RecordAbilityBattle b _0802721C .align 2, 0 _0802714C: .4byte gBattlePartyID @@ -25469,7 +25469,7 @@ _080288C0: .4byte gBattleMons _080288C4: ldrb r1, [r1] adds r0, r3, 0 - bl sub_81074C4 + bl RecordAbilityBattle ldrb r0, [r5, 0x5] movs r1, 0x1 orrs r0, r1 @@ -25532,7 +25532,7 @@ _08028950: .4byte gBattleMons _08028954: ldrb r1, [r1] adds r0, r3, 0 - bl sub_81074C4 + bl RecordAbilityBattle ldr r1, _080289AC @ =gBattleCommunication ldrb r0, [r1, 0x5] orrs r0, r6 @@ -28815,7 +28815,7 @@ _0802A334: strb r0, [r1] ldrb r0, [r7] ldrb r1, [r1] - bl sub_81074C4 + bl RecordAbilityBattle b _0802A49A .align 2, 0 _0802A360: .4byte gBattlescriptCurrInstr diff --git a/asm/battle_9.s b/asm/battle_9.s index 887fbd702..fffb56dc9 100644 --- a/asm/battle_9.s +++ b/asm/battle_9.s @@ -1847,7 +1847,7 @@ _08036EA4: ldrb r1, [r0] adds r0, r4, 0 mov r2, r10 - bl move_effectiveness_something + bl TypeCalc movs r1, 0x2 ands r1, r0 cmp r1, 0 @@ -1976,11 +1976,11 @@ _08036F90: beq _08036FCC ldrb r0, [r6] mov r1, r10 - bl sub_801CAF8 + bl AI_CalcDmg ldrb r1, [r6] adds r0, r4, 0 mov r2, r10 - bl move_effectiveness_something + bl TypeCalc _08036FCC: mov r2, r8 ldr r0, [r2] diff --git a/include/battle.h b/include/battle.h index 395cf042a..a67dc70c5 100644 --- a/include/battle.h +++ b/include/battle.h @@ -28,8 +28,82 @@ #define AI_ACTION_UNK7 0x0040 #define AI_ACTION_UNK8 0x0080 +#define STATUS_SLEEP 0x7 +#define STATUS_POISON 0x8 +#define STATUS_BURN 0x10 +#define STATUS_FREEZE 0x20 +#define STATUS_PARALYSIS 0x40 +#define STATUS_TOXIC_POISON 0x80 + +#define STATUS2_CONFUSION 0x00000007 +#define STATUS2_UPROAR 0x00000070 +#define STATUS2_LOCK_CONFUSE 0x00000C00 +#define STATUS2_MULTIPLETURNS 0x00001000 +#define STATUS2_WRAPPED 0x0000E000 +#define STATUS2_FOCUS_ENERGRY 0x00100000 +#define STATUS2_TRANSFORMED 0x00200000 +#define STATUS2_RECHARGE 0x00400000 +#define STATUS2_RAGE 0x00800000 +#define STATUS2_SUBSTITUTE 0x01000000 +#define STATUS2_ESCAPE_PREVENTION 0x04000000 +#define STATUS2_NIGHTMARE 0x08000000 +#define STATUS2_CURSED 0x10000000 +#define STATUS2_FORESIGHT 0x20000000 + +#define STATUS3_LEECHSEED_RECEIVER 0x3 //two bits for the bank that gets hp +#define STATUS3_LEECHSEED 0x4 +#define STATUS3_ALWAYS_HITS 0x18 //two bits +#define STATUS3_PERISH_SONG 0x20 +#define STATUS3_ON_AIR 0x40 +#define STATUS3_UNDERGROUND 0x80 +#define STATUS3_MINIMIZED 0x100 +#define STATUS3_CHARGED_UP 0x200 +#define STATUS3_ROOTED 0x400 +#define STATUS3_GRUDGE 0x4000 +#define STATUS3_CANT_SCORE_A_CRIT 0x8000 +#define STATUS3_MUDSPORT 0x10000 +#define STATUS3_WATERSPORT 0x20000 +#define STATUS3_UNDERWATER 0x40000 + +#define HITMARKER_x20 0x0000020 +#define HITMARKER_DESTINYBOND 0x0000040 +#define HITMARKER_NO_ANIMATIONS 0x0000080 +#define HITMARKER_IGNORE_SUBSTITUTE 0x0000100 +#define HITMARKER_NO_ATTACKSTRING 0x0000200 +#define HITMARKER_ATTACKSTRING_PRINTED 0x0000400 +#define HITMARKER_NO_PPDEDUCT 0x0000800 +#define HITMARKER_IGNORE_SAFEGUARD 0x0002000 +#define HITMARKER_SYNCHRONISE_EFFECT 0x0004000 +#define HITMARKER_IGNORE_ON_AIR 0x0010000 +#define HITMARKER_IGNORE_UNDERGROUND 0x0020000 +#define HITMARKER_IGNORE_UNDERWATER 0x0040000 +#define HITMARKER_x80000 0x0080000 +#define HITMARKER_x100000 0x0100000 +#define HITMARKER_x400000 0x0400000 +#define HITMARKER_x800000 0x0800000 +#define HITMARKER_GRUDGE 0x1000000 +#define HITMARKER_OBEYS 0x2000000 +#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C)) +#define HITMARKER_UNK(bank) ((0x10000000 << bank)) + #define MAX_TRAINER_ITEMS 4 #define MAX_MON_MOVES 4 +#define MAX_BANKS_BATTLE 4 + +#define weather_rain 1 +#define weather_downpour 2 +#define weather_permament_rain 4 +#define WEATHER_RAINY ((weather_rain | weather_downpour | weather_permament_rain)) + +#define weather_sandstorm 8 +#define weather_permament_sandstorm 0x10 +#define WEATHER_SANDSTORMY ((weather_sandstorm | weather_permament_sandstorm)) + +#define weather_sun 0x20 +#define weather_permament_sun 0x40 +#define WEATHER_SUNNY ((weather_sun | weather_permament_sun)) + +#define weather_hail 0x80 // needed to match the hack that is get_item, thanks cam, someone else clean this up later. extern u8 unk_2000000[]; @@ -85,79 +159,247 @@ struct AI_ThinkingStruct /* 0x2016800 */ /* 0x18 */ u8 simulatedRNG[4]; }; -struct SmallBattleStruct1 -{ - u8 unk1; - u8 unk2; - u8 unk3; - u8 unk4; - // unknown size -}; - -struct SmallItemStruct -{ - u8 itemLocal[2][3]; -}; - struct BattleStruct /* 0x2000000 */ { u8 filler0[0x15DDE]; /*0x15DDE*/ u8 unk15DDE; /*0x15DDF*/ u8 unk15DDF; - /*0x15DE0*/ u8 filler15DE0[0x23C]; // 0xAF off? - struct SmallBattleStruct1 unk; - u8 filler1[0x68]; - /* 0x16089 */ u8 safariFleeRate; - u8 filler1_2[0x42]; - /* 0x160CB */ u8 linkPlayerIndex; - /* 0x160CC */ struct SmallItemStruct item; + /*0x15DE0*/ u8 filler15DE0[0x222]; + /*0x16002*/ u8 AnimTurn; + /*0x16003*/ u8 ScriptingActive; + /*0x16004*/ u8 WrappedMove1[4]; + /*0x16008*/ u8 WrappedMove2[4]; + /*0x1600C*/ u8 cmd49StateTracker; + /*0x1600D*/ u8 unk1600D; + /*0x1600E*/ u8 unk1600E; + /*0x1600F*/ u8 atk23StateTracker; + /*0x16010*/ u8 unk16010; + /*0x16011*/ u8 unk16011; + /*0x16012*/ u8 unk16012; + /*0x16013*/ u8 unk16013; + /*0x16014*/ u8 unk16014; + /*0x16015*/ u8 unk16015; + /*0x16016*/ u8 unk16016; + /*0x16017*/ u8 unk16017; + /*0x16018*/ u8 expGetterID; + /*0x16019*/ u8 unk16019; + /*0x1601A*/ u8 unk1601A; + /*0x1601B*/ u8 wildVictorySong; + /*0x1601C*/ u8 DynamicMoveType; + /*0x1601D*/ u8 unk1601D; + /*0x1601E*/ u8 statChanger; + /*0x1601F*/ u8 DmgMultiplier; + /*0x16020*/ u8 WrappedBy[4]; + /*0x16024*/ u8 unk16024; + /*0x16025*/ u8 unk16025; + /*0x16026*/ u8 unk16026; + /*0x16027*/ u8 unk16027; + /*0x16028*/ u8 unk16028; + /*0x16029*/ u8 unk16029; + /*0x1602A*/ u8 unk1602A; + /*0x1602B*/ u8 unk1602B; + /*0x1602C*/ u8 unk1602C; + /*0x1602D*/ u8 unk1602D; + /*0x1602E*/ u8 unk1602E; + /*0x1602F*/ u8 unk1602F; + /*0x16030*/ u8 unk16030; + /*0x16031*/ u8 unk16031; + /*0x16032*/ u8 unk16032; + /*0x16033*/ u8 unk16033; + /*0x16034*/ u8 unk16034; + /*0x16035*/ u8 unk16035; + /*0x16036*/ u8 unk16036; + /*0x16037*/ u8 unk16037; + /*0x16038*/ u8 unk16038; + /*0x16039*/ u8 unk16039; + /*0x1603A*/ u8 unk1603A; + /*0x1603B*/ u8 unk1603B; + /*0x1603C*/ u8 unk1603C; + /*0x1603D*/ u8 unk1603D; + /*0x1603E*/ u8 unk1603E; + /*0x1603F*/ u8 unk1603F; + /*0x16040*/ u8 unk16040; + /*0x16041*/ u8 unk16041; + /*0x16042*/ u8 unk16042; + /*0x16043*/ u8 unk16043; + /*0x16044*/ u8 unk16044; + /*0x16045*/ u8 unk16045; + /*0x16046*/ u8 unk16046; + /*0x16047*/ u8 unk16047; + /*0x16048*/ u8 unk16048; + /*0x16049*/ u8 unk16049; + /*0x1604A*/ u8 unk1604A; + /*0x1604B*/ u8 unk1604B; + /*0x1604C*/ u8 unk1604C; + /*0x1604D*/ u8 unk1604D; + /*0x1604E*/ u8 unk1604E; + /*0x1604F*/ u8 unk1604F; + /*0x16050*/ u8 unk16050; + /*0x16051*/ u8 unk16051; + /*0x16052*/ u8 unk16052; + /*0x16053*/ u8 unk16053; + /*0x16054*/ u8 unk16054; + /*0x16055*/ u8 unk16055; + /*0x16056*/ u8 unk16056; + /*0x16057*/ u8 unk16057; + /*0x16058*/ u8 unk16058; + /*0x16059*/ u8 unk16059; + /*0x1605A*/ u8 unk1605A; + /*0x1605B*/ u8 unk1605B; + /*0x1605C*/ u16 exp; + /*0x1605E*/ u8 unk1605E; + /*0x1605F*/ u8 sentInPokes; + /*0x16060*/ u8 unk16060[4]; + /*0x16064*/ u8 unk16064; + /*0x16065*/ u8 unk16065; + /*0x16066*/ u8 unk16066; + /*0x16067*/ u8 unk16067; + /*0x16068*/ u8 unk16068; + /*0x16069*/ u8 unk16069; + /*0x1606A*/ u8 unk1606A; + /*0x1606B*/ u8 unk1606B; + /*0x1606C*/ u8 unk1606C; + /*0x1606D*/ u8 unk1606D; + /*0x1606E*/ u8 unk1606E; + /*0x1606F*/ u8 unk1606F; + /*0x16070*/ u8 unk16070; + /*0x16071*/ u8 unk16071; + /*0x16072*/ u8 unk16072; + /*0x16073*/ u8 unk16073; + /*0x16074*/ u8 unk16074; + /*0x16075*/ u8 unk16075; + /*0x16076*/ u8 unk16076; + /*0x16077*/ u8 unk16077; + /*0x16078*/ u8 unk16078; + /*0x16079*/ u8 unk16079; + /*0x1607A*/ u8 unk1607A; + /*0x1607B*/ u8 unk1607B; + /*0x1607C*/ u8 unk1607C; + /*0x1607D*/ u8 unk1607D; + /*0x1607E*/ u8 unk1607E; + /*0x1607F*/ u8 unk1607F; + /*0x16080*/ u8 unk16080; + /*0x16081*/ u8 unk16081; + /*0x16082*/ u8 unk16082; + /*0x16083*/ u8 unk16083; + /*0x16084*/ u8 unk16084; + /*0x16085*/ u8 unk16085; + /*0x16086*/ u8 unk16086; + /*0x16087*/ u8 unk16087; + /*0x16088*/ u8 safariFleeRate; + /*0x16089*/ u8 unk16089; + /*0x1608A*/ u8 unk1608A; + /*0x1608B*/ u8 unk1608B; + /*0x1608C*/ u8 ChosenMoveID[4]; + /*0x16090*/ u8 unk16090; + /*0x16091*/ u8 unk16091; + /*0x16092*/ u8 unk16092; + /*0x16093*/ u8 unk16093; + /*0x16094*/ u8 unk16094; + /*0x16095*/ u8 unk16095; + /*0x16096*/ u8 unk16096; + /*0x16097*/ u8 unk16097; + /*0x16098*/ u8 unk16098; + /*0x16099*/ u8 unk16099; + /*0x1609A*/ u8 unk1609a; + /*0x1609B*/ u8 unk1609b; + /*0x1609C*/ u8 unk1609C; + /*0x1609D*/ u8 unk1609D; + /*0x1609E*/ u8 unk1609E; + /*0x1609F*/ u8 unk1609F; + /*0x160A0*/ u8 unk160a0; + /*0x160A1*/ u8 AnimTargetsHit; + /*0x160A2*/ u8 expGetterBank; + /*0x160A3*/ u8 unk160A3; + /*0x160A4*/ u8 AnimArg1; + /*0x160A5*/ u8 AnimArg2; + /*0x160A6*/ u8 unk160A6; + /*0x160A7*/ u8 unk160A7; + /*0x160A8*/ u8 unk160A8; + /*0x160A9*/ u8 unk160A9; + /*0x160AA*/ u8 unk160Aa; + /*0x160AB*/ u8 unk160Ab; + /*0x160AC*/ u8 unk160AC; + /*0x160AD*/ u8 unk160AD; + /*0x160AE*/ u8 unk160AE; + /*0x160AF*/ u8 unk160AF; + /*0x160B0*/ u8 unk160B0; + /*0x160B1*/ u8 unk160B1; + /*0x160B2*/ u8 unk160B2; + /*0x160B3*/ u8 unk160B3; + /*0x160B4*/ u8 unk160B4; + /*0x160B5*/ u8 unk160B5; + /*0x160B6*/ u8 unk160B6; + /*0x160B7*/ u8 unk160B7; + /*0x160B8*/ u8 unk160B8; + /*0x160B9*/ u8 unk160B9; + /*0x160BA*/ u8 unk160Ba; + /*0x160BB*/ u8 unk160Bb; + /*0x160BC*/ u8 unk160BC; + /*0x160BD*/ u8 unk160BD; + /*0x160BE*/ u8 unk160BE; + /*0x160BF*/ u8 unk160BF; + /*0x160C0*/ u8 unk160C0; + /*0x160C1*/ u8 unk160C1; + /*0x160C2*/ u8 unk160C2; + /*0x160C3*/ u8 unk160C3; + /*0x160C4*/ u8 unk160C4; + /*0x160C5*/ u8 unk160C5; + /*0x160C6*/ u8 unk160C6; + /*0x160C7*/ u8 unk160C7; + /*0x160C8*/ u8 unk160C8; + /*0x160C9*/ u8 unk160C9; + /*0x160CA*/ u8 SynchroniseEffect; + /*0x160CB*/ u8 linkPlayerIndex; + /*0x160CC*/ u16 UsedHeldItems[4]; u8 filler2[0x72E]; - /* 0x16800 */ struct AI_ThinkingStruct ai; /* 0x2016800 */ - u8 filler1681C[0x1E4]; /* 0x16A00 */ struct UnkBattleStruct1 unk_2016A00_2; }; -struct UnkBattleStruct4 +struct DisableStruct { /*0x00*/ u8 filler0[0x3]; - /*0x04*/ u16 unk4; - /*0x06*/ u16 unk6; - /*0x08*/ u8 unk8; - /*0x09*/ u8 unk9; - /*0x0A*/ u8 unkA; + /*0x04*/ u16 DisabledMove; + /*0x06*/ u16 EncoredMove; + /*0x08*/ u8 ProtectUses; + /*0x09*/ u8 StockpileCounter; + /*0x0A*/ u8 SubstituteHP; u8 fillerB[4]; u8 unkF_0:4; u8 unkF_4:4; u8 filler10[3]; /*0x13*/ u8 taunt:4; /*0x13*/ u8 unkC:4; - /*0x14*/ u8 unk14; - /*0x15*/ u8 unk15; - /*0x16*/ u8 unk16; - /*0x17*/ u8 filler17[0x4]; + /*0x14*/ u8 BankPreventingEscape; + /*0x15*/ u8 BankWithSureHit; + /*0x16*/ u8 IsFirstTurn; + /*0x17*/ u8 unk17; + /*0x18*/ u8 TruantCounter; + /*0x19*/ u8 RechargeCounter; + /*0x1A*/ u8 unk1A[2]; }; -struct Struct30042E0 +struct BattleResults { - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - u8 unk4; - u8 unk5_0:1; - u8 unk5_1:1; - u16 unk6; - u8 unk8[10]; + u8 PlayerFaintCounter; //0x0 + u8 OpponentFaintCounter; //0x1 + u8 unk2; //0x2 + u8 unk3; //0x3 + u8 unk4; //0x4 + u8 unk5_0:1; //0x5 + u8 unk5_1:1; //0x5 + u16 Poke1Species; //0x6 + u8 PokeString1[10]; //0x8 u8 unk12; - u8 unk13; - u8 unk14[10]; + u8 BattleTurnCounter; //0x13 + u8 PokeString2[10]; //0x14 u8 filler1E[2]; - u16 unk20; - u16 unk22; - u16 unk24; - u16 unk26; - u16 unk28; - u8 unk2A[10]; + u16 LastOpponentSpecies; //0x20 + u16 LastUsedMove; //0x22 + u16 OpponentMove; //0x24 + u16 OpponentSpecies; //0x26 + u16 CaughtPoke; //0x28 + u8 CaughtNick[10]; //0x2A u8 filler34[2]; u8 unk36[10]; }; @@ -202,8 +444,95 @@ struct Struct2017840 u8 unk9_0:1; }; +struct ProtectStruct +{ + /*field0*/ + u32 Protected:1; + u32 Endured:1; + u32 OnlyStruggle:1; + u32 HelpingHand:1; + u32 BounceMove:1; + u32 StealMove:1; + u32 Flag0Unknown:1; + u32 PrlzImmobility:1; + /*field1*/ + u32 ConfusionSelfDmg:1; + u32 NotEffective:1; + u32 ChargingTurn:1; + u32 FleeFlag:2; //for RunAway and Smoke Ball + u32 UsedImprisionedMove:1; + u32 LoveImmobility:1; + u32 UsedDisabledMove:1; + /*field2*/ + u32 UsedTauntedMove:1; + u32 Flag2Unknown:1; + u32 FlinchImmobility:1; + u32 NotFirstStrike:1; + u32 Free : 4; + /*field3*/ + u32 field3 : 8; + u32 PhysicalDmg; + u32 SpecialDmg; + u8 PhysicalBank; + u8 SpecialBank; + u16 fieldE; +}; + +struct SpecialStatus +{ + u8 statLowered : 1; + u8 lightningRodRedirected : 1; + u8 restoredBankSprite: 1; + u8 intimidatedPoke : 1; + u8 traced : 1; + u8 flag20 : 1; + u8 flag40 : 1; + u8 focusBanded : 1; + u8 field1[3]; + u32 moveturnLostHP; + u32 moveturnlostHP_physical; + u32 moveturnLostHP_special; + u8 moveturnPhysicalBank; + u8 moveturnSpecialBank; + u8 field12; + u8 field13; +}; + +struct sideTimer +{ + u8 reflectTimer; + u8 reflectBank; + u8 lightscreenTimer; + u8 lightscreenBank; + u8 mistTimer; + u8 mistBank; + u8 safeguardTimer; + u8 safeguardBank; + u8 followmeTimer; + u8 followmeTarget; + u8 spikesAmount; + u8 fieldB; +}; + +struct WishFutureKnock +{ + u8 futureSightCounter[MAX_BANKS_BATTLE]; + u8 futureSightAttacker[MAX_BANKS_BATTLE]; + s32 futureSightDmg[MAX_BANKS_BATTLE]; + u16 futureSightMove[MAX_BANKS_BATTLE]; + u8 wishCounter[MAX_BANKS_BATTLE]; + u8 wishUserBank[MAX_BANKS_BATTLE]; + u8 weatherDuration; + u8 knockedOffPokes[2]; +}; + extern struct UnkBattleStruct1 unk_2016A00; -extern struct UnkBattleStruct4 gDisableStructs[]; +extern struct DisableStruct gDisableStructs[MAX_BANKS_BATTLE]; +extern struct BattleResults gBattleResults; +extern struct ProtectStruct gProtectStructs[MAX_BANKS_BATTLE]; +extern struct SpecialStatus gSpecialStatuses[MAX_BANKS_BATTLE]; +extern struct sideTimer gSideTimer[2]; +extern struct WishFutureKnock gWishFutureKnock; extern struct AI_ThinkingStruct gAIThinkingSpace; // TODO: move ewram to global.h @@ -253,7 +582,6 @@ void sub_8010800(void); void sub_8010824(void); void sub_8010874(void); void bc_8012FAC(void); -void bc_load_battlefield(void); void sub_8011384(void); void bc_801333C(void); void bc_battle_begin_message(void); @@ -290,8 +618,8 @@ u8 AbilityBattleEffects(u8, u8, u8, u8, u16); u8 sub_801A02C(); // asm/battle_4.o -void sub_801CAF8(u8, u8); -void move_effectiveness_something(u16, u8, u8); +void AI_CalcDmg(u8, u8); +void TypeCalc(u16, u8, u8); // asm/battle_5.o void nullsub_91(void); diff --git a/src/battle_2.c b/src/battle_2.c index 2b13fc45d..3701da608 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -26,6 +26,9 @@ #include "trig.h" #include "unknown_task.h" #include "util.h" +#include "items.h" +#include "hold_effects.h" +#include "battle_move_effects.h" struct UnknownStruct6 { @@ -70,30 +73,6 @@ struct UnknownStruct12 u8 filler4[0x54]; }; -struct UnknownStruct13 -{ - u32 unk0_0:1; - u32 unk0_1:1; - u32 unk0_2:1; - u32 unk0_3:1; - u32 unk0_4:1; - u32 unk0_5:1; - u32 unk0_6:1; - u32 unk0_7:1; - u32 unk1_0:1; - u32 unk1_1:1; - u32 unk1_2:1; - u32 unk1_3:2; - u32 unk1_5:1; - u32 unk1_6:1; - u32 unk1_7:1; - u32 unk2_0:1; - u32 unk2_1:1; - u32 unk2_2:1; - u32 unk2_3:1; - u8 filler4[12]; -}; - extern const u16 gUnknown_08D004E0[]; extern const struct MonCoords gCastformFrontSpriteCoords[]; @@ -166,7 +145,6 @@ extern u16 gChosenMovesByBanks[]; extern u32 gHitMarker; extern u8 gUnknown_02024C70[]; extern u16 gSideAffecting[]; -extern u8 gSideTimer[][12]; extern u32 gStatuses3[]; //extern u8 gDisableStructs[][0x1C]; extern u16 gPauseCounterBattle; @@ -175,8 +153,6 @@ extern u16 gRandomTurnNumber; extern u8 gBattleCommunication[]; extern u8 gUnknown_02024D1F[]; // I don't actually know what type this is. extern u8 gBattleOutcome; -extern struct UnknownStruct13 gProtectStructs[]; -extern u8 gWishFutureKnock[]; extern u16 gUnknown_02024DE8; extern u8 gActionSelectionCursor[]; extern u8 gMoveSelectionCursor[]; @@ -199,7 +175,6 @@ extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; extern MainCallback gPreBattleCallback1; extern void (*gBattleMainFunc)(void); -extern struct Struct30042E0 gBattleResults; extern u8 gLeveledUpInBattle; extern void (*gBattleBankFunc[])(void); extern u8 gHealthboxIDs[]; @@ -219,6 +194,7 @@ extern u32 gBattleMoveDamage; extern struct BattlePokemon gBattleMons[]; extern u8 gBattleMoveFlags; +static void BattlePrepIntroSlide(void); void sub_800E7C4(void) { @@ -1495,43 +1471,43 @@ void sub_80105EC(struct Sprite *sprite) } } -void dp11b_obj_instanciate(u8 a, u8 b, s8 c, s8 d) +void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d) { u8 spriteId; - u8 r7; + u8 objectID; if (b) { - if (ewram17810[a].unk0_1) + if (ewram17810[bank].unk0_1) return; } else { - if (ewram17810[a].unk0_2) + if (ewram17810[bank].unk0_2) return; } spriteId = CreateInvisibleSpriteWithCallback(objc_dp11b_pingpong); if (b == TRUE) { - r7 = gHealthboxIDs[a]; - ewram17810[a].unk2 = spriteId; - ewram17810[a].unk0_1 = 1; + objectID = gHealthboxIDs[bank]; + ewram17810[bank].unk2 = spriteId; + ewram17810[bank].unk0_1 = 1; gSprites[spriteId].data0 = 0x80; } else { - r7 = gObjectBankIDs[a]; - ewram17810[a].unk3 = spriteId; - ewram17810[a].unk0_2 = 1; + objectID = gObjectBankIDs[bank]; + ewram17810[bank].unk3 = spriteId; + ewram17810[bank].unk0_2 = 1; gSprites[spriteId].data0 = 0xC0; } gSprites[spriteId].data1 = c; gSprites[spriteId].data2 = d; - gSprites[spriteId].data3 = r7; + gSprites[spriteId].data3 = objectID; gSprites[spriteId].data4 = b; - gSprites[r7].pos2.x = 0; - gSprites[r7].pos2.y = 0; + gSprites[objectID].pos2.x = 0; + gSprites[objectID].pos2.y = 0; } void dp11b_obj_free(u8 a, u8 b) @@ -1586,7 +1562,6 @@ void sub_8010800(void) void sub_8010824(void) { gBattleMainFunc(); - gActiveBank = 0; for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) gBattleBankFunc[gActiveBank](); @@ -1595,7 +1570,7 @@ void sub_8010824(void) void sub_8010874(void) { s32 i; - s32 j; + u32 j; u8 *r4; TurnValuesCleanUp(0); @@ -1609,7 +1584,7 @@ void sub_8010874(void) for (j = 0; j < (u32)0x1C; j++) r4[j] = 0; - gDisableStructs[i].unk16 = 2; + gDisableStructs[i].IsFirstTurn = 2; gUnknown_02024C70[i] = 0; gLastUsedMove[i] = 0; gMoveHitWith[i] = 0; @@ -1626,7 +1601,7 @@ void sub_8010874(void) gSideAffecting[i] = 0; r4 = (u8 *)&gSideTimer[i]; - for (j = 0; j < (u32)12; j++) + for (j = 0; j < 12; j++) r4[j] = 0; } @@ -1639,8 +1614,8 @@ void sub_8010874(void) r4[i] = 0; gHitMarker = 0; - if ((gBattleTypeFlags & 2) == 0 && gSaveBlock2.optionsBattleSceneOff == TRUE) - gHitMarker = 0x80; + if ((gBattleTypeFlags & BATTLE_TYPE_LINK) == 0 && gSaveBlock2.optionsBattleSceneOff == TRUE) + gHitMarker = HITMARKER_NO_ANIMATIONS; ewram16084 = gSaveBlock2.optionsBattleStyle; gMultiHitCounter = 0; gBattleOutcome = 0; @@ -1679,37 +1654,37 @@ void sub_8010874(void) ewram160C9 = 6; ewram16113 = 0; for (i = 0; i < 11; i++) - gBattleResults.unk36[i] = 0; - gBattleResults.unk13 = 0; - gBattleResults.unk0 = 0; - gBattleResults.unk1 = 0; + gBattleResults.unk36[i] = 0; + gBattleResults.BattleTurnCounter = 0; + gBattleResults.PlayerFaintCounter = 0; + gBattleResults.OpponentFaintCounter = 0; gBattleResults.unk2 = 0; gBattleResults.unk3 = 0; gBattleResults.unk4 = 0; gBattleResults.unk5_0 = 0; gBattleResults.unk5_1 = 0; - gBattleResults.unk20 = 0; - gBattleResults.unk22 = 0; - gBattleResults.unk24 = 0; - gBattleResults.unk6 = 0; - gBattleResults.unk26 = 0; - gBattleResults.unk28 = 0; + gBattleResults.LastOpponentSpecies = 0; + gBattleResults.LastUsedMove = 0; + gBattleResults.OpponentMove = 0; + gBattleResults.Poke1Species = 0; + gBattleResults.OpponentSpecies = 0; + gBattleResults.CaughtPoke = 0; for (i = 0; i < 10; i++) { - gBattleResults.unk8[i] = 0; - gBattleResults.unk14[i] = 0; - gBattleResults.unk2A[i] = 0; + gBattleResults.PokeString1[i] = 0; + gBattleResults.PokeString2[i] = 0; + gBattleResults.CaughtNick[i] = 0; } } -void sub_8010B88(void) +void SwitchInClearStructs(void) { - struct UnkBattleStruct4 sp0 = gDisableStructs[gActiveBank]; + struct DisableStruct sp0 = gDisableStructs[gActiveBank]; s32 i; u8 *ptr; u32 *ptr2; - if (gBattleMoves[gCurrentMove].effect != 0x7F) + if (gBattleMoves[gCurrentMove].effect != EFFECT_BATON_PASS) { for (i = 0; i < 8; i++) gBattleMons[gActiveBank].statStages[i] = 6; @@ -1717,27 +1692,27 @@ void sub_8010B88(void) { struct UnknownStruct12 *sp20 = &gUnknown_02024AD0[i]; - if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].unk14 == gActiveBank) + if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].BankPreventingEscape == gActiveBank) sp20->unk0 &= ~0x04000000; - if ((gStatuses3[i] & 0x18) && gDisableStructs[i].unk15 == gActiveBank) + if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].BankWithSureHit == gActiveBank) { - gStatuses3[i] &= ~0x18; - gDisableStructs[i].unk15 = 0; + gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; + gDisableStructs[i].BankWithSureHit = 0; } } } - if (gBattleMoves[gCurrentMove].effect == 0x7F) + if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { - gBattleMons[gActiveBank].status2 &= 0x15100007; - gStatuses3[gActiveBank] &= 0x3043F; + gBattleMons[gActiveBank].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGRY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED); + gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_RECEIVER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); for (i = 0; i < gNoOfAllBanks; i++) { if (GetBankSide(gActiveBank) != GetBankSide(i) - && (gStatuses3[i] & 0x18) != 0 - && (gDisableStructs[i].unk15 == gActiveBank)) + && (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0 + && (gDisableStructs[i].BankWithSureHit == gActiveBank)) { - gStatuses3[i] &= ~0x18; + gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; gStatuses3[i] |= 0x10; } } @@ -1763,15 +1738,15 @@ void sub_8010B88(void) for (i = 0; i < (u32)0x1C; i++) ptr[i] = 0; - if (gBattleMoves[gCurrentMove].effect == 0x7F) + if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { - gDisableStructs[gActiveBank].unkA = sp0.unkA; - gDisableStructs[gActiveBank].unk15 = sp0.unk15; + gDisableStructs[gActiveBank].SubstituteHP = sp0.SubstituteHP; + gDisableStructs[gActiveBank].BankWithSureHit = sp0.BankWithSureHit; gDisableStructs[gActiveBank].unkF_0 = sp0.unkF_0; gDisableStructs[gActiveBank].unkF_4 = sp0.unkF_4; } - gDisableStructs[gActiveBank].unk16 = 2; + gDisableStructs[gActiveBank].IsFirstTurn = 2; gLastUsedMove[gActiveBank] = 0; gMoveHitWith[gActiveBank] = 0; gUnknown_02024C44[gActiveBank] = 0; @@ -1806,12 +1781,12 @@ void UndoEffectsAfterFainting(void) gStatuses3[gActiveBank] = 0; for (i = 0; i < gNoOfAllBanks; i++) { - if ((gBattleMons[i].status2 & 0x4000000) && gDisableStructs[i].unk14 == gActiveBank) - gBattleMons[i].status2 &= ~0x4000000; + if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].BankPreventingEscape == gActiveBank) + gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION; if (gBattleMons[i].status2 & (gBitTable[gActiveBank] << 16)) gBattleMons[i].status2 &= ~(gBitTable[gActiveBank] << 16); - if ((gBattleMons[i].status2 & 0xE000) && ewram[0x16020 + i] == gActiveBank) - gBattleMons[i].status2 &= ~0xE000; + if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && ewram[0x16020 + i] == gActiveBank) + gBattleMons[i].status2 &= ~STATUS2_WRAPPED; } gActionSelectionCursor[gActiveBank] = 0; gMoveSelectionCursor[gActiveBank] = 0; @@ -1819,27 +1794,27 @@ void UndoEffectsAfterFainting(void) ptr = (u8 *)&gDisableStructs[gActiveBank]; for (i = 0; i < (u32)0x1C; i++) ptr[i] = 0; - gProtectStructs[gActiveBank].unk0_0 = 0; - gProtectStructs[gActiveBank].unk0_1 = 0; - gProtectStructs[gActiveBank].unk0_2 = 0; - gProtectStructs[gActiveBank].unk0_3 = 0; - gProtectStructs[gActiveBank].unk0_4 = 0; - gProtectStructs[gActiveBank].unk0_5 = 0; - gProtectStructs[gActiveBank].unk0_6 = 0; - gProtectStructs[gActiveBank].unk0_7 = 0; - gProtectStructs[gActiveBank].unk1_0 = 0; - gProtectStructs[gActiveBank].unk1_1 = 0; - gProtectStructs[gActiveBank].unk1_2 = 0; - gProtectStructs[gActiveBank].unk1_3 = 0; - gProtectStructs[gActiveBank].unk1_5 = 0; - gProtectStructs[gActiveBank].unk1_6 = 0; - gProtectStructs[gActiveBank].unk1_7 = 0; - gProtectStructs[gActiveBank].unk2_0 = 0; - gProtectStructs[gActiveBank].unk2_1 = 0; - gProtectStructs[gActiveBank].unk2_2 = 0; - gProtectStructs[gActiveBank].unk2_3 = 0; - - gDisableStructs[gActiveBank].unk16 = 2; + gProtectStructs[gActiveBank].Protected = 0; + gProtectStructs[gActiveBank].Endured = 0; + gProtectStructs[gActiveBank].OnlyStruggle = 0; + gProtectStructs[gActiveBank].HelpingHand = 0; + gProtectStructs[gActiveBank].BounceMove = 0; + gProtectStructs[gActiveBank].StealMove = 0; + gProtectStructs[gActiveBank].Flag0Unknown = 0; + gProtectStructs[gActiveBank].PrlzImmobility = 0; + gProtectStructs[gActiveBank].ConfusionSelfDmg = 0; + gProtectStructs[gActiveBank].NotEffective = 0; + gProtectStructs[gActiveBank].ChargingTurn = 0; + gProtectStructs[gActiveBank].FleeFlag = 0; + gProtectStructs[gActiveBank].UsedImprisionedMove = 0; + gProtectStructs[gActiveBank].LoveImmobility = 0; + gProtectStructs[gActiveBank].UsedDisabledMove = 0; + gProtectStructs[gActiveBank].UsedTauntedMove = 0; + gProtectStructs[gActiveBank].Flag2Unknown = 0; + gProtectStructs[gActiveBank].FlinchImmobility = 0; + gProtectStructs[gActiveBank].NotFirstStrike = 0; + + gDisableStructs[gActiveBank].IsFirstTurn = 2; gLastUsedMove[gActiveBank] = 0; gMoveHitWith[gActiveBank] = 0; gUnknown_02024C44[gActiveBank] = 0; @@ -1878,7 +1853,7 @@ void bc_8012FAC(void) { gBattleCommunication[1]++; if (gBattleCommunication[1] == gNoOfAllBanks) - gBattleMainFunc = bc_load_battlefield; + gBattleMainFunc = BattlePrepIntroSlide; else gBattleCommunication[0] = 0; } @@ -1886,7 +1861,7 @@ void bc_8012FAC(void) } } -void bc_load_battlefield(void) +static void BattlePrepIntroSlide(void) { if (gBattleExecBuffer == 0) { @@ -2294,7 +2269,7 @@ void BattleTurnPassed(void) if (sub_80170DC() != 0) return; TurnValuesCleanUp(0); - gHitMarker &= ~0x200; + gHitMarker &= ~HITMARKER_NO_ATTACKSTRING; gHitMarker &= ~0x80000; gHitMarker &= ~0x400000; gHitMarker &= ~0x100000; @@ -2311,8 +2286,8 @@ void BattleTurnPassed(void) gBattleMainFunc = sub_80138F0; return; } - if (gBattleResults.unk13 < 0xFF) - gBattleResults.unk13++; + if (gBattleResults.BattleTurnCounter < 0xFF) + gBattleResults.BattleTurnCounter++; for (i = 0; i < gNoOfAllBanks; i++) { gActionForBanks[i] = 0xFF; @@ -2331,12 +2306,12 @@ u8 CanRunFromBattle(void) u8 r6; s32 i; - if (gBattleMons[gActiveBank].item == 0xAF) + if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY) r2 = gEnigmaBerries[gActiveBank].holdEffect; else r2 = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item); gStringBank = gActiveBank; - if (r2 == 0x25) + if (r2 == HOLD_EFFECT_CAN_ALWAYS_RUN) return 0; if (gBattleTypeFlags & BATTLE_TYPE_LINK) return 0; @@ -2346,7 +2321,7 @@ u8 CanRunFromBattle(void) for (i = 0; i < gNoOfAllBanks; i++) { if (r6 != GetBankSide(i) - && gBattleMons[i].ability == 0x17) + && gBattleMons[i].ability == ABILITY_SHADOW_TAG) { ewram16003 = i; gLastUsedAbility = gBattleMons[i].ability; @@ -2357,7 +2332,7 @@ u8 CanRunFromBattle(void) && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE && gBattleMons[gActiveBank].type1 != 2 && gBattleMons[gActiveBank].type2 != 2 - && gBattleMons[i].ability == 0x47) + && gBattleMons[i].ability == ABILITY_ARENA_TRAP) { ewram16003 = i; gLastUsedAbility = gBattleMons[i].ability; @@ -2365,7 +2340,7 @@ u8 CanRunFromBattle(void) return 2; } } - i = AbilityBattleEffects(15, gActiveBank, 0x2A, 0, 0); + i = AbilityBattleEffects(15, gActiveBank, ABILITY_MAGNET_PULL, 0, 0); if (i != 0 && (gBattleMons[gActiveBank].type1 == 8 || gBattleMons[gActiveBank].type2 == 8)) { ewram16003 = i - 1; @@ -2373,7 +2348,7 @@ u8 CanRunFromBattle(void) gBattleCommunication[5] = 2; return 2; } - if ((gBattleMons[gActiveBank].status2 & 0x0400E000) || (gStatuses3[gActiveBank] & 0x400)) + if ((gBattleMons[gActiveBank].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED)) || (gStatuses3[gActiveBank] & STATUS3_ROOTED)) { gBattleCommunication[5] = 0; return 1; diff --git a/src/battle_ai.c b/src/battle_ai.c index fabe0b61d..b31df7ba0 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -15,7 +15,7 @@ extern u16 gBattleTypeFlags; extern u16 gBattleWeather; extern u8 gActiveBank; -extern u8 gBattlePartyID[][2]; +extern u16 gBattlePartyID[MAX_BANKS_BATTLE]; extern u16 gCurrentMove; extern int gBattleMoveDamage; extern u8 gBankAttacker; @@ -23,13 +23,10 @@ extern u8 gBankTarget; extern u8 gAbsentBankFlags; extern u8 gBattleMoveFlags; extern u16 gDynamicBasePower; -extern u16 gLastUsedMove[]; -extern u32 gUnknown_02024ACC[]; -extern u32 gStatuses3[]; -extern u16 gSideAffecting[]; -extern struct BattlePokemon gBattleMons[]; -extern struct BattlePokemon gUnknown_02024A8C[]; -extern u8 gBattleResults[]; +extern u16 gLastUsedMove[MAX_BANKS_BATTLE]; +extern u32 gStatuses3[MAX_BANKS_BATTLE]; +extern u16 gSideAffecting[2]; +extern struct BattlePokemon gBattleMons[MAX_BANKS_BATTLE]; extern u8 gCritMultiplier; extern u16 gTrainerBattleOpponent; extern u8 *BattleAIs[]; @@ -120,7 +117,7 @@ static void BattleAICmd_get_gender(void); static void BattleAICmd_is_first_turn(void); static void BattleAICmd_get_stockpile_count(void); static void BattleAICmd_is_double_battle(void); -static void BattleAICmd_get_item(void); +static void BattleAICmd_get_used_item(void); static void BattleAICmd_get_move_type_from_result(void); static void BattleAICmd_get_move_power_from_result(void); static void BattleAICmd_get_move_effect_from_result(void); @@ -142,84 +139,84 @@ typedef void (*BattleAICmdFunc)(void); static const BattleAICmdFunc sBattleAICmdTable[] = { - BattleAICmd_if_random_less_than, - BattleAICmd_if_random_greater_than, - BattleAICmd_if_random_equal, - BattleAICmd_if_random_not_equal, - BattleAICmd_score, - BattleAICmd_if_hp_less_than, - BattleAICmd_if_hp_more_than, - BattleAICmd_if_hp_equal, - BattleAICmd_if_hp_not_equal, - BattleAICmd_if_status, - BattleAICmd_if_not_status, - BattleAICmd_if_status2, - BattleAICmd_if_not_status2, - BattleAICmd_if_status3, - BattleAICmd_if_not_status3, - BattleAICmd_if_status4, - BattleAICmd_if_not_status4, - BattleAICmd_if_less_than, - BattleAICmd_if_more_than, - BattleAICmd_if_equal, - BattleAICmd_if_not_equal, - BattleAICmd_if_less_than_32, - BattleAICmd_if_more_than_32, - BattleAICmd_if_equal_32, - BattleAICmd_if_not_equal_32, - BattleAICmd_if_move, - BattleAICmd_if_not_move, - BattleAICmd_if_in_bytes, - BattleAICmd_if_not_in_bytes, - BattleAICmd_if_in_words, - BattleAICmd_if_not_in_words, - BattleAICmd_if_user_can_damage, - BattleAICmd_if_user_cant_damage, - BattleAICmd_get_turn_count, - BattleAICmd_get_type, - BattleAICmd_get_move_power, - BattleAICmd_is_most_powerful_move, - BattleAICmd_get_move, - BattleAICmd_if_arg_equal, - BattleAICmd_if_arg_not_equal, - BattleAICmd_if_would_go_first, - BattleAICmd_if_would_not_go_first, - BattleAICmd_nullsub_2A, - BattleAICmd_nullsub_2B, - BattleAICmd_count_alive_pokemon, - BattleAICmd_get_considered_move, - BattleAICmd_get_considered_move_effect, - BattleAICmd_get_ability, - BattleAICmd_get_highest_possible_damage, - BattleAICmd_if_damage_bonus, - BattleAICmd_nullsub_32, - BattleAICmd_nullsub_33, - BattleAICmd_if_status_in_party, - BattleAICmd_if_status_not_in_party, - BattleAICmd_get_weather, - BattleAICmd_if_effect, - BattleAICmd_if_not_effect, - BattleAICmd_if_stat_level_less_than, - BattleAICmd_if_stat_level_more_than, - BattleAICmd_if_stat_level_equal, - BattleAICmd_if_stat_level_not_equal, - BattleAICmd_if_can_faint, - BattleAICmd_if_cant_faint, - BattleAICmd_if_has_move, - BattleAICmd_if_dont_have_move, - BattleAICmd_if_move_effect, - BattleAICmd_if_not_move_effect, - BattleAICmd_if_last_move_did_damage, - BattleAICmd_if_encored, - BattleAICmd_flee, - BattleAICmd_if_random_100, - BattleAICmd_watch, - BattleAICmd_get_hold_effect, - BattleAICmd_get_gender, - BattleAICmd_is_first_turn, - BattleAICmd_get_stockpile_count, - BattleAICmd_is_double_battle, - BattleAICmd_get_item, + BattleAICmd_if_random_less_than, //0x0 + BattleAICmd_if_random_greater_than, //0x1 + BattleAICmd_if_random_equal, //0x2 + BattleAICmd_if_random_not_equal, //0x3 + BattleAICmd_score, //0x4 + BattleAICmd_if_hp_less_than, //0x5 + BattleAICmd_if_hp_more_than, //0x6 + BattleAICmd_if_hp_equal, //0x7 + BattleAICmd_if_hp_not_equal, //0x8 + BattleAICmd_if_status, //0x9 + BattleAICmd_if_not_status, //0xA + BattleAICmd_if_status2, //0xB + BattleAICmd_if_not_status2, //0xC + BattleAICmd_if_status3, //0xD + BattleAICmd_if_not_status3, //0xE + BattleAICmd_if_status4, //0xF + BattleAICmd_if_not_status4, //0x10 + BattleAICmd_if_less_than, //0x11 + BattleAICmd_if_more_than, //0x12 + BattleAICmd_if_equal, //0x13 + BattleAICmd_if_not_equal, //0x14 + BattleAICmd_if_less_than_32, //0x15 + BattleAICmd_if_more_than_32, //0x16 + BattleAICmd_if_equal_32, //0x17 + BattleAICmd_if_not_equal_32, //0x18 + BattleAICmd_if_move, //0x19 + BattleAICmd_if_not_move, //0x1A + BattleAICmd_if_in_bytes, //0x1B + BattleAICmd_if_not_in_bytes, //0x1C + BattleAICmd_if_in_words, //0x1D + BattleAICmd_if_not_in_words, //0x1E + BattleAICmd_if_user_can_damage, //0x1F + BattleAICmd_if_user_cant_damage, //0x20 + BattleAICmd_get_turn_count, //0x21 + BattleAICmd_get_type, //0x22 + BattleAICmd_get_move_power, //0x23 + BattleAICmd_is_most_powerful_move, //0x24 + BattleAICmd_get_move, //0x25 + BattleAICmd_if_arg_equal, //0x26 + BattleAICmd_if_arg_not_equal, //0x27 + BattleAICmd_if_would_go_first, //0x28 + BattleAICmd_if_would_not_go_first, //0x29 + BattleAICmd_nullsub_2A, //0x2A + BattleAICmd_nullsub_2B, //0x2B + BattleAICmd_count_alive_pokemon, //0x2C + BattleAICmd_get_considered_move, //0x2D + BattleAICmd_get_considered_move_effect, //0x2E + BattleAICmd_get_ability, //0x2F + BattleAICmd_get_highest_possible_damage, //0x30 + BattleAICmd_if_damage_bonus, //0x31 + BattleAICmd_nullsub_32, //0x32 + BattleAICmd_nullsub_33, //0x33 + BattleAICmd_if_status_in_party, //0x34 + BattleAICmd_if_status_not_in_party, //0x35 + BattleAICmd_get_weather, //0x36 + BattleAICmd_if_effect, //0x37 + BattleAICmd_if_not_effect, //0x38 + BattleAICmd_if_stat_level_less_than, //0x39 + BattleAICmd_if_stat_level_more_than, //0x3A + BattleAICmd_if_stat_level_equal, //0x3B + BattleAICmd_if_stat_level_not_equal, //0x3C + BattleAICmd_if_can_faint, //0x3D + BattleAICmd_if_cant_faint, //0x3E + BattleAICmd_if_has_move, //0x3F + BattleAICmd_if_dont_have_move, //0x40 + BattleAICmd_if_move_effect, //0x41 + BattleAICmd_if_not_move_effect, //0x42 + BattleAICmd_if_last_move_did_damage, //0x43 + BattleAICmd_if_encored, //0x44 + BattleAICmd_flee, //0x45 + BattleAICmd_if_random_100, //0x46 + BattleAICmd_watch, //0x47 + BattleAICmd_get_hold_effect, //0x48 + BattleAICmd_get_gender, //0x49 + BattleAICmd_is_first_turn, //0x4A + BattleAICmd_get_stockpile_count, //0x4B + BattleAICmd_is_double_battle, //0x4C + BattleAICmd_get_used_item, //0x4D BattleAICmd_get_move_type_from_result, BattleAICmd_get_move_power_from_result, BattleAICmd_get_move_effect_from_result, @@ -449,13 +446,13 @@ void unref_sub_81074A0(u8 a) UNK_2016A00_STRUCT->movesUsed[a / 2][i] = 0; } -void sub_81074C4(u8 a, u8 b) +void RecordAbilityBattle(u8 a, u8 b) { if (GetBankSide(a) == 0) UNK_2016A00_STRUCT->unk20[GetBankIdentity(a) & 1] = b; } -void sub_81074F8(u8 a, u8 b) +void RecordItemBattle(u8 a, u8 b) { if (GetBankSide(a) == 0) UNK_2016A00_STRUCT->unk22[GetBankIdentity(a) & 1] = b; @@ -899,7 +896,7 @@ static void BattleAICmd_if_user_cant_damage(void) static void BattleAICmd_get_turn_count(void) { - AI_THINKING_STRUCT->funcResult = gBattleResults[19]; + AI_THINKING_STRUCT->funcResult = gBattleResults.BattleTurnCounter; gAIScriptPtr += 1; } @@ -946,8 +943,8 @@ static void BattleAICmd_is_most_powerful_move(void) && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF) { gDynamicBasePower = 0; - unk_2000000[0x1601C] = 0; // why is this a manual array? - unk_2000000[0x1601F] = 1; + ewram[0x1601C] = 0; // why is this a manual array? + ewram[0x1601F] = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; @@ -965,8 +962,8 @@ static void BattleAICmd_is_most_powerful_move(void) && gBattleMoves[gBattleMons[gBankAttacker].moves[i]].power > 1) { gCurrentMove = gBattleMons[gBankAttacker].moves[i]; - sub_801CAF8(gBankAttacker, gBankTarget); - move_effectiveness_something(gCurrentMove, gBankAttacker, gBankTarget); + AI_CalcDmg(gBankAttacker, gBankTarget); + TypeCalc(gCurrentMove, gBankAttacker, gBankTarget); damages[i] = (gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[i]) / 100; if (damages[i] == 0) // moves always do at least 1 damage. @@ -1135,11 +1132,11 @@ _081082BA:\n\ ldrb r0, [r7]\n\ ldr r4, _08108354 @ =gBankTarget\n\ ldrb r1, [r4]\n\ - bl sub_801CAF8\n\ + bl AI_CalcDmg\n\ ldrh r0, [r5]\n\ ldrb r1, [r7]\n\ ldrb r2, [r4]\n\ - bl move_effectiveness_something\n\ + bl TypeCalc\n\ mov r4, sp\n\ add r4, r8\n\ ldr r2, _08108358 @ =gBattleMoveDamage\n\ @@ -1312,14 +1309,14 @@ static void BattleAICmd_count_alive_pokemon(void) if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { u32 status; - var = gBattlePartyID[index][0]; + var = gBattlePartyID[index]; status = GetBankIdentity(index) ^ 2; - var2 = gBattlePartyID[GetBankByPlayerAI(status)][0]; + var2 = gBattlePartyID[GetBankByPlayerAI(status)]; } else { - var = gBattlePartyID[index][0]; - var2 = gBattlePartyID[index][0]; + var = gBattlePartyID[index]; + var2 = gBattlePartyID[index]; } for (i = 0; i < 6; i++) @@ -1415,8 +1412,8 @@ static void BattleAICmd_get_highest_possible_damage(void) s32 i; gDynamicBasePower = 0; - BATTLE_STRUCT->unk.unk1 = 0; - BATTLE_STRUCT->unk.unk4 = 1; + BATTLE_STRUCT->DynamicMoveType = 0; + BATTLE_STRUCT->DmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; AI_THINKING_STRUCT->funcResult = 0; @@ -1428,7 +1425,7 @@ static void BattleAICmd_get_highest_possible_damage(void) if (gCurrentMove) { - move_effectiveness_something(gCurrentMove, gBankAttacker, gBankTarget); + TypeCalc(gCurrentMove, gBankAttacker, gBankTarget); // reduce by 1/3. if (gBattleMoveDamage == 120) @@ -1455,15 +1452,15 @@ static void BattleAICmd_if_damage_bonus(void) u8 damageVar; gDynamicBasePower = 0; - BATTLE_STRUCT->unk.unk1 = 0; - BATTLE_STRUCT->unk.unk4 = 1; + BATTLE_STRUCT->DynamicMoveType = 0; + BATTLE_STRUCT->DmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; gBattleMoveDamage = 40; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; - move_effectiveness_something(gCurrentMove, gBankAttacker, gBankTarget); + TypeCalc(gCurrentMove, gBankAttacker, gBankTarget); if (gBattleMoveDamage == 120) gBattleMoveDamage = 80; @@ -1565,13 +1562,13 @@ static void BattleAICmd_if_status_not_in_party(void) static void BattleAICmd_get_weather(void) { - if (gBattleWeather & 7) + if (gBattleWeather & WEATHER_RAINY) AI_THINKING_STRUCT->funcResult = WEATHER_RAIN; - if (gBattleWeather & 0x18) + if (gBattleWeather & WEATHER_SANDSTORMY) AI_THINKING_STRUCT->funcResult = WEATHER_SANDSTORM; - if (gBattleWeather & 0x60) + if (gBattleWeather & WEATHER_SUNNY) AI_THINKING_STRUCT->funcResult = WEATHER_SUN; - if (gBattleWeather & 0x80) + if (gBattleWeather & weather_hail) AI_THINKING_STRUCT->funcResult = WEATHER_HAIL; gAIScriptPtr += 1; @@ -1662,13 +1659,13 @@ static void BattleAICmd_if_can_faint(void) } gDynamicBasePower = 0; - BATTLE_STRUCT->unk.unk1 = 0; - BATTLE_STRUCT->unk.unk4 = 1; + BATTLE_STRUCT->DynamicMoveType = 0; + BATTLE_STRUCT->DmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; - sub_801CAF8(gBankAttacker, gBankTarget); - move_effectiveness_something(gCurrentMove, gBankAttacker, gBankTarget); + AI_CalcDmg(gBankAttacker, gBankTarget); + TypeCalc(gCurrentMove, gBankAttacker, gBankTarget); gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100; @@ -1691,13 +1688,13 @@ static void BattleAICmd_if_cant_faint(void) } gDynamicBasePower = 0; - BATTLE_STRUCT->unk.unk1 = 0; - BATTLE_STRUCT->unk.unk4 = 1; + BATTLE_STRUCT->DynamicMoveType = 0; + BATTLE_STRUCT->DmgMultiplier = 1; gBattleMoveFlags = 0; gCritMultiplier = 1; gCurrentMove = AI_THINKING_STRUCT->moveConsidered; - sub_801CAF8(gBankAttacker, gBankTarget); - move_effectiveness_something(gCurrentMove, gBankAttacker, gBankTarget); + AI_CalcDmg(gBankAttacker, gBankTarget); + TypeCalc(gCurrentMove, gBankAttacker, gBankTarget); gBattleMoveDamage = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[AI_THINKING_STRUCT->movesetIndex] / 100; @@ -1846,7 +1843,7 @@ static void BattleAICmd_if_last_move_did_damage(void) if (gAIScriptPtr[2] == 0) { - if (gDisableStructs[index].unk4 == 0) + if (gDisableStructs[index].DisabledMove == 0) { gAIScriptPtr += 7; return; @@ -1859,7 +1856,7 @@ static void BattleAICmd_if_last_move_did_damage(void) gAIScriptPtr += 7; return; } - else if (gDisableStructs[index].unk6 != 0) + else if (gDisableStructs[index].EncoredMove != 0) { gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3); return; @@ -1872,7 +1869,7 @@ static void BattleAICmd_if_encored(void) switch (gAIScriptPtr[1]) { case 0: // _08109348 - if (gDisableStructs[gActiveBank].unk4 == AI_THINKING_STRUCT->moveConsidered) + if (gDisableStructs[gActiveBank].DisabledMove == AI_THINKING_STRUCT->moveConsidered) { gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); return; @@ -1880,7 +1877,7 @@ static void BattleAICmd_if_encored(void) gAIScriptPtr += 6; return; case 1: // _08109370 - if (gDisableStructs[gActiveBank].unk6 == AI_THINKING_STRUCT->moveConsidered) + if (gDisableStructs[gActiveBank].EncoredMove == AI_THINKING_STRUCT->moveConsidered) { gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2); return; @@ -1957,7 +1954,7 @@ static void BattleAICmd_is_first_turn(void) else index = gBankTarget; - AI_THINKING_STRUCT->funcResult = gDisableStructs[index].unk16; + AI_THINKING_STRUCT->funcResult = gDisableStructs[index].IsFirstTurn; gAIScriptPtr += 2; } @@ -1971,7 +1968,7 @@ static void BattleAICmd_get_stockpile_count(void) else index = gBankTarget; - AI_THINKING_STRUCT->funcResult = gDisableStructs[index].unk9; + AI_THINKING_STRUCT->funcResult = gDisableStructs[index].StockpileCounter; gAIScriptPtr += 2; } @@ -1983,7 +1980,7 @@ static void BattleAICmd_is_double_battle(void) gAIScriptPtr += 1; } -static void BattleAICmd_get_item(void) +static void BattleAICmd_get_used_item(void) { u8 index; @@ -2028,7 +2025,7 @@ static void BattleAICmd_get_protect_count(void) else index = gBankTarget; - AI_THINKING_STRUCT->funcResult = gDisableStructs[index].unk8; + AI_THINKING_STRUCT->funcResult = gDisableStructs[index].ProtectUses; gAIScriptPtr += 2; } diff --git a/src/pokemon_3.c b/src/pokemon_3.c index cb8eb2a46..d3ecf04dd 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1296,15 +1296,15 @@ void BoxMonRestorePP(struct BoxPokemon *boxMon) void sub_8040B8C(void) { - gLastUsedAbility = BATTLE_STRUCT->filler1_2[0x37]; + gLastUsedAbility = BATTLE_STRUCT->unk160C0;; gBattleTextBuff1[0] = 0xFD; gBattleTextBuff1[1] = 4; - gBattleTextBuff1[2] = BATTLE_STRUCT->filler1[0x34]; + gBattleTextBuff1[2] = BATTLE_STRUCT->unk16054; gBattleTextBuff1[4] = EOS; - if (!GetBankSide(BATTLE_STRUCT->filler1[0x34])) - gBattleTextBuff1[3] = pokemon_order_func(gBattlePartyID[BATTLE_STRUCT->filler1[0x34]]); + if (!GetBankSide(BATTLE_STRUCT->unk16054)) + gBattleTextBuff1[3] = pokemon_order_func(gBattlePartyID[BATTLE_STRUCT->unk16054]); else - gBattleTextBuff1[3] = gBattlePartyID[BATTLE_STRUCT->filler1[0x34]]; + gBattleTextBuff1[3] = gBattlePartyID[BATTLE_STRUCT->unk16054]; gBattleTextBuff2[0] = 0xFD; gBattleTextBuff2[1] = 4; gBattleTextBuff2[2] = gBankInMenu; diff --git a/src/tv.c b/src/tv.c index 14e7cf143..ffc70f12a 100644 --- a/src/tv.c +++ b/src/tv.c @@ -44,7 +44,6 @@ struct UnkTvStruct s8 var0; }; -extern struct Struct30042E0 gBattleResults; extern u8 gUnknown_0300430A[11]; struct OutbreakPokemon @@ -430,15 +429,15 @@ void TakeTVShowInSearchOfTrainersOffTheAir(void); void GabbyAndTyBeforeInterview(void) { u8 i; - gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.unk6; - gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.unk26; - gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.unk22; + gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.Poke1Species; + gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.OpponentSpecies; + gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.LastUsedMove; if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff) { gSaveBlock1.gabbyAndTyData.battleNum ++; } gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0; - if (gBattleResults.unk0) + if (gBattleResults.PlayerFaintCounter) { gSaveBlock1.gabbyAndTyData.valA_1 = 1; } else @@ -612,11 +611,11 @@ void sub_80BDEC8(void) { total = 0; sub_80BEB20(); sub_80BE778(); - if (gBattleResults.unk28 == 0) { + if (gBattleResults.CaughtPoke == 0) { sub_80BE074(); } else { sub_80BE028(); - if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.unk28], gBattleResults.unk2A) != 0) { + if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.CaughtPoke], gBattleResults.CaughtNick) != 0) { gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) { for (i=0; i<11; i++) { @@ -642,8 +641,8 @@ void sub_80BDEC8(void) { show->pokemonToday.var12 = total; show->pokemonToday.ball = item; StringCopy(show->pokemonToday.playerName, gSaveBlock2.playerName); - StringCopy(show->pokemonToday.nickname, gBattleResults.unk2A); - show->pokemonToday.species = gBattleResults.unk28; + StringCopy(show->pokemonToday.nickname, gBattleResults.CaughtNick); + show->pokemonToday.species = gBattleResults.CaughtPoke; sub_80BE138(show); show->pokemonToday.language = GAME_LANGUAGE; show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname); @@ -663,8 +662,8 @@ void sub_80BE028(void) { buffer->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; } buffer->worldOfMasters.var02++; - buffer->worldOfMasters.var04 = gBattleResults.unk28; - buffer->worldOfMasters.var08 = gBattleResults.unk6; + buffer->worldOfMasters.var04 = gBattleResults.CaughtPoke; + buffer->worldOfMasters.var08 = gBattleResults.Poke1Species; buffer->worldOfMasters.var0a = gMapHeader.name; } @@ -689,7 +688,7 @@ void sub_80BE074(void) { asm_comment("Here the wrong registers are used to hold the show ID and flag."); show->pokemonTodayFailed.var00 = TVSHOW_POKEMON_TODAY_FAILED; show->pokemonTodayFailed.var01 = flag; - show->pokemonTodayFailed.species = gBattleResults.unk6; + show->pokemonTodayFailed.species = gBattleResults.Poke1Species; show->pokemonTodayFailed.species2 = gBattleResults.unk20; show->pokemonTodayFailed.var10 = total; show->pokemonTodayFailed.var11 = gBattleOutcome; -- cgit v1.2.3 From 489106198973e1377d0ac823b4decaa395ca7c9e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 22 Jun 2017 22:08:27 -0400 Subject: File modes --- include/gba/defines.h | 0 include/global.h | 0 include/player_pc.h | 0 src/daycare.c | 0 src/field_effect.c | 0 5 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 include/gba/defines.h mode change 100755 => 100644 include/global.h mode change 100755 => 100644 include/player_pc.h mode change 100755 => 100644 src/daycare.c mode change 100755 => 100644 src/field_effect.c diff --git a/include/gba/defines.h b/include/gba/defines.h old mode 100755 new mode 100644 diff --git a/include/global.h b/include/global.h old mode 100755 new mode 100644 diff --git a/include/player_pc.h b/include/player_pc.h old mode 100755 new mode 100644 diff --git a/src/daycare.c b/src/daycare.c old mode 100755 new mode 100644 diff --git a/src/field_effect.c b/src/field_effect.c old mode 100755 new mode 100644 -- cgit v1.2.3 From 9e14c471e6176d3b9eded4815f917b4a2e06d5cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 22 Jun 2017 22:27:51 -0400 Subject: Start decompiling field_tasks.s --- asm/field_tasks.s | 96 ------------------------------------------- data/field_tasks.s | 11 ----- include/field_special_scene.h | 2 +- include/rom4.h | 2 +- include/secret_base.h | 1 + ld_script.txt | 2 + src/field_special_scene.c | 2 +- src/field_tasks.c | 67 ++++++++++++++++++++++++++++++ 8 files changed, 73 insertions(+), 110 deletions(-) create mode 100644 src/field_tasks.c diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 5f3e3a03f..42bd38a3d 100644 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,102 +6,6 @@ .text - thumb_func_start Task_RunPerStepCallback -Task_RunPerStepCallback: @ 806943C - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08069460 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x8 - ldrsh r1, [r1, r2] - ldr r2, _08069464 @ =gUnknown_08376364 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl _call_via_r1 - pop {r0} - bx r0 - .align 2, 0 -_08069460: .4byte gTasks -_08069464: .4byte gUnknown_08376364 - thumb_func_end Task_RunPerStepCallback - - thumb_func_start RunTimeBasedEvents -RunTimeBasedEvents: @ 8069468 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0806947A - cmp r0, 0x1 - beq _08069498 - b _080694AC -_0806947A: - ldr r0, _08069494 @ =gMain - ldr r0, [r0, 0x20] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - beq _080694AC - bl DoTimeBasedEvents - ldrh r0, [r4] - adds r0, 0x1 - b _080694AA - .align 2, 0 -_08069494: .4byte gMain -_08069498: - ldr r0, _080694B4 @ =gMain - ldr r0, [r0, 0x20] - movs r1, 0x80 - lsls r1, 5 - ands r0, r1 - cmp r0, 0 - bne _080694AC - ldrh r0, [r4] - subs r0, 0x1 -_080694AA: - strh r0, [r4] -_080694AC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080694B4: .4byte gMain - thumb_func_end RunTimeBasedEvents - - thumb_func_start Task_RunTimeBasedEvents -Task_RunTimeBasedEvents: @ 80694B8 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _080694E8 @ =gTasks + 0x8 - adds r4, r1, r0 - bl ScriptContext2_IsEnabled - lsls r0, 24 - cmp r0, 0 - bne _080694E0 - adds r0, r4, 0 - bl RunTimeBasedEvents - adds r0, r4, 0x2 - adds r1, r4, 0x4 - bl sub_80540D0 -_080694E0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080694E8: .4byte gTasks + 0x8 - thumb_func_end Task_RunTimeBasedEvents - thumb_func_start SetUpFieldTasks SetUpFieldTasks: @ 80694EC push {r4,r5,lr} diff --git a/data/field_tasks.s b/data/field_tasks.s index 122e089e6..d8b4f1146 100644 --- a/data/field_tasks.s +++ b/data/field_tasks.s @@ -3,17 +3,6 @@ .section .rodata - .align 2 -gUnknown_08376364:: @ 8376364 - .4byte DummyPerStepCallback - .4byte PerStepCallback_8069F64 - .4byte PerStepCallback_8069AA0 - .4byte PerStepCallback_8069864 - .4byte PerStepCallback_8069DD4 - .4byte EndTruckSequence - .4byte sub_80BCF1C - .4byte PerStepCallback_806A07C - gUnknown_08376384:: @ 8376384 .byte 0, 0,0x59, 2, 0, 1,0x61, 2 .byte 0, -1,0x59, 2, 0, 0,0x61, 2 diff --git a/include/field_special_scene.h b/include/field_special_scene.h index 5841d6bce..ef3f07120 100644 --- a/include/field_special_scene.h +++ b/include/field_special_scene.h @@ -8,6 +8,6 @@ void Task_Truck2(u8 taskId); void Task_Truck3(u8 taskId); void Task_HandleTruckSequence(u8 taskId); void ExecuteTruckSequence(void); -void EndTruckSequence(void); +void EndTruckSequence(u8); #endif // GUARD_FIELD_SPECIAL_SCENE_H diff --git a/include/rom4.h b/include/rom4.h index eac4d29a2..b7415bf0a 100644 --- a/include/rom4.h +++ b/include/rom4.h @@ -102,7 +102,7 @@ void sub_8053FB0(u16); // sub_8054034 // sub_8054044 // sub_8054050 -// sub_80540D0 +void sub_80540D0(s16 *, u16 *); void sub_8054164(void); u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum); // get_map_light_level_from_warp diff --git a/include/secret_base.h b/include/secret_base.h index 3ca5ab182..3ea75ce27 100644 --- a/include/secret_base.h +++ b/include/secret_base.h @@ -10,6 +10,7 @@ u8 sub_80BC050(); void sub_80BC300(); const u8 sub_80BCCA4(u8); u8 *sub_80BCCE8(void); +void sub_80BCF1C(u8); void sub_80BD674(void *, u32, u8); #endif // GUARD_SECRET_BASE_H diff --git a/ld_script.txt b/ld_script.txt index 281f1781d..16dbf689e 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -104,6 +104,7 @@ SECTIONS { src/field_control_avatar.o(.text); src/event_data.o(.text); src/coord_event_weather.o(.text); + src/field_tasks.o(.text); asm/field_tasks.o(.text); src/clock.o(.text); asm/reset_rtc_screen.o(.text); @@ -360,6 +361,7 @@ SECTIONS { src/script.o(.rodata); src/scrcmd.o(.rodata); src/coord_event_weather.o(.rodata); + src/field_tasks.o(.rodata); data/field_tasks.o(.rodata); data/reset_rtc_screen.o(.rodata); data/party_menu.o(.rodata); diff --git a/src/field_special_scene.c b/src/field_special_scene.c index c88ac8f65..82a7a13e3 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -229,7 +229,7 @@ void ExecuteTruckSequence(void) CreateTask(Task_HandleTruckSequence, 0xA); } -void EndTruckSequence(void) +void EndTruckSequence(u8 taskId) { if (!FuncIsActiveTask(Task_HandleTruckSequence)) { diff --git a/src/field_tasks.c b/src/field_tasks.c new file mode 100644 index 000000000..0b6cc2de4 --- /dev/null +++ b/src/field_tasks.c @@ -0,0 +1,67 @@ +// +// Created by scott on 6/22/2017. +// + +#include "global.h" +#include "task.h" +#include "main.h" +#include "rom4.h" +#include "clock.h" +#include "script.h" +#include "field_special_scene.h" +#include "secret_base.h" +#include "field_tasks.h" + +void DummyPerStepCallback(u8); +void PerStepCallback_8069F64(u8); +void PerStepCallback_8069AA0(u8); +void PerStepCallback_8069864(u8); +void PerStepCallback_8069DD4(u8); +void PerStepCallback_806A07C(u8); + +void (*const gUnknown_08376364[])(u8) = { + DummyPerStepCallback, + PerStepCallback_8069F64, + PerStepCallback_8069AA0, + PerStepCallback_8069864, + PerStepCallback_8069DD4, + EndTruckSequence, + sub_80BCF1C, + PerStepCallback_806A07C +}; + +void Task_RunPerStepCallback(u8 taskId) +{ + int idx = gTasks[taskId].data[0]; + gUnknown_08376364[idx](taskId); +} + +void RunTimeBasedEvents(s16 *taskData) +{ + switch (*taskData) + { + case 0: + if (gMain.vblankCounter1 & 0x1000) + { + DoTimeBasedEvents(); + (*taskData)++; + } + break; + case 1: + if (!(gMain.vblankCounter1 & 0x1000)) + { + (*taskData)--; + } + break; + } +} + +void Task_RunTimeBasedEvents(u8 taskId) +{ + s16 *taskData = gTasks[taskId].data; + if (!ScriptContext2_IsEnabled()) + { + RunTimeBasedEvents(taskData); + sub_80540D0(taskData + 1, taskData + 2); + } +} -- cgit v1.2.3 From 29ed9d7aee11527bbe971dd1daa099e04d7e5bc9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 22 Jun 2017 22:59:22 -0400 Subject: Up through ResetFieldTaskArgs --- asm/field_tasks.s | 122 --------------------------------------------------- src/field_specials.c | 0 src/field_tasks.c | 65 ++++++++++++++++++++++++++- 3 files changed, 64 insertions(+), 123 deletions(-) mode change 100644 => 100755 asm/field_tasks.s mode change 100644 => 100755 src/field_specials.c mode change 100644 => 100755 src/field_tasks.c diff --git a/asm/field_tasks.s b/asm/field_tasks.s old mode 100644 new mode 100755 index 42bd38a3d..2d2c0abe6 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,128 +6,6 @@ .text - thumb_func_start SetUpFieldTasks -SetUpFieldTasks: @ 80694EC - push {r4,r5,lr} - ldr r5, _08069548 @ =Task_RunPerStepCallback - adds r0, r5, 0 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08069516 - adds r0, r5, 0 - movs r1, 0x50 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0806954C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] -_08069516: - ldr r4, _08069550 @ =Task_MuddySlope - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _0806952C - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask -_0806952C: - ldr r4, _08069554 @ =Task_RunTimeBasedEvents - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - cmp r0, 0 - bne _08069542 - adds r0, r4, 0 - movs r1, 0x50 - bl CreateTask -_08069542: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069548: .4byte Task_RunPerStepCallback -_0806954C: .4byte gTasks -_08069550: .4byte Task_MuddySlope -_08069554: .4byte Task_RunTimeBasedEvents - thumb_func_end SetUpFieldTasks - - thumb_func_start ActivatePerStepCallback -ActivatePerStepCallback: @ 8069558 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08069590 @ =Task_RunPerStepCallback - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _0806959A - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _08069594 @ =gTasks + 0x8 - adds r1, r0, r1 - movs r2, 0 - adds r0, r1, 0 - adds r0, 0x1E -_0806957C: - strh r2, [r0] - subs r0, 0x2 - cmp r0, r1 - bge _0806957C - cmp r4, 0x7 - bls _08069598 - movs r0, 0 - strh r0, [r1] - b _0806959A - .align 2, 0 -_08069590: .4byte Task_RunPerStepCallback -_08069594: .4byte gTasks + 0x8 -_08069598: - strh r4, [r1] -_0806959A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end ActivatePerStepCallback - - thumb_func_start ResetFieldTasksArgs -ResetFieldTasksArgs: @ 80695A0 - push {lr} - ldr r0, _080695D0 @ =Task_RunPerStepCallback - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r1, r0, 24 - ldr r0, _080695D4 @ =Task_RunTimeBasedEvents - bl FindTaskIdByFunc - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _080695CA - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _080695D8 @ =gTasks + 0x8 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] -_080695CA: - pop {r0} - bx r0 - .align 2, 0 -_080695D0: .4byte Task_RunPerStepCallback -_080695D4: .4byte Task_RunTimeBasedEvents -_080695D8: .4byte gTasks + 0x8 - thumb_func_end ResetFieldTasksArgs - thumb_func_start DummyPerStepCallback DummyPerStepCallback: @ 80695DC bx lr diff --git a/src/field_specials.c b/src/field_specials.c old mode 100644 new mode 100755 diff --git a/src/field_tasks.c b/src/field_tasks.c old mode 100644 new mode 100755 index 0b6cc2de4..d52bafe1c --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -36,7 +36,7 @@ void Task_RunPerStepCallback(u8 taskId) gUnknown_08376364[idx](taskId); } -void RunTimeBasedEvents(s16 *taskData) +static void RunTimeBasedEvents(s16 *taskData) { switch (*taskData) { @@ -65,3 +65,66 @@ void Task_RunTimeBasedEvents(u8 taskId) sub_80540D0(taskData + 1, taskData + 2); } } + +void Task_MuddySlope(u8); + +void SetUpFieldTasks(void) +{ + if (!FuncIsActiveTask(Task_RunPerStepCallback)) + { + u8 taskId = CreateTask(Task_RunPerStepCallback, 0x50); + gTasks[taskId].data[0] = 0; + } + if (!FuncIsActiveTask(Task_MuddySlope)) + { + CreateTask(Task_MuddySlope, 0x50); + } + if (!FuncIsActiveTask(Task_RunTimeBasedEvents)) + { + CreateTask(Task_RunTimeBasedEvents, 0x50); + } +} + +void ActivatePerStepCallback(u8 callback) +{ + s16 *dataPointer; + s16 *dataStart; + s16 zero; + u8 taskId = FindTaskIdByFunc(Task_RunPerStepCallback); + if (taskId != 0xff) + { + dataStart = gTasks[taskId].data; + zero = 0; + dataPointer = &dataStart[15]; + do + { + *dataPointer-- = zero; + } while ((int)dataPointer >= (int)dataStart); + if (callback >= ARRAY_COUNT(gUnknown_08376364)) + { + *dataStart = 0; + } + else + { + *dataStart = callback; + } + } +} + +void ResetFieldTasksArgs(void) +{ + u8 taskId; + s16 *taskData; + taskId = FindTaskIdByFunc(Task_RunPerStepCallback); + if (taskId != 0xff) + { + taskData = gTasks[taskId].data; + } + taskId = FindTaskIdByFunc(Task_RunTimeBasedEvents); + if (taskId != 0xff) + { + taskData = gTasks[taskId].data; + taskData[1] = 0; + taskData[2] = 0; + } +} -- cgit v1.2.3 From d5db71923c6fb611760e3a21f4f44c7c56142159 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 23 Jun 2017 08:44:18 -0400 Subject: up through sub_80695E0 --- asm/field_tasks.s | 53 --------------------------------------------------- data/field_tasks.s | 17 ----------------- include/field_tasks.h | 6 ++++++ src/field_specials.c | 0 src/field_tasks.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 70 deletions(-) mode change 100755 => 100644 asm/field_tasks.s mode change 100755 => 100644 src/field_specials.c mode change 100755 => 100644 src/field_tasks.c diff --git a/asm/field_tasks.s b/asm/field_tasks.s old mode 100755 new mode 100644 index 2d2c0abe6..b869f2ad1 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,59 +6,6 @@ .text - thumb_func_start DummyPerStepCallback -DummyPerStepCallback: @ 80695DC - bx lr - thumb_func_end DummyPerStepCallback - - thumb_func_start sub_80695E0 -sub_80695E0: @ 80695E0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - adds r0, r4, 0 - bl sub_80576A0 - lsls r0, 24 - cmp r0, 0 - beq _080695F8 - adds r0, r5, 0 - b _08069630 -_080695F8: - adds r0, r4, 0 - bl sub_80576B4 - lsls r0, 24 - cmp r0, 0 - beq _0806960A - adds r0, r5, 0 - adds r0, 0x8 - b _08069630 -_0806960A: - adds r0, r4, 0 - bl sub_80576C8 - lsls r0, 24 - cmp r0, 0 - beq _0806961C - adds r0, r5, 0 - adds r0, 0x10 - b _08069630 -_0806961C: - adds r0, r4, 0 - bl sub_80576DC - lsls r0, 24 - cmp r0, 0 - bne _0806962C - movs r0, 0 - b _08069630 -_0806962C: - adds r0, r5, 0 - adds r0, 0x18 -_08069630: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80695E0 - thumb_func_start sub_8069638 sub_8069638: @ 8069638 push {r4-r7,lr} diff --git a/data/field_tasks.s b/data/field_tasks.s index d8b4f1146..a4b78df2e 100644 --- a/data/field_tasks.s +++ b/data/field_tasks.s @@ -3,23 +3,6 @@ .section .rodata -gUnknown_08376384:: @ 8376384 - .byte 0, 0,0x59, 2, 0, 1,0x61, 2 - .byte 0, -1,0x59, 2, 0, 0,0x61, 2 - .byte 0, 0,0x52, 2, 1, 0,0x53, 2 - .byte -1, 0,0x52, 2, 0, 0,0x53, 2 - -gUnknown_083763A4:: @ 83763A4 - .byte 0, 0,0x5A, 2, 0, 1,0x62, 2 - .byte 0, -1,0x5A, 2, 0, 0,0x62, 2 - .byte 0, 0,0x54, 2, 1, 0,0x55, 2 - .byte -1, 0,0x54, 2, 0, 0,0x55, 2 - -gUnknown_083763C4:: @ 83763C4 - .byte 0, 0,0x58, 2, 0, 1,0x60, 2 - .byte 0, -1,0x58, 2, 0, 0,0x60, 2 - .byte 0, 0,0x50, 2, 1, 0,0x51, 2 - .byte -1, 0,0x50, 2, 0, 0,0x51, 2 .align 1 gUnknown_083763E4:: @ 83763E4 diff --git a/include/field_tasks.h b/include/field_tasks.h index 53e704395..761d69ada 100644 --- a/include/field_tasks.h +++ b/include/field_tasks.h @@ -1,6 +1,12 @@ #ifndef GUARD_FIELD_TASKS_H #define GUARD_FIELD_TASKS_H +struct MetatileOffset { + s8 x; + s8 y; + u16 tileId; +}; + void SetUpFieldTasks(); void ActivatePerStepCallback(u8); void ResetFieldTasksArgs(void); diff --git a/src/field_specials.c b/src/field_specials.c old mode 100755 new mode 100644 diff --git a/src/field_tasks.c b/src/field_tasks.c old mode 100755 new mode 100644 index d52bafe1c..39c2146d6 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -10,6 +10,7 @@ #include "script.h" #include "field_special_scene.h" #include "secret_base.h" +#include "metatile_behavior.h" #include "field_tasks.h" void DummyPerStepCallback(u8); @@ -128,3 +129,50 @@ void ResetFieldTasksArgs(void) taskData[2] = 0; } } + +const struct MetatileOffset gUnknown_08376384[][2] = { + {{ 0, 0,0x259}, { 0, 1,0x261}}, + {{ 0, -1,0x259}, { 0, 0,0x261}}, + {{ 0, 0,0x252}, { 1, 0,0x253}}, + {{ -1, 0,0x252}, { 0, 0,0x253}} +}; + +const struct MetatileOffset gUnknown_083763A4[][2] = { + {{ 0, 0,0x25A}, { 0, 1,0x262}}, + {{ 0, -1,0x25A}, { 0, 0,0x262}}, + {{ 0, 0,0x254}, { 1, 0,0x255}}, + {{ -1, 0,0x254}, { 0, 0,0x255}} +}; + +const struct MetatileOffset gUnknown_083763C4[][2] = { + {{ 0, 0,0x258}, { 0, 1,0x260}}, + {{ 0, -1,0x258}, { 0, 0,0x260}}, + {{ 0, 0,0x250}, { 1, 0,0x251}}, + {{ -1, 0,0x250}, { 0, 0,0x251}} +}; + +void DummyPerStepCallback(u8 taskId) {} + +const struct MetatileOffset *sub_80695E0(const struct MetatileOffset a0[][2], s8 a1) +{ + if (sub_80576A0(a1)) + { + return a0[0]; + } + else if (sub_80576B4(a1)) + { + return a0[1]; + } + else if (sub_80576C8(a1)) + { + return a0[2]; + } + else if (sub_80576DC(a1)) + { + return a0[3]; + } + else + { + return NULL; + } +} -- cgit v1.2.3 From 35c3e8ec7b30d7bc02bef631347ce8eb6e87aa62 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Fri, 23 Jun 2017 15:11:58 -0500 Subject: decompile LinkOpponentHandleGetAttributes - sub_80398B0 --- asm/battle_10.s | 2949 ------------------------------------------------------- include/data2.h | 10 + ld_script.txt | 1 + src/battle_10.c | 777 +++++++++++++++ 4 files changed, 788 insertions(+), 2949 deletions(-) create mode 100644 src/battle_10.c diff --git a/asm/battle_10.s b/asm/battle_10.s index 548c77bce..9eed13601 100644 --- a/asm/battle_10.s +++ b/asm/battle_10.s @@ -5,2955 +5,6 @@ .syntax unified .text - - thumb_func_start LinkOpponentHandleGetAttributes -LinkOpponentHandleGetAttributes: @ 803807C - push {r4-r6,lr} - sub sp, 0x100 - movs r6, 0 - ldr r1, _080380A8 @ =gBattleBufferA - ldr r0, _080380AC @ =gActiveBank - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _080380B4 - ldr r0, _080380B0 @ =gBattlePartyID - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - mov r1, sp - bl dp01_getattr_by_ch1_for_player_pokemon__ - adds r6, r0, 0 - b _080380D6 - .align 2, 0 -_080380A8: .4byte gBattleBufferA -_080380AC: .4byte gActiveBank -_080380B0: .4byte gBattlePartyID -_080380B4: - ldrb r4, [r1] - movs r5, 0 -_080380B8: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080380CE - lsls r0, r5, 24 - lsrs r0, 24 - mov r2, sp - adds r1, r2, r6 - bl dp01_getattr_by_ch1_for_player_pokemon__ - adds r6, r0 -_080380CE: - lsrs r4, 1 - adds r5, 0x1 - cmp r5, 0x5 - ble _080380B8 -_080380D6: - lsls r1, r6, 16 - lsrs r1, 16 - movs r0, 0x1 - mov r2, sp - bl dp01_build_cmdbuf_x1D_1D_numargs_varargs - bl dp01_tbl4_exec_completed - add sp, 0x100 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end LinkOpponentHandleGetAttributes - - thumb_func_start dp01_getattr_by_ch1_for_player_pokemon__ -dp01_getattr_by_ch1_for_player_pokemon__: @ 80380F0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x90 - adds r7, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r6, 0 - ldr r2, _08038124 @ =gBattleBufferA - ldr r3, _08038128 @ =gActiveBank - ldrb r0, [r3] - lsls r0, 9 - adds r1, r2, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3B - bls _0803811A - bl _08038886 -_0803811A: - lsls r0, 2 - ldr r1, _0803812C @ =_08038130 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08038124: .4byte gBattleBufferA -_08038128: .4byte gActiveBank -_0803812C: .4byte _08038130 - .align 2, 0 -_08038130: - .4byte _08038220 - .4byte _08038444 - .4byte _08038454 - .4byte _08038464 - .4byte _080384CC - .4byte _080384CC - .4byte _080384CC - .4byte _080384CC - .4byte _080384E8 - .4byte _08038524 - .4byte _08038524 - .4byte _08038524 - .4byte _08038524 - .4byte _08038886 - .4byte _08038886 - .4byte _08038886 - .4byte _08038886 - .4byte _08038540 - .4byte _08038550 - .4byte _08038580 - .4byte _08038590 - .4byte _080385A0 - .4byte _080385B0 - .4byte _080385C0 - .4byte _080385D0 - .4byte _080385E0 - .4byte _080385F0 - .4byte _08038600 - .4byte _08038610 - .4byte _08038620 - .4byte _08038630 - .4byte _08038640 - .4byte _08038690 - .4byte _080386A0 - .4byte _080386B0 - .4byte _080386C0 - .4byte _080386D0 - .4byte _080386E0 - .4byte _080386F0 - .4byte _08038700 - .4byte _08038710 - .4byte _08038744 - .4byte _08038754 - .4byte _08038764 - .4byte _08038774 - .4byte _08038784 - .4byte _08038794 - .4byte _080387A4 - .4byte _080387B4 - .4byte _080387D4 - .4byte _080387E4 - .4byte _080387F4 - .4byte _08038804 - .4byte _08038814 - .4byte _08038824 - .4byte _08038834 - .4byte _08038844 - .4byte _08038854 - .4byte _08038864 - .4byte _08038874 -_08038220: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08038434 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - mov r1, sp - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2E] - movs r6, 0 - add r0, sp, 0x24 - mov r9, r0 - movs r1, 0x3B - add r1, sp - mov r10, r1 - mov r2, sp - adds r2, 0x2B - str r2, [sp, 0x80] - mov r0, sp - adds r0, 0x2A - str r0, [sp, 0x7C] - mov r1, sp - adds r1, 0x68 - str r1, [sp, 0x8C] - adds r2, 0x5 - str r2, [sp, 0x84] - adds r0, 0x12 - str r0, [sp, 0x88] - mov r8, r4 - add r4, sp, 0xC -_0803826C: - adds r1, r6, 0 - adds r1, 0xD - mov r0, r8 - bl GetMonData - strh r0, [r4] - adds r1, r6, 0 - adds r1, 0x11 - mov r0, r8 - bl GetMonData - mov r2, r9 - adds r1, r2, r6 - strb r0, [r1] - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0803826C - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08038434 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl GetMonData - mov r1, r10 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x20 - bl GetMonData - ldr r2, [sp, 0x80] - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x19 - bl GetMonData - str r0, [sp, 0x44] - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - mov r3, sp - movs r5, 0x1F - ands r0, r5 - ldrb r2, [r3, 0x14] - movs r1, 0x20 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - mov r3, sp - movs r6, 0x1F - ands r0, r6 - lsls r0, 5 - ldrh r2, [r3, 0x14] - ldr r1, _08038438 @ =0xfffffc1f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x14] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 2 - ldrb r2, [r3, 0x15] - movs r1, 0x7D - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x15] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - movs r1, 0x1F - ands r1, r0 - lsls r1, 15 - ldr r0, [sp, 0x14] - ldr r2, _0803843C @ =0xfff07fff - ands r0, r2 - orrs r0, r1 - str r0, [sp, 0x14] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - mov r3, sp - ands r0, r6 - lsls r0, 4 - ldrh r2, [r3, 0x16] - ldr r1, _08038440 @ =0xfffffe0f - ands r1, r2 - orrs r1, r0 - strh r1, [r3, 0x16] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - mov r3, sp - ands r0, r5 - lsls r0, 1 - ldrb r2, [r3, 0x17] - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [sp, 0x48] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - str r0, [sp, 0x4C] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, [sp, 0x7C] - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - mov r1, sp - strh r0, [r1, 0x28] - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2C] - adds r0, r4, 0 - movs r1, 0x3B - bl GetMonData - mov r1, sp - strh r0, [r1, 0x2] - adds r0, r4, 0 - movs r1, 0x3C - bl GetMonData - mov r1, sp - strh r0, [r1, 0x4] - adds r0, r4, 0 - movs r1, 0x3D - bl GetMonData - mov r1, sp - strh r0, [r1, 0x6] - adds r0, r4, 0 - movs r1, 0x3E - bl GetMonData - mov r1, sp - strh r0, [r1, 0x8] - adds r0, r4, 0 - movs r1, 0x3F - bl GetMonData - mov r1, sp - strh r0, [r1, 0xA] - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - mov r3, sp - movs r1, 0x1 - ands r0, r1 - lsls r0, 6 - ldrb r2, [r3, 0x17] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x2E - bl GetMonData - mov r3, sp - lsls r0, 7 - ldrb r2, [r3, 0x17] - movs r1, 0x7F - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x17] - adds r0, r4, 0 - movs r1, 0x1 - bl GetMonData - str r0, [sp, 0x54] - adds r0, r4, 0 - movs r1, 0x2 - ldr r2, [sp, 0x8C] - bl GetMonData - ldr r0, [sp, 0x84] - ldr r1, [sp, 0x8C] - bl StringCopy10 - adds r0, r4, 0 - movs r1, 0x7 - ldr r2, [sp, 0x88] - bl GetMonData - mov r2, sp - movs r6, 0 -_08038424: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0x57 - bls _08038424 - b _08038886 - .align 2, 0 -_08038434: .4byte gEnemyParty -_08038438: .4byte 0xfffffc1f -_0803843C: .4byte 0xfff07fff -_08038440: .4byte 0xfffffe0f -_08038444: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038450 @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - b _080387BE - .align 2, 0 -_08038450: .4byte gEnemyParty -_08038454: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038460 @ =gEnemyParty - adds r0, r1 - movs r1, 0xC - b _080387BE - .align 2, 0 -_08038460: .4byte gEnemyParty -_08038464: - movs r6, 0 - add r2, sp, 0x58 - mov r9, r2 - add r0, sp, 0x60 - mov r10, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _080384C8 @ =gEnemyParty - adds r4, r1, r0 - mov r8, r9 -_0803847A: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r4, 0 - bl GetMonData - mov r1, r8 - strh r0, [r1] - adds r1, r6, 0 - adds r1, 0x11 - adds r0, r4, 0 - bl GetMonData - mov r2, r10 - adds r1, r2, r6 - strb r0, [r1] - movs r0, 0x2 - add r8, r0 - adds r6, 0x1 - cmp r6, 0x3 - ble _0803847A - movs r0, 0x64 - muls r0, r5 - ldr r1, _080384C8 @ =gEnemyParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - mov r1, r9 - strb r0, [r1, 0xC] - mov r2, r9 - movs r6, 0 -_080384B8: - adds r0, r7, r6 - adds r1, r2, r6 - ldrb r1, [r1] - strb r1, [r0] - adds r6, 0x1 - cmp r6, 0xF - bls _080384B8 - b _08038886 - .align 2, 0 -_080384C8: .4byte gEnemyParty -_080384CC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080384E4 @ =gEnemyParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x9 - b _080387BE - .align 2, 0 -_080384E4: .4byte gEnemyParty -_080384E8: - movs r6, 0 - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r2, _08038520 @ =gEnemyParty - mov r8, r2 -_080384F4: - adds r1, r6, 0 - adds r1, 0x11 - mov r2, r8 - adds r0, r4, r2 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - cmp r6, 0x3 - ble _080384F4 - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038520 @ =gEnemyParty - adds r0, r1 - movs r1, 0x15 - bl GetMonData - adds r1, r7, r6 - strb r0, [r1] - adds r6, 0x1 - b _08038886 - .align 2, 0 -_08038520: .4byte gEnemyParty -_08038524: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803853C @ =gEnemyParty - adds r0, r1 - ldrb r1, [r3] - lsls r1, 9 - adds r2, 0x1 - adds r1, r2 - ldrb r1, [r1] - adds r1, 0x8 - b _0803887E - .align 2, 0 -_0803853C: .4byte gEnemyParty -_08038540: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803854C @ =gEnemyParty - adds r0, r1 - movs r1, 0x1 - b _0803855A - .align 2, 0 -_0803854C: .4byte gEnemyParty -_08038550: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803857C @ =gEnemyParty - adds r0, r1 - movs r1, 0x19 -_0803855A: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - movs r6, 0x3 - b _08038886 - .align 2, 0 -_0803857C: .4byte gEnemyParty -_08038580: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803858C @ =gEnemyParty - adds r0, r1 - movs r1, 0x1A - b _0803887E - .align 2, 0 -_0803858C: .4byte gEnemyParty -_08038590: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803859C @ =gEnemyParty - adds r0, r1 - movs r1, 0x1B - b _0803887E - .align 2, 0 -_0803859C: .4byte gEnemyParty -_080385A0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080385AC @ =gEnemyParty - adds r0, r1 - movs r1, 0x1C - b _0803887E - .align 2, 0 -_080385AC: .4byte gEnemyParty -_080385B0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080385BC @ =gEnemyParty - adds r0, r1 - movs r1, 0x1D - b _0803887E - .align 2, 0 -_080385BC: .4byte gEnemyParty -_080385C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080385CC @ =gEnemyParty - adds r0, r1 - movs r1, 0x1E - b _0803887E - .align 2, 0 -_080385CC: .4byte gEnemyParty -_080385D0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080385DC @ =gEnemyParty - adds r0, r1 - movs r1, 0x1F - b _0803887E - .align 2, 0 -_080385DC: .4byte gEnemyParty -_080385E0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080385EC @ =gEnemyParty - adds r0, r1 - movs r1, 0x20 - b _0803887E - .align 2, 0 -_080385EC: .4byte gEnemyParty -_080385F0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080385FC @ =gEnemyParty - adds r0, r1 - movs r1, 0x22 - b _0803887E - .align 2, 0 -_080385FC: .4byte gEnemyParty -_08038600: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803860C @ =gEnemyParty - adds r0, r1 - movs r1, 0x23 - b _0803887E - .align 2, 0 -_0803860C: .4byte gEnemyParty -_08038610: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803861C @ =gEnemyParty - adds r0, r1 - movs r1, 0x24 - b _0803887E - .align 2, 0 -_0803861C: .4byte gEnemyParty -_08038620: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803862C @ =gEnemyParty - adds r0, r1 - movs r1, 0x25 - b _0803887E - .align 2, 0 -_0803862C: .4byte gEnemyParty -_08038630: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803863C @ =gEnemyParty - adds r0, r1 - movs r1, 0x26 - b _0803887E - .align 2, 0 -_0803863C: .4byte gEnemyParty -_08038640: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _0803868C @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x27 - bl GetMonData - strb r0, [r7] - adds r0, r4, 0 - movs r1, 0x28 - bl GetMonData - strb r0, [r7, 0x1] - adds r0, r4, 0 - movs r1, 0x29 - bl GetMonData - strb r0, [r7, 0x2] - adds r0, r4, 0 - movs r1, 0x2A - bl GetMonData - strb r0, [r7, 0x3] - adds r0, r4, 0 - movs r1, 0x2B - bl GetMonData - strb r0, [r7, 0x4] - adds r0, r4, 0 - movs r1, 0x2C - bl GetMonData - strb r0, [r7, 0x5] - movs r6, 0x6 - b _08038886 - .align 2, 0 -_0803868C: .4byte gEnemyParty -_08038690: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803869C @ =gEnemyParty - adds r0, r1 - movs r1, 0x27 - b _0803887E - .align 2, 0 -_0803869C: .4byte gEnemyParty -_080386A0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080386AC @ =gEnemyParty - adds r0, r1 - movs r1, 0x28 - b _0803887E - .align 2, 0 -_080386AC: .4byte gEnemyParty -_080386B0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080386BC @ =gEnemyParty - adds r0, r1 - movs r1, 0x29 - b _0803887E - .align 2, 0 -_080386BC: .4byte gEnemyParty -_080386C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080386CC @ =gEnemyParty - adds r0, r1 - movs r1, 0x2A - b _0803887E - .align 2, 0 -_080386CC: .4byte gEnemyParty -_080386D0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080386DC @ =gEnemyParty - adds r0, r1 - movs r1, 0x2B - b _0803887E - .align 2, 0 -_080386DC: .4byte gEnemyParty -_080386E0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080386EC @ =gEnemyParty - adds r0, r1 - movs r1, 0x2C - b _0803887E - .align 2, 0 -_080386EC: .4byte gEnemyParty -_080386F0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080386FC @ =gEnemyParty - adds r0, r1 - movs r1, 0 - b _0803871A - .align 2, 0 -_080386FC: .4byte gEnemyParty -_08038700: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803870C @ =gEnemyParty - adds r0, r1 - movs r1, 0x9 - b _080387BE - .align 2, 0 -_0803870C: .4byte gEnemyParty -_08038710: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038740 @ =gEnemyParty - adds r0, r1 - movs r1, 0x37 -_0803871A: - bl GetMonData - adds r1, r0, 0 - strb r1, [r7] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r0, 0xFF - lsls r0, 16 - ands r0, r1 - lsrs r0, 16 - strb r0, [r7, 0x2] - lsrs r0, r1, 24 - strb r0, [r7, 0x3] - movs r6, 0x4 - b _08038886 - .align 2, 0 -_08038740: .4byte gEnemyParty -_08038744: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038750 @ =gEnemyParty - adds r0, r1 - movs r1, 0x38 - b _0803887E - .align 2, 0 -_08038750: .4byte gEnemyParty -_08038754: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038760 @ =gEnemyParty - adds r0, r1 - movs r1, 0x39 - b _080387BE - .align 2, 0 -_08038760: .4byte gEnemyParty -_08038764: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038770 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3A - b _080387BE - .align 2, 0 -_08038770: .4byte gEnemyParty -_08038774: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038780 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3B - b _080387BE - .align 2, 0 -_08038780: .4byte gEnemyParty -_08038784: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038790 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3C - b _080387BE - .align 2, 0 -_08038790: .4byte gEnemyParty -_08038794: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080387A0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3D - b _080387BE - .align 2, 0 -_080387A0: .4byte gEnemyParty -_080387A4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080387B0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3E - b _080387BE - .align 2, 0 -_080387B0: .4byte gEnemyParty -_080387B4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080387D0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x3F -_080387BE: - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - strb r0, [r7] - lsrs r0, 8 - strb r0, [r7, 0x1] - movs r6, 0x2 - b _08038886 - .align 2, 0 -_080387D0: .4byte gEnemyParty -_080387D4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080387E0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x16 - b _0803887E - .align 2, 0 -_080387E0: .4byte gEnemyParty -_080387E4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080387F0 @ =gEnemyParty - adds r0, r1 - movs r1, 0x17 - b _0803887E - .align 2, 0 -_080387F0: .4byte gEnemyParty -_080387F4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038800 @ =gEnemyParty - adds r0, r1 - movs r1, 0x18 - b _0803887E - .align 2, 0 -_08038800: .4byte gEnemyParty -_08038804: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038810 @ =gEnemyParty - adds r0, r1 - movs r1, 0x21 - b _0803887E - .align 2, 0 -_08038810: .4byte gEnemyParty -_08038814: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038820 @ =gEnemyParty - adds r0, r1 - movs r1, 0x2F - b _0803887E - .align 2, 0 -_08038820: .4byte gEnemyParty -_08038824: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038830 @ =gEnemyParty - adds r0, r1 - movs r1, 0x30 - b _0803887E - .align 2, 0 -_08038830: .4byte gEnemyParty -_08038834: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038840 @ =gEnemyParty - adds r0, r1 - movs r1, 0x32 - b _0803887E - .align 2, 0 -_08038840: .4byte gEnemyParty -_08038844: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038850 @ =gEnemyParty - adds r0, r1 - movs r1, 0x33 - b _0803887E - .align 2, 0 -_08038850: .4byte gEnemyParty -_08038854: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038860 @ =gEnemyParty - adds r0, r1 - movs r1, 0x34 - b _0803887E - .align 2, 0 -_08038860: .4byte gEnemyParty -_08038864: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038870 @ =gEnemyParty - adds r0, r1 - movs r1, 0x35 - b _0803887E - .align 2, 0 -_08038870: .4byte gEnemyParty -_08038874: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038898 @ =gEnemyParty - adds r0, r1 - movs r1, 0x36 -_0803887E: - bl GetMonData - strb r0, [r7] - movs r6, 0x1 -_08038886: - adds r0, r6, 0 - add sp, 0x90 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08038898: .4byte gEnemyParty - thumb_func_end dp01_getattr_by_ch1_for_player_pokemon__ - - thumb_func_start sub_803889C -sub_803889C: @ 803889C - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_803889C - - thumb_func_start sub_80388A8 -sub_80388A8: @ 80388A8 - push {r4,r5,lr} - ldr r1, _080388CC @ =gBattleBufferA - ldr r0, _080388D0 @ =gActiveBank - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0 - bne _080388D8 - ldr r0, _080388D4 @ =gBattlePartyID - lsls r1, r2, 1 - adds r1, r0 - ldrb r0, [r1] - bl sub_8038900 - b _080388F6 - .align 2, 0 -_080388CC: .4byte gBattleBufferA -_080388D0: .4byte gActiveBank -_080388D4: .4byte gBattlePartyID -_080388D8: - ldrb r4, [r1] - movs r5, 0 -_080388DC: - movs r0, 0x1 - ands r0, r4 - cmp r0, 0 - beq _080388EA - adds r0, r5, 0 - bl sub_8038900 -_080388EA: - lsrs r4, 1 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x5 - bls _080388DC -_080388F6: - bl dp01_tbl4_exec_completed - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80388A8 - - thumb_func_start sub_8038900 -sub_8038900: @ 8038900 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x38 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r3, _08038938 @ =gActiveBank - ldrb r0, [r3] - lsls r0, 9 - ldr r2, _0803893C @ =gUnknown_02023A63 - adds r4, r0, r2 - adds r7, r4, 0 - subs r1, r2, 0x2 - adds r0, r1 - ldrb r0, [r0] - adds r6, r3, 0 - adds r3, r2, 0 - cmp r0, 0x3B - bls _0803892E - bl _0803920C -_0803892E: - lsls r0, 2 - ldr r1, _08038940 @ =_08038944 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08038938: .4byte gActiveBank -_0803893C: .4byte gUnknown_02023A63 -_08038940: .4byte _08038944 - .align 2, 0 -_08038944: - .4byte _08038A34 - .4byte _08038BCC - .4byte _08038BE8 - .4byte _08038C04 - .4byte _08038C58 - .4byte _08038C58 - .4byte _08038C58 - .4byte _08038C58 - .4byte _08038C78 - .4byte _08038CE0 - .4byte _08038CE0 - .4byte _08038CE0 - .4byte _08038CE0 - .4byte _0803920C - .4byte _0803920C - .4byte _0803920C - .4byte _0803920C - .4byte _08038D08 - .4byte _08038D24 - .4byte _08038D40 - .4byte _08038D5C - .4byte _08038D78 - .4byte _08038D94 - .4byte _08038DB0 - .4byte _08038DCC - .4byte _08038DE8 - .4byte _08038E04 - .4byte _08038E20 - .4byte _08038E3C - .4byte _08038E58 - .4byte _08038E74 - .4byte _08038E90 - .4byte _08038F04 - .4byte _08038F20 - .4byte _08038F3C - .4byte _08038F58 - .4byte _08038F74 - .4byte _08038F90 - .4byte _08038FAC - .4byte _08038FC8 - .4byte _08038FE4 - .4byte _08039000 - .4byte _0803901C - .4byte _08039038 - .4byte _08039054 - .4byte _08039070 - .4byte _0803908C - .4byte _080390A8 - .4byte _080390C4 - .4byte _080390E0 - .4byte _080390FC - .4byte _08039118 - .4byte _08039134 - .4byte _08039150 - .4byte _0803916C - .4byte _08039188 - .4byte _080391A4 - .4byte _080391C0 - .4byte _080391DC - .4byte _080391F8 -_08038A34: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08038BC8 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - adds r2, r7, 0 - bl SetMonData - adds r2, r7, 0 - adds r2, 0x2E - adds r0, r4, 0 - movs r1, 0xC - bl SetMonData - movs r0, 0 - mov r8, r0 - movs r0, 0x3B - adds r0, r7 - mov r10, r0 - adds r0, r7, 0 - adds r0, 0x2B - str r0, [sp, 0x20] - adds r0, 0x19 - str r0, [sp, 0x28] - adds r0, 0x4 - str r0, [sp, 0x2C] - adds r0, 0x4 - str r0, [sp, 0x30] - subs r0, 0x22 - str r0, [sp, 0x1C] - subs r0, 0x2 - str r0, [sp, 0x18] - adds r0, 0x4 - str r0, [sp, 0x24] - adds r0, r7, 0x2 - str r0, [sp, 0x4] - adds r0, r7, 0x4 - str r0, [sp, 0x8] - adds r0, r7, 0x6 - str r0, [sp, 0xC] - adds r0, 0x2 - str r0, [sp, 0x10] - adds r0, 0x2 - str r0, [sp, 0x14] - mov r9, r4 - adds r6, r7, 0 - adds r6, 0x24 - adds r4, r7, 0 - adds r4, 0xC -_08038A9A: - mov r1, r8 - adds r1, 0xD - mov r0, r9 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - mov r0, r9 - adds r2, r6, 0 - bl SetMonData - adds r6, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _08038A9A - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08038BC8 @ =gEnemyParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x15 - mov r2, r10 - bl SetMonData - adds r0, r4, 0 - movs r1, 0x20 - ldr r2, [sp, 0x20] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x19 - ldr r2, [sp, 0x28] - bl SetMonData - ldrb r0, [r7, 0x14] - lsls r0, 27 - lsrs r0, 27 - mov r1, sp - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x27 - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r7, 0x14] - lsls r0, 22 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x28 - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r7, 0x15] - lsls r0, 25 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x29 - mov r2, sp - bl SetMonData - mov r1, sp - ldr r0, [r7, 0x14] - lsls r0, 12 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2A - mov r2, sp - bl SetMonData - mov r1, sp - ldrh r0, [r7, 0x16] - lsls r0, 23 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2B - mov r2, sp - bl SetMonData - mov r1, sp - ldrb r0, [r7, 0x17] - lsls r0, 26 - lsrs r0, 27 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0x2C - mov r2, sp - bl SetMonData - adds r0, r4, 0 - movs r1, 0 - ldr r2, [sp, 0x2C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x37 - ldr r2, [sp, 0x30] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x38 - ldr r2, [sp, 0x1C] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x39 - ldr r2, [sp, 0x18] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3A - ldr r2, [sp, 0x24] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3B - ldr r2, [sp, 0x4] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3C - ldr r2, [sp, 0x8] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3D - ldr r2, [sp, 0xC] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3E - ldr r2, [sp, 0x10] - bl SetMonData - adds r0, r4, 0 - movs r1, 0x3F - ldr r2, [sp, 0x14] - bl SetMonData - b _0803920C - .align 2, 0 -_08038BC8: .4byte gEnemyParty -_08038BCC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038BE4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0xB - bl SetMonData - b _0803920C - .align 2, 0 -_08038BE4: .4byte gEnemyParty -_08038BE8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038C00 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0xC - bl SetMonData - b _0803920C - .align 2, 0 -_08038C00: .4byte gEnemyParty -_08038C04: - movs r0, 0 - mov r8, r0 - movs r0, 0xC - adds r0, r4 - mov r9, r0 - movs r0, 0x64 - adds r1, r5, 0 - muls r1, r0 - ldr r0, _08038C54 @ =gEnemyParty - adds r7, r1, r0 - adds r6, r4, 0 - adds r6, 0x8 -_08038C1C: - mov r1, r8 - adds r1, 0xD - adds r0, r7, 0 - adds r2, r4, 0 - bl SetMonData - mov r1, r8 - adds r1, 0x11 - adds r0, r7, 0 - adds r2, r6, 0 - bl SetMonData - adds r6, 0x1 - adds r4, 0x2 - movs r0, 0x1 - add r8, r0 - mov r0, r8 - cmp r0, 0x3 - ble _08038C1C - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038C54 @ =gEnemyParty - adds r0, r1 - movs r1, 0x15 - mov r2, r9 - bl SetMonData - b _0803920C - .align 2, 0 -_08038C54: .4byte gEnemyParty -_08038C58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038C70 @ =gEnemyParty - adds r0, r1 - ldr r3, _08038C74 @ =gBattleBufferA - ldrb r2, [r6] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x9 - b _08038CF6 - .align 2, 0 -_08038C70: .4byte gEnemyParty -_08038C74: .4byte gBattleBufferA -_08038C78: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08038CDC @ =gEnemyParty - adds r4, r0 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - adds r0, r4, 0 - movs r1, 0x11 - str r3, [sp, 0x34] - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x12 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x13 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x14 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x15 - bl SetMonData - b _0803920C - .align 2, 0 -_08038CDC: .4byte gEnemyParty -_08038CE0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038D00 @ =gEnemyParty - adds r0, r1 - ldr r3, _08038D04 @ =gBattleBufferA - ldrb r2, [r6] - lsls r2, 9 - adds r1, r3, 0x1 - adds r1, r2, r1 - ldrb r1, [r1] - adds r1, 0x8 -_08038CF6: - adds r3, 0x3 - adds r2, r3 - bl SetMonData - b _0803920C - .align 2, 0 -_08038D00: .4byte gEnemyParty -_08038D04: .4byte gBattleBufferA -_08038D08: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038D20 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1 - bl SetMonData - b _0803920C - .align 2, 0 -_08038D20: .4byte gEnemyParty -_08038D24: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038D3C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x19 - bl SetMonData - b _0803920C - .align 2, 0 -_08038D3C: .4byte gEnemyParty -_08038D40: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038D58 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1A - bl SetMonData - b _0803920C - .align 2, 0 -_08038D58: .4byte gEnemyParty -_08038D5C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038D74 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1B - bl SetMonData - b _0803920C - .align 2, 0 -_08038D74: .4byte gEnemyParty -_08038D78: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038D90 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1C - bl SetMonData - b _0803920C - .align 2, 0 -_08038D90: .4byte gEnemyParty -_08038D94: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038DAC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1D - bl SetMonData - b _0803920C - .align 2, 0 -_08038DAC: .4byte gEnemyParty -_08038DB0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038DC8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1E - bl SetMonData - b _0803920C - .align 2, 0 -_08038DC8: .4byte gEnemyParty -_08038DCC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038DE4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x1F - bl SetMonData - b _0803920C - .align 2, 0 -_08038DE4: .4byte gEnemyParty -_08038DE8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038E00 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x20 - bl SetMonData - b _0803920C - .align 2, 0 -_08038E00: .4byte gEnemyParty -_08038E04: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038E1C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x22 - bl SetMonData - b _0803920C - .align 2, 0 -_08038E1C: .4byte gEnemyParty -_08038E20: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038E38 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x23 - bl SetMonData - b _0803920C - .align 2, 0 -_08038E38: .4byte gEnemyParty -_08038E3C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038E54 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x24 - bl SetMonData - b _0803920C - .align 2, 0 -_08038E54: .4byte gEnemyParty -_08038E58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038E70 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x25 - bl SetMonData - b _0803920C - .align 2, 0 -_08038E70: .4byte gEnemyParty -_08038E74: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038E8C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x26 - bl SetMonData - b _0803920C - .align 2, 0 -_08038E8C: .4byte gEnemyParty -_08038E90: - movs r0, 0x64 - adds r4, r5, 0 - muls r4, r0 - ldr r0, _08038F00 @ =gEnemyParty - adds r4, r0 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - adds r0, r4, 0 - movs r1, 0x27 - str r3, [sp, 0x34] - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x1 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x28 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x2 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x29 - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x3 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2A - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x4 - adds r2, r0 - adds r0, r4, 0 - movs r1, 0x2B - bl SetMonData - ldrb r2, [r6] - lsls r2, 9 - ldr r3, [sp, 0x34] - adds r0, r3, 0x5 - adds r2, r0 - adds r0, r4, 0 - b _08038F9E - .align 2, 0 -_08038F00: .4byte gEnemyParty -_08038F04: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038F1C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x27 - bl SetMonData - b _0803920C - .align 2, 0 -_08038F1C: .4byte gEnemyParty -_08038F20: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038F38 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x28 - bl SetMonData - b _0803920C - .align 2, 0 -_08038F38: .4byte gEnemyParty -_08038F3C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038F54 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x29 - bl SetMonData - b _0803920C - .align 2, 0 -_08038F54: .4byte gEnemyParty -_08038F58: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038F70 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x2A - bl SetMonData - b _0803920C - .align 2, 0 -_08038F70: .4byte gEnemyParty -_08038F74: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038F8C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x2B - bl SetMonData - b _0803920C - .align 2, 0 -_08038F8C: .4byte gEnemyParty -_08038F90: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038FA8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 -_08038F9E: - movs r1, 0x2C - bl SetMonData - b _0803920C - .align 2, 0 -_08038FA8: .4byte gEnemyParty -_08038FAC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038FC4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0 - bl SetMonData - b _0803920C - .align 2, 0 -_08038FC4: .4byte gEnemyParty -_08038FC8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038FE0 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x9 - bl SetMonData - b _0803920C - .align 2, 0 -_08038FE0: .4byte gEnemyParty -_08038FE4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08038FFC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x37 - bl SetMonData - b _0803920C - .align 2, 0 -_08038FFC: .4byte gEnemyParty -_08039000: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08039018 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x38 - bl SetMonData - b _0803920C - .align 2, 0 -_08039018: .4byte gEnemyParty -_0803901C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08039034 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x39 - bl SetMonData - b _0803920C - .align 2, 0 -_08039034: .4byte gEnemyParty -_08039038: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08039050 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3A - bl SetMonData - b _0803920C - .align 2, 0 -_08039050: .4byte gEnemyParty -_08039054: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803906C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3B - bl SetMonData - b _0803920C - .align 2, 0 -_0803906C: .4byte gEnemyParty -_08039070: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08039088 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3C - bl SetMonData - b _0803920C - .align 2, 0 -_08039088: .4byte gEnemyParty -_0803908C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080390A4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3D - bl SetMonData - b _0803920C - .align 2, 0 -_080390A4: .4byte gEnemyParty -_080390A8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080390C0 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3E - bl SetMonData - b _0803920C - .align 2, 0 -_080390C0: .4byte gEnemyParty -_080390C4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080390DC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x3F - bl SetMonData - b _0803920C - .align 2, 0 -_080390DC: .4byte gEnemyParty -_080390E0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080390F8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x16 - bl SetMonData - b _0803920C - .align 2, 0 -_080390F8: .4byte gEnemyParty -_080390FC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08039114 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x17 - bl SetMonData - b _0803920C - .align 2, 0 -_08039114: .4byte gEnemyParty -_08039118: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08039130 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x18 - bl SetMonData - b _0803920C - .align 2, 0 -_08039130: .4byte gEnemyParty -_08039134: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803914C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x21 - bl SetMonData - b _0803920C - .align 2, 0 -_0803914C: .4byte gEnemyParty -_08039150: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08039168 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x2F - bl SetMonData - b _0803920C - .align 2, 0 -_08039168: .4byte gEnemyParty -_0803916C: - movs r0, 0x64 - muls r0, r5 - ldr r1, _08039184 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x30 - bl SetMonData - b _0803920C - .align 2, 0 -_08039184: .4byte gEnemyParty -_08039188: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080391A0 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x32 - bl SetMonData - b _0803920C - .align 2, 0 -_080391A0: .4byte gEnemyParty -_080391A4: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080391BC @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x33 - bl SetMonData - b _0803920C - .align 2, 0 -_080391BC: .4byte gEnemyParty -_080391C0: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080391D8 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x34 - bl SetMonData - b _0803920C - .align 2, 0 -_080391D8: .4byte gEnemyParty -_080391DC: - movs r0, 0x64 - muls r0, r5 - ldr r1, _080391F4 @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x35 - bl SetMonData - b _0803920C - .align 2, 0 -_080391F4: .4byte gEnemyParty -_080391F8: - movs r0, 0x64 - muls r0, r5 - ldr r1, _0803921C @ =gEnemyParty - adds r0, r1 - ldrb r2, [r6] - lsls r2, 9 - adds r2, r3 - movs r1, 0x36 - bl SetMonData -_0803920C: - add sp, 0x38 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803921C: .4byte gEnemyParty - thumb_func_end sub_8038900 - - thumb_func_start sub_8039220 -sub_8039220: @ 8039220 - push {r4-r7,lr} - ldr r1, _08039284 @ =gBattlePartyID - ldr r7, _08039288 @ =gActiveBank - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - adds r3, r1, 0 - muls r3, r0 - ldr r4, _0803928C @ =gBattleBufferA - lsls r2, 9 - adds r0, r4, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - ldr r1, _08039290 @ =gEnemyParty - adds r0, r1 - adds r5, r3, r0 - movs r3, 0 - adds r0, r4, 0x2 - adds r2, r0 - ldrb r2, [r2] - cmp r3, r2 - bcs _08039278 - adds r6, r4, 0 - adds r2, r7, 0 - adds r4, r0, 0 -_08039256: - adds r1, r5, r3 - ldrb r0, [r2] - lsls r0, 9 - adds r0, 0x3 - adds r0, r3, r0 - adds r0, r6 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - ldrb r0, [r2] - lsls r0, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r3, r0 - bcc _08039256 -_08039278: - bl dp01_tbl4_exec_completed - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08039284: .4byte gBattlePartyID -_08039288: .4byte gActiveBank -_0803928C: .4byte gBattleBufferA -_08039290: .4byte gEnemyParty - thumb_func_end sub_8039220 - - thumb_func_start sub_8039294 -sub_8039294: @ 8039294 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r7, _080393BC @ =gBattlePartyID - ldr r6, _080393C0 @ =gActiveBank - ldrb r0, [r6] - lsls r0, 1 - adds r0, r7 - ldrh r0, [r0] - movs r1, 0x64 - mov r10, r1 - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - ldr r1, _080393C4 @ =gEnemyParty - mov r9, r1 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r1, [r6] - lsls r0, r1, 1 - adds r0, r7 - ldrh r0, [r0] - mov r2, r10 - muls r2, r0 - adds r0, r2, 0 - add r0, r9 - bl sub_8031794 - ldrb r0, [r6] - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl GetMonSpriteTemplate_803C56C - ldr r0, _080393C8 @ =gUnknown_02024E8C - mov r8, r0 - ldrb r0, [r6] - movs r1, 0x2 - bl sub_8077ABC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldrb r0, [r6] - bl sub_8077F68 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldrb r0, [r6] - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r8 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r4, _080393CC @ =gObjectBankIDs - ldrb r1, [r6] - adds r1, r4 - strb r0, [r1] - ldr r5, _080393D0 @ =gSprites - ldrb r0, [r6] - adds r0, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080393D4 @ =0x0000ff10 - strh r1, [r0, 0x24] - ldrb r2, [r6] - adds r0, r2, r4 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r2, [r0, 0x2E] - ldrb r3, [r6] - adds r0, r3, r4 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r2, [r6] - adds r4, r2, r4 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080393D8 @ =gBattleMonForms - adds r2, r1 - ldrb r1, [r2] - bl StartSpriteAnim - ldrb r4, [r6] - lsls r0, r4, 1 - adds r0, r7 - ldrh r0, [r0] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - add r0, r9 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8032984 - ldr r1, _080393DC @ =gBattleBankFunc - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080393E0 @ =sub_8037A74 - str r1, [r0] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080393BC: .4byte gBattlePartyID -_080393C0: .4byte gActiveBank -_080393C4: .4byte gEnemyParty -_080393C8: .4byte gUnknown_02024E8C -_080393CC: .4byte gObjectBankIDs -_080393D0: .4byte gSprites -_080393D4: .4byte 0x0000ff10 -_080393D8: .4byte gBattleMonForms -_080393DC: .4byte gBattleBankFunc -_080393E0: .4byte sub_8037A74 - thumb_func_end sub_8039294 - - thumb_func_start sub_80393E4 -sub_80393E4: @ 80393E4 - push {r4,lr} - ldr r1, _0803941C @ =gBattlePartyID - ldr r4, _08039420 @ =gActiveBank - ldrb r0, [r4] - lsls r2, r0, 1 - adds r2, r1 - ldr r3, _08039424 @ =gBattleBufferA - lsls r0, 9 - adds r1, r3, 0x1 - adds r0, r1 - ldrb r0, [r0] - strh r0, [r2] - ldrb r0, [r4] - lsls r1, r0, 9 - adds r3, 0x2 - adds r1, r3 - ldrb r1, [r1] - bl sub_8039430 - ldr r1, _08039428 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803942C @ =sub_8037E30 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803941C: .4byte gBattlePartyID -_08039420: .4byte gActiveBank -_08039424: .4byte gBattleBufferA -_08039428: .4byte gBattleBankFunc -_0803942C: .4byte sub_8037E30 - thumb_func_end sub_80393E4 - - thumb_func_start sub_8039430 -sub_8039430: @ 8039430 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r1, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl sub_8032AA8 - ldr r0, _0803958C @ =gBattlePartyID - lsls r4, r6, 1 - adds r4, r0 - ldr r0, _08039590 @ =gBattleBufferA - lsls r1, r6, 9 - adds r0, 0x1 - adds r1, r0 - ldrb r0, [r1] - strh r0, [r4] - ldrh r0, [r4] - movs r1, 0x64 - mov r9, r1 - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - ldr r5, _08039594 @ =gEnemyParty - adds r0, r5 - movs r1, 0xB - bl GetMonData - mov r8, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - ldr r0, _08039598 @ =sub_80312F0 - bl CreateInvisibleSpriteWithCallback - ldr r1, _0803959C @ =gUnknown_0300434C - mov r10, r1 - add r10, r6 - mov r1, r10 - strb r0, [r1] - ldrh r0, [r4] - mov r1, r9 - muls r1, r0 - adds r0, r1, 0 - adds r0, r5 - adds r1, r6, 0 - bl sub_8031794 - adds r0, r6, 0 - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl GetMonSpriteTemplate_803C56C - ldr r0, _080395A0 @ =gUnknown_02024E8C - mov r9, r0 - adds r0, r6, 0 - movs r1, 0x2 - bl sub_8077ABC - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r6, 0 - bl sub_8077F68 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - mov r0, r9 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r4, _080395A4 @ =gObjectBankIDs - adds r4, r6, r4 - strb r0, [r4] - ldr r5, _080395A8 @ =gSprites - mov r0, r10 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r4] - strh r1, [r0, 0x30] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x2E] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - mov r1, r8 - strh r1, [r0, 0x32] - ldrb r0, [r4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - lsls r3, r6, 4 - ldrb r2, [r1, 0x5] - movs r0, 0xF - ands r0, r2 - orrs r0, r3 - strb r0, [r1, 0x5] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _080395AC @ =gBattleMonForms - adds r6, r1 - ldrb r1, [r6] - bl StartSpriteAnim - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _080395B0 @ =SpriteCallbackDummy - str r1, [r0] - movs r0, 0 - movs r1, 0xFE - bl sub_8046400 - mov r1, r10 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r5 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x2E] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803958C: .4byte gBattlePartyID -_08039590: .4byte gBattleBufferA -_08039594: .4byte gEnemyParty -_08039598: .4byte sub_80312F0 -_0803959C: .4byte gUnknown_0300434C -_080395A0: .4byte gUnknown_02024E8C -_080395A4: .4byte gObjectBankIDs -_080395A8: .4byte gSprites -_080395AC: .4byte gBattleMonForms -_080395B0: .4byte SpriteCallbackDummy - thumb_func_end sub_8039430 - - thumb_func_start sub_80395B4 -sub_80395B4: @ 80395B4 - push {r4-r6,lr} - ldr r1, _080395E4 @ =gBattleBufferA - ldr r6, _080395E8 @ =gActiveBank - ldrb r2, [r6] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r3, [r0] - cmp r3, 0 - bne _080395F8 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r1, _080395EC @ =0x02017810 - adds r0, r1 - strb r3, [r0, 0x4] - ldr r1, _080395F0 @ =gBattleBankFunc - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _080395F4 @ =sub_8039648 - str r1, [r0] - b _08039634 - .align 2, 0 -_080395E4: .4byte gBattleBufferA -_080395E8: .4byte gActiveBank -_080395EC: .4byte 0x02017810 -_080395F0: .4byte gBattleBankFunc -_080395F4: .4byte sub_8039648 -_080395F8: - ldr r5, _0803963C @ =gObjectBankIDs - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08039640 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldrb r0, [r6] - bl sub_8032A08 - ldr r1, _08039644 @ =gHealthboxIDs - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 - bl dp01_tbl4_exec_completed -_08039634: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803963C: .4byte gObjectBankIDs -_08039640: .4byte gSprites -_08039644: .4byte gHealthboxIDs - thumb_func_end sub_80395B4 - - thumb_func_start sub_8039648 -sub_8039648: @ 8039648 - push {r4,r5,lr} - ldr r5, _08039664 @ =gActiveBank - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r4, _08039668 @ =0x02017810 - adds r3, r0, r4 - ldrb r0, [r3, 0x4] - cmp r0, 0 - beq _0803966C - cmp r0, 0x1 - beq _08039698 - b _080396C0 - .align 2, 0 -_08039664: .4byte gActiveBank -_08039668: .4byte 0x02017810 -_0803966C: - lsls r0, r2, 2 - adds r1, r4, 0 - subs r1, 0x10 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08039688 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl move_anim_start_t4 -_08039688: - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - movs r0, 0x1 - strb r0, [r1, 0x4] - b _080396C0 -_08039698: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080396C0 - strb r0, [r3, 0x4] - ldrb r2, [r5] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x2 - bl move_anim_start_t4 - ldr r1, _080396C8 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080396CC @ =sub_8037BBC - str r1, [r0] -_080396C0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080396C8: .4byte gBattleBankFunc -_080396CC: .4byte sub_8037BBC - thumb_func_end sub_8039648 - - thumb_func_start sub_80396D0 -sub_80396D0: @ 80396D0 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - ldr r0, _08039704 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08039714 - ldr r6, _08039708 @ =gActiveBank - ldrb r0, [r6] - bl GetBankIdentity - movs r1, 0x2 - ands r1, r0 - movs r5, 0x10 - cmp r1, 0 - beq _080396F8 - ldr r5, _0803970C @ =0x0000fff0 -_080396F8: - ldr r4, _08039710 @ =gLinkPlayers - ldrb r0, [r6] - bl sub_803FC34 - b _08039724 - .align 2, 0 -_08039704: .4byte gBattleTypeFlags -_08039708: .4byte gActiveBank -_0803970C: .4byte 0x0000fff0 -_08039710: .4byte gLinkPlayers -_08039714: - movs r5, 0 - ldr r4, _0803986C @ =gLinkPlayers - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 -_08039724: - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1, 0x13] - mov r9, r0 - ldr r0, _08039870 @ =gActiveBank - mov r8, r0 - ldrb r1, [r0] - mov r0, r9 - bl sub_8031A6C - mov r1, r8 - ldrb r0, [r1] - bl GetBankIdentity - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r9 - bl GetMonSpriteTemplate_803C5A0 - ldr r6, _08039874 @ =gUnknown_02024E8C - lsls r5, 16 - movs r2, 0xB0 - lsls r2, 16 - adds r5, r2 - asrs r5, 16 - ldr r1, _08039878 @ =gTrainerFrontPicCoords - mov r2, r9 - lsls r0, r2, 2 - adds r0, r1 - ldrb r0, [r0] - movs r4, 0x8 - subs r4, r0 - lsls r4, 18 - movs r0, 0xA0 - lsls r0, 14 - adds r4, r0 - asrs r4, 16 - mov r1, r8 - ldrb r0, [r1] - bl sub_8079E90 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl CreateSprite - ldr r5, _0803987C @ =gObjectBankIDs - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - strb r0, [r1] - ldr r4, _08039880 @ =gSprites - ldrb r0, [r2] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _08039884 @ =0x0000ff10 - strh r1, [r0, 0x24] - ldrb r0, [r2] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x2 - strh r1, [r0, 0x2E] - ldr r0, _08039888 @ =gTrainerFrontPicPaletteTable - mov r1, r9 - lsls r6, r1, 3 - adds r0, r6, r0 - ldrh r0, [r0, 0x4] - bl IndexOfSpritePaletteTag - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - ldrb r1, [r1] - lsls r2, r1, 4 - adds r2, r1 - lsls r2, 2 - adds r2, r4 - lsls r0, 4 - ldrb r3, [r2, 0x5] - movs r1, 0xF - ands r1, r3 - orrs r1, r0 - strb r1, [r2, 0x5] - mov r1, r8 - ldrb r0, [r1] - adds r0, r5 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x4] - lsls r0, 22 - lsrs r0, 22 - strh r0, [r1, 0x38] - ldr r0, _0803988C @ =gTrainerFrontPicTable - adds r6, r0 - ldrh r0, [r6, 0x6] - bl GetSpriteTileStartByTag - mov r2, r8 - ldrb r1, [r2] - adds r1, r5 - ldrb r2, [r1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r4 - ldr r2, _08039890 @ =0x000003ff - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _08039894 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - mov r1, r8 - ldrb r0, [r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - mov r2, r9 - strh r2, [r0, 0x6] - mov r1, r8 - ldrb r0, [r1] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, 0x1C - adds r0, r4 - ldr r1, _08039898 @ =sub_80313A0 - str r1, [r0] - ldr r1, _0803989C @ =gBattleBankFunc - mov r2, r8 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _080398A0 @ =sub_803757C - str r1, [r0] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803986C: .4byte gLinkPlayers -_08039870: .4byte gActiveBank -_08039874: .4byte gUnknown_02024E8C -_08039878: .4byte gTrainerFrontPicCoords -_0803987C: .4byte gObjectBankIDs -_08039880: .4byte gSprites -_08039884: .4byte 0x0000ff10 -_08039888: .4byte gTrainerFrontPicPaletteTable -_0803988C: .4byte gTrainerFrontPicTable -_08039890: .4byte 0x000003ff -_08039894: .4byte 0xfffffc00 -_08039898: .4byte sub_80313A0 -_0803989C: .4byte gBattleBankFunc -_080398A0: .4byte sub_803757C - thumb_func_end sub_80396D0 - - thumb_func_start sub_80398A4 -sub_80398A4: @ 80398A4 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_80398A4 - - thumb_func_start sub_80398B0 -sub_80398B0: @ 80398B0 - push {r4-r6,lr} - ldr r6, _08039940 @ =gObjectBankIDs - ldr r4, _08039944 @ =gActiveBank - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r5, _08039948 @ =gSprites - adds r0, r5 - bl oamt_add_pos2_onto_pos1 - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x23 - strh r1, [r0, 0x2E] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x8C - lsls r1, 1 - strh r1, [r0, 0x32] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r5, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0803994C @ =sub_8078B34 - str r1, [r0] - ldrb r0, [r4] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _08039950 @ =SpriteCallbackDummy - bl oamt_set_x3A_32 - ldr r1, _08039954 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08039958 @ =sub_80375B4 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08039940: .4byte gObjectBankIDs -_08039944: .4byte gActiveBank -_08039948: .4byte gSprites -_0803994C: .4byte sub_8078B34 -_08039950: .4byte SpriteCallbackDummy -_08039954: .4byte gBattleBankFunc -_08039958: .4byte sub_80375B4 - thumb_func_end sub_80398B0 thumb_func_start sub_803995C sub_803995C: @ 803995C diff --git a/include/data2.h b/include/data2.h index f292472ef..8ddd8c361 100644 --- a/include/data2.h +++ b/include/data2.h @@ -44,4 +44,14 @@ extern const struct SpriteTemplate gSpriteTemplate_81FAF0C; extern void *const gUnknown_081FAF4C[]; extern struct BattleMove gBattleMoves[]; +// data/graphics/trainers/front_pic_coords.inc +extern const struct MonCoords gTrainerFrontPicCoords[]; + +// data/graphics/trainers/front_pic_table.inc +extern const struct CompressedSpriteSheet gTrainerFrontPicTable[]; + +// data/graphics/trainers/front_pic_palette_table.inc +extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[]; + + #endif // GUARD_DATA2_H diff --git a/ld_script.txt b/ld_script.txt index 281f1781d..6b9a618f0 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -62,6 +62,7 @@ SECTIONS { src/battle_7.o(.text); asm/battle_8.o(.text); asm/battle_9.o(.text); + src/battle_10.o(.text); asm/battle_10.o(.text); src/pokemon_1.o(.text); src/calculate_base_damage.o(.text); diff --git a/src/battle_10.c b/src/battle_10.c new file mode 100644 index 000000000..7c90aa062 --- /dev/null +++ b/src/battle_10.c @@ -0,0 +1,777 @@ +#include "global.h" +#include "battle.h" +#include "data2.h" +#include "link.h" +#include "rom3.h" +#include "sprite.h" +#include "string_util.h" +#include "util.h" + +struct UnknownStruct3 +{ + u16 moves[4]; + u8 pp[4]; + u8 ppBonuses; +}; + +extern u8 gActiveBank; +extern u8 gBattleBufferA[][0x200]; +extern u8 gObjectBankIDs[]; +extern u16 gBattlePartyID[]; +extern u8 gHealthboxIDs[]; +extern u16 gBattleTypeFlags; +extern u8 gBattleMonForms[]; +extern void (*gBattleBankFunc[])(void); +extern struct SpriteTemplate gUnknown_02024E8C; +extern u8 gUnknown_0300434C[]; +extern const struct MonCoords gTrainerFrontPicCoords[]; + +extern u8 sub_8077ABC(); +extern u8 sub_8077F68(); +extern u8 sub_8079E90(); +extern u8 GetBankIdentity(u8); +extern void sub_8031794(struct Pokemon *, u8); +extern void sub_8037A74(void); +extern void sub_8032984(u8, u16); +extern void sub_8037E30(void); +extern void sub_80312F0(struct Sprite *); +extern u8 sub_8046400(); +extern void sub_8032A08(); +extern void sub_8043DB0(); +extern void sub_8037BBC(void); +extern s32 sub_803FC34(u16); +extern void sub_8031A6C(u16, u8); +extern void sub_80313A0(struct Sprite *); +extern void sub_803757C(void); +extern void oamt_add_pos2_onto_pos1(); +extern void oamt_set_x3A_32(); +extern void sub_8078B34(struct Sprite *); +extern void sub_80375B4(void); + +u32 dp01_getattr_by_ch1_for_player_pokemon__(u8, u8 *); +void sub_8038900(u8); +void sub_8039430(u8, u8); +void sub_8039648(void); +void dp01_tbl4_exec_completed(void); + +void LinkOpponentHandleGetAttributes(void) +{ + u8 buffer[0x100]; + u32 r6 = 0; + u8 r4; + s32 i; + + if (gBattleBufferA[gActiveBank][2] == 0) + { + r6 = dp01_getattr_by_ch1_for_player_pokemon__(gBattlePartyID[gActiveBank], buffer); + } + else + { + r4 = gBattleBufferA[gActiveBank][2]; + for (i = 0; i < 6; i++) + { + if (r4 & 1) + r6 += dp01_getattr_by_ch1_for_player_pokemon__(i, buffer + r6); + r4 >>= 1; + } + } + dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, buffer); + dp01_tbl4_exec_completed(); +} + +u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer) +{ + struct BattlePokemon battlePokemon; + struct UnknownStruct3 moveData; + u8 nickname[20]; + u8 *src; + s16 data16; + u32 data32; + s32 size = 0; + + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + battlePokemon.species = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES); + battlePokemon.item = GetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM); + for (size = 0; size < 4; size++) + { + battlePokemon.moves[size] = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + size); + battlePokemon.pp[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size); + } + battlePokemon.ppBonuses = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES); + battlePokemon.friendship = GetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP); + battlePokemon.experience = GetMonData(&gEnemyParty[a], MON_DATA_EXP); + battlePokemon.hpIV = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV); + battlePokemon.attackIV = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV); + battlePokemon.defenseIV = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV); + battlePokemon.speedIV = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + battlePokemon.spAttackIV = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV); + battlePokemon.spDefenseIV = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV); + battlePokemon.personality = GetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY); + battlePokemon.status1 = GetMonData(&gEnemyParty[a], MON_DATA_STATUS); + battlePokemon.level = GetMonData(&gEnemyParty[a], MON_DATA_LEVEL); + battlePokemon.hp = GetMonData(&gEnemyParty[a], MON_DATA_HP); + battlePokemon.maxHP = GetMonData(&gEnemyParty[a], MON_DATA_MAX_HP); + battlePokemon.attack = GetMonData(&gEnemyParty[a], MON_DATA_ATK); + battlePokemon.defense = GetMonData(&gEnemyParty[a], MON_DATA_DEF); + battlePokemon.speed = GetMonData(&gEnemyParty[a], MON_DATA_SPD); + battlePokemon.spAttack = GetMonData(&gEnemyParty[a], MON_DATA_SPATK); + battlePokemon.spDefense = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF); + battlePokemon.isEgg = GetMonData(&gEnemyParty[a], MON_DATA_IS_EGG); + battlePokemon.altAbility = GetMonData(&gEnemyParty[a], MON_DATA_ALT_ABILITY); + battlePokemon.otId = GetMonData(&gEnemyParty[a], MON_DATA_OT_ID); + GetMonData(&gEnemyParty[a], MON_DATA_NICKNAME, nickname); + StringCopy10(battlePokemon.nickname, nickname); + GetMonData(&gEnemyParty[a], MON_DATA_OT_NAME, battlePokemon.otName); + src = (u8 *)&battlePokemon; + for (size = 0; size < sizeof(battlePokemon); size++) + buffer[size] = src[size]; + break; + case 1: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 2: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 3: + for (size = 0; size < 4; size++) + { + moveData.moves[size] = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + size); + moveData.pp[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size); + } + moveData.ppBonuses = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES); + src = (u8 *)&moveData; + for (size = 0; size < sizeof(moveData); size++) + buffer[size] = src[size]; + break; + case 4: + case 5: + case 6: + case 7: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 8: + for (size = 0; size < 4; size++) + buffer[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size); + buffer[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES); + size++; + break; + case 9: + case 10: + case 11: + case 12: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9); + size = 1; + break; + case 17: + data32 = GetMonData(&gEnemyParty[a], MON_DATA_OT_ID); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case 18: + data32 = GetMonData(&gEnemyParty[a], MON_DATA_EXP); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + size = 3; + break; + case 19: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_EV); + size = 1; + break; + case 20: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_EV); + size = 1; + break; + case 21: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_EV); + size = 1; + break; + case 22: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_EV); + size = 1; + break; + case 23: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV); + size = 1; + break; + case 24: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV); + size = 1; + break; + case 25: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP); + size = 1; + break; + case 26: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_POKERUS); + size = 1; + break; + case 27: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION); + size = 1; + break; + case 28: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL); + size = 1; + break; + case 29: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_GAME); + size = 1; + break; + case 30: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_POKEBALL); + size = 1; + break; + case 31: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV); + buffer[1] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV); + buffer[2] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV); + buffer[3] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + buffer[4] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV); + buffer[5] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV); + size = 6; + break; + case 32: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV); + size = 1; + break; + case 33: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV); + size = 1; + break; + case 34: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV); + size = 1; + break; + case 35: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV); + size = 1; + break; + case 36: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV); + size = 1; + break; + case 37: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV); + size = 1; + break; + case 38: + data32 = GetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + buffer[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case 39: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_CHECKSUM); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 40: + data32 = GetMonData(&gEnemyParty[a], MON_DATA_STATUS); + buffer[0] = (data32 & 0x000000FF); + buffer[1] = (data32 & 0x0000FF00) >> 8; + buffer[2] = (data32 & 0x00FF0000) >> 16; + buffer[3] = (data32 & 0xFF000000) >> 24; + size = 4; + break; + case 41: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_LEVEL); + size = 1; + break; + case 42: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_HP); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 43: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_MAX_HP); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 44: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_ATK); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 45: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_DEF); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 46: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPD); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 47: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPATK); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 48: + data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF); + buffer[0] = data16; + buffer[1] = data16 >> 8; + size = 2; + break; + case 49: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_COOL); + size = 1; + break; + case 50: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_BEAUTY); + size = 1; + break; + case 51: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_CUTE); + size = 1; + break; + case 52: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SMART); + size = 1; + break; + case 53: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_TOUGH); + size = 1; + break; + case 54: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SHEEN); + size = 1; + break; + case 55: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON); + size = 1; + break; + case 56: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON); + size = 1; + break; + case 57: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON); + size = 1; + break; + case 58: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON); + size = 1; + break; + case 59: + buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON); + size = 1; + break; + } + return size; +} + +void sub_803889C(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_80388A8(void) +{ + u8 i; + u8 r4; + + if (gBattleBufferA[gActiveBank][2] == 0) + { + sub_8038900(gBattlePartyID[gActiveBank]); + } + else + { + r4 = gBattleBufferA[gActiveBank][2]; + for (i = 0; i < 6; i++) + { + if (r4 & 1) + sub_8038900(i); + r4 >>= 1; + } + } + dp01_tbl4_exec_completed(); +} + +void sub_8038900(u8 a) +{ + struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3]; + struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3]; + s32 i; + + switch (gBattleBufferA[gActiveBank][1]) + { + case 0: + { + u8 iv; + + SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species); + SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item); + for (i = 0; i < 4; i++) + { + SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]); + SetMonData(&gEnemyParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]); + } + SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses); + SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship); + SetMonData(&gEnemyParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience); + iv = battlePokemon->hpIV; + SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, (u8 *)&iv); + iv = battlePokemon->attackIV; + SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, (u8 *)&iv); + iv = battlePokemon->defenseIV; + SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, (u8 *)&iv); + iv = battlePokemon->speedIV; + SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, (u8 *)&iv); + iv = battlePokemon->spAttackIV; + SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, (u8 *)&iv); + iv = battlePokemon->spDefenseIV; + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv); + SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality); + SetMonData(&gEnemyParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1); + SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level); + SetMonData(&gEnemyParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp); + SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP); + SetMonData(&gEnemyParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack); + SetMonData(&gEnemyParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense); + SetMonData(&gEnemyParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed); + SetMonData(&gEnemyParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack); + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense); + } + break; + case 1: + SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]); + break; + case 2: + SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]); + break; + case 3: + for (i = 0; i < 4; i++) + { + SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]); + SetMonData(&gEnemyParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]); + } + SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses); + break; + case 4: + case 5: + case 6: + case 7: + SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]); + break; + case 8: + SetMonData(&gEnemyParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gEnemyParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]); + SetMonData(&gEnemyParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]); + SetMonData(&gEnemyParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]); + break; + case 9: + case 10: + case 11: + case 12: + SetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]); + break; + case 17: + SetMonData(&gEnemyParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]); + break; + case 18: + SetMonData(&gEnemyParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]); + break; + case 19: + SetMonData(&gEnemyParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 20: + SetMonData(&gEnemyParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 21: + SetMonData(&gEnemyParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 22: + SetMonData(&gEnemyParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 23: + SetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 24: + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]); + break; + case 25: + SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]); + break; + case 26: + SetMonData(&gEnemyParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]); + break; + case 27: + SetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]); + break; + case 28: + SetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]); + break; + case 29: + SetMonData(&gEnemyParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]); + break; + case 30: + SetMonData(&gEnemyParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]); + break; + case 31: + SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); + SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]); + SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]); + SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]); + SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]); + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]); + break; + case 32: + SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 33: + SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 34: + SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 35: + SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 36: + SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 37: + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]); + break; + case 38: + SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]); + break; + case 39: + SetMonData(&gEnemyParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]); + break; + case 40: + SetMonData(&gEnemyParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]); + break; + case 41: + SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]); + break; + case 42: + SetMonData(&gEnemyParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]); + break; + case 43: + SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]); + break; + case 44: + SetMonData(&gEnemyParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]); + break; + case 45: + SetMonData(&gEnemyParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]); + break; + case 46: + SetMonData(&gEnemyParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]); + break; + case 47: + SetMonData(&gEnemyParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]); + break; + case 48: + SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]); + break; + case 49: + SetMonData(&gEnemyParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]); + break; + case 50: + SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]); + break; + case 51: + SetMonData(&gEnemyParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]); + break; + case 52: + SetMonData(&gEnemyParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]); + break; + case 53: + SetMonData(&gEnemyParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]); + break; + case 54: + SetMonData(&gEnemyParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]); + break; + case 55: + SetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 56: + SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 57: + SetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 58: + SetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + case 59: + SetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]); + break; + } +} + +void sub_8039220(void) +{ + u8 *dst; + u8 i; + + dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1]; + for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++) + dst[i] = gBattleBufferA[gActiveBank][3 + i]; + dp01_tbl4_exec_completed(); +} + +void sub_8039294(void) +{ + u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES); + + sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank); + GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + sub_8077ABC(gActiveBank, 2), + sub_8077F68(gActiveBank), + sub_8079E90(gActiveBank)); + gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240; + gSprites[gObjectBankIDs[gActiveBank]].data0 = gActiveBank; + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank; + StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]); + sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES)); + gBattleBankFunc[gActiveBank] = sub_8037A74; +} + +void sub_80393E4(void) +{ + gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1]; + sub_8039430(gActiveBank, gBattleBufferA[gActiveBank][2]); + gBattleBankFunc[gActiveBank] = sub_8037E30; +} + +void sub_8039430(u8 a, u8 b) +{ + u16 species; + + sub_8032AA8(a, b); + gBattlePartyID[a] = gBattleBufferA[a][1]; + species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES); + gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0); + sub_8031794(&gEnemyParty[gBattlePartyID[a]], a); + GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a)); + gObjectBankIDs[a] = CreateSprite( + &gUnknown_02024E8C, + sub_8077ABC(a, 2), + sub_8077F68(a), + sub_8079E90(a)); + gSprites[gUnknown_0300434C[a]].data1 = gObjectBankIDs[a]; + gSprites[gObjectBankIDs[a]].data0 = a; + gSprites[gObjectBankIDs[a]].data2 = species; + gSprites[gObjectBankIDs[a]].oam.paletteNum = a; + StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]); + gSprites[gObjectBankIDs[a]].invisible = TRUE; + gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy; + gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFE); +} + +void sub_80395B4(void) +{ + if (gBattleBufferA[gActiveBank][1] == 0) + { + ewram17810[gActiveBank].unk4 = 0; + gBattleBankFunc[gActiveBank] = sub_8039648; + } + else + { + FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]); + DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]); + sub_8032A08(gActiveBank); + sub_8043DB0(gHealthboxIDs[gActiveBank]); + dp01_tbl4_exec_completed(); + } +} + +void sub_8039648(void) +{ + switch (ewram17810[gActiveBank].unk4) + { + case 0: + if (ewram17800[gActiveBank].unk0_2) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + ewram17810[gActiveBank].unk4 = 1; + break; + case 1: + if (!ewram17810[gActiveBank].unk0_6) + { + ewram17810[gActiveBank].unk4 = 0; + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 2); + gBattleBankFunc[gActiveBank] = sub_8037BBC; + } + break; + } +} + +void sub_80396D0(void) +{ + s16 xOffset; + u32 gender; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (GetBankIdentity(gActiveBank) & 2) + xOffset = -16; + else + xOffset = 16; + gender = gLinkPlayers[sub_803FC34(gActiveBank)].gender; + } + else + { + xOffset = 0; + gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender; + } + sub_8031A6C(gender, gActiveBank); + GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank)); + gObjectBankIDs[gActiveBank] = CreateSprite( + &gUnknown_02024E8C, + 176 + xOffset, 40 + 4 * (8 - gTrainerFrontPicCoords[gender].coords), + sub_8079E90(gActiveBank)); + gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240; + gSprites[gObjectBankIDs[gActiveBank]].data0 = 2; + gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag); + gSprites[gObjectBankIDs[gActiveBank]].data5 = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum; + gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[gender].tag); + gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = gender; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0; + gBattleBankFunc[gActiveBank] = sub_803757C; +} + +void sub_80398A4(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_80398B0(void) +{ + oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); + gSprites[gObjectBankIDs[gActiveBank]].data0 = 35; + gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; + gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; + oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); + gBattleBankFunc[gActiveBank] = sub_80375B4; +} -- cgit v1.2.3 From 53d0a33035cf5654c6f4e005821a67fa8322a055 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 24 Jun 2017 13:35:43 -0500 Subject: decompile sub_803995C - sub_803A030 --- asm/battle_10.s | 910 --------------------------------------------------- src/battle_10.c | 323 ++++++++++++++++++ src/battle_811DA74.c | 2 +- 3 files changed, 324 insertions(+), 911 deletions(-) diff --git a/asm/battle_10.s b/asm/battle_10.s index 9eed13601..ac4a2d25b 100644 --- a/asm/battle_10.s +++ b/asm/battle_10.s @@ -6,916 +6,6 @@ .text - thumb_func_start sub_803995C -sub_803995C: @ 803995C - push {r4,r5,lr} - ldr r5, _080399A0 @ =gActiveBank - ldrb r2, [r5] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r4, _080399A4 @ =0x02017810 - adds r3, r0, r4 - ldrb r0, [r3, 0x4] - cmp r0, 0 - bne _080399A8 - lsls r0, r2, 2 - adds r1, r4, 0 - subs r1, 0x10 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0803998E - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl move_anim_start_t4 -_0803998E: - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrb r0, [r1, 0x4] - adds r0, 0x1 - strb r0, [r1, 0x4] - b _080399E4 - .align 2, 0 -_080399A0: .4byte gActiveBank -_080399A4: .4byte 0x02017810 -_080399A8: - ldrb r1, [r3] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080399E4 - strb r0, [r3, 0x4] - movs r0, 0x10 - movs r1, 0x3F - bl PlaySE12WithPanning - ldr r2, _080399EC @ =gSprites - ldr r1, _080399F0 @ =gObjectBankIDs - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080399F4 @ =sub_8010384 - str r1, [r0] - ldr r1, _080399F8 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080399FC @ =sub_8037B78 - str r1, [r0] -_080399E4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080399EC: .4byte gSprites -_080399F0: .4byte gObjectBankIDs -_080399F4: .4byte sub_8010384 -_080399F8: .4byte gBattleBankFunc -_080399FC: .4byte sub_8037B78 - thumb_func_end sub_803995C - - thumb_func_start sub_8039A00 -sub_8039A00: @ 8039A00 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039A00 - - thumb_func_start sub_8039A0C -sub_8039A0C: @ 8039A0C - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039A0C - - thumb_func_start sub_8039A18 -sub_8039A18: @ 8039A18 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039A18 - - thumb_func_start sub_8039A24 -sub_8039A24: @ 8039A24 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039A24 - - thumb_func_start sub_8039A30 -sub_8039A30: @ 8039A30 - push {r4-r6,lr} - ldr r6, _08039B14 @ =gActiveBank - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - beq _08039A42 - b _08039B52 -_08039A42: - ldr r0, _08039B18 @ =gBattleBufferA - mov r12, r0 - ldrb r2, [r6] - lsls r2, 9 - adds r0, 0x1 - adds r0, r2, r0 - ldrb r0, [r0] - mov r1, r12 - adds r1, 0x2 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - ldr r5, _08039B1C @ =gUnknown_0202F7C4 - mov r1, r12 - adds r1, 0x3 - adds r2, r1 - ldrb r1, [r2] - strb r1, [r5] - ldr r4, _08039B20 @ =gMovePowerMoveAnim - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x4 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x5 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r4, _08039B24 @ =gMoveDmgMoveAnim - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x6 - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0x7 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 8 - orrs r3, r1 - mov r1, r12 - adds r1, 0x8 - adds r1, r2, r1 - ldrb r1, [r1] - lsls r1, 16 - orrs r3, r1 - mov r1, r12 - adds r1, 0x9 - adds r2, r1 - ldrb r1, [r2] - lsls r1, 24 - orrs r3, r1 - str r3, [r4] - ldr r3, _08039B28 @ =gHappinessMoveAnim - ldrb r1, [r6] - lsls r1, 9 - mov r2, r12 - adds r2, 0xA - adds r1, r2 - ldrb r1, [r1] - strb r1, [r3] - ldr r4, _08039B2C @ =gWeatherMoveAnim - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0xC - adds r1, r2, r1 - ldrb r3, [r1] - mov r1, r12 - adds r1, 0xD - adds r2, r1 - ldrb r1, [r2] - lsls r1, 8 - orrs r3, r1 - strh r3, [r4] - ldr r3, _08039B30 @ =gDisableStructMoveAnim - ldrb r2, [r6] - lsls r2, 9 - mov r1, r12 - adds r1, 0x10 - adds r2, r1 - str r2, [r3] - ldr r3, _08039B34 @ =gPID_perBank - ldrb r1, [r6] - lsls r1, 2 - adds r1, r3 - ldr r2, [r2] - str r2, [r1] - ldrb r1, [r5] - bl sub_8031720 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - beq _08039B38 - bl dp01_tbl4_exec_completed - b _08039B52 - .align 2, 0 -_08039B14: .4byte gActiveBank -_08039B18: .4byte gBattleBufferA -_08039B1C: .4byte gUnknown_0202F7C4 -_08039B20: .4byte gMovePowerMoveAnim -_08039B24: .4byte gMoveDmgMoveAnim -_08039B28: .4byte gHappinessMoveAnim -_08039B2C: .4byte gWeatherMoveAnim -_08039B30: .4byte gDisableStructMoveAnim -_08039B34: .4byte gPID_perBank -_08039B38: - ldrb r1, [r6] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08039B58 @ =0x02017810 - adds r0, r1 - strb r2, [r0, 0x4] - ldr r1, _08039B5C @ =gBattleBankFunc - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _08039B60 @ =sub_8039B64 - str r1, [r0] -_08039B52: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08039B58: .4byte 0x02017810 -_08039B5C: .4byte gBattleBankFunc -_08039B60: .4byte sub_8039B64 - thumb_func_end sub_8039A30 - - thumb_func_start sub_8039B64 -sub_8039B64: @ 8039B64 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r2, _08039BA8 @ =gBattleBufferA - ldr r5, _08039BAC @ =gActiveBank - ldrb r3, [r5] - lsls r1, r3, 9 - adds r0, r2, 0x1 - mov r9, r0 - adds r0, r1, r0 - ldrb r4, [r0] - adds r6, r2, 0x2 - mov r8, r6 - adds r0, r1, r6 - ldrb r0, [r0] - lsls r0, 8 - orrs r4, r0 - adds r2, 0xB - adds r1, r2 - ldrb r7, [r1] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - ldr r6, _08039BB0 @ =0x02017810 - adds r0, r6 - ldrb r2, [r0, 0x4] - cmp r2, 0x1 - beq _08039BF2 - cmp r2, 0x1 - bgt _08039BB4 - cmp r2, 0 - beq _08039BBE - b _08039CBC - .align 2, 0 -_08039BA8: .4byte gBattleBufferA -_08039BAC: .4byte gActiveBank -_08039BB0: .4byte 0x02017810 -_08039BB4: - cmp r2, 0x2 - beq _08039C18 - cmp r2, 0x3 - beq _08039C84 - b _08039CBC -_08039BBE: - lsls r1, r3, 2 - adds r0, r6, 0 - subs r0, 0x10 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0xC - ands r0, r2 - cmp r0, 0x4 - bne _08039BE2 - movs r0, 0x8 - orrs r0, r2 - strb r0, [r1] - ldrb r2, [r5] - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x5 - bl move_anim_start_t4 -_08039BE2: - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - movs r0, 0x1 - strb r0, [r1, 0x4] - b _08039CBC -_08039BF2: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08039CBC - movs r0, 0 - bl sub_80326EC - adds r0, r4, 0 - bl ExecuteMoveAnim - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - movs r0, 0x2 - strb r0, [r1, 0x4] - b _08039CBC -_08039C18: - ldr r0, _08039C74 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08039C78 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _08039CBC - movs r0, 0x1 - bl sub_80326EC - ldrb r2, [r5] - lsls r0, r2, 2 - adds r4, r6, 0 - subs r4, 0x10 - adds r0, r4 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08039C60 - cmp r7, 0x1 - bhi _08039C60 - adds r0, r2, 0 - adds r1, r2, 0 - movs r3, 0x6 - bl move_anim_start_t4 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r4 - ldrb r2, [r0] - movs r1, 0x9 - negs r1, r1 - ands r1, r2 - strb r1, [r0] -_08039C60: - ldr r0, _08039C7C @ =gActiveBank - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08039C80 @ =0x02017810 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0, 0x4] - b _08039CBC - .align 2, 0 -_08039C74: .4byte gAnimScriptCallback -_08039C78: .4byte gAnimScriptActive -_08039C7C: .4byte gActiveBank -_08039C80: .4byte 0x02017810 -_08039C84: - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08039CBC - bl sub_8031F24 - ldrb r0, [r5] - lsls r2, r0, 9 - mov r3, r9 - adds r1, r2, r3 - ldrb r1, [r1] - add r2, r8 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - bl sub_80324BC - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - strb r4, [r0, 0x4] - bl dp01_tbl4_exec_completed -_08039CBC: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8039B64 - - thumb_func_start sub_8039CC8 -sub_8039CC8: @ 8039CC8 - push {r4,lr} - sub sp, 0x4 - ldr r0, _08039D0C @ =gUnknown_030042A4 - movs r1, 0 - strh r1, [r0] - ldr r0, _08039D10 @ =gUnknown_030042A0 - strh r1, [r0] - ldr r4, _08039D14 @ =gActiveBank - ldrb r0, [r4] - lsls r0, 9 - ldr r1, _08039D18 @ =gUnknown_02023A62 - adds r0, r1 - ldrh r0, [r0] - bl BufferStringBattle - ldr r0, _08039D1C @ =gUnknown_03004210 - ldr r1, _08039D20 @ =gDisplayedStringBattle - movs r2, 0xF - str r2, [sp] - movs r2, 0x90 - movs r3, 0x2 - bl sub_8002EB0 - ldr r1, _08039D24 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08039D28 @ =sub_8037C2C - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08039D0C: .4byte gUnknown_030042A4 -_08039D10: .4byte gUnknown_030042A0 -_08039D14: .4byte gActiveBank -_08039D18: .4byte gUnknown_02023A62 -_08039D1C: .4byte gUnknown_03004210 -_08039D20: .4byte gDisplayedStringBattle -_08039D24: .4byte gBattleBankFunc -_08039D28: .4byte sub_8037C2C - thumb_func_end sub_8039CC8 - - thumb_func_start sub_8039D2C -sub_8039D2C: @ 8039D2C - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039D2C - - thumb_func_start sub_8039D38 -sub_8039D38: @ 8039D38 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039D38 - - thumb_func_start sub_8039D44 -sub_8039D44: @ 8039D44 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039D44 - - thumb_func_start sub_8039D50 -sub_8039D50: @ 8039D50 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039D50 - - thumb_func_start sub_8039D5C -sub_8039D5C: @ 8039D5C - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039D5C - - thumb_func_start sub_8039D68 -sub_8039D68: @ 8039D68 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039D68 - - thumb_func_start sub_8039D74 -sub_8039D74: @ 8039D74 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039D74 - - thumb_func_start sub_8039D80 -sub_8039D80: @ 8039D80 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - movs r0, 0 - bl load_gfxc_health_bar - ldr r3, _08039DF8 @ =gBattleBufferA - ldr r0, _08039DFC @ =gActiveBank - mov r9, r0 - ldrb r4, [r0] - lsls r2, r4, 9 - adds r0, r3, 0x2 - adds r0, r2, r0 - ldrb r1, [r0] - adds r3, 0x3 - adds r2, r3 - ldrb r0, [r2] - lsls r0, 8 - orrs r1, r0 - lsls r1, 16 - asrs r7, r1, 16 - ldr r0, _08039E00 @ =0x00007fff - cmp r7, r0 - beq _08039E10 - ldr r6, _08039E04 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r6 - ldrh r0, [r0] - movs r5, 0x64 - muls r0, r5 - ldr r4, _08039E08 @ =gEnemyParty - adds r0, r4 - movs r1, 0x3A - bl GetMonData - mov r8, r0 - mov r1, r9 - ldrb r0, [r1] - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - muls r0, r5 - adds r0, r4 - movs r1, 0x39 - bl GetMonData - adds r3, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _08039E0C @ =gHealthboxIDs - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - mov r2, r8 - bl sub_8043D84 - b _08039E3A - .align 2, 0 -_08039DF8: .4byte gBattleBufferA -_08039DFC: .4byte gActiveBank -_08039E00: .4byte 0x00007fff -_08039E04: .4byte gBattlePartyID -_08039E08: .4byte gEnemyParty -_08039E0C: .4byte gHealthboxIDs -_08039E10: - ldr r1, _08039E58 @ =gBattlePartyID - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08039E5C @ =gEnemyParty - adds r0, r1 - movs r1, 0x3A - bl GetMonData - adds r2, r0, 0 - mov r1, r9 - ldrb r0, [r1] - ldr r1, _08039E60 @ =gHealthboxIDs - adds r1, r0, r1 - ldrb r1, [r1] - str r7, [sp] - movs r3, 0 - bl sub_8043D84 -_08039E3A: - ldr r1, _08039E64 @ =gBattleBankFunc - ldr r0, _08039E68 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08039E6C @ =sub_8037B24 - str r1, [r0] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08039E58: .4byte gBattlePartyID -_08039E5C: .4byte gEnemyParty -_08039E60: .4byte gHealthboxIDs -_08039E64: .4byte gBattleBankFunc -_08039E68: .4byte gActiveBank -_08039E6C: .4byte sub_8037B24 - thumb_func_end sub_8039D80 - - thumb_func_start sub_8039E70 -sub_8039E70: @ 8039E70 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039E70 - - thumb_func_start sub_8039E7C -sub_8039E7C: @ 8039E7C - push {r4,lr} - ldr r4, _08039ED4 @ =gActiveBank - ldrb r0, [r4] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _08039ECC - ldr r0, _08039ED8 @ =gHealthboxIDs - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _08039EDC @ =gBattlePartyID - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08039EE0 @ =gEnemyParty - adds r1, r2 - movs r2, 0x9 - bl sub_8045A5C - ldrb r0, [r4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _08039EE4 @ =0x02017810 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r1, _08039EE8 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08039EEC @ =sub_8037FAC - str r1, [r0] -_08039ECC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08039ED4: .4byte gActiveBank -_08039ED8: .4byte gHealthboxIDs -_08039EDC: .4byte gBattlePartyID -_08039EE0: .4byte gEnemyParty -_08039EE4: .4byte 0x02017810 -_08039EE8: .4byte gBattleBankFunc -_08039EEC: .4byte sub_8037FAC - thumb_func_end sub_8039E7C - - thumb_func_start sub_8039EF0 -sub_8039EF0: @ 8039EF0 - push {r4,r5,lr} - ldr r5, _08039F48 @ =gActiveBank - ldrb r0, [r5] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _08039F40 - ldr r4, _08039F4C @ =gBattleBufferA - ldrb r3, [r5] - lsls r3, 9 - adds r0, r4, 0x1 - adds r0, r3, r0 - ldrb r0, [r0] - adds r1, r4, 0x2 - adds r1, r3, r1 - ldrb r1, [r1] - adds r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 8 - orrs r1, r2 - adds r2, r4, 0x4 - adds r2, r3, r2 - ldrb r2, [r2] - lsls r2, 16 - orrs r1, r2 - adds r4, 0x5 - adds r3, r4 - ldrb r2, [r3] - lsls r2, 24 - orrs r1, r2 - bl move_anim_start_t2_for_situation - ldr r1, _08039F50 @ =gBattleBankFunc - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08039F54 @ =sub_8037FAC - str r1, [r0] -_08039F40: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08039F48: .4byte gActiveBank -_08039F4C: .4byte gBattleBufferA -_08039F50: .4byte gBattleBankFunc -_08039F54: .4byte sub_8037FAC - thumb_func_end sub_8039EF0 - - thumb_func_start sub_8039F58 -sub_8039F58: @ 8039F58 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039F58 - - thumb_func_start sub_8039F64 -sub_8039F64: @ 8039F64 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039F64 - - thumb_func_start sub_8039F70 -sub_8039F70: @ 8039F70 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039F70 - - thumb_func_start sub_8039F7C -sub_8039F7C: @ 8039F7C - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039F7C - - thumb_func_start sub_8039F88 -sub_8039F88: @ 8039F88 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039F88 - - thumb_func_start sub_8039F94 -sub_8039F94: @ 8039F94 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039F94 - - thumb_func_start sub_8039FA0 -sub_8039FA0: @ 8039FA0 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039FA0 - - thumb_func_start sub_8039FAC -sub_8039FAC: @ 8039FAC - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039FAC - - thumb_func_start sub_8039FB8 -sub_8039FB8: @ 8039FB8 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_8039FB8 - - thumb_func_start sub_8039FC4 -sub_8039FC4: @ 8039FC4 - push {lr} - ldr r2, _08039FDC @ =gUnknown_020238C8 - ldrb r1, [r2] - movs r0, 0x80 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - .align 2, 0 -_08039FDC: .4byte gUnknown_020238C8 - thumb_func_end sub_8039FC4 - - thumb_func_start sub_8039FE0 -sub_8039FE0: @ 8039FE0 - push {lr} - ldr r3, _0803A00C @ =gUnknown_020238C8 - ldr r1, _0803A010 @ =gBattleBufferA - ldr r0, _0803A014 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - movs r1, 0x7F - ands r1, r0 - ldrb r2, [r3] - movs r0, 0x80 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - .align 2, 0 -_0803A00C: .4byte gUnknown_020238C8 -_0803A010: .4byte gBattleBufferA -_0803A014: .4byte gActiveBank - thumb_func_end sub_8039FE0 - - thumb_func_start sub_803A018 -sub_803A018: @ 803A018 - push {lr} - ldr r2, _0803A02C @ =gUnknown_020238C8 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - .align 2, 0 -_0803A02C: .4byte gUnknown_020238C8 - thumb_func_end sub_803A018 - - thumb_func_start sub_803A030 -sub_803A030: @ 803A030 - push {lr} - ldr r3, _0803A054 @ =gUnknown_020238C8 - ldr r1, [r3] - lsls r1, 24 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - lsls r1, 7 - ldrb r2, [r3] - movs r0, 0x7F - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - .align 2, 0 -_0803A054: .4byte gUnknown_020238C8 - thumb_func_end sub_803A030 - thumb_func_start dp01t_29_4_blink dp01t_29_4_blink: @ 803A058 push {r4,lr} diff --git a/src/battle_10.c b/src/battle_10.c index 7c90aa062..97c4a14b8 100644 --- a/src/battle_10.c +++ b/src/battle_10.c @@ -3,8 +3,11 @@ #include "data2.h" #include "link.h" #include "rom3.h" +#include "songs.h" +#include "sound.h" #include "sprite.h" #include "string_util.h" +#include "text.h" #include "util.h" struct UnknownStruct3 @@ -14,6 +17,12 @@ struct UnknownStruct3 u8 ppBonuses; }; +struct UnknownStruct5 +{ + u8 unk0_0:7; + u8 unk0_7:1; +}; + extern u8 gActiveBank; extern u8 gBattleBufferA[][0x200]; extern u8 gObjectBankIDs[]; @@ -22,7 +31,21 @@ extern u8 gHealthboxIDs[]; extern u16 gBattleTypeFlags; extern u8 gBattleMonForms[]; extern void (*gBattleBankFunc[])(void); +extern u32 *gDisableStructMoveAnim; +extern u32 gMoveDmgMoveAnim; +extern u16 gMovePowerMoveAnim; +extern u8 gHappinessMoveAnim; +extern u16 gWeatherMoveAnim; +extern u32 gPID_perBank[]; +extern u8 gAnimScriptActive; +extern void (*gAnimScriptCallback)(void); +extern u8 gDisplayedStringBattle[]; +extern struct UnknownStruct5 gUnknown_020238C8; extern struct SpriteTemplate gUnknown_02024E8C; +extern u8 gUnknown_0202F7C4; +extern struct Window gUnknown_03004210; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; extern u8 gUnknown_0300434C[]; extern const struct MonCoords gTrainerFrontPicCoords[]; @@ -47,11 +70,27 @@ extern void oamt_add_pos2_onto_pos1(); extern void oamt_set_x3A_32(); extern void sub_8078B34(struct Sprite *); extern void sub_80375B4(void); +extern void sub_8010384(struct Sprite *); +extern void sub_8037B78(void); +extern u8 sub_8031720(); +extern u8 mplay_80342A4(); +extern void ExecuteMoveAnim(); +extern void sub_80326EC(); +extern void sub_8031F24(void); +extern void sub_80324BC(); +extern void BufferStringBattle(); +extern void sub_8037C2C(void); +extern void sub_8043D84(); +extern void sub_8037B24(void); +extern void sub_8045A5C(); +extern void sub_8037FAC(void); +extern void move_anim_start_t2_for_situation(); u32 dp01_getattr_by_ch1_for_player_pokemon__(u8, u8 *); void sub_8038900(u8); void sub_8039430(u8, u8); void sub_8039648(void); +void sub_8039B64(void); void dp01_tbl4_exec_completed(void); void LinkOpponentHandleGetAttributes(void) @@ -775,3 +814,287 @@ void sub_80398B0(void) oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy); gBattleBankFunc[gActiveBank] = sub_80375B4; } + +void sub_803995C(void) +{ + if (ewram17810[gActiveBank].unk4 == 0) + { + if (ewram17800[gActiveBank].unk0_2) + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + ewram17810[gActiveBank].unk4++; + } + else if (!ewram17810[gActiveBank].unk0_6) + { + ewram17810[gActiveBank].unk4 = 0; + PlaySE12WithPanning(SE_POKE_DEAD, 63); + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8010384; + gBattleBankFunc[gActiveBank] = sub_8037B78; + } +} + +void sub_8039A00(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039A0C(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039A18(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039A24(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039A30(void) +{ + if (!mplay_80342A4(gActiveBank)) + { + u32 r0 = gBattleBufferA[gActiveBank][1] + | (gBattleBufferA[gActiveBank][2] << 8); + + gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3]; + gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4] + | (gBattleBufferA[gActiveBank][5] << 8); + gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6] + | (gBattleBufferA[gActiveBank][7] << 8) + | (gBattleBufferA[gActiveBank][8] << 16) + | (gBattleBufferA[gActiveBank][9] << 24); + gHappinessMoveAnim = gBattleBufferA[gActiveBank][10]; + gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] + | (gBattleBufferA[gActiveBank][13] << 8); + gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16]; + gPID_perBank[gActiveBank] = *gDisableStructMoveAnim; + + if (sub_8031720(r0, gUnknown_0202F7C4) != 0) + { + dp01_tbl4_exec_completed(); + } + else + { + ewram17810[gActiveBank].unk4 = 0; + gBattleBankFunc[gActiveBank] = sub_8039B64; + } + } +} + +void sub_8039B64(void) +{ + u16 r4 = gBattleBufferA[gActiveBank][1] + | (gBattleBufferA[gActiveBank][2] << 8); + u8 r7 = gBattleBufferA[gActiveBank][11]; + + switch (ewram17810[gActiveBank].unk4) + { + case 0: + if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3) + { + ewram17800[gActiveBank].unk0_3 = 1; + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5); + } + ewram17810[gActiveBank].unk4 = 1; + break; + case 1: + if (!ewram17810[gActiveBank].unk0_6) + { + sub_80326EC(0); + ExecuteMoveAnim(r4); + ewram17810[gActiveBank].unk4 = 2; + } + break; + case 2: + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + sub_80326EC(1); + if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1) + { + move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6); + ewram17800[gActiveBank].unk0_3 = 0; + } + ewram17810[gActiveBank].unk4 = 3; + } + break; + case 3: + if (!ewram17810[gActiveBank].unk0_6) + { + sub_8031F24(); + sub_80324BC( + gActiveBank, + gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + ewram17810[gActiveBank].unk4 = 0; + dp01_tbl4_exec_completed(); + } + break; + } +} + +void sub_8039CC8(void) +{ + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]); + sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15); + gBattleBankFunc[gActiveBank] = sub_8037C2C; +} + +void sub_8039D2C(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039D38(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039D44(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039D50(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039D5C(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039D68(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039D74(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039D80(void) +{ + s16 r7; + + load_gfxc_health_bar(0); + r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + if (r7 != 0x7FFF) + { + u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); + u32 hp = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_HP); + + sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, hp, r7); + } + else + { + u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP); + + sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7); + } + gBattleBankFunc[gActiveBank] = sub_8037B24; +} + +void sub_8039E70(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039E7C(void) +{ + if (mplay_80342A4(gActiveBank) == 0) + { + sub_8045A5C(gHealthboxIDs[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], 9); + ewram17810[gActiveBank].unk0_4 = 0; + gBattleBankFunc[gActiveBank] = sub_8037FAC; + } +} + +void sub_8039EF0(void) +{ + if (mplay_80342A4(gActiveBank) == 0) + { + move_anim_start_t2_for_situation( + gBattleBufferA[gActiveBank][1], + gBattleBufferA[gActiveBank][2] + | (gBattleBufferA[gActiveBank][3] << 8) + | (gBattleBufferA[gActiveBank][4] << 16) + | (gBattleBufferA[gActiveBank][5] << 24)); + gBattleBankFunc[gActiveBank] = sub_8037FAC; + } +} + +void sub_8039F58(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039F64(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039F70(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039F7C(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039F88(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039F94(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039FA0(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039FAC(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039FB8(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_8039FC4(void) +{ + gUnknown_020238C8.unk0_0 = 0; + dp01_tbl4_exec_completed(); +} + +void sub_8039FE0(void) +{ + gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1]; + dp01_tbl4_exec_completed(); +} + +void sub_803A018(void) +{ + gUnknown_020238C8.unk0_7 = 0; + dp01_tbl4_exec_completed(); +} + +void sub_803A030(void) +{ + gUnknown_020238C8.unk0_7 ^= 1; + dp01_tbl4_exec_completed(); +} diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 743dd2554..4aab0328c 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -1169,7 +1169,7 @@ void sub_811FDF0(void) void sub_811FDFC(void) { - if (mplay_80342A4(gActiveBank) == 0) + if (!mplay_80342A4(gActiveBank)) { u32 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8); -- cgit v1.2.3 From 826cfdb74ba6e66dac9e8e026bd7411719726642 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 25 Jun 2017 19:03:49 -0500 Subject: finish decompiling battle_10 --- asm/battle_10.s | 816 --------------------------------------------------- include/battle.h | 1 + ld_script.txt | 1 - src/battle_10.c | 232 ++++++++++++++- src/battle_811DA74.c | 7 +- 5 files changed, 236 insertions(+), 821 deletions(-) delete mode 100644 asm/battle_10.s diff --git a/asm/battle_10.s b/asm/battle_10.s deleted file mode 100644 index ac4a2d25b..000000000 --- a/asm/battle_10.s +++ /dev/null @@ -1,816 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start dp01t_29_4_blink -dp01t_29_4_blink: @ 803A058 - push {r4,lr} - ldr r3, _0803A080 @ =gSprites - ldr r2, _0803A084 @ =gObjectBankIDs - ldr r4, _0803A088 @ =gActiveBank - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _0803A08C - bl dp01_tbl4_exec_completed - b _0803A0B6 - .align 2, 0 -_0803A080: .4byte gSprites -_0803A084: .4byte gObjectBankIDs -_0803A088: .4byte gActiveBank -_0803A08C: - ldr r1, _0803A0BC @ =gDoingBattleAnim - movs r0, 0x1 - strb r0, [r1] - ldrb r0, [r4] - adds r0, r2 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0 - strh r1, [r0, 0x30] - ldrb r0, [r4] - bl sub_8047858 - ldr r1, _0803A0C0 @ =gBattleBankFunc - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803A0C4 @ =dp01t_0F_4_move_anim - str r1, [r0] -_0803A0B6: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803A0BC: .4byte gDoingBattleAnim -_0803A0C0: .4byte gBattleBankFunc -_0803A0C4: .4byte dp01t_0F_4_move_anim - thumb_func_end dp01t_29_4_blink - - thumb_func_start sub_803A0C8 -sub_803A0C8: @ 803A0C8 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_803A0C8 - - thumb_func_start sub_803A0D4 -sub_803A0D4: @ 803A0D4 - push {r4,lr} - ldr r4, _0803A110 @ =gActiveBank - ldrb r0, [r4] - bl GetBankSide - lsls r0, 24 - movs r3, 0x3F - cmp r0, 0 - bne _0803A0E8 - movs r3, 0xC0 -_0803A0E8: - ldr r2, _0803A114 @ =gBattleBufferA - ldrb r1, [r4] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - lsls r1, r3, 24 - asrs r1, 24 - bl PlaySE12WithPanning - bl dp01_tbl4_exec_completed - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803A110: .4byte gActiveBank -_0803A114: .4byte gBattleBufferA - thumb_func_end sub_803A0D4 - - thumb_func_start sub_803A118 -sub_803A118: @ 803A118 - push {lr} - ldr r2, _0803A140 @ =gBattleBufferA - ldr r0, _0803A144 @ =gActiveBank - ldrb r1, [r0] - lsls r1, 9 - adds r0, r2, 0x1 - adds r0, r1, r0 - ldrb r0, [r0] - adds r2, 0x2 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 8 - orrs r0, r1 - bl PlayFanfare - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - .align 2, 0 -_0803A140: .4byte gBattleBufferA -_0803A144: .4byte gActiveBank - thumb_func_end sub_803A118 - - thumb_func_start sub_803A148 -sub_803A148: @ 803A148 - push {lr} - ldr r1, _0803A178 @ =gBattlePartyID - ldr r0, _0803A17C @ =gActiveBank - ldrb r0, [r0] - lsls r0, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0803A180 @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x19 - movs r2, 0x5 - bl PlayCry3 - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - .align 2, 0 -_0803A178: .4byte gBattlePartyID -_0803A17C: .4byte gActiveBank -_0803A180: .4byte gEnemyParty - thumb_func_end sub_803A148 - - thumb_func_start dp01t_2E_4_battle_intro -dp01t_2E_4_battle_intro: @ 803A184 - push {lr} - ldr r1, _0803A1AC @ =gBattleBufferA - ldr r0, _0803A1B0 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - bl sub_80E43C0 - ldr r2, _0803A1B4 @ =gUnknown_02024DE8 - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - .align 2, 0 -_0803A1AC: .4byte gBattleBufferA -_0803A1B0: .4byte gActiveBank -_0803A1B4: .4byte gUnknown_02024DE8 - thumb_func_end dp01t_2E_4_battle_intro - - thumb_func_start sub_803A1B8 -sub_803A1B8: @ 803A1B8 - push {r4-r6,lr} - ldr r5, _0803A294 @ =gObjectBankIDs - ldr r6, _0803A298 @ =gActiveBank - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0803A29C @ =gSprites - adds r0, r4 - bl oamt_add_pos2_onto_pos1 - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x23 - strh r1, [r0, 0x2E] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x8C - lsls r1, 1 - strh r1, [r0, 0x32] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrh r1, [r0, 0x22] - strh r1, [r0, 0x36] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _0803A2A0 @ =sub_8078B34 - str r1, [r0] - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r1, _0803A2A4 @ =sub_803A3A8 - bl oamt_set_x3A_32 - ldr r0, _0803A2A8 @ =sub_803A2C4 - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r4, _0803A2AC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r4 - ldrb r0, [r6] - strh r0, [r1, 0x8] - ldrb r3, [r6] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - ldr r2, _0803A2B0 @ =0x02017810 - adds r0, r2 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803A276 - ldr r0, _0803A2B4 @ =gUnknown_02024E68 - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r4 - ldr r1, _0803A2B8 @ =sub_8044CA0 - str r1, [r0] -_0803A276: - adds r2, 0x30 - ldrb r0, [r2, 0x9] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r2, 0x9] - ldr r1, _0803A2BC @ =gBattleBankFunc - ldrb r0, [r6] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803A2C0 @ =nullsub_47 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803A294: .4byte gObjectBankIDs -_0803A298: .4byte gActiveBank -_0803A29C: .4byte gSprites -_0803A2A0: .4byte sub_8078B34 -_0803A2A4: .4byte sub_803A3A8 -_0803A2A8: .4byte sub_803A2C4 -_0803A2AC: .4byte gTasks -_0803A2B0: .4byte 0x02017810 -_0803A2B4: .4byte gUnknown_02024E68 -_0803A2B8: .4byte sub_8044CA0 -_0803A2BC: .4byte gBattleBankFunc -_0803A2C0: .4byte nullsub_47 - thumb_func_end sub_803A1B8 - - thumb_func_start sub_803A2C4 -sub_803A2C4: @ 803A2C4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r7, _0803A31C @ =gActiveBank - ldrb r0, [r7] - mov r9, r0 - ldr r1, _0803A320 @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldrh r0, [r0, 0x8] - strb r0, [r7] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0803A2FE - ldr r0, _0803A324 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0803A330 -_0803A2FE: - ldr r0, _0803A328 @ =gBattleBufferA - ldrb r1, [r7] - lsls r2, r1, 9 - adds r0, 0x1 - adds r2, r0 - ldr r0, _0803A32C @ =gBattlePartyID - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - strb r0, [r2] - ldrb r0, [r7] - movs r1, 0 - bl sub_8039430 - b _0803A370 - .align 2, 0 -_0803A31C: .4byte gActiveBank -_0803A320: .4byte gTasks -_0803A324: .4byte gBattleTypeFlags -_0803A328: .4byte gBattleBufferA -_0803A32C: .4byte gBattlePartyID -_0803A330: - ldr r4, _0803A394 @ =gBattleBufferA - ldrb r0, [r7] - lsls r1, r0, 9 - adds r4, 0x1 - adds r1, r4 - ldr r6, _0803A398 @ =gBattlePartyID - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - movs r1, 0 - bl sub_8039430 - ldrb r0, [r7] - movs r5, 0x2 - eors r0, r5 - strb r0, [r7] - ldrb r0, [r7] - lsls r1, r0, 9 - adds r1, r4 - lsls r0, 1 - adds r0, r6 - ldrh r0, [r0] - strb r0, [r1] - ldrb r0, [r7] - movs r1, 0 - bl sub_8039430 - ldrb r0, [r7] - eors r0, r5 - strb r0, [r7] -_0803A370: - ldr r1, _0803A39C @ =gBattleBankFunc - ldr r2, _0803A3A0 @ =gActiveBank - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803A3A4 @ =sub_8037840 - str r1, [r0] - mov r0, r9 - strb r0, [r2] - mov r0, r8 - bl DestroyTask - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803A394: .4byte gBattleBufferA -_0803A398: .4byte gBattlePartyID -_0803A39C: .4byte gBattleBankFunc -_0803A3A0: .4byte gActiveBank -_0803A3A4: .4byte sub_8037840 - thumb_func_end sub_803A2C4 - - thumb_func_start sub_803A3A8 -sub_803A3A8: @ 803A3A8 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x6] - bl sub_8031B74 - ldrh r0, [r4, 0x38] - ldr r1, _0803A3D4 @ =0x000003ff - ands r1, r0 - ldrh r2, [r4, 0x4] - ldr r0, _0803A3D8 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803A3D4: .4byte 0x000003ff -_0803A3D8: .4byte 0xfffffc00 - thumb_func_end sub_803A3A8 - - thumb_func_start sub_803A3DC -sub_803A3DC: @ 803A3DC - push {r4-r6,lr} - ldr r1, _0803A404 @ =gBattleBufferA - ldr r0, _0803A408 @ =gActiveBank - ldrb r2, [r0] - lsls r0, r2, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0803A40C - adds r0, r2, 0 - bl GetBankSide - lsls r0, 24 - cmp r0, 0 - bne _0803A40C - bl dp01_tbl4_exec_completed - b _0803A4C6 - .align 2, 0 -_0803A404: .4byte gBattleBufferA -_0803A408: .4byte gActiveBank -_0803A40C: - ldr r3, _0803A45C @ =gActiveBank - ldrb r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r4, _0803A460 @ =0x02017810 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x1 - orrs r1, r2 - strb r1, [r0] - ldr r1, _0803A464 @ =gBattleBufferA - ldrb r2, [r3] - lsls r0, r2, 9 - adds r1, 0x2 - adds r0, r1 - ldrb r0, [r0] - adds r6, r3, 0 - cmp r0, 0 - beq _0803A470 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r4 - ldrb r2, [r3, 0x1] - lsls r1, r2, 26 - lsrs r0, r1, 27 - cmp r0, 0x1 - bhi _0803A468 - adds r0, 0x1 - movs r1, 0x1F - ands r0, r1 - lsls r0, 1 - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r3, 0x1] - b _0803A4C6 - .align 2, 0 -_0803A45C: .4byte gActiveBank -_0803A460: .4byte 0x02017810 -_0803A464: .4byte gBattleBufferA -_0803A468: - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - strb r0, [r3, 0x1] -_0803A470: - adds r5, r6, 0 - ldrb r0, [r5] - lsls r3, r0, 9 - ldr r4, _0803A4CC @ =gUnknown_02023A64 - adds r1, r3, r4 - subs r2, r4, 0x3 - adds r2, r3, r2 - ldrb r2, [r2] - subs r4, 0x2 - adds r3, r4 - ldrb r3, [r3] - bl sub_8044804 - ldr r2, _0803A4D0 @ =gUnknown_02024E68 - ldrb r1, [r5] - adds r1, r2 - movs r2, 0 - strb r0, [r1] - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r3, _0803A4D4 @ =0x02017810 - adds r0, r3 - strb r2, [r0, 0x5] - ldrb r1, [r5] - lsls r0, r1, 9 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _0803A4BA - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r1, 0x5D - strb r1, [r0, 0x5] -_0803A4BA: - ldr r0, _0803A4D8 @ =gBattleBankFunc - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _0803A4DC @ =sub_803A4E0 - str r0, [r1] -_0803A4C6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803A4CC: .4byte gUnknown_02023A64 -_0803A4D0: .4byte gUnknown_02024E68 -_0803A4D4: .4byte 0x02017810 -_0803A4D8: .4byte gBattleBankFunc -_0803A4DC: .4byte sub_803A4E0 - thumb_func_end sub_803A3DC - - thumb_func_start sub_803A4E0 -sub_803A4E0: @ 803A4E0 - push {r4,lr} - ldr r4, _0803A518 @ =gActiveBank - ldrb r1, [r4] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r3, _0803A51C @ =0x02017810 - adds r0, r3 - ldrb r1, [r0, 0x5] - adds r2, r1, 0x1 - strb r2, [r0, 0x5] - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x5C - bls _0803A510 - ldrb r0, [r4] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - movs r0, 0 - strb r0, [r1, 0x5] - bl dp01_tbl4_exec_completed -_0803A510: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803A518: .4byte gActiveBank -_0803A51C: .4byte 0x02017810 - thumb_func_end sub_803A4E0 - - thumb_func_start sub_803A520 -sub_803A520: @ 803A520 - push {lr} - ldr r0, _0803A558 @ =gActiveBank - ldrb r3, [r0] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 2 - ldr r1, _0803A55C @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0803A54E - ldr r2, _0803A560 @ =gTasks - ldr r0, _0803A564 @ =gUnknown_02024E68 - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _0803A568 @ =sub_8044CA0 - str r1, [r0] -_0803A54E: - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - .align 2, 0 -_0803A558: .4byte gActiveBank -_0803A55C: .4byte 0x02017810 -_0803A560: .4byte gTasks -_0803A564: .4byte gUnknown_02024E68 -_0803A568: .4byte sub_8044CA0 - thumb_func_end sub_803A520 - - thumb_func_start sub_803A56C -sub_803A56C: @ 803A56C - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_803A56C - - thumb_func_start sub_803A578 -sub_803A578: @ 803A578 - push {r4,lr} - ldr r4, _0803A5C8 @ =gActiveBank - ldrb r0, [r4] - bl sub_8078874 - lsls r0, 24 - cmp r0, 0 - beq _0803A5BE - ldr r3, _0803A5CC @ =gSprites - ldr r0, _0803A5D0 @ =gObjectBankIDs - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r3 - ldr r0, _0803A5D4 @ =gBattleBufferA - lsls r1, 9 - adds r0, 0x1 - adds r1, r0 - adds r2, 0x3E - movs r0, 0x1 - ldrb r1, [r1] - ands r1, r0 - lsls r1, 2 - ldrb r3, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4] - bl sub_8031F88 -_0803A5BE: - bl dp01_tbl4_exec_completed - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803A5C8: .4byte gActiveBank -_0803A5CC: .4byte gSprites -_0803A5D0: .4byte gObjectBankIDs -_0803A5D4: .4byte gBattleBufferA - thumb_func_end sub_803A578 - - thumb_func_start bx_exec_buffer_A_ch0_tbl4 -bx_exec_buffer_A_ch0_tbl4: @ 803A5D8 - push {r4-r6,lr} - sub sp, 0x4 - ldr r6, _0803A61C @ =gActiveBank - ldrb r0, [r6] - bl mplay_80342A4 - lsls r0, 24 - cmp r0, 0 - bne _0803A630 - ldr r5, _0803A620 @ =gBattleBufferA - ldrb r2, [r6] - lsls r1, r2, 9 - adds r0, r5, 0x1 - adds r0, r1, r0 - ldrb r3, [r0] - adds r0, r5, 0x2 - adds r0, r1, r0 - ldrb r4, [r0] - adds r5, 0x3 - adds r1, r5 - ldrb r0, [r1] - lsls r0, 8 - orrs r4, r0 - str r4, [sp] - adds r0, r2, 0 - adds r1, r2, 0 - bl move_anim_start_t3 - lsls r0, 24 - cmp r0, 0 - beq _0803A624 - bl dp01_tbl4_exec_completed - b _0803A630 - .align 2, 0 -_0803A61C: .4byte gActiveBank -_0803A620: .4byte gBattleBufferA -_0803A624: - ldr r0, _0803A638 @ =gBattleBankFunc - ldrb r1, [r6] - lsls r1, 2 - adds r1, r0 - ldr r0, _0803A63C @ =sub_8037FD8 - str r0, [r1] -_0803A630: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0803A638: .4byte gBattleBankFunc -_0803A63C: .4byte sub_8037FD8 - thumb_func_end bx_exec_buffer_A_ch0_tbl4 - - thumb_func_start sub_803A640 -sub_803A640: @ 803A640 - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_803A640 - - thumb_func_start sub_803A64C -sub_803A64C: @ 803A64C - push {lr} - bl dp01_tbl4_exec_completed - pop {r0} - bx r0 - thumb_func_end sub_803A64C - - thumb_func_start sub_803A658 -sub_803A658: @ 803A658 - push {lr} - ldr r1, _0803A674 @ =gBattleBufferA - ldr r0, _0803A678 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 9 - adds r1, 0x1 - adds r0, r1 - ldrb r2, [r0] - cmp r2, 0x3 - bne _0803A680 - ldr r0, _0803A67C @ =gBattleOutcome - strb r2, [r0] - b _0803A688 - .align 2, 0 -_0803A674: .4byte gBattleBufferA -_0803A678: .4byte gActiveBank -_0803A67C: .4byte gBattleOutcome -_0803A680: - ldr r0, _0803A6AC @ =gBattleOutcome - movs r1, 0x3 - eors r1, r2 - strb r1, [r0] -_0803A688: - movs r0, 0x5 - bl FadeOutMapMusic - movs r0, 0x3 - bl BeginFastPaletteFade - bl dp01_tbl4_exec_completed - ldr r1, _0803A6B0 @ =gBattleBankFunc - ldr r0, _0803A6B4 @ =gActiveBank - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _0803A6B8 @ =sub_8037F34 - str r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_0803A6AC: .4byte gBattleOutcome -_0803A6B0: .4byte gBattleBankFunc -_0803A6B4: .4byte gActiveBank -_0803A6B8: .4byte sub_8037F34 - thumb_func_end sub_803A658 - - thumb_func_start nullsub_48 -nullsub_48: @ 803A6BC - bx lr - thumb_func_end nullsub_48 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/battle.h b/include/battle.h index 395cf042a..bb5c0aed9 100644 --- a/include/battle.h +++ b/include/battle.h @@ -183,6 +183,7 @@ struct Struct2017810 u8 unk0_6:1; u8 unk0_7:1; u8 unk1_0:1; + u8 unk1_1:5; u8 unk2; u8 unk3; //u8 filler2[2]; diff --git a/ld_script.txt b/ld_script.txt index 6b9a618f0..f7895cffa 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -63,7 +63,6 @@ SECTIONS { asm/battle_8.o(.text); asm/battle_9.o(.text); src/battle_10.o(.text); - asm/battle_10.o(.text); src/pokemon_1.o(.text); src/calculate_base_damage.o(.text); src/pokemon_2.o(.text); diff --git a/src/battle_10.c b/src/battle_10.c index 97c4a14b8..8a74c177e 100644 --- a/src/battle_10.c +++ b/src/battle_10.c @@ -1,12 +1,15 @@ #include "global.h" #include "battle.h" +#include "battle_interface.h" #include "data2.h" #include "link.h" +#include "palette.h" #include "rom3.h" #include "songs.h" #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "task.h" #include "text.h" #include "util.h" @@ -40,7 +43,11 @@ extern u32 gPID_perBank[]; extern u8 gAnimScriptActive; extern void (*gAnimScriptCallback)(void); extern u8 gDisplayedStringBattle[]; +extern bool8 gDoingBattleAnim; +extern u8 gBattleOutcome; extern struct UnknownStruct5 gUnknown_020238C8; +extern u16 gUnknown_02024DE8; +extern u8 gUnknown_02024E68[]; extern struct SpriteTemplate gUnknown_02024E8C; extern u8 gUnknown_0202F7C4; extern struct Window gUnknown_03004210; @@ -85,13 +92,29 @@ extern void sub_8037B24(void); extern void sub_8045A5C(); extern void sub_8037FAC(void); extern void move_anim_start_t2_for_situation(); +extern void dp01t_0F_4_move_anim(void); +extern void sub_8047858(); +extern u8 GetBankSide(u8); +extern void sub_80E43C0(); +extern void sub_803A3A8(struct Sprite *); +extern void sub_8044CA0(u8); +extern void nullsub_47(void); +extern bool8 IsDoubleBattle(void); +extern void sub_8037840(void); +extern void sub_8031B74(); +extern u8 sub_8078874(); +extern u8 move_anim_start_t3(); +extern void sub_8037FD8(void); +extern void sub_8037F34(void); +extern void dp01_tbl4_exec_completed(void); u32 dp01_getattr_by_ch1_for_player_pokemon__(u8, u8 *); void sub_8038900(u8); void sub_8039430(u8, u8); void sub_8039648(void); void sub_8039B64(void); -void dp01_tbl4_exec_completed(void); +void sub_803A2C4(u8); +void sub_803A4E0(void); void LinkOpponentHandleGetAttributes(void) { @@ -1098,3 +1121,210 @@ void sub_803A030(void) gUnknown_020238C8.unk0_7 ^= 1; dp01_tbl4_exec_completed(); } + +void dp01t_29_4_blink(void) +{ + if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) + { + dp01_tbl4_exec_completed(); + } + else + { + gDoingBattleAnim = TRUE; + gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; + sub_8047858(gActiveBank); + gBattleBankFunc[gActiveBank] = dp01t_0F_4_move_anim; + } +} + +void sub_803A0C8(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_803A0D4(void) +{ + s8 pan; + + if (GetBankSide(gActiveBank) == 0) + pan = -64; + else + pan = 63; + PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan); + dp01_tbl4_exec_completed(); +} + +void sub_803A118(void) +{ + PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); + dp01_tbl4_exec_completed(); +} + +void sub_803A148(void) +{ + PlayCry3( + GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), + 25, 5); + dp01_tbl4_exec_completed(); +} + +void dp01t_2E_4_battle_intro(void) +{ + sub_80E43C0(gBattleBufferA[gActiveBank][1]); + gUnknown_02024DE8 |= 1; + dp01_tbl4_exec_completed(); +} + +void sub_803A1B8(void) +{ + u8 taskId; + + oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]); + gSprites[gObjectBankIDs[gActiveBank]].data0 = 35; + gSprites[gObjectBankIDs[gActiveBank]].data2 = 280; + gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y; + gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34; + oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_803A3A8); + taskId = CreateTask(sub_803A2C4, 5); + gTasks[taskId].data[0] = gActiveBank; + if (ewram17810[gActiveBank].unk0_0) + gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; + ewram17840.unk9_0 = 1; + gBattleBankFunc[gActiveBank] = nullsub_47; +} + +void sub_803A2C4(u8 taskId) +{ + u8 r9; + + r9 = gActiveBank; + gActiveBank = gTasks[taskId].data[0]; + if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_8039430(gActiveBank, 0); + } + else + { + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_8039430(gActiveBank, 0); + gActiveBank ^= 2; + gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank]; + sub_8039430(gActiveBank, 0); + gActiveBank ^= 2; + } + gBattleBankFunc[gActiveBank] = sub_8037840; + gActiveBank = r9; + DestroyTask(taskId); +} + +void sub_803A3A8(struct Sprite *sprite) +{ + sub_8031B74(sprite->oam.affineParam); + sprite->oam.tileNum = sprite->data5; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); +} + +void sub_803A3DC(void) +{ + if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0) + { + dp01_tbl4_exec_completed(); + return; + } + + ewram17810[gActiveBank].unk0_0 = 1; + if (gBattleBufferA[gActiveBank][2] != 0) + { + if (ewram17810[gActiveBank].unk1_1 < 2) + { + ewram17810[gActiveBank].unk1_1++; + return; + } + else + { + ewram17810[gActiveBank].unk1_1 = 0; + } + } + gUnknown_02024E68[gActiveBank] = sub_8044804( + gActiveBank, + (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], + gBattleBufferA[gActiveBank][1], + gBattleBufferA[gActiveBank][2]); + ewram17810[gActiveBank].unk5 = 0; + if (gBattleBufferA[gActiveBank][2] != 0) + ewram17810[gActiveBank].unk5 = 0x5D; + gBattleBankFunc[gActiveBank] = sub_803A4E0; +} + +void sub_803A4E0(void) +{ + if (ewram17810[gActiveBank].unk5++ >= 93) + { + ewram17810[gActiveBank].unk5 = 0; + dp01_tbl4_exec_completed(); + } +} + +void sub_803A520(void) +{ + if (ewram17810[gActiveBank].unk0_0) + gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0; + dp01_tbl4_exec_completed(); +} + +void sub_803A56C(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_803A578(void) +{ + if (sub_8078874(gActiveBank) != 0) + { + gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1]; + sub_8031F88(gActiveBank); + } + dp01_tbl4_exec_completed(); +} + +void bx_exec_buffer_A_ch0_tbl4(void) +{ + if (mplay_80342A4(gActiveBank) == 0) + { + u8 r3 = gBattleBufferA[gActiveBank][1]; + u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); + + if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0) + dp01_tbl4_exec_completed(); + else + gBattleBankFunc[gActiveBank] = sub_8037FD8; + } +} + +void sub_803A640(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_803A64C(void) +{ + dp01_tbl4_exec_completed(); +} + +void sub_803A658(void) +{ + if (gBattleBufferA[gActiveBank][1] == 3) + gBattleOutcome = gBattleBufferA[gActiveBank][1]; + else + gBattleOutcome = gBattleBufferA[gActiveBank][1] ^ 3; + FadeOutMapMusic(5); + BeginFastPaletteFade(3); + dp01_tbl4_exec_completed(); + gBattleBankFunc[gActiveBank] = sub_8037F34; +} + +extern void nullsub_48(void) +{ +} diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 4aab0328c..31021112a 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -1415,10 +1415,12 @@ void sub_81203FC(void) void LinkPartnerHandleHitAnimation(void) { if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE) + { LinkPartnerBufferExecCompleted(); + } else { - gDoingBattleAnim = 1; + gDoingBattleAnim = TRUE; gSprites[gObjectBankIDs[gActiveBank]].data1 = 0; sub_8047858(gActiveBank); gBattleBankFunc[gActiveBank] = bx_blink_t3; @@ -1578,9 +1580,8 @@ void sub_81209D8(void) { u8 r3 = gBattleBufferA[gActiveBank][1]; u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8); - u8 var = gActiveBank; - if (move_anim_start_t3(var, var, var, r3, r4) != 0) + if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0) LinkPartnerBufferExecCompleted(); else gBattleBankFunc[gActiveBank] = sub_811E3B8; -- cgit v1.2.3 From f6ac6fa435df46799fc0e9d2da1287261282b49c Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 25 Jun 2017 19:08:54 -0500 Subject: remove declaration of gUnknown_020238C8 --- src/battle_10.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/battle_10.c b/src/battle_10.c index 8a74c177e..29bc6ab36 100644 --- a/src/battle_10.c +++ b/src/battle_10.c @@ -20,12 +20,6 @@ struct UnknownStruct3 u8 ppBonuses; }; -struct UnknownStruct5 -{ - u8 unk0_0:7; - u8 unk0_7:1; -}; - extern u8 gActiveBank; extern u8 gBattleBufferA[][0x200]; extern u8 gObjectBankIDs[]; @@ -45,7 +39,6 @@ extern void (*gAnimScriptCallback)(void); extern u8 gDisplayedStringBattle[]; extern bool8 gDoingBattleAnim; extern u8 gBattleOutcome; -extern struct UnknownStruct5 gUnknown_020238C8; extern u16 gUnknown_02024DE8; extern u8 gUnknown_02024E68[]; extern struct SpriteTemplate gUnknown_02024E8C; -- cgit v1.2.3 From 637774362fdbedd8a54b651e6196a1e1a4f4c093 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sun, 25 Jun 2017 20:12:08 -0400 Subject: start decompiling sound_check_menu.c --- asm/sound_check_menu.s | 684 ------------------------------------------------ data/sound_check_menu.s | 2 +- include/player_pc.h | 4 - include/task.h | 4 + ld_script.txt | 1 + src/sound_check_menu.c | 622 +++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 628 insertions(+), 689 deletions(-) create mode 100755 src/sound_check_menu.c diff --git a/asm/sound_check_menu.s b/asm/sound_check_menu.s index b47229d2b..99b894c83 100644 --- a/asm/sound_check_menu.s +++ b/asm/sound_check_menu.s @@ -6,690 +6,6 @@ .text - thumb_func_start sub_80BA0A8 -sub_80BA0A8: @ 80BA0A8 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_80BA0A8 - - thumb_func_start sub_80BA0C0 -sub_80BA0C0: @ 80BA0C0 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - ldr r0, _080BA0E8 @ =gUnknown_020387B0 - ldrb r0, [r0] - cmp r0, 0 - beq _080BA0E2 - bl m4aSoundMain - bl m4aSoundMain - bl m4aSoundMain -_080BA0E2: - pop {r0} - bx r0 - .align 2, 0 -_080BA0E8: .4byte gUnknown_020387B0 - thumb_func_end sub_80BA0C0 - - thumb_func_start unref_sub_80BA0EC -unref_sub_80BA0EC: @ 80BA0EC - push {r4-r6,lr} - sub sp, 0xC - movs r0, 0 - bl SetVBlankCallback - movs r6, 0x80 - lsls r6, 19 - movs r5, 0 - strh r5, [r6] - ldr r0, _080BA20C @ =REG_BG2CNT - strh r5, [r0] - subs r0, 0x2 - strh r5, [r0] - subs r0, 0x2 - strh r5, [r0] - adds r0, 0x10 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - subs r0, 0x6 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - subs r0, 0x6 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - add r0, sp, 0x4 - strh r5, [r0] - ldr r1, _080BA210 @ =0x040000d4 - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080BA214 @ =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r4, 0 - str r4, [sp, 0x8] - add r0, sp, 0x8 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080BA218 @ =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x4 - strh r4, [r0] - str r0, [r1] - movs r0, 0xA0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080BA21C @ =0x81000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetPaletteFade - bl ResetTasks - bl ResetSpriteData - ldr r0, _080BA220 @ =gWindowConfig_81E6C3C - bl SetUpWindowConfig - ldr r0, _080BA224 @ =gWindowConfig_81E6CE4 - bl InitMenuWindow - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080BA228 @ =REG_WIN0H - strh r4, [r0] - adds r0, 0x4 - strh r4, [r0] - subs r0, 0x2 - strh r4, [r0] - adds r0, 0x4 - strh r4, [r0] - ldr r1, _080BA22C @ =REG_WININ - ldr r2, _080BA230 @ =0x00001111 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x31 - strh r0, [r1] - adds r1, 0x6 - movs r0, 0xE1 - strh r0, [r1] - ldr r0, _080BA234 @ =REG_BLDALPHA - strh r4, [r0] - adds r1, 0x4 - movs r0, 0x7 - strh r0, [r1] - ldr r1, _080BA238 @ =0x04000200 - movs r2, 0x1 - strh r2, [r1] - ldrh r0, [r1] - orrs r0, r2 - strh r0, [r1] - ldr r2, _080BA23C @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] - ldr r0, _080BA240 @ =sub_80BA0C0 - bl SetVBlankCallback - ldr r0, _080BA244 @ =sub_80BA0A8 - bl SetMainCallback2 - ldr r1, _080BA248 @ =0x00007140 - adds r0, r1, 0 - strh r0, [r6] - ldr r0, _080BA24C @ =sub_80BA258 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080BA250 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - strh r4, [r1, 0xA] - strh r4, [r1, 0xC] - strh r4, [r1, 0xE] - ldr r0, _080BA254 @ =gUnknown_020387B0 - strb r5, [r0] - strh r4, [r1, 0xE] - bl m4aSoundInit - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BA20C: .4byte REG_BG2CNT -_080BA210: .4byte 0x040000d4 -_080BA214: .4byte 0x8100c000 -_080BA218: .4byte 0x85000100 -_080BA21C: .4byte 0x81000200 -_080BA220: .4byte gWindowConfig_81E6C3C -_080BA224: .4byte gWindowConfig_81E6CE4 -_080BA228: .4byte REG_WIN0H -_080BA22C: .4byte REG_WININ -_080BA230: .4byte 0x00001111 -_080BA234: .4byte REG_BLDALPHA -_080BA238: .4byte 0x04000200 -_080BA23C: .4byte REG_DISPSTAT -_080BA240: .4byte sub_80BA0C0 -_080BA244: .4byte sub_80BA0A8 -_080BA248: .4byte 0x00007140 -_080BA24C: .4byte sub_80BA258 -_080BA250: .4byte gTasks -_080BA254: .4byte gUnknown_020387B0 - thumb_func_end unref_sub_80BA0EC - - thumb_func_start sub_80BA258 -sub_80BA258: @ 80BA258 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x40 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080BA354 @ =gDebugText_SoundCheckJap - mov r0, sp - movs r2, 0x9 - bl memcpy - add r7, sp, 0xC - ldr r1, _080BA358 @ =gDebugText_BGM - adds r0, r7, 0 - movs r2, 0x4 - bl memcpy - add r0, sp, 0x10 - mov r8, r0 - ldr r1, _080BA35C @ =gDebugText_SE - movs r2, 0x4 - bl memcpy - add r5, sp, 0x14 - ldr r1, _080BA360 @ =gUnknown_083D02D9 - adds r0, r5, 0 - movs r2, 0xD - bl memcpy - add r4, sp, 0x24 - ldr r1, _080BA364 @ =gDebugText_UpDown - adds r0, r4, 0 - movs r2, 0xC - bl memcpy - add r6, sp, 0x30 - ldr r1, _080BA368 @ =gDebugText_DriverTest - adds r0, r6, 0 - movs r2, 0xE - bl memcpy - ldr r0, _080BA36C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BA344 - movs r0, 0x2 - movs r1, 0 - movs r2, 0x1B - movs r3, 0x3 - bl MenuDrawTextWindow - movs r0, 0x2 - movs r1, 0x5 - movs r2, 0x1B - movs r3, 0xA - bl MenuDrawTextWindow - movs r0, 0x2 - movs r1, 0xC - movs r2, 0x1B - movs r3, 0x11 - bl MenuDrawTextWindow - mov r0, sp - movs r1, 0x4 - movs r2, 0x1 - bl MenuPrint - adds r0, r5, 0 - movs r1, 0xE - movs r2, 0x1 - bl MenuPrint - adds r0, r7, 0 - movs r1, 0x4 - movs r2, 0x6 - bl MenuPrint - adds r0, r4, 0 - movs r1, 0xE - movs r2, 0x6 - bl MenuPrint - mov r0, r8 - movs r1, 0x4 - movs r2, 0xD - bl MenuPrint - adds r0, r4, 0 - movs r1, 0xE - movs r2, 0xD - bl MenuPrint - adds r0, r6, 0 - movs r1, 0xE - movs r2, 0x12 - bl MenuPrint - ldr r1, _080BA370 @ =gTasks - mov r2, r9 - lsls r0, r2, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BA374 @ =sub_80BA384 - str r1, [r0] - ldr r1, _080BA378 @ =REG_WIN0H - ldr r2, _080BA37C @ =0x000011df - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x4 - ldr r2, _080BA380 @ =0x0000011f - adds r0, r2, 0 - strh r0, [r1] -_080BA344: - add sp, 0x40 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BA354: .4byte gDebugText_SoundCheckJap -_080BA358: .4byte gDebugText_BGM -_080BA35C: .4byte gDebugText_SE -_080BA360: .4byte gUnknown_083D02D9 -_080BA364: .4byte gDebugText_UpDown -_080BA368: .4byte gDebugText_DriverTest -_080BA36C: .4byte gPaletteFade -_080BA370: .4byte gTasks -_080BA374: .4byte sub_80BA384 -_080BA378: .4byte REG_WIN0H -_080BA37C: .4byte 0x000011df -_080BA380: .4byte 0x0000011f - thumb_func_end sub_80BA258 - - thumb_func_start sub_80BA384 -sub_80BA384: @ 80BA384 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080BA3EC @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldrb r0, [r4, 0x8] - bl sub_80BA6B8 - ldr r1, _080BA3F0 @ =0x0000015d - adds r0, r1, 0 - ldrh r2, [r4, 0xA] - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x7 - movs r2, 0x8 - bl sub_80BA700 - ldr r1, _080BA3F4 @ =gBGMNames - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xB - movs r2, 0x8 - bl sub_80BA79C - ldrh r0, [r4, 0xC] - movs r1, 0x7 - movs r2, 0xF - bl sub_80BA700 - ldr r1, _080BA3F8 @ =gSENames - movs r2, 0xC - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xB - movs r2, 0xF - bl sub_80BA79C - ldr r0, _080BA3FC @ =sub_80BA65C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BA3EC: .4byte gTasks -_080BA3F0: .4byte 0x0000015d -_080BA3F4: .4byte gBGMNames -_080BA3F8: .4byte gSENames -_080BA3FC: .4byte sub_80BA65C - thumb_func_end sub_80BA384 - - thumb_func_start sub_80BA400 -sub_80BA400: @ 80BA400 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, _080BA428 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080BA434 - ldr r0, _080BA42C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080BA430 @ =sub_80BA800 - str r0, [r1] - b _080BA64C - .align 2, 0 -_080BA428: .4byte gMain -_080BA42C: .4byte gTasks -_080BA430: .4byte sub_80BA800 -_080BA434: - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080BA458 - ldr r0, _080BA450 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080BA454 @ =sub_80BAF84 - str r0, [r1] - b _080BA64C - .align 2, 0 -_080BA450: .4byte gTasks -_080BA454: .4byte sub_80BAF84 -_080BA458: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080BA478 - ldr r0, _080BA470 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080BA474 @ =sub_80BB25C - str r0, [r1] - b _080BA64C - .align 2, 0 -_080BA470: .4byte gTasks -_080BA474: .4byte sub_80BB25C -_080BA478: - movs r6, 0x1 - movs r5, 0x1 - ands r5, r1 - cmp r5, 0 - beq _080BA538 - ldr r0, _080BA4AC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r5, r1, r0 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080BA4D0 - movs r2, 0x10 - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080BA4BA - movs r3, 0xC - ldrsh r4, [r5, r3] - cmp r4, 0 - beq _080BA4B0 - ldrh r0, [r5, 0x10] - bl m4aSongNumStop - b _080BA4C4 - .align 2, 0 -_080BA4AC: .4byte gTasks -_080BA4B0: - ldrh r0, [r5, 0x10] - bl m4aSongNumStop - strh r4, [r5, 0x10] - b _080BA64C -_080BA4BA: - movs r4, 0xC - ldrsh r0, [r5, r4] - cmp r0, 0 - bne _080BA4C4 - b _080BA64C -_080BA4C4: - ldrh r0, [r5, 0xC] - bl m4aSongNumStart - ldrh r0, [r5, 0xC] - strh r0, [r5, 0x10] - b _080BA64C -_080BA4D0: - ldrh r1, [r5, 0xE] - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080BA514 - movs r3, 0xA - ldrsh r4, [r5, r3] - cmp r4, 0 - beq _080BA500 - ldr r0, _080BA4FC @ =0x0000015d - adds r4, r0, 0 - adds r0, r1, r4 - lsls r0, 16 - lsrs r0, 16 - bl m4aSongNumStop - ldrh r1, [r5, 0xA] - adds r4, r1 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - b _080BA528 - .align 2, 0 -_080BA4FC: .4byte 0x0000015d -_080BA500: - ldr r2, _080BA510 @ =0x0000015d - adds r0, r1, r2 - lsls r0, 16 - lsrs r0, 16 - bl m4aSongNumStop - strh r4, [r5, 0xE] - b _080BA64C - .align 2, 0 -_080BA510: .4byte 0x0000015d -_080BA514: - ldrh r1, [r5, 0xA] - movs r3, 0xA - ldrsh r0, [r5, r3] - cmp r0, 0 - bne _080BA520 - b _080BA64C -_080BA520: - ldr r4, _080BA534 @ =0x0000015d - adds r0, r1, r4 - lsls r0, 16 - lsrs r0, 16 -_080BA528: - bl m4aSongNumStart - ldrh r0, [r5, 0xA] - strh r0, [r5, 0xE] - b _080BA64C - .align 2, 0 -_080BA534: .4byte 0x0000015d -_080BA538: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BA570 - movs r0, 0x5 - bl m4aSongNumStart - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080BA568 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BA56C @ =sub_80BA68C - str r1, [r0] - b _080BA64C - .align 2, 0 -_080BA568: .4byte gTasks -_080BA56C: .4byte sub_80BA68C -_080BA570: - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080BA582 - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BA59C -_080BA582: - ldr r0, _080BA598 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - eors r0, r6 - strh r0, [r1, 0x8] -_080BA592: - movs r0, 0x1 - b _080BA64E - .align 2, 0 -_080BA598: .4byte gTasks -_080BA59C: - movs r0, 0x10 - ands r0, r1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - beq _080BA5EA - ldr r0, _080BA5CC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080BA5D6 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080BA5D0 - subs r0, r2, 0x1 - strh r0, [r1, 0xC] - b _080BA592 - .align 2, 0 -_080BA5CC: .4byte gTasks -_080BA5D0: - movs r0, 0xF7 - strh r0, [r1, 0xC] - b _080BA592 -_080BA5D6: - ldrh r2, [r1, 0xA] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r0, 0 - ble _080BA5E4 - subs r0, r2, 0x1 - b _080BA5E6 -_080BA5E4: - movs r0, 0x75 -_080BA5E6: - strh r0, [r1, 0xA] - b _080BA592 -_080BA5EA: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080BA630 - ldr r1, _080BA614 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - movs r0, 0x8 - ldrsh r2, [r1, r0] - cmp r2, 0 - beq _080BA61C - ldrh r2, [r1, 0xC] - movs r4, 0xC - ldrsh r0, [r1, r4] - cmp r0, 0xF6 - bgt _080BA618 - adds r0, r2, 0x1 - strh r0, [r1, 0xC] - b _080BA592 - .align 2, 0 -_080BA614: .4byte gTasks -_080BA618: - strh r3, [r1, 0xC] - b _080BA592 -_080BA61C: - ldrh r3, [r1, 0xA] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r0, 0x74 - bgt _080BA62C - adds r0, r3, 0x1 - strh r0, [r1, 0xA] - b _080BA592 -_080BA62C: - strh r2, [r1, 0xA] - b _080BA592 -_080BA630: - ldrh r1, [r2, 0x2C] - movs r0, 0x4 - ands r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080BA648 - ldr r0, _080BA644 @ =gUnknown_020387B0 - strb r6, [r0] - b _080BA64C - .align 2, 0 -_080BA644: .4byte gUnknown_020387B0 -_080BA648: - ldr r0, _080BA658 @ =gUnknown_020387B0 - strb r1, [r0] -_080BA64C: - movs r0, 0 -_080BA64E: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080BA658: .4byte gUnknown_020387B0 - thumb_func_end sub_80BA400 - thumb_func_start sub_80BA65C sub_80BA65C: @ 80BA65C push {r4,lr} diff --git a/data/sound_check_menu.s b/data/sound_check_menu.s index a91f55d04..6e4702ae3 100644 --- a/data/sound_check_menu.s +++ b/data/sound_check_menu.s @@ -14,7 +14,7 @@ gDebugText_BGM:: @ 83D02D1 gDebugText_SE:: @ 83D02D5 .string "SE $" -gUnknown_083D02D9:: @ 83D02D9 +gDebugText_ABDesc:: @ 83D02D9 .string "A‥さいせい B‥おわり$" gDebugText_UpDown:: @ 83D02E6 diff --git a/include/player_pc.h b/include/player_pc.h index f2446ebdf..8debeda88 100755 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -1,10 +1,6 @@ #ifndef GUARD_PLAYER_PC_H #define GUARD_PLAYER_PC_H -// general task defines -#define TASK gTasks[taskId] -#define FUNC func - // local task defines #define PAGE_INDEX data[0] #define ITEMS_ABOVE_TOP data[1] diff --git a/include/task.h b/include/task.h index 6c6efdf4f..a71577ee3 100644 --- a/include/task.h +++ b/include/task.h @@ -1,6 +1,10 @@ #ifndef GUARD_TASK_H #define GUARD_TASK_H +// general task defines +#define TASK gTasks[taskId] +#define FUNC func + typedef void (*TaskFunc)(u8 taskId); struct Task diff --git a/ld_script.txt b/ld_script.txt index 281f1781d..523c35a85 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -166,6 +166,7 @@ SECTIONS { asm/contest_effect.o(.text); src/record_mixing.o(.text); asm/record_mixing.o(.text); + src/sound_check_menu.o(.text); asm/sound_check_menu.o(.text); src/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c new file mode 100755 index 000000000..75cf48798 --- /dev/null +++ b/src/sound_check_menu.c @@ -0,0 +1,622 @@ +#include "global.h" +#include "sprite.h" +#include "palette.h" +#include "task.h" +#include "m4a.h" +#include "main.h" +#include "text.h" +#include "menu.h" +#include "songs.h" + +// local task defines +#define UNK_DATA0 data[0] +#define BGM_INDEX data[1] +#define SE_INDEX data[2] +#define UNK_DATA3 data[3] + +extern void sub_80BA6B8(u8); +extern void sub_80BA700(u16, u8, u8); +extern void sub_80BA79C(u8 *, u8, u8); +extern void sub_80BA65C(u8); +extern void sub_80BA800(u8); +extern void sub_80BAF84(u8); +extern void sub_80BB25C(u8); +extern void sub_80BA68C(u8); + +extern u8 gUnknown_020387B0; + +extern u8 *gBGMNames[]; +extern u8 *gSENames[]; + +extern u8 gDebugText_SoundCheckJap[]; +extern u8 gDebugText_BGM[]; +extern u8 gDebugText_SE[]; +extern u8 gDebugText_ABDesc[]; +extern u8 gDebugText_UpDown[]; +extern u8 gDebugText_DriverTest[]; + +void sub_80BA258(u8); +void sub_80BA384(u8); + +void sub_80BA0A8(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_80BA0C0(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + + if(gUnknown_020387B0 != 0) + { + m4aSoundMain(); + m4aSoundMain(); + m4aSoundMain(); + } +} + +// unused +void CB2_StartSoundCheckMenu(void) +{ + u8 taskId; + + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT, PLTT_SIZE); + ResetPaletteFade(); + ResetTasks(); + ResetSpriteData(); + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0x1111; + REG_WINOUT = 0x31; + REG_BLDCNT = 0xE1; + REG_BLDALPHA = 0; + REG_BLDY = 7; + REG_IE = 1; // could be a typo of REG_IME + REG_IE |= 1; + REG_DISPSTAT |= 8; + SetVBlankCallback(sub_80BA0C0); + SetMainCallback2(sub_80BA0A8); + REG_DISPCNT = 0x7140; + taskId = CreateTask(sub_80BA258, 0); + TASK.UNK_DATA0 = 0; + TASK.BGM_INDEX = 0; + TASK.SE_INDEX = 0; + TASK.UNK_DATA3 = 0; + gUnknown_020387B0 = 0; + TASK.UNK_DATA3 = 0; // why? + m4aSoundInit(); +} + +// Task_InitSoundCheckMenu +void sub_80BA258(u8 taskId) +{ + u8 soundcheckStr[9]; + u8 bgmStr[4]; + u8 seStr[4]; + u8 abDescStr[13]; + u8 upDownStr[12]; + u8 driverStr[14]; + + // these probably used size of the strings themselves, but they are not in the C file yet. + memcpy(soundcheckStr, gDebugText_SoundCheckJap, sizeof soundcheckStr); + memcpy(bgmStr, gDebugText_BGM, sizeof bgmStr); + memcpy(seStr, gDebugText_SE, sizeof seStr); + memcpy(abDescStr, gDebugText_ABDesc, sizeof abDescStr); + memcpy(upDownStr, gDebugText_UpDown, sizeof upDownStr); + memcpy(driverStr, gDebugText_DriverTest, sizeof driverStr); + + if(!gPaletteFade.active) + { + MenuDrawTextWindow(0x2, 0, 0x1B, 0x3); + MenuDrawTextWindow(0x2, 0x5, 0x1B, 0xA); + MenuDrawTextWindow(0x2, 0xC, 0x1B, 0x11); + MenuPrint(soundcheckStr, 4, 1); + MenuPrint(abDescStr, 14, 1); + MenuPrint(bgmStr, 4, 6); + MenuPrint(upDownStr, 14, 6); + MenuPrint(seStr, 4, 13); + MenuPrint(upDownStr, 14, 13); + MenuPrint(driverStr, 14, 18); + TASK.FUNC = sub_80BA384; + REG_WIN0H = 0x11DF; + REG_WIN0V = 0x11F; + } +} + +void sub_80BA384(u8 taskId) +{ + sub_80BA6B8(TASK.UNK_DATA0); + sub_80BA700(TASK.BGM_INDEX + BGM_STOP, 7, 8); // print by BGM index + sub_80BA79C(gBGMNames[TASK.BGM_INDEX], 11, 8); + sub_80BA700(TASK.SE_INDEX, 7, 15); + sub_80BA79C(gSENames[TASK.SE_INDEX], 11, 15); + TASK.FUNC = sub_80BA65C; +} + +#ifdef NONMATCHING +bool8 sub_80BA400(u8 taskId) +{ + if(gMain.newKeys & R_BUTTON) // driver test + { + gTasks[taskId].func = sub_80BA800; + return FALSE; + } + if(gMain.newKeys & L_BUTTON) + { + gTasks[taskId].func = sub_80BAF84; + return FALSE; + } + if(gMain.newKeys & START_BUTTON) + { + gTasks[taskId].func = sub_80BB25C; + return FALSE; + } + if(gMain.newKeys & A_BUTTON) // both these cases insist on non reuses of certain data variables and cause the function to not match. + { + if(gTasks[taskId].data[0] != 0) // is playing? + { + if(gTasks[taskId].data[4] != 0) + { + if(gTasks[taskId].data[2] != 0) // why are you insiting on a non signed halfword? + { + m4aSongNumStop(gTasks[taskId].data[4]); + } + else + { + m4aSongNumStop(gTasks[taskId].data[2]); + gTasks[taskId].data[4] = gTasks[taskId].data[2]; + return FALSE; + } + } + else if(gTasks[taskId].data[2] == 0) // _080BA4BA + { + return FALSE; + } + // _080BA4C4 + m4aSongNumStart(gTasks[taskId].data[2]); + gTasks[taskId].data[4] = gTasks[taskId].data[2]; + } + else // _080BA4D0 + { + if(gTasks[taskId].data[3] != 0) + { + if(gTasks[taskId].data[1] != 0) + { + m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + } + else // _080BA500 + { + m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + gTasks[taskId].data[3] = gTasks[taskId].data[1]; + return FALSE; + } + } + else if(gTasks[taskId].data[1] == 0) // _080BA514 + return FALSE; + + m4aSongNumStart(gTasks[taskId].data[1] + BGM_STOP); + gTasks[taskId].data[3] = gTasks[taskId].data[1]; + } + return FALSE; + } + if(gMain.newKeys & B_BUTTON) + { + m4aSongNumStart(5); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_80BA68C; + return FALSE; + } + if(gMain.newAndRepeatedKeys & DPAD_UP) + { + gTasks[taskId].data[8] ^= A_BUTTON; // huh? + return TRUE; + } + if(gMain.newAndRepeatedKeys & DPAD_DOWN) + { + gTasks[taskId].data[8] ^= A_BUTTON; // huh? + return TRUE; + } + else + { + u16 keys = gMain.newAndRepeatedKeys & DPAD_RIGHT; + if(keys) + { + if(gTasks[taskId].data[0] != 0) + { + if(gTasks[taskId].data[2] > 0) + { + gTasks[taskId].data[2]--; + } + else + { + gTasks[taskId].data[2] = 0xF7; + } + } + else if(gTasks[taskId].data[1] > 0) + { + gTasks[taskId].data[1]--; + } + else + { + gTasks[taskId].data[1] = 0x75; + } + return TRUE; + } + if(gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[0] != 0) + { + if(gTasks[taskId].data[2] < 0xF7) + { + gTasks[taskId].data[2]++; + } + else + { + gTasks[taskId].data[2] = keys; // ?? + } + } + else if(gTasks[taskId].data[1] < 0x75) + { + gTasks[taskId].data[1]++; + return TRUE; + } + else + { + gTasks[taskId].data[1] = gTasks[taskId].data[2]; + return TRUE; + } + return TRUE; + } + if(gMain.heldKeys & SELECT_BUTTON) + { + gUnknown_020387B0 = A_BUTTON; + return FALSE; + } + else + { + gUnknown_020387B0 = (gMain.heldKeys & SELECT_BUTTON); + return FALSE; + } + } +} +#else +__attribute__((naked)) +bool8 sub_80BA400(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + ldr r2, _080BA428 @ =gMain\n\ + ldrh r1, [r2, 0x2E]\n\ + movs r0, 0x80\n\ + lsls r0, 1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA434\n\ + ldr r0, _080BA42C @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldr r0, _080BA430 @ =sub_80BA800\n\ + str r0, [r1]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA428: .4byte gMain\n\ +_080BA42C: .4byte gTasks\n\ +_080BA430: .4byte sub_80BA800\n\ +_080BA434:\n\ + movs r0, 0x80\n\ + lsls r0, 2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA458\n\ + ldr r0, _080BA450 @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldr r0, _080BA454 @ =sub_80BAF84\n\ + str r0, [r1]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA450: .4byte gTasks\n\ +_080BA454: .4byte sub_80BAF84\n\ +_080BA458:\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA478\n\ + ldr r0, _080BA470 @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldr r0, _080BA474 @ =sub_80BB25C\n\ + str r0, [r1]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA470: .4byte gTasks\n\ +_080BA474: .4byte sub_80BB25C\n\ +_080BA478:\n\ + movs r6, 0x1\n\ + movs r5, 0x1\n\ + ands r5, r1\n\ + cmp r5, 0\n\ + beq _080BA538\n\ + ldr r0, _080BA4AC @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r5, r1, r0\n\ + movs r1, 0x8\n\ + ldrsh r0, [r5, r1]\n\ + cmp r0, 0\n\ + beq _080BA4D0\n\ + movs r2, 0x10\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0\n\ + beq _080BA4BA\n\ + movs r3, 0xC\n\ + ldrsh r4, [r5, r3]\n\ + cmp r4, 0\n\ + beq _080BA4B0\n\ + ldrh r0, [r5, 0x10]\n\ + bl m4aSongNumStop\n\ + b _080BA4C4\n\ + .align 2, 0\n\ +_080BA4AC: .4byte gTasks\n\ +_080BA4B0:\n\ + ldrh r0, [r5, 0x10]\n\ + bl m4aSongNumStop\n\ + strh r4, [r5, 0x10]\n\ + b _080BA64C\n\ +_080BA4BA:\n\ + movs r4, 0xC\n\ + ldrsh r0, [r5, r4]\n\ + cmp r0, 0\n\ + bne _080BA4C4\n\ + b _080BA64C\n\ +_080BA4C4:\n\ + ldrh r0, [r5, 0xC]\n\ + bl m4aSongNumStart\n\ + ldrh r0, [r5, 0xC]\n\ + strh r0, [r5, 0x10]\n\ + b _080BA64C\n\ +_080BA4D0:\n\ + ldrh r1, [r5, 0xE]\n\ + movs r2, 0xE\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0\n\ + beq _080BA514\n\ + movs r3, 0xA\n\ + ldrsh r4, [r5, r3]\n\ + cmp r4, 0\n\ + beq _080BA500\n\ + ldr r0, _080BA4FC @ =0x0000015d\n\ + adds r4, r0, 0\n\ + adds r0, r1, r4\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl m4aSongNumStop\n\ + ldrh r1, [r5, 0xA]\n\ + adds r4, r1\n\ + lsls r4, 16\n\ + lsrs r4, 16\n\ + adds r0, r4, 0\n\ + b _080BA528\n\ + .align 2, 0\n\ +_080BA4FC: .4byte 0x0000015d\n\ +_080BA500:\n\ + ldr r2, _080BA510 @ =0x0000015d\n\ + adds r0, r1, r2\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl m4aSongNumStop\n\ + strh r4, [r5, 0xE]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA510: .4byte 0x0000015d\n\ +_080BA514:\n\ + ldrh r1, [r5, 0xA]\n\ + movs r3, 0xA\n\ + ldrsh r0, [r5, r3]\n\ + cmp r0, 0\n\ + bne _080BA520\n\ + b _080BA64C\n\ +_080BA520:\n\ + ldr r4, _080BA534 @ =0x0000015d\n\ + adds r0, r1, r4\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ +_080BA528:\n\ + bl m4aSongNumStart\n\ + ldrh r0, [r5, 0xA]\n\ + strh r0, [r5, 0xE]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA534: .4byte 0x0000015d\n\ +_080BA538:\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA570\n\ + movs r0, 0x5\n\ + bl m4aSongNumStart\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + str r5, [sp]\n\ + movs r1, 0\n\ + movs r2, 0\n\ + movs r3, 0x10\n\ + bl BeginNormalPaletteFade\n\ + ldr r1, _080BA568 @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldr r1, _080BA56C @ =sub_80BA68C\n\ + str r1, [r0]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA568: .4byte gTasks\n\ +_080BA56C: .4byte sub_80BA68C\n\ +_080BA570:\n\ + ldrh r1, [r2, 0x30]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080BA582\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA59C\n\ +_080BA582:\n\ + ldr r0, _080BA598 @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldrh r0, [r1, 0x8]\n\ + eors r0, r6\n\ + strh r0, [r1, 0x8]\n\ +_080BA592:\n\ + movs r0, 0x1\n\ + b _080BA64E\n\ + .align 2, 0\n\ +_080BA598: .4byte gTasks\n\ +_080BA59C:\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0\n\ + beq _080BA5EA\n\ + ldr r0, _080BA5CC @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r2, 0x8\n\ + ldrsh r0, [r1, r2]\n\ + cmp r0, 0\n\ + beq _080BA5D6\n\ + ldrh r2, [r1, 0xC]\n\ + movs r3, 0xC\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0\n\ + ble _080BA5D0\n\ + subs r0, r2, 0x1\n\ + strh r0, [r1, 0xC]\n\ + b _080BA592\n\ + .align 2, 0\n\ +_080BA5CC: .4byte gTasks\n\ +_080BA5D0:\n\ + movs r0, 0xF7\n\ + strh r0, [r1, 0xC]\n\ + b _080BA592\n\ +_080BA5D6:\n\ + ldrh r2, [r1, 0xA]\n\ + movs r4, 0xA\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, 0\n\ + ble _080BA5E4\n\ + subs r0, r2, 0x1\n\ + b _080BA5E6\n\ +_080BA5E4:\n\ + movs r0, 0x75\n\ +_080BA5E6:\n\ + strh r0, [r1, 0xA]\n\ + b _080BA592\n\ +_080BA5EA:\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA630\n\ + ldr r1, _080BA614 @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r1, r0, r1\n\ + movs r0, 0x8\n\ + ldrsh r2, [r1, r0]\n\ + cmp r2, 0\n\ + beq _080BA61C\n\ + ldrh r2, [r1, 0xC]\n\ + movs r4, 0xC\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, 0xF6\n\ + bgt _080BA618\n\ + adds r0, r2, 0x1\n\ + strh r0, [r1, 0xC]\n\ + b _080BA592\n\ + .align 2, 0\n\ +_080BA614: .4byte gTasks\n\ +_080BA618:\n\ + strh r3, [r1, 0xC]\n\ + b _080BA592\n\ +_080BA61C:\n\ + ldrh r3, [r1, 0xA]\n\ + movs r4, 0xA\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, 0x74\n\ + bgt _080BA62C\n\ + adds r0, r3, 0x1\n\ + strh r0, [r1, 0xA]\n\ + b _080BA592\n\ +_080BA62C:\n\ + strh r2, [r1, 0xA]\n\ + b _080BA592\n\ +_080BA630:\n\ + ldrh r1, [r2, 0x2C]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + cmp r1, 0\n\ + beq _080BA648\n\ + ldr r0, _080BA644 @ =gUnknown_020387B0\n\ + strb r6, [r0]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA644: .4byte gUnknown_020387B0\n\ +_080BA648:\n\ + ldr r0, _080BA658 @ =gUnknown_020387B0\n\ + strb r1, [r0]\n\ +_080BA64C:\n\ + movs r0, 0\n\ +_080BA64E:\n\ + add sp, 0x4\n\ + pop {r4-r6}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_080BA658: .4byte gUnknown_020387B0\n\ + .syntax divided"); +} +#endif -- cgit v1.2.3 From 01890a2020676ad2567f21d9f11deeb2e3a0e2db Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Jun 2017 08:24:28 -0400 Subject: Nonmatching sub_8069638 and callers --- asm/field_tasks.s | 131 ------------------------------------------------------ src/field_tasks.c | 107 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+), 131 deletions(-) mode change 100644 => 100755 asm/field_tasks.s mode change 100644 => 100755 src/field_tasks.c diff --git a/asm/field_tasks.s b/asm/field_tasks.s old mode 100644 new mode 100755 index b869f2ad1..0cccd07ba --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,137 +6,6 @@ .text - thumb_func_start sub_8069638 -sub_8069638: @ 8069638 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - mov r8, r3 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r7, r2, 16 - adds r0, r6, 0 - adds r1, r7, 0 - bl MapGridGetMetatileBehaviorAt - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl sub_80695E0 - adds r4, r0, 0 - adds r5, r4, 0 - cmp r4, 0 - beq _080696B6 - movs r0, 0 - ldrsb r0, [r4, r0] - adds r0, r6, r0 - movs r1, 0x1 - ldrsb r1, [r4, r1] - adds r1, r7, r1 - ldrh r2, [r4, 0x2] - bl MapGridSetMetatileIdAt - mov r0, r8 - cmp r0, 0 - beq _0806968E - movs r0, 0 - ldrsb r0, [r4, r0] - adds r0, r6, r0 - movs r1, 0x1 - ldrsb r1, [r4, r1] - adds r1, r7, r1 - bl CurrentMapDrawMetatileAt -_0806968E: - movs r0, 0x4 - ldrsb r0, [r5, r0] - adds r0, r6, r0 - movs r1, 0x5 - ldrsb r1, [r5, r1] - adds r1, r7, r1 - ldrh r2, [r5, 0x6] - bl MapGridSetMetatileIdAt - mov r0, r8 - cmp r0, 0 - beq _080696B6 - movs r0, 0x4 - ldrsb r0, [r5, r0] - adds r0, r6, r0 - movs r1, 0x5 - ldrsb r1, [r5, r1] - adds r1, r7, r1 - bl CurrentMapDrawMetatileAt -_080696B6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8069638 - - thumb_func_start sub_80696C0 -sub_80696C0: @ 80696C0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r3, r2, 0 - ldr r0, _080696E0 @ =gUnknown_08376384 - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8069638 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080696E0: .4byte gUnknown_08376384 - thumb_func_end sub_80696C0 - - thumb_func_start sub_80696E4 -sub_80696E4: @ 80696E4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r3, r2, 0 - ldr r0, _08069704 @ =gUnknown_083763A4 - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8069638 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069704: .4byte gUnknown_083763A4 - thumb_func_end sub_80696E4 - - thumb_func_start sub_8069708 -sub_8069708: @ 8069708 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r3, r2, 0 - ldr r0, _08069728 @ =gUnknown_083763C4 - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8069638 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069728: .4byte gUnknown_083763C4 - thumb_func_end sub_8069708 - thumb_func_start sub_806972C sub_806972C: @ 806972C push {r4-r7,lr} diff --git a/src/field_tasks.c b/src/field_tasks.c old mode 100644 new mode 100755 index 39c2146d6..11f67c330 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -11,6 +11,8 @@ #include "field_special_scene.h" #include "secret_base.h" #include "metatile_behavior.h" +#include "fieldmap.h" +#include "field_camera.h" #include "field_tasks.h" void DummyPerStepCallback(u8); @@ -176,3 +178,108 @@ const struct MetatileOffset *sub_80695E0(const struct MetatileOffset a0[][2], s8 return NULL; } } + +#ifdef NONMATCHING +void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag) +{ + const struct MetatileOffset *offsetData = sub_80695E0(offsets, MapGridGetMetatileBehaviorAt(x, y)); + const struct MetatileOffset *offsetData2 = offsetData; + if (offsetData != NULL) + { + MapGridSetMetatileIdAt(x + offsetData[0].x, y + offsetData[0].y, offsetData[0].tileId); + if (flag) + { + CurrentMapDrawMetatileAt(x + offsetData[0].x, y + offsetData[0].y); + } + MapGridSetMetatileIdAt(x + offsetData2[1].x, y + offsetData2[1].y, offsetData2[1].tileId); + if (flag) + { + CurrentMapDrawMetatileAt(x + offsetData2[1].x, y + offsetData2[1].y); + } + } +} +#else +__attribute__((naked)) +void sub_8069638(const struct MetatileOffset offsets[][2], s16 x, s16 y, bool32 flag) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tadds r5, r0, 0\n" + "\tmov r8, r3\n" + "\tlsls r1, 16\n" + "\tasrs r6, r1, 16\n" + "\tlsls r2, 16\n" + "\tasrs r7, r2, 16\n" + "\tadds r0, r6, 0\n" + "\tadds r1, r7, 0\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tadds r1, r0, 0\n" + "\tlsls r1, 16\n" + "\tlsrs r1, 16\n" + "\tadds r0, r5, 0\n" + "\tbl sub_80695E0\n" + "\tadds r4, r0, 0\n" + "\tadds r5, r4, 0\n" + "\tcmp r4, 0\n" + "\tbeq _080696B6\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r4, r0]\n" + "\tadds r0, r6, r0\n" + "\tmovs r1, 0x1\n" + "\tldrsb r1, [r4, r1]\n" + "\tadds r1, r7, r1\n" + "\tldrh r2, [r4, 0x2]\n" + "\tbl MapGridSetMetatileIdAt\n" + "\tmov r0, r8\n" + "\tcmp r0, 0\n" + "\tbeq _0806968E\n" + "\tmovs r0, 0\n" + "\tldrsb r0, [r4, r0]\n" + "\tadds r0, r6, r0\n" + "\tmovs r1, 0x1\n" + "\tldrsb r1, [r4, r1]\n" + "\tadds r1, r7, r1\n" + "\tbl CurrentMapDrawMetatileAt\n" + "_0806968E:\n" + "\tmovs r0, 0x4\n" + "\tldrsb r0, [r5, r0]\n" + "\tadds r0, r6, r0\n" + "\tmovs r1, 0x5\n" + "\tldrsb r1, [r5, r1]\n" + "\tadds r1, r7, r1\n" + "\tldrh r2, [r5, 0x6]\n" + "\tbl MapGridSetMetatileIdAt\n" + "\tmov r0, r8\n" + "\tcmp r0, 0\n" + "\tbeq _080696B6\n" + "\tmovs r0, 0x4\n" + "\tldrsb r0, [r5, r0]\n" + "\tadds r0, r6, r0\n" + "\tmovs r1, 0x5\n" + "\tldrsb r1, [r5, r1]\n" + "\tadds r1, r7, r1\n" + "\tbl CurrentMapDrawMetatileAt\n" + "_080696B6:\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0"); +} +#endif + +void sub_80696C0(s16 x, s16 y, bool32 flag) +{ + sub_8069638(gUnknown_08376384, x, y, flag); +} + +void sub_80696E4(s16 x, s16 y, bool32 flag) +{ + sub_8069638(gUnknown_083763A4, x, y, flag); +} + +void sub_8069708(s16 x, s16 y, bool32 flag) +{ + sub_8069638(gUnknown_083763C4, x, y, flag); +} -- cgit v1.2.3 From d7ab13d3a9b969b0267786e566595689338ae7c4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Jun 2017 08:35:22 -0400 Subject: sub_806972C --- asm/field_tasks.s | 82 ------------------------------------------------------- src/field_tasks.c | 34 +++++++++++++++++++++++ 2 files changed, 34 insertions(+), 82 deletions(-) diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 0cccd07ba..dcc3858ee 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,88 +6,6 @@ .text - thumb_func_start sub_806972C -sub_806972C: @ 806972C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - mov r10, r8 - lsls r1, 16 - lsrs r7, r1, 16 - mov r9, r7 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r5, r3, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80576A0 - lsls r0, 24 - cmp r0, 0 - beq _08069770 - lsls r0, r7, 16 - asrs r0, 16 - cmp r0, r5 - ble _080697B6 -_0806976C: - movs r0, 0 - b _080697B8 -_08069770: - adds r0, r4, 0 - bl sub_80576B4 - lsls r0, 24 - cmp r0, 0 - beq _08069788 - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r5 - bge _080697B6 - b _0806976C -_08069788: - adds r0, r4, 0 - bl sub_80576C8 - lsls r0, 24 - cmp r0, 0 - beq _080697A0 - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r6 - ble _080697B6 - b _0806976C -_080697A0: - adds r0, r4, 0 - bl sub_80576DC - lsls r0, 24 - cmp r0, 0 - beq _080697B6 - mov r1, r10 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r6 - blt _0806976C -_080697B6: - movs r0, 0x1 -_080697B8: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_806972C - thumb_func_start sub_80697C8 sub_80697C8: @ 80697C8 push {r4-r7,lr} diff --git a/src/field_tasks.c b/src/field_tasks.c index 11f67c330..6682d01c3 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -283,3 +283,37 @@ void sub_8069708(s16 x, s16 y, bool32 flag) { sub_8069638(gUnknown_083763C4, x, y, flag); } + +bool8 sub_806972C(s16 x1, s16 y1, s16 x2, s16 y2) +{ + s8 metatileBehavior = MapGridGetMetatileBehaviorAt(x2, y2); + if (sub_80576A0(metatileBehavior)) + { + if (y1 > y2) + { + return FALSE; + } + } + else if (sub_80576B4(metatileBehavior)) + { + if (y1 < y2) + { + return FALSE; + } + } + else if (sub_80576C8(metatileBehavior)) + { + if (x1 > x2) + { + return FALSE; + } + } + else if (sub_80576DC(metatileBehavior)) + { + if (x1 < x2) + { + return FALSE; + } + } + return TRUE; +} -- cgit v1.2.3 From 155007d14989b2a798a15c6be8a00bb926d2c9b7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Jun 2017 08:37:30 -0400 Subject: sub_80697C8 --- asm/field_tasks.s | 82 ------------------------------------------------------- src/field_tasks.c | 34 +++++++++++++++++++++++ 2 files changed, 34 insertions(+), 82 deletions(-) diff --git a/asm/field_tasks.s b/asm/field_tasks.s index dcc3858ee..6a7176104 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,88 +6,6 @@ .text - thumb_func_start sub_80697C8 -sub_80697C8: @ 80697C8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r2, 16 - lsrs r2, 16 - mov r8, r2 - mov r10, r8 - lsls r3, 16 - lsrs r7, r3, 16 - mov r9, r7 - lsls r0, 16 - asrs r6, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - adds r0, r6, 0 - adds r1, r5, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80576A0 - lsls r0, 24 - cmp r0, 0 - beq _0806980C - lsls r0, r7, 16 - asrs r0, 16 - cmp r5, r0 - bge _08069852 -_08069808: - movs r0, 0 - b _08069854 -_0806980C: - adds r0, r4, 0 - bl sub_80576B4 - lsls r0, 24 - cmp r0, 0 - beq _08069824 - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - cmp r5, r0 - ble _08069852 - b _08069808 -_08069824: - adds r0, r4, 0 - bl sub_80576C8 - lsls r0, 24 - cmp r0, 0 - beq _0806983C - mov r1, r8 - lsls r0, r1, 16 - asrs r0, 16 - cmp r6, r0 - bge _08069852 - b _08069808 -_0806983C: - adds r0, r4, 0 - bl sub_80576DC - lsls r0, 24 - cmp r0, 0 - beq _08069852 - mov r1, r10 - lsls r0, r1, 16 - asrs r0, 16 - cmp r6, r0 - bgt _08069808 -_08069852: - movs r0, 0x1 -_08069854: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80697C8 - thumb_func_start PerStepCallback_8069864 PerStepCallback_8069864: @ 8069864 push {r4-r7,lr} diff --git a/src/field_tasks.c b/src/field_tasks.c index 6682d01c3..34cbc9796 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -317,3 +317,37 @@ bool8 sub_806972C(s16 x1, s16 y1, s16 x2, s16 y2) } return TRUE; } + +bool8 sub_80697C8(s16 x1, s16 y1, s16 x2, s16 y2) +{ + s8 metatileBehavior = MapGridGetMetatileBehaviorAt(x1, y1); + if (sub_80576A0(metatileBehavior)) + { + if (y1 < y2) + { + return FALSE; + } + } + else if (sub_80576B4(metatileBehavior)) + { + if (y1 > y2) + { + return FALSE; + } + } + else if (sub_80576C8(metatileBehavior)) + { + if (x1 < x2) + { + return FALSE; + } + } + else if (sub_80576DC(metatileBehavior)) + { + if (x1 > x2) + { + return FALSE; + } + } + return TRUE; +} -- cgit v1.2.3 From 830b3a9e1f58133e4b4d1fa6a9e65600bccd4b86 Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 26 Jun 2017 18:11:50 -0400 Subject: Nonmatching WIP PerStepCallback_8069864 --- asm/field_tasks.s | 186 ------------------------------------------------------ src/field_tasks.c | 60 ++++++++++++++++++ 2 files changed, 60 insertions(+), 186 deletions(-) diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 6a7176104..5b6e5a81d 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,192 +6,6 @@ .text - thumb_func_start PerStepCallback_8069864 -PerStepCallback_8069864: @ 8069864 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08069898 @ =gTasks + 0x8 - adds r4, r1, r0 - mov r5, sp - adds r5, 0x2 - mov r0, sp - adds r1, r5, 0 - bl PlayerGetDestCoords - movs r1, 0x2 - ldrsh r0, [r4, r1] - adds r6, r5, 0 - cmp r0, 0x1 - beq _080698BE - cmp r0, 0x1 - bgt _0806989C - cmp r0, 0 - beq _080698A2 - b _080699CE - .align 2, 0 -_08069898: .4byte gTasks + 0x8 -_0806989C: - cmp r0, 0x2 - beq _0806998C - b _080699CE -_080698A2: - mov r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x4] - ldrh r0, [r5] - strh r0, [r4, 0x6] - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r3, 0 - ldrsh r1, [r5, r3] - movs r2, 0x1 - bl sub_80696E4 - b _080699CA -_080698BE: - mov r0, sp - movs r7, 0 - ldrsh r1, [r0, r7] - movs r2, 0x4 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _080698D8 - movs r3, 0 - ldrsh r1, [r5, r3] - movs r7, 0x6 - ldrsh r0, [r4, r7] - cmp r1, r0 - beq _080699CE -_080698D8: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r5, 0x6 - ldrsh r3, [r4, r5] - bl sub_806972C - cmp r0, 0 - beq _08069920 - movs r7, 0x4 - ldrsh r0, [r4, r7] - movs r2, 0x6 - ldrsh r1, [r4, r2] - movs r2, 0x1 - bl sub_80696C0 - movs r3, 0x4 - ldrsh r0, [r4, r3] - movs r5, 0x6 - ldrsh r1, [r4, r5] - movs r2, 0 - bl sub_8069708 - ldrh r0, [r4, 0x4] - strh r0, [r4, 0x8] - ldrh r0, [r4, 0x6] - strh r0, [r4, 0xA] - movs r0, 0x2 - strh r0, [r4, 0x2] - movs r0, 0x8 - strh r0, [r4, 0xC] - b _0806992A -_08069920: - movs r7, 0x1 - negs r7, r7 - adds r0, r7, 0 - strh r0, [r4, 0x8] - strh r0, [r4, 0xA] -_0806992A: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - adds r5, r6, 0 - movs r2, 0 - ldrsh r1, [r5, r2] - movs r3, 0x4 - ldrsh r2, [r4, r3] - movs r7, 0x6 - ldrsh r3, [r4, r7] - bl sub_80697C8 - cmp r0, 0 - beq _0806995E - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - movs r2, 0x1 - bl sub_80696C0 - movs r0, 0x2 - strh r0, [r4, 0x2] - movs r0, 0x8 - strh r0, [r4, 0xC] -_0806995E: - mov r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x4] - ldrh r0, [r6] - strh r0, [r4, 0x6] - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r5, 0 - ldrsh r1, [r6, r5] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsPacifidlogLog - lsls r0, 24 - cmp r0, 0 - beq _080699CE - movs r0, 0x46 - bl PlaySE - b _080699CE -_0806998C: - ldrh r0, [r4, 0xC] - subs r0, 0x1 - strh r0, [r4, 0xC] - lsls r0, 16 - cmp r0, 0 - bne _080699CE - mov r0, sp - movs r7, 0 - ldrsh r0, [r0, r7] - movs r2, 0 - ldrsh r1, [r5, r2] - movs r2, 0x1 - bl sub_80696E4 - movs r3, 0x8 - ldrsh r0, [r4, r3] - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080699CA - movs r5, 0xA - ldrsh r0, [r4, r5] - cmp r0, r1 - beq _080699CA - movs r7, 0x8 - ldrsh r0, [r4, r7] - movs r2, 0xA - ldrsh r1, [r4, r2] - movs r2, 0x1 - bl sub_8069708 -_080699CA: - movs r0, 0x1 - strh r0, [r4, 0x2] -_080699CE: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end PerStepCallback_8069864 - thumb_func_start sub_80699D8 sub_80699D8: @ 80699D8 push {r4,r5,lr} diff --git a/src/field_tasks.c b/src/field_tasks.c index 34cbc9796..407fa7776 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -12,7 +12,10 @@ #include "secret_base.h" #include "metatile_behavior.h" #include "fieldmap.h" +#include "field_player_avatar.h" #include "field_camera.h" +#include "songs.h" +#include "sound.h" #include "field_tasks.h" void DummyPerStepCallback(u8); @@ -351,3 +354,60 @@ bool8 sub_80697C8(s16 x1, s16 y1, s16 x2, s16 y2) } return TRUE; } + +void PerStepCallback_8069864(u8 taskId) +{ + s16 x, y; + s16 *data = gTasks[taskId].data; + PlayerGetDestCoords(&x, &y); + switch (data[1]) + { + case 0: + data[2] = x; + data[3] = y; + sub_80696E4(x, y, TRUE); + data[1] = 1; + break; + case 1: + if (x != data[2] || y != data[3]) + { + if (sub_806972C(x, y, data[2], data[3])) + { + sub_80696C0(data[2], data[3], TRUE); + sub_8069708(data[2], data[3], FALSE); + data[4] = data[2]; + data[5] = data[3]; + data[1] = 2; + data[6] = 8; + } + else + { + data[4] = -1; + data[5] = -1; + } + if (sub_80697C8(x, y, data[2], data[3])) + { + sub_80696C0(x, y, TRUE); + data[1] = 2; + data[6] = 8; + } + data[2] = x; + data[3] = y; + if (MetatileBehavior_IsPacifidlogLog(MapGridGetMetatileBehaviorAt(x, y))) + { + PlaySE(SE_MIZU); + } + break; + } + case 2: + if ((--data[6]) == 0) + { + sub_80696E4(x, y, TRUE); + if (data[4] != -1 && data[5] != -1) + { + sub_8069708(data[4], data[5], TRUE); + } + data[1] = 1; + } + } +} -- cgit v1.2.3 From 826d62b737f8012dbd5865098ac84c94cedd5139 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Jun 2017 19:50:49 -0400 Subject: Matching PerStepCallback_8069864 --- src/field_tasks.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/field_tasks.c b/src/field_tasks.c index 407fa7776..a266f8c8b 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -287,7 +287,7 @@ void sub_8069708(s16 x, s16 y, bool32 flag) sub_8069638(gUnknown_083763C4, x, y, flag); } -bool8 sub_806972C(s16 x1, s16 y1, s16 x2, s16 y2) +bool32 sub_806972C(s16 x1, s16 y1, s16 x2, s16 y2) { s8 metatileBehavior = MapGridGetMetatileBehaviorAt(x2, y2); if (sub_80576A0(metatileBehavior)) @@ -321,7 +321,7 @@ bool8 sub_806972C(s16 x1, s16 y1, s16 x2, s16 y2) return TRUE; } -bool8 sub_80697C8(s16 x1, s16 y1, s16 x2, s16 y2) +bool32 sub_80697C8(s16 x1, s16 y1, s16 x2, s16 y2) { s8 metatileBehavior = MapGridGetMetatileBehaviorAt(x1, y1); if (sub_80576A0(metatileBehavior)) @@ -357,8 +357,9 @@ bool8 sub_80697C8(s16 x1, s16 y1, s16 x2, s16 y2) void PerStepCallback_8069864(u8 taskId) { + s16 *data; s16 x, y; - s16 *data = gTasks[taskId].data; + data = gTasks[taskId].data; PlayerGetDestCoords(&x, &y); switch (data[1]) { @@ -397,8 +398,8 @@ void PerStepCallback_8069864(u8 taskId) { PlaySE(SE_MIZU); } - break; } + break; case 2: if ((--data[6]) == 0) { @@ -409,5 +410,6 @@ void PerStepCallback_8069864(u8 taskId) } data[1] = 1; } + break; } } -- cgit v1.2.3 From c739404ef0f50f87f580d8454ae9c32325ce83e4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Jun 2017 20:35:57 -0400 Subject: Through PerStepCallback_8069AA0 --- asm/field_tasks.s | 363 ------------------------------------------------------ src/field_tasks.c | 122 ++++++++++++++++++ 2 files changed, 122 insertions(+), 363 deletions(-) diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 5b6e5a81d..547a43668 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,369 +6,6 @@ .text - thumb_func_start sub_80699D8 -sub_80699D8: @ 80699D8 - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - bl PlayerGetZCoord - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08069A32 - lsls r0, r4, 16 - asrs r4, r0, 16 - lsls r0, r5, 16 - asrs r5, r0, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridGetMetatileIdAt - adds r1, r0, 0 - ldr r0, _08069A14 @ =0x0000024e - cmp r1, r0 - beq _08069A18 - adds r0, 0x8 - cmp r1, r0 - beq _08069A28 - b _08069A32 - .align 2, 0 -_08069A14: .4byte 0x0000024e -_08069A18: - ldr r2, _08069A24 @ =0x0000024f - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridSetMetatileIdAt - b _08069A32 - .align 2, 0 -_08069A24: .4byte 0x0000024f -_08069A28: - ldr r2, _08069A38 @ =0x00000257 - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridSetMetatileIdAt -_08069A32: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069A38: .4byte 0x00000257 - thumb_func_end sub_80699D8 - - thumb_func_start sub_8069A3C -sub_8069A3C: @ 8069A3C - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - bl PlayerGetZCoord - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08069A96 - lsls r0, r4, 16 - asrs r4, r0, 16 - lsls r0, r5, 16 - asrs r5, r0, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridGetMetatileIdAt - adds r1, r0, 0 - ldr r0, _08069A78 @ =0x0000024f - cmp r1, r0 - beq _08069A7C - adds r0, 0x8 - cmp r1, r0 - beq _08069A8C - b _08069A96 - .align 2, 0 -_08069A78: .4byte 0x0000024f -_08069A7C: - ldr r2, _08069A88 @ =0x0000024e - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridSetMetatileIdAt - b _08069A96 - .align 2, 0 -_08069A88: .4byte 0x0000024e -_08069A8C: - ldr r2, _08069A9C @ =0x00000256 - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridSetMetatileIdAt -_08069A96: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069A9C: .4byte 0x00000256 - thumb_func_end sub_8069A3C - - thumb_func_start PerStepCallback_8069AA0 -PerStepCallback_8069AA0: @ 8069AA0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08069ADC @ =gTasks + 0x8 - adds r6, r1, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - movs r0, 0x2 - ldrsh r5, [r6, r0] - mov r9, r4 - cmp r5, 0x1 - beq _08069B34 - cmp r5, 0x1 - bgt _08069AE0 - cmp r5, 0 - beq _08069AE8 - b _08069CA6 - .align 2, 0 -_08069ADC: .4byte gTasks + 0x8 -_08069AE0: - cmp r5, 0x2 - bne _08069AE6 - b _08069C14 -_08069AE6: - b _08069CA6 -_08069AE8: - mov r0, sp - ldrh r0, [r0] - strh r0, [r6, 0x4] - mov r1, r9 - ldrh r0, [r1] - strh r0, [r6, 0x6] - mov r0, sp - movs r2, 0 - ldrsh r0, [r0, r2] - movs r3, 0 - ldrsh r1, [r1, r3] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsFortreeBridge - lsls r0, 24 - cmp r0, 0 - bne _08069B12 - b _08069CA2 -_08069B12: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - mov r2, r9 - movs r3, 0 - ldrsh r1, [r2, r3] - bl sub_80699D8 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - mov r2, r9 - movs r3, 0 - ldrsh r1, [r2, r3] - bl CurrentMapDrawMetatileAt - b _08069CA2 -_08069B34: - ldrh r0, [r6, 0x6] - mov r8, r0 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - ldrh r2, [r6, 0x4] - mov r10, r2 - movs r3, 0x4 - ldrsh r7, [r6, r3] - cmp r0, r7 - bne _08069B5C - mov r0, r9 - movs r2, 0 - ldrsh r1, [r0, r2] - mov r3, r8 - lsls r0, r3, 16 - asrs r0, 16 - cmp r1, r0 - bne _08069B5C - b _08069CA6 -_08069B5C: - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - mov r2, r9 - movs r3, 0 - ldrsh r1, [r2, r3] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsFortreeBridge - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0x4] - mov r0, r8 - lsls r4, r0, 16 - asrs r1, r4, 16 - adds r0, r7, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsFortreeBridge - lsls r0, 24 - lsrs r7, r0, 24 - bl PlayerGetZCoord - movs r1, 0 - ands r5, r0 - lsls r0, r5, 24 - adds r5, r4, 0 - cmp r0, 0 - bne _08069BA4 - movs r1, 0x1 -_08069BA4: - cmp r1, 0 - beq _08069BB8 - ldr r1, [sp, 0x4] - cmp r1, 0x1 - beq _08069BB2 - cmp r7, 0x1 - bne _08069BB8 -_08069BB2: - movs r0, 0x47 - bl PlaySE -_08069BB8: - cmp r7, 0 - beq _08069BF4 - mov r2, r10 - lsls r4, r2, 16 - asrs r4, 16 - asrs r5, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8069A3C - adds r0, r4, 0 - adds r1, r5, 0 - bl CurrentMapDrawMetatileAt - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - mov r2, r9 - movs r3, 0 - ldrsh r1, [r2, r3] - bl sub_80699D8 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - mov r2, r9 - movs r3, 0 - ldrsh r1, [r2, r3] - bl CurrentMapDrawMetatileAt -_08069BF4: - mov r0, r10 - strh r0, [r6, 0x8] - mov r1, r8 - strh r1, [r6, 0xA] - mov r0, sp - ldrh r0, [r0] - strh r0, [r6, 0x4] - mov r2, r9 - ldrh r0, [r2] - strh r0, [r6, 0x6] - cmp r7, 0 - beq _08069CA6 - movs r0, 0x10 - strh r0, [r6, 0xC] - movs r0, 0x2 - strh r0, [r6, 0x2] -_08069C14: - ldrh r0, [r6, 0xC] - subs r0, 0x1 - strh r0, [r6, 0xC] - ldrh r3, [r6, 0x8] - mov r10, r3 - ldrh r0, [r6, 0xA] - mov r8, r0 - movs r1, 0xC - ldrsh r0, [r6, r1] - movs r1, 0x7 - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x7 - bhi _08069C9A - lsls r0, 2 - ldr r1, _08069C40 @ =_08069C44 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08069C40: .4byte _08069C44 - .align 2, 0 -_08069C44: - .4byte _08069C64 - .4byte _08069C9A - .4byte _08069C9A - .4byte _08069C9A - .4byte _08069C76 - .4byte _08069C9A - .4byte _08069C9A - .4byte _08069C9A -_08069C64: - mov r2, r10 - lsls r0, r2, 16 - asrs r0, 16 - mov r3, r8 - lsls r1, r3, 16 - asrs r1, 16 - bl CurrentMapDrawMetatileAt - b _08069C9A -_08069C76: - mov r0, r10 - lsls r5, r0, 16 - asrs r5, 16 - mov r1, r8 - lsls r4, r1, 16 - asrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80699D8 - adds r0, r5, 0 - adds r1, r4, 0 - bl CurrentMapDrawMetatileAt - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8069A3C -_08069C9A: - movs r2, 0xC - ldrsh r0, [r6, r2] - cmp r0, 0 - bne _08069CA6 -_08069CA2: - movs r0, 0x1 - strh r0, [r6, 0x2] -_08069CA6: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end PerStepCallback_8069AA0 - thumb_func_start sub_8069CB8 sub_8069CB8: @ 8069CB8 push {lr} diff --git a/src/field_tasks.c b/src/field_tasks.c index a266f8c8b..5ccd3fa14 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -413,3 +413,125 @@ void PerStepCallback_8069864(u8 taskId) break; } } + +void sub_80699D8(s16 x, s16 y) +{ + u8 z = PlayerGetZCoord(); + if (!(z & 0x01)) + { + switch (MapGridGetMetatileIdAt(x, y)) + { + case 0x24e: + MapGridSetMetatileIdAt(x, y, 0x24f); + break; + case 0x256: + MapGridSetMetatileIdAt(x, y, 0x257); + break; + } + } +} + +void sub_8069A3C(s16 x, s16 y) +{ + u8 z = PlayerGetZCoord(); + if (!(z & 0x01)) + { + switch (MapGridGetMetatileIdAt(x, y)) + { + case 0x24f: + MapGridSetMetatileIdAt(x, y, 0x24e); + break; + case 0x257: + MapGridSetMetatileIdAt(x, y, 0x256); + break; + } + } +} + +void PerStepCallback_8069AA0(u8 taskId) +{ + bool8 isFortreeBridgeCur; + bool8 isFortreeBridgePrev; + u8 z, flag; + s16 x, y, x2, y2; + s16 *data = gTasks[taskId].data; + PlayerGetDestCoords(&x, &y); + switch (data[1]) + { + default: + break; + case 0: + data[2] = x; + data[3] = y; + if (MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(x, y))) + { + sub_80699D8(x, y); + CurrentMapDrawMetatileAt(x, y); + } + data[1] = 1; + break; + case 1: + x2 = data[2]; + y2 = data[3]; + if (x == x2 && y == y2) + { + break; + } + isFortreeBridgeCur = MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(x, y)); + isFortreeBridgePrev = MetatileBehavior_IsFortreeBridge(MapGridGetMetatileBehaviorAt(x2, y2)); + z = PlayerGetZCoord(); + flag = 0; + if ((u8)(z & 1) == 0) + { + flag = 1; + } + if (flag && (isFortreeBridgeCur == 1 || isFortreeBridgePrev == 1)) + { + PlaySE(SE_HASHI); + } + if (isFortreeBridgePrev) + { + sub_8069A3C(x2, y2); + CurrentMapDrawMetatileAt(x2, y2); + sub_80699D8(x, y); + CurrentMapDrawMetatileAt(x, y); + } + data[4] = x2; + data[5] = y2; + data[2] = x; + data[3] = y; + if (!isFortreeBridgePrev) + { + break; + } + data[6] = 16; + data[1] = 2; + // fallthrough + case 2: + data[6]--; + x2 = data[4]; + y2 = data[5]; + switch (data[6] % 7) + { + case 0: + CurrentMapDrawMetatileAt(x2, y2); + case 1: + case 2: + case 3: + break; + case 4: + sub_80699D8(x2, y2); + CurrentMapDrawMetatileAt(x2, y2); + sub_8069A3C(x2, y2); + case 5: + case 6: + case 7: + break; + } + if (data[6] == 0) + { + data[1] = 1; + } + break; + } +} -- cgit v1.2.3 From 10f782959283e43cea5219033772778dbaf4a745 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Jun 2017 20:42:50 -0400 Subject: sub_8069CB8 --- asm/field_tasks.s | 37 ------------------------------------- data/field_tasks.s | 30 ------------------------------ src/field_tasks.c | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 67 deletions(-) mode change 100644 => 100755 data/field_tasks.s diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 547a43668..83e0a8371 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,43 +6,6 @@ .text - thumb_func_start sub_8069CB8 -sub_8069CB8: @ 8069CB8 - push {lr} - lsls r1, 16 - lsrs r1, 16 - lsls r0, 16 - ldr r2, _08069CE8 @ =0xfffd0000 - adds r0, r2 - lsrs r0, 16 - cmp r0, 0xA - bhi _08069CF4 - lsls r0, r1, 16 - asrs r1, r0, 16 - ldr r2, _08069CEC @ =0xfffa0000 - adds r0, r2 - lsrs r0, 16 - cmp r0, 0xD - bhi _08069CF4 - ldr r0, _08069CF0 @ =gUnknown_083763E4 - lsls r1, 1 - adds r1, r0 - ldrh r0, [r1] - cmp r0, 0 - beq _08069CF4 - movs r0, 0x1 - b _08069CF6 - .align 2, 0 -_08069CE8: .4byte 0xfffd0000 -_08069CEC: .4byte 0xfffa0000 -_08069CF0: .4byte gUnknown_083763E4 -_08069CF4: - movs r0, 0 -_08069CF6: - pop {r1} - bx r1 - thumb_func_end sub_8069CB8 - thumb_func_start sub_8069CFC sub_8069CFC: @ 8069CFC push {r4,r5,lr} diff --git a/data/field_tasks.s b/data/field_tasks.s old mode 100644 new mode 100755 index a4b78df2e..faaa12342 --- a/data/field_tasks.s +++ b/data/field_tasks.s @@ -3,36 +3,6 @@ .section .rodata - - .align 1 -gUnknown_083763E4:: @ 83763E4 - .2byte 0 - .2byte 0 - .2byte 0 - .2byte 0 - .2byte 0 - .2byte 0 - .2byte 0x4001 - .2byte 0x4002 - .2byte 0x4003 - .2byte 0x4004 - .2byte 0 - .2byte 0 - .2byte 0x4005 - .2byte 0x4006 - .2byte 0x4007 - .2byte 0 - .2byte 0 - .2byte 0x4008 - .2byte 0x4009 - .2byte 0x400A - .2byte 0 - .2byte 0 - .2byte 0 - .2byte 0 - .2byte 0 - .2byte 0 - .align 1 gUnknown_08376418:: @ 8376418 .2byte 0xE8, 0xEB, 0xEA, 0xE9 diff --git a/src/field_tasks.c b/src/field_tasks.c index 5ccd3fa14..88dd025cc 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -535,3 +535,41 @@ void PerStepCallback_8069AA0(u8 taskId) break; } } + +const u16 gUnknown_083763E4[] = { + 0, + 0, + 0, + 0, + 0, + 0, + 0x4001, + 0x4002, + 0x4003, + 0x4004, + 0, + 0, + 0x4005, + 0x4006, + 0x4007, + 0, + 0, + 0x4008, + 0x4009, + 0x400A, + 0, + 0, + 0, + 0, + 0, + 0 +}; + +bool8 sub_8069CB8(s16 x, s16 y) +{ + if ((u16)(x - 3) < 11 && (u16)(y - 6) < 14 && gUnknown_083763E4[y]) + { + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From d10bffc7d8977bee1b42a550dc154d03bf92c3c6 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Mon, 26 Jun 2017 21:09:49 -0400 Subject: decompile up to sub_80BA800 --- asm/sound_check_menu.s | 467 +----------------------------------------------- data/sound_check_menu.s | 14 +- src/sound_check_menu.c | 209 +++++++++++++++++++++- 3 files changed, 210 insertions(+), 480 deletions(-) diff --git a/asm/sound_check_menu.s b/asm/sound_check_menu.s index 99b894c83..9ebeee4e8 100644 --- a/asm/sound_check_menu.s +++ b/asm/sound_check_menu.s @@ -6,469 +6,6 @@ .text - thumb_func_start sub_80BA65C -sub_80BA65C: @ 80BA65C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80BA400 - lsls r0, 24 - cmp r0, 0 - beq _080BA67C - ldr r0, _080BA684 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080BA688 @ =sub_80BA384 - str r0, [r1] -_080BA67C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BA684: .4byte gTasks -_080BA688: .4byte sub_80BA384 - thumb_func_end sub_80BA65C - - thumb_func_start sub_80BA68C -sub_80BA68C: @ 80BA68C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _080BA6B0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BA6AA - adds r0, r2, 0 - bl DestroyTask - ldr r0, _080BA6B4 @ =CB2_InitTitleScreen - bl SetMainCallback2 -_080BA6AA: - pop {r0} - bx r0 - .align 2, 0 -_080BA6B0: .4byte gPaletteFade -_080BA6B4: .4byte CB2_InitTitleScreen - thumb_func_end sub_80BA68C - - thumb_func_start sub_80BA6B8 -sub_80BA6B8: @ 80BA6B8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080BA6C6 - cmp r0, 0x1 - beq _080BA6E0 -_080BA6C6: - ldr r1, _080BA6D4 @ =REG_WIN1H - ldr r2, _080BA6D8 @ =0x000011df - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x4 - ldr r2, _080BA6DC @ =0x00002957 - b _080BA6EC - .align 2, 0 -_080BA6D4: .4byte REG_WIN1H -_080BA6D8: .4byte 0x000011df -_080BA6DC: .4byte 0x00002957 -_080BA6E0: - ldr r1, _080BA6F4 @ =REG_WIN1H - ldr r2, _080BA6F8 @ =0x000011df - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x4 - ldr r2, _080BA6FC @ =0x0000618f -_080BA6EC: - adds r0, r2, 0 - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080BA6F4: .4byte REG_WIN1H -_080BA6F8: .4byte 0x000011df -_080BA6FC: .4byte 0x0000618f - thumb_func_end sub_80BA6B8 - - thumb_func_start sub_80BA700 -sub_80BA700: @ 80BA700 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 16 - lsrs r7, r2, 16 - movs r1, 0 - movs r2, 0 -_080BA714: - mov r3, sp - adds r0, r3, r1 - strb r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x2 - bls _080BA714 - mov r1, sp - movs r0, 0xB0 - strb r0, [r1, 0x3] - movs r0, 0xFF - strb r0, [r1, 0x4] - movs r4, 0 - adds r0, r5, 0 - movs r1, 0x64 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _080BA748 - mov r1, sp - adds r0, 0xA1 - strb r0, [r1] - movs r4, 0x1 -_080BA748: - adds r0, r5, 0 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080BA766 - cmp r4, 0 - beq _080BA76C -_080BA766: - mov r1, sp - adds r0, 0xA1 - strb r0, [r1, 0x1] -_080BA76C: - mov r4, sp - adds r0, r5, 0 - movs r1, 0x64 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0xA - bl __umodsi3 - adds r0, 0xA1 - strb r0, [r4, 0x2] - lsls r1, r6, 24 - lsrs r1, 24 - lsls r2, r7, 24 - lsrs r2, 24 - mov r0, sp - bl MenuPrint - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BA700 - - thumb_func_start sub_80BA79C -sub_80BA79C: @ 80BA79C - push {r4-r6,lr} - sub sp, 0xC - adds r4, r0, 0 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 16 - lsrs r5, r2, 16 - movs r3, 0 - movs r1, 0 -_080BA7AE: - mov r2, sp - adds r0, r2, r3 - strb r1, [r0] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xA - bls _080BA7AE - mov r0, sp - movs r1, 0xFF - strb r1, [r0, 0xA] - movs r3, 0 - ldrb r0, [r4] - lsls r2, r6, 24 - lsls r5, 24 - cmp r0, 0xFF - beq _080BA7EC -_080BA7D0: - mov r0, sp - adds r1, r0, r3 - adds r0, r4, r3 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - adds r0, r4, r3 - ldrb r0, [r0] - cmp r0, 0xFF - beq _080BA7EC - cmp r3, 0x9 - bls _080BA7D0 -_080BA7EC: - lsrs r1, r2, 24 - lsrs r2, r5, 24 - mov r0, sp - bl MenuPrint - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80BA79C - - thumb_func_start sub_80BA800 -sub_80BA800: @ 80BA800 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xCC - lsls r0, 24 - str r0, [sp, 0xB0] - lsrs r2, r0, 24 - str r2, [sp, 0xAC] - ldr r1, _080BA9E8 @ =gUnknown_083D0312 - mov r0, sp - movs r2, 0xA - bl memcpy - mov r0, sp - adds r0, 0xC - str r0, [sp, 0xB4] - ldr r1, _080BA9EC @ =gUnknown_083D031C - movs r2, 0xB - bl memcpy - mov r2, sp - adds r2, 0x18 - str r2, [sp, 0xB8] - ldr r1, _080BA9F0 @ =gDebugText_Voice - adds r0, r2, 0 - movs r2, 0xA - bl memcpy - mov r0, sp - adds r0, 0x24 - str r0, [sp, 0xBC] - ldr r1, _080BA9F4 @ =gDebugText_Volume - movs r2, 0xA - bl memcpy - mov r2, sp - adds r2, 0x30 - str r2, [sp, 0xC0] - ldr r1, _080BA9F8 @ =gDebugText_Panpot - adds r0, r2, 0 - movs r2, 0xA - bl memcpy - mov r0, sp - adds r0, 0x3C - str r0, [sp, 0xC4] - ldr r1, _080BA9FC @ =gDebugText_Pitch - movs r2, 0xA - bl memcpy - mov r2, sp - adds r2, 0x48 - str r2, [sp, 0xC8] - ldr r1, _080BAA00 @ =gDebugText_Length - adds r0, r2, 0 - movs r2, 0xA - bl memcpy - add r4, sp, 0x54 - ldr r1, _080BAA04 @ =gDebugText_Release - adds r0, r4, 0 - movs r2, 0xA - bl memcpy - add r7, sp, 0x60 - ldr r1, _080BAA08 @ =gDebugText_Progress - adds r0, r7, 0 - movs r2, 0xA - bl memcpy - add r0, sp, 0x6C - mov r10, r0 - ldr r1, _080BAA0C @ =gDebugText_Chorus - movs r2, 0xA - bl memcpy - add r2, sp, 0x78 - mov r9, r2 - ldr r1, _080BAA10 @ =gDebugText_Priority - mov r0, r9 - movs r2, 0xA - bl memcpy - add r0, sp, 0x84 - mov r8, r0 - ldr r1, _080BAA14 @ =gUnknown_083D0381 - movs r2, 0x9 - bl memcpy - add r6, sp, 0x90 - ldr r1, _080BAA18 @ =gUnknown_083D038A - adds r0, r6, 0 - movs r2, 0x9 - bl memcpy - add r5, sp, 0x9C - ldr r1, _080BAA1C @ =gUnknown_083D0393 - adds r0, r5, 0 - movs r2, 0x9 - bl memcpy - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xC5 - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - mov r0, sp - movs r1, 0x13 - movs r2, 0x4 - bl MenuPrint - ldr r0, [sp, 0xB4] - movs r1, 0x13 - movs r2, 0x2 - bl MenuPrint - ldr r0, [sp, 0xB8] - movs r1, 0x2 - movs r2, 0x1 - bl MenuPrint - ldr r0, [sp, 0xBC] - movs r1, 0x2 - movs r2, 0x3 - bl MenuPrint - ldr r0, [sp, 0xC0] - movs r1, 0x2 - movs r2, 0x5 - bl MenuPrint - ldr r0, [sp, 0xC4] - movs r1, 0x2 - movs r2, 0x7 - bl MenuPrint - ldr r0, [sp, 0xC8] - movs r1, 0x2 - movs r2, 0x9 - bl MenuPrint - adds r0, r4, 0 - movs r1, 0x2 - movs r2, 0xB - bl MenuPrint - adds r0, r7, 0 - movs r1, 0x2 - movs r2, 0xD - bl MenuPrint - mov r0, r10 - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - mov r0, r9 - movs r1, 0x2 - movs r2, 0x11 - bl MenuPrint - mov r0, r8 - movs r1, 0x13 - movs r2, 0x10 - bl MenuPrint - adds r0, r6, 0 - movs r1, 0x13 - movs r2, 0xE - bl MenuPrint - adds r0, r5, 0 - movs r1, 0x13 - movs r2, 0xC - bl MenuPrint - ldr r1, _080BAA20 @ =REG_WIN0H - movs r0, 0xF0 - strh r0, [r1] - adds r1, 0x4 - movs r0, 0xA0 - strh r0, [r1] - ldr r0, _080BAA24 @ =gUnknown_020387B3 - movs r1, 0 - strb r1, [r0] - ldr r0, _080BAA28 @ =gUnknown_020387B1 - strb r1, [r0] - ldr r0, _080BAA2C @ =gUnknown_020387B2 - strb r1, [r0] - ldr r0, _080BAA30 @ =gUnknown_03005D30 - movs r2, 0 - str r2, [r0] - ldr r0, _080BAA34 @ =gUnknown_020387D8 - strb r2, [r0] - ldr r1, _080BAA38 @ =gUnknown_020387D9 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _080BAA3C @ =gUnknown_020387B4 - str r2, [r0] - movs r1, 0x78 - str r1, [r0, 0x4] - str r2, [r0, 0x8] - movs r1, 0xF0 - lsls r1, 6 - str r1, [r0, 0xC] - movs r1, 0xB4 - str r1, [r0, 0x10] - str r2, [r0, 0x18] - str r2, [r0, 0x14] - str r2, [r0, 0x1C] - movs r1, 0x2 - str r1, [r0, 0x20] - bl sub_80BAD5C - movs r0, 0 - movs r1, 0 - bl sub_80BAE10 - ldr r1, _080BAA40 @ =gTasks - ldr r2, [sp, 0xAC] - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BAA44 @ =sub_80BAA48 - str r1, [r0] - add sp, 0xCC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BA9E8: .4byte gUnknown_083D0312 -_080BA9EC: .4byte gUnknown_083D031C -_080BA9F0: .4byte gDebugText_Voice -_080BA9F4: .4byte gDebugText_Volume -_080BA9F8: .4byte gDebugText_Panpot -_080BA9FC: .4byte gDebugText_Pitch -_080BAA00: .4byte gDebugText_Length -_080BAA04: .4byte gDebugText_Release -_080BAA08: .4byte gDebugText_Progress -_080BAA0C: .4byte gDebugText_Chorus -_080BAA10: .4byte gDebugText_Priority -_080BAA14: .4byte gUnknown_083D0381 -_080BAA18: .4byte gUnknown_083D038A -_080BAA1C: .4byte gUnknown_083D0393 -_080BAA20: .4byte REG_WIN0H -_080BAA24: .4byte gUnknown_020387B3 -_080BAA28: .4byte gUnknown_020387B1 -_080BAA2C: .4byte gUnknown_020387B2 -_080BAA30: .4byte gUnknown_03005D30 -_080BAA34: .4byte gUnknown_020387D8 -_080BAA38: .4byte gUnknown_020387D9 -_080BAA3C: .4byte gUnknown_020387B4 -_080BAA40: .4byte gTasks -_080BAA44: .4byte sub_80BAA48 - thumb_func_end sub_80BA800 - thumb_func_start sub_80BAA48 sub_80BAA48: @ 80BAA48 push {r4,r5,lr} @@ -1146,7 +683,7 @@ sub_80BAF84: @ 80BAF84 movs r2, 0x4 bl memcpy add r5, sp, 0x8 - ldr r1, _080BB024 @ =gUnknown_083D0381 + ldr r1, _080BB024 @ =gDebugText_Playing adds r0, r5, 0 movs r2, 0x9 bl memcpy @@ -1202,7 +739,7 @@ sub_80BAF84: @ 80BAF84 .align 2, 0 _080BB01C: .4byte gOtherText_SE _080BB020: .4byte gOtherText_Pan -_080BB024: .4byte gUnknown_083D0381 +_080BB024: .4byte gDebugText_Playing _080BB028: .4byte REG_WIN0H _080BB02C: .4byte gUnknown_020387B4 _080BB030: .4byte gTasks diff --git a/data/sound_check_menu.s b/data/sound_check_menu.s index 6e4702ae3..9278b8b45 100644 --- a/data/sound_check_menu.s +++ b/data/sound_check_menu.s @@ -34,11 +34,11 @@ gUnknown_083D0300:: @ 83D0300 .byte 1, 15 .byte 1, 17 -gUnknown_083D0312:: @ 83D0312 - .string "Bぼたんで もどる$" +gDebugText_BBack:: @ 83D0312 + .string "Bぼたんで もどる$" @ back -gUnknown_083D031C:: @ 83D031C - .string "Aぼたんで さいせい$" +gDebugText_APlay:: @ 83D031C + .string "Aぼたんで さいせい$" @ play gDebugText_Voice:: @ 83D0327 .string "VOICE‥‥‥‥$" @@ -67,13 +67,13 @@ gDebugText_Chorus:: @ 83D036D gDebugText_Priority:: @ 83D0377 .string "PRIORITY‥$" -gUnknown_083D0381:: @ 83D0381 +gDebugText_Playing:: @ 83D0381 .string "さいせいちゆう‥$" @ 再生中 (playing) -gUnknown_083D038A:: @ 83D038A +gDebugText_Reverse:: @ 83D038A .string "はんてん‥‥‥‥$" @ 反転 (reverse) -gUnknown_083D0393:: @ 83D0393 +gDebugText_Stereo:: @ 83D0393 .string "すてれお‥‥‥‥$" @ stereo .align 2 diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index 75cf48798..a46e7e363 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -7,22 +7,51 @@ #include "text.h" #include "menu.h" #include "songs.h" +#include "title_screen.h" // local task defines -#define UNK_DATA0 data[0] +#define WINDOW_SELECTED data[0] #define BGM_INDEX data[1] #define SE_INDEX data[2] #define UNK_DATA3 data[3] +// window selections +enum +{ + BGM_WINDOW, + SE_WINDOW +}; + extern void sub_80BA6B8(u8); -extern void sub_80BA700(u16, u8, u8); -extern void sub_80BA79C(u8 *, u8, u8); -extern void sub_80BA65C(u8); extern void sub_80BA800(u8); extern void sub_80BAF84(u8); extern void sub_80BB25C(u8); extern void sub_80BA68C(u8); +extern void sub_80BAD5C(void); +extern void sub_80BAE10(u8, u8); +extern void sub_80BAA48(u8); + +struct Struct_20387B4 +{ + u32 unk0; + u32 unk4; + u32 unk8; + u32 unkC; + u32 unk10; + u32 unk14; + u32 unk18; + u32 unk1C; + u32 unk20; +}; + +extern struct Struct_20387B4 gUnknown_020387B4; +extern u8 gUnknown_020387B3; +extern u8 gUnknown_020387B1; +extern u8 gUnknown_020387B2; +extern u32 gUnknown_03005D30; +extern u8 gUnknown_020387D8; +extern u8 gUnknown_020387D9; extern u8 gUnknown_020387B0; extern u8 *gBGMNames[]; @@ -34,9 +63,26 @@ extern u8 gDebugText_SE[]; extern u8 gDebugText_ABDesc[]; extern u8 gDebugText_UpDown[]; extern u8 gDebugText_DriverTest[]; +extern u8 gDebugText_BBack[]; +extern u8 gDebugText_APlay[]; +extern u8 gDebugText_Voice[]; +extern u8 gDebugText_Volume[]; +extern u8 gDebugText_Panpot[]; +extern u8 gDebugText_Pitch[]; +extern u8 gDebugText_Length[]; +extern u8 gDebugText_Release[]; +extern u8 gDebugText_Progress[]; +extern u8 gDebugText_Chorus[]; +extern u8 gDebugText_Priority[]; +extern u8 gDebugText_Playing[]; +extern u8 gDebugText_Reverse[]; +extern u8 gDebugText_Stereo[]; void sub_80BA258(u8); void sub_80BA384(u8); +void sub_80BA65C(u8); +void sub_80BA700(u16, u16, u16); +void sub_80BA79C(u8 *, u16, u16); void sub_80BA0A8(void) { @@ -101,7 +147,7 @@ void CB2_StartSoundCheckMenu(void) SetMainCallback2(sub_80BA0A8); REG_DISPCNT = 0x7140; taskId = CreateTask(sub_80BA258, 0); - TASK.UNK_DATA0 = 0; + TASK.WINDOW_SELECTED = BGM_WINDOW; TASK.BGM_INDEX = 0; TASK.SE_INDEX = 0; TASK.UNK_DATA3 = 0; @@ -146,9 +192,9 @@ void sub_80BA258(u8 taskId) } } -void sub_80BA384(u8 taskId) +void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText { - sub_80BA6B8(TASK.UNK_DATA0); + sub_80BA6B8(TASK.WINDOW_SELECTED); sub_80BA700(TASK.BGM_INDEX + BGM_STOP, 7, 8); // print by BGM index sub_80BA79C(gBGMNames[TASK.BGM_INDEX], 11, 8); sub_80BA700(TASK.SE_INDEX, 7, 15); @@ -157,7 +203,7 @@ void sub_80BA384(u8 taskId) } #ifdef NONMATCHING -bool8 sub_80BA400(u8 taskId) +bool8 sub_80BA400(u8 taskId) // Task_ProcessSoundCheckMenuInput { if(gMain.newKeys & R_BUTTON) // driver test { @@ -198,6 +244,7 @@ bool8 sub_80BA400(u8 taskId) // _080BA4C4 m4aSongNumStart(gTasks[taskId].data[2]); gTasks[taskId].data[4] = gTasks[taskId].data[2]; + return FALSE; } else // _080BA4D0 { @@ -620,3 +667,149 @@ _080BA658: .4byte gUnknown_020387B0\n\ .syntax divided"); } #endif + +void sub_80BA65C(u8 taskId) +{ + if(sub_80BA400(taskId) != FALSE) + gTasks[taskId].func = sub_80BA384; +} + +void sub_80BA68C(u8 taskId) +{ + if(!gPaletteFade.active) + { + DestroyTask(taskId); + SetMainCallback2(CB2_InitTitleScreen); + } +} + +void sub_80BA6B8(u8 windowType) +{ + switch(windowType) + { + case BGM_WINDOW: + default: + REG_WIN1H = 0x11DF; + REG_WIN1V = 0x2957; + break; + case SE_WINDOW: + REG_WIN1H = 0x11DF; + REG_WIN1V = 0x618F; + break; + } +} + +void sub_80BA700(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? +{ + u8 i; + u8 str[5]; + bool8 someBool; + u8 divisorValue; + + for(i = 0; i < 3; i++) + str[i] = 0; // initialize array + + str[3] = 0xB0; + str[4] = 0xFF; + someBool = FALSE; + + divisorValue = soundIndex / 100; + if(divisorValue) + { + str[0] = divisorValue + 0xA1; + someBool = TRUE; + } + + divisorValue = (soundIndex % 100) / 10; + if(divisorValue || someBool != FALSE) + str[1] = divisorValue + 0xA1; + + str[2] = ((soundIndex % 100) % 10) + 0xA1; + MenuPrint(str, x, y); +} + +void sub_80BA79C(u8 *string, u16 x, u16 y) +{ + u8 i; + u8 str[11]; + + for(i = 0; i < 11; i++) + str[i] = 0; // format string. + + str[10] = 0xFF; // the above for loop formats the last element of the array unnecessarily. + + for(i = 0; string[i] != 0xFF && i < 10; i++) + str[i] = string[i]; + + MenuPrint(str, x, y); +} + +void sub_80BA800(u8 taskId) +{ + u8 bbackStr[10]; + u8 aplayStr[11]; + u8 voiceStr[10]; + u8 volumeStr[10]; + u8 panpotStr[10]; + u8 pitchStr[10]; + u8 lengthStr[10]; + u8 releaseStr[10]; + u8 progressStr[10]; + u8 chorusStr[10]; + u8 priorityStr[10]; + u8 playingStr[9]; + u8 reverseStr[9]; + u8 stereoStr[9]; + + memcpy(bbackStr, gDebugText_BBack, sizeof bbackStr); + memcpy(aplayStr, gDebugText_APlay, sizeof aplayStr); + memcpy(voiceStr, gDebugText_Voice, sizeof voiceStr); + memcpy(volumeStr, gDebugText_Volume, sizeof volumeStr); + memcpy(panpotStr, gDebugText_Panpot, sizeof panpotStr); + memcpy(pitchStr, gDebugText_Pitch, sizeof pitchStr); + memcpy(lengthStr, gDebugText_Length, sizeof lengthStr); + memcpy(releaseStr, gDebugText_Release, sizeof releaseStr); + memcpy(progressStr, gDebugText_Progress, sizeof progressStr); + memcpy(chorusStr, gDebugText_Chorus, sizeof chorusStr); + memcpy(priorityStr, gDebugText_Priority, sizeof priorityStr); + memcpy(playingStr, gDebugText_Playing, sizeof playingStr); + memcpy(reverseStr, gDebugText_Reverse, sizeof reverseStr); + memcpy(stereoStr, gDebugText_Stereo, sizeof stereoStr); + + REG_DISPCNT = 0x3140; + MenuDrawTextWindow(0, 0, 0x1D, 0x13); + MenuPrint(bbackStr, 0x13, 0x4); + MenuPrint(aplayStr, 0x13, 0x2); + MenuPrint(voiceStr, 0x2, 0x1); + MenuPrint(volumeStr, 0x2, 0x3); + MenuPrint(panpotStr, 0x2, 0x5); + MenuPrint(pitchStr, 0x2, 0x7); + MenuPrint(lengthStr, 0x2, 0x9); + MenuPrint(releaseStr, 0x2, 0xB); + MenuPrint(progressStr, 0x2, 0xD); + MenuPrint(chorusStr, 0x2, 0xF); + MenuPrint(priorityStr, 0x2, 0x11); + MenuPrint(playingStr, 0x13, 0x10); + MenuPrint(reverseStr, 0x13, 0xE); + MenuPrint(stereoStr, 0x13, 0xC); + REG_WIN0H = 0xF0; + REG_WIN0V = 0xA0; + gUnknown_020387B3 = 0; + gUnknown_020387B1 = 0; + gUnknown_020387B2 = 0; + gUnknown_03005D30 = 0; + gUnknown_020387D8 = 0; + gUnknown_020387D9 = 1; + gUnknown_020387B4.unk0 = 0; + gUnknown_020387B4.unk4 = 0x78; + gUnknown_020387B4.unk8 = 0; + gUnknown_020387B4.unkC = 0x3C00; + gUnknown_020387B4.unk10 = 0xB4; + gUnknown_020387B4.unk18 = 0; + gUnknown_020387B4.unk14 = 0; + gUnknown_020387B4.unk1C = 0; + gUnknown_020387B4.unk20 = 2; + sub_80BAD5C(); + sub_80BAE10(0, 0); + gTasks[taskId].func = sub_80BAA48; +} -- cgit v1.2.3 From 9cc199f064aa2f5a8e188dfe805a511c2c92c4fa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Jun 2017 21:48:30 -0400 Subject: stupid sub_8069D34 --- asm/field_tasks.s | 69 ------------------------------------------------ include/vars.h | 9 +++++++ src/field_tasks.c | 79 ++++++++++++++++++++++++++++++++++++------------------- 3 files changed, 61 insertions(+), 96 deletions(-) mode change 100644 => 100755 include/vars.h diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 83e0a8371..ab4d75609 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,75 +6,6 @@ .text - thumb_func_start sub_8069CFC -sub_8069CFC: @ 8069CFC - push {r4,r5,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - asrs r4, r1, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8069CB8 - cmp r0, 0 - beq _08069D2A - ldr r1, _08069D30 @ =gUnknown_083763E4 - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - bl GetVarPointer - subs r2, r5, 0x3 - movs r1, 0x1 - lsls r1, r2 - ldrh r2, [r0] - orrs r1, r2 - strh r1, [r0] -_08069D2A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08069D30: .4byte gUnknown_083763E4 - thumb_func_end sub_8069CFC - - thumb_func_start sub_8069D34 -sub_8069D34: @ 8069D34 - push {r4,r5,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - asrs r4, r1, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8069CB8 - cmp r0, 0 - beq _08069D66 - ldr r1, _08069D6C @ =gUnknown_083763E4 - lsls r0, r4, 1 - adds r0, r1 - ldrh r0, [r0] - bl VarGet - lsls r0, 16 - subs r2, r5, 0x3 - movs r1, 0x80 - lsls r1, 9 - lsls r1, r2 - ands r1, r0 - cmp r1, 0 - bne _08069D70 -_08069D66: - movs r0, 0 - b _08069D72 - .align 2, 0 -_08069D6C: .4byte gUnknown_083763E4 -_08069D70: - movs r0, 0x1 -_08069D72: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8069D34 - thumb_func_start sub_8069D78 sub_8069D78: @ 8069D78 push {r4-r7,lr} diff --git a/include/vars.h b/include/vars.h old mode 100644 new mode 100755 index cb5bb3296..eb527ec09 --- a/include/vars.h +++ b/include/vars.h @@ -1,7 +1,16 @@ #ifndef GUARD_VARS_H #define GUARD_VARS_H +#define VAR_0x4001 0x4001 +#define VAR_0x4002 0x4002 #define VAR_0x4003 0x4003 +#define VAR_0x4004 0x4004 +#define VAR_0x4005 0x4005 +#define VAR_0x4006 0x4006 +#define VAR_0x4007 0x4007 +#define VAR_0x4008 0x4008 +#define VAR_0x4009 0x4009 +#define VAR_0x400A 0x400A #define VAR_0x401F 0x401F #define VAR_RECYCLE_GOODS 0x4020 #define VAR_REPEL_STEP_COUNT 0x4021 diff --git a/src/field_tasks.c b/src/field_tasks.c index 88dd025cc..92b8d3bb8 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -5,6 +5,8 @@ #include "global.h" #include "task.h" #include "main.h" +#include "vars.h" +#include "event_data.h" #include "rom4.h" #include "clock.h" #include "script.h" @@ -537,35 +539,35 @@ void PerStepCallback_8069AA0(u8 taskId) } const u16 gUnknown_083763E4[] = { - 0, - 0, - 0, - 0, - 0, - 0, - 0x4001, - 0x4002, - 0x4003, - 0x4004, - 0, - 0, - 0x4005, - 0x4006, - 0x4007, - 0, - 0, - 0x4008, - 0x4009, - 0x400A, - 0, - 0, - 0, - 0, - 0, - 0 + 0, + 0, + 0, + 0, + 0, + 0, + VAR_0x4001, + VAR_0x4002, + VAR_0x4003, + VAR_0x4004, + 0, + 0, + VAR_0x4005, + VAR_0x4006, + VAR_0x4007, + 0, + 0, + VAR_0x4008, + VAR_0x4009, + VAR_0x400A, + 0, + 0, + 0, + 0, + 0, + 0 }; -bool8 sub_8069CB8(s16 x, s16 y) +bool32 sub_8069CB8(s16 x, s16 y) { if ((u16)(x - 3) < 11 && (u16)(y - 6) < 14 && gUnknown_083763E4[y]) { @@ -573,3 +575,26 @@ bool8 sub_8069CB8(s16 x, s16 y) } return FALSE; } + +void sub_8069CFC(s16 x, s16 y) +{ + if (sub_8069CB8(x, y)) + { + *GetVarPointer(gUnknown_083763E4[y]) |= (1 << (x - 3)); + } +} + +bool32 sub_8069D34(s16 x, s16 y) +{ + u32 var; + if (!sub_8069CB8(x, y)) + { + return FALSE; + } + var = VarGet(gUnknown_083763E4[y]) << 16; + if (((1 << 16) << (x - 3)) & var) + { + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From e8acc9564ef11ca8f7d20b1ed1fbd34e6850e2a3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Jun 2017 21:53:54 -0400 Subject: sub_8069D78 --- asm/field_tasks.s | 52 ---------------------------------------------------- src/field_tasks.c | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 52 deletions(-) diff --git a/asm/field_tasks.s b/asm/field_tasks.s index ab4d75609..ab6b9c8c6 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,58 +6,6 @@ .text - thumb_func_start sub_8069D78 -sub_8069D78: @ 8069D78 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08069DCC @ =gMapHeader - ldr r0, [r0] - ldr r1, [r0] - mov r9, r1 - ldr r7, [r0, 0x4] - movs r5, 0 - cmp r5, r9 - bge _08069DC0 -_08069D90: - movs r4, 0 - adds r0, r5, 0x1 - mov r8, r0 - cmp r4, r7 - bge _08069DBA - lsls r6, r5, 16 -_08069D9C: - lsls r1, r4, 16 - asrs r1, 16 - asrs r0, r6, 16 - bl sub_8069D34 - cmp r0, 0x1 - bne _08069DB4 - adds r1, r4, 0x7 - adds r0, r5, 0x7 - ldr r2, _08069DD0 @ =0x0000020e - bl MapGridSetMetatileIdAt -_08069DB4: - adds r4, 0x1 - cmp r4, r7 - blt _08069D9C -_08069DBA: - mov r5, r8 - cmp r5, r9 - blt _08069D90 -_08069DC0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08069DCC: .4byte gMapHeader -_08069DD0: .4byte 0x0000020e - thumb_func_end sub_8069D78 - thumb_func_start PerStepCallback_8069DD4 PerStepCallback_8069DD4: @ 8069DD4 push {r4-r7,lr} diff --git a/src/field_tasks.c b/src/field_tasks.c index 92b8d3bb8..cc87a201e 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -598,3 +598,20 @@ bool32 sub_8069D34(s16 x, s16 y) } return FALSE; } + +void sub_8069D78(void) +{ + s32 x, y; + s32 width = gMapHeader.mapData->width; + s32 height = gMapHeader.mapData->height; + for (x=0; x Date: Mon, 26 Jun 2017 22:15:36 -0400 Subject: PerStepCallback_8069DD4 --- asm/field_tasks.s | 202 ------------------------------------------------------ src/field_tasks.c | 74 ++++++++++++++++++++ 2 files changed, 74 insertions(+), 202 deletions(-) diff --git a/asm/field_tasks.s b/asm/field_tasks.s index ab6b9c8c6..6549ea29d 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,208 +6,6 @@ .text - thumb_func_start PerStepCallback_8069DD4 -PerStepCallback_8069DD4: @ 8069DD4 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08069DF8 @ =gTasks + 0x8 - adds r5, r1, r0 - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _08069E20 - cmp r0, 0x1 - bgt _08069DFC - cmp r0, 0 - beq _08069E08 - b _08069F56 - .align 2, 0 -_08069DF8: .4byte gTasks + 0x8 -_08069DFC: - cmp r0, 0x2 - beq _08069EB6 - cmp r0, 0x3 - bne _08069E06 - b _08069F10 -_08069E06: - b _08069F56 -_08069E08: - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x4] - ldrh r0, [r4] - strh r0, [r5, 0x6] - b _08069F52 -_08069E20: - mov r7, sp - adds r7, 0x2 - mov r0, sp - adds r1, r7, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0x4 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _08069E4A - movs r0, 0 - ldrsh r1, [r7, r0] - movs r3, 0x6 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _08069E4A - b _08069F56 -_08069E4A: - strh r2, [r5, 0x4] - ldrh r0, [r7] - strh r0, [r5, 0x6] - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r7, r2] - bl MapGridGetMetatileBehaviorAt - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08069E8C @ =0x00004022 - bl GetVarPointer - adds r6, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsThinIce - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08069E90 - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - movs r0, 0x4 - strh r0, [r5, 0xC] - movs r0, 0x2 - b _08069EA8 - .align 2, 0 -_08069E8C: .4byte 0x00004022 -_08069E90: - adds r0, r4, 0 - bl MetatileBehavior_IsCrackedIce - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08069F56 - movs r0, 0 - strh r0, [r6] - movs r0, 0x4 - strh r0, [r5, 0xC] - movs r0, 0x3 -_08069EA8: - strh r0, [r5, 0x2] - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x8] - ldrh r0, [r7] - strh r0, [r5, 0xA] - b _08069F56 -_08069EB6: - ldrh r1, [r5, 0xC] - movs r3, 0xC - ldrsh r0, [r5, r3] - cmp r0, 0 - bne _08069F1A - mov r1, sp - ldrh r0, [r5, 0x8] - strh r0, [r1] - mov r4, sp - adds r4, 0x2 - ldrh r0, [r5, 0xA] - strh r0, [r4] - movs r0, 0x2A - bl PlaySE - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _08069F0C @ =0x0000020e - bl MapGridSetMetatileIdAt - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt - mov r0, sp - ldrh r0, [r0] - subs r0, 0x7 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r4] - subs r1, 0x7 - lsls r1, 16 - asrs r1, 16 - bl sub_8069CFC - b _08069F52 - .align 2, 0 -_08069F0C: .4byte 0x0000020e -_08069F10: - ldrh r1, [r5, 0xC] - movs r3, 0xC - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _08069F20 -_08069F1A: - subs r0, r1, 0x1 - strh r0, [r5, 0xC] - b _08069F56 -_08069F20: - mov r1, sp - ldrh r0, [r5, 0x8] - strh r0, [r1] - mov r4, sp - adds r4, 0x2 - ldrh r0, [r5, 0xA] - strh r0, [r4] - movs r0, 0x29 - bl PlaySE - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _08069F60 @ =0x00000206 - bl MapGridSetMetatileIdAt - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt -_08069F52: - movs r0, 0x1 - strh r0, [r5, 0x2] -_08069F56: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08069F60: .4byte 0x00000206 - thumb_func_end PerStepCallback_8069DD4 - thumb_func_start PerStepCallback_8069F64 PerStepCallback_8069F64: @ 8069F64 push {r4,r5,lr} diff --git a/src/field_tasks.c b/src/field_tasks.c index cc87a201e..f68c6bbe4 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -615,3 +615,77 @@ void sub_8069D78(void) } } } + +void PerStepCallback_8069DD4(u8 taskId) +{ + s16 x, y; + u16 tileBehavior; + u16 *var; + s16 *data = gTasks[taskId].data; + switch (data[1]) + { + case 0: + PlayerGetDestCoords(&x, &y); + data[2] = x; + data[3] = y; + data[1] = 1; + break; + case 1: + PlayerGetDestCoords(&x, &y); + if (x != data[2] || y != data[3]) + { + data[2] = x; + data[3] = y; + tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + var = GetVarPointer(VAR_ICE_STEP_COUNT); + if (MetatileBehavior_IsThinIce(tileBehavior) == TRUE) + { + (*var)++; + data[6] = 4; + data[1] = 2; + data[4] = x; + data[5] = y; + } + else if (MetatileBehavior_IsCrackedIce(tileBehavior) == TRUE) + { + *var = 0; + data[6] = 4; + data[1] = 3; + data[4] = x; + data[5] = y; + } + } + break; + case 2: + if (data[6] != 0) + { + data[6]--; + } + else + { + x = data[4]; + y = data[5]; + PlaySE(SE_RU_BARI); + MapGridSetMetatileIdAt(x, y, 0x20e); + CurrentMapDrawMetatileAt(x, y); + sub_8069CFC(x - 7, y - 7); + data[1] = 1; + } + break; + case 3: + if (data[6] != 0) + { + data[6]--; + } + else + { + x = data[4]; + y = data[5]; + PlaySE(SE_RU_GASYAN); + MapGridSetMetatileIdAt(x, y, 0x206); + CurrentMapDrawMetatileAt(x, y); + data[1] = 1; + } + break; + } +} -- cgit v1.2.3 From 57a6a5e6564aec89ab45f2d4c3b911f59f7db210 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Jun 2017 22:26:02 -0400 Subject: PerStepCallback_8069F64 --- asm/field_tasks.s | 105 ----------------------------------------- include/field_effect_helpers.h | 1 + src/field_tasks.c | 35 ++++++++++++++ 3 files changed, 36 insertions(+), 105 deletions(-) mode change 100644 => 100755 include/field_effect_helpers.h diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 6549ea29d..a1541d822 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,111 +6,6 @@ .text - thumb_func_start PerStepCallback_8069F64 -PerStepCallback_8069F64: @ 8069F64 - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08069FE8 @ =gTasks + 0x8 - adds r5, r1, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0x2 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _08069F9E - movs r0, 0 - ldrsh r1, [r4, r0] - movs r3, 0x4 - ldrsh r0, [r5, r3] - cmp r1, r0 - beq _0806A02A -_08069F9E: - strh r2, [r5, 0x2] - ldrh r0, [r4] - strh r0, [r5, 0x4] - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsAshGrass - lsls r0, 24 - cmp r0, 0 - beq _0806A02A - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileIdAt - ldr r1, _08069FEC @ =0x0000020a - cmp r0, r1 - bne _08069FF4 - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _08069FF0 @ =0x00000212 - movs r3, 0x4 - bl ash - b _0806A006 - .align 2, 0 -_08069FE8: .4byte gTasks + 0x8 -_08069FEC: .4byte 0x0000020a -_08069FF0: .4byte 0x00000212 -_08069FF4: - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _0806A034 @ =0x00000206 - movs r3, 0x4 - bl ash -_0806A006: - movs r0, 0x87 - lsls r0, 1 - movs r1, 0x1 - bl CheckBagHasItem - lsls r0, 24 - cmp r0, 0 - beq _0806A02A - ldr r0, _0806A038 @ =0x00004048 - bl GetVarPointer - adds r2, r0, 0 - ldrh r1, [r2] - ldr r0, _0806A03C @ =0x0000270e - cmp r1, r0 - bhi _0806A02A - adds r0, r1, 0x1 - strh r0, [r2] -_0806A02A: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806A034: .4byte 0x00000206 -_0806A038: .4byte 0x00004048 -_0806A03C: .4byte 0x0000270e - thumb_func_end PerStepCallback_8069F64 - thumb_func_start sub_806A040 sub_806A040: @ 806A040 push {r4,r5,lr} diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h old mode 100644 new mode 100755 index 56838fc3a..895d861e2 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h @@ -9,5 +9,6 @@ void sub_8126BC4(u8 unk_1B, u8 r6, s16 x, s16 y); void sub_8127ED0(u8, u8); void sub_8127F28(u8, u8, s16); u8 sub_8128124(u8 id); +void ash(s16, s16, u16, u8); #endif // GUARD_FIELD_EFFECT_HELPERS_H diff --git a/src/field_tasks.c b/src/field_tasks.c index f68c6bbe4..ea70cf227 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -6,11 +6,14 @@ #include "task.h" #include "main.h" #include "vars.h" +#include "item.h" +#include "items.h" #include "event_data.h" #include "rom4.h" #include "clock.h" #include "script.h" #include "field_special_scene.h" +#include "field_effect_helpers.h" #include "secret_base.h" #include "metatile_behavior.h" #include "fieldmap.h" @@ -689,3 +692,35 @@ void PerStepCallback_8069DD4(u8 taskId) break; } } + +void PerStepCallback_8069F64(u8 taskId) +{ + s16 x, y; + u16 *var; + s16 *data = gTasks[taskId].data; + PlayerGetDestCoords(&x, &y); + if (x != data[1] || y != data[2]) + { + data[1] = x; + data[2] = y; + if (MetatileBehavior_IsAshGrass(MapGridGetMetatileBehaviorAt(x, y))) + { + if (MapGridGetMetatileIdAt(x, y) == 0x20a) + { + ash(x, y, 0x212, 4); + } + else + { + ash(x, y, 0x206, 4); + } + if (CheckBagHasItem(ITEM_SOOT_SACK, 1)) + { + var = GetVarPointer(VAR_ASH_GATHER_COUNT); + if (*var < 9999) + { + (*var)++; + } + } + } + } +} -- cgit v1.2.3 From 2c4dc3b5be3b45a50387b1b0677d8f4b64391575 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 26 Jun 2017 22:32:18 -0400 Subject: sub_806A040 --- asm/field_tasks.s | 30 ------------------------------ src/field_tasks.c | 6 ++++++ 2 files changed, 6 insertions(+), 30 deletions(-) diff --git a/asm/field_tasks.s b/asm/field_tasks.s index a1541d822..188b67c64 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,36 +6,6 @@ .text - thumb_func_start sub_806A040 -sub_806A040: @ 806A040 - push {r4,r5,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - asrs r4, r1, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl MapGridGetMetatileIdAt - ldr r1, _0806A074 @ =0x0000022f - ldr r2, _0806A078 @ =0x00000237 - cmp r0, r1 - bne _0806A05C - subs r2, 0x31 -_0806A05C: - adds r0, r5, 0 - adds r1, r4, 0 - bl MapGridSetMetatileIdAt - adds r0, r5, 0 - adds r1, r4, 0 - bl CurrentMapDrawMetatileAt - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806A074: .4byte 0x0000022f -_0806A078: .4byte 0x00000237 - thumb_func_end sub_806A040 - thumb_func_start PerStepCallback_806A07C PerStepCallback_806A07C: @ 806A07C push {r4-r7,lr} diff --git a/src/field_tasks.c b/src/field_tasks.c index ea70cf227..021f2c070 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -724,3 +724,9 @@ void PerStepCallback_8069F64(u8 taskId) } } } + +void sub_806A040(s16 x, s16 y) +{ + MapGridSetMetatileIdAt(x, y, MapGridGetMetatileIdAt(x, y) == 0x22f ? 0x206 : 0x237); + CurrentMapDrawMetatileAt(x, y); +} -- cgit v1.2.3 From a3c3267a9c915f86b986df90e747e12a90bcf5b5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Jun 2017 08:26:08 -0400 Subject: PerStepCallback_806A07C --- asm/field_tasks.s | 135 ------------------------------------------------------ src/field_tasks.c | 46 +++++++++++++++++++ 2 files changed, 46 insertions(+), 135 deletions(-) diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 188b67c64..99c54a0d4 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,141 +6,6 @@ .text - thumb_func_start PerStepCallback_806A07C -PerStepCallback_806A07C: @ 806A07C - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0806A164 @ =gTasks + 0x8 - adds r5, r1, r0 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 16 - lsrs r6, r0, 16 - ldrh r1, [r5, 0x8] - movs r3, 0x8 - ldrsh r0, [r5, r3] - adds r7, r4, 0 - cmp r0, 0 - beq _0806A0CE - subs r0, r1, 0x1 - strh r0, [r5, 0x8] - lsls r0, 16 - cmp r0, 0 - bne _0806A0CE - movs r1, 0xA - ldrsh r0, [r5, r1] - movs r2, 0xC - ldrsh r1, [r5, r2] - bl sub_806A040 -_0806A0CE: - ldrh r1, [r5, 0xE] - movs r3, 0xE - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _0806A0EE - subs r0, r1, 0x1 - strh r0, [r5, 0xE] - lsls r0, 16 - cmp r0, 0 - bne _0806A0EE - movs r1, 0x10 - ldrsh r0, [r5, r1] - movs r2, 0x12 - ldrsh r1, [r5, r2] - bl sub_806A040 -_0806A0EE: - lsls r0, r6, 24 - lsrs r6, r0, 24 - adds r0, r6, 0 - bl MetatileBehavior_IsCrackedFloorHole - lsls r0, 24 - cmp r0, 0 - beq _0806A106 - ldr r0, _0806A168 @ =0x00004022 - movs r1, 0 - bl VarSet -_0806A106: - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0x4 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _0806A122 - movs r0, 0 - ldrsh r1, [r7, r0] - movs r3, 0x6 - ldrsh r0, [r5, r3] - cmp r1, r0 - beq _0806A182 -_0806A122: - strh r2, [r5, 0x4] - adds r4, r7, 0 - ldrh r0, [r4] - strh r0, [r5, 0x6] - adds r0, r6, 0 - bl MetatileBehavior_IsCrackedFloor - lsls r0, 24 - cmp r0, 0 - beq _0806A182 - bl GetPlayerSpeed - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - beq _0806A14A - ldr r0, _0806A168 @ =0x00004022 - movs r1, 0 - bl VarSet -_0806A14A: - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0806A16C - movs r0, 0x3 - strh r0, [r5, 0x8] - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0xA] - ldrh r0, [r4] - strh r0, [r5, 0xC] - b _0806A182 - .align 2, 0 -_0806A164: .4byte gTasks + 0x8 -_0806A168: .4byte 0x00004022 -_0806A16C: - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r0, 0 - bne _0806A182 - movs r0, 0x3 - strh r0, [r5, 0xE] - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x10] - ldrh r0, [r7] - strh r0, [r5, 0x12] -_0806A182: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end PerStepCallback_806A07C - thumb_func_start sub_806A18C sub_806A18C: @ 806A18C push {r4,r5,lr} diff --git a/src/field_tasks.c b/src/field_tasks.c index 021f2c070..653d3ffd9 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -6,6 +6,7 @@ #include "task.h" #include "main.h" #include "vars.h" +#include "bike.h" #include "item.h" #include "items.h" #include "event_data.h" @@ -730,3 +731,48 @@ void sub_806A040(s16 x, s16 y) MapGridSetMetatileIdAt(x, y, MapGridGetMetatileIdAt(x, y) == 0x22f ? 0x206 : 0x237); CurrentMapDrawMetatileAt(x, y); } + +void PerStepCallback_806A07C(u8 taskId) +{ + s16 x, y; + u16 behavior; + s16 *data = gTasks[taskId].data; + PlayerGetDestCoords(&x, &y); + behavior = MapGridGetMetatileBehaviorAt(x, y); + if (data[4] != 0 && (--data[4]) == 0) + { + sub_806A040(data[5], data[6]); + } + if (data[7] != 0 && (--data[7]) == 0) + { + sub_806A040(data[8], data[9]); + } + if (MetatileBehavior_IsCrackedFloorHole(behavior)) + { + VarSet(VAR_ICE_STEP_COUNT, 0); // this var does double duty + } + if ((x != data[2] || y != data[3])) + { + data[2] = x; + data[3] = y; + if (MetatileBehavior_IsCrackedFloor(behavior)) + { + if (GetPlayerSpeed() != 4) + { + VarSet(VAR_ICE_STEP_COUNT, 0); // this var does double duty + } + if (data[4] == 0) + { + data[4] = 3; + data[5] = x; + data[6] = y; + } + else if (data[7] == 0) + { + data[7] = 3; + data[8] = x; + data[9] = y; + } + } + } +} -- cgit v1.2.3 From 0687a65dc9b67d99d7bb8bdb656ce0c358a57f66 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Jun 2017 08:34:22 -0400 Subject: Through sub_806A18C --- asm/field_tasks.s | 50 -------------------------------------------------- data/field_tasks.s | 8 -------- ld_script.txt | 1 - src/field_tasks.c | 18 ++++++++++++++++++ 4 files changed, 18 insertions(+), 59 deletions(-) delete mode 100755 data/field_tasks.s diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 99c54a0d4..3b5eb1021 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,56 +6,6 @@ .text - thumb_func_start sub_806A18C -sub_806A18C: @ 806A18C - push {r4,r5,lr} - adds r3, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - lsls r2, 16 - lsrs r4, r2, 16 - ldrh r0, [r3] - subs r0, 0x1 - strh r0, [r3] - lsls r0, 16 - cmp r0, 0 - bne _0806A1A8 - movs r2, 0xE8 - b _0806A1BC -_0806A1A8: - ldr r1, _0806A1E4 @ =gUnknown_08376418 - movs r2, 0 - ldrsh r0, [r3, r2] - cmp r0, 0 - bge _0806A1B4 - adds r0, 0x7 -_0806A1B4: - asrs r0, 3 - lsls r0, 1 - adds r0, r1 - ldrh r2, [r0] -_0806A1BC: - lsls r5, 16 - asrs r5, 16 - lsls r4, 16 - asrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl MapGridSetMetatileIdAt - adds r0, r5, 0 - adds r1, r4, 0 - bl CurrentMapDrawMetatileAt - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0xE8 - bl MapGridSetMetatileIdAt - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806A1E4: .4byte gUnknown_08376418 - thumb_func_end sub_806A18C - thumb_func_start Task_MuddySlope Task_MuddySlope: @ 806A1E8 push {r4-r7,lr} diff --git a/data/field_tasks.s b/data/field_tasks.s deleted file mode 100755 index faaa12342..000000000 --- a/data/field_tasks.s +++ /dev/null @@ -1,8 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 1 -gUnknown_08376418:: @ 8376418 - .2byte 0xE8, 0xEB, 0xEA, 0xE9 diff --git a/ld_script.txt b/ld_script.txt index 16dbf689e..77f404893 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -362,7 +362,6 @@ SECTIONS { src/scrcmd.o(.rodata); src/coord_event_weather.o(.rodata); src/field_tasks.o(.rodata); - data/field_tasks.o(.rodata); data/reset_rtc_screen.o(.rodata); data/party_menu.o(.rodata); src/start_menu.o(.rodata); diff --git a/src/field_tasks.c b/src/field_tasks.c index 653d3ffd9..8ddef126b 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -776,3 +776,21 @@ void PerStepCallback_806A07C(u8 taskId) } } } + +const u16 gUnknown_08376418[] = {0xe8, 0xeb, 0xea, 0xe9}; + +void sub_806A18C(s16 *data, s16 x, s16 y) +{ + u16 tile; + if ((--data[0]) == 0) + { + tile = 0xe8; + } + else + { + tile = gUnknown_08376418[data[0] / 8]; + } + MapGridSetMetatileIdAt(x, y, tile); + CurrentMapDrawMetatileAt(x, y); + MapGridSetMetatileIdAt(x, y, 0xe8); +} -- cgit v1.2.3 From 41cc0382a43161c0c66ddaf73742ecec8dcbdcc6 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 27 Jun 2017 09:43:57 -0400 Subject: Finish decompiling field_tasks.s --- asm/field_tasks.s | 177 ------------------------------------------------- include/field_camera.h | 2 + ld_script.txt | 1 - src/field_tasks.c | 63 ++++++++++++++++++ 4 files changed, 65 insertions(+), 178 deletions(-) delete mode 100755 asm/field_tasks.s diff --git a/asm/field_tasks.s b/asm/field_tasks.s deleted file mode 100755 index 3b5eb1021..000000000 --- a/asm/field_tasks.s +++ /dev/null @@ -1,177 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start Task_MuddySlope -Task_MuddySlope: @ 806A1E8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _0806A230 @ =gTasks + 0x8 - adds r4, r1, r0 - mov r5, sp - adds r5, 0x2 - mov r0, sp - adds r1, r5, 0 - bl PlayerGetDestCoords - ldr r0, _0806A234 @ =gSaveBlock1 - movs r1, 0x4 - ldrsb r1, [r0, r1] - lsls r1, 8 - ldrb r0, [r0, 0x5] - lsls r0, 24 - asrs r0, 24 - orrs r0, r1 - lsls r0, 16 - lsrs r7, r0, 16 - movs r0, 0x2 - ldrsh r1, [r4, r0] - mov r8, r5 - cmp r1, 0 - beq _0806A238 - cmp r1, 0x1 - beq _0806A264 - b _0806A2B8 - .align 2, 0 -_0806A230: .4byte gTasks + 0x8 -_0806A234: .4byte gSaveBlock1 -_0806A238: - strh r7, [r4] - mov r0, sp - ldrh r0, [r0] - strh r0, [r4, 0x4] - ldrh r0, [r5] - strh r0, [r4, 0x6] - movs r0, 0x1 - strh r0, [r4, 0x2] - strh r1, [r4, 0x8] - strh r1, [r4, 0xE] - strh r1, [r4, 0x14] - strh r1, [r4, 0x1A] - b _0806A2B8 -_0806A252: - movs r0, 0x20 - strh r0, [r1] - mov r0, sp - ldrh r0, [r0] - strh r0, [r1, 0x2] - mov r2, r8 - ldrh r0, [r2] - strh r0, [r1, 0x4] - b _0806A2B8 -_0806A264: - mov r0, sp - movs r3, 0x4 - ldrsh r1, [r4, r3] - ldrh r2, [r0] - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r1, r0 - bne _0806A280 - movs r0, 0x6 - ldrsh r1, [r4, r0] - movs r3, 0 - ldrsh r0, [r5, r3] - cmp r1, r0 - beq _0806A2B8 -_0806A280: - strh r2, [r4, 0x4] - ldrh r0, [r5] - strh r0, [r4, 0x6] - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r5, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsMuddySlope - lsls r0, 24 - cmp r0, 0 - beq _0806A2B8 - movs r6, 0x4 - adds r1, r4, 0 - adds r1, 0x8 -_0806A2A8: - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0806A252 - adds r1, 0x6 - adds r6, 0x3 - cmp r6, 0xD - ble _0806A2A8 -_0806A2B8: - ldr r2, _0806A2D4 @ =gUnknown_0202E844 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0806A2D8 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r7, r0 - beq _0806A2D8 - strh r7, [r4] - ldrh r0, [r2, 0x4] - ldrh r1, [r2, 0x8] - b _0806A2DC - .align 2, 0 -_0806A2D4: .4byte gUnknown_0202E844 -_0806A2D8: - movs r0, 0 - movs r1, 0 -_0806A2DC: - lsls r0, 16 - asrs r0, 16 - mov r8, r0 - lsls r0, r1, 16 - asrs r7, r0, 16 - adds r5, r4, 0 - adds r5, 0x8 - adds r4, r5, 0 - movs r6, 0x9 -_0806A2EE: - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0806A312 - ldrh r0, [r4, 0x2] - mov r3, r8 - subs r0, r3 - strh r0, [r4, 0x2] - ldrh r0, [r4, 0x4] - subs r0, r7 - strh r0, [r4, 0x4] - movs r0, 0x2 - ldrsh r1, [r4, r0] - movs r3, 0x4 - ldrsh r2, [r4, r3] - adds r0, r5, 0 - bl sub_806A18C -_0806A312: - adds r4, 0x6 - adds r5, 0x6 - subs r6, 0x3 - cmp r6, 0 - bge _0806A2EE - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end Task_MuddySlope - - .align 2, 0 @ Don't pad with nop. diff --git a/include/field_camera.h b/include/field_camera.h index 9021b579e..4ce207541 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -11,6 +11,8 @@ struct CameraSomething s32 unk14; }; +extern struct Camera gUnknown_0202E844; + void move_tilemap_camera_to_upper_left_corner(void); void sub_8057A58(void); void sub_8057B14(u16 *a, u16 *b); diff --git a/ld_script.txt b/ld_script.txt index 77f404893..ba1b6f532 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -105,7 +105,6 @@ SECTIONS { src/event_data.o(.text); src/coord_event_weather.o(.text); src/field_tasks.o(.text); - asm/field_tasks.o(.text); src/clock.o(.text); asm/reset_rtc_screen.o(.text); asm/party_menu.o(.text); diff --git a/src/field_tasks.c b/src/field_tasks.c index 8ddef126b..caf2ce6b9 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -794,3 +794,66 @@ void sub_806A18C(s16 *data, s16 x, s16 y) CurrentMapDrawMetatileAt(x, y); MapGridSetMetatileIdAt(x, y, 0xe8); } + +void Task_MuddySlope(u8 taskId) +{ + s16 x, y, x2, y2; + int i; + u16 mapIndices; + s16 *data = gTasks[taskId].data; + PlayerGetDestCoords(&x, &y); + mapIndices = (gSaveBlock1.location.mapGroup << 8) | gSaveBlock1.location.mapNum; + switch (data[1]) + { + case 0: + data[0] = mapIndices; + data[2] = x; + data[3] = y; + data[1] = 1; + data[4] = 0; + data[7] = 0; + data[10] = 0; + data[13] = 0; + break; + case 1: + if (data[2] != x || data[3] != y) + { + data[2] = x; + data[3] = y; + if (MetatileBehavior_IsMuddySlope(MapGridGetMetatileBehaviorAt(x, y))) + { + for (i=4; i<14; i+=3) + { + if (data[i] == 0) + { + data[i] = 32; + data[i + 1] = x; + data[i + 2] = y; + break; + } + } + } + } + break; + } + if (gUnknown_0202E844.field_0 && mapIndices != data[0]) + { + data[0] = mapIndices; + x2 = gUnknown_0202E844.x; + y2 = gUnknown_0202E844.y; + } + else + { + x2 = 0; + y2 = 0; + } + for (i=4; i<14; i+=3) + { + if (data[i]) + { + data[i + 1] -= x2; + data[i + 2] -= y2; + sub_806A18C(&data[i], data[i + 1], data[i + 2]); + } + } +} -- cgit v1.2.3 From 7d2166b97f554285cedf958073eefb0276da727f Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Tue, 27 Jun 2017 16:11:15 +0200 Subject: Make files non-executable --- graphics-de/unused/old_charmap.png | Bin graphics/battle_anims/backgrounds/attract.bin | Bin graphics/battle_anims/backgrounds/attract.pal | 0 graphics/battle_anims/backgrounds/attract.png | Bin graphics/battle_anims/backgrounds/sandstorm_brew.bin | Bin graphics/battle_anims/backgrounds/sandstorm_brew.png | Bin graphics/battle_anims/backgrounds/scary_face.pal | 0 graphics/battle_anims/backgrounds/scary_face.png | Bin graphics/battle_anims/backgrounds/scary_face_contest.bin | Bin graphics/battle_anims/backgrounds/scary_face_opponent.bin | Bin graphics/battle_anims/backgrounds/scary_face_player.bin | Bin graphics/battle_anims/backgrounds/water.pal | 0 graphics/battle_anims/backgrounds/water.png | Bin graphics/battle_anims/masks/cure_bubbles.bin | Bin graphics/battle_anims/masks/cure_bubbles.pal | 0 graphics/battle_anims/masks/cure_bubbles.png | Bin graphics/battle_anims/masks/curse.bin | Bin graphics/battle_anims/masks/curse.png | Bin graphics/battle_anims/masks/metal_shine.bin | Bin graphics/battle_anims/masks/metal_shine.pal | 0 graphics/battle_anims/masks/metal_shine.png | Bin graphics/battle_anims/masks/morning_sun.bin | Bin graphics/battle_anims/masks/morning_sun.pal | 0 graphics/battle_anims/masks/morning_sun.png | Bin graphics/battle_anims/masks/stat.png | Bin graphics/battle_anims/masks/stat1.pal | 0 graphics/battle_anims/masks/stat2.pal | 0 graphics/battle_anims/masks/stat3.pal | 0 graphics/battle_anims/masks/stat4.pal | 0 graphics/battle_anims/masks/stat5.pal | 0 graphics/battle_anims/masks/stat6.pal | 0 graphics/battle_anims/masks/stat_tilemap_1.bin | Bin graphics/battle_anims/masks/stat_tilemap_2.bin | 0 graphics/battle_anims/masks/unknown_D2EDFC.bin | Bin graphics/battle_anims/masks/unknown_D2EDFC.png | Bin graphics/battle_anims/sprites/substitute.bin | Bin graphics/battle_anims/sprites/substitute.pal | 0 graphics/battle_anims/sprites/substitute.png | Bin graphics/battle_interface/ball_display.png | Bin graphics/battle_interface/ball_display_unused_extra.png | Bin graphics/battle_interface/bar.png | Bin graphics/battle_interface/enemy_mon_shadow.png | Bin graphics/battle_interface/expbar.png | Bin graphics/battle_interface/hpbar.pal | 0 graphics/battle_interface/hpbar.png | Bin graphics/battle_interface/hpbar_anim.png | Bin graphics/battle_interface/misc.png | Bin graphics/battle_interface/misc_frameend.png | Bin graphics/battle_interface/status2.png | Bin graphics/battle_interface/status3.png | Bin graphics/battle_interface/status4.png | Bin graphics/battle_interface/status_brn.png | Bin graphics/battle_interface/status_frz.png | Bin graphics/battle_interface/status_par.png | Bin graphics/battle_interface/status_psn.png | Bin graphics/battle_interface/status_slp.png | Bin graphics/battle_interface/window.pal | 0 graphics/battle_interface/window.png | Bin graphics/battle_interface/window2.png | Bin graphics/battle_interface/window3.png | Bin graphics/battle_interface/window4.png | Bin graphics/battle_interface/window5.png | Bin graphics/battle_terrain/building/palette2.pal | 0 graphics/battle_terrain/building/palette3.pal | 0 graphics/battle_terrain/cave/groudon.pal | 0 graphics/battle_terrain/stadium/battle_tower.pal | 0 graphics/battle_terrain/stadium/map.bin | Bin graphics/battle_terrain/stadium/palette1.pal | 0 graphics/battle_terrain/stadium/palette2.pal | 0 graphics/battle_terrain/stadium/palette3.pal | 0 graphics/battle_terrain/stadium/palette4.pal | 0 graphics/battle_terrain/stadium/palette5.pal | 0 graphics/battle_terrain/stadium/palette6.pal | 0 graphics/battle_terrain/stadium/palette7.pal | 0 graphics/battle_terrain/stadium/tiles.png | Bin graphics/battle_terrain/water/kyogre.pal | 0 graphics/battle_transitions/vs.png | Bin graphics/battle_transitions/vs_frame.bin | Bin graphics/battle_transitions/vs_frame.pal | 0 graphics/battle_transitions/vs_frame.png | Bin graphics/birch_speech/birch.pal | 0 graphics/birch_speech/birch.png | Bin graphics/birch_speech/shadow.png | Bin graphics/contest/applause.png | Bin graphics/contest/applause_meter.png | Bin graphics/contest/audience.png | Bin graphics/contest/faces.png | Bin graphics/contest/heart.png | Bin graphics/contest/judge.pal | 0 graphics/contest/judge.png | Bin graphics/contest/judge_symbols.pal | 0 graphics/contest/judge_symbols.png | Bin graphics/contest/misc.png | Bin graphics/contest/misc_2.pal | 0 graphics/contest/misc_2.png | Bin graphics/contest/misc_2_tilemap_1.bin | Bin graphics/contest/misc_2_tilemap_2.bin | Bin graphics/contest/misc_2_tilemap_3.bin | 0 graphics/contest/nextturn.pal | 0 graphics/contest/nextturn.png | Bin graphics/contest/nextturn_numbers.png | Bin graphics/contest/nextturn_random.png | Bin graphics/interface/bag_screen.png | Bin graphics/interface/bag_screen_female.pal | 0 graphics/interface/bag_screen_male.pal | 0 graphics/interface/ball/dive.pal | 0 graphics/interface/ball/dive.png | Bin graphics/interface/ball/great.pal | 0 graphics/interface/ball/great.png | Bin graphics/interface/ball/luxury.pal | 0 graphics/interface/ball/luxury.png | Bin graphics/interface/ball/master.pal | 0 graphics/interface/ball/master.png | Bin graphics/interface/ball/nest.pal | 0 graphics/interface/ball/nest.png | Bin graphics/interface/ball/net.pal | 0 graphics/interface/ball/net.png | Bin graphics/interface/ball/poke.pal | 0 graphics/interface/ball/poke.png | Bin graphics/interface/ball/premier.pal | 0 graphics/interface/ball/premier.png | Bin graphics/interface/ball/repeat.pal | 0 graphics/interface/ball/repeat.png | Bin graphics/interface/ball/safari.pal | 0 graphics/interface/ball/safari.png | Bin graphics/interface/ball/timer.pal | 0 graphics/interface/ball/timer.png | Bin graphics/interface/ball/ultra.pal | 0 graphics/interface/ball/ultra.png | Bin graphics/interface/ball_open.png | Bin graphics/interface/blank.pal | 0 graphics/interface/blank.png | Bin graphics/interface/check_berry.pal | 0 graphics/interface/check_berry.png | Bin graphics/interface/check_berry_circle.png | Bin graphics/interface/hold_icons.pal | 0 graphics/interface/hold_icons.png | Bin graphics/interface/hpbar_anim.png | Bin graphics/interface/mart_frame.bin | Bin graphics/interface/mart_frame.png | Bin graphics/interface/menu.pal | 0 graphics/interface/menu.png | Bin graphics/interface/menu_0.pal | 0 graphics/interface/menu_1.pal | 0 graphics/interface/money.pal | 0 graphics/interface/money.png | Bin graphics/interface/numbers1.png | Bin graphics/interface/numbers2.png | Bin graphics/interface/party_menu_hpbar.png | Bin graphics/interface/party_menu_misc.bin | Bin graphics/interface/party_menu_misc.pal | 0 graphics/interface/party_menu_misc.png | Bin graphics/interface/party_menu_ordertext.png | Bin graphics/interface/pokeblock.bin | Bin graphics/interface/pokeblock_case_frame.pal | 0 graphics/interface/pokeblock_case_frame.png | Bin graphics/interface/pokeblock_device.pal | 0 graphics/interface/pokeblock_device.png | Bin graphics/interface/status_icons.pal | 0 graphics/interface/status_icons.png | Bin graphics/interface/status_screen.pal | 0 graphics/interface/status_screen.png | Bin graphics/interface/summary_frames.pal | 0 graphics/interface/summary_frames.png | Bin graphics/intro/intro1_bg.png | Bin graphics/intro/intro1_bgpal1.pal | 0 graphics/intro/intro1_bgpal10.pal | 0 graphics/intro/intro1_bgpal11.pal | 0 graphics/intro/intro1_bgpal12.pal | 0 graphics/intro/intro1_bgpal13.pal | 0 graphics/intro/intro1_bgpal14.pal | 0 graphics/intro/intro1_bgpal15.pal | 0 graphics/intro/intro1_bgpal16.pal | 0 graphics/intro/intro1_bgpal2.pal | 0 graphics/intro/intro1_bgpal3.pal | 0 graphics/intro/intro1_bgpal4.pal | 0 graphics/intro/intro1_bgpal5.pal | 0 graphics/intro/intro1_bgpal6.pal | 0 graphics/intro/intro1_bgpal7.pal | 0 graphics/intro/intro1_bgpal8.pal | 0 graphics/intro/intro1_bgpal9.pal | 0 graphics/intro/intro1_eon.pal | 0 graphics/intro/intro1_eon.png | Bin graphics/intro/intro1_gamefreak.pal | 0 graphics/intro/intro1_gamefreak.png | Bin graphics/intro/intro1_leaves.png | Bin graphics/intro/intro1_waterdrops.png | Bin graphics/intro/intro2_bgclouds.pal | 0 graphics/intro/intro2_bgclouds.png | Bin graphics/intro/intro2_bgclouds2.png | Bin graphics/intro/intro2_bgnight.pal | 0 graphics/intro/intro2_bgnight.png | Bin graphics/intro/intro2_bgtrees.pal | 0 graphics/intro/intro2_bgtrees.png | Bin graphics/intro/intro2_bgtreessmall.png | Bin graphics/intro/intro2_bicycle.png | Bin graphics/intro/intro2_brendan.pal | 0 graphics/intro/intro2_brendan.png | Bin graphics/intro/intro2_grass.pal | 0 graphics/intro/intro2_grass.png | Bin graphics/intro/intro2_latias.pal | 0 graphics/intro/intro2_latias.png | Bin graphics/intro/intro2_latios.pal | 0 graphics/intro/intro2_latios.png | Bin graphics/intro/intro2_may.pal | 0 graphics/intro/intro2_may.png | Bin graphics/intro/intro3_attackgfx.png | Bin graphics/intro/intro3_explosion.png | Bin graphics/intro/intro3_misc1.pal | 0 graphics/intro/intro3_misc2.pal | 0 graphics/intro/intro3_pokeball.pal | 0 graphics/intro/intro3_pokeball.png | Bin graphics/intro/intro3_star.png | Bin graphics/misc/birch_bag.pal | 0 graphics/misc/birch_bag.png | Bin graphics/misc/birch_ballarrow.pal | 0 graphics/misc/birch_ballarrow.png | Bin graphics/misc/birch_circle.pal | 0 graphics/misc/birch_circle.png | Bin graphics/misc/birch_grass.pal | 0 graphics/misc/birch_grass.png | Bin graphics/misc/cable_car.pal | 0 graphics/misc/cable_car.png | Bin graphics/misc/cable_car_bg.pal | 0 graphics/misc/cable_car_bg.png | Bin graphics/misc/cable_car_cord.png | Bin graphics/misc/cable_car_door.png | Bin graphics/misc/clock1.pal | 0 graphics/misc/clock2.pal | 0 graphics/misc/clock_ampm.png | Bin graphics/misc/clock_hands.png | Bin graphics/misc/clock_small.pal | 0 graphics/misc/clock_small.png | Bin graphics/misc/confetti.pal | 0 graphics/misc/confetti.png | Bin graphics/misc/diploma.png | Bin graphics/misc/diploma_national.pal | 0 graphics/misc/egg_hatch.png | Bin graphics/misc/egg_shard.png | Bin graphics/misc/evo_sparkle.pal | 0 graphics/misc/evo_sparkle.png | Bin graphics/misc/interview_frame.pal | 0 graphics/misc/interview_frame.png | Bin graphics/misc/ribbons_beauty.pal | 0 graphics/misc/ribbons_cool.pal | 0 graphics/misc/ribbons_cute.pal | 0 graphics/misc/ribbons_full.png | Bin graphics/misc/ribbons_half.pal | 0 graphics/misc/ribbons_half.png | Bin graphics/misc/ribbons_smart.pal | 0 graphics/misc/ribbons_tough.pal | 0 graphics/naming_screen/menu.png | Bin graphics/pokedex/area_glow.pal | 0 graphics/pokedex/area_glow.png | Bin graphics/pokedex/arrows.pal | 0 graphics/pokedex/arrows.png | Bin graphics/pokedex/cry_meter.pal | 0 graphics/pokedex/cry_meter.png | Bin graphics/pokedex/menu.png | Bin graphics/pokedex/menu1.pal | 0 graphics/pokedex/menu2.pal | 0 graphics/pokedex/menu2.png | Bin graphics/pokedex/menu3.pal | 0 graphics/pokedex/menu_search.png | Bin graphics/pokedex/noball.png | Bin graphics/pokemon_storage/arrow.pal | 0 graphics/pokemon_storage/arrow.png | Bin graphics/pokemon_storage/beach.bin | Bin graphics/pokemon_storage/beach_bg.pal | 0 graphics/pokemon_storage/beach_bg.png | Bin graphics/pokemon_storage/beach_frame.pal | 0 graphics/pokemon_storage/beach_frame.png | Bin graphics/pokemon_storage/box_bg1.pal | 0 graphics/pokemon_storage/box_bg2.pal | 0 graphics/pokemon_storage/box_bg3.pal | 0 graphics/pokemon_storage/box_bg4.pal | 0 graphics/pokemon_storage/cave.bin | Bin graphics/pokemon_storage/cave_bg.pal | 0 graphics/pokemon_storage/cave_bg.png | Bin graphics/pokemon_storage/cave_frame.pal | 0 graphics/pokemon_storage/cave_frame.png | Bin graphics/pokemon_storage/city.bin | Bin graphics/pokemon_storage/city_bg.pal | 0 graphics/pokemon_storage/city_bg.png | Bin graphics/pokemon_storage/city_frame.pal | 0 graphics/pokemon_storage/city_frame.png | Bin graphics/pokemon_storage/crag.bin | Bin graphics/pokemon_storage/crag_bg.pal | 0 graphics/pokemon_storage/crag_bg.png | Bin graphics/pokemon_storage/crag_frame.pal | 0 graphics/pokemon_storage/crag_frame.png | Bin graphics/pokemon_storage/desert.bin | Bin graphics/pokemon_storage/desert_bg.pal | 0 graphics/pokemon_storage/desert_bg.png | Bin graphics/pokemon_storage/desert_frame.pal | 0 graphics/pokemon_storage/desert_frame.png | Bin graphics/pokemon_storage/forest.bin | Bin graphics/pokemon_storage/forest_bg.pal | 0 graphics/pokemon_storage/forest_bg.png | Bin graphics/pokemon_storage/forest_frame.pal | 0 graphics/pokemon_storage/forest_frame.png | Bin graphics/pokemon_storage/machine.bin | Bin graphics/pokemon_storage/machine_bg.pal | 0 graphics/pokemon_storage/machine_bg.png | Bin graphics/pokemon_storage/machine_frame.pal | 0 graphics/pokemon_storage/machine_frame.png | Bin graphics/pokemon_storage/plain.bin | Bin graphics/pokemon_storage/plain_bg.pal | 0 graphics/pokemon_storage/plain_bg.png | Bin graphics/pokemon_storage/plain_frame.pal | 0 graphics/pokemon_storage/plain_frame.png | Bin graphics/pokemon_storage/pokecenter.bin | Bin graphics/pokemon_storage/pokecenter_bg.pal | 0 graphics/pokemon_storage/pokecenter_bg.png | Bin graphics/pokemon_storage/pokecenter_frame.pal | 0 graphics/pokemon_storage/pokecenter_frame.png | Bin graphics/pokemon_storage/polkadot.bin | Bin graphics/pokemon_storage/polkadot_bg.pal | 0 graphics/pokemon_storage/polkadot_bg.png | Bin graphics/pokemon_storage/polkadot_frame.pal | 0 graphics/pokemon_storage/polkadot_frame.png | Bin graphics/pokemon_storage/river.bin | Bin graphics/pokemon_storage/river_bg.pal | 0 graphics/pokemon_storage/river_bg.png | Bin graphics/pokemon_storage/river_frame.pal | 0 graphics/pokemon_storage/river_frame.png | Bin graphics/pokemon_storage/savanna.bin | Bin graphics/pokemon_storage/savanna_bg.pal | 0 graphics/pokemon_storage/savanna_bg.png | Bin graphics/pokemon_storage/savanna_frame.pal | 0 graphics/pokemon_storage/savanna_frame.png | Bin graphics/pokemon_storage/seafloor.bin | Bin graphics/pokemon_storage/seafloor_bg.pal | 0 graphics/pokemon_storage/seafloor_bg.png | Bin graphics/pokemon_storage/seafloor_frame.pal | 0 graphics/pokemon_storage/seafloor_frame.png | Bin graphics/pokemon_storage/sky.bin | Bin graphics/pokemon_storage/sky_bg.pal | 0 graphics/pokemon_storage/sky_bg.png | Bin graphics/pokemon_storage/sky_frame.pal | 0 graphics/pokemon_storage/sky_frame.png | Bin graphics/pokemon_storage/snow.bin | Bin graphics/pokemon_storage/snow_bg.pal | 0 graphics/pokemon_storage/snow_bg.png | Bin graphics/pokemon_storage/snow_frame.pal | 0 graphics/pokemon_storage/snow_frame.png | Bin graphics/pokemon_storage/volcano.bin | Bin graphics/pokemon_storage/volcano_bg.pal | 0 graphics/pokemon_storage/volcano_bg.png | Bin graphics/pokemon_storage/volcano_frame.pal | 0 graphics/pokemon_storage/volcano_frame.png | Bin graphics/pokenav/cursor.pal | 0 graphics/pokenav/cursor_large.png | Bin graphics/pokenav/cursor_small.png | Bin graphics/pokenav/icon.pal | 0 graphics/pokenav/icon.png | Bin graphics/pokenav/map_frame.pal | 0 graphics/pokenav/map_frame.png | Bin graphics/pokenav/map_misc.pal | 0 graphics/pokenav/map_misc.png | Bin graphics/pokenav/map_squares.pal | 0 graphics/pokenav/region_map.pal | 0 graphics/pokenav/region_map.png | Bin graphics/pokenav/trainereyes_misc.png | Bin graphics/pokenav/trainereyes_misc_pal.bin | Bin graphics/roulette/azurill.pal | 0 graphics/roulette/azurill.png | Bin graphics/roulette/ball.pal | 0 graphics/roulette/ball.png | Bin graphics/roulette/ball_counter.pal | 0 graphics/roulette/ball_counter.png | Bin graphics/roulette/center.png | Bin graphics/roulette/cursor.pal | 0 graphics/roulette/cursor.png | Bin graphics/roulette/makuhita.pal | 0 graphics/roulette/makuhita.png | Bin graphics/roulette/poke_icons.pal | 0 graphics/roulette/poke_icons.png | Bin graphics/roulette/shadow.pal | 0 graphics/roulette/shadow.png | Bin graphics/roulette/shroomish.pal | 0 graphics/roulette/shroomish.png | Bin graphics/roulette/skitty.pal | 0 graphics/roulette/skitty.png | Bin graphics/roulette/tailow.pal | 0 graphics/roulette/tailow.png | Bin graphics/roulette/wynaut.pal | 0 graphics/roulette/wynaut.png | Bin graphics/slot_machine/numbers/0.png | Bin graphics/slot_machine/numbers/1.png | Bin graphics/slot_machine/numbers/2.png | Bin graphics/slot_machine/numbers/3.png | Bin graphics/slot_machine/numbers/4.png | Bin graphics/slot_machine/numbers/5.png | Bin graphics/slot_machine/numbers/6.png | Bin graphics/slot_machine/numbers/7.png | Bin graphics/slot_machine/numbers/8.png | Bin graphics/slot_machine/numbers/9.png | Bin graphics/slot_machine/reel_machine.png | Bin graphics/slot_machine/reel_pikachu.png | Bin graphics/slot_machine/reel_symbols/1.png | Bin graphics/slot_machine/reel_symbols/2.png | Bin graphics/slot_machine/reel_symbols/3.png | Bin graphics/slot_machine/reel_symbols/4.png | Bin graphics/slot_machine/reel_symbols/5.png | Bin graphics/slot_machine/reel_symbols/6.png | Bin graphics/slot_machine/reel_symbols/7.png | Bin graphics/slot_machine/spr0.pal | 0 graphics/slot_machine/spr1.pal | 0 graphics/slot_machine/spr2_ruby.pal | 0 graphics/slot_machine/spr3_ruby.pal | 0 graphics/slot_machine/spr4.pal | 0 graphics/slot_machine/spr5.pal | 0 graphics/slot_machine/spr6.pal | 0 graphics/title_screen/groudon.png | Bin graphics/title_screen/groudon_dark.pal | 0 graphics/title_screen/groudon_glow.pal | 0 graphics/title_screen/kyogre.png | Bin graphics/title_screen/kyogre_dark.pal | 0 graphics/title_screen/kyogre_glow.pal | 0 graphics/title_screen/logo_ruby.pal | 0 graphics/title_screen/logo_sapphire.pal | 0 graphics/title_screen/pokemon_ruby.png | Bin graphics/title_screen/pokemon_sapphire.png | Bin graphics/title_screen/rubyversion.png | Bin graphics/title_screen/sapphireversion.png | Bin graphics/trade/cable_end.png | Bin graphics/trade/gba.pal | 0 graphics/trade/gba.png | Bin graphics/trade/gba_screen.png | Bin graphics/trade/glow1.png | Bin graphics/trade/glow2.png | Bin graphics/trade/misc.pal | 0 graphics/trade/shadow.pal | 0 graphics/trade/shadow.png | Bin graphics/types/bug.png | Bin graphics/types/contest_beauty.png | Bin graphics/types/contest_cool.png | Bin graphics/types/contest_cute.png | Bin graphics/types/contest_smart.png | Bin graphics/types/contest_tough.png | Bin graphics/types/dark.png | Bin graphics/types/dragon.png | Bin graphics/types/electric.png | Bin graphics/types/fight.png | Bin graphics/types/fire.png | Bin graphics/types/flying.png | Bin graphics/types/ghost.png | Bin graphics/types/grass.png | Bin graphics/types/ground.png | Bin graphics/types/ice.png | Bin graphics/types/move_types_1.pal | 0 graphics/types/move_types_2.pal | 0 graphics/types/move_types_3.pal | 0 graphics/types/mystery.png | Bin graphics/types/normal.png | Bin graphics/types/poison.png | Bin graphics/types/psychic.png | Bin graphics/types/rock.png | Bin graphics/types/steel.png | Bin graphics/types/water.png | Bin graphics/unknown/ball.pal | 0 graphics/unknown/ball.png | Bin graphics/unknown/unknown_3E3BE0.png | Bin graphics/unknown/unknown_D04388.png | Bin graphics/unknown/unknown_D07B68.pal | 0 graphics/unknown/unknown_D07B68.png | Bin graphics/unknown/unknown_D07B68_2.pal | 0 graphics/unknown/unknown_D0CFAC.bin | Bin graphics/unknown/unknown_D0CFD0.bin | Bin graphics/unknown/unknown_D0CFF4.bin | Bin graphics/unknown/unknown_D0D070.bin | Bin graphics/unknown/unknown_D0D2B4.bin | Bin graphics/unknown/unknown_D12FEC.png | Bin graphics/unknown/unknown_D1300C.png | Bin graphics/unknown/unknown_D15D64.bin | Bin graphics/unknown/unknown_D17424.bin | Bin graphics/unknown/unknown_D176CC.bin | Bin graphics/unknown/unknown_D177D8.bin | Bin graphics/unknown/unknown_D17C3C.bin | Bin graphics/unknown/unknown_D1C060.bin | Bin graphics/unknown/unknown_D1C060.pal | 0 graphics/unknown/unknown_D1C060.png | Bin graphics/unknown/unknown_E6BC04.bin | Bin graphics/unknown/unknown_E70968.bin | Bin graphics/unknown/unknown_E70C38.bin | 0 graphics/unknown/unknown_E70F0C.bin | 0 graphics/unknown/unknown_E8096C.png | Bin graphics/unknown/unknown_E953D0.bin | Bin graphics/unknown/unknown_E966B8.pal | 0 graphics/unknown/unknown_E96738.bin | Bin graphics/unknown/unknown_E96D2C.bin | Bin graphics/unknown/unknown_E997E8.pal | 0 graphics/unknown/unknown_E99FB0.bin | Bin graphics/unknown/unknown_E9AB40.pal | 0 graphics/unknown/unknown_E9AB60.bin | Bin graphics/unknown/unknown_E9C6DC.bin | Bin graphics/unknown/unknown_E9F7E4.bin | Bin graphics/unknown/unknown_E9F988.pal | 0 graphics/unknown/unknown_E9F9E8.pal | 0 graphics/unknown/unknown_E9FBA0.bin | Bin graphics/unknown/unknown_E9FC64.bin | Bin graphics/unknown/unknown_E9FEB4.bin | Bin graphics/unknown/unknown_E9FF58.bin | Bin graphics/unused/basic_frame.bin | Bin graphics/unused/basic_frame.pal | 0 graphics/unused/basic_frame.png | Bin graphics/unused/battle_anim_023.pal | 0 graphics/unused/blank_frame.bin | Bin graphics/unused/blue_frame.bin | Bin graphics/unused/color_frames.pal | 0 graphics/unused/color_frames.png | Bin graphics/unused/goosuto.bin | Bin graphics/unused/goosuto.pal | 0 graphics/unused/goosuto.png | Bin graphics/unused/green_frame.bin | Bin graphics/unused/line_sketch.pal | 0 graphics/unused/line_sketch.png | Bin graphics/unused/line_sketch_2.bin | Bin graphics/unused/line_sketch_2.png | Bin graphics/unused/metronome_hand_small.png | Bin graphics/unused/music_notes.png | Bin graphics/unused/numbers.pal | 0 graphics/unused/numbers.png | Bin graphics/unused/old_battle_interface_1.png | Bin graphics/unused/old_battle_interface_2.png | Bin graphics/unused/old_battle_interface_3.png | Bin graphics/unused/old_battle_interface_tilemap.bin | Bin graphics/unused/old_beatup.pal | 0 graphics/unused/old_beatup.png | Bin graphics/unused/old_bulbasaur.png | Bin graphics/unused/old_bulbasaur2.png | Bin graphics/unused/old_charizard.png | Bin graphics/unused/old_charmap.bin | Bin graphics/unused/old_charmap.pal | 0 graphics/unused/old_charmap.png | Bin graphics/unused/old_contest.bin | Bin graphics/unused/old_contest.pal | 0 graphics/unused/old_contest_2.bin | Bin graphics/unused/old_contest_2.pal | 0 graphics/unused/old_contest_2_1.png | Bin graphics/unused/old_contest_2_2.png | Bin graphics/unused/old_contest_classes.png | Bin graphics/unused/old_contest_floor.png | Bin graphics/unused/old_contest_frame_1.png | Bin graphics/unused/old_contest_frame_2.png | Bin graphics/unused/old_contest_meter.png | Bin graphics/unused/old_contest_numbers.png | Bin graphics/unused/old_contest_symbols.png | Bin graphics/unused/old_pal1.pal | 0 graphics/unused/old_pal2.pal | 0 graphics/unused/old_pal3.pal | 0 graphics/unused/old_pal4.pal | 0 graphics/unused/old_pal5.pal | 0 graphics/unused/old_pal6.pal | 0 graphics/unused/old_pal7.pal | 0 graphics/unused/red_frame.bin | Bin graphics/unused/shadow.pal | 0 graphics/unused/shadow.png | Bin graphics/unused/water_splash.bin | Bin graphics/unused/water_splash.pal | 0 graphics/unused/water_splash.png | Bin graphics/unused/yellow_frame.bin | Bin graphics/weather/fog1.bin | Bin include/data/field_map_obj/anim_func_ptrs.h | 0 include/data/field_map_obj/base_oam.h | 0 include/data/field_map_obj/berry_tree_graphics_tables.h | 0 include/data/field_map_obj/callback_subroutine_pointers.h | 0 .../field_map_obj/field_effect_object_template_pointers.h | 0 include/data/field_map_obj/field_effect_objects.h | 0 include/data/field_map_obj/map_object_anims.h | 0 include/data/field_map_obj/map_object_graphics_info.h | 0 .../data/field_map_obj/map_object_graphics_info_pointers.h | 0 include/data/field_map_obj/map_object_pic_tables.h | 0 include/data/field_map_obj/map_object_subsprites.h | 0 include/field_effect_helpers.h | 0 include/field_map_obj.h | 0 ld_script.txt | 0 misc.mk | 0 src/field_map_obj.c | 0 src/field_map_obj_helpers.c | 0 581 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 graphics-de/unused/old_charmap.png mode change 100755 => 100644 graphics/battle_anims/backgrounds/attract.bin mode change 100755 => 100644 graphics/battle_anims/backgrounds/attract.pal mode change 100755 => 100644 graphics/battle_anims/backgrounds/attract.png mode change 100755 => 100644 graphics/battle_anims/backgrounds/sandstorm_brew.bin mode change 100755 => 100644 graphics/battle_anims/backgrounds/sandstorm_brew.png mode change 100755 => 100644 graphics/battle_anims/backgrounds/scary_face.pal mode change 100755 => 100644 graphics/battle_anims/backgrounds/scary_face.png mode change 100755 => 100644 graphics/battle_anims/backgrounds/scary_face_contest.bin mode change 100755 => 100644 graphics/battle_anims/backgrounds/scary_face_opponent.bin mode change 100755 => 100644 graphics/battle_anims/backgrounds/scary_face_player.bin mode change 100755 => 100644 graphics/battle_anims/backgrounds/water.pal mode change 100755 => 100644 graphics/battle_anims/backgrounds/water.png mode change 100755 => 100644 graphics/battle_anims/masks/cure_bubbles.bin mode change 100755 => 100644 graphics/battle_anims/masks/cure_bubbles.pal mode change 100755 => 100644 graphics/battle_anims/masks/cure_bubbles.png mode change 100755 => 100644 graphics/battle_anims/masks/curse.bin mode change 100755 => 100644 graphics/battle_anims/masks/curse.png mode change 100755 => 100644 graphics/battle_anims/masks/metal_shine.bin mode change 100755 => 100644 graphics/battle_anims/masks/metal_shine.pal mode change 100755 => 100644 graphics/battle_anims/masks/metal_shine.png mode change 100755 => 100644 graphics/battle_anims/masks/morning_sun.bin mode change 100755 => 100644 graphics/battle_anims/masks/morning_sun.pal mode change 100755 => 100644 graphics/battle_anims/masks/morning_sun.png mode change 100755 => 100644 graphics/battle_anims/masks/stat.png mode change 100755 => 100644 graphics/battle_anims/masks/stat1.pal mode change 100755 => 100644 graphics/battle_anims/masks/stat2.pal mode change 100755 => 100644 graphics/battle_anims/masks/stat3.pal mode change 100755 => 100644 graphics/battle_anims/masks/stat4.pal mode change 100755 => 100644 graphics/battle_anims/masks/stat5.pal mode change 100755 => 100644 graphics/battle_anims/masks/stat6.pal mode change 100755 => 100644 graphics/battle_anims/masks/stat_tilemap_1.bin mode change 100755 => 100644 graphics/battle_anims/masks/stat_tilemap_2.bin mode change 100755 => 100644 graphics/battle_anims/masks/unknown_D2EDFC.bin mode change 100755 => 100644 graphics/battle_anims/masks/unknown_D2EDFC.png mode change 100755 => 100644 graphics/battle_anims/sprites/substitute.bin mode change 100755 => 100644 graphics/battle_anims/sprites/substitute.pal mode change 100755 => 100644 graphics/battle_anims/sprites/substitute.png mode change 100755 => 100644 graphics/battle_interface/ball_display.png mode change 100755 => 100644 graphics/battle_interface/ball_display_unused_extra.png mode change 100755 => 100644 graphics/battle_interface/bar.png mode change 100755 => 100644 graphics/battle_interface/enemy_mon_shadow.png mode change 100755 => 100644 graphics/battle_interface/expbar.png mode change 100755 => 100644 graphics/battle_interface/hpbar.pal mode change 100755 => 100644 graphics/battle_interface/hpbar.png mode change 100755 => 100644 graphics/battle_interface/hpbar_anim.png mode change 100755 => 100644 graphics/battle_interface/misc.png mode change 100755 => 100644 graphics/battle_interface/misc_frameend.png mode change 100755 => 100644 graphics/battle_interface/status2.png mode change 100755 => 100644 graphics/battle_interface/status3.png mode change 100755 => 100644 graphics/battle_interface/status4.png mode change 100755 => 100644 graphics/battle_interface/status_brn.png mode change 100755 => 100644 graphics/battle_interface/status_frz.png mode change 100755 => 100644 graphics/battle_interface/status_par.png mode change 100755 => 100644 graphics/battle_interface/status_psn.png mode change 100755 => 100644 graphics/battle_interface/status_slp.png mode change 100755 => 100644 graphics/battle_interface/window.pal mode change 100755 => 100644 graphics/battle_interface/window.png mode change 100755 => 100644 graphics/battle_interface/window2.png mode change 100755 => 100644 graphics/battle_interface/window3.png mode change 100755 => 100644 graphics/battle_interface/window4.png mode change 100755 => 100644 graphics/battle_interface/window5.png mode change 100755 => 100644 graphics/battle_terrain/building/palette2.pal mode change 100755 => 100644 graphics/battle_terrain/building/palette3.pal mode change 100755 => 100644 graphics/battle_terrain/cave/groudon.pal mode change 100755 => 100644 graphics/battle_terrain/stadium/battle_tower.pal mode change 100755 => 100644 graphics/battle_terrain/stadium/map.bin mode change 100755 => 100644 graphics/battle_terrain/stadium/palette1.pal mode change 100755 => 100644 graphics/battle_terrain/stadium/palette2.pal mode change 100755 => 100644 graphics/battle_terrain/stadium/palette3.pal mode change 100755 => 100644 graphics/battle_terrain/stadium/palette4.pal mode change 100755 => 100644 graphics/battle_terrain/stadium/palette5.pal mode change 100755 => 100644 graphics/battle_terrain/stadium/palette6.pal mode change 100755 => 100644 graphics/battle_terrain/stadium/palette7.pal mode change 100755 => 100644 graphics/battle_terrain/stadium/tiles.png mode change 100755 => 100644 graphics/battle_terrain/water/kyogre.pal mode change 100755 => 100644 graphics/battle_transitions/vs.png mode change 100755 => 100644 graphics/battle_transitions/vs_frame.bin mode change 100755 => 100644 graphics/battle_transitions/vs_frame.pal mode change 100755 => 100644 graphics/battle_transitions/vs_frame.png mode change 100755 => 100644 graphics/birch_speech/birch.pal mode change 100755 => 100644 graphics/birch_speech/birch.png mode change 100755 => 100644 graphics/birch_speech/shadow.png mode change 100755 => 100644 graphics/contest/applause.png mode change 100755 => 100644 graphics/contest/applause_meter.png mode change 100755 => 100644 graphics/contest/audience.png mode change 100755 => 100644 graphics/contest/faces.png mode change 100755 => 100644 graphics/contest/heart.png mode change 100755 => 100644 graphics/contest/judge.pal mode change 100755 => 100644 graphics/contest/judge.png mode change 100755 => 100644 graphics/contest/judge_symbols.pal mode change 100755 => 100644 graphics/contest/judge_symbols.png mode change 100755 => 100644 graphics/contest/misc.png mode change 100755 => 100644 graphics/contest/misc_2.pal mode change 100755 => 100644 graphics/contest/misc_2.png mode change 100755 => 100644 graphics/contest/misc_2_tilemap_1.bin mode change 100755 => 100644 graphics/contest/misc_2_tilemap_2.bin mode change 100755 => 100644 graphics/contest/misc_2_tilemap_3.bin mode change 100755 => 100644 graphics/contest/nextturn.pal mode change 100755 => 100644 graphics/contest/nextturn.png mode change 100755 => 100644 graphics/contest/nextturn_numbers.png mode change 100755 => 100644 graphics/contest/nextturn_random.png mode change 100755 => 100644 graphics/interface/bag_screen.png mode change 100755 => 100644 graphics/interface/bag_screen_female.pal mode change 100755 => 100644 graphics/interface/bag_screen_male.pal mode change 100755 => 100644 graphics/interface/ball/dive.pal mode change 100755 => 100644 graphics/interface/ball/dive.png mode change 100755 => 100644 graphics/interface/ball/great.pal mode change 100755 => 100644 graphics/interface/ball/great.png mode change 100755 => 100644 graphics/interface/ball/luxury.pal mode change 100755 => 100644 graphics/interface/ball/luxury.png mode change 100755 => 100644 graphics/interface/ball/master.pal mode change 100755 => 100644 graphics/interface/ball/master.png mode change 100755 => 100644 graphics/interface/ball/nest.pal mode change 100755 => 100644 graphics/interface/ball/nest.png mode change 100755 => 100644 graphics/interface/ball/net.pal mode change 100755 => 100644 graphics/interface/ball/net.png mode change 100755 => 100644 graphics/interface/ball/poke.pal mode change 100755 => 100644 graphics/interface/ball/poke.png mode change 100755 => 100644 graphics/interface/ball/premier.pal mode change 100755 => 100644 graphics/interface/ball/premier.png mode change 100755 => 100644 graphics/interface/ball/repeat.pal mode change 100755 => 100644 graphics/interface/ball/repeat.png mode change 100755 => 100644 graphics/interface/ball/safari.pal mode change 100755 => 100644 graphics/interface/ball/safari.png mode change 100755 => 100644 graphics/interface/ball/timer.pal mode change 100755 => 100644 graphics/interface/ball/timer.png mode change 100755 => 100644 graphics/interface/ball/ultra.pal mode change 100755 => 100644 graphics/interface/ball/ultra.png mode change 100755 => 100644 graphics/interface/ball_open.png mode change 100755 => 100644 graphics/interface/blank.pal mode change 100755 => 100644 graphics/interface/blank.png mode change 100755 => 100644 graphics/interface/check_berry.pal mode change 100755 => 100644 graphics/interface/check_berry.png mode change 100755 => 100644 graphics/interface/check_berry_circle.png mode change 100755 => 100644 graphics/interface/hold_icons.pal mode change 100755 => 100644 graphics/interface/hold_icons.png mode change 100755 => 100644 graphics/interface/hpbar_anim.png mode change 100755 => 100644 graphics/interface/mart_frame.bin mode change 100755 => 100644 graphics/interface/mart_frame.png mode change 100755 => 100644 graphics/interface/menu.pal mode change 100755 => 100644 graphics/interface/menu.png mode change 100755 => 100644 graphics/interface/menu_0.pal mode change 100755 => 100644 graphics/interface/menu_1.pal mode change 100755 => 100644 graphics/interface/money.pal mode change 100755 => 100644 graphics/interface/money.png mode change 100755 => 100644 graphics/interface/numbers1.png mode change 100755 => 100644 graphics/interface/numbers2.png mode change 100755 => 100644 graphics/interface/party_menu_hpbar.png mode change 100755 => 100644 graphics/interface/party_menu_misc.bin mode change 100755 => 100644 graphics/interface/party_menu_misc.pal mode change 100755 => 100644 graphics/interface/party_menu_misc.png mode change 100755 => 100644 graphics/interface/party_menu_ordertext.png mode change 100755 => 100644 graphics/interface/pokeblock.bin mode change 100755 => 100644 graphics/interface/pokeblock_case_frame.pal mode change 100755 => 100644 graphics/interface/pokeblock_case_frame.png mode change 100755 => 100644 graphics/interface/pokeblock_device.pal mode change 100755 => 100644 graphics/interface/pokeblock_device.png mode change 100755 => 100644 graphics/interface/status_icons.pal mode change 100755 => 100644 graphics/interface/status_icons.png mode change 100755 => 100644 graphics/interface/status_screen.pal mode change 100755 => 100644 graphics/interface/status_screen.png mode change 100755 => 100644 graphics/interface/summary_frames.pal mode change 100755 => 100644 graphics/interface/summary_frames.png mode change 100755 => 100644 graphics/intro/intro1_bg.png mode change 100755 => 100644 graphics/intro/intro1_bgpal1.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal10.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal11.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal12.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal13.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal14.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal15.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal16.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal2.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal3.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal4.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal5.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal6.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal7.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal8.pal mode change 100755 => 100644 graphics/intro/intro1_bgpal9.pal mode change 100755 => 100644 graphics/intro/intro1_eon.pal mode change 100755 => 100644 graphics/intro/intro1_eon.png mode change 100755 => 100644 graphics/intro/intro1_gamefreak.pal mode change 100755 => 100644 graphics/intro/intro1_gamefreak.png mode change 100755 => 100644 graphics/intro/intro1_leaves.png mode change 100755 => 100644 graphics/intro/intro1_waterdrops.png mode change 100755 => 100644 graphics/intro/intro2_bgclouds.pal mode change 100755 => 100644 graphics/intro/intro2_bgclouds.png mode change 100755 => 100644 graphics/intro/intro2_bgclouds2.png mode change 100755 => 100644 graphics/intro/intro2_bgnight.pal mode change 100755 => 100644 graphics/intro/intro2_bgnight.png mode change 100755 => 100644 graphics/intro/intro2_bgtrees.pal mode change 100755 => 100644 graphics/intro/intro2_bgtrees.png mode change 100755 => 100644 graphics/intro/intro2_bgtreessmall.png mode change 100755 => 100644 graphics/intro/intro2_bicycle.png mode change 100755 => 100644 graphics/intro/intro2_brendan.pal mode change 100755 => 100644 graphics/intro/intro2_brendan.png mode change 100755 => 100644 graphics/intro/intro2_grass.pal mode change 100755 => 100644 graphics/intro/intro2_grass.png mode change 100755 => 100644 graphics/intro/intro2_latias.pal mode change 100755 => 100644 graphics/intro/intro2_latias.png mode change 100755 => 100644 graphics/intro/intro2_latios.pal mode change 100755 => 100644 graphics/intro/intro2_latios.png mode change 100755 => 100644 graphics/intro/intro2_may.pal mode change 100755 => 100644 graphics/intro/intro2_may.png mode change 100755 => 100644 graphics/intro/intro3_attackgfx.png mode change 100755 => 100644 graphics/intro/intro3_explosion.png mode change 100755 => 100644 graphics/intro/intro3_misc1.pal mode change 100755 => 100644 graphics/intro/intro3_misc2.pal mode change 100755 => 100644 graphics/intro/intro3_pokeball.pal mode change 100755 => 100644 graphics/intro/intro3_pokeball.png mode change 100755 => 100644 graphics/intro/intro3_star.png mode change 100755 => 100644 graphics/misc/birch_bag.pal mode change 100755 => 100644 graphics/misc/birch_bag.png mode change 100755 => 100644 graphics/misc/birch_ballarrow.pal mode change 100755 => 100644 graphics/misc/birch_ballarrow.png mode change 100755 => 100644 graphics/misc/birch_circle.pal mode change 100755 => 100644 graphics/misc/birch_circle.png mode change 100755 => 100644 graphics/misc/birch_grass.pal mode change 100755 => 100644 graphics/misc/birch_grass.png mode change 100755 => 100644 graphics/misc/cable_car.pal mode change 100755 => 100644 graphics/misc/cable_car.png mode change 100755 => 100644 graphics/misc/cable_car_bg.pal mode change 100755 => 100644 graphics/misc/cable_car_bg.png mode change 100755 => 100644 graphics/misc/cable_car_cord.png mode change 100755 => 100644 graphics/misc/cable_car_door.png mode change 100755 => 100644 graphics/misc/clock1.pal mode change 100755 => 100644 graphics/misc/clock2.pal mode change 100755 => 100644 graphics/misc/clock_ampm.png mode change 100755 => 100644 graphics/misc/clock_hands.png mode change 100755 => 100644 graphics/misc/clock_small.pal mode change 100755 => 100644 graphics/misc/clock_small.png mode change 100755 => 100644 graphics/misc/confetti.pal mode change 100755 => 100644 graphics/misc/confetti.png mode change 100755 => 100644 graphics/misc/diploma.png mode change 100755 => 100644 graphics/misc/diploma_national.pal mode change 100755 => 100644 graphics/misc/egg_hatch.png mode change 100755 => 100644 graphics/misc/egg_shard.png mode change 100755 => 100644 graphics/misc/evo_sparkle.pal mode change 100755 => 100644 graphics/misc/evo_sparkle.png mode change 100755 => 100644 graphics/misc/interview_frame.pal mode change 100755 => 100644 graphics/misc/interview_frame.png mode change 100755 => 100644 graphics/misc/ribbons_beauty.pal mode change 100755 => 100644 graphics/misc/ribbons_cool.pal mode change 100755 => 100644 graphics/misc/ribbons_cute.pal mode change 100755 => 100644 graphics/misc/ribbons_full.png mode change 100755 => 100644 graphics/misc/ribbons_half.pal mode change 100755 => 100644 graphics/misc/ribbons_half.png mode change 100755 => 100644 graphics/misc/ribbons_smart.pal mode change 100755 => 100644 graphics/misc/ribbons_tough.pal mode change 100755 => 100644 graphics/naming_screen/menu.png mode change 100755 => 100644 graphics/pokedex/area_glow.pal mode change 100755 => 100644 graphics/pokedex/area_glow.png mode change 100755 => 100644 graphics/pokedex/arrows.pal mode change 100755 => 100644 graphics/pokedex/arrows.png mode change 100755 => 100644 graphics/pokedex/cry_meter.pal mode change 100755 => 100644 graphics/pokedex/cry_meter.png mode change 100755 => 100644 graphics/pokedex/menu.png mode change 100755 => 100644 graphics/pokedex/menu1.pal mode change 100755 => 100644 graphics/pokedex/menu2.pal mode change 100755 => 100644 graphics/pokedex/menu2.png mode change 100755 => 100644 graphics/pokedex/menu3.pal mode change 100755 => 100644 graphics/pokedex/menu_search.png mode change 100755 => 100644 graphics/pokedex/noball.png mode change 100755 => 100644 graphics/pokemon_storage/arrow.pal mode change 100755 => 100644 graphics/pokemon_storage/arrow.png mode change 100755 => 100644 graphics/pokemon_storage/beach.bin mode change 100755 => 100644 graphics/pokemon_storage/beach_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/beach_bg.png mode change 100755 => 100644 graphics/pokemon_storage/beach_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/beach_frame.png mode change 100755 => 100644 graphics/pokemon_storage/box_bg1.pal mode change 100755 => 100644 graphics/pokemon_storage/box_bg2.pal mode change 100755 => 100644 graphics/pokemon_storage/box_bg3.pal mode change 100755 => 100644 graphics/pokemon_storage/box_bg4.pal mode change 100755 => 100644 graphics/pokemon_storage/cave.bin mode change 100755 => 100644 graphics/pokemon_storage/cave_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/cave_bg.png mode change 100755 => 100644 graphics/pokemon_storage/cave_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/cave_frame.png mode change 100755 => 100644 graphics/pokemon_storage/city.bin mode change 100755 => 100644 graphics/pokemon_storage/city_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/city_bg.png mode change 100755 => 100644 graphics/pokemon_storage/city_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/city_frame.png mode change 100755 => 100644 graphics/pokemon_storage/crag.bin mode change 100755 => 100644 graphics/pokemon_storage/crag_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/crag_bg.png mode change 100755 => 100644 graphics/pokemon_storage/crag_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/crag_frame.png mode change 100755 => 100644 graphics/pokemon_storage/desert.bin mode change 100755 => 100644 graphics/pokemon_storage/desert_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/desert_bg.png mode change 100755 => 100644 graphics/pokemon_storage/desert_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/desert_frame.png mode change 100755 => 100644 graphics/pokemon_storage/forest.bin mode change 100755 => 100644 graphics/pokemon_storage/forest_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/forest_bg.png mode change 100755 => 100644 graphics/pokemon_storage/forest_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/forest_frame.png mode change 100755 => 100644 graphics/pokemon_storage/machine.bin mode change 100755 => 100644 graphics/pokemon_storage/machine_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/machine_bg.png mode change 100755 => 100644 graphics/pokemon_storage/machine_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/machine_frame.png mode change 100755 => 100644 graphics/pokemon_storage/plain.bin mode change 100755 => 100644 graphics/pokemon_storage/plain_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/plain_bg.png mode change 100755 => 100644 graphics/pokemon_storage/plain_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/plain_frame.png mode change 100755 => 100644 graphics/pokemon_storage/pokecenter.bin mode change 100755 => 100644 graphics/pokemon_storage/pokecenter_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/pokecenter_bg.png mode change 100755 => 100644 graphics/pokemon_storage/pokecenter_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/pokecenter_frame.png mode change 100755 => 100644 graphics/pokemon_storage/polkadot.bin mode change 100755 => 100644 graphics/pokemon_storage/polkadot_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/polkadot_bg.png mode change 100755 => 100644 graphics/pokemon_storage/polkadot_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/polkadot_frame.png mode change 100755 => 100644 graphics/pokemon_storage/river.bin mode change 100755 => 100644 graphics/pokemon_storage/river_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/river_bg.png mode change 100755 => 100644 graphics/pokemon_storage/river_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/river_frame.png mode change 100755 => 100644 graphics/pokemon_storage/savanna.bin mode change 100755 => 100644 graphics/pokemon_storage/savanna_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/savanna_bg.png mode change 100755 => 100644 graphics/pokemon_storage/savanna_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/savanna_frame.png mode change 100755 => 100644 graphics/pokemon_storage/seafloor.bin mode change 100755 => 100644 graphics/pokemon_storage/seafloor_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/seafloor_bg.png mode change 100755 => 100644 graphics/pokemon_storage/seafloor_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/seafloor_frame.png mode change 100755 => 100644 graphics/pokemon_storage/sky.bin mode change 100755 => 100644 graphics/pokemon_storage/sky_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/sky_bg.png mode change 100755 => 100644 graphics/pokemon_storage/sky_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/sky_frame.png mode change 100755 => 100644 graphics/pokemon_storage/snow.bin mode change 100755 => 100644 graphics/pokemon_storage/snow_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/snow_bg.png mode change 100755 => 100644 graphics/pokemon_storage/snow_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/snow_frame.png mode change 100755 => 100644 graphics/pokemon_storage/volcano.bin mode change 100755 => 100644 graphics/pokemon_storage/volcano_bg.pal mode change 100755 => 100644 graphics/pokemon_storage/volcano_bg.png mode change 100755 => 100644 graphics/pokemon_storage/volcano_frame.pal mode change 100755 => 100644 graphics/pokemon_storage/volcano_frame.png mode change 100755 => 100644 graphics/pokenav/cursor.pal mode change 100755 => 100644 graphics/pokenav/cursor_large.png mode change 100755 => 100644 graphics/pokenav/cursor_small.png mode change 100755 => 100644 graphics/pokenav/icon.pal mode change 100755 => 100644 graphics/pokenav/icon.png mode change 100755 => 100644 graphics/pokenav/map_frame.pal mode change 100755 => 100644 graphics/pokenav/map_frame.png mode change 100755 => 100644 graphics/pokenav/map_misc.pal mode change 100755 => 100644 graphics/pokenav/map_misc.png mode change 100755 => 100644 graphics/pokenav/map_squares.pal mode change 100755 => 100644 graphics/pokenav/region_map.pal mode change 100755 => 100644 graphics/pokenav/region_map.png mode change 100755 => 100644 graphics/pokenav/trainereyes_misc.png mode change 100755 => 100644 graphics/pokenav/trainereyes_misc_pal.bin mode change 100755 => 100644 graphics/roulette/azurill.pal mode change 100755 => 100644 graphics/roulette/azurill.png mode change 100755 => 100644 graphics/roulette/ball.pal mode change 100755 => 100644 graphics/roulette/ball.png mode change 100755 => 100644 graphics/roulette/ball_counter.pal mode change 100755 => 100644 graphics/roulette/ball_counter.png mode change 100755 => 100644 graphics/roulette/center.png mode change 100755 => 100644 graphics/roulette/cursor.pal mode change 100755 => 100644 graphics/roulette/cursor.png mode change 100755 => 100644 graphics/roulette/makuhita.pal mode change 100755 => 100644 graphics/roulette/makuhita.png mode change 100755 => 100644 graphics/roulette/poke_icons.pal mode change 100755 => 100644 graphics/roulette/poke_icons.png mode change 100755 => 100644 graphics/roulette/shadow.pal mode change 100755 => 100644 graphics/roulette/shadow.png mode change 100755 => 100644 graphics/roulette/shroomish.pal mode change 100755 => 100644 graphics/roulette/shroomish.png mode change 100755 => 100644 graphics/roulette/skitty.pal mode change 100755 => 100644 graphics/roulette/skitty.png mode change 100755 => 100644 graphics/roulette/tailow.pal mode change 100755 => 100644 graphics/roulette/tailow.png mode change 100755 => 100644 graphics/roulette/wynaut.pal mode change 100755 => 100644 graphics/roulette/wynaut.png mode change 100755 => 100644 graphics/slot_machine/numbers/0.png mode change 100755 => 100644 graphics/slot_machine/numbers/1.png mode change 100755 => 100644 graphics/slot_machine/numbers/2.png mode change 100755 => 100644 graphics/slot_machine/numbers/3.png mode change 100755 => 100644 graphics/slot_machine/numbers/4.png mode change 100755 => 100644 graphics/slot_machine/numbers/5.png mode change 100755 => 100644 graphics/slot_machine/numbers/6.png mode change 100755 => 100644 graphics/slot_machine/numbers/7.png mode change 100755 => 100644 graphics/slot_machine/numbers/8.png mode change 100755 => 100644 graphics/slot_machine/numbers/9.png mode change 100755 => 100644 graphics/slot_machine/reel_machine.png mode change 100755 => 100644 graphics/slot_machine/reel_pikachu.png mode change 100755 => 100644 graphics/slot_machine/reel_symbols/1.png mode change 100755 => 100644 graphics/slot_machine/reel_symbols/2.png mode change 100755 => 100644 graphics/slot_machine/reel_symbols/3.png mode change 100755 => 100644 graphics/slot_machine/reel_symbols/4.png mode change 100755 => 100644 graphics/slot_machine/reel_symbols/5.png mode change 100755 => 100644 graphics/slot_machine/reel_symbols/6.png mode change 100755 => 100644 graphics/slot_machine/reel_symbols/7.png mode change 100755 => 100644 graphics/slot_machine/spr0.pal mode change 100755 => 100644 graphics/slot_machine/spr1.pal mode change 100755 => 100644 graphics/slot_machine/spr2_ruby.pal mode change 100755 => 100644 graphics/slot_machine/spr3_ruby.pal mode change 100755 => 100644 graphics/slot_machine/spr4.pal mode change 100755 => 100644 graphics/slot_machine/spr5.pal mode change 100755 => 100644 graphics/slot_machine/spr6.pal mode change 100755 => 100644 graphics/title_screen/groudon.png mode change 100755 => 100644 graphics/title_screen/groudon_dark.pal mode change 100755 => 100644 graphics/title_screen/groudon_glow.pal mode change 100755 => 100644 graphics/title_screen/kyogre.png mode change 100755 => 100644 graphics/title_screen/kyogre_dark.pal mode change 100755 => 100644 graphics/title_screen/kyogre_glow.pal mode change 100755 => 100644 graphics/title_screen/logo_ruby.pal mode change 100755 => 100644 graphics/title_screen/logo_sapphire.pal mode change 100755 => 100644 graphics/title_screen/pokemon_ruby.png mode change 100755 => 100644 graphics/title_screen/pokemon_sapphire.png mode change 100755 => 100644 graphics/title_screen/rubyversion.png mode change 100755 => 100644 graphics/title_screen/sapphireversion.png mode change 100755 => 100644 graphics/trade/cable_end.png mode change 100755 => 100644 graphics/trade/gba.pal mode change 100755 => 100644 graphics/trade/gba.png mode change 100755 => 100644 graphics/trade/gba_screen.png mode change 100755 => 100644 graphics/trade/glow1.png mode change 100755 => 100644 graphics/trade/glow2.png mode change 100755 => 100644 graphics/trade/misc.pal mode change 100755 => 100644 graphics/trade/shadow.pal mode change 100755 => 100644 graphics/trade/shadow.png mode change 100755 => 100644 graphics/types/bug.png mode change 100755 => 100644 graphics/types/contest_beauty.png mode change 100755 => 100644 graphics/types/contest_cool.png mode change 100755 => 100644 graphics/types/contest_cute.png mode change 100755 => 100644 graphics/types/contest_smart.png mode change 100755 => 100644 graphics/types/contest_tough.png mode change 100755 => 100644 graphics/types/dark.png mode change 100755 => 100644 graphics/types/dragon.png mode change 100755 => 100644 graphics/types/electric.png mode change 100755 => 100644 graphics/types/fight.png mode change 100755 => 100644 graphics/types/fire.png mode change 100755 => 100644 graphics/types/flying.png mode change 100755 => 100644 graphics/types/ghost.png mode change 100755 => 100644 graphics/types/grass.png mode change 100755 => 100644 graphics/types/ground.png mode change 100755 => 100644 graphics/types/ice.png mode change 100755 => 100644 graphics/types/move_types_1.pal mode change 100755 => 100644 graphics/types/move_types_2.pal mode change 100755 => 100644 graphics/types/move_types_3.pal mode change 100755 => 100644 graphics/types/mystery.png mode change 100755 => 100644 graphics/types/normal.png mode change 100755 => 100644 graphics/types/poison.png mode change 100755 => 100644 graphics/types/psychic.png mode change 100755 => 100644 graphics/types/rock.png mode change 100755 => 100644 graphics/types/steel.png mode change 100755 => 100644 graphics/types/water.png mode change 100755 => 100644 graphics/unknown/ball.pal mode change 100755 => 100644 graphics/unknown/ball.png mode change 100755 => 100644 graphics/unknown/unknown_3E3BE0.png mode change 100755 => 100644 graphics/unknown/unknown_D04388.png mode change 100755 => 100644 graphics/unknown/unknown_D07B68.pal mode change 100755 => 100644 graphics/unknown/unknown_D07B68.png mode change 100755 => 100644 graphics/unknown/unknown_D07B68_2.pal mode change 100755 => 100644 graphics/unknown/unknown_D0CFAC.bin mode change 100755 => 100644 graphics/unknown/unknown_D0CFD0.bin mode change 100755 => 100644 graphics/unknown/unknown_D0CFF4.bin mode change 100755 => 100644 graphics/unknown/unknown_D0D070.bin mode change 100755 => 100644 graphics/unknown/unknown_D0D2B4.bin mode change 100755 => 100644 graphics/unknown/unknown_D12FEC.png mode change 100755 => 100644 graphics/unknown/unknown_D1300C.png mode change 100755 => 100644 graphics/unknown/unknown_D15D64.bin mode change 100755 => 100644 graphics/unknown/unknown_D17424.bin mode change 100755 => 100644 graphics/unknown/unknown_D176CC.bin mode change 100755 => 100644 graphics/unknown/unknown_D177D8.bin mode change 100755 => 100644 graphics/unknown/unknown_D17C3C.bin mode change 100755 => 100644 graphics/unknown/unknown_D1C060.bin mode change 100755 => 100644 graphics/unknown/unknown_D1C060.pal mode change 100755 => 100644 graphics/unknown/unknown_D1C060.png mode change 100755 => 100644 graphics/unknown/unknown_E6BC04.bin mode change 100755 => 100644 graphics/unknown/unknown_E70968.bin mode change 100755 => 100644 graphics/unknown/unknown_E70C38.bin mode change 100755 => 100644 graphics/unknown/unknown_E70F0C.bin mode change 100755 => 100644 graphics/unknown/unknown_E8096C.png mode change 100755 => 100644 graphics/unknown/unknown_E953D0.bin mode change 100755 => 100644 graphics/unknown/unknown_E966B8.pal mode change 100755 => 100644 graphics/unknown/unknown_E96738.bin mode change 100755 => 100644 graphics/unknown/unknown_E96D2C.bin mode change 100755 => 100644 graphics/unknown/unknown_E997E8.pal mode change 100755 => 100644 graphics/unknown/unknown_E99FB0.bin mode change 100755 => 100644 graphics/unknown/unknown_E9AB40.pal mode change 100755 => 100644 graphics/unknown/unknown_E9AB60.bin mode change 100755 => 100644 graphics/unknown/unknown_E9C6DC.bin mode change 100755 => 100644 graphics/unknown/unknown_E9F7E4.bin mode change 100755 => 100644 graphics/unknown/unknown_E9F988.pal mode change 100755 => 100644 graphics/unknown/unknown_E9F9E8.pal mode change 100755 => 100644 graphics/unknown/unknown_E9FBA0.bin mode change 100755 => 100644 graphics/unknown/unknown_E9FC64.bin mode change 100755 => 100644 graphics/unknown/unknown_E9FEB4.bin mode change 100755 => 100644 graphics/unknown/unknown_E9FF58.bin mode change 100755 => 100644 graphics/unused/basic_frame.bin mode change 100755 => 100644 graphics/unused/basic_frame.pal mode change 100755 => 100644 graphics/unused/basic_frame.png mode change 100755 => 100644 graphics/unused/battle_anim_023.pal mode change 100755 => 100644 graphics/unused/blank_frame.bin mode change 100755 => 100644 graphics/unused/blue_frame.bin mode change 100755 => 100644 graphics/unused/color_frames.pal mode change 100755 => 100644 graphics/unused/color_frames.png mode change 100755 => 100644 graphics/unused/goosuto.bin mode change 100755 => 100644 graphics/unused/goosuto.pal mode change 100755 => 100644 graphics/unused/goosuto.png mode change 100755 => 100644 graphics/unused/green_frame.bin mode change 100755 => 100644 graphics/unused/line_sketch.pal mode change 100755 => 100644 graphics/unused/line_sketch.png mode change 100755 => 100644 graphics/unused/line_sketch_2.bin mode change 100755 => 100644 graphics/unused/line_sketch_2.png mode change 100755 => 100644 graphics/unused/metronome_hand_small.png mode change 100755 => 100644 graphics/unused/music_notes.png mode change 100755 => 100644 graphics/unused/numbers.pal mode change 100755 => 100644 graphics/unused/numbers.png mode change 100755 => 100644 graphics/unused/old_battle_interface_1.png mode change 100755 => 100644 graphics/unused/old_battle_interface_2.png mode change 100755 => 100644 graphics/unused/old_battle_interface_3.png mode change 100755 => 100644 graphics/unused/old_battle_interface_tilemap.bin mode change 100755 => 100644 graphics/unused/old_beatup.pal mode change 100755 => 100644 graphics/unused/old_beatup.png mode change 100755 => 100644 graphics/unused/old_bulbasaur.png mode change 100755 => 100644 graphics/unused/old_bulbasaur2.png mode change 100755 => 100644 graphics/unused/old_charizard.png mode change 100755 => 100644 graphics/unused/old_charmap.bin mode change 100755 => 100644 graphics/unused/old_charmap.pal mode change 100755 => 100644 graphics/unused/old_charmap.png mode change 100755 => 100644 graphics/unused/old_contest.bin mode change 100755 => 100644 graphics/unused/old_contest.pal mode change 100755 => 100644 graphics/unused/old_contest_2.bin mode change 100755 => 100644 graphics/unused/old_contest_2.pal mode change 100755 => 100644 graphics/unused/old_contest_2_1.png mode change 100755 => 100644 graphics/unused/old_contest_2_2.png mode change 100755 => 100644 graphics/unused/old_contest_classes.png mode change 100755 => 100644 graphics/unused/old_contest_floor.png mode change 100755 => 100644 graphics/unused/old_contest_frame_1.png mode change 100755 => 100644 graphics/unused/old_contest_frame_2.png mode change 100755 => 100644 graphics/unused/old_contest_meter.png mode change 100755 => 100644 graphics/unused/old_contest_numbers.png mode change 100755 => 100644 graphics/unused/old_contest_symbols.png mode change 100755 => 100644 graphics/unused/old_pal1.pal mode change 100755 => 100644 graphics/unused/old_pal2.pal mode change 100755 => 100644 graphics/unused/old_pal3.pal mode change 100755 => 100644 graphics/unused/old_pal4.pal mode change 100755 => 100644 graphics/unused/old_pal5.pal mode change 100755 => 100644 graphics/unused/old_pal6.pal mode change 100755 => 100644 graphics/unused/old_pal7.pal mode change 100755 => 100644 graphics/unused/red_frame.bin mode change 100755 => 100644 graphics/unused/shadow.pal mode change 100755 => 100644 graphics/unused/shadow.png mode change 100755 => 100644 graphics/unused/water_splash.bin mode change 100755 => 100644 graphics/unused/water_splash.pal mode change 100755 => 100644 graphics/unused/water_splash.png mode change 100755 => 100644 graphics/unused/yellow_frame.bin mode change 100755 => 100644 graphics/weather/fog1.bin mode change 100755 => 100644 include/data/field_map_obj/anim_func_ptrs.h mode change 100755 => 100644 include/data/field_map_obj/base_oam.h mode change 100755 => 100644 include/data/field_map_obj/berry_tree_graphics_tables.h mode change 100755 => 100644 include/data/field_map_obj/callback_subroutine_pointers.h mode change 100755 => 100644 include/data/field_map_obj/field_effect_object_template_pointers.h mode change 100755 => 100644 include/data/field_map_obj/field_effect_objects.h mode change 100755 => 100644 include/data/field_map_obj/map_object_anims.h mode change 100755 => 100644 include/data/field_map_obj/map_object_graphics_info.h mode change 100755 => 100644 include/data/field_map_obj/map_object_graphics_info_pointers.h mode change 100755 => 100644 include/data/field_map_obj/map_object_pic_tables.h mode change 100755 => 100644 include/data/field_map_obj/map_object_subsprites.h mode change 100755 => 100644 include/field_effect_helpers.h mode change 100755 => 100644 include/field_map_obj.h mode change 100755 => 100644 ld_script.txt mode change 100755 => 100644 misc.mk mode change 100755 => 100644 src/field_map_obj.c mode change 100755 => 100644 src/field_map_obj_helpers.c diff --git a/graphics-de/unused/old_charmap.png b/graphics-de/unused/old_charmap.png old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/attract.bin b/graphics/battle_anims/backgrounds/attract.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/attract.pal b/graphics/battle_anims/backgrounds/attract.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/attract.png b/graphics/battle_anims/backgrounds/attract.png old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/sandstorm_brew.bin b/graphics/battle_anims/backgrounds/sandstorm_brew.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/sandstorm_brew.png b/graphics/battle_anims/backgrounds/sandstorm_brew.png old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/scary_face.pal b/graphics/battle_anims/backgrounds/scary_face.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/scary_face.png b/graphics/battle_anims/backgrounds/scary_face.png old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/scary_face_contest.bin b/graphics/battle_anims/backgrounds/scary_face_contest.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/scary_face_opponent.bin b/graphics/battle_anims/backgrounds/scary_face_opponent.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/scary_face_player.bin b/graphics/battle_anims/backgrounds/scary_face_player.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/water.pal b/graphics/battle_anims/backgrounds/water.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/backgrounds/water.png b/graphics/battle_anims/backgrounds/water.png old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/cure_bubbles.bin b/graphics/battle_anims/masks/cure_bubbles.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/cure_bubbles.pal b/graphics/battle_anims/masks/cure_bubbles.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/cure_bubbles.png b/graphics/battle_anims/masks/cure_bubbles.png old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/curse.bin b/graphics/battle_anims/masks/curse.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/curse.png b/graphics/battle_anims/masks/curse.png old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/metal_shine.bin b/graphics/battle_anims/masks/metal_shine.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/metal_shine.pal b/graphics/battle_anims/masks/metal_shine.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/metal_shine.png b/graphics/battle_anims/masks/metal_shine.png old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/morning_sun.bin b/graphics/battle_anims/masks/morning_sun.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/morning_sun.pal b/graphics/battle_anims/masks/morning_sun.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/morning_sun.png b/graphics/battle_anims/masks/morning_sun.png old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/stat.png b/graphics/battle_anims/masks/stat.png old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/stat1.pal b/graphics/battle_anims/masks/stat1.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/stat2.pal b/graphics/battle_anims/masks/stat2.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/stat3.pal b/graphics/battle_anims/masks/stat3.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/stat4.pal b/graphics/battle_anims/masks/stat4.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/stat5.pal b/graphics/battle_anims/masks/stat5.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/stat6.pal b/graphics/battle_anims/masks/stat6.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/stat_tilemap_1.bin b/graphics/battle_anims/masks/stat_tilemap_1.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/stat_tilemap_2.bin b/graphics/battle_anims/masks/stat_tilemap_2.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/unknown_D2EDFC.bin b/graphics/battle_anims/masks/unknown_D2EDFC.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/masks/unknown_D2EDFC.png b/graphics/battle_anims/masks/unknown_D2EDFC.png old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/sprites/substitute.bin b/graphics/battle_anims/sprites/substitute.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/sprites/substitute.pal b/graphics/battle_anims/sprites/substitute.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_anims/sprites/substitute.png b/graphics/battle_anims/sprites/substitute.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/ball_display.png b/graphics/battle_interface/ball_display.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/ball_display_unused_extra.png b/graphics/battle_interface/ball_display_unused_extra.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/bar.png b/graphics/battle_interface/bar.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/enemy_mon_shadow.png b/graphics/battle_interface/enemy_mon_shadow.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/expbar.png b/graphics/battle_interface/expbar.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/hpbar.pal b/graphics/battle_interface/hpbar.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/hpbar.png b/graphics/battle_interface/hpbar.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/hpbar_anim.png b/graphics/battle_interface/hpbar_anim.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/misc.png b/graphics/battle_interface/misc.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/misc_frameend.png b/graphics/battle_interface/misc_frameend.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/status2.png b/graphics/battle_interface/status2.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/status3.png b/graphics/battle_interface/status3.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/status4.png b/graphics/battle_interface/status4.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/status_brn.png b/graphics/battle_interface/status_brn.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/status_frz.png b/graphics/battle_interface/status_frz.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/status_par.png b/graphics/battle_interface/status_par.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/status_psn.png b/graphics/battle_interface/status_psn.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/status_slp.png b/graphics/battle_interface/status_slp.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/window.pal b/graphics/battle_interface/window.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/window.png b/graphics/battle_interface/window.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/window2.png b/graphics/battle_interface/window2.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/window3.png b/graphics/battle_interface/window3.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/window4.png b/graphics/battle_interface/window4.png old mode 100755 new mode 100644 diff --git a/graphics/battle_interface/window5.png b/graphics/battle_interface/window5.png old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/building/palette2.pal b/graphics/battle_terrain/building/palette2.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/building/palette3.pal b/graphics/battle_terrain/building/palette3.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/cave/groudon.pal b/graphics/battle_terrain/cave/groudon.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/stadium/battle_tower.pal b/graphics/battle_terrain/stadium/battle_tower.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/stadium/map.bin b/graphics/battle_terrain/stadium/map.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/stadium/palette1.pal b/graphics/battle_terrain/stadium/palette1.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/stadium/palette2.pal b/graphics/battle_terrain/stadium/palette2.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/stadium/palette3.pal b/graphics/battle_terrain/stadium/palette3.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/stadium/palette4.pal b/graphics/battle_terrain/stadium/palette4.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/stadium/palette5.pal b/graphics/battle_terrain/stadium/palette5.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/stadium/palette6.pal b/graphics/battle_terrain/stadium/palette6.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/stadium/palette7.pal b/graphics/battle_terrain/stadium/palette7.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/stadium/tiles.png b/graphics/battle_terrain/stadium/tiles.png old mode 100755 new mode 100644 diff --git a/graphics/battle_terrain/water/kyogre.pal b/graphics/battle_terrain/water/kyogre.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_transitions/vs.png b/graphics/battle_transitions/vs.png old mode 100755 new mode 100644 diff --git a/graphics/battle_transitions/vs_frame.bin b/graphics/battle_transitions/vs_frame.bin old mode 100755 new mode 100644 diff --git a/graphics/battle_transitions/vs_frame.pal b/graphics/battle_transitions/vs_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/battle_transitions/vs_frame.png b/graphics/battle_transitions/vs_frame.png old mode 100755 new mode 100644 diff --git a/graphics/birch_speech/birch.pal b/graphics/birch_speech/birch.pal old mode 100755 new mode 100644 diff --git a/graphics/birch_speech/birch.png b/graphics/birch_speech/birch.png old mode 100755 new mode 100644 diff --git a/graphics/birch_speech/shadow.png b/graphics/birch_speech/shadow.png old mode 100755 new mode 100644 diff --git a/graphics/contest/applause.png b/graphics/contest/applause.png old mode 100755 new mode 100644 diff --git a/graphics/contest/applause_meter.png b/graphics/contest/applause_meter.png old mode 100755 new mode 100644 diff --git a/graphics/contest/audience.png b/graphics/contest/audience.png old mode 100755 new mode 100644 diff --git a/graphics/contest/faces.png b/graphics/contest/faces.png old mode 100755 new mode 100644 diff --git a/graphics/contest/heart.png b/graphics/contest/heart.png old mode 100755 new mode 100644 diff --git a/graphics/contest/judge.pal b/graphics/contest/judge.pal old mode 100755 new mode 100644 diff --git a/graphics/contest/judge.png b/graphics/contest/judge.png old mode 100755 new mode 100644 diff --git a/graphics/contest/judge_symbols.pal b/graphics/contest/judge_symbols.pal old mode 100755 new mode 100644 diff --git a/graphics/contest/judge_symbols.png b/graphics/contest/judge_symbols.png old mode 100755 new mode 100644 diff --git a/graphics/contest/misc.png b/graphics/contest/misc.png old mode 100755 new mode 100644 diff --git a/graphics/contest/misc_2.pal b/graphics/contest/misc_2.pal old mode 100755 new mode 100644 diff --git a/graphics/contest/misc_2.png b/graphics/contest/misc_2.png old mode 100755 new mode 100644 diff --git a/graphics/contest/misc_2_tilemap_1.bin b/graphics/contest/misc_2_tilemap_1.bin old mode 100755 new mode 100644 diff --git a/graphics/contest/misc_2_tilemap_2.bin b/graphics/contest/misc_2_tilemap_2.bin old mode 100755 new mode 100644 diff --git a/graphics/contest/misc_2_tilemap_3.bin b/graphics/contest/misc_2_tilemap_3.bin old mode 100755 new mode 100644 diff --git a/graphics/contest/nextturn.pal b/graphics/contest/nextturn.pal old mode 100755 new mode 100644 diff --git a/graphics/contest/nextturn.png b/graphics/contest/nextturn.png old mode 100755 new mode 100644 diff --git a/graphics/contest/nextturn_numbers.png b/graphics/contest/nextturn_numbers.png old mode 100755 new mode 100644 diff --git a/graphics/contest/nextturn_random.png b/graphics/contest/nextturn_random.png old mode 100755 new mode 100644 diff --git a/graphics/interface/bag_screen.png b/graphics/interface/bag_screen.png old mode 100755 new mode 100644 diff --git a/graphics/interface/bag_screen_female.pal b/graphics/interface/bag_screen_female.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/bag_screen_male.pal b/graphics/interface/bag_screen_male.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/dive.pal b/graphics/interface/ball/dive.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/dive.png b/graphics/interface/ball/dive.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/great.pal b/graphics/interface/ball/great.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/great.png b/graphics/interface/ball/great.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/luxury.pal b/graphics/interface/ball/luxury.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/luxury.png b/graphics/interface/ball/luxury.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/master.pal b/graphics/interface/ball/master.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/master.png b/graphics/interface/ball/master.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/nest.pal b/graphics/interface/ball/nest.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/nest.png b/graphics/interface/ball/nest.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/net.pal b/graphics/interface/ball/net.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/net.png b/graphics/interface/ball/net.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/poke.pal b/graphics/interface/ball/poke.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/poke.png b/graphics/interface/ball/poke.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/premier.pal b/graphics/interface/ball/premier.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/premier.png b/graphics/interface/ball/premier.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/repeat.pal b/graphics/interface/ball/repeat.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/repeat.png b/graphics/interface/ball/repeat.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/safari.pal b/graphics/interface/ball/safari.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/safari.png b/graphics/interface/ball/safari.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/timer.pal b/graphics/interface/ball/timer.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/timer.png b/graphics/interface/ball/timer.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/ultra.pal b/graphics/interface/ball/ultra.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/ball/ultra.png b/graphics/interface/ball/ultra.png old mode 100755 new mode 100644 diff --git a/graphics/interface/ball_open.png b/graphics/interface/ball_open.png old mode 100755 new mode 100644 diff --git a/graphics/interface/blank.pal b/graphics/interface/blank.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/blank.png b/graphics/interface/blank.png old mode 100755 new mode 100644 diff --git a/graphics/interface/check_berry.pal b/graphics/interface/check_berry.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/check_berry.png b/graphics/interface/check_berry.png old mode 100755 new mode 100644 diff --git a/graphics/interface/check_berry_circle.png b/graphics/interface/check_berry_circle.png old mode 100755 new mode 100644 diff --git a/graphics/interface/hold_icons.pal b/graphics/interface/hold_icons.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/hold_icons.png b/graphics/interface/hold_icons.png old mode 100755 new mode 100644 diff --git a/graphics/interface/hpbar_anim.png b/graphics/interface/hpbar_anim.png old mode 100755 new mode 100644 diff --git a/graphics/interface/mart_frame.bin b/graphics/interface/mart_frame.bin old mode 100755 new mode 100644 diff --git a/graphics/interface/mart_frame.png b/graphics/interface/mart_frame.png old mode 100755 new mode 100644 diff --git a/graphics/interface/menu.pal b/graphics/interface/menu.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/menu.png b/graphics/interface/menu.png old mode 100755 new mode 100644 diff --git a/graphics/interface/menu_0.pal b/graphics/interface/menu_0.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/menu_1.pal b/graphics/interface/menu_1.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/money.pal b/graphics/interface/money.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/money.png b/graphics/interface/money.png old mode 100755 new mode 100644 diff --git a/graphics/interface/numbers1.png b/graphics/interface/numbers1.png old mode 100755 new mode 100644 diff --git a/graphics/interface/numbers2.png b/graphics/interface/numbers2.png old mode 100755 new mode 100644 diff --git a/graphics/interface/party_menu_hpbar.png b/graphics/interface/party_menu_hpbar.png old mode 100755 new mode 100644 diff --git a/graphics/interface/party_menu_misc.bin b/graphics/interface/party_menu_misc.bin old mode 100755 new mode 100644 diff --git a/graphics/interface/party_menu_misc.pal b/graphics/interface/party_menu_misc.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/party_menu_misc.png b/graphics/interface/party_menu_misc.png old mode 100755 new mode 100644 diff --git a/graphics/interface/party_menu_ordertext.png b/graphics/interface/party_menu_ordertext.png old mode 100755 new mode 100644 diff --git a/graphics/interface/pokeblock.bin b/graphics/interface/pokeblock.bin old mode 100755 new mode 100644 diff --git a/graphics/interface/pokeblock_case_frame.pal b/graphics/interface/pokeblock_case_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/pokeblock_case_frame.png b/graphics/interface/pokeblock_case_frame.png old mode 100755 new mode 100644 diff --git a/graphics/interface/pokeblock_device.pal b/graphics/interface/pokeblock_device.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/pokeblock_device.png b/graphics/interface/pokeblock_device.png old mode 100755 new mode 100644 diff --git a/graphics/interface/status_icons.pal b/graphics/interface/status_icons.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/status_icons.png b/graphics/interface/status_icons.png old mode 100755 new mode 100644 diff --git a/graphics/interface/status_screen.pal b/graphics/interface/status_screen.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/status_screen.png b/graphics/interface/status_screen.png old mode 100755 new mode 100644 diff --git a/graphics/interface/summary_frames.pal b/graphics/interface/summary_frames.pal old mode 100755 new mode 100644 diff --git a/graphics/interface/summary_frames.png b/graphics/interface/summary_frames.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bg.png b/graphics/intro/intro1_bg.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal1.pal b/graphics/intro/intro1_bgpal1.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal10.pal b/graphics/intro/intro1_bgpal10.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal11.pal b/graphics/intro/intro1_bgpal11.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal12.pal b/graphics/intro/intro1_bgpal12.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal13.pal b/graphics/intro/intro1_bgpal13.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal14.pal b/graphics/intro/intro1_bgpal14.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal15.pal b/graphics/intro/intro1_bgpal15.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal16.pal b/graphics/intro/intro1_bgpal16.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal2.pal b/graphics/intro/intro1_bgpal2.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal3.pal b/graphics/intro/intro1_bgpal3.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal4.pal b/graphics/intro/intro1_bgpal4.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal5.pal b/graphics/intro/intro1_bgpal5.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal6.pal b/graphics/intro/intro1_bgpal6.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal7.pal b/graphics/intro/intro1_bgpal7.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal8.pal b/graphics/intro/intro1_bgpal8.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_bgpal9.pal b/graphics/intro/intro1_bgpal9.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_eon.pal b/graphics/intro/intro1_eon.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_eon.png b/graphics/intro/intro1_eon.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_gamefreak.pal b/graphics/intro/intro1_gamefreak.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_gamefreak.png b/graphics/intro/intro1_gamefreak.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_leaves.png b/graphics/intro/intro1_leaves.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro1_waterdrops.png b/graphics/intro/intro1_waterdrops.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_bgclouds.pal b/graphics/intro/intro2_bgclouds.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_bgclouds.png b/graphics/intro/intro2_bgclouds.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_bgclouds2.png b/graphics/intro/intro2_bgclouds2.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_bgnight.pal b/graphics/intro/intro2_bgnight.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_bgnight.png b/graphics/intro/intro2_bgnight.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_bgtrees.pal b/graphics/intro/intro2_bgtrees.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_bgtrees.png b/graphics/intro/intro2_bgtrees.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_bgtreessmall.png b/graphics/intro/intro2_bgtreessmall.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_bicycle.png b/graphics/intro/intro2_bicycle.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_brendan.pal b/graphics/intro/intro2_brendan.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_brendan.png b/graphics/intro/intro2_brendan.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_grass.pal b/graphics/intro/intro2_grass.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_grass.png b/graphics/intro/intro2_grass.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_latias.pal b/graphics/intro/intro2_latias.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_latias.png b/graphics/intro/intro2_latias.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_latios.pal b/graphics/intro/intro2_latios.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_latios.png b/graphics/intro/intro2_latios.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_may.pal b/graphics/intro/intro2_may.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro2_may.png b/graphics/intro/intro2_may.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro3_attackgfx.png b/graphics/intro/intro3_attackgfx.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro3_explosion.png b/graphics/intro/intro3_explosion.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro3_misc1.pal b/graphics/intro/intro3_misc1.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro3_misc2.pal b/graphics/intro/intro3_misc2.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro3_pokeball.pal b/graphics/intro/intro3_pokeball.pal old mode 100755 new mode 100644 diff --git a/graphics/intro/intro3_pokeball.png b/graphics/intro/intro3_pokeball.png old mode 100755 new mode 100644 diff --git a/graphics/intro/intro3_star.png b/graphics/intro/intro3_star.png old mode 100755 new mode 100644 diff --git a/graphics/misc/birch_bag.pal b/graphics/misc/birch_bag.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/birch_bag.png b/graphics/misc/birch_bag.png old mode 100755 new mode 100644 diff --git a/graphics/misc/birch_ballarrow.pal b/graphics/misc/birch_ballarrow.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/birch_ballarrow.png b/graphics/misc/birch_ballarrow.png old mode 100755 new mode 100644 diff --git a/graphics/misc/birch_circle.pal b/graphics/misc/birch_circle.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/birch_circle.png b/graphics/misc/birch_circle.png old mode 100755 new mode 100644 diff --git a/graphics/misc/birch_grass.pal b/graphics/misc/birch_grass.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/birch_grass.png b/graphics/misc/birch_grass.png old mode 100755 new mode 100644 diff --git a/graphics/misc/cable_car.pal b/graphics/misc/cable_car.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/cable_car.png b/graphics/misc/cable_car.png old mode 100755 new mode 100644 diff --git a/graphics/misc/cable_car_bg.pal b/graphics/misc/cable_car_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/cable_car_bg.png b/graphics/misc/cable_car_bg.png old mode 100755 new mode 100644 diff --git a/graphics/misc/cable_car_cord.png b/graphics/misc/cable_car_cord.png old mode 100755 new mode 100644 diff --git a/graphics/misc/cable_car_door.png b/graphics/misc/cable_car_door.png old mode 100755 new mode 100644 diff --git a/graphics/misc/clock1.pal b/graphics/misc/clock1.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/clock2.pal b/graphics/misc/clock2.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/clock_ampm.png b/graphics/misc/clock_ampm.png old mode 100755 new mode 100644 diff --git a/graphics/misc/clock_hands.png b/graphics/misc/clock_hands.png old mode 100755 new mode 100644 diff --git a/graphics/misc/clock_small.pal b/graphics/misc/clock_small.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/clock_small.png b/graphics/misc/clock_small.png old mode 100755 new mode 100644 diff --git a/graphics/misc/confetti.pal b/graphics/misc/confetti.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/confetti.png b/graphics/misc/confetti.png old mode 100755 new mode 100644 diff --git a/graphics/misc/diploma.png b/graphics/misc/diploma.png old mode 100755 new mode 100644 diff --git a/graphics/misc/diploma_national.pal b/graphics/misc/diploma_national.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/egg_hatch.png b/graphics/misc/egg_hatch.png old mode 100755 new mode 100644 diff --git a/graphics/misc/egg_shard.png b/graphics/misc/egg_shard.png old mode 100755 new mode 100644 diff --git a/graphics/misc/evo_sparkle.pal b/graphics/misc/evo_sparkle.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/evo_sparkle.png b/graphics/misc/evo_sparkle.png old mode 100755 new mode 100644 diff --git a/graphics/misc/interview_frame.pal b/graphics/misc/interview_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/interview_frame.png b/graphics/misc/interview_frame.png old mode 100755 new mode 100644 diff --git a/graphics/misc/ribbons_beauty.pal b/graphics/misc/ribbons_beauty.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/ribbons_cool.pal b/graphics/misc/ribbons_cool.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/ribbons_cute.pal b/graphics/misc/ribbons_cute.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/ribbons_full.png b/graphics/misc/ribbons_full.png old mode 100755 new mode 100644 diff --git a/graphics/misc/ribbons_half.pal b/graphics/misc/ribbons_half.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/ribbons_half.png b/graphics/misc/ribbons_half.png old mode 100755 new mode 100644 diff --git a/graphics/misc/ribbons_smart.pal b/graphics/misc/ribbons_smart.pal old mode 100755 new mode 100644 diff --git a/graphics/misc/ribbons_tough.pal b/graphics/misc/ribbons_tough.pal old mode 100755 new mode 100644 diff --git a/graphics/naming_screen/menu.png b/graphics/naming_screen/menu.png old mode 100755 new mode 100644 diff --git a/graphics/pokedex/area_glow.pal b/graphics/pokedex/area_glow.pal old mode 100755 new mode 100644 diff --git a/graphics/pokedex/area_glow.png b/graphics/pokedex/area_glow.png old mode 100755 new mode 100644 diff --git a/graphics/pokedex/arrows.pal b/graphics/pokedex/arrows.pal old mode 100755 new mode 100644 diff --git a/graphics/pokedex/arrows.png b/graphics/pokedex/arrows.png old mode 100755 new mode 100644 diff --git a/graphics/pokedex/cry_meter.pal b/graphics/pokedex/cry_meter.pal old mode 100755 new mode 100644 diff --git a/graphics/pokedex/cry_meter.png b/graphics/pokedex/cry_meter.png old mode 100755 new mode 100644 diff --git a/graphics/pokedex/menu.png b/graphics/pokedex/menu.png old mode 100755 new mode 100644 diff --git a/graphics/pokedex/menu1.pal b/graphics/pokedex/menu1.pal old mode 100755 new mode 100644 diff --git a/graphics/pokedex/menu2.pal b/graphics/pokedex/menu2.pal old mode 100755 new mode 100644 diff --git a/graphics/pokedex/menu2.png b/graphics/pokedex/menu2.png old mode 100755 new mode 100644 diff --git a/graphics/pokedex/menu3.pal b/graphics/pokedex/menu3.pal old mode 100755 new mode 100644 diff --git a/graphics/pokedex/menu_search.png b/graphics/pokedex/menu_search.png old mode 100755 new mode 100644 diff --git a/graphics/pokedex/noball.png b/graphics/pokedex/noball.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/arrow.pal b/graphics/pokemon_storage/arrow.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/arrow.png b/graphics/pokemon_storage/arrow.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/beach.bin b/graphics/pokemon_storage/beach.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/beach_bg.pal b/graphics/pokemon_storage/beach_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/beach_bg.png b/graphics/pokemon_storage/beach_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/beach_frame.pal b/graphics/pokemon_storage/beach_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/beach_frame.png b/graphics/pokemon_storage/beach_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/box_bg1.pal b/graphics/pokemon_storage/box_bg1.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/box_bg2.pal b/graphics/pokemon_storage/box_bg2.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/box_bg3.pal b/graphics/pokemon_storage/box_bg3.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/box_bg4.pal b/graphics/pokemon_storage/box_bg4.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/cave.bin b/graphics/pokemon_storage/cave.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/cave_bg.pal b/graphics/pokemon_storage/cave_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/cave_bg.png b/graphics/pokemon_storage/cave_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/cave_frame.pal b/graphics/pokemon_storage/cave_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/cave_frame.png b/graphics/pokemon_storage/cave_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/city.bin b/graphics/pokemon_storage/city.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/city_bg.pal b/graphics/pokemon_storage/city_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/city_bg.png b/graphics/pokemon_storage/city_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/city_frame.pal b/graphics/pokemon_storage/city_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/city_frame.png b/graphics/pokemon_storage/city_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/crag.bin b/graphics/pokemon_storage/crag.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/crag_bg.pal b/graphics/pokemon_storage/crag_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/crag_bg.png b/graphics/pokemon_storage/crag_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/crag_frame.pal b/graphics/pokemon_storage/crag_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/crag_frame.png b/graphics/pokemon_storage/crag_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/desert.bin b/graphics/pokemon_storage/desert.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/desert_bg.pal b/graphics/pokemon_storage/desert_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/desert_bg.png b/graphics/pokemon_storage/desert_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/desert_frame.pal b/graphics/pokemon_storage/desert_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/desert_frame.png b/graphics/pokemon_storage/desert_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/forest.bin b/graphics/pokemon_storage/forest.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/forest_bg.pal b/graphics/pokemon_storage/forest_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/forest_bg.png b/graphics/pokemon_storage/forest_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/forest_frame.pal b/graphics/pokemon_storage/forest_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/forest_frame.png b/graphics/pokemon_storage/forest_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/machine.bin b/graphics/pokemon_storage/machine.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/machine_bg.pal b/graphics/pokemon_storage/machine_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/machine_bg.png b/graphics/pokemon_storage/machine_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/machine_frame.pal b/graphics/pokemon_storage/machine_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/machine_frame.png b/graphics/pokemon_storage/machine_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/plain.bin b/graphics/pokemon_storage/plain.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/plain_bg.pal b/graphics/pokemon_storage/plain_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/plain_bg.png b/graphics/pokemon_storage/plain_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/plain_frame.pal b/graphics/pokemon_storage/plain_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/plain_frame.png b/graphics/pokemon_storage/plain_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/pokecenter.bin b/graphics/pokemon_storage/pokecenter.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/pokecenter_bg.pal b/graphics/pokemon_storage/pokecenter_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/pokecenter_bg.png b/graphics/pokemon_storage/pokecenter_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/pokecenter_frame.pal b/graphics/pokemon_storage/pokecenter_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/pokecenter_frame.png b/graphics/pokemon_storage/pokecenter_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/polkadot.bin b/graphics/pokemon_storage/polkadot.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/polkadot_bg.pal b/graphics/pokemon_storage/polkadot_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/polkadot_bg.png b/graphics/pokemon_storage/polkadot_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/polkadot_frame.pal b/graphics/pokemon_storage/polkadot_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/polkadot_frame.png b/graphics/pokemon_storage/polkadot_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/river.bin b/graphics/pokemon_storage/river.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/river_bg.pal b/graphics/pokemon_storage/river_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/river_bg.png b/graphics/pokemon_storage/river_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/river_frame.pal b/graphics/pokemon_storage/river_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/river_frame.png b/graphics/pokemon_storage/river_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/savanna.bin b/graphics/pokemon_storage/savanna.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/savanna_bg.pal b/graphics/pokemon_storage/savanna_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/savanna_bg.png b/graphics/pokemon_storage/savanna_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/savanna_frame.pal b/graphics/pokemon_storage/savanna_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/savanna_frame.png b/graphics/pokemon_storage/savanna_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/seafloor.bin b/graphics/pokemon_storage/seafloor.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/seafloor_bg.pal b/graphics/pokemon_storage/seafloor_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/seafloor_bg.png b/graphics/pokemon_storage/seafloor_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/seafloor_frame.pal b/graphics/pokemon_storage/seafloor_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/seafloor_frame.png b/graphics/pokemon_storage/seafloor_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/sky.bin b/graphics/pokemon_storage/sky.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/sky_bg.pal b/graphics/pokemon_storage/sky_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/sky_bg.png b/graphics/pokemon_storage/sky_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/sky_frame.pal b/graphics/pokemon_storage/sky_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/sky_frame.png b/graphics/pokemon_storage/sky_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/snow.bin b/graphics/pokemon_storage/snow.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/snow_bg.pal b/graphics/pokemon_storage/snow_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/snow_bg.png b/graphics/pokemon_storage/snow_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/snow_frame.pal b/graphics/pokemon_storage/snow_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/snow_frame.png b/graphics/pokemon_storage/snow_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/volcano.bin b/graphics/pokemon_storage/volcano.bin old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/volcano_bg.pal b/graphics/pokemon_storage/volcano_bg.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/volcano_bg.png b/graphics/pokemon_storage/volcano_bg.png old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/volcano_frame.pal b/graphics/pokemon_storage/volcano_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokemon_storage/volcano_frame.png b/graphics/pokemon_storage/volcano_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokenav/cursor.pal b/graphics/pokenav/cursor.pal old mode 100755 new mode 100644 diff --git a/graphics/pokenav/cursor_large.png b/graphics/pokenav/cursor_large.png old mode 100755 new mode 100644 diff --git a/graphics/pokenav/cursor_small.png b/graphics/pokenav/cursor_small.png old mode 100755 new mode 100644 diff --git a/graphics/pokenav/icon.pal b/graphics/pokenav/icon.pal old mode 100755 new mode 100644 diff --git a/graphics/pokenav/icon.png b/graphics/pokenav/icon.png old mode 100755 new mode 100644 diff --git a/graphics/pokenav/map_frame.pal b/graphics/pokenav/map_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/pokenav/map_frame.png b/graphics/pokenav/map_frame.png old mode 100755 new mode 100644 diff --git a/graphics/pokenav/map_misc.pal b/graphics/pokenav/map_misc.pal old mode 100755 new mode 100644 diff --git a/graphics/pokenav/map_misc.png b/graphics/pokenav/map_misc.png old mode 100755 new mode 100644 diff --git a/graphics/pokenav/map_squares.pal b/graphics/pokenav/map_squares.pal old mode 100755 new mode 100644 diff --git a/graphics/pokenav/region_map.pal b/graphics/pokenav/region_map.pal old mode 100755 new mode 100644 diff --git a/graphics/pokenav/region_map.png b/graphics/pokenav/region_map.png old mode 100755 new mode 100644 diff --git a/graphics/pokenav/trainereyes_misc.png b/graphics/pokenav/trainereyes_misc.png old mode 100755 new mode 100644 diff --git a/graphics/pokenav/trainereyes_misc_pal.bin b/graphics/pokenav/trainereyes_misc_pal.bin old mode 100755 new mode 100644 diff --git a/graphics/roulette/azurill.pal b/graphics/roulette/azurill.pal old mode 100755 new mode 100644 diff --git a/graphics/roulette/azurill.png b/graphics/roulette/azurill.png old mode 100755 new mode 100644 diff --git a/graphics/roulette/ball.pal b/graphics/roulette/ball.pal old mode 100755 new mode 100644 diff --git a/graphics/roulette/ball.png b/graphics/roulette/ball.png old mode 100755 new mode 100644 diff --git a/graphics/roulette/ball_counter.pal b/graphics/roulette/ball_counter.pal old mode 100755 new mode 100644 diff --git a/graphics/roulette/ball_counter.png b/graphics/roulette/ball_counter.png old mode 100755 new mode 100644 diff --git a/graphics/roulette/center.png b/graphics/roulette/center.png old mode 100755 new mode 100644 diff --git a/graphics/roulette/cursor.pal b/graphics/roulette/cursor.pal old mode 100755 new mode 100644 diff --git a/graphics/roulette/cursor.png b/graphics/roulette/cursor.png old mode 100755 new mode 100644 diff --git a/graphics/roulette/makuhita.pal b/graphics/roulette/makuhita.pal old mode 100755 new mode 100644 diff --git a/graphics/roulette/makuhita.png b/graphics/roulette/makuhita.png old mode 100755 new mode 100644 diff --git a/graphics/roulette/poke_icons.pal b/graphics/roulette/poke_icons.pal old mode 100755 new mode 100644 diff --git a/graphics/roulette/poke_icons.png b/graphics/roulette/poke_icons.png old mode 100755 new mode 100644 diff --git a/graphics/roulette/shadow.pal b/graphics/roulette/shadow.pal old mode 100755 new mode 100644 diff --git a/graphics/roulette/shadow.png b/graphics/roulette/shadow.png old mode 100755 new mode 100644 diff --git a/graphics/roulette/shroomish.pal b/graphics/roulette/shroomish.pal old mode 100755 new mode 100644 diff --git a/graphics/roulette/shroomish.png b/graphics/roulette/shroomish.png old mode 100755 new mode 100644 diff --git a/graphics/roulette/skitty.pal b/graphics/roulette/skitty.pal old mode 100755 new mode 100644 diff --git a/graphics/roulette/skitty.png b/graphics/roulette/skitty.png old mode 100755 new mode 100644 diff --git a/graphics/roulette/tailow.pal b/graphics/roulette/tailow.pal old mode 100755 new mode 100644 diff --git a/graphics/roulette/tailow.png b/graphics/roulette/tailow.png old mode 100755 new mode 100644 diff --git a/graphics/roulette/wynaut.pal b/graphics/roulette/wynaut.pal old mode 100755 new mode 100644 diff --git a/graphics/roulette/wynaut.png b/graphics/roulette/wynaut.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/numbers/0.png b/graphics/slot_machine/numbers/0.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/numbers/1.png b/graphics/slot_machine/numbers/1.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/numbers/2.png b/graphics/slot_machine/numbers/2.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/numbers/3.png b/graphics/slot_machine/numbers/3.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/numbers/4.png b/graphics/slot_machine/numbers/4.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/numbers/5.png b/graphics/slot_machine/numbers/5.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/numbers/6.png b/graphics/slot_machine/numbers/6.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/numbers/7.png b/graphics/slot_machine/numbers/7.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/numbers/8.png b/graphics/slot_machine/numbers/8.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/numbers/9.png b/graphics/slot_machine/numbers/9.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/reel_machine.png b/graphics/slot_machine/reel_machine.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/reel_pikachu.png b/graphics/slot_machine/reel_pikachu.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/reel_symbols/1.png b/graphics/slot_machine/reel_symbols/1.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/reel_symbols/2.png b/graphics/slot_machine/reel_symbols/2.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/reel_symbols/3.png b/graphics/slot_machine/reel_symbols/3.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/reel_symbols/4.png b/graphics/slot_machine/reel_symbols/4.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/reel_symbols/5.png b/graphics/slot_machine/reel_symbols/5.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/reel_symbols/6.png b/graphics/slot_machine/reel_symbols/6.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/reel_symbols/7.png b/graphics/slot_machine/reel_symbols/7.png old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/spr0.pal b/graphics/slot_machine/spr0.pal old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/spr1.pal b/graphics/slot_machine/spr1.pal old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/spr2_ruby.pal b/graphics/slot_machine/spr2_ruby.pal old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/spr3_ruby.pal b/graphics/slot_machine/spr3_ruby.pal old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/spr4.pal b/graphics/slot_machine/spr4.pal old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/spr5.pal b/graphics/slot_machine/spr5.pal old mode 100755 new mode 100644 diff --git a/graphics/slot_machine/spr6.pal b/graphics/slot_machine/spr6.pal old mode 100755 new mode 100644 diff --git a/graphics/title_screen/groudon.png b/graphics/title_screen/groudon.png old mode 100755 new mode 100644 diff --git a/graphics/title_screen/groudon_dark.pal b/graphics/title_screen/groudon_dark.pal old mode 100755 new mode 100644 diff --git a/graphics/title_screen/groudon_glow.pal b/graphics/title_screen/groudon_glow.pal old mode 100755 new mode 100644 diff --git a/graphics/title_screen/kyogre.png b/graphics/title_screen/kyogre.png old mode 100755 new mode 100644 diff --git a/graphics/title_screen/kyogre_dark.pal b/graphics/title_screen/kyogre_dark.pal old mode 100755 new mode 100644 diff --git a/graphics/title_screen/kyogre_glow.pal b/graphics/title_screen/kyogre_glow.pal old mode 100755 new mode 100644 diff --git a/graphics/title_screen/logo_ruby.pal b/graphics/title_screen/logo_ruby.pal old mode 100755 new mode 100644 diff --git a/graphics/title_screen/logo_sapphire.pal b/graphics/title_screen/logo_sapphire.pal old mode 100755 new mode 100644 diff --git a/graphics/title_screen/pokemon_ruby.png b/graphics/title_screen/pokemon_ruby.png old mode 100755 new mode 100644 diff --git a/graphics/title_screen/pokemon_sapphire.png b/graphics/title_screen/pokemon_sapphire.png old mode 100755 new mode 100644 diff --git a/graphics/title_screen/rubyversion.png b/graphics/title_screen/rubyversion.png old mode 100755 new mode 100644 diff --git a/graphics/title_screen/sapphireversion.png b/graphics/title_screen/sapphireversion.png old mode 100755 new mode 100644 diff --git a/graphics/trade/cable_end.png b/graphics/trade/cable_end.png old mode 100755 new mode 100644 diff --git a/graphics/trade/gba.pal b/graphics/trade/gba.pal old mode 100755 new mode 100644 diff --git a/graphics/trade/gba.png b/graphics/trade/gba.png old mode 100755 new mode 100644 diff --git a/graphics/trade/gba_screen.png b/graphics/trade/gba_screen.png old mode 100755 new mode 100644 diff --git a/graphics/trade/glow1.png b/graphics/trade/glow1.png old mode 100755 new mode 100644 diff --git a/graphics/trade/glow2.png b/graphics/trade/glow2.png old mode 100755 new mode 100644 diff --git a/graphics/trade/misc.pal b/graphics/trade/misc.pal old mode 100755 new mode 100644 diff --git a/graphics/trade/shadow.pal b/graphics/trade/shadow.pal old mode 100755 new mode 100644 diff --git a/graphics/trade/shadow.png b/graphics/trade/shadow.png old mode 100755 new mode 100644 diff --git a/graphics/types/bug.png b/graphics/types/bug.png old mode 100755 new mode 100644 diff --git a/graphics/types/contest_beauty.png b/graphics/types/contest_beauty.png old mode 100755 new mode 100644 diff --git a/graphics/types/contest_cool.png b/graphics/types/contest_cool.png old mode 100755 new mode 100644 diff --git a/graphics/types/contest_cute.png b/graphics/types/contest_cute.png old mode 100755 new mode 100644 diff --git a/graphics/types/contest_smart.png b/graphics/types/contest_smart.png old mode 100755 new mode 100644 diff --git a/graphics/types/contest_tough.png b/graphics/types/contest_tough.png old mode 100755 new mode 100644 diff --git a/graphics/types/dark.png b/graphics/types/dark.png old mode 100755 new mode 100644 diff --git a/graphics/types/dragon.png b/graphics/types/dragon.png old mode 100755 new mode 100644 diff --git a/graphics/types/electric.png b/graphics/types/electric.png old mode 100755 new mode 100644 diff --git a/graphics/types/fight.png b/graphics/types/fight.png old mode 100755 new mode 100644 diff --git a/graphics/types/fire.png b/graphics/types/fire.png old mode 100755 new mode 100644 diff --git a/graphics/types/flying.png b/graphics/types/flying.png old mode 100755 new mode 100644 diff --git a/graphics/types/ghost.png b/graphics/types/ghost.png old mode 100755 new mode 100644 diff --git a/graphics/types/grass.png b/graphics/types/grass.png old mode 100755 new mode 100644 diff --git a/graphics/types/ground.png b/graphics/types/ground.png old mode 100755 new mode 100644 diff --git a/graphics/types/ice.png b/graphics/types/ice.png old mode 100755 new mode 100644 diff --git a/graphics/types/move_types_1.pal b/graphics/types/move_types_1.pal old mode 100755 new mode 100644 diff --git a/graphics/types/move_types_2.pal b/graphics/types/move_types_2.pal old mode 100755 new mode 100644 diff --git a/graphics/types/move_types_3.pal b/graphics/types/move_types_3.pal old mode 100755 new mode 100644 diff --git a/graphics/types/mystery.png b/graphics/types/mystery.png old mode 100755 new mode 100644 diff --git a/graphics/types/normal.png b/graphics/types/normal.png old mode 100755 new mode 100644 diff --git a/graphics/types/poison.png b/graphics/types/poison.png old mode 100755 new mode 100644 diff --git a/graphics/types/psychic.png b/graphics/types/psychic.png old mode 100755 new mode 100644 diff --git a/graphics/types/rock.png b/graphics/types/rock.png old mode 100755 new mode 100644 diff --git a/graphics/types/steel.png b/graphics/types/steel.png old mode 100755 new mode 100644 diff --git a/graphics/types/water.png b/graphics/types/water.png old mode 100755 new mode 100644 diff --git a/graphics/unknown/ball.pal b/graphics/unknown/ball.pal old mode 100755 new mode 100644 diff --git a/graphics/unknown/ball.png b/graphics/unknown/ball.png old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_3E3BE0.png b/graphics/unknown/unknown_3E3BE0.png old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D04388.png b/graphics/unknown/unknown_D04388.png old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D07B68.pal b/graphics/unknown/unknown_D07B68.pal old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D07B68.png b/graphics/unknown/unknown_D07B68.png old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D07B68_2.pal b/graphics/unknown/unknown_D07B68_2.pal old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D0CFAC.bin b/graphics/unknown/unknown_D0CFAC.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D0CFD0.bin b/graphics/unknown/unknown_D0CFD0.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D0CFF4.bin b/graphics/unknown/unknown_D0CFF4.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D0D070.bin b/graphics/unknown/unknown_D0D070.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D0D2B4.bin b/graphics/unknown/unknown_D0D2B4.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D12FEC.png b/graphics/unknown/unknown_D12FEC.png old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D1300C.png b/graphics/unknown/unknown_D1300C.png old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D15D64.bin b/graphics/unknown/unknown_D15D64.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D17424.bin b/graphics/unknown/unknown_D17424.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D176CC.bin b/graphics/unknown/unknown_D176CC.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D177D8.bin b/graphics/unknown/unknown_D177D8.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D17C3C.bin b/graphics/unknown/unknown_D17C3C.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D1C060.bin b/graphics/unknown/unknown_D1C060.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D1C060.pal b/graphics/unknown/unknown_D1C060.pal old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_D1C060.png b/graphics/unknown/unknown_D1C060.png old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E6BC04.bin b/graphics/unknown/unknown_E6BC04.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E70968.bin b/graphics/unknown/unknown_E70968.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E70C38.bin b/graphics/unknown/unknown_E70C38.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E70F0C.bin b/graphics/unknown/unknown_E70F0C.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E8096C.png b/graphics/unknown/unknown_E8096C.png old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E953D0.bin b/graphics/unknown/unknown_E953D0.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E966B8.pal b/graphics/unknown/unknown_E966B8.pal old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E96738.bin b/graphics/unknown/unknown_E96738.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E96D2C.bin b/graphics/unknown/unknown_E96D2C.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E997E8.pal b/graphics/unknown/unknown_E997E8.pal old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E99FB0.bin b/graphics/unknown/unknown_E99FB0.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E9AB40.pal b/graphics/unknown/unknown_E9AB40.pal old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E9AB60.bin b/graphics/unknown/unknown_E9AB60.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E9C6DC.bin b/graphics/unknown/unknown_E9C6DC.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E9F7E4.bin b/graphics/unknown/unknown_E9F7E4.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E9F988.pal b/graphics/unknown/unknown_E9F988.pal old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E9F9E8.pal b/graphics/unknown/unknown_E9F9E8.pal old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E9FBA0.bin b/graphics/unknown/unknown_E9FBA0.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E9FC64.bin b/graphics/unknown/unknown_E9FC64.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E9FEB4.bin b/graphics/unknown/unknown_E9FEB4.bin old mode 100755 new mode 100644 diff --git a/graphics/unknown/unknown_E9FF58.bin b/graphics/unknown/unknown_E9FF58.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/basic_frame.bin b/graphics/unused/basic_frame.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/basic_frame.pal b/graphics/unused/basic_frame.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/basic_frame.png b/graphics/unused/basic_frame.png old mode 100755 new mode 100644 diff --git a/graphics/unused/battle_anim_023.pal b/graphics/unused/battle_anim_023.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/blank_frame.bin b/graphics/unused/blank_frame.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/blue_frame.bin b/graphics/unused/blue_frame.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/color_frames.pal b/graphics/unused/color_frames.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/color_frames.png b/graphics/unused/color_frames.png old mode 100755 new mode 100644 diff --git a/graphics/unused/goosuto.bin b/graphics/unused/goosuto.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/goosuto.pal b/graphics/unused/goosuto.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/goosuto.png b/graphics/unused/goosuto.png old mode 100755 new mode 100644 diff --git a/graphics/unused/green_frame.bin b/graphics/unused/green_frame.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/line_sketch.pal b/graphics/unused/line_sketch.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/line_sketch.png b/graphics/unused/line_sketch.png old mode 100755 new mode 100644 diff --git a/graphics/unused/line_sketch_2.bin b/graphics/unused/line_sketch_2.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/line_sketch_2.png b/graphics/unused/line_sketch_2.png old mode 100755 new mode 100644 diff --git a/graphics/unused/metronome_hand_small.png b/graphics/unused/metronome_hand_small.png old mode 100755 new mode 100644 diff --git a/graphics/unused/music_notes.png b/graphics/unused/music_notes.png old mode 100755 new mode 100644 diff --git a/graphics/unused/numbers.pal b/graphics/unused/numbers.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/numbers.png b/graphics/unused/numbers.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_battle_interface_1.png b/graphics/unused/old_battle_interface_1.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_battle_interface_2.png b/graphics/unused/old_battle_interface_2.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_battle_interface_3.png b/graphics/unused/old_battle_interface_3.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_battle_interface_tilemap.bin b/graphics/unused/old_battle_interface_tilemap.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/old_beatup.pal b/graphics/unused/old_beatup.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/old_beatup.png b/graphics/unused/old_beatup.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_bulbasaur.png b/graphics/unused/old_bulbasaur.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_bulbasaur2.png b/graphics/unused/old_bulbasaur2.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_charizard.png b/graphics/unused/old_charizard.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_charmap.bin b/graphics/unused/old_charmap.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/old_charmap.pal b/graphics/unused/old_charmap.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/old_charmap.png b/graphics/unused/old_charmap.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest.bin b/graphics/unused/old_contest.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest.pal b/graphics/unused/old_contest.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest_2.bin b/graphics/unused/old_contest_2.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest_2.pal b/graphics/unused/old_contest_2.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest_2_1.png b/graphics/unused/old_contest_2_1.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest_2_2.png b/graphics/unused/old_contest_2_2.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest_classes.png b/graphics/unused/old_contest_classes.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest_floor.png b/graphics/unused/old_contest_floor.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest_frame_1.png b/graphics/unused/old_contest_frame_1.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest_frame_2.png b/graphics/unused/old_contest_frame_2.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest_meter.png b/graphics/unused/old_contest_meter.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest_numbers.png b/graphics/unused/old_contest_numbers.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_contest_symbols.png b/graphics/unused/old_contest_symbols.png old mode 100755 new mode 100644 diff --git a/graphics/unused/old_pal1.pal b/graphics/unused/old_pal1.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/old_pal2.pal b/graphics/unused/old_pal2.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/old_pal3.pal b/graphics/unused/old_pal3.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/old_pal4.pal b/graphics/unused/old_pal4.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/old_pal5.pal b/graphics/unused/old_pal5.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/old_pal6.pal b/graphics/unused/old_pal6.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/old_pal7.pal b/graphics/unused/old_pal7.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/red_frame.bin b/graphics/unused/red_frame.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/shadow.pal b/graphics/unused/shadow.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/shadow.png b/graphics/unused/shadow.png old mode 100755 new mode 100644 diff --git a/graphics/unused/water_splash.bin b/graphics/unused/water_splash.bin old mode 100755 new mode 100644 diff --git a/graphics/unused/water_splash.pal b/graphics/unused/water_splash.pal old mode 100755 new mode 100644 diff --git a/graphics/unused/water_splash.png b/graphics/unused/water_splash.png old mode 100755 new mode 100644 diff --git a/graphics/unused/yellow_frame.bin b/graphics/unused/yellow_frame.bin old mode 100755 new mode 100644 diff --git a/graphics/weather/fog1.bin b/graphics/weather/fog1.bin old mode 100755 new mode 100644 diff --git a/include/data/field_map_obj/anim_func_ptrs.h b/include/data/field_map_obj/anim_func_ptrs.h old mode 100755 new mode 100644 diff --git a/include/data/field_map_obj/base_oam.h b/include/data/field_map_obj/base_oam.h old mode 100755 new mode 100644 diff --git a/include/data/field_map_obj/berry_tree_graphics_tables.h b/include/data/field_map_obj/berry_tree_graphics_tables.h old mode 100755 new mode 100644 diff --git a/include/data/field_map_obj/callback_subroutine_pointers.h b/include/data/field_map_obj/callback_subroutine_pointers.h old mode 100755 new mode 100644 diff --git a/include/data/field_map_obj/field_effect_object_template_pointers.h b/include/data/field_map_obj/field_effect_object_template_pointers.h old mode 100755 new mode 100644 diff --git a/include/data/field_map_obj/field_effect_objects.h b/include/data/field_map_obj/field_effect_objects.h old mode 100755 new mode 100644 diff --git a/include/data/field_map_obj/map_object_anims.h b/include/data/field_map_obj/map_object_anims.h old mode 100755 new mode 100644 diff --git a/include/data/field_map_obj/map_object_graphics_info.h b/include/data/field_map_obj/map_object_graphics_info.h old mode 100755 new mode 100644 diff --git a/include/data/field_map_obj/map_object_graphics_info_pointers.h b/include/data/field_map_obj/map_object_graphics_info_pointers.h old mode 100755 new mode 100644 diff --git a/include/data/field_map_obj/map_object_pic_tables.h b/include/data/field_map_obj/map_object_pic_tables.h old mode 100755 new mode 100644 diff --git a/include/data/field_map_obj/map_object_subsprites.h b/include/data/field_map_obj/map_object_subsprites.h old mode 100755 new mode 100644 diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h old mode 100755 new mode 100644 diff --git a/include/field_map_obj.h b/include/field_map_obj.h old mode 100755 new mode 100644 diff --git a/ld_script.txt b/ld_script.txt old mode 100755 new mode 100644 diff --git a/misc.mk b/misc.mk old mode 100755 new mode 100644 diff --git a/src/field_map_obj.c b/src/field_map_obj.c old mode 100755 new mode 100644 diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c old mode 100755 new mode 100644 -- cgit v1.2.3 From 150adc0e4f65640c2484027d1b28101fb4cc75ee Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 27 Jun 2017 15:04:03 -0400 Subject: Remove unnecessary double braces --- src/pokemon_data.c | 728 ++++++++++++++++++++++++++--------------------------- 1 file changed, 364 insertions(+), 364 deletions(-) diff --git a/src/pokemon_data.c b/src/pokemon_data.c index bd2f4513f..bf7caf85e 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -15910,72 +15910,72 @@ const u16 gChimechoLevelUpLearnset[] = { }; const struct EvolutionData gEvolutionTable[] = { - {{ // ?????????? - }}, {{ // Bulbasaur + { // ?????????? + }, {{ // Bulbasaur {EVO_LEVEL, 16, SPECIES_IVYSAUR}, }}, {{ // Ivysaur {EVO_LEVEL, 32, SPECIES_VENUSAUR}, - }}, {{ // Venusaur - }}, {{ // Charmander + }}, { // Venusaur + }, {{ // Charmander {EVO_LEVEL, 16, SPECIES_CHARMELEON}, }}, {{ // Charmeleon {EVO_LEVEL, 36, SPECIES_CHARIZARD}, - }}, {{ // Charizard - }}, {{ // Squirtle + }}, { // Charizard + }, {{ // Squirtle {EVO_LEVEL, 16, SPECIES_WARTORTLE}, }}, {{ // Wartortle {EVO_LEVEL, 36, SPECIES_BLASTOISE}, - }}, {{ // Blastoise - }}, {{ // Caterpie + }}, { // Blastoise + }, {{ // Caterpie {EVO_LEVEL, 7, SPECIES_METAPOD}, }}, {{ // Metapod {EVO_LEVEL, 10, SPECIES_BUTTERFREE}, - }}, {{ // Butterfree - }}, {{ // Weedle + }}, { // Butterfree + }, {{ // Weedle {EVO_LEVEL, 7, SPECIES_KAKUNA}, }}, {{ // Kakuna {EVO_LEVEL, 10, SPECIES_BEEDRILL}, - }}, {{ // Beedrill - }}, {{ // Pidgey + }}, { // Beedrill + }, {{ // Pidgey {EVO_LEVEL, 18, SPECIES_PIDGEOTTO}, }}, {{ // Pidgeotto {EVO_LEVEL, 36, SPECIES_PIDGEOT}, - }}, {{ // Pidgeot - }}, {{ // Rattata + }}, { // Pidgeot + }, {{ // Rattata {EVO_LEVEL, 20, SPECIES_RATICATE}, - }}, {{ // Raticate - }}, {{ // Spearow + }}, { // Raticate + }, {{ // Spearow {EVO_LEVEL, 20, SPECIES_FEAROW}, - }}, {{ // Fearow - }}, {{ // Ekans + }}, { // Fearow + }, {{ // Ekans {EVO_LEVEL, 22, SPECIES_ARBOK}, - }}, {{ // Arbok - }}, {{ // Pikachu + }}, { // Arbok + }, {{ // Pikachu {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}, - }}, {{ // Raichu - }}, {{ // Sandshrew + }}, { // Raichu + }, {{ // Sandshrew {EVO_LEVEL, 22, SPECIES_SANDSLASH}, - }}, {{ // Sandslash - }}, {{ // Nidoran♀ + }}, { // Sandslash + }, {{ // Nidoran♀ {EVO_LEVEL, 16, SPECIES_NIDORINA}, }}, {{ // Nidorina {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}, - }}, {{ // Nidoqueen - }}, {{ // Nidoran♂ + }}, { // Nidoqueen + }, {{ // Nidoran♂ {EVO_LEVEL, 16, SPECIES_NIDORINO}, }}, {{ // Nidorino {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}, - }}, {{ // Nidoking - }}, {{ // Clefairy + }}, { // Nidoking + }, {{ // Clefairy {EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}, - }}, {{ // Clefable - }}, {{ // Vulpix + }}, { // Clefable + }, {{ // Vulpix {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}, - }}, {{ // Ninetales - }}, {{ // Jigglypuff + }}, { // Ninetales + }, {{ // Jigglypuff {EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}, - }}, {{ // Wigglytuff - }}, {{ // Zubat + }}, { // Wigglytuff + }, {{ // Zubat {EVO_LEVEL, 22, SPECIES_GOLBAT}, }}, {{ // Golbat {EVO_FRIENDSHIP, 0, SPECIES_CROBAT}, @@ -15984,199 +15984,199 @@ const struct EvolutionData gEvolutionTable[] = { }}, {{ // Gloom {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}, - }}, {{ // Vileplume - }}, {{ // Paras + }}, { // Vileplume + }, {{ // Paras {EVO_LEVEL, 24, SPECIES_PARASECT}, - }}, {{ // Parasect - }}, {{ // Venonat + }}, { // Parasect + }, {{ // Venonat {EVO_LEVEL, 31, SPECIES_VENOMOTH}, - }}, {{ // Venomoth - }}, {{ // Diglett + }}, { // Venomoth + }, {{ // Diglett {EVO_LEVEL, 26, SPECIES_DUGTRIO}, - }}, {{ // Dugtrio - }}, {{ // Meowth + }}, { // Dugtrio + }, {{ // Meowth {EVO_LEVEL, 28, SPECIES_PERSIAN}, - }}, {{ // Persian - }}, {{ // Psyduck + }}, { // Persian + }, {{ // Psyduck {EVO_LEVEL, 33, SPECIES_GOLDUCK}, - }}, {{ // Golduck - }}, {{ // Mankey + }}, { // Golduck + }, {{ // Mankey {EVO_LEVEL, 28, SPECIES_PRIMEAPE}, - }}, {{ // Primeape - }}, {{ // Growlithe + }}, { // Primeape + }, {{ // Growlithe {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}, - }}, {{ // Arcanine - }}, {{ // Poliwag + }}, { // Arcanine + }, {{ // Poliwag {EVO_LEVEL, 25, SPECIES_POLIWHIRL}, }}, {{ // Poliwhirl {EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, - }}, {{ // Poliwrath - }}, {{ // Abra + }}, { // Poliwrath + }, {{ // Abra {EVO_LEVEL, 16, SPECIES_KADABRA}, }}, {{ // Kadabra {EVO_TRADE, 0, SPECIES_ALAKAZAM}, - }}, {{ // Alakazam - }}, {{ // Machop + }}, { // Alakazam + }, {{ // Machop {EVO_LEVEL, 28, SPECIES_MACHOKE}, }}, {{ // Machoke {EVO_TRADE, 0, SPECIES_MACHAMP}, - }}, {{ // Machamp - }}, {{ // Bellsprout + }}, { // Machamp + }, {{ // Bellsprout {EVO_LEVEL, 21, SPECIES_WEEPINBELL}, }}, {{ // Weepinbell {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}, - }}, {{ // Victreebel - }}, {{ // Tentacool + }}, { // Victreebel + }, {{ // Tentacool {EVO_LEVEL, 30, SPECIES_TENTACRUEL}, - }}, {{ // Tentacruel - }}, {{ // Geodude + }}, { // Tentacruel + }, {{ // Geodude {EVO_LEVEL, 25, SPECIES_GRAVELER}, }}, {{ // Graveler {EVO_TRADE, 0, SPECIES_GOLEM}, - }}, {{ // Golem - }}, {{ // Ponyta + }}, { // Golem + }, {{ // Ponyta {EVO_LEVEL, 40, SPECIES_RAPIDASH}, - }}, {{ // Rapidash - }}, {{ // Slowpoke + }}, { // Rapidash + }, {{ // Slowpoke {EVO_LEVEL, 37, SPECIES_SLOWBRO}, {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, - }}, {{ // Slowbro - }}, {{ // Magnemite + }}, { // Slowbro + }, {{ // Magnemite {EVO_LEVEL, 30, SPECIES_MAGNETON}, - }}, {{ // Magneton - }}, {{ // Farfetch'd - }}, {{ // Doduo + }}, { // Magneton + }, { // Farfetch'd + }, {{ // Doduo {EVO_LEVEL, 31, SPECIES_DODRIO}, - }}, {{ // Dodrio - }}, {{ // Seel + }}, { // Dodrio + }, {{ // Seel {EVO_LEVEL, 34, SPECIES_DEWGONG}, - }}, {{ // Dewgong - }}, {{ // Grimer + }}, { // Dewgong + }, {{ // Grimer {EVO_LEVEL, 38, SPECIES_MUK}, - }}, {{ // Muk - }}, {{ // Shellder + }}, { // Muk + }, {{ // Shellder {EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}, - }}, {{ // Cloyster - }}, {{ // Gastly + }}, { // Cloyster + }, {{ // Gastly {EVO_LEVEL, 25, SPECIES_HAUNTER}, }}, {{ // Haunter {EVO_TRADE, 0, SPECIES_GENGAR}, - }}, {{ // Gengar - }}, {{ // Onix + }}, { // Gengar + }, {{ // Onix {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, }}, {{ // Drowzee {EVO_LEVEL, 26, SPECIES_HYPNO}, - }}, {{ // Hypno - }}, {{ // Krabby + }}, { // Hypno + }, {{ // Krabby {EVO_LEVEL, 28, SPECIES_KINGLER}, - }}, {{ // Kingler - }}, {{ // Voltorb + }}, { // Kingler + }, {{ // Voltorb {EVO_LEVEL, 30, SPECIES_ELECTRODE}, - }}, {{ // Electrode - }}, {{ // Exeggcute + }}, { // Electrode + }, {{ // Exeggcute {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, - }}, {{ // Exeggutor - }}, {{ // Cubone + }}, { // Exeggutor + }, {{ // Cubone {EVO_LEVEL, 28, SPECIES_MAROWAK}, - }}, {{ // Marowak - }}, {{ // Hitmonlee - }}, {{ // Hitmonchan - }}, {{ // Lickitung - }}, {{ // Koffing + }}, { // Marowak + }, { // Hitmonlee + }, { // Hitmonchan + }, { // Lickitung + }, {{ // Koffing {EVO_LEVEL, 35, SPECIES_WEEZING}, - }}, {{ // Weezing - }}, {{ // Rhyhorn + }}, { // Weezing + }, {{ // Rhyhorn {EVO_LEVEL, 42, SPECIES_RHYDON}, - }}, {{ // Rhydon - }}, {{ // Chansey + }}, { // Rhydon + }, {{ // Chansey {EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}, - }}, {{ // Tangela - }}, {{ // Kangaskhan - }}, {{ // Horsea + }}, { // Tangela + }, { // Kangaskhan + }, {{ // Horsea {EVO_LEVEL, 32, SPECIES_SEADRA}, }}, {{ // Seadra {EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, }}, {{ // Goldeen {EVO_LEVEL, 33, SPECIES_SEAKING}, - }}, {{ // Seaking - }}, {{ // Staryu + }}, { // Seaking + }, {{ // Staryu {EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}, - }}, {{ // Starmie - }}, {{ // Mr. mime - }}, {{ // Scyther + }}, { // Starmie + }, { // Mr. mime + }, {{ // Scyther {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, - }}, {{ // Jynx - }}, {{ // Electabuzz - }}, {{ // Magmar - }}, {{ // Pinsir - }}, {{ // Tauros - }}, {{ // Magikarp + }}, { // Jynx + }, { // Electabuzz + }, { // Magmar + }, { // Pinsir + }, { // Tauros + }, {{ // Magikarp {EVO_LEVEL, 20, SPECIES_GYARADOS}, - }}, {{ // Gyarados - }}, {{ // Lapras - }}, {{ // Ditto - }}, {{ // Eevee + }}, { // Gyarados + }, { // Lapras + }, { // Ditto + }, {{ // Eevee {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}, - }}, {{ // Vaporeon - }}, {{ // Jolteon - }}, {{ // Flareon - }}, {{ // Porygon + }}, { // Vaporeon + }, { // Jolteon + }, { // Flareon + }, {{ // Porygon {EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}, }}, {{ // Omanyte {EVO_LEVEL, 40, SPECIES_OMASTAR}, - }}, {{ // Omastar - }}, {{ // Kabuto + }}, { // Omastar + }, {{ // Kabuto {EVO_LEVEL, 40, SPECIES_KABUTOPS}, - }}, {{ // Kabutops - }}, {{ // Aerodactyl - }}, {{ // Snorlax - }}, {{ // Articuno - }}, {{ // Zapdos - }}, {{ // Moltres - }}, {{ // Dratini + }}, { // Kabutops + }, { // Aerodactyl + }, { // Snorlax + }, { // Articuno + }, { // Zapdos + }, { // Moltres + }, {{ // Dratini {EVO_LEVEL, 30, SPECIES_DRAGONAIR}, }}, {{ // Dragonair {EVO_LEVEL, 55, SPECIES_DRAGONITE}, - }}, {{ // Dragonite - }}, {{ // Mewtwo - }}, {{ // Mew - }}, {{ // Chikorita + }}, { // Dragonite + }, { // Mewtwo + }, { // Mew + }, {{ // Chikorita {EVO_LEVEL, 16, SPECIES_BAYLEEF}, }}, {{ // Bayleef {EVO_LEVEL, 32, SPECIES_MEGANIUM}, - }}, {{ // Meganium - }}, {{ // Cyndaquil + }}, { // Meganium + }, {{ // Cyndaquil {EVO_LEVEL, 14, SPECIES_QUILAVA}, }}, {{ // Quilava {EVO_LEVEL, 36, SPECIES_TYPHLOSION}, - }}, {{ // Typhlosion - }}, {{ // Totodile + }}, { // Typhlosion + }, {{ // Totodile {EVO_LEVEL, 18, SPECIES_CROCONAW}, }}, {{ // Croconaw {EVO_LEVEL, 30, SPECIES_FERALIGATR}, - }}, {{ // Feraligatr - }}, {{ // Sentret + }}, { // Feraligatr + }, {{ // Sentret {EVO_LEVEL, 15, SPECIES_FURRET}, - }}, {{ // Furret - }}, {{ // Hoothoot + }}, { // Furret + }, {{ // Hoothoot {EVO_LEVEL, 20, SPECIES_NOCTOWL}, - }}, {{ // Noctowl - }}, {{ // Ledyba + }}, { // Noctowl + }, {{ // Ledyba {EVO_LEVEL, 18, SPECIES_LEDIAN}, - }}, {{ // Ledian - }}, {{ // Spinarak + }}, { // Ledian + }, {{ // Spinarak {EVO_LEVEL, 22, SPECIES_ARIADOS}, - }}, {{ // Ariados - }}, {{ // Crobat - }}, {{ // Chinchou + }}, { // Ariados + }, { // Crobat + }, {{ // Chinchou {EVO_LEVEL, 27, SPECIES_LANTURN}, - }}, {{ // Lanturn - }}, {{ // Pichu + }}, { // Lanturn + }, {{ // Pichu {EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}, }}, {{ // Cleffa {EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}, @@ -16184,329 +16184,329 @@ const struct EvolutionData gEvolutionTable[] = { {EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}, }}, {{ // Togepi {EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}, - }}, {{ // Togetic - }}, {{ // Natu + }}, { // Togetic + }, {{ // Natu {EVO_LEVEL, 25, SPECIES_XATU}, - }}, {{ // Xatu - }}, {{ // Mareep + }}, { // Xatu + }, {{ // Mareep {EVO_LEVEL, 15, SPECIES_FLAAFFY}, }}, {{ // Flaaffy {EVO_LEVEL, 30, SPECIES_AMPHAROS}, - }}, {{ // Ampharos - }}, {{ // Bellossom - }}, {{ // Marill + }}, { // Ampharos + }, { // Bellossom + }, {{ // Marill {EVO_LEVEL, 18, SPECIES_AZUMARILL}, - }}, {{ // Azumarill - }}, {{ // Sudowoodo - }}, {{ // Politoed - }}, {{ // Hoppip + }}, { // Azumarill + }, { // Sudowoodo + }, { // Politoed + }, {{ // Hoppip {EVO_LEVEL, 18, SPECIES_SKIPLOOM}, }}, {{ // Skiploom {EVO_LEVEL, 27, SPECIES_JUMPLUFF}, - }}, {{ // Jumpluff - }}, {{ // Aipom - }}, {{ // Sunkern + }}, { // Jumpluff + }, { // Aipom + }, {{ // Sunkern {EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}, - }}, {{ // Sunflora - }}, {{ // Yanma - }}, {{ // Wooper + }}, { // Sunflora + }, { // Yanma + }, {{ // Wooper {EVO_LEVEL, 20, SPECIES_QUAGSIRE}, - }}, {{ // Quagsire - }}, {{ // Espeon - }}, {{ // Umbreon - }}, {{ // Murkrow - }}, {{ // Slowking - }}, {{ // Misdreavus - }}, {{ // Unown - }}, {{ // Wobbuffet - }}, {{ // Girafarig - }}, {{ // Pineco + }}, { // Quagsire + }, { // Espeon + }, { // Umbreon + }, { // Murkrow + }, { // Slowking + }, { // Misdreavus + }, { // Unown + }, { // Wobbuffet + }, { // Girafarig + }, {{ // Pineco {EVO_LEVEL, 31, SPECIES_FORRETRESS}, - }}, {{ // Forretress - }}, {{ // Dunsparce - }}, {{ // Gligar - }}, {{ // Steelix - }}, {{ // Snubbull + }}, { // Forretress + }, { // Dunsparce + }, { // Gligar + }, { // Steelix + }, {{ // Snubbull {EVO_LEVEL, 23, SPECIES_GRANBULL}, - }}, {{ // Granbull - }}, {{ // Qwilfish - }}, {{ // Scizor - }}, {{ // Shuckle - }}, {{ // Heracross - }}, {{ // Sneasel - }}, {{ // Teddiursa + }}, { // Granbull + }, { // Qwilfish + }, { // Scizor + }, { // Shuckle + }, { // Heracross + }, { // Sneasel + }, {{ // Teddiursa {EVO_LEVEL, 30, SPECIES_URSARING}, - }}, {{ // Ursaring - }}, {{ // Slugma + }}, { // Ursaring + }, {{ // Slugma {EVO_LEVEL, 38, SPECIES_MAGCARGO}, - }}, {{ // Magcargo - }}, {{ // Swinub + }}, { // Magcargo + }, {{ // Swinub {EVO_LEVEL, 33, SPECIES_PILOSWINE}, - }}, {{ // Piloswine - }}, {{ // Corsola - }}, {{ // Remoraid + }}, { // Piloswine + }, { // Corsola + }, {{ // Remoraid {EVO_LEVEL, 25, SPECIES_OCTILLERY}, - }}, {{ // Octillery - }}, {{ // Delibird - }}, {{ // Mantine - }}, {{ // Skarmory - }}, {{ // Houndour + }}, { // Octillery + }, { // Delibird + }, { // Mantine + }, { // Skarmory + }, {{ // Houndour {EVO_LEVEL, 24, SPECIES_HOUNDOOM}, - }}, {{ // Houndoom - }}, {{ // Kingdra - }}, {{ // Phanpy + }}, { // Houndoom + }, { // Kingdra + }, {{ // Phanpy {EVO_LEVEL, 25, SPECIES_DONPHAN}, - }}, {{ // Donphan - }}, {{ // Porygon2 - }}, {{ // Stantler - }}, {{ // Smeargle - }}, {{ // Tyrogue + }}, { // Donphan + }, { // Porygon2 + }, { // Stantler + }, { // Smeargle + }, {{ // Tyrogue {EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}, - }}, {{ // Hitmontop - }}, {{ // Smoochum + }}, { // Hitmontop + }, {{ // Smoochum {EVO_LEVEL, 30, SPECIES_JYNX}, }}, {{ // Elekid {EVO_LEVEL, 30, SPECIES_ELECTABUZZ}, }}, {{ // Magby {EVO_LEVEL, 30, SPECIES_MAGMAR}, - }}, {{ // Miltank - }}, {{ // Blissey - }}, {{ // Raikou - }}, {{ // Entei - }}, {{ // Suicune - }}, {{ // Larvitar + }}, { // Miltank + }, { // Blissey + }, { // Raikou + }, { // Entei + }, { // Suicune + }, {{ // Larvitar {EVO_LEVEL, 30, SPECIES_PUPITAR}, }}, {{ // Pupitar {EVO_LEVEL, 55, SPECIES_TYRANITAR}, - }}, {{ // Tyranitar - }}, {{ // Lugia - }}, {{ // Ho-Oh - }}, {{ // Celebi - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // ? - }}, {{ // Treecko + }}, { // Tyranitar + }, { // Lugia + }, { // Ho-Oh + }, { // Celebi + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, {{ // Treecko {EVO_LEVEL, 16, SPECIES_GROVYLE}, }}, {{ // Grovyle {EVO_LEVEL, 36, SPECIES_SCEPTILE}, - }}, {{ // Sceptile - }}, {{ // Torchic + }}, { // Sceptile + }, {{ // Torchic {EVO_LEVEL, 16, SPECIES_COMBUSKEN}, }}, {{ // Combusken {EVO_LEVEL, 36, SPECIES_BLAZIKEN}, - }}, {{ // Blaziken - }}, {{ // Mudkip + }}, { // Blaziken + }, {{ // Mudkip {EVO_LEVEL, 16, SPECIES_MARSHTOMP}, }}, {{ // Marshtomp {EVO_LEVEL, 36, SPECIES_SWAMPERT}, - }}, {{ // Swampert - }}, {{ // Poochyena + }}, { // Swampert + }, {{ // Poochyena {EVO_LEVEL, 18, SPECIES_MIGHTYENA}, - }}, {{ // Mightyena - }}, {{ // Zigzagoon + }}, { // Mightyena + }, {{ // Zigzagoon {EVO_LEVEL, 20, SPECIES_LINOONE}, - }}, {{ // Linoone - }}, {{ // Wurmple + }}, { // Linoone + }, {{ // Wurmple {EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}, }}, {{ // Silcoon {EVO_LEVEL, 10, SPECIES_BEAUTIFLY}, - }}, {{ // Beautifly - }}, {{ // Cascoon + }}, { // Beautifly + }, {{ // Cascoon {EVO_LEVEL, 10, SPECIES_DUSTOX}, - }}, {{ // Dustox - }}, {{ // Lotad + }}, { // Dustox + }, {{ // Lotad {EVO_LEVEL, 14, SPECIES_LOMBRE}, }}, {{ // Lombre {EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}, - }}, {{ // Ludicolo - }}, {{ // Seedot + }}, { // Ludicolo + }, {{ // Seedot {EVO_LEVEL, 14, SPECIES_NUZLEAF}, }}, {{ // Nuzleaf {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}, - }}, {{ // Shiftry - }}, {{ // Nincada + }}, { // Shiftry + }, {{ // Nincada {EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}, - }}, {{ // Ninjask - }}, {{ // Shedinja - }}, {{ // Taillow + }}, { // Ninjask + }, { // Shedinja + }, {{ // Taillow {EVO_LEVEL, 22, SPECIES_SWELLOW}, - }}, {{ // Swellow - }}, {{ // Shroomish + }}, { // Swellow + }, {{ // Shroomish {EVO_LEVEL, 23, SPECIES_BRELOOM}, - }}, {{ // Breloom - }}, {{ // Spinda - }}, {{ // Wingull + }}, { // Breloom + }, { // Spinda + }, {{ // Wingull {EVO_LEVEL, 25, SPECIES_PELIPPER}, - }}, {{ // Pelipper - }}, {{ // Surskit + }}, { // Pelipper + }, {{ // Surskit {EVO_LEVEL, 22, SPECIES_MASQUERAIN}, - }}, {{ // Masquerain - }}, {{ // Wailmer + }}, { // Masquerain + }, {{ // Wailmer {EVO_LEVEL, 40, SPECIES_WAILORD}, - }}, {{ // Wailord - }}, {{ // Skitty + }}, { // Wailord + }, {{ // Skitty {EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}, - }}, {{ // Delcatty - }}, {{ // Kecleon - }}, {{ // Baltoy + }}, { // Delcatty + }, { // Kecleon + }, {{ // Baltoy {EVO_LEVEL, 36, SPECIES_CLAYDOL}, - }}, {{ // Claydol - }}, {{ // Nosepass - }}, {{ // Torkoal - }}, {{ // Sableye - }}, {{ // Barboach + }}, { // Claydol + }, { // Nosepass + }, { // Torkoal + }, { // Sableye + }, {{ // Barboach {EVO_LEVEL, 30, SPECIES_WHISCASH}, - }}, {{ // Whiscash - }}, {{ // Luvdisc - }}, {{ // Corphish + }}, { // Whiscash + }, { // Luvdisc + }, {{ // Corphish {EVO_LEVEL, 30, SPECIES_CRAWDAUNT}, - }}, {{ // Crawdaunt - }}, {{ // Feebas + }}, { // Crawdaunt + }, {{ // Feebas {EVO_BEAUTY, 170, SPECIES_MILOTIC}, - }}, {{ // Milotic - }}, {{ // Carvanha + }}, { // Milotic + }, {{ // Carvanha {EVO_LEVEL, 30, SPECIES_SHARPEDO}, - }}, {{ // Sharpedo - }}, {{ // Trapinch + }}, { // Sharpedo + }, {{ // Trapinch {EVO_LEVEL, 35, SPECIES_VIBRAVA}, }}, {{ // Vibrava {EVO_LEVEL, 45, SPECIES_FLYGON}, - }}, {{ // Flygon - }}, {{ // Makuhita + }}, { // Flygon + }, {{ // Makuhita {EVO_LEVEL, 24, SPECIES_HARIYAMA}, - }}, {{ // Hariyama - }}, {{ // Electrike + }}, { // Hariyama + }, {{ // Electrike {EVO_LEVEL, 26, SPECIES_MANECTRIC}, - }}, {{ // Manectric - }}, {{ // Numel + }}, { // Manectric + }, {{ // Numel {EVO_LEVEL, 33, SPECIES_CAMERUPT}, - }}, {{ // Camerupt - }}, {{ // Spheal + }}, { // Camerupt + }, {{ // Spheal {EVO_LEVEL, 32, SPECIES_SEALEO}, }}, {{ // Sealeo {EVO_LEVEL, 44, SPECIES_WALREIN}, - }}, {{ // Walrein - }}, {{ // Cacnea + }}, { // Walrein + }, {{ // Cacnea {EVO_LEVEL, 32, SPECIES_CACTURNE}, - }}, {{ // Cacturne - }}, {{ // Snorunt + }}, { // Cacturne + }, {{ // Snorunt {EVO_LEVEL, 42, SPECIES_GLALIE}, - }}, {{ // Glalie - }}, {{ // Lunatone - }}, {{ // Solrock - }}, {{ // Azurill + }}, { // Glalie + }, { // Lunatone + }, { // Solrock + }, {{ // Azurill {EVO_FRIENDSHIP, 0, SPECIES_MARILL}, }}, {{ // Spoink {EVO_LEVEL, 32, SPECIES_GRUMPIG}, - }}, {{ // Grumpig - }}, {{ // Plusle - }}, {{ // Minun - }}, {{ // Mawile - }}, {{ // Meditite + }}, { // Grumpig + }, { // Plusle + }, { // Minun + }, { // Mawile + }, {{ // Meditite {EVO_LEVEL, 37, SPECIES_MEDICHAM}, - }}, {{ // Medicham - }}, {{ // Swablu + }}, { // Medicham + }, {{ // Swablu {EVO_LEVEL, 35, SPECIES_ALTARIA}, - }}, {{ // Altaria - }}, {{ // Wynaut + }}, { // Altaria + }, {{ // Wynaut {EVO_LEVEL, 15, SPECIES_WOBBUFFET}, }}, {{ // Duskull {EVO_LEVEL, 37, SPECIES_DUSCLOPS}, - }}, {{ // Dusclops - }}, {{ // Roselia - }}, {{ // Slakoth + }}, { // Dusclops + }, { // Roselia + }, {{ // Slakoth {EVO_LEVEL, 18, SPECIES_VIGOROTH}, }}, {{ // Vigoroth {EVO_LEVEL, 36, SPECIES_SLAKING}, - }}, {{ // Slaking - }}, {{ // Gulpin + }}, { // Slaking + }, {{ // Gulpin {EVO_LEVEL, 26, SPECIES_SWALOT}, - }}, {{ // Swalot - }}, {{ // Tropius - }}, {{ // Whismur + }}, { // Swalot + }, { // Tropius + }, {{ // Whismur {EVO_LEVEL, 20, SPECIES_LOUDRED}, }}, {{ // Loudred {EVO_LEVEL, 40, SPECIES_EXPLOUD}, - }}, {{ // Exploud - }}, {{ // Clamperl + }}, { // Exploud + }, {{ // Clamperl {EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, - }}, {{ // Huntail - }}, {{ // Gorebyss - }}, {{ // Absol - }}, {{ // Shuppet + }}, { // Huntail + }, { // Gorebyss + }, { // Absol + }, {{ // Shuppet {EVO_LEVEL, 37, SPECIES_BANETTE}, - }}, {{ // Banette - }}, {{ // Seviper - }}, {{ // Zangoose - }}, {{ // Relicanth - }}, {{ // Aron + }}, { // Banette + }, { // Seviper + }, { // Zangoose + }, { // Relicanth + }, {{ // Aron {EVO_LEVEL, 32, SPECIES_LAIRON}, }}, {{ // Lairon {EVO_LEVEL, 42, SPECIES_AGGRON}, - }}, {{ // Aggron - }}, {{ // Castform - }}, {{ // Volbeat - }}, {{ // Illumise - }}, {{ // Lileep + }}, { // Aggron + }, { // Castform + }, { // Volbeat + }, { // Illumise + }, {{ // Lileep {EVO_LEVEL, 40, SPECIES_CRADILY}, - }}, {{ // Cradily - }}, {{ // Anorith + }}, { // Cradily + }, {{ // Anorith {EVO_LEVEL, 40, SPECIES_ARMALDO}, - }}, {{ // Armaldo - }}, {{ // Ralts + }}, { // Armaldo + }, {{ // Ralts {EVO_LEVEL, 20, SPECIES_KIRLIA}, }}, {{ // Kirlia {EVO_LEVEL, 30, SPECIES_GARDEVOIR}, - }}, {{ // Gardevoir - }}, {{ // Bagon + }}, { // Gardevoir + }, {{ // Bagon {EVO_LEVEL, 30, SPECIES_SHELGON}, }}, {{ // Shelgon {EVO_LEVEL, 50, SPECIES_SALAMENCE}, - }}, {{ // Salamence - }}, {{ // Beldum + }}, { // Salamence + }, {{ // Beldum {EVO_LEVEL, 20, SPECIES_METANG}, }}, {{ // Metang {EVO_LEVEL, 45, SPECIES_METAGROSS}, - }}, {{ // Metagross - }}, {{ // Regirock - }}, {{ // Regice - }}, {{ // Registeel - }}, {{ // Kyogre - }}, {{ // Groudon - }}, {{ // Rayquaza - }}, {{ // Latias - }}, {{ // Latios - }}, {{ // Jirachi - }}, {{ // Deoxys - }}, {{ // Chimecho - }} + }}, { // Metagross + }, { // Regirock + }, { // Regice + }, { // Registeel + }, { // Kyogre + }, { // Groudon + }, { // Rayquaza + }, { // Latias + }, { // Latios + }, { // Jirachi + }, { // Deoxys + }, { // Chimecho + } }; const u16 *const gLevelUpLearnsets[] = { -- cgit v1.2.3 From 1fd22171ace73d435834ab4468ea4df22df6a904 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 27 Jun 2017 15:25:42 -0400 Subject: Split pokemon_data.c into headers for each data subtype --- include/data/pokemon/base_stats.h | 7823 +++++++++ include/data/pokemon/cry_ids.h | 146 + include/data/pokemon/dex_order.h | 15 + include/data/pokemon/evolution.h | 608 + include/data/pokemon/experience_tables.h | 828 + include/data/pokemon/item_effects.h | 824 + include/data/pokemon/level_up_learnset_pointers.h | 423 + include/data/pokemon/level_up_learnsets.h | 5627 +++++++ include/data/pokemon/nature_stats.h | 37 + include/data/pokemon/spinda_spots.h | 86 + include/data/pokemon/tmhm_learnsets.h | 427 + include/data/pokemon/trainer_class_lookups.h | 168 + src/pokemon_data.c | 16926 +------------------- 13 files changed, 17024 insertions(+), 16914 deletions(-) create mode 100644 include/data/pokemon/base_stats.h create mode 100644 include/data/pokemon/cry_ids.h create mode 100644 include/data/pokemon/dex_order.h create mode 100644 include/data/pokemon/evolution.h create mode 100644 include/data/pokemon/experience_tables.h create mode 100644 include/data/pokemon/item_effects.h create mode 100644 include/data/pokemon/level_up_learnset_pointers.h create mode 100644 include/data/pokemon/level_up_learnsets.h create mode 100644 include/data/pokemon/nature_stats.h create mode 100644 include/data/pokemon/spinda_spots.h create mode 100644 include/data/pokemon/tmhm_learnsets.h create mode 100644 include/data/pokemon/trainer_class_lookups.h diff --git a/include/data/pokemon/base_stats.h b/include/data/pokemon/base_stats.h new file mode 100644 index 000000000..eadfbfe30 --- /dev/null +++ b/include/data/pokemon/base_stats.h @@ -0,0 +1,7823 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_BASE_STATS_H +#define POKERUBY_BASE_STATS_H + +const struct BaseStats gBaseStats[] = { + { // ?????????? + }, { + // Bulbasaur + 45, 49, 49, 45, 65, 65, + TYPE_GRASS, + TYPE_POISON, + 45, // catch rate + 64, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Ivysaur + 60, 62, 63, 60, 80, 80, + TYPE_GRASS, + TYPE_POISON, + 45, // catch rate + 141, // base exp. yield + 0, 0, 0, 0, 1, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Venusaur + 80, 82, 83, 80, 100, 100, + TYPE_GRASS, + TYPE_POISON, + 45, // catch rate + 208, // base exp. yield + 0, 0, 0, 0, 2, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Charmander + 39, 52, 43, 65, 60, 50, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 65, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Charmeleon + 58, 64, 58, 80, 80, 65, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 142, // base exp. yield + 0, 0, 0, 1, 1, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Charizard + 78, 84, 78, 100, 109, 85, + TYPE_FIRE, + TYPE_FLYING, + 45, // catch rate + 209, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Squirtle + 44, 48, 65, 43, 50, 64, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 66, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Wartortle + 59, 63, 80, 58, 65, 80, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 143, // base exp. yield + 0, 0, 1, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Blastoise + 79, 83, 100, 78, 85, 105, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 210, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Caterpie + 45, 30, 35, 45, 20, 20, + TYPE_BUG, + TYPE_BUG, + 255, // catch rate + 53, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHIELD_DUST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Metapod + 50, 20, 55, 30, 25, 25, + TYPE_BUG, + TYPE_BUG, + 120, // catch rate + 72, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Butterfree + 60, 45, 50, 70, 80, 80, + TYPE_BUG, + TYPE_FLYING, + 45, // catch rate + 160, // base exp. yield + 0, 0, 0, 0, 2, 1, + ITEM_NONE, + ITEM_SILVER_POWDER, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_COMPOUND_EYES, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Weedle + 40, 35, 30, 50, 20, 20, + TYPE_BUG, + TYPE_POISON, + 255, // catch rate + 52, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHIELD_DUST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Kakuna + 45, 25, 50, 35, 25, 25, + TYPE_BUG, + TYPE_POISON, + 120, // catch rate + 71, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Beedrill + 65, 80, 40, 75, 45, 80, + TYPE_BUG, + TYPE_POISON, + 45, // catch rate + 159, // base exp. yield + 0, 2, 0, 0, 0, 1, + ITEM_NONE, + ITEM_POISON_BARB, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Pidgey + 40, 45, 40, 56, 35, 35, + TYPE_NORMAL, + TYPE_FLYING, + 255, // catch rate + 55, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Pidgeotto + 63, 60, 55, 71, 50, 50, + TYPE_NORMAL, + TYPE_FLYING, + 120, // catch rate + 113, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Pidgeot + 83, 80, 75, 91, 70, 70, + TYPE_NORMAL, + TYPE_FLYING, + 45, // catch rate + 172, // base exp. yield + 0, 0, 0, 3, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Rattata + 30, 56, 35, 72, 25, 35, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 57, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_GUTS, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Raticate + 55, 81, 60, 97, 50, 70, + TYPE_NORMAL, + TYPE_NORMAL, + 127, // catch rate + 116, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_GUTS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Spearow + 40, 60, 30, 70, 31, 31, + TYPE_NORMAL, + TYPE_FLYING, + 255, // catch rate + 58, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Fearow + 65, 90, 65, 100, 61, 61, + TYPE_NORMAL, + TYPE_FLYING, + 90, // catch rate + 162, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_SHARP_BEAK, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Ekans + 35, 60, 44, 55, 40, 54, + TYPE_POISON, + TYPE_POISON, + 255, // catch rate + 62, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_DRAGON, + ABILITY_INTIMIDATE, + ABILITY_SHED_SKIN, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Arbok + 60, 85, 69, 80, 65, 79, + TYPE_POISON, + TYPE_POISON, + 90, // catch rate + 147, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_DRAGON, + ABILITY_INTIMIDATE, + ABILITY_SHED_SKIN, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Pikachu + 35, 55, 30, 90, 50, 40, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 190, // catch rate + 82, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_ORAN_BERRY, + ITEM_LIGHT_BALL, + 127, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_STATIC, + ABILITY_NONE, + 6, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Raichu + 60, 90, 55, 100, 90, 80, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 75, // catch rate + 122, // base exp. yield + 0, 0, 0, 3, 0, 0, + ITEM_NONE, + ITEM_ORAN_BERRY, + 127, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Sandshrew + 50, 75, 85, 40, 20, 30, + TYPE_GROUND, + TYPE_GROUND, + 255, // catch rate + 93, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_QUICK_CLAW, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SAND_VEIL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Sandslash + 75, 100, 110, 65, 45, 55, + TYPE_GROUND, + TYPE_GROUND, + 90, // catch rate + 163, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_QUICK_CLAW, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SAND_VEIL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Nidoran♀ + 55, 47, 52, 41, 40, 40, + TYPE_POISON, + TYPE_POISON, + 235, // catch rate + 59, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Nidorina + 70, 62, 67, 56, 55, 55, + TYPE_POISON, + TYPE_POISON, + 120, // catch rate + 117, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Nidoqueen + 90, 82, 87, 76, 75, 85, + TYPE_POISON, + TYPE_GROUND, + 45, // catch rate + 194, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Nidoran♂ + 46, 57, 40, 50, 40, 40, + TYPE_POISON, + TYPE_POISON, + 235, // catch rate + 60, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Nidorino + 61, 72, 57, 65, 55, 55, + TYPE_POISON, + TYPE_POISON, + 120, // catch rate + 118, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Nidoking + 81, 92, 77, 85, 85, 75, + TYPE_POISON, + TYPE_GROUND, + 45, // catch rate + 195, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Clefairy + 70, 45, 48, 35, 60, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 150, // catch rate + 68, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_LEPPA_BERRY, + ITEM_MOON_STONE, + 191, // gender + 10, // egg cycles + 140, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Clefable + 95, 70, 73, 60, 85, 90, + TYPE_NORMAL, + TYPE_NORMAL, + 25, // catch rate + 129, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_LEPPA_BERRY, + ITEM_MOON_STONE, + 191, // gender + 10, // egg cycles + 140, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Vulpix + 38, 41, 40, 65, 50, 65, + TYPE_FIRE, + TYPE_FIRE, + 190, // catch rate + 63, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_FLASH_FIRE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Ninetales + 73, 76, 75, 100, 81, 100, + TYPE_FIRE, + TYPE_FIRE, + 75, // catch rate + 178, // base exp. yield + 0, 0, 0, 1, 0, 1, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_FLASH_FIRE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Jigglypuff + 115, 45, 20, 20, 45, 25, + TYPE_NORMAL, + TYPE_NORMAL, + 170, // catch rate + 76, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Wigglytuff + 140, 70, 45, 45, 75, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 50, // catch rate + 109, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Zubat + 40, 45, 35, 55, 30, 40, + TYPE_POISON, + TYPE_FLYING, + 255, // catch rate + 54, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Golbat + 75, 80, 70, 90, 65, 75, + TYPE_POISON, + TYPE_FLYING, + 90, // catch rate + 171, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Oddish + 45, 50, 55, 30, 75, 65, + TYPE_GRASS, + TYPE_POISON, + 255, // catch rate + 78, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 4, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Gloom + 60, 65, 70, 40, 85, 75, + TYPE_GRASS, + TYPE_POISON, + 120, // catch rate + 132, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 6, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Vileplume + 75, 80, 85, 50, 100, 90, + TYPE_GRASS, + TYPE_POISON, + 45, // catch rate + 184, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Paras + 35, 70, 55, 25, 45, 55, + TYPE_BUG, + TYPE_GRASS, + 190, // catch rate + 70, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_TINY_MUSHROOM, + ITEM_BIG_MUSHROOM, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_GRASS, + ABILITY_EFFECT_SPORE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Parasect + 60, 95, 80, 30, 60, 80, + TYPE_BUG, + TYPE_GRASS, + 75, // catch rate + 128, // base exp. yield + 0, 2, 1, 0, 0, 0, + ITEM_TINY_MUSHROOM, + ITEM_BIG_MUSHROOM, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_GRASS, + ABILITY_EFFECT_SPORE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Venonat + 60, 55, 50, 45, 40, 55, + TYPE_BUG, + TYPE_POISON, + 190, // catch rate + 75, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_COMPOUND_EYES, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Venomoth + 70, 65, 60, 90, 90, 75, + TYPE_BUG, + TYPE_POISON, + 75, // catch rate + 138, // base exp. yield + 0, 0, 0, 1, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHIELD_DUST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Diglett + 10, 55, 25, 95, 35, 45, + TYPE_GROUND, + TYPE_GROUND, + 255, // catch rate + 81, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SAND_VEIL, + ABILITY_ARENA_TRAP, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Dugtrio + 35, 80, 50, 120, 50, 70, + TYPE_GROUND, + TYPE_GROUND, + 50, // catch rate + 153, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SAND_VEIL, + ABILITY_ARENA_TRAP, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Meowth + 40, 45, 35, 90, 40, 40, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 69, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PICKUP, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Persian + 65, 70, 60, 115, 65, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 90, // catch rate + 148, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_LIMBER, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Psyduck + 50, 52, 48, 55, 65, 50, + TYPE_WATER, + TYPE_WATER, + 190, // catch rate + 80, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_DAMP, + ABILITY_CLOUD_NINE, + 6, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Golduck + 80, 82, 78, 85, 95, 80, + TYPE_WATER, + TYPE_WATER, + 75, // catch rate + 174, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_DAMP, + ABILITY_CLOUD_NINE, + 8, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Mankey + 40, 80, 35, 70, 35, 45, + TYPE_FIGHTING, + TYPE_FIGHTING, + 190, // catch rate + 74, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_VITAL_SPIRIT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Primeape + 65, 105, 60, 95, 60, 70, + TYPE_FIGHTING, + TYPE_FIGHTING, + 75, // catch rate + 149, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_VITAL_SPIRIT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Growlithe + 55, 70, 45, 60, 70, 50, + TYPE_FIRE, + TYPE_FIRE, + 190, // catch rate + 91, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INTIMIDATE, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Arcanine + 90, 110, 80, 95, 100, 80, + TYPE_FIRE, + TYPE_FIRE, + 75, // catch rate + 213, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INTIMIDATE, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Poliwag + 40, 50, 40, 90, 40, 40, + TYPE_WATER, + TYPE_WATER, + 255, // catch rate + 77, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_WATER_ABSORB, + ABILITY_DAMP, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE, TRUE + }, { // Poliwhirl + 65, 65, 65, 90, 50, 50, + TYPE_WATER, + TYPE_WATER, + 120, // catch rate + 131, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_WATER_ABSORB, + ABILITY_DAMP, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE, TRUE + }, { // Poliwrath + 90, 85, 95, 70, 70, 90, + TYPE_WATER, + TYPE_FIGHTING, + 45, // catch rate + 185, // base exp. yield + 0, 0, 3, 0, 0, 0, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_WATER_ABSORB, + ABILITY_DAMP, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE, TRUE + }, { // Abra + 25, 20, 15, 90, 105, 55, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 200, // catch rate + 73, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_TWISTED_SPOON, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SYNCHRONIZE, + ABILITY_INNER_FOCUS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Kadabra + 40, 35, 30, 105, 120, 70, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 100, // catch rate + 145, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_TWISTED_SPOON, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SYNCHRONIZE, + ABILITY_INNER_FOCUS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Alakazam + 55, 50, 45, 120, 135, 85, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 50, // catch rate + 186, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_TWISTED_SPOON, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SYNCHRONIZE, + ABILITY_INNER_FOCUS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Machop + 70, 80, 50, 35, 35, 35, + TYPE_FIGHTING, + TYPE_FIGHTING, + 180, // catch rate + 88, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Machoke + 80, 100, 70, 45, 50, 60, + TYPE_FIGHTING, + TYPE_FIGHTING, + 90, // catch rate + 146, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Machamp + 90, 130, 80, 55, 65, 85, + TYPE_FIGHTING, + TYPE_FIGHTING, + 45, // catch rate + 193, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Bellsprout + 50, 75, 35, 40, 70, 30, + TYPE_GRASS, + TYPE_POISON, + 255, // catch rate + 84, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Weepinbell + 65, 90, 50, 55, 85, 45, + TYPE_GRASS, + TYPE_POISON, + 120, // catch rate + 151, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Victreebel + 80, 105, 65, 70, 100, 60, + TYPE_GRASS, + TYPE_POISON, + 45, // catch rate + 191, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Tentacool + 40, 40, 35, 70, 50, 100, + TYPE_WATER, + TYPE_POISON, + 190, // catch rate + 105, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_CLEAR_BODY, + ABILITY_LIQUID_OOZE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Tentacruel + 80, 70, 65, 100, 80, 120, + TYPE_WATER, + TYPE_POISON, + 60, // catch rate + 205, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_CLEAR_BODY, + ABILITY_LIQUID_OOZE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Geodude + 40, 80, 100, 20, 30, 30, + TYPE_ROCK, + TYPE_GROUND, + 255, // catch rate + 86, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_EVERSTONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_ROCK_HEAD, + ABILITY_STURDY, + 4, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Graveler + 55, 95, 115, 35, 45, 45, + TYPE_ROCK, + TYPE_GROUND, + 120, // catch rate + 134, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_EVERSTONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_ROCK_HEAD, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Golem + 80, 110, 130, 45, 55, 65, + TYPE_ROCK, + TYPE_GROUND, + 45, // catch rate + 177, // base exp. yield + 0, 0, 3, 0, 0, 0, + ITEM_NONE, + ITEM_EVERSTONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_ROCK_HEAD, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Ponyta + 50, 85, 55, 90, 65, 65, + TYPE_FIRE, + TYPE_FIRE, + 190, // catch rate + 152, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Rapidash + 65, 100, 70, 105, 80, 80, + TYPE_FIRE, + TYPE_FIRE, + 60, // catch rate + 192, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Slowpoke + 90, 65, 65, 15, 40, 40, + TYPE_WATER, + TYPE_PSYCHIC, + 190, // catch rate + 99, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_OBLIVIOUS, + ABILITY_OWN_TEMPO, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Slowbro + 95, 75, 110, 30, 100, 80, + TYPE_WATER, + TYPE_PSYCHIC, + 75, // catch rate + 164, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_OBLIVIOUS, + ABILITY_OWN_TEMPO, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Magnemite + 25, 35, 70, 45, 95, 55, + TYPE_ELECTRIC, + TYPE_STEEL, + 190, // catch rate + 89, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_MAGNET_PULL, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Magneton + 50, 60, 95, 70, 120, 70, + TYPE_ELECTRIC, + TYPE_STEEL, + 60, // catch rate + 161, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_MAGNET_PULL, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Farfetch'd + 52, 65, 55, 60, 58, 62, + TYPE_NORMAL, + TYPE_FLYING, + 45, // catch rate + 94, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_STICK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FIELD, + ABILITY_KEEN_EYE, + ABILITY_INNER_FOCUS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Doduo + 35, 85, 45, 75, 35, 35, + TYPE_NORMAL, + TYPE_FLYING, + 190, // catch rate + 96, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SHARP_BEAK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_RUN_AWAY, + ABILITY_EARLY_BIRD, + 8, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Dodrio + 60, 110, 70, 100, 60, 60, + TYPE_NORMAL, + TYPE_FLYING, + 45, // catch rate + 158, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SHARP_BEAK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_RUN_AWAY, + ABILITY_EARLY_BIRD, + 10, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Seel + 65, 45, 55, 45, 45, 70, + TYPE_WATER, + TYPE_WATER, + 190, // catch rate + 100, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Dewgong + 90, 70, 80, 70, 70, 95, + TYPE_WATER, + TYPE_ICE, + 75, // catch rate + 176, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Grimer + 80, 80, 50, 25, 40, 50, + TYPE_POISON, + TYPE_POISON, + 190, // catch rate + 90, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NUGGET, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_STENCH, + ABILITY_STICKY_HOLD, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Muk + 105, 105, 75, 50, 65, 100, + TYPE_POISON, + TYPE_POISON, + 75, // catch rate + 157, // base exp. yield + 1, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NUGGET, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_STENCH, + ABILITY_STICKY_HOLD, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Shellder + 30, 65, 100, 40, 45, 25, + TYPE_WATER, + TYPE_WATER, + 190, // catch rate + 97, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_PEARL, + ITEM_BIG_PEARL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_SHELL_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Cloyster + 50, 95, 180, 70, 85, 45, + TYPE_WATER, + TYPE_ICE, + 60, // catch rate + 203, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_PEARL, + ITEM_BIG_PEARL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_SHELL_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Gastly + 30, 35, 30, 80, 100, 35, + TYPE_GHOST, + TYPE_POISON, + 190, // catch rate + 95, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Haunter + 45, 50, 45, 95, 115, 55, + TYPE_GHOST, + TYPE_POISON, + 90, // catch rate + 126, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Gengar + 60, 65, 60, 110, 130, 75, + TYPE_GHOST, + TYPE_POISON, + 45, // catch rate + 190, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Onix + 35, 45, 160, 70, 30, 45, + TYPE_ROCK, + TYPE_GROUND, + 45, // catch rate + 108, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_ROCK_HEAD, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Drowzee + 60, 48, 45, 42, 43, 90, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 190, // catch rate + 102, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_INSOMNIA, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Hypno + 85, 73, 70, 67, 73, 115, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 75, // catch rate + 165, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_INSOMNIA, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Krabby + 30, 105, 90, 50, 25, 25, + TYPE_WATER, + TYPE_WATER, + 225, // catch rate + 115, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_HYPER_CUTTER, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Kingler + 55, 130, 115, 75, 50, 50, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 206, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_HYPER_CUTTER, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_RED, TRUE + }, { // Voltorb + 40, 30, 50, 100, 55, 55, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 190, // catch rate + 103, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_SOUNDPROOF, + ABILITY_STATIC, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Electrode + 60, 50, 70, 140, 80, 80, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 60, // catch rate + 150, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_SOUNDPROOF, + ABILITY_STATIC, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Exeggcute + 60, 40, 80, 40, 60, 45, + TYPE_GRASS, + TYPE_PSYCHIC, + 90, // catch rate + 98, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Exeggutor + 95, 95, 85, 55, 125, 65, + TYPE_GRASS, + TYPE_PSYCHIC, + 45, // catch rate + 212, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Cubone + 50, 50, 95, 35, 40, 50, + TYPE_GROUND, + TYPE_GROUND, + 190, // catch rate + 87, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_THICK_CLUB, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_ROCK_HEAD, + ABILITY_LIGHTNING_ROD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Marowak + 60, 80, 110, 45, 50, 80, + TYPE_GROUND, + TYPE_GROUND, + 75, // catch rate + 124, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_THICK_CLUB, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_ROCK_HEAD, + ABILITY_LIGHTNING_ROD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Hitmonlee + 50, 120, 53, 87, 35, 110, + TYPE_FIGHTING, + TYPE_FIGHTING, + 45, // catch rate + 139, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_LIMBER, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Hitmonchan + 50, 105, 79, 76, 35, 110, + TYPE_FIGHTING, + TYPE_FIGHTING, + 45, // catch rate + 140, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Lickitung + 90, 55, 75, 30, 60, 75, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 127, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_OWN_TEMPO, + ABILITY_OBLIVIOUS, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Koffing + 40, 65, 95, 35, 60, 45, + TYPE_POISON, + TYPE_POISON, + 190, // catch rate + 114, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_SMOKE_BALL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Weezing + 65, 90, 120, 60, 85, 70, + TYPE_POISON, + TYPE_POISON, + 60, // catch rate + 173, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_SMOKE_BALL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Rhyhorn + 80, 85, 95, 25, 30, 30, + TYPE_GROUND, + TYPE_ROCK, + 120, // catch rate + 135, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_LIGHTNING_ROD, + ABILITY_ROCK_HEAD, + 4, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Rhydon + 105, 130, 120, 40, 45, 45, + TYPE_GROUND, + TYPE_ROCK, + 60, // catch rate + 204, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_LIGHTNING_ROD, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Chansey + 250, 5, 5, 50, 35, 105, + TYPE_NORMAL, + TYPE_NORMAL, + 30, // catch rate + 255, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_LUCKY_EGG, + 254, // gender + 40, // egg cycles + 140, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_NATURAL_CURE, + ABILITY_SERENE_GRACE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Tangela + 65, 55, 115, 60, 100, 40, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 166, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Kangaskhan + 105, 95, 80, 90, 40, 80, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 175, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_EARLY_BIRD, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Horsea + 30, 40, 70, 60, 70, 25, + TYPE_WATER, + TYPE_WATER, + 225, // catch rate + 83, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Seadra + 55, 65, 95, 85, 95, 45, + TYPE_WATER, + TYPE_WATER, + 75, // catch rate + 155, // base exp. yield + 0, 0, 1, 0, 1, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_POISON_POINT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Goldeen + 45, 67, 60, 63, 35, 50, + TYPE_WATER, + TYPE_WATER, + 225, // catch rate + 111, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_SWIFT_SWIM, + ABILITY_WATER_VEIL, + 4, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Seaking + 80, 92, 65, 68, 65, 80, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 170, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_SWIFT_SWIM, + ABILITY_WATER_VEIL, + 6, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Staryu + 30, 45, 55, 85, 70, 55, + TYPE_WATER, + TYPE_WATER, + 225, // catch rate + 106, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_STARDUST, + ITEM_STAR_PIECE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_ILLUMINATE, + ABILITY_NATURAL_CURE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Starmie + 60, 75, 85, 115, 100, 85, + TYPE_WATER, + TYPE_PSYCHIC, + 60, // catch rate + 207, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_STARDUST, + ITEM_STAR_PIECE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_ILLUMINATE, + ABILITY_NATURAL_CURE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Mr. mime + 40, 45, 65, 90, 100, 120, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 136, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_LEPPA_BERRY, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SOUNDPROOF, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Scyther + 70, 110, 80, 105, 55, 80, + TYPE_BUG, + TYPE_FLYING, + 45, // catch rate + 187, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Jynx + 65, 50, 35, 95, 115, 95, + TYPE_ICE, + TYPE_PSYCHIC, + 45, // catch rate + 137, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_ASPEAR_BERRY, + ITEM_ASPEAR_BERRY, + 254, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Electabuzz + 65, 83, 57, 105, 95, 85, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 45, // catch rate + 156, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW, TRUE + }, { // Magmar + 65, 95, 57, 93, 100, 85, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 167, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 63, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_FLAME_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Pinsir + 65, 125, 100, 85, 55, 70, + TYPE_BUG, + TYPE_BUG, + 45, // catch rate + 200, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_HYPER_CUTTER, + ABILITY_NONE, + 8, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Tauros + 75, 100, 95, 110, 40, 70, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 211, // base exp. yield + 0, 1, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Magikarp + 20, 10, 55, 80, 15, 20, + TYPE_WATER, + TYPE_WATER, + 255, // catch rate + 20, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 5, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_DRAGON, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 4, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Gyarados + 95, 125, 79, 81, 60, 100, + TYPE_WATER, + TYPE_FLYING, + 45, // catch rate + 214, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 5, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_DRAGON, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Lapras + 130, 85, 80, 60, 85, 95, + TYPE_WATER, + TYPE_ICE, + 45, // catch rate + 219, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_WATER_ABSORB, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Ditto + 48, 48, 48, 48, 48, 48, + TYPE_NORMAL, + TYPE_NORMAL, + 35, // catch rate + 61, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_METAL_POWDER, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_DITTO, + EGG_GROUP_DITTO, + ABILITY_LIMBER, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Eevee + 55, 55, 50, 55, 45, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 92, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Vaporeon + 130, 65, 60, 65, 110, 95, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 196, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_WATER_ABSORB, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Jolteon + 65, 65, 60, 130, 110, 95, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 45, // catch rate + 197, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_VOLT_ABSORB, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Flareon + 65, 130, 60, 65, 95, 110, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 198, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_FLASH_FIRE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Porygon + 65, 60, 70, 40, 85, 75, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 130, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_TRACE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Omanyte + 35, 40, 100, 35, 90, 55, + TYPE_ROCK, + TYPE_WATER, + 45, // catch rate + 120, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_SWIFT_SWIM, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Omastar + 70, 60, 125, 55, 115, 70, + TYPE_ROCK, + TYPE_WATER, + 45, // catch rate + 199, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_SWIFT_SWIM, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Kabuto + 30, 80, 90, 55, 55, 45, + TYPE_ROCK, + TYPE_WATER, + 45, // catch rate + 119, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_SWIFT_SWIM, + ABILITY_BATTLE_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Kabutops + 60, 115, 105, 80, 65, 70, + TYPE_ROCK, + TYPE_WATER, + 45, // catch rate + 201, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_SWIFT_SWIM, + ABILITY_BATTLE_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Aerodactyl + 80, 105, 65, 130, 60, 75, + TYPE_ROCK, + TYPE_FLYING, + 45, // catch rate + 202, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_ROCK_HEAD, + ABILITY_PRESSURE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Snorlax + 160, 110, 65, 30, 65, 110, + TYPE_NORMAL, + TYPE_NORMAL, + 25, // catch rate + 154, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_LEFTOVERS, + ITEM_LEFTOVERS, + 31, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_IMMUNITY, + ABILITY_THICK_FAT, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Articuno + 90, 85, 100, 85, 95, 125, + TYPE_ICE, + TYPE_FLYING, + 3, // catch rate + 215, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Zapdos + 90, 90, 85, 100, 125, 90, + TYPE_ELECTRIC, + TYPE_FLYING, + 3, // catch rate + 216, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Moltres + 90, 100, 90, 90, 125, 85, + TYPE_FIRE, + TYPE_FLYING, + 3, // catch rate + 217, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Dratini + 41, 64, 45, 50, 50, 50, + TYPE_DRAGON, + TYPE_DRAGON, + 45, // catch rate + 67, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Dragonair + 61, 84, 65, 70, 70, 70, + TYPE_DRAGON, + TYPE_DRAGON, + 45, // catch rate + 144, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Dragonite + 91, 134, 95, 80, 100, 100, + TYPE_DRAGON, + TYPE_FLYING, + 45, // catch rate + 218, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Mewtwo + 106, 110, 90, 130, 154, 90, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 3, // catch rate + 220, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Mew + 100, 100, 100, 100, 100, 100, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 64, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_LUM_BERRY, + ITEM_LUM_BERRY, + 255, // gender + 120, // egg cycles + 100, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_SYNCHRONIZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Chikorita + 45, 49, 65, 45, 49, 65, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 64, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Bayleef + 60, 62, 80, 60, 63, 80, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 141, // base exp. yield + 0, 0, 1, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Meganium + 80, 82, 100, 80, 83, 100, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 208, // base exp. yield + 0, 0, 1, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Cyndaquil + 39, 52, 43, 65, 60, 50, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 65, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Quilava + 58, 64, 58, 80, 80, 65, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 142, // base exp. yield + 0, 0, 0, 1, 1, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Typhlosion + 78, 84, 78, 100, 109, 85, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 209, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Totodile + 50, 65, 64, 43, 44, 48, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 66, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Croconaw + 65, 80, 80, 58, 59, 63, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 143, // base exp. yield + 0, 1, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE, TRUE + }, { // Feraligatr + 85, 105, 100, 78, 79, 83, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 210, // base exp. yield + 0, 2, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Sentret + 35, 46, 34, 20, 35, 45, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 57, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_ORAN_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_KEEN_EYE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Furret + 85, 76, 64, 90, 45, 55, + TYPE_NORMAL, + TYPE_NORMAL, + 90, // catch rate + 116, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_ORAN_BERRY, + ITEM_SITRUS_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_KEEN_EYE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Hoothoot + 60, 30, 30, 50, 36, 56, + TYPE_NORMAL, + TYPE_FLYING, + 255, // catch rate + 58, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INSOMNIA, + ABILITY_KEEN_EYE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Noctowl + 100, 50, 50, 70, 76, 96, + TYPE_NORMAL, + TYPE_FLYING, + 90, // catch rate + 162, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INSOMNIA, + ABILITY_KEEN_EYE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Ledyba + 40, 20, 30, 55, 40, 80, + TYPE_BUG, + TYPE_FLYING, + 255, // catch rate + 54, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_EARLY_BIRD, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Ledian + 55, 35, 50, 85, 55, 110, + TYPE_BUG, + TYPE_FLYING, + 90, // catch rate + 134, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_EARLY_BIRD, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Spinarak + 40, 60, 40, 30, 40, 40, + TYPE_BUG, + TYPE_POISON, + 255, // catch rate + 54, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_INSOMNIA, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Ariados + 70, 90, 70, 40, 60, 60, + TYPE_BUG, + TYPE_POISON, + 90, // catch rate + 134, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_INSOMNIA, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Crobat + 85, 90, 80, 130, 70, 80, + TYPE_POISON, + TYPE_FLYING, + 90, // catch rate + 204, // base exp. yield + 0, 0, 0, 3, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Chinchou + 75, 38, 38, 67, 56, 56, + TYPE_WATER, + TYPE_ELECTRIC, + 190, // catch rate + 90, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_YELLOW_SHARD, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_VOLT_ABSORB, + ABILITY_ILLUMINATE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Lanturn + 125, 58, 58, 67, 76, 76, + TYPE_WATER, + TYPE_ELECTRIC, + 75, // catch rate + 156, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_YELLOW_SHARD, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_VOLT_ABSORB, + ABILITY_ILLUMINATE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Pichu + 20, 40, 15, 60, 35, 35, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 190, // catch rate + 42, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_ORAN_BERRY, + 127, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Cleffa + 50, 25, 28, 15, 45, 55, + TYPE_NORMAL, + TYPE_NORMAL, + 150, // catch rate + 37, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_LEPPA_BERRY, + ITEM_MOON_STONE, + 191, // gender + 10, // egg cycles + 140, // base friendship + GROWTH_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Igglybuff + 90, 30, 15, 15, 40, 20, + TYPE_NORMAL, + TYPE_NORMAL, + 170, // catch rate + 39, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK, TRUE + }, { // Togepi + 35, 20, 65, 20, 40, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 190, // catch rate + 74, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_HUSTLE, + ABILITY_SERENE_GRACE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Togetic + 55, 40, 85, 40, 80, 105, + TYPE_NORMAL, + TYPE_FLYING, + 75, // catch rate + 114, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FAIRY, + ABILITY_HUSTLE, + ABILITY_SERENE_GRACE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Natu + 40, 50, 45, 70, 70, 45, + TYPE_PSYCHIC, + TYPE_FLYING, + 190, // catch rate + 73, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_SYNCHRONIZE, + ABILITY_EARLY_BIRD, + 6, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Xatu + 65, 75, 70, 95, 95, 70, + TYPE_PSYCHIC, + TYPE_FLYING, + 75, // catch rate + 171, // base exp. yield + 0, 0, 0, 1, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_SYNCHRONIZE, + ABILITY_EARLY_BIRD, + 8, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Mareep + 55, 40, 40, 35, 65, 45, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 235, // catch rate + 59, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Flaaffy + 70, 55, 55, 45, 80, 60, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 120, // catch rate + 117, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Ampharos + 90, 75, 75, 55, 115, 90, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 45, // catch rate + 194, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Bellossom + 75, 80, 85, 50, 90, 100, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 184, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Marill + 70, 20, 50, 40, 20, 50, + TYPE_WATER, + TYPE_WATER, + 190, // catch rate + 58, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FAIRY, + ABILITY_THICK_FAT, + ABILITY_HUGE_POWER, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Azumarill + 100, 50, 80, 50, 50, 80, + TYPE_WATER, + TYPE_WATER, + 75, // catch rate + 153, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FAIRY, + ABILITY_THICK_FAT, + ABILITY_HUGE_POWER, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Sudowoodo + 70, 100, 115, 30, 30, 65, + TYPE_ROCK, + TYPE_ROCK, + 65, // catch rate + 135, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_STURDY, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Politoed + 90, 75, 75, 70, 90, 100, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 185, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_WATER_ABSORB, + ABILITY_DAMP, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN, TRUE + }, { // Hoppip + 35, 35, 40, 50, 35, 55, + TYPE_GRASS, + TYPE_FLYING, + 255, // catch rate + 74, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Skiploom + 55, 45, 50, 80, 45, 65, + TYPE_GRASS, + TYPE_FLYING, + 120, // catch rate + 136, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Jumpluff + 75, 55, 70, 110, 55, 85, + TYPE_GRASS, + TYPE_FLYING, + 45, // catch rate + 176, // base exp. yield + 0, 0, 0, 3, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Aipom + 55, 70, 55, 85, 40, 55, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 94, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_PICKUP, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Sunkern + 30, 30, 30, 30, 30, 30, + TYPE_GRASS, + TYPE_GRASS, + 235, // catch rate + 52, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Sunflora + 75, 75, 55, 30, 105, 85, + TYPE_GRASS, + TYPE_GRASS, + 120, // catch rate + 146, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Yanma + 65, 65, 45, 95, 75, 45, + TYPE_BUG, + TYPE_FLYING, + 75, // catch rate + 147, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SPEED_BOOST, + ABILITY_COMPOUND_EYES, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Wooper + 55, 45, 45, 15, 25, 25, + TYPE_WATER, + TYPE_GROUND, + 255, // catch rate + 52, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_DAMP, + ABILITY_WATER_ABSORB, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Quagsire + 95, 85, 85, 35, 65, 65, + TYPE_WATER, + TYPE_GROUND, + 90, // catch rate + 137, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_DAMP, + ABILITY_WATER_ABSORB, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Espeon + 65, 65, 60, 110, 130, 95, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 197, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SYNCHRONIZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Umbreon + 95, 65, 110, 65, 60, 130, + TYPE_DARK, + TYPE_DARK, + 45, // catch rate + 197, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 35, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SYNCHRONIZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Murkrow + 60, 85, 42, 91, 85, 42, + TYPE_DARK, + TYPE_FLYING, + 30, // catch rate + 107, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_INSOMNIA, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Slowking + 95, 75, 80, 30, 100, 110, + TYPE_WATER, + TYPE_PSYCHIC, + 70, // catch rate + 164, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_KINGS_ROCK, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_OBLIVIOUS, + ABILITY_OWN_TEMPO, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Misdreavus + 60, 60, 60, 85, 85, 85, + TYPE_GHOST, + TYPE_GHOST, + 45, // catch rate + 147, // base exp. yield + 0, 0, 0, 0, 1, 1, + ITEM_NONE, + ITEM_SPELL_TAG, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Unown + 48, 72, 48, 48, 72, 48, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 225, // catch rate + 61, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK, TRUE + }, { // Wobbuffet + 190, 33, 58, 33, 33, 58, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 177, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_SHADOW_TAG, + ABILITY_NONE, + 4, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Girafarig + 70, 80, 65, 85, 90, 65, + TYPE_NORMAL, + TYPE_PSYCHIC, + 60, // catch rate + 149, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_PERSIM_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INNER_FOCUS, + ABILITY_EARLY_BIRD, + 4, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Pineco + 50, 65, 90, 15, 35, 35, + TYPE_BUG, + TYPE_BUG, + 190, // catch rate + 60, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_STURDY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Forretress + 75, 90, 140, 40, 60, 60, + TYPE_BUG, + TYPE_STEEL, + 75, // catch rate + 118, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_STURDY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Dunsparce + 100, 70, 70, 45, 65, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 190, // catch rate + 75, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_SERENE_GRACE, + ABILITY_RUN_AWAY, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Gligar + 65, 75, 105, 85, 35, 65, + TYPE_GROUND, + TYPE_FLYING, + 60, // catch rate + 108, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_HYPER_CUTTER, + ABILITY_SAND_VEIL, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Steelix + 75, 85, 200, 30, 55, 65, + TYPE_STEEL, + TYPE_GROUND, + 25, // catch rate + 196, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_ROCK_HEAD, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Snubbull + 60, 80, 50, 30, 40, 40, + TYPE_NORMAL, + TYPE_NORMAL, + 190, // catch rate + 63, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_INTIMIDATE, + ABILITY_RUN_AWAY, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Granbull + 90, 120, 75, 45, 60, 60, + TYPE_NORMAL, + TYPE_NORMAL, + 75, // catch rate + 178, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_INTIMIDATE, + ABILITY_INTIMIDATE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Qwilfish + 65, 95, 75, 85, 55, 55, + TYPE_WATER, + TYPE_POISON, + 45, // catch rate + 100, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_POISON_POINT, + ABILITY_SWIFT_SWIM, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Scizor + 70, 130, 100, 65, 55, 80, + TYPE_BUG, + TYPE_STEEL, + 25, // catch rate + 200, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Shuckle + 20, 10, 230, 5, 10, 230, + TYPE_BUG, + TYPE_ROCK, + 190, // catch rate + 80, // base exp. yield + 0, 0, 1, 0, 0, 1, + ITEM_ORAN_BERRY, + ITEM_ORAN_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_STURDY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Heracross + 80, 125, 75, 85, 40, 95, + TYPE_BUG, + TYPE_FIGHTING, + 45, // catch rate + 200, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_GUTS, + 8, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Sneasel + 55, 95, 55, 115, 35, 75, + TYPE_DARK, + TYPE_ICE, + 60, // catch rate + 132, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_QUICK_CLAW, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INNER_FOCUS, + ABILITY_KEEN_EYE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK, TRUE + }, { // Teddiursa + 60, 80, 50, 40, 50, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 120, // catch rate + 124, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PICKUP, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN, TRUE + }, { // Ursaring + 90, 130, 75, 55, 75, 75, + TYPE_NORMAL, + TYPE_NORMAL, + 60, // catch rate + 189, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Slugma + 40, 40, 40, 20, 70, 40, + TYPE_FIRE, + TYPE_FIRE, + 190, // catch rate + 78, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_MAGMA_ARMOR, + ABILITY_FLAME_BODY, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Magcargo + 50, 50, 120, 30, 80, 80, + TYPE_FIRE, + TYPE_ROCK, + 75, // catch rate + 154, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_MAGMA_ARMOR, + ABILITY_FLAME_BODY, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Swinub + 50, 50, 40, 50, 30, 30, + TYPE_ICE, + TYPE_GROUND, + 225, // catch rate + 78, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Piloswine + 100, 100, 80, 50, 60, 60, + TYPE_ICE, + TYPE_GROUND, + 75, // catch rate + 160, // base exp. yield + 1, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Corsola + 55, 55, 85, 35, 65, 85, + TYPE_WATER, + TYPE_ROCK, + 60, // catch rate + 113, // base exp. yield + 0, 0, 1, 0, 0, 1, + ITEM_NONE, + ITEM_RED_SHARD, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_HUSTLE, + ABILITY_NATURAL_CURE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Remoraid + 35, 65, 35, 65, 65, 35, + TYPE_WATER, + TYPE_WATER, + 190, // catch rate + 78, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_2, + ABILITY_HUSTLE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Octillery + 75, 105, 75, 45, 105, 75, + TYPE_WATER, + TYPE_WATER, + 75, // catch rate + 164, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_2, + ABILITY_SUCTION_CUPS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Delibird + 45, 55, 45, 75, 65, 45, + TYPE_ICE, + TYPE_FLYING, + 45, // catch rate + 183, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_VITAL_SPIRIT, + ABILITY_HUSTLE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Mantine + 65, 40, 70, 70, 80, 140, + TYPE_WATER, + TYPE_FLYING, + 25, // catch rate + 168, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_SWIFT_SWIM, + ABILITY_WATER_ABSORB, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Skarmory + 65, 80, 140, 70, 40, 70, + TYPE_STEEL, + TYPE_FLYING, + 25, // catch rate + 168, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_STURDY, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Houndour + 45, 60, 30, 65, 80, 50, + TYPE_DARK, + TYPE_FIRE, + 120, // catch rate + 114, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_EARLY_BIRD, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Houndoom + 75, 90, 50, 95, 110, 80, + TYPE_DARK, + TYPE_FIRE, + 45, // catch rate + 204, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_EARLY_BIRD, + ABILITY_FLASH_FIRE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Kingdra + 75, 95, 95, 85, 95, 95, + TYPE_WATER, + TYPE_DRAGON, + 45, // catch rate + 207, // base exp. yield + 0, 1, 0, 0, 1, 1, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Phanpy + 90, 60, 60, 40, 40, 40, + TYPE_GROUND, + TYPE_GROUND, + 120, // catch rate + 124, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PICKUP, + ABILITY_NONE, + 10, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Donphan + 90, 120, 120, 50, 60, 60, + TYPE_GROUND, + TYPE_GROUND, + 60, // catch rate + 189, // base exp. yield + 0, 1, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_STURDY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Porygon2 + 85, 80, 90, 60, 105, 95, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 180, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_TRACE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Stantler + 73, 95, 62, 85, 85, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 165, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Smeargle + 55, 20, 35, 75, 20, 45, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 106, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_OWN_TEMPO, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Tyrogue + 35, 35, 35, 35, 35, 35, + TYPE_FIGHTING, + TYPE_FIGHTING, + 75, // catch rate + 91, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Hitmontop + 50, 95, 95, 70, 35, 110, + TYPE_FIGHTING, + TYPE_FIGHTING, + 45, // catch rate + 138, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Smoochum + 45, 30, 15, 65, 85, 65, + TYPE_ICE, + TYPE_PSYCHIC, + 45, // catch rate + 87, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_ASPEAR_BERRY, + ITEM_ASPEAR_BERRY, + 254, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Elekid + 45, 63, 37, 95, 65, 55, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 45, // catch rate + 106, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_STATIC, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW, TRUE + }, { // Magby + 45, 75, 37, 83, 70, 55, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 117, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 63, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_FLAME_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Miltank + 95, 80, 105, 100, 40, 70, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 200, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_MOOMOO_MILK, + ITEM_MOOMOO_MILK, + 254, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Blissey + 255, 10, 10, 55, 75, 135, + TYPE_NORMAL, + TYPE_NORMAL, + 30, // catch rate + 255, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_LUCKY_EGG, + 254, // gender + 40, // egg cycles + 140, // base friendship + GROWTH_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_NATURAL_CURE, + ABILITY_SERENE_GRACE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Raikou + 90, 85, 75, 115, 115, 100, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 3, // catch rate + 216, // base exp. yield + 0, 0, 0, 2, 1, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Entei + 115, 115, 85, 100, 90, 75, + TYPE_FIRE, + TYPE_FIRE, + 3, // catch rate + 217, // base exp. yield + 1, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Suicune + 100, 75, 115, 85, 90, 115, + TYPE_WATER, + TYPE_WATER, + 3, // catch rate + 215, // base exp. yield + 0, 0, 1, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Larvitar + 50, 64, 50, 41, 45, 50, + TYPE_ROCK, + TYPE_GROUND, + 45, // catch rate + 67, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Pupitar + 70, 84, 70, 51, 65, 70, + TYPE_ROCK, + TYPE_GROUND, + 45, // catch rate + 144, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Tyranitar + 100, 134, 110, 61, 95, 100, + TYPE_ROCK, + TYPE_DARK, + 45, // catch rate + 218, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_SAND_STREAM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Lugia + 106, 90, 130, 110, 90, 154, + TYPE_PSYCHIC, + TYPE_FLYING, + 3, // catch rate + 220, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Ho-Oh + 106, 130, 90, 90, 110, 154, + TYPE_FIRE, + TYPE_FLYING, + 3, // catch rate + 220, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_SACRED_ASH, + ITEM_SACRED_ASH, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Celebi + 100, 100, 100, 100, 100, 100, + TYPE_PSYCHIC, + TYPE_GRASS, + 45, // catch rate + 64, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_LUM_BERRY, + ITEM_LUM_BERRY, + 255, // gender + 120, // egg cycles + 100, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NATURAL_CURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // ? + 50, 150, 50, 150, 150, 50, + TYPE_NORMAL, + TYPE_NORMAL, + 3, // catch rate + 1, // base exp. yield + 2, 2, 2, 2, 2, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_NONE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Treecko + 40, 45, 35, 70, 65, 55, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 65, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Grovyle + 50, 65, 45, 95, 85, 65, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 141, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Sceptile + 70, 85, 65, 120, 105, 85, + TYPE_GRASS, + TYPE_GRASS, + 45, // catch rate + 208, // base exp. yield + 0, 0, 0, 3, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_DRAGON, + ABILITY_OVERGROW, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Torchic + 45, 60, 40, 45, 70, 50, + TYPE_FIRE, + TYPE_FIRE, + 45, // catch rate + 65, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Combusken + 60, 85, 60, 55, 85, 60, + TYPE_FIRE, + TYPE_FIGHTING, + 45, // catch rate + 142, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Blaziken + 80, 120, 70, 80, 110, 70, + TYPE_FIRE, + TYPE_FIGHTING, + 45, // catch rate + 209, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_BLAZE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Mudkip + 50, 70, 50, 40, 50, 50, + TYPE_WATER, + TYPE_WATER, + 45, // catch rate + 65, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Marshtomp + 70, 85, 70, 50, 60, 70, + TYPE_WATER, + TYPE_GROUND, + 45, // catch rate + 143, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Swampert + 100, 110, 90, 60, 85, 90, + TYPE_WATER, + TYPE_GROUND, + 45, // catch rate + 210, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_WATER_1, + ABILITY_TORRENT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Poochyena + 35, 55, 35, 35, 30, 30, + TYPE_DARK, + TYPE_DARK, + 255, // catch rate + 55, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_PECHA_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_RUN_AWAY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Mightyena + 70, 90, 70, 70, 60, 60, + TYPE_DARK, + TYPE_DARK, + 127, // catch rate + 128, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_PECHA_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Zigzagoon + 38, 30, 41, 60, 30, 41, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 60, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_ORAN_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PICKUP, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Linoone + 78, 70, 61, 100, 50, 61, + TYPE_NORMAL, + TYPE_NORMAL, + 90, // catch rate + 128, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_ORAN_BERRY, + ITEM_SITRUS_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PICKUP, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Wurmple + 45, 45, 35, 20, 20, 30, + TYPE_BUG, + TYPE_BUG, + 255, // catch rate + 54, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHIELD_DUST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Silcoon + 50, 35, 55, 15, 25, 25, + TYPE_BUG, + TYPE_BUG, + 120, // catch rate + 71, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Beautifly + 60, 70, 50, 65, 90, 50, + TYPE_BUG, + TYPE_FLYING, + 45, // catch rate + 161, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_SILVER_POWDER, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SWARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Cascoon + 50, 35, 55, 15, 25, 25, + TYPE_BUG, + TYPE_BUG, + 120, // catch rate + 72, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Dustox + 60, 50, 70, 65, 50, 90, + TYPE_BUG, + TYPE_POISON, + 45, // catch rate + 160, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_SILVER_POWDER, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SHIELD_DUST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Lotad + 40, 30, 30, 30, 40, 50, + TYPE_WATER, + TYPE_GRASS, + 255, // catch rate + 74, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_GRASS, + ABILITY_SWIFT_SWIM, + ABILITY_RAIN_DISH, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Lombre + 60, 50, 50, 50, 60, 70, + TYPE_WATER, + TYPE_GRASS, + 120, // catch rate + 141, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_GRASS, + ABILITY_SWIFT_SWIM, + ABILITY_RAIN_DISH, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Ludicolo + 80, 70, 70, 70, 90, 100, + TYPE_WATER, + TYPE_GRASS, + 45, // catch rate + 181, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_GRASS, + ABILITY_SWIFT_SWIM, + ABILITY_RAIN_DISH, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Seedot + 40, 40, 50, 30, 30, 30, + TYPE_GRASS, + TYPE_GRASS, + 255, // catch rate + 74, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_EARLY_BIRD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Nuzleaf + 70, 70, 40, 60, 60, 40, + TYPE_GRASS, + TYPE_DARK, + 120, // catch rate + 141, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_EARLY_BIRD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Shiftry + 90, 100, 60, 80, 90, 60, + TYPE_GRASS, + TYPE_DARK, + 45, // catch rate + 181, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_EARLY_BIRD, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Nincada + 31, 45, 90, 40, 30, 30, + TYPE_BUG, + TYPE_GROUND, + 255, // catch rate + 65, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_COMPOUND_EYES, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Ninjask + 61, 90, 45, 160, 50, 50, + TYPE_BUG, + TYPE_FLYING, + 120, // catch rate + 155, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_SPEED_BOOST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Shedinja + 1, 90, 45, 40, 30, 30, + TYPE_BUG, + TYPE_GHOST, + 45, // catch rate + 95, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_WONDER_GUARD, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Taillow + 40, 55, 30, 85, 30, 30, + TYPE_NORMAL, + TYPE_FLYING, + 200, // catch rate + 59, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Swellow + 60, 85, 60, 125, 50, 50, + TYPE_NORMAL, + TYPE_FLYING, + 45, // catch rate + 162, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FLYING, + EGG_GROUP_FLYING, + ABILITY_GUTS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Shroomish + 60, 40, 60, 35, 40, 60, + TYPE_GRASS, + TYPE_GRASS, + 255, // catch rate + 65, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_EFFECT_SPORE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Breloom + 60, 130, 80, 70, 60, 60, + TYPE_GRASS, + TYPE_FIGHTING, + 90, // catch rate + 165, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_EFFECT_SPORE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Spinda + 60, 60, 60, 60, 60, 60, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 85, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_CHESTO_BERRY, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_HUMAN_LIKE, + ABILITY_OWN_TEMPO, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN, TRUE + }, { // Wingull + 40, 30, 30, 85, 55, 30, + TYPE_WATER, + TYPE_FLYING, + 190, // catch rate + 64, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Pelipper + 60, 50, 100, 65, 85, 70, + TYPE_WATER, + TYPE_FLYING, + 45, // catch rate + 164, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_FLYING, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Surskit + 40, 30, 32, 65, 50, 52, + TYPE_BUG, + TYPE_WATER, + 200, // catch rate + 63, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_BUG, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Masquerain + 70, 60, 62, 60, 80, 82, + TYPE_BUG, + TYPE_FLYING, + 75, // catch rate + 128, // base exp. yield + 0, 0, 0, 0, 1, 1, + ITEM_NONE, + ITEM_SILVER_POWDER, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_1, + EGG_GROUP_BUG, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Wailmer + 130, 70, 35, 60, 70, 35, + TYPE_WATER, + TYPE_WATER, + 125, // catch rate + 137, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_FIELD, + EGG_GROUP_WATER_2, + ABILITY_WATER_VEIL, + ABILITY_OBLIVIOUS, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Wailord + 170, 90, 45, 60, 90, 45, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 206, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_FIELD, + EGG_GROUP_WATER_2, + ABILITY_WATER_VEIL, + ABILITY_OBLIVIOUS, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Skitty + 50, 45, 45, 50, 35, 35, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 65, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_LEPPA_BERRY, + 191, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Delcatty + 70, 65, 65, 70, 55, 55, + TYPE_NORMAL, + TYPE_NORMAL, + 60, // catch rate + 138, // base exp. yield + 1, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_LEPPA_BERRY, + 191, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_CUTE_CHARM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Kecleon + 60, 90, 70, 40, 60, 120, + TYPE_NORMAL, + TYPE_NORMAL, + 200, // catch rate + 132, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_PERSIM_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_COLOR_CHANGE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Baltoy + 40, 40, 55, 55, 40, 70, + TYPE_GROUND, + TYPE_PSYCHIC, + 255, // catch rate + 58, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Claydol + 60, 70, 105, 75, 70, 120, + TYPE_GROUND, + TYPE_PSYCHIC, + 90, // catch rate + 189, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Nosepass + 30, 45, 135, 30, 45, 90, + TYPE_ROCK, + TYPE_ROCK, + 255, // catch rate + 108, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_STURDY, + ABILITY_MAGNET_PULL, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Torkoal + 70, 85, 140, 20, 85, 70, + TYPE_FIRE, + TYPE_FIRE, + 90, // catch rate + 161, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_WHITE_SMOKE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Sableye + 50, 75, 75, 50, 65, 65, + TYPE_DARK, + TYPE_GHOST, + 45, // catch rate + 98, // base exp. yield + 0, 1, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_KEEN_EYE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Barboach + 50, 48, 43, 60, 46, 41, + TYPE_WATER, + TYPE_GROUND, + 190, // catch rate + 92, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Whiscash + 110, 78, 73, 60, 76, 71, + TYPE_WATER, + TYPE_GROUND, + 75, // catch rate + 158, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Luvdisc + 43, 30, 55, 97, 40, 65, + TYPE_WATER, + TYPE_WATER, + 225, // catch rate + 110, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_HEART_SCALE, + ITEM_NONE, + 191, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Corphish + 43, 80, 65, 35, 50, 35, + TYPE_WATER, + TYPE_WATER, + 205, // catch rate + 111, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_HYPER_CUTTER, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Crawdaunt + 63, 120, 85, 55, 90, 55, + TYPE_WATER, + TYPE_DARK, + 155, // catch rate + 161, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_3, + ABILITY_HYPER_CUTTER, + ABILITY_SHELL_ARMOR, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Feebas + 20, 15, 20, 80, 10, 55, + TYPE_WATER, + TYPE_WATER, + 255, // catch rate + 61, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Milotic + 95, 60, 79, 81, 100, 125, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 213, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_1, + EGG_GROUP_DRAGON, + ABILITY_MARVEL_SCALE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Carvanha + 45, 90, 20, 65, 65, 20, + TYPE_WATER, + TYPE_DARK, + 225, // catch rate + 88, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_ROUGH_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Sharpedo + 70, 120, 40, 95, 95, 40, + TYPE_WATER, + TYPE_DARK, + 60, // catch rate + 175, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_2, + EGG_GROUP_WATER_2, + ABILITY_ROUGH_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Trapinch + 45, 100, 45, 10, 45, 45, + TYPE_GROUND, + TYPE_GROUND, + 255, // catch rate + 73, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SOFT_SAND, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_HYPER_CUTTER, + ABILITY_ARENA_TRAP, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Vibrava + 50, 70, 50, 70, 50, 50, + TYPE_GROUND, + TYPE_DRAGON, + 120, // catch rate + 126, // base exp. yield + 0, 1, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_LEVITATE, + ABILITY_LEVITATE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Flygon + 80, 100, 80, 100, 80, 80, + TYPE_GROUND, + TYPE_DRAGON, + 45, // catch rate + 197, // base exp. yield + 0, 1, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_BUG, + EGG_GROUP_BUG, + ABILITY_LEVITATE, + ABILITY_LEVITATE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Makuhita + 72, 60, 30, 25, 20, 30, + TYPE_FIGHTING, + TYPE_FIGHTING, + 180, // catch rate + 87, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_THICK_FAT, + ABILITY_GUTS, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Hariyama + 144, 120, 60, 50, 40, 60, + TYPE_FIGHTING, + TYPE_FIGHTING, + 200, // catch rate + 184, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_KINGS_ROCK, + 63, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_THICK_FAT, + ABILITY_GUTS, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Electrike + 40, 45, 40, 65, 65, 40, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 120, // catch rate + 104, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_STATIC, + ABILITY_LIGHTNING_ROD, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Manectric + 70, 75, 60, 105, 105, 60, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 45, // catch rate + 168, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_STATIC, + ABILITY_LIGHTNING_ROD, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Numel + 60, 60, 40, 35, 65, 45, + TYPE_FIRE, + TYPE_GROUND, + 255, // catch rate + 88, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Camerupt + 70, 100, 70, 40, 105, 75, + TYPE_FIRE, + TYPE_GROUND, + 150, // catch rate + 175, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_RAWST_BERRY, + ITEM_RAWST_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_MAGMA_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Spheal + 70, 40, 50, 25, 55, 50, + TYPE_ICE, + TYPE_WATER, + 255, // catch rate + 75, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Sealeo + 90, 60, 70, 45, 75, 70, + TYPE_ICE, + TYPE_WATER, + 120, // catch rate + 128, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Walrein + 110, 80, 90, 65, 95, 90, + TYPE_ICE, + TYPE_WATER, + 45, // catch rate + 192, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Cacnea + 50, 85, 40, 35, 85, 40, + TYPE_GRASS, + TYPE_GRASS, + 190, // catch rate + 97, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_POISON_BARB, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SAND_VEIL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Cacturne + 70, 115, 60, 55, 115, 60, + TYPE_GRASS, + TYPE_DARK, + 60, // catch rate + 177, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_NONE, + ITEM_POISON_BARB, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_GRASS, + EGG_GROUP_HUMAN_LIKE, + ABILITY_SAND_VEIL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Snorunt + 50, 50, 50, 50, 50, 50, + TYPE_ICE, + TYPE_ICE, + 190, // catch rate + 74, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_MINERAL, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Glalie + 80, 80, 80, 80, 80, 80, + TYPE_ICE, + TYPE_ICE, + 75, // catch rate + 187, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NEVER_MELT_ICE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_MINERAL, + ABILITY_INNER_FOCUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Lunatone + 70, 55, 65, 70, 95, 85, + TYPE_ROCK, + TYPE_PSYCHIC, + 45, // catch rate + 150, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_MOON_STONE, + 255, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Solrock + 70, 95, 85, 70, 55, 65, + TYPE_ROCK, + TYPE_PSYCHIC, + 45, // catch rate + 150, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SUN_STONE, + 255, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Azurill + 50, 20, 40, 20, 20, 40, + TYPE_NORMAL, + TYPE_NORMAL, + 150, // catch rate + 33, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 191, // gender + 10, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_THICK_FAT, + ABILITY_HUGE_POWER, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Spoink + 60, 25, 35, 60, 70, 80, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 255, // catch rate + 89, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_OWN_TEMPO, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Grumpig + 80, 45, 65, 80, 90, 110, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 60, // catch rate + 164, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_THICK_FAT, + ABILITY_OWN_TEMPO, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Plusle + 60, 50, 40, 95, 85, 75, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 200, // catch rate + 120, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_PLUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Minun + 60, 40, 50, 95, 75, 85, + TYPE_ELECTRIC, + TYPE_ELECTRIC, + 200, // catch rate + 120, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_FAIRY, + ABILITY_MINUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Mawile + 50, 85, 85, 50, 55, 55, + TYPE_STEEL, + TYPE_STEEL, + 45, // catch rate + 98, // base exp. yield + 0, 1, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_FIELD, + EGG_GROUP_FAIRY, + ABILITY_HYPER_CUTTER, + ABILITY_INTIMIDATE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Meditite + 30, 40, 55, 60, 40, 55, + TYPE_FIGHTING, + TYPE_PSYCHIC, + 180, // catch rate + 91, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_PURE_POWER, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Medicham + 60, 60, 75, 80, 60, 75, + TYPE_FIGHTING, + TYPE_PSYCHIC, + 90, // catch rate + 153, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_HUMAN_LIKE, + EGG_GROUP_HUMAN_LIKE, + ABILITY_PURE_POWER, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Swablu + 45, 40, 60, 50, 40, 75, + TYPE_NORMAL, + TYPE_FLYING, + 255, // catch rate + 74, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_FLYING, + EGG_GROUP_DRAGON, + ABILITY_NATURAL_CURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Altaria + 75, 70, 90, 80, 70, 105, + TYPE_DRAGON, + TYPE_FLYING, + 45, // catch rate + 188, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_FLYING, + EGG_GROUP_DRAGON, + ABILITY_NATURAL_CURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Wynaut + 95, 23, 48, 23, 23, 48, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 125, // catch rate + 44, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_SHADOW_TAG, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Duskull + 20, 40, 90, 25, 30, 90, + TYPE_GHOST, + TYPE_GHOST, + 190, // catch rate + 97, // base exp. yield + 0, 0, 1, 0, 0, 1, + ITEM_NONE, + ITEM_SPELL_TAG, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Dusclops + 40, 70, 130, 25, 60, 130, + TYPE_GHOST, + TYPE_GHOST, + 90, // catch rate + 179, // base exp. yield + 0, 0, 1, 0, 0, 2, + ITEM_NONE, + ITEM_SPELL_TAG, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Roselia + 50, 60, 45, 65, 100, 80, + TYPE_GRASS, + TYPE_POISON, + 150, // catch rate + 152, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_POISON_BARB, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FAIRY, + EGG_GROUP_GRASS, + ABILITY_NATURAL_CURE, + ABILITY_POISON_POINT, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN, TRUE + }, { // Slakoth + 60, 60, 60, 30, 35, 35, + TYPE_NORMAL, + TYPE_NORMAL, + 255, // catch rate + 83, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_TRUANT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Vigoroth + 80, 80, 80, 90, 55, 55, + TYPE_NORMAL, + TYPE_NORMAL, + 120, // catch rate + 126, // base exp. yield + 0, 0, 0, 2, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_VITAL_SPIRIT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Slaking + 150, 160, 100, 100, 95, 65, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 210, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_TRUANT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Gulpin + 70, 43, 53, 40, 43, 53, + TYPE_POISON, + TYPE_POISON, + 225, // catch rate + 75, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_BIG_PEARL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LIQUID_OOZE, + ABILITY_STICKY_HOLD, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Swalot + 100, 73, 83, 55, 73, 83, + TYPE_POISON, + TYPE_POISON, + 75, // catch rate + 168, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_BIG_PEARL, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LIQUID_OOZE, + ABILITY_STICKY_HOLD, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Tropius + 99, 68, 83, 51, 72, 87, + TYPE_GRASS, + TYPE_FLYING, + 200, // catch rate + 169, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_GRASS, + ABILITY_CHLOROPHYLL, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Whismur + 64, 51, 23, 28, 51, 23, + TYPE_NORMAL, + TYPE_NORMAL, + 190, // catch rate + 68, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_CHESTO_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_SOUNDPROOF, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Loudred + 84, 71, 43, 48, 71, 43, + TYPE_NORMAL, + TYPE_NORMAL, + 120, // catch rate + 126, // base exp. yield + 2, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_CHESTO_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_SOUNDPROOF, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Exploud + 104, 91, 63, 68, 91, 63, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 184, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_NONE, + ITEM_CHESTO_BERRY, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_FIELD, + ABILITY_SOUNDPROOF, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Clamperl + 35, 64, 85, 32, 74, 55, + TYPE_WATER, + TYPE_WATER, + 255, // catch rate + 142, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_BLUE_SHARD, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_SHELL_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Huntail + 55, 104, 105, 52, 94, 75, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 178, // base exp. yield + 0, 1, 1, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Gorebyss + 55, 84, 105, 52, 114, 75, + TYPE_WATER, + TYPE_WATER, + 60, // catch rate + 178, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_1, + ABILITY_SWIFT_SWIM, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PINK + }, { // Absol + 65, 130, 60, 75, 75, 60, + TYPE_DARK, + TYPE_DARK, + 30, // catch rate + 174, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_MEDIUM_SLOW, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE, TRUE + }, { // Shuppet + 44, 75, 35, 45, 63, 33, + TYPE_GHOST, + TYPE_GHOST, + 225, // catch rate + 97, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SPELL_TAG, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_INSOMNIA, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Banette + 64, 115, 65, 65, 83, 63, + TYPE_GHOST, + TYPE_GHOST, + 45, // catch rate + 179, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_SPELL_TAG, + 127, // gender + 25, // egg cycles + 35, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_INSOMNIA, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK + }, { // Seviper + 73, 100, 60, 65, 100, 60, + TYPE_POISON, + TYPE_POISON, + 90, // catch rate + 165, // base exp. yield + 0, 1, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_FIELD, + EGG_GROUP_DRAGON, + ABILITY_SHED_SKIN, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLACK, TRUE + }, { // Zangoose + 73, 115, 60, 90, 60, 60, + TYPE_NORMAL, + TYPE_NORMAL, + 90, // catch rate + 165, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_FIELD, + EGG_GROUP_FIELD, + ABILITY_IMMUNITY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE, TRUE + }, { // Relicanth + 100, 90, 130, 55, 45, 65, + TYPE_WATER, + TYPE_ROCK, + 25, // catch rate + 198, // base exp. yield + 1, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_GREEN_SHARD, + 31, // gender + 40, // egg cycles + 70, // base friendship + GROWTH_SLOW, + EGG_GROUP_WATER_1, + EGG_GROUP_WATER_2, + ABILITY_SWIFT_SWIM, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Aron + 50, 70, 100, 30, 40, 40, + TYPE_STEEL, + TYPE_ROCK, + 180, // catch rate + 96, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_HARD_STONE, + 127, // gender + 35, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_STURDY, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Lairon + 60, 90, 140, 40, 50, 50, + TYPE_STEEL, + TYPE_ROCK, + 90, // catch rate + 152, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_HARD_STONE, + 127, // gender + 35, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_STURDY, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Aggron + 70, 110, 180, 50, 60, 60, + TYPE_STEEL, + TYPE_ROCK, + 45, // catch rate + 205, // base exp. yield + 0, 0, 3, 0, 0, 0, + ITEM_NONE, + ITEM_HARD_STONE, + 127, // gender + 35, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MONSTER, + EGG_GROUP_MONSTER, + ABILITY_STURDY, + ABILITY_ROCK_HEAD, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Castform + 70, 70, 70, 70, 70, 70, + TYPE_NORMAL, + TYPE_NORMAL, + 45, // catch rate + 145, // base exp. yield + 1, 0, 0, 0, 0, 0, + ITEM_MYSTIC_WATER, + ITEM_MYSTIC_WATER, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_MEDIUM_FAST, + EGG_GROUP_FAIRY, + EGG_GROUP_AMORPHOUS, + ABILITY_FORECAST, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Volbeat + 65, 73, 55, 85, 47, 75, + TYPE_BUG, + TYPE_BUG, + 150, // catch rate + 146, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_BUG, + EGG_GROUP_HUMAN_LIKE, + ABILITY_ILLUMINATE, + ABILITY_SWARM, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Illumise + 65, 47, 55, 85, 73, 75, + TYPE_BUG, + TYPE_BUG, + 150, // catch rate + 146, // base exp. yield + 0, 0, 0, 1, 0, 0, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 15, // egg cycles + 70, // base friendship + GROWTH_FLUCTUATING, + EGG_GROUP_BUG, + EGG_GROUP_HUMAN_LIKE, + ABILITY_OBLIVIOUS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Lileep + 66, 41, 77, 23, 61, 87, + TYPE_ROCK, + TYPE_GRASS, + 45, // catch rate + 121, // base exp. yield + 0, 0, 0, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_SUCTION_CUPS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_PURPLE + }, { // Cradily + 86, 81, 97, 43, 81, 107, + TYPE_ROCK, + TYPE_GRASS, + 45, // catch rate + 201, // base exp. yield + 0, 0, 0, 0, 0, 2, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_SUCTION_CUPS, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Anorith + 45, 95, 50, 75, 40, 50, + TYPE_ROCK, + TYPE_BUG, + 45, // catch rate + 119, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_BATTLE_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Armaldo + 75, 125, 100, 45, 70, 80, + TYPE_ROCK, + TYPE_BUG, + 45, // catch rate + 200, // base exp. yield + 0, 2, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 31, // gender + 30, // egg cycles + 70, // base friendship + GROWTH_ERRATIC, + EGG_GROUP_WATER_3, + EGG_GROUP_WATER_3, + ABILITY_BATTLE_ARMOR, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Ralts + 28, 25, 25, 40, 45, 35, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 235, // catch rate + 70, // base exp. yield + 0, 0, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_SYNCHRONIZE, + ABILITY_TRACE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Kirlia + 38, 35, 35, 50, 65, 55, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 120, // catch rate + 140, // base exp. yield + 0, 0, 0, 0, 2, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_SYNCHRONIZE, + ABILITY_TRACE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Gardevoir + 68, 65, 65, 80, 125, 115, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 208, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 20, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_SYNCHRONIZE, + ABILITY_TRACE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Bagon + 45, 75, 60, 50, 40, 30, + TYPE_DRAGON, + TYPE_DRAGON, + 45, // catch rate + 89, // base exp. yield + 0, 1, 0, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_DRAGON, + EGG_GROUP_DRAGON, + ABILITY_ROCK_HEAD, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Shelgon + 65, 95, 100, 50, 60, 50, + TYPE_DRAGON, + TYPE_DRAGON, + 45, // catch rate + 144, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_DRAGON, + EGG_GROUP_DRAGON, + ABILITY_ROCK_HEAD, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_WHITE + }, { // Salamence + 95, 135, 80, 100, 110, 80, + TYPE_DRAGON, + TYPE_FLYING, + 45, // catch rate + 218, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_DRAGON_SCALE, + 127, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_DRAGON, + EGG_GROUP_DRAGON, + ABILITY_INTIMIDATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Beldum + 40, 55, 80, 30, 35, 60, + TYPE_STEEL, + TYPE_PSYCHIC, + 3, // catch rate + 103, // base exp. yield + 0, 0, 1, 0, 0, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 255, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Metang + 60, 75, 100, 50, 55, 80, + TYPE_STEEL, + TYPE_PSYCHIC, + 3, // catch rate + 153, // base exp. yield + 0, 0, 2, 0, 0, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 255, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Metagross + 80, 135, 130, 70, 95, 90, + TYPE_STEEL, + TYPE_PSYCHIC, + 3, // catch rate + 210, // base exp. yield + 0, 0, 3, 0, 0, 0, + ITEM_NONE, + ITEM_METAL_COAT, + 255, // gender + 40, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_MINERAL, + EGG_GROUP_MINERAL, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Regirock + 80, 100, 200, 50, 50, 100, + TYPE_ROCK, + TYPE_ROCK, + 3, // catch rate + 217, // base exp. yield + 0, 0, 3, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BROWN + }, { // Regice + 80, 50, 100, 50, 100, 200, + TYPE_ICE, + TYPE_ICE, + 3, // catch rate + 216, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Registeel + 80, 75, 150, 50, 75, 150, + TYPE_STEEL, + TYPE_STEEL, + 3, // catch rate + 215, // base exp. yield + 0, 0, 2, 0, 0, 1, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 80, // egg cycles + 35, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_CLEAR_BODY, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GRAY + }, { // Kyogre + 100, 100, 90, 90, 150, 140, + TYPE_WATER, + TYPE_WATER, + 5, // catch rate + 218, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_DRIZZLE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Groudon + 100, 150, 140, 90, 100, 90, + TYPE_GROUND, + TYPE_GROUND, + 5, // catch rate + 218, // base exp. yield + 0, 3, 0, 0, 0, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_DROUGHT, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Rayquaza + 105, 150, 90, 95, 150, 90, + TYPE_DRAGON, + TYPE_FLYING, + 3, // catch rate + 220, // base exp. yield + 0, 2, 0, 0, 1, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_AIR_LOCK, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_GREEN + }, { // Latias + 80, 80, 90, 110, 110, 130, + TYPE_DRAGON, + TYPE_PSYCHIC, + 3, // catch rate + 211, // base exp. yield + 0, 0, 0, 0, 0, 3, + ITEM_NONE, + ITEM_NONE, + 254, // gender + 120, // egg cycles + 90, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED + }, { // Latios + 80, 90, 80, 110, 130, 110, + TYPE_DRAGON, + TYPE_PSYCHIC, + 3, // catch rate + 211, // base exp. yield + 0, 0, 0, 0, 3, 0, + ITEM_NONE, + ITEM_NONE, + 0, // gender + 120, // egg cycles + 90, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + }, { // Jirachi + 100, 100, 100, 100, 100, 100, + TYPE_STEEL, + TYPE_PSYCHIC, + 3, // catch rate + 215, // base exp. yield + 3, 0, 0, 0, 0, 0, + ITEM_STAR_PIECE, + ITEM_STAR_PIECE, + 255, // gender + 120, // egg cycles + 100, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_SERENE_GRACE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_YELLOW + }, { // Deoxys + 50, 150, 50, 150, 150, 50, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 3, // catch rate + 215, // base exp. yield + 0, 1, 0, 1, 1, 0, + ITEM_NONE, + ITEM_NONE, + 255, // gender + 120, // egg cycles + 0, // base friendship + GROWTH_SLOW, + EGG_GROUP_UNDISCOVERED, + EGG_GROUP_UNDISCOVERED, + ABILITY_PRESSURE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_RED, TRUE + }, { // Chimecho + 65, 50, 70, 65, 95, 80, + TYPE_PSYCHIC, + TYPE_PSYCHIC, + 45, // catch rate + 147, // base exp. yield + 0, 0, 0, 0, 1, 1, + ITEM_NONE, + ITEM_NONE, + 127, // gender + 25, // egg cycles + 70, // base friendship + GROWTH_FAST, + EGG_GROUP_AMORPHOUS, + EGG_GROUP_AMORPHOUS, + ABILITY_LEVITATE, + ABILITY_NONE, + 0, // Safari Zone flee rate + BODY_COLOR_BLUE + } +}; + +#endif //POKERUBY_BASE_STATS_H diff --git a/include/data/pokemon/cry_ids.h b/include/data/pokemon/cry_ids.h new file mode 100644 index 000000000..d965a41cf --- /dev/null +++ b/include/data/pokemon/cry_ids.h @@ -0,0 +1,146 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_CRY_IDS_H +#define POKERUBY_CRY_IDS_H + +const u16 gSpeciesIdToCryId[] = { + 273, // TREECKO + 274, // GROVYLE + 275, // SCEPTILE + 270, // TORCHIC + 271, // COMBUSKEN + 272, // BLAZIKEN + 276, // MUDKIP + 277, // MARSHTOMP + 278, // SWAMPERT + 359, // POOCHYENA + 360, // MIGHTYENA + 378, // ZIGZAGOON + 375, // LINOONE + 290, // WURMPLE + 291, // SILCOON + 292, // BEAUTIFLY + 293, // CASCOON + 294, // DUSTOX + 283, // LOTAD + 284, // LOMBRE + 285, // LUDICOLO + 286, // SEEDOT + 287, // NUZLEAF + 288, // SHIFTRY + 301, // NINCADA + 302, // NINJASK + 303, // SHEDINJA + 266, // TAILLOW + 267, // SWELLOW + 374, // SHROOMISH + 373, // BRELOOM + 269, // SPINDA + 280, // WINGULL + 279, // PELIPPER + 310, // SURSKIT + 311, // MASQUERAIN + 377, // WAILMER + 381, // WAILORD + 312, // SKITTY + 313, // DELCATTY + 251, // KECLEON + 329, // BALTOY + 330, // CLAYDOL + 306, // NOSEPASS + 253, // TORKOAL + 362, // SABLEYE + 318, // BARBOACH + 319, // WHISCASH + 368, // LUVDISC + 320, // CORPHISH + 321, // CRAWDAUNT + 333, // FEEBAS + 334, // MILOTIC + 289, // CARVANHA + 260, // SHARPEDO + 324, // TRAPINCH + 325, // VIBRAVA + 326, // FLYGON + 304, // MAKUHITA + 305, // HARIYAMA + 254, // ELECTRIKE + 255, // MANECTRIC + 316, // NUMEL + 317, // CAMERUPT + 338, // SPHEAL + 339, // SEALEO + 340, // WALREIN + 327, // CACNEA + 328, // CACTURNE + 383, // SNORUNT + 307, // GLALIE + 331, // LUNATONE + 332, // SOLROCK + 262, // AZURILL + 322, // SPOINK + 323, // GRUMPIG + 308, // PLUSLE + 309, // MINUN + 363, // MAWILE + 336, // MEDITITE + 337, // MEDICHAM + 263, // SWABLU + 264, // ALTARIA + 258, // WYNAUT + 256, // DUSKULL + 361, // DUSCLOPS + 252, // ROSELIA + 298, // SLAKOTH + 299, // VIGOROTH + 300, // SLAKING + 314, // GULPIN + 315, // SWALOT + 376, // TROPIUS + 382, // WHISMUR + 380, // LOUDRED + 379, // EXPLOUD + 341, // CLAMPERL + 342, // HUNTAIL + 343, // GOREBYSS + 335, // ABSOL + 282, // SHUPPET + 281, // BANETTE + 259, // SEVIPER + 261, // ZANGOOSE + 367, // RELICANTH + 364, // ARON + 365, // LAIRON + 366, // AGGRON + 356, // CASTFORM + 357, // VOLBEAT + 358, // ILLUMISE + 344, // LILEEP + 345, // CRADILY + 346, // ANORITH + 347, // ARMALDO + 295, // RALTS + 296, // KIRLIA + 297, // GARDEVOIR + 351, // BAGON + 352, // SHELGON + 372, // SALAMENCE + 348, // BELDUM + 349, // METANG + 350, // METAGROSS + 353, // REGIROCK + 354, // REGICE + 355, // REGISTEEL + 370, // KYOGRE + 369, // GROUDON + 371, // RAYQUAZA + 257, // LATIAS + 384, // LATIOS + 385, // JIRACHI + 386, // DEOXYS + 387 // CHIMECHO +}; + +#endif //POKERUBY_CRY_IDS_H diff --git a/include/data/pokemon/dex_order.h b/include/data/pokemon/dex_order.h new file mode 100644 index 000000000..6f8582533 --- /dev/null +++ b/include/data/pokemon/dex_order.h @@ -0,0 +1,15 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_DEX_ORDER_H +#define POKERUBY_DEX_ORDER_H + +const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151 +}; + +const u16 gSpeciesToNationalPokedexNum[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 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, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 290, 291, 292, 276, 277, 285, 286, 327, 278, 279, 283, 284, 320, 321, 300, 301, 352, 343, 344, 299, 324, 302, 339, 340, 370, 341, 342, 349, 350, 318, 319, 328, 329, 330, 296, 297, 309, 310, 322, 323, 363, 364, 365, 331, 332, 361, 362, 337, 338, 298, 325, 326, 311, 312, 303, 307, 308, 333, 334, 360, 355, 356, 315, 287, 288, 289, 316, 317, 357, 293, 294, 295, 366, 367, 368, 359, 353, 354, 336, 335, 369, 304, 305, 306, 351, 313, 314, 345, 346, 347, 348, 280, 281, 282, 371, 372, 373, 374, 375, 376, 377, 378, 379, 382, 383, 384, 380, 381, 385, 386, 358}; + +const u16 gHoennToNationalOrder[] = {252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 63, 64, 65, 290, 291, 292, 293, 294, 295, 296, 297, 118, 119, 129, 130, 298, 183, 184, 74, 75, 76, 299, 300, 301, 41, 42, 169, 72, 73, 302, 303, 304, 305, 306, 66, 67, 68, 307, 308, 309, 310, 311, 312, 81, 82, 100, 101, 313, 314, 43, 44, 45, 182, 84, 85, 315, 316, 317, 318, 319, 320, 321, 322, 323, 218, 219, 324, 88, 89, 109, 110, 325, 326, 27, 28, 327, 227, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 174, 39, 40, 349, 350, 351, 120, 121, 352, 353, 354, 355, 356, 357, 358, 359, 37, 38, 172, 25, 26, 54, 55, 360, 202, 177, 178, 203, 231, 232, 127, 214, 111, 112, 361, 362, 363, 364, 365, 366, 367, 368, 369, 222, 170, 171, 370, 116, 117, 230, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 69, 70, 71, 77, 78, 79, 80, 83, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 107, 108, 113, 114, 115, 122, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 173, 175, 176, 179, 180, 181, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 220, 221, 223, 224, 225, 226, 228, 229, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 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}; + +#endif //POKERUBY_DEX_ORDER_H diff --git a/include/data/pokemon/evolution.h b/include/data/pokemon/evolution.h new file mode 100644 index 000000000..bc1b6d293 --- /dev/null +++ b/include/data/pokemon/evolution.h @@ -0,0 +1,608 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_EVOLUTION_H +#define POKERUBY_EVOLUTION_H + +const struct EvolutionData gEvolutionTable[] = { + { // ?????????? + }, {{ // Bulbasaur + {EVO_LEVEL, 16, SPECIES_IVYSAUR}, + }}, {{ // Ivysaur + {EVO_LEVEL, 32, SPECIES_VENUSAUR}, + }}, { // Venusaur + }, {{ // Charmander + {EVO_LEVEL, 16, SPECIES_CHARMELEON}, + }}, {{ // Charmeleon + {EVO_LEVEL, 36, SPECIES_CHARIZARD}, + }}, { // Charizard + }, {{ // Squirtle + {EVO_LEVEL, 16, SPECIES_WARTORTLE}, + }}, {{ // Wartortle + {EVO_LEVEL, 36, SPECIES_BLASTOISE}, + }}, { // Blastoise + }, {{ // Caterpie + {EVO_LEVEL, 7, SPECIES_METAPOD}, + }}, {{ // Metapod + {EVO_LEVEL, 10, SPECIES_BUTTERFREE}, + }}, { // Butterfree + }, {{ // Weedle + {EVO_LEVEL, 7, SPECIES_KAKUNA}, + }}, {{ // Kakuna + {EVO_LEVEL, 10, SPECIES_BEEDRILL}, + }}, { // Beedrill + }, {{ // Pidgey + {EVO_LEVEL, 18, SPECIES_PIDGEOTTO}, + }}, {{ // Pidgeotto + {EVO_LEVEL, 36, SPECIES_PIDGEOT}, + }}, { // Pidgeot + }, {{ // Rattata + {EVO_LEVEL, 20, SPECIES_RATICATE}, + }}, { // Raticate + }, {{ // Spearow + {EVO_LEVEL, 20, SPECIES_FEAROW}, + }}, { // Fearow + }, {{ // Ekans + {EVO_LEVEL, 22, SPECIES_ARBOK}, + }}, { // Arbok + }, {{ // Pikachu + {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}, + }}, { // Raichu + }, {{ // Sandshrew + {EVO_LEVEL, 22, SPECIES_SANDSLASH}, + }}, { // Sandslash + }, {{ // Nidoran♀ + {EVO_LEVEL, 16, SPECIES_NIDORINA}, + }}, {{ // Nidorina + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}, + }}, { // Nidoqueen + }, {{ // Nidoran♂ + {EVO_LEVEL, 16, SPECIES_NIDORINO}, + }}, {{ // Nidorino + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}, + }}, { // Nidoking + }, {{ // Clefairy + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}, + }}, { // Clefable + }, {{ // Vulpix + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}, + }}, { // Ninetales + }, {{ // Jigglypuff + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}, + }}, { // Wigglytuff + }, {{ // Zubat + {EVO_LEVEL, 22, SPECIES_GOLBAT}, + }}, {{ // Golbat + {EVO_FRIENDSHIP, 0, SPECIES_CROBAT}, + }}, {{ // Oddish + {EVO_LEVEL, 21, SPECIES_GLOOM}, + }}, {{ // Gloom + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, + {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}, + }}, { // Vileplume + }, {{ // Paras + {EVO_LEVEL, 24, SPECIES_PARASECT}, + }}, { // Parasect + }, {{ // Venonat + {EVO_LEVEL, 31, SPECIES_VENOMOTH}, + }}, { // Venomoth + }, {{ // Diglett + {EVO_LEVEL, 26, SPECIES_DUGTRIO}, + }}, { // Dugtrio + }, {{ // Meowth + {EVO_LEVEL, 28, SPECIES_PERSIAN}, + }}, { // Persian + }, {{ // Psyduck + {EVO_LEVEL, 33, SPECIES_GOLDUCK}, + }}, { // Golduck + }, {{ // Mankey + {EVO_LEVEL, 28, SPECIES_PRIMEAPE}, + }}, { // Primeape + }, {{ // Growlithe + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}, + }}, { // Arcanine + }, {{ // Poliwag + {EVO_LEVEL, 25, SPECIES_POLIWHIRL}, + }}, {{ // Poliwhirl + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, + }}, { // Poliwrath + }, {{ // Abra + {EVO_LEVEL, 16, SPECIES_KADABRA}, + }}, {{ // Kadabra + {EVO_TRADE, 0, SPECIES_ALAKAZAM}, + }}, { // Alakazam + }, {{ // Machop + {EVO_LEVEL, 28, SPECIES_MACHOKE}, + }}, {{ // Machoke + {EVO_TRADE, 0, SPECIES_MACHAMP}, + }}, { // Machamp + }, {{ // Bellsprout + {EVO_LEVEL, 21, SPECIES_WEEPINBELL}, + }}, {{ // Weepinbell + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}, + }}, { // Victreebel + }, {{ // Tentacool + {EVO_LEVEL, 30, SPECIES_TENTACRUEL}, + }}, { // Tentacruel + }, {{ // Geodude + {EVO_LEVEL, 25, SPECIES_GRAVELER}, + }}, {{ // Graveler + {EVO_TRADE, 0, SPECIES_GOLEM}, + }}, { // Golem + }, {{ // Ponyta + {EVO_LEVEL, 40, SPECIES_RAPIDASH}, + }}, { // Rapidash + }, {{ // Slowpoke + {EVO_LEVEL, 37, SPECIES_SLOWBRO}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, + }}, { // Slowbro + }, {{ // Magnemite + {EVO_LEVEL, 30, SPECIES_MAGNETON}, + }}, { // Magneton + }, { // Farfetch'd + }, {{ // Doduo + {EVO_LEVEL, 31, SPECIES_DODRIO}, + }}, { // Dodrio + }, {{ // Seel + {EVO_LEVEL, 34, SPECIES_DEWGONG}, + }}, { // Dewgong + }, {{ // Grimer + {EVO_LEVEL, 38, SPECIES_MUK}, + }}, { // Muk + }, {{ // Shellder + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}, + }}, { // Cloyster + }, {{ // Gastly + {EVO_LEVEL, 25, SPECIES_HAUNTER}, + }}, {{ // Haunter + {EVO_TRADE, 0, SPECIES_GENGAR}, + }}, { // Gengar + }, {{ // Onix + {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, + }}, {{ // Drowzee + {EVO_LEVEL, 26, SPECIES_HYPNO}, + }}, { // Hypno + }, {{ // Krabby + {EVO_LEVEL, 28, SPECIES_KINGLER}, + }}, { // Kingler + }, {{ // Voltorb + {EVO_LEVEL, 30, SPECIES_ELECTRODE}, + }}, { // Electrode + }, {{ // Exeggcute + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, + }}, { // Exeggutor + }, {{ // Cubone + {EVO_LEVEL, 28, SPECIES_MAROWAK}, + }}, { // Marowak + }, { // Hitmonlee + }, { // Hitmonchan + }, { // Lickitung + }, {{ // Koffing + {EVO_LEVEL, 35, SPECIES_WEEZING}, + }}, { // Weezing + }, {{ // Rhyhorn + {EVO_LEVEL, 42, SPECIES_RHYDON}, + }}, { // Rhydon + }, {{ // Chansey + {EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}, + }}, { // Tangela + }, { // Kangaskhan + }, {{ // Horsea + {EVO_LEVEL, 32, SPECIES_SEADRA}, + }}, {{ // Seadra + {EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, + }}, {{ // Goldeen + {EVO_LEVEL, 33, SPECIES_SEAKING}, + }}, { // Seaking + }, {{ // Staryu + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}, + }}, { // Starmie + }, { // Mr. mime + }, {{ // Scyther + {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, + }}, { // Jynx + }, { // Electabuzz + }, { // Magmar + }, { // Pinsir + }, { // Tauros + }, {{ // Magikarp + {EVO_LEVEL, 20, SPECIES_GYARADOS}, + }}, { // Gyarados + }, { // Lapras + }, { // Ditto + }, {{ // Eevee + {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, + {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, + {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}, + }}, { // Vaporeon + }, { // Jolteon + }, { // Flareon + }, {{ // Porygon + {EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}, + }}, {{ // Omanyte + {EVO_LEVEL, 40, SPECIES_OMASTAR}, + }}, { // Omastar + }, {{ // Kabuto + {EVO_LEVEL, 40, SPECIES_KABUTOPS}, + }}, { // Kabutops + }, { // Aerodactyl + }, { // Snorlax + }, { // Articuno + }, { // Zapdos + }, { // Moltres + }, {{ // Dratini + {EVO_LEVEL, 30, SPECIES_DRAGONAIR}, + }}, {{ // Dragonair + {EVO_LEVEL, 55, SPECIES_DRAGONITE}, + }}, { // Dragonite + }, { // Mewtwo + }, { // Mew + }, {{ // Chikorita + {EVO_LEVEL, 16, SPECIES_BAYLEEF}, + }}, {{ // Bayleef + {EVO_LEVEL, 32, SPECIES_MEGANIUM}, + }}, { // Meganium + }, {{ // Cyndaquil + {EVO_LEVEL, 14, SPECIES_QUILAVA}, + }}, {{ // Quilava + {EVO_LEVEL, 36, SPECIES_TYPHLOSION}, + }}, { // Typhlosion + }, {{ // Totodile + {EVO_LEVEL, 18, SPECIES_CROCONAW}, + }}, {{ // Croconaw + {EVO_LEVEL, 30, SPECIES_FERALIGATR}, + }}, { // Feraligatr + }, {{ // Sentret + {EVO_LEVEL, 15, SPECIES_FURRET}, + }}, { // Furret + }, {{ // Hoothoot + {EVO_LEVEL, 20, SPECIES_NOCTOWL}, + }}, { // Noctowl + }, {{ // Ledyba + {EVO_LEVEL, 18, SPECIES_LEDIAN}, + }}, { // Ledian + }, {{ // Spinarak + {EVO_LEVEL, 22, SPECIES_ARIADOS}, + }}, { // Ariados + }, { // Crobat + }, {{ // Chinchou + {EVO_LEVEL, 27, SPECIES_LANTURN}, + }}, { // Lanturn + }, {{ // Pichu + {EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}, + }}, {{ // Cleffa + {EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}, + }}, {{ // Igglybuff + {EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}, + }}, {{ // Togepi + {EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}, + }}, { // Togetic + }, {{ // Natu + {EVO_LEVEL, 25, SPECIES_XATU}, + }}, { // Xatu + }, {{ // Mareep + {EVO_LEVEL, 15, SPECIES_FLAAFFY}, + }}, {{ // Flaaffy + {EVO_LEVEL, 30, SPECIES_AMPHAROS}, + }}, { // Ampharos + }, { // Bellossom + }, {{ // Marill + {EVO_LEVEL, 18, SPECIES_AZUMARILL}, + }}, { // Azumarill + }, { // Sudowoodo + }, { // Politoed + }, {{ // Hoppip + {EVO_LEVEL, 18, SPECIES_SKIPLOOM}, + }}, {{ // Skiploom + {EVO_LEVEL, 27, SPECIES_JUMPLUFF}, + }}, { // Jumpluff + }, { // Aipom + }, {{ // Sunkern + {EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}, + }}, { // Sunflora + }, { // Yanma + }, {{ // Wooper + {EVO_LEVEL, 20, SPECIES_QUAGSIRE}, + }}, { // Quagsire + }, { // Espeon + }, { // Umbreon + }, { // Murkrow + }, { // Slowking + }, { // Misdreavus + }, { // Unown + }, { // Wobbuffet + }, { // Girafarig + }, {{ // Pineco + {EVO_LEVEL, 31, SPECIES_FORRETRESS}, + }}, { // Forretress + }, { // Dunsparce + }, { // Gligar + }, { // Steelix + }, {{ // Snubbull + {EVO_LEVEL, 23, SPECIES_GRANBULL}, + }}, { // Granbull + }, { // Qwilfish + }, { // Scizor + }, { // Shuckle + }, { // Heracross + }, { // Sneasel + }, {{ // Teddiursa + {EVO_LEVEL, 30, SPECIES_URSARING}, + }}, { // Ursaring + }, {{ // Slugma + {EVO_LEVEL, 38, SPECIES_MAGCARGO}, + }}, { // Magcargo + }, {{ // Swinub + {EVO_LEVEL, 33, SPECIES_PILOSWINE}, + }}, { // Piloswine + }, { // Corsola + }, {{ // Remoraid + {EVO_LEVEL, 25, SPECIES_OCTILLERY}, + }}, { // Octillery + }, { // Delibird + }, { // Mantine + }, { // Skarmory + }, {{ // Houndour + {EVO_LEVEL, 24, SPECIES_HOUNDOOM}, + }}, { // Houndoom + }, { // Kingdra + }, {{ // Phanpy + {EVO_LEVEL, 25, SPECIES_DONPHAN}, + }}, { // Donphan + }, { // Porygon2 + }, { // Stantler + }, { // Smeargle + }, {{ // Tyrogue + {EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, + {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, + {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}, + }}, { // Hitmontop + }, {{ // Smoochum + {EVO_LEVEL, 30, SPECIES_JYNX}, + }}, {{ // Elekid + {EVO_LEVEL, 30, SPECIES_ELECTABUZZ}, + }}, {{ // Magby + {EVO_LEVEL, 30, SPECIES_MAGMAR}, + }}, { // Miltank + }, { // Blissey + }, { // Raikou + }, { // Entei + }, { // Suicune + }, {{ // Larvitar + {EVO_LEVEL, 30, SPECIES_PUPITAR}, + }}, {{ // Pupitar + {EVO_LEVEL, 55, SPECIES_TYRANITAR}, + }}, { // Tyranitar + }, { // Lugia + }, { // Ho-Oh + }, { // Celebi + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, { // ? + }, {{ // Treecko + {EVO_LEVEL, 16, SPECIES_GROVYLE}, + }}, {{ // Grovyle + {EVO_LEVEL, 36, SPECIES_SCEPTILE}, + }}, { // Sceptile + }, {{ // Torchic + {EVO_LEVEL, 16, SPECIES_COMBUSKEN}, + }}, {{ // Combusken + {EVO_LEVEL, 36, SPECIES_BLAZIKEN}, + }}, { // Blaziken + }, {{ // Mudkip + {EVO_LEVEL, 16, SPECIES_MARSHTOMP}, + }}, {{ // Marshtomp + {EVO_LEVEL, 36, SPECIES_SWAMPERT}, + }}, { // Swampert + }, {{ // Poochyena + {EVO_LEVEL, 18, SPECIES_MIGHTYENA}, + }}, { // Mightyena + }, {{ // Zigzagoon + {EVO_LEVEL, 20, SPECIES_LINOONE}, + }}, { // Linoone + }, {{ // Wurmple + {EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, + {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}, + }}, {{ // Silcoon + {EVO_LEVEL, 10, SPECIES_BEAUTIFLY}, + }}, { // Beautifly + }, {{ // Cascoon + {EVO_LEVEL, 10, SPECIES_DUSTOX}, + }}, { // Dustox + }, {{ // Lotad + {EVO_LEVEL, 14, SPECIES_LOMBRE}, + }}, {{ // Lombre + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}, + }}, { // Ludicolo + }, {{ // Seedot + {EVO_LEVEL, 14, SPECIES_NUZLEAF}, + }}, {{ // Nuzleaf + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}, + }}, { // Shiftry + }, {{ // Nincada + {EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, + {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}, + }}, { // Ninjask + }, { // Shedinja + }, {{ // Taillow + {EVO_LEVEL, 22, SPECIES_SWELLOW}, + }}, { // Swellow + }, {{ // Shroomish + {EVO_LEVEL, 23, SPECIES_BRELOOM}, + }}, { // Breloom + }, { // Spinda + }, {{ // Wingull + {EVO_LEVEL, 25, SPECIES_PELIPPER}, + }}, { // Pelipper + }, {{ // Surskit + {EVO_LEVEL, 22, SPECIES_MASQUERAIN}, + }}, { // Masquerain + }, {{ // Wailmer + {EVO_LEVEL, 40, SPECIES_WAILORD}, + }}, { // Wailord + }, {{ // Skitty + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}, + }}, { // Delcatty + }, { // Kecleon + }, {{ // Baltoy + {EVO_LEVEL, 36, SPECIES_CLAYDOL}, + }}, { // Claydol + }, { // Nosepass + }, { // Torkoal + }, { // Sableye + }, {{ // Barboach + {EVO_LEVEL, 30, SPECIES_WHISCASH}, + }}, { // Whiscash + }, { // Luvdisc + }, {{ // Corphish + {EVO_LEVEL, 30, SPECIES_CRAWDAUNT}, + }}, { // Crawdaunt + }, {{ // Feebas + {EVO_BEAUTY, 170, SPECIES_MILOTIC}, + }}, { // Milotic + }, {{ // Carvanha + {EVO_LEVEL, 30, SPECIES_SHARPEDO}, + }}, { // Sharpedo + }, {{ // Trapinch + {EVO_LEVEL, 35, SPECIES_VIBRAVA}, + }}, {{ // Vibrava + {EVO_LEVEL, 45, SPECIES_FLYGON}, + }}, { // Flygon + }, {{ // Makuhita + {EVO_LEVEL, 24, SPECIES_HARIYAMA}, + }}, { // Hariyama + }, {{ // Electrike + {EVO_LEVEL, 26, SPECIES_MANECTRIC}, + }}, { // Manectric + }, {{ // Numel + {EVO_LEVEL, 33, SPECIES_CAMERUPT}, + }}, { // Camerupt + }, {{ // Spheal + {EVO_LEVEL, 32, SPECIES_SEALEO}, + }}, {{ // Sealeo + {EVO_LEVEL, 44, SPECIES_WALREIN}, + }}, { // Walrein + }, {{ // Cacnea + {EVO_LEVEL, 32, SPECIES_CACTURNE}, + }}, { // Cacturne + }, {{ // Snorunt + {EVO_LEVEL, 42, SPECIES_GLALIE}, + }}, { // Glalie + }, { // Lunatone + }, { // Solrock + }, {{ // Azurill + {EVO_FRIENDSHIP, 0, SPECIES_MARILL}, + }}, {{ // Spoink + {EVO_LEVEL, 32, SPECIES_GRUMPIG}, + }}, { // Grumpig + }, { // Plusle + }, { // Minun + }, { // Mawile + }, {{ // Meditite + {EVO_LEVEL, 37, SPECIES_MEDICHAM}, + }}, { // Medicham + }, {{ // Swablu + {EVO_LEVEL, 35, SPECIES_ALTARIA}, + }}, { // Altaria + }, {{ // Wynaut + {EVO_LEVEL, 15, SPECIES_WOBBUFFET}, + }}, {{ // Duskull + {EVO_LEVEL, 37, SPECIES_DUSCLOPS}, + }}, { // Dusclops + }, { // Roselia + }, {{ // Slakoth + {EVO_LEVEL, 18, SPECIES_VIGOROTH}, + }}, {{ // Vigoroth + {EVO_LEVEL, 36, SPECIES_SLAKING}, + }}, { // Slaking + }, {{ // Gulpin + {EVO_LEVEL, 26, SPECIES_SWALOT}, + }}, { // Swalot + }, { // Tropius + }, {{ // Whismur + {EVO_LEVEL, 20, SPECIES_LOUDRED}, + }}, {{ // Loudred + {EVO_LEVEL, 40, SPECIES_EXPLOUD}, + }}, { // Exploud + }, {{ // Clamperl + {EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, + {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, + }}, { // Huntail + }, { // Gorebyss + }, { // Absol + }, {{ // Shuppet + {EVO_LEVEL, 37, SPECIES_BANETTE}, + }}, { // Banette + }, { // Seviper + }, { // Zangoose + }, { // Relicanth + }, {{ // Aron + {EVO_LEVEL, 32, SPECIES_LAIRON}, + }}, {{ // Lairon + {EVO_LEVEL, 42, SPECIES_AGGRON}, + }}, { // Aggron + }, { // Castform + }, { // Volbeat + }, { // Illumise + }, {{ // Lileep + {EVO_LEVEL, 40, SPECIES_CRADILY}, + }}, { // Cradily + }, {{ // Anorith + {EVO_LEVEL, 40, SPECIES_ARMALDO}, + }}, { // Armaldo + }, {{ // Ralts + {EVO_LEVEL, 20, SPECIES_KIRLIA}, + }}, {{ // Kirlia + {EVO_LEVEL, 30, SPECIES_GARDEVOIR}, + }}, { // Gardevoir + }, {{ // Bagon + {EVO_LEVEL, 30, SPECIES_SHELGON}, + }}, {{ // Shelgon + {EVO_LEVEL, 50, SPECIES_SALAMENCE}, + }}, { // Salamence + }, {{ // Beldum + {EVO_LEVEL, 20, SPECIES_METANG}, + }}, {{ // Metang + {EVO_LEVEL, 45, SPECIES_METAGROSS}, + }}, { // Metagross + }, { // Regirock + }, { // Regice + }, { // Registeel + }, { // Kyogre + }, { // Groudon + }, { // Rayquaza + }, { // Latias + }, { // Latios + }, { // Jirachi + }, { // Deoxys + }, { // Chimecho + } +}; + +#endif //POKERUBY_EVOLUTION_H diff --git a/include/data/pokemon/experience_tables.h b/include/data/pokemon/experience_tables.h new file mode 100644 index 000000000..70c5e88ed --- /dev/null +++ b/include/data/pokemon/experience_tables.h @@ -0,0 +1,828 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_EXPERIENCE_TABLES_H +#define POKERUBY_EXPERIENCE_TABLES_H + +const u32 gExperienceTables[][101] = { + { // Medium Fast + 0, // 0 + 1, // 1 + 8, // 2 + 27, // 3 + 64, // 4 + 125, // 5 + 216, // 6 + 343, // 7 + 512, // 8 + 729, // 9 + 1000, // 10 + 1331, // 11 + 1728, // 12 + 2197, // 13 + 2744, // 14 + 3375, // 15 + 4096, // 16 + 4913, // 17 + 5832, // 18 + 6859, // 19 + 8000, // 20 + 9261, // 21 + 10648, // 22 + 12167, // 23 + 13824, // 24 + 15625, // 25 + 17576, // 26 + 19683, // 27 + 21952, // 28 + 24389, // 29 + 27000, // 30 + 29791, // 31 + 32768, // 32 + 35937, // 33 + 39304, // 34 + 42875, // 35 + 46656, // 36 + 50653, // 37 + 54872, // 38 + 59319, // 39 + 64000, // 40 + 68921, // 41 + 74088, // 42 + 79507, // 43 + 85184, // 44 + 91125, // 45 + 97336, // 46 + 103823, // 47 + 110592, // 48 + 117649, // 49 + 125000, // 50 + 132651, // 51 + 140608, // 52 + 148877, // 53 + 157464, // 54 + 166375, // 55 + 175616, // 56 + 185193, // 57 + 195112, // 58 + 205379, // 59 + 216000, // 60 + 226981, // 61 + 238328, // 62 + 250047, // 63 + 262144, // 64 + 274625, // 65 + 287496, // 66 + 300763, // 67 + 314432, // 68 + 328509, // 69 + 343000, // 70 + 357911, // 71 + 373248, // 72 + 389017, // 73 + 405224, // 74 + 421875, // 75 + 438976, // 76 + 456533, // 77 + 474552, // 78 + 493039, // 79 + 512000, // 80 + 531441, // 81 + 551368, // 82 + 571787, // 83 + 592704, // 84 + 614125, // 85 + 636056, // 86 + 658503, // 87 + 681472, // 88 + 704969, // 89 + 729000, // 90 + 753571, // 91 + 778688, // 92 + 804357, // 93 + 830584, // 94 + 857375, // 95 + 884736, // 96 + 912673, // 97 + 941192, // 98 + 970299, // 99 + 1000000 // 100 + }, { // Erratic + 0, // 0 + 1, // 1 + 15, // 2 + 52, // 3 + 122, // 4 + 237, // 5 + 406, // 6 + 637, // 7 + 942, // 8 + 1326, // 9 + 1800, // 10 + 2369, // 11 + 3041, // 12 + 3822, // 13 + 4719, // 14 + 5737, // 15 + 6881, // 16 + 8155, // 17 + 9564, // 18 + 11111, // 19 + 12800, // 20 + 14632, // 21 + 16610, // 22 + 18737, // 23 + 21012, // 24 + 23437, // 25 + 26012, // 26 + 28737, // 27 + 31610, // 28 + 34632, // 29 + 37800, // 30 + 41111, // 31 + 44564, // 32 + 48155, // 33 + 51881, // 34 + 55737, // 35 + 59719, // 36 + 63822, // 37 + 68041, // 38 + 72369, // 39 + 76800, // 40 + 81326, // 41 + 85942, // 42 + 90637, // 43 + 95406, // 44 + 100237, // 45 + 105122, // 46 + 110052, // 47 + 115015, // 48 + 120001, // 49 + 125000, // 50 + 131324, // 51 + 137795, // 52 + 144410, // 53 + 151165, // 54 + 158056, // 55 + 165079, // 56 + 172229, // 57 + 179503, // 58 + 186894, // 59 + 194400, // 60 + 202013, // 61 + 209728, // 62 + 217540, // 63 + 225443, // 64 + 233431, // 65 + 241496, // 66 + 249633, // 67 + 257834, // 68 + 267406, // 69 + 276458, // 70 + 286328, // 71 + 296358, // 72 + 305767, // 73 + 316074, // 74 + 326531, // 75 + 336255, // 76 + 346965, // 77 + 357812, // 78 + 367807, // 79 + 378880, // 80 + 390077, // 81 + 400293, // 82 + 411686, // 83 + 423190, // 84 + 433572, // 85 + 445239, // 86 + 457001, // 87 + 467489, // 88 + 479378, // 89 + 491346, // 90 + 501878, // 91 + 513934, // 92 + 526049, // 93 + 536557, // 94 + 548720, // 95 + 560922, // 96 + 571333, // 97 + 583539, // 98 + 591882, // 99 + 600000 // 100 + }, { // Fluctuating + 0, // 0 + 1, // 1 + 4, // 2 + 13, // 3 + 32, // 4 + 65, // 5 + 112, // 6 + 178, // 7 + 276, // 8 + 393, // 9 + 540, // 10 + 745, // 11 + 967, // 12 + 1230, // 13 + 1591, // 14 + 1957, // 15 + 2457, // 16 + 3046, // 17 + 3732, // 18 + 4526, // 19 + 5440, // 20 + 6482, // 21 + 7666, // 22 + 9003, // 23 + 10506, // 24 + 12187, // 25 + 14060, // 26 + 16140, // 27 + 18439, // 28 + 20974, // 29 + 23760, // 30 + 26811, // 31 + 30146, // 32 + 33780, // 33 + 37731, // 34 + 42017, // 35 + 46656, // 36 + 50653, // 37 + 55969, // 38 + 60505, // 39 + 66560, // 40 + 71677, // 41 + 78533, // 42 + 84277, // 43 + 91998, // 44 + 98415, // 45 + 107069, // 46 + 114205, // 47 + 123863, // 48 + 131766, // 49 + 142500, // 50 + 151222, // 51 + 163105, // 52 + 172697, // 53 + 185807, // 54 + 196322, // 55 + 210739, // 56 + 222231, // 57 + 238036, // 58 + 250562, // 59 + 267840, // 60 + 281456, // 61 + 300293, // 62 + 315059, // 63 + 335544, // 64 + 351520, // 65 + 373744, // 66 + 390991, // 67 + 415050, // 68 + 433631, // 69 + 459620, // 70 + 479600, // 71 + 507617, // 72 + 529063, // 73 + 559209, // 74 + 582187, // 75 + 614566, // 76 + 639146, // 77 + 673863, // 78 + 700115, // 79 + 737280, // 80 + 765275, // 81 + 804997, // 82 + 834809, // 83 + 877201, // 84 + 908905, // 85 + 954084, // 86 + 987754, // 87 + 1035837, // 88 + 1071552, // 89 + 1122660, // 90 + 1160499, // 91 + 1214753, // 92 + 1254796, // 93 + 1312322, // 94 + 1354652, // 95 + 1415577, // 96 + 1460276, // 97 + 1524731, // 98 + 1571884, // 99 + 1640000 // 100 + }, { // Medium Slow + 0, // 0 + 1, // 1 + 9, // 2 + 57, // 3 + 96, // 4 + 135, // 5 + 179, // 6 + 236, // 7 + 314, // 8 + 419, // 9 + 560, // 10 + 742, // 11 + 973, // 12 + 1261, // 13 + 1612, // 14 + 2035, // 15 + 2535, // 16 + 3120, // 17 + 3798, // 18 + 4575, // 19 + 5460, // 20 + 6458, // 21 + 7577, // 22 + 8825, // 23 + 10208, // 24 + 11735, // 25 + 13411, // 26 + 15244, // 27 + 17242, // 28 + 19411, // 29 + 21760, // 30 + 24294, // 31 + 27021, // 32 + 29949, // 33 + 33084, // 34 + 36435, // 35 + 40007, // 36 + 43808, // 37 + 47846, // 38 + 52127, // 39 + 56660, // 40 + 61450, // 41 + 66505, // 42 + 71833, // 43 + 77440, // 44 + 83335, // 45 + 89523, // 46 + 96012, // 47 + 102810, // 48 + 109923, // 49 + 117360, // 50 + 125126, // 51 + 133229, // 52 + 141677, // 53 + 150476, // 54 + 159635, // 55 + 169159, // 56 + 179056, // 57 + 189334, // 58 + 199999, // 59 + 211060, // 60 + 222522, // 61 + 234393, // 62 + 246681, // 63 + 259392, // 64 + 272535, // 65 + 286115, // 66 + 300140, // 67 + 314618, // 68 + 329555, // 69 + 344960, // 70 + 360838, // 71 + 377197, // 72 + 394045, // 73 + 411388, // 74 + 429235, // 75 + 447591, // 76 + 466464, // 77 + 485862, // 78 + 505791, // 79 + 526260, // 80 + 547274, // 81 + 568841, // 82 + 590969, // 83 + 613664, // 84 + 636935, // 85 + 660787, // 86 + 685228, // 87 + 710266, // 88 + 735907, // 89 + 762160, // 90 + 789030, // 91 + 816525, // 92 + 844653, // 93 + 873420, // 94 + 902835, // 95 + 932903, // 96 + 963632, // 97 + 995030, // 98 + 1027103, // 99 + 1059860 // 100 + }, { // Fast + 0, // 0 + 1, // 1 + 6, // 2 + 21, // 3 + 51, // 4 + 100, // 5 + 172, // 6 + 274, // 7 + 409, // 8 + 583, // 9 + 800, // 10 + 1064, // 11 + 1382, // 12 + 1757, // 13 + 2195, // 14 + 2700, // 15 + 3276, // 16 + 3930, // 17 + 4665, // 18 + 5487, // 19 + 6400, // 20 + 7408, // 21 + 8518, // 22 + 9733, // 23 + 11059, // 24 + 12500, // 25 + 14060, // 26 + 15746, // 27 + 17561, // 28 + 19511, // 29 + 21600, // 30 + 23832, // 31 + 26214, // 32 + 28749, // 33 + 31443, // 34 + 34300, // 35 + 37324, // 36 + 40522, // 37 + 43897, // 38 + 47455, // 39 + 51200, // 40 + 55136, // 41 + 59270, // 42 + 63605, // 43 + 68147, // 44 + 72900, // 45 + 77868, // 46 + 83058, // 47 + 88473, // 48 + 94119, // 49 + 100000, // 50 + 106120, // 51 + 112486, // 52 + 119101, // 53 + 125971, // 54 + 133100, // 55 + 140492, // 56 + 148154, // 57 + 156089, // 58 + 164303, // 59 + 172800, // 60 + 181584, // 61 + 190662, // 62 + 200037, // 63 + 209715, // 64 + 219700, // 65 + 229996, // 66 + 240610, // 67 + 251545, // 68 + 262807, // 69 + 274400, // 70 + 286328, // 71 + 298598, // 72 + 311213, // 73 + 324179, // 74 + 337500, // 75 + 351180, // 76 + 365226, // 77 + 379641, // 78 + 394431, // 79 + 409600, // 80 + 425152, // 81 + 441094, // 82 + 457429, // 83 + 474163, // 84 + 491300, // 85 + 508844, // 86 + 526802, // 87 + 545177, // 88 + 563975, // 89 + 583200, // 90 + 602856, // 91 + 622950, // 92 + 643485, // 93 + 664467, // 94 + 685900, // 95 + 707788, // 96 + 730138, // 97 + 752953, // 98 + 776239, // 99 + 800000 // 100 + }, { // Slow + 0, // 0 + 1, // 1 + 10, // 2 + 33, // 3 + 80, // 4 + 156, // 5 + 270, // 6 + 428, // 7 + 640, // 8 + 911, // 9 + 1250, // 10 + 1663, // 11 + 2160, // 12 + 2746, // 13 + 3430, // 14 + 4218, // 15 + 5120, // 16 + 6141, // 17 + 7290, // 18 + 8573, // 19 + 10000, // 20 + 11576, // 21 + 13310, // 22 + 15208, // 23 + 17280, // 24 + 19531, // 25 + 21970, // 26 + 24603, // 27 + 27440, // 28 + 30486, // 29 + 33750, // 30 + 37238, // 31 + 40960, // 32 + 44921, // 33 + 49130, // 34 + 53593, // 35 + 58320, // 36 + 63316, // 37 + 68590, // 38 + 74148, // 39 + 80000, // 40 + 86151, // 41 + 92610, // 42 + 99383, // 43 + 106480, // 44 + 113906, // 45 + 121670, // 46 + 129778, // 47 + 138240, // 48 + 147061, // 49 + 156250, // 50 + 165813, // 51 + 175760, // 52 + 186096, // 53 + 196830, // 54 + 207968, // 55 + 219520, // 56 + 231491, // 57 + 243890, // 58 + 256723, // 59 + 270000, // 60 + 283726, // 61 + 297910, // 62 + 312558, // 63 + 327680, // 64 + 343281, // 65 + 359370, // 66 + 375953, // 67 + 393040, // 68 + 410636, // 69 + 428750, // 70 + 447388, // 71 + 466560, // 72 + 486271, // 73 + 506530, // 74 + 527343, // 75 + 548720, // 76 + 570666, // 77 + 593190, // 78 + 616298, // 79 + 640000, // 80 + 664301, // 81 + 689210, // 82 + 714733, // 83 + 740880, // 84 + 767656, // 85 + 795070, // 86 + 823128, // 87 + 851840, // 88 + 881211, // 89 + 911250, // 90 + 941963, // 91 + 973360, // 92 + 1005446, // 93 + 1038230, // 94 + 1071718, // 95 + 1105920, // 96 + 1140841, // 97 + 1176490, // 98 + 1212873, // 99 + 1250000 // 100 + }, { // Medium Fast copy 2 (unused? to-do: investigate) + 0, // 0 + 1, // 1 + 8, // 2 + 27, // 3 + 64, // 4 + 125, // 5 + 216, // 6 + 343, // 7 + 512, // 8 + 729, // 9 + 1000, // 10 + 1331, // 11 + 1728, // 12 + 2197, // 13 + 2744, // 14 + 3375, // 15 + 4096, // 16 + 4913, // 17 + 5832, // 18 + 6859, // 19 + 8000, // 20 + 9261, // 21 + 10648, // 22 + 12167, // 23 + 13824, // 24 + 15625, // 25 + 17576, // 26 + 19683, // 27 + 21952, // 28 + 24389, // 29 + 27000, // 30 + 29791, // 31 + 32768, // 32 + 35937, // 33 + 39304, // 34 + 42875, // 35 + 46656, // 36 + 50653, // 37 + 54872, // 38 + 59319, // 39 + 64000, // 40 + 68921, // 41 + 74088, // 42 + 79507, // 43 + 85184, // 44 + 91125, // 45 + 97336, // 46 + 103823, // 47 + 110592, // 48 + 117649, // 49 + 125000, // 50 + 132651, // 51 + 140608, // 52 + 148877, // 53 + 157464, // 54 + 166375, // 55 + 175616, // 56 + 185193, // 57 + 195112, // 58 + 205379, // 59 + 216000, // 60 + 226981, // 61 + 238328, // 62 + 250047, // 63 + 262144, // 64 + 274625, // 65 + 287496, // 66 + 300763, // 67 + 314432, // 68 + 328509, // 69 + 343000, // 70 + 357911, // 71 + 373248, // 72 + 389017, // 73 + 405224, // 74 + 421875, // 75 + 438976, // 76 + 456533, // 77 + 474552, // 78 + 493039, // 79 + 512000, // 80 + 531441, // 81 + 551368, // 82 + 571787, // 83 + 592704, // 84 + 614125, // 85 + 636056, // 86 + 658503, // 87 + 681472, // 88 + 704969, // 89 + 729000, // 90 + 753571, // 91 + 778688, // 92 + 804357, // 93 + 830584, // 94 + 857375, // 95 + 884736, // 96 + 912673, // 97 + 941192, // 98 + 970299, // 99 + 1000000 // 100 + }, { // Medium Fast copy 3 (unused? to-do: investigate) + 0, // 0 + 1, // 1 + 8, // 2 + 27, // 3 + 64, // 4 + 125, // 5 + 216, // 6 + 343, // 7 + 512, // 8 + 729, // 9 + 1000, // 10 + 1331, // 11 + 1728, // 12 + 2197, // 13 + 2744, // 14 + 3375, // 15 + 4096, // 16 + 4913, // 17 + 5832, // 18 + 6859, // 19 + 8000, // 20 + 9261, // 21 + 10648, // 22 + 12167, // 23 + 13824, // 24 + 15625, // 25 + 17576, // 26 + 19683, // 27 + 21952, // 28 + 24389, // 29 + 27000, // 30 + 29791, // 31 + 32768, // 32 + 35937, // 33 + 39304, // 34 + 42875, // 35 + 46656, // 36 + 50653, // 37 + 54872, // 38 + 59319, // 39 + 64000, // 40 + 68921, // 41 + 74088, // 42 + 79507, // 43 + 85184, // 44 + 91125, // 45 + 97336, // 46 + 103823, // 47 + 110592, // 48 + 117649, // 49 + 125000, // 50 + 132651, // 51 + 140608, // 52 + 148877, // 53 + 157464, // 54 + 166375, // 55 + 175616, // 56 + 185193, // 57 + 195112, // 58 + 205379, // 59 + 216000, // 60 + 226981, // 61 + 238328, // 62 + 250047, // 63 + 262144, // 64 + 274625, // 65 + 287496, // 66 + 300763, // 67 + 314432, // 68 + 328509, // 69 + 343000, // 70 + 357911, // 71 + 373248, // 72 + 389017, // 73 + 405224, // 74 + 421875, // 75 + 438976, // 76 + 456533, // 77 + 474552, // 78 + 493039, // 79 + 512000, // 80 + 531441, // 81 + 551368, // 82 + 571787, // 83 + 592704, // 84 + 614125, // 85 + 636056, // 86 + 658503, // 87 + 681472, // 88 + 704969, // 89 + 729000, // 90 + 753571, // 91 + 778688, // 92 + 804357, // 93 + 830584, // 94 + 857375, // 95 + 884736, // 96 + 912673, // 97 + 941192, // 98 + 970299, // 99 + 1000000 // 100 + } +}; + +#endif //POKERUBY_EXPERIENCE_TABLES_H diff --git a/include/data/pokemon/item_effects.h b/include/data/pokemon/item_effects.h new file mode 100644 index 000000000..b07573933 --- /dev/null +++ b/include/data/pokemon/item_effects.h @@ -0,0 +1,824 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_ITEM_EFFECTS_H +#define POKERUBY_ITEM_EFFECTS_H + +const u8 gItemEffect_Potion[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 20 +}; + +const u8 gItemEffect_Antidote[] = { + 0x00, + 0x00, + 0x00, + 0x10, + 0x00, + 0x00 +}; + +const u8 gItemEffect_BurnHeal[] = { + 0x00, + 0x00, + 0x00, + 0x08, + 0x00, + 0x00 +}; + +const u8 gItemEffect_IceHeal[] = { + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0x00 +}; + +const u8 gItemEffect_Awakening[] = { + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x00 +}; + +const u8 gItemEffect_ParalyzeHeal[] = { + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00 +}; + +const u8 gItemEffect_FullRestore[] = { + 0x00, + 0x00, + 0x00, + 0x3f, + 0x04, + 0x00, + 0xff +}; + +const u8 gItemEffect_MaxPotion[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0xff +}; + +const u8 gItemEffect_HyperPotion[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 200 +}; + +const u8 gItemEffect_SuperPotion[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 50 +}; + +const u8 gItemEffect_FullHeal[] = { + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00 +}; + +const u8 gItemEffect_Revive[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x44, + 0x00, + 0xfe +}; + +const u8 gItemEffect_MaxRevive[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x44, + 0x00, + 0xff +}; + +const u8 gItemEffect_FreshWater[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 50 +}; + +const u8 gItemEffect_SodaPop[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 60 +}; + +const u8 gItemEffect_Lemonade[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 80 +}; + +const u8 gItemEffect_MoomooMilk[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 100 +}; + +const u8 gItemEffect_EnergyPowder[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0xe0, + 50, + 0xfb, + 0xfb, + 0xf6 +}; + +const u8 gItemEffect_EnergyRoot[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0xe0, + 200, + 0xf6, + 0xf6, + 0xf1 +}; + +const u8 gItemEffect_HealPowder[] = { + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0xe0, + 0xfb, + 0xfb, + 0xf6 +}; + +const u8 gItemEffect_RevivalHerb[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x44, + 0xe0, + 0xfe, + 0xf1, + 0xf1, + 0xec +}; + +const u8 gItemEffect_Ether[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x18, + 0x00, + 0x0a +}; + +const u8 gItemEffect_MaxEther[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x18, + 0x00, + 0x7f +}; + +const u8 gItemEffect_Elixir[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x08, + 0x00, + 0x0a +}; + +const u8 gItemEffect_MaxElixir[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x08, + 0x00, + 0x7f +}; + +const u8 gItemEffect_LavaCookie[] = { + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00 +}; + +const u8 gItemEffect_BlueFlute[] = { + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x00 +}; + +const u8 gItemEffect_YellowFlute[] = { + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00 +}; + +const u8 gItemEffect_RedFlute[] = { + 0x80, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00 +}; + +const u8 gItemEffect_BerryJuice[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 20 +}; + +const u8 gItemEffect_SacredAsh[] = { + 0x40, + 0x00, + 0x00, + 0x00, + 0x44, + 0x00, + 0xff +}; + +const u8 gItemEffect_HPUp[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x01, + 0xe0, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_Protein[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x02, + 0xe0, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_Iron[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xe1, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_Carbos[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xe2, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_Calcium[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xe8, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_RareCandy[] = { + 0x00, + 0x00, + 0x00, + 0x40, + 0x44, + 0xe0, + 253, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_PPUp[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x20, + 0xe0, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_Zinc[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xe4, + 0x0a, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_PPMax[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0xf0, + 0x05, + 0x03, + 0x02 +}; + +const u8 gItemEffect_GuardSpec[] = { + 0x00, + 0x00, + 0x00, + 0x80, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_DireHit[] = { + 0x20, + 0x00, + 0x00, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_XAttack[] = { + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_XDefend[] = { + 0x00, + 0x10, + 0x00, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_XSpeed[] = { + 0x00, + 0x01, + 0x00, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_XAccuracy[] = { + 0x00, + 0x00, + 0x10, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_XSpecial[] = { + 0x00, + 0x00, + 0x01, + 0x00, + 0x00, + 0x60, + 0x01, + 0x01 +}; + +const u8 gItemEffect_SunStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_MoonStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_FireStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_ThunderStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_WaterStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_LeafStone[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x80, + 0x00 +}; + +const u8 gItemEffect_CheriBerry[] = { + 0x00, + 0x00, + 0x00, + 0x02, + 0x00, + 0x00 +}; + +const u8 gItemEffect_ChestoBerry[] = { + 0x00, + 0x00, + 0x00, + 0x20, + 0x00, + 0x00 +}; + +const u8 gItemEffect_PechaBerry[] = { + 0x00, + 0x00, + 0x00, + 0x10, + 0x00, + 0x00 +}; + +const u8 gItemEffect_RawstBerry[] = { + 0x00, + 0x00, + 0x00, + 0x08, + 0x00, + 0x00 +}; + +const u8 gItemEffect_AspearBerry[] = { + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 0x00 +}; + +const u8 gItemEffect_LeppaBerry[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x18, + 0x00, + 0x0a +}; + +const u8 gItemEffect_OranBerry[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 10 +}; + +const u8 gItemEffect_PersimBerry[] = { + 0x00, + 0x00, + 0x00, + 0x01, + 0x00, + 0x00 +}; + +const u8 gItemEffect_LumBerry[] = { + 0x00, + 0x00, + 0x00, + 0x3f, + 0x00, + 0x00 +}; + +const u8 gItemEffect_SitrusBerry[] = { + 0x00, + 0x00, + 0x00, + 0x00, + 0x04, + 0x00, + 30 +}; + +const u8 *const gItemEffectTable[] = { + gItemEffect_Potion, + gItemEffect_Antidote, + gItemEffect_BurnHeal, + gItemEffect_IceHeal, + gItemEffect_Awakening, + gItemEffect_ParalyzeHeal, + gItemEffect_FullRestore, + gItemEffect_MaxPotion, + gItemEffect_HyperPotion, + gItemEffect_SuperPotion, + gItemEffect_FullHeal, + gItemEffect_Revive, + gItemEffect_MaxRevive, + gItemEffect_FreshWater, + gItemEffect_SodaPop, + gItemEffect_Lemonade, + gItemEffect_MoomooMilk, + gItemEffect_EnergyPowder, + gItemEffect_EnergyRoot, + gItemEffect_HealPowder, + gItemEffect_RevivalHerb, + gItemEffect_Ether, + gItemEffect_MaxEther, + gItemEffect_Elixir, + gItemEffect_MaxElixir, + gItemEffect_LavaCookie, + gItemEffect_BlueFlute, + gItemEffect_YellowFlute, + gItemEffect_RedFlute, + NULL, + NULL, + gItemEffect_BerryJuice, + gItemEffect_SacredAsh, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_HPUp, + gItemEffect_Protein, + gItemEffect_Iron, + gItemEffect_Carbos, + gItemEffect_Calcium, + gItemEffect_RareCandy, + gItemEffect_PPUp, + gItemEffect_Zinc, + gItemEffect_PPMax, + NULL, + gItemEffect_GuardSpec, + gItemEffect_DireHit, + gItemEffect_XAttack, + gItemEffect_XDefend, + gItemEffect_XSpeed, + gItemEffect_XAccuracy, + gItemEffect_XSpecial, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_SunStone, + gItemEffect_MoonStone, + gItemEffect_FireStone, + gItemEffect_ThunderStone, + gItemEffect_WaterStone, + gItemEffect_LeafStone, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + gItemEffect_CheriBerry, + gItemEffect_ChestoBerry, + gItemEffect_PechaBerry, + gItemEffect_RawstBerry, + gItemEffect_AspearBerry, + gItemEffect_LeppaBerry, + gItemEffect_OranBerry, + gItemEffect_PersimBerry, + gItemEffect_LumBerry, + gItemEffect_SitrusBerry, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +#endif //POKERUBY_ITEM_EFFECTS_H diff --git a/include/data/pokemon/level_up_learnset_pointers.h b/include/data/pokemon/level_up_learnset_pointers.h new file mode 100644 index 000000000..753947d51 --- /dev/null +++ b/include/data/pokemon/level_up_learnset_pointers.h @@ -0,0 +1,423 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H +#define POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H + +const u16 *const gLevelUpLearnsets[] = { + gBulbasaurLevelUpLearnset, + gBulbasaurLevelUpLearnset, + gIvysaurLevelUpLearnset, + gVenusaurLevelUpLearnset, + gCharmanderLevelUpLearnset, + gCharmeleonLevelUpLearnset, + gCharizardLevelUpLearnset, + gSquirtleLevelUpLearnset, + gWartortleLevelUpLearnset, + gBlastoiseLevelUpLearnset, + gCaterpieLevelUpLearnset, + gMetapodLevelUpLearnset, + gButterfreeLevelUpLearnset, + gWeedleLevelUpLearnset, + gKakunaLevelUpLearnset, + gBeedrillLevelUpLearnset, + gPidgeyLevelUpLearnset, + gPidgeottoLevelUpLearnset, + gPidgeotLevelUpLearnset, + gRattataLevelUpLearnset, + gRaticateLevelUpLearnset, + gSpearowLevelUpLearnset, + gFearowLevelUpLearnset, + gEkansLevelUpLearnset, + gArbokLevelUpLearnset, + gPikachuLevelUpLearnset, + gRaichuLevelUpLearnset, + gSandshrewLevelUpLearnset, + gSandslashLevelUpLearnset, + gNidoranFLevelUpLearnset, + gNidorinaLevelUpLearnset, + gNidoqueenLevelUpLearnset, + gNidoranMLevelUpLearnset, + gNidorinoLevelUpLearnset, + gNidokingLevelUpLearnset, + gClefairyLevelUpLearnset, + gClefableLevelUpLearnset, + gVulpixLevelUpLearnset, + gNinetalesLevelUpLearnset, + gJigglypuffLevelUpLearnset, + gWigglytuffLevelUpLearnset, + gZubatLevelUpLearnset, + gGolbatLevelUpLearnset, + gOddishLevelUpLearnset, + gGloomLevelUpLearnset, + gVileplumeLevelUpLearnset, + gParasLevelUpLearnset, + gParasectLevelUpLearnset, + gVenonatLevelUpLearnset, + gVenomothLevelUpLearnset, + gDiglettLevelUpLearnset, + gDugtrioLevelUpLearnset, + gMeowthLevelUpLearnset, + gPersianLevelUpLearnset, + gPsyduckLevelUpLearnset, + gGolduckLevelUpLearnset, + gMankeyLevelUpLearnset, + gPrimeapeLevelUpLearnset, + gGrowlitheLevelUpLearnset, + gArcanineLevelUpLearnset, + gPoliwagLevelUpLearnset, + gPoliwhirlLevelUpLearnset, + gPoliwrathLevelUpLearnset, + gAbraLevelUpLearnset, + gKadabraLevelUpLearnset, + gAlakazamLevelUpLearnset, + gMachopLevelUpLearnset, + gMachokeLevelUpLearnset, + gMachampLevelUpLearnset, + gBellsproutLevelUpLearnset, + gWeepinbellLevelUpLearnset, + gVictreebelLevelUpLearnset, + gTentacoolLevelUpLearnset, + gTentacruelLevelUpLearnset, + gGeodudeLevelUpLearnset, + gGravelerLevelUpLearnset, + gGolemLevelUpLearnset, + gPonytaLevelUpLearnset, + gRapidashLevelUpLearnset, + gSlowpokeLevelUpLearnset, + gSlowbroLevelUpLearnset, + gMagnemiteLevelUpLearnset, + gMagnetonLevelUpLearnset, + gFarfetchdLevelUpLearnset, + gDoduoLevelUpLearnset, + gDodrioLevelUpLearnset, + gSeelLevelUpLearnset, + gDewgongLevelUpLearnset, + gGrimerLevelUpLearnset, + gMukLevelUpLearnset, + gShellderLevelUpLearnset, + gCloysterLevelUpLearnset, + gGastlyLevelUpLearnset, + gHaunterLevelUpLearnset, + gGengarLevelUpLearnset, + gOnixLevelUpLearnset, + gDrowzeeLevelUpLearnset, + gHypnoLevelUpLearnset, + gKrabbyLevelUpLearnset, + gKinglerLevelUpLearnset, + gVoltorbLevelUpLearnset, + gElectrodeLevelUpLearnset, + gExeggcuteLevelUpLearnset, + gExeggutorLevelUpLearnset, + gCuboneLevelUpLearnset, + gMarowakLevelUpLearnset, + gHitmonleeLevelUpLearnset, + gHitmonchanLevelUpLearnset, + gLickitungLevelUpLearnset, + gKoffingLevelUpLearnset, + gWeezingLevelUpLearnset, + gRhyhornLevelUpLearnset, + gRhydonLevelUpLearnset, + gChanseyLevelUpLearnset, + gTangelaLevelUpLearnset, + gKangaskhanLevelUpLearnset, + gHorseaLevelUpLearnset, + gSeadraLevelUpLearnset, + gGoldeenLevelUpLearnset, + gSeakingLevelUpLearnset, + gStaryuLevelUpLearnset, + gStarmieLevelUpLearnset, + gMrmimeLevelUpLearnset, + gScytherLevelUpLearnset, + gJynxLevelUpLearnset, + gElectabuzzLevelUpLearnset, + gMagmarLevelUpLearnset, + gPinsirLevelUpLearnset, + gTaurosLevelUpLearnset, + gMagikarpLevelUpLearnset, + gGyaradosLevelUpLearnset, + gLaprasLevelUpLearnset, + gDittoLevelUpLearnset, + gEeveeLevelUpLearnset, + gVaporeonLevelUpLearnset, + gJolteonLevelUpLearnset, + gFlareonLevelUpLearnset, + gPorygonLevelUpLearnset, + gOmanyteLevelUpLearnset, + gOmastarLevelUpLearnset, + gKabutoLevelUpLearnset, + gKabutopsLevelUpLearnset, + gAerodactylLevelUpLearnset, + gSnorlaxLevelUpLearnset, + gArticunoLevelUpLearnset, + gZapdosLevelUpLearnset, + gMoltresLevelUpLearnset, + gDratiniLevelUpLearnset, + gDragonairLevelUpLearnset, + gDragoniteLevelUpLearnset, + gMewtwoLevelUpLearnset, + gMewLevelUpLearnset, + gChikoritaLevelUpLearnset, + gBayleefLevelUpLearnset, + gMeganiumLevelUpLearnset, + gCyndaquilLevelUpLearnset, + gQuilavaLevelUpLearnset, + gTyphlosionLevelUpLearnset, + gTotodileLevelUpLearnset, + gCroconawLevelUpLearnset, + gFeraligatrLevelUpLearnset, + gSentretLevelUpLearnset, + gFurretLevelUpLearnset, + gHoothootLevelUpLearnset, + gNoctowlLevelUpLearnset, + gLedybaLevelUpLearnset, + gLedianLevelUpLearnset, + gSpinarakLevelUpLearnset, + gAriadosLevelUpLearnset, + gCrobatLevelUpLearnset, + gChinchouLevelUpLearnset, + gLanturnLevelUpLearnset, + gPichuLevelUpLearnset, + gCleffaLevelUpLearnset, + gIgglybuffLevelUpLearnset, + gTogepiLevelUpLearnset, + gTogeticLevelUpLearnset, + gNatuLevelUpLearnset, + gXatuLevelUpLearnset, + gMareepLevelUpLearnset, + gFlaaffyLevelUpLearnset, + gAmpharosLevelUpLearnset, + gBellossomLevelUpLearnset, + gMarillLevelUpLearnset, + gAzumarillLevelUpLearnset, + gSudowoodoLevelUpLearnset, + gPolitoedLevelUpLearnset, + gHoppipLevelUpLearnset, + gSkiploomLevelUpLearnset, + gJumpluffLevelUpLearnset, + gAipomLevelUpLearnset, + gSunkernLevelUpLearnset, + gSunfloraLevelUpLearnset, + gYanmaLevelUpLearnset, + gWooperLevelUpLearnset, + gQuagsireLevelUpLearnset, + gEspeonLevelUpLearnset, + gUmbreonLevelUpLearnset, + gMurkrowLevelUpLearnset, + gSlowkingLevelUpLearnset, + gMisdreavusLevelUpLearnset, + gUnownLevelUpLearnset, + gWobbuffetLevelUpLearnset, + gGirafarigLevelUpLearnset, + gPinecoLevelUpLearnset, + gForretressLevelUpLearnset, + gDunsparceLevelUpLearnset, + gGligarLevelUpLearnset, + gSteelixLevelUpLearnset, + gSnubbullLevelUpLearnset, + gGranbullLevelUpLearnset, + gQwilfishLevelUpLearnset, + gScizorLevelUpLearnset, + gShuckleLevelUpLearnset, + gHeracrossLevelUpLearnset, + gSneaselLevelUpLearnset, + gTeddiursaLevelUpLearnset, + gUrsaringLevelUpLearnset, + gSlugmaLevelUpLearnset, + gMagcargoLevelUpLearnset, + gSwinubLevelUpLearnset, + gPiloswineLevelUpLearnset, + gCorsolaLevelUpLearnset, + gRemoraidLevelUpLearnset, + gOctilleryLevelUpLearnset, + gDelibirdLevelUpLearnset, + gMantineLevelUpLearnset, + gSkarmoryLevelUpLearnset, + gHoundourLevelUpLearnset, + gHoundoomLevelUpLearnset, + gKingdraLevelUpLearnset, + gPhanpyLevelUpLearnset, + gDonphanLevelUpLearnset, + gPorygon2LevelUpLearnset, + gStantlerLevelUpLearnset, + gSmeargleLevelUpLearnset, + gTyrogueLevelUpLearnset, + gHitmontopLevelUpLearnset, + gSmoochumLevelUpLearnset, + gElekidLevelUpLearnset, + gMagbyLevelUpLearnset, + gMiltankLevelUpLearnset, + gBlisseyLevelUpLearnset, + gRaikouLevelUpLearnset, + gEnteiLevelUpLearnset, + gSuicuneLevelUpLearnset, + gLarvitarLevelUpLearnset, + gPupitarLevelUpLearnset, + gTyranitarLevelUpLearnset, + gLugiaLevelUpLearnset, + gHoOhLevelUpLearnset, + gCelebiLevelUpLearnset, + gSpecies252LevelUpLearnset, + gSpecies253LevelUpLearnset, + gSpecies254LevelUpLearnset, + gSpecies255LevelUpLearnset, + gSpecies256LevelUpLearnset, + gSpecies257LevelUpLearnset, + gSpecies258LevelUpLearnset, + gSpecies259LevelUpLearnset, + gSpecies260LevelUpLearnset, + gSpecies261LevelUpLearnset, + gSpecies262LevelUpLearnset, + gSpecies263LevelUpLearnset, + gSpecies264LevelUpLearnset, + gSpecies265LevelUpLearnset, + gSpecies266LevelUpLearnset, + gSpecies267LevelUpLearnset, + gSpecies268LevelUpLearnset, + gSpecies269LevelUpLearnset, + gSpecies270LevelUpLearnset, + gSpecies271LevelUpLearnset, + gSpecies272LevelUpLearnset, + gSpecies273LevelUpLearnset, + gSpecies274LevelUpLearnset, + gSpecies275LevelUpLearnset, + gSpecies276LevelUpLearnset, + gTreeckoLevelUpLearnset, + gGrovyleLevelUpLearnset, + gSceptileLevelUpLearnset, + gTorchicLevelUpLearnset, + gCombuskenLevelUpLearnset, + gBlazikenLevelUpLearnset, + gMudkipLevelUpLearnset, + gMarshtompLevelUpLearnset, + gSwampertLevelUpLearnset, + gPoochyenaLevelUpLearnset, + gMightyenaLevelUpLearnset, + gZigzagoonLevelUpLearnset, + gLinooneLevelUpLearnset, + gWurmpleLevelUpLearnset, + gSilcoonLevelUpLearnset, + gBeautiflyLevelUpLearnset, + gCascoonLevelUpLearnset, + gDustoxLevelUpLearnset, + gLotadLevelUpLearnset, + gLombreLevelUpLearnset, + gLudicoloLevelUpLearnset, + gSeedotLevelUpLearnset, + gNuzleafLevelUpLearnset, + gShiftryLevelUpLearnset, + gNincadaLevelUpLearnset, + gNinjaskLevelUpLearnset, + gShedinjaLevelUpLearnset, + gTaillowLevelUpLearnset, + gSwellowLevelUpLearnset, + gShroomishLevelUpLearnset, + gBreloomLevelUpLearnset, + gSpindaLevelUpLearnset, + gWingullLevelUpLearnset, + gPelipperLevelUpLearnset, + gSurskitLevelUpLearnset, + gMasquerainLevelUpLearnset, + gWailmerLevelUpLearnset, + gWailordLevelUpLearnset, + gSkittyLevelUpLearnset, + gDelcattyLevelUpLearnset, + gKecleonLevelUpLearnset, + gBaltoyLevelUpLearnset, + gClaydolLevelUpLearnset, + gNosepassLevelUpLearnset, + gTorkoalLevelUpLearnset, + gSableyeLevelUpLearnset, + gBarboachLevelUpLearnset, + gWhiscashLevelUpLearnset, + gLuvdiscLevelUpLearnset, + gCorphishLevelUpLearnset, + gCrawdauntLevelUpLearnset, + gFeebasLevelUpLearnset, + gMiloticLevelUpLearnset, + gCarvanhaLevelUpLearnset, + gSharpedoLevelUpLearnset, + gTrapinchLevelUpLearnset, + gVibravaLevelUpLearnset, + gFlygonLevelUpLearnset, + gMakuhitaLevelUpLearnset, + gHariyamaLevelUpLearnset, + gElectrikeLevelUpLearnset, + gManectricLevelUpLearnset, + gNumelLevelUpLearnset, + gCameruptLevelUpLearnset, + gSphealLevelUpLearnset, + gSealeoLevelUpLearnset, + gWalreinLevelUpLearnset, + gCacneaLevelUpLearnset, + gCacturneLevelUpLearnset, + gSnoruntLevelUpLearnset, + gGlalieLevelUpLearnset, + gLunatoneLevelUpLearnset, + gSolrockLevelUpLearnset, + gAzurillLevelUpLearnset, + gSpoinkLevelUpLearnset, + gGrumpigLevelUpLearnset, + gPlusleLevelUpLearnset, + gMinunLevelUpLearnset, + gMawileLevelUpLearnset, + gMedititeLevelUpLearnset, + gMedichamLevelUpLearnset, + gSwabluLevelUpLearnset, + gAltariaLevelUpLearnset, + gWynautLevelUpLearnset, + gDuskullLevelUpLearnset, + gDusclopsLevelUpLearnset, + gRoseliaLevelUpLearnset, + gSlakothLevelUpLearnset, + gVigorothLevelUpLearnset, + gSlakingLevelUpLearnset, + gGulpinLevelUpLearnset, + gSwalotLevelUpLearnset, + gTropiusLevelUpLearnset, + gWhismurLevelUpLearnset, + gLoudredLevelUpLearnset, + gExploudLevelUpLearnset, + gClamperlLevelUpLearnset, + gHuntailLevelUpLearnset, + gGorebyssLevelUpLearnset, + gAbsolLevelUpLearnset, + gShuppetLevelUpLearnset, + gBanetteLevelUpLearnset, + gSeviperLevelUpLearnset, + gZangooseLevelUpLearnset, + gRelicanthLevelUpLearnset, + gAronLevelUpLearnset, + gLaironLevelUpLearnset, + gAggronLevelUpLearnset, + gCastformLevelUpLearnset, + gVolbeatLevelUpLearnset, + gIllumiseLevelUpLearnset, + gLileepLevelUpLearnset, + gCradilyLevelUpLearnset, + gAnorithLevelUpLearnset, + gArmaldoLevelUpLearnset, + gRaltsLevelUpLearnset, + gKirliaLevelUpLearnset, + gGardevoirLevelUpLearnset, + gBagonLevelUpLearnset, + gShelgonLevelUpLearnset, + gSalamenceLevelUpLearnset, + gBeldumLevelUpLearnset, + gMetangLevelUpLearnset, + gMetagrossLevelUpLearnset, + gRegirockLevelUpLearnset, + gRegiceLevelUpLearnset, + gRegisteelLevelUpLearnset, + gKyogreLevelUpLearnset, + gGroudonLevelUpLearnset, + gRayquazaLevelUpLearnset, + gLatiasLevelUpLearnset, + gLatiosLevelUpLearnset, + gJirachiLevelUpLearnset, + gDeoxysLevelUpLearnset, + gChimechoLevelUpLearnset +}; + +#endif //POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H diff --git a/include/data/pokemon/level_up_learnsets.h b/include/data/pokemon/level_up_learnsets.h new file mode 100644 index 000000000..5b79f4bc0 --- /dev/null +++ b/include/data/pokemon/level_up_learnsets.h @@ -0,0 +1,5627 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_LEVEL_UP_LEARNSETS_H +#define POKERUBY_LEVEL_UP_LEARNSETS_H + +#define LEVEL_UP_MOVE(lvl, move) ((lvl << 9) | move) +#define LEVEL_UP_END 0xffff + +const u16 gBulbasaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(20, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(25, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(32, MOVE_GROWTH), + LEVEL_UP_MOVE(39, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(46, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gIvysaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(38, MOVE_GROWTH), + LEVEL_UP_MOVE(47, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(56, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gVenusaurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(41, MOVE_GROWTH), + LEVEL_UP_MOVE(53, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gCharmanderLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(19, MOVE_RAGE), + LEVEL_UP_MOVE(25, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(31, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(49, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +const u16 gCharmeleonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(20, MOVE_RAGE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(48, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(55, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +const u16 gCharizardLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(20, MOVE_RAGE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(36, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(44, MOVE_SLASH), + LEVEL_UP_MOVE(54, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(64, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +const u16 gSquirtleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(18, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(28, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(40, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(47, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gWartortleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(45, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(53, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gBlastoiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_BUBBLE), + LEVEL_UP_MOVE(10, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(55, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(68, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gCaterpieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_END +}; + +const u16 gMetapodLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +const u16 gButterfreeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(14, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(23, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(28, MOVE_GUST), + LEVEL_UP_MOVE(34, MOVE_PSYBEAM), + LEVEL_UP_MOVE(40, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(47, MOVE_SILVER_WIND), + LEVEL_UP_END +}; + +const u16 gWeedleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_END +}; + +const u16 gKakunaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +const u16 gBeedrillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(10, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(15, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(20, MOVE_TWINEEDLE), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(30, MOVE_PURSUIT), + LEVEL_UP_MOVE(35, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gPidgeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(19, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(25, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(39, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +const u16 gPidgeottoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(27, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(52, MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +const u16 gPidgeotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_GUST), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(27, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE), + LEVEL_UP_MOVE(48, MOVE_AGILITY), + LEVEL_UP_MOVE(62, MOVE_MIRROR_MOVE), + LEVEL_UP_END +}; + +const u16 gRattataLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HYPER_FANG), + LEVEL_UP_MOVE(20, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(41, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gRaticateLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HYPER_FANG), + LEVEL_UP_MOVE(20, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(30, MOVE_PURSUIT), + LEVEL_UP_MOVE(40, MOVE_SUPER_FANG), + LEVEL_UP_MOVE(50, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gSpearowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(19, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(31, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(37, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gFearowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(26, MOVE_PURSUIT), + LEVEL_UP_MOVE(32, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(40, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gEkansLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_GLARE), + LEVEL_UP_MOVE(25, MOVE_SCREECH), + LEVEL_UP_MOVE(32, MOVE_ACID), + LEVEL_UP_MOVE(37, MOVE_STOCKPILE), + LEVEL_UP_MOVE(37, MOVE_SWALLOW), + LEVEL_UP_MOVE(37, MOVE_SPIT_UP), + LEVEL_UP_MOVE(44, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gArbokLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 8, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_GLARE), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(38, MOVE_ACID), + LEVEL_UP_MOVE(46, MOVE_STOCKPILE), + LEVEL_UP_MOVE(46, MOVE_SWALLOW), + LEVEL_UP_MOVE(46, MOVE_SPIT_UP), + LEVEL_UP_MOVE(56, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gPikachuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(20, MOVE_SLAM), + LEVEL_UP_MOVE(26, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(33, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_THUNDER), + LEVEL_UP_MOVE(50, MOVE_LIGHT_SCREEN), + LEVEL_UP_END +}; + +const u16 gRaichuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_THUNDERBOLT), + LEVEL_UP_END +}; + +const u16 gSandshrewLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 6, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_SLASH), + LEVEL_UP_MOVE(30, MOVE_SWIFT), + LEVEL_UP_MOVE(37, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(45, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +const u16 gSandslashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(24, MOVE_SLASH), + LEVEL_UP_MOVE(33, MOVE_SWIFT), + LEVEL_UP_MOVE(42, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(52, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(62, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +const u16 gNidoranFLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 8, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(23, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(38, MOVE_FLATTER), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gNidorinaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 8, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(18, MOVE_POISON_STING), + LEVEL_UP_MOVE(22, MOVE_BITE), + LEVEL_UP_MOVE(26, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(43, MOVE_FLATTER), + LEVEL_UP_MOVE(53, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gNidoqueenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_BODY_SLAM), + LEVEL_UP_END +}; + +const u16 gNidoranMLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_POISON_STING), + LEVEL_UP_MOVE(20, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(23, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(30, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(38, MOVE_FLATTER), + LEVEL_UP_MOVE(47, MOVE_HORN_DRILL), + LEVEL_UP_END +}; + +const u16 gNidorinoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(18, MOVE_POISON_STING), + LEVEL_UP_MOVE(22, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(26, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(34, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(43, MOVE_FLATTER), + LEVEL_UP_MOVE(53, MOVE_HORN_DRILL), + LEVEL_UP_END +}; + +const u16 gNidokingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(23, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gClefairyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_ENCORE), + LEVEL_UP_MOVE( 9, MOVE_SING), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(17, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(21, MOVE_MINIMIZE), + LEVEL_UP_MOVE(25, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(29, MOVE_METRONOME), + LEVEL_UP_MOVE(33, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(45, MOVE_METEOR_MASH), + LEVEL_UP_END +}; + +const u16 gClefableLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_MINIMIZE), + LEVEL_UP_MOVE( 1, MOVE_METRONOME), + LEVEL_UP_END +}; + +const u16 gVulpixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_ROAR), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(21, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(25, MOVE_IMPRISON), + LEVEL_UP_MOVE(29, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(33, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(37, MOVE_GRUDGE), + LEVEL_UP_MOVE(41, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +const u16 gNinetalesLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(45, MOVE_FIRE_SPIN), + LEVEL_UP_END +}; + +const u16 gJigglypuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9, MOVE_POUND), + LEVEL_UP_MOVE(14, MOVE_DISABLE), + LEVEL_UP_MOVE(19, MOVE_ROLLOUT), + LEVEL_UP_MOVE(24, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(34, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(39, MOVE_MIMIC), + LEVEL_UP_MOVE(44, MOVE_HYPER_VOICE), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gWigglytuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_END +}; + +const u16 gZubatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(26, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(31, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(36, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(41, MOVE_POISON_FANG), + LEVEL_UP_MOVE(46, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gGolbatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_POISON_FANG), + LEVEL_UP_MOVE(56, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gOddishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 7, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(16, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(23, MOVE_ACID), + LEVEL_UP_MOVE(32, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(39, MOVE_PETAL_DANCE), + LEVEL_UP_END +}; + +const u16 gGloomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 7, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(16, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(24, MOVE_ACID), + LEVEL_UP_MOVE(35, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + LEVEL_UP_END +}; + +const u16 gVileplumeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + LEVEL_UP_END +}; + +const u16 gParasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(25, MOVE_SPORE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_GROWTH), + LEVEL_UP_MOVE(43, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(49, MOVE_AROMATHERAPY), + LEVEL_UP_END +}; + +const u16 gParasectLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_POISON_POWDER), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(27, MOVE_SPORE), + LEVEL_UP_MOVE(35, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_GROWTH), + LEVEL_UP_MOVE(51, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(59, MOVE_AROMATHERAPY), + LEVEL_UP_END +}; + +const u16 gVenonatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(28, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(33, MOVE_PSYBEAM), + LEVEL_UP_MOVE(36, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(41, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gVenomothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SILVER_WIND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(28, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(31, MOVE_GUST), + LEVEL_UP_MOVE(36, MOVE_PSYBEAM), + LEVEL_UP_MOVE(42, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(52, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gDiglettLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(17, MOVE_DIG), + LEVEL_UP_MOVE(25, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(33, MOVE_SLASH), + LEVEL_UP_MOVE(41, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(49, MOVE_FISSURE), + LEVEL_UP_END +}; + +const u16 gDugtrioLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(17, MOVE_DIG), + LEVEL_UP_MOVE(25, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(26, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(38, MOVE_SLASH), + LEVEL_UP_MOVE(51, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(64, MOVE_FISSURE), + LEVEL_UP_END +}; + +const u16 gMeowthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_PAY_DAY), + LEVEL_UP_MOVE(28, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(35, MOVE_SCREECH), + LEVEL_UP_MOVE(41, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(46, MOVE_SLASH), + LEVEL_UP_MOVE(50, MOVE_FAKE_OUT), + LEVEL_UP_END +}; + +const u16 gPersianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(20, MOVE_PAY_DAY), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(38, MOVE_SCREECH), + LEVEL_UP_MOVE(46, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(53, MOVE_SLASH), + LEVEL_UP_MOVE(59, MOVE_FAKE_OUT), + LEVEL_UP_END +}; + +const u16 gPsyduckLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(40, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gGolduckLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(44, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gMankeyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_LOW_KICK), + LEVEL_UP_MOVE(15, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(27, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(33, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(39, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(51, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gPrimeapeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 9, MOVE_LOW_KICK), + LEVEL_UP_MOVE(15, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(27, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(28, MOVE_RAGE), + LEVEL_UP_MOVE(36, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(45, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(54, MOVE_SCREECH), + LEVEL_UP_MOVE(63, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gGrowlitheLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_ROAR), + LEVEL_UP_MOVE( 7, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(19, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(37, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gArcanineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_ROAR), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(49, MOVE_EXTREME_SPEED), + LEVEL_UP_END +}; + +const u16 gPoliwagLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(25, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gPoliwhirlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(27, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(35, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(43, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gPoliwrathLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_SUBMISSION), + LEVEL_UP_MOVE(35, MOVE_SUBMISSION), + LEVEL_UP_MOVE(51, MOVE_MIND_READER), + LEVEL_UP_END +}; + +const u16 gAbraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_END +}; + +const u16 gKadabraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_KINESIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(18, MOVE_DISABLE), + LEVEL_UP_MOVE(21, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_RECOVER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(33, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_TRICK), + LEVEL_UP_END +}; + +const u16 gAlakazamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_KINESIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(18, MOVE_DISABLE), + LEVEL_UP_MOVE(21, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_RECOVER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(33, MOVE_CALM_MIND), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_TRICK), + LEVEL_UP_END +}; + +const u16 gMachopLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(31, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(37, MOVE_SUBMISSION), + LEVEL_UP_MOVE(40, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(43, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(49, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +const u16 gMachokeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(33, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(41, MOVE_SUBMISSION), + LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +const u16 gMachampLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), + LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(22, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(33, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(41, MOVE_SUBMISSION), + LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP), + LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +const u16 gBellsproutLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_WRAP), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(17, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(23, MOVE_ACID), + LEVEL_UP_MOVE(30, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(37, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(45, MOVE_SLAM), + LEVEL_UP_END +}; + +const u16 gWeepinbellLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_WRAP), + LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(17, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(19, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(24, MOVE_ACID), + LEVEL_UP_MOVE(33, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(42, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(54, MOVE_SLAM), + LEVEL_UP_END +}; + +const u16 gVictreebelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), + LEVEL_UP_MOVE( 1, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_END +}; + +const u16 gTentacoolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_CONSTRICT), + LEVEL_UP_MOVE(19, MOVE_ACID), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(30, MOVE_WRAP), + LEVEL_UP_MOVE(36, MOVE_BARRIER), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gTentacruelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_CONSTRICT), + LEVEL_UP_MOVE(19, MOVE_ACID), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(30, MOVE_WRAP), + LEVEL_UP_MOVE(38, MOVE_BARRIER), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gGeodudeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(26, MOVE_ROLLOUT), + LEVEL_UP_MOVE(31, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gGravelerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_EXPLOSION), + LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gGolemLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(29, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_EXPLOSION), + LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gPonytaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(14, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_BOUNCE), + LEVEL_UP_MOVE(53, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +const u16 gRapidashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(14, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(40, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(50, MOVE_BOUNCE), + LEVEL_UP_MOVE(63, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +const u16 gSlowpokeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(43, MOVE_AMNESIA), + LEVEL_UP_MOVE(48, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gSlowbroLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(37, MOVE_WITHDRAW), + LEVEL_UP_MOVE(46, MOVE_AMNESIA), + LEVEL_UP_MOVE(54, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gMagnemiteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(11, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(26, MOVE_SPARK), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(38, MOVE_SWIFT), + LEVEL_UP_MOVE(44, MOVE_SCREECH), + LEVEL_UP_MOVE(50, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +const u16 gMagnetonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_METAL_SOUND), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 6, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(11, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(26, MOVE_SPARK), + LEVEL_UP_MOVE(35, MOVE_LOCK_ON), + LEVEL_UP_MOVE(44, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(53, MOVE_SCREECH), + LEVEL_UP_MOVE(62, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +const u16 gFarfetchdLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(11, MOVE_LEER), + LEVEL_UP_MOVE(16, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(26, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(31, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(46, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +const u16 gDoduoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_PURSUIT), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_UPROAR), + LEVEL_UP_MOVE(37, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(45, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gDodrioLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PURSUIT), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE( 9, MOVE_PURSUIT), + LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(38, MOVE_UPROAR), + LEVEL_UP_MOVE(47, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(60, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gSeelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 9, MOVE_GROWL), + LEVEL_UP_MOVE(17, MOVE_ICY_WIND), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(49, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gDewgongLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), + LEVEL_UP_MOVE( 1, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 9, MOVE_GROWL), + LEVEL_UP_MOVE(17, MOVE_ICY_WIND), + LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(29, MOVE_REST), + LEVEL_UP_MOVE(34, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(51, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(64, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gGrimerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_DISABLE), + LEVEL_UP_MOVE(13, MOVE_SLUDGE), + LEVEL_UP_MOVE(19, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(43, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(53, MOVE_MEMENTO), + LEVEL_UP_END +}; + +const u16 gMukLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_DISABLE), + LEVEL_UP_MOVE(13, MOVE_SLUDGE), + LEVEL_UP_MOVE(19, MOVE_MINIMIZE), + LEVEL_UP_MOVE(26, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(47, MOVE_SLUDGE_BOMB), + LEVEL_UP_MOVE(61, MOVE_MEMENTO), + LEVEL_UP_END +}; + +const u16 gShellderLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(17, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_LEER), + LEVEL_UP_MOVE(41, MOVE_CLAMP), + LEVEL_UP_MOVE(49, MOVE_ICE_BEAM), + LEVEL_UP_END +}; + +const u16 gCloysterLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_SPIKES), + LEVEL_UP_MOVE(41, MOVE_SPIKE_CANNON), + LEVEL_UP_END +}; + +const u16 gGastlyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(33, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(36, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +const u16 gHaunterLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(39, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(48, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +const u16 gGengarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SPITE), + LEVEL_UP_MOVE( 8, MOVE_SPITE), + LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(16, MOVE_CURSE), + LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(39, MOVE_DREAM_EATER), + LEVEL_UP_MOVE(48, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +const u16 gOnixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 9, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(21, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(49, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gDrowzeeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_HEADBUTT), + LEVEL_UP_MOVE(31, MOVE_POISON_GAS), + LEVEL_UP_MOVE(36, MOVE_MEDITATE), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(45, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gHypnoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_DISABLE), + LEVEL_UP_MOVE(18, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_HEADBUTT), + LEVEL_UP_MOVE(33, MOVE_POISON_GAS), + LEVEL_UP_MOVE(40, MOVE_MEDITATE), + LEVEL_UP_MOVE(49, MOVE_PSYCHIC), + LEVEL_UP_MOVE(55, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(60, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gKrabbyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(16, MOVE_HARDEN), + LEVEL_UP_MOVE(23, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(27, MOVE_STOMP), + LEVEL_UP_MOVE(34, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(41, MOVE_PROTECT), + LEVEL_UP_MOVE(45, MOVE_CRABHAMMER), + LEVEL_UP_END +}; + +const u16 gKinglerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(16, MOVE_HARDEN), + LEVEL_UP_MOVE(23, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(27, MOVE_STOMP), + LEVEL_UP_MOVE(38, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(49, MOVE_PROTECT), + LEVEL_UP_MOVE(57, MOVE_CRABHAMMER), + LEVEL_UP_END +}; + +const u16 gVoltorbLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_SPARK), + LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(32, MOVE_ROLLOUT), + LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(46, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +const u16 gElectrodeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CHARGE), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(21, MOVE_SPARK), + LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(34, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(48, MOVE_SWIFT), + LEVEL_UP_MOVE(54, MOVE_EXPLOSION), + LEVEL_UP_MOVE(59, MOVE_MIRROR_COAT), + LEVEL_UP_END +}; + +const u16 gExeggcuteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRAGE), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 7, MOVE_REFLECT), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(19, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(31, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(37, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gExeggutorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRAGE), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_EGG_BOMB), + LEVEL_UP_END +}; + +const u16 gCuboneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_BONE_CLUB), + LEVEL_UP_MOVE(13, MOVE_HEADBUTT), + LEVEL_UP_MOVE(17, MOVE_LEER), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_BONEMERANG), + LEVEL_UP_MOVE(29, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(37, MOVE_THRASH), + LEVEL_UP_MOVE(41, MOVE_BONE_RUSH), + LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gMarowakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_BONE_CLUB), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_BONE_CLUB), + LEVEL_UP_MOVE(13, MOVE_HEADBUTT), + LEVEL_UP_MOVE(17, MOVE_LEER), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_BONEMERANG), + LEVEL_UP_MOVE(32, MOVE_RAGE), + LEVEL_UP_MOVE(39, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(46, MOVE_THRASH), + LEVEL_UP_MOVE(53, MOVE_BONE_RUSH), + LEVEL_UP_MOVE(61, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gHitmonleeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE( 6, MOVE_MEDITATE), + LEVEL_UP_MOVE(11, MOVE_ROLLING_KICK), + LEVEL_UP_MOVE(16, MOVE_JUMP_KICK), + LEVEL_UP_MOVE(20, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(26, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(31, MOVE_MIND_READER), + LEVEL_UP_MOVE(36, MOVE_FORESIGHT), + LEVEL_UP_MOVE(41, MOVE_ENDURE), + LEVEL_UP_MOVE(46, MOVE_MEGA_KICK), + LEVEL_UP_MOVE(51, MOVE_REVERSAL), + LEVEL_UP_END +}; + +const u16 gHitmonchanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 7, MOVE_AGILITY), + LEVEL_UP_MOVE(13, MOVE_PURSUIT), + LEVEL_UP_MOVE(20, MOVE_MACH_PUNCH), + LEVEL_UP_MOVE(26, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(26, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE(26, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(32, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(38, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(44, MOVE_DETECT), + LEVEL_UP_MOVE(50, MOVE_COUNTER), + LEVEL_UP_END +}; + +const u16 gLickitungLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(12, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(18, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(23, MOVE_STOMP), + LEVEL_UP_MOVE(29, MOVE_WRAP), + LEVEL_UP_MOVE(34, MOVE_DISABLE), + LEVEL_UP_MOVE(40, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(51, MOVE_REFRESH), + LEVEL_UP_END +}; + +const u16 gKoffingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 9, MOVE_SMOG), + LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(21, MOVE_SLUDGE), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_HAZE), + LEVEL_UP_MOVE(41, MOVE_EXPLOSION), + LEVEL_UP_MOVE(45, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE(49, MOVE_MEMENTO), + LEVEL_UP_END +}; + +const u16 gWeezingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 9, MOVE_SMOG), + LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(21, MOVE_SLUDGE), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_HAZE), + LEVEL_UP_MOVE(44, MOVE_EXPLOSION), + LEVEL_UP_MOVE(51, MOVE_DESTINY_BOND), + LEVEL_UP_MOVE(58, MOVE_MEMENTO), + LEVEL_UP_END +}; + +const u16 gRhyhornLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_STOMP), + LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(38, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(57, MOVE_MEGAHORN), + LEVEL_UP_END +}; + +const u16 gRhydonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_STOMP), + LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(10, MOVE_STOMP), + LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(38, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(46, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(58, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(66, MOVE_MEGAHORN), + LEVEL_UP_END +}; + +const u16 gChanseyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_REFRESH), + LEVEL_UP_MOVE(13, MOVE_SOFT_BOILED), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(23, MOVE_MINIMIZE), + LEVEL_UP_MOVE(29, MOVE_SING), + LEVEL_UP_MOVE(35, MOVE_EGG_BOMB), + LEVEL_UP_MOVE(41, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(49, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gTangelaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_INGRAIN), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 4, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(10, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_GROWTH), + LEVEL_UP_MOVE(19, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(22, MOVE_VINE_WHIP), + LEVEL_UP_MOVE(28, MOVE_BIND), + LEVEL_UP_MOVE(31, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(37, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(40, MOVE_SLAM), + LEVEL_UP_MOVE(46, MOVE_TICKLE), + LEVEL_UP_END +}; + +const u16 gKangaskhanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(31, MOVE_RAGE), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(43, MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + LEVEL_UP_END +}; + +const u16 gHorseaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +const u16 gSeadraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +const u16 gGoldeenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(10, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(24, MOVE_FLAIL), + LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(38, MOVE_WATERFALL), + LEVEL_UP_MOVE(43, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(52, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gSeakingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(10, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(24, MOVE_FLAIL), + LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(41, MOVE_WATERFALL), + LEVEL_UP_MOVE(49, MOVE_HORN_DRILL), + LEVEL_UP_MOVE(61, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gStaryuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 6, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(15, MOVE_RECOVER), + LEVEL_UP_MOVE(19, MOVE_CAMOUFLAGE), + LEVEL_UP_MOVE(24, MOVE_SWIFT), + LEVEL_UP_MOVE(28, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(33, MOVE_MINIMIZE), + LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gStarmieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 1, MOVE_RECOVER), + LEVEL_UP_MOVE( 1, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_CONFUSE_RAY), + LEVEL_UP_END +}; + +const u16 gMrmimeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BARRIER), + LEVEL_UP_MOVE( 5, MOVE_CONFUSION), + LEVEL_UP_MOVE( 9, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(13, MOVE_MEDITATE), + LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(21, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(21, MOVE_REFLECT), + LEVEL_UP_MOVE(25, MOVE_ENCORE), + LEVEL_UP_MOVE(29, MOVE_PSYBEAM), + LEVEL_UP_MOVE(33, MOVE_RECYCLE), + LEVEL_UP_MOVE(37, MOVE_TRICK), + LEVEL_UP_MOVE(41, MOVE_ROLE_PLAY), + LEVEL_UP_MOVE(45, MOVE_PSYCHIC), + LEVEL_UP_MOVE(49, MOVE_BATON_PASS), + LEVEL_UP_MOVE(53, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gScytherLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(11, MOVE_PURSUIT), + LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(21, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + LEVEL_UP_END +}; + +const u16 gJynxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_LOVELY_KISS), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 9, MOVE_LOVELY_KISS), + LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(21, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(25, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE(35, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(41, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(51, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(57, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(67, MOVE_BLIZZARD), + LEVEL_UP_END +}; + +const u16 gElectabuzzLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(25, MOVE_SWIFT), + LEVEL_UP_MOVE(36, MOVE_SCREECH), + LEVEL_UP_MOVE(47, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(58, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gMagmarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(33, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(57, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +const u16 gPinsirLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(19, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_REVENGE), + LEVEL_UP_MOVE(31, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(37, MOVE_GUILLOTINE), + LEVEL_UP_MOVE(43, MOVE_SUBMISSION), + LEVEL_UP_MOVE(49, MOVE_SWORDS_DANCE), + LEVEL_UP_END +}; + +const u16 gTaurosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(19, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(26, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_THRASH), + LEVEL_UP_MOVE(53, MOVE_TAKE_DOWN), + LEVEL_UP_END +}; + +const u16 gMagikarpLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE(15, MOVE_TACKLE), + LEVEL_UP_MOVE(30, MOVE_FLAIL), + LEVEL_UP_END +}; + +const u16 gGyaradosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THRASH), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(25, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(30, MOVE_LEER), + LEVEL_UP_MOVE(35, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gLaprasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 7, MOVE_MIST), + LEVEL_UP_MOVE(13, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(19, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(25, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(31, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(55, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gDittoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TRANSFORM), + LEVEL_UP_END +}; + +const u16 gEeveeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_GROWL), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_BATON_PASS), + LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), + LEVEL_UP_END +}; + +const u16 gVaporeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_WATER_GUN), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(42, MOVE_HAZE), + LEVEL_UP_MOVE(47, MOVE_ACID_ARMOR), + LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gJolteonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(36, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(42, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_MOVE(52, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gFlareonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_EMBER), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(42, MOVE_SMOG), + LEVEL_UP_MOVE(47, MOVE_LEER), + LEVEL_UP_MOVE(52, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gPorygonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION), + LEVEL_UP_MOVE( 9, MOVE_AGILITY), + LEVEL_UP_MOVE(12, MOVE_PSYBEAM), + LEVEL_UP_MOVE(20, MOVE_RECOVER), + LEVEL_UP_MOVE(24, MOVE_SHARPEN), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(44, MOVE_RECYCLE), + LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +const u16 gOmanyteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_LEER), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(43, MOVE_TICKLE), + LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gOmastarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_LEER), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(40, MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE(46, MOVE_TICKLE), + LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(65, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gKabutoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_ABSORB), + LEVEL_UP_MOVE(19, MOVE_LEER), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(43, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(49, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +const u16 gKabutopsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_ABSORB), + LEVEL_UP_MOVE(19, MOVE_LEER), + LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(40, MOVE_SLASH), + LEVEL_UP_MOVE(46, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(55, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(65, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +const u16 gAerodactylLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 8, MOVE_AGILITY), + LEVEL_UP_MOVE(15, MOVE_BITE), + LEVEL_UP_MOVE(22, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(36, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gSnorlaxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_AMNESIA), + LEVEL_UP_MOVE(10, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(15, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(24, MOVE_YAWN), + LEVEL_UP_MOVE(28, MOVE_REST), + LEVEL_UP_MOVE(28, MOVE_SNORE), + LEVEL_UP_MOVE(33, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(37, MOVE_BLOCK), + LEVEL_UP_MOVE(42, MOVE_COVET), + LEVEL_UP_MOVE(46, MOVE_ROLLOUT), + LEVEL_UP_MOVE(51, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gArticunoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(13, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_MIND_READER), + LEVEL_UP_MOVE(49, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(61, MOVE_REFLECT), + LEVEL_UP_MOVE(73, MOVE_BLIZZARD), + LEVEL_UP_MOVE(85, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gZapdosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_DETECT), + LEVEL_UP_MOVE(49, MOVE_DRILL_PECK), + LEVEL_UP_MOVE(61, MOVE_CHARGE), + LEVEL_UP_MOVE(73, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(85, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gMoltresLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE(13, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(25, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_ENDURE), + LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(61, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(73, MOVE_HEAT_WAVE), + LEVEL_UP_MOVE(85, MOVE_SKY_ATTACK), + LEVEL_UP_END +}; + +const u16 gDratiniLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(50, MOVE_OUTRAGE), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gDragonairLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(56, MOVE_OUTRAGE), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gDragoniteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(15, MOVE_TWISTER), + LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), + LEVEL_UP_MOVE(29, MOVE_SLAM), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(55, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(61, MOVE_OUTRAGE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gMewtwoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE(11, MOVE_BARRIER), + LEVEL_UP_MOVE(22, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(44, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(55, MOVE_MIST), + LEVEL_UP_MOVE(66, MOVE_PSYCHIC), + LEVEL_UP_MOVE(77, MOVE_AMNESIA), + LEVEL_UP_MOVE(88, MOVE_RECOVER), + LEVEL_UP_MOVE(99, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gMewLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE(10, MOVE_TRANSFORM), + LEVEL_UP_MOVE(20, MOVE_MEGA_PUNCH), + LEVEL_UP_MOVE(30, MOVE_METRONOME), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(50, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +const u16 gChikoritaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(22, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(29, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(50, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gBayleefLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 1, MOVE_REFLECT), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(23, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(39, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gMeganiumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE( 1, MOVE_REFLECT), + LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(12, MOVE_REFLECT), + LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(23, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(51, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(61, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gCyndaquilLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(27, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(36, MOVE_SWIFT), + LEVEL_UP_MOVE(46, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gQuilavaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(54, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gTyphlosionLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(12, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), + LEVEL_UP_MOVE(45, MOVE_SWIFT), + LEVEL_UP_MOVE(60, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gTotodileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_BITE), + LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(35, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gCroconawLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(28, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(45, MOVE_SCREECH), + LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gFeraligatrLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_WATER_GUN), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(28, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(38, MOVE_SLASH), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gSentretLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(24, MOVE_SLAM), + LEVEL_UP_MOVE(31, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(40, MOVE_REST), + LEVEL_UP_MOVE(49, MOVE_AMNESIA), + LEVEL_UP_END +}; + +const u16 gFurretLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(28, MOVE_SLAM), + LEVEL_UP_MOVE(37, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(48, MOVE_REST), + LEVEL_UP_MOVE(59, MOVE_AMNESIA), + LEVEL_UP_END +}; + +const u16 gHoothootLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_FORESIGHT), + LEVEL_UP_MOVE(11, MOVE_PECK), + LEVEL_UP_MOVE(16, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(22, MOVE_REFLECT), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(34, MOVE_CONFUSION), + LEVEL_UP_MOVE(48, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +const u16 gNoctowlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 6, MOVE_FORESIGHT), + LEVEL_UP_MOVE(11, MOVE_PECK), + LEVEL_UP_MOVE(16, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_REFLECT), + LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_CONFUSION), + LEVEL_UP_MOVE(57, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +const u16 gLedybaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE(22, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(22, MOVE_REFLECT), + LEVEL_UP_MOVE(22, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(29, MOVE_BATON_PASS), + LEVEL_UP_MOVE(36, MOVE_SWIFT), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gLedianLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH), + LEVEL_UP_MOVE(24, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(24, MOVE_REFLECT), + LEVEL_UP_MOVE(24, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(33, MOVE_BATON_PASS), + LEVEL_UP_MOVE(42, MOVE_SWIFT), + LEVEL_UP_MOVE(51, MOVE_AGILITY), + LEVEL_UP_MOVE(60, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gSpinarakLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 6, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(23, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(37, MOVE_SPIDER_WEB), + LEVEL_UP_MOVE(45, MOVE_AGILITY), + LEVEL_UP_MOVE(53, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gAriadosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 6, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(43, MOVE_SPIDER_WEB), + LEVEL_UP_MOVE(53, MOVE_AGILITY), + LEVEL_UP_MOVE(63, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gCrobatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(16, MOVE_BITE), + LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_POISON_FANG), + LEVEL_UP_MOVE(56, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gChinchouLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_SPARK), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(49, MOVE_CHARGE), + LEVEL_UP_END +}; + +const u16 gLanturnLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), + LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_SPARK), + LEVEL_UP_MOVE(32, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(61, MOVE_CHARGE), + LEVEL_UP_END +}; + +const u16 gPichuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + LEVEL_UP_END +}; + +const u16 gCleffaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 4, MOVE_ENCORE), + LEVEL_UP_MOVE( 8, MOVE_SING), + LEVEL_UP_MOVE(13, MOVE_SWEET_KISS), + LEVEL_UP_END +}; + +const u16 gIgglybuffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 9, MOVE_POUND), + LEVEL_UP_MOVE(14, MOVE_SWEET_KISS), + LEVEL_UP_END +}; + +const u16 gTogepiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_METRONOME), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(16, MOVE_YAWN), + LEVEL_UP_MOVE(21, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(31, MOVE_WISH), + LEVEL_UP_MOVE(36, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gTogeticLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_METRONOME), + LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(16, MOVE_YAWN), + LEVEL_UP_MOVE(21, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_FOLLOW_ME), + LEVEL_UP_MOVE(31, MOVE_WISH), + LEVEL_UP_MOVE(36, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gNatuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_TELEPORT), + LEVEL_UP_MOVE(30, MOVE_WISH), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(40, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(50, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gXatuLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_TELEPORT), + LEVEL_UP_MOVE(35, MOVE_WISH), + LEVEL_UP_MOVE(35, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(65, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gMareepLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(16, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(23, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gFlaaffyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(45, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gAmpharosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(42, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(57, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gBellossomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gMarillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROLLOUT), + LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(28, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(36, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gAzumarillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROLLOUT), + LEVEL_UP_MOVE(24, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(34, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(57, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gSudowoodoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 1, MOVE_MIMIC), + LEVEL_UP_MOVE( 9, MOVE_FLAIL), + LEVEL_UP_MOVE(17, MOVE_LOW_KICK), + LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(33, MOVE_BLOCK), + LEVEL_UP_MOVE(41, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(49, MOVE_SLAM), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gPolitoedLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(35, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(51, MOVE_SWAGGER), + LEVEL_UP_END +}; + +const u16 gHoppipLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(20, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(25, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(30, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gSkiploomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(29, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(36, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gJumpluffLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_TACKLE), + LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), + LEVEL_UP_MOVE(22, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(33, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(44, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gAipomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(18, MOVE_BATON_PASS), + LEVEL_UP_MOVE(25, MOVE_TICKLE), + LEVEL_UP_MOVE(31, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(38, MOVE_SWIFT), + LEVEL_UP_MOVE(43, MOVE_SCREECH), + LEVEL_UP_MOVE(50, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gSunkernLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(18, MOVE_INGRAIN), + LEVEL_UP_MOVE(25, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(42, MOVE_GIGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gSunfloraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 6, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(18, MOVE_INGRAIN), + LEVEL_UP_MOVE(25, MOVE_BULLET_SEED), + LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(42, MOVE_SOLAR_BEAM), + LEVEL_UP_END +}; + +const u16 gYanmaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(19, MOVE_SONIC_BOOM), + LEVEL_UP_MOVE(25, MOVE_DETECT), + LEVEL_UP_MOVE(31, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(37, MOVE_UPROAR), + LEVEL_UP_MOVE(43, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(49, MOVE_SCREECH), + LEVEL_UP_END +}; + +const u16 gWooperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(11, MOVE_SLAM), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_YAWN), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(51, MOVE_MIST), + LEVEL_UP_MOVE(51, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gQuagsireLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(11, MOVE_SLAM), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(23, MOVE_AMNESIA), + LEVEL_UP_MOVE(35, MOVE_YAWN), + LEVEL_UP_MOVE(42, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(49, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(61, MOVE_MIST), + LEVEL_UP_MOVE(61, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gEspeonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_CONFUSION), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_SWIFT), + LEVEL_UP_MOVE(36, MOVE_PSYBEAM), + LEVEL_UP_MOVE(42, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(47, MOVE_PSYCHIC), + LEVEL_UP_MOVE(52, MOVE_MORNING_SUN), + LEVEL_UP_END +}; + +const u16 gUmbreonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), + LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(47, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_MOONLIGHT), + LEVEL_UP_END +}; + +const u16 gMurkrowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_PURSUIT), + LEVEL_UP_MOVE(22, MOVE_HAZE), + LEVEL_UP_MOVE(27, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(35, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(40, MOVE_TAUNT), + LEVEL_UP_MOVE(48, MOVE_MEAN_LOOK), + LEVEL_UP_END +}; + +const u16 gSlowkingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE(15, MOVE_WATER_GUN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(29, MOVE_DISABLE), + LEVEL_UP_MOVE(34, MOVE_HEADBUTT), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(48, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +const u16 gMisdreavusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 6, MOVE_SPITE), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(23, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(30, MOVE_PSYBEAM), + LEVEL_UP_MOVE(37, MOVE_PAIN_SPLIT), + LEVEL_UP_MOVE(45, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(53, MOVE_GRUDGE), + LEVEL_UP_END +}; + +const u16 gUnownLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HIDDEN_POWER), + LEVEL_UP_END +}; + +const u16 gWobbuffetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_COUNTER), + LEVEL_UP_MOVE( 1, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), + LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +const u16 gGirafarigLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ASTONISH), + LEVEL_UP_MOVE(13, MOVE_CONFUSION), + LEVEL_UP_MOVE(19, MOVE_STOMP), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_BATON_PASS), + LEVEL_UP_MOVE(43, MOVE_PSYBEAM), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gPinecoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 8, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(29, MOVE_BIDE), + LEVEL_UP_MOVE(36, MOVE_EXPLOSION), + LEVEL_UP_MOVE(43, MOVE_SPIKES), + LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gForretressLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_PROTECT), + LEVEL_UP_MOVE( 1, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE( 8, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(29, MOVE_BIDE), + LEVEL_UP_MOVE(39, MOVE_EXPLOSION), + LEVEL_UP_MOVE(49, MOVE_SPIKES), + LEVEL_UP_MOVE(59, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gDunsparceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(11, MOVE_YAWN), + LEVEL_UP_MOVE(14, MOVE_GLARE), + LEVEL_UP_MOVE(21, MOVE_SPITE), + LEVEL_UP_MOVE(24, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_SCREECH), + LEVEL_UP_MOVE(34, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(41, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gGligarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HARDEN), + LEVEL_UP_MOVE(20, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(28, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(44, MOVE_SCREECH), + LEVEL_UP_MOVE(52, MOVE_GUILLOTINE), + LEVEL_UP_END +}; + +const u16 gSteelixLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 9, MOVE_BIND), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(21, MOVE_HARDEN), + LEVEL_UP_MOVE(25, MOVE_RAGE), + LEVEL_UP_MOVE(33, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_SLAM), + LEVEL_UP_MOVE(45, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gSnubbullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_LICK), + LEVEL_UP_MOVE(26, MOVE_ROAR), + LEVEL_UP_MOVE(34, MOVE_RAGE), + LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(53, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gGranbullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 8, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(19, MOVE_LICK), + LEVEL_UP_MOVE(28, MOVE_ROAR), + LEVEL_UP_MOVE(38, MOVE_RAGE), + LEVEL_UP_MOVE(49, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gQwilfishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPIKES), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE(10, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_MINIMIZE), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(28, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gScizorLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(11, MOVE_PURSUIT), + LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(21, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(41, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + LEVEL_UP_END +}; + +const u16 gShuckleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), + LEVEL_UP_MOVE( 9, MOVE_WRAP), + LEVEL_UP_MOVE(14, MOVE_ENCORE), + LEVEL_UP_MOVE(23, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_BIDE), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_END +}; + +const u16 gHeracrossLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE(11, MOVE_ENDURE), + LEVEL_UP_MOVE(17, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(23, MOVE_BRICK_BREAK), + LEVEL_UP_MOVE(30, MOVE_COUNTER), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(45, MOVE_REVERSAL), + LEVEL_UP_MOVE(53, MOVE_MEGAHORN), + LEVEL_UP_END +}; + +const u16 gSneaselLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_TAUNT), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(36, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_ICY_WIND), + LEVEL_UP_MOVE(50, MOVE_SLASH), + LEVEL_UP_MOVE(57, MOVE_BEAT_UP), + LEVEL_UP_MOVE(64, MOVE_METAL_CLAW), + LEVEL_UP_END +}; + +const u16 gTeddiursaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(49, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gUrsaringLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(49, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gSlugmaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 8, MOVE_EMBER), + LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(22, MOVE_HARDEN), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(43, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(50, MOVE_BODY_SLAM), + LEVEL_UP_END +}; + +const u16 gMagcargoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_SMOG), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), + LEVEL_UP_MOVE( 8, MOVE_EMBER), + LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(22, MOVE_HARDEN), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(48, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(60, MOVE_BODY_SLAM), + LEVEL_UP_END +}; + +const u16 gSwinubLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(19, MOVE_ENDURE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_MIST), + LEVEL_UP_MOVE(46, MOVE_BLIZZARD), + LEVEL_UP_MOVE(55, MOVE_AMNESIA), + LEVEL_UP_END +}; + +const u16 gPiloswineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_ENDURE), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(19, MOVE_ENDURE), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(42, MOVE_MIST), + LEVEL_UP_MOVE(56, MOVE_BLIZZARD), + LEVEL_UP_MOVE(70, MOVE_AMNESIA), + LEVEL_UP_END +}; + +const u16 gCorsolaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 6, MOVE_HARDEN), + LEVEL_UP_MOVE(12, MOVE_BUBBLE), + LEVEL_UP_MOVE(17, MOVE_RECOVER), + LEVEL_UP_MOVE(17, MOVE_REFRESH), + LEVEL_UP_MOVE(23, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(28, MOVE_SPIKE_CANNON), + LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST), + LEVEL_UP_MOVE(39, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(45, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +const u16 gRemoraidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(11, MOVE_LOCK_ON), + LEVEL_UP_MOVE(22, MOVE_PSYBEAM), + LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(33, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(44, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gOctilleryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE(11, MOVE_CONSTRICT), + LEVEL_UP_MOVE(22, MOVE_PSYBEAM), + LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(25, MOVE_OCTAZOOKA), + LEVEL_UP_MOVE(38, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(54, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(70, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gDelibirdLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PRESENT), + LEVEL_UP_END +}; + +const u16 gMantineLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(15, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(22, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(43, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY), + LEVEL_UP_END +}; + +const u16 gSkarmoryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE(10, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWIFT), + LEVEL_UP_MOVE(16, MOVE_AGILITY), + LEVEL_UP_MOVE(26, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(29, MOVE_AIR_CUTTER), + LEVEL_UP_MOVE(32, MOVE_STEEL_WING), + LEVEL_UP_MOVE(42, MOVE_SPIKES), + LEVEL_UP_MOVE(45, MOVE_METAL_SOUND), + LEVEL_UP_END +}; + +const u16 gHoundourLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_BITE), + LEVEL_UP_MOVE(31, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gHoundoomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 7, MOVE_HOWL), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_ROAR), + LEVEL_UP_MOVE(27, MOVE_BITE), + LEVEL_UP_MOVE(35, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(43, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(59, MOVE_CRUNCH), + LEVEL_UP_END +}; + +const u16 gKingdraLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(15, MOVE_LEER), + LEVEL_UP_MOVE(22, MOVE_WATER_GUN), + LEVEL_UP_MOVE(29, MOVE_TWISTER), + LEVEL_UP_MOVE(40, MOVE_AGILITY), + LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +const u16 gPhanpyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(17, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_ENDURE), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gDonphanLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(17, MOVE_FLAIL), + LEVEL_UP_MOVE(25, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(33, MOVE_ROLLOUT), + LEVEL_UP_MOVE(41, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(49, MOVE_EARTHQUAKE), + LEVEL_UP_END +}; + +const u16 gPorygon2LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_CONVERSION), + LEVEL_UP_MOVE( 9, MOVE_AGILITY), + LEVEL_UP_MOVE(12, MOVE_PSYBEAM), + LEVEL_UP_MOVE(20, MOVE_RECOVER), + LEVEL_UP_MOVE(24, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(32, MOVE_LOCK_ON), + LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK), + LEVEL_UP_MOVE(44, MOVE_RECYCLE), + LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON), + LEVEL_UP_END +}; + +const u16 gStantlerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(43, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(49, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +const u16 gSmeargleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SKETCH), + LEVEL_UP_MOVE(11, MOVE_SKETCH), + LEVEL_UP_MOVE(21, MOVE_SKETCH), + LEVEL_UP_MOVE(31, MOVE_SKETCH), + LEVEL_UP_MOVE(41, MOVE_SKETCH), + LEVEL_UP_MOVE(51, MOVE_SKETCH), + LEVEL_UP_MOVE(61, MOVE_SKETCH), + LEVEL_UP_MOVE(71, MOVE_SKETCH), + LEVEL_UP_MOVE(81, MOVE_SKETCH), + LEVEL_UP_MOVE(91, MOVE_SKETCH), + LEVEL_UP_END +}; + +const u16 gTyrogueLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gHitmontopLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_REVENGE), + LEVEL_UP_MOVE( 1, MOVE_ROLLING_KICK), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_PURSUIT), + LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_TRIPLE_KICK), + LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE(31, MOVE_COUNTER), + LEVEL_UP_MOVE(37, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_DETECT), + LEVEL_UP_MOVE(49, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gSmoochumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 9, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(21, MOVE_CONFUSION), + LEVEL_UP_MOVE(25, MOVE_SING), + LEVEL_UP_MOVE(33, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(37, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(45, MOVE_PSYCHIC), + LEVEL_UP_MOVE(49, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(57, MOVE_BLIZZARD), + LEVEL_UP_END +}; + +const u16 gElekidLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(25, MOVE_SWIFT), + LEVEL_UP_MOVE(33, MOVE_SCREECH), + LEVEL_UP_MOVE(41, MOVE_THUNDERBOLT), + LEVEL_UP_MOVE(49, MOVE_THUNDER), + LEVEL_UP_END +}; + +const u16 gMagbyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_LEER), + LEVEL_UP_MOVE(13, MOVE_SMOG), + LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(37, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(43, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(49, MOVE_FIRE_BLAST), + LEVEL_UP_END +}; + +const u16 gMiltankLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(13, MOVE_STOMP), + LEVEL_UP_MOVE(19, MOVE_MILK_DRINK), + LEVEL_UP_MOVE(26, MOVE_BIDE), + LEVEL_UP_MOVE(34, MOVE_ROLLOUT), + LEVEL_UP_MOVE(43, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(53, MOVE_HEAL_BELL), + LEVEL_UP_END +}; + +const u16 gBlisseyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_REFRESH), + LEVEL_UP_MOVE(10, MOVE_SOFT_BOILED), + LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(18, MOVE_MINIMIZE), + LEVEL_UP_MOVE(23, MOVE_SING), + LEVEL_UP_MOVE(28, MOVE_EGG_BOMB), + LEVEL_UP_MOVE(33, MOVE_DEFENSE_CURL), + LEVEL_UP_MOVE(40, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gRaikouLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_THUNDER_SHOCK), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(41, MOVE_SPARK), + LEVEL_UP_MOVE(51, MOVE_REFLECT), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + LEVEL_UP_MOVE(71, MOVE_THUNDER), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +const u16 gEnteiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(31, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(41, MOVE_STOMP), + LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(61, MOVE_SWAGGER), + LEVEL_UP_MOVE(71, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +const u16 gSuicuneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE(11, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(21, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(31, MOVE_GUST), + LEVEL_UP_MOVE(41, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(51, MOVE_MIST), + LEVEL_UP_MOVE(61, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(71, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(81, MOVE_CALM_MIND), + LEVEL_UP_END +}; + +const u16 gLarvitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(36, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(43, MOVE_CRUNCH), + LEVEL_UP_MOVE(50, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gPupitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SANDSTORM), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(38, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(56, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gTyranitarLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SANDSTORM), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(29, MOVE_THRASH), + LEVEL_UP_MOVE(38, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(61, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gLugiaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(11, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(22, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_RECOVER), + LEVEL_UP_MOVE(44, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(55, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(66, MOVE_SWIFT), + LEVEL_UP_MOVE(77, MOVE_AEROBLAST), + LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gHoOhLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(11, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(22, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_RECOVER), + LEVEL_UP_MOVE(44, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(55, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(66, MOVE_SWIFT), + LEVEL_UP_MOVE(77, MOVE_SACRED_FIRE), + LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gCelebiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_RECOVER), + LEVEL_UP_MOVE( 1, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(10, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +const u16 gSpecies252LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies253LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies254LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies255LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies256LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies257LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies258LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies259LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies260LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies261LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies262LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies263LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies264LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies265LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies266LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies267LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies268LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies269LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies270LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies271LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies272LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies273LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies274LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies275LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gSpecies276LevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_END +}; + +const u16 gTreeckoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PURSUIT), + LEVEL_UP_MOVE(21, MOVE_SCREECH), + LEVEL_UP_MOVE(26, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(36, MOVE_SLAM), + LEVEL_UP_MOVE(41, MOVE_DETECT), + LEVEL_UP_MOVE(46, MOVE_GIGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gGrovyleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(17, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(41, MOVE_SLAM), + LEVEL_UP_MOVE(47, MOVE_DETECT), + LEVEL_UP_MOVE(53, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +const u16 gSceptileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 6, MOVE_ABSORB), + LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(17, MOVE_PURSUIT), + LEVEL_UP_MOVE(23, MOVE_SCREECH), + LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), + LEVEL_UP_MOVE(35, MOVE_AGILITY), + LEVEL_UP_MOVE(43, MOVE_SLAM), + LEVEL_UP_MOVE(51, MOVE_DETECT), + LEVEL_UP_MOVE(59, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +const u16 gTorchicLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(10, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_PECK), + LEVEL_UP_MOVE(19, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(28, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(34, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), + LEVEL_UP_END +}; + +const u16 gCombuskenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_PECK), + LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(28, MOVE_BULK_UP), + LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(39, MOVE_SLASH), + LEVEL_UP_MOVE(43, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(50, MOVE_SKY_UPPERCUT), + LEVEL_UP_END +}; + +const u16 gBlazikenLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(13, MOVE_EMBER), + LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), + LEVEL_UP_MOVE(17, MOVE_PECK), + LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(28, MOVE_BULK_UP), + LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(36, MOVE_BLAZE_KICK), + LEVEL_UP_MOVE(42, MOVE_SLASH), + LEVEL_UP_MOVE(49, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(59, MOVE_SKY_UPPERCUT), + LEVEL_UP_END +}; + +const u16 gMudkipLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(19, MOVE_FORESIGHT), + LEVEL_UP_MOVE(24, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(33, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(42, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(46, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gMarshtompLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(20, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(42, MOVE_PROTECT), + LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(53, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gSwampertLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_BIDE), + LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), + LEVEL_UP_MOVE(20, MOVE_FORESIGHT), + LEVEL_UP_MOVE(25, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(39, MOVE_MUDDY_WATER), + LEVEL_UP_MOVE(46, MOVE_PROTECT), + LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(61, MOVE_ENDEAVOR), + LEVEL_UP_END +}; + +const u16 gPoochyenaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_HOWL), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_SWAGGER), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_TAUNT), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_THIEF), + LEVEL_UP_END +}; + +const u16 gMightyenaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 5, MOVE_HOWL), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(13, MOVE_BITE), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(22, MOVE_ROAR), + LEVEL_UP_MOVE(27, MOVE_SWAGGER), + LEVEL_UP_MOVE(32, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(42, MOVE_TAUNT), + LEVEL_UP_MOVE(47, MOVE_CRUNCH), + LEVEL_UP_MOVE(52, MOVE_THIEF), + LEVEL_UP_END +}; + +const u16 gZigzagoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(21, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(25, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(29, MOVE_COVET), + LEVEL_UP_MOVE(33, MOVE_FLAIL), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_BELLY_DRUM), + LEVEL_UP_END +}; + +const u16 gLinooneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(23, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(35, MOVE_COVET), + LEVEL_UP_MOVE(41, MOVE_SLASH), + LEVEL_UP_MOVE(47, MOVE_REST), + LEVEL_UP_MOVE(53, MOVE_BELLY_DRUM), + LEVEL_UP_END +}; + +const u16 gWurmpleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), + LEVEL_UP_MOVE( 5, MOVE_POISON_STING), + LEVEL_UP_END +}; + +const u16 gSilcoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +const u16 gBeautiflyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE(10, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_GUST), + LEVEL_UP_MOVE(17, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(20, MOVE_MORNING_SUN), + LEVEL_UP_MOVE(24, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_ATTRACT), + LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(38, MOVE_GIGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gCascoonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_END +}; + +const u16 gDustoxLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE(10, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_GUST), + LEVEL_UP_MOVE(17, MOVE_PROTECT), + LEVEL_UP_MOVE(20, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(24, MOVE_PSYBEAM), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_LIGHT_SCREEN), + LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(38, MOVE_TOXIC), + LEVEL_UP_END +}; + +const u16 gLotadLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 3, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(43, MOVE_MEGA_DRAIN), + LEVEL_UP_END +}; + +const u16 gLombreLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 3, MOVE_GROWL), + LEVEL_UP_MOVE( 7, MOVE_ABSORB), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(31, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(37, MOVE_THIEF), + LEVEL_UP_MOVE(43, MOVE_UPROAR), + LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gLudicoloLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_NATURE_POWER), + LEVEL_UP_END +}; + +const u16 gSeedotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(21, MOVE_SYNTHESIS), + LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(43, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +const u16 gNuzleafLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_TORMENT), + LEVEL_UP_MOVE(31, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(37, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(49, MOVE_EXTRASENSORY), + LEVEL_UP_END +}; + +const u16 gShiftryLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 1, MOVE_NATURE_POWER), + LEVEL_UP_END +}; + +const u16 gNincadaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(25, MOVE_FALSE_SWIPE), + LEVEL_UP_MOVE(31, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(38, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(45, MOVE_DIG), + LEVEL_UP_END +}; + +const u16 gNinjaskLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(20, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(20, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(20, MOVE_SCREECH), + LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(38, MOVE_AGILITY), + LEVEL_UP_MOVE(45, MOVE_BATON_PASS), + LEVEL_UP_END +}; + +const u16 gShedinjaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(19, MOVE_MIND_READER), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(38, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(45, MOVE_GRUDGE), + LEVEL_UP_END +}; + +const u16 gTaillowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(26, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(34, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gSwellowLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(28, MOVE_ENDEAVOR), + LEVEL_UP_MOVE(38, MOVE_AERIAL_ACE), + LEVEL_UP_MOVE(49, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gShroomishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 4, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(22, MOVE_HEADBUTT), + LEVEL_UP_MOVE(28, MOVE_POISON_POWDER), + LEVEL_UP_MOVE(36, MOVE_GROWTH), + LEVEL_UP_MOVE(45, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(54, MOVE_SPORE), + LEVEL_UP_END +}; + +const u16 gBreloomLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), + LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), + LEVEL_UP_MOVE( 4, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(22, MOVE_HEADBUTT), + LEVEL_UP_MOVE(23, MOVE_MACH_PUNCH), + LEVEL_UP_MOVE(28, MOVE_COUNTER), + LEVEL_UP_MOVE(36, MOVE_SKY_UPPERCUT), + LEVEL_UP_MOVE(45, MOVE_MIND_READER), + LEVEL_UP_MOVE(54, MOVE_DYNAMIC_PUNCH), + LEVEL_UP_END +}; + +const u16 gSpindaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(12, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(23, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(27, MOVE_DIZZY_PUNCH), + LEVEL_UP_MOVE(34, MOVE_TEETER_DANCE), + LEVEL_UP_MOVE(38, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(49, MOVE_FLAIL), + LEVEL_UP_MOVE(56, MOVE_THRASH), + LEVEL_UP_END +}; + +const u16 gWingullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(43, MOVE_PURSUIT), + LEVEL_UP_MOVE(55, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gPelipperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), + LEVEL_UP_MOVE( 3, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), + LEVEL_UP_MOVE(21, MOVE_MIST), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_STOCKPILE), + LEVEL_UP_MOVE(33, MOVE_SWALLOW), + LEVEL_UP_MOVE(47, MOVE_SPIT_UP), + LEVEL_UP_MOVE(61, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gSurskitLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(31, MOVE_AGILITY), + LEVEL_UP_MOVE(37, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gMasquerainLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(26, MOVE_GUST), + LEVEL_UP_MOVE(33, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(40, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(47, MOVE_SILVER_WIND), + LEVEL_UP_MOVE(53, MOVE_WHIRLWIND), + LEVEL_UP_END +}; + +const u16 gWailmerLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(14, MOVE_ROLLOUT), + LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(23, MOVE_ASTONISH), + LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(32, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(46, MOVE_AMNESIA), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gWailordLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), + LEVEL_UP_MOVE( 5, MOVE_GROWL), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(14, MOVE_ROLLOUT), + LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE(23, MOVE_ASTONISH), + LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(32, MOVE_MIST), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(44, MOVE_WATER_SPOUT), + LEVEL_UP_MOVE(52, MOVE_AMNESIA), + LEVEL_UP_MOVE(59, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gSkittyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 3, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 7, MOVE_ATTRACT), + LEVEL_UP_MOVE(13, MOVE_SING), + LEVEL_UP_MOVE(15, MOVE_DOUBLE_SLAP), + LEVEL_UP_MOVE(19, MOVE_ASSIST), + LEVEL_UP_MOVE(25, MOVE_CHARM), + LEVEL_UP_MOVE(27, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(37, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(39, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gDelcattyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ATTRACT), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), + LEVEL_UP_END +}; + +const u16 gKecleonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_THIEF), + LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_LICK), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_BIND), + LEVEL_UP_MOVE( 7, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(17, MOVE_PSYBEAM), + LEVEL_UP_MOVE(24, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(40, MOVE_SUBSTITUTE), + LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER), + LEVEL_UP_END +}; + +const u16 gBaltoyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(11, MOVE_PSYBEAM), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(45, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +const u16 gClaydolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 3, MOVE_HARDEN), + LEVEL_UP_MOVE( 5, MOVE_RAPID_SPIN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(11, MOVE_PSYBEAM), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT), + LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(36, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(55, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +const u16 gNosepassLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(16, MOVE_BLOCK), + LEVEL_UP_MOVE(22, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(28, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(31, MOVE_SANDSTORM), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(46, MOVE_LOCK_ON), + LEVEL_UP_END +}; + +const u16 gTorkoalLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 4, MOVE_SMOG), + LEVEL_UP_MOVE( 7, MOVE_CURSE), + LEVEL_UP_MOVE(14, MOVE_SMOKESCREEN), + LEVEL_UP_MOVE(17, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(27, MOVE_PROTECT), + LEVEL_UP_MOVE(30, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(33, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(40, MOVE_AMNESIA), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + LEVEL_UP_MOVE(46, MOVE_HEAT_WAVE), + LEVEL_UP_END +}; + +const u16 gSableyeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_FORESIGHT), + LEVEL_UP_MOVE( 9, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(13, MOVE_ASTONISH), + LEVEL_UP_MOVE(17, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(21, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(25, MOVE_DETECT), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(33, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(37, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(41, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK), + LEVEL_UP_END +}; + +const u16 gBarboachLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(11, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(26, MOVE_REST), + LEVEL_UP_MOVE(26, MOVE_SNORE), + LEVEL_UP_MOVE(31, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(41, MOVE_FISSURE), + LEVEL_UP_END +}; + +const u16 gWhiscashLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TICKLE), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), + LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(11, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(21, MOVE_AMNESIA), + LEVEL_UP_MOVE(26, MOVE_REST), + LEVEL_UP_MOVE(26, MOVE_SNORE), + LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(46, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(56, MOVE_FISSURE), + LEVEL_UP_END +}; + +const u16 gLuvdiscLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_CHARM), + LEVEL_UP_MOVE(12, MOVE_WATER_GUN), + LEVEL_UP_MOVE(16, MOVE_AGILITY), + LEVEL_UP_MOVE(24, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(28, MOVE_ATTRACT), + LEVEL_UP_MOVE(36, MOVE_SWEET_KISS), + LEVEL_UP_MOVE(40, MOVE_FLAIL), + LEVEL_UP_MOVE(48, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gCorphishLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(23, MOVE_PROTECT), + LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(32, MOVE_TAUNT), + LEVEL_UP_MOVE(35, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(38, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(44, MOVE_GUILLOTINE), + LEVEL_UP_END +}; + +const u16 gCrawdauntLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BUBBLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(10, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(13, MOVE_LEER), + LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), + LEVEL_UP_MOVE(23, MOVE_PROTECT), + LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(34, MOVE_TAUNT), + LEVEL_UP_MOVE(39, MOVE_CRABHAMMER), + LEVEL_UP_MOVE(44, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(52, MOVE_GUILLOTINE), + LEVEL_UP_END +}; + +const u16 gFeebasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE(15, MOVE_TACKLE), + LEVEL_UP_MOVE(30, MOVE_FLAIL), + LEVEL_UP_END +}; + +const u16 gMiloticLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 5, MOVE_WRAP), + LEVEL_UP_MOVE(10, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(15, MOVE_REFRESH), + LEVEL_UP_MOVE(20, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(25, MOVE_TWISTER), + LEVEL_UP_MOVE(30, MOVE_RECOVER), + LEVEL_UP_MOVE(35, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(45, MOVE_ATTRACT), + LEVEL_UP_MOVE(50, MOVE_SAFEGUARD), + LEVEL_UP_END +}; + +const u16 gCarvanhaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(16, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(22, MOVE_CRUNCH), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(37, MOVE_SWAGGER), + LEVEL_UP_MOVE(43, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gSharpedoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 7, MOVE_RAGE), + LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(16, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(22, MOVE_CRUNCH), + LEVEL_UP_MOVE(28, MOVE_SCREECH), + LEVEL_UP_MOVE(33, MOVE_SLASH), + LEVEL_UP_MOVE(38, MOVE_TAUNT), + LEVEL_UP_MOVE(43, MOVE_SWAGGER), + LEVEL_UP_MOVE(48, MOVE_SKULL_BASH), + LEVEL_UP_MOVE(53, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gTrapinchLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(41, MOVE_DIG), + LEVEL_UP_MOVE(49, MOVE_SANDSTORM), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gVibravaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(41, MOVE_SCREECH), + LEVEL_UP_MOVE(49, MOVE_SANDSTORM), + LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gFlygonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), + LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), + LEVEL_UP_MOVE(33, MOVE_CRUNCH), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(41, MOVE_SCREECH), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gMakuhitaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(10, MOVE_ARM_THRUST), + LEVEL_UP_MOVE(13, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(22, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(28, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(31, MOVE_SMELLING_SALT), + LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(40, MOVE_ENDURE), + LEVEL_UP_MOVE(46, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + LEVEL_UP_END +}; + +const u16 gHariyamaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE( 1, MOVE_ARM_THRUST), + LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(10, MOVE_ARM_THRUST), + LEVEL_UP_MOVE(13, MOVE_VITAL_THROW), + LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), + LEVEL_UP_MOVE(22, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(29, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(33, MOVE_SMELLING_SALT), + LEVEL_UP_MOVE(40, MOVE_BELLY_DRUM), + LEVEL_UP_MOVE(44, MOVE_ENDURE), + LEVEL_UP_MOVE(51, MOVE_SEISMIC_TOSS), + LEVEL_UP_MOVE(55, MOVE_REVERSAL), + LEVEL_UP_END +}; + +const u16 gElectrikeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_HOWL), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_SPARK), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(28, MOVE_ROAR), + LEVEL_UP_MOVE(33, MOVE_BITE), + LEVEL_UP_MOVE(36, MOVE_THUNDER), + LEVEL_UP_MOVE(41, MOVE_CHARGE), + LEVEL_UP_END +}; + +const u16 gManectricLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(12, MOVE_HOWL), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(20, MOVE_SPARK), + LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(31, MOVE_ROAR), + LEVEL_UP_MOVE(39, MOVE_BITE), + LEVEL_UP_MOVE(45, MOVE_THUNDER), + LEVEL_UP_MOVE(53, MOVE_CHARGE), + LEVEL_UP_END +}; + +const u16 gNumelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_AMNESIA), + LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER), + LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gCameruptLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_EMBER), + LEVEL_UP_MOVE( 1, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(11, MOVE_EMBER), + LEVEL_UP_MOVE(19, MOVE_MAGNITUDE), + LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(31, MOVE_AMNESIA), + LEVEL_UP_MOVE(33, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(37, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(45, MOVE_ERUPTION), + LEVEL_UP_MOVE(55, MOVE_FISSURE), + LEVEL_UP_END +}; + +const u16 gSphealLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SNORE), + LEVEL_UP_MOVE(43, MOVE_BLIZZARD), + LEVEL_UP_MOVE(49, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gSealeoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(39, MOVE_REST), + LEVEL_UP_MOVE(39, MOVE_SNORE), + LEVEL_UP_MOVE(47, MOVE_BLIZZARD), + LEVEL_UP_MOVE(55, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gWalreinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_ICE_BALL), + LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), + LEVEL_UP_MOVE(31, MOVE_HAIL), + LEVEL_UP_MOVE(39, MOVE_REST), + LEVEL_UP_MOVE(39, MOVE_SNORE), + LEVEL_UP_MOVE(50, MOVE_BLIZZARD), + LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gCacneaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(25, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(33, MOVE_SPIKES), + LEVEL_UP_MOVE(37, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(41, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(45, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +const u16 gCacturneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POISON_STING), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 1, MOVE_GROWTH), + LEVEL_UP_MOVE( 5, MOVE_ABSORB), + LEVEL_UP_MOVE( 9, MOVE_GROWTH), + LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), + LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), + LEVEL_UP_MOVE(25, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(35, MOVE_SPIKES), + LEVEL_UP_MOVE(41, MOVE_NEEDLE_ARM), + LEVEL_UP_MOVE(47, MOVE_COTTON_SPORE), + LEVEL_UP_MOVE(53, MOVE_SANDSTORM), + LEVEL_UP_END +}; + +const u16 gSnoruntLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(37, MOVE_HAIL), + LEVEL_UP_MOVE(43, MOVE_BLIZZARD), + LEVEL_UP_END +}; + +const u16 gGlalieLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 7, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_ICY_WIND), + LEVEL_UP_MOVE(19, MOVE_HEADBUTT), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(42, MOVE_HAIL), + LEVEL_UP_MOVE(53, MOVE_BLIZZARD), + LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), + LEVEL_UP_END +}; + +const u16 gLunatoneLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(25, MOVE_PSYWAVE), + LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(49, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +const u16 gSolrockLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_CONFUSION), + LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(19, MOVE_FIRE_SPIN), + LEVEL_UP_MOVE(25, MOVE_PSYWAVE), + LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(37, MOVE_ROCK_SLIDE), + LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(49, MOVE_EXPLOSION), + LEVEL_UP_END +}; + +const u16 gAzurillLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 3, MOVE_CHARM), + LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), + LEVEL_UP_MOVE(10, MOVE_BUBBLE), + LEVEL_UP_MOVE(15, MOVE_SLAM), + LEVEL_UP_MOVE(21, MOVE_WATER_GUN), + LEVEL_UP_END +}; + +const u16 gSpoinkLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), + LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(34, MOVE_PSYCHIC), + LEVEL_UP_MOVE(37, MOVE_REST), + LEVEL_UP_MOVE(37, MOVE_SNORE), + LEVEL_UP_MOVE(43, MOVE_BOUNCE), + LEVEL_UP_END +}; + +const u16 gGrumpigLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE( 1, MOVE_PSYBEAM), + LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), + LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), + LEVEL_UP_MOVE(16, MOVE_PSYBEAM), + LEVEL_UP_MOVE(19, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT), + LEVEL_UP_MOVE(37, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_REST), + LEVEL_UP_MOVE(43, MOVE_SNORE), + LEVEL_UP_MOVE(55, MOVE_BOUNCE), + LEVEL_UP_END +}; + +const u16 gPlusleLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(31, MOVE_CHARGE), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gMinunLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), + LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(19, MOVE_SPARK), + LEVEL_UP_MOVE(22, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_CHARM), + LEVEL_UP_MOVE(31, MOVE_CHARGE), + LEVEL_UP_MOVE(37, MOVE_THUNDER), + LEVEL_UP_MOVE(40, MOVE_BATON_PASS), + LEVEL_UP_MOVE(47, MOVE_AGILITY), + LEVEL_UP_END +}; + +const u16 gMawileLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 6, MOVE_FAKE_TEARS), + LEVEL_UP_MOVE(11, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(21, MOVE_VICE_GRIP), + LEVEL_UP_MOVE(26, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(31, MOVE_BATON_PASS), + LEVEL_UP_MOVE(36, MOVE_CRUNCH), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(46, MOVE_STOCKPILE), + LEVEL_UP_MOVE(46, MOVE_SWALLOW), + LEVEL_UP_MOVE(46, MOVE_SPIT_UP), + LEVEL_UP_END +}; + +const u16 gMedititeLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 4, MOVE_MEDITATE), + LEVEL_UP_MOVE( 9, MOVE_CONFUSION), + LEVEL_UP_MOVE(12, MOVE_DETECT), + LEVEL_UP_MOVE(18, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(22, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_CALM_MIND), + LEVEL_UP_MOVE(32, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(38, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(42, MOVE_REVERSAL), + LEVEL_UP_MOVE(48, MOVE_RECOVER), + LEVEL_UP_END +}; + +const u16 gMedichamLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), + LEVEL_UP_MOVE( 1, MOVE_BIDE), + LEVEL_UP_MOVE( 1, MOVE_MEDITATE), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DETECT), + LEVEL_UP_MOVE( 4, MOVE_MEDITATE), + LEVEL_UP_MOVE( 9, MOVE_CONFUSION), + LEVEL_UP_MOVE(12, MOVE_DETECT), + LEVEL_UP_MOVE(18, MOVE_HIDDEN_POWER), + LEVEL_UP_MOVE(22, MOVE_MIND_READER), + LEVEL_UP_MOVE(28, MOVE_CALM_MIND), + LEVEL_UP_MOVE(32, MOVE_HI_JUMP_KICK), + LEVEL_UP_MOVE(40, MOVE_PSYCH_UP), + LEVEL_UP_MOVE(46, MOVE_REVERSAL), + LEVEL_UP_MOVE(54, MOVE_RECOVER), + LEVEL_UP_END +}; + +const u16 gSwabluLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 8, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_SING), + LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(38, MOVE_MIRROR_MOVE), + LEVEL_UP_MOVE(41, MOVE_REFRESH), + LEVEL_UP_MOVE(48, MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +const u16 gAltariaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PECK), + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_SING), + LEVEL_UP_MOVE( 8, MOVE_ASTONISH), + LEVEL_UP_MOVE(11, MOVE_SING), + LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK), + LEVEL_UP_MOVE(21, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(28, MOVE_MIST), + LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(40, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(45, MOVE_REFRESH), + LEVEL_UP_MOVE(54, MOVE_PERISH_SONG), + LEVEL_UP_MOVE(59, MOVE_SKY_ATTACK), + LEVEL_UP_END +}; + +const u16 gWynautLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SPLASH), + LEVEL_UP_MOVE( 1, MOVE_CHARM), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE(15, MOVE_COUNTER), + LEVEL_UP_MOVE(15, MOVE_MIRROR_COAT), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(15, MOVE_DESTINY_BOND), + LEVEL_UP_END +}; + +const u16 gDuskullLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 5, MOVE_DISABLE), + LEVEL_UP_MOVE(12, MOVE_FORESIGHT), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_CURSE), + LEVEL_UP_MOVE(38, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(49, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gDusclopsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_BIND), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_DISABLE), + LEVEL_UP_MOVE( 5, MOVE_DISABLE), + LEVEL_UP_MOVE(12, MOVE_FORESIGHT), + LEVEL_UP_MOVE(16, MOVE_ASTONISH), + LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(27, MOVE_PURSUIT), + LEVEL_UP_MOVE(34, MOVE_CURSE), + LEVEL_UP_MOVE(37, MOVE_SHADOW_PUNCH), + LEVEL_UP_MOVE(41, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(51, MOVE_MEAN_LOOK), + LEVEL_UP_MOVE(58, MOVE_FUTURE_SIGHT), + LEVEL_UP_END +}; + +const u16 gRoseliaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ABSORB), + LEVEL_UP_MOVE( 5, MOVE_GROWTH), + LEVEL_UP_MOVE( 9, MOVE_POISON_STING), + LEVEL_UP_MOVE(13, MOVE_STUN_SPORE), + LEVEL_UP_MOVE(17, MOVE_MEGA_DRAIN), + LEVEL_UP_MOVE(21, MOVE_LEECH_SEED), + LEVEL_UP_MOVE(25, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(29, MOVE_GRASS_WHISTLE), + LEVEL_UP_MOVE(33, MOVE_GIGA_DRAIN), + LEVEL_UP_MOVE(37, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(41, MOVE_INGRAIN), + LEVEL_UP_MOVE(45, MOVE_TOXIC), + LEVEL_UP_MOVE(49, MOVE_PETAL_DANCE), + LEVEL_UP_MOVE(53, MOVE_AROMATHERAPY), + LEVEL_UP_MOVE(57, MOVE_SYNTHESIS), + LEVEL_UP_END +}; + +const u16 gSlakothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + LEVEL_UP_END +}; + +const u16 gVigorothLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_UPROAR), + LEVEL_UP_MOVE(19, MOVE_FURY_SWIPES), + LEVEL_UP_MOVE(25, MOVE_ENDURE), + LEVEL_UP_MOVE(31, MOVE_SLASH), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FOCUS_PUNCH), + LEVEL_UP_MOVE(49, MOVE_REVERSAL), + LEVEL_UP_END +}; + +const u16 gSlakingLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_ENCORE), + LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), + LEVEL_UP_MOVE( 7, MOVE_ENCORE), + LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), + LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(25, MOVE_AMNESIA), + LEVEL_UP_MOVE(31, MOVE_COVET), + LEVEL_UP_MOVE(36, MOVE_SWAGGER), + LEVEL_UP_MOVE(37, MOVE_COUNTER), + LEVEL_UP_MOVE(43, MOVE_FLAIL), + LEVEL_UP_END +}; + +const u16 gGulpinLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 6, MOVE_YAWN), + LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), + LEVEL_UP_MOVE(14, MOVE_SLUDGE), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(23, MOVE_ENCORE), + LEVEL_UP_MOVE(28, MOVE_TOXIC), + LEVEL_UP_MOVE(34, MOVE_STOCKPILE), + LEVEL_UP_MOVE(34, MOVE_SPIT_UP), + LEVEL_UP_MOVE(34, MOVE_SWALLOW), + LEVEL_UP_MOVE(39, MOVE_SLUDGE_BOMB), + LEVEL_UP_END +}; + +const u16 gSwalotLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_YAWN), + LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), + LEVEL_UP_MOVE( 1, MOVE_SLUDGE), + LEVEL_UP_MOVE( 6, MOVE_YAWN), + LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), + LEVEL_UP_MOVE(14, MOVE_SLUDGE), + LEVEL_UP_MOVE(17, MOVE_AMNESIA), + LEVEL_UP_MOVE(23, MOVE_ENCORE), + LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(31, MOVE_TOXIC), + LEVEL_UP_MOVE(40, MOVE_STOCKPILE), + LEVEL_UP_MOVE(40, MOVE_SPIT_UP), + LEVEL_UP_MOVE(40, MOVE_SWALLOW), + LEVEL_UP_MOVE(48, MOVE_SLUDGE_BOMB), + LEVEL_UP_END +}; + +const u16 gTropiusLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_GUST), + LEVEL_UP_MOVE( 7, MOVE_GROWTH), + LEVEL_UP_MOVE(11, MOVE_RAZOR_LEAF), + LEVEL_UP_MOVE(17, MOVE_STOMP), + LEVEL_UP_MOVE(21, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), + LEVEL_UP_MOVE(31, MOVE_MAGICAL_LEAF), + LEVEL_UP_MOVE(37, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(41, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(47, MOVE_SYNTHESIS), + LEVEL_UP_END +}; + +const u16 gWhismurLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(21, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(25, MOVE_STOMP), + LEVEL_UP_MOVE(31, MOVE_SCREECH), + LEVEL_UP_MOVE(35, MOVE_ROAR), + LEVEL_UP_MOVE(41, MOVE_REST), + LEVEL_UP_MOVE(41, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(45, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +const u16 gLoudredLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_STOMP), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(43, MOVE_ROAR), + LEVEL_UP_MOVE(51, MOVE_REST), + LEVEL_UP_MOVE(51, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(57, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +const u16 gExploudLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_POUND), + LEVEL_UP_MOVE( 1, MOVE_UPROAR), + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_HOWL), + LEVEL_UP_MOVE( 5, MOVE_UPROAR), + LEVEL_UP_MOVE(11, MOVE_ASTONISH), + LEVEL_UP_MOVE(15, MOVE_HOWL), + LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), + LEVEL_UP_MOVE(29, MOVE_STOMP), + LEVEL_UP_MOVE(37, MOVE_SCREECH), + LEVEL_UP_MOVE(40, MOVE_HYPER_BEAM), + LEVEL_UP_MOVE(45, MOVE_ROAR), + LEVEL_UP_MOVE(55, MOVE_REST), + LEVEL_UP_MOVE(55, MOVE_SLEEP_TALK), + LEVEL_UP_MOVE(63, MOVE_HYPER_VOICE), + LEVEL_UP_END +}; + +const u16 gClamperlLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_CLAMP), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), + LEVEL_UP_END +}; + +const u16 gHuntailLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 8, MOVE_BITE), + LEVEL_UP_MOVE(15, MOVE_SCREECH), + LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(36, MOVE_CRUNCH), + LEVEL_UP_MOVE(43, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gGorebyssLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), + LEVEL_UP_MOVE( 8, MOVE_CONFUSION), + LEVEL_UP_MOVE(15, MOVE_AGILITY), + LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), + LEVEL_UP_MOVE(29, MOVE_AMNESIA), + LEVEL_UP_MOVE(36, MOVE_PSYCHIC), + LEVEL_UP_MOVE(43, MOVE_BATON_PASS), + LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gAbsolLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 5, MOVE_LEER), + LEVEL_UP_MOVE( 9, MOVE_TAUNT), + LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(17, MOVE_RAZOR_WIND), + LEVEL_UP_MOVE(21, MOVE_BITE), + LEVEL_UP_MOVE(26, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(31, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(36, MOVE_SLASH), + LEVEL_UP_MOVE(41, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(46, MOVE_PERISH_SONG), + LEVEL_UP_END +}; + +const u16 gShuppetLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(44, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(49, MOVE_SNATCH), + LEVEL_UP_MOVE(56, MOVE_GRUDGE), + LEVEL_UP_END +}; + +const u16 gBanetteLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE( 1, MOVE_SCREECH), + LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE( 1, MOVE_CURSE), + LEVEL_UP_MOVE( 8, MOVE_SCREECH), + LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(20, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SPITE), + LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP), + LEVEL_UP_MOVE(39, MOVE_FAINT_ATTACK), + LEVEL_UP_MOVE(48, MOVE_SHADOW_BALL), + LEVEL_UP_MOVE(55, MOVE_SNATCH), + LEVEL_UP_MOVE(64, MOVE_GRUDGE), + LEVEL_UP_END +}; + +const u16 gSeviperLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 7, MOVE_LICK), + LEVEL_UP_MOVE(10, MOVE_BITE), + LEVEL_UP_MOVE(16, MOVE_POISON_TAIL), + LEVEL_UP_MOVE(19, MOVE_SCREECH), + LEVEL_UP_MOVE(25, MOVE_GLARE), + LEVEL_UP_MOVE(28, MOVE_CRUNCH), + LEVEL_UP_MOVE(34, MOVE_POISON_FANG), + LEVEL_UP_MOVE(37, MOVE_SWAGGER), + LEVEL_UP_MOVE(43, MOVE_HAZE), + LEVEL_UP_END +}; + +const u16 gZangooseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 4, MOVE_LEER), + LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(10, MOVE_SWORDS_DANCE), + LEVEL_UP_MOVE(13, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(19, MOVE_SLASH), + LEVEL_UP_MOVE(25, MOVE_PURSUIT), + LEVEL_UP_MOVE(31, MOVE_CRUSH_CLAW), + LEVEL_UP_MOVE(37, MOVE_TAUNT), + LEVEL_UP_MOVE(46, MOVE_DETECT), + LEVEL_UP_MOVE(55, MOVE_FALSE_SWIPE), + LEVEL_UP_END +}; + +const u16 gRelicanthLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 8, MOVE_WATER_GUN), + LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), + LEVEL_UP_MOVE(22, MOVE_YAWN), + LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(36, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(64, MOVE_HYDRO_PUMP), + LEVEL_UP_END +}; + +const u16 gAronLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(34, MOVE_PROTECT), + LEVEL_UP_MOVE(39, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(44, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gLaironLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(45, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gAggronLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 4, MOVE_HARDEN), + LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), + LEVEL_UP_MOVE(10, MOVE_HEADBUTT), + LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(21, MOVE_ROAR), + LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), + LEVEL_UP_MOVE(37, MOVE_PROTECT), + LEVEL_UP_MOVE(50, MOVE_METAL_SOUND), + LEVEL_UP_MOVE(63, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gCastformLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE(10, MOVE_WATER_GUN), + LEVEL_UP_MOVE(10, MOVE_EMBER), + LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), + LEVEL_UP_MOVE(20, MOVE_RAIN_DANCE), + LEVEL_UP_MOVE(20, MOVE_SUNNY_DAY), + LEVEL_UP_MOVE(20, MOVE_HAIL), + LEVEL_UP_MOVE(30, MOVE_WEATHER_BALL), + LEVEL_UP_END +}; + +const u16 gVolbeatLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE( 9, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(21, MOVE_TAIL_GLOW), + LEVEL_UP_MOVE(25, MOVE_SIGNAL_BEAM), + LEVEL_UP_MOVE(29, MOVE_PROTECT), + LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gIllumiseLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TACKLE), + LEVEL_UP_MOVE( 5, MOVE_SWEET_SCENT), + LEVEL_UP_MOVE( 9, MOVE_CHARM), + LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), + LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), + LEVEL_UP_MOVE(21, MOVE_WISH), + LEVEL_UP_MOVE(25, MOVE_ENCORE), + LEVEL_UP_MOVE(29, MOVE_FLATTER), + LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(37, MOVE_COVET), + LEVEL_UP_END +}; + +const u16 gLileepLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), + LEVEL_UP_MOVE(15, MOVE_ACID), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(50, MOVE_STOCKPILE), + LEVEL_UP_MOVE(50, MOVE_SPIT_UP), + LEVEL_UP_MOVE(50, MOVE_SWALLOW), + LEVEL_UP_END +}; + +const u16 gCradilyLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_ASTONISH), + LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), + LEVEL_UP_MOVE( 1, MOVE_ACID), + LEVEL_UP_MOVE( 1, MOVE_INGRAIN), + LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), + LEVEL_UP_MOVE(15, MOVE_ACID), + LEVEL_UP_MOVE(22, MOVE_INGRAIN), + LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), + LEVEL_UP_MOVE(36, MOVE_AMNESIA), + LEVEL_UP_MOVE(48, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(60, MOVE_STOCKPILE), + LEVEL_UP_MOVE(60, MOVE_SPIT_UP), + LEVEL_UP_MOVE(60, MOVE_SWALLOW), + LEVEL_UP_END +}; + +const u16 gAnorithLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(43, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(49, MOVE_SLASH), + LEVEL_UP_MOVE(55, MOVE_ROCK_BLAST), + LEVEL_UP_END +}; + +const u16 gArmaldoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_SCRATCH), + LEVEL_UP_MOVE( 1, MOVE_HARDEN), + LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), + LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), + LEVEL_UP_MOVE( 7, MOVE_HARDEN), + LEVEL_UP_MOVE(13, MOVE_MUD_SPORT), + LEVEL_UP_MOVE(19, MOVE_WATER_GUN), + LEVEL_UP_MOVE(25, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(31, MOVE_PROTECT), + LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), + LEVEL_UP_MOVE(55, MOVE_SLASH), + LEVEL_UP_MOVE(64, MOVE_ROCK_BLAST), + LEVEL_UP_END +}; + +const u16 gRaltsLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(31, MOVE_IMPRISON), + LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(41, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(46, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +const u16 gKirliaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_IMPRISON), + LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(47, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(54, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +const u16 gGardevoirLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_GROWL), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE( 1, MOVE_TELEPORT), + LEVEL_UP_MOVE( 6, MOVE_CONFUSION), + LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), + LEVEL_UP_MOVE(16, MOVE_TELEPORT), + LEVEL_UP_MOVE(21, MOVE_CALM_MIND), + LEVEL_UP_MOVE(26, MOVE_PSYCHIC), + LEVEL_UP_MOVE(33, MOVE_IMPRISON), + LEVEL_UP_MOVE(42, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(51, MOVE_HYPNOSIS), + LEVEL_UP_MOVE(60, MOVE_DREAM_EATER), + LEVEL_UP_END +}; + +const u16 gBagonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(33, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(37, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(41, MOVE_CRUNCH), + LEVEL_UP_MOVE(49, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gShelgonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(30, MOVE_PROTECT), + LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(47, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(56, MOVE_CRUNCH), + LEVEL_UP_MOVE(69, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(78, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gSalamenceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_RAGE), + LEVEL_UP_MOVE( 1, MOVE_BITE), + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), + LEVEL_UP_MOVE( 5, MOVE_BITE), + LEVEL_UP_MOVE( 9, MOVE_LEER), + LEVEL_UP_MOVE(17, MOVE_HEADBUTT), + LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), + LEVEL_UP_MOVE(25, MOVE_EMBER), + LEVEL_UP_MOVE(30, MOVE_PROTECT), + LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(47, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(50, MOVE_FLY), + LEVEL_UP_MOVE(61, MOVE_CRUNCH), + LEVEL_UP_MOVE(79, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(93, MOVE_DOUBLE_EDGE), + LEVEL_UP_END +}; + +const u16 gBeldumLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_END +}; + +const u16 gMetangLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(26, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(32, MOVE_PURSUIT), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(50, MOVE_METEOR_MASH), + LEVEL_UP_MOVE(56, MOVE_AGILITY), + LEVEL_UP_MOVE(62, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gMetagrossLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), + LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(20, MOVE_CONFUSION), + LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(26, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(32, MOVE_PURSUIT), + LEVEL_UP_MOVE(38, MOVE_PSYCHIC), + LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(55, MOVE_METEOR_MASH), + LEVEL_UP_MOVE(66, MOVE_AGILITY), + LEVEL_UP_MOVE(77, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gRegirockLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_ROCK_THROW), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gRegiceLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_ICY_WIND), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_AMNESIA), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gRegisteelLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), + LEVEL_UP_MOVE( 9, MOVE_METAL_CLAW), + LEVEL_UP_MOVE(17, MOVE_CURSE), + LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), + LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), + LEVEL_UP_MOVE(41, MOVE_AMNESIA), + LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), + LEVEL_UP_MOVE(57, MOVE_LOCK_ON), + LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gKyogreLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WATER_PULSE), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), + LEVEL_UP_MOVE(30, MOVE_CALM_MIND), + LEVEL_UP_MOVE(35, MOVE_ICE_BEAM), + LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_SHEER_COLD), + LEVEL_UP_MOVE(65, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(75, MOVE_WATER_SPOUT), + LEVEL_UP_END +}; + +const u16 gGroudonLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_MUD_SHOT), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_SLASH), + LEVEL_UP_MOVE(30, MOVE_BULK_UP), + LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), + LEVEL_UP_MOVE(45, MOVE_FIRE_BLAST), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_FISSURE), + LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM), + LEVEL_UP_MOVE(75, MOVE_ERUPTION), + LEVEL_UP_END +}; + +const u16 gRayquazaLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_TWISTER), + LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), + LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), + LEVEL_UP_MOVE(20, MOVE_DRAGON_CLAW), + LEVEL_UP_MOVE(30, MOVE_DRAGON_DANCE), + LEVEL_UP_MOVE(35, MOVE_CRUNCH), + LEVEL_UP_MOVE(45, MOVE_FLY), + LEVEL_UP_MOVE(50, MOVE_REST), + LEVEL_UP_MOVE(60, MOVE_EXTREME_SPEED), + LEVEL_UP_MOVE(65, MOVE_OUTRAGE), + LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gLatiasLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 5, MOVE_WISH), + LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(25, MOVE_WATER_SPORT), + LEVEL_UP_MOVE(30, MOVE_REFRESH), + LEVEL_UP_MOVE(35, MOVE_MIST_BALL), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(45, MOVE_RECOVER), + LEVEL_UP_MOVE(50, MOVE_CHARM), + LEVEL_UP_END +}; + +const u16 gLatiosLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), + LEVEL_UP_MOVE( 5, MOVE_MEMENTO), + LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), + LEVEL_UP_MOVE(25, MOVE_PROTECT), + LEVEL_UP_MOVE(30, MOVE_REFRESH), + LEVEL_UP_MOVE(35, MOVE_LUSTER_PURGE), + LEVEL_UP_MOVE(40, MOVE_PSYCHIC), + LEVEL_UP_MOVE(45, MOVE_RECOVER), + LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), + LEVEL_UP_END +}; + +const u16 gJirachiLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WISH), + LEVEL_UP_MOVE( 1, MOVE_CONFUSION), + LEVEL_UP_MOVE( 5, MOVE_REST), + LEVEL_UP_MOVE(10, MOVE_SWIFT), + LEVEL_UP_MOVE(15, MOVE_HELPING_HAND), + LEVEL_UP_MOVE(20, MOVE_PSYCHIC), + LEVEL_UP_MOVE(25, MOVE_REFRESH), + LEVEL_UP_MOVE(30, MOVE_REST), + LEVEL_UP_MOVE(35, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT), + LEVEL_UP_MOVE(45, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(50, MOVE_DOOM_DESIRE), + LEVEL_UP_END +}; + +const u16 gDeoxysLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_LEER), + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 5, MOVE_NIGHT_SHADE), + LEVEL_UP_MOVE(10, MOVE_TELEPORT), + LEVEL_UP_MOVE(15, MOVE_KNOCK_OFF), + LEVEL_UP_MOVE(20, MOVE_PURSUIT), + LEVEL_UP_MOVE(25, MOVE_PSYCHIC), + LEVEL_UP_MOVE(30, MOVE_SNATCH), + LEVEL_UP_MOVE(35, MOVE_COSMIC_POWER), + LEVEL_UP_MOVE(40, MOVE_RECOVER), + LEVEL_UP_MOVE(45, MOVE_PSYCHO_BOOST), + LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM), + LEVEL_UP_END +}; + +const u16 gChimechoLevelUpLearnset[] = { + LEVEL_UP_MOVE( 1, MOVE_WRAP), + LEVEL_UP_MOVE( 6, MOVE_GROWL), + LEVEL_UP_MOVE( 9, MOVE_ASTONISH), + LEVEL_UP_MOVE(14, MOVE_CONFUSION), + LEVEL_UP_MOVE(17, MOVE_TAKE_DOWN), + LEVEL_UP_MOVE(22, MOVE_UPROAR), + LEVEL_UP_MOVE(25, MOVE_YAWN), + LEVEL_UP_MOVE(30, MOVE_PSYWAVE), + LEVEL_UP_MOVE(33, MOVE_DOUBLE_EDGE), + LEVEL_UP_MOVE(38, MOVE_HEAL_BELL), + LEVEL_UP_MOVE(41, MOVE_SAFEGUARD), + LEVEL_UP_MOVE(46, MOVE_PSYCHIC), + LEVEL_UP_END +}; + +#endif //POKERUBY_LEVEL_UP_LEARNSETS_H diff --git a/include/data/pokemon/nature_stats.h b/include/data/pokemon/nature_stats.h new file mode 100644 index 000000000..27bd98f9d --- /dev/null +++ b/include/data/pokemon/nature_stats.h @@ -0,0 +1,37 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_NATURE_STATS_H +#define POKERUBY_NATURE_STATS_H + +const s8 gNatureStatTable[][5] = { + // Atk Def Spd Sp.Atk Sp.Def + { 0, 0, 0, 0, 0}, // Hardy + { 1, -1, 0, 0, 0}, // Lonely + { 1, 0, -1, 0, 0}, // Brave + { 1, 0, 0, -1, 0}, // Adamant + { 1, 0, 0, 0, -1}, // Naughty + { -1, 1, 0, 0, 0}, // Bold + { 0, 0, 0, 0, 0}, // Docile + { 0, 1, -1, 0, 0}, // Relaxed + { 0, 1, 0, -1, 0}, // Impish + { 0, 1, 0, 0, -1}, // Lax + { -1, 0, 1, 0, 0}, // Timid + { 0, -1, 1, 0, 0}, // Hasty + { 0, 0, 0, 0, 0}, // Serious + { 0, 0, 1, -1, 0}, // Jolly + { 0, 0, 1, 0, -1}, // Naive + { -1, 0, 0, 1, 0}, // Modest + { 0, -1, 0, 1, 0}, // Mild + { 0, 0, -1, 1, 0}, // Quiet + { 0, 0, 0, 0, 0}, // Bashful + { 0, 0, 0, 1, -1}, // Rash + { -1, 0, 0, 0, 1}, // Calm + { 0, -1, 0, 0, 1}, // Gentle + { 0, 0, -1, 0, 1}, // Sassy + { 0, 0, 0, -1, 1}, // Careful + { 0, 0, 0, 0, 0} // Quirky +}; + +#endif //POKERUBY_NATURE_STATS_H diff --git a/include/data/pokemon/spinda_spots.h b/include/data/pokemon/spinda_spots.h new file mode 100644 index 000000000..2c8ec036a --- /dev/null +++ b/include/data/pokemon/spinda_spots.h @@ -0,0 +1,86 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_SPINDA_SPOTS_H +#define POKERUBY_SPINDA_SPOTS_H + +const struct SpindaSpot gSpindaSpotGraphics[] = { + {16, 14, { + 0x0070, // 0000000001110000 + 0x01fc, // 0000000111111100 + 0x03fe, // 0000001111111110 + 0x07fe, // 0000011111111110 + 0x07ff, // 0000011111111111 + 0x0fff, // 0000111111111111 + 0x0fff, // 0000111111111111 + 0x0fff, // 0000111111111111 + 0x07fe, // 0000011111111110 + 0x07fe, // 0000011111111110 + 0x03fc, // 0000001111111100 + 0x01e0, // 0000000111100000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000 // 0000000000000000 + }}, + + {40, 15, { + 0x01e0, // 0000000111100000 + 0x03f8, // 0000001111111000 + 0x07fc, // 0000011111111100 + 0x0ffe, // 0000111111111110 + 0x0ffe, // 0000111111111110 + 0x1fff, // 0001111111111111 + 0x1fff, // 0001111111111111 + 0x1fff, // 0001111111111111 + 0x0ffe, // 0000111111111110 + 0x0ffe, // 0000111111111110 + 0x07fc, // 0000011111111100 + 0x07f8, // 0000011111111000 + 0x00e0, // 0000000011100000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000 // 0000000000000000 + }}, + + {22, 32, { + 0x001c, // 0000000000011100 + 0x003e, // 0000000000111110 + 0x007f, // 0000000001111111 + 0x007f, // 0000000001111111 + 0x007f, // 0000000001111111 + 0x007f, // 0000000001111111 + 0x007f, // 0000000001111111 + 0x003e, // 0000000000111110 + 0x001c, // 0000000000011100 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000 // 0000000000000000 + }}, + + {34, 33, { + 0x003c, // 0000000000111100 + 0x007e, // 0000000001111110 + 0x00ff, // 0000000011111111 + 0x00ff, // 0000000011111111 + 0x00ff, // 0000000011111111 + 0x00ff, // 0000000011111111 + 0x00ff, // 0000000011111111 + 0x007e, // 0000000001111110 + 0x003c, // 0000000000111100 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000, // 0000000000000000 + 0x0000 // 0000000000000000 + }} +}; + +#endif //POKERUBY_SPINDA_SPOTS_H diff --git a/include/data/pokemon/tmhm_learnsets.h b/include/data/pokemon/tmhm_learnsets.h new file mode 100644 index 000000000..f8994def1 --- /dev/null +++ b/include/data/pokemon/tmhm_learnsets.h @@ -0,0 +1,427 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_TMHM_LEARNSETS_H +#define POKERUBY_TMHM_LEARNSETS_H + +// TO-DO: Rewrite this declaration to allow assignment of TM/HM learns by name. +// These are 58-bit numbers aligned to 64 bits. The least significant bit represents TM01, +// while the most significant bit represents HM08. + +const u32 gTMHMLearnsets[][2] = { + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (??????????) + {0x84350720, 0x00e41e08}, // 0b0011100100000111100000100010000100001101010000011100100000 (Bulbasaur) + {0x84350720, 0x00e41e08}, // 0b0011100100000111100000100010000100001101010000011100100000 (Ivysaur) + {0x86354730, 0x00e41e08}, // 0b0011100100000111100000100010000110001101010100011100110000 (Venusaur) + {0xcc510623, 0x00a61ea4}, // 0b0010100110000111101010010011001100010100010000011000100011 (Charmander) + {0xcc510623, 0x00a61ea4}, // 0b0010100110000111101010010011001100010100010000011000100011 (Charmeleon) + {0xce514633, 0x00ae5ea4}, // 0b0010101110010111101010010011001110010100010100011000110011 (Charizard) + {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Squirtle) + {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Wartortle) + {0xce537275, 0x03b01e00}, // 0b1110110000000111100000000011001110010100110111001001110101 (Blastoise) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Caterpie) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Metapod) + {0xb43f4620, 0x0040be80}, // 0b0001000000101111101000000010110100001111110100011000100000 (Butterfree) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Weedle) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Kakuna) + {0xc4354620, 0x00843e88}, // 0b0010000100001111101000100011000100001101010100011000100000 (Beedrill) + {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Pidgey) + {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Pidgeotto) + {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Pidgeot) + {0xadd33e20, 0x00843e02}, // 0b0010000100001111100000001010101101110100110011111000100000 (Rattata) + {0xadd37e30, 0x00a43e02}, // 0b0010100100001111100000001010101101110100110111111000110000 (Raticate) + {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Spearow) + {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Fearow) + {0x8e570620, 0x00213f08}, // 0b0000100001001111110000100010001110010101110000011000100000 (Ekans) + {0x8e574620, 0x00213f08}, // 0b0000100001001111110000100010001110010101110100011000100000 (Arbok) + {0xcdd38221, 0x00e01e02}, // 0b0011100000000111100000001011001101110100111000001000100001 (Pikachu) + {0xcdd3c221, 0x00e03e02}, // 0b0011100000001111100000001011001101110100111100001000100001 (Raichu) + {0xce510621, 0x00a43ed0}, // 0b0010100100001111101101000011001110010100010000011000100001 (Sandshrew) + {0xce514621, 0x00a43ed0}, // 0b0010100100001111101101000011001110010100010100011000100001 (Sandslash) + {0x8dd33624, 0x00a43e8a}, // 0b0010100100001111101000101010001101110100110011011000100100 (Nidoran♀) + {0x8dd33624, 0x00a43e8a}, // 0b0010100100001111101000101010001101110100110011011000100100 (Nidorina) + {0xefd37e35, 0x00b43ffe}, // 0b0010110100001111111111111011101111110100110111111000110101 (Nidoqueen) + {0x8dd33624, 0x00a43e0a}, // 0b0010100100001111100000101010001101110100110011011000100100 (Nidoran♂) + {0x8dd33624, 0x00a43e0a}, // 0b0010100100001111100000101010001101110100110011011000100100 (Nidorino) + {0xefd37e35, 0x00b43f7e}, // 0b0010110100001111110111111011101111110100110111111000110101 (Nidoking) + {0xfdfbb62d, 0x00611e27}, // 0b0001100001000111100010011111111101111110111011011000101101 (Clefairy) + {0xfdfbf62d, 0x00611e27}, // 0b0001100001000111100010011111111101111110111111011000101101 (Clefable) + {0x8c590630, 0x00021e24}, // 0b0000000010000111100010010010001100010110010000011000110000 (Vulpix) + {0x8c594630, 0x00021e24}, // 0b0000000010000111100010010010001100010110010100011000110000 (Ninetales) + {0xfdbbb625, 0x00611e27}, // 0b0001100001000111100010011111111101101110111011011000100101 (Jigglypuff) + {0xfdbbf625, 0x00611e27}, // 0b0001100001000111100010011111111101101110111111011000100101 (Wigglytuff) + {0xa4170e20, 0x00017f88}, // 0b0000000001011111111000100010100100000101110000111000100000 (Zubat) + {0xa4174e20, 0x00017f88}, // 0b0000000001011111111000100010100100000101110100111000100000 (Golbat) + {0x84350720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010000011100100000 (Oddish) + {0x84350720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010000011100100000 (Gloom) + {0x84354720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010100011100100000 (Vileplume) + {0x8c350720, 0x00c43e88}, // 0b0011000100001111101000100010001100001101010000011100100000 (Paras) + {0x8c354720, 0x00c43e88}, // 0b0011000100001111101000100010001100001101010100011100100000 (Parasect) + {0x94350620, 0x0040be08}, // 0b0001000000101111100000100010010100001101010000011000100000 (Venonat) + {0x94354620, 0x0040be88}, // 0b0001000000101111101000100010010100001101010100011000100000 (Venomoth) + {0x8e110620, 0x00843ec8}, // 0b0010000100001111101100100010001110000100010000011000100000 (Diglett) + {0x8e114620, 0x00843ec8}, // 0b0010000100001111101100100010001110000100010100011000100000 (Dugtrio) + {0xadd30e24, 0x00453f82}, // 0b0001000101001111111000001010101101110100110000111000100100 (Meowth) + {0xadd34e34, 0x00453f82}, // 0b0001000101001111111000001010101101110100110100111000110100 (Persian) + {0xcc53326d, 0x03f01e80}, // 0b1111110000000111101000000011001100010100110011001001101101 (Psyduck) + {0xcc53726d, 0x03f01e80}, // 0b1111110000000111101000000011001100010100110111001001101101 (Golduck) + {0xcfd30ea1, 0x00a23ec0}, // 0b0010100010001111101100000011001111110100110000111010100001 (Mankey) + {0xcfd34ea1, 0x00a23ec0}, // 0b0010100010001111101100000011001111110100110100111010100001 (Primeape) + {0x8c510630, 0x00a23ea4}, // 0b0010100010001111101010010010001100010100010000011000110000 (Growlithe) + {0x8c514630, 0x00a23ea4}, // 0b0010100010001111101010010010001100010100010100011000110000 (Arcanine) + {0x9c133264, 0x03103e00}, // 0b1100010000001111100000000010011100000100110011001001100100 (Poliwag) + {0xde133265, 0x03b03e00}, // 0b1110110000001111100000000011011110000100110011001001100101 (Poliwhirl) + {0xde1372e5, 0x03b03e40}, // 0b1110110000001111100100000011011110000100110111001011100101 (Poliwrath) + {0xb45b8e29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111000111000101001 (Abra) + {0xb45b8e29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111000111000101001 (Kadabra) + {0xb45bce29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111100111000101001 (Alakazam) + {0xce1306a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110000011010100001 (Machop) + {0xce1306a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110000011010100001 (Machoke) + {0xce1346a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110100011010100001 (Machamp) + {0x84350720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010000011100100000 (Bellsprout) + {0x84350720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010000011100100000 (Weepinbell) + {0x84354720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010100011100100000 (Victreebel) + {0x84173264, 0x03143e08}, // 0b1100010100001111100000100010000100000101110011001001100100 (Tentacool) + {0x84177264, 0x03143e08}, // 0b1100010100001111100000100010000100000101110111001001100100 (Tentacruel) + {0xce110621, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010000011000100001 (Geodude) + {0xce110621, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010000011000100001 (Graveler) + {0xce114631, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010100011000110001 (Golem) + {0x84710620, 0x00221e24}, // 0b0000100010000111100010010010000100011100010000011000100000 (Ponyta) + {0x84714620, 0x00221e24}, // 0b0000100010000111100010010010000100011100010100011000100000 (Rapidash) + {0xbe5b366c, 0x02709e24}, // 0b1001110000100111100010010010111110010110110011011001101100 (Slowpoke) + {0xfe5b766d, 0x02f09e24}, // 0b1011110000100111100010010011111110010110110111011001101101 (Slowbro) + {0x85930620, 0x00400e03}, // 0b0001000000000011100000001110000101100100110000011000100000 (Magnemite) + {0x85934620, 0x00400e03}, // 0b0001000000000011100000001110000101100100110100011000100000 (Magneton) + {0x84510620, 0x000c7e80}, // 0b0000001100011111101000000010000100010100010000011000100000 (Farfetch'd) + {0x84110620, 0x00087e80}, // 0b0000001000011111101000000010000100000100010000011000100000 (Doduo) + {0x84114e20, 0x00087f80}, // 0b0000001000011111111000000010000100000100010100111000100000 (Dodrio) + {0x841b3264, 0x03103e00}, // 0b1100010000001111100000000010000100000110110011001001100100 (Seel) + {0x841b7264, 0x03103e00}, // 0b1100010000001111100000000010000100000110110111001001100100 (Dewgong) + {0x8d970e20, 0x00003f6e}, // 0b0000000000001111110110111010001101100101110000111000100000 (Grimer) + {0xcd974e21, 0x00a03f6e}, // 0b0010100000001111110110111011001101100101110100111000100001 (Muk) + {0x84133264, 0x02101e00}, // 0b1000010000000111100000000010000100000100110011001001100100 (Shellder) + {0x84137264, 0x02101f00}, // 0b1000010000000111110000000010000100000100110111001001100100 (Cloyster) + {0xb4970e20, 0x0001bf08}, // 0b0000000001101111110000100010110100100101110000111000100000 (Gastly) + {0xb4970e20, 0x0001bf08}, // 0b0000000001101111110000100010110100100101110000111000100000 (Haunter) + {0xf5974e21, 0x00a1bf08}, // 0b0010100001101111110000100011110101100101110100111000100001 (Gengar) + {0x8e510e30, 0x00a01f50}, // 0b0010100000000111110101000010001110010100010000111000110000 (Onix) + {0xf41b8e29, 0x0041bf01}, // 0b0001000001101111110000000111110100000110111000111000101001 (Drowzee) + {0xf41bce29, 0x0041bf01}, // 0b0001000001101111110000000111110100000110111100111000101001 (Hypno) + {0x8c133264, 0x02b43e40}, // 0b1010110100001111100100000010001100000100110011001001100100 (Krabby) + {0x8c137264, 0x02b43e40}, // 0b1010110100001111100100000010001100000100110111001001100100 (Kingler) + {0x85938a20, 0x00402f02}, // 0b0001000000001011110000001010000101100100111000101000100000 (Voltorb) + {0x8593ca20, 0x00402f02}, // 0b0001000000001011110000001010000101100100111100101000100000 (Electrode) + {0x94358720, 0x0060be09}, // 0b0001100000101111100000100110010100001101011000011100100000 (Exeggcute) + {0x9435c720, 0x0060be09}, // 0b0001100000101111100000100110010100001101011100011100100000 (Exeggutor) + {0xce513621, 0x00a03ef4}, // 0b0010100000001111101111010011001110010100010011011000100001 (Cubone) + {0xce517621, 0x00a03ef4}, // 0b0010100000001111101111010011001110010100010111011000100001 (Marowak) + {0xc61306a1, 0x00a03e40}, // 0b0010100000001111100100000011000110000100110000011010100001 (Hitmonlee) + {0xc61306a1, 0x00a03e40}, // 0b0010100000001111100100000011000110000100110000011010100001 (Hitmonchan) + {0xeff37625, 0x00b43e76}, // 0b0010110100001111100111011011101111111100110111011000100101 (Lickitung) + {0xa5930e20, 0x00403f2e}, // 0b0001000000001111110010111010100101100100110000111000100000 (Koffing) + {0xa5934e20, 0x00403f2e}, // 0b0001000000001111110010111010100101100100110100111000100000 (Weezing) + {0x8fd33630, 0x00a03e76}, // 0b0010100000001111100111011010001111110100110011011000110000 (Rhyhorn) + {0xcfd37631, 0x00b43e76}, // 0b0010110100001111100111011011001111110100110111011000110001 (Rhydon) + {0xf7fbf66d, 0x00e19e76}, // 0b0011100001100111100111011011110111111110111111011001101101 (Chansey) + {0x84354720, 0x00c43e08}, // 0b0011000100001111100000100010000100001101010100011100100000 (Tangela) + {0xeff37675, 0x00b43ef6}, // 0b0010110100001111101111011011101111111100110111011001110101 (Kangaskhan) + {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Horsea) + {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Seadra) + {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Goldeen) + {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Seaking) + {0x9593b264, 0x03500e01}, // 0b1101010000000011100000000110010101100100111011001001100100 (Staryu) + {0x9593f264, 0x03508e01}, // 0b1101010000100011100000000110010101100100111111001001100100 (Starmie) + {0xf5bbce29, 0x0041bf03}, // 0b0001000001101111110000001111110101101110111100111000101001 (Mr. mime) + {0x84134620, 0x00847e80}, // 0b0010000100011111101000000010000100000100110100011000100000 (Scyther) + {0xf413fa6d, 0x0040bf01}, // 0b0001000000101111110000000111110100000100111111101001101101 (Jynx) + {0xd5d3c221, 0x00e03e02}, // 0b0011100000001111100000001011010101110100111100001000100001 (Electabuzz) + {0xd4514621, 0x00a03e24}, // 0b0010100000001111100010010011010100010100010100011000100001 (Magmar) + {0xce1346a1, 0x00a43e40}, // 0b0010100100001111100100000011001110000100110100011010100001 (Pinsir) + {0x87f37624, 0x00b01e76}, // 0b0010110000000111100111011010000111111100110111011000100100 (Tauros) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Magikarp) + {0x87937a74, 0x03b01f34}, // 0b1110110000000111110011010010000111100100110111101001110100 (Gyarados) + {0x95db7274, 0x03b01e02}, // 0b1110110000000111100000001010010101110110110111001001110100 (Lapras) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Ditto) + {0xac530620, 0x00001e00}, // 0b0000000000000111100000000010101100010100110000011000100000 (Eevee) + {0xac537674, 0x03101e00}, // 0b1100010000000111100000000010101100010100110111011001110100 (Vaporeon) + {0xadd34630, 0x00401e02}, // 0b0001000000000111100000001010101101110100110100011000110000 (Jolteon) + {0xac534630, 0x00021e24}, // 0b0000000010000111100010010010101100010100110100011000110000 (Flareon) + {0xb5f37620, 0x00402e82}, // 0b0001000000001011101000001010110101111100110111011000100000 (Porygon) + {0x84133264, 0x03903e50}, // 0b1110010000001111100101000010000100000100110011001001100100 (Omanyte) + {0x84137264, 0x03903e50}, // 0b1110010000001111100101000010000100000100110111001001100100 (Omastar) + {0x8c173264, 0x01903ed0}, // 0b0110010000001111101101000010001100000101110011001001100100 (Kabuto) + {0xcc177264, 0x03943ed0}, // 0b1110010100001111101101000011001100000101110111001001100100 (Kabutops) + {0x86534e32, 0x00a87ff4}, // 0b0010101000011111111111010010000110010100110100111000110010 (Aerodactyl) + {0xf7b37625, 0x00301e76}, // 0b0000110000000111100111011011110111101100110111011000100101 (Snorlax) + {0x84137674, 0x00884e91}, // 0b0010001000010011101001000110000100000100110111011001110100 (Articuno) + {0x8593c630, 0x00c84e92}, // 0b0011001000010011101001001010000101100100111100011000110000 (Zapdos) + {0x841b4630, 0x008a4eb4}, // 0b0010001010010011101011010010000100000110110100011000110000 (Moltres) + {0x85db7664, 0x01101e26}, // 0b0100010000000111100010011010000101110110110111011001100100 (Dratini) + {0x85db7664, 0x01101e26}, // 0b0100010000000111100010011010000101110110110111011001100100 (Dragonair) + {0xc7db7677, 0x03bc5ef6}, // 0b1110111100010111101111011011000111110110110111011001110111 (Dragonite) + {0xf7fbfeed, 0x00e18ff7}, // 0b0011100001100011111111011111110111111110111111111011101101 (Mewtwo) + {0xffffffff, 0x03ffffff}, // 0b1111111111111111111111111111111111111111111111111111111111 (Mew) + {0x847d8720, 0x00441e01}, // 0b0001000100000111100000000110000100011111011000011100100000 (Chikorita) + {0x847d8720, 0x00e41e01}, // 0b0011100100000111100000000110000100011111011000011100100000 (Bayleef) + {0x867dc720, 0x00e41e01}, // 0b0011100100000111100000000110000110011111011100011100100000 (Meganium) + {0x8c110620, 0x00061ea4}, // 0b0000000110000111101010010010001100000100010000011000100000 (Cyndaquil) + {0xcc110631, 0x00a61ea4}, // 0b0010100110000111101010010011001100000100010000011000110001 (Quilava) + {0xce114631, 0x00a61ea4}, // 0b0010100110000111101010010011001110000100010100011000110001 (Typhlosion) + {0xcc533265, 0x03141e80}, // 0b1100010100000111101000000011001100010100110011001001100101 (Totodile) + {0xcc533275, 0x03b41e80}, // 0b1110110100000111101000000011001100010100110011001001110101 (Croconaw) + {0xce537277, 0x03b41e80}, // 0b1110110100000111101000000011001110010100110111001001110111 (Feraligatr) + {0xecf31625, 0x00143e06}, // 0b0000010100001111100000011011101100111100110001011000100101 (Sentret) + {0xedf37625, 0x00b43e06}, // 0b0010110100001111100000011011101101111100110111011000100101 (Furret) + {0xb4130620, 0x00487e81}, // 0b0001001000011111101000000110110100000100110000011000100000 (Hoothoot) + {0xb4134620, 0x00487e81}, // 0b0001001000011111101000000110110100000100110100011000100000 (Noctowl) + {0xcc3d8621, 0x00403e81}, // 0b0001000000001111101000000111001100001111011000011000100001 (Ledyba) + {0xcc3dc621, 0x00403e81}, // 0b0001000000001111101000000111001100001111011100011000100001 (Ledian) + {0x9c350620, 0x00403e08}, // 0b0001000000001111100000100010011100001101010000011000100000 (Spinarak) + {0x9c354620, 0x00403e08}, // 0b0001000000001111100000100010011100001101010100011000100000 (Ariados) + {0xa4174e20, 0x00097f88}, // 0b0000001001011111111000100010100100000101110100111000100000 (Crobat) + {0x85933264, 0x03501e02}, // 0b1101010000000111100000001010000101100100110011001001100100 (Chinchou) + {0x85937264, 0x03501e02}, // 0b1101010000000111100000001010000101100100110111001001100100 (Lanturn) + {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Pichu) + {0xbc7b8624, 0x00401e27}, // 0b0001000000000111100010011110111100011110111000011000100100 (Cleffa) + {0xbc3b8624, 0x00401e27}, // 0b0001000000000111100010011110111100001110111000011000100100 (Igglybuff) + {0xb43b8624, 0x00c01e27}, // 0b0011000000000111100010011110110100001110111000011000100100 (Togepi) + {0xf43bc625, 0x00c85ea7}, // 0b0011001000010111101010011111110100001110111100011000100101 (Togetic) + {0xb4378628, 0x0040fe81}, // 0b0001000000111111101000000110110100001101111000011000101000 (Natu) + {0xb437c628, 0x0048fe81}, // 0b0001001000111111101000000110110100001101111100011000101000 (Xatu) + {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Mareep) + {0xc5d38221, 0x00e01e02}, // 0b0011100000000111100000001011000101110100111000001000100001 (Flaaffy) + {0xc5d3c221, 0x00e01e02}, // 0b0011100000000111100000001011000101110100111100001000100001 (Ampharos) + {0x843d4720, 0x00441e08}, // 0b0001000100000111100000100010000100001111010100011100100000 (Bellossom) + {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Marill) + {0xcc537265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110111001001100101 (Azumarill) + {0xce110e29, 0x00a03e50}, // 0b0010100000001111100101000011001110000100010000111000101001 (Sudowoodo) + {0xde137265, 0x03b03e00}, // 0b1110110000001111100000000011011110000100110111001001100101 (Politoed) + {0x84350720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010000011100100000 (Hoppip) + {0x84350720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010000011100100000 (Skiploom) + {0x84354720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010100011100100000 (Jumpluff) + {0xedf30e25, 0x00a53e82}, // 0b0010100101001111101000001011101101111100110000111000100101 (Aipom) + {0x843d8720, 0x00441e08}, // 0b0001000100000111100000100010000100001111011000011100100000 (Sunkern) + {0x843dc720, 0x00441e08}, // 0b0001000100000111100000100010000100001111011100011100100000 (Sunflora) + {0xb4350620, 0x00407e80}, // 0b0001000000011111101000000010110100001101010000011000100000 (Yanma) + {0x8e533264, 0x03d01e18}, // 0b1111010000000111100001100010001110010100110011001001100100 (Wooper) + {0xce537265, 0x03f01e58}, // 0b1111110000000111100101100011001110010100110111001001100101 (Quagsire) + {0xbc53c628, 0x00449e01}, // 0b0001000100100111100000000110111100010100111100011000101000 (Espeon) + {0xbc534e20, 0x00451f00}, // 0b0001000101000111110000000010111100010100110100111000100000 (Umbreon) + {0xa4130e28, 0x00097f80}, // 0b0000001001011111111000000010100100000100110000111000101000 (Murkrow) + {0xfe5b766d, 0x02f09e24}, // 0b1011110000100111100010010011111110010110110111011001101101 (Slowking) + {0xb5930e28, 0x0041bf82}, // 0b0001000001101111111000001010110101100100110000111000101000 (Misdreavus) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Unown) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wobbuffet) + {0xb7d38628, 0x00e0be03}, // 0b0011100000101111100000001110110111110100111000011000101000 (Girafarig) + {0x8e358620, 0x00a01e11}, // 0b0010100000000111100001000110001110001101011000011000100000 (Pineco) + {0x8e35c620, 0x00a01e11}, // 0b0010100000000111100001000110001110001101011100011000100000 (Forretress) + {0xaff3362c, 0x00a03e66}, // 0b0010100000001111100110011010101111111100110011011000101100 (Dunsparce) + {0x8e530620, 0x00a47ed8}, // 0b0010100100011111101101100010001110010100110000011000100000 (Gligar) + {0x8e514e30, 0x00a41f50}, // 0b0010100100000111110101000010001110010100010100111000110000 (Steelix) + {0xefb30eb5, 0x00a23f2e}, // 0b0010100010001111110010111011101111101100110000111010110101 (Snubbull) + {0xeff34eb5, 0x00a23f6e}, // 0b0010100010001111110110111011101111111100110100111010110101 (Granbull) + {0xa4133264, 0x03101e0a}, // 0b1100010000000111100000101010100100000100110011001001100100 (Qwilfish) + {0x84134620, 0x00a47e90}, // 0b0010100100011111101001000010000100000100110100011000100000 (Scizor) + {0x8e190620, 0x00e01e58}, // 0b0011100000000111100101100010001110000110010000011000100000 (Shuckle) + {0xce1346a1, 0x00a43e40}, // 0b0010100100001111100100000011001110000100110100011010100001 (Heracross) + {0xec533e69, 0x00b53f80}, // 0b0010110101001111111000000011101100010100110011111001101001 (Sneasel) + {0xce130eb1, 0x00a43f80}, // 0b0010100100001111111000000011001110000100110000111010110001 (Teddiursa) + {0xce134eb1, 0x00a43fc0}, // 0b0010100100001111111100000011001110000100110100111010110001 (Ursaring) + {0x84118620, 0x00821e25}, // 0b0010000010000111100010010110000100000100011000011000100000 (Slugma) + {0x8611c620, 0x00a21e75}, // 0b0010100010000111100111010110000110000100011100011000100000 (Magcargo) + {0x8e13b270, 0x00a01e51}, // 0b0010100000000111100101000110001110000100111011001001110000 (Swinub) + {0x8e13f270, 0x00a01e51}, // 0b0010100000000111100101000110001110000100111111001001110000 (Piloswine) + {0xbe1bb66c, 0x00b01e51}, // 0b0010110000000111100101000110111110000110111011011001101100 (Corsola) + {0x94137624, 0x03103e24}, // 0b1100010000001111100010010010010100000100110111011000100100 (Remoraid) + {0x94137724, 0x03103e2c}, // 0b1100010000001111100010110010010100000100110111011100100100 (Octillery) + {0x84133265, 0x00083e80}, // 0b0000001000001111101000000010000100000100110011001001100101 (Delibird) + {0x86133264, 0x03101e80}, // 0b1100010000000111101000000010000110000100110011001001100100 (Mantine) + {0x84110e30, 0x008c7f90}, // 0b0010001100011111111001000010000100000100010000111000110000 (Skarmory) + {0xa4710e30, 0x00833f2c}, // 0b0010000011001111110010110010100100011100010000111000110000 (Houndour) + {0xa4714e30, 0x00a33f2c}, // 0b0010100011001111110010110010100100011100010100111000110000 (Houndoom) + {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Kingdra) + {0x86510630, 0x00a01e50}, // 0b0010100000000111100101000010000110010100010000011000110000 (Phanpy) + {0x86514630, 0x00a01e50}, // 0b0010100000000111100101000010000110010100010100011000110000 (Donphan) + {0xb5f37620, 0x00402e82}, // 0b0001000000001011101000001010110101111100110111011000100000 (Porygon2) + {0xb7f38638, 0x0040be03}, // 0b0001000000101111100000001110110111111100111000011000111000 (Stantler) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Smeargle) + {0xc61306a0, 0x00a03e00}, // 0b0010100000001111100000000011000110000100110000011010100000 (Tyrogue) + {0xce1306a0, 0x00a03e10}, // 0b0010100000001111100001000011001110000100110000011010100000 (Hitmontop) + {0xb413b26c, 0x0040be01}, // 0b0001000000101111100000000110110100000100111011001001101100 (Smoochum) + {0xd5938221, 0x00c03e02}, // 0b0011000000001111100000001011010101100100111000001000100001 (Elekid) + {0xd4510621, 0x00803e24}, // 0b0010000000001111100010010011010100010100010000011000100001 (Magby) + {0xe7f37625, 0x00b01e52}, // 0b0010110000000111100101001011100111111100110111011000100101 (Miltank) + {0xf7fbf66d, 0x00e19e76}, // 0b0011100001100111100111011011110111111110111111011001101101 (Blissey) + {0x8dd34638, 0x00e40e13}, // 0b0011100100000011100001001110001101110100110100011000111000 (Raikou) + {0x8c734638, 0x00e40e35}, // 0b0011100100000011100011010110001100011100110100011000111000 (Entei) + {0x8c53767c, 0x03940e11}, // 0b1110010100000011100001000110001100010100110111011001111100 (Suicune) + {0xce134e20, 0x00801f10}, // 0b0010000000000111110001000011001110000100110100111000100000 (Larvitar) + {0xce134e20, 0x00801f10}, // 0b0010000000000111110001000011001110000100110100111000100000 (Pupitar) + {0xcfd37e37, 0x00b41ff6}, // 0b0010110100000111111111011011001111110100110111111000110111 (Tyranitar) + {0xb7dff67c, 0x03b8ce93}, // 0b1110111000110011101001001110110111110111111111011001111100 (Lugia) + {0xb7bfc638, 0x00ea4eb7}, // 0b0011101010010011101011011110110111101111111100011000111000 (Ho-Oh) + {0xb43fc62c, 0x00448e93}, // 0b0001000100100011101001001110110100001111111100011000101100 (Celebi) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) + {0xcc7d0721, 0x00e41ec0}, // 0b0011100100000111101100000011001100011111010000011100100001 (Treecko) + {0xcc7d0721, 0x00e41ec0}, // 0b0011100100000111101100000011001100011111010000011100100001 (Grovyle) + {0xce7d4733, 0x00e41ec0}, // 0b0011100100000111101100000011001110011111010100011100110011 (Sceptile) + {0x8c110620, 0x00a61ee4}, // 0b0010100110000111101110010010001100000100010000011000100000 (Torchic) + {0xcc1106a1, 0x00a61ee4}, // 0b0010100110000111101110010011001100000100010000011010100001 (Combusken) + {0xce1146b1, 0x00a61ee4}, // 0b0010100110000111101110010011001110000100010100011010110001 (Blaziken) + {0x8c533264, 0x03b01e40}, // 0b1110110000000111100100000010001100010100110011001001100100 (Mudkip) + {0x8e533264, 0x03b01e40}, // 0b1110110000000111100100000010001110010100110011001001100100 (Marshtomp) + {0xce537275, 0x03b01e40}, // 0b1110110000000111100100000011001110010100110111001001110101 (Swampert) + {0xac530e30, 0x00813f00}, // 0b0010000001001111110000000010101100010100110000111000110000 (Poochyena) + {0xac534e30, 0x00a13f00}, // 0b0010100001001111110000000010101100010100110100111000110000 (Mightyena) + {0xadd33624, 0x00943e02}, // 0b0010010100001111100000001010101101110100110011011000100100 (Zigzagoon) + {0xadd37634, 0x00b43e02}, // 0b0010110100001111100000001010101101110100110111011000110100 (Linoone) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wurmple) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Silcoon) + {0xb43d4620, 0x00403e80}, // 0b0001000000001111101000000010110100001111010100011000100000 (Beautifly) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Cascoon) + {0xb435c620, 0x00403e88}, // 0b0001000000001111101000100010110100001101011100011000100000 (Dustox) + {0x84373764, 0x00503e00}, // 0b0001010000001111100000000010000100001101110011011101100100 (Lotad) + {0xc4373764, 0x03f03e00}, // 0b1111110000001111100000000011000100001101110011011101100100 (Lombre) + {0xc4377765, 0x03f03e00}, // 0b1111110000001111100000000011000100001101110111011101100101 (Ludicolo) + {0xac350720, 0x00c01e00}, // 0b0011000000000111100000000010101100001101010000011100100000 (Seedot) + {0xec354720, 0x00e43f40}, // 0b0011100100001111110100000011101100001101010100011100100000 (Nuzleaf) + {0xec354720, 0x00e43fc0}, // 0b0011100100001111111100000011101100001101010100011100100000 (Shiftry) + {0xac350620, 0x00440e90}, // 0b0001000100000011101001000010101100001101010000011000100000 (Nincada) + {0xac354620, 0x00443e90}, // 0b0001000100001111101001000010101100001101010100011000100000 (Ninjask) + {0xac354620, 0x00442e90}, // 0b0001000100001011101001000010101100001101010100011000100000 (Shedinja) + {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Taillow) + {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Swellow) + {0x843d0720, 0x00411e08}, // 0b0001000001000111100000100010000100001111010000011100100000 (Shroomish) + {0xc47d47a1, 0x00e51e08}, // 0b0011100101000111100000100011000100011111010100011110100001 (Breloom) + {0xfc1b062d, 0x00e1be42}, // 0b0011100001101111100100001011111100000110110000011000101101 (Spinda) + {0x84133264, 0x00087e82}, // 0b0000001000011111101000001010000100000100110011001001100100 (Wingull) + {0x84137264, 0x00187e82}, // 0b0000011000011111101000001010000100000100110111001001100100 (Pelipper) + {0xa4373624, 0x00403e00}, // 0b0001000000001111100000000010100100001101110011011000100100 (Surskit) + {0xa4377624, 0x00403e80}, // 0b0001000000001111101000000010100100001101110111011000100100 (Masquerain) + {0x86133274, 0x03b01e40}, // 0b1110110000000111100100000010000110000100110011001001110100 (Wailmer) + {0x86137274, 0x03b01e40}, // 0b1110110000000111100100000010000110000100110111001001110100 (Wailord) + {0xadfb362c, 0x00401e02}, // 0b0001000000000111100000001010101101111110110011011000101100 (Skitty) + {0xadfb762c, 0x00e01e02}, // 0b0011100000000111100000001010101101111110110111011000101100 (Delcatty) + {0xedf33625, 0x00e5bee6}, // 0b0011100101101111101110011011101101111100110011011000100101 (Kecleon) + {0xbe339620, 0x00408e51}, // 0b0001000000100011100101000110111110001100111001011000100000 (Baltoy) + {0xbe33d620, 0x00e08e51}, // 0b0011100000100011100101000110111110001100111101011000100000 (Claydol) + {0x87910e20, 0x00a01f52}, // 0b0010100000000111110101001010000111100100010000111000100000 (Nosepass) + {0x84510620, 0x00a21e2c}, // 0b0010100010000111100010110010000100010100010000011000100000 (Torkoal) + {0xfc130e2d, 0x00c53fc2}, // 0b0011000101001111111100001011111100000100110000111000101101 (Sableye) + {0x86133264, 0x03101e50}, // 0b1100010000000111100101000010000110000100110011001001100100 (Barboach) + {0x86137264, 0x03b01e50}, // 0b1110110000000111100101000010000110000100110111001001100100 (Whiscash) + {0x841b3264, 0x03101e00}, // 0b1100010000000111100000000010000100000110110011001001100100 (Luvdisc) + {0xcc133a64, 0x01b41ec8}, // 0b0110110100000111101100100011001100000100110011101001100100 (Corphish) + {0xcc137a64, 0x03b41ec8}, // 0b1110110100000111101100100011001100000100110111101001100100 (Crawdaunt) + {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Feebas) + {0x845b7264, 0x03101e00}, // 0b1100010000000111100000000010000100010110110111001001100100 (Milotic) + {0x84133a64, 0x03103f00}, // 0b1100010000001111110000000010000100000100110011101001100100 (Carvanha) + {0x86137a74, 0x03b03f40}, // 0b1110110000001111110100000010000110000100110111101001110100 (Sharpedo) + {0x8e354620, 0x00a01e50}, // 0b0010100000000111100101000010001110001101010100011000100000 (Trapinch) + {0x8e354620, 0x00a85e50}, // 0b0010101000010111100101000010001110001101010100011000100000 (Vibrava) + {0x8e754622, 0x00a85e74}, // 0b0010101000010111100111010010001110011101010100011000100010 (Flygon) + {0xce1306a1, 0x00b01e40}, // 0b0010110000000111100100000011001110000100110000011010100001 (Makuhita) + {0xce1346a1, 0x00b01e40}, // 0b0010110000000111100100000011001110000100110100011010100001 (Hariyama) + {0x85d30230, 0x00603e02}, // 0b0001100000001111100000001010000101110100110000001000110000 (Electrike) + {0x85d34230, 0x00603e02}, // 0b0001100000001111100000001010000101110100110100001000110000 (Manectric) + {0x8e110620, 0x00a21e74}, // 0b0010100010000111100111010010001110000100010000011000100000 (Numel) + {0x8e114630, 0x00a21e74}, // 0b0010100010000111100111010010001110000100010100011000110000 (Camerupt) + {0x86533264, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110011001001100100 (Spheal) + {0x86533274, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110011001001110100 (Sealeo) + {0x86537274, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110111001001110100 (Walrein) + {0x84350721, 0x00441e10}, // 0b0001000100000111100001000010000100001101010000011100100001 (Cacnea) + {0x84354721, 0x00641e10}, // 0b0001100100000111100001000010000100001101010100011100100001 (Cacturne) + {0xa41bb264, 0x00401e00}, // 0b0001000000000111100000000010100100000110111011001001100100 (Snorunt) + {0xa61bfa64, 0x00401f00}, // 0b0001000000000111110000000010100110000110111111101001100100 (Glalie) + {0xb61bd228, 0x00408e51}, // 0b0001000000100011100101000110110110000110111101001000101000 (Lunatone) + {0xb639c628, 0x00428e75}, // 0b0001000010100011100111010110110110001110011100011000101000 (Solrock) + {0x84533264, 0x01101e00}, // 0b0100010000000111100000000010000100010100110011001001100100 (Azurill) + {0xb4538e28, 0x0041bf03}, // 0b0001000001101111110000001110110100010100111000111000101000 (Spoink) + {0xb453ce29, 0x0041bf03}, // 0b0001000001101111110000001110110100010100111100111000101001 (Grumpig) + {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Plusle) + {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Minun) + {0xc4335e21, 0x00a01f7c}, // 0b0010100000000111110111110011000100001100110101111000100001 (Mawile) + {0xf41386a9, 0x00e01e41}, // 0b0011100000000111100100000111110100000100111000011010101001 (Meditite) + {0xf413c6a9, 0x00e01e41}, // 0b0011100000000111100100000111110100000100111100011010101001 (Medicham) + {0x843b1620, 0x00087e80}, // 0b0000001000011111101000000010000100001110110001011000100000 (Swablu) + {0x867b5632, 0x00887ea4}, // 0b0010001000011111101010010010000110011110110101011000110010 (Altaria) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wynaut) + {0xb4133e28, 0x0041bf00}, // 0b0001000001101111110000000010110100000100110011111000101000 (Duskull) + {0xb6137e29, 0x00e1bf40}, // 0b0011100001101111110100000010110110000100110111111000101001 (Dusclops) + {0xa4350720, 0x00441e08}, // 0b0001000100000111100000100010100100001101010000011100100000 (Roselia) + {0xe5b336a5, 0x00a41ea6}, // 0b0010100100000111101010011011100101101100110011011010100101 (Slakoth) + {0xe7b33eb5, 0x00a41ea6}, // 0b0010100100000111101010011011100111101100110011111010110101 (Vigoroth) + {0xe7b37eb5, 0x00a41ea6}, // 0b0010100100000111101010011011100111101100110111111010110101 (Slaking) + {0xa4371724, 0x00a11e0a}, // 0b0010100001000111100000101010100100001101110001011100100100 (Gulpin) + {0xa4375724, 0x00a11e0a}, // 0b0010100001000111100000101010100100001101110101011100100100 (Swalot) + {0x863d4730, 0x00ec5e80}, // 0b0011101100010111101000000010000110001111010100011100110000 (Tropius) + {0xa4333634, 0x00001e26}, // 0b0000000000000111100010011010100100001100110011011000110100 (Whismur) + {0xe6333e34, 0x00a21f26}, // 0b0010100010000111110010011011100110001100110011111000110100 (Loudred) + {0xe6337e34, 0x00a21f26}, // 0b0010100010000111110010011011100110001100110111111000110100 (Exploud) + {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Clamperl) + {0x84137264, 0x03111e40}, // 0b1100010001000111100100000010000100000100110111001001100100 (Huntail) + {0xb41b7264, 0x03101e00}, // 0b1100010000000111100000000010110100000110110111001001100100 (Gorebyss) + {0xa5d37e6c, 0x00e53fb6}, // 0b0011100101001111111011011010100101110100110111111001101100 (Absol) + {0xb5930e28, 0x0041bf02}, // 0b0001000001101111110000001010110101100100110000111000101000 (Shuppet) + {0xb5934e28, 0x0041bf02}, // 0b0001000001101111110000001010110101100100110100111000101000 (Banette) + {0x8e570e20, 0x00a13e0c}, // 0b0010100001001111100000110010001110010101110000111000100000 (Seviper) + {0xedf73e35, 0x00a03ea6}, // 0b0010100000001111101010011011101101111101110011111000110101 (Zangoose) + {0x861b726c, 0x03901e50}, // 0b1110010000000111100101000010000110000110110111001001101100 (Relicanth) + {0x8e530634, 0x00a41ed2}, // 0b0010100100000111101101001010001110010100110000011000110100 (Aron) + {0x8e530634, 0x00a41ed2}, // 0b0010100100000111101101001010001110010100110000011000110100 (Lairon) + {0xcff37e37, 0x00b41ef6}, // 0b0010110100000111101111011011001111111100110111111000110111 (Aggron) + {0xa5b33664, 0x00403e36}, // 0b0001000000001111100011011010100101101100110011011001100100 (Castform) + {0xe5b78625, 0x00403e82}, // 0b0001000000001111101000001011100101101101111000011000100101 (Volbeat) + {0xe5b78625, 0x00403e82}, // 0b0001000000001111101000001011100101101101111000011000100101 (Illumise) + {0x84350720, 0x00001e18}, // 0b0000000000000111100001100010000100001101010000011100100000 (Lileep) + {0x86354720, 0x00a01e58}, // 0b0010100000000111100101100010000110001101010100011100100000 (Cradily) + {0xcc110624, 0x00841ed0}, // 0b0010000100000111101101000011001100000100010000011000100100 (Anorith) + {0xce514624, 0x00a41ed0}, // 0b0010100100000111101101000011001110010100010100011000100100 (Armaldo) + {0xb49b8e28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111000111000101000 (Ralts) + {0xb49b8e28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111000111000101000 (Kirlia) + {0xb49bce28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111100111000101000 (Gardevoir) + {0xc4130632, 0x00a41ee4}, // 0b0010100100000111101110010011000100000100110000011000110010 (Bagon) + {0xc4130632, 0x00a41ee4}, // 0b0010100100000111101110010011000100000100110000011000110010 (Shelgon) + {0xc6534632, 0x00ac5ee4}, // 0b0010101100010111101110010011000110010100110100011000110010 (Salamence) + {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Beldum) + {0xf613c620, 0x00e40ed9}, // 0b0011100100000011101101100111110110000100111100011000100000 (Metang) + {0xf613c620, 0x00e40ed9}, // 0b0011100100000011101101100111110110000100111100011000100000 (Metagross) + {0xcf994621, 0x00a00e52}, // 0b0010100000000011100101001011001111100110010100011000100001 (Regirock) + {0xc79b7261, 0x00a00e02}, // 0b0010100000000011100000001011000111100110110111001001100001 (Regice) + {0xc79b4621, 0x00a00ed2}, // 0b0010100000000011101101001011000111100110110100011000100001 (Registeel) + {0xc79b727c, 0x03b00e42}, // 0b1110110000000011100100001011000111100110110111001001111100 (Kyogre) + {0xcff946b2, 0x00a60ef6}, // 0b0010100110000011101111011011001111111110010100011010110010 (Groudon) + {0xc7f376b6, 0x03ba0eb6}, // 0b1110111010000011101011011011000111111100110111011010110110 (Rayquaza) + {0xb7bbd63e, 0x035c5e93}, // 0b1101011100010111101001001110110111101110111101011000111110 (Latias) + {0xb7bbd63e, 0x035c5e93}, // 0b1101011100010111101001001110110111101110111101011000111110 (Latios) + {0xb59bc62c, 0x00408e93}, // 0b0001000000100011101001001110110101100110111100011000101100 (Jirachi) + {0xf5bbde2d, 0x00e58fc3}, // 0b0011100101100011111100001111110101101110111101111000101101 (Deoxys) + {0xb41b8e28, 0x00419f03}, // 0b0001000001100111110000001110110100000110111000111000101000 (Chimecho) +}; + +#endif //POKERUBY_TMHM_LEARNSETS_H diff --git a/include/data/pokemon/trainer_class_lookups.h b/include/data/pokemon/trainer_class_lookups.h new file mode 100644 index 000000000..0aea322a0 --- /dev/null +++ b/include/data/pokemon/trainer_class_lookups.h @@ -0,0 +1,168 @@ +// +// Created by Scott Norton on 6/27/17. +// + +#ifndef POKERUBY_TRAINER_CLASS_LOOKUPS_H +#define POKERUBY_TRAINER_CLASS_LOOKUPS_H + +const u8 gTrainerClassToPicIndex[] = { + TRAINER_PIC_ARCHIE, // AQUA_LEADER + TRAINER_PIC_AQUA_GRUNT_M, // TEAM_AQUA_M + TRAINER_PIC_AQUA_GRUNT_F, // TEAM_AQUA_F + TRAINER_PIC_AROMA_LADY, // AROMA_LADY + TRAINER_PIC_RUIN_MANIAC, // RUIN_MANIAC + TRAINER_PIC_INTERVIEWER, // INTERVIEWER + TRAINER_PIC_TUBER_F, // TUBER_F + TRAINER_PIC_TUBER_M, // TUBER_M + TRAINER_PIC_COOL_TRAINER_M, // COOL_TRAINER_M + TRAINER_PIC_COOL_TRAINER_F, // COOL_TRAINER_F + TRAINER_PIC_HEX_MANIAC, // HEX_MANIAC + TRAINER_PIC_LADY, // LADY + TRAINER_PIC_BEAUTY, // BEAUTY + TRAINER_PIC_RICH_BOY, // RICH_BOY + TRAINER_PIC_POKEMANIAC, // POKEMANIAC + TRAINER_PIC_SWIMMER_M, // SWIMMER_M + TRAINER_PIC_BLACK_BELT, // BLACK_BELT + TRAINER_PIC_GUITARIST, // GUITARIST + TRAINER_PIC_KINDLER, // KINDLER + TRAINER_PIC_CAMPER, // CAMPER + TRAINER_PIC_BUG_MANIAC, // BUG_MANIAC + TRAINER_PIC_PSYCHIC_M, // PSYCHIC_M + TRAINER_PIC_PSYCHIC_F, // PSYCHIC_F + TRAINER_PIC_GENTLEMAN, // GENTLEMAN + TRAINER_PIC_SIDNEY, // ELITE_FOUR_M + TRAINER_PIC_PHOEBE, // ELITE_FOUR_F + TRAINER_PIC_ROXANNE, // LEADER_F + TRAINER_PIC_BRAWLY, // LEADER_M + TRAINER_PIC_TATE_AND_LIZA, // LEADER_MF + TRAINER_PIC_SCHOOL_KID_M, // SCHOOL_KID_M + TRAINER_PIC_SCHOOL_KID_F, // SCHOOL_KID_F + TRAINER_PIC_SR_AND_JR, // SR_AND_JR + TRAINER_PIC_POKEFAN_M, // POKEFAN_M + TRAINER_PIC_POKEFAN_F, // POKEFAN_F + TRAINER_PIC_EXPERT_M, // EXPERT_M + TRAINER_PIC_EXPERT_F, // EXPERT_F + TRAINER_PIC_YOUNGSTER, // YOUNGSTER + TRAINER_PIC_STEVEN, // CHAMPION + TRAINER_PIC_FISHERMAN, // FISHERMAN + TRAINER_PIC_CYCLING_TRIATHLETE_M, // CYCLING_TRIATHLETE_M + TRAINER_PIC_CYCLING_TRIATHLETE_F, // CYCLING_TRIATHLETE_F + TRAINER_PIC_RUNNING_TRIATHLETE_M, // RUNNING_TRIATHLETE_M + TRAINER_PIC_RUNNING_TRIATHLETE_F, // RUNNING_TRIATHLETE_F + TRAINER_PIC_SWIMMING_TRIATHLETE_M, // SWIMMING_TRIATHLETE_M + TRAINER_PIC_SWIMMING_TRIATHLETE_F, // SWIMMING_TRIATHLETE_F + TRAINER_PIC_DRAGON_TAMER, // DRAGON_TAMER + TRAINER_PIC_BIRD_KEEPER, // BIRD_KEEPER + TRAINER_PIC_NINJA_BOY, // NINJA_BOY + TRAINER_PIC_BATTLE_GIRL, // BATTLE_GIRL + TRAINER_PIC_PARASOL_LADY, // PARASOL_LADY + TRAINER_PIC_SWIMMER_F, // SWIMMER_F + TRAINER_PIC_PICNICKER, // PICNICKER + TRAINER_PIC_TWINS, // TWINS + TRAINER_PIC_SAILOR, // SAILOR + TRAINER_PIC_YOUNGSTER, // BOARDER_1 + TRAINER_PIC_YOUNGSTER, // BOARDER_2 + TRAINER_PIC_COLLECTOR, // COLLECTOR + TRAINER_PIC_WALLY, // WALLY + TRAINER_PIC_BRENDAN, // BRENDAN_1 + TRAINER_PIC_BRENDAN, // BRENDAN_2 + TRAINER_PIC_BRENDAN, // BRENDAN_3 + TRAINER_PIC_MAY, // MAY_1 + TRAINER_PIC_MAY, // MAY_2 + TRAINER_PIC_MAY, // MAY_3 + TRAINER_PIC_POKEMON_BREEDER_M, // POKEMON_BREEDER_M + TRAINER_PIC_POKEMON_BREEDER_F, // POKEMON_BREEDER_F + TRAINER_PIC_POKEMON_RANGER_M, // POKEMON_RANGER_M + TRAINER_PIC_POKEMON_RANGER_F, // POKEMON_RANGER_F + TRAINER_PIC_MAXIE, // MAGMA_LEADER + TRAINER_PIC_MAGMA_GRUNT_M, // TEAM_MAGMA_M + TRAINER_PIC_MAGMA_GRUNT_F, // TEAM_MAGMA_F + TRAINER_PIC_LASS, // LASS + TRAINER_PIC_BUG_CATCHER, // BUG_CATCHER + TRAINER_PIC_HIKER, // HIKER + TRAINER_PIC_YOUNG_COUPLE, // YOUNG_COUPLE + TRAINER_PIC_OLD_COUPLE, // OLD_COUPLE + TRAINER_PIC_SIS_AND_BRO // SIS_AND_BRO +}; + +const u8 gTrainerClassToNameIndex[] = { + TRAINER_CLASS_NAME_AQUA_LEADER, // AQUA_LEADER + TRAINER_CLASS_NAME_TEAM_AQUA, // TEAM_AQUA_M + TRAINER_CLASS_NAME_TEAM_AQUA, // TEAM_AQUA_F + TRAINER_CLASS_NAME_AROMA_LADY, // AROMA_LADY + TRAINER_CLASS_NAME_RUIN_MANIAC, // RUIN_MANIAC + TRAINER_CLASS_NAME_INTERVIEWER, // INTERVIEWER + TRAINER_CLASS_NAME_TUBER_F, // TUBER_F + TRAINER_CLASS_NAME_TUBER_M, // TUBER_M + TRAINER_CLASS_NAME_COOL_TRAINER, // COOL_TRAINER_M + TRAINER_CLASS_NAME_COOL_TRAINER, // COOL_TRAINER_F + TRAINER_CLASS_NAME_HEX_MANIAC, // HEX_MANIAC + TRAINER_CLASS_NAME_LADY, // LADY + TRAINER_CLASS_NAME_BEAUTY, // BEAUTY + TRAINER_CLASS_NAME_RICH_BOY, // RICH_BOY + TRAINER_CLASS_NAME_POKEMANIAC, // POKEMANIAC + TRAINER_CLASS_NAME_SWIMMER_M, // SWIMMER_M + TRAINER_CLASS_NAME_BLACK_BELT, // BLACK_BELT + TRAINER_CLASS_NAME_GUITARIST, // GUITARIST + TRAINER_CLASS_NAME_KINDLER, // KINDLER + TRAINER_CLASS_NAME_CAMPER, // CAMPER + TRAINER_CLASS_NAME_BUG_MANIAC, // BUG_MANIAC + TRAINER_CLASS_NAME_PSYCHIC, // PSYCHIC_M + TRAINER_CLASS_NAME_PSYCHIC, // PSYCHIC_F + TRAINER_CLASS_NAME_GENTLEMAN, // GENTLEMAN + TRAINER_CLASS_NAME_ELITE_FOUR, // ELITE_FOUR_M + TRAINER_CLASS_NAME_ELITE_FOUR, // ELITE_FOUR_F + TRAINER_CLASS_NAME_LEADER, // LEADER_F + TRAINER_CLASS_NAME_LEADER, // LEADER_M + TRAINER_CLASS_NAME_LEADER, // LEADER_MF + TRAINER_CLASS_NAME_SCHOOL_KID, // SCHOOL_KID_M + TRAINER_CLASS_NAME_SCHOOL_KID, // SCHOOL_KID_F + TRAINER_CLASS_NAME_SR_AND_JR, // SR_AND_JR + TRAINER_CLASS_NAME_POKEFAN, // POKEFAN_M + TRAINER_CLASS_NAME_POKEFAN, // POKEFAN_F + TRAINER_CLASS_NAME_EXPERT, // EXPERT_M + TRAINER_CLASS_NAME_EXPERT, // EXPERT_F + TRAINER_CLASS_NAME_YOUNGSTER, // YOUNGSTER + TRAINER_CLASS_NAME_CHAMPION, // CHAMPION + TRAINER_CLASS_NAME_FISHERMAN, // FISHERMAN + TRAINER_CLASS_NAME_TRIATHLETE, // CYCLING_TRIATHLETE_M + TRAINER_CLASS_NAME_TRIATHLETE, // CYCLING_TRIATHLETE_F + TRAINER_CLASS_NAME_TRIATHLETE, // RUNNING_TRIATHLETE_M + TRAINER_CLASS_NAME_TRIATHLETE, // RUNNING_TRIATHLETE_F + TRAINER_CLASS_NAME_TRIATHLETE, // SWIMMING_TRIATHLETE_M + TRAINER_CLASS_NAME_TRIATHLETE, // SWIMMING_TRIATHLETE_F + TRAINER_CLASS_NAME_DRAGON_TAMER, // DRAGON_TAMER + TRAINER_CLASS_NAME_BIRD_KEEPER, // BIRD_KEEPER + TRAINER_CLASS_NAME_NINJA_BOY, // NINJA_BOY + TRAINER_CLASS_NAME_BATTLE_GIRL, // BATTLE_GIRL + TRAINER_CLASS_NAME_PARASOL_LADY, // PARASOL_LADY + TRAINER_CLASS_NAME_SWIMMER_F, // SWIMMER_F + TRAINER_CLASS_NAME_PICNICKER, // PICNICKER + TRAINER_CLASS_NAME_TWINS, // TWINS + TRAINER_CLASS_NAME_SAILOR, // SAILOR + TRAINER_CLASS_NAME_BOARDER, // BOARDER_1 + TRAINER_CLASS_NAME_BOARDER, // BOARDER_2 + TRAINER_CLASS_NAME_COLLECTOR, // COLLECTOR + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // WALLY + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_1 + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_2 + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_3 + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_1 + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_2 + TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_3 + TRAINER_CLASS_NAME_POKEMON_BREEDER, // POKEMON_BREEDER_M + TRAINER_CLASS_NAME_POKEMON_BREEDER, // POKEMON_BREEDER_F + TRAINER_CLASS_NAME_POKEMON_RANGER, // POKEMON_RANGER_M + TRAINER_CLASS_NAME_POKEMON_RANGER, // POKEMON_RANGER_F + TRAINER_CLASS_NAME_MAGMA_LEADER, // MAGMA_LEADER + TRAINER_CLASS_NAME_TEAM_MAGMA, // TEAM_MAGMA_M + TRAINER_CLASS_NAME_TEAM_MAGMA, // TEAM_MAGMA_F + TRAINER_CLASS_NAME_LASS, // LASS + TRAINER_CLASS_NAME_BUG_CATCHER, // BUG_CATCHER + TRAINER_CLASS_NAME_HIKER, // HIKER + TRAINER_CLASS_NAME_YOUNG_COUPLE, // YOUNG_COUPLE + TRAINER_CLASS_NAME_OLD_COUPLE, // OLD_COUPLE + TRAINER_CLASS_NAME_SIS_AND_BRO // SIS_AND_BRO +}; + +#endif //POKERUBY_TRAINER_CLASS_LOOKUPS_H diff --git a/src/pokemon_data.c b/src/pokemon_data.c index bf7caf85e..6414134fb 100644 --- a/src/pokemon_data.c +++ b/src/pokemon_data.c @@ -9,16920 +9,18 @@ #include "sprite.h" #include "data2.h" -#define LEVEL_UP_MOVE(lvl, move) ((lvl << 9) | move) - -const u16 gSpeciesToHoennPokedexNum[] = {203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 156, 157, 112, 113, 227, 228, 229, 230, 231, 232, 233, 234, 153, 154, 138, 139, 63, 64, 88, 89, 90, 235, 236, 237, 238, 239, 240, 241, 242, 158, 159, 243, 244, 245, 246, 247, 248, 249, 39, 40, 41, 73, 74, 75, 250, 251, 252, 66, 67, 57, 58, 59, 253, 254, 255, 256, 82, 83, 257, 92, 93, 258, 259, 106, 107, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 84, 85, 270, 271, 272, 273, 274, 275, 276, 108, 109, 169, 170, 277, 278, 279, 184, 185, 50, 51, 143, 144, 280, 281, 282, 283, 284, 167, 285, 52, 53, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 65, 181, 182, 155, 324, 137, 325, 326, 162, 163, 327, 328, 329, 91, 55, 56, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 161, 164, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 168, 357, 358, 359, 103, 104, 360, 361, 180, 362, 363, 364, 365, 115, 366, 367, 186, 165, 166, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 42, 43, 44, 25, 26, 34, 35, 114, 27, 28, 32, 33, 99, 100, 61, 62, 145, 131, 132, 60, 105, 68, 127, 128, 183, 129, 130, 140, 141, 97, 98, 116, 117, 118, 48, 49, 78, 79, 101, 102, 173, 174, 175, 119, 120, 171, 172, 125, 126, 54, 110, 111, 80, 81, 69, 76, 77, 121, 122, 160, 148, 149, 94, 36, 37, 38, 95, 96, 150, 45, 46, 47, 176, 177, 178, 152, 146, 147, 124, 123, 179, 70, 71, 72, 142, 86, 87, 133, 134, 135, 136, 29, 30, 31, 187, 188, 189, 190, 191, 192, 193, 194, 195, 198, 199, 200, 196, 197, 201, 202, 151 -}; - -const u16 gSpeciesToNationalPokedexNum[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 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, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 290, 291, 292, 276, 277, 285, 286, 327, 278, 279, 283, 284, 320, 321, 300, 301, 352, 343, 344, 299, 324, 302, 339, 340, 370, 341, 342, 349, 350, 318, 319, 328, 329, 330, 296, 297, 309, 310, 322, 323, 363, 364, 365, 331, 332, 361, 362, 337, 338, 298, 325, 326, 311, 312, 303, 307, 308, 333, 334, 360, 355, 356, 315, 287, 288, 289, 316, 317, 357, 293, 294, 295, 366, 367, 368, 359, 353, 354, 336, 335, 369, 304, 305, 306, 351, 313, 314, 345, 346, 347, 348, 280, 281, 282, 371, 372, 373, 374, 375, 376, 377, 378, 379, 382, 383, 384, 380, 381, 385, 386, 358}; - -const u16 gHoennToNationalOrder[] = {252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 63, 64, 65, 290, 291, 292, 293, 294, 295, 296, 297, 118, 119, 129, 130, 298, 183, 184, 74, 75, 76, 299, 300, 301, 41, 42, 169, 72, 73, 302, 303, 304, 305, 306, 66, 67, 68, 307, 308, 309, 310, 311, 312, 81, 82, 100, 101, 313, 314, 43, 44, 45, 182, 84, 85, 315, 316, 317, 318, 319, 320, 321, 322, 323, 218, 219, 324, 88, 89, 109, 110, 325, 326, 27, 28, 327, 227, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 174, 39, 40, 349, 350, 351, 120, 121, 352, 353, 354, 355, 356, 357, 358, 359, 37, 38, 172, 25, 26, 54, 55, 360, 202, 177, 178, 203, 231, 232, 127, 214, 111, 112, 361, 362, 363, 364, 365, 366, 367, 368, 369, 222, 170, 171, 370, 116, 117, 230, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 69, 70, 71, 77, 78, 79, 80, 83, 86, 87, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 102, 103, 104, 105, 106, 107, 108, 113, 114, 115, 122, 123, 124, 125, 126, 128, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 173, 175, 176, 179, 180, 181, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 215, 216, 217, 220, 221, 223, 224, 225, 226, 228, 229, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 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}; - -const struct SpindaSpot gSpindaSpotGraphics[] = { - {16, 14, { - 0x0070, // 0000000001110000 - 0x01fc, // 0000000111111100 - 0x03fe, // 0000001111111110 - 0x07fe, // 0000011111111110 - 0x07ff, // 0000011111111111 - 0x0fff, // 0000111111111111 - 0x0fff, // 0000111111111111 - 0x0fff, // 0000111111111111 - 0x07fe, // 0000011111111110 - 0x07fe, // 0000011111111110 - 0x03fc, // 0000001111111100 - 0x01e0, // 0000000111100000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000 // 0000000000000000 - }}, - - {40, 15, { - 0x01e0, // 0000000111100000 - 0x03f8, // 0000001111111000 - 0x07fc, // 0000011111111100 - 0x0ffe, // 0000111111111110 - 0x0ffe, // 0000111111111110 - 0x1fff, // 0001111111111111 - 0x1fff, // 0001111111111111 - 0x1fff, // 0001111111111111 - 0x0ffe, // 0000111111111110 - 0x0ffe, // 0000111111111110 - 0x07fc, // 0000011111111100 - 0x07f8, // 0000011111111000 - 0x00e0, // 0000000011100000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000 // 0000000000000000 - }}, - - {22, 32, { - 0x001c, // 0000000000011100 - 0x003e, // 0000000000111110 - 0x007f, // 0000000001111111 - 0x007f, // 0000000001111111 - 0x007f, // 0000000001111111 - 0x007f, // 0000000001111111 - 0x007f, // 0000000001111111 - 0x003e, // 0000000000111110 - 0x001c, // 0000000000011100 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000 // 0000000000000000 - }}, - - {34, 33, { - 0x003c, // 0000000000111100 - 0x007e, // 0000000001111110 - 0x00ff, // 0000000011111111 - 0x00ff, // 0000000011111111 - 0x00ff, // 0000000011111111 - 0x00ff, // 0000000011111111 - 0x00ff, // 0000000011111111 - 0x007e, // 0000000001111110 - 0x003c, // 0000000000111100 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000 // 0000000000000000 - }} -}; - -const u8 gItemEffect_Potion[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 20 -}; - -const u8 gItemEffect_Antidote[] = { - 0x00, - 0x00, - 0x00, - 0x10, - 0x00, - 0x00 -}; - -const u8 gItemEffect_BurnHeal[] = { - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x00 -}; - -const u8 gItemEffect_IceHeal[] = { - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00 -}; - -const u8 gItemEffect_Awakening[] = { - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00 -}; - -const u8 gItemEffect_ParalyzeHeal[] = { - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00 -}; - -const u8 gItemEffect_FullRestore[] = { - 0x00, - 0x00, - 0x00, - 0x3f, - 0x04, - 0x00, - 0xff -}; - -const u8 gItemEffect_MaxPotion[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0xff -}; - -const u8 gItemEffect_HyperPotion[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 200 -}; - -const u8 gItemEffect_SuperPotion[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 50 -}; - -const u8 gItemEffect_FullHeal[] = { - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0x00 -}; - -const u8 gItemEffect_Revive[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x44, - 0x00, - 0xfe -}; - -const u8 gItemEffect_MaxRevive[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x44, - 0x00, - 0xff -}; - -const u8 gItemEffect_FreshWater[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 50 -}; - -const u8 gItemEffect_SodaPop[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 60 -}; - -const u8 gItemEffect_Lemonade[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 80 -}; - -const u8 gItemEffect_MoomooMilk[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 100 -}; - -const u8 gItemEffect_EnergyPowder[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0xe0, - 50, - 0xfb, - 0xfb, - 0xf6 -}; - -const u8 gItemEffect_EnergyRoot[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0xe0, - 200, - 0xf6, - 0xf6, - 0xf1 -}; - -const u8 gItemEffect_HealPowder[] = { - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0xe0, - 0xfb, - 0xfb, - 0xf6 -}; - -const u8 gItemEffect_RevivalHerb[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x44, - 0xe0, - 0xfe, - 0xf1, - 0xf1, - 0xec -}; - -const u8 gItemEffect_Ether[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x0a -}; - -const u8 gItemEffect_MaxEther[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x7f -}; - -const u8 gItemEffect_Elixir[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x0a -}; - -const u8 gItemEffect_MaxElixir[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x7f -}; - -const u8 gItemEffect_LavaCookie[] = { - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0x00 -}; - -const u8 gItemEffect_BlueFlute[] = { - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00 -}; - -const u8 gItemEffect_YellowFlute[] = { - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00 -}; - -const u8 gItemEffect_RedFlute[] = { - 0x80, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00 -}; - -const u8 gItemEffect_BerryJuice[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 20 -}; - -const u8 gItemEffect_SacredAsh[] = { - 0x40, - 0x00, - 0x00, - 0x00, - 0x44, - 0x00, - 0xff -}; - -const u8 gItemEffect_HPUp[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x01, - 0xe0, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_Protein[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x02, - 0xe0, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_Iron[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xe1, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_Carbos[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xe2, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_Calcium[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xe8, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_RareCandy[] = { - 0x00, - 0x00, - 0x00, - 0x40, - 0x44, - 0xe0, - 253, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_PPUp[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x20, - 0xe0, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_Zinc[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xe4, - 0x0a, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_PPMax[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xf0, - 0x05, - 0x03, - 0x02 -}; - -const u8 gItemEffect_GuardSpec[] = { - 0x00, - 0x00, - 0x00, - 0x80, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_DireHit[] = { - 0x20, - 0x00, - 0x00, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_XAttack[] = { - 0x01, - 0x00, - 0x00, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_XDefend[] = { - 0x00, - 0x10, - 0x00, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_XSpeed[] = { - 0x00, - 0x01, - 0x00, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_XAccuracy[] = { - 0x00, - 0x00, - 0x10, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_XSpecial[] = { - 0x00, - 0x00, - 0x01, - 0x00, - 0x00, - 0x60, - 0x01, - 0x01 -}; - -const u8 gItemEffect_SunStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_MoonStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_FireStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_ThunderStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_WaterStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_LeafStone[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x80, - 0x00 -}; - -const u8 gItemEffect_CheriBerry[] = { - 0x00, - 0x00, - 0x00, - 0x02, - 0x00, - 0x00 -}; - -const u8 gItemEffect_ChestoBerry[] = { - 0x00, - 0x00, - 0x00, - 0x20, - 0x00, - 0x00 -}; - -const u8 gItemEffect_PechaBerry[] = { - 0x00, - 0x00, - 0x00, - 0x10, - 0x00, - 0x00 -}; - -const u8 gItemEffect_RawstBerry[] = { - 0x00, - 0x00, - 0x00, - 0x08, - 0x00, - 0x00 -}; - -const u8 gItemEffect_AspearBerry[] = { - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 0x00 -}; - -const u8 gItemEffect_LeppaBerry[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x18, - 0x00, - 0x0a -}; - -const u8 gItemEffect_OranBerry[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 10 -}; - -const u8 gItemEffect_PersimBerry[] = { - 0x00, - 0x00, - 0x00, - 0x01, - 0x00, - 0x00 -}; - -const u8 gItemEffect_LumBerry[] = { - 0x00, - 0x00, - 0x00, - 0x3f, - 0x00, - 0x00 -}; - -const u8 gItemEffect_SitrusBerry[] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x04, - 0x00, - 30 -}; - -const u8 *const gItemEffectTable[] = { - gItemEffect_Potion, - gItemEffect_Antidote, - gItemEffect_BurnHeal, - gItemEffect_IceHeal, - gItemEffect_Awakening, - gItemEffect_ParalyzeHeal, - gItemEffect_FullRestore, - gItemEffect_MaxPotion, - gItemEffect_HyperPotion, - gItemEffect_SuperPotion, - gItemEffect_FullHeal, - gItemEffect_Revive, - gItemEffect_MaxRevive, - gItemEffect_FreshWater, - gItemEffect_SodaPop, - gItemEffect_Lemonade, - gItemEffect_MoomooMilk, - gItemEffect_EnergyPowder, - gItemEffect_EnergyRoot, - gItemEffect_HealPowder, - gItemEffect_RevivalHerb, - gItemEffect_Ether, - gItemEffect_MaxEther, - gItemEffect_Elixir, - gItemEffect_MaxElixir, - gItemEffect_LavaCookie, - gItemEffect_BlueFlute, - gItemEffect_YellowFlute, - gItemEffect_RedFlute, - NULL, - NULL, - gItemEffect_BerryJuice, - gItemEffect_SacredAsh, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - gItemEffect_HPUp, - gItemEffect_Protein, - gItemEffect_Iron, - gItemEffect_Carbos, - gItemEffect_Calcium, - gItemEffect_RareCandy, - gItemEffect_PPUp, - gItemEffect_Zinc, - gItemEffect_PPMax, - NULL, - gItemEffect_GuardSpec, - gItemEffect_DireHit, - gItemEffect_XAttack, - gItemEffect_XDefend, - gItemEffect_XSpeed, - gItemEffect_XAccuracy, - gItemEffect_XSpecial, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - gItemEffect_SunStone, - gItemEffect_MoonStone, - gItemEffect_FireStone, - gItemEffect_ThunderStone, - gItemEffect_WaterStone, - gItemEffect_LeafStone, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - gItemEffect_CheriBerry, - gItemEffect_ChestoBerry, - gItemEffect_PechaBerry, - gItemEffect_RawstBerry, - gItemEffect_AspearBerry, - gItemEffect_LeppaBerry, - gItemEffect_OranBerry, - gItemEffect_PersimBerry, - gItemEffect_LumBerry, - gItemEffect_SitrusBerry, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL -}; - -const s8 gNatureStatTable[][5] = { - // Atk Def Spd Sp.Atk Sp.Def - { 0, 0, 0, 0, 0}, // Hardy - { 1, -1, 0, 0, 0}, // Lonely - { 1, 0, -1, 0, 0}, // Brave - { 1, 0, 0, -1, 0}, // Adamant - { 1, 0, 0, 0, -1}, // Naughty - { -1, 1, 0, 0, 0}, // Bold - { 0, 0, 0, 0, 0}, // Docile - { 0, 1, -1, 0, 0}, // Relaxed - { 0, 1, 0, -1, 0}, // Impish - { 0, 1, 0, 0, -1}, // Lax - { -1, 0, 1, 0, 0}, // Timid - { 0, -1, 1, 0, 0}, // Hasty - { 0, 0, 0, 0, 0}, // Serious - { 0, 0, 1, -1, 0}, // Jolly - { 0, 0, 1, 0, -1}, // Naive - { -1, 0, 0, 1, 0}, // Modest - { 0, -1, 0, 1, 0}, // Mild - { 0, 0, -1, 1, 0}, // Quiet - { 0, 0, 0, 0, 0}, // Bashful - { 0, 0, 0, 1, -1}, // Rash - { -1, 0, 0, 0, 1}, // Calm - { 0, -1, 0, 0, 1}, // Gentle - { 0, 0, -1, 0, 1}, // Sassy - { 0, 0, 0, -1, 1}, // Careful - { 0, 0, 0, 0, 0} // Quirky -}; - -// TO-DO: Rewrite this declaration to allow assignment of TM/HM learns by name. -// These are 58-bit numbers aligned to 64 bits. The least significant bit represents TM01, -// while the most significant bit represents HM08. - -const u32 gTMHMLearnsets[][2] = { - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (??????????) - {0x84350720, 0x00e41e08}, // 0b0011100100000111100000100010000100001101010000011100100000 (Bulbasaur) - {0x84350720, 0x00e41e08}, // 0b0011100100000111100000100010000100001101010000011100100000 (Ivysaur) - {0x86354730, 0x00e41e08}, // 0b0011100100000111100000100010000110001101010100011100110000 (Venusaur) - {0xcc510623, 0x00a61ea4}, // 0b0010100110000111101010010011001100010100010000011000100011 (Charmander) - {0xcc510623, 0x00a61ea4}, // 0b0010100110000111101010010011001100010100010000011000100011 (Charmeleon) - {0xce514633, 0x00ae5ea4}, // 0b0010101110010111101010010011001110010100010100011000110011 (Charizard) - {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Squirtle) - {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Wartortle) - {0xce537275, 0x03b01e00}, // 0b1110110000000111100000000011001110010100110111001001110101 (Blastoise) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Caterpie) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Metapod) - {0xb43f4620, 0x0040be80}, // 0b0001000000101111101000000010110100001111110100011000100000 (Butterfree) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Weedle) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Kakuna) - {0xc4354620, 0x00843e88}, // 0b0010000100001111101000100011000100001101010100011000100000 (Beedrill) - {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Pidgey) - {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Pidgeotto) - {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Pidgeot) - {0xadd33e20, 0x00843e02}, // 0b0010000100001111100000001010101101110100110011111000100000 (Rattata) - {0xadd37e30, 0x00a43e02}, // 0b0010100100001111100000001010101101110100110111111000110000 (Raticate) - {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Spearow) - {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Fearow) - {0x8e570620, 0x00213f08}, // 0b0000100001001111110000100010001110010101110000011000100000 (Ekans) - {0x8e574620, 0x00213f08}, // 0b0000100001001111110000100010001110010101110100011000100000 (Arbok) - {0xcdd38221, 0x00e01e02}, // 0b0011100000000111100000001011001101110100111000001000100001 (Pikachu) - {0xcdd3c221, 0x00e03e02}, // 0b0011100000001111100000001011001101110100111100001000100001 (Raichu) - {0xce510621, 0x00a43ed0}, // 0b0010100100001111101101000011001110010100010000011000100001 (Sandshrew) - {0xce514621, 0x00a43ed0}, // 0b0010100100001111101101000011001110010100010100011000100001 (Sandslash) - {0x8dd33624, 0x00a43e8a}, // 0b0010100100001111101000101010001101110100110011011000100100 (Nidoran♀) - {0x8dd33624, 0x00a43e8a}, // 0b0010100100001111101000101010001101110100110011011000100100 (Nidorina) - {0xefd37e35, 0x00b43ffe}, // 0b0010110100001111111111111011101111110100110111111000110101 (Nidoqueen) - {0x8dd33624, 0x00a43e0a}, // 0b0010100100001111100000101010001101110100110011011000100100 (Nidoran♂) - {0x8dd33624, 0x00a43e0a}, // 0b0010100100001111100000101010001101110100110011011000100100 (Nidorino) - {0xefd37e35, 0x00b43f7e}, // 0b0010110100001111110111111011101111110100110111111000110101 (Nidoking) - {0xfdfbb62d, 0x00611e27}, // 0b0001100001000111100010011111111101111110111011011000101101 (Clefairy) - {0xfdfbf62d, 0x00611e27}, // 0b0001100001000111100010011111111101111110111111011000101101 (Clefable) - {0x8c590630, 0x00021e24}, // 0b0000000010000111100010010010001100010110010000011000110000 (Vulpix) - {0x8c594630, 0x00021e24}, // 0b0000000010000111100010010010001100010110010100011000110000 (Ninetales) - {0xfdbbb625, 0x00611e27}, // 0b0001100001000111100010011111111101101110111011011000100101 (Jigglypuff) - {0xfdbbf625, 0x00611e27}, // 0b0001100001000111100010011111111101101110111111011000100101 (Wigglytuff) - {0xa4170e20, 0x00017f88}, // 0b0000000001011111111000100010100100000101110000111000100000 (Zubat) - {0xa4174e20, 0x00017f88}, // 0b0000000001011111111000100010100100000101110100111000100000 (Golbat) - {0x84350720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010000011100100000 (Oddish) - {0x84350720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010000011100100000 (Gloom) - {0x84354720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010100011100100000 (Vileplume) - {0x8c350720, 0x00c43e88}, // 0b0011000100001111101000100010001100001101010000011100100000 (Paras) - {0x8c354720, 0x00c43e88}, // 0b0011000100001111101000100010001100001101010100011100100000 (Parasect) - {0x94350620, 0x0040be08}, // 0b0001000000101111100000100010010100001101010000011000100000 (Venonat) - {0x94354620, 0x0040be88}, // 0b0001000000101111101000100010010100001101010100011000100000 (Venomoth) - {0x8e110620, 0x00843ec8}, // 0b0010000100001111101100100010001110000100010000011000100000 (Diglett) - {0x8e114620, 0x00843ec8}, // 0b0010000100001111101100100010001110000100010100011000100000 (Dugtrio) - {0xadd30e24, 0x00453f82}, // 0b0001000101001111111000001010101101110100110000111000100100 (Meowth) - {0xadd34e34, 0x00453f82}, // 0b0001000101001111111000001010101101110100110100111000110100 (Persian) - {0xcc53326d, 0x03f01e80}, // 0b1111110000000111101000000011001100010100110011001001101101 (Psyduck) - {0xcc53726d, 0x03f01e80}, // 0b1111110000000111101000000011001100010100110111001001101101 (Golduck) - {0xcfd30ea1, 0x00a23ec0}, // 0b0010100010001111101100000011001111110100110000111010100001 (Mankey) - {0xcfd34ea1, 0x00a23ec0}, // 0b0010100010001111101100000011001111110100110100111010100001 (Primeape) - {0x8c510630, 0x00a23ea4}, // 0b0010100010001111101010010010001100010100010000011000110000 (Growlithe) - {0x8c514630, 0x00a23ea4}, // 0b0010100010001111101010010010001100010100010100011000110000 (Arcanine) - {0x9c133264, 0x03103e00}, // 0b1100010000001111100000000010011100000100110011001001100100 (Poliwag) - {0xde133265, 0x03b03e00}, // 0b1110110000001111100000000011011110000100110011001001100101 (Poliwhirl) - {0xde1372e5, 0x03b03e40}, // 0b1110110000001111100100000011011110000100110111001011100101 (Poliwrath) - {0xb45b8e29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111000111000101001 (Abra) - {0xb45b8e29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111000111000101001 (Kadabra) - {0xb45bce29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111100111000101001 (Alakazam) - {0xce1306a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110000011010100001 (Machop) - {0xce1306a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110000011010100001 (Machoke) - {0xce1346a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110100011010100001 (Machamp) - {0x84350720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010000011100100000 (Bellsprout) - {0x84350720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010000011100100000 (Weepinbell) - {0x84354720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010100011100100000 (Victreebel) - {0x84173264, 0x03143e08}, // 0b1100010100001111100000100010000100000101110011001001100100 (Tentacool) - {0x84177264, 0x03143e08}, // 0b1100010100001111100000100010000100000101110111001001100100 (Tentacruel) - {0xce110621, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010000011000100001 (Geodude) - {0xce110621, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010000011000100001 (Graveler) - {0xce114631, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010100011000110001 (Golem) - {0x84710620, 0x00221e24}, // 0b0000100010000111100010010010000100011100010000011000100000 (Ponyta) - {0x84714620, 0x00221e24}, // 0b0000100010000111100010010010000100011100010100011000100000 (Rapidash) - {0xbe5b366c, 0x02709e24}, // 0b1001110000100111100010010010111110010110110011011001101100 (Slowpoke) - {0xfe5b766d, 0x02f09e24}, // 0b1011110000100111100010010011111110010110110111011001101101 (Slowbro) - {0x85930620, 0x00400e03}, // 0b0001000000000011100000001110000101100100110000011000100000 (Magnemite) - {0x85934620, 0x00400e03}, // 0b0001000000000011100000001110000101100100110100011000100000 (Magneton) - {0x84510620, 0x000c7e80}, // 0b0000001100011111101000000010000100010100010000011000100000 (Farfetch'd) - {0x84110620, 0x00087e80}, // 0b0000001000011111101000000010000100000100010000011000100000 (Doduo) - {0x84114e20, 0x00087f80}, // 0b0000001000011111111000000010000100000100010100111000100000 (Dodrio) - {0x841b3264, 0x03103e00}, // 0b1100010000001111100000000010000100000110110011001001100100 (Seel) - {0x841b7264, 0x03103e00}, // 0b1100010000001111100000000010000100000110110111001001100100 (Dewgong) - {0x8d970e20, 0x00003f6e}, // 0b0000000000001111110110111010001101100101110000111000100000 (Grimer) - {0xcd974e21, 0x00a03f6e}, // 0b0010100000001111110110111011001101100101110100111000100001 (Muk) - {0x84133264, 0x02101e00}, // 0b1000010000000111100000000010000100000100110011001001100100 (Shellder) - {0x84137264, 0x02101f00}, // 0b1000010000000111110000000010000100000100110111001001100100 (Cloyster) - {0xb4970e20, 0x0001bf08}, // 0b0000000001101111110000100010110100100101110000111000100000 (Gastly) - {0xb4970e20, 0x0001bf08}, // 0b0000000001101111110000100010110100100101110000111000100000 (Haunter) - {0xf5974e21, 0x00a1bf08}, // 0b0010100001101111110000100011110101100101110100111000100001 (Gengar) - {0x8e510e30, 0x00a01f50}, // 0b0010100000000111110101000010001110010100010000111000110000 (Onix) - {0xf41b8e29, 0x0041bf01}, // 0b0001000001101111110000000111110100000110111000111000101001 (Drowzee) - {0xf41bce29, 0x0041bf01}, // 0b0001000001101111110000000111110100000110111100111000101001 (Hypno) - {0x8c133264, 0x02b43e40}, // 0b1010110100001111100100000010001100000100110011001001100100 (Krabby) - {0x8c137264, 0x02b43e40}, // 0b1010110100001111100100000010001100000100110111001001100100 (Kingler) - {0x85938a20, 0x00402f02}, // 0b0001000000001011110000001010000101100100111000101000100000 (Voltorb) - {0x8593ca20, 0x00402f02}, // 0b0001000000001011110000001010000101100100111100101000100000 (Electrode) - {0x94358720, 0x0060be09}, // 0b0001100000101111100000100110010100001101011000011100100000 (Exeggcute) - {0x9435c720, 0x0060be09}, // 0b0001100000101111100000100110010100001101011100011100100000 (Exeggutor) - {0xce513621, 0x00a03ef4}, // 0b0010100000001111101111010011001110010100010011011000100001 (Cubone) - {0xce517621, 0x00a03ef4}, // 0b0010100000001111101111010011001110010100010111011000100001 (Marowak) - {0xc61306a1, 0x00a03e40}, // 0b0010100000001111100100000011000110000100110000011010100001 (Hitmonlee) - {0xc61306a1, 0x00a03e40}, // 0b0010100000001111100100000011000110000100110000011010100001 (Hitmonchan) - {0xeff37625, 0x00b43e76}, // 0b0010110100001111100111011011101111111100110111011000100101 (Lickitung) - {0xa5930e20, 0x00403f2e}, // 0b0001000000001111110010111010100101100100110000111000100000 (Koffing) - {0xa5934e20, 0x00403f2e}, // 0b0001000000001111110010111010100101100100110100111000100000 (Weezing) - {0x8fd33630, 0x00a03e76}, // 0b0010100000001111100111011010001111110100110011011000110000 (Rhyhorn) - {0xcfd37631, 0x00b43e76}, // 0b0010110100001111100111011011001111110100110111011000110001 (Rhydon) - {0xf7fbf66d, 0x00e19e76}, // 0b0011100001100111100111011011110111111110111111011001101101 (Chansey) - {0x84354720, 0x00c43e08}, // 0b0011000100001111100000100010000100001101010100011100100000 (Tangela) - {0xeff37675, 0x00b43ef6}, // 0b0010110100001111101111011011101111111100110111011001110101 (Kangaskhan) - {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Horsea) - {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Seadra) - {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Goldeen) - {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Seaking) - {0x9593b264, 0x03500e01}, // 0b1101010000000011100000000110010101100100111011001001100100 (Staryu) - {0x9593f264, 0x03508e01}, // 0b1101010000100011100000000110010101100100111111001001100100 (Starmie) - {0xf5bbce29, 0x0041bf03}, // 0b0001000001101111110000001111110101101110111100111000101001 (Mr. mime) - {0x84134620, 0x00847e80}, // 0b0010000100011111101000000010000100000100110100011000100000 (Scyther) - {0xf413fa6d, 0x0040bf01}, // 0b0001000000101111110000000111110100000100111111101001101101 (Jynx) - {0xd5d3c221, 0x00e03e02}, // 0b0011100000001111100000001011010101110100111100001000100001 (Electabuzz) - {0xd4514621, 0x00a03e24}, // 0b0010100000001111100010010011010100010100010100011000100001 (Magmar) - {0xce1346a1, 0x00a43e40}, // 0b0010100100001111100100000011001110000100110100011010100001 (Pinsir) - {0x87f37624, 0x00b01e76}, // 0b0010110000000111100111011010000111111100110111011000100100 (Tauros) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Magikarp) - {0x87937a74, 0x03b01f34}, // 0b1110110000000111110011010010000111100100110111101001110100 (Gyarados) - {0x95db7274, 0x03b01e02}, // 0b1110110000000111100000001010010101110110110111001001110100 (Lapras) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Ditto) - {0xac530620, 0x00001e00}, // 0b0000000000000111100000000010101100010100110000011000100000 (Eevee) - {0xac537674, 0x03101e00}, // 0b1100010000000111100000000010101100010100110111011001110100 (Vaporeon) - {0xadd34630, 0x00401e02}, // 0b0001000000000111100000001010101101110100110100011000110000 (Jolteon) - {0xac534630, 0x00021e24}, // 0b0000000010000111100010010010101100010100110100011000110000 (Flareon) - {0xb5f37620, 0x00402e82}, // 0b0001000000001011101000001010110101111100110111011000100000 (Porygon) - {0x84133264, 0x03903e50}, // 0b1110010000001111100101000010000100000100110011001001100100 (Omanyte) - {0x84137264, 0x03903e50}, // 0b1110010000001111100101000010000100000100110111001001100100 (Omastar) - {0x8c173264, 0x01903ed0}, // 0b0110010000001111101101000010001100000101110011001001100100 (Kabuto) - {0xcc177264, 0x03943ed0}, // 0b1110010100001111101101000011001100000101110111001001100100 (Kabutops) - {0x86534e32, 0x00a87ff4}, // 0b0010101000011111111111010010000110010100110100111000110010 (Aerodactyl) - {0xf7b37625, 0x00301e76}, // 0b0000110000000111100111011011110111101100110111011000100101 (Snorlax) - {0x84137674, 0x00884e91}, // 0b0010001000010011101001000110000100000100110111011001110100 (Articuno) - {0x8593c630, 0x00c84e92}, // 0b0011001000010011101001001010000101100100111100011000110000 (Zapdos) - {0x841b4630, 0x008a4eb4}, // 0b0010001010010011101011010010000100000110110100011000110000 (Moltres) - {0x85db7664, 0x01101e26}, // 0b0100010000000111100010011010000101110110110111011001100100 (Dratini) - {0x85db7664, 0x01101e26}, // 0b0100010000000111100010011010000101110110110111011001100100 (Dragonair) - {0xc7db7677, 0x03bc5ef6}, // 0b1110111100010111101111011011000111110110110111011001110111 (Dragonite) - {0xf7fbfeed, 0x00e18ff7}, // 0b0011100001100011111111011111110111111110111111111011101101 (Mewtwo) - {0xffffffff, 0x03ffffff}, // 0b1111111111111111111111111111111111111111111111111111111111 (Mew) - {0x847d8720, 0x00441e01}, // 0b0001000100000111100000000110000100011111011000011100100000 (Chikorita) - {0x847d8720, 0x00e41e01}, // 0b0011100100000111100000000110000100011111011000011100100000 (Bayleef) - {0x867dc720, 0x00e41e01}, // 0b0011100100000111100000000110000110011111011100011100100000 (Meganium) - {0x8c110620, 0x00061ea4}, // 0b0000000110000111101010010010001100000100010000011000100000 (Cyndaquil) - {0xcc110631, 0x00a61ea4}, // 0b0010100110000111101010010011001100000100010000011000110001 (Quilava) - {0xce114631, 0x00a61ea4}, // 0b0010100110000111101010010011001110000100010100011000110001 (Typhlosion) - {0xcc533265, 0x03141e80}, // 0b1100010100000111101000000011001100010100110011001001100101 (Totodile) - {0xcc533275, 0x03b41e80}, // 0b1110110100000111101000000011001100010100110011001001110101 (Croconaw) - {0xce537277, 0x03b41e80}, // 0b1110110100000111101000000011001110010100110111001001110111 (Feraligatr) - {0xecf31625, 0x00143e06}, // 0b0000010100001111100000011011101100111100110001011000100101 (Sentret) - {0xedf37625, 0x00b43e06}, // 0b0010110100001111100000011011101101111100110111011000100101 (Furret) - {0xb4130620, 0x00487e81}, // 0b0001001000011111101000000110110100000100110000011000100000 (Hoothoot) - {0xb4134620, 0x00487e81}, // 0b0001001000011111101000000110110100000100110100011000100000 (Noctowl) - {0xcc3d8621, 0x00403e81}, // 0b0001000000001111101000000111001100001111011000011000100001 (Ledyba) - {0xcc3dc621, 0x00403e81}, // 0b0001000000001111101000000111001100001111011100011000100001 (Ledian) - {0x9c350620, 0x00403e08}, // 0b0001000000001111100000100010011100001101010000011000100000 (Spinarak) - {0x9c354620, 0x00403e08}, // 0b0001000000001111100000100010011100001101010100011000100000 (Ariados) - {0xa4174e20, 0x00097f88}, // 0b0000001001011111111000100010100100000101110100111000100000 (Crobat) - {0x85933264, 0x03501e02}, // 0b1101010000000111100000001010000101100100110011001001100100 (Chinchou) - {0x85937264, 0x03501e02}, // 0b1101010000000111100000001010000101100100110111001001100100 (Lanturn) - {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Pichu) - {0xbc7b8624, 0x00401e27}, // 0b0001000000000111100010011110111100011110111000011000100100 (Cleffa) - {0xbc3b8624, 0x00401e27}, // 0b0001000000000111100010011110111100001110111000011000100100 (Igglybuff) - {0xb43b8624, 0x00c01e27}, // 0b0011000000000111100010011110110100001110111000011000100100 (Togepi) - {0xf43bc625, 0x00c85ea7}, // 0b0011001000010111101010011111110100001110111100011000100101 (Togetic) - {0xb4378628, 0x0040fe81}, // 0b0001000000111111101000000110110100001101111000011000101000 (Natu) - {0xb437c628, 0x0048fe81}, // 0b0001001000111111101000000110110100001101111100011000101000 (Xatu) - {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Mareep) - {0xc5d38221, 0x00e01e02}, // 0b0011100000000111100000001011000101110100111000001000100001 (Flaaffy) - {0xc5d3c221, 0x00e01e02}, // 0b0011100000000111100000001011000101110100111100001000100001 (Ampharos) - {0x843d4720, 0x00441e08}, // 0b0001000100000111100000100010000100001111010100011100100000 (Bellossom) - {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Marill) - {0xcc537265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110111001001100101 (Azumarill) - {0xce110e29, 0x00a03e50}, // 0b0010100000001111100101000011001110000100010000111000101001 (Sudowoodo) - {0xde137265, 0x03b03e00}, // 0b1110110000001111100000000011011110000100110111001001100101 (Politoed) - {0x84350720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010000011100100000 (Hoppip) - {0x84350720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010000011100100000 (Skiploom) - {0x84354720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010100011100100000 (Jumpluff) - {0xedf30e25, 0x00a53e82}, // 0b0010100101001111101000001011101101111100110000111000100101 (Aipom) - {0x843d8720, 0x00441e08}, // 0b0001000100000111100000100010000100001111011000011100100000 (Sunkern) - {0x843dc720, 0x00441e08}, // 0b0001000100000111100000100010000100001111011100011100100000 (Sunflora) - {0xb4350620, 0x00407e80}, // 0b0001000000011111101000000010110100001101010000011000100000 (Yanma) - {0x8e533264, 0x03d01e18}, // 0b1111010000000111100001100010001110010100110011001001100100 (Wooper) - {0xce537265, 0x03f01e58}, // 0b1111110000000111100101100011001110010100110111001001100101 (Quagsire) - {0xbc53c628, 0x00449e01}, // 0b0001000100100111100000000110111100010100111100011000101000 (Espeon) - {0xbc534e20, 0x00451f00}, // 0b0001000101000111110000000010111100010100110100111000100000 (Umbreon) - {0xa4130e28, 0x00097f80}, // 0b0000001001011111111000000010100100000100110000111000101000 (Murkrow) - {0xfe5b766d, 0x02f09e24}, // 0b1011110000100111100010010011111110010110110111011001101101 (Slowking) - {0xb5930e28, 0x0041bf82}, // 0b0001000001101111111000001010110101100100110000111000101000 (Misdreavus) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Unown) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wobbuffet) - {0xb7d38628, 0x00e0be03}, // 0b0011100000101111100000001110110111110100111000011000101000 (Girafarig) - {0x8e358620, 0x00a01e11}, // 0b0010100000000111100001000110001110001101011000011000100000 (Pineco) - {0x8e35c620, 0x00a01e11}, // 0b0010100000000111100001000110001110001101011100011000100000 (Forretress) - {0xaff3362c, 0x00a03e66}, // 0b0010100000001111100110011010101111111100110011011000101100 (Dunsparce) - {0x8e530620, 0x00a47ed8}, // 0b0010100100011111101101100010001110010100110000011000100000 (Gligar) - {0x8e514e30, 0x00a41f50}, // 0b0010100100000111110101000010001110010100010100111000110000 (Steelix) - {0xefb30eb5, 0x00a23f2e}, // 0b0010100010001111110010111011101111101100110000111010110101 (Snubbull) - {0xeff34eb5, 0x00a23f6e}, // 0b0010100010001111110110111011101111111100110100111010110101 (Granbull) - {0xa4133264, 0x03101e0a}, // 0b1100010000000111100000101010100100000100110011001001100100 (Qwilfish) - {0x84134620, 0x00a47e90}, // 0b0010100100011111101001000010000100000100110100011000100000 (Scizor) - {0x8e190620, 0x00e01e58}, // 0b0011100000000111100101100010001110000110010000011000100000 (Shuckle) - {0xce1346a1, 0x00a43e40}, // 0b0010100100001111100100000011001110000100110100011010100001 (Heracross) - {0xec533e69, 0x00b53f80}, // 0b0010110101001111111000000011101100010100110011111001101001 (Sneasel) - {0xce130eb1, 0x00a43f80}, // 0b0010100100001111111000000011001110000100110000111010110001 (Teddiursa) - {0xce134eb1, 0x00a43fc0}, // 0b0010100100001111111100000011001110000100110100111010110001 (Ursaring) - {0x84118620, 0x00821e25}, // 0b0010000010000111100010010110000100000100011000011000100000 (Slugma) - {0x8611c620, 0x00a21e75}, // 0b0010100010000111100111010110000110000100011100011000100000 (Magcargo) - {0x8e13b270, 0x00a01e51}, // 0b0010100000000111100101000110001110000100111011001001110000 (Swinub) - {0x8e13f270, 0x00a01e51}, // 0b0010100000000111100101000110001110000100111111001001110000 (Piloswine) - {0xbe1bb66c, 0x00b01e51}, // 0b0010110000000111100101000110111110000110111011011001101100 (Corsola) - {0x94137624, 0x03103e24}, // 0b1100010000001111100010010010010100000100110111011000100100 (Remoraid) - {0x94137724, 0x03103e2c}, // 0b1100010000001111100010110010010100000100110111011100100100 (Octillery) - {0x84133265, 0x00083e80}, // 0b0000001000001111101000000010000100000100110011001001100101 (Delibird) - {0x86133264, 0x03101e80}, // 0b1100010000000111101000000010000110000100110011001001100100 (Mantine) - {0x84110e30, 0x008c7f90}, // 0b0010001100011111111001000010000100000100010000111000110000 (Skarmory) - {0xa4710e30, 0x00833f2c}, // 0b0010000011001111110010110010100100011100010000111000110000 (Houndour) - {0xa4714e30, 0x00a33f2c}, // 0b0010100011001111110010110010100100011100010100111000110000 (Houndoom) - {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Kingdra) - {0x86510630, 0x00a01e50}, // 0b0010100000000111100101000010000110010100010000011000110000 (Phanpy) - {0x86514630, 0x00a01e50}, // 0b0010100000000111100101000010000110010100010100011000110000 (Donphan) - {0xb5f37620, 0x00402e82}, // 0b0001000000001011101000001010110101111100110111011000100000 (Porygon2) - {0xb7f38638, 0x0040be03}, // 0b0001000000101111100000001110110111111100111000011000111000 (Stantler) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Smeargle) - {0xc61306a0, 0x00a03e00}, // 0b0010100000001111100000000011000110000100110000011010100000 (Tyrogue) - {0xce1306a0, 0x00a03e10}, // 0b0010100000001111100001000011001110000100110000011010100000 (Hitmontop) - {0xb413b26c, 0x0040be01}, // 0b0001000000101111100000000110110100000100111011001001101100 (Smoochum) - {0xd5938221, 0x00c03e02}, // 0b0011000000001111100000001011010101100100111000001000100001 (Elekid) - {0xd4510621, 0x00803e24}, // 0b0010000000001111100010010011010100010100010000011000100001 (Magby) - {0xe7f37625, 0x00b01e52}, // 0b0010110000000111100101001011100111111100110111011000100101 (Miltank) - {0xf7fbf66d, 0x00e19e76}, // 0b0011100001100111100111011011110111111110111111011001101101 (Blissey) - {0x8dd34638, 0x00e40e13}, // 0b0011100100000011100001001110001101110100110100011000111000 (Raikou) - {0x8c734638, 0x00e40e35}, // 0b0011100100000011100011010110001100011100110100011000111000 (Entei) - {0x8c53767c, 0x03940e11}, // 0b1110010100000011100001000110001100010100110111011001111100 (Suicune) - {0xce134e20, 0x00801f10}, // 0b0010000000000111110001000011001110000100110100111000100000 (Larvitar) - {0xce134e20, 0x00801f10}, // 0b0010000000000111110001000011001110000100110100111000100000 (Pupitar) - {0xcfd37e37, 0x00b41ff6}, // 0b0010110100000111111111011011001111110100110111111000110111 (Tyranitar) - {0xb7dff67c, 0x03b8ce93}, // 0b1110111000110011101001001110110111110111111111011001111100 (Lugia) - {0xb7bfc638, 0x00ea4eb7}, // 0b0011101010010011101011011110110111101111111100011000111000 (Ho-Oh) - {0xb43fc62c, 0x00448e93}, // 0b0001000100100011101001001110110100001111111100011000101100 (Celebi) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0xcc7d0721, 0x00e41ec0}, // 0b0011100100000111101100000011001100011111010000011100100001 (Treecko) - {0xcc7d0721, 0x00e41ec0}, // 0b0011100100000111101100000011001100011111010000011100100001 (Grovyle) - {0xce7d4733, 0x00e41ec0}, // 0b0011100100000111101100000011001110011111010100011100110011 (Sceptile) - {0x8c110620, 0x00a61ee4}, // 0b0010100110000111101110010010001100000100010000011000100000 (Torchic) - {0xcc1106a1, 0x00a61ee4}, // 0b0010100110000111101110010011001100000100010000011010100001 (Combusken) - {0xce1146b1, 0x00a61ee4}, // 0b0010100110000111101110010011001110000100010100011010110001 (Blaziken) - {0x8c533264, 0x03b01e40}, // 0b1110110000000111100100000010001100010100110011001001100100 (Mudkip) - {0x8e533264, 0x03b01e40}, // 0b1110110000000111100100000010001110010100110011001001100100 (Marshtomp) - {0xce537275, 0x03b01e40}, // 0b1110110000000111100100000011001110010100110111001001110101 (Swampert) - {0xac530e30, 0x00813f00}, // 0b0010000001001111110000000010101100010100110000111000110000 (Poochyena) - {0xac534e30, 0x00a13f00}, // 0b0010100001001111110000000010101100010100110100111000110000 (Mightyena) - {0xadd33624, 0x00943e02}, // 0b0010010100001111100000001010101101110100110011011000100100 (Zigzagoon) - {0xadd37634, 0x00b43e02}, // 0b0010110100001111100000001010101101110100110111011000110100 (Linoone) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wurmple) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Silcoon) - {0xb43d4620, 0x00403e80}, // 0b0001000000001111101000000010110100001111010100011000100000 (Beautifly) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Cascoon) - {0xb435c620, 0x00403e88}, // 0b0001000000001111101000100010110100001101011100011000100000 (Dustox) - {0x84373764, 0x00503e00}, // 0b0001010000001111100000000010000100001101110011011101100100 (Lotad) - {0xc4373764, 0x03f03e00}, // 0b1111110000001111100000000011000100001101110011011101100100 (Lombre) - {0xc4377765, 0x03f03e00}, // 0b1111110000001111100000000011000100001101110111011101100101 (Ludicolo) - {0xac350720, 0x00c01e00}, // 0b0011000000000111100000000010101100001101010000011100100000 (Seedot) - {0xec354720, 0x00e43f40}, // 0b0011100100001111110100000011101100001101010100011100100000 (Nuzleaf) - {0xec354720, 0x00e43fc0}, // 0b0011100100001111111100000011101100001101010100011100100000 (Shiftry) - {0xac350620, 0x00440e90}, // 0b0001000100000011101001000010101100001101010000011000100000 (Nincada) - {0xac354620, 0x00443e90}, // 0b0001000100001111101001000010101100001101010100011000100000 (Ninjask) - {0xac354620, 0x00442e90}, // 0b0001000100001011101001000010101100001101010100011000100000 (Shedinja) - {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Taillow) - {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Swellow) - {0x843d0720, 0x00411e08}, // 0b0001000001000111100000100010000100001111010000011100100000 (Shroomish) - {0xc47d47a1, 0x00e51e08}, // 0b0011100101000111100000100011000100011111010100011110100001 (Breloom) - {0xfc1b062d, 0x00e1be42}, // 0b0011100001101111100100001011111100000110110000011000101101 (Spinda) - {0x84133264, 0x00087e82}, // 0b0000001000011111101000001010000100000100110011001001100100 (Wingull) - {0x84137264, 0x00187e82}, // 0b0000011000011111101000001010000100000100110111001001100100 (Pelipper) - {0xa4373624, 0x00403e00}, // 0b0001000000001111100000000010100100001101110011011000100100 (Surskit) - {0xa4377624, 0x00403e80}, // 0b0001000000001111101000000010100100001101110111011000100100 (Masquerain) - {0x86133274, 0x03b01e40}, // 0b1110110000000111100100000010000110000100110011001001110100 (Wailmer) - {0x86137274, 0x03b01e40}, // 0b1110110000000111100100000010000110000100110111001001110100 (Wailord) - {0xadfb362c, 0x00401e02}, // 0b0001000000000111100000001010101101111110110011011000101100 (Skitty) - {0xadfb762c, 0x00e01e02}, // 0b0011100000000111100000001010101101111110110111011000101100 (Delcatty) - {0xedf33625, 0x00e5bee6}, // 0b0011100101101111101110011011101101111100110011011000100101 (Kecleon) - {0xbe339620, 0x00408e51}, // 0b0001000000100011100101000110111110001100111001011000100000 (Baltoy) - {0xbe33d620, 0x00e08e51}, // 0b0011100000100011100101000110111110001100111101011000100000 (Claydol) - {0x87910e20, 0x00a01f52}, // 0b0010100000000111110101001010000111100100010000111000100000 (Nosepass) - {0x84510620, 0x00a21e2c}, // 0b0010100010000111100010110010000100010100010000011000100000 (Torkoal) - {0xfc130e2d, 0x00c53fc2}, // 0b0011000101001111111100001011111100000100110000111000101101 (Sableye) - {0x86133264, 0x03101e50}, // 0b1100010000000111100101000010000110000100110011001001100100 (Barboach) - {0x86137264, 0x03b01e50}, // 0b1110110000000111100101000010000110000100110111001001100100 (Whiscash) - {0x841b3264, 0x03101e00}, // 0b1100010000000111100000000010000100000110110011001001100100 (Luvdisc) - {0xcc133a64, 0x01b41ec8}, // 0b0110110100000111101100100011001100000100110011101001100100 (Corphish) - {0xcc137a64, 0x03b41ec8}, // 0b1110110100000111101100100011001100000100110111101001100100 (Crawdaunt) - {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Feebas) - {0x845b7264, 0x03101e00}, // 0b1100010000000111100000000010000100010110110111001001100100 (Milotic) - {0x84133a64, 0x03103f00}, // 0b1100010000001111110000000010000100000100110011101001100100 (Carvanha) - {0x86137a74, 0x03b03f40}, // 0b1110110000001111110100000010000110000100110111101001110100 (Sharpedo) - {0x8e354620, 0x00a01e50}, // 0b0010100000000111100101000010001110001101010100011000100000 (Trapinch) - {0x8e354620, 0x00a85e50}, // 0b0010101000010111100101000010001110001101010100011000100000 (Vibrava) - {0x8e754622, 0x00a85e74}, // 0b0010101000010111100111010010001110011101010100011000100010 (Flygon) - {0xce1306a1, 0x00b01e40}, // 0b0010110000000111100100000011001110000100110000011010100001 (Makuhita) - {0xce1346a1, 0x00b01e40}, // 0b0010110000000111100100000011001110000100110100011010100001 (Hariyama) - {0x85d30230, 0x00603e02}, // 0b0001100000001111100000001010000101110100110000001000110000 (Electrike) - {0x85d34230, 0x00603e02}, // 0b0001100000001111100000001010000101110100110100001000110000 (Manectric) - {0x8e110620, 0x00a21e74}, // 0b0010100010000111100111010010001110000100010000011000100000 (Numel) - {0x8e114630, 0x00a21e74}, // 0b0010100010000111100111010010001110000100010100011000110000 (Camerupt) - {0x86533264, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110011001001100100 (Spheal) - {0x86533274, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110011001001110100 (Sealeo) - {0x86537274, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110111001001110100 (Walrein) - {0x84350721, 0x00441e10}, // 0b0001000100000111100001000010000100001101010000011100100001 (Cacnea) - {0x84354721, 0x00641e10}, // 0b0001100100000111100001000010000100001101010100011100100001 (Cacturne) - {0xa41bb264, 0x00401e00}, // 0b0001000000000111100000000010100100000110111011001001100100 (Snorunt) - {0xa61bfa64, 0x00401f00}, // 0b0001000000000111110000000010100110000110111111101001100100 (Glalie) - {0xb61bd228, 0x00408e51}, // 0b0001000000100011100101000110110110000110111101001000101000 (Lunatone) - {0xb639c628, 0x00428e75}, // 0b0001000010100011100111010110110110001110011100011000101000 (Solrock) - {0x84533264, 0x01101e00}, // 0b0100010000000111100000000010000100010100110011001001100100 (Azurill) - {0xb4538e28, 0x0041bf03}, // 0b0001000001101111110000001110110100010100111000111000101000 (Spoink) - {0xb453ce29, 0x0041bf03}, // 0b0001000001101111110000001110110100010100111100111000101001 (Grumpig) - {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Plusle) - {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Minun) - {0xc4335e21, 0x00a01f7c}, // 0b0010100000000111110111110011000100001100110101111000100001 (Mawile) - {0xf41386a9, 0x00e01e41}, // 0b0011100000000111100100000111110100000100111000011010101001 (Meditite) - {0xf413c6a9, 0x00e01e41}, // 0b0011100000000111100100000111110100000100111100011010101001 (Medicham) - {0x843b1620, 0x00087e80}, // 0b0000001000011111101000000010000100001110110001011000100000 (Swablu) - {0x867b5632, 0x00887ea4}, // 0b0010001000011111101010010010000110011110110101011000110010 (Altaria) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wynaut) - {0xb4133e28, 0x0041bf00}, // 0b0001000001101111110000000010110100000100110011111000101000 (Duskull) - {0xb6137e29, 0x00e1bf40}, // 0b0011100001101111110100000010110110000100110111111000101001 (Dusclops) - {0xa4350720, 0x00441e08}, // 0b0001000100000111100000100010100100001101010000011100100000 (Roselia) - {0xe5b336a5, 0x00a41ea6}, // 0b0010100100000111101010011011100101101100110011011010100101 (Slakoth) - {0xe7b33eb5, 0x00a41ea6}, // 0b0010100100000111101010011011100111101100110011111010110101 (Vigoroth) - {0xe7b37eb5, 0x00a41ea6}, // 0b0010100100000111101010011011100111101100110111111010110101 (Slaking) - {0xa4371724, 0x00a11e0a}, // 0b0010100001000111100000101010100100001101110001011100100100 (Gulpin) - {0xa4375724, 0x00a11e0a}, // 0b0010100001000111100000101010100100001101110101011100100100 (Swalot) - {0x863d4730, 0x00ec5e80}, // 0b0011101100010111101000000010000110001111010100011100110000 (Tropius) - {0xa4333634, 0x00001e26}, // 0b0000000000000111100010011010100100001100110011011000110100 (Whismur) - {0xe6333e34, 0x00a21f26}, // 0b0010100010000111110010011011100110001100110011111000110100 (Loudred) - {0xe6337e34, 0x00a21f26}, // 0b0010100010000111110010011011100110001100110111111000110100 (Exploud) - {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Clamperl) - {0x84137264, 0x03111e40}, // 0b1100010001000111100100000010000100000100110111001001100100 (Huntail) - {0xb41b7264, 0x03101e00}, // 0b1100010000000111100000000010110100000110110111001001100100 (Gorebyss) - {0xa5d37e6c, 0x00e53fb6}, // 0b0011100101001111111011011010100101110100110111111001101100 (Absol) - {0xb5930e28, 0x0041bf02}, // 0b0001000001101111110000001010110101100100110000111000101000 (Shuppet) - {0xb5934e28, 0x0041bf02}, // 0b0001000001101111110000001010110101100100110100111000101000 (Banette) - {0x8e570e20, 0x00a13e0c}, // 0b0010100001001111100000110010001110010101110000111000100000 (Seviper) - {0xedf73e35, 0x00a03ea6}, // 0b0010100000001111101010011011101101111101110011111000110101 (Zangoose) - {0x861b726c, 0x03901e50}, // 0b1110010000000111100101000010000110000110110111001001101100 (Relicanth) - {0x8e530634, 0x00a41ed2}, // 0b0010100100000111101101001010001110010100110000011000110100 (Aron) - {0x8e530634, 0x00a41ed2}, // 0b0010100100000111101101001010001110010100110000011000110100 (Lairon) - {0xcff37e37, 0x00b41ef6}, // 0b0010110100000111101111011011001111111100110111111000110111 (Aggron) - {0xa5b33664, 0x00403e36}, // 0b0001000000001111100011011010100101101100110011011001100100 (Castform) - {0xe5b78625, 0x00403e82}, // 0b0001000000001111101000001011100101101101111000011000100101 (Volbeat) - {0xe5b78625, 0x00403e82}, // 0b0001000000001111101000001011100101101101111000011000100101 (Illumise) - {0x84350720, 0x00001e18}, // 0b0000000000000111100001100010000100001101010000011100100000 (Lileep) - {0x86354720, 0x00a01e58}, // 0b0010100000000111100101100010000110001101010100011100100000 (Cradily) - {0xcc110624, 0x00841ed0}, // 0b0010000100000111101101000011001100000100010000011000100100 (Anorith) - {0xce514624, 0x00a41ed0}, // 0b0010100100000111101101000011001110010100010100011000100100 (Armaldo) - {0xb49b8e28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111000111000101000 (Ralts) - {0xb49b8e28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111000111000101000 (Kirlia) - {0xb49bce28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111100111000101000 (Gardevoir) - {0xc4130632, 0x00a41ee4}, // 0b0010100100000111101110010011000100000100110000011000110010 (Bagon) - {0xc4130632, 0x00a41ee4}, // 0b0010100100000111101110010011000100000100110000011000110010 (Shelgon) - {0xc6534632, 0x00ac5ee4}, // 0b0010101100010111101110010011000110010100110100011000110010 (Salamence) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Beldum) - {0xf613c620, 0x00e40ed9}, // 0b0011100100000011101101100111110110000100111100011000100000 (Metang) - {0xf613c620, 0x00e40ed9}, // 0b0011100100000011101101100111110110000100111100011000100000 (Metagross) - {0xcf994621, 0x00a00e52}, // 0b0010100000000011100101001011001111100110010100011000100001 (Regirock) - {0xc79b7261, 0x00a00e02}, // 0b0010100000000011100000001011000111100110110111001001100001 (Regice) - {0xc79b4621, 0x00a00ed2}, // 0b0010100000000011101101001011000111100110110100011000100001 (Registeel) - {0xc79b727c, 0x03b00e42}, // 0b1110110000000011100100001011000111100110110111001001111100 (Kyogre) - {0xcff946b2, 0x00a60ef6}, // 0b0010100110000011101111011011001111111110010100011010110010 (Groudon) - {0xc7f376b6, 0x03ba0eb6}, // 0b1110111010000011101011011011000111111100110111011010110110 (Rayquaza) - {0xb7bbd63e, 0x035c5e93}, // 0b1101011100010111101001001110110111101110111101011000111110 (Latias) - {0xb7bbd63e, 0x035c5e93}, // 0b1101011100010111101001001110110111101110111101011000111110 (Latios) - {0xb59bc62c, 0x00408e93}, // 0b0001000000100011101001001110110101100110111100011000101100 (Jirachi) - {0xf5bbde2d, 0x00e58fc3}, // 0b0011100101100011111100001111110101101110111101111000101101 (Deoxys) - {0xb41b8e28, 0x00419f03}, // 0b0001000001100111110000001110110100000110111000111000101000 (Chimecho) -}; - -const u8 gTrainerClassToPicIndex[] = { - TRAINER_PIC_ARCHIE, // AQUA_LEADER - TRAINER_PIC_AQUA_GRUNT_M, // TEAM_AQUA_M - TRAINER_PIC_AQUA_GRUNT_F, // TEAM_AQUA_F - TRAINER_PIC_AROMA_LADY, // AROMA_LADY - TRAINER_PIC_RUIN_MANIAC, // RUIN_MANIAC - TRAINER_PIC_INTERVIEWER, // INTERVIEWER - TRAINER_PIC_TUBER_F, // TUBER_F - TRAINER_PIC_TUBER_M, // TUBER_M - TRAINER_PIC_COOL_TRAINER_M, // COOL_TRAINER_M - TRAINER_PIC_COOL_TRAINER_F, // COOL_TRAINER_F - TRAINER_PIC_HEX_MANIAC, // HEX_MANIAC - TRAINER_PIC_LADY, // LADY - TRAINER_PIC_BEAUTY, // BEAUTY - TRAINER_PIC_RICH_BOY, // RICH_BOY - TRAINER_PIC_POKEMANIAC, // POKEMANIAC - TRAINER_PIC_SWIMMER_M, // SWIMMER_M - TRAINER_PIC_BLACK_BELT, // BLACK_BELT - TRAINER_PIC_GUITARIST, // GUITARIST - TRAINER_PIC_KINDLER, // KINDLER - TRAINER_PIC_CAMPER, // CAMPER - TRAINER_PIC_BUG_MANIAC, // BUG_MANIAC - TRAINER_PIC_PSYCHIC_M, // PSYCHIC_M - TRAINER_PIC_PSYCHIC_F, // PSYCHIC_F - TRAINER_PIC_GENTLEMAN, // GENTLEMAN - TRAINER_PIC_SIDNEY, // ELITE_FOUR_M - TRAINER_PIC_PHOEBE, // ELITE_FOUR_F - TRAINER_PIC_ROXANNE, // LEADER_F - TRAINER_PIC_BRAWLY, // LEADER_M - TRAINER_PIC_TATE_AND_LIZA, // LEADER_MF - TRAINER_PIC_SCHOOL_KID_M, // SCHOOL_KID_M - TRAINER_PIC_SCHOOL_KID_F, // SCHOOL_KID_F - TRAINER_PIC_SR_AND_JR, // SR_AND_JR - TRAINER_PIC_POKEFAN_M, // POKEFAN_M - TRAINER_PIC_POKEFAN_F, // POKEFAN_F - TRAINER_PIC_EXPERT_M, // EXPERT_M - TRAINER_PIC_EXPERT_F, // EXPERT_F - TRAINER_PIC_YOUNGSTER, // YOUNGSTER - TRAINER_PIC_STEVEN, // CHAMPION - TRAINER_PIC_FISHERMAN, // FISHERMAN - TRAINER_PIC_CYCLING_TRIATHLETE_M, // CYCLING_TRIATHLETE_M - TRAINER_PIC_CYCLING_TRIATHLETE_F, // CYCLING_TRIATHLETE_F - TRAINER_PIC_RUNNING_TRIATHLETE_M, // RUNNING_TRIATHLETE_M - TRAINER_PIC_RUNNING_TRIATHLETE_F, // RUNNING_TRIATHLETE_F - TRAINER_PIC_SWIMMING_TRIATHLETE_M, // SWIMMING_TRIATHLETE_M - TRAINER_PIC_SWIMMING_TRIATHLETE_F, // SWIMMING_TRIATHLETE_F - TRAINER_PIC_DRAGON_TAMER, // DRAGON_TAMER - TRAINER_PIC_BIRD_KEEPER, // BIRD_KEEPER - TRAINER_PIC_NINJA_BOY, // NINJA_BOY - TRAINER_PIC_BATTLE_GIRL, // BATTLE_GIRL - TRAINER_PIC_PARASOL_LADY, // PARASOL_LADY - TRAINER_PIC_SWIMMER_F, // SWIMMER_F - TRAINER_PIC_PICNICKER, // PICNICKER - TRAINER_PIC_TWINS, // TWINS - TRAINER_PIC_SAILOR, // SAILOR - TRAINER_PIC_YOUNGSTER, // BOARDER_1 - TRAINER_PIC_YOUNGSTER, // BOARDER_2 - TRAINER_PIC_COLLECTOR, // COLLECTOR - TRAINER_PIC_WALLY, // WALLY - TRAINER_PIC_BRENDAN, // BRENDAN_1 - TRAINER_PIC_BRENDAN, // BRENDAN_2 - TRAINER_PIC_BRENDAN, // BRENDAN_3 - TRAINER_PIC_MAY, // MAY_1 - TRAINER_PIC_MAY, // MAY_2 - TRAINER_PIC_MAY, // MAY_3 - TRAINER_PIC_POKEMON_BREEDER_M, // POKEMON_BREEDER_M - TRAINER_PIC_POKEMON_BREEDER_F, // POKEMON_BREEDER_F - TRAINER_PIC_POKEMON_RANGER_M, // POKEMON_RANGER_M - TRAINER_PIC_POKEMON_RANGER_F, // POKEMON_RANGER_F - TRAINER_PIC_MAXIE, // MAGMA_LEADER - TRAINER_PIC_MAGMA_GRUNT_M, // TEAM_MAGMA_M - TRAINER_PIC_MAGMA_GRUNT_F, // TEAM_MAGMA_F - TRAINER_PIC_LASS, // LASS - TRAINER_PIC_BUG_CATCHER, // BUG_CATCHER - TRAINER_PIC_HIKER, // HIKER - TRAINER_PIC_YOUNG_COUPLE, // YOUNG_COUPLE - TRAINER_PIC_OLD_COUPLE, // OLD_COUPLE - TRAINER_PIC_SIS_AND_BRO // SIS_AND_BRO -}; - -const u8 gTrainerClassToNameIndex[] = { - TRAINER_CLASS_NAME_AQUA_LEADER, // AQUA_LEADER - TRAINER_CLASS_NAME_TEAM_AQUA, // TEAM_AQUA_M - TRAINER_CLASS_NAME_TEAM_AQUA, // TEAM_AQUA_F - TRAINER_CLASS_NAME_AROMA_LADY, // AROMA_LADY - TRAINER_CLASS_NAME_RUIN_MANIAC, // RUIN_MANIAC - TRAINER_CLASS_NAME_INTERVIEWER, // INTERVIEWER - TRAINER_CLASS_NAME_TUBER_F, // TUBER_F - TRAINER_CLASS_NAME_TUBER_M, // TUBER_M - TRAINER_CLASS_NAME_COOL_TRAINER, // COOL_TRAINER_M - TRAINER_CLASS_NAME_COOL_TRAINER, // COOL_TRAINER_F - TRAINER_CLASS_NAME_HEX_MANIAC, // HEX_MANIAC - TRAINER_CLASS_NAME_LADY, // LADY - TRAINER_CLASS_NAME_BEAUTY, // BEAUTY - TRAINER_CLASS_NAME_RICH_BOY, // RICH_BOY - TRAINER_CLASS_NAME_POKEMANIAC, // POKEMANIAC - TRAINER_CLASS_NAME_SWIMMER_M, // SWIMMER_M - TRAINER_CLASS_NAME_BLACK_BELT, // BLACK_BELT - TRAINER_CLASS_NAME_GUITARIST, // GUITARIST - TRAINER_CLASS_NAME_KINDLER, // KINDLER - TRAINER_CLASS_NAME_CAMPER, // CAMPER - TRAINER_CLASS_NAME_BUG_MANIAC, // BUG_MANIAC - TRAINER_CLASS_NAME_PSYCHIC, // PSYCHIC_M - TRAINER_CLASS_NAME_PSYCHIC, // PSYCHIC_F - TRAINER_CLASS_NAME_GENTLEMAN, // GENTLEMAN - TRAINER_CLASS_NAME_ELITE_FOUR, // ELITE_FOUR_M - TRAINER_CLASS_NAME_ELITE_FOUR, // ELITE_FOUR_F - TRAINER_CLASS_NAME_LEADER, // LEADER_F - TRAINER_CLASS_NAME_LEADER, // LEADER_M - TRAINER_CLASS_NAME_LEADER, // LEADER_MF - TRAINER_CLASS_NAME_SCHOOL_KID, // SCHOOL_KID_M - TRAINER_CLASS_NAME_SCHOOL_KID, // SCHOOL_KID_F - TRAINER_CLASS_NAME_SR_AND_JR, // SR_AND_JR - TRAINER_CLASS_NAME_POKEFAN, // POKEFAN_M - TRAINER_CLASS_NAME_POKEFAN, // POKEFAN_F - TRAINER_CLASS_NAME_EXPERT, // EXPERT_M - TRAINER_CLASS_NAME_EXPERT, // EXPERT_F - TRAINER_CLASS_NAME_YOUNGSTER, // YOUNGSTER - TRAINER_CLASS_NAME_CHAMPION, // CHAMPION - TRAINER_CLASS_NAME_FISHERMAN, // FISHERMAN - TRAINER_CLASS_NAME_TRIATHLETE, // CYCLING_TRIATHLETE_M - TRAINER_CLASS_NAME_TRIATHLETE, // CYCLING_TRIATHLETE_F - TRAINER_CLASS_NAME_TRIATHLETE, // RUNNING_TRIATHLETE_M - TRAINER_CLASS_NAME_TRIATHLETE, // RUNNING_TRIATHLETE_F - TRAINER_CLASS_NAME_TRIATHLETE, // SWIMMING_TRIATHLETE_M - TRAINER_CLASS_NAME_TRIATHLETE, // SWIMMING_TRIATHLETE_F - TRAINER_CLASS_NAME_DRAGON_TAMER, // DRAGON_TAMER - TRAINER_CLASS_NAME_BIRD_KEEPER, // BIRD_KEEPER - TRAINER_CLASS_NAME_NINJA_BOY, // NINJA_BOY - TRAINER_CLASS_NAME_BATTLE_GIRL, // BATTLE_GIRL - TRAINER_CLASS_NAME_PARASOL_LADY, // PARASOL_LADY - TRAINER_CLASS_NAME_SWIMMER_F, // SWIMMER_F - TRAINER_CLASS_NAME_PICNICKER, // PICNICKER - TRAINER_CLASS_NAME_TWINS, // TWINS - TRAINER_CLASS_NAME_SAILOR, // SAILOR - TRAINER_CLASS_NAME_BOARDER, // BOARDER_1 - TRAINER_CLASS_NAME_BOARDER, // BOARDER_2 - TRAINER_CLASS_NAME_COLLECTOR, // COLLECTOR - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // WALLY - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_1 - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_2 - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // BRENDAN_3 - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_1 - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_2 - TRAINER_CLASS_NAME_POKEMON_TRAINER_3, // MAY_3 - TRAINER_CLASS_NAME_POKEMON_BREEDER, // POKEMON_BREEDER_M - TRAINER_CLASS_NAME_POKEMON_BREEDER, // POKEMON_BREEDER_F - TRAINER_CLASS_NAME_POKEMON_RANGER, // POKEMON_RANGER_M - TRAINER_CLASS_NAME_POKEMON_RANGER, // POKEMON_RANGER_F - TRAINER_CLASS_NAME_MAGMA_LEADER, // MAGMA_LEADER - TRAINER_CLASS_NAME_TEAM_MAGMA, // TEAM_MAGMA_M - TRAINER_CLASS_NAME_TEAM_MAGMA, // TEAM_MAGMA_F - TRAINER_CLASS_NAME_LASS, // LASS - TRAINER_CLASS_NAME_BUG_CATCHER, // BUG_CATCHER - TRAINER_CLASS_NAME_HIKER, // HIKER - TRAINER_CLASS_NAME_YOUNG_COUPLE, // YOUNG_COUPLE - TRAINER_CLASS_NAME_OLD_COUPLE, // OLD_COUPLE - TRAINER_CLASS_NAME_SIS_AND_BRO // SIS_AND_BRO -}; - -const u16 gSpeciesIdToCryId[] = { - 273, // TREECKO - 274, // GROVYLE - 275, // SCEPTILE - 270, // TORCHIC - 271, // COMBUSKEN - 272, // BLAZIKEN - 276, // MUDKIP - 277, // MARSHTOMP - 278, // SWAMPERT - 359, // POOCHYENA - 360, // MIGHTYENA - 378, // ZIGZAGOON - 375, // LINOONE - 290, // WURMPLE - 291, // SILCOON - 292, // BEAUTIFLY - 293, // CASCOON - 294, // DUSTOX - 283, // LOTAD - 284, // LOMBRE - 285, // LUDICOLO - 286, // SEEDOT - 287, // NUZLEAF - 288, // SHIFTRY - 301, // NINCADA - 302, // NINJASK - 303, // SHEDINJA - 266, // TAILLOW - 267, // SWELLOW - 374, // SHROOMISH - 373, // BRELOOM - 269, // SPINDA - 280, // WINGULL - 279, // PELIPPER - 310, // SURSKIT - 311, // MASQUERAIN - 377, // WAILMER - 381, // WAILORD - 312, // SKITTY - 313, // DELCATTY - 251, // KECLEON - 329, // BALTOY - 330, // CLAYDOL - 306, // NOSEPASS - 253, // TORKOAL - 362, // SABLEYE - 318, // BARBOACH - 319, // WHISCASH - 368, // LUVDISC - 320, // CORPHISH - 321, // CRAWDAUNT - 333, // FEEBAS - 334, // MILOTIC - 289, // CARVANHA - 260, // SHARPEDO - 324, // TRAPINCH - 325, // VIBRAVA - 326, // FLYGON - 304, // MAKUHITA - 305, // HARIYAMA - 254, // ELECTRIKE - 255, // MANECTRIC - 316, // NUMEL - 317, // CAMERUPT - 338, // SPHEAL - 339, // SEALEO - 340, // WALREIN - 327, // CACNEA - 328, // CACTURNE - 383, // SNORUNT - 307, // GLALIE - 331, // LUNATONE - 332, // SOLROCK - 262, // AZURILL - 322, // SPOINK - 323, // GRUMPIG - 308, // PLUSLE - 309, // MINUN - 363, // MAWILE - 336, // MEDITITE - 337, // MEDICHAM - 263, // SWABLU - 264, // ALTARIA - 258, // WYNAUT - 256, // DUSKULL - 361, // DUSCLOPS - 252, // ROSELIA - 298, // SLAKOTH - 299, // VIGOROTH - 300, // SLAKING - 314, // GULPIN - 315, // SWALOT - 376, // TROPIUS - 382, // WHISMUR - 380, // LOUDRED - 379, // EXPLOUD - 341, // CLAMPERL - 342, // HUNTAIL - 343, // GOREBYSS - 335, // ABSOL - 282, // SHUPPET - 281, // BANETTE - 259, // SEVIPER - 261, // ZANGOOSE - 367, // RELICANTH - 364, // ARON - 365, // LAIRON - 366, // AGGRON - 356, // CASTFORM - 357, // VOLBEAT - 358, // ILLUMISE - 344, // LILEEP - 345, // CRADILY - 346, // ANORITH - 347, // ARMALDO - 295, // RALTS - 296, // KIRLIA - 297, // GARDEVOIR - 351, // BAGON - 352, // SHELGON - 372, // SALAMENCE - 348, // BELDUM - 349, // METANG - 350, // METAGROSS - 353, // REGIROCK - 354, // REGICE - 355, // REGISTEEL - 370, // KYOGRE - 369, // GROUDON - 371, // RAYQUAZA - 257, // LATIAS - 384, // LATIOS - 385, // JIRACHI - 386, // DEOXYS - 387 // CHIMECHO -}; - -const u32 gExperienceTables[][101] = { - { // Medium Fast - 0, // 0 - 1, // 1 - 8, // 2 - 27, // 3 - 64, // 4 - 125, // 5 - 216, // 6 - 343, // 7 - 512, // 8 - 729, // 9 - 1000, // 10 - 1331, // 11 - 1728, // 12 - 2197, // 13 - 2744, // 14 - 3375, // 15 - 4096, // 16 - 4913, // 17 - 5832, // 18 - 6859, // 19 - 8000, // 20 - 9261, // 21 - 10648, // 22 - 12167, // 23 - 13824, // 24 - 15625, // 25 - 17576, // 26 - 19683, // 27 - 21952, // 28 - 24389, // 29 - 27000, // 30 - 29791, // 31 - 32768, // 32 - 35937, // 33 - 39304, // 34 - 42875, // 35 - 46656, // 36 - 50653, // 37 - 54872, // 38 - 59319, // 39 - 64000, // 40 - 68921, // 41 - 74088, // 42 - 79507, // 43 - 85184, // 44 - 91125, // 45 - 97336, // 46 - 103823, // 47 - 110592, // 48 - 117649, // 49 - 125000, // 50 - 132651, // 51 - 140608, // 52 - 148877, // 53 - 157464, // 54 - 166375, // 55 - 175616, // 56 - 185193, // 57 - 195112, // 58 - 205379, // 59 - 216000, // 60 - 226981, // 61 - 238328, // 62 - 250047, // 63 - 262144, // 64 - 274625, // 65 - 287496, // 66 - 300763, // 67 - 314432, // 68 - 328509, // 69 - 343000, // 70 - 357911, // 71 - 373248, // 72 - 389017, // 73 - 405224, // 74 - 421875, // 75 - 438976, // 76 - 456533, // 77 - 474552, // 78 - 493039, // 79 - 512000, // 80 - 531441, // 81 - 551368, // 82 - 571787, // 83 - 592704, // 84 - 614125, // 85 - 636056, // 86 - 658503, // 87 - 681472, // 88 - 704969, // 89 - 729000, // 90 - 753571, // 91 - 778688, // 92 - 804357, // 93 - 830584, // 94 - 857375, // 95 - 884736, // 96 - 912673, // 97 - 941192, // 98 - 970299, // 99 - 1000000 // 100 - }, { // Erratic - 0, // 0 - 1, // 1 - 15, // 2 - 52, // 3 - 122, // 4 - 237, // 5 - 406, // 6 - 637, // 7 - 942, // 8 - 1326, // 9 - 1800, // 10 - 2369, // 11 - 3041, // 12 - 3822, // 13 - 4719, // 14 - 5737, // 15 - 6881, // 16 - 8155, // 17 - 9564, // 18 - 11111, // 19 - 12800, // 20 - 14632, // 21 - 16610, // 22 - 18737, // 23 - 21012, // 24 - 23437, // 25 - 26012, // 26 - 28737, // 27 - 31610, // 28 - 34632, // 29 - 37800, // 30 - 41111, // 31 - 44564, // 32 - 48155, // 33 - 51881, // 34 - 55737, // 35 - 59719, // 36 - 63822, // 37 - 68041, // 38 - 72369, // 39 - 76800, // 40 - 81326, // 41 - 85942, // 42 - 90637, // 43 - 95406, // 44 - 100237, // 45 - 105122, // 46 - 110052, // 47 - 115015, // 48 - 120001, // 49 - 125000, // 50 - 131324, // 51 - 137795, // 52 - 144410, // 53 - 151165, // 54 - 158056, // 55 - 165079, // 56 - 172229, // 57 - 179503, // 58 - 186894, // 59 - 194400, // 60 - 202013, // 61 - 209728, // 62 - 217540, // 63 - 225443, // 64 - 233431, // 65 - 241496, // 66 - 249633, // 67 - 257834, // 68 - 267406, // 69 - 276458, // 70 - 286328, // 71 - 296358, // 72 - 305767, // 73 - 316074, // 74 - 326531, // 75 - 336255, // 76 - 346965, // 77 - 357812, // 78 - 367807, // 79 - 378880, // 80 - 390077, // 81 - 400293, // 82 - 411686, // 83 - 423190, // 84 - 433572, // 85 - 445239, // 86 - 457001, // 87 - 467489, // 88 - 479378, // 89 - 491346, // 90 - 501878, // 91 - 513934, // 92 - 526049, // 93 - 536557, // 94 - 548720, // 95 - 560922, // 96 - 571333, // 97 - 583539, // 98 - 591882, // 99 - 600000 // 100 - }, { // Fluctuating - 0, // 0 - 1, // 1 - 4, // 2 - 13, // 3 - 32, // 4 - 65, // 5 - 112, // 6 - 178, // 7 - 276, // 8 - 393, // 9 - 540, // 10 - 745, // 11 - 967, // 12 - 1230, // 13 - 1591, // 14 - 1957, // 15 - 2457, // 16 - 3046, // 17 - 3732, // 18 - 4526, // 19 - 5440, // 20 - 6482, // 21 - 7666, // 22 - 9003, // 23 - 10506, // 24 - 12187, // 25 - 14060, // 26 - 16140, // 27 - 18439, // 28 - 20974, // 29 - 23760, // 30 - 26811, // 31 - 30146, // 32 - 33780, // 33 - 37731, // 34 - 42017, // 35 - 46656, // 36 - 50653, // 37 - 55969, // 38 - 60505, // 39 - 66560, // 40 - 71677, // 41 - 78533, // 42 - 84277, // 43 - 91998, // 44 - 98415, // 45 - 107069, // 46 - 114205, // 47 - 123863, // 48 - 131766, // 49 - 142500, // 50 - 151222, // 51 - 163105, // 52 - 172697, // 53 - 185807, // 54 - 196322, // 55 - 210739, // 56 - 222231, // 57 - 238036, // 58 - 250562, // 59 - 267840, // 60 - 281456, // 61 - 300293, // 62 - 315059, // 63 - 335544, // 64 - 351520, // 65 - 373744, // 66 - 390991, // 67 - 415050, // 68 - 433631, // 69 - 459620, // 70 - 479600, // 71 - 507617, // 72 - 529063, // 73 - 559209, // 74 - 582187, // 75 - 614566, // 76 - 639146, // 77 - 673863, // 78 - 700115, // 79 - 737280, // 80 - 765275, // 81 - 804997, // 82 - 834809, // 83 - 877201, // 84 - 908905, // 85 - 954084, // 86 - 987754, // 87 - 1035837, // 88 - 1071552, // 89 - 1122660, // 90 - 1160499, // 91 - 1214753, // 92 - 1254796, // 93 - 1312322, // 94 - 1354652, // 95 - 1415577, // 96 - 1460276, // 97 - 1524731, // 98 - 1571884, // 99 - 1640000 // 100 - }, { // Medium Slow - 0, // 0 - 1, // 1 - 9, // 2 - 57, // 3 - 96, // 4 - 135, // 5 - 179, // 6 - 236, // 7 - 314, // 8 - 419, // 9 - 560, // 10 - 742, // 11 - 973, // 12 - 1261, // 13 - 1612, // 14 - 2035, // 15 - 2535, // 16 - 3120, // 17 - 3798, // 18 - 4575, // 19 - 5460, // 20 - 6458, // 21 - 7577, // 22 - 8825, // 23 - 10208, // 24 - 11735, // 25 - 13411, // 26 - 15244, // 27 - 17242, // 28 - 19411, // 29 - 21760, // 30 - 24294, // 31 - 27021, // 32 - 29949, // 33 - 33084, // 34 - 36435, // 35 - 40007, // 36 - 43808, // 37 - 47846, // 38 - 52127, // 39 - 56660, // 40 - 61450, // 41 - 66505, // 42 - 71833, // 43 - 77440, // 44 - 83335, // 45 - 89523, // 46 - 96012, // 47 - 102810, // 48 - 109923, // 49 - 117360, // 50 - 125126, // 51 - 133229, // 52 - 141677, // 53 - 150476, // 54 - 159635, // 55 - 169159, // 56 - 179056, // 57 - 189334, // 58 - 199999, // 59 - 211060, // 60 - 222522, // 61 - 234393, // 62 - 246681, // 63 - 259392, // 64 - 272535, // 65 - 286115, // 66 - 300140, // 67 - 314618, // 68 - 329555, // 69 - 344960, // 70 - 360838, // 71 - 377197, // 72 - 394045, // 73 - 411388, // 74 - 429235, // 75 - 447591, // 76 - 466464, // 77 - 485862, // 78 - 505791, // 79 - 526260, // 80 - 547274, // 81 - 568841, // 82 - 590969, // 83 - 613664, // 84 - 636935, // 85 - 660787, // 86 - 685228, // 87 - 710266, // 88 - 735907, // 89 - 762160, // 90 - 789030, // 91 - 816525, // 92 - 844653, // 93 - 873420, // 94 - 902835, // 95 - 932903, // 96 - 963632, // 97 - 995030, // 98 - 1027103, // 99 - 1059860 // 100 - }, { // Fast - 0, // 0 - 1, // 1 - 6, // 2 - 21, // 3 - 51, // 4 - 100, // 5 - 172, // 6 - 274, // 7 - 409, // 8 - 583, // 9 - 800, // 10 - 1064, // 11 - 1382, // 12 - 1757, // 13 - 2195, // 14 - 2700, // 15 - 3276, // 16 - 3930, // 17 - 4665, // 18 - 5487, // 19 - 6400, // 20 - 7408, // 21 - 8518, // 22 - 9733, // 23 - 11059, // 24 - 12500, // 25 - 14060, // 26 - 15746, // 27 - 17561, // 28 - 19511, // 29 - 21600, // 30 - 23832, // 31 - 26214, // 32 - 28749, // 33 - 31443, // 34 - 34300, // 35 - 37324, // 36 - 40522, // 37 - 43897, // 38 - 47455, // 39 - 51200, // 40 - 55136, // 41 - 59270, // 42 - 63605, // 43 - 68147, // 44 - 72900, // 45 - 77868, // 46 - 83058, // 47 - 88473, // 48 - 94119, // 49 - 100000, // 50 - 106120, // 51 - 112486, // 52 - 119101, // 53 - 125971, // 54 - 133100, // 55 - 140492, // 56 - 148154, // 57 - 156089, // 58 - 164303, // 59 - 172800, // 60 - 181584, // 61 - 190662, // 62 - 200037, // 63 - 209715, // 64 - 219700, // 65 - 229996, // 66 - 240610, // 67 - 251545, // 68 - 262807, // 69 - 274400, // 70 - 286328, // 71 - 298598, // 72 - 311213, // 73 - 324179, // 74 - 337500, // 75 - 351180, // 76 - 365226, // 77 - 379641, // 78 - 394431, // 79 - 409600, // 80 - 425152, // 81 - 441094, // 82 - 457429, // 83 - 474163, // 84 - 491300, // 85 - 508844, // 86 - 526802, // 87 - 545177, // 88 - 563975, // 89 - 583200, // 90 - 602856, // 91 - 622950, // 92 - 643485, // 93 - 664467, // 94 - 685900, // 95 - 707788, // 96 - 730138, // 97 - 752953, // 98 - 776239, // 99 - 800000 // 100 - }, { // Slow - 0, // 0 - 1, // 1 - 10, // 2 - 33, // 3 - 80, // 4 - 156, // 5 - 270, // 6 - 428, // 7 - 640, // 8 - 911, // 9 - 1250, // 10 - 1663, // 11 - 2160, // 12 - 2746, // 13 - 3430, // 14 - 4218, // 15 - 5120, // 16 - 6141, // 17 - 7290, // 18 - 8573, // 19 - 10000, // 20 - 11576, // 21 - 13310, // 22 - 15208, // 23 - 17280, // 24 - 19531, // 25 - 21970, // 26 - 24603, // 27 - 27440, // 28 - 30486, // 29 - 33750, // 30 - 37238, // 31 - 40960, // 32 - 44921, // 33 - 49130, // 34 - 53593, // 35 - 58320, // 36 - 63316, // 37 - 68590, // 38 - 74148, // 39 - 80000, // 40 - 86151, // 41 - 92610, // 42 - 99383, // 43 - 106480, // 44 - 113906, // 45 - 121670, // 46 - 129778, // 47 - 138240, // 48 - 147061, // 49 - 156250, // 50 - 165813, // 51 - 175760, // 52 - 186096, // 53 - 196830, // 54 - 207968, // 55 - 219520, // 56 - 231491, // 57 - 243890, // 58 - 256723, // 59 - 270000, // 60 - 283726, // 61 - 297910, // 62 - 312558, // 63 - 327680, // 64 - 343281, // 65 - 359370, // 66 - 375953, // 67 - 393040, // 68 - 410636, // 69 - 428750, // 70 - 447388, // 71 - 466560, // 72 - 486271, // 73 - 506530, // 74 - 527343, // 75 - 548720, // 76 - 570666, // 77 - 593190, // 78 - 616298, // 79 - 640000, // 80 - 664301, // 81 - 689210, // 82 - 714733, // 83 - 740880, // 84 - 767656, // 85 - 795070, // 86 - 823128, // 87 - 851840, // 88 - 881211, // 89 - 911250, // 90 - 941963, // 91 - 973360, // 92 - 1005446, // 93 - 1038230, // 94 - 1071718, // 95 - 1105920, // 96 - 1140841, // 97 - 1176490, // 98 - 1212873, // 99 - 1250000 // 100 - }, { // Medium Fast copy 2 (unused? to-do: investigate) - 0, // 0 - 1, // 1 - 8, // 2 - 27, // 3 - 64, // 4 - 125, // 5 - 216, // 6 - 343, // 7 - 512, // 8 - 729, // 9 - 1000, // 10 - 1331, // 11 - 1728, // 12 - 2197, // 13 - 2744, // 14 - 3375, // 15 - 4096, // 16 - 4913, // 17 - 5832, // 18 - 6859, // 19 - 8000, // 20 - 9261, // 21 - 10648, // 22 - 12167, // 23 - 13824, // 24 - 15625, // 25 - 17576, // 26 - 19683, // 27 - 21952, // 28 - 24389, // 29 - 27000, // 30 - 29791, // 31 - 32768, // 32 - 35937, // 33 - 39304, // 34 - 42875, // 35 - 46656, // 36 - 50653, // 37 - 54872, // 38 - 59319, // 39 - 64000, // 40 - 68921, // 41 - 74088, // 42 - 79507, // 43 - 85184, // 44 - 91125, // 45 - 97336, // 46 - 103823, // 47 - 110592, // 48 - 117649, // 49 - 125000, // 50 - 132651, // 51 - 140608, // 52 - 148877, // 53 - 157464, // 54 - 166375, // 55 - 175616, // 56 - 185193, // 57 - 195112, // 58 - 205379, // 59 - 216000, // 60 - 226981, // 61 - 238328, // 62 - 250047, // 63 - 262144, // 64 - 274625, // 65 - 287496, // 66 - 300763, // 67 - 314432, // 68 - 328509, // 69 - 343000, // 70 - 357911, // 71 - 373248, // 72 - 389017, // 73 - 405224, // 74 - 421875, // 75 - 438976, // 76 - 456533, // 77 - 474552, // 78 - 493039, // 79 - 512000, // 80 - 531441, // 81 - 551368, // 82 - 571787, // 83 - 592704, // 84 - 614125, // 85 - 636056, // 86 - 658503, // 87 - 681472, // 88 - 704969, // 89 - 729000, // 90 - 753571, // 91 - 778688, // 92 - 804357, // 93 - 830584, // 94 - 857375, // 95 - 884736, // 96 - 912673, // 97 - 941192, // 98 - 970299, // 99 - 1000000 // 100 - }, { // Medium Fast copy 3 (unused? to-do: investigate) - 0, // 0 - 1, // 1 - 8, // 2 - 27, // 3 - 64, // 4 - 125, // 5 - 216, // 6 - 343, // 7 - 512, // 8 - 729, // 9 - 1000, // 10 - 1331, // 11 - 1728, // 12 - 2197, // 13 - 2744, // 14 - 3375, // 15 - 4096, // 16 - 4913, // 17 - 5832, // 18 - 6859, // 19 - 8000, // 20 - 9261, // 21 - 10648, // 22 - 12167, // 23 - 13824, // 24 - 15625, // 25 - 17576, // 26 - 19683, // 27 - 21952, // 28 - 24389, // 29 - 27000, // 30 - 29791, // 31 - 32768, // 32 - 35937, // 33 - 39304, // 34 - 42875, // 35 - 46656, // 36 - 50653, // 37 - 54872, // 38 - 59319, // 39 - 64000, // 40 - 68921, // 41 - 74088, // 42 - 79507, // 43 - 85184, // 44 - 91125, // 45 - 97336, // 46 - 103823, // 47 - 110592, // 48 - 117649, // 49 - 125000, // 50 - 132651, // 51 - 140608, // 52 - 148877, // 53 - 157464, // 54 - 166375, // 55 - 175616, // 56 - 185193, // 57 - 195112, // 58 - 205379, // 59 - 216000, // 60 - 226981, // 61 - 238328, // 62 - 250047, // 63 - 262144, // 64 - 274625, // 65 - 287496, // 66 - 300763, // 67 - 314432, // 68 - 328509, // 69 - 343000, // 70 - 357911, // 71 - 373248, // 72 - 389017, // 73 - 405224, // 74 - 421875, // 75 - 438976, // 76 - 456533, // 77 - 474552, // 78 - 493039, // 79 - 512000, // 80 - 531441, // 81 - 551368, // 82 - 571787, // 83 - 592704, // 84 - 614125, // 85 - 636056, // 86 - 658503, // 87 - 681472, // 88 - 704969, // 89 - 729000, // 90 - 753571, // 91 - 778688, // 92 - 804357, // 93 - 830584, // 94 - 857375, // 95 - 884736, // 96 - 912673, // 97 - 941192, // 98 - 970299, // 99 - 1000000 // 100 - } -}; - -const struct BaseStats gBaseStats[] = { - { // ?????????? - }, { - // Bulbasaur - 45, 49, 49, 45, 65, 65, - TYPE_GRASS, - TYPE_POISON, - 45, // catch rate - 64, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Ivysaur - 60, 62, 63, 60, 80, 80, - TYPE_GRASS, - TYPE_POISON, - 45, // catch rate - 141, // base exp. yield - 0, 0, 0, 0, 1, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Venusaur - 80, 82, 83, 80, 100, 100, - TYPE_GRASS, - TYPE_POISON, - 45, // catch rate - 208, // base exp. yield - 0, 0, 0, 0, 2, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Charmander - 39, 52, 43, 65, 60, 50, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 65, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Charmeleon - 58, 64, 58, 80, 80, 65, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 142, // base exp. yield - 0, 0, 0, 1, 1, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Charizard - 78, 84, 78, 100, 109, 85, - TYPE_FIRE, - TYPE_FLYING, - 45, // catch rate - 209, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Squirtle - 44, 48, 65, 43, 50, 64, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 66, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Wartortle - 59, 63, 80, 58, 65, 80, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 143, // base exp. yield - 0, 0, 1, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Blastoise - 79, 83, 100, 78, 85, 105, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 210, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Caterpie - 45, 30, 35, 45, 20, 20, - TYPE_BUG, - TYPE_BUG, - 255, // catch rate - 53, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHIELD_DUST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Metapod - 50, 20, 55, 30, 25, 25, - TYPE_BUG, - TYPE_BUG, - 120, // catch rate - 72, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Butterfree - 60, 45, 50, 70, 80, 80, - TYPE_BUG, - TYPE_FLYING, - 45, // catch rate - 160, // base exp. yield - 0, 0, 0, 0, 2, 1, - ITEM_NONE, - ITEM_SILVER_POWDER, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_COMPOUND_EYES, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Weedle - 40, 35, 30, 50, 20, 20, - TYPE_BUG, - TYPE_POISON, - 255, // catch rate - 52, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHIELD_DUST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Kakuna - 45, 25, 50, 35, 25, 25, - TYPE_BUG, - TYPE_POISON, - 120, // catch rate - 71, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Beedrill - 65, 80, 40, 75, 45, 80, - TYPE_BUG, - TYPE_POISON, - 45, // catch rate - 159, // base exp. yield - 0, 2, 0, 0, 0, 1, - ITEM_NONE, - ITEM_POISON_BARB, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Pidgey - 40, 45, 40, 56, 35, 35, - TYPE_NORMAL, - TYPE_FLYING, - 255, // catch rate - 55, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Pidgeotto - 63, 60, 55, 71, 50, 50, - TYPE_NORMAL, - TYPE_FLYING, - 120, // catch rate - 113, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Pidgeot - 83, 80, 75, 91, 70, 70, - TYPE_NORMAL, - TYPE_FLYING, - 45, // catch rate - 172, // base exp. yield - 0, 0, 0, 3, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Rattata - 30, 56, 35, 72, 25, 35, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 57, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_GUTS, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Raticate - 55, 81, 60, 97, 50, 70, - TYPE_NORMAL, - TYPE_NORMAL, - 127, // catch rate - 116, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_GUTS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Spearow - 40, 60, 30, 70, 31, 31, - TYPE_NORMAL, - TYPE_FLYING, - 255, // catch rate - 58, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Fearow - 65, 90, 65, 100, 61, 61, - TYPE_NORMAL, - TYPE_FLYING, - 90, // catch rate - 162, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_SHARP_BEAK, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Ekans - 35, 60, 44, 55, 40, 54, - TYPE_POISON, - TYPE_POISON, - 255, // catch rate - 62, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_DRAGON, - ABILITY_INTIMIDATE, - ABILITY_SHED_SKIN, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Arbok - 60, 85, 69, 80, 65, 79, - TYPE_POISON, - TYPE_POISON, - 90, // catch rate - 147, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_DRAGON, - ABILITY_INTIMIDATE, - ABILITY_SHED_SKIN, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Pikachu - 35, 55, 30, 90, 50, 40, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 190, // catch rate - 82, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_ORAN_BERRY, - ITEM_LIGHT_BALL, - 127, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_STATIC, - ABILITY_NONE, - 6, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Raichu - 60, 90, 55, 100, 90, 80, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 75, // catch rate - 122, // base exp. yield - 0, 0, 0, 3, 0, 0, - ITEM_NONE, - ITEM_ORAN_BERRY, - 127, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Sandshrew - 50, 75, 85, 40, 20, 30, - TYPE_GROUND, - TYPE_GROUND, - 255, // catch rate - 93, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_QUICK_CLAW, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SAND_VEIL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Sandslash - 75, 100, 110, 65, 45, 55, - TYPE_GROUND, - TYPE_GROUND, - 90, // catch rate - 163, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_QUICK_CLAW, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SAND_VEIL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Nidoran♀ - 55, 47, 52, 41, 40, 40, - TYPE_POISON, - TYPE_POISON, - 235, // catch rate - 59, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Nidorina - 70, 62, 67, 56, 55, 55, - TYPE_POISON, - TYPE_POISON, - 120, // catch rate - 117, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Nidoqueen - 90, 82, 87, 76, 75, 85, - TYPE_POISON, - TYPE_GROUND, - 45, // catch rate - 194, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Nidoran♂ - 46, 57, 40, 50, 40, 40, - TYPE_POISON, - TYPE_POISON, - 235, // catch rate - 60, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Nidorino - 61, 72, 57, 65, 55, 55, - TYPE_POISON, - TYPE_POISON, - 120, // catch rate - 118, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Nidoking - 81, 92, 77, 85, 85, 75, - TYPE_POISON, - TYPE_GROUND, - 45, // catch rate - 195, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Clefairy - 70, 45, 48, 35, 60, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 150, // catch rate - 68, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_LEPPA_BERRY, - ITEM_MOON_STONE, - 191, // gender - 10, // egg cycles - 140, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Clefable - 95, 70, 73, 60, 85, 90, - TYPE_NORMAL, - TYPE_NORMAL, - 25, // catch rate - 129, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_LEPPA_BERRY, - ITEM_MOON_STONE, - 191, // gender - 10, // egg cycles - 140, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Vulpix - 38, 41, 40, 65, 50, 65, - TYPE_FIRE, - TYPE_FIRE, - 190, // catch rate - 63, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_FLASH_FIRE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Ninetales - 73, 76, 75, 100, 81, 100, - TYPE_FIRE, - TYPE_FIRE, - 75, // catch rate - 178, // base exp. yield - 0, 0, 0, 1, 0, 1, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_FLASH_FIRE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Jigglypuff - 115, 45, 20, 20, 45, 25, - TYPE_NORMAL, - TYPE_NORMAL, - 170, // catch rate - 76, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Wigglytuff - 140, 70, 45, 45, 75, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 50, // catch rate - 109, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Zubat - 40, 45, 35, 55, 30, 40, - TYPE_POISON, - TYPE_FLYING, - 255, // catch rate - 54, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Golbat - 75, 80, 70, 90, 65, 75, - TYPE_POISON, - TYPE_FLYING, - 90, // catch rate - 171, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Oddish - 45, 50, 55, 30, 75, 65, - TYPE_GRASS, - TYPE_POISON, - 255, // catch rate - 78, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 4, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Gloom - 60, 65, 70, 40, 85, 75, - TYPE_GRASS, - TYPE_POISON, - 120, // catch rate - 132, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 6, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Vileplume - 75, 80, 85, 50, 100, 90, - TYPE_GRASS, - TYPE_POISON, - 45, // catch rate - 184, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Paras - 35, 70, 55, 25, 45, 55, - TYPE_BUG, - TYPE_GRASS, - 190, // catch rate - 70, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_TINY_MUSHROOM, - ITEM_BIG_MUSHROOM, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_GRASS, - ABILITY_EFFECT_SPORE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Parasect - 60, 95, 80, 30, 60, 80, - TYPE_BUG, - TYPE_GRASS, - 75, // catch rate - 128, // base exp. yield - 0, 2, 1, 0, 0, 0, - ITEM_TINY_MUSHROOM, - ITEM_BIG_MUSHROOM, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_GRASS, - ABILITY_EFFECT_SPORE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Venonat - 60, 55, 50, 45, 40, 55, - TYPE_BUG, - TYPE_POISON, - 190, // catch rate - 75, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_COMPOUND_EYES, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Venomoth - 70, 65, 60, 90, 90, 75, - TYPE_BUG, - TYPE_POISON, - 75, // catch rate - 138, // base exp. yield - 0, 0, 0, 1, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHIELD_DUST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Diglett - 10, 55, 25, 95, 35, 45, - TYPE_GROUND, - TYPE_GROUND, - 255, // catch rate - 81, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SAND_VEIL, - ABILITY_ARENA_TRAP, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Dugtrio - 35, 80, 50, 120, 50, 70, - TYPE_GROUND, - TYPE_GROUND, - 50, // catch rate - 153, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SAND_VEIL, - ABILITY_ARENA_TRAP, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Meowth - 40, 45, 35, 90, 40, 40, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 69, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PICKUP, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Persian - 65, 70, 60, 115, 65, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 90, // catch rate - 148, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_LIMBER, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Psyduck - 50, 52, 48, 55, 65, 50, - TYPE_WATER, - TYPE_WATER, - 190, // catch rate - 80, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_DAMP, - ABILITY_CLOUD_NINE, - 6, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Golduck - 80, 82, 78, 85, 95, 80, - TYPE_WATER, - TYPE_WATER, - 75, // catch rate - 174, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_DAMP, - ABILITY_CLOUD_NINE, - 8, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Mankey - 40, 80, 35, 70, 35, 45, - TYPE_FIGHTING, - TYPE_FIGHTING, - 190, // catch rate - 74, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_VITAL_SPIRIT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Primeape - 65, 105, 60, 95, 60, 70, - TYPE_FIGHTING, - TYPE_FIGHTING, - 75, // catch rate - 149, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_VITAL_SPIRIT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Growlithe - 55, 70, 45, 60, 70, 50, - TYPE_FIRE, - TYPE_FIRE, - 190, // catch rate - 91, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INTIMIDATE, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Arcanine - 90, 110, 80, 95, 100, 80, - TYPE_FIRE, - TYPE_FIRE, - 75, // catch rate - 213, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INTIMIDATE, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Poliwag - 40, 50, 40, 90, 40, 40, - TYPE_WATER, - TYPE_WATER, - 255, // catch rate - 77, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_WATER_ABSORB, - ABILITY_DAMP, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE, TRUE - }, { // Poliwhirl - 65, 65, 65, 90, 50, 50, - TYPE_WATER, - TYPE_WATER, - 120, // catch rate - 131, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_WATER_ABSORB, - ABILITY_DAMP, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE, TRUE - }, { // Poliwrath - 90, 85, 95, 70, 70, 90, - TYPE_WATER, - TYPE_FIGHTING, - 45, // catch rate - 185, // base exp. yield - 0, 0, 3, 0, 0, 0, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_WATER_ABSORB, - ABILITY_DAMP, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE, TRUE - }, { // Abra - 25, 20, 15, 90, 105, 55, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 200, // catch rate - 73, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_TWISTED_SPOON, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SYNCHRONIZE, - ABILITY_INNER_FOCUS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Kadabra - 40, 35, 30, 105, 120, 70, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 100, // catch rate - 145, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_TWISTED_SPOON, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SYNCHRONIZE, - ABILITY_INNER_FOCUS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Alakazam - 55, 50, 45, 120, 135, 85, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 50, // catch rate - 186, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_TWISTED_SPOON, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SYNCHRONIZE, - ABILITY_INNER_FOCUS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Machop - 70, 80, 50, 35, 35, 35, - TYPE_FIGHTING, - TYPE_FIGHTING, - 180, // catch rate - 88, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Machoke - 80, 100, 70, 45, 50, 60, - TYPE_FIGHTING, - TYPE_FIGHTING, - 90, // catch rate - 146, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Machamp - 90, 130, 80, 55, 65, 85, - TYPE_FIGHTING, - TYPE_FIGHTING, - 45, // catch rate - 193, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Bellsprout - 50, 75, 35, 40, 70, 30, - TYPE_GRASS, - TYPE_POISON, - 255, // catch rate - 84, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Weepinbell - 65, 90, 50, 55, 85, 45, - TYPE_GRASS, - TYPE_POISON, - 120, // catch rate - 151, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Victreebel - 80, 105, 65, 70, 100, 60, - TYPE_GRASS, - TYPE_POISON, - 45, // catch rate - 191, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Tentacool - 40, 40, 35, 70, 50, 100, - TYPE_WATER, - TYPE_POISON, - 190, // catch rate - 105, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_CLEAR_BODY, - ABILITY_LIQUID_OOZE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Tentacruel - 80, 70, 65, 100, 80, 120, - TYPE_WATER, - TYPE_POISON, - 60, // catch rate - 205, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_CLEAR_BODY, - ABILITY_LIQUID_OOZE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Geodude - 40, 80, 100, 20, 30, 30, - TYPE_ROCK, - TYPE_GROUND, - 255, // catch rate - 86, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_EVERSTONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_ROCK_HEAD, - ABILITY_STURDY, - 4, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Graveler - 55, 95, 115, 35, 45, 45, - TYPE_ROCK, - TYPE_GROUND, - 120, // catch rate - 134, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_EVERSTONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_ROCK_HEAD, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Golem - 80, 110, 130, 45, 55, 65, - TYPE_ROCK, - TYPE_GROUND, - 45, // catch rate - 177, // base exp. yield - 0, 0, 3, 0, 0, 0, - ITEM_NONE, - ITEM_EVERSTONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_ROCK_HEAD, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Ponyta - 50, 85, 55, 90, 65, 65, - TYPE_FIRE, - TYPE_FIRE, - 190, // catch rate - 152, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Rapidash - 65, 100, 70, 105, 80, 80, - TYPE_FIRE, - TYPE_FIRE, - 60, // catch rate - 192, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Slowpoke - 90, 65, 65, 15, 40, 40, - TYPE_WATER, - TYPE_PSYCHIC, - 190, // catch rate - 99, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_OBLIVIOUS, - ABILITY_OWN_TEMPO, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Slowbro - 95, 75, 110, 30, 100, 80, - TYPE_WATER, - TYPE_PSYCHIC, - 75, // catch rate - 164, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_OBLIVIOUS, - ABILITY_OWN_TEMPO, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Magnemite - 25, 35, 70, 45, 95, 55, - TYPE_ELECTRIC, - TYPE_STEEL, - 190, // catch rate - 89, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_MAGNET_PULL, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Magneton - 50, 60, 95, 70, 120, 70, - TYPE_ELECTRIC, - TYPE_STEEL, - 60, // catch rate - 161, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_MAGNET_PULL, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Farfetch'd - 52, 65, 55, 60, 58, 62, - TYPE_NORMAL, - TYPE_FLYING, - 45, // catch rate - 94, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_STICK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FIELD, - ABILITY_KEEN_EYE, - ABILITY_INNER_FOCUS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Doduo - 35, 85, 45, 75, 35, 35, - TYPE_NORMAL, - TYPE_FLYING, - 190, // catch rate - 96, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SHARP_BEAK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_RUN_AWAY, - ABILITY_EARLY_BIRD, - 8, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Dodrio - 60, 110, 70, 100, 60, 60, - TYPE_NORMAL, - TYPE_FLYING, - 45, // catch rate - 158, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SHARP_BEAK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_RUN_AWAY, - ABILITY_EARLY_BIRD, - 10, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Seel - 65, 45, 55, 45, 45, 70, - TYPE_WATER, - TYPE_WATER, - 190, // catch rate - 100, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Dewgong - 90, 70, 80, 70, 70, 95, - TYPE_WATER, - TYPE_ICE, - 75, // catch rate - 176, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Grimer - 80, 80, 50, 25, 40, 50, - TYPE_POISON, - TYPE_POISON, - 190, // catch rate - 90, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NUGGET, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_STENCH, - ABILITY_STICKY_HOLD, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Muk - 105, 105, 75, 50, 65, 100, - TYPE_POISON, - TYPE_POISON, - 75, // catch rate - 157, // base exp. yield - 1, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NUGGET, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_STENCH, - ABILITY_STICKY_HOLD, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Shellder - 30, 65, 100, 40, 45, 25, - TYPE_WATER, - TYPE_WATER, - 190, // catch rate - 97, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_PEARL, - ITEM_BIG_PEARL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_SHELL_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Cloyster - 50, 95, 180, 70, 85, 45, - TYPE_WATER, - TYPE_ICE, - 60, // catch rate - 203, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_PEARL, - ITEM_BIG_PEARL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_SHELL_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Gastly - 30, 35, 30, 80, 100, 35, - TYPE_GHOST, - TYPE_POISON, - 190, // catch rate - 95, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Haunter - 45, 50, 45, 95, 115, 55, - TYPE_GHOST, - TYPE_POISON, - 90, // catch rate - 126, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Gengar - 60, 65, 60, 110, 130, 75, - TYPE_GHOST, - TYPE_POISON, - 45, // catch rate - 190, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Onix - 35, 45, 160, 70, 30, 45, - TYPE_ROCK, - TYPE_GROUND, - 45, // catch rate - 108, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_ROCK_HEAD, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Drowzee - 60, 48, 45, 42, 43, 90, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 190, // catch rate - 102, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_INSOMNIA, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Hypno - 85, 73, 70, 67, 73, 115, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 75, // catch rate - 165, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_INSOMNIA, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Krabby - 30, 105, 90, 50, 25, 25, - TYPE_WATER, - TYPE_WATER, - 225, // catch rate - 115, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_HYPER_CUTTER, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Kingler - 55, 130, 115, 75, 50, 50, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 206, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_HYPER_CUTTER, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_RED, TRUE - }, { // Voltorb - 40, 30, 50, 100, 55, 55, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 190, // catch rate - 103, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_SOUNDPROOF, - ABILITY_STATIC, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Electrode - 60, 50, 70, 140, 80, 80, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 60, // catch rate - 150, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_SOUNDPROOF, - ABILITY_STATIC, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Exeggcute - 60, 40, 80, 40, 60, 45, - TYPE_GRASS, - TYPE_PSYCHIC, - 90, // catch rate - 98, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Exeggutor - 95, 95, 85, 55, 125, 65, - TYPE_GRASS, - TYPE_PSYCHIC, - 45, // catch rate - 212, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Cubone - 50, 50, 95, 35, 40, 50, - TYPE_GROUND, - TYPE_GROUND, - 190, // catch rate - 87, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_THICK_CLUB, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_ROCK_HEAD, - ABILITY_LIGHTNING_ROD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Marowak - 60, 80, 110, 45, 50, 80, - TYPE_GROUND, - TYPE_GROUND, - 75, // catch rate - 124, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_THICK_CLUB, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_ROCK_HEAD, - ABILITY_LIGHTNING_ROD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Hitmonlee - 50, 120, 53, 87, 35, 110, - TYPE_FIGHTING, - TYPE_FIGHTING, - 45, // catch rate - 139, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_LIMBER, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Hitmonchan - 50, 105, 79, 76, 35, 110, - TYPE_FIGHTING, - TYPE_FIGHTING, - 45, // catch rate - 140, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Lickitung - 90, 55, 75, 30, 60, 75, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 127, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_OWN_TEMPO, - ABILITY_OBLIVIOUS, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Koffing - 40, 65, 95, 35, 60, 45, - TYPE_POISON, - TYPE_POISON, - 190, // catch rate - 114, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_SMOKE_BALL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Weezing - 65, 90, 120, 60, 85, 70, - TYPE_POISON, - TYPE_POISON, - 60, // catch rate - 173, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_SMOKE_BALL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Rhyhorn - 80, 85, 95, 25, 30, 30, - TYPE_GROUND, - TYPE_ROCK, - 120, // catch rate - 135, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_LIGHTNING_ROD, - ABILITY_ROCK_HEAD, - 4, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Rhydon - 105, 130, 120, 40, 45, 45, - TYPE_GROUND, - TYPE_ROCK, - 60, // catch rate - 204, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_LIGHTNING_ROD, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Chansey - 250, 5, 5, 50, 35, 105, - TYPE_NORMAL, - TYPE_NORMAL, - 30, // catch rate - 255, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_LUCKY_EGG, - 254, // gender - 40, // egg cycles - 140, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_NATURAL_CURE, - ABILITY_SERENE_GRACE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Tangela - 65, 55, 115, 60, 100, 40, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 166, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Kangaskhan - 105, 95, 80, 90, 40, 80, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 175, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_EARLY_BIRD, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Horsea - 30, 40, 70, 60, 70, 25, - TYPE_WATER, - TYPE_WATER, - 225, // catch rate - 83, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Seadra - 55, 65, 95, 85, 95, 45, - TYPE_WATER, - TYPE_WATER, - 75, // catch rate - 155, // base exp. yield - 0, 0, 1, 0, 1, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_POISON_POINT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Goldeen - 45, 67, 60, 63, 35, 50, - TYPE_WATER, - TYPE_WATER, - 225, // catch rate - 111, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_SWIFT_SWIM, - ABILITY_WATER_VEIL, - 4, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Seaking - 80, 92, 65, 68, 65, 80, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 170, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_SWIFT_SWIM, - ABILITY_WATER_VEIL, - 6, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Staryu - 30, 45, 55, 85, 70, 55, - TYPE_WATER, - TYPE_WATER, - 225, // catch rate - 106, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_STARDUST, - ITEM_STAR_PIECE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_ILLUMINATE, - ABILITY_NATURAL_CURE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Starmie - 60, 75, 85, 115, 100, 85, - TYPE_WATER, - TYPE_PSYCHIC, - 60, // catch rate - 207, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_STARDUST, - ITEM_STAR_PIECE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_ILLUMINATE, - ABILITY_NATURAL_CURE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Mr. mime - 40, 45, 65, 90, 100, 120, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 136, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_LEPPA_BERRY, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SOUNDPROOF, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Scyther - 70, 110, 80, 105, 55, 80, - TYPE_BUG, - TYPE_FLYING, - 45, // catch rate - 187, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Jynx - 65, 50, 35, 95, 115, 95, - TYPE_ICE, - TYPE_PSYCHIC, - 45, // catch rate - 137, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_ASPEAR_BERRY, - ITEM_ASPEAR_BERRY, - 254, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Electabuzz - 65, 83, 57, 105, 95, 85, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 45, // catch rate - 156, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW, TRUE - }, { // Magmar - 65, 95, 57, 93, 100, 85, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 167, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 63, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_FLAME_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Pinsir - 65, 125, 100, 85, 55, 70, - TYPE_BUG, - TYPE_BUG, - 45, // catch rate - 200, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_HYPER_CUTTER, - ABILITY_NONE, - 8, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Tauros - 75, 100, 95, 110, 40, 70, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 211, // base exp. yield - 0, 1, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Magikarp - 20, 10, 55, 80, 15, 20, - TYPE_WATER, - TYPE_WATER, - 255, // catch rate - 20, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 5, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_DRAGON, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 4, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Gyarados - 95, 125, 79, 81, 60, 100, - TYPE_WATER, - TYPE_FLYING, - 45, // catch rate - 214, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 5, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_DRAGON, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Lapras - 130, 85, 80, 60, 85, 95, - TYPE_WATER, - TYPE_ICE, - 45, // catch rate - 219, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_WATER_ABSORB, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Ditto - 48, 48, 48, 48, 48, 48, - TYPE_NORMAL, - TYPE_NORMAL, - 35, // catch rate - 61, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_METAL_POWDER, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_DITTO, - EGG_GROUP_DITTO, - ABILITY_LIMBER, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Eevee - 55, 55, 50, 55, 45, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 92, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Vaporeon - 130, 65, 60, 65, 110, 95, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 196, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_WATER_ABSORB, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Jolteon - 65, 65, 60, 130, 110, 95, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 45, // catch rate - 197, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_VOLT_ABSORB, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Flareon - 65, 130, 60, 65, 95, 110, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 198, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_FLASH_FIRE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Porygon - 65, 60, 70, 40, 85, 75, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 130, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_TRACE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Omanyte - 35, 40, 100, 35, 90, 55, - TYPE_ROCK, - TYPE_WATER, - 45, // catch rate - 120, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_SWIFT_SWIM, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Omastar - 70, 60, 125, 55, 115, 70, - TYPE_ROCK, - TYPE_WATER, - 45, // catch rate - 199, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_SWIFT_SWIM, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Kabuto - 30, 80, 90, 55, 55, 45, - TYPE_ROCK, - TYPE_WATER, - 45, // catch rate - 119, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_SWIFT_SWIM, - ABILITY_BATTLE_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Kabutops - 60, 115, 105, 80, 65, 70, - TYPE_ROCK, - TYPE_WATER, - 45, // catch rate - 201, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_SWIFT_SWIM, - ABILITY_BATTLE_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Aerodactyl - 80, 105, 65, 130, 60, 75, - TYPE_ROCK, - TYPE_FLYING, - 45, // catch rate - 202, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_ROCK_HEAD, - ABILITY_PRESSURE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Snorlax - 160, 110, 65, 30, 65, 110, - TYPE_NORMAL, - TYPE_NORMAL, - 25, // catch rate - 154, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_LEFTOVERS, - ITEM_LEFTOVERS, - 31, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_IMMUNITY, - ABILITY_THICK_FAT, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Articuno - 90, 85, 100, 85, 95, 125, - TYPE_ICE, - TYPE_FLYING, - 3, // catch rate - 215, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Zapdos - 90, 90, 85, 100, 125, 90, - TYPE_ELECTRIC, - TYPE_FLYING, - 3, // catch rate - 216, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Moltres - 90, 100, 90, 90, 125, 85, - TYPE_FIRE, - TYPE_FLYING, - 3, // catch rate - 217, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Dratini - 41, 64, 45, 50, 50, 50, - TYPE_DRAGON, - TYPE_DRAGON, - 45, // catch rate - 67, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Dragonair - 61, 84, 65, 70, 70, 70, - TYPE_DRAGON, - TYPE_DRAGON, - 45, // catch rate - 144, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Dragonite - 91, 134, 95, 80, 100, 100, - TYPE_DRAGON, - TYPE_FLYING, - 45, // catch rate - 218, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Mewtwo - 106, 110, 90, 130, 154, 90, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 3, // catch rate - 220, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Mew - 100, 100, 100, 100, 100, 100, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 64, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_LUM_BERRY, - ITEM_LUM_BERRY, - 255, // gender - 120, // egg cycles - 100, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_SYNCHRONIZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Chikorita - 45, 49, 65, 45, 49, 65, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 64, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Bayleef - 60, 62, 80, 60, 63, 80, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 141, // base exp. yield - 0, 0, 1, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Meganium - 80, 82, 100, 80, 83, 100, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 208, // base exp. yield - 0, 0, 1, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Cyndaquil - 39, 52, 43, 65, 60, 50, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 65, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Quilava - 58, 64, 58, 80, 80, 65, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 142, // base exp. yield - 0, 0, 0, 1, 1, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Typhlosion - 78, 84, 78, 100, 109, 85, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 209, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Totodile - 50, 65, 64, 43, 44, 48, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 66, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Croconaw - 65, 80, 80, 58, 59, 63, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 143, // base exp. yield - 0, 1, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE, TRUE - }, { // Feraligatr - 85, 105, 100, 78, 79, 83, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 210, // base exp. yield - 0, 2, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Sentret - 35, 46, 34, 20, 35, 45, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 57, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_ORAN_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_KEEN_EYE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Furret - 85, 76, 64, 90, 45, 55, - TYPE_NORMAL, - TYPE_NORMAL, - 90, // catch rate - 116, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_ORAN_BERRY, - ITEM_SITRUS_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_KEEN_EYE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Hoothoot - 60, 30, 30, 50, 36, 56, - TYPE_NORMAL, - TYPE_FLYING, - 255, // catch rate - 58, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INSOMNIA, - ABILITY_KEEN_EYE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Noctowl - 100, 50, 50, 70, 76, 96, - TYPE_NORMAL, - TYPE_FLYING, - 90, // catch rate - 162, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INSOMNIA, - ABILITY_KEEN_EYE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Ledyba - 40, 20, 30, 55, 40, 80, - TYPE_BUG, - TYPE_FLYING, - 255, // catch rate - 54, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_EARLY_BIRD, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Ledian - 55, 35, 50, 85, 55, 110, - TYPE_BUG, - TYPE_FLYING, - 90, // catch rate - 134, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_EARLY_BIRD, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Spinarak - 40, 60, 40, 30, 40, 40, - TYPE_BUG, - TYPE_POISON, - 255, // catch rate - 54, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_INSOMNIA, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Ariados - 70, 90, 70, 40, 60, 60, - TYPE_BUG, - TYPE_POISON, - 90, // catch rate - 134, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_INSOMNIA, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Crobat - 85, 90, 80, 130, 70, 80, - TYPE_POISON, - TYPE_FLYING, - 90, // catch rate - 204, // base exp. yield - 0, 0, 0, 3, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Chinchou - 75, 38, 38, 67, 56, 56, - TYPE_WATER, - TYPE_ELECTRIC, - 190, // catch rate - 90, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_YELLOW_SHARD, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_VOLT_ABSORB, - ABILITY_ILLUMINATE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Lanturn - 125, 58, 58, 67, 76, 76, - TYPE_WATER, - TYPE_ELECTRIC, - 75, // catch rate - 156, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_YELLOW_SHARD, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_VOLT_ABSORB, - ABILITY_ILLUMINATE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Pichu - 20, 40, 15, 60, 35, 35, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 190, // catch rate - 42, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_ORAN_BERRY, - 127, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Cleffa - 50, 25, 28, 15, 45, 55, - TYPE_NORMAL, - TYPE_NORMAL, - 150, // catch rate - 37, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_LEPPA_BERRY, - ITEM_MOON_STONE, - 191, // gender - 10, // egg cycles - 140, // base friendship - GROWTH_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Igglybuff - 90, 30, 15, 15, 40, 20, - TYPE_NORMAL, - TYPE_NORMAL, - 170, // catch rate - 39, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK, TRUE - }, { // Togepi - 35, 20, 65, 20, 40, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 190, // catch rate - 74, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_HUSTLE, - ABILITY_SERENE_GRACE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Togetic - 55, 40, 85, 40, 80, 105, - TYPE_NORMAL, - TYPE_FLYING, - 75, // catch rate - 114, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FAIRY, - ABILITY_HUSTLE, - ABILITY_SERENE_GRACE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Natu - 40, 50, 45, 70, 70, 45, - TYPE_PSYCHIC, - TYPE_FLYING, - 190, // catch rate - 73, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_SYNCHRONIZE, - ABILITY_EARLY_BIRD, - 6, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Xatu - 65, 75, 70, 95, 95, 70, - TYPE_PSYCHIC, - TYPE_FLYING, - 75, // catch rate - 171, // base exp. yield - 0, 0, 0, 1, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_SYNCHRONIZE, - ABILITY_EARLY_BIRD, - 8, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Mareep - 55, 40, 40, 35, 65, 45, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 235, // catch rate - 59, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Flaaffy - 70, 55, 55, 45, 80, 60, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 120, // catch rate - 117, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Ampharos - 90, 75, 75, 55, 115, 90, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 45, // catch rate - 194, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Bellossom - 75, 80, 85, 50, 90, 100, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 184, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Marill - 70, 20, 50, 40, 20, 50, - TYPE_WATER, - TYPE_WATER, - 190, // catch rate - 58, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FAIRY, - ABILITY_THICK_FAT, - ABILITY_HUGE_POWER, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Azumarill - 100, 50, 80, 50, 50, 80, - TYPE_WATER, - TYPE_WATER, - 75, // catch rate - 153, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FAIRY, - ABILITY_THICK_FAT, - ABILITY_HUGE_POWER, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Sudowoodo - 70, 100, 115, 30, 30, 65, - TYPE_ROCK, - TYPE_ROCK, - 65, // catch rate - 135, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_STURDY, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Politoed - 90, 75, 75, 70, 90, 100, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 185, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_WATER_ABSORB, - ABILITY_DAMP, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN, TRUE - }, { // Hoppip - 35, 35, 40, 50, 35, 55, - TYPE_GRASS, - TYPE_FLYING, - 255, // catch rate - 74, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Skiploom - 55, 45, 50, 80, 45, 65, - TYPE_GRASS, - TYPE_FLYING, - 120, // catch rate - 136, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Jumpluff - 75, 55, 70, 110, 55, 85, - TYPE_GRASS, - TYPE_FLYING, - 45, // catch rate - 176, // base exp. yield - 0, 0, 0, 3, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Aipom - 55, 70, 55, 85, 40, 55, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 94, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_PICKUP, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Sunkern - 30, 30, 30, 30, 30, 30, - TYPE_GRASS, - TYPE_GRASS, - 235, // catch rate - 52, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Sunflora - 75, 75, 55, 30, 105, 85, - TYPE_GRASS, - TYPE_GRASS, - 120, // catch rate - 146, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Yanma - 65, 65, 45, 95, 75, 45, - TYPE_BUG, - TYPE_FLYING, - 75, // catch rate - 147, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SPEED_BOOST, - ABILITY_COMPOUND_EYES, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Wooper - 55, 45, 45, 15, 25, 25, - TYPE_WATER, - TYPE_GROUND, - 255, // catch rate - 52, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_DAMP, - ABILITY_WATER_ABSORB, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Quagsire - 95, 85, 85, 35, 65, 65, - TYPE_WATER, - TYPE_GROUND, - 90, // catch rate - 137, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_DAMP, - ABILITY_WATER_ABSORB, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Espeon - 65, 65, 60, 110, 130, 95, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 197, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SYNCHRONIZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Umbreon - 95, 65, 110, 65, 60, 130, - TYPE_DARK, - TYPE_DARK, - 45, // catch rate - 197, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 35, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SYNCHRONIZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Murkrow - 60, 85, 42, 91, 85, 42, - TYPE_DARK, - TYPE_FLYING, - 30, // catch rate - 107, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_INSOMNIA, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Slowking - 95, 75, 80, 30, 100, 110, - TYPE_WATER, - TYPE_PSYCHIC, - 70, // catch rate - 164, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_KINGS_ROCK, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_OBLIVIOUS, - ABILITY_OWN_TEMPO, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Misdreavus - 60, 60, 60, 85, 85, 85, - TYPE_GHOST, - TYPE_GHOST, - 45, // catch rate - 147, // base exp. yield - 0, 0, 0, 0, 1, 1, - ITEM_NONE, - ITEM_SPELL_TAG, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Unown - 48, 72, 48, 48, 72, 48, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 225, // catch rate - 61, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK, TRUE - }, { // Wobbuffet - 190, 33, 58, 33, 33, 58, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 177, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_SHADOW_TAG, - ABILITY_NONE, - 4, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Girafarig - 70, 80, 65, 85, 90, 65, - TYPE_NORMAL, - TYPE_PSYCHIC, - 60, // catch rate - 149, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_PERSIM_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INNER_FOCUS, - ABILITY_EARLY_BIRD, - 4, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Pineco - 50, 65, 90, 15, 35, 35, - TYPE_BUG, - TYPE_BUG, - 190, // catch rate - 60, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_STURDY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Forretress - 75, 90, 140, 40, 60, 60, - TYPE_BUG, - TYPE_STEEL, - 75, // catch rate - 118, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_STURDY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Dunsparce - 100, 70, 70, 45, 65, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 190, // catch rate - 75, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_SERENE_GRACE, - ABILITY_RUN_AWAY, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Gligar - 65, 75, 105, 85, 35, 65, - TYPE_GROUND, - TYPE_FLYING, - 60, // catch rate - 108, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_HYPER_CUTTER, - ABILITY_SAND_VEIL, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Steelix - 75, 85, 200, 30, 55, 65, - TYPE_STEEL, - TYPE_GROUND, - 25, // catch rate - 196, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_ROCK_HEAD, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Snubbull - 60, 80, 50, 30, 40, 40, - TYPE_NORMAL, - TYPE_NORMAL, - 190, // catch rate - 63, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_INTIMIDATE, - ABILITY_RUN_AWAY, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Granbull - 90, 120, 75, 45, 60, 60, - TYPE_NORMAL, - TYPE_NORMAL, - 75, // catch rate - 178, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_INTIMIDATE, - ABILITY_INTIMIDATE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Qwilfish - 65, 95, 75, 85, 55, 55, - TYPE_WATER, - TYPE_POISON, - 45, // catch rate - 100, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_POISON_POINT, - ABILITY_SWIFT_SWIM, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Scizor - 70, 130, 100, 65, 55, 80, - TYPE_BUG, - TYPE_STEEL, - 25, // catch rate - 200, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Shuckle - 20, 10, 230, 5, 10, 230, - TYPE_BUG, - TYPE_ROCK, - 190, // catch rate - 80, // base exp. yield - 0, 0, 1, 0, 0, 1, - ITEM_ORAN_BERRY, - ITEM_ORAN_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_STURDY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Heracross - 80, 125, 75, 85, 40, 95, - TYPE_BUG, - TYPE_FIGHTING, - 45, // catch rate - 200, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_GUTS, - 8, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Sneasel - 55, 95, 55, 115, 35, 75, - TYPE_DARK, - TYPE_ICE, - 60, // catch rate - 132, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_QUICK_CLAW, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INNER_FOCUS, - ABILITY_KEEN_EYE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK, TRUE - }, { // Teddiursa - 60, 80, 50, 40, 50, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 120, // catch rate - 124, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PICKUP, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN, TRUE - }, { // Ursaring - 90, 130, 75, 55, 75, 75, - TYPE_NORMAL, - TYPE_NORMAL, - 60, // catch rate - 189, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Slugma - 40, 40, 40, 20, 70, 40, - TYPE_FIRE, - TYPE_FIRE, - 190, // catch rate - 78, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_MAGMA_ARMOR, - ABILITY_FLAME_BODY, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Magcargo - 50, 50, 120, 30, 80, 80, - TYPE_FIRE, - TYPE_ROCK, - 75, // catch rate - 154, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_MAGMA_ARMOR, - ABILITY_FLAME_BODY, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Swinub - 50, 50, 40, 50, 30, 30, - TYPE_ICE, - TYPE_GROUND, - 225, // catch rate - 78, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Piloswine - 100, 100, 80, 50, 60, 60, - TYPE_ICE, - TYPE_GROUND, - 75, // catch rate - 160, // base exp. yield - 1, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Corsola - 55, 55, 85, 35, 65, 85, - TYPE_WATER, - TYPE_ROCK, - 60, // catch rate - 113, // base exp. yield - 0, 0, 1, 0, 0, 1, - ITEM_NONE, - ITEM_RED_SHARD, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_HUSTLE, - ABILITY_NATURAL_CURE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Remoraid - 35, 65, 35, 65, 65, 35, - TYPE_WATER, - TYPE_WATER, - 190, // catch rate - 78, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_2, - ABILITY_HUSTLE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Octillery - 75, 105, 75, 45, 105, 75, - TYPE_WATER, - TYPE_WATER, - 75, // catch rate - 164, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_2, - ABILITY_SUCTION_CUPS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Delibird - 45, 55, 45, 75, 65, 45, - TYPE_ICE, - TYPE_FLYING, - 45, // catch rate - 183, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_VITAL_SPIRIT, - ABILITY_HUSTLE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Mantine - 65, 40, 70, 70, 80, 140, - TYPE_WATER, - TYPE_FLYING, - 25, // catch rate - 168, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_SWIFT_SWIM, - ABILITY_WATER_ABSORB, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Skarmory - 65, 80, 140, 70, 40, 70, - TYPE_STEEL, - TYPE_FLYING, - 25, // catch rate - 168, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_STURDY, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Houndour - 45, 60, 30, 65, 80, 50, - TYPE_DARK, - TYPE_FIRE, - 120, // catch rate - 114, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_EARLY_BIRD, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Houndoom - 75, 90, 50, 95, 110, 80, - TYPE_DARK, - TYPE_FIRE, - 45, // catch rate - 204, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_EARLY_BIRD, - ABILITY_FLASH_FIRE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Kingdra - 75, 95, 95, 85, 95, 95, - TYPE_WATER, - TYPE_DRAGON, - 45, // catch rate - 207, // base exp. yield - 0, 1, 0, 0, 1, 1, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Phanpy - 90, 60, 60, 40, 40, 40, - TYPE_GROUND, - TYPE_GROUND, - 120, // catch rate - 124, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PICKUP, - ABILITY_NONE, - 10, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Donphan - 90, 120, 120, 50, 60, 60, - TYPE_GROUND, - TYPE_GROUND, - 60, // catch rate - 189, // base exp. yield - 0, 1, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_STURDY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Porygon2 - 85, 80, 90, 60, 105, 95, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 180, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_TRACE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Stantler - 73, 95, 62, 85, 85, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 165, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Smeargle - 55, 20, 35, 75, 20, 45, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 106, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_OWN_TEMPO, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Tyrogue - 35, 35, 35, 35, 35, 35, - TYPE_FIGHTING, - TYPE_FIGHTING, - 75, // catch rate - 91, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Hitmontop - 50, 95, 95, 70, 35, 110, - TYPE_FIGHTING, - TYPE_FIGHTING, - 45, // catch rate - 138, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Smoochum - 45, 30, 15, 65, 85, 65, - TYPE_ICE, - TYPE_PSYCHIC, - 45, // catch rate - 87, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_ASPEAR_BERRY, - ITEM_ASPEAR_BERRY, - 254, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Elekid - 45, 63, 37, 95, 65, 55, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 45, // catch rate - 106, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_STATIC, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW, TRUE - }, { // Magby - 45, 75, 37, 83, 70, 55, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 117, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 63, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_FLAME_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Miltank - 95, 80, 105, 100, 40, 70, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 200, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_MOOMOO_MILK, - ITEM_MOOMOO_MILK, - 254, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Blissey - 255, 10, 10, 55, 75, 135, - TYPE_NORMAL, - TYPE_NORMAL, - 30, // catch rate - 255, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_LUCKY_EGG, - 254, // gender - 40, // egg cycles - 140, // base friendship - GROWTH_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_NATURAL_CURE, - ABILITY_SERENE_GRACE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Raikou - 90, 85, 75, 115, 115, 100, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 3, // catch rate - 216, // base exp. yield - 0, 0, 0, 2, 1, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Entei - 115, 115, 85, 100, 90, 75, - TYPE_FIRE, - TYPE_FIRE, - 3, // catch rate - 217, // base exp. yield - 1, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Suicune - 100, 75, 115, 85, 90, 115, - TYPE_WATER, - TYPE_WATER, - 3, // catch rate - 215, // base exp. yield - 0, 0, 1, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Larvitar - 50, 64, 50, 41, 45, 50, - TYPE_ROCK, - TYPE_GROUND, - 45, // catch rate - 67, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Pupitar - 70, 84, 70, 51, 65, 70, - TYPE_ROCK, - TYPE_GROUND, - 45, // catch rate - 144, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Tyranitar - 100, 134, 110, 61, 95, 100, - TYPE_ROCK, - TYPE_DARK, - 45, // catch rate - 218, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_SAND_STREAM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Lugia - 106, 90, 130, 110, 90, 154, - TYPE_PSYCHIC, - TYPE_FLYING, - 3, // catch rate - 220, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Ho-Oh - 106, 130, 90, 90, 110, 154, - TYPE_FIRE, - TYPE_FLYING, - 3, // catch rate - 220, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_SACRED_ASH, - ITEM_SACRED_ASH, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Celebi - 100, 100, 100, 100, 100, 100, - TYPE_PSYCHIC, - TYPE_GRASS, - 45, // catch rate - 64, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_LUM_BERRY, - ITEM_LUM_BERRY, - 255, // gender - 120, // egg cycles - 100, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NATURAL_CURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // ? - 50, 150, 50, 150, 150, 50, - TYPE_NORMAL, - TYPE_NORMAL, - 3, // catch rate - 1, // base exp. yield - 2, 2, 2, 2, 2, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_NONE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Treecko - 40, 45, 35, 70, 65, 55, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 65, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Grovyle - 50, 65, 45, 95, 85, 65, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 141, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Sceptile - 70, 85, 65, 120, 105, 85, - TYPE_GRASS, - TYPE_GRASS, - 45, // catch rate - 208, // base exp. yield - 0, 0, 0, 3, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_DRAGON, - ABILITY_OVERGROW, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Torchic - 45, 60, 40, 45, 70, 50, - TYPE_FIRE, - TYPE_FIRE, - 45, // catch rate - 65, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Combusken - 60, 85, 60, 55, 85, 60, - TYPE_FIRE, - TYPE_FIGHTING, - 45, // catch rate - 142, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Blaziken - 80, 120, 70, 80, 110, 70, - TYPE_FIRE, - TYPE_FIGHTING, - 45, // catch rate - 209, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_BLAZE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Mudkip - 50, 70, 50, 40, 50, 50, - TYPE_WATER, - TYPE_WATER, - 45, // catch rate - 65, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Marshtomp - 70, 85, 70, 50, 60, 70, - TYPE_WATER, - TYPE_GROUND, - 45, // catch rate - 143, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Swampert - 100, 110, 90, 60, 85, 90, - TYPE_WATER, - TYPE_GROUND, - 45, // catch rate - 210, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_WATER_1, - ABILITY_TORRENT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Poochyena - 35, 55, 35, 35, 30, 30, - TYPE_DARK, - TYPE_DARK, - 255, // catch rate - 55, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_PECHA_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_RUN_AWAY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Mightyena - 70, 90, 70, 70, 60, 60, - TYPE_DARK, - TYPE_DARK, - 127, // catch rate - 128, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_PECHA_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Zigzagoon - 38, 30, 41, 60, 30, 41, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 60, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_ORAN_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PICKUP, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Linoone - 78, 70, 61, 100, 50, 61, - TYPE_NORMAL, - TYPE_NORMAL, - 90, // catch rate - 128, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_ORAN_BERRY, - ITEM_SITRUS_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PICKUP, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Wurmple - 45, 45, 35, 20, 20, 30, - TYPE_BUG, - TYPE_BUG, - 255, // catch rate - 54, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHIELD_DUST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Silcoon - 50, 35, 55, 15, 25, 25, - TYPE_BUG, - TYPE_BUG, - 120, // catch rate - 71, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Beautifly - 60, 70, 50, 65, 90, 50, - TYPE_BUG, - TYPE_FLYING, - 45, // catch rate - 161, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_SILVER_POWDER, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SWARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Cascoon - 50, 35, 55, 15, 25, 25, - TYPE_BUG, - TYPE_BUG, - 120, // catch rate - 72, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Dustox - 60, 50, 70, 65, 50, 90, - TYPE_BUG, - TYPE_POISON, - 45, // catch rate - 160, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_SILVER_POWDER, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SHIELD_DUST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Lotad - 40, 30, 30, 30, 40, 50, - TYPE_WATER, - TYPE_GRASS, - 255, // catch rate - 74, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_GRASS, - ABILITY_SWIFT_SWIM, - ABILITY_RAIN_DISH, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Lombre - 60, 50, 50, 50, 60, 70, - TYPE_WATER, - TYPE_GRASS, - 120, // catch rate - 141, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_GRASS, - ABILITY_SWIFT_SWIM, - ABILITY_RAIN_DISH, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Ludicolo - 80, 70, 70, 70, 90, 100, - TYPE_WATER, - TYPE_GRASS, - 45, // catch rate - 181, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_GRASS, - ABILITY_SWIFT_SWIM, - ABILITY_RAIN_DISH, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Seedot - 40, 40, 50, 30, 30, 30, - TYPE_GRASS, - TYPE_GRASS, - 255, // catch rate - 74, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_EARLY_BIRD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Nuzleaf - 70, 70, 40, 60, 60, 40, - TYPE_GRASS, - TYPE_DARK, - 120, // catch rate - 141, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_EARLY_BIRD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Shiftry - 90, 100, 60, 80, 90, 60, - TYPE_GRASS, - TYPE_DARK, - 45, // catch rate - 181, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_EARLY_BIRD, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Nincada - 31, 45, 90, 40, 30, 30, - TYPE_BUG, - TYPE_GROUND, - 255, // catch rate - 65, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_COMPOUND_EYES, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Ninjask - 61, 90, 45, 160, 50, 50, - TYPE_BUG, - TYPE_FLYING, - 120, // catch rate - 155, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_SPEED_BOOST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Shedinja - 1, 90, 45, 40, 30, 30, - TYPE_BUG, - TYPE_GHOST, - 45, // catch rate - 95, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_WONDER_GUARD, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Taillow - 40, 55, 30, 85, 30, 30, - TYPE_NORMAL, - TYPE_FLYING, - 200, // catch rate - 59, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Swellow - 60, 85, 60, 125, 50, 50, - TYPE_NORMAL, - TYPE_FLYING, - 45, // catch rate - 162, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FLYING, - EGG_GROUP_FLYING, - ABILITY_GUTS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Shroomish - 60, 40, 60, 35, 40, 60, - TYPE_GRASS, - TYPE_GRASS, - 255, // catch rate - 65, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_EFFECT_SPORE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Breloom - 60, 130, 80, 70, 60, 60, - TYPE_GRASS, - TYPE_FIGHTING, - 90, // catch rate - 165, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_EFFECT_SPORE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Spinda - 60, 60, 60, 60, 60, 60, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 85, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_CHESTO_BERRY, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_HUMAN_LIKE, - ABILITY_OWN_TEMPO, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN, TRUE - }, { // Wingull - 40, 30, 30, 85, 55, 30, - TYPE_WATER, - TYPE_FLYING, - 190, // catch rate - 64, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Pelipper - 60, 50, 100, 65, 85, 70, - TYPE_WATER, - TYPE_FLYING, - 45, // catch rate - 164, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_FLYING, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Surskit - 40, 30, 32, 65, 50, 52, - TYPE_BUG, - TYPE_WATER, - 200, // catch rate - 63, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_BUG, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Masquerain - 70, 60, 62, 60, 80, 82, - TYPE_BUG, - TYPE_FLYING, - 75, // catch rate - 128, // base exp. yield - 0, 0, 0, 0, 1, 1, - ITEM_NONE, - ITEM_SILVER_POWDER, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_1, - EGG_GROUP_BUG, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Wailmer - 130, 70, 35, 60, 70, 35, - TYPE_WATER, - TYPE_WATER, - 125, // catch rate - 137, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_FIELD, - EGG_GROUP_WATER_2, - ABILITY_WATER_VEIL, - ABILITY_OBLIVIOUS, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Wailord - 170, 90, 45, 60, 90, 45, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 206, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_FIELD, - EGG_GROUP_WATER_2, - ABILITY_WATER_VEIL, - ABILITY_OBLIVIOUS, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Skitty - 50, 45, 45, 50, 35, 35, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 65, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_LEPPA_BERRY, - 191, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Delcatty - 70, 65, 65, 70, 55, 55, - TYPE_NORMAL, - TYPE_NORMAL, - 60, // catch rate - 138, // base exp. yield - 1, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_LEPPA_BERRY, - 191, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_CUTE_CHARM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Kecleon - 60, 90, 70, 40, 60, 120, - TYPE_NORMAL, - TYPE_NORMAL, - 200, // catch rate - 132, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_PERSIM_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_COLOR_CHANGE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Baltoy - 40, 40, 55, 55, 40, 70, - TYPE_GROUND, - TYPE_PSYCHIC, - 255, // catch rate - 58, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Claydol - 60, 70, 105, 75, 70, 120, - TYPE_GROUND, - TYPE_PSYCHIC, - 90, // catch rate - 189, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Nosepass - 30, 45, 135, 30, 45, 90, - TYPE_ROCK, - TYPE_ROCK, - 255, // catch rate - 108, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_STURDY, - ABILITY_MAGNET_PULL, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Torkoal - 70, 85, 140, 20, 85, 70, - TYPE_FIRE, - TYPE_FIRE, - 90, // catch rate - 161, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_WHITE_SMOKE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Sableye - 50, 75, 75, 50, 65, 65, - TYPE_DARK, - TYPE_GHOST, - 45, // catch rate - 98, // base exp. yield - 0, 1, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_KEEN_EYE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Barboach - 50, 48, 43, 60, 46, 41, - TYPE_WATER, - TYPE_GROUND, - 190, // catch rate - 92, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Whiscash - 110, 78, 73, 60, 76, 71, - TYPE_WATER, - TYPE_GROUND, - 75, // catch rate - 158, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Luvdisc - 43, 30, 55, 97, 40, 65, - TYPE_WATER, - TYPE_WATER, - 225, // catch rate - 110, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_HEART_SCALE, - ITEM_NONE, - 191, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Corphish - 43, 80, 65, 35, 50, 35, - TYPE_WATER, - TYPE_WATER, - 205, // catch rate - 111, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_HYPER_CUTTER, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Crawdaunt - 63, 120, 85, 55, 90, 55, - TYPE_WATER, - TYPE_DARK, - 155, // catch rate - 161, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_3, - ABILITY_HYPER_CUTTER, - ABILITY_SHELL_ARMOR, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Feebas - 20, 15, 20, 80, 10, 55, - TYPE_WATER, - TYPE_WATER, - 255, // catch rate - 61, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Milotic - 95, 60, 79, 81, 100, 125, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 213, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_1, - EGG_GROUP_DRAGON, - ABILITY_MARVEL_SCALE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Carvanha - 45, 90, 20, 65, 65, 20, - TYPE_WATER, - TYPE_DARK, - 225, // catch rate - 88, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_ROUGH_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Sharpedo - 70, 120, 40, 95, 95, 40, - TYPE_WATER, - TYPE_DARK, - 60, // catch rate - 175, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_2, - EGG_GROUP_WATER_2, - ABILITY_ROUGH_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Trapinch - 45, 100, 45, 10, 45, 45, - TYPE_GROUND, - TYPE_GROUND, - 255, // catch rate - 73, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SOFT_SAND, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_HYPER_CUTTER, - ABILITY_ARENA_TRAP, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Vibrava - 50, 70, 50, 70, 50, 50, - TYPE_GROUND, - TYPE_DRAGON, - 120, // catch rate - 126, // base exp. yield - 0, 1, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_LEVITATE, - ABILITY_LEVITATE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Flygon - 80, 100, 80, 100, 80, 80, - TYPE_GROUND, - TYPE_DRAGON, - 45, // catch rate - 197, // base exp. yield - 0, 1, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_BUG, - EGG_GROUP_BUG, - ABILITY_LEVITATE, - ABILITY_LEVITATE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Makuhita - 72, 60, 30, 25, 20, 30, - TYPE_FIGHTING, - TYPE_FIGHTING, - 180, // catch rate - 87, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_THICK_FAT, - ABILITY_GUTS, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Hariyama - 144, 120, 60, 50, 40, 60, - TYPE_FIGHTING, - TYPE_FIGHTING, - 200, // catch rate - 184, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_KINGS_ROCK, - 63, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_THICK_FAT, - ABILITY_GUTS, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Electrike - 40, 45, 40, 65, 65, 40, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 120, // catch rate - 104, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_STATIC, - ABILITY_LIGHTNING_ROD, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Manectric - 70, 75, 60, 105, 105, 60, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 45, // catch rate - 168, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_STATIC, - ABILITY_LIGHTNING_ROD, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Numel - 60, 60, 40, 35, 65, 45, - TYPE_FIRE, - TYPE_GROUND, - 255, // catch rate - 88, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Camerupt - 70, 100, 70, 40, 105, 75, - TYPE_FIRE, - TYPE_GROUND, - 150, // catch rate - 175, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_RAWST_BERRY, - ITEM_RAWST_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_MAGMA_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Spheal - 70, 40, 50, 25, 55, 50, - TYPE_ICE, - TYPE_WATER, - 255, // catch rate - 75, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Sealeo - 90, 60, 70, 45, 75, 70, - TYPE_ICE, - TYPE_WATER, - 120, // catch rate - 128, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Walrein - 110, 80, 90, 65, 95, 90, - TYPE_ICE, - TYPE_WATER, - 45, // catch rate - 192, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Cacnea - 50, 85, 40, 35, 85, 40, - TYPE_GRASS, - TYPE_GRASS, - 190, // catch rate - 97, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_POISON_BARB, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SAND_VEIL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Cacturne - 70, 115, 60, 55, 115, 60, - TYPE_GRASS, - TYPE_DARK, - 60, // catch rate - 177, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_NONE, - ITEM_POISON_BARB, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_GRASS, - EGG_GROUP_HUMAN_LIKE, - ABILITY_SAND_VEIL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Snorunt - 50, 50, 50, 50, 50, 50, - TYPE_ICE, - TYPE_ICE, - 190, // catch rate - 74, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_MINERAL, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Glalie - 80, 80, 80, 80, 80, 80, - TYPE_ICE, - TYPE_ICE, - 75, // catch rate - 187, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NEVER_MELT_ICE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_MINERAL, - ABILITY_INNER_FOCUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Lunatone - 70, 55, 65, 70, 95, 85, - TYPE_ROCK, - TYPE_PSYCHIC, - 45, // catch rate - 150, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_MOON_STONE, - 255, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Solrock - 70, 95, 85, 70, 55, 65, - TYPE_ROCK, - TYPE_PSYCHIC, - 45, // catch rate - 150, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SUN_STONE, - 255, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Azurill - 50, 20, 40, 20, 20, 40, - TYPE_NORMAL, - TYPE_NORMAL, - 150, // catch rate - 33, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 191, // gender - 10, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_THICK_FAT, - ABILITY_HUGE_POWER, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Spoink - 60, 25, 35, 60, 70, 80, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 255, // catch rate - 89, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_OWN_TEMPO, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Grumpig - 80, 45, 65, 80, 90, 110, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 60, // catch rate - 164, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_THICK_FAT, - ABILITY_OWN_TEMPO, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Plusle - 60, 50, 40, 95, 85, 75, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 200, // catch rate - 120, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_PLUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Minun - 60, 40, 50, 95, 75, 85, - TYPE_ELECTRIC, - TYPE_ELECTRIC, - 200, // catch rate - 120, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_FAIRY, - ABILITY_MINUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Mawile - 50, 85, 85, 50, 55, 55, - TYPE_STEEL, - TYPE_STEEL, - 45, // catch rate - 98, // base exp. yield - 0, 1, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_FIELD, - EGG_GROUP_FAIRY, - ABILITY_HYPER_CUTTER, - ABILITY_INTIMIDATE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Meditite - 30, 40, 55, 60, 40, 55, - TYPE_FIGHTING, - TYPE_PSYCHIC, - 180, // catch rate - 91, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_PURE_POWER, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Medicham - 60, 60, 75, 80, 60, 75, - TYPE_FIGHTING, - TYPE_PSYCHIC, - 90, // catch rate - 153, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_HUMAN_LIKE, - EGG_GROUP_HUMAN_LIKE, - ABILITY_PURE_POWER, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Swablu - 45, 40, 60, 50, 40, 75, - TYPE_NORMAL, - TYPE_FLYING, - 255, // catch rate - 74, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_FLYING, - EGG_GROUP_DRAGON, - ABILITY_NATURAL_CURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Altaria - 75, 70, 90, 80, 70, 105, - TYPE_DRAGON, - TYPE_FLYING, - 45, // catch rate - 188, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_FLYING, - EGG_GROUP_DRAGON, - ABILITY_NATURAL_CURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Wynaut - 95, 23, 48, 23, 23, 48, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 125, // catch rate - 44, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_SHADOW_TAG, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Duskull - 20, 40, 90, 25, 30, 90, - TYPE_GHOST, - TYPE_GHOST, - 190, // catch rate - 97, // base exp. yield - 0, 0, 1, 0, 0, 1, - ITEM_NONE, - ITEM_SPELL_TAG, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Dusclops - 40, 70, 130, 25, 60, 130, - TYPE_GHOST, - TYPE_GHOST, - 90, // catch rate - 179, // base exp. yield - 0, 0, 1, 0, 0, 2, - ITEM_NONE, - ITEM_SPELL_TAG, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Roselia - 50, 60, 45, 65, 100, 80, - TYPE_GRASS, - TYPE_POISON, - 150, // catch rate - 152, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_POISON_BARB, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FAIRY, - EGG_GROUP_GRASS, - ABILITY_NATURAL_CURE, - ABILITY_POISON_POINT, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN, TRUE - }, { // Slakoth - 60, 60, 60, 30, 35, 35, - TYPE_NORMAL, - TYPE_NORMAL, - 255, // catch rate - 83, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_TRUANT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Vigoroth - 80, 80, 80, 90, 55, 55, - TYPE_NORMAL, - TYPE_NORMAL, - 120, // catch rate - 126, // base exp. yield - 0, 0, 0, 2, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_VITAL_SPIRIT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Slaking - 150, 160, 100, 100, 95, 65, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 210, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_TRUANT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Gulpin - 70, 43, 53, 40, 43, 53, - TYPE_POISON, - TYPE_POISON, - 225, // catch rate - 75, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_BIG_PEARL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LIQUID_OOZE, - ABILITY_STICKY_HOLD, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Swalot - 100, 73, 83, 55, 73, 83, - TYPE_POISON, - TYPE_POISON, - 75, // catch rate - 168, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_BIG_PEARL, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LIQUID_OOZE, - ABILITY_STICKY_HOLD, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Tropius - 99, 68, 83, 51, 72, 87, - TYPE_GRASS, - TYPE_FLYING, - 200, // catch rate - 169, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_GRASS, - ABILITY_CHLOROPHYLL, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Whismur - 64, 51, 23, 28, 51, 23, - TYPE_NORMAL, - TYPE_NORMAL, - 190, // catch rate - 68, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_CHESTO_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_SOUNDPROOF, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Loudred - 84, 71, 43, 48, 71, 43, - TYPE_NORMAL, - TYPE_NORMAL, - 120, // catch rate - 126, // base exp. yield - 2, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_CHESTO_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_SOUNDPROOF, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Exploud - 104, 91, 63, 68, 91, 63, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 184, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_NONE, - ITEM_CHESTO_BERRY, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_FIELD, - ABILITY_SOUNDPROOF, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Clamperl - 35, 64, 85, 32, 74, 55, - TYPE_WATER, - TYPE_WATER, - 255, // catch rate - 142, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_BLUE_SHARD, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_SHELL_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Huntail - 55, 104, 105, 52, 94, 75, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 178, // base exp. yield - 0, 1, 1, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Gorebyss - 55, 84, 105, 52, 114, 75, - TYPE_WATER, - TYPE_WATER, - 60, // catch rate - 178, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_1, - ABILITY_SWIFT_SWIM, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PINK - }, { // Absol - 65, 130, 60, 75, 75, 60, - TYPE_DARK, - TYPE_DARK, - 30, // catch rate - 174, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_MEDIUM_SLOW, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE, TRUE - }, { // Shuppet - 44, 75, 35, 45, 63, 33, - TYPE_GHOST, - TYPE_GHOST, - 225, // catch rate - 97, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SPELL_TAG, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_INSOMNIA, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Banette - 64, 115, 65, 65, 83, 63, - TYPE_GHOST, - TYPE_GHOST, - 45, // catch rate - 179, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_SPELL_TAG, - 127, // gender - 25, // egg cycles - 35, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_INSOMNIA, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK - }, { // Seviper - 73, 100, 60, 65, 100, 60, - TYPE_POISON, - TYPE_POISON, - 90, // catch rate - 165, // base exp. yield - 0, 1, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_FIELD, - EGG_GROUP_DRAGON, - ABILITY_SHED_SKIN, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLACK, TRUE - }, { // Zangoose - 73, 115, 60, 90, 60, 60, - TYPE_NORMAL, - TYPE_NORMAL, - 90, // catch rate - 165, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_FIELD, - EGG_GROUP_FIELD, - ABILITY_IMMUNITY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE, TRUE - }, { // Relicanth - 100, 90, 130, 55, 45, 65, - TYPE_WATER, - TYPE_ROCK, - 25, // catch rate - 198, // base exp. yield - 1, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_GREEN_SHARD, - 31, // gender - 40, // egg cycles - 70, // base friendship - GROWTH_SLOW, - EGG_GROUP_WATER_1, - EGG_GROUP_WATER_2, - ABILITY_SWIFT_SWIM, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Aron - 50, 70, 100, 30, 40, 40, - TYPE_STEEL, - TYPE_ROCK, - 180, // catch rate - 96, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_HARD_STONE, - 127, // gender - 35, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_STURDY, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Lairon - 60, 90, 140, 40, 50, 50, - TYPE_STEEL, - TYPE_ROCK, - 90, // catch rate - 152, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_HARD_STONE, - 127, // gender - 35, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_STURDY, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Aggron - 70, 110, 180, 50, 60, 60, - TYPE_STEEL, - TYPE_ROCK, - 45, // catch rate - 205, // base exp. yield - 0, 0, 3, 0, 0, 0, - ITEM_NONE, - ITEM_HARD_STONE, - 127, // gender - 35, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MONSTER, - EGG_GROUP_MONSTER, - ABILITY_STURDY, - ABILITY_ROCK_HEAD, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Castform - 70, 70, 70, 70, 70, 70, - TYPE_NORMAL, - TYPE_NORMAL, - 45, // catch rate - 145, // base exp. yield - 1, 0, 0, 0, 0, 0, - ITEM_MYSTIC_WATER, - ITEM_MYSTIC_WATER, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_MEDIUM_FAST, - EGG_GROUP_FAIRY, - EGG_GROUP_AMORPHOUS, - ABILITY_FORECAST, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Volbeat - 65, 73, 55, 85, 47, 75, - TYPE_BUG, - TYPE_BUG, - 150, // catch rate - 146, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_BUG, - EGG_GROUP_HUMAN_LIKE, - ABILITY_ILLUMINATE, - ABILITY_SWARM, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Illumise - 65, 47, 55, 85, 73, 75, - TYPE_BUG, - TYPE_BUG, - 150, // catch rate - 146, // base exp. yield - 0, 0, 0, 1, 0, 0, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 15, // egg cycles - 70, // base friendship - GROWTH_FLUCTUATING, - EGG_GROUP_BUG, - EGG_GROUP_HUMAN_LIKE, - ABILITY_OBLIVIOUS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Lileep - 66, 41, 77, 23, 61, 87, - TYPE_ROCK, - TYPE_GRASS, - 45, // catch rate - 121, // base exp. yield - 0, 0, 0, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_SUCTION_CUPS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_PURPLE - }, { // Cradily - 86, 81, 97, 43, 81, 107, - TYPE_ROCK, - TYPE_GRASS, - 45, // catch rate - 201, // base exp. yield - 0, 0, 0, 0, 0, 2, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_SUCTION_CUPS, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Anorith - 45, 95, 50, 75, 40, 50, - TYPE_ROCK, - TYPE_BUG, - 45, // catch rate - 119, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_BATTLE_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Armaldo - 75, 125, 100, 45, 70, 80, - TYPE_ROCK, - TYPE_BUG, - 45, // catch rate - 200, // base exp. yield - 0, 2, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 31, // gender - 30, // egg cycles - 70, // base friendship - GROWTH_ERRATIC, - EGG_GROUP_WATER_3, - EGG_GROUP_WATER_3, - ABILITY_BATTLE_ARMOR, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Ralts - 28, 25, 25, 40, 45, 35, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 235, // catch rate - 70, // base exp. yield - 0, 0, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_SYNCHRONIZE, - ABILITY_TRACE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Kirlia - 38, 35, 35, 50, 65, 55, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 120, // catch rate - 140, // base exp. yield - 0, 0, 0, 0, 2, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_SYNCHRONIZE, - ABILITY_TRACE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Gardevoir - 68, 65, 65, 80, 125, 115, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 208, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 20, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_SYNCHRONIZE, - ABILITY_TRACE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Bagon - 45, 75, 60, 50, 40, 30, - TYPE_DRAGON, - TYPE_DRAGON, - 45, // catch rate - 89, // base exp. yield - 0, 1, 0, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_DRAGON, - EGG_GROUP_DRAGON, - ABILITY_ROCK_HEAD, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Shelgon - 65, 95, 100, 50, 60, 50, - TYPE_DRAGON, - TYPE_DRAGON, - 45, // catch rate - 144, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_DRAGON, - EGG_GROUP_DRAGON, - ABILITY_ROCK_HEAD, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_WHITE - }, { // Salamence - 95, 135, 80, 100, 110, 80, - TYPE_DRAGON, - TYPE_FLYING, - 45, // catch rate - 218, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_DRAGON_SCALE, - 127, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_DRAGON, - EGG_GROUP_DRAGON, - ABILITY_INTIMIDATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Beldum - 40, 55, 80, 30, 35, 60, - TYPE_STEEL, - TYPE_PSYCHIC, - 3, // catch rate - 103, // base exp. yield - 0, 0, 1, 0, 0, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 255, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Metang - 60, 75, 100, 50, 55, 80, - TYPE_STEEL, - TYPE_PSYCHIC, - 3, // catch rate - 153, // base exp. yield - 0, 0, 2, 0, 0, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 255, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Metagross - 80, 135, 130, 70, 95, 90, - TYPE_STEEL, - TYPE_PSYCHIC, - 3, // catch rate - 210, // base exp. yield - 0, 0, 3, 0, 0, 0, - ITEM_NONE, - ITEM_METAL_COAT, - 255, // gender - 40, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_MINERAL, - EGG_GROUP_MINERAL, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Regirock - 80, 100, 200, 50, 50, 100, - TYPE_ROCK, - TYPE_ROCK, - 3, // catch rate - 217, // base exp. yield - 0, 0, 3, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BROWN - }, { // Regice - 80, 50, 100, 50, 100, 200, - TYPE_ICE, - TYPE_ICE, - 3, // catch rate - 216, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Registeel - 80, 75, 150, 50, 75, 150, - TYPE_STEEL, - TYPE_STEEL, - 3, // catch rate - 215, // base exp. yield - 0, 0, 2, 0, 0, 1, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 80, // egg cycles - 35, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_CLEAR_BODY, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GRAY - }, { // Kyogre - 100, 100, 90, 90, 150, 140, - TYPE_WATER, - TYPE_WATER, - 5, // catch rate - 218, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_DRIZZLE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Groudon - 100, 150, 140, 90, 100, 90, - TYPE_GROUND, - TYPE_GROUND, - 5, // catch rate - 218, // base exp. yield - 0, 3, 0, 0, 0, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_DROUGHT, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Rayquaza - 105, 150, 90, 95, 150, 90, - TYPE_DRAGON, - TYPE_FLYING, - 3, // catch rate - 220, // base exp. yield - 0, 2, 0, 0, 1, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_AIR_LOCK, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_GREEN - }, { // Latias - 80, 80, 90, 110, 110, 130, - TYPE_DRAGON, - TYPE_PSYCHIC, - 3, // catch rate - 211, // base exp. yield - 0, 0, 0, 0, 0, 3, - ITEM_NONE, - ITEM_NONE, - 254, // gender - 120, // egg cycles - 90, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED - }, { // Latios - 80, 90, 80, 110, 130, 110, - TYPE_DRAGON, - TYPE_PSYCHIC, - 3, // catch rate - 211, // base exp. yield - 0, 0, 0, 0, 3, 0, - ITEM_NONE, - ITEM_NONE, - 0, // gender - 120, // egg cycles - 90, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - }, { // Jirachi - 100, 100, 100, 100, 100, 100, - TYPE_STEEL, - TYPE_PSYCHIC, - 3, // catch rate - 215, // base exp. yield - 3, 0, 0, 0, 0, 0, - ITEM_STAR_PIECE, - ITEM_STAR_PIECE, - 255, // gender - 120, // egg cycles - 100, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_SERENE_GRACE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_YELLOW - }, { // Deoxys - 50, 150, 50, 150, 150, 50, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 3, // catch rate - 215, // base exp. yield - 0, 1, 0, 1, 1, 0, - ITEM_NONE, - ITEM_NONE, - 255, // gender - 120, // egg cycles - 0, // base friendship - GROWTH_SLOW, - EGG_GROUP_UNDISCOVERED, - EGG_GROUP_UNDISCOVERED, - ABILITY_PRESSURE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_RED, TRUE - }, { // Chimecho - 65, 50, 70, 65, 95, 80, - TYPE_PSYCHIC, - TYPE_PSYCHIC, - 45, // catch rate - 147, // base exp. yield - 0, 0, 0, 0, 1, 1, - ITEM_NONE, - ITEM_NONE, - 127, // gender - 25, // egg cycles - 70, // base friendship - GROWTH_FAST, - EGG_GROUP_AMORPHOUS, - EGG_GROUP_AMORPHOUS, - ABILITY_LEVITATE, - ABILITY_NONE, - 0, // Safari Zone flee rate - BODY_COLOR_BLUE - } -}; - -const u16 gBulbasaurLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), - LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(20, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(25, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(32, MOVE_GROWTH), - LEVEL_UP_MOVE(39, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(46, MOVE_SOLAR_BEAM), - -1 -}; - -const u16 gIvysaurLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), - LEVEL_UP_MOVE( 4, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), - LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(38, MOVE_GROWTH), - LEVEL_UP_MOVE(47, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(56, MOVE_SOLAR_BEAM), - -1 -}; - -const u16 gVenusaurLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), - LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), - LEVEL_UP_MOVE( 4, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(10, MOVE_VINE_WHIP), - LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(22, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(29, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(41, MOVE_GROWTH), - LEVEL_UP_MOVE(53, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM), - -1 -}; - -const u16 gCharmanderLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_EMBER), - LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(19, MOVE_RAGE), - LEVEL_UP_MOVE(25, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(31, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(37, MOVE_SLASH), - LEVEL_UP_MOVE(43, MOVE_DRAGON_RAGE), - LEVEL_UP_MOVE(49, MOVE_FIRE_SPIN), - -1 -}; - -const u16 gCharmeleonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 7, MOVE_EMBER), - LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(20, MOVE_RAGE), - LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(41, MOVE_SLASH), - LEVEL_UP_MOVE(48, MOVE_DRAGON_RAGE), - LEVEL_UP_MOVE(55, MOVE_FIRE_SPIN), - -1 -}; - -const u16 gCharizardLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 7, MOVE_EMBER), - LEVEL_UP_MOVE(13, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(20, MOVE_RAGE), - LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(34, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(36, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(44, MOVE_SLASH), - LEVEL_UP_MOVE(54, MOVE_DRAGON_RAGE), - LEVEL_UP_MOVE(64, MOVE_FIRE_SPIN), - -1 -}; - -const u16 gSquirtleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 7, MOVE_BUBBLE), - LEVEL_UP_MOVE(10, MOVE_WITHDRAW), - LEVEL_UP_MOVE(13, MOVE_WATER_GUN), - LEVEL_UP_MOVE(18, MOVE_BITE), - LEVEL_UP_MOVE(23, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(28, MOVE_PROTECT), - LEVEL_UP_MOVE(33, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(40, MOVE_SKULL_BASH), - LEVEL_UP_MOVE(47, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gWartortleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 7, MOVE_BUBBLE), - LEVEL_UP_MOVE(10, MOVE_WITHDRAW), - LEVEL_UP_MOVE(13, MOVE_WATER_GUN), - LEVEL_UP_MOVE(19, MOVE_BITE), - LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(31, MOVE_PROTECT), - LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(45, MOVE_SKULL_BASH), - LEVEL_UP_MOVE(53, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gBlastoiseLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), - LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 7, MOVE_BUBBLE), - LEVEL_UP_MOVE(10, MOVE_WITHDRAW), - LEVEL_UP_MOVE(13, MOVE_WATER_GUN), - LEVEL_UP_MOVE(19, MOVE_BITE), - LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(31, MOVE_PROTECT), - LEVEL_UP_MOVE(42, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(55, MOVE_SKULL_BASH), - LEVEL_UP_MOVE(68, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gCaterpieLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), - -1 -}; - -const u16 gMetapodLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - -1 -}; - -const u16 gButterfreeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE(10, MOVE_CONFUSION), - LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(14, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(18, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(23, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(28, MOVE_GUST), - LEVEL_UP_MOVE(34, MOVE_PSYBEAM), - LEVEL_UP_MOVE(40, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(47, MOVE_SILVER_WIND), - -1 -}; - -const u16 gWeedleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), - -1 -}; - -const u16 gKakunaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - -1 -}; - -const u16 gBeedrillLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(10, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(15, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(20, MOVE_TWINEEDLE), - LEVEL_UP_MOVE(25, MOVE_RAGE), - LEVEL_UP_MOVE(30, MOVE_PURSUIT), - LEVEL_UP_MOVE(35, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(40, MOVE_AGILITY), - LEVEL_UP_MOVE(45, MOVE_ENDEAVOR), - -1 -}; - -const u16 gPidgeyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_GUST), - LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(19, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(25, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(31, MOVE_FEATHER_DANCE), - LEVEL_UP_MOVE(39, MOVE_AGILITY), - LEVEL_UP_MOVE(47, MOVE_MIRROR_MOVE), - -1 -}; - -const u16 gPidgeottoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_GUST), - LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_GUST), - LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(20, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(27, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE), - LEVEL_UP_MOVE(43, MOVE_AGILITY), - LEVEL_UP_MOVE(52, MOVE_MIRROR_MOVE), - -1 -}; - -const u16 gPidgeotLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_GUST), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 5, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_GUST), - LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(20, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(27, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(34, MOVE_FEATHER_DANCE), - LEVEL_UP_MOVE(48, MOVE_AGILITY), - LEVEL_UP_MOVE(62, MOVE_MIRROR_MOVE), - -1 -}; - -const u16 gRattataLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_HYPER_FANG), - LEVEL_UP_MOVE(20, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(27, MOVE_PURSUIT), - LEVEL_UP_MOVE(34, MOVE_SUPER_FANG), - LEVEL_UP_MOVE(41, MOVE_ENDEAVOR), - -1 -}; - -const u16 gRaticateLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_HYPER_FANG), - LEVEL_UP_MOVE(20, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(30, MOVE_PURSUIT), - LEVEL_UP_MOVE(40, MOVE_SUPER_FANG), - LEVEL_UP_MOVE(50, MOVE_ENDEAVOR), - -1 -}; - -const u16 gSpearowLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_LEER), - LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(19, MOVE_PURSUIT), - LEVEL_UP_MOVE(25, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(31, MOVE_MIRROR_MOVE), - LEVEL_UP_MOVE(37, MOVE_DRILL_PECK), - LEVEL_UP_MOVE(43, MOVE_AGILITY), - -1 -}; - -const u16 gFearowLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE( 7, MOVE_LEER), - LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(26, MOVE_PURSUIT), - LEVEL_UP_MOVE(32, MOVE_MIRROR_MOVE), - LEVEL_UP_MOVE(40, MOVE_DRILL_PECK), - LEVEL_UP_MOVE(47, MOVE_AGILITY), - -1 -}; - -const u16 gEkansLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 8, MOVE_POISON_STING), - LEVEL_UP_MOVE(13, MOVE_BITE), - LEVEL_UP_MOVE(20, MOVE_GLARE), - LEVEL_UP_MOVE(25, MOVE_SCREECH), - LEVEL_UP_MOVE(32, MOVE_ACID), - LEVEL_UP_MOVE(37, MOVE_STOCKPILE), - LEVEL_UP_MOVE(37, MOVE_SWALLOW), - LEVEL_UP_MOVE(37, MOVE_SPIT_UP), - LEVEL_UP_MOVE(44, MOVE_HAZE), - -1 -}; - -const u16 gArbokLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 8, MOVE_POISON_STING), - LEVEL_UP_MOVE(13, MOVE_BITE), - LEVEL_UP_MOVE(20, MOVE_GLARE), - LEVEL_UP_MOVE(28, MOVE_SCREECH), - LEVEL_UP_MOVE(38, MOVE_ACID), - LEVEL_UP_MOVE(46, MOVE_STOCKPILE), - LEVEL_UP_MOVE(46, MOVE_SWALLOW), - LEVEL_UP_MOVE(46, MOVE_SPIT_UP), - LEVEL_UP_MOVE(56, MOVE_HAZE), - -1 -}; - -const u16 gPikachuLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(15, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(20, MOVE_SLAM), - LEVEL_UP_MOVE(26, MOVE_THUNDERBOLT), - LEVEL_UP_MOVE(33, MOVE_AGILITY), - LEVEL_UP_MOVE(41, MOVE_THUNDER), - LEVEL_UP_MOVE(50, MOVE_LIGHT_SCREEN), - -1 -}; - -const u16 gRaichuLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_THUNDERBOLT), - -1 -}; - -const u16 gSandshrewLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 6, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(17, MOVE_POISON_STING), - LEVEL_UP_MOVE(23, MOVE_SLASH), - LEVEL_UP_MOVE(30, MOVE_SWIFT), - LEVEL_UP_MOVE(37, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(45, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(53, MOVE_SANDSTORM), - -1 -}; - -const u16 gSandslashLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(11, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(17, MOVE_POISON_STING), - LEVEL_UP_MOVE(24, MOVE_SLASH), - LEVEL_UP_MOVE(33, MOVE_SWIFT), - LEVEL_UP_MOVE(42, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(52, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(62, MOVE_SANDSTORM), - -1 -}; - -const u16 gNidoranFLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 8, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(17, MOVE_POISON_STING), - LEVEL_UP_MOVE(20, MOVE_BITE), - LEVEL_UP_MOVE(23, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(38, MOVE_FLATTER), - LEVEL_UP_MOVE(47, MOVE_CRUNCH), - -1 -}; - -const u16 gNidorinaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 8, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(18, MOVE_POISON_STING), - LEVEL_UP_MOVE(22, MOVE_BITE), - LEVEL_UP_MOVE(26, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(43, MOVE_FLATTER), - LEVEL_UP_MOVE(53, MOVE_CRUNCH), - -1 -}; - -const u16 gNidoqueenLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE(23, MOVE_BODY_SLAM), - -1 -}; - -const u16 gNidoranMLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(17, MOVE_POISON_STING), - LEVEL_UP_MOVE(20, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE(23, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(30, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(38, MOVE_FLATTER), - LEVEL_UP_MOVE(47, MOVE_HORN_DRILL), - -1 -}; - -const u16 gNidorinoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 8, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(12, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(18, MOVE_POISON_STING), - LEVEL_UP_MOVE(22, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE(26, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(34, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(43, MOVE_FLATTER), - LEVEL_UP_MOVE(53, MOVE_HORN_DRILL), - -1 -}; - -const u16 gNidokingLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE(23, MOVE_THRASH), - -1 -}; - -const u16 gClefairyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 5, MOVE_ENCORE), - LEVEL_UP_MOVE( 9, MOVE_SING), - LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(17, MOVE_FOLLOW_ME), - LEVEL_UP_MOVE(21, MOVE_MINIMIZE), - LEVEL_UP_MOVE(25, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(29, MOVE_METRONOME), - LEVEL_UP_MOVE(33, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(37, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(45, MOVE_METEOR_MASH), - -1 -}; - -const u16 gClefableLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE( 1, MOVE_MINIMIZE), - LEVEL_UP_MOVE( 1, MOVE_METRONOME), - -1 -}; - -const u16 gVulpixLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 9, MOVE_ROAR), - LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(17, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(21, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(25, MOVE_IMPRISON), - LEVEL_UP_MOVE(29, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(33, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(37, MOVE_GRUDGE), - LEVEL_UP_MOVE(41, MOVE_FIRE_SPIN), - -1 -}; - -const u16 gNinetalesLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(45, MOVE_FIRE_SPIN), - -1 -}; - -const u16 gJigglypuffLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 9, MOVE_POUND), - LEVEL_UP_MOVE(14, MOVE_DISABLE), - LEVEL_UP_MOVE(19, MOVE_ROLLOUT), - LEVEL_UP_MOVE(24, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(29, MOVE_REST), - LEVEL_UP_MOVE(34, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(39, MOVE_MIMIC), - LEVEL_UP_MOVE(44, MOVE_HYPER_VOICE), - LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gWigglytuffLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), - -1 -}; - -const u16 gZubatLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(11, MOVE_ASTONISH), - LEVEL_UP_MOVE(16, MOVE_BITE), - LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(26, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(31, MOVE_AIR_CUTTER), - LEVEL_UP_MOVE(36, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(41, MOVE_POISON_FANG), - LEVEL_UP_MOVE(46, MOVE_HAZE), - -1 -}; - -const u16 gGolbatLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCREECH), - LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(11, MOVE_ASTONISH), - LEVEL_UP_MOVE(16, MOVE_BITE), - LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER), - LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(49, MOVE_POISON_FANG), - LEVEL_UP_MOVE(56, MOVE_HAZE), - -1 -}; - -const u16 gOddishLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 7, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(16, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(23, MOVE_ACID), - LEVEL_UP_MOVE(32, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(39, MOVE_PETAL_DANCE), - -1 -}; - -const u16 gGloomLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE( 1, MOVE_POISON_POWDER), - LEVEL_UP_MOVE( 7, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(14, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(16, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(18, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(24, MOVE_ACID), - LEVEL_UP_MOVE(35, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), - -1 -}; - -const u16 gVileplumeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_AROMATHERAPY), - LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), - LEVEL_UP_MOVE( 1, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), - -1 -}; - -const u16 gParasLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE(25, MOVE_SPORE), - LEVEL_UP_MOVE(31, MOVE_SLASH), - LEVEL_UP_MOVE(37, MOVE_GROWTH), - LEVEL_UP_MOVE(43, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(49, MOVE_AROMATHERAPY), - -1 -}; - -const u16 gParasectLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), - LEVEL_UP_MOVE( 1, MOVE_POISON_POWDER), - LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(19, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE(27, MOVE_SPORE), - LEVEL_UP_MOVE(35, MOVE_SLASH), - LEVEL_UP_MOVE(43, MOVE_GROWTH), - LEVEL_UP_MOVE(51, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(59, MOVE_AROMATHERAPY), - -1 -}; - -const u16 gVenonatLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), - LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), - LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(17, MOVE_CONFUSION), - LEVEL_UP_MOVE(20, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE(28, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(33, MOVE_PSYBEAM), - LEVEL_UP_MOVE(36, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(41, MOVE_PSYCHIC), - -1 -}; - -const u16 gVenomothLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SILVER_WIND), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), - LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(17, MOVE_CONFUSION), - LEVEL_UP_MOVE(20, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE(28, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(31, MOVE_GUST), - LEVEL_UP_MOVE(36, MOVE_PSYBEAM), - LEVEL_UP_MOVE(42, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(52, MOVE_PSYCHIC), - -1 -}; - -const u16 gDiglettLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 5, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(17, MOVE_DIG), - LEVEL_UP_MOVE(25, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(33, MOVE_SLASH), - LEVEL_UP_MOVE(41, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(49, MOVE_FISSURE), - -1 -}; - -const u16 gDugtrioLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 5, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(17, MOVE_DIG), - LEVEL_UP_MOVE(25, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(26, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(38, MOVE_SLASH), - LEVEL_UP_MOVE(51, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(64, MOVE_FISSURE), - -1 -}; - -const u16 gMeowthLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE(11, MOVE_BITE), - LEVEL_UP_MOVE(20, MOVE_PAY_DAY), - LEVEL_UP_MOVE(28, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(35, MOVE_SCREECH), - LEVEL_UP_MOVE(41, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(46, MOVE_SLASH), - LEVEL_UP_MOVE(50, MOVE_FAKE_OUT), - -1 -}; - -const u16 gPersianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE(11, MOVE_BITE), - LEVEL_UP_MOVE(20, MOVE_PAY_DAY), - LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(38, MOVE_SCREECH), - LEVEL_UP_MOVE(46, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(53, MOVE_SLASH), - LEVEL_UP_MOVE(59, MOVE_FAKE_OUT), - -1 -}; - -const u16 gPsyduckLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(10, MOVE_DISABLE), - LEVEL_UP_MOVE(16, MOVE_CONFUSION), - LEVEL_UP_MOVE(23, MOVE_SCREECH), - LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(40, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gGolduckLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(10, MOVE_DISABLE), - LEVEL_UP_MOVE(16, MOVE_CONFUSION), - LEVEL_UP_MOVE(23, MOVE_SCREECH), - LEVEL_UP_MOVE(31, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(44, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gMankeyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 9, MOVE_LOW_KICK), - LEVEL_UP_MOVE(15, MOVE_KARATE_CHOP), - LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(27, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(33, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(39, MOVE_CROSS_CHOP), - LEVEL_UP_MOVE(45, MOVE_SCREECH), - LEVEL_UP_MOVE(51, MOVE_THRASH), - -1 -}; - -const u16 gPrimeapeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), - LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 9, MOVE_LOW_KICK), - LEVEL_UP_MOVE(15, MOVE_KARATE_CHOP), - LEVEL_UP_MOVE(21, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(27, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(28, MOVE_RAGE), - LEVEL_UP_MOVE(36, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(45, MOVE_CROSS_CHOP), - LEVEL_UP_MOVE(54, MOVE_SCREECH), - LEVEL_UP_MOVE(63, MOVE_THRASH), - -1 -}; - -const u16 gGrowlitheLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_ROAR), - LEVEL_UP_MOVE( 7, MOVE_EMBER), - LEVEL_UP_MOVE(13, MOVE_LEER), - LEVEL_UP_MOVE(19, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), - LEVEL_UP_MOVE(37, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(43, MOVE_AGILITY), - LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), - -1 -}; - -const u16 gArcanineLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_ROAR), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(49, MOVE_EXTREME_SPEED), - -1 -}; - -const u16 gPoliwagLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 7, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(13, MOVE_WATER_GUN), - LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(25, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gPoliwhirlLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 7, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(13, MOVE_WATER_GUN), - LEVEL_UP_MOVE(19, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(27, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(35, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(43, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gPoliwrathLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE( 1, MOVE_SUBMISSION), - LEVEL_UP_MOVE(35, MOVE_SUBMISSION), - LEVEL_UP_MOVE(51, MOVE_MIND_READER), - -1 -}; - -const u16 gAbraLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TELEPORT), - -1 -}; - -const u16 gKadabraLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TELEPORT), - LEVEL_UP_MOVE( 1, MOVE_KINESIS), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE(16, MOVE_CONFUSION), - LEVEL_UP_MOVE(18, MOVE_DISABLE), - LEVEL_UP_MOVE(21, MOVE_PSYBEAM), - LEVEL_UP_MOVE(23, MOVE_REFLECT), - LEVEL_UP_MOVE(25, MOVE_RECOVER), - LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(33, MOVE_ROLE_PLAY), - LEVEL_UP_MOVE(36, MOVE_PSYCHIC), - LEVEL_UP_MOVE(43, MOVE_TRICK), - -1 -}; - -const u16 gAlakazamLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TELEPORT), - LEVEL_UP_MOVE( 1, MOVE_KINESIS), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE(16, MOVE_CONFUSION), - LEVEL_UP_MOVE(18, MOVE_DISABLE), - LEVEL_UP_MOVE(21, MOVE_PSYBEAM), - LEVEL_UP_MOVE(23, MOVE_REFLECT), - LEVEL_UP_MOVE(25, MOVE_RECOVER), - LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(33, MOVE_CALM_MIND), - LEVEL_UP_MOVE(36, MOVE_PSYCHIC), - LEVEL_UP_MOVE(43, MOVE_TRICK), - -1 -}; - -const u16 gMachopLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), - LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(22, MOVE_FORESIGHT), - LEVEL_UP_MOVE(25, MOVE_REVENGE), - LEVEL_UP_MOVE(31, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(37, MOVE_SUBMISSION), - LEVEL_UP_MOVE(40, MOVE_CROSS_CHOP), - LEVEL_UP_MOVE(43, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(49, MOVE_DYNAMIC_PUNCH), - -1 -}; - -const u16 gMachokeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), - LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(22, MOVE_FORESIGHT), - LEVEL_UP_MOVE(25, MOVE_REVENGE), - LEVEL_UP_MOVE(33, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(41, MOVE_SUBMISSION), - LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP), - LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH), - -1 -}; - -const u16 gMachampLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LOW_KICK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(13, MOVE_KARATE_CHOP), - LEVEL_UP_MOVE(19, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(22, MOVE_FORESIGHT), - LEVEL_UP_MOVE(25, MOVE_REVENGE), - LEVEL_UP_MOVE(33, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(41, MOVE_SUBMISSION), - LEVEL_UP_MOVE(46, MOVE_CROSS_CHOP), - LEVEL_UP_MOVE(51, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(59, MOVE_DYNAMIC_PUNCH), - -1 -}; - -const u16 gBellsproutLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), - LEVEL_UP_MOVE( 6, MOVE_GROWTH), - LEVEL_UP_MOVE(11, MOVE_WRAP), - LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(17, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(19, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(23, MOVE_ACID), - LEVEL_UP_MOVE(30, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(37, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(45, MOVE_SLAM), - -1 -}; - -const u16 gWeepinbellLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), - LEVEL_UP_MOVE( 1, MOVE_GROWTH), - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 6, MOVE_GROWTH), - LEVEL_UP_MOVE(11, MOVE_WRAP), - LEVEL_UP_MOVE(15, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(17, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(19, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(24, MOVE_ACID), - LEVEL_UP_MOVE(33, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(42, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(54, MOVE_SLAM), - -1 -}; - -const u16 gVictreebelLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_VINE_WHIP), - LEVEL_UP_MOVE( 1, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), - -1 -}; - -const u16 gTentacoolLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(12, MOVE_CONSTRICT), - LEVEL_UP_MOVE(19, MOVE_ACID), - LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(30, MOVE_WRAP), - LEVEL_UP_MOVE(36, MOVE_BARRIER), - LEVEL_UP_MOVE(43, MOVE_SCREECH), - LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gTentacruelLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(12, MOVE_CONSTRICT), - LEVEL_UP_MOVE(19, MOVE_ACID), - LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(30, MOVE_WRAP), - LEVEL_UP_MOVE(38, MOVE_BARRIER), - LEVEL_UP_MOVE(47, MOVE_SCREECH), - LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gGeodudeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(26, MOVE_ROLLOUT), - LEVEL_UP_MOVE(31, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(41, MOVE_EXPLOSION), - LEVEL_UP_MOVE(46, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gGravelerLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), - LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(29, MOVE_ROLLOUT), - LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(53, MOVE_EXPLOSION), - LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gGolemLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), - LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(11, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(21, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(29, MOVE_ROLLOUT), - LEVEL_UP_MOVE(37, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(45, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(53, MOVE_EXPLOSION), - LEVEL_UP_MOVE(62, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gPonytaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(14, MOVE_EMBER), - LEVEL_UP_MOVE(19, MOVE_STOMP), - LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(38, MOVE_AGILITY), - LEVEL_UP_MOVE(45, MOVE_BOUNCE), - LEVEL_UP_MOVE(53, MOVE_FIRE_BLAST), - -1 -}; - -const u16 gRapidashLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 5, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(14, MOVE_EMBER), - LEVEL_UP_MOVE(19, MOVE_STOMP), - LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(38, MOVE_AGILITY), - LEVEL_UP_MOVE(40, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(50, MOVE_BOUNCE), - LEVEL_UP_MOVE(63, MOVE_FIRE_BLAST), - -1 -}; - -const u16 gSlowpokeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CURSE), - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_GROWL), - LEVEL_UP_MOVE(15, MOVE_WATER_GUN), - LEVEL_UP_MOVE(20, MOVE_CONFUSION), - LEVEL_UP_MOVE(29, MOVE_DISABLE), - LEVEL_UP_MOVE(34, MOVE_HEADBUTT), - LEVEL_UP_MOVE(43, MOVE_AMNESIA), - LEVEL_UP_MOVE(48, MOVE_PSYCHIC), - -1 -}; - -const u16 gSlowbroLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CURSE), - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 6, MOVE_GROWL), - LEVEL_UP_MOVE(15, MOVE_WATER_GUN), - LEVEL_UP_MOVE(20, MOVE_CONFUSION), - LEVEL_UP_MOVE(29, MOVE_DISABLE), - LEVEL_UP_MOVE(34, MOVE_HEADBUTT), - LEVEL_UP_MOVE(37, MOVE_WITHDRAW), - LEVEL_UP_MOVE(46, MOVE_AMNESIA), - LEVEL_UP_MOVE(54, MOVE_PSYCHIC), - -1 -}; - -const u16 gMagnemiteLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_METAL_SOUND), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE(11, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(26, MOVE_SPARK), - LEVEL_UP_MOVE(32, MOVE_LOCK_ON), - LEVEL_UP_MOVE(38, MOVE_SWIFT), - LEVEL_UP_MOVE(44, MOVE_SCREECH), - LEVEL_UP_MOVE(50, MOVE_ZAP_CANNON), - -1 -}; - -const u16 gMagnetonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_METAL_SOUND), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 6, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE(11, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(16, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE(21, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(26, MOVE_SPARK), - LEVEL_UP_MOVE(35, MOVE_LOCK_ON), - LEVEL_UP_MOVE(44, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE(53, MOVE_SCREECH), - LEVEL_UP_MOVE(62, MOVE_ZAP_CANNON), - -1 -}; - -const u16 gFarfetchdLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(11, MOVE_LEER), - LEVEL_UP_MOVE(16, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(21, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(26, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(31, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(36, MOVE_AGILITY), - LEVEL_UP_MOVE(41, MOVE_SLASH), - LEVEL_UP_MOVE(46, MOVE_FALSE_SWIPE), - -1 -}; - -const u16 gDoduoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_PURSUIT), - LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE(25, MOVE_RAGE), - LEVEL_UP_MOVE(33, MOVE_UPROAR), - LEVEL_UP_MOVE(37, MOVE_DRILL_PECK), - LEVEL_UP_MOVE(45, MOVE_AGILITY), - -1 -}; - -const u16 gDodrioLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_PURSUIT), - LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE( 9, MOVE_PURSUIT), - LEVEL_UP_MOVE(13, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(21, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE(25, MOVE_RAGE), - LEVEL_UP_MOVE(38, MOVE_UPROAR), - LEVEL_UP_MOVE(47, MOVE_DRILL_PECK), - LEVEL_UP_MOVE(60, MOVE_AGILITY), - -1 -}; - -const u16 gSeelLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 9, MOVE_GROWL), - LEVEL_UP_MOVE(17, MOVE_ICY_WIND), - LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(29, MOVE_REST), - LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(41, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(49, MOVE_SAFEGUARD), - -1 -}; - -const u16 gDewgongLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_ICY_WIND), - LEVEL_UP_MOVE( 1, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE( 9, MOVE_GROWL), - LEVEL_UP_MOVE(17, MOVE_ICY_WIND), - LEVEL_UP_MOVE(21, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(29, MOVE_REST), - LEVEL_UP_MOVE(34, MOVE_SHEER_COLD), - LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(51, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(64, MOVE_SAFEGUARD), - -1 -}; - -const u16 gGrimerLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 4, MOVE_HARDEN), - LEVEL_UP_MOVE( 8, MOVE_DISABLE), - LEVEL_UP_MOVE(13, MOVE_SLUDGE), - LEVEL_UP_MOVE(19, MOVE_MINIMIZE), - LEVEL_UP_MOVE(26, MOVE_SCREECH), - LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR), - LEVEL_UP_MOVE(43, MOVE_SLUDGE_BOMB), - LEVEL_UP_MOVE(53, MOVE_MEMENTO), - -1 -}; - -const u16 gMukLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 4, MOVE_HARDEN), - LEVEL_UP_MOVE( 8, MOVE_DISABLE), - LEVEL_UP_MOVE(13, MOVE_SLUDGE), - LEVEL_UP_MOVE(19, MOVE_MINIMIZE), - LEVEL_UP_MOVE(26, MOVE_SCREECH), - LEVEL_UP_MOVE(34, MOVE_ACID_ARMOR), - LEVEL_UP_MOVE(47, MOVE_SLUDGE_BOMB), - LEVEL_UP_MOVE(61, MOVE_MEMENTO), - -1 -}; - -const u16 gShellderLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), - LEVEL_UP_MOVE( 9, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(17, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(25, MOVE_PROTECT), - LEVEL_UP_MOVE(33, MOVE_LEER), - LEVEL_UP_MOVE(41, MOVE_CLAMP), - LEVEL_UP_MOVE(49, MOVE_ICE_BEAM), - -1 -}; - -const u16 gCloysterLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 1, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE( 1, MOVE_PROTECT), - LEVEL_UP_MOVE(33, MOVE_SPIKES), - LEVEL_UP_MOVE(41, MOVE_SPIKE_CANNON), - -1 -}; - -const u16 gGastlyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 8, MOVE_SPITE), - LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(16, MOVE_CURSE), - LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(33, MOVE_DREAM_EATER), - LEVEL_UP_MOVE(36, MOVE_DESTINY_BOND), - -1 -}; - -const u16 gHaunterLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 1, MOVE_SPITE), - LEVEL_UP_MOVE( 8, MOVE_SPITE), - LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(16, MOVE_CURSE), - LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH), - LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(39, MOVE_DREAM_EATER), - LEVEL_UP_MOVE(48, MOVE_DESTINY_BOND), - -1 -}; - -const u16 gGengarLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 1, MOVE_SPITE), - LEVEL_UP_MOVE( 8, MOVE_SPITE), - LEVEL_UP_MOVE(13, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(16, MOVE_CURSE), - LEVEL_UP_MOVE(21, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(25, MOVE_SHADOW_PUNCH), - LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(39, MOVE_DREAM_EATER), - LEVEL_UP_MOVE(48, MOVE_DESTINY_BOND), - -1 -}; - -const u16 gOnixLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_SCREECH), - LEVEL_UP_MOVE( 9, MOVE_BIND), - LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(21, MOVE_HARDEN), - LEVEL_UP_MOVE(25, MOVE_RAGE), - LEVEL_UP_MOVE(33, MOVE_SANDSTORM), - LEVEL_UP_MOVE(37, MOVE_SLAM), - LEVEL_UP_MOVE(45, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(49, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gDrowzeeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(10, MOVE_DISABLE), - LEVEL_UP_MOVE(18, MOVE_CONFUSION), - LEVEL_UP_MOVE(25, MOVE_HEADBUTT), - LEVEL_UP_MOVE(31, MOVE_POISON_GAS), - LEVEL_UP_MOVE(36, MOVE_MEDITATE), - LEVEL_UP_MOVE(40, MOVE_PSYCHIC), - LEVEL_UP_MOVE(43, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(45, MOVE_FUTURE_SIGHT), - -1 -}; - -const u16 gHypnoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE(10, MOVE_DISABLE), - LEVEL_UP_MOVE(18, MOVE_CONFUSION), - LEVEL_UP_MOVE(25, MOVE_HEADBUTT), - LEVEL_UP_MOVE(33, MOVE_POISON_GAS), - LEVEL_UP_MOVE(40, MOVE_MEDITATE), - LEVEL_UP_MOVE(49, MOVE_PSYCHIC), - LEVEL_UP_MOVE(55, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(60, MOVE_FUTURE_SIGHT), - -1 -}; - -const u16 gKrabbyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 5, MOVE_LEER), - LEVEL_UP_MOVE(12, MOVE_VICE_GRIP), - LEVEL_UP_MOVE(16, MOVE_HARDEN), - LEVEL_UP_MOVE(23, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(27, MOVE_STOMP), - LEVEL_UP_MOVE(34, MOVE_GUILLOTINE), - LEVEL_UP_MOVE(41, MOVE_PROTECT), - LEVEL_UP_MOVE(45, MOVE_CRABHAMMER), - -1 -}; - -const u16 gKinglerLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), - LEVEL_UP_MOVE( 5, MOVE_LEER), - LEVEL_UP_MOVE(12, MOVE_VICE_GRIP), - LEVEL_UP_MOVE(16, MOVE_HARDEN), - LEVEL_UP_MOVE(23, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(27, MOVE_STOMP), - LEVEL_UP_MOVE(38, MOVE_GUILLOTINE), - LEVEL_UP_MOVE(49, MOVE_PROTECT), - LEVEL_UP_MOVE(57, MOVE_CRABHAMMER), - -1 -}; - -const u16 gVoltorbLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CHARGE), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 8, MOVE_SCREECH), - LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE(21, MOVE_SPARK), - LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(32, MOVE_ROLLOUT), - LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(42, MOVE_SWIFT), - LEVEL_UP_MOVE(46, MOVE_EXPLOSION), - LEVEL_UP_MOVE(49, MOVE_MIRROR_COAT), - -1 -}; - -const u16 gElectrodeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CHARGE), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_SCREECH), - LEVEL_UP_MOVE( 1, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE( 8, MOVE_SCREECH), - LEVEL_UP_MOVE(15, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE(21, MOVE_SPARK), - LEVEL_UP_MOVE(27, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(34, MOVE_ROLLOUT), - LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(48, MOVE_SWIFT), - LEVEL_UP_MOVE(54, MOVE_EXPLOSION), - LEVEL_UP_MOVE(59, MOVE_MIRROR_COAT), - -1 -}; - -const u16 gExeggcuteLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BARRAGE), - LEVEL_UP_MOVE( 1, MOVE_UPROAR), - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 7, MOVE_REFLECT), - LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(19, MOVE_CONFUSION), - LEVEL_UP_MOVE(25, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(31, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(37, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM), - -1 -}; - -const u16 gExeggutorLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BARRAGE), - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE(19, MOVE_STOMP), - LEVEL_UP_MOVE(31, MOVE_EGG_BOMB), - -1 -}; - -const u16 gCuboneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 9, MOVE_BONE_CLUB), - LEVEL_UP_MOVE(13, MOVE_HEADBUTT), - LEVEL_UP_MOVE(17, MOVE_LEER), - LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(25, MOVE_BONEMERANG), - LEVEL_UP_MOVE(29, MOVE_RAGE), - LEVEL_UP_MOVE(33, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(37, MOVE_THRASH), - LEVEL_UP_MOVE(41, MOVE_BONE_RUSH), - LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gMarowakLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_BONE_CLUB), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 9, MOVE_BONE_CLUB), - LEVEL_UP_MOVE(13, MOVE_HEADBUTT), - LEVEL_UP_MOVE(17, MOVE_LEER), - LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(25, MOVE_BONEMERANG), - LEVEL_UP_MOVE(32, MOVE_RAGE), - LEVEL_UP_MOVE(39, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(46, MOVE_THRASH), - LEVEL_UP_MOVE(53, MOVE_BONE_RUSH), - LEVEL_UP_MOVE(61, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gHitmonleeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_REVENGE), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE( 6, MOVE_MEDITATE), - LEVEL_UP_MOVE(11, MOVE_ROLLING_KICK), - LEVEL_UP_MOVE(16, MOVE_JUMP_KICK), - LEVEL_UP_MOVE(20, MOVE_BRICK_BREAK), - LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(26, MOVE_HI_JUMP_KICK), - LEVEL_UP_MOVE(31, MOVE_MIND_READER), - LEVEL_UP_MOVE(36, MOVE_FORESIGHT), - LEVEL_UP_MOVE(41, MOVE_ENDURE), - LEVEL_UP_MOVE(46, MOVE_MEGA_KICK), - LEVEL_UP_MOVE(51, MOVE_REVERSAL), - -1 -}; - -const u16 gHitmonchanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_REVENGE), - LEVEL_UP_MOVE( 1, MOVE_COMET_PUNCH), - LEVEL_UP_MOVE( 7, MOVE_AGILITY), - LEVEL_UP_MOVE(13, MOVE_PURSUIT), - LEVEL_UP_MOVE(20, MOVE_MACH_PUNCH), - LEVEL_UP_MOVE(26, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE(26, MOVE_ICE_PUNCH), - LEVEL_UP_MOVE(26, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE(32, MOVE_SKY_UPPERCUT), - LEVEL_UP_MOVE(38, MOVE_MEGA_PUNCH), - LEVEL_UP_MOVE(44, MOVE_DETECT), - LEVEL_UP_MOVE(50, MOVE_COUNTER), - -1 -}; - -const u16 gLickitungLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(12, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(18, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(23, MOVE_STOMP), - LEVEL_UP_MOVE(29, MOVE_WRAP), - LEVEL_UP_MOVE(34, MOVE_DISABLE), - LEVEL_UP_MOVE(40, MOVE_SLAM), - LEVEL_UP_MOVE(45, MOVE_SCREECH), - LEVEL_UP_MOVE(51, MOVE_REFRESH), - -1 -}; - -const u16 gKoffingLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 9, MOVE_SMOG), - LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(21, MOVE_SLUDGE), - LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(33, MOVE_HAZE), - LEVEL_UP_MOVE(41, MOVE_EXPLOSION), - LEVEL_UP_MOVE(45, MOVE_DESTINY_BOND), - LEVEL_UP_MOVE(49, MOVE_MEMENTO), - -1 -}; - -const u16 gWeezingLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_SMOG), - LEVEL_UP_MOVE( 1, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE( 9, MOVE_SMOG), - LEVEL_UP_MOVE(17, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(21, MOVE_SLUDGE), - LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(33, MOVE_HAZE), - LEVEL_UP_MOVE(44, MOVE_EXPLOSION), - LEVEL_UP_MOVE(51, MOVE_DESTINY_BOND), - LEVEL_UP_MOVE(58, MOVE_MEMENTO), - -1 -}; - -const u16 gRhyhornLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(10, MOVE_STOMP), - LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(38, MOVE_HORN_DRILL), - LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(57, MOVE_MEGAHORN), - -1 -}; - -const u16 gRhydonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_STOMP), - LEVEL_UP_MOVE( 1, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(10, MOVE_STOMP), - LEVEL_UP_MOVE(15, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(24, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(29, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(38, MOVE_HORN_DRILL), - LEVEL_UP_MOVE(46, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(58, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(66, MOVE_MEGAHORN), - -1 -}; - -const u16 gChanseyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 9, MOVE_REFRESH), - LEVEL_UP_MOVE(13, MOVE_SOFT_BOILED), - LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(23, MOVE_MINIMIZE), - LEVEL_UP_MOVE(29, MOVE_SING), - LEVEL_UP_MOVE(35, MOVE_EGG_BOMB), - LEVEL_UP_MOVE(41, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(49, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gTangelaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_INGRAIN), - LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 4, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(10, MOVE_ABSORB), - LEVEL_UP_MOVE(13, MOVE_GROWTH), - LEVEL_UP_MOVE(19, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(22, MOVE_VINE_WHIP), - LEVEL_UP_MOVE(28, MOVE_BIND), - LEVEL_UP_MOVE(31, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(37, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(40, MOVE_SLAM), - LEVEL_UP_MOVE(46, MOVE_TICKLE), - -1 -}; - -const u16 gKangaskhanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_COMET_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_BITE), - LEVEL_UP_MOVE(13, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(25, MOVE_MEGA_PUNCH), - LEVEL_UP_MOVE(31, MOVE_RAGE), - LEVEL_UP_MOVE(37, MOVE_ENDURE), - LEVEL_UP_MOVE(43, MOVE_DIZZY_PUNCH), - LEVEL_UP_MOVE(49, MOVE_REVERSAL), - -1 -}; - -const u16 gHorseaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(15, MOVE_LEER), - LEVEL_UP_MOVE(22, MOVE_WATER_GUN), - LEVEL_UP_MOVE(29, MOVE_TWISTER), - LEVEL_UP_MOVE(36, MOVE_AGILITY), - LEVEL_UP_MOVE(43, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), - -1 -}; - -const u16 gSeadraLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(15, MOVE_LEER), - LEVEL_UP_MOVE(22, MOVE_WATER_GUN), - LEVEL_UP_MOVE(29, MOVE_TWISTER), - LEVEL_UP_MOVE(40, MOVE_AGILITY), - LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE), - -1 -}; - -const u16 gGoldeenLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(10, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE(24, MOVE_FLAIL), - LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(38, MOVE_WATERFALL), - LEVEL_UP_MOVE(43, MOVE_HORN_DRILL), - LEVEL_UP_MOVE(52, MOVE_AGILITY), - -1 -}; - -const u16 gSeakingLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(10, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(15, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE(24, MOVE_FLAIL), - LEVEL_UP_MOVE(29, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(41, MOVE_WATERFALL), - LEVEL_UP_MOVE(49, MOVE_HORN_DRILL), - LEVEL_UP_MOVE(61, MOVE_AGILITY), - -1 -}; - -const u16 gStaryuLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 6, MOVE_WATER_GUN), - LEVEL_UP_MOVE(10, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(15, MOVE_RECOVER), - LEVEL_UP_MOVE(19, MOVE_CAMOUFLAGE), - LEVEL_UP_MOVE(24, MOVE_SWIFT), - LEVEL_UP_MOVE(28, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(33, MOVE_MINIMIZE), - LEVEL_UP_MOVE(37, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gStarmieLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE( 1, MOVE_RECOVER), - LEVEL_UP_MOVE( 1, MOVE_SWIFT), - LEVEL_UP_MOVE(33, MOVE_CONFUSE_RAY), - -1 -}; - -const u16 gMrmimeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BARRIER), - LEVEL_UP_MOVE( 5, MOVE_CONFUSION), - LEVEL_UP_MOVE( 9, MOVE_SUBSTITUTE), - LEVEL_UP_MOVE(13, MOVE_MEDITATE), - LEVEL_UP_MOVE(17, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(21, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(21, MOVE_REFLECT), - LEVEL_UP_MOVE(25, MOVE_ENCORE), - LEVEL_UP_MOVE(29, MOVE_PSYBEAM), - LEVEL_UP_MOVE(33, MOVE_RECYCLE), - LEVEL_UP_MOVE(37, MOVE_TRICK), - LEVEL_UP_MOVE(41, MOVE_ROLE_PLAY), - LEVEL_UP_MOVE(45, MOVE_PSYCHIC), - LEVEL_UP_MOVE(49, MOVE_BATON_PASS), - LEVEL_UP_MOVE(53, MOVE_SAFEGUARD), - -1 -}; - -const u16 gScytherLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(11, MOVE_PURSUIT), - LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(21, MOVE_AGILITY), - LEVEL_UP_MOVE(26, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(31, MOVE_SLASH), - LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(41, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), - -1 -}; - -const u16 gJynxLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 1, MOVE_LOVELY_KISS), - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 9, MOVE_LOVELY_KISS), - LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE(21, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(25, MOVE_ICE_PUNCH), - LEVEL_UP_MOVE(35, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(41, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE(51, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(57, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(67, MOVE_BLIZZARD), - -1 -}; - -const u16 gElectabuzzLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE( 9, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(25, MOVE_SWIFT), - LEVEL_UP_MOVE(36, MOVE_SCREECH), - LEVEL_UP_MOVE(47, MOVE_THUNDERBOLT), - LEVEL_UP_MOVE(58, MOVE_THUNDER), - -1 -}; - -const u16 gMagmarLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_SMOG), - LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE( 7, MOVE_LEER), - LEVEL_UP_MOVE(13, MOVE_SMOG), - LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(33, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(49, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(57, MOVE_FIRE_BLAST), - -1 -}; - -const u16 gPinsirLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 7, MOVE_BIND), - LEVEL_UP_MOVE(13, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(19, MOVE_HARDEN), - LEVEL_UP_MOVE(25, MOVE_REVENGE), - LEVEL_UP_MOVE(31, MOVE_BRICK_BREAK), - LEVEL_UP_MOVE(37, MOVE_GUILLOTINE), - LEVEL_UP_MOVE(43, MOVE_SUBMISSION), - LEVEL_UP_MOVE(49, MOVE_SWORDS_DANCE), - -1 -}; - -const u16 gTaurosLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 8, MOVE_RAGE), - LEVEL_UP_MOVE(13, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE(19, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(26, MOVE_PURSUIT), - LEVEL_UP_MOVE(34, MOVE_REST), - LEVEL_UP_MOVE(43, MOVE_THRASH), - LEVEL_UP_MOVE(53, MOVE_TAKE_DOWN), - -1 -}; - -const u16 gMagikarpLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE(15, MOVE_TACKLE), - LEVEL_UP_MOVE(30, MOVE_FLAIL), - -1 -}; - -const u16 gGyaradosLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THRASH), - LEVEL_UP_MOVE(20, MOVE_BITE), - LEVEL_UP_MOVE(25, MOVE_DRAGON_RAGE), - LEVEL_UP_MOVE(30, MOVE_LEER), - LEVEL_UP_MOVE(35, MOVE_TWISTER), - LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gLaprasLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 7, MOVE_MIST), - LEVEL_UP_MOVE(13, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(19, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(25, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(31, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(37, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(55, MOVE_SHEER_COLD), - -1 -}; - -const u16 gDittoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TRANSFORM), - -1 -}; - -const u16 gEeveeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(16, MOVE_GROWL), - LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(30, MOVE_BITE), - LEVEL_UP_MOVE(36, MOVE_BATON_PASS), - LEVEL_UP_MOVE(42, MOVE_TAKE_DOWN), - -1 -}; - -const u16 gVaporeonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(16, MOVE_WATER_GUN), - LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(30, MOVE_BITE), - LEVEL_UP_MOVE(36, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(42, MOVE_HAZE), - LEVEL_UP_MOVE(47, MOVE_ACID_ARMOR), - LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gJolteonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(16, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(30, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(36, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(42, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(47, MOVE_AGILITY), - LEVEL_UP_MOVE(52, MOVE_THUNDER), - -1 -}; - -const u16 gFlareonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(16, MOVE_EMBER), - LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(30, MOVE_BITE), - LEVEL_UP_MOVE(36, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(42, MOVE_SMOG), - LEVEL_UP_MOVE(47, MOVE_LEER), - LEVEL_UP_MOVE(52, MOVE_FLAMETHROWER), - -1 -}; - -const u16 gPorygonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_CONVERSION), - LEVEL_UP_MOVE( 9, MOVE_AGILITY), - LEVEL_UP_MOVE(12, MOVE_PSYBEAM), - LEVEL_UP_MOVE(20, MOVE_RECOVER), - LEVEL_UP_MOVE(24, MOVE_SHARPEN), - LEVEL_UP_MOVE(32, MOVE_LOCK_ON), - LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE(44, MOVE_RECYCLE), - LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON), - -1 -}; - -const u16 gOmanyteLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), - LEVEL_UP_MOVE(13, MOVE_BITE), - LEVEL_UP_MOVE(19, MOVE_WATER_GUN), - LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(31, MOVE_LEER), - LEVEL_UP_MOVE(37, MOVE_PROTECT), - LEVEL_UP_MOVE(43, MOVE_TICKLE), - LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gOmastarLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE(13, MOVE_BITE), - LEVEL_UP_MOVE(19, MOVE_WATER_GUN), - LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(31, MOVE_LEER), - LEVEL_UP_MOVE(37, MOVE_PROTECT), - LEVEL_UP_MOVE(40, MOVE_SPIKE_CANNON), - LEVEL_UP_MOVE(46, MOVE_TICKLE), - LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(65, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gKabutoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE(13, MOVE_ABSORB), - LEVEL_UP_MOVE(19, MOVE_LEER), - LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(37, MOVE_ENDURE), - LEVEL_UP_MOVE(43, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(49, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(55, MOVE_ANCIENT_POWER), - -1 -}; - -const u16 gKabutopsLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE(13, MOVE_ABSORB), - LEVEL_UP_MOVE(19, MOVE_LEER), - LEVEL_UP_MOVE(25, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(37, MOVE_ENDURE), - LEVEL_UP_MOVE(40, MOVE_SLASH), - LEVEL_UP_MOVE(46, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(55, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(65, MOVE_ANCIENT_POWER), - -1 -}; - -const u16 gAerodactylLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), - LEVEL_UP_MOVE( 8, MOVE_AGILITY), - LEVEL_UP_MOVE(15, MOVE_BITE), - LEVEL_UP_MOVE(22, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(29, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(36, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gSnorlaxLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_AMNESIA), - LEVEL_UP_MOVE(10, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(15, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(19, MOVE_HEADBUTT), - LEVEL_UP_MOVE(24, MOVE_YAWN), - LEVEL_UP_MOVE(28, MOVE_REST), - LEVEL_UP_MOVE(28, MOVE_SNORE), - LEVEL_UP_MOVE(33, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(37, MOVE_BLOCK), - LEVEL_UP_MOVE(42, MOVE_COVET), - LEVEL_UP_MOVE(46, MOVE_ROLLOUT), - LEVEL_UP_MOVE(51, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gArticunoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GUST), - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE(13, MOVE_MIST), - LEVEL_UP_MOVE(25, MOVE_AGILITY), - LEVEL_UP_MOVE(37, MOVE_MIND_READER), - LEVEL_UP_MOVE(49, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(61, MOVE_REFLECT), - LEVEL_UP_MOVE(73, MOVE_BLIZZARD), - LEVEL_UP_MOVE(85, MOVE_SHEER_COLD), - -1 -}; - -const u16 gZapdosLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE(13, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(25, MOVE_AGILITY), - LEVEL_UP_MOVE(37, MOVE_DETECT), - LEVEL_UP_MOVE(49, MOVE_DRILL_PECK), - LEVEL_UP_MOVE(61, MOVE_CHARGE), - LEVEL_UP_MOVE(73, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(85, MOVE_THUNDER), - -1 -}; - -const u16 gMoltresLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE(13, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(25, MOVE_AGILITY), - LEVEL_UP_MOVE(37, MOVE_ENDURE), - LEVEL_UP_MOVE(49, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(61, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(73, MOVE_HEAT_WAVE), - LEVEL_UP_MOVE(85, MOVE_SKY_ATTACK), - -1 -}; - -const u16 gDratiniLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(15, MOVE_TWISTER), - LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), - LEVEL_UP_MOVE(29, MOVE_SLAM), - LEVEL_UP_MOVE(36, MOVE_AGILITY), - LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(50, MOVE_OUTRAGE), - LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gDragonairLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 1, MOVE_TWISTER), - LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(15, MOVE_TWISTER), - LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), - LEVEL_UP_MOVE(29, MOVE_SLAM), - LEVEL_UP_MOVE(38, MOVE_AGILITY), - LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(56, MOVE_OUTRAGE), - LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gDragoniteLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 1, MOVE_TWISTER), - LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(15, MOVE_TWISTER), - LEVEL_UP_MOVE(22, MOVE_DRAGON_RAGE), - LEVEL_UP_MOVE(29, MOVE_SLAM), - LEVEL_UP_MOVE(38, MOVE_AGILITY), - LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(55, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(61, MOVE_OUTRAGE), - LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gMewtwoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), - LEVEL_UP_MOVE(11, MOVE_BARRIER), - LEVEL_UP_MOVE(22, MOVE_SWIFT), - LEVEL_UP_MOVE(33, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(44, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(55, MOVE_MIST), - LEVEL_UP_MOVE(66, MOVE_PSYCHIC), - LEVEL_UP_MOVE(77, MOVE_AMNESIA), - LEVEL_UP_MOVE(88, MOVE_RECOVER), - LEVEL_UP_MOVE(99, MOVE_SAFEGUARD), - -1 -}; - -const u16 gMewLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE(10, MOVE_TRANSFORM), - LEVEL_UP_MOVE(20, MOVE_MEGA_PUNCH), - LEVEL_UP_MOVE(30, MOVE_METRONOME), - LEVEL_UP_MOVE(40, MOVE_PSYCHIC), - LEVEL_UP_MOVE(50, MOVE_ANCIENT_POWER), - -1 -}; - -const u16 gChikoritaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(12, MOVE_REFLECT), - LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(22, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(29, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(43, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(50, MOVE_SOLAR_BEAM), - -1 -}; - -const u16 gBayleefLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE( 1, MOVE_REFLECT), - LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(12, MOVE_REFLECT), - LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(23, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(39, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(47, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM), - -1 -}; - -const u16 gMeganiumLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE( 1, MOVE_REFLECT), - LEVEL_UP_MOVE( 8, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(12, MOVE_REFLECT), - LEVEL_UP_MOVE(15, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(23, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(31, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(41, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(51, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(61, MOVE_SOLAR_BEAM), - -1 -}; - -const u16 gCyndaquilLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(12, MOVE_EMBER), - LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(27, MOVE_FLAME_WHEEL), - LEVEL_UP_MOVE(36, MOVE_SWIFT), - LEVEL_UP_MOVE(46, MOVE_FLAMETHROWER), - -1 -}; - -const u16 gQuilavaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(12, MOVE_EMBER), - LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), - LEVEL_UP_MOVE(42, MOVE_SWIFT), - LEVEL_UP_MOVE(54, MOVE_FLAMETHROWER), - -1 -}; - -const u16 gTyphlosionLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 6, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(12, MOVE_EMBER), - LEVEL_UP_MOVE(21, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(31, MOVE_FLAME_WHEEL), - LEVEL_UP_MOVE(45, MOVE_SWIFT), - LEVEL_UP_MOVE(60, MOVE_FLAMETHROWER), - -1 -}; - -const u16 gTotodileLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_RAGE), - LEVEL_UP_MOVE(13, MOVE_WATER_GUN), - LEVEL_UP_MOVE(20, MOVE_BITE), - LEVEL_UP_MOVE(27, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(35, MOVE_SLASH), - LEVEL_UP_MOVE(43, MOVE_SCREECH), - LEVEL_UP_MOVE(52, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gCroconawLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 7, MOVE_RAGE), - LEVEL_UP_MOVE(13, MOVE_WATER_GUN), - LEVEL_UP_MOVE(21, MOVE_BITE), - LEVEL_UP_MOVE(28, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(37, MOVE_SLASH), - LEVEL_UP_MOVE(45, MOVE_SCREECH), - LEVEL_UP_MOVE(55, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gFeraligatrLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 7, MOVE_RAGE), - LEVEL_UP_MOVE(13, MOVE_WATER_GUN), - LEVEL_UP_MOVE(21, MOVE_BITE), - LEVEL_UP_MOVE(28, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(38, MOVE_SLASH), - LEVEL_UP_MOVE(47, MOVE_SCREECH), - LEVEL_UP_MOVE(58, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gSentretLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(17, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(24, MOVE_SLAM), - LEVEL_UP_MOVE(31, MOVE_FOLLOW_ME), - LEVEL_UP_MOVE(40, MOVE_REST), - LEVEL_UP_MOVE(49, MOVE_AMNESIA), - -1 -}; - -const u16 gFurretLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(19, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(28, MOVE_SLAM), - LEVEL_UP_MOVE(37, MOVE_FOLLOW_ME), - LEVEL_UP_MOVE(48, MOVE_REST), - LEVEL_UP_MOVE(59, MOVE_AMNESIA), - -1 -}; - -const u16 gHoothootLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 6, MOVE_FORESIGHT), - LEVEL_UP_MOVE(11, MOVE_PECK), - LEVEL_UP_MOVE(16, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(22, MOVE_REFLECT), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(34, MOVE_CONFUSION), - LEVEL_UP_MOVE(48, MOVE_DREAM_EATER), - -1 -}; - -const u16 gNoctowlLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 6, MOVE_FORESIGHT), - LEVEL_UP_MOVE(11, MOVE_PECK), - LEVEL_UP_MOVE(16, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(25, MOVE_REFLECT), - LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(41, MOVE_CONFUSION), - LEVEL_UP_MOVE(57, MOVE_DREAM_EATER), - -1 -}; - -const u16 gLedybaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH), - LEVEL_UP_MOVE(22, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(22, MOVE_REFLECT), - LEVEL_UP_MOVE(22, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(29, MOVE_BATON_PASS), - LEVEL_UP_MOVE(36, MOVE_SWIFT), - LEVEL_UP_MOVE(43, MOVE_AGILITY), - LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gLedianLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(15, MOVE_COMET_PUNCH), - LEVEL_UP_MOVE(24, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(24, MOVE_REFLECT), - LEVEL_UP_MOVE(24, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(33, MOVE_BATON_PASS), - LEVEL_UP_MOVE(42, MOVE_SWIFT), - LEVEL_UP_MOVE(51, MOVE_AGILITY), - LEVEL_UP_MOVE(60, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gSpinarakLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), - LEVEL_UP_MOVE( 6, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(11, MOVE_CONSTRICT), - LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(23, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE(30, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(37, MOVE_SPIDER_WEB), - LEVEL_UP_MOVE(45, MOVE_AGILITY), - LEVEL_UP_MOVE(53, MOVE_PSYCHIC), - -1 -}; - -const u16 gAriadosLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), - LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), - LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 6, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(11, MOVE_CONSTRICT), - LEVEL_UP_MOVE(17, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(25, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE(34, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(43, MOVE_SPIDER_WEB), - LEVEL_UP_MOVE(53, MOVE_AGILITY), - LEVEL_UP_MOVE(63, MOVE_PSYCHIC), - -1 -}; - -const u16 gCrobatLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCREECH), - LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 6, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(11, MOVE_ASTONISH), - LEVEL_UP_MOVE(16, MOVE_BITE), - LEVEL_UP_MOVE(21, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(28, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(35, MOVE_AIR_CUTTER), - LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(49, MOVE_POISON_FANG), - LEVEL_UP_MOVE(56, MOVE_HAZE), - -1 -}; - -const u16 gChinchouLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(13, MOVE_FLAIL), - LEVEL_UP_MOVE(17, MOVE_WATER_GUN), - LEVEL_UP_MOVE(25, MOVE_SPARK), - LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(41, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(49, MOVE_CHARGE), - -1 -}; - -const u16 gLanturnLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 1, MOVE_SUPERSONIC), - LEVEL_UP_MOVE( 5, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(13, MOVE_FLAIL), - LEVEL_UP_MOVE(17, MOVE_WATER_GUN), - LEVEL_UP_MOVE(25, MOVE_SPARK), - LEVEL_UP_MOVE(32, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(61, MOVE_CHARGE), - -1 -}; - -const u16 gPichuLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 8, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), - -1 -}; - -const u16 gCleffaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 4, MOVE_ENCORE), - LEVEL_UP_MOVE( 8, MOVE_SING), - LEVEL_UP_MOVE(13, MOVE_SWEET_KISS), - -1 -}; - -const u16 gIgglybuffLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 9, MOVE_POUND), - LEVEL_UP_MOVE(14, MOVE_SWEET_KISS), - -1 -}; - -const u16 gTogepiLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 6, MOVE_METRONOME), - LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(16, MOVE_YAWN), - LEVEL_UP_MOVE(21, MOVE_ENCORE), - LEVEL_UP_MOVE(26, MOVE_FOLLOW_ME), - LEVEL_UP_MOVE(31, MOVE_WISH), - LEVEL_UP_MOVE(36, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(41, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gTogeticLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 6, MOVE_METRONOME), - LEVEL_UP_MOVE(11, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(16, MOVE_YAWN), - LEVEL_UP_MOVE(21, MOVE_ENCORE), - LEVEL_UP_MOVE(26, MOVE_FOLLOW_ME), - LEVEL_UP_MOVE(31, MOVE_WISH), - LEVEL_UP_MOVE(36, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(41, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gNatuLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(20, MOVE_TELEPORT), - LEVEL_UP_MOVE(30, MOVE_WISH), - LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(40, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(50, MOVE_PSYCHIC), - -1 -}; - -const u16 gXatuLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE(10, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(20, MOVE_TELEPORT), - LEVEL_UP_MOVE(35, MOVE_WISH), - LEVEL_UP_MOVE(35, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(65, MOVE_PSYCHIC), - -1 -}; - -const u16 gMareepLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE(16, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(23, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(30, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(37, MOVE_THUNDER), - -1 -}; - -const u16 gFlaaffyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(36, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(45, MOVE_THUNDER), - -1 -}; - -const u16 gAmpharosLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 9, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE(18, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(27, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(30, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE(42, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(57, MOVE_THUNDER), - -1 -}; - -const u16 gBellossomLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), - LEVEL_UP_MOVE( 1, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(44, MOVE_PETAL_DANCE), - LEVEL_UP_MOVE(55, MOVE_SOLAR_BEAM), - -1 -}; - -const u16 gMarillLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(15, MOVE_ROLLOUT), - LEVEL_UP_MOVE(21, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(28, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(36, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gAzumarillLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 3, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(15, MOVE_ROLLOUT), - LEVEL_UP_MOVE(24, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(34, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(45, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(57, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gSudowoodoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), - LEVEL_UP_MOVE( 1, MOVE_MIMIC), - LEVEL_UP_MOVE( 9, MOVE_FLAIL), - LEVEL_UP_MOVE(17, MOVE_LOW_KICK), - LEVEL_UP_MOVE(25, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(33, MOVE_BLOCK), - LEVEL_UP_MOVE(41, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(49, MOVE_SLAM), - LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gPolitoedLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_HYPNOSIS), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE( 1, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(35, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(51, MOVE_SWAGGER), - -1 -}; - -const u16 gHoppipLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(10, MOVE_TACKLE), - LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(20, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(25, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(30, MOVE_MEGA_DRAIN), - -1 -}; - -const u16 gSkiploomLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(10, MOVE_TACKLE), - LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(22, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(29, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(36, MOVE_MEGA_DRAIN), - -1 -}; - -const u16 gJumpluffLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 1, MOVE_SYNTHESIS), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_SYNTHESIS), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(10, MOVE_TACKLE), - LEVEL_UP_MOVE(13, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(15, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(17, MOVE_SLEEP_POWDER), - LEVEL_UP_MOVE(22, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(33, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(44, MOVE_MEGA_DRAIN), - -1 -}; - -const u16 gAipomLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(13, MOVE_ASTONISH), - LEVEL_UP_MOVE(18, MOVE_BATON_PASS), - LEVEL_UP_MOVE(25, MOVE_TICKLE), - LEVEL_UP_MOVE(31, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(38, MOVE_SWIFT), - LEVEL_UP_MOVE(43, MOVE_SCREECH), - LEVEL_UP_MOVE(50, MOVE_AGILITY), - -1 -}; - -const u16 gSunkernLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 6, MOVE_GROWTH), - LEVEL_UP_MOVE(13, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(18, MOVE_INGRAIN), - LEVEL_UP_MOVE(25, MOVE_ENDEAVOR), - LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(37, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(42, MOVE_GIGA_DRAIN), - -1 -}; - -const u16 gSunfloraLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 6, MOVE_GROWTH), - LEVEL_UP_MOVE(13, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(18, MOVE_INGRAIN), - LEVEL_UP_MOVE(25, MOVE_BULLET_SEED), - LEVEL_UP_MOVE(30, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(37, MOVE_PETAL_DANCE), - LEVEL_UP_MOVE(42, MOVE_SOLAR_BEAM), - -1 -}; - -const u16 gYanmaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_FORESIGHT), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(19, MOVE_SONIC_BOOM), - LEVEL_UP_MOVE(25, MOVE_DETECT), - LEVEL_UP_MOVE(31, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(37, MOVE_UPROAR), - LEVEL_UP_MOVE(43, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(49, MOVE_SCREECH), - -1 -}; - -const u16 gWooperLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(11, MOVE_SLAM), - LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(21, MOVE_AMNESIA), - LEVEL_UP_MOVE(31, MOVE_YAWN), - LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(41, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(51, MOVE_MIST), - LEVEL_UP_MOVE(51, MOVE_HAZE), - -1 -}; - -const u16 gQuagsireLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(11, MOVE_SLAM), - LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(23, MOVE_AMNESIA), - LEVEL_UP_MOVE(35, MOVE_YAWN), - LEVEL_UP_MOVE(42, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(49, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(61, MOVE_MIST), - LEVEL_UP_MOVE(61, MOVE_HAZE), - -1 -}; - -const u16 gEspeonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(16, MOVE_CONFUSION), - LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(30, MOVE_SWIFT), - LEVEL_UP_MOVE(36, MOVE_PSYBEAM), - LEVEL_UP_MOVE(42, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(47, MOVE_PSYCHIC), - LEVEL_UP_MOVE(52, MOVE_MORNING_SUN), - -1 -}; - -const u16 gUmbreonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_HELPING_HAND), - LEVEL_UP_MOVE( 8, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(16, MOVE_PURSUIT), - LEVEL_UP_MOVE(23, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(30, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(36, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(42, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(47, MOVE_SCREECH), - LEVEL_UP_MOVE(52, MOVE_MOONLIGHT), - -1 -}; - -const u16 gMurkrowLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 9, MOVE_ASTONISH), - LEVEL_UP_MOVE(14, MOVE_PURSUIT), - LEVEL_UP_MOVE(22, MOVE_HAZE), - LEVEL_UP_MOVE(27, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(35, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(40, MOVE_TAUNT), - LEVEL_UP_MOVE(48, MOVE_MEAN_LOOK), - -1 -}; - -const u16 gSlowkingLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CURSE), - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_GROWL), - LEVEL_UP_MOVE(15, MOVE_WATER_GUN), - LEVEL_UP_MOVE(20, MOVE_CONFUSION), - LEVEL_UP_MOVE(29, MOVE_DISABLE), - LEVEL_UP_MOVE(34, MOVE_HEADBUTT), - LEVEL_UP_MOVE(43, MOVE_SWAGGER), - LEVEL_UP_MOVE(48, MOVE_PSYCHIC), - -1 -}; - -const u16 gMisdreavusLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), - LEVEL_UP_MOVE( 6, MOVE_SPITE), - LEVEL_UP_MOVE(11, MOVE_ASTONISH), - LEVEL_UP_MOVE(17, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(23, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(30, MOVE_PSYBEAM), - LEVEL_UP_MOVE(37, MOVE_PAIN_SPLIT), - LEVEL_UP_MOVE(45, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(53, MOVE_GRUDGE), - -1 -}; - -const u16 gUnownLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HIDDEN_POWER), - -1 -}; - -const u16 gWobbuffetLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_COUNTER), - LEVEL_UP_MOVE( 1, MOVE_MIRROR_COAT), - LEVEL_UP_MOVE( 1, MOVE_SAFEGUARD), - LEVEL_UP_MOVE( 1, MOVE_DESTINY_BOND), - -1 -}; - -const u16 gGirafarigLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_ASTONISH), - LEVEL_UP_MOVE(13, MOVE_CONFUSION), - LEVEL_UP_MOVE(19, MOVE_STOMP), - LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(31, MOVE_AGILITY), - LEVEL_UP_MOVE(37, MOVE_BATON_PASS), - LEVEL_UP_MOVE(43, MOVE_PSYBEAM), - LEVEL_UP_MOVE(49, MOVE_CRUNCH), - -1 -}; - -const u16 gPinecoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_PROTECT), - LEVEL_UP_MOVE( 8, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(29, MOVE_BIDE), - LEVEL_UP_MOVE(36, MOVE_EXPLOSION), - LEVEL_UP_MOVE(43, MOVE_SPIKES), - LEVEL_UP_MOVE(50, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gForretressLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_PROTECT), - LEVEL_UP_MOVE( 1, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE( 8, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(15, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(22, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(29, MOVE_BIDE), - LEVEL_UP_MOVE(39, MOVE_EXPLOSION), - LEVEL_UP_MOVE(49, MOVE_SPIKES), - LEVEL_UP_MOVE(59, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gDunsparceLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 4, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(11, MOVE_YAWN), - LEVEL_UP_MOVE(14, MOVE_GLARE), - LEVEL_UP_MOVE(21, MOVE_SPITE), - LEVEL_UP_MOVE(24, MOVE_PURSUIT), - LEVEL_UP_MOVE(31, MOVE_SCREECH), - LEVEL_UP_MOVE(34, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(41, MOVE_ENDEAVOR), - -1 -}; - -const u16 gGligarLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 6, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(13, MOVE_HARDEN), - LEVEL_UP_MOVE(20, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(28, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(36, MOVE_SLASH), - LEVEL_UP_MOVE(44, MOVE_SCREECH), - LEVEL_UP_MOVE(52, MOVE_GUILLOTINE), - -1 -}; - -const u16 gSteelixLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_SCREECH), - LEVEL_UP_MOVE( 9, MOVE_BIND), - LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(21, MOVE_HARDEN), - LEVEL_UP_MOVE(25, MOVE_RAGE), - LEVEL_UP_MOVE(33, MOVE_SANDSTORM), - LEVEL_UP_MOVE(37, MOVE_SLAM), - LEVEL_UP_MOVE(45, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(49, MOVE_CRUNCH), - LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gSnubbullLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), - LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 8, MOVE_CHARM), - LEVEL_UP_MOVE(13, MOVE_BITE), - LEVEL_UP_MOVE(19, MOVE_LICK), - LEVEL_UP_MOVE(26, MOVE_ROAR), - LEVEL_UP_MOVE(34, MOVE_RAGE), - LEVEL_UP_MOVE(43, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(53, MOVE_CRUNCH), - -1 -}; - -const u16 gGranbullLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), - LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 8, MOVE_CHARM), - LEVEL_UP_MOVE(13, MOVE_BITE), - LEVEL_UP_MOVE(19, MOVE_LICK), - LEVEL_UP_MOVE(28, MOVE_ROAR), - LEVEL_UP_MOVE(38, MOVE_RAGE), - LEVEL_UP_MOVE(49, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(61, MOVE_CRUNCH), - -1 -}; - -const u16 gQwilfishLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPIKES), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE(10, MOVE_HARDEN), - LEVEL_UP_MOVE(10, MOVE_MINIMIZE), - LEVEL_UP_MOVE(19, MOVE_WATER_GUN), - LEVEL_UP_MOVE(28, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(46, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gScizorLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 6, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(11, MOVE_PURSUIT), - LEVEL_UP_MOVE(16, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(21, MOVE_AGILITY), - LEVEL_UP_MOVE(26, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(31, MOVE_SLASH), - LEVEL_UP_MOVE(36, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(41, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), - -1 -}; - -const u16 gShuckleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 1, MOVE_WITHDRAW), - LEVEL_UP_MOVE( 9, MOVE_WRAP), - LEVEL_UP_MOVE(14, MOVE_ENCORE), - LEVEL_UP_MOVE(23, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(28, MOVE_BIDE), - LEVEL_UP_MOVE(37, MOVE_REST), - -1 -}; - -const u16 gHeracrossLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 6, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE(11, MOVE_ENDURE), - LEVEL_UP_MOVE(17, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(23, MOVE_BRICK_BREAK), - LEVEL_UP_MOVE(30, MOVE_COUNTER), - LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(45, MOVE_REVERSAL), - LEVEL_UP_MOVE(53, MOVE_MEGAHORN), - -1 -}; - -const u16 gSneaselLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_TAUNT), - LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(15, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(36, MOVE_AGILITY), - LEVEL_UP_MOVE(43, MOVE_ICY_WIND), - LEVEL_UP_MOVE(50, MOVE_SLASH), - LEVEL_UP_MOVE(57, MOVE_BEAT_UP), - LEVEL_UP_MOVE(64, MOVE_METAL_CLAW), - -1 -}; - -const u16 gTeddiursaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_LICK), - LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(31, MOVE_REST), - LEVEL_UP_MOVE(37, MOVE_SLASH), - LEVEL_UP_MOVE(43, MOVE_SNORE), - LEVEL_UP_MOVE(49, MOVE_THRASH), - -1 -}; - -const u16 gUrsaringLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 1, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE( 7, MOVE_LICK), - LEVEL_UP_MOVE(13, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(19, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE(25, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(31, MOVE_REST), - LEVEL_UP_MOVE(37, MOVE_SLASH), - LEVEL_UP_MOVE(43, MOVE_SNORE), - LEVEL_UP_MOVE(49, MOVE_THRASH), - -1 -}; - -const u16 gSlugmaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 1, MOVE_SMOG), - LEVEL_UP_MOVE( 8, MOVE_EMBER), - LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(22, MOVE_HARDEN), - LEVEL_UP_MOVE(29, MOVE_AMNESIA), - LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(43, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(50, MOVE_BODY_SLAM), - -1 -}; - -const u16 gMagcargoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 1, MOVE_SMOG), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 1, MOVE_ROCK_THROW), - LEVEL_UP_MOVE( 8, MOVE_EMBER), - LEVEL_UP_MOVE(15, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(22, MOVE_HARDEN), - LEVEL_UP_MOVE(29, MOVE_AMNESIA), - LEVEL_UP_MOVE(36, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(48, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(60, MOVE_BODY_SLAM), - -1 -}; - -const u16 gSwinubLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE(19, MOVE_ENDURE), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(37, MOVE_MIST), - LEVEL_UP_MOVE(46, MOVE_BLIZZARD), - LEVEL_UP_MOVE(55, MOVE_AMNESIA), - -1 -}; - -const u16 gPiloswineLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_ENDURE), - LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE(19, MOVE_ENDURE), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(33, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(42, MOVE_MIST), - LEVEL_UP_MOVE(56, MOVE_BLIZZARD), - LEVEL_UP_MOVE(70, MOVE_AMNESIA), - -1 -}; - -const u16 gCorsolaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 6, MOVE_HARDEN), - LEVEL_UP_MOVE(12, MOVE_BUBBLE), - LEVEL_UP_MOVE(17, MOVE_RECOVER), - LEVEL_UP_MOVE(17, MOVE_REFRESH), - LEVEL_UP_MOVE(23, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(28, MOVE_SPIKE_CANNON), - LEVEL_UP_MOVE(34, MOVE_ROCK_BLAST), - LEVEL_UP_MOVE(39, MOVE_MIRROR_COAT), - LEVEL_UP_MOVE(45, MOVE_ANCIENT_POWER), - -1 -}; - -const u16 gRemoraidLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE(11, MOVE_LOCK_ON), - LEVEL_UP_MOVE(22, MOVE_PSYBEAM), - LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(33, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(44, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(55, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gOctilleryLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE(11, MOVE_CONSTRICT), - LEVEL_UP_MOVE(22, MOVE_PSYBEAM), - LEVEL_UP_MOVE(22, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(22, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(25, MOVE_OCTAZOOKA), - LEVEL_UP_MOVE(38, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(54, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(70, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gDelibirdLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PRESENT), - -1 -}; - -const u16 gMantineLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 8, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(15, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(22, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(29, MOVE_AGILITY), - LEVEL_UP_MOVE(36, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(43, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(50, MOVE_CONFUSE_RAY), - -1 -}; - -const u16 gSkarmoryLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE(10, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(13, MOVE_SWIFT), - LEVEL_UP_MOVE(16, MOVE_AGILITY), - LEVEL_UP_MOVE(26, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(29, MOVE_AIR_CUTTER), - LEVEL_UP_MOVE(32, MOVE_STEEL_WING), - LEVEL_UP_MOVE(42, MOVE_SPIKES), - LEVEL_UP_MOVE(45, MOVE_METAL_SOUND), - -1 -}; - -const u16 gHoundourLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 7, MOVE_HOWL), - LEVEL_UP_MOVE(13, MOVE_SMOG), - LEVEL_UP_MOVE(19, MOVE_ROAR), - LEVEL_UP_MOVE(25, MOVE_BITE), - LEVEL_UP_MOVE(31, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(49, MOVE_CRUNCH), - -1 -}; - -const u16 gHoundoomLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 1, MOVE_HOWL), - LEVEL_UP_MOVE( 7, MOVE_HOWL), - LEVEL_UP_MOVE(13, MOVE_SMOG), - LEVEL_UP_MOVE(19, MOVE_ROAR), - LEVEL_UP_MOVE(27, MOVE_BITE), - LEVEL_UP_MOVE(35, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(43, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(59, MOVE_CRUNCH), - -1 -}; - -const u16 gKingdraLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 8, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(15, MOVE_LEER), - LEVEL_UP_MOVE(22, MOVE_WATER_GUN), - LEVEL_UP_MOVE(29, MOVE_TWISTER), - LEVEL_UP_MOVE(40, MOVE_AGILITY), - LEVEL_UP_MOVE(51, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(62, MOVE_DRAGON_DANCE), - -1 -}; - -const u16 gPhanpyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(17, MOVE_FLAIL), - LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(33, MOVE_ROLLOUT), - LEVEL_UP_MOVE(41, MOVE_ENDURE), - LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gDonphanLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE( 1, MOVE_HORN_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(17, MOVE_FLAIL), - LEVEL_UP_MOVE(25, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(33, MOVE_ROLLOUT), - LEVEL_UP_MOVE(41, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(49, MOVE_EARTHQUAKE), - -1 -}; - -const u16 gPorygon2LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONVERSION_2), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_CONVERSION), - LEVEL_UP_MOVE( 9, MOVE_AGILITY), - LEVEL_UP_MOVE(12, MOVE_PSYBEAM), - LEVEL_UP_MOVE(20, MOVE_RECOVER), - LEVEL_UP_MOVE(24, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(32, MOVE_LOCK_ON), - LEVEL_UP_MOVE(36, MOVE_TRI_ATTACK), - LEVEL_UP_MOVE(44, MOVE_RECYCLE), - LEVEL_UP_MOVE(48, MOVE_ZAP_CANNON), - -1 -}; - -const u16 gStantlerLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 7, MOVE_LEER), - LEVEL_UP_MOVE(13, MOVE_ASTONISH), - LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(25, MOVE_STOMP), - LEVEL_UP_MOVE(31, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(43, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(49, MOVE_CALM_MIND), - -1 -}; - -const u16 gSmeargleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SKETCH), - LEVEL_UP_MOVE(11, MOVE_SKETCH), - LEVEL_UP_MOVE(21, MOVE_SKETCH), - LEVEL_UP_MOVE(31, MOVE_SKETCH), - LEVEL_UP_MOVE(41, MOVE_SKETCH), - LEVEL_UP_MOVE(51, MOVE_SKETCH), - LEVEL_UP_MOVE(61, MOVE_SKETCH), - LEVEL_UP_MOVE(71, MOVE_SKETCH), - LEVEL_UP_MOVE(81, MOVE_SKETCH), - LEVEL_UP_MOVE(91, MOVE_SKETCH), - -1 -}; - -const u16 gTyrogueLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gHitmontopLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_REVENGE), - LEVEL_UP_MOVE( 1, MOVE_ROLLING_KICK), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(13, MOVE_PURSUIT), - LEVEL_UP_MOVE(19, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(20, MOVE_TRIPLE_KICK), - LEVEL_UP_MOVE(25, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE(31, MOVE_COUNTER), - LEVEL_UP_MOVE(37, MOVE_AGILITY), - LEVEL_UP_MOVE(43, MOVE_DETECT), - LEVEL_UP_MOVE(49, MOVE_ENDEAVOR), - -1 -}; - -const u16 gSmoochumLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 9, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(13, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE(21, MOVE_CONFUSION), - LEVEL_UP_MOVE(25, MOVE_SING), - LEVEL_UP_MOVE(33, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(37, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE(45, MOVE_PSYCHIC), - LEVEL_UP_MOVE(49, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(57, MOVE_BLIZZARD), - -1 -}; - -const u16 gElekidLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 9, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE(17, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(25, MOVE_SWIFT), - LEVEL_UP_MOVE(33, MOVE_SCREECH), - LEVEL_UP_MOVE(41, MOVE_THUNDERBOLT), - LEVEL_UP_MOVE(49, MOVE_THUNDER), - -1 -}; - -const u16 gMagbyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 7, MOVE_LEER), - LEVEL_UP_MOVE(13, MOVE_SMOG), - LEVEL_UP_MOVE(19, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE(25, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(37, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(43, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(49, MOVE_FIRE_BLAST), - -1 -}; - -const u16 gMiltankLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_GROWL), - LEVEL_UP_MOVE( 8, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(13, MOVE_STOMP), - LEVEL_UP_MOVE(19, MOVE_MILK_DRINK), - LEVEL_UP_MOVE(26, MOVE_BIDE), - LEVEL_UP_MOVE(34, MOVE_ROLLOUT), - LEVEL_UP_MOVE(43, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(53, MOVE_HEAL_BELL), - -1 -}; - -const u16 gBlisseyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 4, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 7, MOVE_REFRESH), - LEVEL_UP_MOVE(10, MOVE_SOFT_BOILED), - LEVEL_UP_MOVE(13, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(18, MOVE_MINIMIZE), - LEVEL_UP_MOVE(23, MOVE_SING), - LEVEL_UP_MOVE(28, MOVE_EGG_BOMB), - LEVEL_UP_MOVE(33, MOVE_DEFENSE_CURL), - LEVEL_UP_MOVE(40, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(47, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gRaikouLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE(11, MOVE_THUNDER_SHOCK), - LEVEL_UP_MOVE(21, MOVE_ROAR), - LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(41, MOVE_SPARK), - LEVEL_UP_MOVE(51, MOVE_REFLECT), - LEVEL_UP_MOVE(61, MOVE_CRUNCH), - LEVEL_UP_MOVE(71, MOVE_THUNDER), - LEVEL_UP_MOVE(81, MOVE_CALM_MIND), - -1 -}; - -const u16 gEnteiLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE(11, MOVE_EMBER), - LEVEL_UP_MOVE(21, MOVE_ROAR), - LEVEL_UP_MOVE(31, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(41, MOVE_STOMP), - LEVEL_UP_MOVE(51, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(61, MOVE_SWAGGER), - LEVEL_UP_MOVE(71, MOVE_FIRE_BLAST), - LEVEL_UP_MOVE(81, MOVE_CALM_MIND), - -1 -}; - -const u16 gSuicuneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE(11, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(21, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(31, MOVE_GUST), - LEVEL_UP_MOVE(41, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(51, MOVE_MIST), - LEVEL_UP_MOVE(61, MOVE_MIRROR_COAT), - LEVEL_UP_MOVE(71, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(81, MOVE_CALM_MIND), - -1 -}; - -const u16 gLarvitarLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), - LEVEL_UP_MOVE(15, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_THRASH), - LEVEL_UP_MOVE(36, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(43, MOVE_CRUNCH), - LEVEL_UP_MOVE(50, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gPupitarLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_SANDSTORM), - LEVEL_UP_MOVE( 1, MOVE_SCREECH), - LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), - LEVEL_UP_MOVE(15, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_THRASH), - LEVEL_UP_MOVE(38, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(47, MOVE_CRUNCH), - LEVEL_UP_MOVE(56, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gTyranitarLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_SANDSTORM), - LEVEL_UP_MOVE( 1, MOVE_SCREECH), - LEVEL_UP_MOVE( 8, MOVE_SANDSTORM), - LEVEL_UP_MOVE(15, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(29, MOVE_THRASH), - LEVEL_UP_MOVE(38, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(47, MOVE_CRUNCH), - LEVEL_UP_MOVE(61, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gLugiaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(11, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(22, MOVE_GUST), - LEVEL_UP_MOVE(33, MOVE_RECOVER), - LEVEL_UP_MOVE(44, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(55, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(66, MOVE_SWIFT), - LEVEL_UP_MOVE(77, MOVE_AEROBLAST), - LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT), - -1 -}; - -const u16 gHoOhLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(11, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(22, MOVE_GUST), - LEVEL_UP_MOVE(33, MOVE_RECOVER), - LEVEL_UP_MOVE(44, MOVE_FIRE_BLAST), - LEVEL_UP_MOVE(55, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(66, MOVE_SWIFT), - LEVEL_UP_MOVE(77, MOVE_SACRED_FIRE), - LEVEL_UP_MOVE(88, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(99, MOVE_FUTURE_SIGHT), - -1 -}; - -const u16 gCelebiLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_RECOVER), - LEVEL_UP_MOVE( 1, MOVE_HEAL_BELL), - LEVEL_UP_MOVE(10, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(20, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(30, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(40, MOVE_BATON_PASS), - LEVEL_UP_MOVE(50, MOVE_PERISH_SONG), - -1 -}; - -const u16 gSpecies252LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies253LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies254LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies255LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies256LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies257LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies258LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies259LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies260LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies261LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies262LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies263LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies264LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies265LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies266LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies267LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies268LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies269LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies270LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies271LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies272LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies273LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies274LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies275LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gSpecies276LevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - -1 -}; - -const u16 gTreeckoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 6, MOVE_ABSORB), - LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(16, MOVE_PURSUIT), - LEVEL_UP_MOVE(21, MOVE_SCREECH), - LEVEL_UP_MOVE(26, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(31, MOVE_AGILITY), - LEVEL_UP_MOVE(36, MOVE_SLAM), - LEVEL_UP_MOVE(41, MOVE_DETECT), - LEVEL_UP_MOVE(46, MOVE_GIGA_DRAIN), - -1 -}; - -const u16 gGrovyleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_ABSORB), - LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(17, MOVE_PURSUIT), - LEVEL_UP_MOVE(23, MOVE_SCREECH), - LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE(35, MOVE_AGILITY), - LEVEL_UP_MOVE(41, MOVE_SLAM), - LEVEL_UP_MOVE(47, MOVE_DETECT), - LEVEL_UP_MOVE(53, MOVE_FALSE_SWIPE), - -1 -}; - -const u16 gSceptileLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 6, MOVE_ABSORB), - LEVEL_UP_MOVE(11, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(16, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(17, MOVE_PURSUIT), - LEVEL_UP_MOVE(23, MOVE_SCREECH), - LEVEL_UP_MOVE(29, MOVE_LEAF_BLADE), - LEVEL_UP_MOVE(35, MOVE_AGILITY), - LEVEL_UP_MOVE(43, MOVE_SLAM), - LEVEL_UP_MOVE(51, MOVE_DETECT), - LEVEL_UP_MOVE(59, MOVE_FALSE_SWIPE), - -1 -}; - -const u16 gTorchicLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(10, MOVE_EMBER), - LEVEL_UP_MOVE(16, MOVE_PECK), - LEVEL_UP_MOVE(19, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(25, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(28, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(34, MOVE_SLASH), - LEVEL_UP_MOVE(37, MOVE_MIRROR_MOVE), - LEVEL_UP_MOVE(43, MOVE_FLAMETHROWER), - -1 -}; - -const u16 gCombuskenLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(13, MOVE_EMBER), - LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(17, MOVE_PECK), - LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(28, MOVE_BULK_UP), - LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(39, MOVE_SLASH), - LEVEL_UP_MOVE(43, MOVE_MIRROR_MOVE), - LEVEL_UP_MOVE(50, MOVE_SKY_UPPERCUT), - -1 -}; - -const u16 gBlazikenLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 7, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(13, MOVE_EMBER), - LEVEL_UP_MOVE(16, MOVE_DOUBLE_KICK), - LEVEL_UP_MOVE(17, MOVE_PECK), - LEVEL_UP_MOVE(21, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(28, MOVE_BULK_UP), - LEVEL_UP_MOVE(32, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(36, MOVE_BLAZE_KICK), - LEVEL_UP_MOVE(42, MOVE_SLASH), - LEVEL_UP_MOVE(49, MOVE_MIRROR_MOVE), - LEVEL_UP_MOVE(59, MOVE_SKY_UPPERCUT), - -1 -}; - -const u16 gMudkipLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(15, MOVE_BIDE), - LEVEL_UP_MOVE(19, MOVE_FORESIGHT), - LEVEL_UP_MOVE(24, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(28, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(33, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE(37, MOVE_PROTECT), - LEVEL_UP_MOVE(42, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(46, MOVE_ENDEAVOR), - -1 -}; - -const u16 gMarshtompLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(15, MOVE_BIDE), - LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(20, MOVE_FORESIGHT), - LEVEL_UP_MOVE(25, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(37, MOVE_MUDDY_WATER), - LEVEL_UP_MOVE(42, MOVE_PROTECT), - LEVEL_UP_MOVE(46, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(53, MOVE_ENDEAVOR), - -1 -}; - -const u16 gSwampertLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 6, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(15, MOVE_BIDE), - LEVEL_UP_MOVE(16, MOVE_MUD_SHOT), - LEVEL_UP_MOVE(20, MOVE_FORESIGHT), - LEVEL_UP_MOVE(25, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(39, MOVE_MUDDY_WATER), - LEVEL_UP_MOVE(46, MOVE_PROTECT), - LEVEL_UP_MOVE(52, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(61, MOVE_ENDEAVOR), - -1 -}; - -const u16 gPoochyenaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_HOWL), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(13, MOVE_BITE), - LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(21, MOVE_ROAR), - LEVEL_UP_MOVE(25, MOVE_SWAGGER), - LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(33, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(37, MOVE_TAUNT), - LEVEL_UP_MOVE(41, MOVE_CRUNCH), - LEVEL_UP_MOVE(45, MOVE_THIEF), - -1 -}; - -const u16 gMightyenaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HOWL), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 5, MOVE_HOWL), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(13, MOVE_BITE), - LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(22, MOVE_ROAR), - LEVEL_UP_MOVE(27, MOVE_SWAGGER), - LEVEL_UP_MOVE(32, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(37, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(42, MOVE_TAUNT), - LEVEL_UP_MOVE(47, MOVE_CRUNCH), - LEVEL_UP_MOVE(52, MOVE_THIEF), - -1 -}; - -const u16 gZigzagoonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), - LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(21, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(25, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(29, MOVE_COVET), - LEVEL_UP_MOVE(33, MOVE_FLAIL), - LEVEL_UP_MOVE(37, MOVE_REST), - LEVEL_UP_MOVE(41, MOVE_BELLY_DRUM), - -1 -}; - -const u16 gLinooneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 5, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 9, MOVE_HEADBUTT), - LEVEL_UP_MOVE(13, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(17, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(23, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(29, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(35, MOVE_COVET), - LEVEL_UP_MOVE(41, MOVE_SLASH), - LEVEL_UP_MOVE(47, MOVE_REST), - LEVEL_UP_MOVE(53, MOVE_BELLY_DRUM), - -1 -}; - -const u16 gWurmpleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_STRING_SHOT), - LEVEL_UP_MOVE( 5, MOVE_POISON_STING), - -1 -}; - -const u16 gSilcoonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - -1 -}; - -const u16 gBeautiflyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE(10, MOVE_ABSORB), - LEVEL_UP_MOVE(13, MOVE_GUST), - LEVEL_UP_MOVE(17, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(20, MOVE_MORNING_SUN), - LEVEL_UP_MOVE(24, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(31, MOVE_ATTRACT), - LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), - LEVEL_UP_MOVE(38, MOVE_GIGA_DRAIN), - -1 -}; - -const u16 gCascoonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - -1 -}; - -const u16 gDustoxLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE(10, MOVE_CONFUSION), - LEVEL_UP_MOVE(13, MOVE_GUST), - LEVEL_UP_MOVE(17, MOVE_PROTECT), - LEVEL_UP_MOVE(20, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(24, MOVE_PSYBEAM), - LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(31, MOVE_LIGHT_SCREEN), - LEVEL_UP_MOVE(34, MOVE_SILVER_WIND), - LEVEL_UP_MOVE(38, MOVE_TOXIC), - -1 -}; - -const u16 gLotadLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 3, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_ABSORB), - LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), - LEVEL_UP_MOVE(21, MOVE_MIST), - LEVEL_UP_MOVE(31, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(43, MOVE_MEGA_DRAIN), - -1 -}; - -const u16 gLombreLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 3, MOVE_GROWL), - LEVEL_UP_MOVE( 7, MOVE_ABSORB), - LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), - LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(25, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(31, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(37, MOVE_THIEF), - LEVEL_UP_MOVE(43, MOVE_UPROAR), - LEVEL_UP_MOVE(49, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gLudicoloLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_NATURE_POWER), - -1 -}; - -const u16 gSeedotLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BIDE), - LEVEL_UP_MOVE( 3, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_GROWTH), - LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), - LEVEL_UP_MOVE(21, MOVE_SYNTHESIS), - LEVEL_UP_MOVE(31, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(43, MOVE_EXPLOSION), - -1 -}; - -const u16 gNuzleafLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 3, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_GROWTH), - LEVEL_UP_MOVE(13, MOVE_NATURE_POWER), - LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(25, MOVE_TORMENT), - LEVEL_UP_MOVE(31, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(37, MOVE_RAZOR_WIND), - LEVEL_UP_MOVE(43, MOVE_SWAGGER), - LEVEL_UP_MOVE(49, MOVE_EXTRASENSORY), - -1 -}; - -const u16 gShiftryLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_GROWTH), - LEVEL_UP_MOVE( 1, MOVE_NATURE_POWER), - -1 -}; - -const u16 gNincadaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(19, MOVE_MIND_READER), - LEVEL_UP_MOVE(25, MOVE_FALSE_SWIPE), - LEVEL_UP_MOVE(31, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(38, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(45, MOVE_DIG), - -1 -}; - -const u16 gNinjaskLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(19, MOVE_MIND_READER), - LEVEL_UP_MOVE(20, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(20, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(20, MOVE_SCREECH), - LEVEL_UP_MOVE(25, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(31, MOVE_SLASH), - LEVEL_UP_MOVE(38, MOVE_AGILITY), - LEVEL_UP_MOVE(45, MOVE_BATON_PASS), - -1 -}; - -const u16 gShedinjaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 5, MOVE_LEECH_LIFE), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(14, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(19, MOVE_MIND_READER), - LEVEL_UP_MOVE(25, MOVE_SPITE), - LEVEL_UP_MOVE(31, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(38, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(45, MOVE_GRUDGE), - -1 -}; - -const u16 gTaillowLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(26, MOVE_ENDEAVOR), - LEVEL_UP_MOVE(34, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(43, MOVE_AGILITY), - -1 -}; - -const u16 gSwellowLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 4, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 8, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(19, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(28, MOVE_ENDEAVOR), - LEVEL_UP_MOVE(38, MOVE_AERIAL_ACE), - LEVEL_UP_MOVE(49, MOVE_AGILITY), - -1 -}; - -const u16 gShroomishLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 4, MOVE_TACKLE), - LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(22, MOVE_HEADBUTT), - LEVEL_UP_MOVE(28, MOVE_POISON_POWDER), - LEVEL_UP_MOVE(36, MOVE_GROWTH), - LEVEL_UP_MOVE(45, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(54, MOVE_SPORE), - -1 -}; - -const u16 gBreloomLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_STUN_SPORE), - LEVEL_UP_MOVE( 1, MOVE_LEECH_SEED), - LEVEL_UP_MOVE( 4, MOVE_TACKLE), - LEVEL_UP_MOVE( 7, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(10, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(16, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(22, MOVE_HEADBUTT), - LEVEL_UP_MOVE(23, MOVE_MACH_PUNCH), - LEVEL_UP_MOVE(28, MOVE_COUNTER), - LEVEL_UP_MOVE(36, MOVE_SKY_UPPERCUT), - LEVEL_UP_MOVE(45, MOVE_MIND_READER), - LEVEL_UP_MOVE(54, MOVE_DYNAMIC_PUNCH), - -1 -}; - -const u16 gSpindaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_UPROAR), - LEVEL_UP_MOVE(12, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(16, MOVE_PSYBEAM), - LEVEL_UP_MOVE(23, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(27, MOVE_DIZZY_PUNCH), - LEVEL_UP_MOVE(34, MOVE_TEETER_DANCE), - LEVEL_UP_MOVE(38, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(45, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(49, MOVE_FLAIL), - LEVEL_UP_MOVE(56, MOVE_THRASH), - -1 -}; - -const u16 gWingullLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(21, MOVE_MIST), - LEVEL_UP_MOVE(31, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(43, MOVE_PURSUIT), - LEVEL_UP_MOVE(55, MOVE_AGILITY), - -1 -}; - -const u16 gPelipperLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 1, MOVE_WING_ATTACK), - LEVEL_UP_MOVE( 3, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 7, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(13, MOVE_WING_ATTACK), - LEVEL_UP_MOVE(21, MOVE_MIST), - LEVEL_UP_MOVE(25, MOVE_PROTECT), - LEVEL_UP_MOVE(33, MOVE_STOCKPILE), - LEVEL_UP_MOVE(33, MOVE_SWALLOW), - LEVEL_UP_MOVE(47, MOVE_SPIT_UP), - LEVEL_UP_MOVE(61, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gSurskitLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(25, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(31, MOVE_AGILITY), - LEVEL_UP_MOVE(37, MOVE_MIST), - LEVEL_UP_MOVE(37, MOVE_HAZE), - -1 -}; - -const u16 gMasquerainLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(19, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(26, MOVE_GUST), - LEVEL_UP_MOVE(33, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(40, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(47, MOVE_SILVER_WIND), - LEVEL_UP_MOVE(53, MOVE_WHIRLWIND), - -1 -}; - -const u16 gWailmerLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 5, MOVE_GROWL), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(14, MOVE_ROLLOUT), - LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE(23, MOVE_ASTONISH), - LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(32, MOVE_MIST), - LEVEL_UP_MOVE(37, MOVE_REST), - LEVEL_UP_MOVE(41, MOVE_WATER_SPOUT), - LEVEL_UP_MOVE(46, MOVE_AMNESIA), - LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gWailordLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_ROLLOUT), - LEVEL_UP_MOVE( 5, MOVE_GROWL), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(14, MOVE_ROLLOUT), - LEVEL_UP_MOVE(19, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE(23, MOVE_ASTONISH), - LEVEL_UP_MOVE(28, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(32, MOVE_MIST), - LEVEL_UP_MOVE(37, MOVE_REST), - LEVEL_UP_MOVE(44, MOVE_WATER_SPOUT), - LEVEL_UP_MOVE(52, MOVE_AMNESIA), - LEVEL_UP_MOVE(59, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gSkittyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 3, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 7, MOVE_ATTRACT), - LEVEL_UP_MOVE(13, MOVE_SING), - LEVEL_UP_MOVE(15, MOVE_DOUBLE_SLAP), - LEVEL_UP_MOVE(19, MOVE_ASSIST), - LEVEL_UP_MOVE(25, MOVE_CHARM), - LEVEL_UP_MOVE(27, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(31, MOVE_COVET), - LEVEL_UP_MOVE(37, MOVE_HEAL_BELL), - LEVEL_UP_MOVE(39, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gDelcattyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_ATTRACT), - LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_SLAP), - -1 -}; - -const u16 gKecleonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_THIEF), - LEVEL_UP_MOVE( 1, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_LICK), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 4, MOVE_BIND), - LEVEL_UP_MOVE( 7, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(12, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(17, MOVE_PSYBEAM), - LEVEL_UP_MOVE(24, MOVE_SCREECH), - LEVEL_UP_MOVE(31, MOVE_SLASH), - LEVEL_UP_MOVE(40, MOVE_SUBSTITUTE), - LEVEL_UP_MOVE(49, MOVE_ANCIENT_POWER), - -1 -}; - -const u16 gBaltoyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 3, MOVE_HARDEN), - LEVEL_UP_MOVE( 5, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(11, MOVE_PSYBEAM), - LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(31, MOVE_SANDSTORM), - LEVEL_UP_MOVE(37, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(45, MOVE_EXPLOSION), - -1 -}; - -const u16 gClaydolLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TELEPORT), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE( 3, MOVE_HARDEN), - LEVEL_UP_MOVE( 5, MOVE_RAPID_SPIN), - LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(11, MOVE_PSYBEAM), - LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(19, MOVE_SELF_DESTRUCT), - LEVEL_UP_MOVE(25, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(31, MOVE_SANDSTORM), - LEVEL_UP_MOVE(36, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE(42, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(55, MOVE_EXPLOSION), - -1 -}; - -const u16 gNosepassLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(16, MOVE_BLOCK), - LEVEL_UP_MOVE(22, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(28, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(31, MOVE_SANDSTORM), - LEVEL_UP_MOVE(37, MOVE_REST), - LEVEL_UP_MOVE(43, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(46, MOVE_LOCK_ON), - -1 -}; - -const u16 gTorkoalLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 4, MOVE_SMOG), - LEVEL_UP_MOVE( 7, MOVE_CURSE), - LEVEL_UP_MOVE(14, MOVE_SMOKESCREEN), - LEVEL_UP_MOVE(17, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(27, MOVE_PROTECT), - LEVEL_UP_MOVE(30, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(33, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(40, MOVE_AMNESIA), - LEVEL_UP_MOVE(43, MOVE_FLAIL), - LEVEL_UP_MOVE(46, MOVE_HEAT_WAVE), - -1 -}; - -const u16 gSableyeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 5, MOVE_FORESIGHT), - LEVEL_UP_MOVE( 9, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(13, MOVE_ASTONISH), - LEVEL_UP_MOVE(17, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(21, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(25, MOVE_DETECT), - LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(33, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(37, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(41, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK), - -1 -}; - -const u16 gBarboachLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(11, MOVE_WATER_GUN), - LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(21, MOVE_AMNESIA), - LEVEL_UP_MOVE(26, MOVE_REST), - LEVEL_UP_MOVE(26, MOVE_SNORE), - LEVEL_UP_MOVE(31, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(41, MOVE_FISSURE), - -1 -}; - -const u16 gWhiscashLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TICKLE), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 1, MOVE_WATER_SPORT), - LEVEL_UP_MOVE( 6, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 6, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(11, MOVE_WATER_GUN), - LEVEL_UP_MOVE(16, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(21, MOVE_AMNESIA), - LEVEL_UP_MOVE(26, MOVE_REST), - LEVEL_UP_MOVE(26, MOVE_SNORE), - LEVEL_UP_MOVE(36, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(46, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(56, MOVE_FISSURE), - -1 -}; - -const u16 gLuvdiscLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_CHARM), - LEVEL_UP_MOVE(12, MOVE_WATER_GUN), - LEVEL_UP_MOVE(16, MOVE_AGILITY), - LEVEL_UP_MOVE(24, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(28, MOVE_ATTRACT), - LEVEL_UP_MOVE(36, MOVE_SWEET_KISS), - LEVEL_UP_MOVE(40, MOVE_FLAIL), - LEVEL_UP_MOVE(48, MOVE_SAFEGUARD), - -1 -}; - -const u16 gCorphishLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - LEVEL_UP_MOVE(10, MOVE_VICE_GRIP), - LEVEL_UP_MOVE(13, MOVE_LEER), - LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(23, MOVE_PROTECT), - LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(32, MOVE_TAUNT), - LEVEL_UP_MOVE(35, MOVE_CRABHAMMER), - LEVEL_UP_MOVE(38, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(44, MOVE_GUILLOTINE), - -1 -}; - -const u16 gCrawdauntLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BUBBLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_VICE_GRIP), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - LEVEL_UP_MOVE(10, MOVE_VICE_GRIP), - LEVEL_UP_MOVE(13, MOVE_LEER), - LEVEL_UP_MOVE(20, MOVE_BUBBLE_BEAM), - LEVEL_UP_MOVE(23, MOVE_PROTECT), - LEVEL_UP_MOVE(26, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(34, MOVE_TAUNT), - LEVEL_UP_MOVE(39, MOVE_CRABHAMMER), - LEVEL_UP_MOVE(44, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(52, MOVE_GUILLOTINE), - -1 -}; - -const u16 gFeebasLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE(15, MOVE_TACKLE), - LEVEL_UP_MOVE(30, MOVE_FLAIL), - -1 -}; - -const u16 gMiloticLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 5, MOVE_WRAP), - LEVEL_UP_MOVE(10, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(15, MOVE_REFRESH), - LEVEL_UP_MOVE(20, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(25, MOVE_TWISTER), - LEVEL_UP_MOVE(30, MOVE_RECOVER), - LEVEL_UP_MOVE(35, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(40, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(45, MOVE_ATTRACT), - LEVEL_UP_MOVE(50, MOVE_SAFEGUARD), - -1 -}; - -const u16 gCarvanhaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 7, MOVE_RAGE), - LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(16, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(22, MOVE_CRUNCH), - LEVEL_UP_MOVE(28, MOVE_SCREECH), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(37, MOVE_SWAGGER), - LEVEL_UP_MOVE(43, MOVE_AGILITY), - -1 -}; - -const u16 gSharpedoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 7, MOVE_RAGE), - LEVEL_UP_MOVE(13, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(16, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(22, MOVE_CRUNCH), - LEVEL_UP_MOVE(28, MOVE_SCREECH), - LEVEL_UP_MOVE(33, MOVE_SLASH), - LEVEL_UP_MOVE(38, MOVE_TAUNT), - LEVEL_UP_MOVE(43, MOVE_SWAGGER), - LEVEL_UP_MOVE(48, MOVE_SKULL_BASH), - LEVEL_UP_MOVE(53, MOVE_AGILITY), - -1 -}; - -const u16 gTrapinchLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(33, MOVE_CRUNCH), - LEVEL_UP_MOVE(41, MOVE_DIG), - LEVEL_UP_MOVE(49, MOVE_SANDSTORM), - LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gVibravaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(33, MOVE_CRUNCH), - LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(41, MOVE_SCREECH), - LEVEL_UP_MOVE(49, MOVE_SANDSTORM), - LEVEL_UP_MOVE(57, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gFlygonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_SAND_TOMB), - LEVEL_UP_MOVE( 9, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(17, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_SAND_TOMB), - LEVEL_UP_MOVE(33, MOVE_CRUNCH), - LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(41, MOVE_SCREECH), - LEVEL_UP_MOVE(53, MOVE_SANDSTORM), - LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gMakuhitaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(10, MOVE_ARM_THRUST), - LEVEL_UP_MOVE(13, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(22, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(28, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(31, MOVE_SMELLING_SALT), - LEVEL_UP_MOVE(37, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(40, MOVE_ENDURE), - LEVEL_UP_MOVE(46, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(49, MOVE_REVERSAL), - -1 -}; - -const u16 gHariyamaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 1, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE( 1, MOVE_ARM_THRUST), - LEVEL_UP_MOVE( 4, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(10, MOVE_ARM_THRUST), - LEVEL_UP_MOVE(13, MOVE_VITAL_THROW), - LEVEL_UP_MOVE(19, MOVE_FAKE_OUT), - LEVEL_UP_MOVE(22, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(29, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(33, MOVE_SMELLING_SALT), - LEVEL_UP_MOVE(40, MOVE_BELLY_DRUM), - LEVEL_UP_MOVE(44, MOVE_ENDURE), - LEVEL_UP_MOVE(51, MOVE_SEISMIC_TOSS), - LEVEL_UP_MOVE(55, MOVE_REVERSAL), - -1 -}; - -const u16 gElectrikeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 9, MOVE_LEER), - LEVEL_UP_MOVE(12, MOVE_HOWL), - LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(20, MOVE_SPARK), - LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(28, MOVE_ROAR), - LEVEL_UP_MOVE(33, MOVE_BITE), - LEVEL_UP_MOVE(36, MOVE_THUNDER), - LEVEL_UP_MOVE(41, MOVE_CHARGE), - -1 -}; - -const u16 gManectricLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_HOWL), - LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE( 9, MOVE_LEER), - LEVEL_UP_MOVE(12, MOVE_HOWL), - LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(20, MOVE_SPARK), - LEVEL_UP_MOVE(25, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(31, MOVE_ROAR), - LEVEL_UP_MOVE(39, MOVE_BITE), - LEVEL_UP_MOVE(45, MOVE_THUNDER), - LEVEL_UP_MOVE(53, MOVE_CHARGE), - -1 -}; - -const u16 gNumelLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE(11, MOVE_EMBER), - LEVEL_UP_MOVE(19, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(31, MOVE_AMNESIA), - LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(41, MOVE_FLAMETHROWER), - LEVEL_UP_MOVE(49, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gCameruptLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_EMBER), - LEVEL_UP_MOVE( 1, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(11, MOVE_EMBER), - LEVEL_UP_MOVE(19, MOVE_MAGNITUDE), - LEVEL_UP_MOVE(25, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(31, MOVE_AMNESIA), - LEVEL_UP_MOVE(33, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(37, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(45, MOVE_ERUPTION), - LEVEL_UP_MOVE(55, MOVE_FISSURE), - -1 -}; - -const u16 gSphealLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_ICE_BALL), - LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(31, MOVE_HAIL), - LEVEL_UP_MOVE(37, MOVE_REST), - LEVEL_UP_MOVE(37, MOVE_SNORE), - LEVEL_UP_MOVE(43, MOVE_BLIZZARD), - LEVEL_UP_MOVE(49, MOVE_SHEER_COLD), - -1 -}; - -const u16 gSealeoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_ICE_BALL), - LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(31, MOVE_HAIL), - LEVEL_UP_MOVE(39, MOVE_REST), - LEVEL_UP_MOVE(39, MOVE_SNORE), - LEVEL_UP_MOVE(47, MOVE_BLIZZARD), - LEVEL_UP_MOVE(55, MOVE_SHEER_COLD), - -1 -}; - -const u16 gWalreinLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_ICE_BALL), - LEVEL_UP_MOVE(19, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(25, MOVE_AURORA_BEAM), - LEVEL_UP_MOVE(31, MOVE_HAIL), - LEVEL_UP_MOVE(39, MOVE_REST), - LEVEL_UP_MOVE(39, MOVE_SNORE), - LEVEL_UP_MOVE(50, MOVE_BLIZZARD), - LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), - -1 -}; - -const u16 gCacneaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 5, MOVE_ABSORB), - LEVEL_UP_MOVE( 9, MOVE_GROWTH), - LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(25, MOVE_INGRAIN), - LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(33, MOVE_SPIKES), - LEVEL_UP_MOVE(37, MOVE_NEEDLE_ARM), - LEVEL_UP_MOVE(41, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(45, MOVE_SANDSTORM), - -1 -}; - -const u16 gCacturneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POISON_STING), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 1, MOVE_GROWTH), - LEVEL_UP_MOVE( 5, MOVE_ABSORB), - LEVEL_UP_MOVE( 9, MOVE_GROWTH), - LEVEL_UP_MOVE(13, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(17, MOVE_SAND_ATTACK), - LEVEL_UP_MOVE(21, MOVE_PIN_MISSILE), - LEVEL_UP_MOVE(25, MOVE_INGRAIN), - LEVEL_UP_MOVE(29, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(35, MOVE_SPIKES), - LEVEL_UP_MOVE(41, MOVE_NEEDLE_ARM), - LEVEL_UP_MOVE(47, MOVE_COTTON_SPORE), - LEVEL_UP_MOVE(53, MOVE_SANDSTORM), - -1 -}; - -const u16 gSnoruntLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(10, MOVE_BITE), - LEVEL_UP_MOVE(16, MOVE_ICY_WIND), - LEVEL_UP_MOVE(19, MOVE_HEADBUTT), - LEVEL_UP_MOVE(25, MOVE_PROTECT), - LEVEL_UP_MOVE(28, MOVE_CRUNCH), - LEVEL_UP_MOVE(34, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(37, MOVE_HAIL), - LEVEL_UP_MOVE(43, MOVE_BLIZZARD), - -1 -}; - -const u16 gGlalieLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 7, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(10, MOVE_BITE), - LEVEL_UP_MOVE(16, MOVE_ICY_WIND), - LEVEL_UP_MOVE(19, MOVE_HEADBUTT), - LEVEL_UP_MOVE(25, MOVE_PROTECT), - LEVEL_UP_MOVE(28, MOVE_CRUNCH), - LEVEL_UP_MOVE(34, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(42, MOVE_HAIL), - LEVEL_UP_MOVE(53, MOVE_BLIZZARD), - LEVEL_UP_MOVE(61, MOVE_SHEER_COLD), - -1 -}; - -const u16 gLunatoneLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_CONFUSION), - LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(19, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(25, MOVE_PSYWAVE), - LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(37, MOVE_PSYCHIC), - LEVEL_UP_MOVE(43, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(49, MOVE_EXPLOSION), - -1 -}; - -const u16 gSolrockLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_CONFUSION), - LEVEL_UP_MOVE(13, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(19, MOVE_FIRE_SPIN), - LEVEL_UP_MOVE(25, MOVE_PSYWAVE), - LEVEL_UP_MOVE(31, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(37, MOVE_ROCK_SLIDE), - LEVEL_UP_MOVE(43, MOVE_SOLAR_BEAM), - LEVEL_UP_MOVE(49, MOVE_EXPLOSION), - -1 -}; - -const u16 gAzurillLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 3, MOVE_CHARM), - LEVEL_UP_MOVE( 6, MOVE_TAIL_WHIP), - LEVEL_UP_MOVE(10, MOVE_BUBBLE), - LEVEL_UP_MOVE(15, MOVE_SLAM), - LEVEL_UP_MOVE(21, MOVE_WATER_GUN), - -1 -}; - -const u16 gSpoinkLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), - LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(16, MOVE_PSYBEAM), - LEVEL_UP_MOVE(19, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT), - LEVEL_UP_MOVE(34, MOVE_PSYCHIC), - LEVEL_UP_MOVE(37, MOVE_REST), - LEVEL_UP_MOVE(37, MOVE_SNORE), - LEVEL_UP_MOVE(43, MOVE_BOUNCE), - -1 -}; - -const u16 gGrumpigLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), - LEVEL_UP_MOVE( 1, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE( 1, MOVE_PSYBEAM), - LEVEL_UP_MOVE( 7, MOVE_PSYWAVE), - LEVEL_UP_MOVE(10, MOVE_ODOR_SLEUTH), - LEVEL_UP_MOVE(16, MOVE_PSYBEAM), - LEVEL_UP_MOVE(19, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(25, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(28, MOVE_MAGIC_COAT), - LEVEL_UP_MOVE(37, MOVE_PSYCHIC), - LEVEL_UP_MOVE(43, MOVE_REST), - LEVEL_UP_MOVE(43, MOVE_SNORE), - LEVEL_UP_MOVE(55, MOVE_BOUNCE), - -1 -}; - -const u16 gPlusleLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(19, MOVE_SPARK), - LEVEL_UP_MOVE(22, MOVE_ENCORE), - LEVEL_UP_MOVE(28, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE(31, MOVE_CHARGE), - LEVEL_UP_MOVE(37, MOVE_THUNDER), - LEVEL_UP_MOVE(40, MOVE_BATON_PASS), - LEVEL_UP_MOVE(47, MOVE_AGILITY), - -1 -}; - -const u16 gMinunLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 4, MOVE_THUNDER_WAVE), - LEVEL_UP_MOVE(10, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(13, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(19, MOVE_SPARK), - LEVEL_UP_MOVE(22, MOVE_ENCORE), - LEVEL_UP_MOVE(28, MOVE_CHARM), - LEVEL_UP_MOVE(31, MOVE_CHARGE), - LEVEL_UP_MOVE(37, MOVE_THUNDER), - LEVEL_UP_MOVE(40, MOVE_BATON_PASS), - LEVEL_UP_MOVE(47, MOVE_AGILITY), - -1 -}; - -const u16 gMawileLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 6, MOVE_FAKE_TEARS), - LEVEL_UP_MOVE(11, MOVE_BITE), - LEVEL_UP_MOVE(16, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(21, MOVE_VICE_GRIP), - LEVEL_UP_MOVE(26, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(31, MOVE_BATON_PASS), - LEVEL_UP_MOVE(36, MOVE_CRUNCH), - LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(46, MOVE_STOCKPILE), - LEVEL_UP_MOVE(46, MOVE_SWALLOW), - LEVEL_UP_MOVE(46, MOVE_SPIT_UP), - -1 -}; - -const u16 gMedititeLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BIDE), - LEVEL_UP_MOVE( 4, MOVE_MEDITATE), - LEVEL_UP_MOVE( 9, MOVE_CONFUSION), - LEVEL_UP_MOVE(12, MOVE_DETECT), - LEVEL_UP_MOVE(18, MOVE_HIDDEN_POWER), - LEVEL_UP_MOVE(22, MOVE_MIND_READER), - LEVEL_UP_MOVE(28, MOVE_CALM_MIND), - LEVEL_UP_MOVE(32, MOVE_HI_JUMP_KICK), - LEVEL_UP_MOVE(38, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(42, MOVE_REVERSAL), - LEVEL_UP_MOVE(48, MOVE_RECOVER), - -1 -}; - -const u16 gMedichamLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_FIRE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_THUNDER_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_ICE_PUNCH), - LEVEL_UP_MOVE( 1, MOVE_BIDE), - LEVEL_UP_MOVE( 1, MOVE_MEDITATE), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_DETECT), - LEVEL_UP_MOVE( 4, MOVE_MEDITATE), - LEVEL_UP_MOVE( 9, MOVE_CONFUSION), - LEVEL_UP_MOVE(12, MOVE_DETECT), - LEVEL_UP_MOVE(18, MOVE_HIDDEN_POWER), - LEVEL_UP_MOVE(22, MOVE_MIND_READER), - LEVEL_UP_MOVE(28, MOVE_CALM_MIND), - LEVEL_UP_MOVE(32, MOVE_HI_JUMP_KICK), - LEVEL_UP_MOVE(40, MOVE_PSYCH_UP), - LEVEL_UP_MOVE(46, MOVE_REVERSAL), - LEVEL_UP_MOVE(54, MOVE_RECOVER), - -1 -}; - -const u16 gSwabluLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 8, MOVE_ASTONISH), - LEVEL_UP_MOVE(11, MOVE_SING), - LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(21, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(28, MOVE_MIST), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(38, MOVE_MIRROR_MOVE), - LEVEL_UP_MOVE(41, MOVE_REFRESH), - LEVEL_UP_MOVE(48, MOVE_PERISH_SONG), - -1 -}; - -const u16 gAltariaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PECK), - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_SING), - LEVEL_UP_MOVE( 8, MOVE_ASTONISH), - LEVEL_UP_MOVE(11, MOVE_SING), - LEVEL_UP_MOVE(18, MOVE_FURY_ATTACK), - LEVEL_UP_MOVE(21, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(28, MOVE_MIST), - LEVEL_UP_MOVE(31, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(35, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(40, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(45, MOVE_REFRESH), - LEVEL_UP_MOVE(54, MOVE_PERISH_SONG), - LEVEL_UP_MOVE(59, MOVE_SKY_ATTACK), - -1 -}; - -const u16 gWynautLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SPLASH), - LEVEL_UP_MOVE( 1, MOVE_CHARM), - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE(15, MOVE_COUNTER), - LEVEL_UP_MOVE(15, MOVE_MIRROR_COAT), - LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(15, MOVE_DESTINY_BOND), - -1 -}; - -const u16 gDuskullLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE( 5, MOVE_DISABLE), - LEVEL_UP_MOVE(12, MOVE_FORESIGHT), - LEVEL_UP_MOVE(16, MOVE_ASTONISH), - LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(27, MOVE_PURSUIT), - LEVEL_UP_MOVE(34, MOVE_CURSE), - LEVEL_UP_MOVE(38, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(45, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(49, MOVE_FUTURE_SIGHT), - -1 -}; - -const u16 gDusclopsLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_BIND), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE( 1, MOVE_DISABLE), - LEVEL_UP_MOVE( 5, MOVE_DISABLE), - LEVEL_UP_MOVE(12, MOVE_FORESIGHT), - LEVEL_UP_MOVE(16, MOVE_ASTONISH), - LEVEL_UP_MOVE(23, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(27, MOVE_PURSUIT), - LEVEL_UP_MOVE(34, MOVE_CURSE), - LEVEL_UP_MOVE(37, MOVE_SHADOW_PUNCH), - LEVEL_UP_MOVE(41, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(51, MOVE_MEAN_LOOK), - LEVEL_UP_MOVE(58, MOVE_FUTURE_SIGHT), - -1 -}; - -const u16 gRoseliaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ABSORB), - LEVEL_UP_MOVE( 5, MOVE_GROWTH), - LEVEL_UP_MOVE( 9, MOVE_POISON_STING), - LEVEL_UP_MOVE(13, MOVE_STUN_SPORE), - LEVEL_UP_MOVE(17, MOVE_MEGA_DRAIN), - LEVEL_UP_MOVE(21, MOVE_LEECH_SEED), - LEVEL_UP_MOVE(25, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(29, MOVE_GRASS_WHISTLE), - LEVEL_UP_MOVE(33, MOVE_GIGA_DRAIN), - LEVEL_UP_MOVE(37, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(41, MOVE_INGRAIN), - LEVEL_UP_MOVE(45, MOVE_TOXIC), - LEVEL_UP_MOVE(49, MOVE_PETAL_DANCE), - LEVEL_UP_MOVE(53, MOVE_AROMATHERAPY), - LEVEL_UP_MOVE(57, MOVE_SYNTHESIS), - -1 -}; - -const u16 gSlakothLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), - LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_AMNESIA), - LEVEL_UP_MOVE(31, MOVE_COVET), - LEVEL_UP_MOVE(37, MOVE_COUNTER), - LEVEL_UP_MOVE(43, MOVE_FLAIL), - -1 -}; - -const u16 gVigorothLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 1, MOVE_UPROAR), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_UPROAR), - LEVEL_UP_MOVE(19, MOVE_FURY_SWIPES), - LEVEL_UP_MOVE(25, MOVE_ENDURE), - LEVEL_UP_MOVE(31, MOVE_SLASH), - LEVEL_UP_MOVE(37, MOVE_COUNTER), - LEVEL_UP_MOVE(43, MOVE_FOCUS_PUNCH), - LEVEL_UP_MOVE(49, MOVE_REVERSAL), - -1 -}; - -const u16 gSlakingLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 1, MOVE_ENCORE), - LEVEL_UP_MOVE( 1, MOVE_SLACK_OFF), - LEVEL_UP_MOVE( 7, MOVE_ENCORE), - LEVEL_UP_MOVE(13, MOVE_SLACK_OFF), - LEVEL_UP_MOVE(19, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(25, MOVE_AMNESIA), - LEVEL_UP_MOVE(31, MOVE_COVET), - LEVEL_UP_MOVE(36, MOVE_SWAGGER), - LEVEL_UP_MOVE(37, MOVE_COUNTER), - LEVEL_UP_MOVE(43, MOVE_FLAIL), - -1 -}; - -const u16 gGulpinLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 6, MOVE_YAWN), - LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), - LEVEL_UP_MOVE(14, MOVE_SLUDGE), - LEVEL_UP_MOVE(17, MOVE_AMNESIA), - LEVEL_UP_MOVE(23, MOVE_ENCORE), - LEVEL_UP_MOVE(28, MOVE_TOXIC), - LEVEL_UP_MOVE(34, MOVE_STOCKPILE), - LEVEL_UP_MOVE(34, MOVE_SPIT_UP), - LEVEL_UP_MOVE(34, MOVE_SWALLOW), - LEVEL_UP_MOVE(39, MOVE_SLUDGE_BOMB), - -1 -}; - -const u16 gSwalotLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_YAWN), - LEVEL_UP_MOVE( 1, MOVE_POISON_GAS), - LEVEL_UP_MOVE( 1, MOVE_SLUDGE), - LEVEL_UP_MOVE( 6, MOVE_YAWN), - LEVEL_UP_MOVE( 9, MOVE_POISON_GAS), - LEVEL_UP_MOVE(14, MOVE_SLUDGE), - LEVEL_UP_MOVE(17, MOVE_AMNESIA), - LEVEL_UP_MOVE(23, MOVE_ENCORE), - LEVEL_UP_MOVE(26, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(31, MOVE_TOXIC), - LEVEL_UP_MOVE(40, MOVE_STOCKPILE), - LEVEL_UP_MOVE(40, MOVE_SPIT_UP), - LEVEL_UP_MOVE(40, MOVE_SWALLOW), - LEVEL_UP_MOVE(48, MOVE_SLUDGE_BOMB), - -1 -}; - -const u16 gTropiusLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_GUST), - LEVEL_UP_MOVE( 7, MOVE_GROWTH), - LEVEL_UP_MOVE(11, MOVE_RAZOR_LEAF), - LEVEL_UP_MOVE(17, MOVE_STOMP), - LEVEL_UP_MOVE(21, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE(27, MOVE_WHIRLWIND), - LEVEL_UP_MOVE(31, MOVE_MAGICAL_LEAF), - LEVEL_UP_MOVE(37, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(41, MOVE_SOLAR_BEAM), - LEVEL_UP_MOVE(47, MOVE_SYNTHESIS), - -1 -}; - -const u16 gWhismurLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 5, MOVE_UPROAR), - LEVEL_UP_MOVE(11, MOVE_ASTONISH), - LEVEL_UP_MOVE(15, MOVE_HOWL), - LEVEL_UP_MOVE(21, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(25, MOVE_STOMP), - LEVEL_UP_MOVE(31, MOVE_SCREECH), - LEVEL_UP_MOVE(35, MOVE_ROAR), - LEVEL_UP_MOVE(41, MOVE_REST), - LEVEL_UP_MOVE(41, MOVE_SLEEP_TALK), - LEVEL_UP_MOVE(45, MOVE_HYPER_VOICE), - -1 -}; - -const u16 gLoudredLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_UPROAR), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_HOWL), - LEVEL_UP_MOVE( 5, MOVE_UPROAR), - LEVEL_UP_MOVE(11, MOVE_ASTONISH), - LEVEL_UP_MOVE(15, MOVE_HOWL), - LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(29, MOVE_STOMP), - LEVEL_UP_MOVE(37, MOVE_SCREECH), - LEVEL_UP_MOVE(43, MOVE_ROAR), - LEVEL_UP_MOVE(51, MOVE_REST), - LEVEL_UP_MOVE(51, MOVE_SLEEP_TALK), - LEVEL_UP_MOVE(57, MOVE_HYPER_VOICE), - -1 -}; - -const u16 gExploudLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_POUND), - LEVEL_UP_MOVE( 1, MOVE_UPROAR), - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_HOWL), - LEVEL_UP_MOVE( 5, MOVE_UPROAR), - LEVEL_UP_MOVE(11, MOVE_ASTONISH), - LEVEL_UP_MOVE(15, MOVE_HOWL), - LEVEL_UP_MOVE(23, MOVE_SUPERSONIC), - LEVEL_UP_MOVE(29, MOVE_STOMP), - LEVEL_UP_MOVE(37, MOVE_SCREECH), - LEVEL_UP_MOVE(40, MOVE_HYPER_BEAM), - LEVEL_UP_MOVE(45, MOVE_ROAR), - LEVEL_UP_MOVE(55, MOVE_REST), - LEVEL_UP_MOVE(55, MOVE_SLEEP_TALK), - LEVEL_UP_MOVE(63, MOVE_HYPER_VOICE), - -1 -}; - -const u16 gClamperlLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_CLAMP), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE( 1, MOVE_IRON_DEFENSE), - -1 -}; - -const u16 gHuntailLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE( 8, MOVE_BITE), - LEVEL_UP_MOVE(15, MOVE_SCREECH), - LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(29, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(36, MOVE_CRUNCH), - LEVEL_UP_MOVE(43, MOVE_BATON_PASS), - LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gGorebyssLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WHIRLPOOL), - LEVEL_UP_MOVE( 8, MOVE_CONFUSION), - LEVEL_UP_MOVE(15, MOVE_AGILITY), - LEVEL_UP_MOVE(22, MOVE_WATER_PULSE), - LEVEL_UP_MOVE(29, MOVE_AMNESIA), - LEVEL_UP_MOVE(36, MOVE_PSYCHIC), - LEVEL_UP_MOVE(43, MOVE_BATON_PASS), - LEVEL_UP_MOVE(50, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gAbsolLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 5, MOVE_LEER), - LEVEL_UP_MOVE( 9, MOVE_TAUNT), - LEVEL_UP_MOVE(13, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(17, MOVE_RAZOR_WIND), - LEVEL_UP_MOVE(21, MOVE_BITE), - LEVEL_UP_MOVE(26, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(31, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(36, MOVE_SLASH), - LEVEL_UP_MOVE(41, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(46, MOVE_PERISH_SONG), - -1 -}; - -const u16 gShuppetLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE( 8, MOVE_SCREECH), - LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(20, MOVE_CURSE), - LEVEL_UP_MOVE(25, MOVE_SPITE), - LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(37, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(44, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(49, MOVE_SNATCH), - LEVEL_UP_MOVE(56, MOVE_GRUDGE), - -1 -}; - -const u16 gBanetteLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE( 1, MOVE_SCREECH), - LEVEL_UP_MOVE( 1, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE( 1, MOVE_CURSE), - LEVEL_UP_MOVE( 8, MOVE_SCREECH), - LEVEL_UP_MOVE(13, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(20, MOVE_CURSE), - LEVEL_UP_MOVE(25, MOVE_SPITE), - LEVEL_UP_MOVE(32, MOVE_WILL_O_WISP), - LEVEL_UP_MOVE(39, MOVE_FAINT_ATTACK), - LEVEL_UP_MOVE(48, MOVE_SHADOW_BALL), - LEVEL_UP_MOVE(55, MOVE_SNATCH), - LEVEL_UP_MOVE(64, MOVE_GRUDGE), - -1 -}; - -const u16 gSeviperLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 7, MOVE_LICK), - LEVEL_UP_MOVE(10, MOVE_BITE), - LEVEL_UP_MOVE(16, MOVE_POISON_TAIL), - LEVEL_UP_MOVE(19, MOVE_SCREECH), - LEVEL_UP_MOVE(25, MOVE_GLARE), - LEVEL_UP_MOVE(28, MOVE_CRUNCH), - LEVEL_UP_MOVE(34, MOVE_POISON_FANG), - LEVEL_UP_MOVE(37, MOVE_SWAGGER), - LEVEL_UP_MOVE(43, MOVE_HAZE), - -1 -}; - -const u16 gZangooseLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 4, MOVE_LEER), - LEVEL_UP_MOVE( 7, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(10, MOVE_SWORDS_DANCE), - LEVEL_UP_MOVE(13, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(19, MOVE_SLASH), - LEVEL_UP_MOVE(25, MOVE_PURSUIT), - LEVEL_UP_MOVE(31, MOVE_CRUSH_CLAW), - LEVEL_UP_MOVE(37, MOVE_TAUNT), - LEVEL_UP_MOVE(46, MOVE_DETECT), - LEVEL_UP_MOVE(55, MOVE_FALSE_SWIPE), - -1 -}; - -const u16 gRelicanthLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 8, MOVE_WATER_GUN), - LEVEL_UP_MOVE(15, MOVE_ROCK_TOMB), - LEVEL_UP_MOVE(22, MOVE_YAWN), - LEVEL_UP_MOVE(29, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(36, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(50, MOVE_REST), - LEVEL_UP_MOVE(57, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(64, MOVE_HYDRO_PUMP), - -1 -}; - -const u16 gAronLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 4, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_HEADBUTT), - LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(21, MOVE_ROAR), - LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(34, MOVE_PROTECT), - LEVEL_UP_MOVE(39, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(44, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gLaironLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 4, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_HEADBUTT), - LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(21, MOVE_ROAR), - LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(37, MOVE_PROTECT), - LEVEL_UP_MOVE(45, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gAggronLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_MUD_SLAP), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 4, MOVE_HARDEN), - LEVEL_UP_MOVE( 7, MOVE_MUD_SLAP), - LEVEL_UP_MOVE(10, MOVE_HEADBUTT), - LEVEL_UP_MOVE(13, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(17, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(21, MOVE_ROAR), - LEVEL_UP_MOVE(25, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(29, MOVE_IRON_TAIL), - LEVEL_UP_MOVE(37, MOVE_PROTECT), - LEVEL_UP_MOVE(50, MOVE_METAL_SOUND), - LEVEL_UP_MOVE(63, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gCastformLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE(10, MOVE_WATER_GUN), - LEVEL_UP_MOVE(10, MOVE_EMBER), - LEVEL_UP_MOVE(10, MOVE_POWDER_SNOW), - LEVEL_UP_MOVE(20, MOVE_RAIN_DANCE), - LEVEL_UP_MOVE(20, MOVE_SUNNY_DAY), - LEVEL_UP_MOVE(20, MOVE_HAIL), - LEVEL_UP_MOVE(30, MOVE_WEATHER_BALL), - -1 -}; - -const u16 gVolbeatLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE( 9, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(21, MOVE_TAIL_GLOW), - LEVEL_UP_MOVE(25, MOVE_SIGNAL_BEAM), - LEVEL_UP_MOVE(29, MOVE_PROTECT), - LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(37, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gIllumiseLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TACKLE), - LEVEL_UP_MOVE( 5, MOVE_SWEET_SCENT), - LEVEL_UP_MOVE( 9, MOVE_CHARM), - LEVEL_UP_MOVE(13, MOVE_MOONLIGHT), - LEVEL_UP_MOVE(17, MOVE_QUICK_ATTACK), - LEVEL_UP_MOVE(21, MOVE_WISH), - LEVEL_UP_MOVE(25, MOVE_ENCORE), - LEVEL_UP_MOVE(29, MOVE_FLATTER), - LEVEL_UP_MOVE(33, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(37, MOVE_COVET), - -1 -}; - -const u16 gLileepLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), - LEVEL_UP_MOVE(15, MOVE_ACID), - LEVEL_UP_MOVE(22, MOVE_INGRAIN), - LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(36, MOVE_AMNESIA), - LEVEL_UP_MOVE(43, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(50, MOVE_STOCKPILE), - LEVEL_UP_MOVE(50, MOVE_SPIT_UP), - LEVEL_UP_MOVE(50, MOVE_SWALLOW), - -1 -}; - -const u16 gCradilyLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_ASTONISH), - LEVEL_UP_MOVE( 1, MOVE_CONSTRICT), - LEVEL_UP_MOVE( 1, MOVE_ACID), - LEVEL_UP_MOVE( 1, MOVE_INGRAIN), - LEVEL_UP_MOVE( 8, MOVE_CONSTRICT), - LEVEL_UP_MOVE(15, MOVE_ACID), - LEVEL_UP_MOVE(22, MOVE_INGRAIN), - LEVEL_UP_MOVE(29, MOVE_CONFUSE_RAY), - LEVEL_UP_MOVE(36, MOVE_AMNESIA), - LEVEL_UP_MOVE(48, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(60, MOVE_STOCKPILE), - LEVEL_UP_MOVE(60, MOVE_SPIT_UP), - LEVEL_UP_MOVE(60, MOVE_SWALLOW), - -1 -}; - -const u16 gAnorithLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - LEVEL_UP_MOVE(13, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(19, MOVE_WATER_GUN), - LEVEL_UP_MOVE(25, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(31, MOVE_PROTECT), - LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(43, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(49, MOVE_SLASH), - LEVEL_UP_MOVE(55, MOVE_ROCK_BLAST), - -1 -}; - -const u16 gArmaldoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_SCRATCH), - LEVEL_UP_MOVE( 1, MOVE_HARDEN), - LEVEL_UP_MOVE( 1, MOVE_MUD_SPORT), - LEVEL_UP_MOVE( 1, MOVE_WATER_GUN), - LEVEL_UP_MOVE( 7, MOVE_HARDEN), - LEVEL_UP_MOVE(13, MOVE_MUD_SPORT), - LEVEL_UP_MOVE(19, MOVE_WATER_GUN), - LEVEL_UP_MOVE(25, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(31, MOVE_PROTECT), - LEVEL_UP_MOVE(37, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(46, MOVE_FURY_CUTTER), - LEVEL_UP_MOVE(55, MOVE_SLASH), - LEVEL_UP_MOVE(64, MOVE_ROCK_BLAST), - -1 -}; - -const u16 gRaltsLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 6, MOVE_CONFUSION), - LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(16, MOVE_TELEPORT), - LEVEL_UP_MOVE(21, MOVE_CALM_MIND), - LEVEL_UP_MOVE(26, MOVE_PSYCHIC), - LEVEL_UP_MOVE(31, MOVE_IMPRISON), - LEVEL_UP_MOVE(36, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(41, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(46, MOVE_DREAM_EATER), - -1 -}; - -const u16 gKirliaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_TELEPORT), - LEVEL_UP_MOVE( 6, MOVE_CONFUSION), - LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(16, MOVE_TELEPORT), - LEVEL_UP_MOVE(21, MOVE_CALM_MIND), - LEVEL_UP_MOVE(26, MOVE_PSYCHIC), - LEVEL_UP_MOVE(33, MOVE_IMPRISON), - LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(47, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(54, MOVE_DREAM_EATER), - -1 -}; - -const u16 gGardevoirLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_GROWL), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE( 1, MOVE_TELEPORT), - LEVEL_UP_MOVE( 6, MOVE_CONFUSION), - LEVEL_UP_MOVE(11, MOVE_DOUBLE_TEAM), - LEVEL_UP_MOVE(16, MOVE_TELEPORT), - LEVEL_UP_MOVE(21, MOVE_CALM_MIND), - LEVEL_UP_MOVE(26, MOVE_PSYCHIC), - LEVEL_UP_MOVE(33, MOVE_IMPRISON), - LEVEL_UP_MOVE(42, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(51, MOVE_HYPNOSIS), - LEVEL_UP_MOVE(60, MOVE_DREAM_EATER), - -1 -}; - -const u16 gBagonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 5, MOVE_BITE), - LEVEL_UP_MOVE( 9, MOVE_LEER), - LEVEL_UP_MOVE(17, MOVE_HEADBUTT), - LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(25, MOVE_EMBER), - LEVEL_UP_MOVE(33, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(37, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(41, MOVE_CRUNCH), - LEVEL_UP_MOVE(49, MOVE_DRAGON_CLAW), - LEVEL_UP_MOVE(53, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gShelgonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 5, MOVE_BITE), - LEVEL_UP_MOVE( 9, MOVE_LEER), - LEVEL_UP_MOVE(17, MOVE_HEADBUTT), - LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(25, MOVE_EMBER), - LEVEL_UP_MOVE(30, MOVE_PROTECT), - LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(47, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(56, MOVE_CRUNCH), - LEVEL_UP_MOVE(69, MOVE_DRAGON_CLAW), - LEVEL_UP_MOVE(78, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gSalamenceLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_RAGE), - LEVEL_UP_MOVE( 1, MOVE_BITE), - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_HEADBUTT), - LEVEL_UP_MOVE( 5, MOVE_BITE), - LEVEL_UP_MOVE( 9, MOVE_LEER), - LEVEL_UP_MOVE(17, MOVE_HEADBUTT), - LEVEL_UP_MOVE(21, MOVE_FOCUS_ENERGY), - LEVEL_UP_MOVE(25, MOVE_EMBER), - LEVEL_UP_MOVE(30, MOVE_PROTECT), - LEVEL_UP_MOVE(38, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(47, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(50, MOVE_FLY), - LEVEL_UP_MOVE(61, MOVE_CRUNCH), - LEVEL_UP_MOVE(79, MOVE_DRAGON_CLAW), - LEVEL_UP_MOVE(93, MOVE_DOUBLE_EDGE), - -1 -}; - -const u16 gBeldumLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), - -1 -}; - -const u16 gMetangLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(20, MOVE_CONFUSION), - LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(26, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(32, MOVE_PURSUIT), - LEVEL_UP_MOVE(38, MOVE_PSYCHIC), - LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(50, MOVE_METEOR_MASH), - LEVEL_UP_MOVE(56, MOVE_AGILITY), - LEVEL_UP_MOVE(62, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gMetagrossLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 1, MOVE_METAL_CLAW), - LEVEL_UP_MOVE( 1, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(20, MOVE_CONFUSION), - LEVEL_UP_MOVE(20, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(26, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(32, MOVE_PURSUIT), - LEVEL_UP_MOVE(38, MOVE_PSYCHIC), - LEVEL_UP_MOVE(44, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(55, MOVE_METEOR_MASH), - LEVEL_UP_MOVE(66, MOVE_AGILITY), - LEVEL_UP_MOVE(77, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gRegirockLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), - LEVEL_UP_MOVE( 9, MOVE_ROCK_THROW), - LEVEL_UP_MOVE(17, MOVE_CURSE), - LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(57, MOVE_LOCK_ON), - LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gRegiceLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), - LEVEL_UP_MOVE( 9, MOVE_ICY_WIND), - LEVEL_UP_MOVE(17, MOVE_CURSE), - LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(41, MOVE_AMNESIA), - LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(57, MOVE_LOCK_ON), - LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gRegisteelLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_EXPLOSION), - LEVEL_UP_MOVE( 9, MOVE_METAL_CLAW), - LEVEL_UP_MOVE(17, MOVE_CURSE), - LEVEL_UP_MOVE(25, MOVE_SUPERPOWER), - LEVEL_UP_MOVE(33, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(41, MOVE_IRON_DEFENSE), - LEVEL_UP_MOVE(41, MOVE_AMNESIA), - LEVEL_UP_MOVE(49, MOVE_ZAP_CANNON), - LEVEL_UP_MOVE(57, MOVE_LOCK_ON), - LEVEL_UP_MOVE(65, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gKyogreLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WATER_PULSE), - LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(20, MOVE_BODY_SLAM), - LEVEL_UP_MOVE(30, MOVE_CALM_MIND), - LEVEL_UP_MOVE(35, MOVE_ICE_BEAM), - LEVEL_UP_MOVE(45, MOVE_HYDRO_PUMP), - LEVEL_UP_MOVE(50, MOVE_REST), - LEVEL_UP_MOVE(60, MOVE_SHEER_COLD), - LEVEL_UP_MOVE(65, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(75, MOVE_WATER_SPOUT), - -1 -}; - -const u16 gGroudonLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_MUD_SHOT), - LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(20, MOVE_SLASH), - LEVEL_UP_MOVE(30, MOVE_BULK_UP), - LEVEL_UP_MOVE(35, MOVE_EARTHQUAKE), - LEVEL_UP_MOVE(45, MOVE_FIRE_BLAST), - LEVEL_UP_MOVE(50, MOVE_REST), - LEVEL_UP_MOVE(60, MOVE_FISSURE), - LEVEL_UP_MOVE(65, MOVE_SOLAR_BEAM), - LEVEL_UP_MOVE(75, MOVE_ERUPTION), - -1 -}; - -const u16 gRayquazaLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_TWISTER), - LEVEL_UP_MOVE( 5, MOVE_SCARY_FACE), - LEVEL_UP_MOVE(15, MOVE_ANCIENT_POWER), - LEVEL_UP_MOVE(20, MOVE_DRAGON_CLAW), - LEVEL_UP_MOVE(30, MOVE_DRAGON_DANCE), - LEVEL_UP_MOVE(35, MOVE_CRUNCH), - LEVEL_UP_MOVE(45, MOVE_FLY), - LEVEL_UP_MOVE(50, MOVE_REST), - LEVEL_UP_MOVE(60, MOVE_EXTREME_SPEED), - LEVEL_UP_MOVE(65, MOVE_OUTRAGE), - LEVEL_UP_MOVE(75, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gLatiasLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), - LEVEL_UP_MOVE( 5, MOVE_WISH), - LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(25, MOVE_WATER_SPORT), - LEVEL_UP_MOVE(30, MOVE_REFRESH), - LEVEL_UP_MOVE(35, MOVE_MIST_BALL), - LEVEL_UP_MOVE(40, MOVE_PSYCHIC), - LEVEL_UP_MOVE(45, MOVE_RECOVER), - LEVEL_UP_MOVE(50, MOVE_CHARM), - -1 -}; - -const u16 gLatiosLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_PSYWAVE), - LEVEL_UP_MOVE( 5, MOVE_MEMENTO), - LEVEL_UP_MOVE(10, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(15, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(20, MOVE_DRAGON_BREATH), - LEVEL_UP_MOVE(25, MOVE_PROTECT), - LEVEL_UP_MOVE(30, MOVE_REFRESH), - LEVEL_UP_MOVE(35, MOVE_LUSTER_PURGE), - LEVEL_UP_MOVE(40, MOVE_PSYCHIC), - LEVEL_UP_MOVE(45, MOVE_RECOVER), - LEVEL_UP_MOVE(50, MOVE_DRAGON_DANCE), - -1 -}; - -const u16 gJirachiLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WISH), - LEVEL_UP_MOVE( 1, MOVE_CONFUSION), - LEVEL_UP_MOVE( 5, MOVE_REST), - LEVEL_UP_MOVE(10, MOVE_SWIFT), - LEVEL_UP_MOVE(15, MOVE_HELPING_HAND), - LEVEL_UP_MOVE(20, MOVE_PSYCHIC), - LEVEL_UP_MOVE(25, MOVE_REFRESH), - LEVEL_UP_MOVE(30, MOVE_REST), - LEVEL_UP_MOVE(35, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(40, MOVE_FUTURE_SIGHT), - LEVEL_UP_MOVE(45, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(50, MOVE_DOOM_DESIRE), - -1 -}; - -const u16 gDeoxysLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_LEER), - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 5, MOVE_NIGHT_SHADE), - LEVEL_UP_MOVE(10, MOVE_TELEPORT), - LEVEL_UP_MOVE(15, MOVE_KNOCK_OFF), - LEVEL_UP_MOVE(20, MOVE_PURSUIT), - LEVEL_UP_MOVE(25, MOVE_PSYCHIC), - LEVEL_UP_MOVE(30, MOVE_SNATCH), - LEVEL_UP_MOVE(35, MOVE_COSMIC_POWER), - LEVEL_UP_MOVE(40, MOVE_RECOVER), - LEVEL_UP_MOVE(45, MOVE_PSYCHO_BOOST), - LEVEL_UP_MOVE(50, MOVE_HYPER_BEAM), - -1 -}; - -const u16 gChimechoLevelUpLearnset[] = { - LEVEL_UP_MOVE( 1, MOVE_WRAP), - LEVEL_UP_MOVE( 6, MOVE_GROWL), - LEVEL_UP_MOVE( 9, MOVE_ASTONISH), - LEVEL_UP_MOVE(14, MOVE_CONFUSION), - LEVEL_UP_MOVE(17, MOVE_TAKE_DOWN), - LEVEL_UP_MOVE(22, MOVE_UPROAR), - LEVEL_UP_MOVE(25, MOVE_YAWN), - LEVEL_UP_MOVE(30, MOVE_PSYWAVE), - LEVEL_UP_MOVE(33, MOVE_DOUBLE_EDGE), - LEVEL_UP_MOVE(38, MOVE_HEAL_BELL), - LEVEL_UP_MOVE(41, MOVE_SAFEGUARD), - LEVEL_UP_MOVE(46, MOVE_PSYCHIC), - -1 -}; - -const struct EvolutionData gEvolutionTable[] = { - { // ?????????? - }, {{ // Bulbasaur - {EVO_LEVEL, 16, SPECIES_IVYSAUR}, - }}, {{ // Ivysaur - {EVO_LEVEL, 32, SPECIES_VENUSAUR}, - }}, { // Venusaur - }, {{ // Charmander - {EVO_LEVEL, 16, SPECIES_CHARMELEON}, - }}, {{ // Charmeleon - {EVO_LEVEL, 36, SPECIES_CHARIZARD}, - }}, { // Charizard - }, {{ // Squirtle - {EVO_LEVEL, 16, SPECIES_WARTORTLE}, - }}, {{ // Wartortle - {EVO_LEVEL, 36, SPECIES_BLASTOISE}, - }}, { // Blastoise - }, {{ // Caterpie - {EVO_LEVEL, 7, SPECIES_METAPOD}, - }}, {{ // Metapod - {EVO_LEVEL, 10, SPECIES_BUTTERFREE}, - }}, { // Butterfree - }, {{ // Weedle - {EVO_LEVEL, 7, SPECIES_KAKUNA}, - }}, {{ // Kakuna - {EVO_LEVEL, 10, SPECIES_BEEDRILL}, - }}, { // Beedrill - }, {{ // Pidgey - {EVO_LEVEL, 18, SPECIES_PIDGEOTTO}, - }}, {{ // Pidgeotto - {EVO_LEVEL, 36, SPECIES_PIDGEOT}, - }}, { // Pidgeot - }, {{ // Rattata - {EVO_LEVEL, 20, SPECIES_RATICATE}, - }}, { // Raticate - }, {{ // Spearow - {EVO_LEVEL, 20, SPECIES_FEAROW}, - }}, { // Fearow - }, {{ // Ekans - {EVO_LEVEL, 22, SPECIES_ARBOK}, - }}, { // Arbok - }, {{ // Pikachu - {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}, - }}, { // Raichu - }, {{ // Sandshrew - {EVO_LEVEL, 22, SPECIES_SANDSLASH}, - }}, { // Sandslash - }, {{ // Nidoran♀ - {EVO_LEVEL, 16, SPECIES_NIDORINA}, - }}, {{ // Nidorina - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}, - }}, { // Nidoqueen - }, {{ // Nidoran♂ - {EVO_LEVEL, 16, SPECIES_NIDORINO}, - }}, {{ // Nidorino - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}, - }}, { // Nidoking - }, {{ // Clefairy - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}, - }}, { // Clefable - }, {{ // Vulpix - {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}, - }}, { // Ninetales - }, {{ // Jigglypuff - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}, - }}, { // Wigglytuff - }, {{ // Zubat - {EVO_LEVEL, 22, SPECIES_GOLBAT}, - }}, {{ // Golbat - {EVO_FRIENDSHIP, 0, SPECIES_CROBAT}, - }}, {{ // Oddish - {EVO_LEVEL, 21, SPECIES_GLOOM}, - }}, {{ // Gloom - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, - {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}, - }}, { // Vileplume - }, {{ // Paras - {EVO_LEVEL, 24, SPECIES_PARASECT}, - }}, { // Parasect - }, {{ // Venonat - {EVO_LEVEL, 31, SPECIES_VENOMOTH}, - }}, { // Venomoth - }, {{ // Diglett - {EVO_LEVEL, 26, SPECIES_DUGTRIO}, - }}, { // Dugtrio - }, {{ // Meowth - {EVO_LEVEL, 28, SPECIES_PERSIAN}, - }}, { // Persian - }, {{ // Psyduck - {EVO_LEVEL, 33, SPECIES_GOLDUCK}, - }}, { // Golduck - }, {{ // Mankey - {EVO_LEVEL, 28, SPECIES_PRIMEAPE}, - }}, { // Primeape - }, {{ // Growlithe - {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}, - }}, { // Arcanine - }, {{ // Poliwag - {EVO_LEVEL, 25, SPECIES_POLIWHIRL}, - }}, {{ // Poliwhirl - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, - }}, { // Poliwrath - }, {{ // Abra - {EVO_LEVEL, 16, SPECIES_KADABRA}, - }}, {{ // Kadabra - {EVO_TRADE, 0, SPECIES_ALAKAZAM}, - }}, { // Alakazam - }, {{ // Machop - {EVO_LEVEL, 28, SPECIES_MACHOKE}, - }}, {{ // Machoke - {EVO_TRADE, 0, SPECIES_MACHAMP}, - }}, { // Machamp - }, {{ // Bellsprout - {EVO_LEVEL, 21, SPECIES_WEEPINBELL}, - }}, {{ // Weepinbell - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}, - }}, { // Victreebel - }, {{ // Tentacool - {EVO_LEVEL, 30, SPECIES_TENTACRUEL}, - }}, { // Tentacruel - }, {{ // Geodude - {EVO_LEVEL, 25, SPECIES_GRAVELER}, - }}, {{ // Graveler - {EVO_TRADE, 0, SPECIES_GOLEM}, - }}, { // Golem - }, {{ // Ponyta - {EVO_LEVEL, 40, SPECIES_RAPIDASH}, - }}, { // Rapidash - }, {{ // Slowpoke - {EVO_LEVEL, 37, SPECIES_SLOWBRO}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, - }}, { // Slowbro - }, {{ // Magnemite - {EVO_LEVEL, 30, SPECIES_MAGNETON}, - }}, { // Magneton - }, { // Farfetch'd - }, {{ // Doduo - {EVO_LEVEL, 31, SPECIES_DODRIO}, - }}, { // Dodrio - }, {{ // Seel - {EVO_LEVEL, 34, SPECIES_DEWGONG}, - }}, { // Dewgong - }, {{ // Grimer - {EVO_LEVEL, 38, SPECIES_MUK}, - }}, { // Muk - }, {{ // Shellder - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}, - }}, { // Cloyster - }, {{ // Gastly - {EVO_LEVEL, 25, SPECIES_HAUNTER}, - }}, {{ // Haunter - {EVO_TRADE, 0, SPECIES_GENGAR}, - }}, { // Gengar - }, {{ // Onix - {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, - }}, {{ // Drowzee - {EVO_LEVEL, 26, SPECIES_HYPNO}, - }}, { // Hypno - }, {{ // Krabby - {EVO_LEVEL, 28, SPECIES_KINGLER}, - }}, { // Kingler - }, {{ // Voltorb - {EVO_LEVEL, 30, SPECIES_ELECTRODE}, - }}, { // Electrode - }, {{ // Exeggcute - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, - }}, { // Exeggutor - }, {{ // Cubone - {EVO_LEVEL, 28, SPECIES_MAROWAK}, - }}, { // Marowak - }, { // Hitmonlee - }, { // Hitmonchan - }, { // Lickitung - }, {{ // Koffing - {EVO_LEVEL, 35, SPECIES_WEEZING}, - }}, { // Weezing - }, {{ // Rhyhorn - {EVO_LEVEL, 42, SPECIES_RHYDON}, - }}, { // Rhydon - }, {{ // Chansey - {EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}, - }}, { // Tangela - }, { // Kangaskhan - }, {{ // Horsea - {EVO_LEVEL, 32, SPECIES_SEADRA}, - }}, {{ // Seadra - {EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, - }}, {{ // Goldeen - {EVO_LEVEL, 33, SPECIES_SEAKING}, - }}, { // Seaking - }, {{ // Staryu - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}, - }}, { // Starmie - }, { // Mr. mime - }, {{ // Scyther - {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, - }}, { // Jynx - }, { // Electabuzz - }, { // Magmar - }, { // Pinsir - }, { // Tauros - }, {{ // Magikarp - {EVO_LEVEL, 20, SPECIES_GYARADOS}, - }}, { // Gyarados - }, { // Lapras - }, { // Ditto - }, {{ // Eevee - {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, - {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, - {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, - {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}, - }}, { // Vaporeon - }, { // Jolteon - }, { // Flareon - }, {{ // Porygon - {EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}, - }}, {{ // Omanyte - {EVO_LEVEL, 40, SPECIES_OMASTAR}, - }}, { // Omastar - }, {{ // Kabuto - {EVO_LEVEL, 40, SPECIES_KABUTOPS}, - }}, { // Kabutops - }, { // Aerodactyl - }, { // Snorlax - }, { // Articuno - }, { // Zapdos - }, { // Moltres - }, {{ // Dratini - {EVO_LEVEL, 30, SPECIES_DRAGONAIR}, - }}, {{ // Dragonair - {EVO_LEVEL, 55, SPECIES_DRAGONITE}, - }}, { // Dragonite - }, { // Mewtwo - }, { // Mew - }, {{ // Chikorita - {EVO_LEVEL, 16, SPECIES_BAYLEEF}, - }}, {{ // Bayleef - {EVO_LEVEL, 32, SPECIES_MEGANIUM}, - }}, { // Meganium - }, {{ // Cyndaquil - {EVO_LEVEL, 14, SPECIES_QUILAVA}, - }}, {{ // Quilava - {EVO_LEVEL, 36, SPECIES_TYPHLOSION}, - }}, { // Typhlosion - }, {{ // Totodile - {EVO_LEVEL, 18, SPECIES_CROCONAW}, - }}, {{ // Croconaw - {EVO_LEVEL, 30, SPECIES_FERALIGATR}, - }}, { // Feraligatr - }, {{ // Sentret - {EVO_LEVEL, 15, SPECIES_FURRET}, - }}, { // Furret - }, {{ // Hoothoot - {EVO_LEVEL, 20, SPECIES_NOCTOWL}, - }}, { // Noctowl - }, {{ // Ledyba - {EVO_LEVEL, 18, SPECIES_LEDIAN}, - }}, { // Ledian - }, {{ // Spinarak - {EVO_LEVEL, 22, SPECIES_ARIADOS}, - }}, { // Ariados - }, { // Crobat - }, {{ // Chinchou - {EVO_LEVEL, 27, SPECIES_LANTURN}, - }}, { // Lanturn - }, {{ // Pichu - {EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}, - }}, {{ // Cleffa - {EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}, - }}, {{ // Igglybuff - {EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}, - }}, {{ // Togepi - {EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}, - }}, { // Togetic - }, {{ // Natu - {EVO_LEVEL, 25, SPECIES_XATU}, - }}, { // Xatu - }, {{ // Mareep - {EVO_LEVEL, 15, SPECIES_FLAAFFY}, - }}, {{ // Flaaffy - {EVO_LEVEL, 30, SPECIES_AMPHAROS}, - }}, { // Ampharos - }, { // Bellossom - }, {{ // Marill - {EVO_LEVEL, 18, SPECIES_AZUMARILL}, - }}, { // Azumarill - }, { // Sudowoodo - }, { // Politoed - }, {{ // Hoppip - {EVO_LEVEL, 18, SPECIES_SKIPLOOM}, - }}, {{ // Skiploom - {EVO_LEVEL, 27, SPECIES_JUMPLUFF}, - }}, { // Jumpluff - }, { // Aipom - }, {{ // Sunkern - {EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}, - }}, { // Sunflora - }, { // Yanma - }, {{ // Wooper - {EVO_LEVEL, 20, SPECIES_QUAGSIRE}, - }}, { // Quagsire - }, { // Espeon - }, { // Umbreon - }, { // Murkrow - }, { // Slowking - }, { // Misdreavus - }, { // Unown - }, { // Wobbuffet - }, { // Girafarig - }, {{ // Pineco - {EVO_LEVEL, 31, SPECIES_FORRETRESS}, - }}, { // Forretress - }, { // Dunsparce - }, { // Gligar - }, { // Steelix - }, {{ // Snubbull - {EVO_LEVEL, 23, SPECIES_GRANBULL}, - }}, { // Granbull - }, { // Qwilfish - }, { // Scizor - }, { // Shuckle - }, { // Heracross - }, { // Sneasel - }, {{ // Teddiursa - {EVO_LEVEL, 30, SPECIES_URSARING}, - }}, { // Ursaring - }, {{ // Slugma - {EVO_LEVEL, 38, SPECIES_MAGCARGO}, - }}, { // Magcargo - }, {{ // Swinub - {EVO_LEVEL, 33, SPECIES_PILOSWINE}, - }}, { // Piloswine - }, { // Corsola - }, {{ // Remoraid - {EVO_LEVEL, 25, SPECIES_OCTILLERY}, - }}, { // Octillery - }, { // Delibird - }, { // Mantine - }, { // Skarmory - }, {{ // Houndour - {EVO_LEVEL, 24, SPECIES_HOUNDOOM}, - }}, { // Houndoom - }, { // Kingdra - }, {{ // Phanpy - {EVO_LEVEL, 25, SPECIES_DONPHAN}, - }}, { // Donphan - }, { // Porygon2 - }, { // Stantler - }, { // Smeargle - }, {{ // Tyrogue - {EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, - {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, - {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}, - }}, { // Hitmontop - }, {{ // Smoochum - {EVO_LEVEL, 30, SPECIES_JYNX}, - }}, {{ // Elekid - {EVO_LEVEL, 30, SPECIES_ELECTABUZZ}, - }}, {{ // Magby - {EVO_LEVEL, 30, SPECIES_MAGMAR}, - }}, { // Miltank - }, { // Blissey - }, { // Raikou - }, { // Entei - }, { // Suicune - }, {{ // Larvitar - {EVO_LEVEL, 30, SPECIES_PUPITAR}, - }}, {{ // Pupitar - {EVO_LEVEL, 55, SPECIES_TYRANITAR}, - }}, { // Tyranitar - }, { // Lugia - }, { // Ho-Oh - }, { // Celebi - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, {{ // Treecko - {EVO_LEVEL, 16, SPECIES_GROVYLE}, - }}, {{ // Grovyle - {EVO_LEVEL, 36, SPECIES_SCEPTILE}, - }}, { // Sceptile - }, {{ // Torchic - {EVO_LEVEL, 16, SPECIES_COMBUSKEN}, - }}, {{ // Combusken - {EVO_LEVEL, 36, SPECIES_BLAZIKEN}, - }}, { // Blaziken - }, {{ // Mudkip - {EVO_LEVEL, 16, SPECIES_MARSHTOMP}, - }}, {{ // Marshtomp - {EVO_LEVEL, 36, SPECIES_SWAMPERT}, - }}, { // Swampert - }, {{ // Poochyena - {EVO_LEVEL, 18, SPECIES_MIGHTYENA}, - }}, { // Mightyena - }, {{ // Zigzagoon - {EVO_LEVEL, 20, SPECIES_LINOONE}, - }}, { // Linoone - }, {{ // Wurmple - {EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, - {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}, - }}, {{ // Silcoon - {EVO_LEVEL, 10, SPECIES_BEAUTIFLY}, - }}, { // Beautifly - }, {{ // Cascoon - {EVO_LEVEL, 10, SPECIES_DUSTOX}, - }}, { // Dustox - }, {{ // Lotad - {EVO_LEVEL, 14, SPECIES_LOMBRE}, - }}, {{ // Lombre - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}, - }}, { // Ludicolo - }, {{ // Seedot - {EVO_LEVEL, 14, SPECIES_NUZLEAF}, - }}, {{ // Nuzleaf - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}, - }}, { // Shiftry - }, {{ // Nincada - {EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, - {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}, - }}, { // Ninjask - }, { // Shedinja - }, {{ // Taillow - {EVO_LEVEL, 22, SPECIES_SWELLOW}, - }}, { // Swellow - }, {{ // Shroomish - {EVO_LEVEL, 23, SPECIES_BRELOOM}, - }}, { // Breloom - }, { // Spinda - }, {{ // Wingull - {EVO_LEVEL, 25, SPECIES_PELIPPER}, - }}, { // Pelipper - }, {{ // Surskit - {EVO_LEVEL, 22, SPECIES_MASQUERAIN}, - }}, { // Masquerain - }, {{ // Wailmer - {EVO_LEVEL, 40, SPECIES_WAILORD}, - }}, { // Wailord - }, {{ // Skitty - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}, - }}, { // Delcatty - }, { // Kecleon - }, {{ // Baltoy - {EVO_LEVEL, 36, SPECIES_CLAYDOL}, - }}, { // Claydol - }, { // Nosepass - }, { // Torkoal - }, { // Sableye - }, {{ // Barboach - {EVO_LEVEL, 30, SPECIES_WHISCASH}, - }}, { // Whiscash - }, { // Luvdisc - }, {{ // Corphish - {EVO_LEVEL, 30, SPECIES_CRAWDAUNT}, - }}, { // Crawdaunt - }, {{ // Feebas - {EVO_BEAUTY, 170, SPECIES_MILOTIC}, - }}, { // Milotic - }, {{ // Carvanha - {EVO_LEVEL, 30, SPECIES_SHARPEDO}, - }}, { // Sharpedo - }, {{ // Trapinch - {EVO_LEVEL, 35, SPECIES_VIBRAVA}, - }}, {{ // Vibrava - {EVO_LEVEL, 45, SPECIES_FLYGON}, - }}, { // Flygon - }, {{ // Makuhita - {EVO_LEVEL, 24, SPECIES_HARIYAMA}, - }}, { // Hariyama - }, {{ // Electrike - {EVO_LEVEL, 26, SPECIES_MANECTRIC}, - }}, { // Manectric - }, {{ // Numel - {EVO_LEVEL, 33, SPECIES_CAMERUPT}, - }}, { // Camerupt - }, {{ // Spheal - {EVO_LEVEL, 32, SPECIES_SEALEO}, - }}, {{ // Sealeo - {EVO_LEVEL, 44, SPECIES_WALREIN}, - }}, { // Walrein - }, {{ // Cacnea - {EVO_LEVEL, 32, SPECIES_CACTURNE}, - }}, { // Cacturne - }, {{ // Snorunt - {EVO_LEVEL, 42, SPECIES_GLALIE}, - }}, { // Glalie - }, { // Lunatone - }, { // Solrock - }, {{ // Azurill - {EVO_FRIENDSHIP, 0, SPECIES_MARILL}, - }}, {{ // Spoink - {EVO_LEVEL, 32, SPECIES_GRUMPIG}, - }}, { // Grumpig - }, { // Plusle - }, { // Minun - }, { // Mawile - }, {{ // Meditite - {EVO_LEVEL, 37, SPECIES_MEDICHAM}, - }}, { // Medicham - }, {{ // Swablu - {EVO_LEVEL, 35, SPECIES_ALTARIA}, - }}, { // Altaria - }, {{ // Wynaut - {EVO_LEVEL, 15, SPECIES_WOBBUFFET}, - }}, {{ // Duskull - {EVO_LEVEL, 37, SPECIES_DUSCLOPS}, - }}, { // Dusclops - }, { // Roselia - }, {{ // Slakoth - {EVO_LEVEL, 18, SPECIES_VIGOROTH}, - }}, {{ // Vigoroth - {EVO_LEVEL, 36, SPECIES_SLAKING}, - }}, { // Slaking - }, {{ // Gulpin - {EVO_LEVEL, 26, SPECIES_SWALOT}, - }}, { // Swalot - }, { // Tropius - }, {{ // Whismur - {EVO_LEVEL, 20, SPECIES_LOUDRED}, - }}, {{ // Loudred - {EVO_LEVEL, 40, SPECIES_EXPLOUD}, - }}, { // Exploud - }, {{ // Clamperl - {EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, - {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, - }}, { // Huntail - }, { // Gorebyss - }, { // Absol - }, {{ // Shuppet - {EVO_LEVEL, 37, SPECIES_BANETTE}, - }}, { // Banette - }, { // Seviper - }, { // Zangoose - }, { // Relicanth - }, {{ // Aron - {EVO_LEVEL, 32, SPECIES_LAIRON}, - }}, {{ // Lairon - {EVO_LEVEL, 42, SPECIES_AGGRON}, - }}, { // Aggron - }, { // Castform - }, { // Volbeat - }, { // Illumise - }, {{ // Lileep - {EVO_LEVEL, 40, SPECIES_CRADILY}, - }}, { // Cradily - }, {{ // Anorith - {EVO_LEVEL, 40, SPECIES_ARMALDO}, - }}, { // Armaldo - }, {{ // Ralts - {EVO_LEVEL, 20, SPECIES_KIRLIA}, - }}, {{ // Kirlia - {EVO_LEVEL, 30, SPECIES_GARDEVOIR}, - }}, { // Gardevoir - }, {{ // Bagon - {EVO_LEVEL, 30, SPECIES_SHELGON}, - }}, {{ // Shelgon - {EVO_LEVEL, 50, SPECIES_SALAMENCE}, - }}, { // Salamence - }, {{ // Beldum - {EVO_LEVEL, 20, SPECIES_METANG}, - }}, {{ // Metang - {EVO_LEVEL, 45, SPECIES_METAGROSS}, - }}, { // Metagross - }, { // Regirock - }, { // Regice - }, { // Registeel - }, { // Kyogre - }, { // Groudon - }, { // Rayquaza - }, { // Latias - }, { // Latios - }, { // Jirachi - }, { // Deoxys - }, { // Chimecho - } -}; - -const u16 *const gLevelUpLearnsets[] = { - gBulbasaurLevelUpLearnset, - gBulbasaurLevelUpLearnset, - gIvysaurLevelUpLearnset, - gVenusaurLevelUpLearnset, - gCharmanderLevelUpLearnset, - gCharmeleonLevelUpLearnset, - gCharizardLevelUpLearnset, - gSquirtleLevelUpLearnset, - gWartortleLevelUpLearnset, - gBlastoiseLevelUpLearnset, - gCaterpieLevelUpLearnset, - gMetapodLevelUpLearnset, - gButterfreeLevelUpLearnset, - gWeedleLevelUpLearnset, - gKakunaLevelUpLearnset, - gBeedrillLevelUpLearnset, - gPidgeyLevelUpLearnset, - gPidgeottoLevelUpLearnset, - gPidgeotLevelUpLearnset, - gRattataLevelUpLearnset, - gRaticateLevelUpLearnset, - gSpearowLevelUpLearnset, - gFearowLevelUpLearnset, - gEkansLevelUpLearnset, - gArbokLevelUpLearnset, - gPikachuLevelUpLearnset, - gRaichuLevelUpLearnset, - gSandshrewLevelUpLearnset, - gSandslashLevelUpLearnset, - gNidoranFLevelUpLearnset, - gNidorinaLevelUpLearnset, - gNidoqueenLevelUpLearnset, - gNidoranMLevelUpLearnset, - gNidorinoLevelUpLearnset, - gNidokingLevelUpLearnset, - gClefairyLevelUpLearnset, - gClefableLevelUpLearnset, - gVulpixLevelUpLearnset, - gNinetalesLevelUpLearnset, - gJigglypuffLevelUpLearnset, - gWigglytuffLevelUpLearnset, - gZubatLevelUpLearnset, - gGolbatLevelUpLearnset, - gOddishLevelUpLearnset, - gGloomLevelUpLearnset, - gVileplumeLevelUpLearnset, - gParasLevelUpLearnset, - gParasectLevelUpLearnset, - gVenonatLevelUpLearnset, - gVenomothLevelUpLearnset, - gDiglettLevelUpLearnset, - gDugtrioLevelUpLearnset, - gMeowthLevelUpLearnset, - gPersianLevelUpLearnset, - gPsyduckLevelUpLearnset, - gGolduckLevelUpLearnset, - gMankeyLevelUpLearnset, - gPrimeapeLevelUpLearnset, - gGrowlitheLevelUpLearnset, - gArcanineLevelUpLearnset, - gPoliwagLevelUpLearnset, - gPoliwhirlLevelUpLearnset, - gPoliwrathLevelUpLearnset, - gAbraLevelUpLearnset, - gKadabraLevelUpLearnset, - gAlakazamLevelUpLearnset, - gMachopLevelUpLearnset, - gMachokeLevelUpLearnset, - gMachampLevelUpLearnset, - gBellsproutLevelUpLearnset, - gWeepinbellLevelUpLearnset, - gVictreebelLevelUpLearnset, - gTentacoolLevelUpLearnset, - gTentacruelLevelUpLearnset, - gGeodudeLevelUpLearnset, - gGravelerLevelUpLearnset, - gGolemLevelUpLearnset, - gPonytaLevelUpLearnset, - gRapidashLevelUpLearnset, - gSlowpokeLevelUpLearnset, - gSlowbroLevelUpLearnset, - gMagnemiteLevelUpLearnset, - gMagnetonLevelUpLearnset, - gFarfetchdLevelUpLearnset, - gDoduoLevelUpLearnset, - gDodrioLevelUpLearnset, - gSeelLevelUpLearnset, - gDewgongLevelUpLearnset, - gGrimerLevelUpLearnset, - gMukLevelUpLearnset, - gShellderLevelUpLearnset, - gCloysterLevelUpLearnset, - gGastlyLevelUpLearnset, - gHaunterLevelUpLearnset, - gGengarLevelUpLearnset, - gOnixLevelUpLearnset, - gDrowzeeLevelUpLearnset, - gHypnoLevelUpLearnset, - gKrabbyLevelUpLearnset, - gKinglerLevelUpLearnset, - gVoltorbLevelUpLearnset, - gElectrodeLevelUpLearnset, - gExeggcuteLevelUpLearnset, - gExeggutorLevelUpLearnset, - gCuboneLevelUpLearnset, - gMarowakLevelUpLearnset, - gHitmonleeLevelUpLearnset, - gHitmonchanLevelUpLearnset, - gLickitungLevelUpLearnset, - gKoffingLevelUpLearnset, - gWeezingLevelUpLearnset, - gRhyhornLevelUpLearnset, - gRhydonLevelUpLearnset, - gChanseyLevelUpLearnset, - gTangelaLevelUpLearnset, - gKangaskhanLevelUpLearnset, - gHorseaLevelUpLearnset, - gSeadraLevelUpLearnset, - gGoldeenLevelUpLearnset, - gSeakingLevelUpLearnset, - gStaryuLevelUpLearnset, - gStarmieLevelUpLearnset, - gMrmimeLevelUpLearnset, - gScytherLevelUpLearnset, - gJynxLevelUpLearnset, - gElectabuzzLevelUpLearnset, - gMagmarLevelUpLearnset, - gPinsirLevelUpLearnset, - gTaurosLevelUpLearnset, - gMagikarpLevelUpLearnset, - gGyaradosLevelUpLearnset, - gLaprasLevelUpLearnset, - gDittoLevelUpLearnset, - gEeveeLevelUpLearnset, - gVaporeonLevelUpLearnset, - gJolteonLevelUpLearnset, - gFlareonLevelUpLearnset, - gPorygonLevelUpLearnset, - gOmanyteLevelUpLearnset, - gOmastarLevelUpLearnset, - gKabutoLevelUpLearnset, - gKabutopsLevelUpLearnset, - gAerodactylLevelUpLearnset, - gSnorlaxLevelUpLearnset, - gArticunoLevelUpLearnset, - gZapdosLevelUpLearnset, - gMoltresLevelUpLearnset, - gDratiniLevelUpLearnset, - gDragonairLevelUpLearnset, - gDragoniteLevelUpLearnset, - gMewtwoLevelUpLearnset, - gMewLevelUpLearnset, - gChikoritaLevelUpLearnset, - gBayleefLevelUpLearnset, - gMeganiumLevelUpLearnset, - gCyndaquilLevelUpLearnset, - gQuilavaLevelUpLearnset, - gTyphlosionLevelUpLearnset, - gTotodileLevelUpLearnset, - gCroconawLevelUpLearnset, - gFeraligatrLevelUpLearnset, - gSentretLevelUpLearnset, - gFurretLevelUpLearnset, - gHoothootLevelUpLearnset, - gNoctowlLevelUpLearnset, - gLedybaLevelUpLearnset, - gLedianLevelUpLearnset, - gSpinarakLevelUpLearnset, - gAriadosLevelUpLearnset, - gCrobatLevelUpLearnset, - gChinchouLevelUpLearnset, - gLanturnLevelUpLearnset, - gPichuLevelUpLearnset, - gCleffaLevelUpLearnset, - gIgglybuffLevelUpLearnset, - gTogepiLevelUpLearnset, - gTogeticLevelUpLearnset, - gNatuLevelUpLearnset, - gXatuLevelUpLearnset, - gMareepLevelUpLearnset, - gFlaaffyLevelUpLearnset, - gAmpharosLevelUpLearnset, - gBellossomLevelUpLearnset, - gMarillLevelUpLearnset, - gAzumarillLevelUpLearnset, - gSudowoodoLevelUpLearnset, - gPolitoedLevelUpLearnset, - gHoppipLevelUpLearnset, - gSkiploomLevelUpLearnset, - gJumpluffLevelUpLearnset, - gAipomLevelUpLearnset, - gSunkernLevelUpLearnset, - gSunfloraLevelUpLearnset, - gYanmaLevelUpLearnset, - gWooperLevelUpLearnset, - gQuagsireLevelUpLearnset, - gEspeonLevelUpLearnset, - gUmbreonLevelUpLearnset, - gMurkrowLevelUpLearnset, - gSlowkingLevelUpLearnset, - gMisdreavusLevelUpLearnset, - gUnownLevelUpLearnset, - gWobbuffetLevelUpLearnset, - gGirafarigLevelUpLearnset, - gPinecoLevelUpLearnset, - gForretressLevelUpLearnset, - gDunsparceLevelUpLearnset, - gGligarLevelUpLearnset, - gSteelixLevelUpLearnset, - gSnubbullLevelUpLearnset, - gGranbullLevelUpLearnset, - gQwilfishLevelUpLearnset, - gScizorLevelUpLearnset, - gShuckleLevelUpLearnset, - gHeracrossLevelUpLearnset, - gSneaselLevelUpLearnset, - gTeddiursaLevelUpLearnset, - gUrsaringLevelUpLearnset, - gSlugmaLevelUpLearnset, - gMagcargoLevelUpLearnset, - gSwinubLevelUpLearnset, - gPiloswineLevelUpLearnset, - gCorsolaLevelUpLearnset, - gRemoraidLevelUpLearnset, - gOctilleryLevelUpLearnset, - gDelibirdLevelUpLearnset, - gMantineLevelUpLearnset, - gSkarmoryLevelUpLearnset, - gHoundourLevelUpLearnset, - gHoundoomLevelUpLearnset, - gKingdraLevelUpLearnset, - gPhanpyLevelUpLearnset, - gDonphanLevelUpLearnset, - gPorygon2LevelUpLearnset, - gStantlerLevelUpLearnset, - gSmeargleLevelUpLearnset, - gTyrogueLevelUpLearnset, - gHitmontopLevelUpLearnset, - gSmoochumLevelUpLearnset, - gElekidLevelUpLearnset, - gMagbyLevelUpLearnset, - gMiltankLevelUpLearnset, - gBlisseyLevelUpLearnset, - gRaikouLevelUpLearnset, - gEnteiLevelUpLearnset, - gSuicuneLevelUpLearnset, - gLarvitarLevelUpLearnset, - gPupitarLevelUpLearnset, - gTyranitarLevelUpLearnset, - gLugiaLevelUpLearnset, - gHoOhLevelUpLearnset, - gCelebiLevelUpLearnset, - gSpecies252LevelUpLearnset, - gSpecies253LevelUpLearnset, - gSpecies254LevelUpLearnset, - gSpecies255LevelUpLearnset, - gSpecies256LevelUpLearnset, - gSpecies257LevelUpLearnset, - gSpecies258LevelUpLearnset, - gSpecies259LevelUpLearnset, - gSpecies260LevelUpLearnset, - gSpecies261LevelUpLearnset, - gSpecies262LevelUpLearnset, - gSpecies263LevelUpLearnset, - gSpecies264LevelUpLearnset, - gSpecies265LevelUpLearnset, - gSpecies266LevelUpLearnset, - gSpecies267LevelUpLearnset, - gSpecies268LevelUpLearnset, - gSpecies269LevelUpLearnset, - gSpecies270LevelUpLearnset, - gSpecies271LevelUpLearnset, - gSpecies272LevelUpLearnset, - gSpecies273LevelUpLearnset, - gSpecies274LevelUpLearnset, - gSpecies275LevelUpLearnset, - gSpecies276LevelUpLearnset, - gTreeckoLevelUpLearnset, - gGrovyleLevelUpLearnset, - gSceptileLevelUpLearnset, - gTorchicLevelUpLearnset, - gCombuskenLevelUpLearnset, - gBlazikenLevelUpLearnset, - gMudkipLevelUpLearnset, - gMarshtompLevelUpLearnset, - gSwampertLevelUpLearnset, - gPoochyenaLevelUpLearnset, - gMightyenaLevelUpLearnset, - gZigzagoonLevelUpLearnset, - gLinooneLevelUpLearnset, - gWurmpleLevelUpLearnset, - gSilcoonLevelUpLearnset, - gBeautiflyLevelUpLearnset, - gCascoonLevelUpLearnset, - gDustoxLevelUpLearnset, - gLotadLevelUpLearnset, - gLombreLevelUpLearnset, - gLudicoloLevelUpLearnset, - gSeedotLevelUpLearnset, - gNuzleafLevelUpLearnset, - gShiftryLevelUpLearnset, - gNincadaLevelUpLearnset, - gNinjaskLevelUpLearnset, - gShedinjaLevelUpLearnset, - gTaillowLevelUpLearnset, - gSwellowLevelUpLearnset, - gShroomishLevelUpLearnset, - gBreloomLevelUpLearnset, - gSpindaLevelUpLearnset, - gWingullLevelUpLearnset, - gPelipperLevelUpLearnset, - gSurskitLevelUpLearnset, - gMasquerainLevelUpLearnset, - gWailmerLevelUpLearnset, - gWailordLevelUpLearnset, - gSkittyLevelUpLearnset, - gDelcattyLevelUpLearnset, - gKecleonLevelUpLearnset, - gBaltoyLevelUpLearnset, - gClaydolLevelUpLearnset, - gNosepassLevelUpLearnset, - gTorkoalLevelUpLearnset, - gSableyeLevelUpLearnset, - gBarboachLevelUpLearnset, - gWhiscashLevelUpLearnset, - gLuvdiscLevelUpLearnset, - gCorphishLevelUpLearnset, - gCrawdauntLevelUpLearnset, - gFeebasLevelUpLearnset, - gMiloticLevelUpLearnset, - gCarvanhaLevelUpLearnset, - gSharpedoLevelUpLearnset, - gTrapinchLevelUpLearnset, - gVibravaLevelUpLearnset, - gFlygonLevelUpLearnset, - gMakuhitaLevelUpLearnset, - gHariyamaLevelUpLearnset, - gElectrikeLevelUpLearnset, - gManectricLevelUpLearnset, - gNumelLevelUpLearnset, - gCameruptLevelUpLearnset, - gSphealLevelUpLearnset, - gSealeoLevelUpLearnset, - gWalreinLevelUpLearnset, - gCacneaLevelUpLearnset, - gCacturneLevelUpLearnset, - gSnoruntLevelUpLearnset, - gGlalieLevelUpLearnset, - gLunatoneLevelUpLearnset, - gSolrockLevelUpLearnset, - gAzurillLevelUpLearnset, - gSpoinkLevelUpLearnset, - gGrumpigLevelUpLearnset, - gPlusleLevelUpLearnset, - gMinunLevelUpLearnset, - gMawileLevelUpLearnset, - gMedititeLevelUpLearnset, - gMedichamLevelUpLearnset, - gSwabluLevelUpLearnset, - gAltariaLevelUpLearnset, - gWynautLevelUpLearnset, - gDuskullLevelUpLearnset, - gDusclopsLevelUpLearnset, - gRoseliaLevelUpLearnset, - gSlakothLevelUpLearnset, - gVigorothLevelUpLearnset, - gSlakingLevelUpLearnset, - gGulpinLevelUpLearnset, - gSwalotLevelUpLearnset, - gTropiusLevelUpLearnset, - gWhismurLevelUpLearnset, - gLoudredLevelUpLearnset, - gExploudLevelUpLearnset, - gClamperlLevelUpLearnset, - gHuntailLevelUpLearnset, - gGorebyssLevelUpLearnset, - gAbsolLevelUpLearnset, - gShuppetLevelUpLearnset, - gBanetteLevelUpLearnset, - gSeviperLevelUpLearnset, - gZangooseLevelUpLearnset, - gRelicanthLevelUpLearnset, - gAronLevelUpLearnset, - gLaironLevelUpLearnset, - gAggronLevelUpLearnset, - gCastformLevelUpLearnset, - gVolbeatLevelUpLearnset, - gIllumiseLevelUpLearnset, - gLileepLevelUpLearnset, - gCradilyLevelUpLearnset, - gAnorithLevelUpLearnset, - gArmaldoLevelUpLearnset, - gRaltsLevelUpLearnset, - gKirliaLevelUpLearnset, - gGardevoirLevelUpLearnset, - gBagonLevelUpLearnset, - gShelgonLevelUpLearnset, - gSalamenceLevelUpLearnset, - gBeldumLevelUpLearnset, - gMetangLevelUpLearnset, - gMetagrossLevelUpLearnset, - gRegirockLevelUpLearnset, - gRegiceLevelUpLearnset, - gRegisteelLevelUpLearnset, - gKyogreLevelUpLearnset, - gGroudonLevelUpLearnset, - gRayquazaLevelUpLearnset, - gLatiasLevelUpLearnset, - gLatiosLevelUpLearnset, - gJirachiLevelUpLearnset, - gDeoxysLevelUpLearnset, - gChimechoLevelUpLearnset -}; +#include "data/pokemon/dex_order.h" +#include "data/pokemon/spinda_spots.h" +#include "data/pokemon/item_effects.h" +#include "data/pokemon/nature_stats.h" +#include "data/pokemon/tmhm_learnsets.h" +#include "data/pokemon/trainer_class_lookups.h" +#include "data/pokemon/cry_ids.h" +#include "data/pokemon/experience_tables.h" +#include "data/pokemon/base_stats.h" +#include "data/pokemon/level_up_learnsets.h" +#include "data/pokemon/evolution.h" +#include "data/pokemon/level_up_learnset_pointers.h" const u8 gUnknown_08208238[] = { // Masks for getting PP Up count, also PP Max values 0x03, 0x0c, 0x30, 0xc0 -- cgit v1.2.3 From 0e92e2f50eff05118f27a150c028b5a7ed72a88b Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 27 Jun 2017 16:35:16 -0400 Subject: Spinda spots to binary files pending utility to convert to/from png --- .gitignore | 1 + graphics/spinda_spots/spot_0.bin | Bin 0 -> 32 bytes graphics/spinda_spots/spot_1.bin | Bin 0 -> 32 bytes graphics/spinda_spots/spot_2.bin | Bin 0 -> 32 bytes graphics/spinda_spots/spot_3.bin | Bin 0 -> 32 bytes include/data/pokemon/spinda_spots.h | 79 ++---------------------------------- 6 files changed, 5 insertions(+), 75 deletions(-) create mode 100644 graphics/spinda_spots/spot_0.bin create mode 100644 graphics/spinda_spots/spot_1.bin create mode 100644 graphics/spinda_spots/spot_2.bin create mode 100644 graphics/spinda_spots/spot_3.bin diff --git a/.gitignore b/.gitignore index f5c95dbc1..ae9ac207b 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ types_*.taghl Thumbs.db build/ .idea/ +*.DS_Store diff --git a/graphics/spinda_spots/spot_0.bin b/graphics/spinda_spots/spot_0.bin new file mode 100644 index 000000000..938d1d592 Binary files /dev/null and b/graphics/spinda_spots/spot_0.bin differ diff --git a/graphics/spinda_spots/spot_1.bin b/graphics/spinda_spots/spot_1.bin new file mode 100644 index 000000000..db46b5de4 Binary files /dev/null and b/graphics/spinda_spots/spot_1.bin differ diff --git a/graphics/spinda_spots/spot_2.bin b/graphics/spinda_spots/spot_2.bin new file mode 100644 index 000000000..3b1bf7214 Binary files /dev/null and b/graphics/spinda_spots/spot_2.bin differ diff --git a/graphics/spinda_spots/spot_3.bin b/graphics/spinda_spots/spot_3.bin new file mode 100644 index 000000000..10c73f9ba Binary files /dev/null and b/graphics/spinda_spots/spot_3.bin differ diff --git a/include/data/pokemon/spinda_spots.h b/include/data/pokemon/spinda_spots.h index 2c8ec036a..234cdf00e 100644 --- a/include/data/pokemon/spinda_spots.h +++ b/include/data/pokemon/spinda_spots.h @@ -6,81 +6,10 @@ #define POKERUBY_SPINDA_SPOTS_H const struct SpindaSpot gSpindaSpotGraphics[] = { - {16, 14, { - 0x0070, // 0000000001110000 - 0x01fc, // 0000000111111100 - 0x03fe, // 0000001111111110 - 0x07fe, // 0000011111111110 - 0x07ff, // 0000011111111111 - 0x0fff, // 0000111111111111 - 0x0fff, // 0000111111111111 - 0x0fff, // 0000111111111111 - 0x07fe, // 0000011111111110 - 0x07fe, // 0000011111111110 - 0x03fc, // 0000001111111100 - 0x01e0, // 0000000111100000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000 // 0000000000000000 - }}, - - {40, 15, { - 0x01e0, // 0000000111100000 - 0x03f8, // 0000001111111000 - 0x07fc, // 0000011111111100 - 0x0ffe, // 0000111111111110 - 0x0ffe, // 0000111111111110 - 0x1fff, // 0001111111111111 - 0x1fff, // 0001111111111111 - 0x1fff, // 0001111111111111 - 0x0ffe, // 0000111111111110 - 0x0ffe, // 0000111111111110 - 0x07fc, // 0000011111111100 - 0x07f8, // 0000011111111000 - 0x00e0, // 0000000011100000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000 // 0000000000000000 - }}, - - {22, 32, { - 0x001c, // 0000000000011100 - 0x003e, // 0000000000111110 - 0x007f, // 0000000001111111 - 0x007f, // 0000000001111111 - 0x007f, // 0000000001111111 - 0x007f, // 0000000001111111 - 0x007f, // 0000000001111111 - 0x003e, // 0000000000111110 - 0x001c, // 0000000000011100 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000 // 0000000000000000 - }}, - - {34, 33, { - 0x003c, // 0000000000111100 - 0x007e, // 0000000001111110 - 0x00ff, // 0000000011111111 - 0x00ff, // 0000000011111111 - 0x00ff, // 0000000011111111 - 0x00ff, // 0000000011111111 - 0x00ff, // 0000000011111111 - 0x007e, // 0000000001111110 - 0x003c, // 0000000000111100 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000, // 0000000000000000 - 0x0000 // 0000000000000000 - }} + {16, 14, INCBIN_U16("graphics/spinda_spots/spot_0.bin")}, + {40, 15, INCBIN_U16("graphics/spinda_spots/spot_1.bin")}, + {22, 32, INCBIN_U16("graphics/spinda_spots/spot_2.bin")}, + {34, 33, INCBIN_U16("graphics/spinda_spots/spot_3.bin")} }; #endif //POKERUBY_SPINDA_SPOTS_H -- cgit v1.2.3 From 628a71bed7bb350f6e69b8bd2528ea7103a16cbe Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Jun 2017 18:51:55 -0400 Subject: Start decompiling pokeblock.s --- asm/pokeblock.s | 34 ---------------------------------- ld_script.txt | 2 ++ src/pokeblock.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 34 deletions(-) mode change 100644 => 100755 asm/pokeblock.s create mode 100755 src/pokeblock.c diff --git a/asm/pokeblock.s b/asm/pokeblock.s old mode 100644 new mode 100755 index 5b6522144..3fbd57c86 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,40 +6,6 @@ .text - thumb_func_start sub_810B674 -sub_810B674: @ 810B674 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - bl RunTasks - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_810B674 - - thumb_func_start sub_810B68C -sub_810B68C: @ 810B68C - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - ldr r1, _0810B6B0 @ =gBGTilemapBuffers + 0x1000 - ldr r2, _0810B6B4 @ =0x06007800 - ldr r0, _0810B6B8 @ =0x040000d4 - str r1, [r0] - str r2, [r0, 0x4] - ldr r1, _0810B6BC @ =0x80000400 - str r1, [r0, 0x8] - ldr r0, [r0, 0x8] - pop {r0} - bx r0 - .align 2, 0 -_0810B6B0: .4byte gBGTilemapBuffers + 0x1000 -_0810B6B4: .4byte 0x06007800 -_0810B6B8: .4byte 0x040000d4 -_0810B6BC: .4byte 0x80000400 - thumb_func_end sub_810B68C - thumb_func_start sub_810B6C0 sub_810B6C0: @ 810B6C0 push {r4,lr} diff --git a/ld_script.txt b/ld_script.txt index 80436f035..8ea76638d 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -212,6 +212,7 @@ SECTIONS { src/starter_choose.o(.text); src/wallclock.o(.text); src/rom6.o(.text); + src/pokeblock.o(.text); asm/pokeblock.o(.text); asm/fldeff_flash.o(.text); src/post_battle_event_funcs.o(.text); @@ -438,6 +439,7 @@ SECTIONS { data/trader.o(.rodata); src/starter_choose.o(.rodata); src/wallclock.o(.rodata); + src/pokeblock.o(.rodata); data/pokeblock.o(.rodata); data/fldeff_flash.o(.rodata); src/time_events.o(.rodata); diff --git a/src/pokeblock.c b/src/pokeblock.c new file mode 100755 index 000000000..79df0fb29 --- /dev/null +++ b/src/pokeblock.c @@ -0,0 +1,30 @@ +// +// Created by scott on 6/27/2017. +// + +#include "global.h" +#include "sprite.h" +#include "task.h" +#include "text.h" +#include "palette.h" +#include "pokeblock.h" + +void sub_810B674(void) +{ + AnimateSprites(); + BuildOamBuffer(); + RunTasks(); + UpdatePaletteFade(); +} + +void sub_810B68C(void) +{ + u16 *src; + vu16 *dest; + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + src = gBGTilemapBuffers[2]; + dest = (vu16 *)(VRAM + 0x7800); + DmaCopy16(3, src, dest, sizeof gBGTilemapBuffers[2]); +} -- cgit v1.2.3 From fc5d035bdaf86d5cc68994657e3e47666308d7c3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Jun 2017 19:25:30 -0400 Subject: sub_810B6C0 --- asm/pokeblock.s | 296 ------------------------------------------------- include/menu_helpers.h | 1 + include/pokeblock.h | 4 + src/pokeblock.c | 127 +++++++++++++++++++++ 4 files changed, 132 insertions(+), 296 deletions(-) mode change 100644 => 100755 include/menu_helpers.h mode change 100644 => 100755 include/pokeblock.h diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 3fbd57c86..0ea1e6e58 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,302 +6,6 @@ .text - thumb_func_start sub_810B6C0 -sub_810B6C0: @ 810B6C0 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0810B6DC @ =gMain - ldr r1, _0810B6E0 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x12 - bls _0810B6D2 - b _0810B960 -_0810B6D2: - lsls r0, 2 - ldr r1, _0810B6E4 @ =_0810B6E8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0810B6DC: .4byte gMain -_0810B6E0: .4byte 0x0000043c -_0810B6E4: .4byte _0810B6E8 - .align 2, 0 -_0810B6E8: - .4byte _0810B734 - .4byte _0810B764 - .4byte _0810B76A - .4byte _0810B78C - .4byte _0810B792 - .4byte _0810B7B4 - .4byte _0810B7C0 - .4byte _0810B7DC - .4byte _0810B7E8 - .4byte _0810B804 - .4byte _0810B810 - .4byte _0810B830 - .4byte _0810B84C - .4byte _0810B86A - .4byte _0810B894 - .4byte _0810B89E - .4byte _0810B8C4 - .4byte _0810B914 - .4byte _0810B934 -_0810B734: - bl sub_80F9438 - bl sub_80F9368 - ldr r1, _0810B754 @ =REG_BG2CNT - ldr r2, _0810B758 @ =0x00000f0a - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x44 - movs r0, 0 - strh r0, [r1] - ldr r1, _0810B75C @ =gMain - ldr r0, _0810B760 @ =0x0000043c - adds r1, r0 - b _0810B922 - .align 2, 0 -_0810B754: .4byte REG_BG2CNT -_0810B758: .4byte 0x00000f0a -_0810B75C: .4byte gMain -_0810B760: .4byte 0x0000043c -_0810B764: - bl remove_some_task - b _0810B91C -_0810B76A: - bl ResetPaletteFade - ldr r2, _0810B780 @ =gPaletteFade - ldrb r0, [r2, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2, 0x8] - ldr r1, _0810B784 @ =gMain - ldr r0, _0810B788 @ =0x0000043c - adds r1, r0 - b _0810B922 - .align 2, 0 -_0810B780: .4byte gPaletteFade -_0810B784: .4byte gMain -_0810B788: .4byte 0x0000043c -_0810B78C: - bl ResetSpriteData - b _0810B91C -_0810B792: - ldr r0, _0810B7A8 @ =gUnknown_02039244 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0810B79E - bl ResetTasks -_0810B79E: - ldr r1, _0810B7AC @ =gMain - ldr r0, _0810B7B0 @ =0x0000043c - adds r1, r0 - b _0810B922 - .align 2, 0 -_0810B7A8: .4byte gUnknown_02039244 -_0810B7AC: .4byte gMain -_0810B7B0: .4byte 0x0000043c -_0810B7B4: - ldr r0, _0810B7BC @ =gWindowConfig_81E6E34 - bl SetUpWindowConfig - b _0810B91C - .align 2, 0 -_0810B7BC: .4byte gWindowConfig_81E6E34 -_0810B7C0: - ldr r0, _0810B7D0 @ =gWindowConfig_81E6E50 - bl SetUpWindowConfig - ldr r1, _0810B7D4 @ =gMain - ldr r0, _0810B7D8 @ =0x0000043c - adds r1, r0 - b _0810B922 - .align 2, 0 -_0810B7D0: .4byte gWindowConfig_81E6E50 -_0810B7D4: .4byte gMain -_0810B7D8: .4byte 0x0000043c -_0810B7DC: - ldr r0, _0810B7E4 @ =gWindowConfig_81E6E34 - bl MultistepInitMenuWindowBegin - b _0810B91C - .align 2, 0 -_0810B7E4: .4byte gWindowConfig_81E6E34 -_0810B7E8: - bl MultistepInitMenuWindowContinue - cmp r0, 0 - bne _0810B7F2 - b _0810B960 -_0810B7F2: - ldr r1, _0810B7FC @ =gMain - ldr r0, _0810B800 @ =0x0000043c - adds r1, r0 - b _0810B922 - .align 2, 0 -_0810B7FC: .4byte gMain -_0810B800: .4byte 0x0000043c -_0810B804: - ldr r0, _0810B80C @ =gWindowConfig_81E6E50 - bl MultistepInitMenuWindowBegin - b _0810B91C - .align 2, 0 -_0810B80C: .4byte gWindowConfig_81E6E50 -_0810B810: - bl MultistepInitMenuWindowContinue - cmp r0, 0 - bne _0810B81A - b _0810B960 -_0810B81A: - ldr r0, _0810B828 @ =0x02000000 - ldr r1, _0810B82C @ =0x0001ffff - adds r0, r1 - movs r1, 0 - strb r1, [r0] - b _0810B91C - .align 2, 0 -_0810B828: .4byte 0x02000000 -_0810B82C: .4byte 0x0001ffff -_0810B830: - bl sub_810B998 - lsls r0, 24 - cmp r0, 0 - bne _0810B83C - b _0810B960 -_0810B83C: - ldr r1, _0810B844 @ =gMain - ldr r0, _0810B848 @ =0x0000043c - adds r1, r0 - b _0810B922 - .align 2, 0 -_0810B844: .4byte gMain -_0810B848: .4byte 0x0000043c -_0810B84C: - bl sub_80F944C - bl LoadScrollIndicatorPalette - movs r0, 0 - movs r1, 0xB0 - movs r2, 0x8 - bl CreateVerticalScrollIndicators - movs r0, 0x1 - movs r1, 0xB0 - movs r2, 0x98 - bl CreateVerticalScrollIndicators - b _0810B91C -_0810B86A: - movs r0, 0x38 - movs r1, 0x40 - movs r2, 0 - bl sub_810BA50 - ldr r1, _0810B884 @ =0x02000000 - ldr r2, _0810B888 @ =0x0001fffe - adds r1, r2 - strb r0, [r1] - ldr r1, _0810B88C @ =gMain - ldr r0, _0810B890 @ =0x0000043c - adds r1, r0 - b _0810B922 - .align 2, 0 -_0810B884: .4byte 0x02000000 -_0810B888: .4byte 0x0001fffe -_0810B88C: .4byte gMain -_0810B890: .4byte 0x0000043c -_0810B894: - bl sub_810BC98 - bl sub_810BD08 - b _0810B91C -_0810B89E: - bl sub_810BB0C - bl sub_810BB30 - ldr r0, _0810B8B8 @ =gUnknown_02039248 - ldrb r0, [r0, 0x1] - bl sub_810BC84 - ldr r1, _0810B8BC @ =gMain - ldr r0, _0810B8C0 @ =0x0000043c - adds r1, r0 - b _0810B922 - .align 2, 0 -_0810B8B8: .4byte gUnknown_02039248 -_0810B8BC: .4byte gMain -_0810B8C0: .4byte 0x0000043c -_0810B8C4: - ldr r3, _0810B8FC @ =0x04000208 - ldrh r2, [r3] - movs r0, 0 - strh r0, [r3] - ldr r4, _0810B900 @ =0x04000200 - ldrh r0, [r4] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r4] - strh r2, [r3] - ldr r2, _0810B904 @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] - ldr r0, _0810B908 @ =sub_810B68C - bl SetVBlankCallback - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xBA - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, _0810B90C @ =gMain - ldr r0, _0810B910 @ =0x0000043c - adds r1, r0 - b _0810B922 - .align 2, 0 -_0810B8FC: .4byte 0x04000208 -_0810B900: .4byte 0x04000200 -_0810B904: .4byte REG_DISPSTAT -_0810B908: .4byte sub_810B68C -_0810B90C: .4byte gMain -_0810B910: .4byte 0x0000043c -_0810B914: - bl sub_8055870 - cmp r0, 0x1 - beq _0810B960 -_0810B91C: - ldr r1, _0810B92C @ =gMain - ldr r2, _0810B930 @ =0x0000043c - adds r1, r2 -_0810B922: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0810B960 - .align 2, 0 -_0810B92C: .4byte gMain -_0810B930: .4byte 0x0000043c -_0810B934: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r2, _0810B958 @ =gPaletteFade - ldrb r1, [r2, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2, 0x8] - ldr r0, _0810B95C @ =sub_810B674 - bl SetMainCallback2 - movs r0, 0x1 - b _0810B962 - .align 2, 0 -_0810B958: .4byte gPaletteFade -_0810B95C: .4byte sub_810B674 -_0810B960: - movs r0, 0 -_0810B962: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_810B6C0 - thumb_func_start sub_810B96C sub_810B96C: @ 810B96C push {lr} diff --git a/include/menu_helpers.h b/include/menu_helpers.h old mode 100644 new mode 100755 index 0aa9f79f7..0e39a3732 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -23,5 +23,6 @@ void DestroyVerticalScrollIndicator(u8); void BuyMenuFreeMemory(void); void sub_80F98DC(int); void sub_80F996C(u8); +void LoadScrollIndicatorPalette(void); #endif // GUARD_MENU_HELPERS_H diff --git a/include/pokeblock.h b/include/pokeblock.h old mode 100644 new mode 100755 index 257c83f1c..353c3d050 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -1,6 +1,10 @@ #ifndef GUARD_POKEBLOCK_H #define GUARD_POKEBLOCK_H +extern u8 ewram[]; +extern u8 gUnknown_02039244; +extern u8 gUnknown_02039248[2]; + void sub_810B96C(void); void sub_810BA7C(u8); void ClearPokeblocks(void); diff --git a/src/pokeblock.c b/src/pokeblock.c index 79df0fb29..9f921e357 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -3,10 +3,15 @@ // #include "global.h" +#include "rom4.h" #include "sprite.h" #include "task.h" +#include "unknown_task.h" #include "text.h" +#include "main.h" +#include "menu.h" #include "palette.h" +#include "menu_helpers.h" #include "pokeblock.h" void sub_810B674(void) @@ -28,3 +33,125 @@ void sub_810B68C(void) dest = (vu16 *)(VRAM + 0x7800); DmaCopy16(3, src, dest, sizeof gBGTilemapBuffers[2]); } + +bool8 sub_810B998(void); +u8 sub_810BA50(s16, s16, u8); +void sub_810BC98(void); +void sub_810BD08(void); +void sub_810BB0C(void); +void sub_810BB30(void); +void sub_810BC84(u8); + +bool32 sub_810B6C0(void) +{ + u16 ime; + switch (gMain.state) + { + case 0: + sub_80F9438(); + sub_80F9368(); + REG_BG2CNT = BGCNT_SCREENBASE(15) | BGCNT_CHARBASE(2) | BGCNT_PRIORITY(2); + REG_BLDCNT = 0; + gMain.state++; + break; + case 1: + remove_some_task(); + gMain.state++; + break; + case 2: + ResetPaletteFade(); + gPaletteFade.bufferTransferDisabled = TRUE; + gMain.state++; + break; + case 3: + ResetSpriteData(); + gMain.state++; + break; + case 4: + if (gUnknown_02039244 != 2) + { + ResetTasks(); + } + gMain.state++; + break; + case 5: + SetUpWindowConfig(&gWindowConfig_81E6E34); + gMain.state++; + break; + case 6: + SetUpWindowConfig(&gWindowConfig_81E6E50); + gMain.state++; + break; + case 7: + MultistepInitMenuWindowBegin(&gWindowConfig_81E6E34); + gMain.state++; + break; + case 8: + if (MultistepInitMenuWindowContinue()) + { + gMain.state++; + } + break; + case 9: + MultistepInitMenuWindowBegin(&gWindowConfig_81E6E50); + gMain.state++; + break; + case 10: + if (MultistepInitMenuWindowContinue()) + { + ewram[0x1ffff] = 0; + gMain.state++; + } + break; + case 11: + if (sub_810B998()) + { + gMain.state++; + } + break; + case 12: + sub_80F944C(); + LoadScrollIndicatorPalette(); + CreateVerticalScrollIndicators(0, 0xb0, 0x08); + CreateVerticalScrollIndicators(1, 0xb0, 0x98); + gMain.state++; + break; + case 13: + ewram[0x1fffe] = sub_810BA50(0x38, 0x40, 0); + gMain.state++; + break; + case 14: + sub_810BC98(); + sub_810BD08(); + gMain.state++; + break; + case 15: + sub_810BB0C(); + sub_810BB30(); + sub_810BC84(gUnknown_02039248[1]); + gMain.state++; + break; + case 16: + ime = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = ime; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + SetVBlankCallback(sub_810B68C); + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG2_ON | DISPCNT_BG1_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP; + gMain.state++; + break; + case 17: + if (sub_8055870() != TRUE) + { + gMain.state++; + } + break; + case 18: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gPaletteFade.bufferTransferDisabled = FALSE; + SetMainCallback2(sub_810B674); + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 3661177dc197119b53ff4a677359d27272c816e0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Jun 2017 19:35:29 -0400 Subject: sub_810B96C --- asm/pokeblock.s | 26 -------------------------- src/pokeblock.c | 21 +++++++++++++++++---- 2 files changed, 17 insertions(+), 30 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 0ea1e6e58..eb173c3ba 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,32 +6,6 @@ .text - thumb_func_start sub_810B96C -sub_810B96C: @ 810B96C - push {lr} -_0810B96E: - bl sub_810B6C0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0810B988 - ldr r0, _0810B984 @ =sub_810BF7C - movs r1, 0 - bl CreateTask - b _0810B994 - .align 2, 0 -_0810B984: .4byte sub_810BF7C -_0810B988: - bl sub_80F9344 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0810B96E -_0810B994: - pop {r0} - bx r0 - thumb_func_end sub_810B96C - thumb_func_start sub_810B998 sub_810B998: @ 810B998 push {lr} diff --git a/src/pokeblock.c b/src/pokeblock.c index 9f921e357..76a06c5ea 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -14,7 +14,7 @@ #include "menu_helpers.h" #include "pokeblock.h" -void sub_810B674(void) +static void sub_810B674(void) { AnimateSprites(); BuildOamBuffer(); @@ -22,7 +22,7 @@ void sub_810B674(void) UpdatePaletteFade(); } -void sub_810B68C(void) +static void sub_810B68C(void) { u16 *src; vu16 *dest; @@ -42,7 +42,7 @@ void sub_810BB0C(void); void sub_810BB30(void); void sub_810BC84(u8); -bool32 sub_810B6C0(void) +static bool8 sub_810B6C0(void) { u16 ime; switch (gMain.state) @@ -134,7 +134,7 @@ bool32 sub_810B6C0(void) case 16: ime = REG_IME; REG_IME = 0; - REG_IE |= 1; + REG_IE |= INTR_FLAG_VBLANK; REG_IME = ime; REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; SetVBlankCallback(sub_810B68C); @@ -155,3 +155,16 @@ bool32 sub_810B6C0(void) } return FALSE; } + +void sub_810BF7C(u8); + +void sub_810B96C(void) +{ + do { + if (sub_810B6C0() == TRUE) + { + CreateTask(sub_810BF7C, 0); + break; + } + } while (sub_80F9344() != TRUE); +} -- cgit v1.2.3 From 25355e8530142e6ad88f4173c3c3dc9d881d7fa8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Jun 2017 20:17:39 -0400 Subject: sub_810B998 and ALL the data --- asm/pokeblock.s | 89 +------------------------- data/pokeblock.s | 125 ------------------------------------- include/battle.h | 1 + include/decoration.h | 2 +- include/graphics.h | 8 +++ include/menu.h | 6 -- include/pokeblock.h | 5 ++ include/strings.h | 15 +++++ ld_script.txt | 1 - src/decoration.c | 8 +-- src/pokeblock.c | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++- src/pokemon_3.c | 6 +- 12 files changed, 211 insertions(+), 228 deletions(-) delete mode 100644 data/pokeblock.s mode change 100644 => 100755 include/battle.h mode change 100644 => 100755 include/decoration.h mode change 100644 => 100755 include/graphics.h mode change 100644 => 100755 include/menu.h mode change 100644 => 100755 include/strings.h mode change 100644 => 100755 src/decoration.c diff --git a/asm/pokeblock.s b/asm/pokeblock.s index eb173c3ba..4fc58f296 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,91 +6,6 @@ .text - thumb_func_start sub_810B998 -sub_810B998: @ 810B998 - push {lr} - ldr r0, _0810B9B0 @ =0x02000000 - ldr r1, _0810B9B4 @ =0x0001ffff - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x4 - bhi _0810BA48 - lsls r0, 2 - ldr r1, _0810B9B8 @ =_0810B9BC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0810B9B0: .4byte 0x02000000 -_0810B9B4: .4byte 0x0001ffff -_0810B9B8: .4byte _0810B9BC - .align 2, 0 -_0810B9BC: - .4byte _0810B9D0 - .4byte _0810B9E4 - .4byte _0810B9F8 - .4byte _0810BA08 - .4byte _0810BA28 -_0810B9D0: - ldr r0, _0810B9DC @ =gMenuPokeblock_Gfx - ldr r1, _0810B9E0 @ =0x06008000 - bl LZDecompressVram - b _0810BA0E - .align 2, 0 -_0810B9DC: .4byte gMenuPokeblock_Gfx -_0810B9E0: .4byte 0x06008000 -_0810B9E4: - ldr r0, _0810B9F0 @ =gMenuPokeblock_Tilemap - ldr r1, _0810B9F4 @ =gBGTilemapBuffers + 0x1000 - bl sub_800D238 - b _0810BA0E - .align 2, 0 -_0810B9F0: .4byte gMenuPokeblock_Tilemap -_0810B9F4: .4byte gBGTilemapBuffers + 0x1000 -_0810B9F8: - ldr r0, _0810BA04 @ =gMenuPokeblock_Pal - movs r1, 0 - movs r2, 0xC0 - bl LoadCompressedPalette - b _0810BA0E - .align 2, 0 -_0810BA04: .4byte gMenuPokeblock_Pal -_0810BA08: - ldr r0, _0810BA1C @ =gUnknown_083F7F74 - bl LoadCompressedObjectPic -_0810BA0E: - ldr r1, _0810BA20 @ =0x02000000 - ldr r0, _0810BA24 @ =0x0001ffff - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0810BA48 - .align 2, 0 -_0810BA1C: .4byte gUnknown_083F7F74 -_0810BA20: .4byte 0x02000000 -_0810BA24: .4byte 0x0001ffff -_0810BA28: - ldr r0, _0810BA3C @ =gUnknown_083F7F7C - bl LoadCompressedObjectPalette - ldr r0, _0810BA40 @ =0x02000000 - ldr r1, _0810BA44 @ =0x0001ffff - adds r0, r1 - movs r1, 0 - strb r1, [r0] - movs r0, 0x1 - b _0810BA4A - .align 2, 0 -_0810BA3C: .4byte gUnknown_083F7F7C -_0810BA40: .4byte 0x02000000 -_0810BA44: .4byte 0x0001ffff -_0810BA48: - movs r0, 0 -_0810BA4A: - pop {r1} - bx r1 - thumb_func_end sub_810B998 - thumb_func_start sub_810BA50 sub_810BA50: @ 810BA50 push {r4,r5,lr} @@ -2213,7 +2128,7 @@ sub_810CAE4: @ 810CAE4 lsrs r0, 24 movs r6, 0 movs r4, 0 - ldr r1, _0810CB40 @ =gUnknown_083F7E28 + ldr r1, _0810CB40 @ =gPokeblockFlavorCompatibilityTable mov r9, r1 lsls r1, r0, 2 adds r7, r1, r0 @@ -2252,7 +2167,7 @@ _0810CB2A: pop {r1} bx r1 .align 2, 0 -_0810CB40: .4byte gUnknown_083F7E28 +_0810CB40: .4byte gPokeblockFlavorCompatibilityTable thumb_func_end sub_810CAE4 thumb_func_start sub_810CB44 diff --git a/data/pokeblock.s b/data/pokeblock.s deleted file mode 100644 index 6d0b1890d..000000000 --- a/data/pokeblock.s +++ /dev/null @@ -1,125 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -gUnknown_083F7E28:: @ 83F7E28 - .byte 0, 0, 0, 0, 0 - .byte 1, 0, 0, 0, -1 - .byte 1, 0, -1, 0, 0 - .byte 1, -1, 0, 0, 0 - .byte 1, 0, 0, -1, 0 - .byte -1, 0, 0, 0, 1 - .byte 0, 0, 0, 0, 0 - .byte 0, 0, -1, 0, 1 - .byte 0, -1, 0, 0, 1 - .byte 0, 0, 0, -1, 1 - .byte -1, 0, 1, 0, 0 - .byte 0, 0, 1, 0, -1 - .byte 0, 0, 0, 0, 0 - .byte 0, -1, 1, 0, 0 - .byte 0, 0, 1, -1, 0 - .byte -1, 1, 0, 0, 0 - .byte 0, 1, 0, 0, -1 - .byte 0, 1, -1, 0, 0 - .byte 0, 0, 0, 0, 0 - .byte 0, 1, 0, -1, 0 - .byte -1, 0, 0, 1, 0 - .byte 0, 0, 0, 1, -1 - .byte 0, 0, -1, 1, 0 - .byte 0, -1, 0, 1, 0 - .byte 0, 0, 0, 0, 0 - - .align 2 -gUnknown_083F7EA8:: @ 83F7EA8 - .4byte sub_80A5B40, c2_exit_to_overworld_2_switch - .4byte sub_802E424, c2_exit_to_overworld_2_switch - - .align 2 -gPokeblockNames:: @ 83F7EB8 - .4byte NULL - .4byte ContestStatsText_RedPokeBlock - .4byte ContestStatsText_BluePokeBlock - .4byte ContestStatsText_PinkPokeBlock - .4byte ContestStatsText_GreenPokeBlock - .4byte ContestStatsText_YellowPokeBlock - .4byte ContestStatsText_PurplePokeBlock - .4byte ContestStatsText_IndigoPokeBlock - .4byte ContestStatsText_BrownPokeBlock - .4byte ContestStatsText_LiteBluePokeBlock - .4byte ContestStatsText_OlivePokeBlock - .4byte ContestStatsText_GrayPokeBlock - .4byte ContestStatsText_BlackPokeBlock - .4byte ContestStatsText_WhitePokeBlock - .4byte ContestStatsText_GoldPokeBlock - - .align 2 -gUnknown_083F7EF4:: @ 83F7EF4 - .4byte OtherText_Use, sub_810C508 - .4byte OtherText_Toss, sub_810C5C0 - .4byte gOtherText_CancelNoTerminator, sub_810C748 - .4byte OtherText_Use, sub_810C788 - .4byte OtherText_Use, sub_810C854 - -gUnknown_083F7F1C:: @ 83F7F1C - .byte 0, 1, 2 - -gUnknown_083F7F1F:: @ 83F7F1F - .byte 3, 2 - -gUnknown_083F7F21:: @ 83F7F21 - .byte 4, 2 - - .align 2 -gUnknown_083F7F24:: @ 83F7F24 - .4byte sub_810C610 - .4byte sub_810C668 - -@ unreferenced - .byte 0x16, 0x17, 0x18, 0x21, 0x2F - - .align 2 -gOamData_83F7F34:: @ 83F7F34 - .2byte 0x0000 - .2byte 0xC000 - .2byte 0x0800 - - .align 2 -gSpriteAnim_83F7F3C:: @ 83F7F3C - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83F7F44:: @ 83F7F44 - .4byte gSpriteAnim_83F7F3C - - .align 2 -gSpriteAffineAnim_83F7F48:: @ 83F7F48 - obj_rot_scal_anim_frame 0x0, 0x0, -2, 2 - obj_rot_scal_anim_frame 0x0, 0x0, 2, 4 - obj_rot_scal_anim_frame 0x0, 0x0, -2, 4 - obj_rot_scal_anim_frame 0x0, 0x0, 2, 2 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_83F7F70:: @ 83F7F70 - .4byte gSpriteAffineAnim_83F7F48 - - .align 2 -gUnknown_083F7F74:: @ 83F7F74 - obj_tiles gMenuPokeblockDevice_Gfx, 2048, 0x39d0 - - .align 2 -gUnknown_083F7F7C:: @ 83F7F7C - obj_pal gMenuPokeblockDevice_Pal, 0x39d0 - - .align 2 -gSpriteTemplate_83F7F84:: @ 83F7F84 - spr_template 14800, 14800, gOamData_83F7F34, gSpriteAnimTable_83F7F44, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy - -gUnknown_083F7F9C:: @ 83F7F9C - .byte 1, 20, 0, 0, 0, 0, 20, 0 - .byte 2, 0, 20, 0, 0, 0, 20, 0 - .byte 3, 0, 0, 20, 0, 0, 20, 0 - .byte 4, 0, 0, 0, 20, 0, 20, 0 - .byte 5, 0, 0, 0, 0, 20, 20, 0 diff --git a/include/battle.h b/include/battle.h old mode 100644 new mode 100755 index d93860094..a480ca95e --- a/include/battle.h +++ b/include/battle.h @@ -308,6 +308,7 @@ void c3_0802FDF4(u8); void sub_802E3E4(u8, int); void nullsub_8(u8); void sub_802E414(void); +void sub_802E424(void); // asm/battle_7.o void move_anim_start_t4(u8 a, u8 b, u8 c, u8 d); diff --git a/include/decoration.h b/include/decoration.h old mode 100644 new mode 100755 index 2595d491a..7a6d8ef5a --- a/include/decoration.h +++ b/include/decoration.h @@ -274,7 +274,7 @@ extern const u8 *const gUnknown_083EC5E4[]; extern const u8 *const gUnknown_083EC624[]; extern u8 gUnknown_020388F7[]; extern const struct MenuAction2 gUnknown_083EC604[]; -extern const struct MenuAction3 gUnknown_083EC634[]; +extern const struct YesNoFuncTable gUnknown_083EC634[]; extern const u8 gUnknown_083EC65A[]; extern const u8 gUnknown_083EC97C[]; extern const u8 gUnknown_083EC984[]; diff --git a/include/graphics.h b/include/graphics.h old mode 100644 new mode 100755 index c3fe20996..36b11fd0a --- a/include/graphics.h +++ b/include/graphics.h @@ -2435,4 +2435,12 @@ extern const u8 gMonFrontPic_UnownQuestionMark[]; extern const u8 gMonBackPic_UnownQuestionMark[]; extern const u8 gMonIcon_UnownQuestionMark[]; +// src/pokeblock.c +extern const u8 gMenuPokeblock_Gfx[]; +extern const u8 gMenuPokeblock_Tilemap[]; +extern const u8 gMenuPokeblock_Pal[]; + +extern const u8 gMenuPokeblockDevice_Gfx[]; +extern const u8 gMenuPokeblockDevice_Pal[]; + #endif // GUARD_GRAPHICS_H diff --git a/include/menu.h b/include/menu.h old mode 100644 new mode 100755 index 9eeebce60..7d4bc731b --- a/include/menu.h +++ b/include/menu.h @@ -15,12 +15,6 @@ struct MenuAction2 void (*func)(u8); }; -struct MenuAction3 -{ - void (*func1)(u8); - void (*func2)(u8); -}; - extern const struct MenuAction gMenuYesNoItems[]; extern struct Window gMenuWindow; diff --git a/include/pokeblock.h b/include/pokeblock.h index 353c3d050..958ccec5f 100755 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -1,6 +1,11 @@ #ifndef GUARD_POKEBLOCK_H #define GUARD_POKEBLOCK_H +struct YesNoCBTable { + void (*yesFunc)(void); + void (*noFunc)(void); +}; + extern u8 ewram[]; extern u8 gUnknown_02039244; extern u8 gUnknown_02039248[2]; diff --git a/include/strings.h b/include/strings.h old mode 100644 new mode 100755 index 89a78e478..a1fcc30cb --- a/include/strings.h +++ b/include/strings.h @@ -902,4 +902,19 @@ extern const u8 gSystemText_NoSaveFileNoTime[]; extern const u8 gSystemText_ClockAdjustmentUsable[]; extern const u8 gSystemText_Saving[]; +extern const u8 ContestStatsText_RedPokeBlock[]; +extern const u8 ContestStatsText_BluePokeBlock[]; +extern const u8 ContestStatsText_PinkPokeBlock[]; +extern const u8 ContestStatsText_GreenPokeBlock[]; +extern const u8 ContestStatsText_YellowPokeBlock[]; +extern const u8 ContestStatsText_PurplePokeBlock[]; +extern const u8 ContestStatsText_IndigoPokeBlock[]; +extern const u8 ContestStatsText_BrownPokeBlock[]; +extern const u8 ContestStatsText_LiteBluePokeBlock[]; +extern const u8 ContestStatsText_OlivePokeBlock[]; +extern const u8 ContestStatsText_GrayPokeBlock[]; +extern const u8 ContestStatsText_BlackPokeBlock[]; +extern const u8 ContestStatsText_WhitePokeBlock[]; +extern const u8 ContestStatsText_GoldPokeBlock[]; + #endif diff --git a/ld_script.txt b/ld_script.txt index 8ea76638d..6c4894d1e 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -440,7 +440,6 @@ SECTIONS { src/starter_choose.o(.rodata); src/wallclock.o(.rodata); src/pokeblock.o(.rodata); - data/pokeblock.o(.rodata); data/fldeff_flash.o(.rodata); src/time_events.o(.rodata); data/field_specials.o(.rodata); diff --git a/src/decoration.c b/src/decoration.c old mode 100644 new mode 100755 index 9eba54ad7..e829cb072 --- a/src/decoration.c +++ b/src/decoration.c @@ -1396,7 +1396,7 @@ const u8 *const gUnknown_083EC624[] = { gMenuText_GoBackToPrev }; -const struct MenuAction3 gUnknown_083EC634[] = { +const struct YesNoFuncTable gUnknown_083EC634[] = { {sub_80FF5BC, sub_80FF058}, {sub_81017A0, sub_80FF058}, {sub_81017A0, sub_80FF058}, @@ -1871,16 +1871,16 @@ void sub_80FE948(u8 taskId) gUnknown_020388F5 = gUnknown_020388F2 + gUnknown_020388F4; if (gUnknown_020388F5 == gUnknown_020388D5) { - gUnknown_083EC634[gTasks[taskId].data[11]].func2(taskId); + gUnknown_083EC634[gTasks[taskId].data[11]].noFunc(taskId); } else { - gUnknown_083EC634[gTasks[taskId].data[11]].func1(taskId); + gUnknown_083EC634[gTasks[taskId].data[11]].yesFunc(taskId); } } else if (gMain.newKeys & B_BUTTON) { HandleDestroyMenuCursors(); PlaySE(SE_SELECT); - gUnknown_083EC634[gTasks[taskId].data[11]].func2(taskId); + gUnknown_083EC634[gTasks[taskId].data[11]].noFunc(taskId); } } } diff --git a/src/pokeblock.c b/src/pokeblock.c index 76a06c5ea..7b67eb408 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -5,15 +5,158 @@ #include "global.h" #include "rom4.h" #include "sprite.h" +#include "strings.h" #include "task.h" #include "unknown_task.h" #include "text.h" #include "main.h" #include "menu.h" #include "palette.h" +#include "graphics.h" +#include "decompress.h" #include "menu_helpers.h" +#include "battle.h" +#include "item_menu.h" #include "pokeblock.h" +// rodata + +const s8 gPokeblockFlavorCompatibilityTable[][5] = { + // Cool, Beauty, Cute, Smart, Tough + { 0, 0, 0, 0, 0}, // Hardy + { 1, 0, 0, 0, -1}, // Lonely + { 1, 0, -1, 0, 0}, // Brave + { 1, -1, 0, 0, 0}, // Adamant + { 1, 0, 0, -1, 0}, // Naughty + { -1, 0, 0, 0, 1}, // Bold + { 0, 0, 0, 0, 0}, // Docile + { 0, 0, -1, 0, 1}, // Relaxed + { 0, -1, 0, 0, 1}, // Impish + { 0, 0, 0, -1, 1}, // Lax + { -1, 0, 1, 0, 0}, // Timid + { 0, 0, 1, 0, -1}, // Hasty + { 0, 0, 0, 0, 0}, // Serious + { 0, -1, 1, 0, 0}, // Jolly + { 0, 0, 1, -1, 0}, // Naive + { -1, 1, 0, 0, 0}, // Modest + { 0, 1, 0, 0, -1}, // Mild + { 0, 1, -1, 0, 0}, // Quiet + { 0, 0, 0, 0, 0}, // Bashful + { 0, 1, 0, -1, 0}, // Rash + { -1, 0, 0, 1, 0}, // Calm + { 0, 0, 0, 1, -1}, // Gentle + { 0, 0, -1, 1, 0}, // Sassy + { 0, -1, 0, 1, 0}, // Careful + { 0, 0, 0, 0, 0} // Quirky +}; + +void (*const gUnknown_083F7EA8[])(void) = { + sub_80A5B40, + c2_exit_to_overworld_2_switch, + sub_802E424, + c2_exit_to_overworld_2_switch +}; + +const u8 *const gPokeblockNames[] = { + NULL, + ContestStatsText_RedPokeBlock, + ContestStatsText_BluePokeBlock, + ContestStatsText_PinkPokeBlock, + ContestStatsText_GreenPokeBlock, + ContestStatsText_YellowPokeBlock, + ContestStatsText_PurplePokeBlock, + ContestStatsText_IndigoPokeBlock, + ContestStatsText_BrownPokeBlock, + ContestStatsText_LiteBluePokeBlock, + ContestStatsText_OlivePokeBlock, + ContestStatsText_GrayPokeBlock, + ContestStatsText_BlackPokeBlock, + ContestStatsText_WhitePokeBlock, + ContestStatsText_GoldPokeBlock +}; + +void sub_810C508(u8); +void sub_810C5C0(u8); +void sub_810C748(u8); +void sub_810C788(u8); +void sub_810C854(u8); + +const struct MenuAction2 gUnknown_083F7EF4[] = { + OtherText_Use, sub_810C508, + OtherText_Toss, sub_810C5C0, + gOtherText_CancelNoTerminator, sub_810C748, + OtherText_Use, sub_810C788, + OtherText_Use, sub_810C854, +}; + +const u8 gUnknown_083F7F1C[] = {0, 1, 2}; +const u8 gUnknown_083F7F1F[] = {3, 2}; +const u8 gUnknown_083F7F21[] = {4, 2}; + +void sub_810C610(u8); +void sub_810C668(u8); + +const struct YesNoFuncTable gUnknown_083F7F24[] = {sub_810C610, sub_810C668}; + +const u8 UnreferencedData_083F7F2C[] = {0x16, 0x17, 0x18, 0x21, 0x2f}; + +const struct OamData gOamData_83F7F34 = { + .size = 3, + .priority = 2 +}; + +const union AnimCmd gSpriteAnim_83F7F3C[] = { + ANIMCMD_FRAME(.imageValue = 0, .duration = 0), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83F7F44[] = { + gSpriteAnim_83F7F3C +}; + +const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = { + AFFINEANIMCMD_FRAME(0, 0, -2, 2), + AFFINEANIMCMD_FRAME(0, 0, 2, 4), + AFFINEANIMCMD_FRAME(0, 0, -2, 4), + AFFINEANIMCMD_FRAME(0, 0, 2, 2), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] = { + gSpriteAffineAnim_83F7F48 +}; + +const struct CompressedSpriteSheet gUnknown_083F7F74 = { + gMenuPokeblockDevice_Gfx, + 0x800, + 0x39d0 +}; + +const struct CompressedSpritePalette gUnknown_083F7F7C = { + gMenuPokeblockDevice_Pal, + 0x39d0 +}; + +const struct SpriteTemplate gSpriteTemplate_83F7F84 = { + 0x39d0, + 0x39d0, + &gOamData_83F7F34, + gSpriteAnimTable_83F7F44, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + +const u8 gUnknown_083F7F9C[][8] = { + { 1, 20, 0, 0, 0, 0, 20, 0}, + { 2, 0, 20, 0, 0, 0, 20, 0}, + { 3, 0, 0, 20, 0, 0, 20, 0}, + { 4, 0, 0, 0, 20, 0, 20, 0}, + { 5, 0, 0, 0, 0, 20, 20, 0} +}; + +// text + static void sub_810B674(void) { AnimateSprites(); @@ -34,7 +177,7 @@ static void sub_810B68C(void) DmaCopy16(3, src, dest, sizeof gBGTilemapBuffers[2]); } -bool8 sub_810B998(void); +static bool8 sub_810B998(void); u8 sub_810BA50(s16, s16, u8); void sub_810BC98(void); void sub_810BD08(void); @@ -168,3 +311,31 @@ void sub_810B96C(void) } } while (sub_80F9344() != TRUE); } + +static bool8 sub_810B998(void) +{ + switch (ewram[0x1ffff]) + { + case 0: + LZDecompressVram(gMenuPokeblock_Gfx, (void *)VRAM + 0x8000); + ewram[0x1ffff]++; + break; + case 1: + sub_800D238(gMenuPokeblock_Tilemap, gBGTilemapBuffers[2]); + ewram[0x1ffff]++; + break; + case 2: + LoadCompressedPalette(gMenuPokeblock_Pal, 0, 0xc0); + ewram[0x1ffff]++; + break; + case 3: + LoadCompressedObjectPic(&gUnknown_083F7F74); + ewram[0x1ffff]++; + break; + case 4: + LoadCompressedObjectPalette(&gUnknown_083F7F7C); + ewram[0x1ffff] = 0; + return TRUE; + } + return FALSE; +} diff --git a/src/pokemon_3.c b/src/pokemon_3.c index cb8eb2a46..9a2a5d8e4 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -70,7 +70,7 @@ extern u32 gTMHMLearnsets[][2]; extern u8 gBattleMonForms[]; extern const u8 BattleText_Wally[]; extern const u16 gHMMoves[]; -extern s8 gUnknown_083F7E28[]; +extern s8 gPokeblockFlavorCompatibilityTable[]; extern u8 gLastUsedAbility; extern const u8 BattleText_PreventedSwitch[]; extern u16 gBattlePartyID[]; @@ -1238,13 +1238,13 @@ bool8 sub_8040A3C(u16 species) s8 sub_8040A54(struct Pokemon *mon, u8 a2) { u8 nature = GetNature(mon); - return gUnknown_083F7E28[nature * 5 + a2]; + return gPokeblockFlavorCompatibilityTable[nature * 5 + a2]; } s8 sub_8040A7C(u32 personality, u8 a2) { u8 nature = GetNatureFromPersonality(personality); - return gUnknown_083F7E28[nature * 5 + a2]; + return gPokeblockFlavorCompatibilityTable[nature * 5 + a2]; } bool8 IsTradedMon(struct Pokemon *mon) -- cgit v1.2.3 From b61b1fd911a15cb9bf9999658d4186b4825c4492 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Jun 2017 21:08:41 -0400 Subject: through sub_810BB88 --- asm/pokeblock.s | 272 ---------------------------------------------------- include/pokeblock.h | 4 +- src/pokeblock.c | 86 +++++++++++++++++ 3 files changed, 89 insertions(+), 273 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 4fc58f296..5d12544a6 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,278 +6,6 @@ .text - thumb_func_start sub_810BA50 -sub_810BA50: @ 810BA50 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r3, r2, 0 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _0810BA78 @ =gSpriteTemplate_83F7F84 - lsls r4, 16 - asrs r4, 16 - lsls r5, 16 - asrs r5, 16 - adds r1, r4, 0 - adds r2, r5, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0810BA78: .4byte gSpriteTemplate_83F7F84 - thumb_func_end sub_810BA50 - - thumb_func_start sub_810BA7C -sub_810BA7C: @ 810BA7C - push {lr} - ldr r1, _0810BA98 @ =gUnknown_02039244 - strb r0, [r1] - ldrb r2, [r1] - cmp r2, 0x2 - beq _0810BAA8 - cmp r2, 0x3 - beq _0810BAC0 - ldr r1, _0810BA9C @ =gUnknown_03000758 - ldr r0, _0810BAA0 @ =gUnknown_083F7F1C - str r0, [r1] - ldr r1, _0810BAA4 @ =gUnknown_0203924C - movs r0, 0x3 - b _0810BACA - .align 2, 0 -_0810BA98: .4byte gUnknown_02039244 -_0810BA9C: .4byte gUnknown_03000758 -_0810BAA0: .4byte gUnknown_083F7F1C -_0810BAA4: .4byte gUnknown_0203924C -_0810BAA8: - ldr r0, _0810BAB4 @ =gUnknown_03000758 - ldr r1, _0810BAB8 @ =gUnknown_083F7F1F - str r1, [r0] - ldr r0, _0810BABC @ =gUnknown_0203924C - strb r2, [r0] - b _0810BACC - .align 2, 0 -_0810BAB4: .4byte gUnknown_03000758 -_0810BAB8: .4byte gUnknown_083F7F1F -_0810BABC: .4byte gUnknown_0203924C -_0810BAC0: - ldr r1, _0810BAD0 @ =gUnknown_03000758 - ldr r0, _0810BAD4 @ =gUnknown_083F7F21 - str r0, [r1] - ldr r1, _0810BAD8 @ =gUnknown_0203924C - movs r0, 0x2 -_0810BACA: - strb r0, [r1] -_0810BACC: - pop {r0} - bx r0 - .align 2, 0 -_0810BAD0: .4byte gUnknown_03000758 -_0810BAD4: .4byte gUnknown_083F7F21 -_0810BAD8: .4byte gUnknown_0203924C - thumb_func_end sub_810BA7C - - thumb_func_start sub_810BADC -sub_810BADC: @ 810BADC - push {lr} - movs r0, 0x2 - bl sub_810BA7C - ldr r0, _0810BAF0 @ =sub_810B96C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0810BAF0: .4byte sub_810B96C - thumb_func_end sub_810BADC - - thumb_func_start sub_810BAF4 -sub_810BAF4: @ 810BAF4 - push {lr} - movs r0, 0x3 - bl sub_810BA7C - ldr r0, _0810BB08 @ =sub_810B96C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0810BB08: .4byte sub_810B96C - thumb_func_end sub_810BAF4 - - thumb_func_start sub_810BB0C -sub_810BB0C: @ 810BB0C - push {lr} - ldr r0, _0810BB28 @ =gWindowConfig_81E6E34 - bl BasicInitMenuWindow - ldr r0, _0810BB2C @ =0x00000111 - bl ItemId_GetItem - movs r1, 0x2 - movs r2, 0x1 - movs r3, 0x48 - bl sub_8072BD8 - pop {r0} - bx r0 - .align 2, 0 -_0810BB28: .4byte gWindowConfig_81E6E34 -_0810BB2C: .4byte 0x00000111 - thumb_func_end sub_810BB0C - - thumb_func_start sub_810BB30 -sub_810BB30: @ 810BB30 - push {lr} - ldr r0, _0810BB70 @ =gWindowConfig_81E6E34 - bl BasicInitMenuWindow - ldr r0, _0810BB74 @ =gContestStatsText_Spicy - movs r1, 0x2 - movs r2, 0xD - bl MenuPrint - ldr r0, _0810BB78 @ =gContestStatsText_Dry - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - ldr r0, _0810BB7C @ =gContestStatsText_Sweet - movs r1, 0x2 - movs r2, 0x11 - bl MenuPrint - ldr r0, _0810BB80 @ =gContestStatsText_Bitter - movs r1, 0x8 - movs r2, 0xD - bl MenuPrint - ldr r0, _0810BB84 @ =gContestStatsText_Sour - movs r1, 0x8 - movs r2, 0xF - bl MenuPrint - pop {r0} - bx r0 - .align 2, 0 -_0810BB70: .4byte gWindowConfig_81E6E34 -_0810BB74: .4byte gContestStatsText_Spicy -_0810BB78: .4byte gContestStatsText_Dry -_0810BB7C: .4byte gContestStatsText_Sweet -_0810BB80: .4byte gContestStatsText_Bitter -_0810BB84: .4byte gContestStatsText_Sour - thumb_func_end sub_810BB30 - - thumb_func_start sub_810BB88 -sub_810BB88: @ 810BB88 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _0810BBF4 @ =gWindowConfig_81E6E34 - bl BasicInitMenuWindow - mov r6, r8 - adds r0, r6, 0 - adds r0, 0x8 - cmp r6, r0 - bgt _0810BC6C - ldr r0, _0810BBF8 @ =gStringVar1 - mov r9, r0 - ldr r1, _0810BBFC @ =gSaveBlock1 - mov r10, r1 -_0810BBB0: - mov r1, r8 - subs r0, r6, r1 - lsls r0, 25 - lsrs r7, r0, 24 - ldr r0, _0810BC00 @ =gUnknown_02039248 - ldrb r0, [r0, 0x2] - cmp r6, r0 - bne _0810BC08 - mov r0, r9 - ldr r1, _0810BC04 @ =gContestStatsText_StowCase - movs r2, 0x78 - movs r3, 0 - bl sub_8072C74 - movs r2, 0x1 - orrs r2, r7 - mov r0, r9 - movs r1, 0xF - bl MenuPrint - mov r0, r8 - adds r0, 0x8 - cmp r6, r0 - beq _0810BC6C - adds r1, r7, 0x3 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0xF - movs r2, 0x1D - movs r3, 0x12 - bl MenuZeroFillWindowRect - b _0810BC6C - .align 2, 0 -_0810BBF4: .4byte gWindowConfig_81E6E34 -_0810BBF8: .4byte gStringVar1 -_0810BBFC: .4byte gSaveBlock1 -_0810BC00: .4byte gUnknown_02039248 -_0810BC04: .4byte gContestStatsText_StowCase -_0810BC08: - lsls r5, r6, 3 - mov r1, r10 - adds r0, r5, r1 - movs r1, 0xFF - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - lsls r0, 2 - ldr r1, _0810BC7C @ =gPokeblockNames - adds r0, r1 - ldr r1, [r0] - mov r0, r9 - movs r2, 0x5E - movs r3, 0 - bl sub_8072C74 - adds r4, r0, 0 - movs r0, 0xFC - strb r0, [r4] - movs r0, 0x14 - strb r0, [r4, 0x1] - movs r0, 0x6 - strb r0, [r4, 0x2] - adds r4, 0x3 - ldr r0, _0810BC80 @ =gSaveBlock1 + 0x7F8 - adds r5, r0 - adds r0, r5, 0 - bl sub_810C9B0 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - movs r2, 0x1 - orrs r2, r7 - mov r0, r9 - movs r1, 0xF - bl MenuPrint - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - mov r0, r8 - adds r0, 0x8 - cmp r6, r0 - ble _0810BBB0 -_0810BC6C: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810BC7C: .4byte gPokeblockNames -_0810BC80: .4byte gSaveBlock1 + 0x7F8 - thumb_func_end sub_810BB88 - thumb_func_start sub_810BC84 sub_810BC84: @ 810BC84 push {lr} diff --git a/include/pokeblock.h b/include/pokeblock.h index 958ccec5f..c90218480 100755 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -8,7 +8,9 @@ struct YesNoCBTable { extern u8 ewram[]; extern u8 gUnknown_02039244; -extern u8 gUnknown_02039248[2]; +extern u8 gUnknown_02039248[3]; +extern u8 gUnknown_0203924C; +extern const u8 *gUnknown_03000758; void sub_810B96C(void); void sub_810BA7C(u8); diff --git a/src/pokeblock.c b/src/pokeblock.c index 7b67eb408..437f25e46 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -17,6 +17,8 @@ #include "menu_helpers.h" #include "battle.h" #include "item_menu.h" +#include "item.h" +#include "items.h" #include "pokeblock.h" // rodata @@ -339,3 +341,87 @@ static bool8 sub_810B998(void) } return FALSE; } + +u8 sub_810BA50(s16 x, s16 y, u8 subpriority) +{ + return CreateSprite(&gSpriteTemplate_83F7F84, x, y, subpriority); +} + +void sub_810BA7C(u8 a0) +{ + gUnknown_02039244 = a0; + switch (gUnknown_02039244) + { + default: + gUnknown_03000758 = gUnknown_083F7F1C; + gUnknown_0203924C = sizeof gUnknown_083F7F1C; + break; + case 2: + gUnknown_03000758 = gUnknown_083F7F1F; + gUnknown_0203924C = sizeof gUnknown_083F7F1F; + break; + case 3: + gUnknown_03000758 = gUnknown_083F7F21; + gUnknown_0203924C = sizeof gUnknown_083F7F21; + break; + } +} + +void sub_810BADC(void) +{ + sub_810BA7C(2); + SetMainCallback2(sub_810B96C); +} + +void sub_810BAF4(void) +{ + sub_810BA7C(3); + SetMainCallback2(sub_810B96C); +} + +void sub_810BB0C(void) +{ + BasicInitMenuWindow(&gWindowConfig_81E6E34); + sub_8072BD8(ItemId_GetItem(ITEM_POKEBLOCK_CASE)->name, 2, 1, 0x48); +} + +void sub_810BB30(void) +{ + BasicInitMenuWindow(&gWindowConfig_81E6E34); + MenuPrint(gContestStatsText_Spicy, 2, 13); + MenuPrint(gContestStatsText_Dry, 2, 15); + MenuPrint(gContestStatsText_Sweet, 2, 17); + MenuPrint(gContestStatsText_Bitter, 8, 13); + MenuPrint(gContestStatsText_Sour, 8, 15); +} + +u8 sub_810C9B0(struct Pokeblock *); + +void sub_810BB88(u8 a0) +{ + u8 i; + u8 y; + u8 *buf; + BasicInitMenuWindow(&gWindowConfig_81E6E34); + for (i=a0; i<=a0+8; i++) + { + y = (i - a0) << 1; + if (i == gUnknown_02039248[2]) + { + buf = sub_8072C74(gStringVar1, gContestStatsText_StowCase, 0x78, 0); + MenuPrint(gStringVar1, 15, y + 1); + if (i != a0 + 8) + { + MenuZeroFillWindowRect(15, y + 3, 29, 18); + } + break; + } + buf = sub_8072C74(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[i].color], 0x5e, 0); + buf[0] = EXT_CTRL_CODE_BEGIN; + buf[1] = 0x14; + buf[2] = 0x06; + buf += 3; + ConvertIntToDecimalStringN(buf, sub_810C9B0(&gSaveBlock1.pokeblocks[i]), STR_CONV_MODE_RIGHT_ALIGN, 3); + MenuPrint(gStringVar1, 15, y + 1); + } +} -- cgit v1.2.3 From 5f3b6f124ff35593eeecc028234ae7d48589c768 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Jun 2017 21:27:07 -0400 Subject: through sub_810BD08 --- asm/pokeblock.s | 126 ---------------------------------------------------- include/pokeblock.h | 2 +- src/pokeblock.c | 49 ++++++++++++++++++++ 3 files changed, 50 insertions(+), 127 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 5d12544a6..1a1cc1b0c 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,132 +6,6 @@ .text - thumb_func_start sub_810BC84 -sub_810BC84: @ 810BC84 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_810BB88 - movs r0, 0 - bl sub_810BDAC - pop {r0} - bx r0 - thumb_func_end sub_810BC84 - - thumb_func_start sub_810BC98 -sub_810BC98: @ 810BC98 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r2, 0 - ldr r0, _0810BD00 @ =gSaveBlock1 - mov r9, r0 -_0810BCA6: - adds r1, r2, 0x1 - lsls r0, r1, 16 - lsrs r5, r0, 16 - mov r8, r1 - cmp r5, 0x27 - bhi _0810BCE8 - lsls r1, r2, 3 - mov r2, r9 - adds r0, r1, r2 - movs r2, 0xFF - lsls r2, 3 - adds r7, r0, r2 - ldr r0, _0810BD04 @ =gSaveBlock1 + 0x7F8 - mov r12, r0 - adds r6, r1, r0 -_0810BCC4: - ldrb r0, [r7] - cmp r0, 0 - bne _0810BCDE - ldr r3, [r6] - ldr r4, [r6, 0x4] - lsls r2, r5, 3 - add r2, r12 - ldr r0, [r2] - ldr r1, [r2, 0x4] - str r0, [r6] - str r1, [r6, 0x4] - str r3, [r2] - str r4, [r2, 0x4] -_0810BCDE: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x27 - bls _0810BCC4 -_0810BCE8: - mov r1, r8 - lsls r0, r1, 16 - lsrs r2, r0, 16 - cmp r2, 0x26 - bls _0810BCA6 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810BD00: .4byte gSaveBlock1 -_0810BD04: .4byte gSaveBlock1 + 0x7F8 - thumb_func_end sub_810BC98 - - thumb_func_start sub_810BD08 -sub_810BD08: @ 810BD08 - push {r4,r5,lr} - ldr r1, _0810BD5C @ =gUnknown_02039248 - movs r0, 0 - strb r0, [r1, 0x2] - movs r2, 0 - ldr r5, _0810BD60 @ =gSaveBlock1 - movs r4, 0xFF - lsls r4, 3 - adds r3, r1, 0 -_0810BD1A: - lsls r0, r2, 3 - adds r0, r5 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _0810BD2C - ldrb r0, [r3, 0x2] - adds r0, 0x1 - strb r0, [r3, 0x2] -_0810BD2C: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x27 - bls _0810BD1A - ldrb r0, [r1, 0x2] - cmp r0, 0x7 - bls _0810BD3E - movs r0, 0x8 -_0810BD3E: - strb r0, [r1, 0x3] - ldrb r2, [r1, 0x1] - adds r0, r2, 0 - adds r0, 0x8 - ldrb r3, [r1, 0x2] - cmp r0, r3 - ble _0810BD54 - cmp r2, 0 - beq _0810BD54 - subs r0, r2, 0x1 - strb r0, [r1, 0x1] -_0810BD54: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810BD5C: .4byte gUnknown_02039248 -_0810BD60: .4byte gSaveBlock1 - thumb_func_end sub_810BD08 - thumb_func_start sub_810BD64 sub_810BD64: @ 810BD64 push {r4,r5,lr} diff --git a/include/pokeblock.h b/include/pokeblock.h index c90218480..6fdb67369 100755 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -8,7 +8,7 @@ struct YesNoCBTable { extern u8 ewram[]; extern u8 gUnknown_02039244; -extern u8 gUnknown_02039248[3]; +extern u8 gUnknown_02039248[4]; extern u8 gUnknown_0203924C; extern const u8 *gUnknown_03000758; diff --git a/src/pokeblock.c b/src/pokeblock.c index 437f25e46..111bf2160 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -425,3 +425,52 @@ void sub_810BB88(u8 a0) MenuPrint(gStringVar1, 15, y + 1); } } + +void sub_810BDAC(bool8); + +void sub_810BC84(u8 a0) +{ + sub_810BB88(a0); + sub_810BDAC(FALSE); +} + +void sub_810BC98(void) +{ + u16 i, j; + struct Pokeblock buf; + for (i=0; i<39; i++) + { + for (j=i+1; j<40; j++) + { + if (gSaveBlock1.pokeblocks[i].color == 0) + { + buf = gSaveBlock1.pokeblocks[i]; + gSaveBlock1.pokeblocks[i] = gSaveBlock1.pokeblocks[j]; + gSaveBlock1.pokeblocks[j] = buf; + } + } + } +} + +void sub_810BD08(void) +{ + u8 i; + gUnknown_02039248[2] = 0; + for (i=0; i<40; i++) + { + if (gSaveBlock1.pokeblocks[i].color != 0) + gUnknown_02039248[2]++; + } + if (gUnknown_02039248[2] < 8) + { + gUnknown_02039248[3] = gUnknown_02039248[2]; + } + else + { + gUnknown_02039248[3] = 8; + } + if (gUnknown_02039248[1] + 8 > gUnknown_02039248[2] && gUnknown_02039248[1] != 0) + { + gUnknown_02039248[1]--; + } +} -- cgit v1.2.3 From 7fe3e5af79fba97a5077ffd0590cf36cc6de4ee2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Jun 2017 21:37:54 -0400 Subject: sub_810BD64 --- asm/pokeblock.s | 39 --------------------------------------- src/pokeblock.c | 11 +++++++++++ 2 files changed, 11 insertions(+), 39 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 1a1cc1b0c..4dea70f0e 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,45 +6,6 @@ .text - thumb_func_start sub_810BD64 -sub_810BD64: @ 810BD64 - push {r4,r5,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r5, _0810BDA4 @ =gUnknown_02039248 - ldr r4, _0810BDA8 @ =gBGTilemapBuffers + 0x1000 -_0810BD70: - ldrb r0, [r5] - lsls r0, 1 - adds r0, 0x1 - lsls r0, 5 - adds r1, r2, 0 - adds r1, 0xF - adds r0, r1 - lsls r0, 1 - adds r0, r4 - strh r3, [r0] - ldrb r0, [r5] - lsls r0, 6 - adds r0, 0x40 - adds r0, r1 - lsls r0, 1 - adds r0, r4 - strh r3, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xD - bls _0810BD70 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810BDA4: .4byte gUnknown_02039248 -_0810BDA8: .4byte gBGTilemapBuffers + 0x1000 - thumb_func_end sub_810BD64 - thumb_func_start sub_810BDAC sub_810BDAC: @ 810BDAC push {r4-r7,lr} diff --git a/src/pokeblock.c b/src/pokeblock.c index 111bf2160..ee2e5417b 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -474,3 +474,14 @@ void sub_810BD08(void) gUnknown_02039248[1]--; } } + +void sub_810BD64(u16 a0) +{ + u8 i; + int y; + for (i=0; i<14; i++) + { + (gBGTilemapBuffers)[2][(2 * gUnknown_02039248[0] + 1) * 32 + (y = i + 15)] = a0; + (gBGTilemapBuffers)[2][(2 * gUnknown_02039248[0] + 2) * 32 + y] = a0; + } +} -- cgit v1.2.3 From 6c024a4dd3207de47324b2ba68b2bec2fc5742dc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 27 Jun 2017 22:32:10 -0400 Subject: sub_810BDAC --- asm/pokeblock.s | 188 -------------------------------------------------------- src/pokeblock.c | 71 ++++++++++++++++++++- 2 files changed, 68 insertions(+), 191 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 4dea70f0e..b99780edb 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,194 +6,6 @@ .text - thumb_func_start sub_810BDAC -sub_810BDAC: @ 810BDAC - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - cmp r0, 0 - bne _0810BDCC - ldr r0, _0810BDC4 @ =0x00001005 - ldr r1, _0810BDC8 @ =0x00001014 - bl sub_810BD64 - b _0810BDD4 - .align 2, 0 -_0810BDC4: .4byte 0x00001005 -_0810BDC8: .4byte 0x00001014 -_0810BDCC: - ldr r0, _0810BDE8 @ =0x00002005 - ldr r1, _0810BDEC @ =0x00002014 - bl sub_810BD64 -_0810BDD4: - ldr r0, _0810BDF0 @ =gUnknown_02039248 - ldrb r0, [r0, 0x1] - cmp r0, 0 - beq _0810BDF4 - movs r0, 0 - movs r1, 0 - bl sub_80F979C - b _0810BDFC - .align 2, 0 -_0810BDE8: .4byte 0x00002005 -_0810BDEC: .4byte 0x00002014 -_0810BDF0: .4byte gUnknown_02039248 -_0810BDF4: - movs r0, 0 - movs r1, 0x1 - bl sub_80F979C -_0810BDFC: - ldr r2, _0810BE1C @ =gUnknown_02039248 - ldrb r0, [r2, 0x2] - ldrb r1, [r2, 0x3] - cmp r0, r1 - bls _0810BE20 - ldrb r0, [r2, 0x1] - ldrb r1, [r2, 0x3] - adds r0, r1 - ldrb r2, [r2, 0x2] - cmp r0, r2 - beq _0810BE20 - movs r0, 0x1 - movs r1, 0 - bl sub_80F979C - b _0810BE28 - .align 2, 0 -_0810BE1C: .4byte gUnknown_02039248 -_0810BE20: - movs r0, 0x1 - movs r1, 0x1 - bl sub_80F979C -_0810BE28: - movs r6, 0 - ldr r7, _0810BE94 @ =gBGTilemapBuffers + 0x1000 - movs r0, 0xF - mov r8, r0 -_0810BE30: - adds r0, r6, 0 - movs r1, 0x3 - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 18 - ldr r1, _0810BE98 @ =0x000001a1 - adds r4, r1 - adds r0, r6, 0 - movs r1, 0x3 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 1 - adds r5, r4, r1 - ldr r1, _0810BE9C @ =gUnknown_02039248 - ldrb r2, [r1] - ldrb r0, [r1, 0x1] - adds r0, r2, r0 - ldrb r1, [r1, 0x2] - cmp r0, r1 - beq _0810BEB8 - lsls r0, 3 - ldr r1, _0810BEA0 @ =gSaveBlock1 + 0x7F8 - adds r0, r1 - adds r4, r6, 0x1 - lsls r1, r4, 24 - lsrs r1, 24 - bl sub_810CA9C - lsls r0, 16 - cmp r0, 0 - ble _0810BEA4 - lsls r1, r5, 1 - adds r1, r7 - lsls r2, r6, 12 - adds r0, r2, 0 - adds r0, 0x17 - strh r0, [r1] - adds r0, r5, 0 - adds r0, 0x20 - lsls r0, 1 - adds r0, r7 - adds r2, 0x18 - strh r2, [r0] - b _0810BECC - .align 2, 0 -_0810BE94: .4byte gBGTilemapBuffers + 0x1000 -_0810BE98: .4byte 0x000001a1 -_0810BE9C: .4byte gUnknown_02039248 -_0810BEA0: .4byte gSaveBlock1 + 0x7F8 -_0810BEA4: - lsls r0, r5, 1 - adds r0, r7 - mov r1, r8 - strh r1, [r0] - adds r0, r5, 0 - adds r0, 0x20 - lsls r0, 1 - adds r0, r7 - strh r1, [r0] - b _0810BECC -_0810BEB8: - lsls r0, r5, 1 - adds r0, r7 - mov r1, r8 - strh r1, [r0] - adds r0, r5, 0 - adds r0, 0x20 - lsls r0, 1 - adds r0, r7 - strh r1, [r0] - adds r4, r6, 0x1 -_0810BECC: - lsls r0, r4, 24 - lsrs r6, r0, 24 - cmp r6, 0x4 - bls _0810BE30 - ldr r0, _0810BF10 @ =gWindowConfig_81E6E34 - bl BasicInitMenuWindow - ldr r0, _0810BF14 @ =gUnknown_02039248 - ldrb r2, [r0] - ldrb r1, [r0, 0x1] - adds r2, r1 - ldrb r0, [r0, 0x2] - cmp r2, r0 - beq _0810BF20 - ldr r4, _0810BF18 @ =gStringVar1 - lsls r0, r2, 3 - ldr r1, _0810BF1C @ =gSaveBlock1 + 0x7F8 - adds r0, r1 - bl sub_810C9E8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - movs r2, 0x10 - movs r3, 0x1 - bl sub_8072C14 - adds r0, r4, 0 - movs r1, 0xB - movs r2, 0x11 - bl MenuPrint - b _0810BF2C - .align 2, 0 -_0810BF10: .4byte gWindowConfig_81E6E34 -_0810BF14: .4byte gUnknown_02039248 -_0810BF18: .4byte gStringVar1 -_0810BF1C: .4byte gSaveBlock1 + 0x7F8 -_0810BF20: - movs r0, 0xB - movs r1, 0x11 - movs r2, 0xC - movs r3, 0x12 - bl MenuZeroFillWindowRect -_0810BF2C: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_810BDAC - thumb_func_start sub_810BF38 sub_810BF38: @ 810BF38 push {r4,lr} diff --git a/src/pokeblock.c b/src/pokeblock.c index ee2e5417b..e7405349f 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -475,13 +475,78 @@ void sub_810BD08(void) } } -void sub_810BD64(u16 a0) +void sub_810BD64(u16 a0, u16 a1) { u8 i; int y; for (i=0; i<14; i++) { - (gBGTilemapBuffers)[2][(2 * gUnknown_02039248[0] + 1) * 32 + (y = i + 15)] = a0; - (gBGTilemapBuffers)[2][(2 * gUnknown_02039248[0] + 2) * 32 + y] = a0; + gBGTilemapBuffers[2][(2 * gUnknown_02039248[0] + 1) * 32 + (y = i + 15)] = a0; + gBGTilemapBuffers[2][(2 * gUnknown_02039248[0] + 2) * 32 + y] = a0; + } +} + +s16 sub_810CA9C(struct Pokeblock *, u8); +u8 sub_810C9E8(struct Pokeblock *); + +void sub_810BDAC(bool8 flag) +{ + u8 i; + u16 v0; + if (!flag) + { + sub_810BD64(0x1005, 0x1014); + } + else + { + sub_810BD64(0x2005, 0x2014); + } + if (gUnknown_02039248[1]) + { + sub_80F979C(0, 0); + } + else + { + sub_80F979C(0, 1); + } + if (gUnknown_02039248[2] > gUnknown_02039248[3] && gUnknown_02039248[1] + gUnknown_02039248[3] != gUnknown_02039248[2]) + { + sub_80F979C(1, 0); + } + else + { + sub_80F979C(1, 1); + } + for (i=0; i<5; i++) + { + v0 = ((i % 3) << 6) + 0x1a1 + (i / 3) * 6; + if (gUnknown_02039248[0] + gUnknown_02039248[1] != gUnknown_02039248[2]) + { + if (sub_810CA9C(&gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]], i + 1) > 0) + { + gBGTilemapBuffers[2][v0] = (i << 12) + 23; + gBGTilemapBuffers[2][v0 + 32] = (i << 12) + 24; + } + else + { + gBGTilemapBuffers[2][v0] = 15; + gBGTilemapBuffers[2][v0 + 32] = 15; + } + } + else + { + gBGTilemapBuffers[2][v0] = 15; + gBGTilemapBuffers[2][v0 + 32] = 15; + } + } + BasicInitMenuWindow(&gWindowConfig_81E6E34); + if (gUnknown_02039248[0] + gUnknown_02039248[1] != gUnknown_02039248[2]) + { + sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]]), 16, 1); + MenuPrint(gStringVar1, 11, 17); + } + else + { + MenuZeroFillWindowRect(11, 17, 12, 18); } } -- cgit v1.2.3 From d5e220ebbe7ca570306ee176926b9d81373414df Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Tue, 27 Jun 2017 22:56:08 -0400 Subject: decompile up to sub_80BAE10 --- asm/sound_check_menu.s | 516 ------------------------------------------------- include/global.h | 3 + src/sound_check_menu.c | 252 +++++++++++++++++++++--- 3 files changed, 224 insertions(+), 547 deletions(-) diff --git a/asm/sound_check_menu.s b/asm/sound_check_menu.s index 9ebeee4e8..1501070fc 100644 --- a/asm/sound_check_menu.s +++ b/asm/sound_check_menu.s @@ -6,522 +6,6 @@ .text - thumb_func_start sub_80BAA48 -sub_80BAA48: @ 80BAA48 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080BAA90 @ =gMain - ldrh r2, [r1, 0x2E] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _080BAAA8 - movs r1, 0x80 - lsls r1, 19 - ldr r2, _080BAA94 @ =0x00007140 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x40 - ldr r2, _080BAA98 @ =0x000011df - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x4 - ldr r2, _080BAA9C @ =0x0000011f - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _080BAAA0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BAAA4 @ =sub_80BA258 - str r1, [r0] - b _080BACC6 - .align 2, 0 -_080BAA90: .4byte gMain -_080BAA94: .4byte 0x00007140 -_080BAA98: .4byte 0x000011df -_080BAA9C: .4byte 0x0000011f -_080BAAA0: .4byte gTasks -_080BAAA4: .4byte sub_80BA258 -_080BAAA8: - ldrh r1, [r1, 0x30] - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - beq _080BAAD0 - ldr r1, _080BAACC @ =gUnknown_020387B3 - ldrb r2, [r1] - subs r0, r2, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bge _080BAAEA - movs r0, 0x8 - strb r0, [r1] - b _080BAAEA - .align 2, 0 -_080BAACC: .4byte gUnknown_020387B3 -_080BAAD0: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BAAF8 - ldr r1, _080BAAF4 @ =gUnknown_020387B3 - ldrb r2, [r1] - adds r0, r2, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x8 - ble _080BAAEA - strb r3, [r1] -_080BAAEA: - ldrb r1, [r1] - adds r0, r2, 0 - bl sub_80BAE10 - b _080BACC6 - .align 2, 0 -_080BAAF4: .4byte gUnknown_020387B3 -_080BAAF8: - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _080BAB14 - ldr r0, _080BAB10 @ =gUnknown_020387D8 - ldrb r1, [r0] - movs r2, 0x1 - eors r1, r2 - strb r1, [r0] - bl sub_80BAD5C - b _080BACC6 - .align 2, 0 -_080BAB10: .4byte gUnknown_020387D8 -_080BAB14: - movs r0, 0x4 - ands r0, r2 - cmp r0, 0 - beq _080BAB38 - ldr r4, _080BAB34 @ =gUnknown_020387D9 - ldrb r0, [r4] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4] - bl sub_80BAD5C - ldrb r0, [r4] - bl SetPokemonCryStereo - b _080BACC6 - .align 2, 0 -_080BAB34: .4byte gUnknown_020387D9 -_080BAB38: - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080BAB46 - movs r0, 0xA - b _080BAB6E -_080BAB46: - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080BAB56 - movs r0, 0xA - negs r0, r0 - b _080BAB6E -_080BAB56: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080BAB64 - movs r0, 0x1 - negs r0, r0 - b _080BAB6E -_080BAB64: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080BAB78 - movs r0, 0x1 -_080BAB6E: - bl sub_80BACDC - bl sub_80BAD5C - b _080BACC6 -_080BAB78: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _080BAB82 - b _080BACA2 -_080BAB82: - ldr r4, _080BABE4 @ =gUnknown_020387B4 - ldrb r0, [r4, 0x4] - bl SetPokemonCryVolume - movs r0, 0x8 - ldrsb r0, [r4, r0] - bl SetPokemonCryPanpot - movs r1, 0xC - ldrsh r0, [r4, r1] - bl SetPokemonCryPitch - ldrh r0, [r4, 0x10] - bl SetPokemonCryLength - ldr r0, [r4, 0x18] - bl SetPokemonCryProgress - ldrb r0, [r4, 0x14] - bl SetPokemonCryRelease - movs r0, 0x1C - ldrsb r0, [r4, r0] - bl SetPokemonCryChorus - ldr r0, [r4, 0x20] - lsls r0, 24 - lsrs r0, 24 - bl SetPokemonCryPriority - ldr r4, [r4] - adds r0, r4, 0 - cmp r4, 0 - bge _080BABC8 - adds r0, 0x7F -_080BABC8: - asrs r2, r0, 7 - lsls r0, r2, 7 - subs r0, r4, r0 - lsls r0, 24 - lsrs r1, r0, 24 - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BAC1C - cmp r0, 0x1 - bgt _080BABE8 - cmp r0, 0 - beq _080BABF2 - b _080BACA2 - .align 2, 0 -_080BABE4: .4byte gUnknown_020387B4 -_080BABE8: - cmp r0, 0x2 - beq _080BAC48 - cmp r0, 0x3 - beq _080BAC74 - b _080BACA2 -_080BABF2: - ldr r0, _080BAC04 @ =gUnknown_020387D8 - ldrb r0, [r0] - cmp r0, 0 - beq _080BAC0C - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC08 @ =voicegroup_84537C0 - b _080BAC98 - .align 2, 0 -_080BAC04: .4byte gUnknown_020387D8 -_080BAC08: .4byte voicegroup_84537C0 -_080BAC0C: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC18 @ =voicegroup_8452590 - b _080BAC98 - .align 2, 0 -_080BAC18: .4byte voicegroup_8452590 -_080BAC1C: - ldr r0, _080BAC30 @ =gUnknown_020387D8 - ldrb r0, [r0] - cmp r0, 0 - beq _080BAC38 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC34 @ =voicegroup_8453DC0 - b _080BAC98 - .align 2, 0 -_080BAC30: .4byte gUnknown_020387D8 -_080BAC34: .4byte voicegroup_8453DC0 -_080BAC38: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC44 @ =voicegroup_8452B90 - b _080BAC98 - .align 2, 0 -_080BAC44: .4byte voicegroup_8452B90 -_080BAC48: - ldr r0, _080BAC5C @ =gUnknown_020387D8 - ldrb r0, [r0] - cmp r0, 0 - beq _080BAC64 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC60 @ =voicegroup_84543C0 - b _080BAC98 - .align 2, 0 -_080BAC5C: .4byte gUnknown_020387D8 -_080BAC60: .4byte voicegroup_84543C0 -_080BAC64: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC70 @ =voicegroup_8453190 - b _080BAC98 - .align 2, 0 -_080BAC70: .4byte voicegroup_8453190 -_080BAC74: - ldr r0, _080BAC88 @ =gUnknown_020387D8 - ldrb r0, [r0] - cmp r0, 0 - beq _080BAC90 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC8C @ =voicegroup_84549C0 - b _080BAC98 - .align 2, 0 -_080BAC88: .4byte gUnknown_020387D8 -_080BAC8C: .4byte voicegroup_84549C0 -_080BAC90: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BACCC @ =voicegroup_8453790 -_080BAC98: - adds r0, r1 - bl SetPokemonCryTone - ldr r1, _080BACD0 @ =gUnknown_03005D30 - str r0, [r1] -_080BACA2: - ldr r0, _080BACD0 @ =gUnknown_03005D30 - ldr r0, [r0] - cmp r0, 0 - beq _080BACC6 - ldr r5, _080BACD4 @ =gUnknown_020387B1 - bl IsPokemonCryPlaying - strb r0, [r5] - ldr r4, _080BACD8 @ =gUnknown_020387B2 - lsls r0, 24 - lsrs r0, 24 - ldrb r2, [r4] - cmp r0, r2 - beq _080BACC2 - bl sub_80BAD5C -_080BACC2: - ldrb r0, [r5] - strb r0, [r4] -_080BACC6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BACCC: .4byte voicegroup_8453790 -_080BACD0: .4byte gUnknown_03005D30 -_080BACD4: .4byte gUnknown_020387B1 -_080BACD8: .4byte gUnknown_020387B2 - thumb_func_end sub_80BAA48 - - thumb_func_start sub_80BACDC -sub_80BACDC: @ 80BACDC - push {r4-r6,lr} - sub sp, 0x40 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080BAD50 @ =gUnknown_083D039C - mov r0, sp - movs r2, 0x40 - bl memcpy - ldr r6, _080BAD54 @ =gUnknown_020387B4 - ldr r5, _080BAD58 @ =gUnknown_020387B3 - movs r1, 0 - ldrsb r1, [r5, r1] - lsls r1, 2 - adds r1, r6 - lsls r4, 24 - asrs r4, 24 - ldr r0, [r1] - adds r0, r4 - str r0, [r1] - movs r2, 0 - ldrsb r2, [r5, r2] - lsls r0, r2, 2 - adds r3, r0, r6 - lsls r0, r2, 1 - adds r0, 0x1 - lsls r0, 2 - add r0, sp - ldr r1, [r3] - ldr r0, [r0] - cmp r1, r0 - ble _080BAD26 - lsls r0, r2, 3 - add r0, sp - ldr r0, [r0] - str r0, [r3] -_080BAD26: - movs r2, 0 - ldrsb r2, [r5, r2] - lsls r0, r2, 2 - adds r3, r0, r6 - lsls r0, r2, 3 - add r0, sp - ldr r1, [r3] - ldr r0, [r0] - cmp r1, r0 - bge _080BAD46 - lsls r0, r2, 1 - adds r0, 0x1 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - str r0, [r3] -_080BAD46: - add sp, 0x40 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BAD50: .4byte gUnknown_083D039C -_080BAD54: .4byte gUnknown_020387B4 -_080BAD58: .4byte gUnknown_020387B3 - thumb_func_end sub_80BACDC - - thumb_func_start sub_80BAD5C -sub_80BAD5C: @ 80BAD5C - push {r4,lr} - ldr r4, _080BAE00 @ =gUnknown_020387B4 - ldr r0, [r4] - adds r0, 0x1 - movs r1, 0xB - movs r2, 0x1 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x4] - movs r1, 0xB - movs r2, 0x3 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x8] - movs r1, 0xB - movs r2, 0x5 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0xC] - movs r1, 0xB - movs r2, 0x7 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x10] - movs r1, 0xB - movs r2, 0x9 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x14] - movs r1, 0xB - movs r2, 0xB - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x18] - movs r1, 0xB - movs r2, 0xD - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x1C] - movs r1, 0xB - movs r2, 0xF - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x20] - movs r1, 0xB - movs r2, 0x11 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, _080BAE04 @ =gUnknown_020387B1 - ldrb r0, [r0] - movs r1, 0x1B - movs r2, 0x10 - movs r3, 0x1 - bl sub_80BAE78 - ldr r0, _080BAE08 @ =gUnknown_020387D8 - ldrb r0, [r0] - movs r1, 0x1B - movs r2, 0xE - movs r3, 0x1 - bl sub_80BAE78 - ldr r0, _080BAE0C @ =gUnknown_020387D9 - ldrb r0, [r0] - movs r1, 0x1B - movs r2, 0xC - movs r3, 0x1 - bl sub_80BAE78 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BAE00: .4byte gUnknown_020387B4 -_080BAE04: .4byte gUnknown_020387B1 -_080BAE08: .4byte gUnknown_020387D8 -_080BAE0C: .4byte gUnknown_020387D9 - thumb_func_end sub_80BAD5C - - thumb_func_start sub_80BAE10 -sub_80BAE10: @ 80BAE10 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080BAE6C @ =gUnknown_083D03DC - mov r0, sp - movs r2, 0x2 - bl memcpy - add r0, sp, 0x4 - mov r8, r0 - ldr r1, _080BAE70 @ =gUnknown_083D03DE - movs r2, 0x2 - bl memcpy - ldr r6, _080BAE74 @ =gUnknown_083D0300 - lsls r4, 1 - adds r0, r4, r6 - ldrb r1, [r0] - adds r4, 0x1 - adds r4, r6 - ldrb r2, [r4] - mov r0, r8 - bl MenuPrint - lsls r5, 1 - adds r0, r5, r6 - ldrb r1, [r0] - adds r5, 0x1 - adds r5, r6 - ldrb r2, [r5] - mov r0, sp - bl MenuPrint - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BAE6C: .4byte gUnknown_083D03DC -_080BAE70: .4byte gUnknown_083D03DE -_080BAE74: .4byte gUnknown_083D0300 - thumb_func_end sub_80BAE10 - thumb_func_start sub_80BAE78 sub_80BAE78: @ 80BAE78 push {r4-r7,lr} diff --git a/include/global.h b/include/global.h index e90fcdd0f..ce58c02f4 100644 --- a/include/global.h +++ b/include/global.h @@ -43,6 +43,9 @@ fndec\ #define min(a, b) (a >= b ? a : b) #define max(a, b) (a <= b ? a : b) +// why does GF hate 2d arrays +#define ARR_2D(x, y) ((x) * 2 + (y)) + enum { VERSION_SAPPHIRE = 1, diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index a46e7e363..8736a63f1 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -22,38 +22,55 @@ enum SE_WINDOW }; -extern void sub_80BA6B8(u8); -extern void sub_80BA800(u8); +// driver test cry enums +enum +{ + CRY_TEST_UNK0, + CRY_TEST_VOLUME, + CRY_TEST_PANPOT, + CRY_TEST_PITCH, + CRY_TEST_LENGTH, + CRY_TEST_RELEASE, + CRY_TEST_PROGRESS, + CRY_TEST_CHORUS, + CRY_TEST_PRIORITY +}; + +// minmax range enums +enum +{ + MIN, + MAX +}; + extern void sub_80BAF84(u8); extern void sub_80BB25C(u8); extern void sub_80BA68C(u8); -extern void sub_80BAD5C(void); -extern void sub_80BAE10(u8, u8); -extern void sub_80BAA48(u8); +extern void sub_80BAE78(int, int, int, int); -struct Struct_20387B4 -{ - u32 unk0; - u32 unk4; - u32 unk8; - u32 unkC; - u32 unk10; - u32 unk14; - u32 unk18; - u32 unk1C; - u32 unk20; -}; +extern struct ToneData voicegroup_84537C0[]; +extern struct ToneData voicegroup_8452590[]; +extern struct ToneData voicegroup_8453DC0[]; +extern struct ToneData voicegroup_8452B90[]; +extern struct ToneData voicegroup_84543C0[]; +extern struct ToneData voicegroup_8453190[]; +extern struct ToneData voicegroup_84549C0[]; +extern struct ToneData voicegroup_8453790[]; + +extern u8 gUnknown_083D0300[18]; -extern struct Struct_20387B4 gUnknown_020387B4; +extern int gUnknown_020387B4[9]; +extern int gUnknown_083D039C[16]; -extern u8 gUnknown_020387B3; +extern s8 gUnknown_020387B3; extern u8 gUnknown_020387B1; extern u8 gUnknown_020387B2; -extern u32 gUnknown_03005D30; extern u8 gUnknown_020387D8; extern u8 gUnknown_020387D9; extern u8 gUnknown_020387B0; +extern struct MusicPlayerInfo *gUnknown_03005D30; + extern u8 *gBGMNames[]; extern u8 *gSENames[]; @@ -77,12 +94,20 @@ extern u8 gDebugText_Priority[]; extern u8 gDebugText_Playing[]; extern u8 gDebugText_Reverse[]; extern u8 gDebugText_Stereo[]; +extern u8 gUnknown_083D03DC[]; +extern u8 gUnknown_083D03DE[]; void sub_80BA258(u8); void sub_80BA384(u8); void sub_80BA65C(u8); +void sub_80BA6B8(u8); void sub_80BA700(u16, u16, u16); void sub_80BA79C(u8 *, u16, u16); +void sub_80BA800(u8); +void sub_80BAA48(u8); +void sub_80BACDC(s8); +void sub_80BAD5C(void); +void sub_80BAE10(u8, u8); void sub_80BA0A8(void) { @@ -744,7 +769,7 @@ void sub_80BA79C(u8 *string, u16 x, u16 y) MenuPrint(str, x, y); } -void sub_80BA800(u8 taskId) +void sub_80BA800(u8 taskId) // Task_DrawDriverTestMenu { u8 bbackStr[10]; u8 aplayStr[11]; @@ -797,19 +822,184 @@ void sub_80BA800(u8 taskId) gUnknown_020387B3 = 0; gUnknown_020387B1 = 0; gUnknown_020387B2 = 0; - gUnknown_03005D30 = 0; + gUnknown_03005D30 = NULL; gUnknown_020387D8 = 0; gUnknown_020387D9 = 1; - gUnknown_020387B4.unk0 = 0; - gUnknown_020387B4.unk4 = 0x78; - gUnknown_020387B4.unk8 = 0; - gUnknown_020387B4.unkC = 0x3C00; - gUnknown_020387B4.unk10 = 0xB4; - gUnknown_020387B4.unk18 = 0; - gUnknown_020387B4.unk14 = 0; - gUnknown_020387B4.unk1C = 0; - gUnknown_020387B4.unk20 = 2; + gUnknown_020387B4[CRY_TEST_UNK0] = 0; + gUnknown_020387B4[CRY_TEST_VOLUME] = 0x78; + gUnknown_020387B4[CRY_TEST_PANPOT] = 0; + gUnknown_020387B4[CRY_TEST_PITCH] = 0x3C00; + gUnknown_020387B4[CRY_TEST_LENGTH] = 0xB4; + gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; + gUnknown_020387B4[CRY_TEST_RELEASE] = 0; + gUnknown_020387B4[CRY_TEST_CHORUS] = 0; + gUnknown_020387B4[CRY_TEST_PRIORITY] = 2; sub_80BAD5C(); sub_80BAE10(0, 0); gTasks[taskId].func = sub_80BAA48; } + +void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput +{ + if(gMain.newKeys & 0x2) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = 0x11DF; + REG_WIN0V = 0x11F; + MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + gTasks[taskId].func = sub_80BA258; + return; + } + if(gMain.newAndRepeatedKeys & 0x40) // _080BAAA8 + { + u8 backupVar = gUnknown_020387B3; + if(--gUnknown_020387B3 < 0) + gUnknown_020387B3 = 8; + + sub_80BAE10(backupVar, gUnknown_020387B3); + return; + } + if(gMain.newAndRepeatedKeys & 0x80) // _080BAAD0 + { + u8 backupVar = gUnknown_020387B3; + if(++gUnknown_020387B3 > 8) + gUnknown_020387B3 = 0; + + sub_80BAE10(backupVar, gUnknown_020387B3); + return; + } + if(gMain.newKeys & 0x8) // _080BAAF8 + { + gUnknown_020387D8 ^= 1; + sub_80BAD5C(); + return; + } + if(gMain.newKeys & 0x4) // _080BAB14 + { + gUnknown_020387D9 ^= 1; + sub_80BAD5C(); + SetPokemonCryStereo(gUnknown_020387D9); + return; + } + if(gMain.newAndRepeatedKeys & 0x100) // _080BAB38 + { + sub_80BACDC(10); + sub_80BAD5C(); + return; + } + if(gMain.newAndRepeatedKeys & 0x200) // _080BAB46 + { + sub_80BACDC(-10); + sub_80BAD5C(); + return; + } + if(gMain.newAndRepeatedKeys & 0x20) // _080BAB56 + { + sub_80BACDC(-1); + sub_80BAD5C(); + return; + } + if(gMain.newAndRepeatedKeys & 0x10) // _080BAB64 + { + sub_80BACDC(1); + sub_80BAD5C(); + return; + } + if(gMain.newKeys & 0x1) // _080BAB78 + { + u8 divide, remaining; + + SetPokemonCryVolume(gUnknown_020387B4[CRY_TEST_VOLUME]); + SetPokemonCryPanpot(gUnknown_020387B4[CRY_TEST_PANPOT]); + SetPokemonCryPitch(gUnknown_020387B4[CRY_TEST_PITCH]); + SetPokemonCryLength(gUnknown_020387B4[CRY_TEST_LENGTH]); + SetPokemonCryProgress(gUnknown_020387B4[CRY_TEST_PROGRESS]); + SetPokemonCryRelease(gUnknown_020387B4[CRY_TEST_RELEASE]); + SetPokemonCryChorus(gUnknown_020387B4[CRY_TEST_CHORUS]); + SetPokemonCryPriority(gUnknown_020387B4[CRY_TEST_PRIORITY]); + + remaining = gUnknown_020387B4[CRY_TEST_UNK0] % 128; + divide = gUnknown_020387B4[CRY_TEST_UNK0] / 128; + + switch(divide) + { + case 0: + if(gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84537C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452590[remaining]); + break; + case 1: + if(gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453DC0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452B90[remaining]); + break; + case 2: + if(gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84543C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453190[remaining]); + break; + case 3: + if(gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84549C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453790[remaining]); + break; + } + } + + // _080BACA2 + if(gUnknown_03005D30 != NULL) + { + gUnknown_020387B1 = IsPokemonCryPlaying(gUnknown_03005D30); + + if(gUnknown_020387B1 != gUnknown_020387B2) + sub_80BAD5C(); + + gUnknown_020387B2 = gUnknown_020387B1; + } +} + +void sub_80BACDC(s8 var) +{ + int minMaxArray[16]; + + memcpy(minMaxArray, gUnknown_083D039C, sizeof minMaxArray); + gUnknown_020387B4[gUnknown_020387B3] += var; + + if(gUnknown_020387B4[gUnknown_020387B3] > minMaxArray[ARR_2D(gUnknown_020387B3, MAX)]) + gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[ARR_2D(gUnknown_020387B3, MIN)]; + + if(gUnknown_020387B4[gUnknown_020387B3] < minMaxArray[ARR_2D(gUnknown_020387B3, MIN)]) + gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[ARR_2D(gUnknown_020387B3, MAX)]; +} + +void sub_80BAD5C(void) +{ + sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0] + 1, 0xB, 0x1, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_VOLUME], 0xB, 0x3, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_PANPOT], 0xB, 0x5, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_PITCH], 0xB, 0x7, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_LENGTH], 0xB, 0x9, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_RELEASE], 0xB, 0xB, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_PROGRESS], 0xB, 0xD, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_CHORUS], 0xB, 0xF, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_PRIORITY], 0xB, 0x11, 0x5); + sub_80BAE78(gUnknown_020387B1, 0x1B, 0x10, 0x1); + sub_80BAE78(gUnknown_020387D8, 0x1B, 0xE, 0x1); + sub_80BAE78(gUnknown_020387D9, 0x1B, 0xC, 0x1); +} + +void sub_80BAE10(u8 var1, u8 var2) +{ + u8 str1[2]; + u8 str2[2]; + + memcpy(str1, gUnknown_083D03DC, sizeof str1); + memcpy(str2, gUnknown_083D03DE, sizeof str2); + + MenuPrint(str2, gUnknown_083D0300[ARR_2D(var1, 0)], gUnknown_083D0300[ARR_2D(var1, 1)]); + MenuPrint(str1, gUnknown_083D0300[ARR_2D(var2, 0)], gUnknown_083D0300[ARR_2D(var2, 1)]); +} -- cgit v1.2.3 From b2ac045c71d0695dcdde96f1cb6a5b513fbaa294 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Jun 2017 08:45:32 -0400 Subject: sub_810BF7C --- asm/pokeblock.s | 193 -------------------------------------------------------- src/pokeblock.c | 82 ++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 193 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index b99780edb..3244b3586 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,199 +6,6 @@ .text - thumb_func_start sub_810BF38 -sub_810BF38: @ 810BF38 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x5 - bl PlaySE - ldr r2, _0810BF6C @ =gSprites - ldr r0, _0810BF70 @ =0x02000000 - ldr r1, _0810BF74 @ =0x0001fffe - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _0810BF78 @ =sub_810C8D4 - str r1, [r0] - adds r0, r4, 0 - bl sub_810BDAC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810BF6C: .4byte gSprites -_0810BF70: .4byte 0x02000000 -_0810BF74: .4byte 0x0001fffe -_0810BF78: .4byte sub_810C8D4 - thumb_func_end sub_810BF38 - - thumb_func_start sub_810BF7C -sub_810BF7C: @ 810BF7C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, r5, 0 - ldr r0, _0810BFB8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r3, 0x80 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0810BF94 - b _0810C0B8 -_0810BF94: - ldr r2, _0810BFBC @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0810BFCE - ldr r4, _0810BFC0 @ =gUnknown_02039248 - ldrb r0, [r4] - cmp r0, 0 - beq _0810BFC4 - movs r0, 0x5 - movs r1, 0x14 - bl sub_810BD64 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - b _0810C00A - .align 2, 0 -_0810BFB8: .4byte gPaletteFade -_0810BFBC: .4byte gMain -_0810BFC0: .4byte gUnknown_02039248 -_0810BFC4: - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _0810C0B8 - subs r0, 0x1 - b _0810C002 -_0810BFCE: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0810C012 - ldr r4, _0810BFF0 @ =gUnknown_02039248 - ldrb r0, [r4] - ldrb r1, [r4, 0x3] - cmp r0, r1 - beq _0810BFF4 - movs r0, 0x5 - movs r1, 0x14 - bl sub_810BD64 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0810C00A - .align 2, 0 -_0810BFF0: .4byte gUnknown_02039248 -_0810BFF4: - ldrb r1, [r4, 0x1] - ldrb r0, [r4] - adds r0, r1, r0 - ldrb r2, [r4, 0x2] - cmp r0, r2 - beq _0810C0B8 - adds r0, r1, 0x1 -_0810C002: - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x1] - bl sub_810BB88 -_0810C00A: - movs r0, 0 - bl sub_810BF38 - b _0810C0B8 -_0810C012: - ldrh r1, [r2, 0x2E] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0810C05C - ldr r4, _0810C050 @ =gUnknown_02039248 - ldrb r0, [r4, 0x1] - ldrb r1, [r4] - adds r0, r1 - ldrb r1, [r4, 0x2] - cmp r0, r1 - beq _0810C0B8 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl sub_810BDAC - ldr r1, _0810C054 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrb r1, [r4, 0x1] - ldrb r2, [r4] - adds r1, r2 - strh r1, [r0, 0x8] - ldr r1, _0810C058 @ =sub_810C0C8 - str r1, [r0] - b _0810C0B8 - .align 2, 0 -_0810C050: .4byte gUnknown_02039248 -_0810C054: .4byte gTasks -_0810C058: .4byte sub_810C0C8 -_0810C05C: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0810C09C - movs r0, 0x5 - bl PlaySE - ldr r0, _0810C088 @ =gUnknown_02039248 - ldrb r1, [r0, 0x1] - ldrb r2, [r0] - adds r1, r2 - ldrb r0, [r0, 0x2] - cmp r1, r0 - bne _0810C094 - ldr r1, _0810C08C @ =gScriptResult - ldr r2, _0810C090 @ =0x0000ffff - adds r0, r2, 0 - strh r0, [r1] - adds r0, r5, 0 - bl sub_810C31C - b _0810C0B8 - .align 2, 0 -_0810C088: .4byte gUnknown_02039248 -_0810C08C: .4byte gScriptResult -_0810C090: .4byte 0x0000ffff -_0810C094: - adds r0, r5, 0 - bl sub_810C368 - b _0810C0B8 -_0810C09C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0810C0B8 - movs r0, 0x5 - bl PlaySE - ldr r1, _0810C0C0 @ =gScriptResult - ldr r2, _0810C0C4 @ =0x0000ffff - adds r0, r2, 0 - strh r0, [r1] - adds r0, r4, 0 - bl sub_810C31C -_0810C0B8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810C0C0: .4byte gScriptResult -_0810C0C4: .4byte 0x0000ffff - thumb_func_end sub_810BF7C - thumb_func_start sub_810C0C8 sub_810C0C8: @ 810C0C8 push {r4,r5,lr} diff --git a/src/pokeblock.c b/src/pokeblock.c index e7405349f..e22752253 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -5,6 +5,7 @@ #include "global.h" #include "rom4.h" #include "sprite.h" +#include "script.h" #include "strings.h" #include "task.h" #include "unknown_task.h" @@ -19,6 +20,8 @@ #include "item_menu.h" #include "item.h" #include "items.h" +#include "sound.h" +#include "songs.h" #include "pokeblock.h" // rodata @@ -550,3 +553,82 @@ void sub_810BDAC(bool8 flag) MenuZeroFillWindowRect(11, 17, 12, 18); } } + +void sub_810C8D4(struct Sprite *); + +void sub_810BF38(bool8 flag) +{ + PlaySE(SE_SELECT); + gSprites[ewram[0x1fffe]].callback = sub_810C8D4; + sub_810BDAC(flag); +} + +void sub_810C0C8(u8); +void sub_810C31C(u8); +void sub_810C368(u8); + +void sub_810BF7C(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (gUnknown_02039248[0] != 0) + { + sub_810BD64(5, 20); + gUnknown_02039248[0]--; + sub_810BF38(FALSE); + } + else if (gUnknown_02039248[1] != 0) + { + gUnknown_02039248[1]--; + sub_810BB88(gUnknown_02039248[1]); + sub_810BF38(FALSE); + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (gUnknown_02039248[0] != gUnknown_02039248[3]) + { + sub_810BD64(5, 20); + gUnknown_02039248[0]++; + sub_810BF38(FALSE); + } + else if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2]) + { + gUnknown_02039248[1]++; + sub_810BB88(gUnknown_02039248[1]); + sub_810BF38(FALSE); + } + } + else if (gMain.newKeys & SELECT_BUTTON) + { + if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2]) + { + PlaySE(SE_SELECT); + sub_810BDAC(TRUE); + gTasks[taskId].data[0] = gUnknown_02039248[1] + gUnknown_02039248[0]; + gTasks[taskId].func = sub_810C0C8; + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gUnknown_02039248[1] + gUnknown_02039248[0] == gUnknown_02039248[2]) + { + gScriptResult = 0xffff; + sub_810C31C(taskId); + } + else + { + sub_810C368(taskId); + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gScriptResult = 0xffff; + sub_810C31C(taskId); + } + } +} -- cgit v1.2.3 From a33c8cb4f38a6977d9b2d41c06555243892efa54 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 09:32:50 -0400 Subject: sub_810C0C8 --- asm/pokeblock.s | 125 -------------------------------------------------------- src/pokeblock.c | 57 ++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 125 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 3244b3586..576a80930 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,131 +6,6 @@ .text - thumb_func_start sub_810C0C8 -sub_810C0C8: @ 810C0C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r2, _0810C0F4 @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0810C110 - ldr r4, _0810C0F8 @ =gUnknown_02039248 - ldrb r0, [r4] - cmp r0, 0 - beq _0810C0FC - movs r0, 0x5 - movs r1, 0x14 - bl sub_810BD64 - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] - b _0810C158 - .align 2, 0 -_0810C0F4: .4byte gMain -_0810C0F8: .4byte gUnknown_02039248 -_0810C0FC: - ldrb r0, [r4, 0x1] - cmp r0, 0 - beq _0810C1BA - adds r0, r5, 0 - movs r1, 0 - bl sub_810C1C8 - ldrb r0, [r4, 0x1] - subs r0, 0x1 - b _0810C150 -_0810C110: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0810C168 - ldr r4, _0810C134 @ =gUnknown_02039248 - ldrb r0, [r4] - ldrb r1, [r4, 0x3] - cmp r0, r1 - beq _0810C138 - movs r0, 0x5 - movs r1, 0x14 - bl sub_810BD64 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _0810C158 - .align 2, 0 -_0810C134: .4byte gUnknown_02039248 -_0810C138: - ldrb r0, [r4, 0x1] - ldrb r1, [r4] - adds r0, r1 - ldrb r1, [r4, 0x2] - cmp r0, r1 - beq _0810C1BA - adds r0, r5, 0 - movs r1, 0 - bl sub_810C1C8 - ldrb r0, [r4, 0x1] - adds r0, 0x1 -_0810C150: - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x1] - bl sub_810BB88 -_0810C158: - movs r0, 0x1 - bl sub_810BF38 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_810C1C8 - b _0810C1BA -_0810C168: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0810C17A - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0810C190 -_0810C17A: - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - movs r1, 0 - bl sub_810C1C8 - adds r0, r5, 0 - bl sub_810C23C - b _0810C1AC -_0810C190: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0810C1BA - movs r0, 0x5 - bl PlaySE - adds r0, r5, 0 - movs r1, 0 - bl sub_810C1C8 - movs r0, 0 - bl sub_810BDAC -_0810C1AC: - ldr r0, _0810C1C0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0810C1C4 @ =sub_810BF7C - str r0, [r1] -_0810C1BA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810C1C0: .4byte gTasks -_0810C1C4: .4byte sub_810BF7C - thumb_func_end sub_810C0C8 - thumb_func_start sub_810C1C8 sub_810C1C8: @ 810C1C8 push {r4-r6,lr} diff --git a/src/pokeblock.c b/src/pokeblock.c index e22752253..0f1e36ee7 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -632,3 +632,60 @@ void sub_810BF7C(u8 taskId) } } } + +void sub_810C1C8(u8, u8); +void sub_810C23C(u8); + +void sub_810C0C8(u8 taskId) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (gUnknown_02039248[0] != 0) + { + sub_810BD64(5, 20); + gUnknown_02039248[0]--; + sub_810BF38(TRUE); + sub_810C1C8(taskId, 1); + } + else if (gUnknown_02039248[1] != 0) + { + sub_810C1C8(taskId, 0); + gUnknown_02039248[1]--; + sub_810BB88(gUnknown_02039248[1]); + sub_810BF38(TRUE); + sub_810C1C8(taskId, 1); + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (gUnknown_02039248[0] != gUnknown_02039248[3]) + { + sub_810BD64(5, 20); + gUnknown_02039248[0]++; + sub_810BF38(TRUE); + sub_810C1C8(taskId, 1); + } + else if (gUnknown_02039248[1] + gUnknown_02039248[0] != gUnknown_02039248[2]) + { + sub_810C1C8(taskId, 0); + gUnknown_02039248[1]++; + sub_810BB88(gUnknown_02039248[1]); + sub_810BF38(TRUE); + sub_810C1C8(taskId, 1); + } + } + else if (gMain.newKeys & A_BUTTON || gMain.newKeys & SELECT_BUTTON) + { + PlaySE(SE_SELECT); + sub_810C1C8(taskId, 0); + sub_810C23C(taskId); + gTasks[taskId].func = sub_810BF7C; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_810C1C8(taskId, 0); + sub_810BDAC(0); + gTasks[taskId].func = sub_810BF7C; + } +} -- cgit v1.2.3 From 8f84aa839874e2b69bd0e31694fad7560ca90d17 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 09:46:43 -0400 Subject: sub_810C1C8 --- asm/pokeblock.s | 62 --------------------------------------------------------- src/pokeblock.c | 21 +++++++++++++++++++ 2 files changed, 21 insertions(+), 62 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 576a80930..c00294e94 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,68 +6,6 @@ .text - thumb_func_start sub_810C1C8 -sub_810C1C8: @ 810C1C8 - push {r4-r6,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - ldr r6, _0810C22C @ =0x00001005 - cmp r1, 0 - bne _0810C1D8 - movs r6, 0x5 -_0810C1D8: - ldr r1, _0810C230 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldr r2, _0810C234 @ =gUnknown_02039248 - ldrb r1, [r2, 0x1] - ldrh r0, [r0, 0x8] - subs r0, r1 - lsls r1, r0, 16 - lsrs r0, r1, 16 - cmp r0, 0x8 - bhi _0810C226 - asrs r0, r1, 16 - ldrb r2, [r2] - cmp r0, r2 - beq _0810C226 - movs r2, 0 - lsls r0, 1 - adds r1, r0, 0x1 - lsls r5, r1, 5 - ldr r3, _0810C238 @ =gBGTilemapBuffers + 0x1000 - adds r0, 0x2 - lsls r4, r0, 5 -_0810C208: - adds r0, r2, 0 - adds r0, 0xF - adds r1, r5, r0 - lsls r1, 1 - adds r1, r3 - strh r6, [r1] - adds r0, r4, r0 - lsls r0, 1 - adds r0, r3 - strh r6, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xD - bls _0810C208 -_0810C226: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0810C22C: .4byte 0x00001005 -_0810C230: .4byte gTasks -_0810C234: .4byte gUnknown_02039248 -_0810C238: .4byte gBGTilemapBuffers + 0x1000 - thumb_func_end sub_810C1C8 - thumb_func_start sub_810C23C sub_810C23C: @ 810C23C push {r4-r7,lr} diff --git a/src/pokeblock.c b/src/pokeblock.c index 0f1e36ee7..775bc42ab 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -689,3 +689,24 @@ void sub_810C0C8(u8 taskId) gTasks[taskId].func = sub_810BF7C; } } + +void sub_810C1C8(u8 taskId, u8 flag) +{ + u8 i; + u32 x; + s16 y; + u16 v0 = 0x1005; + if (!flag) + { + v0 = 0x0005; + } + y = gTasks[taskId].data[0] - gUnknown_02039248[1]; + if ((u16)y <= 8 && y != gUnknown_02039248[0]) + { + for (i=0; i<14; i++) + { + gBGTilemapBuffers[2][(2 * y + 1) * 32 + (x = i + 15)] = v0; + gBGTilemapBuffers[2][(2 * y + 2) * 32 + x] = v0; + } + } +} -- cgit v1.2.3 From c038b3a51cd82ec56ed09965513e8f846a3490df Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 09:51:41 -0400 Subject: sub_810C23C --- asm/pokeblock.s | 60 --------------------------------------------------------- src/pokeblock.c | 18 +++++++++++++++++ 2 files changed, 18 insertions(+), 60 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index c00294e94..a8156d6a4 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,66 +6,6 @@ .text - thumb_func_start sub_810C23C -sub_810C23C: @ 810C23C - push {r4-r7,lr} - lsls r0, 24 - lsrs r1, r0, 24 - ldr r7, _0810C25C @ =gUnknown_02039248 - ldrb r0, [r7] - ldrb r2, [r7, 0x1] - adds r0, r2 - lsls r0, 24 - lsrs r0, 24 - ldrb r2, [r7, 0x2] - cmp r0, r2 - bne _0810C260 - movs r0, 0 - bl sub_810BDAC - b _0810C2A2 - .align 2, 0 -_0810C25C: .4byte gUnknown_02039248 -_0810C260: - ldr r4, _0810C2A8 @ =gSaveBlock1 - lsls r3, r0, 3 - movs r0, 0xFF - lsls r0, 3 - adds r4, r0 - adds r3, r4 - ldr r5, [r3] - ldr r6, [r3, 0x4] - ldr r0, _0810C2AC @ =gTasks - lsls r2, r1, 2 - adds r2, r1 - lsls r2, 3 - adds r2, r0 - movs r1, 0x8 - ldrsh r0, [r2, r1] - lsls r0, 3 - adds r0, r4 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [r3] - str r1, [r3, 0x4] - movs r1, 0x8 - ldrsh r0, [r2, r1] - lsls r0, 3 - adds r0, r4 - str r5, [r0] - str r6, [r0, 0x4] - ldrb r0, [r7, 0x1] - bl sub_810BB88 - movs r0, 0 - bl sub_810BDAC -_0810C2A2: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810C2A8: .4byte gSaveBlock1 -_0810C2AC: .4byte gTasks - thumb_func_end sub_810C23C - thumb_func_start sub_810C2B0 sub_810C2B0: @ 810C2B0 push {lr} diff --git a/src/pokeblock.c b/src/pokeblock.c index 775bc42ab..a47890fe9 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -710,3 +710,21 @@ void sub_810C1C8(u8 taskId, u8 flag) } } } + +void sub_810C23C(u8 taskId) +{ + struct Pokeblock buf; + u8 selidx = gUnknown_02039248[1] + gUnknown_02039248[0]; + if (selidx == gUnknown_02039248[2]) + { + sub_810BDAC(FALSE); + } + else + { + buf = gSaveBlock1.pokeblocks[selidx]; + gSaveBlock1.pokeblocks[selidx] = gSaveBlock1.pokeblocks[gTasks[taskId].data[0]]; + gSaveBlock1.pokeblocks[gTasks[taskId].data[0]] = buf; + sub_810BB88(gUnknown_02039248[1]); + sub_810BDAC(FALSE); + } +} -- cgit v1.2.3 From f01cdd2a380174613dc0da6e04dd19a1b0520b0a Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 10:31:51 -0400 Subject: sub_810C368 --- asm/pokeblock.s | 163 ------------------------------------------------- include/menu.h | 2 +- include/menu_helpers.h | 1 + include/rom4.h | 1 + include/script.h | 1 + src/menu.c | 2 +- src/pokeblock.c | 49 +++++++++++++++ 7 files changed, 54 insertions(+), 165 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index a8156d6a4..443de3841 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,169 +6,6 @@ .text - thumb_func_start sub_810C2B0 -sub_810C2B0: @ 810C2B0 - push {lr} - movs r0, 0 - bl DestroyVerticalScrollIndicator - movs r0, 0x1 - bl DestroyVerticalScrollIndicator - bl BuyMenuFreeMemory - pop {r0} - bx r0 - thumb_func_end sub_810C2B0 - - thumb_func_start sub_810C2C8 -sub_810C2C8: @ 810C2C8 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0810C308 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0810C300 - ldr r4, _0810C30C @ =gUnknown_02039244 - ldrb r0, [r4] - cmp r0, 0x3 - bne _0810C2E8 - ldr r1, _0810C310 @ =gFieldCallback - ldr r0, _0810C314 @ =sub_8080990 - str r0, [r1] -_0810C2E8: - bl sub_810C2B0 - ldr r0, _0810C318 @ =gUnknown_083F7EA8 - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl SetMainCallback2 - adds r0, r5, 0 - bl DestroyTask -_0810C300: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810C308: .4byte gPaletteFade -_0810C30C: .4byte gUnknown_02039244 -_0810C310: .4byte gFieldCallback -_0810C314: .4byte sub_8080990 -_0810C318: .4byte gUnknown_083F7EA8 - thumb_func_end sub_810C2C8 - - thumb_func_start sub_810C31C -sub_810C31C: @ 810C31C - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0x1 - negs r0, r0 - movs r5, 0 - str r5, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _0810C358 @ =gUnknown_02039244 - ldrb r0, [r0] - cmp r0, 0x1 - bls _0810C342 - ldr r0, _0810C35C @ =gScriptItemId - strh r5, [r0] -_0810C342: - ldr r0, _0810C360 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0810C364 @ =sub_810C2C8 - str r0, [r1] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810C358: .4byte gUnknown_02039244 -_0810C35C: .4byte gScriptItemId -_0810C360: .4byte gTasks -_0810C364: .4byte sub_810C2C8 - thumb_func_end sub_810C31C - - thumb_func_start sub_810C368 -sub_810C368: @ 810C368 - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r0, _0810C3E8 @ =gUnknown_02039244 - ldrb r0, [r0] - cmp r0, 0x1 - bls _0810C37C - movs r4, 0x2 -_0810C37C: - movs r0, 0 - bl sub_80F98A4 - movs r0, 0x1 - bl sub_80F98A4 - ldr r0, _0810C3EC @ =gWindowConfig_81E6E50 - bl BasicInitMenuWindow - adds r1, r4, 0x4 - movs r0, 0x7 - movs r2, 0xD - movs r3, 0xB - bl MenuDrawTextWindow - adds r4, 0x5 - ldr r5, _0810C3F0 @ =gUnknown_0203924C - ldrb r2, [r5] - ldr r3, _0810C3F4 @ =gUnknown_083F7EF4 - ldr r0, _0810C3F8 @ =gUnknown_03000758 - ldr r0, [r0] - str r0, [sp] - movs r0, 0x8 - adds r1, r4, 0 - bl PrintMenuItemsReordered - ldrb r3, [r5] - movs r0, 0 - str r0, [sp] - movs r0, 0x5 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x8 - adds r2, r4, 0 - bl InitMenu - ldr r2, _0810C3FC @ =gScriptItemId - ldr r1, _0810C400 @ =gUnknown_02039248 - ldrb r0, [r1] - ldrb r1, [r1, 0x1] - adds r0, r1 - strh r0, [r2] - ldr r1, _0810C404 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0810C408 @ =sub_810C40C - str r1, [r0] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0810C3E8: .4byte gUnknown_02039244 -_0810C3EC: .4byte gWindowConfig_81E6E50 -_0810C3F0: .4byte gUnknown_0203924C -_0810C3F4: .4byte gUnknown_083F7EF4 -_0810C3F8: .4byte gUnknown_03000758 -_0810C3FC: .4byte gScriptItemId -_0810C400: .4byte gUnknown_02039248 -_0810C404: .4byte gTasks -_0810C408: .4byte sub_810C40C - thumb_func_end sub_810C368 - thumb_func_start sub_810C40C sub_810C40C: @ 810C40C push {r4,r5,lr} diff --git a/include/menu.h b/include/menu.h index 7d4bc731b..9b48ab79b 100755 --- a/include/menu.h +++ b/include/menu.h @@ -59,7 +59,7 @@ void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32); s8 sub_80727CC(void); u8 sub_807288C(u8); void PrintMenuItems(u8, u8, u8, const struct MenuAction[]); -void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], u8*); +void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], const u8*); void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); s8 ProcessMenuInputNoWrap_(void); diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 0e39a3732..6146f0847 100755 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -24,5 +24,6 @@ void BuyMenuFreeMemory(void); void sub_80F98DC(int); void sub_80F996C(u8); void LoadScrollIndicatorPalette(void); +void sub_80F98A4(u8); #endif // GUARD_MENU_HELPERS_H diff --git a/include/rom4.h b/include/rom4.h index eac4d29a2..c5d96f97b 100644 --- a/include/rom4.h +++ b/include/rom4.h @@ -23,6 +23,7 @@ struct UCoords32 }; extern struct UCoords32 gUnknown_0821664C[]; +extern void (*gFieldCallback)(void); // sub_8052F5C void flag_var_implications_of_teleport_(void); diff --git a/include/script.h b/include/script.h index 4070a838f..96874e3b4 100644 --- a/include/script.h +++ b/include/script.h @@ -56,5 +56,6 @@ void ClearRamScript(void); bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId); u8 *GetRamScript(u8 objectId, u8 *script); u16 gScriptResult; +u16 gScriptItemId; #endif // GUARD_SCRIPT_H diff --git a/src/menu.c b/src/menu.c index 45cfbbc2f..d532fc602 100644 --- a/src/menu.c +++ b/src/menu.c @@ -571,7 +571,7 @@ void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction m MenuPrint(menuItems[i].text, left, top + 2 * i); } -void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[], u8 *order) +void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[], const u8 *order) { u8 i; diff --git a/src/pokeblock.c b/src/pokeblock.c index a47890fe9..e62e8cf90 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -12,6 +12,7 @@ #include "text.h" #include "main.h" #include "menu.h" +#include "field_fadetransition.h" #include "palette.h" #include "graphics.h" #include "decompress.h" @@ -728,3 +729,51 @@ void sub_810C23C(u8 taskId) sub_810BDAC(FALSE); } } + +void sub_810C2B0(void) +{ + DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(1); + BuyMenuFreeMemory(); +} + +void sub_810C2C8(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gUnknown_02039244 == 3) + { + gFieldCallback = sub_8080990; + } + sub_810C2B0(); + SetMainCallback2(gUnknown_083F7EA8[gUnknown_02039244]); + DestroyTask(taskId); + } +} + +void sub_810C31C(u8 taskId) +{ + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + if (gUnknown_02039244 > 1) + { + gScriptItemId = ITEM_NONE; + } + gTasks[taskId].func = sub_810C2C8; +} + +void sub_810C40C(u8); + +void sub_810C368(u8 taskId) +{ + int v0 = 0; + if (gUnknown_02039244 > 1) + v0 = 2; + sub_80F98A4(0); + sub_80F98A4(1); + BasicInitMenuWindow(&gWindowConfig_81E6E50); + MenuDrawTextWindow(7, v0 + 4, 13, 11); + PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, (const struct MenuAction *)gUnknown_083F7EF4, gUnknown_03000758); + InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5); + gScriptItemId = gUnknown_02039248[0] + gUnknown_02039248[1]; + gTasks[taskId].func = sub_810C40C; +} -- cgit v1.2.3 From 7018449024766d1b24d3de4271f998d285e19cd0 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 10:38:43 -0400 Subject: sub_810C40C --- asm/pokeblock.s | 85 --------------------------------------------------------- src/pokeblock.c | 30 ++++++++++++++++++++ 2 files changed, 30 insertions(+), 85 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 443de3841..86e799586 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,91 +6,6 @@ .text - thumb_func_start sub_810C40C -sub_810C40C: @ 810C40C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, r5, 0 - ldr r2, _0810C43C @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0810C440 - bl GetMenuCursorPos - lsls r0, 24 - cmp r0, 0 - beq _0810C4BC - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - b _0810C4BC - .align 2, 0 -_0810C43C: .4byte gMain -_0810C440: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0810C46C - bl GetMenuCursorPos - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0810C468 @ =gUnknown_0203924C - ldrb r1, [r1] - subs r1, 0x1 - cmp r0, r1 - beq _0810C4BC - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl MoveMenuCursor - b _0810C4BC - .align 2, 0 -_0810C468: .4byte gUnknown_0203924C -_0810C46C: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0810C4A8 - movs r0, 0x5 - bl PlaySE - ldr r4, _0810C4A0 @ =gUnknown_083F7EF4 - bl GetMenuCursorPos - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0810C4A4 @ =gUnknown_03000758 - ldr r1, [r1] - adds r1, r0 - ldrb r0, [r1] - lsls r0, 3 - adds r4, 0x4 - adds r0, r4 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 - b _0810C4BC - .align 2, 0 -_0810C4A0: .4byte gUnknown_083F7EF4 -_0810C4A4: .4byte gUnknown_03000758 -_0810C4A8: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0810C4BC - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_810C748 -_0810C4BC: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_810C40C - thumb_func_start sub_810C4C4 sub_810C4C4: @ 810C4C4 push {r4,lr} diff --git a/src/pokeblock.c b/src/pokeblock.c index e62e8cf90..8ea8de838 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -777,3 +777,33 @@ void sub_810C368(u8 taskId) gScriptItemId = gUnknown_02039248[0] + gUnknown_02039248[1]; gTasks[taskId].func = sub_810C40C; } + +void sub_810C40C(u8 taskId) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (GetMenuCursorPos()) + { + PlaySE(SE_SELECT); + MoveMenuCursor(-1); + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (GetMenuCursorPos() != gUnknown_0203924C - 1) + { + PlaySE(SE_SELECT); + MoveMenuCursor(+1); + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gUnknown_083F7EF4[gUnknown_03000758[GetMenuCursorPos()]].func(taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_810C748(taskId); + } +} -- cgit v1.2.3 From c6255560d7577edf6058171ba61331c7c6f78dfc Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 10:51:18 -0400 Subject: through sub_810C540 --- asm/pokeblock.s | 116 -------------------------------------------------------- src/pokeblock.c | 30 +++++++++++++++ 2 files changed, 30 insertions(+), 116 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 86e799586..5d04f40eb 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,122 +6,6 @@ .text - thumb_func_start sub_810C4C4 -sub_810C4C4: @ 810C4C4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0810C4F8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0810C4F0 - bl sub_810C2B0 - ldr r0, _0810C4FC @ =gScriptItemId - ldrh r0, [r0] - lsls r0, 3 - ldr r1, _0810C500 @ =gSaveBlock1 + 0x7F8 - adds r0, r1 - ldr r1, _0810C504 @ =sub_810B96C - bl sub_8136130 - adds r0, r4, 0 - bl DestroyTask -_0810C4F0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810C4F8: .4byte gPaletteFade -_0810C4FC: .4byte gScriptItemId -_0810C500: .4byte gSaveBlock1 + 0x7F8 -_0810C504: .4byte sub_810B96C - thumb_func_end sub_810C4C4 - - thumb_func_start sub_810C508 -sub_810C508: @ 810C508 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0810C538 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0810C53C @ =sub_810C4C4 - str r1, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810C538: .4byte gTasks -_0810C53C: .4byte sub_810C4C4 - thumb_func_end sub_810C508 - - thumb_func_start sub_810C540 -sub_810C540: @ 810C540 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _0810C5A0 @ =gWindowConfig_81E6E50 - bl BasicInitMenuWindow - bl HandleDestroyMenuCursors - movs r0, 0x7 - movs r1, 0x4 - movs r2, 0xD - movs r3, 0xB - bl MenuZeroFillWindowRect - ldr r0, _0810C5A4 @ =gStringVar1 - ldr r4, _0810C5A8 @ =gPokeblockNames - ldr r3, _0810C5AC @ =gSaveBlock1 - ldr r2, _0810C5B0 @ =gUnknown_02039248 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - adds r1, r2 - lsls r1, 3 - adds r1, r3 - movs r2, 0xFF - lsls r2, 3 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r4 - ldr r1, [r1] - bl StringCopy - ldr r4, _0810C5B4 @ =gStringVar4 - ldr r1, _0810C5B8 @ =gContestStatsText_ThrowAwayPrompt - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _0810C5BC @ =sub_810C5EC - adds r0, r5, 0 - adds r1, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810C5A0: .4byte gWindowConfig_81E6E50 -_0810C5A4: .4byte gStringVar1 -_0810C5A8: .4byte gPokeblockNames -_0810C5AC: .4byte gSaveBlock1 -_0810C5B0: .4byte gUnknown_02039248 -_0810C5B4: .4byte gStringVar4 -_0810C5B8: .4byte gContestStatsText_ThrowAwayPrompt -_0810C5BC: .4byte sub_810C5EC - thumb_func_end sub_810C540 - thumb_func_start sub_810C5C0 sub_810C5C0: @ 810C5C0 push {r4,lr} diff --git a/src/pokeblock.c b/src/pokeblock.c index 8ea8de838..a8de73549 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -807,3 +807,33 @@ void sub_810C40C(u8 taskId) sub_810C748(taskId); } } + +void sub_8136130(struct Pokeblock *, MainCallback); + +void sub_810C4C4(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_810C2B0(); + sub_8136130(&gSaveBlock1.pokeblocks[gScriptItemId], sub_810B96C); + DestroyTask(taskId); + } +} + +void sub_810C508(u8 taskId) +{ + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = sub_810C4C4; +} + +void sub_810C5EC(u8); + +void sub_810C540(u8 taskId) +{ + BasicInitMenuWindow(&gWindowConfig_81E6E50); + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(7, 4, 13, 11); + StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gUnknown_02039248[0] + gUnknown_02039248[1]].color]); + StringExpandPlaceholders(gStringVar4, gContestStatsText_ThrowAwayPrompt); + DisplayItemMessageOnField(taskId, gStringVar4, sub_810C5EC, 0); +} -- cgit v1.2.3 From 0197921d32ac4af5a4290fa3bdcb65a275e8067c Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 11:33:39 -0400 Subject: through sub_810C788 --- asm/pokeblock.s | 320 ------------------------------------------------- include/battle.h | 2 + include/menu_helpers.h | 1 + include/pokeblock.h | 2 +- src/mori_debug_menu.c | 2 +- src/pokeblock.c | 85 +++++++++++++ 6 files changed, 90 insertions(+), 322 deletions(-) diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 5d04f40eb..2f0f42e51 100755 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -6,326 +6,6 @@ .text - thumb_func_start sub_810C5C0 -sub_810C5C0: @ 810C5C0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0x1 - bl sub_80F979C - ldr r1, _0810C5E4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0810C5E8 @ =sub_810C540 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810C5E4: .4byte gTasks -_0810C5E8: .4byte sub_810C540 - thumb_func_end sub_810C5C0 - - thumb_func_start sub_810C5EC -sub_810C5EC: @ 810C5EC - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x7 - movs r1, 0x6 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r1, _0810C60C @ =gUnknown_083F7F24 - adds r0, r4, 0 - bl DoYesNoFuncWithChoice - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810C60C: .4byte gUnknown_083F7F24 - thumb_func_end sub_810C5EC - - thumb_func_start sub_810C610 -sub_810C610: @ 810C610 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x7 - movs r1, 0x6 - movs r2, 0xD - movs r3, 0xB - bl MenuZeroFillWindowRect - ldr r1, _0810C658 @ =gUnknown_02039248 - ldrb r0, [r1, 0x1] - ldrb r1, [r1] - adds r0, r1 - lsls r0, 24 - lsrs r0, 24 - bl sub_810CA6C - ldr r5, _0810C65C @ =gStringVar4 - ldr r1, _0810C660 @ =gContestStatsText_WasThrownAway - adds r0, r5, 0 - bl StringExpandPlaceholders - ldr r2, _0810C664 @ =sub_810C704 - adds r0, r4, 0 - adds r1, r5, 0 - movs r3, 0 - bl DisplayItemMessageOnField - bl sub_810BC98 - bl sub_810BD08 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810C658: .4byte gUnknown_02039248 -_0810C65C: .4byte gStringVar4 -_0810C660: .4byte gContestStatsText_WasThrownAway -_0810C664: .4byte sub_810C704 - thumb_func_end sub_810C610 - - thumb_func_start sub_810C668 -sub_810C668: @ 810C668 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - bl StartVerticalScrollIndicators - movs r0, 0x1 - bl StartVerticalScrollIndicators - ldr r2, _0810C6CC @ =gUnknown_02039248 - ldrb r0, [r2, 0x2] - ldrb r1, [r2, 0x3] - cmp r0, r1 - bls _0810C698 - ldrb r0, [r2, 0x1] - ldrb r1, [r2, 0x3] - adds r0, r1 - ldrb r2, [r2, 0x2] - cmp r0, r2 - beq _0810C698 - movs r0, 0x1 - movs r1, 0 - bl sub_80F979C -_0810C698: - ldr r0, _0810C6D0 @ =gWindowConfig_81E6E50 - bl BasicInitMenuWindow - movs r0, 0x7 - movs r1, 0x6 - movs r2, 0xD - movs r3, 0xB - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _0810C6D4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0810C6D8 @ =sub_810BF7C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810C6CC: .4byte gUnknown_02039248 -_0810C6D0: .4byte gWindowConfig_81E6E50 -_0810C6D4: .4byte gTasks -_0810C6D8: .4byte sub_810BF7C - thumb_func_end sub_810C668 - - thumb_func_start sub_810C6DC -sub_810C6DC: @ 810C6DC - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0810C700 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0810C6F6 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0810C6FC -_0810C6F6: - adds r0, r2, 0 - bl sub_810C668 -_0810C6FC: - pop {r0} - bx r0 - .align 2, 0 -_0810C700: .4byte gMain - thumb_func_end sub_810C6DC - - thumb_func_start sub_810C704 -sub_810C704: @ 810C704 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _0810C738 @ =gWindowConfig_81E6E34 - bl BasicInitMenuWindow - ldr r0, _0810C73C @ =gUnknown_02039248 - ldrb r0, [r0, 0x1] - bl sub_810BC84 - movs r0, 0x1 - movs r1, 0x1 - bl sub_80F979C - ldr r1, _0810C740 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0810C744 @ =sub_810C6DC - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810C738: .4byte gWindowConfig_81E6E34 -_0810C73C: .4byte gUnknown_02039248 -_0810C740: .4byte gTasks -_0810C744: .4byte sub_810C6DC - thumb_func_end sub_810C704 - - thumb_func_start sub_810C748 -sub_810C748: @ 810C748 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - bl StartVerticalScrollIndicators - movs r0, 0x1 - bl StartVerticalScrollIndicators - bl HandleDestroyMenuCursors - movs r0, 0x7 - movs r1, 0x4 - movs r2, 0xD - movs r3, 0xB - bl MenuZeroFillWindowRect - ldr r1, _0810C780 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0810C784 @ =sub_810BF7C - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810C780: .4byte gTasks -_0810C784: .4byte sub_810BF7C - thumb_func_end sub_810C748 - - thumb_func_start sub_810C788 -sub_810C788: @ 810C788 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r0, _0810C834 @ =gEnemyParty - bl GetNature - lsls r0, 24 - lsrs r0, 24 - ldr r7, _0810C838 @ =gScriptItemId - ldrh r1, [r7] - lsls r1, 3 - ldr r5, _0810C83C @ =gSaveBlock1 + 0x7F8 - adds r1, r5 - bl sub_810CAE4 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _0810C840 @ =gBattleTextBuff1 - ldr r2, _0810C844 @ =gPokeblockNames - ldr r1, _0810C848 @ =0xfffff808 - adds r5, r1 - ldrh r1, [r7] - lsls r1, 3 - adds r1, r5 - movs r6, 0xFF - lsls r6, 3 - adds r1, r6 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - ldrb r0, [r7] - bl sub_810CA6C - ldrh r0, [r7] - lsls r0, 3 - adds r0, r5 - adds r0, r6 - ldrb r0, [r0] - lsls r0, 8 - strh r0, [r7] - lsls r4, 16 - asrs r4, 16 - cmp r4, 0 - bne _0810C7F4 - adds r0, 0x1 - strh r0, [r7] -_0810C7F4: - cmp r4, 0 - ble _0810C7FE - ldrh r0, [r7] - adds r0, 0x2 - strh r0, [r7] -_0810C7FE: - cmp r4, 0 - bge _0810C808 - ldrh r0, [r7] - adds r0, 0x3 - strh r0, [r7] -_0810C808: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0810C84C @ =gTasks - mov r2, r8 - lsls r0, r2, 2 - add r0, r8 - lsls r0, 3 - adds r0, r1 - ldr r1, _0810C850 @ =sub_810C2C8 - str r1, [r0] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810C834: .4byte gEnemyParty -_0810C838: .4byte gScriptItemId -_0810C83C: .4byte gSaveBlock1 + 0x7F8 -_0810C840: .4byte gBattleTextBuff1 -_0810C844: .4byte gPokeblockNames -_0810C848: .4byte 0xfffff808 -_0810C84C: .4byte gTasks -_0810C850: .4byte sub_810C2C8 - thumb_func_end sub_810C788 - thumb_func_start sub_810C854 sub_810C854: @ 810C854 push {r4,r5,lr} diff --git a/include/battle.h b/include/battle.h index a480ca95e..6b81bbf19 100755 --- a/include/battle.h +++ b/include/battle.h @@ -225,6 +225,8 @@ extern u8 ewram[]; #define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810)) #define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840)) +extern u8 gBattleTextBuff1[]; + // asm/battle_1.o void sub_800D6D4(); void sub_800D74C(); diff --git a/include/menu_helpers.h b/include/menu_helpers.h index 6146f0847..1df5053e7 100755 --- a/include/menu_helpers.h +++ b/include/menu_helpers.h @@ -25,5 +25,6 @@ void sub_80F98DC(int); void sub_80F996C(u8); void LoadScrollIndicatorPalette(void); void sub_80F98A4(u8); +void StartVerticalScrollIndicators(u8); #endif // GUARD_MENU_HELPERS_H diff --git a/include/pokeblock.h b/include/pokeblock.h index 6fdb67369..008734a69 100755 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -15,7 +15,7 @@ extern const u8 *gUnknown_03000758; void sub_810B96C(void); void sub_810BA7C(u8); void ClearPokeblocks(void); -void sub_810CA6C(s32); +void sub_810CA6C(u8); s16 sub_810CAE4(u8, struct Pokeblock *); #endif // GUARD_POKEBLOCK_H diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index ba79261c0..2d9e3fa6f 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -133,7 +133,7 @@ s8 MoriDebugMenu_PokeblockCase(void) s32 loopCounter; for (loopCounter = 0; loopCounter <= 39; loopCounter++) - sub_810CA6C((u8)loopCounter); + sub_810CA6C(loopCounter); CloseMenu(); return 1; diff --git a/src/pokeblock.c b/src/pokeblock.c index a8de73549..9c6ccfc9f 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -837,3 +837,88 @@ void sub_810C540(u8 taskId) StringExpandPlaceholders(gStringVar4, gContestStatsText_ThrowAwayPrompt); DisplayItemMessageOnField(taskId, gStringVar4, sub_810C5EC, 0); } + +void sub_810C5C0(u8 taskId) +{ + sub_80F979C(1, 1); + gTasks[taskId].func = sub_810C540; +} + +void sub_810C5EC(u8 taskId) +{ + DisplayYesNoMenu(7, 6, 1); + DoYesNoFuncWithChoice(taskId, gUnknown_083F7F24); +} + +void sub_810C704(u8); + +void sub_810C610(u8 taskId) +{ + MenuZeroFillWindowRect(7, 6, 13, 11); + sub_810CA6C((gUnknown_02039248[0] + gUnknown_02039248[1])); + StringExpandPlaceholders(gStringVar4, gContestStatsText_WasThrownAway); + DisplayItemMessageOnField(taskId, gStringVar4, sub_810C704, 0); + sub_810BC98(); + sub_810BD08(); +} + +void sub_810C668(u8 taskId) +{ + StartVerticalScrollIndicators(0); + StartVerticalScrollIndicators(1); + if (gUnknown_02039248[2] > gUnknown_02039248[3] && gUnknown_02039248[1] + gUnknown_02039248[3] != gUnknown_02039248[2]) + { + sub_80F979C(1, 0); + } + BasicInitMenuWindow(&gWindowConfig_81E6E50); + MenuZeroFillWindowRect(7, 6, 13, 11); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = sub_810BF7C; +} + +void sub_810C6DC(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + sub_810C668(taskId); + } +} + +void sub_810C704(u8 taskId) +{ + BasicInitMenuWindow(&gWindowConfig_81E6E34); + sub_810BC84(gUnknown_02039248[1]); + sub_80F979C(1, 1); + gTasks[taskId].func = sub_810C6DC; +} + +void sub_810C748(u8 taskId) +{ + StartVerticalScrollIndicators(0); + StartVerticalScrollIndicators(1); + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(7, 4, 13, 11); + gTasks[taskId].func = sub_810BF7C; +} + +void sub_810C788(u8 taskId) +{ + s16 v0 = sub_810CAE4(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]); + StringCopy(gBattleTextBuff1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); + sub_810CA6C(gScriptItemId); + gScriptItemId = gSaveBlock1.pokeblocks[gScriptItemId].color << 8; + if (v0 == 0) + { + gScriptItemId += 1; + } + if (v0 > 0) + { + gScriptItemId += 2; + } + if (v0 < 0) + { + gScriptItemId += 3; + } + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = sub_810C2C8; +} -- cgit v1.2.3 From 180a1aba1687423fadca8f7d19567f95b47ecb73 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 12:33:11 -0400 Subject: Finish decompilation of pokeblock.s --- asm/pokeblock.s | 485 ---------------------------------------------------- include/pokeblock.h | 13 +- ld_script.txt | 1 - src/pokeblock.c | 238 ++++++++++++++++++++++---- 4 files changed, 216 insertions(+), 521 deletions(-) delete mode 100755 asm/pokeblock.s diff --git a/asm/pokeblock.s b/asm/pokeblock.s deleted file mode 100755 index 2f0f42e51..000000000 --- a/asm/pokeblock.s +++ /dev/null @@ -1,485 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_810C854 -sub_810C854: @ 810C854 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r4, _0810C8B8 @ =gScriptItemId - ldrb r0, [r4] - bl SafariZoneActivatePokeblockFeeder - ldr r0, _0810C8BC @ =gStringVar1 - ldr r3, _0810C8C0 @ =gPokeblockNames - ldr r2, _0810C8C4 @ =gSaveBlock1 - ldrh r1, [r4] - lsls r1, 3 - adds r1, r2 - movs r2, 0xFF - lsls r2, 3 - adds r1, r2 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r3 - ldr r1, [r1] - bl StringCopy - ldr r1, _0810C8C8 @ =gScriptResult - ldrh r0, [r4] - strh r0, [r1] - lsls r0, 24 - lsrs r0, 24 - bl sub_810CA6C - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0810C8CC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0810C8D0 @ =sub_810C2C8 - str r1, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810C8B8: .4byte gScriptItemId -_0810C8BC: .4byte gStringVar1 -_0810C8C0: .4byte gPokeblockNames -_0810C8C4: .4byte gSaveBlock1 -_0810C8C8: .4byte gScriptResult -_0810C8CC: .4byte gTasks -_0810C8D0: .4byte sub_810C2C8 - thumb_func_end sub_810C854 - - thumb_func_start sub_810C8D4 -sub_810C8D4: @ 810C8D4 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - ble _0810C8E4 - movs r0, 0 - strh r0, [r4, 0x2E] -_0810C8E4: - movs r0, 0x2E - ldrsh r5, [r4, r0] - cmp r5, 0 - beq _0810C8F2 - cmp r5, 0x1 - beq _0810C918 - b _0810C944 -_0810C8F2: - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - ldr r0, _0810C914 @ =gSpriteAffineAnimTable_83F7F70 - str r0, [r4, 0x10] - adds r0, r4, 0 - bl InitSpriteAffineAnim - movs r0, 0x1 - strh r0, [r4, 0x2E] - strh r5, [r4, 0x30] - b _0810C944 - .align 2, 0 -_0810C914: .4byte gSpriteAffineAnimTable_83F7F70 -_0810C918: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - movs r2, 0 - strh r0, [r4, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xB - ble _0810C944 - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x1] - strh r2, [r4, 0x2E] - strh r2, [r4, 0x30] - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldr r0, _0810C94C @ =SpriteCallbackDummy - str r0, [r4, 0x1C] -_0810C944: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810C94C: .4byte SpriteCallbackDummy - thumb_func_end sub_810C8D4 - - thumb_func_start ClearPokeblock -ClearPokeblock: @ 810C950 - lsls r0, 24 - ldr r1, _0810C988 @ =gSaveBlock1 - lsrs r0, 21 - adds r0, r1 - movs r2, 0xFF - lsls r2, 3 - adds r1, r0, r2 - movs r2, 0 - strb r2, [r1] - ldr r3, _0810C98C @ =0x000007f9 - adds r1, r0, r3 - strb r2, [r1] - adds r3, 0x1 - adds r1, r0, r3 - strb r2, [r1] - adds r3, 0x1 - adds r1, r0, r3 - strb r2, [r1] - adds r3, 0x1 - adds r1, r0, r3 - strb r2, [r1] - adds r3, 0x1 - adds r1, r0, r3 - strb r2, [r1] - ldr r1, _0810C990 @ =0x000007fe - adds r0, r1 - strb r2, [r0] - bx lr - .align 2, 0 -_0810C988: .4byte gSaveBlock1 -_0810C98C: .4byte 0x000007f9 -_0810C990: .4byte 0x000007fe - thumb_func_end ClearPokeblock - - thumb_func_start ClearPokeblocks -ClearPokeblocks: @ 810C994 - push {r4,lr} - movs r4, 0 -_0810C998: - adds r0, r4, 0 - bl ClearPokeblock - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x27 - bls _0810C998 - pop {r4} - pop {r0} - bx r0 - thumb_func_end ClearPokeblocks - - thumb_func_start sub_810C9B0 -sub_810C9B0: @ 810C9B0 - push {r4-r6,lr} - adds r6, r0, 0 - movs r1, 0x1 - bl sub_810CA9C - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x1 -_0810C9C0: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_810CA9C - lsls r0, 24 - lsrs r0, 24 - cmp r5, r0 - bcs _0810C9D8 - adds r5, r0, 0 -_0810C9D8: - adds r1, r4, 0 - cmp r1, 0x4 - bls _0810C9C0 - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_810C9B0 - - thumb_func_start sub_810C9E8 -sub_810C9E8: @ 810C9E8 - push {lr} - movs r1, 0x6 - bl sub_810CA9C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x63 - bls _0810C9FA - movs r0, 0x63 -_0810C9FA: - pop {r1} - bx r1 - thumb_func_end sub_810C9E8 - - thumb_func_start sub_810CA00 -sub_810CA00: @ 810CA00 - push {lr} - movs r1, 0 - ldr r3, _0810CA1C @ =gSaveBlock1 - movs r2, 0xFF - lsls r2, 3 -_0810CA0A: - lsls r0, r1, 3 - adds r0, r3 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _0810CA20 - lsls r0, r1, 24 - asrs r0, 24 - b _0810CA2E - .align 2, 0 -_0810CA1C: .4byte gSaveBlock1 -_0810CA20: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x27 - bls _0810CA0A - movs r0, 0x1 - negs r0, r0 -_0810CA2E: - pop {r1} - bx r1 - thumb_func_end sub_810CA00 - - thumb_func_start sub_810CA34 -sub_810CA34: @ 810CA34 - push {r4,lr} - adds r4, r0, 0 - bl sub_810CA00 - lsls r0, 24 - asrs r2, r0, 24 - movs r0, 0x1 - negs r0, r0 - cmp r2, r0 - beq _0810CA64 - ldr r0, _0810CA60 @ =gSaveBlock1 - lsls r2, 3 - movs r1, 0xFF - lsls r1, 3 - adds r0, r1 - adds r2, r0 - ldr r0, [r4] - ldr r1, [r4, 0x4] - str r0, [r2] - str r1, [r2, 0x4] - movs r0, 0x1 - b _0810CA66 - .align 2, 0 -_0810CA60: .4byte gSaveBlock1 -_0810CA64: - movs r0, 0 -_0810CA66: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_810CA34 - - thumb_func_start sub_810CA6C -sub_810CA6C: @ 810CA6C - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0810CA90 @ =gSaveBlock1 - lsls r0, r2, 3 - adds r0, r1 - movs r1, 0xFF - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _0810CA94 - adds r0, r2, 0 - bl ClearPokeblock - movs r0, 0x1 - b _0810CA96 - .align 2, 0 -_0810CA90: .4byte gSaveBlock1 -_0810CA94: - movs r0, 0 -_0810CA96: - pop {r1} - bx r1 - thumb_func_end sub_810CA6C - - thumb_func_start sub_810CA9C -sub_810CA9C: @ 810CA9C - push {lr} - lsls r1, 24 - lsrs r1, 24 - adds r2, r1, 0 - cmp r1, 0 - bne _0810CAAC - ldrb r0, [r0] - b _0810CADE -_0810CAAC: - cmp r1, 0x1 - bne _0810CAB4 - ldrb r0, [r0, 0x1] - b _0810CADE -_0810CAB4: - cmp r1, 0x2 - bne _0810CABC - ldrb r0, [r0, 0x2] - b _0810CADE -_0810CABC: - cmp r1, 0x3 - bne _0810CAC4 - ldrb r0, [r0, 0x3] - b _0810CADE -_0810CAC4: - cmp r1, 0x4 - bne _0810CACC - ldrb r0, [r0, 0x4] - b _0810CADE -_0810CACC: - cmp r1, 0x5 - bne _0810CAD4 - ldrb r0, [r0, 0x5] - b _0810CADE -_0810CAD4: - cmp r2, 0x6 - beq _0810CADC - movs r0, 0 - b _0810CADE -_0810CADC: - ldrb r0, [r0, 0x6] -_0810CADE: - pop {r1} - bx r1 - thumb_func_end sub_810CA9C - - thumb_func_start sub_810CAE4 -sub_810CAE4: @ 810CAE4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r8, r1 - lsls r0, 24 - lsrs r0, 24 - movs r6, 0 - movs r4, 0 - ldr r1, _0810CB40 @ =gPokeblockFlavorCompatibilityTable - mov r9, r1 - lsls r1, r0, 2 - adds r7, r1, r0 -_0810CAFE: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - adds r1, r5, 0 - bl sub_810CA9C - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - ble _0810CB2A - adds r0, r7, r4 - add r0, r9 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - muls r1, r0 - lsls r0, r6, 16 - asrs r0, 16 - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 -_0810CB2A: - adds r4, r5, 0 - cmp r4, 0x4 - bls _0810CAFE - lsls r0, r6, 16 - asrs r0, 16 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0810CB40: .4byte gPokeblockFlavorCompatibilityTable - thumb_func_end sub_810CAE4 - - thumb_func_start sub_810CB44 -sub_810CB44: @ 810CB44 - push {r4,lr} - adds r4, r1, 0 - movs r1, 0 - bl sub_810CA9C - lsls r0, 24 - ldr r1, _0810CB64 @ =gPokeblockNames - lsrs r0, 22 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringCopy - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810CB64: .4byte gPokeblockNames - thumb_func_end sub_810CB44 - - thumb_func_start sub_810CB68 -sub_810CB68: @ 810CB68 - push {r4-r7,lr} - adds r6, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - ldr r7, _0810CB98 @ =gPokeblockNames -_0810CB74: - lsls r1, r4, 3 - ldr r0, _0810CB9C @ =gUnknown_083F7F9C - adds r1, r0 - adds r0, r5, 0 - bl sub_810CAE4 - lsls r0, 16 - cmp r0, 0 - ble _0810CBA0 - adds r0, r4, 0x1 - lsls r0, 2 - adds r0, r7 - ldr r1, [r0] - adds r0, r6, 0 - bl StringCopy - movs r0, 0x1 - b _0810CBAC - .align 2, 0 -_0810CB98: .4byte gPokeblockNames -_0810CB9C: .4byte gUnknown_083F7F9C -_0810CBA0: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x4 - bls _0810CB74 - movs r0, 0 -_0810CBAC: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_810CB68 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/pokeblock.h b/include/pokeblock.h index 008734a69..fdaaf5fc2 100755 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -6,6 +6,15 @@ struct YesNoCBTable { void (*noFunc)(void); }; +enum { + PBLOCK_CLR_BLACK, + PBLOCK_CLR_RED, + PBLOCK_CLR_BLUE, + PBLOCK_CLR_PINK, + PBLOCK_CLR_GREEN, + PBLOCK_CLR_YELLOW +}; + extern u8 ewram[]; extern u8 gUnknown_02039244; extern u8 gUnknown_02039248[4]; @@ -15,7 +24,7 @@ extern const u8 *gUnknown_03000758; void sub_810B96C(void); void sub_810BA7C(u8); void ClearPokeblocks(void); -void sub_810CA6C(u8); -s16 sub_810CAE4(u8, struct Pokeblock *); +bool8 sub_810CA6C(u8); +s16 sub_810CAE4(u8, const struct Pokeblock *); #endif // GUARD_POKEBLOCK_H diff --git a/ld_script.txt b/ld_script.txt index 6c4894d1e..c12d7a39a 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -213,7 +213,6 @@ SECTIONS { src/wallclock.o(.text); src/rom6.o(.text); src/pokeblock.o(.text); - asm/pokeblock.o(.text); asm/fldeff_flash.o(.text); src/post_battle_event_funcs.o(.text); src/time_events.o(.text); diff --git a/src/pokeblock.c b/src/pokeblock.c index 9c6ccfc9f..fd2e2acde 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -23,37 +23,38 @@ #include "items.h" #include "sound.h" #include "songs.h" +#include "safari_zone.h" #include "pokeblock.h" // rodata -const s8 gPokeblockFlavorCompatibilityTable[][5] = { +const s8 gPokeblockFlavorCompatibilityTable[] = { // Cool, Beauty, Cute, Smart, Tough - { 0, 0, 0, 0, 0}, // Hardy - { 1, 0, 0, 0, -1}, // Lonely - { 1, 0, -1, 0, 0}, // Brave - { 1, -1, 0, 0, 0}, // Adamant - { 1, 0, 0, -1, 0}, // Naughty - { -1, 0, 0, 0, 1}, // Bold - { 0, 0, 0, 0, 0}, // Docile - { 0, 0, -1, 0, 1}, // Relaxed - { 0, -1, 0, 0, 1}, // Impish - { 0, 0, 0, -1, 1}, // Lax - { -1, 0, 1, 0, 0}, // Timid - { 0, 0, 1, 0, -1}, // Hasty - { 0, 0, 0, 0, 0}, // Serious - { 0, -1, 1, 0, 0}, // Jolly - { 0, 0, 1, -1, 0}, // Naive - { -1, 1, 0, 0, 0}, // Modest - { 0, 1, 0, 0, -1}, // Mild - { 0, 1, -1, 0, 0}, // Quiet - { 0, 0, 0, 0, 0}, // Bashful - { 0, 1, 0, -1, 0}, // Rash - { -1, 0, 0, 1, 0}, // Calm - { 0, 0, 0, 1, -1}, // Gentle - { 0, 0, -1, 1, 0}, // Sassy - { 0, -1, 0, 1, 0}, // Careful - { 0, 0, 0, 0, 0} // Quirky + 0, 0, 0, 0, 0, // Hardy + 1, 0, 0, 0, -1, // Lonely + 1, 0, -1, 0, 0, // Brave + 1, -1, 0, 0, 0, // Adamant + 1, 0, 0, -1, 0, // Naughty + -1, 0, 0, 0, 1, // Bold + 0, 0, 0, 0, 0, // Docile + 0, 0, -1, 0, 1, // Relaxed + 0, -1, 0, 0, 1, // Impish + 0, 0, 0, -1, 1, // Lax + -1, 0, 1, 0, 0, // Timid + 0, 0, 1, 0, -1, // Hasty + 0, 0, 0, 0, 0, // Serious + 0, -1, 1, 0, 0, // Jolly + 0, 0, 1, -1, 0, // Naive + -1, 1, 0, 0, 0, // Modest + 0, 1, 0, 0, -1, // Mild + 0, 1, -1, 0, 0, // Quiet + 0, 0, 0, 0, 0, // Bashful + 0, 1, 0, -1, 0, // Rash + -1, 0, 0, 1, 0, // Calm + 0, 0, 0, 1, -1, // Gentle + 0, 0, -1, 1, 0, // Sassy + 0, -1, 0, 1, 0, // Careful + 0, 0, 0, 0, 0 // Quirky }; void (*const gUnknown_083F7EA8[])(void) = { @@ -153,12 +154,12 @@ const struct SpriteTemplate gSpriteTemplate_83F7F84 = { SpriteCallbackDummy }; -const u8 gUnknown_083F7F9C[][8] = { - { 1, 20, 0, 0, 0, 0, 20, 0}, - { 2, 0, 20, 0, 0, 0, 20, 0}, - { 3, 0, 0, 20, 0, 0, 20, 0}, - { 4, 0, 0, 0, 20, 0, 20, 0}, - { 5, 0, 0, 0, 0, 20, 20, 0} +const struct Pokeblock gUnknown_083F7F9C[] = { + { PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20}, + { PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20}, + { PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20}, + { PBLOCK_CLR_GREEN, 0, 0, 0, 20, 0, 20}, + { PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20} }; // text @@ -490,7 +491,7 @@ void sub_810BD64(u16 a0, u16 a1) } } -s16 sub_810CA9C(struct Pokeblock *, u8); +s16 sub_810CA9C(const struct Pokeblock *, u8); u8 sub_810C9E8(struct Pokeblock *); void sub_810BDAC(bool8 flag) @@ -922,3 +923,174 @@ void sub_810C788(u8 taskId) BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_810C2C8; } + +void sub_810C854(u8 taskId) +{ + SafariZoneActivatePokeblockFeeder(gScriptItemId); + StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); + gScriptResult = gScriptItemId; + sub_810CA6C(gScriptItemId); + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gTasks[taskId].func = sub_810C2C8; +} + +void sub_810C8D4(struct Sprite *sprite) +{ + if (sprite->data0 > 1) + { + sprite->data0 = 0; + } + switch (sprite->data0) + { + case 0: + sprite->oam.affineMode = 1; + sprite->affineAnims = gSpriteAffineAnimTable_83F7F70; + InitSpriteAffineAnim(sprite); + sprite->data0 = 1; + sprite->data1 = 0; + break; + case 1: + if (++sprite->data1 > 11) + { + sprite->oam.affineMode = 0; + sprite->data0 = 0; + sprite->data1 = 0; + FreeOamMatrix(sprite->oam.matrixNum); + sprite->callback = SpriteCallbackDummy; + } + break; + } +} + +void ClearPokeblock(u8 pokeblockIdx) +{ + gSaveBlock1.pokeblocks[pokeblockIdx].color = 0; + gSaveBlock1.pokeblocks[pokeblockIdx].spicy = 0; + gSaveBlock1.pokeblocks[pokeblockIdx].dry = 0; + gSaveBlock1.pokeblocks[pokeblockIdx].sweet = 0; + gSaveBlock1.pokeblocks[pokeblockIdx].bitter = 0; + gSaveBlock1.pokeblocks[pokeblockIdx].sour = 0; + gSaveBlock1.pokeblocks[pokeblockIdx].feel = 0; +} + +void ClearPokeblocks(void) +{ + u8 pokeblockIdx; + for (pokeblockIdx=0; pokeblockIdx 99) + feel = 99; + return feel; +} + +s8 sub_810CA00(void) +{ + u8 i; + for (i=0; icolor; + if (field == 1) + return pokeblock->spicy; + if (field == 2) + return pokeblock->dry; + if (field == 3) + return pokeblock->sweet; + if (field == 4) + return pokeblock->bitter; + if (field == 5) + return pokeblock->sour; + if (field == 6) + return pokeblock->feel; + return 0; +} + +s16 sub_810CAE4(u8 nature, const struct Pokeblock *pokeblock) +{ + u8 flavor; + s16 curGain; + s16 totalGain = 0; + for (flavor=0; flavor<5; flavor++) + { + curGain = sub_810CA9C(pokeblock, flavor + 1); + if (curGain > 0) + { + totalGain += curGain * gPokeblockFlavorCompatibilityTable[5 * nature + flavor]; + } + } + return totalGain; +} + +void sub_810CB44(struct Pokeblock *pokeblock, u8 *dest) +{ + u8 color = sub_810CA9C(pokeblock, 0); + StringCopy(dest, gPokeblockNames[color]); +} + +bool8 sub_810CB68(u8 nature, u8 *dest) +{ + u8 flavor; + for (flavor=0; flavor<5; flavor++) + { + if (sub_810CAE4(nature, &gUnknown_083F7F9C[flavor]) > 0) + { + StringCopy(dest, gPokeblockNames[flavor + 1]); + return TRUE; + } + } + return FALSE; +} -- cgit v1.2.3 From c0b4472f9547e334aa449f6cdbc1078d2190fb0f Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 12:44:43 -0400 Subject: Delete conflicting declaration in player_pc.c --- src/player_pc.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/player_pc.c b/src/player_pc.c index 9cb395432..38e01b92e 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -26,7 +26,6 @@ extern void DoPlayerPCDecoration(u8); extern void BuyMenuFreeMemory(void); extern void DestroyVerticalScrollIndicator(u8); extern void PauseVerticalScrollIndicator(u8); -extern void StartVerticalScrollIndicators(int); extern void LoadScrollIndicatorPalette(void); extern void ClearMailStruct(struct MailStruct *); extern u8 sub_807D770(void); -- cgit v1.2.3 From a7a374266fec8eb34208f8b7008e769cfb0da327 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 14:37:06 -0400 Subject: Move static function declarations to top of c file, and exported declarations to appropriate headers --- include/pokeblock.h | 4 ++ include/use_pokeblock.h | 10 +++ src/pokeblock.c | 182 +++++++++++++++++++++++++----------------------- 3 files changed, 109 insertions(+), 87 deletions(-) create mode 100644 include/use_pokeblock.h diff --git a/include/pokeblock.h b/include/pokeblock.h index fdaaf5fc2..c2a1ff860 100755 --- a/include/pokeblock.h +++ b/include/pokeblock.h @@ -22,6 +22,10 @@ extern u8 gUnknown_0203924C; extern const u8 *gUnknown_03000758; void sub_810B96C(void); +u8 sub_810BA50(s16, s16, u8); +u8 sub_810C9B0(struct Pokeblock *); +s16 sub_810CA9C(const struct Pokeblock *, u8); +u8 sub_810C9E8(struct Pokeblock *); void sub_810BA7C(u8); void ClearPokeblocks(void); bool8 sub_810CA6C(u8); diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h new file mode 100644 index 000000000..41cf66665 --- /dev/null +++ b/include/use_pokeblock.h @@ -0,0 +1,10 @@ +// +// Created by Scott Norton on 6/28/17. +// + +#ifndef POKERUBY_USE_POKEBLOCK_H +#define POKERUBY_USE_POKEBLOCK_H + +void sub_8136130(struct Pokeblock *, MainCallback); + +#endif //POKERUBY_USE_POKEBLOCK_H diff --git a/src/pokeblock.c b/src/pokeblock.c index fd2e2acde..a7c6daa8b 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -24,10 +24,61 @@ #include "sound.h" #include "songs.h" #include "safari_zone.h" +#include "use_pokeblock.h" #include "pokeblock.h" +// function declarations + +// gUnknown_083F7EF4 +static void sub_810C508(u8); +static void sub_810C5C0(u8); +static void sub_810C748(u8); +static void sub_810C788(u8); +static void sub_810C854(u8); + +// gUnknown_083F7F24 +static void sub_810C610(u8); +static void sub_810C668(u8); + +// sub_810B6C0 +static bool8 sub_810B998(void); +static void sub_810BC98(void); +static void sub_810BD08(void); +static void sub_810BB0C(void); +static void sub_810BB30(void); +static void sub_810BC84(u8); + +// sub_810B96C +static void sub_810BF7C(u8); + +// sub_810BC84 +static void sub_810BDAC(bool8); + +// sub_810BF38 +static void sub_810C8D4(struct Sprite *); + +// sub_810BF7C +static void sub_810C0C8(u8); +static void sub_810C31C(u8); +static void sub_810C368(u8); + +// sub_810C0C8 +static void sub_810C1C8(u8, u8); +static void sub_810C23C(u8); + +// sub_810C368 +static void sub_810C40C(u8); + +// sub_810C540 +static void sub_810C5EC(u8); + +// sub_810C610 +static void sub_810C704(u8); + // rodata +#define GFX_TAG_POKEBLOCK_CASE 14800 + const s8 gPokeblockFlavorCompatibilityTable[] = { // Cool, Beauty, Cute, Smart, Tough 0, 0, 0, 0, 0, // Hardy @@ -82,28 +133,19 @@ const u8 *const gPokeblockNames[] = { ContestStatsText_GoldPokeBlock }; -void sub_810C508(u8); -void sub_810C5C0(u8); -void sub_810C748(u8); -void sub_810C788(u8); -void sub_810C854(u8); - const struct MenuAction2 gUnknown_083F7EF4[] = { - OtherText_Use, sub_810C508, - OtherText_Toss, sub_810C5C0, - gOtherText_CancelNoTerminator, sub_810C748, - OtherText_Use, sub_810C788, - OtherText_Use, sub_810C854, + {OtherText_Use, sub_810C508}, + {OtherText_Toss, sub_810C5C0}, + {gOtherText_CancelNoTerminator, sub_810C748}, + {OtherText_Use, sub_810C788}, + {OtherText_Use, sub_810C854}, }; const u8 gUnknown_083F7F1C[] = {0, 1, 2}; const u8 gUnknown_083F7F1F[] = {3, 2}; const u8 gUnknown_083F7F21[] = {4, 2}; -void sub_810C610(u8); -void sub_810C668(u8); - -const struct YesNoFuncTable gUnknown_083F7F24[] = {sub_810C610, sub_810C668}; +const struct YesNoFuncTable gUnknown_083F7F24 = {sub_810C610, sub_810C668}; const u8 UnreferencedData_083F7F2C[] = {0x16, 0x17, 0x18, 0x21, 0x2f}; @@ -136,17 +178,17 @@ const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] = { const struct CompressedSpriteSheet gUnknown_083F7F74 = { gMenuPokeblockDevice_Gfx, 0x800, - 0x39d0 + GFX_TAG_POKEBLOCK_CASE }; const struct CompressedSpritePalette gUnknown_083F7F7C = { gMenuPokeblockDevice_Pal, - 0x39d0 + GFX_TAG_POKEBLOCK_CASE }; const struct SpriteTemplate gSpriteTemplate_83F7F84 = { - 0x39d0, - 0x39d0, + GFX_TAG_POKEBLOCK_CASE, + GFX_TAG_POKEBLOCK_CASE, &gOamData_83F7F34, gSpriteAnimTable_83F7F44, NULL, @@ -184,14 +226,6 @@ static void sub_810B68C(void) DmaCopy16(3, src, dest, sizeof gBGTilemapBuffers[2]); } -static bool8 sub_810B998(void); -u8 sub_810BA50(s16, s16, u8); -void sub_810BC98(void); -void sub_810BD08(void); -void sub_810BB0C(void); -void sub_810BB30(void); -void sub_810BC84(u8); - static bool8 sub_810B6C0(void) { u16 ime; @@ -306,8 +340,6 @@ static bool8 sub_810B6C0(void) return FALSE; } -void sub_810BF7C(u8); - void sub_810B96C(void) { do { @@ -324,7 +356,7 @@ static bool8 sub_810B998(void) switch (ewram[0x1ffff]) { case 0: - LZDecompressVram(gMenuPokeblock_Gfx, (void *)VRAM + 0x8000); + LZDecompressVram(gMenuPokeblock_Gfx, (u8 *)BG_CHAR_ADDR(2)); ewram[0x1ffff]++; break; case 1: @@ -384,13 +416,13 @@ void sub_810BAF4(void) SetMainCallback2(sub_810B96C); } -void sub_810BB0C(void) +static void sub_810BB0C(void) { BasicInitMenuWindow(&gWindowConfig_81E6E34); sub_8072BD8(ItemId_GetItem(ITEM_POKEBLOCK_CASE)->name, 2, 1, 0x48); } -void sub_810BB30(void) +static void sub_810BB30(void) { BasicInitMenuWindow(&gWindowConfig_81E6E34); MenuPrint(gContestStatsText_Spicy, 2, 13); @@ -400,9 +432,7 @@ void sub_810BB30(void) MenuPrint(gContestStatsText_Sour, 8, 15); } -u8 sub_810C9B0(struct Pokeblock *); - -void sub_810BB88(u8 a0) +static void sub_810BB88(u8 a0) { u8 i; u8 y; @@ -431,15 +461,13 @@ void sub_810BB88(u8 a0) } } -void sub_810BDAC(bool8); - -void sub_810BC84(u8 a0) +static void sub_810BC84(u8 a0) { sub_810BB88(a0); sub_810BDAC(FALSE); } -void sub_810BC98(void) +static void sub_810BC98(void) { u16 i, j; struct Pokeblock buf; @@ -457,7 +485,7 @@ void sub_810BC98(void) } } -void sub_810BD08(void) +static void sub_810BD08(void) { u8 i; gUnknown_02039248[2] = 0; @@ -480,7 +508,7 @@ void sub_810BD08(void) } } -void sub_810BD64(u16 a0, u16 a1) +static void sub_810BD64(u16 a0, u16 a1) { u8 i; int y; @@ -491,10 +519,7 @@ void sub_810BD64(u16 a0, u16 a1) } } -s16 sub_810CA9C(const struct Pokeblock *, u8); -u8 sub_810C9E8(struct Pokeblock *); - -void sub_810BDAC(bool8 flag) +static void sub_810BDAC(bool8 flag) { u8 i; u16 v0; @@ -556,20 +581,14 @@ void sub_810BDAC(bool8 flag) } } -void sub_810C8D4(struct Sprite *); - -void sub_810BF38(bool8 flag) +static void sub_810BF38(bool8 flag) { PlaySE(SE_SELECT); gSprites[ewram[0x1fffe]].callback = sub_810C8D4; sub_810BDAC(flag); } -void sub_810C0C8(u8); -void sub_810C31C(u8); -void sub_810C368(u8); - -void sub_810BF7C(u8 taskId) +static void sub_810BF7C(u8 taskId) { if (!gPaletteFade.active) { @@ -635,10 +654,7 @@ void sub_810BF7C(u8 taskId) } } -void sub_810C1C8(u8, u8); -void sub_810C23C(u8); - -void sub_810C0C8(u8 taskId) +static void sub_810C0C8(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { @@ -692,7 +708,7 @@ void sub_810C0C8(u8 taskId) } } -void sub_810C1C8(u8 taskId, u8 flag) +static void sub_810C1C8(u8 taskId, u8 flag) { u8 i; u32 x; @@ -713,7 +729,7 @@ void sub_810C1C8(u8 taskId, u8 flag) } } -void sub_810C23C(u8 taskId) +static void sub_810C23C(u8 taskId) { struct Pokeblock buf; u8 selidx = gUnknown_02039248[1] + gUnknown_02039248[0]; @@ -731,14 +747,14 @@ void sub_810C23C(u8 taskId) } } -void sub_810C2B0(void) +static void sub_810C2B0(void) { DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); BuyMenuFreeMemory(); } -void sub_810C2C8(u8 taskId) +static void sub_810C2C8(u8 taskId) { if (!gPaletteFade.active) { @@ -752,7 +768,7 @@ void sub_810C2C8(u8 taskId) } } -void sub_810C31C(u8 taskId) +static void sub_810C31C(u8 taskId) { BeginNormalPaletteFade(-1, 0, 0, 16, 0); if (gUnknown_02039244 > 1) @@ -762,9 +778,7 @@ void sub_810C31C(u8 taskId) gTasks[taskId].func = sub_810C2C8; } -void sub_810C40C(u8); - -void sub_810C368(u8 taskId) +static void sub_810C368(u8 taskId) { int v0 = 0; if (gUnknown_02039244 > 1) @@ -779,7 +793,7 @@ void sub_810C368(u8 taskId) gTasks[taskId].func = sub_810C40C; } -void sub_810C40C(u8 taskId) +static void sub_810C40C(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { @@ -809,9 +823,7 @@ void sub_810C40C(u8 taskId) } } -void sub_8136130(struct Pokeblock *, MainCallback); - -void sub_810C4C4(u8 taskId) +static void sub_810C4C4(u8 taskId) { if (!gPaletteFade.active) { @@ -821,15 +833,13 @@ void sub_810C4C4(u8 taskId) } } -void sub_810C508(u8 taskId) +static void sub_810C508(u8 taskId) { BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = sub_810C4C4; } -void sub_810C5EC(u8); - -void sub_810C540(u8 taskId) +static void sub_810C540(u8 taskId) { BasicInitMenuWindow(&gWindowConfig_81E6E50); HandleDestroyMenuCursors(); @@ -839,21 +849,19 @@ void sub_810C540(u8 taskId) DisplayItemMessageOnField(taskId, gStringVar4, sub_810C5EC, 0); } -void sub_810C5C0(u8 taskId) +static void sub_810C5C0(u8 taskId) { sub_80F979C(1, 1); gTasks[taskId].func = sub_810C540; } -void sub_810C5EC(u8 taskId) +static void sub_810C5EC(u8 taskId) { DisplayYesNoMenu(7, 6, 1); - DoYesNoFuncWithChoice(taskId, gUnknown_083F7F24); + DoYesNoFuncWithChoice(taskId, &gUnknown_083F7F24); } -void sub_810C704(u8); - -void sub_810C610(u8 taskId) +static void sub_810C610(u8 taskId) { MenuZeroFillWindowRect(7, 6, 13, 11); sub_810CA6C((gUnknown_02039248[0] + gUnknown_02039248[1])); @@ -863,7 +871,7 @@ void sub_810C610(u8 taskId) sub_810BD08(); } -void sub_810C668(u8 taskId) +static void sub_810C668(u8 taskId) { StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); @@ -877,7 +885,7 @@ void sub_810C668(u8 taskId) gTasks[taskId].func = sub_810BF7C; } -void sub_810C6DC(u8 taskId) +static void sub_810C6DC(u8 taskId) { if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) { @@ -885,7 +893,7 @@ void sub_810C6DC(u8 taskId) } } -void sub_810C704(u8 taskId) +static void sub_810C704(u8 taskId) { BasicInitMenuWindow(&gWindowConfig_81E6E34); sub_810BC84(gUnknown_02039248[1]); @@ -893,7 +901,7 @@ void sub_810C704(u8 taskId) gTasks[taskId].func = sub_810C6DC; } -void sub_810C748(u8 taskId) +static void sub_810C748(u8 taskId) { StartVerticalScrollIndicators(0); StartVerticalScrollIndicators(1); @@ -902,7 +910,7 @@ void sub_810C748(u8 taskId) gTasks[taskId].func = sub_810BF7C; } -void sub_810C788(u8 taskId) +static void sub_810C788(u8 taskId) { s16 v0 = sub_810CAE4(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]); StringCopy(gBattleTextBuff1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); @@ -924,7 +932,7 @@ void sub_810C788(u8 taskId) gTasks[taskId].func = sub_810C2C8; } -void sub_810C854(u8 taskId) +static void sub_810C854(u8 taskId) { SafariZoneActivatePokeblockFeeder(gScriptItemId); StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]); @@ -934,7 +942,7 @@ void sub_810C854(u8 taskId) gTasks[taskId].func = sub_810C2C8; } -void sub_810C8D4(struct Sprite *sprite) +static void sub_810C8D4(struct Sprite *sprite) { if (sprite->data0 > 1) { @@ -962,7 +970,7 @@ void sub_810C8D4(struct Sprite *sprite) } } -void ClearPokeblock(u8 pokeblockIdx) +static void ClearPokeblock(u8 pokeblockIdx) { gSaveBlock1.pokeblocks[pokeblockIdx].color = 0; gSaveBlock1.pokeblocks[pokeblockIdx].spicy = 0; -- cgit v1.2.3 From 496fd707b7527382bf97bb08a94ea1d78d543d8e Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 14:45:38 -0400 Subject: Remove excess declarations of gScriptItemId --- include/item_use.h | 2 ++ include/script.h | 1 - include/strings.h | 15 --------------- src/battle_anim_8137220.c | 2 +- src/battle_party_menu.c | 2 +- src/berry.c | 2 +- src/berry_tag_screen.c | 2 +- src/item_use.c | 1 - src/link.c | 2 +- src/party_menu.c | 2 +- src/pokeblock.c | 1 + 11 files changed, 9 insertions(+), 23 deletions(-) diff --git a/include/item_use.h b/include/item_use.h index b35389ee8..61a3b4f7a 100644 --- a/include/item_use.h +++ b/include/item_use.h @@ -1,6 +1,8 @@ #ifndef GUARD_ITEM_USE_H #define GUARD_ITEM_USE_H +extern u16 gScriptItemId; + void ItemUseOnFieldCB_Bike(u8); void ItemUseOnFieldCB_Rod(u8); void ItemUseOnFieldCB_Itemfinder(u8); diff --git a/include/script.h b/include/script.h index 96874e3b4..4070a838f 100644 --- a/include/script.h +++ b/include/script.h @@ -56,6 +56,5 @@ void ClearRamScript(void); bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId); u8 *GetRamScript(u8 objectId, u8 *script); u16 gScriptResult; -u16 gScriptItemId; #endif // GUARD_SCRIPT_H diff --git a/include/strings.h b/include/strings.h index a1fcc30cb..89a78e478 100755 --- a/include/strings.h +++ b/include/strings.h @@ -902,19 +902,4 @@ extern const u8 gSystemText_NoSaveFileNoTime[]; extern const u8 gSystemText_ClockAdjustmentUsable[]; extern const u8 gSystemText_Saving[]; -extern const u8 ContestStatsText_RedPokeBlock[]; -extern const u8 ContestStatsText_BluePokeBlock[]; -extern const u8 ContestStatsText_PinkPokeBlock[]; -extern const u8 ContestStatsText_GreenPokeBlock[]; -extern const u8 ContestStatsText_YellowPokeBlock[]; -extern const u8 ContestStatsText_PurplePokeBlock[]; -extern const u8 ContestStatsText_IndigoPokeBlock[]; -extern const u8 ContestStatsText_BrownPokeBlock[]; -extern const u8 ContestStatsText_LiteBluePokeBlock[]; -extern const u8 ContestStatsText_OlivePokeBlock[]; -extern const u8 ContestStatsText_GrayPokeBlock[]; -extern const u8 ContestStatsText_BlackPokeBlock[]; -extern const u8 ContestStatsText_WhitePokeBlock[]; -extern const u8 ContestStatsText_GoldPokeBlock[]; - #endif diff --git a/src/battle_anim_8137220.c b/src/battle_anim_8137220.c index 42d6cb8da..bb181d5fb 100644 --- a/src/battle_anim_8137220.c +++ b/src/battle_anim_8137220.c @@ -12,6 +12,7 @@ #include "songs.h" #include "sound.h" #include "sprite.h" +#include "item_use.h" #include "string_util.h" #include "task.h" #include "text.h" @@ -33,7 +34,6 @@ extern u8 gBattleBufferA[][0x200]; extern u8 gObjectBankIDs[]; extern MainCallback gPreBattleCallback1; extern bool8 gDoingBattleAnim; -extern u16 gScriptItemId; extern u16 gBattlePartyID[]; extern u8 gHealthboxIDs[]; extern u16 gBattleTypeFlags; diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c index cf572642e..73b847713 100644 --- a/src/battle_party_menu.c +++ b/src/battle_party_menu.c @@ -2,6 +2,7 @@ #include "battle_party_menu.h" #include "battle.h" #include "item_menu.h" +#include "item_use.h" #include "main.h" #include "menu.h" #include "menu_helpers.h" @@ -55,7 +56,6 @@ extern void nullsub_14(); extern void OpenPartyMenu(); extern u8 sub_803FBBC(void); -extern u16 gScriptItemId; extern u8 gPlayerPartyCount; extern u8 gNoOfAllBanks; extern u16 gBattlePartyID[]; diff --git a/src/berry.c b/src/berry.c index d6fbb955e..fa15672e7 100644 --- a/src/berry.c +++ b/src/berry.c @@ -5,6 +5,7 @@ #include "fieldmap.h" #include "item.h" #include "item_menu.h" +#include "item_use.h" #include "items.h" #include "main.h" #include "rng.h" @@ -974,7 +975,6 @@ const struct Berry gBerries[] = const struct BerryTree gBlankBerryTree = {0}; extern u8 BerryTreeScript; -extern u16 gScriptItemId; extern u16 gScriptLastTalked; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 116ca2cca..0e81e4fec 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -5,6 +5,7 @@ #include "field_map_obj.h" #include "item_menu.h" #include "items.h" +#include "item_use.h" #include "main.h" #include "menu.h" #include "menu_helpers.h" @@ -35,7 +36,6 @@ struct BerryTagStatus extern struct Struct2000000 unk_2000000; extern u8 gUnknown_0203932C; extern struct BerryTagStatus gUnknown_0203932E; -extern u16 gScriptItemId; extern u16 gUnknown_030041B4; extern const struct CompressedSpriteSheet gUnknown_083C1F74; diff --git a/src/item_use.c b/src/item_use.c index a92161e9a..b906f91ad 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -50,7 +50,6 @@ extern u8 gUnknown_081A168F[]; extern u16 gBattlePartyID[]; -extern u16 gScriptItemId; extern u16 gBattleTypeFlags; static const u8 gSSTidalBetaString[] = _("この チケットで ふねに のりほうだい\nはやく のってみたいな"); diff --git a/src/link.c b/src/link.c index 363a8b494..5858ad8bf 100644 --- a/src/link.c +++ b/src/link.c @@ -4,6 +4,7 @@ #include "berry.h" #include "berry_blender.h" #include "hall_of_fame.h" +#include "item_use.h" #include "main.h" #include "menu.h" #include "palette.h" @@ -38,7 +39,6 @@ struct LinkTestBGInfo extern u8 unk_2000000[]; extern u8 unk_2004000[]; extern u16 gBattleTypeFlags; -extern u16 gScriptItemId; extern u16 word_3004858; diff --git a/src/party_menu.c b/src/party_menu.c index 99bbb5f83..1fcd2cdda 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -6,6 +6,7 @@ #include "data2.h" #include "event_data.h" #include "item.h" +#include "item_use.h" #include "mail_data.h" #include "main.h" #include "menu.h" @@ -78,7 +79,6 @@ extern u16 gUnknown_0202E8F8; extern u8 gUnknown_0202E8FA; extern u8 gLastFieldPokeMenuOpened; extern u8 gPlayerPartyCount; -extern u16 gScriptItemId; extern s32 gBattleMoveDamage; //extern const u16 gUnknown_083769A8[][6]; diff --git a/src/pokeblock.c b/src/pokeblock.c index a7c6daa8b..dec549bfa 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -19,6 +19,7 @@ #include "menu_helpers.h" #include "battle.h" #include "item_menu.h" +#include "item_use.h" #include "item.h" #include "items.h" #include "sound.h" -- cgit v1.2.3 From b73b15dc9c10ace5145e3d4b339ca833413a1522 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 15:43:12 -0400 Subject: Decompile debug_sub_8120F98 --- src/pokeblock.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/pokeblock.c b/src/pokeblock.c index dec549bfa..b7fa5daa8 100755 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -417,6 +417,17 @@ void sub_810BAF4(void) SetMainCallback2(sub_810B96C); } +#ifdef DEBUG +void debug_sub_8120F98(void) +{ + u8 i; + for (i=0; i<40 && gUnknown_083F7F9C[i].color != 0; i++) + { + gSaveBlock1.pokeblocks[i] = gUnknown_083F7F9C[i]; + } +} +#endif + static void sub_810BB0C(void) { BasicInitMenuWindow(&gWindowConfig_81E6E34); -- cgit v1.2.3 From 7bb9c048b717dcc911383580603009665b479575 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 17:53:44 -0400 Subject: Matching sub_8136294 --- include/pokenav.h | 6 +- src/pokenav.c | 1 + src/use_pokeblock.c | 374 ++-------------------------------------------------- 3 files changed, 14 insertions(+), 367 deletions(-) diff --git a/include/pokenav.h b/include/pokenav.h index 6fc492a29..ebe8ba59d 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -8,8 +8,8 @@ struct UnkPokenavStruct_Sub { struct UnkPokenavStruct_Sub1 { /*0x00*/ void (*unk0)(void); - /*0x04*/ void *unk4; - /*0x08*/ void *unk8; + /*0x04*/ MainCallback callback; + /*0x08*/ struct Pokeblock *pokeblock; /*0x0C*/ u8 fillerC[0x44]; /*0x50*/ u8 unk50; /*0x51*/ u8 unk51[4]; @@ -50,7 +50,7 @@ struct UnkPokenavStruct { /*0xd164*/ struct UnkPokenavStruct_Sub1 unkD164; }; -extern struct UnkPokenavStruct *gUnknown_083DFEC4; +extern struct UnkPokenavStruct *const gUnknown_083DFEC4; bool8 sub_80F170C(void); bool8 sub_80F1778(void); diff --git a/src/pokenav.c b/src/pokenav.c index 3a386d865..84ed7b14b 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -1,4 +1,5 @@ #include "global.h" +#include "main.h" #include "pokenav.h" #include "battle.h" #include "data2.h" diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index fd60d6291..17387e09f 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -15,8 +15,8 @@ asm(".text\n" ".include \"constants/gba_constants.inc\""); -void *gUnknown_02039308; -void *gUnknown_0203930C; +extern MainCallback gUnknown_02039308; +extern struct Pokeblock *gUnknown_0203930C; u8 gUnknown_02039310; extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; @@ -35,11 +35,11 @@ void sub_81368A4(void); void sub_8089668(void); u8 sub_81370E4(u8); -void sub_8136130(struct Pokeblock *a0, MainCallback a1) +void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { gUnknown_02039304 = &gUnknown_083DFEC4->unkD164; - gUnknown_02039304->unk8 = a0; - gUnknown_02039304->unk4 = a1; + gUnknown_02039304->pokeblock = pokeblock; + gUnknown_02039304->callback = callback; gUnknown_083DFEC4->unkD162[0] = 2; launch_c3_walk_stairs_and_run_once(sub_8136294); SetMainCallback2(sub_8136244); @@ -47,8 +47,8 @@ void sub_8136130(struct Pokeblock *a0, MainCallback a1) void sub_8136174(void) { - gUnknown_02039304->unk8 = gUnknown_0203930C; - gUnknown_02039304->unk4 = gUnknown_02039308; + gUnknown_02039304->pokeblock = gUnknown_0203930C; + gUnknown_02039304->callback = gUnknown_02039308; gUnknown_02039310 = sub_81370E4(gUnknown_02039310); gUnknown_02039304->unk56 = gUnknown_02039310 < 4 ? 0 : 1; gUnknown_083DFEC4->unkD162[0] = 2; @@ -101,10 +101,8 @@ void launch_c3_walk_stairs_and_run_once(void (*const func)(void)) gUnknown_02039304->unk50 = 0; } -#ifdef NONMATCHING void sub_8136294(void) { - u32 dma3sad; bool32 c1LinkRelatedActive; switch (gUnknown_02039304->unk50) { @@ -200,13 +198,10 @@ void sub_8136294(void) gUnknown_02039304->unk50++; break; case 16: - dma3sad = 0; - REG_DMA3SAD = (vu32)&dma3sad; - REG_DMA3DAD = 0x600F800; - REG_DMA3CNT = 0x85000200; + DmaClear32(3, 0x600f800, 0x800); REG_BG1VOFS = 0; REG_BG1HOFS = 0; - REG_BG1CNT = 0x1f00; + REG_BG1CNT = BGCNT_SCREENBASE(31); gUnknown_02039304->unk50++; break; case 17: @@ -236,7 +231,7 @@ void sub_8136294(void) REG_WININ = 0x3f3f; REG_WINOUT = 0x1b; REG_BG0VOFS = 0x28; - REG_DISPCNT = 0x7f40; + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; // fallthrough case 22: gUnknown_02039304->unk55 = 1; @@ -244,355 +239,6 @@ void sub_8136294(void) break; } } -#else -__attribute__((naked)) -void sub_8136294(void) -{ - asm(".syntax unified\n" - "\tpush {r4,r5,lr}\n" - "\tsub sp, 0x4\n" - "\tldr r1, _081362B4 @ =gUnknown_02039304\n" - "\tldr r0, [r1]\n" - "\tadds r0, 0x50\n" - "\tldrb r0, [r0]\n" - "\tadds r3, r1, 0\n" - "\tcmp r0, 0x16\n" - "\tbls _081362A8\n" - "\tb _0813657A\n" - "_081362A8:\n" - "\tlsls r0, 2\n" - "\tldr r1, _081362B8 @ =_081362BC\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.align 2, 0\n" - "_081362B4: .4byte gUnknown_02039304\n" - "_081362B8: .4byte _081362BC\n" - "\t.align 2, 0\n" - "_081362BC:\n" - "\t.4byte _08136318\n" - "\t.4byte _08136354\n" - "\t.4byte _0813635E\n" - "\t.4byte _08136366\n" - "\t.4byte _08136374\n" - "\t.4byte _08136380\n" - "\t.4byte _0813638C\n" - "\t.4byte _081363B8\n" - "\t.4byte _081363C8\n" - "\t.4byte _081363DC\n" - "\t.4byte _081363EE\n" - "\t.4byte _08136404\n" - "\t.4byte _08136448\n" - "\t.4byte _08136464\n" - "\t.4byte _08136488\n" - "\t.4byte _08136494\n" - "\t.4byte _0813649A\n" - "\t.4byte _081364D8\n" - "\t.4byte _081364FC\n" - "\t.4byte _08136508\n" - "\t.4byte _08136520\n" - "\t.4byte _08136538\n" - "\t.4byte _0813656C\n" - "_08136318:\n" - "\tbl is_c1_link_related_active\n" - "\tldr r1, _08136344 @ =gUnknown_083DFEC4\n" - "\tldr r1, [r1]\n" - "\tldr r2, _08136348 @ =0x00006dac\n" - "\tadds r1, r2\n" - "\tstrb r0, [r1]\n" - "\tlsls r0, 24\n" - "\tlsrs r1, r0, 24\n" - "\tcmp r1, 0\n" - "\tbeq _08136330\n" - "\tb _0813657A\n" - "_08136330:\n" - "\tldr r4, _0813634C @ =gUnknown_02039304\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x55\n" - "\tstrb r1, [r0]\n" - "\tldr r0, _08136350 @ =sub_81365A0\n" - "\tbl launch_c3_walk_stairs_and_run_once\n" - "\tldr r1, [r4]\n" - "\tb _08136528\n" - "\t.align 2, 0\n" - "_08136344: .4byte gUnknown_083DFEC4\n" - "_08136348: .4byte 0x00006dac\n" - "_0813634C: .4byte gUnknown_02039304\n" - "_08136350: .4byte sub_81365A0\n" - "_08136354:\n" - "\tbl ResetSpriteData\n" - "\tbl FreeAllSpritePalettes\n" - "\tb _08136524\n" - "_0813635E:\n" - "\tmovs r0, 0\n" - "\tbl SetVBlankCallback\n" - "\tb _08136524\n" - "_08136366:\n" - "\tldr r0, _08136370 @ =gWindowConfig_81E7080\n" - "\tbl SetUpWindowConfig\n" - "\tb _08136524\n" - "\t.align 2, 0\n" - "_08136370: .4byte gWindowConfig_81E7080\n" - "_08136374:\n" - "\tldr r0, _0813637C @ =gWindowConfig_81E7080\n" - "\tbl MultistepInitMenuWindowBegin\n" - "\tb _08136524\n" - "\t.align 2, 0\n" - "_0813637C: .4byte gWindowConfig_81E7080\n" - "_08136380:\n" - "\tbl MultistepInitMenuWindowContinue\n" - "\tcmp r0, 0\n" - "\tbne _0813638A\n" - "\tb _0813657A\n" - "_0813638A:\n" - "\tb _08136524\n" - "_0813638C:\n" - "\tldr r0, _081363AC @ =gUnknown_083DFEC4\n" - "\tldr r1, [r0]\n" - "\tldr r4, _081363B0 @ =0x000076aa\n" - "\tadds r0, r1, r4\n" - "\tmovs r2, 0\n" - "\tstrb r2, [r0]\n" - "\tldr r4, _081363B4 @ =0x000087e0\n" - "\tadds r0, r1, r4\n" - "\tstr r2, [r0]\n" - "\tmovs r0, 0xC3\n" - "\tlsls r0, 2\n" - "\tadds r1, r0\n" - "\tmovs r0, 0x20\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r3]\n" - "\tb _08136528\n" - "\t.align 2, 0\n" - "_081363AC: .4byte gUnknown_083DFEC4\n" - "_081363B0: .4byte 0x000076aa\n" - "_081363B4: .4byte 0x000087e0\n" - "_081363B8:\n" - "\tbl sub_80F2688\n" - "\tldr r0, _081363D8 @ =gUnknown_02039304\n" - "\tldr r1, [r0]\n" - "\tadds r1, 0x50\n" - "\tldrb r0, [r1]\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r1]\n" - "_081363C8:\n" - "\tbl sub_80F26BC\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _081363D4\n" - "\tb _0813657A\n" - "_081363D4:\n" - "\tb _08136524\n" - "\t.align 2, 0\n" - "_081363D8: .4byte gUnknown_02039304\n" - "_081363DC:\n" - "\tmovs r0, 0x1\n" - "\tbl sub_80F2C80\n" - "\tldr r0, _08136400 @ =gUnknown_02039304\n" - "\tldr r1, [r0]\n" - "\tadds r1, 0x50\n" - "\tldrb r0, [r1]\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r1]\n" - "_081363EE:\n" - "\tmovs r0, 0x1\n" - "\tbl sub_80F2CBC\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _081363FC\n" - "\tb _0813657A\n" - "_081363FC:\n" - "\tb _08136524\n" - "\t.align 2, 0\n" - "_08136400: .4byte gUnknown_02039304\n" - "_08136404:\n" - "\tldr r1, _08136434 @ =gKeyRepeatStartDelay\n" - "\tmovs r0, 0x14\n" - "\tstrh r0, [r1]\n" - "\tbl CalculatePlayerPartyCount\n" - "\tldr r1, _08136438 @ =gUnknown_083DFEC4\n" - "\tldr r4, [r1]\n" - "\tldr r2, _0813643C @ =0x00008828\n" - "\tadds r1, r4, r2\n" - "\tmovs r5, 0\n" - "\tstrb r0, [r1]\n" - "\tldr r1, _08136440 @ =0x00009344\n" - "\tadds r0, r4, r1\n" - "\tstrb r5, [r0]\n" - "\tsubs r2, 0xC0\n" - "\tadds r0, r4, r2\n" - "\tstr r5, [r0]\n" - "\tbl sub_80F4BD0\n" - "\tldr r0, _08136444 @ =0x0000d160\n" - "\tadds r4, r0\n" - "\tstrh r5, [r4]\n" - "\tb _08136524\n" - "\t.align 2, 0\n" - "_08136434: .4byte gKeyRepeatStartDelay\n" - "_08136438: .4byte gUnknown_083DFEC4\n" - "_0813643C: .4byte 0x00008828\n" - "_08136440: .4byte 0x00009344\n" - "_08136444: .4byte 0x0000d160\n" - "_08136448:\n" - "\tbl sub_80F1778\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbeq _08136454\n" - "\tb _0813657A\n" - "_08136454:\n" - "\tldr r0, _08136460 @ =REG_BG2VOFS\n" - "\tmovs r1, 0x6\n" - "\tstrh r1, [r0]\n" - "\tadds r0, 0x4\n" - "\tstrh r1, [r0]\n" - "\tb _08136524\n" - "\t.align 2, 0\n" - "_08136460: .4byte REG_BG2VOFS\n" - "_08136464:\n" - "\tmovs r0, 0\n" - "\tbl sub_80F2E18\n" - "\tldr r0, _0813647C @ =gUnknown_083DFEC4\n" - "\tldr r0, [r0]\n" - "\tldr r1, _08136480 @ =0x00008768\n" - "\tadds r0, r1\n" - "\tldr r1, [r0]\n" - "\tldr r0, _08136484 @ =0x0000ffd8\n" - "\tstrh r0, [r1, 0x26]\n" - "\tb _08136524\n" - "\t.align 2, 0\n" - "_0813647C: .4byte gUnknown_083DFEC4\n" - "_08136480: .4byte 0x00008768\n" - "_08136484: .4byte 0x0000ffd8\n" - "_08136488:\n" - "\tbl sub_80F170C\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _0813657A\n" - "\tb _08136524\n" - "_08136494:\n" - "\tbl sub_80F33A8\n" - "\tb _08136524\n" - "_0813649A:\n" - "\tldr r1, _081364C4 @ =0x0600f800\n" - "\tmovs r2, 0\n" - "\tstr r2, [sp]\n" - "\tldr r0, _081364C8 @ =0x040000d4\n" - "\tmov r4, sp\n" - "\tstr r4, [r0]\n" - "\tstr r1, [r0, 0x4]\n" - "\tldr r1, _081364CC @ =0x85000200\n" - "\tstr r1, [r0, 0x8]\n" - "\tldr r0, [r0, 0x8]\n" - "\tldr r0, _081364D0 @ =REG_BG1VOFS\n" - "\tstrh r2, [r0]\n" - "\tsubs r0, 0x2\n" - "\tstrh r2, [r0]\n" - "\tldr r1, _081364D4 @ =REG_BG1CNT\n" - "\tmovs r2, 0xF8\n" - "\tlsls r2, 5\n" - "\tadds r0, r2, 0\n" - "\tstrh r0, [r1]\n" - "\tldr r1, [r3]\n" - "\tb _08136528\n" - "\t.align 2, 0\n" - "_081364C4: .4byte 0x0600f800\n" - "_081364C8: .4byte 0x040000d4\n" - "_081364CC: .4byte 0x85000200\n" - "_081364D0: .4byte REG_BG1VOFS\n" - "_081364D4: .4byte REG_BG1CNT\n" - "_081364D8:\n" - "\tldr r0, _081364F0 @ =gUnknown_083DFEC4\n" - "\tldr r1, [r0]\n" - "\tldr r4, _081364F4 @ =0x00008ff0\n" - "\tadds r0, r1, r4\n" - "\tldr r2, _081364F8 @ =0x00009004\n" - "\tadds r1, r2\n" - "\tbl sub_80F567C\n" - "\tbl sub_80F5B38\n" - "\tb _08136524\n" - "\t.align 2, 0\n" - "_081364F0: .4byte gUnknown_083DFEC4\n" - "_081364F4: .4byte 0x00008ff0\n" - "_081364F8: .4byte 0x00009004\n" - "_081364FC:\n" - "\tbl sub_80F5B50\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _0813657A\n" - "\tb _08136524\n" - "_08136508:\n" - "\tldr r0, _08136518 @ =gUnknown_083DFEC4\n" - "\tldr r0, [r0]\n" - "\tldr r4, _0813651C @ =0x00009004\n" - "\tadds r0, r4\n" - "\tbl sub_80F556C\n" - "\tb _08136524\n" - "\t.align 2, 0\n" - "_08136518: .4byte gUnknown_083DFEC4\n" - "_0813651C: .4byte 0x00009004\n" - "_08136520:\n" - "\tbl sub_80F1934\n" - "_08136524:\n" - "\tldr r0, _08136534 @ =gUnknown_02039304\n" - "\tldr r1, [r0]\n" - "_08136528:\n" - "\tadds r1, 0x50\n" - "\tldrb r0, [r1]\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r1]\n" - "\tb _0813657A\n" - "\t.align 2, 0\n" - "_08136534: .4byte gUnknown_02039304\n" - "_08136538:\n" - "\tldr r1, _08136584 @ =REG_WIN0H\n" - "\tmovs r0, 0xF0\n" - "\tstrh r0, [r1]\n" - "\tadds r1, 0x2\n" - "\tmovs r0, 0x9B\n" - "\tstrh r0, [r1]\n" - "\tldr r0, _08136588 @ =REG_WIN0V\n" - "\tldr r2, _0813658C @ =0x00003273\n" - "\tadds r1, r2, 0\n" - "\tstrh r1, [r0]\n" - "\tadds r0, 0x2\n" - "\tstrh r1, [r0]\n" - "\tldr r1, _08136590 @ =REG_WININ\n" - "\tldr r4, _08136594 @ =0x00003f3f\n" - "\tadds r0, r4, 0\n" - "\tstrh r0, [r1]\n" - "\tadds r1, 0x2\n" - "\tmovs r0, 0x1B\n" - "\tstrh r0, [r1]\n" - "\tsubs r1, 0x38\n" - "\tmovs r0, 0x28\n" - "\tstrh r0, [r1]\n" - "\tsubs r1, 0x12\n" - "\tldr r2, _08136598 @ =0x00007f40\n" - "\tadds r0, r2, 0\n" - "\tstrh r0, [r1]\n" - "_0813656C:\n" - "\tldr r0, [r3]\n" - "\tadds r0, 0x55\n" - "\tmovs r1, 0x1\n" - "\tstrb r1, [r0]\n" - "\tldr r0, _0813659C @ =sub_81365C8\n" - "\tbl launch_c3_walk_stairs_and_run_once\n" - "_0813657A:\n" - "\tadd sp, 0x4\n" - "\tpop {r4,r5}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_08136584: .4byte REG_WIN0H\n" - "_08136588: .4byte REG_WIN0V\n" - "_0813658C: .4byte 0x00003273\n" - "_08136590: .4byte REG_WININ\n" - "_08136594: .4byte 0x00003f3f\n" - "_08136598: .4byte 0x00007f40\n" - "_0813659C: .4byte sub_81365C8\n" - ".syntax divided\n"); -} -#endif void sub_81365A0(void) { -- cgit v1.2.3 From 7caa3fd85bcb243cf5f63b2cf58185dc1eb9217c Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 18:20:16 -0400 Subject: sub_8136638 --- asm/use_pokeblock.s | 221 +--------------------------------------------------- include/pokenav.h | 42 +++++----- src/use_pokeblock.c | 101 +++++++++++++++++++++++- 3 files changed, 125 insertions(+), 239 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index c8e96ae0b..b05fcadf4 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,225 +6,6 @@ .text - thumb_func_start sub_8136638 -sub_8136638: @ 8136638 - push {r4,lr} - ldr r0, _08136654 @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x50 - ldrb r0, [r0] - cmp r0, 0x7 - bls _08136648 - b _081367FA -_08136648: - lsls r0, 2 - ldr r1, _08136658 @ =_0813665C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08136654: .4byte gUnknown_02039304 -_08136658: .4byte _0813665C - .align 2, 0 -_0813665C: - .4byte _0813667C - .4byte _08136748 - .4byte _08136754 - .4byte _08136774 - .4byte _081367FA - .4byte _08136780 - .4byte _08136798 - .4byte _081367E0 -_0813667C: - ldr r2, _081366A4 @ =gMain - ldrh r1, [r2, 0x2C] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _081366AC - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl sub_80F5060 - bl move_anim_execute - ldr r0, _081366A8 @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x50 - movs r1, 0x1 - b _081367F8 - .align 2, 0 -_081366A4: .4byte gMain -_081366A8: .4byte gUnknown_02039304 -_081366AC: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _081366D4 - movs r0, 0x5 - bl PlaySE - movs r0, 0 - bl sub_80F5060 - bl move_anim_execute - ldr r0, _081366D0 @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x50 - movs r1, 0x1 - b _081367F8 - .align 2, 0 -_081366D0: .4byte gUnknown_02039304 -_081366D4: - ldrh r1, [r2, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081366F4 - movs r0, 0x5 - bl PlaySE - ldr r0, _081366F0 @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x50 - movs r1, 0x3 - b _081367F8 - .align 2, 0 -_081366F0: .4byte gUnknown_02039304 -_081366F4: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _081366FE - b _081367FA -_081366FE: - movs r0, 0x5 - bl PlaySE - ldr r0, _08136728 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r2, _0813672C @ =0x000087dc - adds r1, r0, r2 - movs r2, 0 - ldrsh r1, [r1, r2] - ldr r2, _08136730 @ =0x000087da - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - subs r0, 0x1 - cmp r1, r0 - bne _08136738 - ldr r0, _08136734 @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x50 - movs r1, 0x3 - b _081367F8 - .align 2, 0 -_08136728: .4byte gUnknown_083DFEC4 -_0813672C: .4byte 0x000087dc -_08136730: .4byte 0x000087da -_08136734: .4byte gUnknown_02039304 -_08136738: - ldr r0, _08136744 @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x50 - movs r1, 0x5 - b _081367F8 - .align 2, 0 -_08136744: .4byte gUnknown_02039304 -_08136748: - bl gpu_sync_bg_show - lsls r0, 24 - cmp r0, 0 - bne _081367FA - b _08136784 -_08136754: - bl sub_8055870 - adds r4, r0, 0 - cmp r4, 0 - bne _081367FA - bl sub_80F1934 - bl sub_80F3D00 - ldr r0, _08136770 @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x50 - strb r4, [r0] - b _081367FA - .align 2, 0 -_08136770: .4byte gUnknown_02039304 -_08136774: - ldr r0, _0813677C @ =sub_8136B44 - bl launch_c3_walk_stairs_and_run_once - b _081367FA - .align 2, 0 -_0813677C: .4byte sub_8136B44 -_08136780: - bl sub_8136BB8 -_08136784: - ldr r0, _08136794 @ =gUnknown_02039304 - ldr r1, [r0] - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _081367FA - .align 2, 0 -_08136794: .4byte gUnknown_02039304 -_08136798: - bl sub_8136C40 - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - beq _081367B8 - cmp r1, 0 - bgt _081367B2 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _081367F0 - b _081367FA -_081367B2: - cmp r1, 0x1 - bne _081367FA - b _081367F0 -_081367B8: - bl sub_8137058 - lsls r0, 24 - cmp r0, 0 - beq _081367D4 - bl sub_8136D60 - ldr r0, _081367D0 @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x50 - movs r1, 0x7 - b _081367F8 - .align 2, 0 -_081367D0: .4byte gUnknown_02039304 -_081367D4: - ldr r0, _081367DC @ =sub_8136808 - bl launch_c3_walk_stairs_and_run_once - b _081367FA - .align 2, 0 -_081367DC: .4byte sub_8136808 -_081367E0: - ldr r0, _08136800 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _081367FA - bl sub_8136D8C -_081367F0: - ldr r0, _08136804 @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x50 - movs r1, 0 -_081367F8: - strb r1, [r0] -_081367FA: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08136800: .4byte gMain -_08136804: .4byte gUnknown_02039304 - thumb_func_end sub_8136638 - thumb_func_start sub_8136808 sub_8136808: @ 8136808 push {r4,r5,lr} @@ -1517,5 +1298,5 @@ _08137218: .align 2, 0 _0813721C: .4byte gUnknown_02039304 thumb_func_end sub_81371DC - + .align 2, 0 @ Don't pad with nop. diff --git a/include/pokenav.h b/include/pokenav.h index ebe8ba59d..5fffc91fb 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -28,26 +28,29 @@ struct UnkPokenavStruct { /*0x0000*/ u8 filler030E[0x6a9e]; /*0x6DAC*/ u8 unk6DAC; /*0x6DAD*/ u8 filler6DAD[0x8fd]; - /*0x6DAD*/ u8 unk76AA; - /*0x6DAD*/ u8 filler76AB[0x10bd]; - /*0x6DAD*/ struct UnkPokenavStruct_Sub2 *unk8768; - /*0x6DAD*/ u8 filler876C[0x74]; - /*0x6DAD*/ void *unk87E0; - /*0x6DAD*/ u8 filler87E4[0x44]; - /*0x6DAD*/ u8 unk8828; - /*0x6DAD*/ u8 filler8829[0x7c7]; - /*0x6DAD*/ u8 unk8ff0; - /*0x6DAD*/ u8 filler8ff1[0x13]; - /*0x6DAD*/ u8 unk9004; - /*0x6DAD*/ u8 filler9005[0x33f]; - /*0x6DAD*/ u8 unk9344; - /*0x6DAD*/ u8 filler9345[0x3ba3]; + /*0x76AA*/ u8 unk76AA; + /*0x76AB*/ u8 filler76AB[0x10bd]; + /*0x8768*/ struct UnkPokenavStruct_Sub2 *unk8768; + /*0x876C*/ u8 filler876C[0x6e]; + /*0x87DA*/ s16 unk87DA; + /*0x87DC*/ s16 unk87DC; + /*0x87DE*/ s16 unk87DE; + /*0x87E0*/ void *unk87E0; + /*0x87E4*/ u8 filler87E4[0x44]; + /*0x8828*/ u8 unk8828; + /*0x8829*/ u8 filler8829[0x7c7]; + /*0x8ff0*/ u8 unk8ff0; + /*0x8ff1*/ u8 filler8ff1[0x13]; + /*0x9004*/ u8 unk9004; + /*0x9005*/ u8 filler9005[0x33f]; + /*0x9344*/ u8 unk9344; + /*0x9345*/ u8 filler9345[0x3ba3]; /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78]; /*0xD158*/ u16 unkD158; - /*0xd15a*/ u8 fillerD15A[6]; - /*0xd162*/ u16 unkD160; - /*0xd162*/ u8 unkD162[2]; - /*0xd164*/ struct UnkPokenavStruct_Sub1 unkD164; + /*0xD15A*/ u8 fillerD15A[6]; + /*0xD162*/ u16 unkD160; + /*0xD162*/ u8 unkD162[2]; + /*0xD164*/ struct UnkPokenavStruct_Sub1 unkD164; }; extern struct UnkPokenavStruct *const gUnknown_083DFEC4; @@ -70,5 +73,8 @@ void sub_80F5B38(void); bool8 sub_80F5B50(void); void sub_80F5CDC(u8); void sub_80EBA5C(void); +void sub_80F5060(bool8); +void move_anim_execute(void); +bool8 gpu_sync_bg_show(void); #endif // GUARD_POKENAV_H diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 17387e09f..3c9afb756 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -10,6 +10,8 @@ #include "palette.h" #include "text.h" #include "menu.h" +#include "sound.h" +#include "songs.h" #include "use_pokeblock.h" asm(".text\n" @@ -33,7 +35,14 @@ void sub_81365C8(void); void sub_8136638(void); void sub_81368A4(void); void sub_8089668(void); +void sub_8136B44(void); u8 sub_81370E4(u8); +void sub_8136BB8(void); +s8 sub_8136C40(void); +bool8 sub_8137058(void); +void sub_8136D60(void); +void sub_8136808(void); +void sub_8136D8C(void); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -198,7 +207,7 @@ void sub_8136294(void) gUnknown_02039304->unk50++; break; case 16: - DmaClear32(3, 0x600f800, 0x800); + DmaClear32(3, BG_SCREEN_ADDR(31), 0x800); REG_BG1VOFS = 0; REG_BG1HOFS = 0; REG_BG1CNT = BGCNT_SCREENBASE(31); @@ -267,3 +276,93 @@ void sub_81365C8(void) break; } } + +void sub_8136638(void) +{ + switch (gUnknown_02039304->unk50) + { + case 0: + if (gMain.heldKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + sub_80F5060(TRUE); + move_anim_execute(); + gUnknown_02039304->unk50 = 1; + } + else if (gMain.heldKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + sub_80F5060(FALSE); + move_anim_execute(); + gUnknown_02039304->unk50 = 1; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gUnknown_02039304->unk50 = 3; + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (gUnknown_083DFEC4->unk87DC == gUnknown_083DFEC4->unk87DA - 1) + { + gUnknown_02039304->unk50 = 3; + } + else + { + gUnknown_02039304->unk50 = 5; + } + } + break; + case 1: + if (!gpu_sync_bg_show()) + { + gUnknown_02039304->unk50++; + } + break; + case 2: + if (!sub_8055870()) + { + sub_80F1934(); + sub_80F3D00(); + gUnknown_02039304->unk50 = 0; + } + break; + case 3: + launch_c3_walk_stairs_and_run_once(sub_8136B44); + break; + case 4: + break; + case 5: + sub_8136BB8(); + gUnknown_02039304->unk50++; + break; + case 6: + switch (sub_8136C40()) + { + case 1: + case -1: + gUnknown_02039304->unk50 = 0; + break; + case 0: + if (sub_8137058()) + { + sub_8136D60(); + gUnknown_02039304->unk50 = 7; + } + else + { + launch_c3_walk_stairs_and_run_once(sub_8136808); + } + break; + } + break; + case 7: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + { + sub_8136D8C(); + gUnknown_02039304->unk50 = 0; + } + break; + } +} -- cgit v1.2.3 From c44f9abfbb661d1721f03244eac99062df86d85d Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 18:29:30 -0400 Subject: sub_8136808 --- asm/use_pokeblock.s | 74 ------------------------------------------------ include/pokeblock_feed.h | 10 +++++++ src/use_pokeblock.c | 23 +++++++++++++++ 3 files changed, 33 insertions(+), 74 deletions(-) create mode 100644 include/pokeblock_feed.h diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index b05fcadf4..e6f69d335 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,80 +6,6 @@ .text - thumb_func_start sub_8136808 -sub_8136808: @ 8136808 - push {r4,r5,lr} - sub sp, 0x4 - ldr r5, _08136820 @ =gUnknown_02039304 - ldr r0, [r5] - adds r0, 0x50 - ldrb r4, [r0] - cmp r4, 0 - beq _08136824 - cmp r4, 0x1 - beq _08136874 - b _0813688C - .align 2, 0 -_08136820: .4byte gUnknown_02039304 -_08136824: - ldr r0, _08136860 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _08136864 @ =0x000087dc - adds r0, r1 - ldrb r0, [r0] - bl sub_81370A4 - ldr r1, _08136868 @ =gUnknown_02039310 - strb r0, [r1] - ldr r1, _0813686C @ =gUnknown_02039308 - ldr r2, [r5] - ldr r0, [r2, 0x4] - str r0, [r1] - ldr r1, _08136870 @ =gUnknown_0203930C - ldr r0, [r2, 0x8] - str r0, [r1] - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, [r5] - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0813688C - .align 2, 0 -_08136860: .4byte gUnknown_083DFEC4 -_08136864: .4byte 0x000087dc -_08136868: .4byte gUnknown_02039310 -_0813686C: .4byte gUnknown_02039308 -_08136870: .4byte gUnknown_0203930C -_08136874: - ldr r0, _08136894 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813688C - ldr r0, _08136898 @ =gMain - ldr r1, _0813689C @ =sub_8136174 - str r1, [r0, 0x8] - ldr r0, _081368A0 @ =sub_8147ADC - bl SetMainCallback2 -_0813688C: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08136894: .4byte gPaletteFade -_08136898: .4byte gMain -_0813689C: .4byte sub_8136174 -_081368A0: .4byte sub_8147ADC - thumb_func_end sub_8136808 - thumb_func_start sub_81368A4 sub_81368A4: @ 81368A4 push {r4,lr} diff --git a/include/pokeblock_feed.h b/include/pokeblock_feed.h new file mode 100644 index 000000000..65d0d1dc9 --- /dev/null +++ b/include/pokeblock_feed.h @@ -0,0 +1,10 @@ +// +// Created by Scott Norton on 6/28/17. +// + +#ifndef POKERUBY_POKEBLOCK_FEED_H +#define POKERUBY_POKEBLOCK_FEED_H + +void sub_8147ADC(void); + +#endif //POKERUBY_POKEBLOCK_FEED_H diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 3c9afb756..b23cc4d69 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -12,6 +12,7 @@ #include "menu.h" #include "sound.h" #include "songs.h" +#include "pokeblock_feed.h" #include "use_pokeblock.h" asm(".text\n" @@ -43,6 +44,7 @@ bool8 sub_8137058(void); void sub_8136D60(void); void sub_8136808(void); void sub_8136D8C(void); +u8 sub_81370A4(u8); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -366,3 +368,24 @@ void sub_8136638(void) break; } } + +void sub_8136808(void) +{ + switch (gUnknown_02039304->unk50) + { + case 0: + gUnknown_02039310 = sub_81370A4(gUnknown_083DFEC4->unk87DC); + gUnknown_02039308 = gUnknown_02039304->callback; + gUnknown_0203930C = gUnknown_02039304->pokeblock; + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_02039304->unk50++; + break; + case 1: + if (!gPaletteFade.active) + { + gMain.savedCallback = sub_8136174; + SetMainCallback2(sub_8147ADC); + } + break; + } +} -- cgit v1.2.3 From ea9652139728e41317b900f0aba5f50478643fc5 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 18:37:35 -0400 Subject: sub_81368A4 --- asm/use_pokeblock.s | 139 ---------------------------------------------------- src/use_pokeblock.c | 54 ++++++++++++++++++++ 2 files changed, 54 insertions(+), 139 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index e6f69d335..2cb9110dd 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,145 +6,6 @@ .text - thumb_func_start sub_81368A4 -sub_81368A4: @ 81368A4 - push {r4,lr} - sub sp, 0x4 - ldr r1, _081368C4 @ =gUnknown_02039304 - ldr r0, [r1] - adds r0, 0x50 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x6 - bls _081368B8 - b _081369B8 -_081368B8: - lsls r0, 2 - ldr r1, _081368C8 @ =_081368CC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081368C4: .4byte gUnknown_02039304 -_081368C8: .4byte _081368CC - .align 2, 0 -_081368CC: - .4byte _081368E8 - .4byte _08136922 - .4byte _0813692E - .4byte _0813694C - .4byte _0813695A - .4byte _0813696C - .4byte _08136998 -_081368E8: - ldr r0, _0813690C @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _08136910 @ =0x000087dc - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r0, _08136914 @ =gUnknown_02039310 - ldrb r0, [r0] - cmp r1, r0 - beq _08136918 - ldr r0, [r4] - adds r0, 0x56 - ldrb r0, [r0] - bl sub_80F5060 - ldr r1, [r4] - b _08136986 - .align 2, 0 -_0813690C: .4byte gUnknown_083DFEC4 -_08136910: .4byte 0x000087dc -_08136914: .4byte gUnknown_02039310 -_08136918: - ldr r0, [r4] - adds r0, 0x50 - movs r1, 0x3 - strb r1, [r0] - b _081369B8 -_08136922: - bl gpu_sync_bg_show - lsls r0, 24 - cmp r0, 0 - bne _081369B8 - b _08136982 -_0813692E: - bl sub_8055870 - adds r4, r0, 0 - cmp r4, 0 - bne _081369B8 - bl sub_80F1934 - ldr r0, _08136948 @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x50 - strb r4, [r0] - b _081369B8 - .align 2, 0 -_08136948: .4byte gUnknown_02039304 -_0813694C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0x10 - movs r2, 0 - bl BlendPalettes - b _08136982 -_0813695A: - movs r1, 0x80 - lsls r1, 19 - ldr r2, _08136968 @ =0x00007f40 - adds r0, r2, 0 - strh r0, [r1] - ldr r1, [r4] - b _08136986 - .align 2, 0 -_08136968: .4byte 0x00007f40 -_0813696C: - ldr r0, _08136990 @ =sub_8136264 - bl SetVBlankCallback - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade -_08136982: - ldr r0, _08136994 @ =gUnknown_02039304 - ldr r1, [r0] -_08136986: - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _081369B8 - .align 2, 0 -_08136990: .4byte sub_8136264 -_08136994: .4byte gUnknown_02039304 -_08136998: - ldr r0, _081369C0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _081369B8 - bl sub_80F3C94 - bl sub_80F3D00 - ldr r0, _081369C4 @ =sub_81369CC - bl launch_c3_walk_stairs_and_run_once - ldr r0, _081369C8 @ =sub_8136244 - bl SetMainCallback2 -_081369B8: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081369C0: .4byte gPaletteFade -_081369C4: .4byte sub_81369CC -_081369C8: .4byte sub_8136244 - thumb_func_end sub_81368A4 - thumb_func_start sub_81369CC sub_81369CC: @ 81369CC push {r4-r6,lr} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index b23cc4d69..f84ecad08 100644 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -45,6 +45,7 @@ void sub_8136D60(void); void sub_8136808(void); void sub_8136D8C(void); u8 sub_81370A4(u8); +void sub_81369CC(void); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -389,3 +390,56 @@ void sub_8136808(void) break; } } + +void sub_81368A4(void) +{ + switch (gUnknown_02039304->unk50) + { + case 0: + if (gUnknown_083DFEC4->unk87DC != gUnknown_02039310) + { + sub_80F5060(gUnknown_02039304->unk56); + gUnknown_02039304->unk50++; + } + else + { + gUnknown_02039304->unk50 = 3; + } + break; + case 1: + if (!gpu_sync_bg_show()) + { + gUnknown_02039304->unk50++; + } + break; + case 2: + if (!sub_8055870()) + { + sub_80F1934(); + gUnknown_02039304->unk50 = 0; + } + break; + case 3: + BlendPalettes(-1, 16, 0); + gUnknown_02039304->unk50++; + break; + case 4: + REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; + gUnknown_02039304->unk50++; + break; + case 5: + SetVBlankCallback(sub_8136264); + BeginNormalPaletteFade(-1, 0, 16, 0, 0); + gUnknown_02039304->unk50++; + break; + case 6: + if (!gPaletteFade.active) + { + sub_80F3C94(); + sub_80F3D00(); + launch_c3_walk_stairs_and_run_once(sub_81369CC); + SetMainCallback2(sub_8136244); + } + break; + } +} -- cgit v1.2.3 From 5c8320f9e1f8735272e2b8239fbba3b2b6eb69c4 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 28 Jun 2017 19:09:19 -0400 Subject: sub_81369CC --- asm/use_pokeblock.s | 170 ---------------------------------------------------- include/pokenav.h | 30 ++++++++-- src/use_pokeblock.c | 57 +++++++++++++++++- 3 files changed, 79 insertions(+), 178 deletions(-) mode change 100644 => 100755 include/pokenav.h mode change 100644 => 100755 src/use_pokeblock.c diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 2cb9110dd..a2c16bc16 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,176 +6,6 @@ .text - thumb_func_start sub_81369CC -sub_81369CC: @ 81369CC - push {r4-r6,lr} - ldr r1, _081369E8 @ =gUnknown_02039304 - ldr r0, [r1] - adds r0, 0x50 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x5 - bls _081369DE - b _08136B32 -_081369DE: - lsls r0, 2 - ldr r1, _081369EC @ =_081369F0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_081369E8: .4byte gUnknown_02039304 -_081369EC: .4byte _081369F0 - .align 2, 0 -_081369F0: - .4byte _08136A08 - .4byte _08136A48 - .4byte _08136A5C - .4byte _08136AAC - .4byte _08136AEC - .4byte _08136B0E -_08136A08: - ldr r3, [r4] - ldr r2, _08136A38 @ =gPlayerParty - str r2, [r3, 0xC] - ldr r0, _08136A3C @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r5, _08136A40 @ =0x000087dc - adds r0, r1, r5 - movs r5, 0 - ldrsh r0, [r0, r5] - lsls r0, 2 - adds r1, r0 - ldr r0, _08136A44 @ =0x0000893e - adds r1, r0 - ldrb r0, [r1] - lsls r0, 27 - lsrs r0, 27 - movs r1, 0x64 - muls r0, r1 - adds r0, r2 - str r0, [r3, 0xC] - bl move_anim_execute - b _08136B02 - .align 2, 0 -_08136A38: .4byte gPlayerParty -_08136A3C: .4byte gUnknown_083DFEC4 -_08136A40: .4byte 0x000087dc -_08136A44: .4byte 0x0000893e -_08136A48: - ldr r0, _08136A58 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08136B32 - b _08136B02 - .align 2, 0 -_08136A58: .4byte gMain -_08136A5C: - bl sub_8136EF0 - ldr r6, _08136A98 @ =gUnknown_02039304 - ldr r0, [r6] - adds r0, 0x5C - ldr r1, _08136A9C @ =gUnknown_083DFEC4 - ldr r4, [r1] - ldr r1, _08136AA0 @ =0x00009040 - adds r5, r4, r1 - adds r1, r5, 0 - bl sub_80F567C - ldr r1, _08136AA4 @ =0x00008fe9 - adds r0, r4, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 2 - ldr r1, _08136AA8 @ =0x00009004 - adds r0, r1 - adds r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80F5550 - bl sub_8137138 - ldr r1, [r6] - b _08136B04 - .align 2, 0 -_08136A98: .4byte gUnknown_02039304 -_08136A9C: .4byte gUnknown_083DFEC4 -_08136AA0: .4byte 0x00009040 -_08136AA4: .4byte 0x00008fe9 -_08136AA8: .4byte 0x00009004 -_08136AAC: - bl sub_80F555C - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _08136B32 - ldr r0, _08136AE0 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r5, _08136AE4 @ =0x000087dc - adds r0, r5 - ldrb r0, [r0] - bl sub_81370A4 - lsls r0, 24 - lsrs r0, 24 - bl sub_80F7224 - bl sub_80F3D00 - ldr r1, _08136AE8 @ =gUnknown_02039304 - ldr r0, [r1] - adds r0, 0x52 - strb r4, [r0] - ldr r1, [r1] - b _08136B04 - .align 2, 0 -_08136AE0: .4byte gUnknown_083DFEC4 -_08136AE4: .4byte 0x000087dc -_08136AE8: .4byte gUnknown_02039304 -_08136AEC: - ldr r1, [r4] - adds r1, 0x52 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - bls _08136B32 - bl sub_8136C6C -_08136B02: - ldr r1, [r4] -_08136B04: - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08136B32 -_08136B0E: - ldr r0, _08136B38 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _08136B32 - bl sub_8136D00 - lsls r0, 24 - cmp r0, 0 - bne _08136B32 - ldr r0, _08136B3C @ =gScriptItemId - ldrb r0, [r0] - bl sub_810CA6C - ldr r0, _08136B40 @ =sub_8136B44 - bl launch_c3_walk_stairs_and_run_once -_08136B32: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08136B38: .4byte gMain -_08136B3C: .4byte gScriptItemId -_08136B40: .4byte sub_8136B44 - thumb_func_end sub_81369CC - thumb_func_start sub_8136B44 sub_8136B44: @ 8136B44 push {r4,lr} diff --git a/include/pokenav.h b/include/pokenav.h old mode 100644 new mode 100755 index 5fffc91fb..a35bd3117 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -10,11 +10,17 @@ struct UnkPokenavStruct_Sub1 { /*0x00*/ void (*unk0)(void); /*0x04*/ MainCallback callback; /*0x08*/ struct Pokeblock *pokeblock; - /*0x0C*/ u8 fillerC[0x44]; + /*0x0C*/ struct Pokemon *pokemon; + /*0x10*/ u8 fillerC[0x40]; /*0x50*/ u8 unk50; - /*0x51*/ u8 unk51[4]; - /*0x56*/ u8 unk55; + /*0x51*/ u8 unk51; + /*0x52*/ u8 unk52; + /*0x53*/ u8 unk53; + /*0x54*/ u8 unk54; + /*0x55*/ u8 unk55; /*0x56*/ u8 unk56; + /*0x57*/ u8 fil57[5]; + /*0x5c*/ u8 unk5c[1]; }; struct UnkPokenavStruct_Sub2 { @@ -22,6 +28,11 @@ struct UnkPokenavStruct_Sub2 { /*0x26*/ u16 unk26; }; +struct UnkUsePokeblockSub { + /*0*/ u8 fil0[2]; + /*2*/ u8 partyIdx:5; +}; + struct UnkPokenavStruct { /*0x0000*/ u8 filler0000[0x30c]; /*0x0000*/ u16 unk030C; @@ -38,11 +49,15 @@ struct UnkPokenavStruct { /*0x87E0*/ void *unk87E0; /*0x87E4*/ u8 filler87E4[0x44]; /*0x8828*/ u8 unk8828; - /*0x8829*/ u8 filler8829[0x7c7]; + /*0x8829*/ u8 filler8829[0x113]; + /*0x893C*/ struct UnkUsePokeblockSub unk893c[0x1ab]; + /*0x8fe8*/ u8 fil8fe8[1]; + /*0x8fe9*/ s8 unk8fe9; + /*0x8fea*/ u8 fil8fea[6]; /*0x8ff0*/ u8 unk8ff0; /*0x8ff1*/ u8 filler8ff1[0x13]; - /*0x9004*/ u8 unk9004; - /*0x9005*/ u8 filler9005[0x33f]; + /*0x9004*/ u8 unk9004[3][20]; + /*0x9040*/ u8 unk9040[0x304]; /*0x9344*/ u8 unk9344; /*0x9345*/ u8 filler9345[0x3ba3]; /*0xCEE8*/ struct UnkPokenavStruct_Sub unkCEE8[78]; @@ -76,5 +91,8 @@ void sub_80EBA5C(void); void sub_80F5060(bool8); void move_anim_execute(void); bool8 gpu_sync_bg_show(void); +void sub_80F5550(void *, void *); +bool8 sub_80F555C(void); +void sub_80F7224(u8); #endif // GUARD_POKENAV_H diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c old mode 100644 new mode 100755 index f84ecad08..861a3efcd --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -12,6 +12,7 @@ #include "menu.h" #include "sound.h" #include "songs.h" +#include "pokeblock.h" #include "pokeblock_feed.h" #include "use_pokeblock.h" @@ -24,6 +25,7 @@ u8 gUnknown_02039310; extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; extern u16 gKeyRepeatStartDelay; +extern u16 gScriptItemId; // remove after merge of #349 Pokeblock void launch_c3_walk_stairs_and_run_once(void (*const)(void)); void sub_81361E4(void); @@ -46,6 +48,10 @@ void sub_8136808(void); void sub_8136D8C(void); u8 sub_81370A4(u8); void sub_81369CC(void); +void sub_8136EF0(void); +void sub_8137138(void); +void sub_8136C6C(void); +bool8 sub_8136D00(void); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -217,7 +223,7 @@ void sub_8136294(void) gUnknown_02039304->unk50++; break; case 17: - sub_80F567C(&gUnknown_083DFEC4->unk8ff0, &gUnknown_083DFEC4->unk9004); + sub_80F567C(&gUnknown_083DFEC4->unk8ff0, gUnknown_083DFEC4->unk9004); sub_80F5B38(); gUnknown_02039304->unk50++; break; @@ -228,7 +234,7 @@ void sub_8136294(void) } break; case 19: - sub_80F556C(&gUnknown_083DFEC4->unk9004); + sub_80F556C(gUnknown_083DFEC4->unk9004); gUnknown_02039304->unk50++; break; case 20: @@ -443,3 +449,50 @@ void sub_81368A4(void) break; } } + +void sub_81369CC(void) +{ + switch (gUnknown_02039304->unk50) + { + case 0: + gUnknown_02039304->pokemon = &gPlayerParty[0]; + gUnknown_02039304->pokemon = &gPlayerParty[gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx]; + move_anim_execute(); + gUnknown_02039304->unk50++; + break; + case 1: + if (gMain.newKeys & (A_BUTTON | B_BUTTON)) + gUnknown_02039304->unk50++; + break; + case 2: + sub_8136EF0(); + sub_80F567C(gUnknown_02039304->unk5c, gUnknown_083DFEC4->unk9040); + sub_80F5550(gUnknown_083DFEC4->unk9004[gUnknown_083DFEC4->unk8fe9], gUnknown_083DFEC4->unk9040); + sub_8137138(); + gUnknown_02039304->unk50++; + break; + case 3: + if (!sub_80F555C()) + { + sub_80F7224(sub_81370A4(gUnknown_083DFEC4->unk87DC)); + sub_80F3D00(); + gUnknown_02039304->unk52 = 0; + gUnknown_02039304->unk50++; + } + break; + case 4: + if ((++gUnknown_02039304->unk52) > 16) + { + sub_8136C6C(); + gUnknown_02039304->unk50++; + } + break; + case 5: + if (gMain.newKeys & (A_BUTTON | B_BUTTON) && !sub_8136D00()) + { + sub_810CA6C((u8)gScriptItemId); + launch_c3_walk_stairs_and_run_once(sub_8136B44); + } + break; + } +} -- cgit v1.2.3 From 66f219dba7d19cc5561cd12fb81b4add8eb888e0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 28 Jun 2017 21:53:45 -0400 Subject: through sub_8136C40 --- asm/use_pokeblock.s | 145 ---------------------------------------------------- include/pokenav.h | 3 +- src/use_pokeblock.c | 49 ++++++++++++++++++ 3 files changed, 51 insertions(+), 146 deletions(-) mode change 100644 => 100755 asm/use_pokeblock.s diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s old mode 100644 new mode 100755 index a2c16bc16..27ccf4da3 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,151 +6,6 @@ .text - thumb_func_start sub_8136B44 -sub_8136B44: @ 8136B44 - push {r4,lr} - sub sp, 0x4 - ldr r4, _08136B60 @ =gUnknown_02039304 - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0x50 - ldrb r1, [r2] - cmp r1, 0x1 - beq _08136B80 - cmp r1, 0x1 - bgt _08136B64 - cmp r1, 0 - beq _08136B6E - b _08136BAE - .align 2, 0 -_08136B60: .4byte gUnknown_02039304 -_08136B64: - cmp r1, 0x2 - beq _08136B98 - cmp r1, 0x3 - beq _08136BA8 - b _08136BAE -_08136B6E: - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - b _08136B9C -_08136B80: - ldr r0, _08136B94 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08136BAE - movs r0, 0x2 - strb r0, [r2] - b _08136BAE - .align 2, 0 -_08136B94: .4byte gPaletteFade -_08136B98: - bl sub_80F5BDC -_08136B9C: - ldr r1, [r4] - adds r1, 0x50 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08136BAE -_08136BA8: - ldr r0, [r0, 0x4] - bl SetMainCallback2 -_08136BAE: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8136B44 - - thumb_func_start sub_8136BB8 -sub_8136BB8: @ 8136BB8 - push {r4,lr} - ldr r0, _08136C28 @ =gUnknown_083DFEC4 - ldr r0, [r0] - ldr r1, _08136C2C @ =0x000087dc - adds r0, r1 - ldrb r0, [r0] - bl sub_81370A4 - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _08136C30 @ =gPlayerParty - adds r0, r1 - ldr r4, _08136C34 @ =gUnknown_02039304 - ldr r2, [r4] - adds r2, 0x10 - movs r1, 0x2 - bl GetMonData - ldr r0, [r4] - adds r0, 0x10 - bl StringGetEnd10 - ldr r0, [r4] - adds r0, 0x10 - ldr r1, _08136C38 @ =gOtherText_GetsAPokeBlock - bl StringAppend - ldr r0, _08136C3C @ =gWindowConfig_81E709C - bl BasicInitMenuWindow - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, [r4] - adds r0, 0x10 - movs r1, 0x1 - movs r2, 0x11 - bl MenuPrint - movs r0, 0x17 - movs r1, 0xA - movs r2, 0x1 - bl DisplayYesNoMenu - movs r0, 0 - bl MoveMenuCursor - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08136C28: .4byte gUnknown_083DFEC4 -_08136C2C: .4byte 0x000087dc -_08136C30: .4byte gPlayerParty -_08136C34: .4byte gUnknown_02039304 -_08136C38: .4byte gOtherText_GetsAPokeBlock -_08136C3C: .4byte gWindowConfig_81E709C - thumb_func_end sub_8136BB8 - - thumb_func_start sub_8136C40 -sub_8136C40: @ 8136C40 - push {r4,lr} - bl ProcessMenuInputNoWrap - lsls r0, 24 - asrs r4, r0, 24 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r0, 24 - cmp r0, 0x2 - bhi _08136C60 - bl MenuZeroFillScreen - ldr r0, _08136C68 @ =gWindowConfig_81E7080 - bl BasicInitMenuWindow -_08136C60: - adds r0, r4, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08136C68: .4byte gWindowConfig_81E7080 - thumb_func_end sub_8136C40 - thumb_func_start sub_8136C6C sub_8136C6C: @ 8136C6C push {lr} diff --git a/include/pokenav.h b/include/pokenav.h index a35bd3117..87ba4d42c 100755 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -11,7 +11,7 @@ struct UnkPokenavStruct_Sub1 { /*0x04*/ MainCallback callback; /*0x08*/ struct Pokeblock *pokeblock; /*0x0C*/ struct Pokemon *pokemon; - /*0x10*/ u8 fillerC[0x40]; + /*0x10*/ u8 stringBuffer[0x40]; /*0x50*/ u8 unk50; /*0x51*/ u8 unk51; /*0x52*/ u8 unk52; @@ -94,5 +94,6 @@ bool8 gpu_sync_bg_show(void); void sub_80F5550(void *, void *); bool8 sub_80F555C(void); void sub_80F7224(u8); +void sub_80F5BDC(void); #endif // GUARD_POKENAV_H diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 861a3efcd..e6875645b 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -5,6 +5,8 @@ #include "global.h" #include "main.h" #include "rom4.h" +#include "string_util.h" +#include "strings.h" #include "pokemon.h" #include "pokenav.h" #include "palette.h" @@ -496,3 +498,50 @@ void sub_81369CC(void) break; } } + +void sub_8136B44(void) +{ + switch (gUnknown_02039304->unk50) + { + case 0: + BeginNormalPaletteFade(-1, 0, 0, 16, 0); + gUnknown_02039304->unk50++; + break; + case 1: + if (!gPaletteFade.active) + { + gUnknown_02039304->unk50 = 2; + } + break; + case 2: + sub_80F5BDC(); + gUnknown_02039304->unk50++; + break; + case 3: + SetMainCallback2(gUnknown_02039304->callback); + break; + } +} + +void sub_8136BB8(void) +{ + GetMonData(&gPlayerParty[sub_81370A4(gUnknown_083DFEC4->unk87DC)], MON_DATA_NICKNAME, gUnknown_02039304->stringBuffer); + StringGetEnd10(gUnknown_02039304->stringBuffer); + StringAppend(gUnknown_02039304->stringBuffer, gOtherText_GetsAPokeBlock); + BasicInitMenuWindow(&gWindowConfig_81E709C); + MenuDrawTextWindow(0, 16, 29, 19); + MenuPrint(gUnknown_02039304->stringBuffer, 1, 17); + DisplayYesNoMenu(23, 10, 1); + MoveMenuCursor(0); +} + +s8 sub_8136C40(void) +{ + s8 retval = ProcessMenuInputNoWrap(); + if ((u8)(retval + 1) < 3) + { + MenuZeroFillScreen(); + BasicInitMenuWindow(&gWindowConfig_81E7080); + } + return retval; +} -- cgit v1.2.3 From 062f0b5bd9fe3e804ca9e2b4f6b2bae89f94ab61 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 08:34:48 -0400 Subject: sub_8136C6C --- asm/use_pokeblock.s | 75 ----------------------------------------------------- include/pokenav.h | 2 ++ src/use_pokeblock.c | 18 +++++++++++++ 3 files changed, 20 insertions(+), 75 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 27ccf4da3..64157f558 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,81 +6,6 @@ .text - thumb_func_start sub_8136C6C -sub_8136C6C: @ 8136C6C - push {lr} - ldr r0, _08136C8C @ =gWindowConfig_81E709C - bl BasicInitMenuWindow - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r3, _08136C90 @ =gUnknown_02039304 - ldr r0, [r3] - adds r0, 0x53 - movs r1, 0 - b _08136C9C - .align 2, 0 -_08136C8C: .4byte gWindowConfig_81E709C -_08136C90: .4byte gUnknown_02039304 -_08136C94: - ldr r0, [r3] - adds r0, 0x53 - ldrb r1, [r0] - adds r1, 0x1 -_08136C9C: - strb r1, [r0] - ldr r2, [r3] - adds r1, r2, 0 - adds r1, 0x53 - ldrb r0, [r1] - cmp r0, 0x4 - bhi _08136CDC - adds r0, r2, 0 - adds r0, 0x61 - ldrb r1, [r1] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08136C94 - ldr r0, _08136CD8 @ =gUnknown_02039304 - ldr r2, [r0] - adds r1, r2, 0 - adds r1, 0x53 - ldrb r0, [r1] - cmp r0, 0x4 - bhi _08136CDC - adds r0, r2, 0 - adds r0, 0x10 - ldrb r1, [r1] - adds r2, 0x61 - adds r2, r1 - ldrb r2, [r2] - bl sub_8136DC0 - b _08136CEE - .align 2, 0 -_08136CD8: .4byte gUnknown_02039304 -_08136CDC: - ldr r0, _08136CFC @ =gUnknown_02039304 - ldr r1, [r0] - adds r0, r1, 0 - adds r0, 0x10 - adds r1, 0x53 - ldrb r1, [r1] - movs r2, 0 - bl sub_8136DC0 -_08136CEE: - ldr r0, _08136CFC @ =gUnknown_02039304 - ldr r0, [r0] - adds r0, 0x10 - bl sub_8136DA0 - pop {r0} - bx r0 - .align 2, 0 -_08136CFC: .4byte gUnknown_02039304 - thumb_func_end sub_8136C6C - thumb_func_start sub_8136D00 sub_8136D00: @ 8136D00 push {r4,r5,lr} diff --git a/include/pokenav.h b/include/pokenav.h index 87ba4d42c..87079600d 100755 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -21,6 +21,8 @@ struct UnkPokenavStruct_Sub1 { /*0x56*/ u8 unk56; /*0x57*/ u8 fil57[5]; /*0x5c*/ u8 unk5c[1]; + /*0x5d*/ u8 fil5d[4]; + /*0x61*/ u8 unk61[5]; }; struct UnkPokenavStruct_Sub2 { diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index e6875645b..0c2ba8642 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -54,6 +54,8 @@ void sub_8136EF0(void); void sub_8137138(void); void sub_8136C6C(void); bool8 sub_8136D00(void); +void sub_8136DC0(u8 *, u8, u8); +void sub_8136DA0(u8 *); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -545,3 +547,19 @@ s8 sub_8136C40(void) } return retval; } + +void sub_8136C6C(void) +{ + BasicInitMenuWindow(&gWindowConfig_81E709C); + MenuDrawTextWindow(0, 16, 29, 19); + for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++); + if (gUnknown_02039304->unk53 < 5) + { + sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); + } + else + { + sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0); + } + sub_8136DA0(gUnknown_02039304->stringBuffer); +} -- cgit v1.2.3 From 4e02c236d8594ab81ae46c54d6f1ccc8e7929bea Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 08:49:55 -0400 Subject: Nonmatching sub_8136D00 --- asm/use_pokeblock.s | 108 ++++++++++++++++++++++++++-------------------------- src/use_pokeblock.c | 79 +++++++++++++++++++++++++++++++++++++- 2 files changed, 131 insertions(+), 56 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 64157f558..af050f3d5 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -5,60 +5,60 @@ .syntax unified .text - - thumb_func_start sub_8136D00 -sub_8136D00: @ 8136D00 - push {r4,r5,lr} - ldr r4, _08136D30 @ =gUnknown_02039304 - adds r3, r4, 0 - movs r5, 0x5 -_08136D08: - ldr r0, [r3] - adds r0, 0x53 - ldrb r1, [r0] - adds r1, 0x1 - strb r1, [r0] - ldr r2, [r3] - adds r1, r2, 0 - adds r1, 0x53 - ldrb r0, [r1] - cmp r0, 0x4 - bhi _08136D34 - adds r0, r2, 0 - adds r0, 0x61 - ldrb r1, [r1] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08136D3A - b _08136D08 - .align 2, 0 -_08136D30: .4byte gUnknown_02039304 -_08136D34: - strb r5, [r1] - movs r0, 0 - b _08136D5A -_08136D3A: - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x10 - adds r1, r2, 0 - adds r1, 0x53 - ldrb r1, [r1] - adds r2, 0x61 - adds r2, r1 - ldrb r2, [r2] - bl sub_8136DC0 - ldr r0, [r4] - adds r0, 0x10 - bl sub_8136DA0 - movs r0, 0x1 -_08136D5A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8136D00 - +@ +@ thumb_func_start sub_8136D00 +@ sub_8136D00: @ 8136D00 +@ push {r4,r5,lr} +@ ldr r4, _08136D30 @ =gUnknown_02039304 +@ adds r3, r4, 0 +@ movs r5, 0x5 +@ _08136D08: +@ ldr r0, [r3] +@ adds r0, 0x53 +@ ldrb r1, [r0] +@ adds r1, 0x1 +@ strb r1, [r0] +@ ldr r2, [r3] +@ adds r1, r2, 0 +@ adds r1, 0x53 +@ ldrb r0, [r1] +@ cmp r0, 0x4 +@ bhi _08136D34 +@ adds r0, r2, 0 +@ adds r0, 0x61 +@ ldrb r1, [r1] +@ adds r0, r1 +@ ldrb r0, [r0] +@ cmp r0, 0 +@ bne _08136D3A +@ b _08136D08 +@ .align 2, 0 +@ _08136D30: .4byte gUnknown_02039304 +@ _08136D34: +@ strb r5, [r1] +@ movs r0, 0 +@ b _08136D5A +@ _08136D3A: +@ ldr r2, [r4] +@ adds r0, r2, 0 +@ adds r0, 0x10 +@ adds r1, r2, 0 +@ adds r1, 0x53 +@ ldrb r1, [r1] +@ adds r2, 0x61 +@ adds r2, r1 +@ ldrb r2, [r2] +@ bl sub_8136DC0 +@ ldr r0, [r4] +@ adds r0, 0x10 +@ bl sub_8136DA0 +@ movs r0, 0x1 +@ _08136D5A: +@ pop {r4,r5} +@ pop {r1} +@ bx r1 +@ thumb_func_end sub_8136D00 +@ thumb_func_start sub_8136D60 sub_8136D60: @ 8136D60 push {lr} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 0c2ba8642..7590b19ff 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -21,11 +21,11 @@ asm(".text\n" ".include \"constants/gba_constants.inc\""); +extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; extern MainCallback gUnknown_02039308; extern struct Pokeblock *gUnknown_0203930C; -u8 gUnknown_02039310; +extern u8 gUnknown_02039310; -extern struct UnkPokenavStruct_Sub1 *gUnknown_02039304; extern u16 gKeyRepeatStartDelay; extern u16 gScriptItemId; // remove after merge of #349 Pokeblock @@ -563,3 +563,78 @@ void sub_8136C6C(void) } sub_8136DA0(gUnknown_02039304->stringBuffer); } + +#ifdef NONMATCHING +bool8 sub_8136D00(void) +{ + while (1) + { + if (++gUnknown_02039304->unk53 >= 5) + { + break; + } + if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0) + { + sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]); + sub_8136DA0(gUnknown_02039304->stringBuffer); + return TRUE; + } + } + gUnknown_02039304->unk53 = 5; + return FALSE; +} +#else +__attribute__((naked)) +bool8 sub_8136D00(void) +{ + asm_unified("\tpush {r4,r5,lr}\n" + "\tldr r4, _08136D30 @ =gUnknown_02039304\n" + "\tadds r3, r4, 0\n" + "\tmovs r5, 0x5\n" + "_08136D08:\n" + "\tldr r0, [r3]\n" + "\tadds r0, 0x53\n" + "\tldrb r1, [r0]\n" + "\tadds r1, 0x1\n" + "\tstrb r1, [r0]\n" + "\tldr r2, [r3]\n" + "\tadds r1, r2, 0\n" + "\tadds r1, 0x53\n" + "\tldrb r0, [r1]\n" + "\tcmp r0, 0x4\n" + "\tbhi _08136D34\n" + "\tadds r0, r2, 0\n" + "\tadds r0, 0x61\n" + "\tldrb r1, [r1]\n" + "\tadds r0, r1\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _08136D3A\n" + "\tb _08136D08\n" + "\t.align 2, 0\n" + "_08136D30: .4byte gUnknown_02039304\n" + "_08136D34:\n" + "\tstrb r5, [r1]\n" + "\tmovs r0, 0\n" + "\tb _08136D5A\n" + "_08136D3A:\n" + "\tldr r2, [r4]\n" + "\tadds r0, r2, 0\n" + "\tadds r0, 0x10\n" + "\tadds r1, r2, 0\n" + "\tadds r1, 0x53\n" + "\tldrb r1, [r1]\n" + "\tadds r2, 0x61\n" + "\tadds r2, r1\n" + "\tldrb r2, [r2]\n" + "\tbl sub_8136DC0\n" + "\tldr r0, [r4]\n" + "\tadds r0, 0x10\n" + "\tbl sub_8136DA0\n" + "\tmovs r0, 0x1\n" + "_08136D5A:\n" + "\tpop {r4,r5}\n" + "\tpop {r1}\n" + "\tbx r1"); +} +#endif -- cgit v1.2.3 From eefb510a3c442d6997a6a681e919046a775766be Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 21:19:45 -0400 Subject: Nonmatching sub_8136DC0 --- asm/use_pokeblock.s | 145 ------------------------------------------------ data/use_pokeblock.s | 29 ---------- include/use_pokeblock.h | 2 + ld_script.txt | 1 + src/use_pokeblock.c | 111 +++++++++++++++++++++++++++++++++++- sym_ewram.txt | 5 +- 6 files changed, 116 insertions(+), 177 deletions(-) mode change 100644 => 100755 data/use_pokeblock.s mode change 100644 => 100755 include/use_pokeblock.h diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index af050f3d5..5e1f94267 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -5,151 +5,6 @@ .syntax unified .text -@ -@ thumb_func_start sub_8136D00 -@ sub_8136D00: @ 8136D00 -@ push {r4,r5,lr} -@ ldr r4, _08136D30 @ =gUnknown_02039304 -@ adds r3, r4, 0 -@ movs r5, 0x5 -@ _08136D08: -@ ldr r0, [r3] -@ adds r0, 0x53 -@ ldrb r1, [r0] -@ adds r1, 0x1 -@ strb r1, [r0] -@ ldr r2, [r3] -@ adds r1, r2, 0 -@ adds r1, 0x53 -@ ldrb r0, [r1] -@ cmp r0, 0x4 -@ bhi _08136D34 -@ adds r0, r2, 0 -@ adds r0, 0x61 -@ ldrb r1, [r1] -@ adds r0, r1 -@ ldrb r0, [r0] -@ cmp r0, 0 -@ bne _08136D3A -@ b _08136D08 -@ .align 2, 0 -@ _08136D30: .4byte gUnknown_02039304 -@ _08136D34: -@ strb r5, [r1] -@ movs r0, 0 -@ b _08136D5A -@ _08136D3A: -@ ldr r2, [r4] -@ adds r0, r2, 0 -@ adds r0, 0x10 -@ adds r1, r2, 0 -@ adds r1, 0x53 -@ ldrb r1, [r1] -@ adds r2, 0x61 -@ adds r2, r1 -@ ldrb r2, [r2] -@ bl sub_8136DC0 -@ ldr r0, [r4] -@ adds r0, 0x10 -@ bl sub_8136DA0 -@ movs r0, 0x1 -@ _08136D5A: -@ pop {r4,r5} -@ pop {r1} -@ bx r1 -@ thumb_func_end sub_8136D00 -@ - thumb_func_start sub_8136D60 -sub_8136D60: @ 8136D60 - push {lr} - ldr r0, _08136D84 @ =gWindowConfig_81E709C - bl BasicInitMenuWindow - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - ldr r0, _08136D88 @ =gOtherText_WontEat - movs r1, 0x1 - movs r2, 0x11 - bl MenuPrint - pop {r0} - bx r0 - .align 2, 0 -_08136D84: .4byte gWindowConfig_81E709C -_08136D88: .4byte gOtherText_WontEat - thumb_func_end sub_8136D60 - - thumb_func_start sub_8136D8C -sub_8136D8C: @ 8136D8C - push {lr} - bl MenuZeroFillScreen - ldr r0, _08136D9C @ =gWindowConfig_81E7080 - bl BasicInitMenuWindow - pop {r0} - bx r0 - .align 2, 0 -_08136D9C: .4byte gWindowConfig_81E7080 - thumb_func_end sub_8136D8C - - thumb_func_start sub_8136DA0 -sub_8136DA0: @ 8136DA0 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x11 - bl MenuPrint - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8136DA0 - - thumb_func_start sub_8136DC0 -sub_8136DC0: @ 8136DC0 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r3, r1, 24 - lsls r2, 16 - lsrs r0, r2, 16 - asrs r2, 16 - cmp r2, 0 - beq _08136DFC - cmp r2, 0 - ble _08136DD8 - movs r0, 0 -_08136DD8: - lsls r0, 16 - ldr r1, _08136DF4 @ =gUnknown_08406134 - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl StringCopy - ldr r1, _08136DF8 @ =gOtherText_WasEnhanced - adds r0, r4, 0 - bl StringAppend - b _08136E04 - .align 2, 0 -_08136DF4: .4byte gUnknown_08406134 -_08136DF8: .4byte gOtherText_WasEnhanced -_08136DFC: - ldr r1, _08136E0C @ =gOtherText_NothingChanged - adds r0, r4, 0 - bl StringCopy -_08136E04: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08136E0C: .4byte gOtherText_NothingChanged - thumb_func_end sub_8136DC0 thumb_func_start sub_8136E10 sub_8136E10: @ 8136E10 diff --git a/data/use_pokeblock.s b/data/use_pokeblock.s old mode 100644 new mode 100755 index 2eabe9ce3..88f8cc336 --- a/data/use_pokeblock.s +++ b/data/use_pokeblock.s @@ -3,35 +3,6 @@ .section .rodata -.ifndef GERMAN - .align 2 -ConditionUpDownPalette: - .incbin "graphics/misc/condition_up_down.gbapal" - - .align 2 -ConditionUpDownTiles: - .incbin "graphics/misc/condition_up_down.4bpp" -.endif - -gUnknown_08406118:: @ 8406118 - .4byte 22 @ MON_DATA_COOL - .4byte 47 @ MON_DATA_TOUGH - .4byte 33 @ MON_DATA_SMART - .4byte 24 @ MON_DATA_CUTE - .4byte 23 @ MON_DATA_BEAUTY - - .align 2 -gUnknown_0840612C:: @ 840612C - obj_pal 0x02030400, 0x0001 - - .align 2 -gUnknown_08406134:: @ 8406134 - .4byte OtherText_Coolness - .4byte OtherText_Toughness - .4byte OtherText_Smartness - .4byte OtherText_Cuteness - .4byte OtherText_Beauty - .align 2 gSpriteSheet_ConditionUpDown:: @ 8406148 obj_tiles ConditionUpDownTiles, 0x200, 0 diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h old mode 100644 new mode 100755 index f34857cf1..779ba27d1 --- a/include/use_pokeblock.h +++ b/include/use_pokeblock.h @@ -5,6 +5,8 @@ #ifndef POKERUBY_USE_POKEBLOCK_H #define POKERUBY_USE_POKEBLOCK_H +extern void *gUnknown_02030400; + void sub_8136130(struct Pokeblock *, MainCallback); #endif //POKERUBY_USE_POKEBLOCK_H diff --git a/ld_script.txt b/ld_script.txt index 4e72e03a0..a360ee781 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -462,6 +462,7 @@ SECTIONS { src/decoration_inventory.o(.rodata); src/roamer.o(.rodata); data/battle_tower.o(.rodata); + src/use_pokeblock.o(.rodata); data/use_pokeblock.o(.rodata); data/battle_anim_8137220.o(.rodata); src/player_pc.o(.rodata); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 7590b19ff..efa3b6200 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -7,6 +7,7 @@ #include "rom4.h" #include "string_util.h" #include "strings.h" +#include "sprite.h" #include "pokemon.h" #include "pokenav.h" #include "palette.h" @@ -18,6 +19,34 @@ #include "pokeblock_feed.h" #include "use_pokeblock.h" +#define GFX_TAG_CONDITIONUPDOWN 0 +#define GFX_TAG_UNKNOWN02030400 1 + +#ifndef GERMAN +const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down.gbapal"); +const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp"); +#endif + +const u32 gUnknown_08406118[] = { + MON_DATA_COOL, + MON_DATA_TOUGH, + MON_DATA_SMART, + MON_DATA_CUTE, + MON_DATA_BEAUTY +}; + +const struct SpritePalette gUnknown_0840612C = { + (u16 *const)&gUnknown_02030400, GFX_TAG_UNKNOWN02030400 +}; + +const u8 *const gUnknown_08406134[] = { + OtherText_Coolness, + OtherText_Toughness, + OtherText_Smartness, + OtherText_Cuteness, + OtherText_Beauty +}; + asm(".text\n" ".include \"constants/gba_constants.inc\""); @@ -54,8 +83,8 @@ void sub_8136EF0(void); void sub_8137138(void); void sub_8136C6C(void); bool8 sub_8136D00(void); -void sub_8136DC0(u8 *, u8, u8); -void sub_8136DA0(u8 *); +void sub_8136DC0(u8 *, u8, s16); +void sub_8136DA0(const u8 *); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -638,3 +667,81 @@ bool8 sub_8136D00(void) "\tbx r1"); } #endif + +void sub_8136D60(void) +{ + BasicInitMenuWindow(&gWindowConfig_81E709C); + MenuDrawTextWindow(0, 16, 29, 19); + MenuPrint(gOtherText_WontEat, 1, 17); +} + +void sub_8136D8C(void) +{ + MenuZeroFillScreen(); + BasicInitMenuWindow(&gWindowConfig_81E7080); +} + +void sub_8136DA0(const u8 *message) +{ + MenuDrawTextWindow(0, 16, 29, 19); + MenuPrint(message, 1, 17); +} + +#ifdef NONMATCHING +void sub_8136DC0(u8 *dest, u8 a1, s16 a2) +{ + u16 v0 = a2; + if (a2 != 0) + { + if ((v0 = max(a2, 0)) == 0); + StringCopy(dest, gUnknown_08406134[a1]); + StringAppend(dest, gOtherText_WasEnhanced); + } + else + { + StringCopy(dest, gOtherText_NothingChanged); + } +} +#else +__attribute__((naked)) +void sub_8136DC0(u8 *dest, u8 a1, s16 a2) +{ + asm_unified("\tpush {r4,lr}\n" + "\tadds r4, r0, 0\n" + "\tlsls r1, 24\n" + "\tlsrs r3, r1, 24\n" + "\tlsls r2, 16\n" + "\tlsrs r0, r2, 16\n" + "\tasrs r2, 16\n" + "\tcmp r2, 0\n" + "\tbeq _08136DFC\n" + "\tcmp r2, 0\n" + "\tble _08136DD8\n" + "\tmovs r0, 0\n" + "_08136DD8:\n" + "\tlsls r0, 16\n" + "\tldr r1, _08136DF4 @ =gUnknown_08406134\n" + "\tlsls r0, r3, 2\n" + "\tadds r0, r1\n" + "\tldr r1, [r0]\n" + "\tadds r0, r4, 0\n" + "\tbl StringCopy\n" + "\tldr r1, _08136DF8 @ =gOtherText_WasEnhanced\n" + "\tadds r0, r4, 0\n" + "\tbl StringAppend\n" + "\tb _08136E04\n" + "\t.align 2, 0\n" + "_08136DF4: .4byte gUnknown_08406134\n" + "_08136DF8: .4byte gOtherText_WasEnhanced\n" + "_08136DFC:\n" + "\tldr r1, _08136E0C @ =gOtherText_NothingChanged\n" + "\tadds r0, r4, 0\n" + "\tbl StringCopy\n" + "_08136E04:\n" + "\tpop {r4}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_08136E0C: .4byte gOtherText_NothingChanged"); +} +#endif diff --git a/sym_ewram.txt b/sym_ewram.txt index 42b0982ab..f142a1b1a 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -539,7 +539,10 @@ gTrainerCards: @ 202FFC0 .space 0xE0 gPokemonStorage: @ 20300A0 - .space 0x83D0 + .space 0x360 + +gUnknown_02030400: @ 02030400 + .space 0x8070 gUnknown_02038470: @ 2038470 .space 0x3 -- cgit v1.2.3 From 1bb72454b44307b772660e54318598f0cea274cc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 21:39:25 -0400 Subject: sub_8136E40 --- asm/use_pokeblock.s | 117 ---------------------------------------------------- include/pokenav.h | 1 + src/use_pokeblock.c | 38 +++++++++++++++++ 3 files changed, 39 insertions(+), 117 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 5e1f94267..f5abbb27e 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,123 +6,6 @@ .text - thumb_func_start sub_8136E10 -sub_8136E10: @ 8136E10 - push {r4-r7,lr} - adds r6, r0, 0 - adds r5, r1, 0 - movs r4, 0 - ldr r7, _08136E3C @ =gUnknown_08406118 -_08136E1A: - lsls r0, r4, 2 - adds r0, r7 - ldr r1, [r0] - adds r0, r6, 0 - bl GetMonData - adds r1, r5, r4 - strb r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _08136E1A - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08136E3C: .4byte gUnknown_08406118 - thumb_func_end sub_8136E10 - - thumb_func_start sub_8136E40 -sub_8136E40: @ 8136E40 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r8, r0 - adds r5, r1, 0 - adds r0, r5, 0 - movs r1, 0x30 - bl GetMonData - cmp r0, 0xFF - beq _08136EDC - mov r0, r8 - adds r1, r5, 0 - bl sub_8136F74 - movs r4, 0 - mov r7, sp -_08136E64: - ldr r1, _08136EE8 @ =gUnknown_08406118 - lsls r0, r4, 2 - adds r0, r1 - ldr r6, [r0] - adds r0, r5, 0 - adds r1, r6, 0 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - strb r0, [r7] - ldr r1, _08136EEC @ =gUnknown_02039304 - ldr r1, [r1] - lsls r2, r4, 1 - adds r1, 0x66 - adds r1, r2 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r0, 0 - bge _08136E92 - movs r1, 0 -_08136E92: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08136E9C - movs r1, 0xFF -_08136E9C: - strb r1, [r7] - adds r0, r5, 0 - adds r1, r6, 0 - mov r2, sp - bl SetMonData - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _08136E64 - adds r0, r5, 0 - movs r1, 0x30 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - mov r2, r8 - ldrb r2, [r2, 0x6] - adds r1, r0, r2 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0xFF - ble _08136ECE - movs r1, 0xFF -_08136ECE: - mov r0, sp - strb r1, [r0] - adds r0, r5, 0 - movs r1, 0x30 - mov r2, sp - bl SetMonData -_08136EDC: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08136EE8: .4byte gUnknown_08406118 -_08136EEC: .4byte gUnknown_02039304 - thumb_func_end sub_8136E40 - thumb_func_start sub_8136EF0 sub_8136EF0: @ 8136EF0 push {r4,r5,lr} diff --git a/include/pokenav.h b/include/pokenav.h index 87079600d..97634955a 100755 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -23,6 +23,7 @@ struct UnkPokenavStruct_Sub1 { /*0x5c*/ u8 unk5c[1]; /*0x5d*/ u8 fil5d[4]; /*0x61*/ u8 unk61[5]; + /*0x66*/ s16 unk66[5]; }; struct UnkPokenavStruct_Sub2 { diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index efa3b6200..c4b0d4e2e 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -85,6 +85,7 @@ void sub_8136C6C(void); bool8 sub_8136D00(void); void sub_8136DC0(u8 *, u8, s16); void sub_8136DA0(const u8 *); +void sub_8136F74(struct Pokeblock *, struct Pokemon *); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -745,3 +746,40 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2) "_08136E0C: .4byte gOtherText_NothingChanged"); } #endif + +void sub_8136E10(struct Pokemon *pokemon, u8 *data) +{ + u16 i; + for (i=0; i<5; i++) + { + data[i] = GetMonData(pokemon, gUnknown_08406118[i]); + } +} + +void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) +{ + u16 i; + s16 cstat; + u8 data; + if (GetMonData(pokemon, MON_DATA_SHEEN) != 255) + { + sub_8136F74(pokeblock, pokemon); + for (i=0; i<5; i++) + { + data = GetMonData(pokemon, gUnknown_08406118[i]); + cstat = data + gUnknown_02039304->unk66[i]; + if (cstat < 0) + cstat = 0; + if (cstat > 255) + cstat = 255; + data = cstat; + SetMonData(pokemon, gUnknown_08406118[i], &data); + } + cstat = (u8)GetMonData(pokemon, MON_DATA_SHEEN); + cstat = cstat + pokeblock->feel; + if (cstat > 255) + cstat = 255; + data = cstat; + SetMonData(pokemon, MON_DATA_SHEEN, &data); + } +} -- cgit v1.2.3 From eb9df8bc6699093ef8f3c9ccb985bec9809910c7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 21:48:53 -0400 Subject: sub_8136EF0 --- asm/use_pokeblock.s | 64 ----------------------------------------------------- include/pokenav.h | 5 ++--- src/use_pokeblock.c | 14 ++++++++++++ 3 files changed, 16 insertions(+), 67 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index f5abbb27e..c153f7cfb 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,70 +6,6 @@ .text - thumb_func_start sub_8136EF0 -sub_8136EF0: @ 8136EF0 - push {r4,r5,lr} - ldr r5, _08136F60 @ =gPlayerParty - ldr r0, _08136F64 @ =gUnknown_083DFEC4 - ldr r1, [r0] - ldr r2, _08136F68 @ =0x000087dc - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - lsls r0, 2 - adds r1, r0 - ldr r0, _08136F6C @ =0x0000893e - adds r1, r0 - ldrb r0, [r1] - lsls r0, 27 - lsrs r0, 27 - movs r1, 0x64 - muls r0, r1 - adds r5, r0, r5 - ldr r4, _08136F70 @ =gUnknown_02039304 - ldr r1, [r4] - adds r1, 0x57 - adds r0, r5, 0 - bl sub_8136E10 - ldr r0, [r4] - ldr r0, [r0, 0x8] - adds r1, r5, 0 - bl sub_8136E40 - ldr r1, [r4] - adds r1, 0x5C - adds r0, r5, 0 - bl sub_8136E10 - movs r3, 0 -_08136F36: - ldr r0, [r4] - adds r2, r0, 0 - adds r2, 0x61 - adds r2, r3 - adds r1, r0, 0 - adds r1, 0x5C - adds r1, r3 - adds r0, 0x57 - adds r0, r3 - ldrb r1, [r1] - ldrb r0, [r0] - subs r1, r0 - strb r1, [r2] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x4 - bls _08136F36 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08136F60: .4byte gPlayerParty -_08136F64: .4byte gUnknown_083DFEC4 -_08136F68: .4byte 0x000087dc -_08136F6C: .4byte 0x0000893e -_08136F70: .4byte gUnknown_02039304 - thumb_func_end sub_8136EF0 - thumb_func_start sub_8136F74 sub_8136F74: @ 8136F74 push {r4-r7,lr} diff --git a/include/pokenav.h b/include/pokenav.h index 97634955a..70cc4135f 100755 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -19,9 +19,8 @@ struct UnkPokenavStruct_Sub1 { /*0x54*/ u8 unk54; /*0x55*/ u8 unk55; /*0x56*/ u8 unk56; - /*0x57*/ u8 fil57[5]; - /*0x5c*/ u8 unk5c[1]; - /*0x5d*/ u8 fil5d[4]; + /*0x57*/ u8 unk57[5]; + /*0x5c*/ u8 unk5c[5]; /*0x61*/ u8 unk61[5]; /*0x66*/ s16 unk66[5]; }; diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index c4b0d4e2e..e21984180 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -783,3 +783,17 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon) SetMonData(pokemon, MON_DATA_SHEEN, &data); } } + +void sub_8136EF0(void) +{ + u16 i; + struct Pokemon *pokemon = gPlayerParty; + pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx; + sub_8136E10(pokemon, gUnknown_02039304->unk57); + sub_8136E40(gUnknown_02039304->pokeblock, pokemon); + sub_8136E10(pokemon, gUnknown_02039304->unk5c); + for (i=0; i<5; i++) + { + gUnknown_02039304->unk61[i] = gUnknown_02039304->unk5c[i] - gUnknown_02039304->unk57[i]; + } +} -- cgit v1.2.3 From fe40c6053622e89dbc0f9e26493946fa098765fb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 22:06:27 -0400 Subject: sub_8136F74 --- asm/use_pokeblock.s | 117 ------------------------------------------------ include/pokemon.h | 1 + include/use_pokeblock.h | 1 + src/use_pokeblock.c | 37 +++++++++++++-- 4 files changed, 36 insertions(+), 120 deletions(-) mode change 100644 => 100755 include/pokemon.h diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index c153f7cfb..d16abf724 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,123 +6,6 @@ .text - thumb_func_start sub_8136F74 -sub_8136F74: @ 8136F74 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r10, r1 - ldr r1, _08136FBC @ =gUnknown_02039304 - ldr r3, [r1] - ldrb r1, [r0, 0x1] - adds r2, r3, 0 - adds r2, 0x66 - strh r1, [r2] - ldrb r2, [r0, 0x5] - adds r1, r3, 0 - adds r1, 0x68 - strh r2, [r1] - ldrb r1, [r0, 0x4] - adds r2, r3, 0 - adds r2, 0x6A - strh r1, [r2] - ldrb r2, [r0, 0x3] - adds r1, r3, 0 - adds r1, 0x6C - strh r2, [r1] - ldrb r1, [r0, 0x2] - adds r0, r3, 0 - adds r0, 0x6E - strh r1, [r0] - ldr r0, _08136FC0 @ =gUnknown_02039312 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - ble _08136FC4 - movs r0, 0x1 - b _08136FCA - .align 2, 0 -_08136FBC: .4byte gUnknown_02039304 -_08136FC0: .4byte gUnknown_02039312 -_08136FC4: - cmp r0, 0 - bge _08137040 - movs r0, 0xFF -_08136FCA: - movs r2, 0 - lsls r0, 24 - mov r9, r0 - ldr r0, _08137050 @ =gUnknown_02039304 - mov r8, r0 -_08136FD4: - mov r0, r8 - ldr r1, [r0] - lsls r0, r2, 24 - asrs r6, r0, 24 - lsls r7, r6, 1 - adds r1, 0x66 - adds r1, r7 - movs r2, 0 - ldrsh r4, [r1, r2] - adds r0, r4, 0 - movs r1, 0xA - bl __divsi3 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r4, 0 - movs r1, 0xA - bl __modsi3 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x4 - ble _0813700C - lsls r0, r5, 24 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r5, r0, 24 -_0813700C: - ldr r0, _08137054 @ =gUnknown_0840612C - adds r0, r6, r0 - ldrb r1, [r0] - mov r0, r10 - bl sub_8040A54 - lsls r0, 24 - asrs r2, r0, 24 - cmp r0, r9 - bne _08137034 - mov r1, r8 - ldr r0, [r1] - adds r0, 0x66 - adds r0, r7 - lsls r1, r5, 24 - asrs r1, 24 - muls r1, r2 - ldrh r2, [r0] - adds r1, r2 - strh r1, [r0] -_08137034: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, 0x4 - ble _08136FD4 -_08137040: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08137050: .4byte gUnknown_02039304 -_08137054: .4byte gUnknown_0840612C - thumb_func_end sub_8136F74 - thumb_func_start sub_8137058 sub_8137058: @ 8137058 push {lr} diff --git a/include/pokemon.h b/include/pokemon.h old mode 100644 new mode 100755 index be8e4e56d..6fbdb18d3 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -511,5 +511,6 @@ void sub_8040B8C(void); void SetWildMonHeldItem(void); u8 *sub_8040D08(); bool32 sub_8040D3C(u16 species, u8 *name, u8 language); +s8 sub_8040A54(struct Pokemon *, u8); #endif // GUARD_POKEMON_H diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h index 779ba27d1..978476d89 100755 --- a/include/use_pokeblock.h +++ b/include/use_pokeblock.h @@ -6,6 +6,7 @@ #define POKERUBY_USE_POKEBLOCK_H extern void *gUnknown_02030400; +extern s16 gUnknown_02039312; void sub_8136130(struct Pokeblock *, MainCallback); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index e21984180..5a14f74fa 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -20,7 +20,6 @@ #include "use_pokeblock.h" #define GFX_TAG_CONDITIONUPDOWN 0 -#define GFX_TAG_UNKNOWN02030400 1 #ifndef GERMAN const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down.gbapal"); @@ -35,8 +34,8 @@ const u32 gUnknown_08406118[] = { MON_DATA_BEAUTY }; -const struct SpritePalette gUnknown_0840612C = { - (u16 *const)&gUnknown_02030400, GFX_TAG_UNKNOWN02030400 +const u8 gUnknown_0840612C[] = { + 0, 4, 3, 2, 1 }; const u8 *const gUnknown_08406134[] = { @@ -797,3 +796,35 @@ void sub_8136EF0(void) gUnknown_02039304->unk61[i] = gUnknown_02039304->unk5c[i] - gUnknown_02039304->unk57[i]; } } + +void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) +{ + s8 direction; + s8 i; + s16 amount; + s8 boost; + s8 taste; + gUnknown_02039304->unk66[0] = pokeblock->spicy; + gUnknown_02039304->unk66[1] = pokeblock->sour; + gUnknown_02039304->unk66[2] = pokeblock->bitter; + gUnknown_02039304->unk66[3] = pokeblock->sweet; + gUnknown_02039304->unk66[4] = pokeblock->dry; + if (gUnknown_02039312 > 0) + direction = 1; + else if (gUnknown_02039312 < 0) + direction = -1; + else + return; + for (i=0; i<5; i++) + { + amount = gUnknown_02039304->unk66[i]; + boost = amount / 10; + if (amount % 10 >= 5) // round to the nearest + boost++; + taste = sub_8040A54(pokemon, gUnknown_0840612C[i]); + if (taste == direction) + { + gUnknown_02039304->unk66[i] += boost * taste; + } + } +} -- cgit v1.2.3 From 05c997bd75ce375425f1941c86b7643973e41e3f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 22:17:58 -0400 Subject: sub_81370A4 --- asm/use_pokeblock.s | 76 ----------------------------------------------------- src/use_pokeblock.c | 24 +++++++++++++++++ 2 files changed, 24 insertions(+), 76 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index d16abf724..d51560e52 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,82 +6,6 @@ .text - thumb_func_start sub_8137058 -sub_8137058: @ 8137058 - push {lr} - ldr r0, _0813708C @ =gPlayerParty - ldr r1, _08137090 @ =gUnknown_083DFEC4 - ldr r2, [r1] - ldr r3, _08137094 @ =0x000087dc - adds r1, r2, r3 - movs r3, 0 - ldrsh r1, [r1, r3] - lsls r1, 2 - adds r2, r1 - ldr r1, _08137098 @ =0x0000893e - adds r2, r1 - ldrb r1, [r2] - lsls r1, 27 - lsrs r1, 27 - movs r2, 0x64 - muls r1, r2 - adds r0, r1, r0 - movs r1, 0x30 - bl GetMonData - cmp r0, 0xFF - beq _0813709C - movs r0, 0 - b _0813709E - .align 2, 0 -_0813708C: .4byte gPlayerParty -_08137090: .4byte gUnknown_083DFEC4 -_08137094: .4byte 0x000087dc -_08137098: .4byte 0x0000893e -_0813709C: - movs r0, 0x1 -_0813709E: - pop {r1} - bx r1 - thumb_func_end sub_8137058 - - thumb_func_start sub_81370A4 -sub_81370A4: @ 81370A4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 -_081370AC: - movs r0, 0x64 - muls r0, r4 - ldr r1, _081370C8 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _081370D2 - cmp r5, 0 - bne _081370CC - adds r0, r4, 0 - b _081370DE - .align 2, 0 -_081370C8: .4byte gPlayerParty -_081370CC: - subs r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_081370D2: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _081370AC - movs r0, 0 -_081370DE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_81370A4 - thumb_func_start sub_81370E4 sub_81370E4: @ 81370E4 push {r4-r6,lr} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 5a14f74fa..b29cb7454 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -828,3 +828,27 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon) } } } + +bool8 sub_8137058(void) +{ + struct Pokemon *pokemon = gPlayerParty; + pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx; + if (GetMonData(pokemon, MON_DATA_SHEEN) == 255) + return TRUE; + return FALSE; +} + +u8 sub_81370A4(u8 a0) +{ + u8 i; + for (i=0; i Date: Thu, 29 Jun 2017 22:22:56 -0400 Subject: Through sub_8137124 --- asm/use_pokeblock.s | 50 -------------------------------------------------- src/use_pokeblock.c | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 50 deletions(-) diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index d51560e52..6b0b0392d 100755 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -6,56 +6,6 @@ .text - thumb_func_start sub_81370E4 -sub_81370E4: @ 81370E4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r4, 0 - movs r6, 0 - cmp r6, r5 - bcs _08137114 -_081370F2: - movs r0, 0x64 - muls r0, r4 - ldr r1, _08137120 @ =gPlayerParty - adds r0, r1 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - beq _0813710A - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_0813710A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _081370F2 -_08137114: - subs r0, r5, r6 - lsls r0, 24 - lsrs r0, 24 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08137120: .4byte gPlayerParty - thumb_func_end sub_81370E4 - - thumb_func_start sub_8137124 -sub_8137124: @ 8137124 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_81370A4 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_8137124 - thumb_func_start sub_8137138 sub_8137138: @ 8137138 push {r4-r7,lr} diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index b29cb7454..c21e3719a 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -852,3 +852,22 @@ u8 sub_81370A4(u8 a0) } return 0; } + +u8 sub_81370E4(u8 a0) +{ + u8 ct; + u8 i; + for (i=0, ct=0; i Date: Thu, 29 Jun 2017 22:32:23 -0400 Subject: Decompile use_pokeblock data --- data/use_pokeblock.s | 44 -------------------------------------------- ld_script.txt | 1 - src/use_pokeblock.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 45 deletions(-) delete mode 100755 data/use_pokeblock.s diff --git a/data/use_pokeblock.s b/data/use_pokeblock.s deleted file mode 100755 index 88f8cc336..000000000 --- a/data/use_pokeblock.s +++ /dev/null @@ -1,44 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gSpriteSheet_ConditionUpDown:: @ 8406148 - obj_tiles ConditionUpDownTiles, 0x200, 0 - - .align 2 -gSpritePalette_ConditionUpDown:: @ 8406150 - obj_pal ConditionUpDownPalette, 0 - -gUnknown_08406158:: @ 8406158 - .2byte 156, 30 - .2byte 117, 53 - .2byte 117, 112 - .2byte 197, 112 - .2byte 197, 53 - - .align 2 -gOamData_840616C:: @ 840616C - .2byte 0x4000 - .2byte 0x8000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_8406174:: @ 8406174 - obj_image_anim_frame 0, 5 - obj_image_anim_end - - .align 2 -gSpriteAnim_840617C:: @ 840617C - obj_image_anim_frame 8, 5 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_8406184:: @ 8406184 - .4byte gSpriteAnim_8406174 - .4byte gSpriteAnim_840617C - - .align 2 -gSpriteTemplate_840618C:: @ 840618C - spr_template 0, 0, gOamData_840616C, gSpriteAnimTable_8406184, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy diff --git a/ld_script.txt b/ld_script.txt index a360ee781..2282bc7a2 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -463,7 +463,6 @@ SECTIONS { src/roamer.o(.rodata); data/battle_tower.o(.rodata); src/use_pokeblock.o(.rodata); - data/use_pokeblock.o(.rodata); data/battle_anim_8137220.o(.rodata); src/player_pc.o(.rodata); src/intro.o(.rodata); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index c21e3719a..6ca3437fd 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -46,6 +46,56 @@ const u8 *const gUnknown_08406134[] = { OtherText_Beauty }; +const struct SpriteSheet gSpriteSheet_ConditionUpDown = { + (u8 *)ConditionUpDownTiles, + sizeof ConditionUpDownTiles, + GFX_TAG_CONDITIONUPDOWN +}; + +const struct SpritePalette gSpritePalette_ConditionUpDown = { + ConditionUpDownPalette, + GFX_TAG_CONDITIONUPDOWN +}; + +const struct Coords16 gUnknown_08406158[] = { + {0x9c, 0x1e}, + {0x75, 0x35}, + {0x75, 0x70}, + {0xc5, 0x70}, + {0xc5, 0x35} +}; + +const struct OamData gOamData_840616C = { + .shape = 1, + .size = 2, + .priority = 1 +}; + +const union AnimCmd gSpriteAnim_8406174[] = { + ANIMCMD_FRAME(0, 5), + ANIMCMD_END +}; + +const union AnimCmd gSpriteAnim_840617C[] = { + ANIMCMD_FRAME(8, 5), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_8406184[] = { + gSpriteAnim_8406174, + gSpriteAnim_840617C +}; + +const struct SpriteTemplate gSpriteTemplate_840618C = { + GFX_TAG_CONDITIONUPDOWN, + GFX_TAG_CONDITIONUPDOWN, + &gOamData_840616C, + gSpriteAnimTable_8406184, + NULL, + gDummySpriteAffineAnimTable, + SpriteCallbackDummy +}; + asm(".text\n" ".include \"constants/gba_constants.inc\""); -- cgit v1.2.3 From 06f5a396016aee2406749633b627bb9d729744ff Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 29 Jun 2017 22:42:28 -0400 Subject: Remaining functions in use_pokeblock --- asm/use_pokeblock.s | 130 ---------------------------------------------------- ld_script.txt | 1 - src/use_pokeblock.c | 40 +++++++++++++++- 3 files changed, 39 insertions(+), 132 deletions(-) delete mode 100755 asm/use_pokeblock.s diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s deleted file mode 100755 index 6b0b0392d..000000000 --- a/asm/use_pokeblock.s +++ /dev/null @@ -1,130 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8137138 -sub_8137138: @ 8137138 - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _081371C0 @ =gSpriteSheet_ConditionUpDown - bl LoadSpriteSheet - ldr r0, _081371C4 @ =gSpritePalette_ConditionUpDown - bl LoadSpritePalette - ldr r2, _081371C8 @ =gUnknown_02039304 - ldr r0, [r2] - adds r0, 0x54 - movs r1, 0 - strb r1, [r0] - movs r4, 0 - adds r5, r2, 0 - ldr r6, _081371CC @ =gUnknown_08406158 - adds r0, r6, 0x2 - mov r8, r0 - ldr r7, _081371D0 @ =gSprites + 0x1C -_08137160: - ldr r0, [r5] - adds r0, 0x61 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _081371AC - lsls r2, r4, 2 - adds r0, r2, r6 - movs r3, 0 - ldrsh r1, [r0, r3] - add r2, r8 - movs r0, 0 - ldrsh r2, [r2, r0] - ldr r0, _081371D4 @ =gSpriteTemplate_840618C - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _081371AC - ldr r0, [r5] - adds r0, 0x61 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _081371A2 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - ldr r1, _081371D8 @ =sub_81371DC - str r1, [r0] -_081371A2: - ldr r1, [r5] - adds r1, 0x54 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_081371AC: - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x4 - bls _08137160 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_081371C0: .4byte gSpriteSheet_ConditionUpDown -_081371C4: .4byte gSpritePalette_ConditionUpDown -_081371C8: .4byte gUnknown_02039304 -_081371CC: .4byte gUnknown_08406158 -_081371D0: .4byte gSprites + 0x1C -_081371D4: .4byte gSpriteTemplate_840618C -_081371D8: .4byte sub_81371DC - thumb_func_end sub_8137138 - - thumb_func_start sub_81371DC -sub_81371DC: @ 81371DC - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0x5 - bgt _081371EE - ldrh r0, [r1, 0x26] - subs r0, 0x2 - b _081371F6 -_081371EE: - cmp r0, 0xB - bgt _081371F8 - ldrh r0, [r1, 0x26] - adds r0, 0x2 -_081371F6: - strh r0, [r1, 0x26] -_081371F8: - ldrh r0, [r1, 0x2E] - adds r0, 0x1 - strh r0, [r1, 0x2E] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x3C - ble _08137218 - adds r0, r1, 0 - bl DestroySprite - ldr r0, _0813721C @ =gUnknown_02039304 - ldr r1, [r0] - adds r1, 0x54 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] -_08137218: - pop {r0} - bx r0 - .align 2, 0 -_0813721C: .4byte gUnknown_02039304 - thumb_func_end sub_81371DC - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 2282bc7a2..56dfef8fe 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -256,7 +256,6 @@ SECTIONS { src/roamer.o(.text); asm/battle_tower.o(.text); src/use_pokeblock.o(.text); - asm/use_pokeblock.o(.text); src/battle_anim_8137220.o(.text); src/player_pc.o(.text); src/intro.o(.text); diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 6ca3437fd..a62821a90 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -57,7 +57,7 @@ const struct SpritePalette gSpritePalette_ConditionUpDown = { GFX_TAG_CONDITIONUPDOWN }; -const struct Coords16 gUnknown_08406158[] = { +const s16 gUnknown_08406158[][2] = { {0x9c, 0x1e}, {0x75, 0x35}, {0x75, 0x70}, @@ -135,6 +135,7 @@ bool8 sub_8136D00(void); void sub_8136DC0(u8 *, u8, s16); void sub_8136DA0(const u8 *); void sub_8136F74(struct Pokeblock *, struct Pokemon *); +void sub_81371DC(struct Sprite *); void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback) { @@ -921,3 +922,40 @@ u8 sub_8137124(u8 a0) { return sub_81370A4(a0); } + +void sub_8137138(void) +{ + u16 flavor; + u8 spriteidx; + LoadSpriteSheet(&gSpriteSheet_ConditionUpDown); + LoadSpritePalette(&gSpritePalette_ConditionUpDown); + gUnknown_02039304->unk54 = 0; + for (flavor=0; flavor<5; flavor++) + { + if (gUnknown_02039304->unk61[flavor] != 0) + { + spriteidx = CreateSprite(&gSpriteTemplate_840618C, gUnknown_08406158[flavor][0], gUnknown_08406158[flavor][1], 0); + if (spriteidx != MAX_SPRITES) + { + if (gUnknown_02039304->unk61[flavor] != 0) + { + gSprites[spriteidx].callback = sub_81371DC; + } + gUnknown_02039304->unk54++; + } + } + } +} + +void sub_81371DC(struct Sprite *sprite) +{ + if (sprite->data0 <= 5) + sprite->pos2.y -= 2; + else if (sprite->data0 <= 11) + sprite->pos2.y += 2; + if ((++sprite->data0) > 60) + { + DestroySprite(sprite); + gUnknown_02039304->unk54--; + } +} -- cgit v1.2.3 From a07701d4e1f115c5ed1686419c12f9bdcfda6aca Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 30 Jun 2017 08:38:48 -0400 Subject: Attempt to get German to build --- src/use_pokeblock.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index a62821a90..40c960cf9 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -21,7 +21,10 @@ #define GFX_TAG_CONDITIONUPDOWN 0 -#ifndef GERMAN +#ifdef GERMAN +const u16 ConditionUpDownPalette[16]; +const u32 ConditionUpDownTiles[0x80]; +#else const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down.gbapal"); const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp"); #endif -- cgit v1.2.3 From 282cae4a9fbd019a973fb6618337d29a61f97f42 Mon Sep 17 00:00:00 2001 From: scnorton Date: Fri, 30 Jun 2017 09:44:28 -0400 Subject: Address review items by Marijn vd Werf --- src/use_pokeblock.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c index 40c960cf9..ce83bc1c2 100755 --- a/src/use_pokeblock.c +++ b/src/use_pokeblock.c @@ -22,8 +22,8 @@ #define GFX_TAG_CONDITIONUPDOWN 0 #ifdef GERMAN -const u16 ConditionUpDownPalette[16]; -const u32 ConditionUpDownTiles[0x80]; +extern const u16 ConditionUpDownPalette[16]; +extern const u32 ConditionUpDownTiles[0x80]; #else const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down.gbapal"); const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp"); @@ -108,7 +108,7 @@ extern struct Pokeblock *gUnknown_0203930C; extern u8 gUnknown_02039310; extern u16 gKeyRepeatStartDelay; -extern u16 gScriptItemId; // remove after merge of #349 Pokeblock +extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock void launch_c3_walk_stairs_and_run_once(void (*const)(void)); void sub_81361E4(void); -- cgit v1.2.3 From a157df839902a28059c702e89a1d13a21ccc6b0a Mon Sep 17 00:00:00 2001 From: Touched Date: Sat, 24 Jun 2017 13:35:37 +0200 Subject: Decompile asm/rotating_gate.s --- asm/rotating_gate.s | 1085 --------------------------------------------------- ld_script.txt | 2 +- src/rotating_gate.c | 718 ++++++++++++++++++++++++++++++++++ 3 files changed, 719 insertions(+), 1086 deletions(-) delete mode 100644 asm/rotating_gate.s create mode 100644 src/rotating_gate.c diff --git a/asm/rotating_gate.s b/asm/rotating_gate.s deleted file mode 100644 index a553802e8..000000000 --- a/asm/rotating_gate.s +++ /dev/null @@ -1,1085 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start GetCurrentMapRotatingGatePuzzleType -GetCurrentMapRotatingGatePuzzleType: @ 80C799C - push {lr} - ldr r0, _080C79B0 @ =gSaveBlock1 - ldrh r1, [r0, 0x4] - movs r0, 0x86 - lsls r0, 1 - cmp r1, r0 - bne _080C79B4 - movs r0, 0x1 - b _080C79C6 - .align 2, 0 -_080C79B0: .4byte gSaveBlock1 -_080C79B4: - ldr r0, _080C79C0 @ =0x0000081d - cmp r1, r0 - beq _080C79C4 - movs r0, 0 - b _080C79C6 - .align 2, 0 -_080C79C0: .4byte 0x0000081d -_080C79C4: - movs r0, 0x2 -_080C79C6: - pop {r1} - bx r1 - thumb_func_end GetCurrentMapRotatingGatePuzzleType - - thumb_func_start sub_80C79CC -sub_80C79CC: @ 80C79CC - push {r4-r6,lr} - movs r0, 0x80 - lsls r0, 7 - bl GetVarPointer - adds r5, r0, 0 - movs r3, 0 - ldr r4, _080C7A00 @ =gUnknown_02038804 - ldrb r0, [r4] - cmp r3, r0 - bge _080C79F8 - ldr r6, _080C7A04 @ =gUnknown_02038800 -_080C79E4: - adds r2, r5, r3 - ldr r1, [r6] - lsls r0, r3, 3 - adds r0, r1 - ldrb r0, [r0, 0x5] - strb r0, [r2] - adds r3, 0x1 - ldrb r0, [r4] - cmp r3, r0 - blt _080C79E4 -_080C79F8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C7A00: .4byte gUnknown_02038804 -_080C7A04: .4byte gUnknown_02038800 - thumb_func_end sub_80C79CC - - thumb_func_start sub_80C7A08 -sub_80C7A08: @ 80C7A08 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x80 - lsls r0, 7 - bl GetVarPointer - adds r0, r4 - ldrb r0, [r0] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80C7A08 - - thumb_func_start sub_80C7A24 -sub_80C7A24: @ 80C7A24 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x80 - lsls r0, 7 - bl GetVarPointer - adds r0, r4 - strb r5, [r0] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80C7A24 - - thumb_func_start sub_80C7A44 -sub_80C7A44: @ 80C7A44 - push {r4,r5,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl sub_80C7A08 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r4, 0x1 - bne _080C7A68 - cmp r1, 0 - beq _080C7A64 - subs r0, r1, 0x1 - lsls r0, 24 - b _080C7A72 -_080C7A64: - movs r1, 0x3 - b _080C7A74 -_080C7A68: - adds r1, 0x1 - lsls r1, 24 - movs r0, 0xC0 - lsls r0, 18 - ands r0, r1 -_080C7A72: - lsrs r1, r0, 24 -_080C7A74: - adds r0, r5, 0 - bl sub_80C7A24 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80C7A44 - - thumb_func_start sub_80C7A80 -sub_80C7A80: @ 80C7A80 - push {lr} - bl GetCurrentMapRotatingGatePuzzleType - cmp r0, 0x1 - beq _080C7A94 - cmp r0, 0x1 - ble _080C7AC8 - cmp r0, 0x2 - beq _080C7AAC - b _080C7AC8 -_080C7A94: - ldr r1, _080C7AA0 @ =gUnknown_02038800 - ldr r0, _080C7AA4 @ =gUnknown_083D2964 - str r0, [r1] - ldr r1, _080C7AA8 @ =gUnknown_02038804 - movs r0, 0x7 - b _080C7AB6 - .align 2, 0 -_080C7AA0: .4byte gUnknown_02038800 -_080C7AA4: .4byte gUnknown_083D2964 -_080C7AA8: .4byte gUnknown_02038804 -_080C7AAC: - ldr r1, _080C7ACC @ =gUnknown_02038800 - ldr r0, _080C7AD0 @ =gUnknown_083D299C - str r0, [r1] - ldr r1, _080C7AD4 @ =gUnknown_02038804 - movs r0, 0xE -_080C7AB6: - strb r0, [r1] - movs r1, 0 - ldr r3, _080C7AD8 @ =gUnknown_020387F0 - movs r2, 0x40 -_080C7ABE: - adds r0, r1, r3 - strb r2, [r0] - adds r1, 0x1 - cmp r1, 0xD - bls _080C7ABE -_080C7AC8: - pop {r0} - bx r0 - .align 2, 0 -_080C7ACC: .4byte gUnknown_02038800 -_080C7AD0: .4byte gUnknown_083D299C -_080C7AD4: .4byte gUnknown_02038804 -_080C7AD8: .4byte gUnknown_020387F0 - thumb_func_end sub_80C7A80 - - thumb_func_start sub_80C7ADC -sub_80C7ADC: @ 80C7ADC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - lsls r1, 16 - lsrs r1, 16 - mov r10, r1 - ldr r2, _080C7B9C @ =gSaveBlock1 - ldrh r1, [r2] - subs r0, r1, 0x2 - lsls r0, 16 - lsrs r3, r0, 16 - adds r1, 0x11 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - ldrh r1, [r2, 0x2] - subs r0, r1, 0x2 - lsls r0, 16 - lsrs r2, r0, 16 - adds r1, 0xE - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - movs r5, 0 - ldr r0, _080C7BA0 @ =gUnknown_02038804 - ldrb r0, [r0] - cmp r5, r0 - bcs _080C7B8C - lsls r0, r2, 16 - asrs r7, r0, 16 - lsls r0, r3, 16 - asrs r6, r0, 16 -_080C7B28: - ldr r0, _080C7BA4 @ =gUnknown_02038800 - ldr r0, [r0] - lsls r1, r5, 3 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x7 - lsls r0, 16 - lsrs r2, r0, 16 - ldrh r0, [r1, 0x2] - adds r0, 0x7 - lsls r0, 16 - asrs r1, r0, 16 - cmp r7, r1 - bgt _080C7B7E - mov r3, r8 - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, r1 - blt _080C7B7E - lsls r0, r2, 16 - asrs r1, r0, 16 - cmp r6, r1 - bgt _080C7B7E - mov r2, r9 - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, r1 - blt _080C7B7E - ldr r0, _080C7BA8 @ =gUnknown_020387F0 - adds r4, r5, r0 - ldrb r0, [r4] - cmp r0, 0x40 - bne _080C7B7E - ldr r3, [sp] - lsls r1, r3, 16 - mov r0, r10 - lsls r2, r0, 16 - adds r0, r5, 0 - asrs r1, 16 - asrs r2, 16 - bl sub_80C7BAC - strb r0, [r4] -_080C7B7E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080C7BA0 @ =gUnknown_02038804 - ldrb r0, [r0] - cmp r5, r0 - bcc _080C7B28 -_080C7B8C: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C7B9C: .4byte gSaveBlock1 -_080C7BA0: .4byte gUnknown_02038804 -_080C7BA4: .4byte gUnknown_02038800 -_080C7BA8: .4byte gUnknown_020387F0 - thumb_func_end sub_80C7ADC - - thumb_func_start sub_80C7BAC -sub_80C7BAC: @ 80C7BAC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x18 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r7, r1, 16 - lsls r2, 16 - lsrs r2, 16 - mov r8, r2 - ldr r0, _080C7BDC @ =gUnknown_02038800 - lsls r1, r6, 3 - ldr r0, [r0] - adds r4, r0, r1 - ldrb r0, [r4, 0x4] - cmp r0, 0 - beq _080C7BD4 - cmp r0, 0x4 - bne _080C7BE4 -_080C7BD4: - mov r1, sp - ldr r0, _080C7BE0 @ =gSpriteTemplate_83D60A4 - b _080C7BE8 - .align 2, 0 -_080C7BDC: .4byte gUnknown_02038800 -_080C7BE0: .4byte gSpriteTemplate_83D60A4 -_080C7BE4: - mov r1, sp - ldr r0, _080C7C7C @ =gSpriteTemplate_83D608C -_080C7BE8: - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - ldm r0!, {r2,r3,r5} - stm r1!, {r2,r3,r5} - mov r2, sp - ldrb r0, [r4, 0x4] - movs r3, 0x98 - lsls r3, 5 - adds r1, r3, 0 - adds r0, r1 - strh r0, [r2] - mov r0, sp - movs r1, 0 - movs r2, 0 - movs r3, 0x94 - bl CreateSprite - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x40 - beq _080C7C84 - ldrh r0, [r4] - adds r0, 0x7 - ldrh r1, [r4, 0x2] - adds r1, 0x7 - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - ldr r2, _080C7C80 @ =gSprites - adds r4, r2 - strh r6, [r4, 0x2E] - movs r2, 0x3E - adds r2, r4 - mov r12, r2 - ldrb r2, [r2] - movs r3, 0x2 - orrs r2, r3 - mov r3, r12 - strb r2, [r3] - lsls r0, 16 - asrs r0, 16 - lsls r2, r7, 16 - asrs r2, 16 - adds r0, r2 - lsls r0, 16 - asrs r0, 16 - lsls r1, 16 - asrs r1, 16 - mov r3, r8 - lsls r2, r3, 16 - asrs r2, 16 - adds r1, r2 - lsls r1, 16 - asrs r1, 16 - adds r2, r4, 0 - adds r2, 0x20 - adds r3, r4, 0 - adds r3, 0x22 - bl sub_8060388 - adds r0, r4, 0 - bl sub_80C7D14 - adds r0, r6, 0 - bl sub_80C7A08 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAffineAnim - adds r0, r5, 0 - b _080C7C86 - .align 2, 0 -_080C7C7C: .4byte gSpriteTemplate_83D608C -_080C7C80: .4byte gSprites -_080C7C84: - movs r0, 0x40 -_080C7C86: - add sp, 0x18 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80C7BAC - - thumb_func_start sub_80C7C94 -sub_80C7C94: @ 80C7C94 - push {r4-r7,lr} - adds r6, r0, 0 - ldrh r0, [r6, 0x30] - lsls r0, 24 - lsrs r5, r0, 24 - ldrh r0, [r6, 0x32] - lsls r0, 24 - lsrs r4, r0, 24 - adds r7, r4, 0 - adds r0, r6, 0 - bl sub_80C7D14 - cmp r5, 0x1 - bne _080C7CDA - adds r0, r4, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - bl GetPlayerSpeed - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - beq _080C7CCA - adds r0, r4, 0 - adds r0, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 -_080C7CCA: - movs r0, 0x30 - bl PlaySE - adds r0, r6, 0 - adds r1, r4, 0 - bl StartSpriteAffineAnim - b _080C7D08 -_080C7CDA: - cmp r5, 0x2 - bne _080C7D08 - adds r0, r7, 0 - adds r0, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - bl GetPlayerSpeed - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x1 - beq _080C7CFA - adds r0, r4, 0 - adds r0, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 -_080C7CFA: - movs r0, 0x30 - bl PlaySE - adds r0, r6, 0 - adds r1, r4, 0 - bl StartSpriteAffineAnim -_080C7D08: - movs r0, 0 - strh r0, [r6, 0x30] - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80C7C94 - - thumb_func_start sub_80C7D14 -sub_80C7D14: @ 80C7D14 - push {r4-r6,lr} - mov r12, r0 - mov r4, r12 - adds r4, 0x3E - ldrb r0, [r4] - movs r5, 0x5 - negs r5, r5 - ands r5, r0 - strb r5, [r4] - mov r0, r12 - ldrh r1, [r0, 0x24] - ldrh r2, [r0, 0x20] - adds r1, r2 - adds r0, 0x28 - movs r2, 0 - ldrsb r2, [r0, r2] - ldr r0, _080C7DA8 @ =gSpriteCoordOffsetX - adds r2, r1 - ldrh r0, [r0] - adds r2, r0 - lsls r2, 16 - mov r3, r12 - ldrh r1, [r3, 0x26] - ldrh r0, [r3, 0x22] - adds r1, r0 - mov r0, r12 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldr r3, _080C7DAC @ =gSpriteCoordOffsetY - adds r0, r1 - ldrh r3, [r3] - adds r0, r3 - lsls r0, 16 - movs r3, 0x80 - lsls r3, 15 - adds r1, r2, r3 - lsrs r1, 16 - lsrs r6, r0, 16 - adds r0, r3 - lsrs r3, r0, 16 - asrs r2, 16 - cmp r2, 0xFF - bgt _080C7D7A - lsls r0, r1, 16 - asrs r0, 16 - movs r1, 0x10 - negs r1, r1 - cmp r0, r1 - bge _080C7D82 -_080C7D7A: - movs r1, 0x4 - adds r0, r5, 0 - orrs r0, r1 - strb r0, [r4] -_080C7D82: - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, 0xAF - bgt _080C7D96 - lsls r0, r3, 16 - asrs r0, 16 - movs r1, 0x10 - negs r1, r1 - cmp r0, r1 - bge _080C7DA2 -_080C7D96: - mov r0, r12 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] -_080C7DA2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C7DA8: .4byte gSpriteCoordOffsetX -_080C7DAC: .4byte gSpriteCoordOffsetY - thumb_func_end sub_80C7D14 - - thumb_func_start LoadRotatingGatePics -LoadRotatingGatePics: @ 80C7DB0 - push {lr} - ldr r0, _080C7DBC @ =gRotatingGatesGraphicsTable - bl LoadSpriteSheets - pop {r0} - bx r0 - .align 2, 0 -_080C7DBC: .4byte gRotatingGatesGraphicsTable - thumb_func_end LoadRotatingGatePics - - thumb_func_start sub_80C7DC0 -sub_80C7DC0: @ 80C7DC0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r2, _080C7DF4 @ =gSaveBlock1 - ldrh r1, [r2] - subs r0, r1, 0x2 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - adds r1, 0x11 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - ldrh r1, [r2, 0x2] - subs r0, r1, 0x2 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - adds r1, 0xE - lsls r1, 16 - lsrs r7, r1, 16 - movs r6, 0 - b _080C7E66 - .align 2, 0 -_080C7DF4: .4byte gSaveBlock1 -_080C7DF8: - ldr r0, _080C7E7C @ =gUnknown_02038800 - ldr r0, [r0] - lsls r1, r6, 3 - adds r1, r0 - ldrh r0, [r1] - adds r0, 0x7 - lsls r0, 16 - lsrs r2, r0, 16 - ldrh r0, [r1, 0x2] - adds r0, 0x7 - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _080C7E80 @ =gUnknown_020387F0 - adds r0, r6, r0 - ldrb r0, [r0] - cmp r0, 0x40 - beq _080C7E64 - lsls r0, r2, 16 - mov r2, r10 - lsls r1, r2, 16 - asrs r2, r0, 16 - cmp r0, r1 - blt _080C7E44 - mov r1, r9 - lsls r0, r1, 16 - asrs r0, 16 - cmp r2, r0 - bgt _080C7E44 - lsls r0, r3, 16 - mov r2, r8 - lsls r1, r2, 16 - asrs r2, r0, 16 - cmp r0, r1 - blt _080C7E44 - lsls r0, r7, 16 - asrs r0, 16 - cmp r2, r0 - ble _080C7E64 -_080C7E44: - ldr r0, _080C7E80 @ =gUnknown_020387F0 - adds r5, r6, r0 - ldrb r0, [r5] - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _080C7E84 @ =gSprites - adds r4, r0 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - movs r0, 0x40 - strb r0, [r5] -_080C7E64: - adds r6, 0x1 -_080C7E66: - ldr r0, _080C7E88 @ =gUnknown_02038804 - ldrb r0, [r0] - cmp r6, r0 - blt _080C7DF8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C7E7C: .4byte gUnknown_02038800 -_080C7E80: .4byte gUnknown_020387F0 -_080C7E84: .4byte gSprites -_080C7E88: .4byte gUnknown_02038804 - thumb_func_end sub_80C7DC0 - - thumb_func_start sub_80C7E8C -sub_80C7E8C: @ 80C7E8C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 24 - lsrs r4, r0, 24 - cmp r1, 0x1 - bne _080C7EAC - ldr r0, _080C7EA8 @ =gUnknown_083D611C - mov r10, r0 - b _080C7EB8 - .align 2, 0 -_080C7EA8: .4byte gUnknown_083D611C -_080C7EAC: - cmp r1, 0x2 - beq _080C7EB4 -_080C7EB0: - movs r0, 0 - b _080C7F48 -_080C7EB4: - ldr r1, _080C7F58 @ =gUnknown_083D60FC - mov r10, r1 -_080C7EB8: - adds r0, r4, 0 - bl sub_80C7A08 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - ldr r0, _080C7F5C @ =gUnknown_02038800 - ldr r1, [r0] - lsls r0, r4, 3 - adds r0, r1 - ldrb r2, [r0, 0x4] - ldrh r1, [r0] - adds r1, 0x7 - ldrh r0, [r0, 0x2] - adds r0, 0x7 - movs r3, 0 - lsls r2, 3 - str r2, [sp, 0x4] - lsls r1, 16 - asrs r1, 16 - mov r9, r1 - lsls r0, 16 - asrs r0, 16 - mov r8, r0 -_080C7EE8: - movs r6, 0 - ldr r2, [sp] - adds r7, r2, r3 - lsls r0, r3, 1 - adds r5, r7, 0 - ldr r1, [sp, 0x4] - adds r0, r1 - ldr r2, _080C7F60 @ =gUnknown_083D613C - adds r4, r0, r2 -_080C7EFA: - adds r0, r5, 0 - cmp r5, 0 - bge _080C7F02 - adds r0, r7, 0x3 -_080C7F02: - asrs r0, 2 - lsls r0, 2 - subs r0, r5, r0 - lsls r0, 1 - adds r0, r6 - lsls r0, 24 - lsrs r1, r0, 24 - ldrb r0, [r4] - cmp r0, 0 - beq _080C7F38 - lsls r1, 2 - add r1, r10 - movs r0, 0 - ldrsb r0, [r1, r0] - add r0, r9 - ldrb r1, [r1, 0x1] - lsls r1, 24 - asrs r1, 24 - add r1, r8 - str r3, [sp, 0x8] - bl MapGridIsImpassableAt - lsls r0, 24 - lsrs r0, 24 - ldr r3, [sp, 0x8] - cmp r0, 0x1 - beq _080C7EB0 -_080C7F38: - adds r4, 0x1 - adds r6, 0x1 - cmp r6, 0x1 - ble _080C7EFA - adds r3, 0x1 - cmp r3, 0x3 - ble _080C7EE8 - movs r0, 0x1 -_080C7F48: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080C7F58: .4byte gUnknown_083D60FC -_080C7F5C: .4byte gUnknown_02038800 -_080C7F60: .4byte gUnknown_083D613C - thumb_func_end sub_80C7E8C - - thumb_func_start sub_80C7F64 -sub_80C7F64: @ 80C7F64 - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - adds r6, r0, 0 - lsls r4, 24 - lsrs r5, r4, 24 - lsrs r4, 25 - movs r0, 0x1 - ands r5, r0 - adds r0, r6, 0 - bl sub_80C7A08 - subs r4, r0 - adds r1, r4, 0x4 - adds r0, r1, 0 - cmp r1, 0 - bge _080C7F8A - adds r0, r4, 0x7 -_080C7F8A: - asrs r0, 2 - lsls r0, 2 - subs r0, r1, r0 - ldr r1, _080C7FB0 @ =gUnknown_02038800 - ldr r2, [r1] - lsls r1, r6, 3 - adds r1, r2 - ldrb r1, [r1, 0x4] - ldr r2, _080C7FB4 @ =gUnknown_083D613C - lsls r0, 24 - asrs r0, 23 - adds r0, r5 - lsls r1, 3 - adds r0, r1 - adds r0, r2 - ldrb r0, [r0] - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080C7FB0: .4byte gUnknown_02038800 -_080C7FB4: .4byte gUnknown_083D613C - thumb_func_end sub_80C7F64 - - thumb_func_start sub_80C7FB8 -sub_80C7FB8: @ 80C7FB8 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _080C7FE4 @ =gUnknown_020387F0 - adds r2, r3, r0 - ldrb r0, [r2] - cmp r0, 0x40 - beq _080C7FDC - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - ldr r0, _080C7FE8 @ =gSprites - adds r4, r0 - strh r1, [r4, 0x30] - adds r0, r3, 0 - bl sub_80C7A08 - strh r0, [r4, 0x32] -_080C7FDC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C7FE4: .4byte gUnknown_020387F0 -_080C7FE8: .4byte gSprites - thumb_func_end sub_80C7FB8 - - thumb_func_start sub_80C7FEC -sub_80C7FEC: @ 80C7FEC - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 16 - lsrs r2, 16 - cmp r0, 0x2 - bne _080C8008 - ldr r3, _080C8004 @ =gUnknown_083D60BC - b _080C802A - .align 2, 0 -_080C8004: .4byte gUnknown_083D60BC -_080C8008: - cmp r0, 0x1 - bne _080C8014 - ldr r3, _080C8010 @ =gUnknown_083D60CC - b _080C802A - .align 2, 0 -_080C8010: .4byte gUnknown_083D60CC -_080C8014: - cmp r0, 0x3 - bne _080C8020 - ldr r3, _080C801C @ =gUnknown_083D60DC - b _080C802A - .align 2, 0 -_080C801C: .4byte gUnknown_083D60DC -_080C8020: - cmp r3, 0x4 - beq _080C8028 - movs r0, 0xFF - b _080C8038 -_080C8028: - ldr r3, _080C803C @ =gUnknown_083D60EC -_080C802A: - lsls r0, r2, 16 - lsls r1, 16 - asrs r1, 16 - asrs r0, 14 - adds r0, r1 - adds r0, r3, r0 - ldrb r0, [r0] -_080C8038: - pop {r1} - bx r1 - .align 2, 0 -_080C803C: .4byte gUnknown_083D60EC - thumb_func_end sub_80C7FEC - - thumb_func_start sub_80C8040 -sub_80C8040: @ 80C8040 - push {lr} - bl GetCurrentMapRotatingGatePuzzleType - cmp r0, 0 - beq _080C8052 - bl sub_80C7A80 - bl sub_80C79CC -_080C8052: - pop {r0} - bx r0 - thumb_func_end sub_80C8040 - - thumb_func_start RotatingGatePuzzleCameraUpdate -RotatingGatePuzzleCameraUpdate: @ 80C8058 - push {r4,r5,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r5, r1, 16 - bl GetCurrentMapRotatingGatePuzzleType - cmp r0, 0 - beq _080C807A - lsls r0, r4, 16 - asrs r0, 16 - lsls r1, r5, 16 - asrs r1, 16 - bl sub_80C7ADC - bl sub_80C7DC0 -_080C807A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end RotatingGatePuzzleCameraUpdate - - thumb_func_start sub_80C8080 -sub_80C8080: @ 80C8080 - push {lr} - bl GetCurrentMapRotatingGatePuzzleType - cmp r0, 0 - beq _080C809A - bl LoadRotatingGatePics - bl sub_80C7A80 - movs r0, 0 - movs r1, 0 - bl sub_80C7ADC -_080C809A: - pop {r0} - bx r0 - thumb_func_end sub_80C8080 - - thumb_func_start CheckForRotatingGatePuzzleCollision -CheckForRotatingGatePuzzleCollision: @ 80C80A0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 16 - lsrs r2, 16 - mov r8, r2 - bl GetCurrentMapRotatingGatePuzzleType - cmp r0, 0 - bne _080C80D4 - b _080C8172 -_080C80C2: - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80C7FB8 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80C7A44 - b _080C8172 -_080C80D4: - movs r6, 0 - ldr r0, _080C8160 @ =gUnknown_02038804 - ldrb r0, [r0] - cmp r6, r0 - bge _080C8172 - lsls r0, r4, 16 - asrs r7, r0, 16 -_080C80E2: - ldr r0, _080C8164 @ =gUnknown_02038800 - ldr r1, [r0] - lsls r0, r6, 3 - adds r0, r1 - ldrh r1, [r0] - adds r1, 0x7 - ldrh r0, [r0, 0x2] - adds r0, 0x7 - lsls r0, 16 - lsrs r2, r0, 16 - lsls r1, 16 - asrs r4, r1, 16 - subs r0, r4, 0x2 - cmp r0, r7 - bgt _080C8168 - adds r0, r4, 0x1 - cmp r7, r0 - bgt _080C8168 - lsls r0, r2, 16 - asrs r3, r0, 16 - subs r1, r3, 0x2 - mov r2, r8 - lsls r0, r2, 16 - asrs r2, r0, 16 - cmp r1, r2 - bgt _080C8168 - adds r0, r3, 0x1 - cmp r2, r0 - bgt _080C8168 - subs r1, r7, r4 - adds r1, 0x2 - subs r2, r3 - adds r2, 0x2 - lsls r1, 16 - asrs r1, 16 - lsls r2, 16 - asrs r2, 16 - mov r0, r9 - bl sub_80C7FEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _080C8168 - lsrs r5, r0, 4 - movs r1, 0xF - ands r1, r0 - lsls r0, r6, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80C7F64 - cmp r0, 0 - beq _080C8168 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80C7E8C - cmp r0, 0 - bne _080C80C2 - movs r0, 0x1 - b _080C8174 - .align 2, 0 -_080C8160: .4byte gUnknown_02038804 -_080C8164: .4byte gUnknown_02038800 -_080C8168: - adds r6, 0x1 - ldr r0, _080C8180 @ =gUnknown_02038804 - ldrb r0, [r0] - cmp r6, r0 - blt _080C80E2 -_080C8172: - movs r0, 0 -_080C8174: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080C8180: .4byte gUnknown_02038804 - thumb_func_end CheckForRotatingGatePuzzleCollision - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index e52e5661c..ed4f0c85a 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -179,7 +179,7 @@ SECTIONS { src/pokemon_size_record.o(.text); asm/fldeff_80C5CD4.o(.text); src/field_special_scene.o(.text); - asm/rotating_gate.o(.text); + src/rotating_gate.o(.text); src/safari_zone.o(.text); asm/contest_link_80C857C.o(.text); src/contest_link_80C857C.o(.text); diff --git a/src/rotating_gate.c b/src/rotating_gate.c new file mode 100644 index 000000000..f8e5fac21 --- /dev/null +++ b/src/rotating_gate.c @@ -0,0 +1,718 @@ +#include "global.h" +#include "bike.h" +#include "event_data.h" +#include "fieldmap.h" +#include "sound.h" +#include "sprite.h" + +struct UnknownStruct +{ + /* 0x0 */ struct Coords16 pos; + /* 0x4 */ u8 e; + /* 0x5 */ u8 f; + /* 0x6 */ u8 g; + /* 0x7 */ u8 h; +}; + +struct UnknownStruct2 +{ + s8 a; + s8 b; + u8 c; + u8 d; +}; + +extern const struct SpriteSheet gRotatingGatesGraphicsTable[]; +extern /* const */ struct UnknownStruct gUnknown_083D2964[]; +extern /* const */ struct UnknownStruct gUnknown_083D299C[]; +extern const struct SpriteTemplate gSpriteTemplate_83D60A4; +extern const struct SpriteTemplate gSpriteTemplate_83D608C; + +extern u8 gUnknown_020387F0[10]; // puzzle oam ID list + +extern struct UnknownStruct *gUnknown_02038800; +extern u8 gUnknown_02038804; // puzzle count + +extern struct UnknownStruct2 gUnknown_083D611C[5]; +extern struct UnknownStruct2 gUnknown_083D60FC[5]; +extern const u8 gUnknown_083D613C[12][8]; + +extern const u8 gUnknown_083D60BC[4][4]; +extern const u8 gUnknown_083D60CC[4][4]; +extern const u8 gUnknown_083D60DC[4][4]; +extern const u8 gUnknown_083D60EC[4][4]; + +u8 sub_80C7BAC(u8 i, s16 a, s16 b); +void sub_8060388(s16 x, s16 y, s16 *outX, s16 *outY); +void sub_80C7D14(struct Sprite *sprite); + +int GetCurrentMapRotatingGatePuzzleType(void) +{ + if (gSaveBlock1.location.mapGroup == 0xC && gSaveBlock1.location.mapNum == 0x1) + { + return 1; + } + + if (gSaveBlock1.location.mapGroup == 0x1d && gSaveBlock1.location.mapNum == 0x8) + { + return 2; + } + + return 0; +} + +// ResetSomething +void sub_80C79CC(void) +{ + int i; + u8 *ptr; + + ptr = (u8 *)GetVarPointer(0x4000); + + for (i = 0; i < gUnknown_02038804; i++) + { + ptr[i] = gUnknown_02038800[i].f; + } +} + +// GetSomething +/* u8 */ int sub_80C7A08(u8 a) +{ + u8 *ptr; + ptr = (u8 *)GetVarPointer(0x4000); + return ptr[a]; +} + +// SetSomething +void sub_80C7A24(u8 a, u8 b) +{ + u8 *ptr; + ptr = (u8 *)GetVarPointer(0x4000); + ptr[a] = b; +} + +// RotateInDirectionProbably +void sub_80C7A44(u8 a, u32 b) +{ + u8 r1; + r1 = sub_80C7A08(a); + + if (b == 1) + { + if (r1) + { + r1--; + } + else + { + r1 = 3; + } + } + else + { + r1 = ++r1 % 4; + } + + sub_80C7A24(a, r1); +} + +// Configure +void sub_80C7A80(void) +{ + int a = GetCurrentMapRotatingGatePuzzleType(); + u32 i; + + switch (a) + { + case 1: + gUnknown_02038800 = gUnknown_083D2964; + gUnknown_02038804 = 7; + break; + case 2: + gUnknown_02038800 = gUnknown_083D299C; + gUnknown_02038804 = 0xE; + break; + case 0: + default: + return; + } + + for (i = 0; i < 14; i++) + { + gUnknown_020387F0[i] = MAX_SPRITES; + } +} + +void sub_80C7ADC(s16 a, s16 b) +{ + u8 i; + s16 x = gSaveBlock1.pos.x - 2; + s16 x2 = gSaveBlock1.pos.x + 0x11; + s16 y = gSaveBlock1.pos.y - 2; + s16 y2 = gSaveBlock1.pos.y + 0xe; + + s16 x3, y3; + + for (i = 0; i < gUnknown_02038804; i++) + { + x3 = gUnknown_02038800[i].pos.x + 7; + y3 = gUnknown_02038800[i].pos.y + 7; + + if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 && gUnknown_020387F0[i] == MAX_SPRITES) + { + gUnknown_020387F0[i] = sub_80C7BAC(i, a, b); + } + } +} + +// CreateSprite +u8 sub_80C7BAC(u8 i, s16 a, s16 b) +{ + struct Sprite *sprite; // r4 + struct SpriteTemplate template; + struct UnknownStruct *unk; + u8 id; // r5 + s16 x, y; + + unk = &gUnknown_02038800[i]; + + if (unk->e == 0 || unk->e == 4) + { + template = gSpriteTemplate_83D60A4; + } + else + { + template = gSpriteTemplate_83D608C; + } + + template.tileTag = unk->e + 0x1300; + + id = CreateSprite(&template, 0, 0, 0x94); + if (id == MAX_SPRITES) + { + return MAX_SPRITES; + } + + x = unk->pos.x + 7; + y = unk->pos.y + 7; + + sprite = &gSprites[id]; + sprite->data0 = i; + sprite->coordOffsetEnabled = 1; + + sub_8060388(x + a, y + b, &sprite->pos1.x, &sprite->pos1.y); + sub_80C7D14(sprite); + StartSpriteAffineAnim(sprite, sub_80C7A08(i)); + + return id; +} + +// RotateGateWithSE +void sub_80C7C94(struct Sprite *sprite) +{ + u8 a; // r5 + u8 b; + u8 affineAnimation; + + a = sprite->data1; + b = sprite->data2; + + sub_80C7D14(sprite); + + if (a == 1) + { + affineAnimation = b + 4; + + if (GetPlayerSpeed() != 1) + affineAnimation += 8; + + PlaySE(48); + StartSpriteAffineAnim(sprite, affineAnimation); + } + else if (a == 2) + { + affineAnimation = b + 8; + + if (GetPlayerSpeed() != 1) + affineAnimation += 8; + + PlaySE(48); + StartSpriteAffineAnim(sprite, affineAnimation); + } + + sprite->data1 = 0; +} + +// See sub_806487C (field_map_obj_helpers.c) +void sub_80C7D14(struct Sprite *sprite) +{ + u16 x; + s16 x2; + u16 y; + s16 y2; + + sprite->invisible = 0; + x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX; + y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY; + + x2 = x + 0x40; // Dimensions of the rotating gate + y2 = y + 0x40; + + // TODO: Make this 0x10 a constant + if ((s16)x > DISPLAY_WIDTH + 0x10 - 1 || x2 < -0x10) + { + sprite->invisible = 1; + } + + if ((s16)y > DISPLAY_HEIGHT + 0x10 - 1 || y2 < -0x10) + { + sprite->invisible = 1; + } +} + +void LoadRotatingGatePics(void) +{ + LoadSpriteSheets(gRotatingGatesGraphicsTable); +} + +void sub_80C7DC0(void) +{ + s16 x; + s16 x2; + s16 y; + s16 y2; + s16 xGate; + s16 yGate; + int i; + struct Sprite *sprite; + + x = gSaveBlock1.pos.x - 2; + x2 = gSaveBlock1.pos.x + 17; + y = gSaveBlock1.pos.y - 2; + y2 = gSaveBlock1.pos.y + 14; + + for (i = 0; i < gUnknown_02038804; i++) + { + xGate = gUnknown_02038800[i].pos.x + 7; + yGate = gUnknown_02038800[i].pos.y + 7; + + if (gUnknown_020387F0[i] == MAX_SPRITES) + continue; + + if (xGate < x || xGate > x2 || yGate < y || yGate > y2) + { + sprite = &gSprites[gUnknown_020387F0[i]]; + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + gUnknown_020387F0[i] = MAX_SPRITES; + } + } +} + +#ifdef NONMATCHING +int sub_80C7E8C(u8 a, int puzzleType) +{ + struct UnknownStruct2 *unk1; + u8 unk2; + s16 x; + s16 y; + int unk3; + int i; + int j; + int unk4; + const u8 *unk5; + int unk6; + u8 unk7; + int wat; + + if (puzzleType == 1) + unk1 = gUnknown_083D611C; + else if (puzzleType == 2) + unk1 = gUnknown_083D60FC; + else + return 0; + + unk2 = sub_80C7A08(a); + + unk3 = gUnknown_02038800[a].e; + x = gUnknown_02038800[a].pos.x + 7; + y = gUnknown_02038800[a].pos.y + 7; + + for (i = 0; i <= 3; i++) + { + j = 0; + unk4 = unk2 + i; + wat = unk2 + i; + unk5 = &gUnknown_083D613C[unk3][i * 2]; + + for (; j <= 1; j++) + { + unk6 = wat; + if (wat < 0) + unk6 = unk4 + 3; + + unk7 = (2 * (wat - ((unk6 >> 2) << 2)) + j); + + if (*unk5) + { + if (MapGridIsImpassableAt(unk1[unk7].a + x, unk1[unk7].b + y) == 1) + return 0; + } + unk5++; + } + } + + return 1; +} +#else +__attribute__((naked)) int sub_80C7E8C(u8 a, int puzzleType) +{ + 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\ + sub sp, 0xC\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + cmp r1, 0x1\n\ + bne _080C7EAC\n\ + ldr r0, _080C7EA8 @ =gUnknown_083D611C\n\ + mov r10, r0\n\ + b _080C7EB8\n\ + .align 2, 0\n\ +_080C7EA8: .4byte gUnknown_083D611C\n\ +_080C7EAC:\n\ + cmp r1, 0x2\n\ + beq _080C7EB4\n\ +_080C7EB0:\n\ + movs r0, 0\n\ + b _080C7F48\n\ +_080C7EB4:\n\ + ldr r1, _080C7F58 @ =gUnknown_083D60FC\n\ + mov r10, r1\n\ +_080C7EB8:\n\ + adds r0, r4, 0\n\ + bl sub_80C7A08\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + str r0, [sp]\n\ + ldr r0, _080C7F5C @ =gUnknown_02038800\n\ + ldr r1, [r0]\n\ + lsls r0, r4, 3\n\ + adds r0, r1\n\ + ldrb r2, [r0, 0x4]\n\ + ldrh r1, [r0]\n\ + adds r1, 0x7\n\ + ldrh r0, [r0, 0x2]\n\ + adds r0, 0x7\n\ + movs r3, 0\n\ + lsls r2, 3\n\ + str r2, [sp, 0x4]\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + mov r9, r1\n\ + lsls r0, 16\n\ + asrs r0, 16\n\ + mov r8, r0\n\ +_080C7EE8:\n\ + movs r6, 0\n\ + ldr r2, [sp]\n\ + adds r7, r2, r3\n\ + lsls r0, r3, 1\n\ + adds r5, r7, 0\n\ + ldr r1, [sp, 0x4]\n\ + adds r0, r1\n\ + ldr r2, _080C7F60 @ =gUnknown_083D613C\n\ + adds r4, r0, r2\n\ +_080C7EFA:\n\ + adds r0, r5, 0\n\ + cmp r5, 0\n\ + bge _080C7F02\n\ + adds r0, r7, 0x3\n\ +_080C7F02:\n\ + asrs r0, 2\n\ + lsls r0, 2\n\ + subs r0, r5, r0\n\ + lsls r0, 1\n\ + adds r0, r6\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + ldrb r0, [r4]\n\ + cmp r0, 0\n\ + beq _080C7F38\n\ + lsls r1, 2\n\ + add r1, r10\n\ + movs r0, 0\n\ + ldrsb r0, [r1, r0]\n\ + add r0, r9\n\ + ldrb r1, [r1, 0x1]\n\ + lsls r1, 24\n\ + asrs r1, 24\n\ + add r1, r8\n\ + str r3, [sp, 0x8]\n\ + bl MapGridIsImpassableAt\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldr r3, [sp, 0x8]\n\ + cmp r0, 0x1\n\ + beq _080C7EB0\n\ +_080C7F38:\n\ + adds r4, 0x1\n\ + adds r6, 0x1\n\ + cmp r6, 0x1\n\ + ble _080C7EFA\n\ + adds r3, 0x1\n\ + cmp r3, 0x3\n\ + ble _080C7EE8\n\ + movs r0, 0x1\n\ +_080C7F48:\n\ + add sp, 0xC\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\ +_080C7F58: .4byte gUnknown_083D60FC\n\ +_080C7F5C: .4byte gUnknown_02038800\n\ +_080C7F60: .4byte gUnknown_083D613C\n\ +.syntax divided\n"); +} +#endif + +#ifdef NONMATCHING +int sub_80C7F64(u8 a, u8 b) +{ + int unk1; + int unk2; + int unk4; + int unk5; + int unk6; + int unk7; + + unk5 = a >> 1; + unk1 = b & 1; + unk2 = unk5 - sub_80C7A08(a) + 4; + unk7 = unk2 < 0 ? unk2 + 3 : unk2; + unk4 = (unk7 - ((unk7 >> 2) << 2)); + unk6 = gUnknown_02038800[a].e; + return gUnknown_083D613C[unk6][(s8)unk4 * 2 + unk1]; +} +#else +__attribute__((naked)) int sub_80C7F64(u8 a, u8 b) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + adds r4, r1, 0\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r6, r0, 0\n\ + lsls r4, 24\n\ + lsrs r5, r4, 24\n\ + lsrs r4, 25\n\ + movs r0, 0x1\n\ + ands r5, r0\n\ + adds r0, r6, 0\n\ + bl sub_80C7A08\n\ + subs r4, r0\n\ + adds r1, r4, 0x4\n\ + adds r0, r1, 0\n\ + cmp r1, 0\n\ + bge _080C7F8A\n\ + adds r0, r4, 0x7\n\ +_080C7F8A:\n\ + asrs r0, 2\n\ + lsls r0, 2\n\ + subs r0, r1, r0\n\ + ldr r1, _080C7FB0 @ =gUnknown_02038800\n\ + ldr r2, [r1]\n\ + lsls r1, r6, 3\n\ + adds r1, r2\n\ + ldrb r1, [r1, 0x4]\n\ + ldr r2, _080C7FB4 @ =gUnknown_083D613C\n\ + lsls r0, 24\n\ + asrs r0, 23\n\ + adds r0, r5\n\ + lsls r1, 3\n\ + adds r0, r1\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ + pop {r4-r6}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_080C7FB0: .4byte gUnknown_02038800\n\ +_080C7FB4: .4byte gUnknown_083D613C\n\ +.syntax divided\n"); +} +#endif + +void sub_80C7FB8(u8 a, int b) +{ + struct Sprite *sprite; + + if (gUnknown_020387F0[a] != MAX_SPRITES) + { + sprite = &gSprites[gUnknown_020387F0[a]]; + sprite->data1 = b; + sprite->data2 = sub_80C7A08(a); + } +} + +#ifdef NONMATCHING +u8 sub_80C7FEC(u8 a, s16 b, s16 c) +{ + register const u8(*ptr)[][4] asm("r3"); + + if (a == 2) + ptr = &gUnknown_083D60BC; + else if (a == 1) + ptr = &gUnknown_083D60CC; + else if (a == 3) + ptr = &gUnknown_083D60DC; + else if (a == 4) + ptr = &gUnknown_083D60EC; + else + return 0xFF; + + return (*ptr)[c][b]; +} +#else +__attribute__((naked)) u8 sub_80C7FEC(u8 a, s16 b, s16 c) +{ + asm(".syntax unified\n\ + push {lr}\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r3, r0, 0\n\ + lsls r1, 16\n\ + lsrs r1, 16\n\ + lsls r2, 16\n\ + lsrs r2, 16\n\ + cmp r0, 0x2\n\ + bne _080C8008\n\ + ldr r3, _080C8004 @ =gUnknown_083D60BC\n\ + b _080C802A\n\ + .align 2, 0\n\ +_080C8004: .4byte gUnknown_083D60BC\n\ +_080C8008:\n\ + cmp r0, 0x1\n\ + bne _080C8014\n\ + ldr r3, _080C8010 @ =gUnknown_083D60CC\n\ + b _080C802A\n\ + .align 2, 0\n\ +_080C8010: .4byte gUnknown_083D60CC\n\ +_080C8014:\n\ + cmp r0, 0x3\n\ + bne _080C8020\n\ + ldr r3, _080C801C @ =gUnknown_083D60DC\n\ + b _080C802A\n\ + .align 2, 0\n\ +_080C801C: .4byte gUnknown_083D60DC\n\ +_080C8020:\n\ + cmp r3, 0x4\n\ + beq _080C8028\n\ + movs r0, 0xFF\n\ + b _080C8038\n\ +_080C8028:\n\ + ldr r3, _080C803C @ =gUnknown_083D60EC\n\ +_080C802A:\n\ + lsls r0, r2, 16\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + asrs r0, 14\n\ + adds r0, r1\n\ + adds r0, r3, r0\n\ + ldrb r0, [r0]\n\ +_080C8038:\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_080C803C: .4byte gUnknown_083D60EC\n\ +.syntax divided\n"); +} +#endif + +void sub_80C8040(void) +{ + if (GetCurrentMapRotatingGatePuzzleType()) + { + sub_80C7A80(); + sub_80C79CC(); + } +} + +void RotatingGatePuzzleCameraUpdate(u16 a, u16 b) +{ + if (GetCurrentMapRotatingGatePuzzleType()) + { + sub_80C7ADC(a, b); + sub_80C7DC0(); + } +} + +void sub_80C8080(void) +{ + if (GetCurrentMapRotatingGatePuzzleType()) + { + LoadRotatingGatePics(); + sub_80C7A80(); + sub_80C7ADC(0, 0); + } +} + +bool8 CheckForRotatingGatePuzzleCollision(u8 a, s16 x, s16 y) +{ + int i; + s16 gateX; + s16 gateY; + register u32 check asm("r0"); + int upperNibble; + int lowerNibble; + s16 finalX; + s16 finalY; + + if (!GetCurrentMapRotatingGatePuzzleType()) + { + return 0; + } + + for (i = 0; i < gUnknown_02038804; i++) + { + gateX = gUnknown_02038800[i].pos.x + 7; + gateY = gUnknown_02038800[i].pos.y + 7; + + if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1) + { + finalX = x - gateX + 2; + finalY = y - gateY + 2; + check = sub_80C7FEC(a, finalX, finalY); + + if (check != 255) + { + upperNibble = check >> 4; + lowerNibble = check & 0xF; + + asm("" ::"r"(lowerNibble)); + + if (sub_80C7F64(i, lowerNibble)) + { + if (sub_80C7E8C(i, upperNibble)) + { + sub_80C7FB8(i, upperNibble); + sub_80C7A44(i, upperNibble); + return 0; + } + + return 1; + } + } + } + } + + return 0; +} -- cgit v1.2.3 From 4ccd42ebf610fb1c4e423dbad8674a35ffccc9d2 Mon Sep 17 00:00:00 2001 From: Touched Date: Sun, 25 Jun 2017 21:32:27 +0200 Subject: Decompile data/rotating_gate.s --- data/rotating_gate.s | 311 --------------------------------------- ld_script.txt | 2 +- src/rotating_gate.c | 399 +++++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 357 insertions(+), 355 deletions(-) delete mode 100644 data/rotating_gate.s diff --git a/data/rotating_gate.s b/data/rotating_gate.s deleted file mode 100644 index 06cc64e51..000000000 --- a/data/rotating_gate.s +++ /dev/null @@ -1,311 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 -gUnknown_083D2964:: @ 83D2964 - .byte 12, 0, 5, 0, 3, 0, 0, 0 - .byte 14, 0, 7, 0, 3, 3, 0, 0 - .byte 16, 0, 4, 0, 5, 1, 0, 0 - .byte 15, 0, 14, 0, 1, 0, 0, 0 - .byte 18, 0, 13, 0, 4, 2, 0, 0 - .byte 8, 0, 20, 0, 4, 2, 0, 0 - .byte 16, 0, 20, 0, 7, 1, 0, 0 - - .align 2 -gUnknown_083D299C:: @ 83D299C - .byte 13, 0, 3, 0, 4, 3, 0, 0 - .byte 12, 0, 6, 0, 4, 2, 0, 0 - .byte 3, 0, 6, 0, 4, 2, 0, 0 - .byte 3, 0, 9, 0, 5, 3, 0, 0 - .byte 8, 0, 8, 0, 0, 1, 0, 0 - .byte 2, 0, 12, 0, 6, 2, 0, 0 - .byte 9, 0, 13, 0, 1, 0, 0, 0 - .byte 3, 0, 14, 0, 2, 1, 0, 0 - .byte 9, 0, 15, 0, 3, 2, 0, 0 - .byte 3, 0, 18, 0, 5, 2, 0, 0 - .byte 2, 0, 19, 0, 4, 0, 0, 0 - .byte 5, 0, 21, 0, 0, 0, 0, 0 - .byte 9, 0, 19, 0, 3, 3, 0, 0 - .byte 12, 0, 20, 0, 4, 1, 0, 0 - - .align 2 -RotatingGateTiles_1: @ 83D2A0C - .incbin "graphics/rotating_gates/1.4bpp" - - .align 2 -RotatingGateTiles_2: @ 83D320C - .incbin "graphics/rotating_gates/2.4bpp" - - .align 2 -RotatingGateTiles_3: @ 83D3A0C - .incbin "graphics/rotating_gates/3.4bpp" - - .align 2 -RotatingGateTiles_5: @ 83D420C - .incbin "graphics/rotating_gates/5.4bpp" - - .align 2 -RotatingGateTiles_6: @ 83D4A0C - .incbin "graphics/rotating_gates/6.4bpp" - - .align 2 -RotatingGateTiles_7: @ 83D520C - .incbin "graphics/rotating_gates/7.4bpp" - - .align 2 -RotatingGateTiles_0: @ 83D5A0C - .incbin "graphics/rotating_gates/0.4bpp" - - .align 2 -RotatingGateTiles_4: @ 83D5C0C - .incbin "graphics/rotating_gates/4.4bpp" - - .align 2 -gOamData_83D5E0C:: @ 83D5E0C - .2byte 0x0100 - .2byte 0xC000 - .2byte 0x5800 - - .align 2 -gOamData_83D5E14:: @ 83D5E14 - .2byte 0x0100 - .2byte 0x8000 - .2byte 0x5800 - - .align 2 -gRotatingGatesGraphicsTable:: @ 83D5E1C - obj_tiles RotatingGateTiles_0, 0x200, 0x1300 - obj_tiles RotatingGateTiles_1, 0x800, 0x1301 - obj_tiles RotatingGateTiles_2, 0x800, 0x1302 - obj_tiles RotatingGateTiles_3, 0x800, 0x1303 - obj_tiles RotatingGateTiles_4, 0x200, 0x1304 - obj_tiles RotatingGateTiles_5, 0x800, 0x1305 - obj_tiles RotatingGateTiles_6, 0x800, 0x1306 - obj_tiles RotatingGateTiles_7, 0x800, 0x1307 - null_obj_tiles - - .align 2 -gSpriteAnim_83D5E64:: @ 83D5E64 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnim_83D5E6C:: @ 83D5E6C - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83D5E74:: @ 83D5E74 - .4byte gSpriteAnim_83D5E64 - - .align 2 -gSpriteAnimTable_83D5E78:: @ 83D5E78 - .4byte gSpriteAnim_83D5E6C - - .align 2 -gSpriteAffineAnim_83D5E7C:: @ 83D5E7C - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_83D5E8C:: @ 83D5E8C - obj_rot_scal_anim_frame 0x100, 0x100, -64, 0 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_83D5E9C:: @ 83D5E9C - obj_rot_scal_anim_frame 0x100, 0x100, -128, 0 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_83D5EAC:: @ 83D5EAC - obj_rot_scal_anim_frame 0x100, 0x100, 64, 0 - obj_rot_scal_anim_jump 0 - - .align 2 -gSpriteAffineAnim_83D5EBC:: @ 83D5EBC - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -4, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5ED4:: @ 83D5ED4 - obj_rot_scal_anim_frame 0x100, 0x100, -64, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -4, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5EEC:: @ 83D5EEC - obj_rot_scal_anim_frame 0x100, 0x100, -128, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -4, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5F04:: @ 83D5F04 - obj_rot_scal_anim_frame 0x100, 0x100, 64, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -4, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5F1C:: @ 83D5F1C - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 4, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5F34:: @ 83D5F34 - obj_rot_scal_anim_frame 0x100, 0x100, 64, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 4, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5F4C:: @ 83D5F4C - obj_rot_scal_anim_frame 0x100, 0x100, -128, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 4, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5F64:: @ 83D5F64 - obj_rot_scal_anim_frame 0x100, 0x100, -64, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 4, 16 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5F7C:: @ 83D5F7C - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5F94:: @ 83D5F94 - obj_rot_scal_anim_frame 0x100, 0x100, -64, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5FAC:: @ 83D5FAC - obj_rot_scal_anim_frame 0x100, 0x100, -128, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5FC4:: @ 83D5FC4 - obj_rot_scal_anim_frame 0x100, 0x100, 64, 0 - obj_rot_scal_anim_frame 0x0, 0x0, -8, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5FDC:: @ 83D5FDC - obj_rot_scal_anim_frame 0x100, 0x100, 0, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D5FF4:: @ 83D5FF4 - obj_rot_scal_anim_frame 0x100, 0x100, 64, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D600C:: @ 83D600C - obj_rot_scal_anim_frame 0x100, 0x100, -128, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnim_83D6024:: @ 83D6024 - obj_rot_scal_anim_frame 0x100, 0x100, -64, 0 - obj_rot_scal_anim_frame 0x0, 0x0, 8, 8 - obj_rot_scal_anim_end - - .align 2 -gSpriteAffineAnimTable_83D603C:: @ 83D603C - .4byte gSpriteAffineAnim_83D5E7C - .4byte gSpriteAffineAnim_83D5E8C - .4byte gSpriteAffineAnim_83D5E9C - .4byte gSpriteAffineAnim_83D5EAC - .4byte gSpriteAffineAnim_83D5F1C - .4byte gSpriteAffineAnim_83D5F64 - .4byte gSpriteAffineAnim_83D5F4C - .4byte gSpriteAffineAnim_83D5F34 - .4byte gSpriteAffineAnim_83D5EBC - .4byte gSpriteAffineAnim_83D5ED4 - .4byte gSpriteAffineAnim_83D5EEC - .4byte gSpriteAffineAnim_83D5F04 - .4byte gSpriteAffineAnim_83D5FDC - .4byte gSpriteAffineAnim_83D6024 - .4byte gSpriteAffineAnim_83D600C - .4byte gSpriteAffineAnim_83D5FF4 - .4byte gSpriteAffineAnim_83D5F7C - .4byte gSpriteAffineAnim_83D5F94 - .4byte gSpriteAffineAnim_83D5FAC - .4byte gSpriteAffineAnim_83D5FC4 - - .align 2 -gSpriteTemplate_83D608C:: @ 83D608C - spr_template 4864, 0xFFFF, gOamData_83D5E0C, gSpriteAnimTable_83D5E74, NULL, gSpriteAffineAnimTable_83D603C, sub_80C7C94 - - .align 2 -gSpriteTemplate_83D60A4:: @ 83D60A4 - spr_template 4864, 0xFFFF, gOamData_83D5E14, gSpriteAnimTable_83D5E78, NULL, gSpriteAffineAnimTable_83D603C, sub_80C7C94 - -gUnknown_083D60BC:: @ 83D60BC - .byte 255, 255, 255, 255 - .byte 39, 38, 18, 19 - .byte 255, 255, 255, 255 - .byte 255, 255, 255, 255 - -gUnknown_083D60CC:: @ 83D60CC - .byte 255, 255, 255, 255 - .byte 255, 255, 255, 255 - .byte 23, 22, 34, 35 - .byte 255, 255, 255, 255 - -gUnknown_083D60DC:: @ 83D60DC - .byte 255, 17, 255, 255 - .byte 255, 16, 255, 255 - .byte 255, 36, 255, 255 - .byte 255, 37, 255, 255 - -gUnknown_083D60EC:: @ 83D60EC - .byte 255, 255, 33, 255 - .byte 255, 255, 32, 255 - .byte 255, 255, 20, 255 - .byte 255, 255, 21, 255 - -gUnknown_083D60FC:: @ 83D60FC - .byte 0, -1, 0, 0 - .byte 1, -2, 0, 0 - .byte 0, 0, 0, 0 - .byte 1, 0, 0, 0 - .byte -1, 0, 0, 0 - .byte -1, 1, 0, 0 - .byte -1, -1, 0, 0 - .byte -2, -1, 0, 0 - -gUnknown_083D611C:: @ 83D611C - .byte -1, -1, 0, 0 - .byte -1, -2, 0, 0 - .byte 0, -1, 0, 0 - .byte 1, -1, 0, 0 - .byte 0, 0, 0, 0 - .byte 0, 1, 0, 0 - .byte -1, 0, 0, 0 - .byte -2, 0, 0, 0 - - .align 2 -gUnknown_083D613C:: @ 83D613C - .byte 1, 0, 1, 0, 0, 0, 0, 0 - .byte 1, 1, 1, 0, 0, 0, 0, 0 - .byte 1, 0, 1, 1, 0, 0, 0, 0 - .byte 1, 1, 1, 1, 0, 0, 0, 0 - .byte 1, 0, 1, 0, 1, 0, 0, 0 - .byte 1, 1, 1, 0, 1, 0, 0, 0 - .byte 1, 0, 1, 1, 1, 0, 0, 0 - .byte 1, 0, 1, 0, 1, 1, 0, 0 - .byte 1, 1, 1, 1, 1, 0, 0, 0 - .byte 1, 1, 1, 0, 1, 1, 0, 0 - .byte 1, 0, 1, 1, 1, 1, 0, 0 - .byte 1, 1, 1, 1, 1, 1, 0, 0 diff --git a/ld_script.txt b/ld_script.txt index ed4f0c85a..05ebaa127 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -417,7 +417,7 @@ SECTIONS { data/fldeff_80C5CD4.o(.rodata); src/field_special_scene.o(.rodata); data/field_special_scene.o(.rodata); - data/rotating_gate.o(.rodata); + src/rotating_gate.o(.rodata); src/item_use.o(.rodata); data/battle_anim_80CA710.o(.rodata); src/bike.o(.rodata); diff --git a/src/rotating_gate.c b/src/rotating_gate.c index f8e5fac21..e22be3221 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -22,25 +22,338 @@ struct UnknownStruct2 u8 d; }; -extern const struct SpriteSheet gRotatingGatesGraphicsTable[]; -extern /* const */ struct UnknownStruct gUnknown_083D2964[]; -extern /* const */ struct UnknownStruct gUnknown_083D299C[]; -extern const struct SpriteTemplate gSpriteTemplate_83D60A4; -extern const struct SpriteTemplate gSpriteTemplate_83D608C; +static const struct UnknownStruct sUnknown_083D2964[] = { + { { 12, 5 }, 3, 0, 0, 0 }, + { { 14, 7 }, 3, 3, 0, 0 }, + { { 16, 4 }, 5, 1, 0, 0 }, + { { 15, 14 }, 1, 0, 0, 0 }, + { { 18, 13 }, 4, 2, 0, 0 }, + { { 8, 20 }, 4, 2, 0, 0 }, + { { 16, 20 }, 7, 1, 0, 0 }, +}; -extern u8 gUnknown_020387F0[10]; // puzzle oam ID list +static const struct UnknownStruct sUnknown_083D299C[] = { + { { 13, 3 }, 4, 3, 0, 0 }, + { { 12, 6 }, 4, 2, 0, 0 }, + { { 3, 6 }, 4, 2, 0, 0 }, + { { 3, 9 }, 5, 3, 0, 0 }, + { { 8, 8 }, 0, 1, 0, 0 }, + { { 2, 12 }, 6, 2, 0, 0 }, + { { 9, 13 }, 1, 0, 0, 0 }, + { { 3, 14 }, 2, 1, 0, 0 }, + { { 9, 15 }, 3, 2, 0, 0 }, + { { 3, 18 }, 5, 2, 0, 0 }, + { { 2, 19 }, 4, 0, 0, 0 }, + { { 5, 21 }, 0, 0, 0, 0 }, + { { 9, 19 }, 3, 3, 0, 0 }, + { { 12, 20 }, 4, 1, 0, 0 }, +}; -extern struct UnknownStruct *gUnknown_02038800; -extern u8 gUnknown_02038804; // puzzle count +static const u8 RotatingGateTiles_1[] = INCBIN_U8("graphics/rotating_gates/1.4bpp"); +static const u8 RotatingGateTiles_2[] = INCBIN_U8("graphics/rotating_gates/2.4bpp"); +static const u8 RotatingGateTiles_3[] = INCBIN_U8("graphics/rotating_gates/3.4bpp"); +static const u8 RotatingGateTiles_5[] = INCBIN_U8("graphics/rotating_gates/5.4bpp"); +static const u8 RotatingGateTiles_6[] = INCBIN_U8("graphics/rotating_gates/6.4bpp"); +static const u8 RotatingGateTiles_7[] = INCBIN_U8("graphics/rotating_gates/7.4bpp"); +static const u8 RotatingGateTiles_0[] = INCBIN_U8("graphics/rotating_gates/0.4bpp"); +static const u8 RotatingGateTiles_4[] = INCBIN_U8("graphics/rotating_gates/4.4bpp"); + +static const struct OamData gOamData_83D5E0C = { + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = 0, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 2, + .paletteNum = 5, + .affineParam = 0, +}; + +// Smaller +static const struct OamData gOamData_83D5E14 = { + .y = 0, + .affineMode = ST_OAM_AFFINE_NORMAL, + .objMode = 0, + .mosaic = 0, + .bpp = ST_OAM_4BPP, + .shape = ST_OAM_SQUARE, + .x = 0, + .matrixNum = 0, + .size = 2, + .tileNum = 0, + .priority = 2, + .paletteNum = 5, + .affineParam = 0, +}; + +static const struct SpriteSheet gRotatingGatesGraphicsTable[] = { + { RotatingGateTiles_0, 0x200, 0x1300 }, + { RotatingGateTiles_1, 0x800, 0x1301 }, + { RotatingGateTiles_2, 0x800, 0x1302 }, + { RotatingGateTiles_3, 0x800, 0x1303 }, + { RotatingGateTiles_4, 0x200, 0x1304 }, + { RotatingGateTiles_5, 0x800, 0x1305 }, + { RotatingGateTiles_6, 0x800, 0x1306 }, + { RotatingGateTiles_7, 0x800, 0x1307 }, + { NULL }, +}; + +static const union AnimCmd gSpriteAnim_83D5E64[] = { + ANIMCMD_FRAME(0, 0), ANIMCMD_END, +}; + +static const union AnimCmd gSpriteAnim_83D5E6C[] = { + ANIMCMD_FRAME(0, 0), ANIMCMD_END, +}; + +static const union AnimCmd *const gSpriteAnimTable_83D5E74[] = { + gSpriteAnim_83D5E64, +}; + +static const union AnimCmd *const gSpriteAnimTable_83D5E78[] = { + gSpriteAnim_83D5E6C, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5E7C[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5E8C[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5E9C[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_JUMP(0), +}; -extern struct UnknownStruct2 gUnknown_083D611C[5]; -extern struct UnknownStruct2 gUnknown_083D60FC[5]; -extern const u8 gUnknown_083D613C[12][8]; +static const union AffineAnimCmd gSpriteAffineAnim_83D5EAC[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_JUMP(0), +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5EBC[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5ED4[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5EEC[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5F04[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5F1C[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5F34[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5F4C[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5F64[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5F7C[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5F94[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5FAC[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), + AFFINEANIMCMD_END, +}; -extern const u8 gUnknown_083D60BC[4][4]; -extern const u8 gUnknown_083D60CC[4][4]; -extern const u8 gUnknown_083D60DC[4][4]; -extern const u8 gUnknown_083D60EC[4][4]; +static const union AffineAnimCmd gSpriteAffineAnim_83D5FC4[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5FDC[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D5FF4[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D600C[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd gSpriteAffineAnim_83D6024[] = { + AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), + AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), + AFFINEANIMCMD_END, +}; + +static const union AffineAnimCmd *const gSpriteAffineAnimTable_83D603C[] = { + gSpriteAffineAnim_83D5E7C, + gSpriteAffineAnim_83D5E8C, + gSpriteAffineAnim_83D5E9C, + gSpriteAffineAnim_83D5EAC, + gSpriteAffineAnim_83D5F1C, + gSpriteAffineAnim_83D5F64, + gSpriteAffineAnim_83D5F4C, + gSpriteAffineAnim_83D5F34, + gSpriteAffineAnim_83D5EBC, + gSpriteAffineAnim_83D5ED4, + gSpriteAffineAnim_83D5EEC, + gSpriteAffineAnim_83D5F04, + gSpriteAffineAnim_83D5FDC, + gSpriteAffineAnim_83D6024, + gSpriteAffineAnim_83D600C, + gSpriteAffineAnim_83D5FF4, + gSpriteAffineAnim_83D5F7C, + gSpriteAffineAnim_83D5F94, + gSpriteAffineAnim_83D5FAC, + gSpriteAffineAnim_83D5FC4, +}; + +void sub_80C7C94(struct Sprite *sprite); + +static const struct SpriteTemplate gSpriteTemplate_83D608C = { + .tileTag = 4864, + .paletteTag = 0xFFFF, + .oam = &gOamData_83D5E0C, + .anims = gSpriteAnimTable_83D5E74, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D603C, + .callback = sub_80C7C94, +}; + +static const struct SpriteTemplate gSpriteTemplate_83D60A4 = { + .tileTag = 4864, + .paletteTag = 0xFFFF, + .oam = &gOamData_83D5E14, + .anims = gSpriteAnimTable_83D5E78, + .images = NULL, + .affineAnims = gSpriteAffineAnimTable_83D603C, + .callback = sub_80C7C94, +}; + +static const u8 sUnknown_083D60BC[4][4] = { + { 255, 255, 255, 255 }, { 39, 38, 18, 19 }, { 255, 255, 255, 255 }, { 255, 255, 255, 255 }, +}; + +static const u8 sUnknown_083D60CC[4][4] = { + { 255, 255, 255, 255 }, { 255, 255, 255, 255 }, { 23, 22, 34, 35 }, { 255, 255, 255, 255 }, +}; + +static const u8 sUnknown_083D60DC[4][4] = { + { 255, 17, 255, 255 }, { 255, 16, 255, 255 }, { 255, 36, 255, 255 }, { 255, 37, 255, 255 }, +}; + +static const u8 sUnknown_083D60EC[4][4] = { + { 255, 255, 33, 255 }, { 255, 255, 32, 255 }, { 255, 255, 20, 255 }, { 255, 255, 21, 255 }, +}; + +static const struct UnknownStruct2 sUnknown_083D60FC[] = { + { 0, -1, 0, 0 }, + { 1, -2, 0, 0 }, + { 0, 0, 0, 0 }, + { 1, 0, 0, 0 }, + { -1, 0, 0, 0 }, + { -1, 1, 0, 0 }, + { -1, -1, 0, 0 }, + { -2, -1, 0, 0 }, +}; + +static const struct UnknownStruct2 sUnknown_083D611C[] = { + { -1, -1, 0, 0 }, + { -1, -2, 0, 0 }, + { 0, -1, 0, 0 }, + { 1, -1, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 1, 0, 0 }, + { -1, 0, 0, 0 }, + { -2, 0, 0, 0 }, +}; + +static const u8 sUnknown_083D613C[12][8] = { + { + 1, 0, 1, 0, 0, 0, 0, 0, + }, + { + 1, 1, 1, 0, 0, 0, 0, 0, + }, + { + 1, 0, 1, 1, 0, 0, 0, 0, + }, + { + 1, 1, 1, 1, 0, 0, 0, 0, + }, + { + 1, 0, 1, 0, 1, 0, 0, 0, + }, + { + 1, 1, 1, 0, 1, 0, 0, 0, + }, + { + 1, 0, 1, 1, 1, 0, 0, 0, + }, + { + 1, 0, 1, 0, 1, 1, 0, 0, + }, + { + 1, 1, 1, 1, 1, 0, 0, 0, + }, + { + 1, 1, 1, 0, 1, 1, 0, 0, + }, + { + 1, 0, 1, 1, 1, 1, 0, 0, + }, + { + 1, 1, 1, 1, 1, 1, 0, 0, + }, +}; + +extern u8 gUnknown_020387F0[10]; // puzzle oam ID list +extern const struct UnknownStruct *gUnknown_02038800; +extern u8 gUnknown_02038804; // puzzle count u8 sub_80C7BAC(u8 i, s16 a, s16 b); void sub_8060388(s16 x, s16 y, s16 *outX, s16 *outY); @@ -125,11 +438,11 @@ void sub_80C7A80(void) switch (a) { case 1: - gUnknown_02038800 = gUnknown_083D2964; + gUnknown_02038800 = sUnknown_083D2964; gUnknown_02038804 = 7; break; case 2: - gUnknown_02038800 = gUnknown_083D299C; + gUnknown_02038800 = sUnknown_083D299C; gUnknown_02038804 = 0xE; break; case 0: @@ -170,7 +483,7 @@ u8 sub_80C7BAC(u8 i, s16 a, s16 b) { struct Sprite *sprite; // r4 struct SpriteTemplate template; - struct UnknownStruct *unk; + const struct UnknownStruct *unk; u8 id; // r5 s16 x, y; @@ -312,7 +625,7 @@ void sub_80C7DC0(void) #ifdef NONMATCHING int sub_80C7E8C(u8 a, int puzzleType) { - struct UnknownStruct2 *unk1; + const struct UnknownStruct2 *unk1; u8 unk2; s16 x; s16 y; @@ -326,9 +639,9 @@ int sub_80C7E8C(u8 a, int puzzleType) int wat; if (puzzleType == 1) - unk1 = gUnknown_083D611C; + unk1 = sUnknown_083D611C; else if (puzzleType == 2) - unk1 = gUnknown_083D60FC; + unk1 = sUnknown_083D60FC; else return 0; @@ -343,7 +656,7 @@ int sub_80C7E8C(u8 a, int puzzleType) j = 0; unk4 = unk2 + i; wat = unk2 + i; - unk5 = &gUnknown_083D613C[unk3][i * 2]; + unk5 = &sUnknown_083D613C[unk3][i * 2]; for (; j <= 1; j++) { @@ -378,11 +691,11 @@ __attribute__((naked)) int sub_80C7E8C(u8 a, int puzzleType) lsrs r4, r0, 24\n\ cmp r1, 0x1\n\ bne _080C7EAC\n\ - ldr r0, _080C7EA8 @ =gUnknown_083D611C\n\ + ldr r0, _080C7EA8 @ =sUnknown_083D611C\n\ mov r10, r0\n\ b _080C7EB8\n\ .align 2, 0\n\ -_080C7EA8: .4byte gUnknown_083D611C\n\ +_080C7EA8: .4byte sUnknown_083D611C\n\ _080C7EAC:\n\ cmp r1, 0x2\n\ beq _080C7EB4\n\ @@ -390,7 +703,7 @@ _080C7EB0:\n\ movs r0, 0\n\ b _080C7F48\n\ _080C7EB4:\n\ - ldr r1, _080C7F58 @ =gUnknown_083D60FC\n\ + ldr r1, _080C7F58 @ =sUnknown_083D60FC\n\ mov r10, r1\n\ _080C7EB8:\n\ adds r0, r4, 0\n\ @@ -424,7 +737,7 @@ _080C7EE8:\n\ adds r5, r7, 0\n\ ldr r1, [sp, 0x4]\n\ adds r0, r1\n\ - ldr r2, _080C7F60 @ =gUnknown_083D613C\n\ + ldr r2, _080C7F60 @ =sUnknown_083D613C\n\ adds r4, r0, r2\n\ _080C7EFA:\n\ adds r0, r5, 0\n\ @@ -477,9 +790,9 @@ _080C7F48:\n\ pop {r1}\n\ bx r1\n\ .align 2, 0\n\ -_080C7F58: .4byte gUnknown_083D60FC\n\ +_080C7F58: .4byte sUnknown_083D60FC\n\ _080C7F5C: .4byte gUnknown_02038800\n\ -_080C7F60: .4byte gUnknown_083D613C\n\ +_080C7F60: .4byte sUnknown_083D613C\n\ .syntax divided\n"); } #endif @@ -500,7 +813,7 @@ int sub_80C7F64(u8 a, u8 b) unk7 = unk2 < 0 ? unk2 + 3 : unk2; unk4 = (unk7 - ((unk7 >> 2) << 2)); unk6 = gUnknown_02038800[a].e; - return gUnknown_083D613C[unk6][(s8)unk4 * 2 + unk1]; + return sUnknown_083D613C[unk6][(s8)unk4 * 2 + unk1]; } #else __attribute__((naked)) int sub_80C7F64(u8 a, u8 b) @@ -533,7 +846,7 @@ _080C7F8A:\n\ lsls r1, r6, 3\n\ adds r1, r2\n\ ldrb r1, [r1, 0x4]\n\ - ldr r2, _080C7FB4 @ =gUnknown_083D613C\n\ + ldr r2, _080C7FB4 @ =sUnknown_083D613C\n\ lsls r0, 24\n\ asrs r0, 23\n\ adds r0, r5\n\ @@ -546,7 +859,7 @@ _080C7F8A:\n\ bx r1\n\ .align 2, 0\n\ _080C7FB0: .4byte gUnknown_02038800\n\ -_080C7FB4: .4byte gUnknown_083D613C\n\ +_080C7FB4: .4byte sUnknown_083D613C\n\ .syntax divided\n"); } #endif @@ -569,13 +882,13 @@ u8 sub_80C7FEC(u8 a, s16 b, s16 c) register const u8(*ptr)[][4] asm("r3"); if (a == 2) - ptr = &gUnknown_083D60BC; + ptr = &sUnknown_083D60BC; else if (a == 1) - ptr = &gUnknown_083D60CC; + ptr = &sUnknown_083D60CC; else if (a == 3) - ptr = &gUnknown_083D60DC; + ptr = &sUnknown_083D60DC; else if (a == 4) - ptr = &gUnknown_083D60EC; + ptr = &sUnknown_083D60EC; else return 0xFF; @@ -595,31 +908,31 @@ __attribute__((naked)) u8 sub_80C7FEC(u8 a, s16 b, s16 c) lsrs r2, 16\n\ cmp r0, 0x2\n\ bne _080C8008\n\ - ldr r3, _080C8004 @ =gUnknown_083D60BC\n\ + ldr r3, _080C8004 @ =sUnknown_083D60BC\n\ b _080C802A\n\ .align 2, 0\n\ -_080C8004: .4byte gUnknown_083D60BC\n\ +_080C8004: .4byte sUnknown_083D60BC\n\ _080C8008:\n\ cmp r0, 0x1\n\ bne _080C8014\n\ - ldr r3, _080C8010 @ =gUnknown_083D60CC\n\ + ldr r3, _080C8010 @ =sUnknown_083D60CC\n\ b _080C802A\n\ .align 2, 0\n\ -_080C8010: .4byte gUnknown_083D60CC\n\ +_080C8010: .4byte sUnknown_083D60CC\n\ _080C8014:\n\ cmp r0, 0x3\n\ bne _080C8020\n\ - ldr r3, _080C801C @ =gUnknown_083D60DC\n\ + ldr r3, _080C801C @ =sUnknown_083D60DC\n\ b _080C802A\n\ .align 2, 0\n\ -_080C801C: .4byte gUnknown_083D60DC\n\ +_080C801C: .4byte sUnknown_083D60DC\n\ _080C8020:\n\ cmp r3, 0x4\n\ beq _080C8028\n\ movs r0, 0xFF\n\ b _080C8038\n\ _080C8028:\n\ - ldr r3, _080C803C @ =gUnknown_083D60EC\n\ + ldr r3, _080C803C @ =sUnknown_083D60EC\n\ _080C802A:\n\ lsls r0, r2, 16\n\ lsls r1, 16\n\ @@ -632,7 +945,7 @@ _080C8038:\n\ pop {r1}\n\ bx r1\n\ .align 2, 0\n\ -_080C803C: .4byte gUnknown_083D60EC\n\ +_080C803C: .4byte sUnknown_083D60EC\n\ .syntax divided\n"); } #endif -- cgit v1.2.3 From a27a90423d9e46461e803f9049fb4b90600c5003 Mon Sep 17 00:00:00 2001 From: Touched Date: Mon, 26 Jun 2017 15:08:59 +0200 Subject: Label rotating_gate.c --- src/rotating_gate.c | 902 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 549 insertions(+), 353 deletions(-) diff --git a/src/rotating_gate.c b/src/rotating_gate.c index e22be3221..665a16ae4 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -1,64 +1,236 @@ #include "global.h" #include "bike.h" #include "event_data.h" +#include "field_map_obj.h" #include "fieldmap.h" +#include "map_constants.h" +#include "songs.h" #include "sound.h" #include "sprite.h" -struct UnknownStruct +#define ROTATING_GATE_TILE_TAG 0x1300 +#define ROTATING_GATE_PUZZLE_MAX 14 +#define GATE_ARM_MAX_LENGTH 2 + +#define GATE_ROTATION(rotationDirection, arm, longArm) \ + ((rotationDirection & 15) << 4) | ((arm & 7) << 1) | (longArm & 1) +#define GATE_ROTATION_CLOCKWISE(arm, longArm) GATE_ROTATION(ROTATE_CLOCKWISE, arm, longArm) +#define GATE_ROTATION_ANTICLOCKWISE(arm, longArm) GATE_ROTATION(ROTATE_ANTICLOCKWISE, arm, longArm) +#define GATE_ROTATION_NONE 255 + +static void SpriteCallback_RotatingGate(struct Sprite *sprite); +static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY); +static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite); + +enum +{ + /* + * | + * +-- + */ + GATE_SHAPE_L1, + + /* + * | + * | + * +-- + */ + GATE_SHAPE_L2, + + /* + * | + * +---- + */ + GATE_SHAPE_L3, + + /* + * | + * | + * +---- + */ + GATE_SHAPE_L4, + + /* + * | + * +-- + * | + */ + GATE_SHAPE_T1, + + /* + * | + * | + * +-- + * | + */ + GATE_SHAPE_T2, + + /* + * | + * +---- + * | + */ + GATE_SHAPE_T3, + + /* + * An unused T-shape gate + * | + * +-- + * | + * | + */ + GATE_SHAPE_T4, + + /* + * An unused T-shape gate + * | + * | + * +---- + * | + */ + GATE_SHAPE_UNUSED_T1, + + /* + * An unused T-shape gate + * | + * | + * +-- + * | + * | + */ + GATE_SHAPE_UNUSED_T2, + + /* + * An unused T-shape gate + * | + * +---- + * | + * | + */ + GATE_SHAPE_UNUSED_T3, + + /* + * An unused T-shape gate + * | + * | + * +---- + * | + * | + */ + GATE_SHAPE_UNUSED_T4, +}; + +enum +{ + /* + * 0 degrees (clockwise) + * | + * +-- + * | + */ + GATE_ORIENTATION_0, + + /* + * 90 degress (clockwise) + * --+-- + * | + */ + GATE_ORIENTATION_90, + + /* + * 180 degrees (clockwise) + * | + * --+ + * | + */ + GATE_ORIENTATION_180, + + /* + * 270 degrees (clockwise) + * | + * --+-- + */ + GATE_ORIENTATION_270, + + GATE_ORIENTATION_MAX, +}; + +// Describes the location of the gates "arms" when the gate has not +// been rotated (i.e. rotated 0 degrees) +enum +{ + GATE_ARM_NORTH, + GATE_ARM_EAST, + GATE_ARM_SOUTH, + GATE_ARM_WEST, +}; + +enum +{ + ROTATE_NONE, + ROTATE_ANTICLOCKWISE, + ROTATE_CLOCKWISE, +}; + +enum +{ + PUZZLE_NONE, + PUZZLE_FORTREE_CITY_GYM, + PUZZLE_ROUTE110_TRICK_HOUSE_PUZZLE6, +}; + +struct RotatingGatePuzzle { - /* 0x0 */ struct Coords16 pos; - /* 0x4 */ u8 e; - /* 0x5 */ u8 f; - /* 0x6 */ u8 g; - /* 0x7 */ u8 h; + struct Coords16 pos; + u8 shape; + u8 orientation; }; -struct UnknownStruct2 +struct Coords8 { - s8 a; - s8 b; - u8 c; - u8 d; + s8 deltaX; + s8 deltaY; }; -static const struct UnknownStruct sUnknown_083D2964[] = { - { { 12, 5 }, 3, 0, 0, 0 }, - { { 14, 7 }, 3, 3, 0, 0 }, - { { 16, 4 }, 5, 1, 0, 0 }, - { { 15, 14 }, 1, 0, 0, 0 }, - { { 18, 13 }, 4, 2, 0, 0 }, - { { 8, 20 }, 4, 2, 0, 0 }, - { { 16, 20 }, 7, 1, 0, 0 }, +// Fortree +static const struct RotatingGatePuzzle sRotatingGate_FortreePuzzleConfig[] = { + { { 12, 5 }, GATE_SHAPE_L4, GATE_ORIENTATION_0 }, + { { 14, 7 }, GATE_SHAPE_L4, GATE_ORIENTATION_270 }, + { { 16, 4 }, GATE_SHAPE_T2, GATE_ORIENTATION_90 }, + { { 15, 14 }, GATE_SHAPE_L2, GATE_ORIENTATION_0 }, + { { 18, 13 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, + { { 8, 20 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, + { { 16, 20 }, GATE_SHAPE_T4, GATE_ORIENTATION_90 }, }; -static const struct UnknownStruct sUnknown_083D299C[] = { - { { 13, 3 }, 4, 3, 0, 0 }, - { { 12, 6 }, 4, 2, 0, 0 }, - { { 3, 6 }, 4, 2, 0, 0 }, - { { 3, 9 }, 5, 3, 0, 0 }, - { { 8, 8 }, 0, 1, 0, 0 }, - { { 2, 12 }, 6, 2, 0, 0 }, - { { 9, 13 }, 1, 0, 0, 0 }, - { { 3, 14 }, 2, 1, 0, 0 }, - { { 9, 15 }, 3, 2, 0, 0 }, - { { 3, 18 }, 5, 2, 0, 0 }, - { { 2, 19 }, 4, 0, 0, 0 }, - { { 5, 21 }, 0, 0, 0, 0 }, - { { 9, 19 }, 3, 3, 0, 0 }, - { { 12, 20 }, 4, 1, 0, 0 }, +// Trickhouse +static const struct RotatingGatePuzzle sRotatingGate_TrickHousePuzzleConfig[] = { + { { 13, 3 }, GATE_SHAPE_T1, GATE_ORIENTATION_270 }, + { { 12, 6 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, + { { 3, 6 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 }, + { { 3, 9 }, GATE_SHAPE_T2, GATE_ORIENTATION_270 }, + { { 8, 8 }, GATE_SHAPE_L1, GATE_ORIENTATION_90 }, + { { 2, 12 }, GATE_SHAPE_T3, GATE_ORIENTATION_180 }, + { { 9, 13 }, GATE_SHAPE_L2, GATE_ORIENTATION_0 }, + { { 3, 14 }, GATE_SHAPE_L3, GATE_ORIENTATION_90 }, + { { 9, 15 }, GATE_SHAPE_L4, GATE_ORIENTATION_180 }, + { { 3, 18 }, GATE_SHAPE_T2, GATE_ORIENTATION_180 }, + { { 2, 19 }, GATE_SHAPE_T1, GATE_ORIENTATION_0 }, + { { 5, 21 }, GATE_SHAPE_L1, GATE_ORIENTATION_0 }, + { { 9, 19 }, GATE_SHAPE_L4, GATE_ORIENTATION_270 }, + { { 12, 20 }, GATE_SHAPE_T1, GATE_ORIENTATION_90 }, }; -static const u8 RotatingGateTiles_1[] = INCBIN_U8("graphics/rotating_gates/1.4bpp"); -static const u8 RotatingGateTiles_2[] = INCBIN_U8("graphics/rotating_gates/2.4bpp"); -static const u8 RotatingGateTiles_3[] = INCBIN_U8("graphics/rotating_gates/3.4bpp"); -static const u8 RotatingGateTiles_5[] = INCBIN_U8("graphics/rotating_gates/5.4bpp"); -static const u8 RotatingGateTiles_6[] = INCBIN_U8("graphics/rotating_gates/6.4bpp"); -static const u8 RotatingGateTiles_7[] = INCBIN_U8("graphics/rotating_gates/7.4bpp"); -static const u8 RotatingGateTiles_0[] = INCBIN_U8("graphics/rotating_gates/0.4bpp"); -static const u8 RotatingGateTiles_4[] = INCBIN_U8("graphics/rotating_gates/4.4bpp"); +static const u8 sRotatingGateTiles_1[] = INCBIN_U8("graphics/rotating_gates/1.4bpp"); +static const u8 sRotatingGateTiles_2[] = INCBIN_U8("graphics/rotating_gates/2.4bpp"); +static const u8 sRotatingGateTiles_3[] = INCBIN_U8("graphics/rotating_gates/3.4bpp"); +static const u8 sRotatingGateTiles_5[] = INCBIN_U8("graphics/rotating_gates/5.4bpp"); +static const u8 sRotatingGateTiles_6[] = INCBIN_U8("graphics/rotating_gates/6.4bpp"); +static const u8 sRotatingGateTiles_7[] = INCBIN_U8("graphics/rotating_gates/7.4bpp"); +static const u8 sRotatingGateTiles_0[] = INCBIN_U8("graphics/rotating_gates/0.4bpp"); +static const u8 sRotatingGateTiles_4[] = INCBIN_U8("graphics/rotating_gates/4.4bpp"); -static const struct OamData gOamData_83D5E0C = { +static const struct OamData sOamData_RotatingGateLarge = { .y = 0, .affineMode = ST_OAM_AFFINE_NORMAL, .objMode = 0, @@ -74,8 +246,7 @@ static const struct OamData gOamData_83D5E0C = { .affineParam = 0, }; -// Smaller -static const struct OamData gOamData_83D5E14 = { +static const struct OamData sOamData_RotatingGateRegular = { .y = 0, .affineMode = ST_OAM_AFFINE_NORMAL, .objMode = 0, @@ -91,291 +262,331 @@ static const struct OamData gOamData_83D5E14 = { .affineParam = 0, }; -static const struct SpriteSheet gRotatingGatesGraphicsTable[] = { - { RotatingGateTiles_0, 0x200, 0x1300 }, - { RotatingGateTiles_1, 0x800, 0x1301 }, - { RotatingGateTiles_2, 0x800, 0x1302 }, - { RotatingGateTiles_3, 0x800, 0x1303 }, - { RotatingGateTiles_4, 0x200, 0x1304 }, - { RotatingGateTiles_5, 0x800, 0x1305 }, - { RotatingGateTiles_6, 0x800, 0x1306 }, - { RotatingGateTiles_7, 0x800, 0x1307 }, +static const struct SpriteSheet sRotatingGatesGraphicsTable[] = { + { sRotatingGateTiles_0, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L1 }, + { sRotatingGateTiles_1, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L2 }, + { sRotatingGateTiles_2, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L3 }, + { sRotatingGateTiles_3, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L4 }, + { sRotatingGateTiles_4, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T1 }, + { sRotatingGateTiles_5, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T2 }, + { sRotatingGateTiles_6, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T3 }, + { sRotatingGateTiles_7, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T4 }, { NULL }, }; -static const union AnimCmd gSpriteAnim_83D5E64[] = { +static const union AnimCmd sSpriteAnim_RotatingGateLarge[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END, }; -static const union AnimCmd gSpriteAnim_83D5E6C[] = { +static const union AnimCmd sSpriteAnim_RotatingGateRegular[] = { ANIMCMD_FRAME(0, 0), ANIMCMD_END, }; -static const union AnimCmd *const gSpriteAnimTable_83D5E74[] = { - gSpriteAnim_83D5E64, +static const union AnimCmd *const sSpriteAnimTable_RotatingGateLarge[] = { + sSpriteAnim_RotatingGateLarge, }; -static const union AnimCmd *const gSpriteAnimTable_83D5E78[] = { - gSpriteAnim_83D5E6C, +static const union AnimCmd *const sSpriteAnimTable_RotatingGateRegular[] = { + sSpriteAnim_RotatingGateRegular, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5E7C[] = { +static const union AffineAnimCmd sSpriteAffineAnim_Rotated0[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5E8C[] = { +static const union AffineAnimCmd sSpriteAffineAnim_Rotated90[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5E9C[] = { +static const union AffineAnimCmd sSpriteAffineAnim_Rotated180[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5EAC[] = { +static const union AffineAnimCmd sSpriteAffineAnim_Rotated270[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5EBC[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5ED4[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5EEC[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5F04[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5F1C[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5F34[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5F4C[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5F64[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5F7C[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90Faster[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5F94[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180Faster[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5FAC[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270Faster[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5FC4[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360Faster[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5FDC[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270Faster[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D5FF4[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180Faster[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D600C[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90Faster[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd gSpriteAffineAnim_83D6024[] = { +static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0Faster[] = { AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const gSpriteAffineAnimTable_83D603C[] = { - gSpriteAffineAnim_83D5E7C, - gSpriteAffineAnim_83D5E8C, - gSpriteAffineAnim_83D5E9C, - gSpriteAffineAnim_83D5EAC, - gSpriteAffineAnim_83D5F1C, - gSpriteAffineAnim_83D5F64, - gSpriteAffineAnim_83D5F4C, - gSpriteAffineAnim_83D5F34, - gSpriteAffineAnim_83D5EBC, - gSpriteAffineAnim_83D5ED4, - gSpriteAffineAnim_83D5EEC, - gSpriteAffineAnim_83D5F04, - gSpriteAffineAnim_83D5FDC, - gSpriteAffineAnim_83D6024, - gSpriteAffineAnim_83D600C, - gSpriteAffineAnim_83D5FF4, - gSpriteAffineAnim_83D5F7C, - gSpriteAffineAnim_83D5F94, - gSpriteAffineAnim_83D5FAC, - gSpriteAffineAnim_83D5FC4, +static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = { + sSpriteAffineAnim_Rotated0, + sSpriteAffineAnim_Rotated90, + sSpriteAffineAnim_Rotated180, + sSpriteAffineAnim_Rotated270, + sSpriteAffineAnim_RotatingAnticlockwise360to270, + sSpriteAffineAnim_RotatingAnticlockwise90to0, + sSpriteAffineAnim_RotatingAnticlockwise180to90, + sSpriteAffineAnim_RotatingAnticlockwise270to180, + sSpriteAffineAnim_RotatingClockwise0to90, + sSpriteAffineAnim_RotatingClockwise90to180, + sSpriteAffineAnim_RotatingClockwise180to270, + sSpriteAffineAnim_RotatingClockwise270to360, + sSpriteAffineAnim_RotatingAnticlockwise360to270Faster, + sSpriteAffineAnim_RotatingAnticlockwise90to0Faster, + sSpriteAffineAnim_RotatingAnticlockwise180to90Faster, + sSpriteAffineAnim_RotatingAnticlockwise270to180Faster, + sSpriteAffineAnim_RotatingClockwise0to90Faster, + sSpriteAffineAnim_RotatingClockwise90to180Faster, + sSpriteAffineAnim_RotatingClockwise180to270Faster, + sSpriteAffineAnim_RotatingClockwise270to360Faster, }; -void sub_80C7C94(struct Sprite *sprite); - -static const struct SpriteTemplate gSpriteTemplate_83D608C = { - .tileTag = 4864, +static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = { + .tileTag = ROTATING_GATE_TILE_TAG, .paletteTag = 0xFFFF, - .oam = &gOamData_83D5E0C, - .anims = gSpriteAnimTable_83D5E74, + .oam = &sOamData_RotatingGateLarge, + .anims = sSpriteAnimTable_RotatingGateLarge, .images = NULL, - .affineAnims = gSpriteAffineAnimTable_83D603C, - .callback = sub_80C7C94, + .affineAnims = sSpriteAffineAnimTable_RotatingGate, + .callback = SpriteCallback_RotatingGate, }; -static const struct SpriteTemplate gSpriteTemplate_83D60A4 = { - .tileTag = 4864, +static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = { + .tileTag = ROTATING_GATE_TILE_TAG, .paletteTag = 0xFFFF, - .oam = &gOamData_83D5E14, - .anims = gSpriteAnimTable_83D5E78, + .oam = &sOamData_RotatingGateRegular, + .anims = sSpriteAnimTable_RotatingGateRegular, .images = NULL, - .affineAnims = gSpriteAffineAnimTable_83D603C, - .callback = sub_80C7C94, + .affineAnims = sSpriteAffineAnimTable_RotatingGate, + .callback = SpriteCallback_RotatingGate, }; -static const u8 sUnknown_083D60BC[4][4] = { - { 255, 255, 255, 255 }, { 39, 38, 18, 19 }, { 255, 255, 255, 255 }, { 255, 255, 255, 255 }, +// These structures describe what happens to the gate if you hit it at +// a given coordinate in a 4x4 grid when walking in the specified +// direction. Either the gate does not rotate, or it rotates in the +// given direction. This information is compared against the gate +// "arm" layout to see if there is an arm at the position in order to +// produce the final rotation. +static const u8 sRotatingGate_RotationInfoNorth[4][4] = { + { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, + { GATE_ROTATION_CLOCKWISE(GATE_ARM_WEST, 1), + GATE_ROTATION_CLOCKWISE(GATE_ARM_WEST, 0), + GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_EAST, 0), + GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_EAST, 1) }, + { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, + { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, }; -static const u8 sUnknown_083D60CC[4][4] = { - { 255, 255, 255, 255 }, { 255, 255, 255, 255 }, { 23, 22, 34, 35 }, { 255, 255, 255, 255 }, +static const u8 sRotatingGate_RotationInfoSouth[4][4] = { + { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, + { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, + { GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_WEST, 1), + GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_WEST, 0), + GATE_ROTATION_CLOCKWISE(GATE_ARM_EAST, 0), + GATE_ROTATION_CLOCKWISE(GATE_ARM_EAST, 1) }, + { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE }, }; -static const u8 sUnknown_083D60DC[4][4] = { - { 255, 17, 255, 255 }, { 255, 16, 255, 255 }, { 255, 36, 255, 255 }, { 255, 37, 255, 255 }, +static const u8 sRotatingGate_RotationInfoWest[4][4] = { + { GATE_ROTATION_NONE, + GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_NORTH, 1), + GATE_ROTATION_NONE, + GATE_ROTATION_NONE }, + { GATE_ROTATION_NONE, + GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_NORTH, 0), + GATE_ROTATION_NONE, + GATE_ROTATION_NONE }, + { GATE_ROTATION_NONE, + GATE_ROTATION_CLOCKWISE(GATE_ARM_SOUTH, 0), + GATE_ROTATION_NONE, + GATE_ROTATION_NONE }, + { GATE_ROTATION_NONE, + GATE_ROTATION_CLOCKWISE(GATE_ARM_SOUTH, 1), + GATE_ROTATION_NONE, + GATE_ROTATION_NONE }, }; -static const u8 sUnknown_083D60EC[4][4] = { - { 255, 255, 33, 255 }, { 255, 255, 32, 255 }, { 255, 255, 20, 255 }, { 255, 255, 21, 255 }, +static const u8 sRotatingGate_RotationInfoEast[4][4] = { + { GATE_ROTATION_NONE, + GATE_ROTATION_NONE, + GATE_ROTATION_CLOCKWISE(GATE_ARM_NORTH, 1), + GATE_ROTATION_NONE }, + { GATE_ROTATION_NONE, + GATE_ROTATION_NONE, + GATE_ROTATION_CLOCKWISE(GATE_ARM_NORTH, 0), + GATE_ROTATION_NONE }, + { GATE_ROTATION_NONE, + GATE_ROTATION_NONE, + GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_SOUTH, 0), + GATE_ROTATION_NONE }, + { GATE_ROTATION_NONE, + GATE_ROTATION_NONE, + GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_SOUTH, 1), + GATE_ROTATION_NONE }, }; -static const struct UnknownStruct2 sUnknown_083D60FC[] = { - { 0, -1, 0, 0 }, - { 1, -2, 0, 0 }, - { 0, 0, 0, 0 }, - { 1, 0, 0, 0 }, - { -1, 0, 0, 0 }, - { -1, 1, 0, 0 }, - { -1, -1, 0, 0 }, - { -2, -1, 0, 0 }, +// These tables describe the relative coordinate positions the arms +// must move through in order to be rotated. +static const struct Coords8 sRotatingGate_ArmPositionsClockwiseRotation[] = { + { 0, -1 }, { 1, -2 }, { 0, 0 }, { 1, 0 }, { -1, 0 }, { -1, 1 }, { -1, -1 }, { -2, -1 }, }; -static const struct UnknownStruct2 sUnknown_083D611C[] = { - { -1, -1, 0, 0 }, - { -1, -2, 0, 0 }, - { 0, -1, 0, 0 }, - { 1, -1, 0, 0 }, - { 0, 0, 0, 0 }, - { 0, 1, 0, 0 }, - { -1, 0, 0, 0 }, - { -2, 0, 0, 0 }, +static const struct Coords8 sRotatingGate_ArmPositionsAntiClockwiseRotation[] = { + { -1, -1 }, { -1, -2 }, { 0, -1 }, { 1, -1 }, { 0, 0 }, { 0, 1 }, { -1, 0 }, { -2, 0 }, }; -static const u8 sUnknown_083D613C[12][8] = { +// Describes where the gates "arms" are in the order north, east, south, west. +// These are adjusted using the current orientation to perform collision checking +static const u8 sRotatingGate_ArmLayout[][GATE_ARM_WEST + 1][GATE_ARM_MAX_LENGTH] = { + // L-shape gates { - 1, 0, 1, 0, 0, 0, 0, 0, + { 1, 0 }, { 1, 0 }, { 0, 0 }, { 0, 0 }, }, { - 1, 1, 1, 0, 0, 0, 0, 0, + { 1, 1 }, { 1, 0 }, { 0, 0 }, { 0, 0 }, }, { - 1, 0, 1, 1, 0, 0, 0, 0, + { 1, 0 }, { 1, 1 }, { 0, 0 }, { 0, 0 }, }, { - 1, 1, 1, 1, 0, 0, 0, 0, + { 1, 1 }, { 1, 1 }, { 0, 0 }, { 0, 0 }, }, + + // T-shape gates { - 1, 0, 1, 0, 1, 0, 0, 0, + { 1, 0 }, { 1, 0 }, { 1, 0 }, { 0, 0 }, }, { - 1, 1, 1, 0, 1, 0, 0, 0, + { 1, 1 }, { 1, 0 }, { 1, 0 }, { 0, 0 }, }, { - 1, 0, 1, 1, 1, 0, 0, 0, + { 1, 0 }, { 1, 1 }, { 1, 0 }, { 0, 0 }, }, { - 1, 0, 1, 0, 1, 1, 0, 0, + { 1, 0 }, { 1, 0 }, { 1, 1 }, { 0, 0 }, }, + + // Unused T-shape gates + // These have 2-3 long arms and cannot actually be used anywhere + // since configuration for them is missing from the other tables. { - 1, 1, 1, 1, 1, 0, 0, 0, + { 1, 1 }, { 1, 1 }, { 1, 0 }, { 0, 0 }, }, { - 1, 1, 1, 0, 1, 1, 0, 0, + { 1, 1 }, { 1, 0 }, { 1, 1 }, { 0, 0 }, }, { - 1, 0, 1, 1, 1, 1, 0, 0, + { 1, 0 }, { 1, 1 }, { 1, 1 }, { 0, 0 }, }, { - 1, 1, 1, 1, 1, 1, 0, 0, + { 1, 1 }, { 1, 1 }, { 1, 1 }, { 0, 0 }, }, }; -extern u8 gUnknown_020387F0[10]; // puzzle oam ID list -extern const struct UnknownStruct *gUnknown_02038800; +extern u8 gUnknown_020387F0[ROTATING_GATE_PUZZLE_MAX]; // puzzle oam ID list +extern const struct RotatingGatePuzzle *gUnknown_02038800; // sRotatingGatePuzzleConfiguration extern u8 gUnknown_02038804; // puzzle count -u8 sub_80C7BAC(u8 i, s16 a, s16 b); -void sub_8060388(s16 x, s16 y, s16 *outX, s16 *outY); -void sub_80C7D14(struct Sprite *sprite); - -int GetCurrentMapRotatingGatePuzzleType(void) +static int GetCurrentMapRotatingGatePuzzleType(void) { - if (gSaveBlock1.location.mapGroup == 0xC && gSaveBlock1.location.mapNum == 0x1) + if (gSaveBlock1.location.mapGroup == MAP_GROUP_FORTREE_CITY_GYM && + gSaveBlock1.location.mapNum == MAP_ID_FORTREE_CITY_GYM) { - return 1; + return PUZZLE_FORTREE_CITY_GYM; } - if (gSaveBlock1.location.mapGroup == 0x1d && gSaveBlock1.location.mapNum == 0x8) + if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE6 && + gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE6) { - return 2; + return PUZZLE_ROUTE110_TRICK_HOUSE_PUZZLE6; } - return 0; + return PUZZLE_NONE; } -// ResetSomething -void sub_80C79CC(void) +static void RotatingGate_ResetAllGateOrientations(void) { int i; u8 *ptr; @@ -384,81 +595,77 @@ void sub_80C79CC(void) for (i = 0; i < gUnknown_02038804; i++) { - ptr[i] = gUnknown_02038800[i].f; + ptr[i] = gUnknown_02038800[i].orientation; } } -// GetSomething -/* u8 */ int sub_80C7A08(u8 a) +static int RotatingGate_GetGateOrientation(u8 gateId) { - u8 *ptr; - ptr = (u8 *)GetVarPointer(0x4000); - return ptr[a]; + return ((u8 *)GetVarPointer(0x4000))[gateId]; } -// SetSomething -void sub_80C7A24(u8 a, u8 b) +static void RotatingGate_SetGateOrientation(u8 gateId, u8 orientation) { - u8 *ptr; - ptr = (u8 *)GetVarPointer(0x4000); - ptr[a] = b; + ((u8 *)GetVarPointer(0x4000))[gateId] = orientation; } -// RotateInDirectionProbably -void sub_80C7A44(u8 a, u32 b) +static void RotatingGate_RotateInDirection(u8 gateId, u32 rotationDirection) { - u8 r1; - r1 = sub_80C7A08(a); + u8 orientation = RotatingGate_GetGateOrientation(gateId); - if (b == 1) + if (rotationDirection == ROTATE_ANTICLOCKWISE) { - if (r1) + if (orientation) { - r1--; + orientation--; } else { - r1 = 3; + orientation = GATE_ORIENTATION_270; } } else { - r1 = ++r1 % 4; + orientation = ++orientation % GATE_ORIENTATION_MAX; } - sub_80C7A24(a, r1); + RotatingGate_SetGateOrientation(gateId, orientation); } -// Configure -void sub_80C7A80(void) +static void RotatingGate_LoadPuzzleConfig(void) { - int a = GetCurrentMapRotatingGatePuzzleType(); + int puzzleType = GetCurrentMapRotatingGatePuzzleType(); u32 i; - switch (a) + switch (puzzleType) { - case 1: - gUnknown_02038800 = sUnknown_083D2964; - gUnknown_02038804 = 7; + case PUZZLE_FORTREE_CITY_GYM: + gUnknown_02038800 = sRotatingGate_FortreePuzzleConfig; + gUnknown_02038804 = + sizeof(sRotatingGate_FortreePuzzleConfig) / sizeof(struct RotatingGatePuzzle); break; - case 2: - gUnknown_02038800 = sUnknown_083D299C; - gUnknown_02038804 = 0xE; + case PUZZLE_ROUTE110_TRICK_HOUSE_PUZZLE6: + gUnknown_02038800 = sRotatingGate_TrickHousePuzzleConfig; + gUnknown_02038804 = + sizeof(sRotatingGate_TrickHousePuzzleConfig) / sizeof(struct RotatingGatePuzzle); break; - case 0: + case PUZZLE_NONE: default: return; } - for (i = 0; i < 14; i++) + for (i = 0; i < ROTATING_GATE_PUZZLE_MAX; i++) { gUnknown_020387F0[i] = MAX_SPRITES; } } -void sub_80C7ADC(s16 a, s16 b) +static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY) { u8 i; + + // Calculate the bounding box of the camera + // Same as RotatingGate_DestroyGatesOutsideViewport s16 x = gSaveBlock1.pos.x - 2; s16 x2 = gSaveBlock1.pos.x + 0x11; s16 y = gSaveBlock1.pos.y - 2; @@ -473,91 +680,88 @@ void sub_80C7ADC(s16 a, s16 b) if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 && gUnknown_020387F0[i] == MAX_SPRITES) { - gUnknown_020387F0[i] = sub_80C7BAC(i, a, b); + gUnknown_020387F0[i] = RotatingGate_CreateGate(i, deltaX, deltaY); } } } -// CreateSprite -u8 sub_80C7BAC(u8 i, s16 a, s16 b) +static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) { - struct Sprite *sprite; // r4 + struct Sprite *sprite; struct SpriteTemplate template; - const struct UnknownStruct *unk; - u8 id; // r5 + const struct RotatingGatePuzzle *gate; + u8 spriteId; s16 x, y; - unk = &gUnknown_02038800[i]; + gate = &gUnknown_02038800[gateId]; - if (unk->e == 0 || unk->e == 4) + if (gate->shape == GATE_SHAPE_L1 || gate->shape == GATE_SHAPE_T1) { - template = gSpriteTemplate_83D60A4; + template = sSpriteTemplate_RotatingGateRegular; } else { - template = gSpriteTemplate_83D608C; + template = sSpriteTemplate_RotatingGateLarge; } - template.tileTag = unk->e + 0x1300; + template.tileTag = gate->shape + ROTATING_GATE_TILE_TAG; - id = CreateSprite(&template, 0, 0, 0x94); - if (id == MAX_SPRITES) + spriteId = CreateSprite(&template, 0, 0, 0x94); + if (spriteId == MAX_SPRITES) { return MAX_SPRITES; } - x = unk->pos.x + 7; - y = unk->pos.y + 7; + x = gate->pos.x + 7; + y = gate->pos.y + 7; - sprite = &gSprites[id]; - sprite->data0 = i; + sprite = &gSprites[spriteId]; + sprite->data0 = gateId; sprite->coordOffsetEnabled = 1; - sub_8060388(x + a, y + b, &sprite->pos1.x, &sprite->pos1.y); - sub_80C7D14(sprite); - StartSpriteAffineAnim(sprite, sub_80C7A08(i)); + sub_8060388(x + deltaX, y + deltaY, &sprite->pos1.x, &sprite->pos1.y); + RotatingGate_HideGatesOutsideViewport(sprite); + StartSpriteAffineAnim(sprite, RotatingGate_GetGateOrientation(gateId)); - return id; + return spriteId; } -// RotateGateWithSE -void sub_80C7C94(struct Sprite *sprite) +static void SpriteCallback_RotatingGate(struct Sprite *sprite) { - u8 a; // r5 - u8 b; + u8 rotationDirection; + u8 orientation; u8 affineAnimation; - a = sprite->data1; - b = sprite->data2; + rotationDirection = sprite->data1; + orientation = sprite->data2; - sub_80C7D14(sprite); + RotatingGate_HideGatesOutsideViewport(sprite); - if (a == 1) + if (rotationDirection == ROTATE_ANTICLOCKWISE) { - affineAnimation = b + 4; + affineAnimation = orientation + 4; if (GetPlayerSpeed() != 1) affineAnimation += 8; - PlaySE(48); + PlaySE(SE_HI_TURUN); StartSpriteAffineAnim(sprite, affineAnimation); } - else if (a == 2) + else if (rotationDirection == ROTATE_CLOCKWISE) { - affineAnimation = b + 8; + affineAnimation = orientation + 8; if (GetPlayerSpeed() != 1) affineAnimation += 8; - PlaySE(48); + PlaySE(SE_HI_TURUN); StartSpriteAffineAnim(sprite, affineAnimation); } - sprite->data1 = 0; + sprite->data1 = ROTATE_NONE; } -// See sub_806487C (field_map_obj_helpers.c) -void sub_80C7D14(struct Sprite *sprite) +static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite) { u16 x; s16 x2; @@ -571,7 +775,6 @@ void sub_80C7D14(struct Sprite *sprite) x2 = x + 0x40; // Dimensions of the rotating gate y2 = y + 0x40; - // TODO: Make this 0x10 a constant if ((s16)x > DISPLAY_WIDTH + 0x10 - 1 || x2 < -0x10) { sprite->invisible = 1; @@ -583,12 +786,12 @@ void sub_80C7D14(struct Sprite *sprite) } } -void LoadRotatingGatePics(void) +static void LoadRotatingGatePics(void) { - LoadSpriteSheets(gRotatingGatesGraphicsTable); + LoadSpriteSheets(sRotatingGatesGraphicsTable); } -void sub_80C7DC0(void) +static void RotatingGate_DestroyGatesOutsideViewport(void) { s16 x; s16 x2; @@ -599,10 +802,11 @@ void sub_80C7DC0(void) int i; struct Sprite *sprite; + // Same as RotatingGate_CreateGatesWithinViewport x = gSaveBlock1.pos.x - 2; - x2 = gSaveBlock1.pos.x + 17; + x2 = gSaveBlock1.pos.x + 0x11; y = gSaveBlock1.pos.y - 2; - y2 = gSaveBlock1.pos.y + 14; + y2 = gSaveBlock1.pos.y + 0xe; for (i = 0; i < gUnknown_02038804; i++) { @@ -623,62 +827,57 @@ void sub_80C7DC0(void) } #ifdef NONMATCHING -int sub_80C7E8C(u8 a, int puzzleType) +static int RotatingGate_CanRotate(u8 gateId, int rotationDirection) { - const struct UnknownStruct2 *unk1; - u8 unk2; + const struct Coords8 *armPos; + u8 orientation; s16 x; s16 y; - int unk3; + int shape; int i; int j; - int unk4; - const u8 *unk5; - int unk6; - u8 unk7; - int wat; - - if (puzzleType == 1) - unk1 = sUnknown_083D611C; - else if (puzzleType == 2) - unk1 = sUnknown_083D60FC; + int armOrientation; + const u8 *gateArmCollisionData; + u8 armIndex; + + if (rotationDirection == ROTATE_ANTICLOCKWISE) + armPos = sRotatingGate_ArmPositionsAntiClockwiseRotation; + else if (rotationDirection == ROTATE_CLOCKWISE) + armPos = sRotatingGate_ArmPositionsClockwiseRotation; else return 0; - unk2 = sub_80C7A08(a); + orientation = RotatingGate_GetGateOrientation(gateId); - unk3 = gUnknown_02038800[a].e; - x = gUnknown_02038800[a].pos.x + 7; - y = gUnknown_02038800[a].pos.y + 7; + shape = gUnknown_02038800[gateId].shape; + x = gUnknown_02038800[gateId].pos.x + 7; + y = gUnknown_02038800[gateId].pos.y + 7; - for (i = 0; i <= 3; i++) + // Loop through the gate's "arms" clockwise (north, south, east, west) + for (i = GATE_ARM_NORTH; i <= GATE_ARM_WEST; i++) { - j = 0; - unk4 = unk2 + i; - wat = unk2 + i; - unk5 = &sUnknown_083D613C[unk3][i * 2]; + armOrientation = orientation + i; + gateArmCollisionData = sRotatingGate_ArmLayout[shape][i]; - for (; j <= 1; j++) + // Ensure that no part of the arm collides with the map + for (j = 0; j < GATE_ARM_MAX_LENGTH; j++) { - unk6 = wat; - if (wat < 0) - unk6 = unk4 + 3; - - unk7 = (2 * (wat - ((unk6 >> 2) << 2)) + j); + armIndex = 2 * (armOrientation % 4) + j; - if (*unk5) + if (*gateArmCollisionData) { - if (MapGridIsImpassableAt(unk1[unk7].a + x, unk1[unk7].b + y) == 1) + if (MapGridIsImpassableAt( + armPos[armIndex].deltaX + x, armPos[armIndex].deltaY + y) == 1) return 0; } - unk5++; + gateArmCollisionData++; } } return 1; } #else -__attribute__((naked)) int sub_80C7E8C(u8 a, int puzzleType) +__attribute__((naked)) static int RotatingGate_CanRotate(u8 a, int puzzleType) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -691,11 +890,11 @@ __attribute__((naked)) int sub_80C7E8C(u8 a, int puzzleType) lsrs r4, r0, 24\n\ cmp r1, 0x1\n\ bne _080C7EAC\n\ - ldr r0, _080C7EA8 @ =sUnknown_083D611C\n\ + ldr r0, _080C7EA8 @ =sRotatingGate_ArmPositionsAntiClockwiseRotation\n\ mov r10, r0\n\ b _080C7EB8\n\ .align 2, 0\n\ -_080C7EA8: .4byte sUnknown_083D611C\n\ +_080C7EA8: .4byte sRotatingGate_ArmPositionsAntiClockwiseRotation\n\ _080C7EAC:\n\ cmp r1, 0x2\n\ beq _080C7EB4\n\ @@ -703,11 +902,11 @@ _080C7EB0:\n\ movs r0, 0\n\ b _080C7F48\n\ _080C7EB4:\n\ - ldr r1, _080C7F58 @ =sUnknown_083D60FC\n\ + ldr r1, _080C7F58 @ =sRotatingGate_ArmPositionsClockwiseRotation\n\ mov r10, r1\n\ _080C7EB8:\n\ adds r0, r4, 0\n\ - bl sub_80C7A08\n\ + bl RotatingGate_GetGateOrientation\n\ lsls r0, 24\n\ lsrs r0, 24\n\ str r0, [sp]\n\ @@ -737,7 +936,7 @@ _080C7EE8:\n\ adds r5, r7, 0\n\ ldr r1, [sp, 0x4]\n\ adds r0, r1\n\ - ldr r2, _080C7F60 @ =sUnknown_083D613C\n\ + ldr r2, _080C7F60 @ =sRotatingGate_ArmLayout\n\ adds r4, r0, r2\n\ _080C7EFA:\n\ adds r0, r5, 0\n\ @@ -790,33 +989,30 @@ _080C7F48:\n\ pop {r1}\n\ bx r1\n\ .align 2, 0\n\ -_080C7F58: .4byte sUnknown_083D60FC\n\ +_080C7F58: .4byte sRotatingGate_ArmPositionsClockwiseRotation\n\ _080C7F5C: .4byte gUnknown_02038800\n\ -_080C7F60: .4byte sUnknown_083D613C\n\ +_080C7F60: .4byte sRotatingGate_ArmLayout\n\ .syntax divided\n"); } #endif #ifdef NONMATCHING -int sub_80C7F64(u8 a, u8 b) +static int RotatingGate_HasArm(u8 gateId, u8 armInfo) { - int unk1; - int unk2; - int unk4; - int unk5; - int unk6; - int unk7; - - unk5 = a >> 1; - unk1 = b & 1; - unk2 = unk5 - sub_80C7A08(a) + 4; - unk7 = unk2 < 0 ? unk2 + 3 : unk2; - unk4 = (unk7 - ((unk7 >> 2) << 2)); - unk6 = gUnknown_02038800[a].e; - return sUnknown_083D613C[unk6][(s8)unk4 * 2 + unk1]; + int isLongArm; + s8 armOrientation; + int arm; + int shape; + + arm = armInfo >> 1; + isLongArm = armInfo & 1; + + armOrientation = (arm - RotatingGate_GetGateOrientation(gateId) + 4) % 4; + shape = gUnknown_02038800[gateId].shape; + return sRotatingGate_ArmLayout[shape][armOrientation][isLongArm]; } #else -__attribute__((naked)) int sub_80C7F64(u8 a, u8 b) +__attribute__((naked)) static int RotatingGate_HasArm(u8 a, u8 b) { asm(".syntax unified\n\ push {r4-r6,lr}\n\ @@ -830,7 +1026,7 @@ __attribute__((naked)) int sub_80C7F64(u8 a, u8 b) movs r0, 0x1\n\ ands r5, r0\n\ adds r0, r6, 0\n\ - bl sub_80C7A08\n\ + bl RotatingGate_GetGateOrientation\n\ subs r4, r0\n\ adds r1, r4, 0x4\n\ adds r0, r1, 0\n\ @@ -846,7 +1042,7 @@ _080C7F8A:\n\ lsls r1, r6, 3\n\ adds r1, r2\n\ ldrb r1, [r1, 0x4]\n\ - ldr r2, _080C7FB4 @ =sUnknown_083D613C\n\ + ldr r2, _080C7FB4 @ =sRotatingGate_ArmLayout\n\ lsls r0, 24\n\ asrs r0, 23\n\ adds r0, r5\n\ @@ -859,43 +1055,43 @@ _080C7F8A:\n\ bx r1\n\ .align 2, 0\n\ _080C7FB0: .4byte gUnknown_02038800\n\ -_080C7FB4: .4byte sUnknown_083D613C\n\ +_080C7FB4: .4byte sRotatingGate_ArmLayout\n\ .syntax divided\n"); } #endif -void sub_80C7FB8(u8 a, int b) +static void RotatingGate_TriggerRotationAnimation(u8 gateId, int rotationDirection) { struct Sprite *sprite; - if (gUnknown_020387F0[a] != MAX_SPRITES) + if (gUnknown_020387F0[gateId] != MAX_SPRITES) { - sprite = &gSprites[gUnknown_020387F0[a]]; - sprite->data1 = b; - sprite->data2 = sub_80C7A08(a); + sprite = &gSprites[gUnknown_020387F0[gateId]]; + sprite->data1 = rotationDirection; + sprite->data2 = RotatingGate_GetGateOrientation(gateId); } } #ifdef NONMATCHING -u8 sub_80C7FEC(u8 a, s16 b, s16 c) +static u8 RotatingGate_GetRotationInfo(u8 direction, s16 x, s16 y) { register const u8(*ptr)[][4] asm("r3"); - if (a == 2) - ptr = &sUnknown_083D60BC; - else if (a == 1) - ptr = &sUnknown_083D60CC; - else if (a == 3) - ptr = &sUnknown_083D60DC; - else if (a == 4) - ptr = &sUnknown_083D60EC; + if (direction == DIR_NORTH) + ptr = &sRotatingGate_RotationInfoNorth; + else if (direction == DIR_SOUTH) + ptr = &sRotatingGate_RotationInfoSouth; + else if (direction == DIR_WEST) + ptr = &sRotatingGate_RotationInfoWest; + else if (direction == DIR_EAST) + ptr = &sRotatingGate_RotationInfoEast; else - return 0xFF; + return GATE_ROTATION_NONE; - return (*ptr)[c][b]; + return (*ptr)[y][x]; } #else -__attribute__((naked)) u8 sub_80C7FEC(u8 a, s16 b, s16 c) +__attribute__((naked)) static u8 RotatingGate_GetRotationInfo(u8 a, s16 b, s16 c) { asm(".syntax unified\n\ push {lr}\n\ @@ -908,31 +1104,31 @@ __attribute__((naked)) u8 sub_80C7FEC(u8 a, s16 b, s16 c) lsrs r2, 16\n\ cmp r0, 0x2\n\ bne _080C8008\n\ - ldr r3, _080C8004 @ =sUnknown_083D60BC\n\ + ldr r3, _080C8004 @ =sRotatingGate_RotationInfoNorth\n\ b _080C802A\n\ .align 2, 0\n\ -_080C8004: .4byte sUnknown_083D60BC\n\ +_080C8004: .4byte sRotatingGate_RotationInfoNorth\n\ _080C8008:\n\ cmp r0, 0x1\n\ bne _080C8014\n\ - ldr r3, _080C8010 @ =sUnknown_083D60CC\n\ + ldr r3, _080C8010 @ =sRotatingGate_RotationInfoSouth\n\ b _080C802A\n\ .align 2, 0\n\ -_080C8010: .4byte sUnknown_083D60CC\n\ +_080C8010: .4byte sRotatingGate_RotationInfoSouth\n\ _080C8014:\n\ cmp r0, 0x3\n\ bne _080C8020\n\ - ldr r3, _080C801C @ =sUnknown_083D60DC\n\ + ldr r3, _080C801C @ =sRotatingGate_RotationInfoWest\n\ b _080C802A\n\ .align 2, 0\n\ -_080C801C: .4byte sUnknown_083D60DC\n\ +_080C801C: .4byte sRotatingGate_RotationInfoWest\n\ _080C8020:\n\ cmp r3, 0x4\n\ beq _080C8028\n\ movs r0, 0xFF\n\ b _080C8038\n\ _080C8028:\n\ - ldr r3, _080C803C @ =sUnknown_083D60EC\n\ + ldr r3, _080C803C @ =sRotatingGate_RotationInfoEast\n\ _080C802A:\n\ lsls r0, r2, 16\n\ lsls r1, 16\n\ @@ -945,7 +1141,7 @@ _080C8038:\n\ pop {r1}\n\ bx r1\n\ .align 2, 0\n\ -_080C803C: .4byte sUnknown_083D60EC\n\ +_080C803C: .4byte sRotatingGate_RotationInfoEast\n\ .syntax divided\n"); } #endif @@ -954,17 +1150,17 @@ void sub_80C8040(void) { if (GetCurrentMapRotatingGatePuzzleType()) { - sub_80C7A80(); - sub_80C79CC(); + RotatingGate_LoadPuzzleConfig(); + RotatingGate_ResetAllGateOrientations(); } } -void RotatingGatePuzzleCameraUpdate(u16 a, u16 b) +void RotatingGatePuzzleCameraUpdate(u16 deltaX, u16 deltaY) { if (GetCurrentMapRotatingGatePuzzleType()) { - sub_80C7ADC(a, b); - sub_80C7DC0(); + RotatingGate_CreateGatesWithinViewport(deltaX, deltaY); + RotatingGate_DestroyGatesOutsideViewport(); } } @@ -973,21 +1169,21 @@ void sub_80C8080(void) if (GetCurrentMapRotatingGatePuzzleType()) { LoadRotatingGatePics(); - sub_80C7A80(); - sub_80C7ADC(0, 0); + RotatingGate_LoadPuzzleConfig(); + RotatingGate_CreateGatesWithinViewport(0, 0); } } -bool8 CheckForRotatingGatePuzzleCollision(u8 a, s16 x, s16 y) +bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y) { int i; s16 gateX; s16 gateY; - register u32 check asm("r0"); - int upperNibble; - int lowerNibble; - s16 finalX; - s16 finalY; + register u32 rotationInfo asm("r0"); + int rotationDirection; + int armInfo; + s16 centerX; + s16 centerY; if (!GetCurrentMapRotatingGatePuzzleType()) { @@ -1001,23 +1197,23 @@ bool8 CheckForRotatingGatePuzzleCollision(u8 a, s16 x, s16 y) if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1) { - finalX = x - gateX + 2; - finalY = y - gateY + 2; - check = sub_80C7FEC(a, finalX, finalY); + centerX = x - gateX + 2; + centerY = y - gateY + 2; + rotationInfo = RotatingGate_GetRotationInfo(direction, centerX, centerY); - if (check != 255) + if (rotationInfo != GATE_ROTATION_NONE) { - upperNibble = check >> 4; - lowerNibble = check & 0xF; + rotationDirection = rotationInfo >> 4; + armInfo = rotationInfo & 0xF; - asm("" ::"r"(lowerNibble)); + asm("" ::"r"(armInfo)); - if (sub_80C7F64(i, lowerNibble)) + if (RotatingGate_HasArm(i, armInfo)) { - if (sub_80C7E8C(i, upperNibble)) + if (RotatingGate_CanRotate(i, rotationDirection)) { - sub_80C7FB8(i, upperNibble); - sub_80C7A44(i, upperNibble); + RotatingGate_TriggerRotationAnimation(i, rotationDirection); + RotatingGate_RotateInDirection(i, rotationDirection); return 0; } -- cgit v1.2.3 From b3e72c0e2841f19928b284b789b2d91222d056f8 Mon Sep 17 00:00:00 2001 From: Touched Date: Fri, 30 Jun 2017 21:30:57 +0200 Subject: Rename rotating gate global EWRAM variables --- src/rotating_gate.c | 71 +++++++++++++++++++++++++++-------------------------- sym_ewram.txt | 6 ++--- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/rotating_gate.c b/src/rotating_gate.c index 665a16ae4..6fc10f2a3 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -565,9 +565,9 @@ static const u8 sRotatingGate_ArmLayout[][GATE_ARM_WEST + 1][GATE_ARM_MAX_LENGTH }, }; -extern u8 gUnknown_020387F0[ROTATING_GATE_PUZZLE_MAX]; // puzzle oam ID list -extern const struct RotatingGatePuzzle *gUnknown_02038800; // sRotatingGatePuzzleConfiguration -extern u8 gUnknown_02038804; // puzzle count +extern u8 gRotatingGate_GateSpriteIds[ROTATING_GATE_PUZZLE_MAX]; +extern const struct RotatingGatePuzzle *gRotatingGate_PuzzleConfig; +extern u8 gRotatingGate_PuzzleCount; static int GetCurrentMapRotatingGatePuzzleType(void) { @@ -593,9 +593,9 @@ static void RotatingGate_ResetAllGateOrientations(void) ptr = (u8 *)GetVarPointer(0x4000); - for (i = 0; i < gUnknown_02038804; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - ptr[i] = gUnknown_02038800[i].orientation; + ptr[i] = gRotatingGate_PuzzleConfig[i].orientation; } } @@ -640,13 +640,13 @@ static void RotatingGate_LoadPuzzleConfig(void) switch (puzzleType) { case PUZZLE_FORTREE_CITY_GYM: - gUnknown_02038800 = sRotatingGate_FortreePuzzleConfig; - gUnknown_02038804 = + gRotatingGate_PuzzleConfig = sRotatingGate_FortreePuzzleConfig; + gRotatingGate_PuzzleCount = sizeof(sRotatingGate_FortreePuzzleConfig) / sizeof(struct RotatingGatePuzzle); break; case PUZZLE_ROUTE110_TRICK_HOUSE_PUZZLE6: - gUnknown_02038800 = sRotatingGate_TrickHousePuzzleConfig; - gUnknown_02038804 = + gRotatingGate_PuzzleConfig = sRotatingGate_TrickHousePuzzleConfig; + gRotatingGate_PuzzleCount = sizeof(sRotatingGate_TrickHousePuzzleConfig) / sizeof(struct RotatingGatePuzzle); break; case PUZZLE_NONE: @@ -656,7 +656,7 @@ static void RotatingGate_LoadPuzzleConfig(void) for (i = 0; i < ROTATING_GATE_PUZZLE_MAX; i++) { - gUnknown_020387F0[i] = MAX_SPRITES; + gRotatingGate_GateSpriteIds[i] = MAX_SPRITES; } } @@ -673,14 +673,15 @@ static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY) s16 x3, y3; - for (i = 0; i < gUnknown_02038804; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - x3 = gUnknown_02038800[i].pos.x + 7; - y3 = gUnknown_02038800[i].pos.y + 7; + x3 = gRotatingGate_PuzzleConfig[i].pos.x + 7; + y3 = gRotatingGate_PuzzleConfig[i].pos.y + 7; - if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 && gUnknown_020387F0[i] == MAX_SPRITES) + if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 && + gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) { - gUnknown_020387F0[i] = RotatingGate_CreateGate(i, deltaX, deltaY); + gRotatingGate_GateSpriteIds[i] = RotatingGate_CreateGate(i, deltaX, deltaY); } } } @@ -693,7 +694,7 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY) u8 spriteId; s16 x, y; - gate = &gUnknown_02038800[gateId]; + gate = &gRotatingGate_PuzzleConfig[gateId]; if (gate->shape == GATE_SHAPE_L1 || gate->shape == GATE_SHAPE_T1) { @@ -808,20 +809,20 @@ static void RotatingGate_DestroyGatesOutsideViewport(void) y = gSaveBlock1.pos.y - 2; y2 = gSaveBlock1.pos.y + 0xe; - for (i = 0; i < gUnknown_02038804; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - xGate = gUnknown_02038800[i].pos.x + 7; - yGate = gUnknown_02038800[i].pos.y + 7; + xGate = gRotatingGate_PuzzleConfig[i].pos.x + 7; + yGate = gRotatingGate_PuzzleConfig[i].pos.y + 7; - if (gUnknown_020387F0[i] == MAX_SPRITES) + if (gRotatingGate_GateSpriteIds[i] == MAX_SPRITES) continue; if (xGate < x || xGate > x2 || yGate < y || yGate > y2) { - sprite = &gSprites[gUnknown_020387F0[i]]; + sprite = &gSprites[gRotatingGate_GateSpriteIds[i]]; FreeSpriteOamMatrix(sprite); DestroySprite(sprite); - gUnknown_020387F0[i] = MAX_SPRITES; + gRotatingGate_GateSpriteIds[i] = MAX_SPRITES; } } } @@ -849,9 +850,9 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection) orientation = RotatingGate_GetGateOrientation(gateId); - shape = gUnknown_02038800[gateId].shape; - x = gUnknown_02038800[gateId].pos.x + 7; - y = gUnknown_02038800[gateId].pos.y + 7; + shape = gRotatingGate_PuzzleConfig[gateId].shape; + x = gRotatingGate_PuzzleConfig[gateId].pos.x + 7; + y = gRotatingGate_PuzzleConfig[gateId].pos.y + 7; // Loop through the gate's "arms" clockwise (north, south, east, west) for (i = GATE_ARM_NORTH; i <= GATE_ARM_WEST; i++) @@ -910,7 +911,7 @@ _080C7EB8:\n\ lsls r0, 24\n\ lsrs r0, 24\n\ str r0, [sp]\n\ - ldr r0, _080C7F5C @ =gUnknown_02038800\n\ + ldr r0, _080C7F5C @ =gRotatingGate_PuzzleConfig\n\ ldr r1, [r0]\n\ lsls r0, r4, 3\n\ adds r0, r1\n\ @@ -990,7 +991,7 @@ _080C7F48:\n\ bx r1\n\ .align 2, 0\n\ _080C7F58: .4byte sRotatingGate_ArmPositionsClockwiseRotation\n\ -_080C7F5C: .4byte gUnknown_02038800\n\ +_080C7F5C: .4byte gRotatingGate_PuzzleConfig\n\ _080C7F60: .4byte sRotatingGate_ArmLayout\n\ .syntax divided\n"); } @@ -1008,7 +1009,7 @@ static int RotatingGate_HasArm(u8 gateId, u8 armInfo) isLongArm = armInfo & 1; armOrientation = (arm - RotatingGate_GetGateOrientation(gateId) + 4) % 4; - shape = gUnknown_02038800[gateId].shape; + shape = gRotatingGate_PuzzleConfig[gateId].shape; return sRotatingGate_ArmLayout[shape][armOrientation][isLongArm]; } #else @@ -1037,7 +1038,7 @@ _080C7F8A:\n\ asrs r0, 2\n\ lsls r0, 2\n\ subs r0, r1, r0\n\ - ldr r1, _080C7FB0 @ =gUnknown_02038800\n\ + ldr r1, _080C7FB0 @ =gRotatingGate_PuzzleConfig\n\ ldr r2, [r1]\n\ lsls r1, r6, 3\n\ adds r1, r2\n\ @@ -1054,7 +1055,7 @@ _080C7F8A:\n\ pop {r1}\n\ bx r1\n\ .align 2, 0\n\ -_080C7FB0: .4byte gUnknown_02038800\n\ +_080C7FB0: .4byte gRotatingGate_PuzzleConfig\n\ _080C7FB4: .4byte sRotatingGate_ArmLayout\n\ .syntax divided\n"); } @@ -1064,9 +1065,9 @@ static void RotatingGate_TriggerRotationAnimation(u8 gateId, int rotationDirecti { struct Sprite *sprite; - if (gUnknown_020387F0[gateId] != MAX_SPRITES) + if (gRotatingGate_GateSpriteIds[gateId] != MAX_SPRITES) { - sprite = &gSprites[gUnknown_020387F0[gateId]]; + sprite = &gSprites[gRotatingGate_GateSpriteIds[gateId]]; sprite->data1 = rotationDirection; sprite->data2 = RotatingGate_GetGateOrientation(gateId); } @@ -1190,10 +1191,10 @@ bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y) return 0; } - for (i = 0; i < gUnknown_02038804; i++) + for (i = 0; i < gRotatingGate_PuzzleCount; i++) { - gateX = gUnknown_02038800[i].pos.x + 7; - gateY = gUnknown_02038800[i].pos.y + 7; + gateX = gRotatingGate_PuzzleConfig[i].pos.x + 7; + gateY = gRotatingGate_PuzzleConfig[i].pos.y + 7; if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1) { diff --git a/sym_ewram.txt b/sym_ewram.txt index 42b0982ab..f855ea4a4 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -773,13 +773,13 @@ gUnknown_020387E8: @ 20387E8 gUnknown_020387EC: @ 20387EC .space 0x4 -gUnknown_020387F0: @ 20387F0 +gRotatingGate_GateSpriteIds: @ 20387F0 .space 0x10 -gUnknown_02038800: @ 2038800 +gRotatingGate_PuzzleConfig: @ 2038800 .space 0x4 -gUnknown_02038804: @ 2038804 +gRotatingGate_PuzzleCount: @ 2038804 .space 0x4 .include "src/safari_zone.o" -- cgit v1.2.3 From c2daf4f6c9f915e1fcc7c76c2a3ed2ce5b4eb637 Mon Sep 17 00:00:00 2001 From: Touched Date: Fri, 30 Jun 2017 21:34:15 +0200 Subject: Rename rotating gate exported functions --- data/specials.inc | 4 ++-- include/rotating_gate.h | 2 +- src/rom4.c | 2 +- src/rotating_gate.c | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/data/specials.inc b/data/specials.inc index e0022bea1..f7aa3456a 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -201,8 +201,8 @@ gSpecials:: .4byte sub_80B7D0C .4byte ExecuteWhiteOut .4byte sp0C8_whiteout_maybe - .4byte sub_80C8040 - .4byte sub_80C8080 + .4byte RotatingGate_InitPuzzle + .4byte RotatingGate_InitPuzzleAndGraphics .4byte SetSSTidalFlag .4byte ResetSSTidalFlag .4byte EnterSafariMode diff --git a/include/rotating_gate.h b/include/rotating_gate.h index 6f4f38a9a..50a838953 100644 --- a/include/rotating_gate.h +++ b/include/rotating_gate.h @@ -2,7 +2,7 @@ #define GUARD_ROTATING_GATE_H void RotatingGatePuzzleCameraUpdate(s16, s16); -void sub_80C8080(); +void RotatingGate_InitPuzzleAndGraphics(); u32 CheckForRotatingGatePuzzleCollision(u8, s16, s16); #endif // GUARD_ROTATING_GATE_H diff --git a/src/rom4.c b/src/rom4.c index 2ddd5ed9f..bfc8e0e44 100644 --- a/src/rom4.c +++ b/src/rom4.c @@ -1672,7 +1672,7 @@ void mli4_mapscripts_and_other(void) void sub_8054E20(void) { sub_805B710(0, 0); - sub_80C8080(); + RotatingGate_InitPuzzleAndGraphics(); } void sub_8054E34(void) diff --git a/src/rotating_gate.c b/src/rotating_gate.c index 6fc10f2a3..d12a21240 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -1147,7 +1147,7 @@ _080C803C: .4byte sRotatingGate_RotationInfoEast\n\ } #endif -void sub_80C8040(void) +void RotatingGate_InitPuzzle(void) { if (GetCurrentMapRotatingGatePuzzleType()) { @@ -1165,7 +1165,7 @@ void RotatingGatePuzzleCameraUpdate(u16 deltaX, u16 deltaY) } } -void sub_80C8080(void) +void RotatingGate_InitPuzzleAndGraphics(void) { if (GetCurrentMapRotatingGatePuzzleType()) { -- cgit v1.2.3 From 22da2dfafc892e8d07af95e715cb1ae889bccd5c Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 30 Jun 2017 15:39:17 -0400 Subject: finish decompiling sound_check_menu.c except for sub_80BAE78 --- asm/sound_check_menu.s | 781 ------------------------------------------------- include/global.h | 10 +- ld_script.txt | 1 - src/battle_ai.c | 2 +- src/sound_check_menu.c | 444 +++++++++++++++++++++++++++- 5 files changed, 443 insertions(+), 795 deletions(-) delete mode 100644 asm/sound_check_menu.s diff --git a/asm/sound_check_menu.s b/asm/sound_check_menu.s deleted file mode 100644 index 1501070fc..000000000 --- a/asm/sound_check_menu.s +++ /dev/null @@ -1,781 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80BAE78 -sub_80BAE78: @ 80BAE78 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x2C - mov r8, r0 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 16 - lsrs r2, 16 - lsls r3, 24 - lsrs r7, r3, 24 - mov r1, sp - ldr r0, _080BAF80 @ =gUnknown_083D03E0 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - movs r5, 0 - add r0, sp, 0x18 - mov r9, r0 - cmp r5, r7 - bgt _080BAEC0 - mov r4, r9 - movs r3, 0 -_080BAEAC: - lsls r0, r5, 24 - asrs r0, 24 - adds r1, r4, r0 - strb r3, [r1] - adds r0, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - asrs r0, 24 - cmp r0, r7 - ble _080BAEAC -_080BAEC0: - adds r0, r7, 0x1 - add r0, r9 - movs r1, 0xFF - strb r1, [r0] - movs r1, 0 - mov r3, r8 - cmp r3, 0 - bge _080BAED6 - negs r3, r3 - mov r8, r3 - movs r1, 0x1 -_080BAED6: - movs r4, 0 - mov r10, r4 - cmp r7, 0x1 - bne _080BAEE2 - movs r5, 0x1 - mov r10, r5 -_080BAEE2: - subs r0, r7, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 24 - lsls r6, 24 - str r6, [sp, 0x24] - lsls r2, 24 - str r2, [sp, 0x28] - cmp r0, 0 - blt _080BAF62 - str r1, [sp, 0x20] -_080BAEF8: - asrs r6, r0, 24 - lsls r0, r6, 2 - add r0, sp - ldr r1, [r0] - mov r0, r8 - bl __divsi3 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r0, 0 - bne _080BAF1A - mov r0, r10 - cmp r0, 0 - bne _080BAF1A - lsls r4, r5, 24 - cmp r6, 0 - bne _080BAF46 -_080BAF1A: - lsls r4, r5, 24 - ldr r3, [sp, 0x20] - cmp r3, 0 - beq _080BAF34 - mov r5, r10 - cmp r5, 0 - bne _080BAF34 - asrs r0, r4, 24 - subs r0, r7, r0 - subs r0, 0x1 - add r0, r9 - movs r1, 0xAE - strb r1, [r0] -_080BAF34: - asrs r1, r4, 24 - subs r1, r7, r1 - add r1, r9 - lsls r0, r2, 24 - asrs r0, 24 - subs r0, 0x5F - strb r0, [r1] - movs r0, 0x1 - mov r10, r0 -_080BAF46: - asrs r4, 24 - lsls r0, r4, 2 - add r0, sp - ldr r1, [r0] - mov r0, r8 - bl __modsi3 - mov r8, r0 - subs r4, 0x1 - lsls r4, 24 - lsrs r5, r4, 24 - lsls r0, r5, 24 - cmp r0, 0 - bge _080BAEF8 -_080BAF62: - ldr r3, [sp, 0x24] - lsrs r1, r3, 24 - ldr r4, [sp, 0x28] - lsrs r2, r4, 24 - mov r0, r9 - bl MenuPrint - add sp, 0x2C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BAF80: .4byte gUnknown_083D03E0 - thumb_func_end sub_80BAE78 - - thumb_func_start sub_80BAF84 -sub_80BAF84: @ 80BAF84 - push {r4-r6,lr} - sub sp, 0x14 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080BB01C @ =gOtherText_SE - mov r0, sp - movs r2, 0x3 - bl memcpy - add r6, sp, 0x4 - ldr r1, _080BB020 @ =gOtherText_Pan - adds r0, r6, 0 - movs r2, 0x4 - bl memcpy - add r5, sp, 0x8 - ldr r1, _080BB024 @ =gDebugText_Playing - adds r0, r5, 0 - movs r2, 0x9 - bl memcpy - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xC5 - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - mov r0, sp - movs r1, 0x3 - movs r2, 0x2 - bl MenuPrint - adds r0, r6, 0 - movs r1, 0x3 - movs r2, 0x4 - bl MenuPrint - adds r0, r5, 0 - movs r1, 0x3 - movs r2, 0x8 - bl MenuPrint - ldr r1, _080BB028 @ =REG_WIN0H - movs r0, 0xF0 - strh r0, [r1] - adds r1, 0x4 - movs r0, 0xA0 - strh r0, [r1] - ldr r1, _080BB02C @ =gUnknown_020387B4 - movs r0, 0x1 - str r0, [r1] - movs r0, 0 - str r0, [r1, 0x8] - str r0, [r1, 0x1C] - str r0, [r1, 0x18] - str r0, [r1, 0x14] - bl sub_80BB1D4 - ldr r1, _080BB030 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BB034 @ =sub_80BB038 - str r1, [r0] - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BB01C: .4byte gOtherText_SE -_080BB020: .4byte gOtherText_Pan -_080BB024: .4byte gDebugText_Playing -_080BB028: .4byte REG_WIN0H -_080BB02C: .4byte gUnknown_020387B4 -_080BB030: .4byte gTasks -_080BB034: .4byte sub_80BB038 - thumb_func_end sub_80BAF84 - - thumb_func_start sub_80BB038 -sub_80BB038: @ 80BB038 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_80BB1D4 - ldr r2, _080BB058 @ =gUnknown_020387B4 - ldr r0, [r2, 0x18] - cmp r0, 0 - beq _080BB0A2 - ldr r0, [r2, 0x14] - cmp r0, 0 - beq _080BB05C - subs r0, 0x1 - str r0, [r2, 0x14] - b _080BB0A2 - .align 2, 0 -_080BB058: .4byte gUnknown_020387B4 -_080BB05C: - ldr r0, _080BB088 @ =gUnknown_083D03F8 - ldr r1, [r2, 0x8] - adds r1, r0 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - movs r0, 0x80 - negs r0, r0 - cmp r1, r0 - beq _080BB08C - cmp r1, 0x7F - bne _080BB0A2 - ldr r0, [r2, 0x1C] - adds r0, 0x2 - str r0, [r2, 0x1C] - cmp r0, 0x3E - bgt _080BB0A2 - lsls r0, 24 - asrs r0, 24 - bl SE12PanpotControl - b _080BB0A2 - .align 2, 0 -_080BB088: .4byte gUnknown_083D03F8 -_080BB08C: - ldr r0, [r2, 0x1C] - subs r1, r0, 0x2 - str r1, [r2, 0x1C] - movs r0, 0x40 - negs r0, r0 - cmp r1, r0 - ble _080BB0A2 - lsls r0, r1, 24 - asrs r0, 24 - bl SE12PanpotControl -_080BB0A2: - ldr r1, _080BB0EC @ =gMain - ldrh r3, [r1, 0x2E] - movs r0, 0x2 - ands r0, r3 - lsls r0, 16 - lsrs r4, r0, 16 - adds r7, r1, 0 - cmp r4, 0 - beq _080BB104 - movs r1, 0x80 - lsls r1, 19 - ldr r2, _080BB0F0 @ =0x00007140 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x40 - ldr r2, _080BB0F4 @ =0x000011df - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x4 - ldr r2, _080BB0F8 @ =0x0000011f - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _080BB0FC @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BB100 @ =sub_80BA258 - str r1, [r0] - b _080BB1C8 - .align 2, 0 -_080BB0EC: .4byte gMain -_080BB0F0: .4byte 0x00007140 -_080BB0F4: .4byte 0x000011df -_080BB0F8: .4byte 0x0000011f -_080BB0FC: .4byte gTasks -_080BB100: .4byte sub_80BA258 -_080BB104: - movs r6, 0x1 - adds r2, r6, 0 - ands r2, r3 - cmp r2, 0 - beq _080BB15E - ldr r0, _080BB138 @ =gUnknown_083D03F8 - ldr r5, _080BB13C @ =gUnknown_020387B4 - ldr r1, [r5, 0x8] - adds r1, r0 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - movs r0, 0x80 - negs r0, r0 - cmp r1, r0 - beq _080BB140 - cmp r1, 0x7F - bne _080BB154 - ldrh r0, [r5] - movs r4, 0x40 - negs r4, r4 - adds r1, r4, 0 - bl PlaySE12WithPanning - str r4, [r5, 0x1C] - b _080BB14C - .align 2, 0 -_080BB138: .4byte gUnknown_083D03F8 -_080BB13C: .4byte gUnknown_020387B4 -_080BB140: - ldrh r0, [r5] - movs r1, 0x3F - bl PlaySE12WithPanning - movs r0, 0x3F - str r0, [r5, 0x1C] -_080BB14C: - str r6, [r5, 0x18] - movs r0, 0x1E - str r0, [r5, 0x14] - b _080BB1C8 -_080BB154: - ldrh r0, [r5] - bl PlaySE12WithPanning - str r4, [r5, 0x18] - b _080BB1C8 -_080BB15E: - movs r0, 0x80 - lsls r0, 2 - ands r0, r3 - cmp r0, 0 - beq _080BB176 - ldr r1, _080BB1AC @ =gUnknown_020387B4 - ldr r0, [r1, 0x8] - adds r0, 0x1 - str r0, [r1, 0x8] - cmp r0, 0x4 - ble _080BB176 - str r2, [r1, 0x8] -_080BB176: - ldrh r1, [r7, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080BB192 - ldr r1, _080BB1AC @ =gUnknown_020387B4 - ldr r0, [r1, 0x8] - subs r0, 0x1 - str r0, [r1, 0x8] - cmp r0, 0 - bge _080BB192 - movs r0, 0x4 - str r0, [r1, 0x8] -_080BB192: - ldrh r1, [r7, 0x30] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080BB1B0 - ldr r1, _080BB1AC @ =gUnknown_020387B4 - ldr r0, [r1] - adds r0, 0x1 - str r0, [r1] - cmp r0, 0xF7 - ble _080BB1C8 - movs r0, 0 - b _080BB1C6 - .align 2, 0 -_080BB1AC: .4byte gUnknown_020387B4 -_080BB1B0: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080BB1C8 - ldr r1, _080BB1D0 @ =gUnknown_020387B4 - ldr r0, [r1] - subs r0, 0x1 - str r0, [r1] - cmp r0, 0 - bge _080BB1C8 - movs r0, 0xF7 -_080BB1C6: - str r0, [r1] -_080BB1C8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BB1D0: .4byte gUnknown_020387B4 - thumb_func_end sub_80BB038 - - thumb_func_start sub_80BB1D4 -sub_80BB1D4: @ 80BB1D4 - push {r4,r5,lr} - sub sp, 0x10 - ldr r1, _080BB218 @ =gOtherText_LR - mov r0, sp - movs r2, 0x5 - bl memcpy - add r5, sp, 0x8 - ldr r1, _080BB21C @ =gOtherText_RL - adds r0, r5, 0 - movs r2, 0x5 - bl memcpy - ldr r4, _080BB220 @ =gUnknown_020387B4 - ldr r0, [r4] - movs r1, 0x7 - movs r2, 0x2 - movs r3, 0x3 - bl sub_80BAE78 - ldr r1, _080BB224 @ =gUnknown_083D03F8 - ldr r0, [r4, 0x8] - adds r0, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x80 - negs r0, r0 - cmp r1, r0 - beq _080BB228 - cmp r1, 0x7F - bne _080BB234 - mov r0, sp - b _080BB22A - .align 2, 0 -_080BB218: .4byte gOtherText_LR -_080BB21C: .4byte gOtherText_RL -_080BB220: .4byte gUnknown_020387B4 -_080BB224: .4byte gUnknown_083D03F8 -_080BB228: - adds r0, r5, 0 -_080BB22A: - movs r1, 0x7 - movs r2, 0x4 - bl MenuPrint - b _080BB240 -_080BB234: - adds r0, r1, 0 - movs r1, 0x7 - movs r2, 0x4 - movs r3, 0x3 - bl sub_80BAE78 -_080BB240: - bl IsSEPlaying - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xC - movs r2, 0x8 - movs r3, 0x1 - bl sub_80BAE78 - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80BB1D4 - - thumb_func_start sub_80BB25C -sub_80BB25C: @ 80BB25C - push {r4-r6,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080BB374 @ =gWindowConfig_81E6C3C - bl SetUpWindowConfig - ldr r0, _080BB378 @ =gWindowConfig_81E6CE4 - bl InitMenuWindow - ldr r1, _080BB37C @ =gUnknown_03005D34 - movs r0, 0x1 - strh r0, [r1] - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r1, _080BB380 @ =0xffff0000 - ldr r0, [sp, 0x4] - ands r0, r1 - movs r1, 0x80 - lsls r1, 6 - orrs r0, r1 - ldr r1, _080BB384 @ =0xff00ffff - ands r0, r1 - movs r1, 0xE8 - lsls r1, 13 - orrs r0, r1 - ldr r1, _080BB388 @ =0x00ffffff - ands r0, r1 - movs r1, 0xC0 - lsls r1, 20 - orrs r0, r1 - str r0, [sp, 0x4] - ldr r1, _080BB38C @ =0xffff00ff - ldr r0, [sp, 0x8] - ands r0, r1 - movs r1, 0xF0 - lsls r1, 5 - orrs r0, r1 - ldr r1, _080BB390 @ =0xffffff00 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - str r0, [sp, 0x8] - movs r1, 0 - ldr r0, _080BB394 @ =gUnknown_03005E98 - strb r1, [r0] - add r4, sp, 0xC -_080BB2BE: - add r0, sp, 0x4 - movs r1, 0x3 - bl sub_8119E3C - lsls r0, 24 - cmp r0, 0 - beq _080BB2BE - ldr r1, _080BB380 @ =0xffff0000 - ldr r0, [sp, 0xC] - ands r0, r1 - ldr r1, _080BB384 @ =0xff00ffff - ands r0, r1 - movs r1, 0xF0 - lsls r1, 12 - orrs r0, r1 - ldr r1, _080BB388 @ =0x00ffffff - ands r0, r1 - movs r1, 0xD0 - lsls r1, 20 - orrs r0, r1 - str r0, [sp, 0xC] - ldr r1, _080BB390 @ =0xffffff00 - ldr r0, [r4, 0x4] - ands r0, r1 - movs r1, 0xC - orrs r0, r1 - ldr r1, _080BB38C @ =0xffff00ff - ands r0, r1 - movs r1, 0xC0 - lsls r1, 4 - orrs r0, r1 - str r0, [r4, 0x4] - movs r1, 0 - ldr r0, _080BB394 @ =gUnknown_03005E98 - strb r1, [r0] - lsls r5, r6, 2 -_080BB306: - adds r0, r4, 0 - movs r1, 0x2 - bl ShowPokedexCryScreen - lsls r0, 24 - cmp r0, 0 - beq _080BB306 - movs r0, 0 - movs r1, 0x10 - movs r2, 0x5 - movs r3, 0x13 - bl MenuDrawTextWindow - bl sub_80BB494 - movs r0, 0x1 - negs r0, r0 - movs r4, 0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080BB398 @ =REG_BG2HOFS - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - ldr r1, _080BB39C @ =REG_BG2CNT - ldr r2, _080BB3A0 @ =0x00000f01 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - ldr r2, _080BB3A4 @ =0x00001d03 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xE - adds r2, 0x3D - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _080BB3A8 @ =gMPlay_BGM - movs r1, 0x2 - bl m4aMPlayFadeOutTemporarily - ldr r1, _080BB3AC @ =gTasks - adds r0, r5, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BB3B0 @ =sub_80BB3B4 - str r1, [r0] - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BB374: .4byte gWindowConfig_81E6C3C -_080BB378: .4byte gWindowConfig_81E6CE4 -_080BB37C: .4byte gUnknown_03005D34 -_080BB380: .4byte 0xffff0000 -_080BB384: .4byte 0xff00ffff -_080BB388: .4byte 0x00ffffff -_080BB38C: .4byte 0xffff00ff -_080BB390: .4byte 0xffffff00 -_080BB394: .4byte gUnknown_03005E98 -_080BB398: .4byte REG_BG2HOFS -_080BB39C: .4byte REG_BG2CNT -_080BB3A0: .4byte 0x00000f01 -_080BB3A4: .4byte 0x00001d03 -_080BB3A8: .4byte gMPlay_BGM -_080BB3AC: .4byte gTasks -_080BB3B0: .4byte sub_80BB3B4 - thumb_func_end sub_80BB25C - - thumb_func_start sub_80BB3B4 -sub_80BB3B4: @ 80BB3B4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r0, 0x3 - bl sub_8119F88 - ldr r4, _080BB478 @ =gMain - ldrh r1, [r4, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080BB3D4 - ldr r0, _080BB47C @ =gUnknown_03005D34 - ldrh r0, [r0] - bl sub_811A050 -_080BB3D4: - ldrh r1, [r4, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080BB3E4 - bl StopCryAndClearCrySongs -_080BB3E4: - ldrh r1, [r4, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080BB408 - ldr r1, _080BB47C @ =gUnknown_03005D34 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] - lsls r0, 16 - cmp r0, 0 - bne _080BB404 - movs r2, 0xC0 - lsls r2, 1 - adds r0, r2, 0 - strh r0, [r1] -_080BB404: - bl sub_80BB494 -_080BB408: - ldr r0, _080BB478 @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BB42E - ldr r2, _080BB47C @ =gUnknown_03005D34 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - lsls r0, 16 - movs r1, 0xC0 - lsls r1, 17 - cmp r0, r1 - bls _080BB42A - movs r0, 0x1 - strh r0, [r2] -_080BB42A: - bl sub_80BB494 -_080BB42E: - ldr r0, _080BB478 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BB472 - movs r1, 0x80 - lsls r1, 19 - ldr r2, _080BB480 @ =0x00007140 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x40 - ldr r2, _080BB484 @ =0x000011df - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x4 - ldr r2, _080BB488 @ =0x0000011f - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _080BB48C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BB490 @ =sub_80BA258 - str r1, [r0] - bl DestroyCryMeterNeedleSprite -_080BB472: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BB478: .4byte gMain -_080BB47C: .4byte gUnknown_03005D34 -_080BB480: .4byte 0x00007140 -_080BB484: .4byte 0x000011df -_080BB488: .4byte 0x0000011f -_080BB48C: .4byte gTasks -_080BB490: .4byte sub_80BA258 - thumb_func_end sub_80BB3B4 - - thumb_func_start sub_80BB494 -sub_80BB494: @ 80BB494 - push {lr} - ldr r0, _080BB4A8 @ =gUnknown_03005D34 - ldrh r0, [r0] - movs r1, 0x1 - movs r2, 0x11 - movs r3, 0x3 - bl sub_80BAE78 - pop {r0} - bx r0 - .align 2, 0 -_080BB4A8: .4byte gUnknown_03005D34 - thumb_func_end sub_80BB494 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/global.h b/include/global.h index ce58c02f4..0f5bcde6d 100644 --- a/include/global.h +++ b/include/global.h @@ -44,7 +44,15 @@ fndec\ #define max(a, b) (a <= b ? a : b) // why does GF hate 2d arrays -#define ARR_2D(x, y) ((x) * 2 + (y)) +#define MULTI_DIM_ARR(x, dim, y) ((x) * dim + (y)) + +// dim access enums +enum +{ + B_8 = 1, + B_16 = 2, + B_32 = 4 +}; enum { diff --git a/ld_script.txt b/ld_script.txt index 9acc47bc8..96422937f 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -170,7 +170,6 @@ SECTIONS { src/record_mixing.o(.text); asm/record_mixing.o(.text); src/sound_check_menu.o(.text); - asm/sound_check_menu.o(.text); src/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); src/tv.o(.text); diff --git a/src/battle_ai.c b/src/battle_ai.c index fabe0b61d..691270d69 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -1993,7 +1993,7 @@ static void BattleAICmd_get_item(void) index = gBankTarget; // this hack and a half matches. whatever. i dont care. someone else fix this mess later. PS: still cant fix this. - AI_THINKING_STRUCT->funcResult = ewram[0x160CC + (index * 2)]; + AI_THINKING_STRUCT->funcResult = ewram[MULTI_DIM_ARR(index, B_16, 0x160CC)]; gAIScriptPtr += 2; } diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index 8736a63f1..d1b234ed1 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -8,6 +8,8 @@ #include "menu.h" #include "songs.h" #include "title_screen.h" +#include "sound.h" +#include "pokedex_cry_screen.h" // local task defines #define WINDOW_SELECTED data[0] @@ -43,11 +45,6 @@ enum MAX }; -extern void sub_80BAF84(u8); -extern void sub_80BB25C(u8); -extern void sub_80BA68C(u8); -extern void sub_80BAE78(int, int, int, int); - extern struct ToneData voicegroup_84537C0[]; extern struct ToneData voicegroup_8452590[]; extern struct ToneData voicegroup_8453DC0[]; @@ -58,6 +55,7 @@ extern struct ToneData voicegroup_84549C0[]; extern struct ToneData voicegroup_8453790[]; extern u8 gUnknown_083D0300[18]; +extern s8 gUnknown_083D03F8[5]; extern int gUnknown_020387B4[9]; extern int gUnknown_083D039C[16]; @@ -68,8 +66,11 @@ extern u8 gUnknown_020387B2; extern u8 gUnknown_020387D8; extern u8 gUnknown_020387D9; extern u8 gUnknown_020387B0; +extern u16 gUnknown_03005D34; +extern u8 gUnknown_03005E98; extern struct MusicPlayerInfo *gUnknown_03005D30; +extern struct MusicPlayerInfo gMPlay_BGM; extern u8 *gBGMNames[]; extern u8 *gSENames[]; @@ -96,10 +97,15 @@ extern u8 gDebugText_Reverse[]; extern u8 gDebugText_Stereo[]; extern u8 gUnknown_083D03DC[]; extern u8 gUnknown_083D03DE[]; +extern u8 gOtherText_SE[]; +extern u8 gOtherText_Pan[]; +extern u8 gOtherText_LR[]; +extern u8 gOtherText_RL[]; void sub_80BA258(u8); void sub_80BA384(u8); void sub_80BA65C(u8); +void sub_80BA68C(u8); void sub_80BA6B8(u8); void sub_80BA700(u16, u16, u16); void sub_80BA79C(u8 *, u16, u16); @@ -108,6 +114,13 @@ void sub_80BAA48(u8); void sub_80BACDC(s8); void sub_80BAD5C(void); void sub_80BAE10(u8, u8); +void sub_80BAE78(int, u16, u16, u8); +void sub_80BAF84(u8); +void sub_80BB038(u8); +void sub_80BB1D4(void); +void sub_80BB25C(u8); +void sub_80BB3B4(u8); +void sub_80BB494(void); void sub_80BA0A8(void) { @@ -969,11 +982,11 @@ void sub_80BACDC(s8 var) memcpy(minMaxArray, gUnknown_083D039C, sizeof minMaxArray); gUnknown_020387B4[gUnknown_020387B3] += var; - if(gUnknown_020387B4[gUnknown_020387B3] > minMaxArray[ARR_2D(gUnknown_020387B3, MAX)]) - gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[ARR_2D(gUnknown_020387B3, MIN)]; + if(gUnknown_020387B4[gUnknown_020387B3] > minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)]) + gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MIN)]; - if(gUnknown_020387B4[gUnknown_020387B3] < minMaxArray[ARR_2D(gUnknown_020387B3, MIN)]) - gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[ARR_2D(gUnknown_020387B3, MAX)]; + if(gUnknown_020387B4[gUnknown_020387B3] < minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MIN)]) + gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)]; } void sub_80BAD5C(void) @@ -1000,6 +1013,415 @@ void sub_80BAE10(u8 var1, u8 var2) memcpy(str1, gUnknown_083D03DC, sizeof str1); memcpy(str2, gUnknown_083D03DE, sizeof str2); - MenuPrint(str2, gUnknown_083D0300[ARR_2D(var1, 0)], gUnknown_083D0300[ARR_2D(var1, 1)]); - MenuPrint(str1, gUnknown_083D0300[ARR_2D(var2, 0)], gUnknown_083D0300[ARR_2D(var2, 1)]); + MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); + MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); +} + +/*void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4) +{ + u32 powers[6]; + u8 str[8]; + u8 i; + u8 someVar, someVar2; + + memcpy(powers, gUnknown_083D03E0, sizeof powers); + + for(i = 0; i < var4; i++) + str[i] = 0; + + str[var4 + 1] = 0xFF; + someVar = 0; + + if(var1 < 0) // make absolute value? wtf + { + var1 = -var1; // just use abs? + someVar = 1; + } + + // _080BAED6 + someVar2 = 0; + if(var4 == 1) + someVar2 = 1; + + // _080BAEE2 + for(;;) + { + + } +}*/ + +// no. +__attribute__((naked)) +void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4) +{ + 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\ + sub sp, 0x2C\n\ + mov r8, r0\n\ + lsls r1, 16\n\ + lsrs r6, r1, 16\n\ + lsls r2, 16\n\ + lsrs r2, 16\n\ + lsls r3, 24\n\ + lsrs r7, r3, 24\n\ + mov r1, sp\n\ + ldr r0, _080BAF80 @ =gUnknown_083D03E0\n\ + ldm r0!, {r3-r5}\n\ + stm r1!, {r3-r5}\n\ + ldm r0!, {r3-r5}\n\ + stm r1!, {r3-r5}\n\ + movs r5, 0\n\ + add r0, sp, 0x18\n\ + mov r9, r0\n\ + cmp r5, r7\n\ + bgt _080BAEC0\n\ + mov r4, r9\n\ + movs r3, 0\n\ +_080BAEAC:\n\ + lsls r0, r5, 24\n\ + asrs r0, 24\n\ + adds r1, r4, r0\n\ + strb r3, [r1]\n\ + adds r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + asrs r0, 24\n\ + cmp r0, r7\n\ + ble _080BAEAC\n\ +_080BAEC0:\n\ + adds r0, r7, 0x1\n\ + add r0, r9\n\ + movs r1, 0xFF\n\ + strb r1, [r0]\n\ + movs r1, 0\n\ + mov r3, r8\n\ + cmp r3, 0\n\ + bge _080BAED6\n\ + negs r3, r3\n\ + mov r8, r3\n\ + movs r1, 0x1\n\ +_080BAED6:\n\ + movs r4, 0\n\ + mov r10, r4\n\ + cmp r7, 0x1\n\ + bne _080BAEE2\n\ + movs r5, 0x1\n\ + mov r10, r5\n\ +_080BAEE2:\n\ + subs r0, r7, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + lsls r0, r5, 24\n\ + lsls r6, 24\n\ + str r6, [sp, 0x24]\n\ + lsls r2, 24\n\ + str r2, [sp, 0x28]\n\ + cmp r0, 0\n\ + blt _080BAF62\n\ + str r1, [sp, 0x20]\n\ +_080BAEF8:\n\ + asrs r6, r0, 24\n\ + lsls r0, r6, 2\n\ + add r0, sp\n\ + ldr r1, [r0]\n\ + mov r0, r8\n\ + bl __divsi3\n\ + lsls r0, 24\n\ + lsrs r2, r0, 24\n\ + cmp r0, 0\n\ + bne _080BAF1A\n\ + mov r0, r10\n\ + cmp r0, 0\n\ + bne _080BAF1A\n\ + lsls r4, r5, 24\n\ + cmp r6, 0\n\ + bne _080BAF46\n\ +_080BAF1A:\n\ + lsls r4, r5, 24\n\ + ldr r3, [sp, 0x20]\n\ + cmp r3, 0\n\ + beq _080BAF34\n\ + mov r5, r10\n\ + cmp r5, 0\n\ + bne _080BAF34\n\ + asrs r0, r4, 24\n\ + subs r0, r7, r0\n\ + subs r0, 0x1\n\ + add r0, r9\n\ + movs r1, 0xAE\n\ + strb r1, [r0]\n\ +_080BAF34:\n\ + asrs r1, r4, 24\n\ + subs r1, r7, r1\n\ + add r1, r9\n\ + lsls r0, r2, 24\n\ + asrs r0, 24\n\ + subs r0, 0x5F\n\ + strb r0, [r1]\n\ + movs r0, 0x1\n\ + mov r10, r0\n\ +_080BAF46:\n\ + asrs r4, 24\n\ + lsls r0, r4, 2\n\ + add r0, sp\n\ + ldr r1, [r0]\n\ + mov r0, r8\n\ + bl __modsi3\n\ + mov r8, r0\n\ + subs r4, 0x1\n\ + lsls r4, 24\n\ + lsrs r5, r4, 24\n\ + lsls r0, r5, 24\n\ + cmp r0, 0\n\ + bge _080BAEF8\n\ +_080BAF62:\n\ + ldr r3, [sp, 0x24]\n\ + lsrs r1, r3, 24\n\ + ldr r4, [sp, 0x28]\n\ + lsrs r2, r4, 24\n\ + mov r0, r9\n\ + bl MenuPrint\n\ + add sp, 0x2C\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080BAF80: .4byte gUnknown_083D03E0\n\ + .syntax divided"); +} + +void sub_80BAF84(u8 taskId) +{ + u8 seStr[3]; + u8 panStr[4]; + u8 playingStr[9]; + + memcpy(seStr, gOtherText_SE, sizeof seStr); + memcpy(panStr, gOtherText_Pan, sizeof panStr); + memcpy(playingStr, gDebugText_Playing, sizeof playingStr); + + REG_DISPCNT = 0x3140; + MenuDrawTextWindow(0, 0, 0x1D, 0x13); + MenuPrint(seStr, 3, 2); + MenuPrint(panStr, 3, 4); + MenuPrint(playingStr, 3, 8); + REG_WIN0H = 0xF0; + REG_WIN0V = 0xA0; + gUnknown_020387B4[CRY_TEST_UNK0] = 1; + gUnknown_020387B4[CRY_TEST_PANPOT] = 0; + gUnknown_020387B4[CRY_TEST_CHORUS] = 0; + gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; + gUnknown_020387B4[CRY_TEST_RELEASE] = 0; + sub_80BB1D4(); + gTasks[taskId].func = sub_80BB038; +} + +void sub_80BB038(u8 taskId) +{ + sub_80BB1D4(); + if(gUnknown_020387B4[CRY_TEST_PROGRESS]) + { + if(gUnknown_020387B4[CRY_TEST_RELEASE]) + { + gUnknown_020387B4[CRY_TEST_RELEASE]--; + } + else // _080BB05C + { + s8 panpot = gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]; + if(panpot != -128) + { + if(panpot == 0x7F) + { + gUnknown_020387B4[CRY_TEST_CHORUS] += 2; + if(gUnknown_020387B4[CRY_TEST_CHORUS] < 0x3F) + SE12PanpotControl(gUnknown_020387B4[CRY_TEST_CHORUS]); + } + } + else // _080BB08C + { + gUnknown_020387B4[CRY_TEST_CHORUS] -= 2; + if(gUnknown_020387B4[CRY_TEST_CHORUS] > -0x40) + SE12PanpotControl(gUnknown_020387B4[CRY_TEST_CHORUS]); + } + } + } + // _080BB0A2 + if(gMain.newKeys & 0x2) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = 0x11DF; + REG_WIN0V = 0x11F; + MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + gTasks[taskId].func = sub_80BA258; + return; + } + if(gMain.newKeys & 0x1) // _080BB104 + { + s8 panpot = gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]; + if(panpot != -128) + { + if(panpot == 0x7F) + { + PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], -0x40); + gUnknown_020387B4[CRY_TEST_CHORUS] = -0x40; + gUnknown_020387B4[CRY_TEST_PROGRESS] = 1; + gUnknown_020387B4[CRY_TEST_RELEASE] = 0x1E; + return; + } + } + else // _080BB140 + { + PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], 0x3F); + gUnknown_020387B4[CRY_TEST_CHORUS] = 0x3F; + gUnknown_020387B4[CRY_TEST_PROGRESS] = 1; + gUnknown_020387B4[CRY_TEST_RELEASE] = 0x1E; + return; + } + // _080BB154 + PlaySE12WithPanning(gUnknown_020387B4[CRY_TEST_UNK0], panpot); + gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; + return; + } + if(gMain.newKeys & 0x200) // _080BB15E + { + gUnknown_020387B4[CRY_TEST_PANPOT]++; + if(gUnknown_020387B4[CRY_TEST_PANPOT] > 4) + gUnknown_020387B4[CRY_TEST_PANPOT] = 0; + } + if(gMain.newKeys & 0x100) // _080BB176 + { + gUnknown_020387B4[CRY_TEST_PANPOT]--; + if(gUnknown_020387B4[CRY_TEST_PANPOT] < 0) + gUnknown_020387B4[CRY_TEST_PANPOT] = 4; + } + if(gMain.newAndRepeatedKeys & 0x10) // _080BB192 + { + gUnknown_020387B4[CRY_TEST_UNK0]++; + if(gUnknown_020387B4[CRY_TEST_UNK0] > 0xF7) + gUnknown_020387B4[CRY_TEST_UNK0] = 0; + } + else if(gMain.newAndRepeatedKeys & 0x20) // _080BB1B0 + { + gUnknown_020387B4[CRY_TEST_UNK0]--; + if(gUnknown_020387B4[CRY_TEST_UNK0] < 0) + gUnknown_020387B4[CRY_TEST_UNK0] = 0xF7; + } +} + +void sub_80BB1D4(void) +{ + u8 lrStr[5]; + u8 rlStr[5]; + + memcpy(lrStr, gOtherText_LR, sizeof lrStr); + memcpy(rlStr, gOtherText_RL, sizeof rlStr); + + sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0], 7, 2, 3); + + switch(gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]) + { + case 0x7F: + MenuPrint(lrStr, 7, 4); + break; + case -0x80: + MenuPrint(rlStr, 7, 4); + break; + default: + sub_80BAE78(gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]], 7, 4, 3); + break; + } + sub_80BAE78(IsSEPlaying(), 12, 8, 1); +} + +void sub_80BB25C(u8 taskId) +{ + struct CryRelatedStruct cryStruct, cryStruct2; + u8 zero; + + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + gUnknown_03005D34 = 1; + ResetSpriteData(); + FreeAllSpritePalettes(); + + cryStruct.unk0 = 0x2000; + cryStruct.unk2 = 29; + cryStruct.paletteNo = 12; + cryStruct.yPos = 30; + cryStruct.xPos = 4; + + zero = 0; // wtf? + gUnknown_03005E98 = 0; + + while(sub_8119E3C(&cryStruct, 3) == FALSE); + + cryStruct2.unk0 = 0; + cryStruct2.unk2 = 15; + cryStruct2.paletteNo = 13; + cryStruct2.xPos = 12; + cryStruct2.yPos = 12; + + zero = 0; // wtf? + gUnknown_03005E98 = 0; + + while(ShowPokedexCryScreen(&cryStruct2, 2) == FALSE); + + MenuDrawTextWindow(0, 16, 5, 19); + sub_80BB494(); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG2CNT = 0xF01; + REG_BG3CNT = 0x1D03; + REG_DISPCNT = 0x1d40; + m4aMPlayFadeOutTemporarily(&gMPlay_BGM, 2); + gTasks[taskId].func = sub_80BB3B4; +} + +void sub_80BB3B4(u8 taskId) +{ + sub_8119F88(3); + + if(gMain.newKeys & 0x1) + { + sub_811A050(gUnknown_03005D34); + } + if(gMain.newKeys & 0x100) + { + StopCryAndClearCrySongs(); + } + if(gMain.newAndRepeatedKeys & 0x40) + { + if(--gUnknown_03005D34 == 0) + gUnknown_03005D34 = 384; // total species + sub_80BB494(); + } + if(gMain.newAndRepeatedKeys & 0x80) + { + if(++gUnknown_03005D34 > 384) + gUnknown_03005D34 = 1; // total species + sub_80BB494(); + } + if(gMain.newKeys & 0x2) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = 0x11DF; + REG_WIN0V = 0x11F; + MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + gTasks[taskId].func = sub_80BA258; + DestroyCryMeterNeedleSprite(); + } +} + +void sub_80BB494(void) +{ + sub_80BAE78(gUnknown_03005D34, 1, 17, 3); } -- cgit v1.2.3 From d9878add7e63f765f9a6dc3217324e23c7b5a2a1 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 30 Jun 2017 15:40:19 -0400 Subject: formatting --- src/battle_ai.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/battle_ai.c b/src/battle_ai.c index 691270d69..fa018ba22 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -1993,7 +1993,7 @@ static void BattleAICmd_get_item(void) index = gBankTarget; // this hack and a half matches. whatever. i dont care. someone else fix this mess later. PS: still cant fix this. - AI_THINKING_STRUCT->funcResult = ewram[MULTI_DIM_ARR(index, B_16, 0x160CC)]; + AI_THINKING_STRUCT->funcResult = ewram[MULTI_DIM_ARR(index, B_16, 0x160CC)]; gAIScriptPtr += 2; } -- cgit v1.2.3 From 1b9318d8af8181ab9a4f64170d193c4b76d84dc3 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 30 Jun 2017 15:53:41 -0400 Subject: label data locals and remove fake news --- src/sound_check_menu.c | 93 ++++++++++++++++++++++++++------------------------ 1 file changed, 48 insertions(+), 45 deletions(-) diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index d1b234ed1..12cde5da8 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -16,6 +16,9 @@ #define BGM_INDEX data[1] #define SE_INDEX data[2] #define UNK_DATA3 data[3] +#define UNK_DATA4 data[4] +// data 5-7 are not used +// i dont have a define for data 8 yet because its used in a nonmatching and I can't be sure yet its actually used. // window selections enum @@ -245,65 +248,65 @@ bool8 sub_80BA400(u8 taskId) // Task_ProcessSoundCheckMenuInput { if(gMain.newKeys & R_BUTTON) // driver test { - gTasks[taskId].func = sub_80BA800; + TASK.FUNC = sub_80BA800; return FALSE; } if(gMain.newKeys & L_BUTTON) { - gTasks[taskId].func = sub_80BAF84; + TASK.FUNC = sub_80BAF84; return FALSE; } if(gMain.newKeys & START_BUTTON) { - gTasks[taskId].func = sub_80BB25C; + TASK.FUNC = sub_80BB25C; return FALSE; } if(gMain.newKeys & A_BUTTON) // both these cases insist on non reuses of certain data variables and cause the function to not match. { - if(gTasks[taskId].data[0] != 0) // is playing? + if(TASK.WINDOW_SELECTED != 0) // is playing? { - if(gTasks[taskId].data[4] != 0) + if(TASK.UNK_DATA4 != 0) { - if(gTasks[taskId].data[2] != 0) // why are you insiting on a non signed halfword? + if(TASK.SE_INDEX != 0) // why are you insiting on a non signed halfword? { - m4aSongNumStop(gTasks[taskId].data[4]); + m4aSongNumStop(TASK.UNK_DATA4); } else { - m4aSongNumStop(gTasks[taskId].data[2]); - gTasks[taskId].data[4] = gTasks[taskId].data[2]; + m4aSongNumStop(TASK.SE_INDEX); + TASK.UNK_DATA4 = TASK.SE_INDEX; return FALSE; } } - else if(gTasks[taskId].data[2] == 0) // _080BA4BA + else if(TASK.SE_INDEX == 0) // _080BA4BA { return FALSE; } // _080BA4C4 - m4aSongNumStart(gTasks[taskId].data[2]); - gTasks[taskId].data[4] = gTasks[taskId].data[2]; + m4aSongNumStart(TASK.SE_INDEX); + TASK.UNK_DATA4 = TASK.SE_INDEX; return FALSE; } else // _080BA4D0 { - if(gTasks[taskId].data[3] != 0) + if(TASK.UNK_DATA3 != 0) { - if(gTasks[taskId].data[1] != 0) + if(TASK.BGM_INDEX != 0) { - m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + m4aSongNumStop(TASK.UNK_DATA3 + BGM_STOP); } else // _080BA500 { - m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); - gTasks[taskId].data[3] = gTasks[taskId].data[1]; + m4aSongNumStop(TASK.UNK_DATA3 + BGM_STOP); + TASK.UNK_DATA3 = TASK.BGM_INDEX; return FALSE; } } - else if(gTasks[taskId].data[1] == 0) // _080BA514 + else if(TASK.BGM_INDEX == 0) // _080BA514 return FALSE; - m4aSongNumStart(gTasks[taskId].data[1] + BGM_STOP); - gTasks[taskId].data[3] = gTasks[taskId].data[1]; + m4aSongNumStart(TASK.BGM_INDEX + BGM_STOP); + TASK.UNK_DATA3 = TASK.BGM_INDEX; } return FALSE; } @@ -311,17 +314,17 @@ bool8 sub_80BA400(u8 taskId) // Task_ProcessSoundCheckMenuInput { m4aSongNumStart(5); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gTasks[taskId].func = sub_80BA68C; + TASK.FUNC = sub_80BA68C; return FALSE; } if(gMain.newAndRepeatedKeys & DPAD_UP) { - gTasks[taskId].data[8] ^= A_BUTTON; // huh? + TASK.data[8] ^= A_BUTTON; // huh? return TRUE; } if(gMain.newAndRepeatedKeys & DPAD_DOWN) { - gTasks[taskId].data[8] ^= A_BUTTON; // huh? + TASK.data[8] ^= A_BUTTON; // huh? return TRUE; } else @@ -329,48 +332,48 @@ bool8 sub_80BA400(u8 taskId) // Task_ProcessSoundCheckMenuInput u16 keys = gMain.newAndRepeatedKeys & DPAD_RIGHT; if(keys) { - if(gTasks[taskId].data[0] != 0) + if(TASK.WINDOW_SELECTED != 0) { - if(gTasks[taskId].data[2] > 0) + if(TASK.SE_INDEX > 0) { - gTasks[taskId].data[2]--; + TASK.SE_INDEX--; } else { - gTasks[taskId].data[2] = 0xF7; + TASK.SE_INDEX = 0xF7; } } - else if(gTasks[taskId].data[1] > 0) + else if(TASK.BGM_INDEX > 0) { - gTasks[taskId].data[1]--; + TASK.BGM_INDEX--; } else { - gTasks[taskId].data[1] = 0x75; + TASK.BGM_INDEX = 0x75; } return TRUE; } if(gMain.newAndRepeatedKeys & DPAD_LEFT) { - if(gTasks[taskId].data[0] != 0) + if(TASK.WINDOW_SELECTED != 0) { - if(gTasks[taskId].data[2] < 0xF7) + if(TASK.SE_INDEX < 0xF7) { - gTasks[taskId].data[2]++; + TASK.SE_INDEX++; } else { - gTasks[taskId].data[2] = keys; // ?? + TASK.SE_INDEX = keys; // ?? } } - else if(gTasks[taskId].data[1] < 0x75) + else if(TASK.BGM_INDEX < 0x75) { - gTasks[taskId].data[1]++; + TASK.BGM_INDEX++; return TRUE; } else { - gTasks[taskId].data[1] = gTasks[taskId].data[2]; + TASK.BGM_INDEX = TASK.SE_INDEX; return TRUE; } return TRUE; @@ -709,7 +712,7 @@ _080BA658: .4byte gUnknown_020387B0\n\ void sub_80BA65C(u8 taskId) { if(sub_80BA400(taskId) != FALSE) - gTasks[taskId].func = sub_80BA384; + TASK.FUNC = sub_80BA384; } void sub_80BA68C(u8 taskId) @@ -849,7 +852,7 @@ void sub_80BA800(u8 taskId) // Task_DrawDriverTestMenu gUnknown_020387B4[CRY_TEST_PRIORITY] = 2; sub_80BAD5C(); sub_80BAE10(0, 0); - gTasks[taskId].func = sub_80BAA48; + TASK.FUNC = sub_80BAA48; } void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput @@ -860,7 +863,7 @@ void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput REG_WIN0H = 0x11DF; REG_WIN0V = 0x11F; MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - gTasks[taskId].func = sub_80BA258; + TASK.FUNC = sub_80BA258; return; } if(gMain.newAndRepeatedKeys & 0x40) // _080BAAA8 @@ -1221,7 +1224,7 @@ void sub_80BAF84(u8 taskId) gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; gUnknown_020387B4[CRY_TEST_RELEASE] = 0; sub_80BB1D4(); - gTasks[taskId].func = sub_80BB038; + TASK.FUNC = sub_80BB038; } void sub_80BB038(u8 taskId) @@ -1260,7 +1263,7 @@ void sub_80BB038(u8 taskId) REG_WIN0H = 0x11DF; REG_WIN0V = 0x11F; MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - gTasks[taskId].func = sub_80BA258; + TASK.FUNC = sub_80BA258; return; } if(gMain.newKeys & 0x1) // _080BB104 @@ -1383,7 +1386,7 @@ void sub_80BB25C(u8 taskId) REG_BG3CNT = 0x1D03; REG_DISPCNT = 0x1d40; m4aMPlayFadeOutTemporarily(&gMPlay_BGM, 2); - gTasks[taskId].func = sub_80BB3B4; + TASK.FUNC = sub_80BB3B4; } void sub_80BB3B4(u8 taskId) @@ -1407,7 +1410,7 @@ void sub_80BB3B4(u8 taskId) if(gMain.newAndRepeatedKeys & 0x80) { if(++gUnknown_03005D34 > 384) - gUnknown_03005D34 = 1; // total species + gUnknown_03005D34 = 1; sub_80BB494(); } if(gMain.newKeys & 0x2) @@ -1416,7 +1419,7 @@ void sub_80BB3B4(u8 taskId) REG_WIN0H = 0x11DF; REG_WIN0V = 0x11F; MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - gTasks[taskId].func = sub_80BA258; + TASK.FUNC = sub_80BA258; DestroyCryMeterNeedleSprite(); } } -- cgit v1.2.3 From 6607a006745aab863eb9689fd2404837ac3d453f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 30 Jun 2017 18:59:17 -0400 Subject: add data to C file --- data/sound_check_menu.s | 121 ----- data/text/song_names.inc | 1105 ---------------------------------------------- ld_script.txt | 2 +- src/sound_check_menu.c | 960 ++++++++++++++++++++++++++++++++++++++-- 4 files changed, 926 insertions(+), 1262 deletions(-) delete mode 100644 data/sound_check_menu.s delete mode 100644 data/text/song_names.inc diff --git a/data/sound_check_menu.s b/data/sound_check_menu.s deleted file mode 100644 index 9278b8b45..000000000 --- a/data/sound_check_menu.s +++ /dev/null @@ -1,121 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - - .align 2 @ object file boundary? - -gDebugText_SoundCheckJap:: @ 83D02C8 - .string "サウンドチェック$" @ Sound Check - -gDebugText_BGM:: @ 83D02D1 - .string "BGM$" - -gDebugText_SE:: @ 83D02D5 - .string "SE $" - -gDebugText_ABDesc:: @ 83D02D9 - .string "A‥さいせい B‥おわり$" - -gDebugText_UpDown:: @ 83D02E6 - .string "L‥UP R‥DOWN$" - -gDebugText_DriverTest:: @ 83D02F2 - .string "R‥DRIVER-TEST$" - -gUnknown_083D0300:: @ 83D0300 - .byte 1, 1 - .byte 1, 3 - .byte 1, 5 - .byte 1, 7 - .byte 1, 9 - .byte 1, 11 - .byte 1, 13 - .byte 1, 15 - .byte 1, 17 - -gDebugText_BBack:: @ 83D0312 - .string "Bぼたんで もどる$" @ back - -gDebugText_APlay:: @ 83D031C - .string "Aぼたんで さいせい$" @ play - -gDebugText_Voice:: @ 83D0327 - .string "VOICE‥‥‥‥$" - -gDebugText_Volume:: @ 83D0331 - .string "VOLUME‥‥‥$" - -gDebugText_Panpot:: @ 83D033B - .string "PANPOT‥‥‥$" - -gDebugText_Pitch:: @ 83D0345 - .string "PITCH‥‥‥‥$" - -gDebugText_Length:: @ 83D034F - .string "LENGTH‥‥‥$" - -gDebugText_Release:: @ 83D0359 - .string "RELEASE‥‥$" - -gDebugText_Progress:: @ 83D0363 - .string "PROGRESS‥$" - -gDebugText_Chorus:: @ 83D036D - .string "CHORUS‥‥‥$" - -gDebugText_Priority:: @ 83D0377 - .string "PRIORITY‥$" - -gDebugText_Playing:: @ 83D0381 - .string "さいせいちゆう‥$" @ 再生中 (playing) - -gDebugText_Reverse:: @ 83D038A - .string "はんてん‥‥‥‥$" @ 反転 (reverse) - -gDebugText_Stereo:: @ 83D0393 - .string "すてれお‥‥‥‥$" @ stereo - - .align 2 -gUnknown_083D039C:: @ 83D039C - .4byte 0, 387 - .4byte 0, 127 - .4byte -127, 127 - .4byte -128, 32639 - .4byte 0, 65535 - .4byte 0, 255 - .4byte 0, 65535 - .4byte -64, 63 - -gUnknown_083D03DC:: @ 83D03DC - .string "▶$" - -gUnknown_083D03DE:: @ 83D03DE - .string " $" - - .align 2 -gUnknown_083D03E0:: @ 83D03E0 - .4byte 1 - .4byte 10 - .4byte 100 - .4byte 1000 - .4byte 10000 - .4byte 100000 - -gUnknown_083D03F8:: @ 83D03F8 - .byte 0x3F, 0x00, 0xC0, 0x7F, 0x80 @ stereo panning - -gOtherText_SE:: @ 83D03FD - .string "SE$" - -gOtherText_Pan:: @ 83D0400 - .string "PAN$" - -gOtherText_LR:: @ 83D0404 - .string " LR$" - -gOtherText_RL:: @ 83D0409 - .string " RL$" - -@ 83D040E - .include "data/text/song_names.inc" diff --git a/data/text/song_names.inc b/data/text/song_names.inc deleted file mode 100644 index 29fad36e1..000000000 --- a/data/text/song_names.inc +++ /dev/null @@ -1,1105 +0,0 @@ -BGMName_STOP: - .string "STOP$" -BGMName_TETSUJI: - .string "TETSUJI$" -BGMName_FIELD13: - .string "FIELD13$" -BGMName_KACHI22: - .string "KACHI22$" -BGMName_KACHI2: - .string "KACHI2$" -BGMName_KACHI3: - .string "KACHI3$" -BGMName_KACHI5: - .string "KACHI5$" -BGMName_PCC: - .string "PCC$" -BGMName_NIBI: - .string "NIBI$" -BGMName_SUIKUN: - .string "SUIKUN$" -BGMName_DOORO1: - .string "DOORO1$" -BGMName_DOORO_X1: - .string "DOORO-X1$" -BGMName_DOORO_X3: - .string "DOORO-X3$" -BGMName_MACHI_S2: - .string "MACHI-S2$" -BGMName_MACHI_S4: - .string "MACHI-S4$" -BGMName_GIM: - .string "GIM$" -BGMName_NAMINORI: - .string "NAMINORI$" -BGMName_DAN01: - .string "DAN01$" -BGMName_FANFA1: - .string "FANFA1$" -BGMName_ME_ASA: - .string "ME-ASA$" -BGMName_ME_BACHI: - .string "ME-BACHI$" -BGMName_FANFA4: - .string "FANFA4$" -BGMName_FANFA5: - .string "FANFA5$" -BGMName_ME_WAZA: - .string "ME-WAZA$" -BGMName_BIJYUTU: - .string "BIJYUTU$" -BGMName_DOORO_X4: - .string "DOORO-X4$" -BGMName_FUNE_KAN: - .string "FUNE-KAN$" -BGMName_ME_SHINKA: - .string "ME-SHINKA$" -BGMName_SHINKA: - .string "SHINKA$" -BGMName_ME_WASURE: - .string "ME-WASURE$" -BGMName_SYOUJOEYE: - .string "SYOUJOEYE$" -BGMName_BOYEYE: - .string "BOYEYE$" -BGMName_DAN02: - .string "DAN02$" -BGMName_MACHI_S3: - .string "MACHI-S3$" -BGMName_ODAMAKI: - .string "ODAMAKI$" -BGMName_B_TOWER: - .string "B-TOWER$" -BGMName_SWIMEYE: - .string "SWIMEYE$" -BGMName_DAN03: - .string "DAN03$" -BGMName_ME_KINOMI: - .string "ME-KINOMI$" -BGMName_ME_TAMA: - .string "ME-TAMA$" -BGMName_ME_B_BIG: - .string "ME-B-BIG$" -BGMName_ME_B_SMALL: - .string "ME-B-SMALL$" -BGMName_ME_ZANNEN: - .string "ME-ZANNEN$" -BGMName_BD_TIME: - .string "BD-TIME$" -BGMName_TEST1: - .string "TEST1$" -BGMName_TEST2: - .string "TEST2$" -BGMName_TEST3: - .string "TEST3$" -BGMName_TEST4: - .string "TEST4$" -BGMName_TEST: - .string "TEST$" -BGMName_GOMACHI0: - .string "GOMACHI0$" -BGMName_GOTOWN: - .string "GOTOWN$" -BGMName_POKECEN: - .string "POKECEN$" -BGMName_NEXTROAD: - .string "NEXTROAD$" -BGMName_GRANROAD: - .string "GRANROAD$" -BGMName_CYCLING: - .string "CYCLING$" -BGMName_FRIENDLY: - .string "FRIENDLY$" -BGMName_MISHIRO: - .string "MISHIRO$" -BGMName_TOZAN: - .string "TOZAN$" -BGMName_GIRLEYE: - .string "GIRLEYE$" -BGMName_MINAMO: - .string "MINAMO$" -BGMName_ASHROAD: - .string "ASHROAD$" -BGMName_EVENT0: - .string "EVENT0$" -BGMName_DEEPDEEP: - .string "DEEPDEEP$" -BGMName_KACHI1: - .string "KACHI1$" -BGMName_TITLE3: - .string "TITLE3$" -BGMName_DEMO1: - .string "DEMO1$" -BGMName_GIRL_SUP: - .string "GIRL-SUP$" -BGMName_HAGESHII: - .string "HAGESHII$" -BGMName_KAKKOII: - .string "KAKKOII$" -BGMName_KAZANBAI: - .string "KAZANBAI$" -BGMName_AQA_0: - .string "AQA-0$" -BGMName_TSURETEK: - .string "TSURETEK$" -BGMName_BOY_SUP: - .string "BOY-SUP$" -BGMName_RAINBOW: - .string "RAINBOW$" -BGMName_AYASII: - .string "AYASII$" -BGMName_KACHI4: - .string "KACHI4$" -BGMName_ROPEWAY: - .string "ROPEWAY$" -BGMName_CASINO: - .string "CASINO$" -BGMName_HIGHTOWN: - .string "HIGHTOWN$" -BGMName_SAFARI: - .string "SAFARI$" -BGMName_C_ROAD: - .string "C-ROAD$" -BGMName_AJITO: - .string "AJITO$" -BGMName_M_BOAT: - .string "M-BOAT$" -BGMName_M_DUNGON: - .string "M-DUNGON$" -BGMName_FINECITY: - .string "FINECITY$" -BGMName_MACHUPI: - .string "MACHUPI$" -BGMName_P_SCHOOL: - .string "P-SCHOOL$" -BGMName_DENDOU: - .string "DENDOU$" -BGMName_TONEKUSA: - .string "TONEKUSA$" -BGMName_MABOROSI: - .string "MABOROSI$" -BGMName_CON_FAN: - .string "CON-FAN$" -BGMName_CONTEST0: - .string "CONTEST0$" -BGMName_MGM0: - .string "MGM0$" -BGMName_T_BATTLE: - .string "T-BATTLE$" -BGMName_OOAME: - .string "OOAME$" -BGMName_HIDERI: - .string "HIDERI$" -BGMName_RUNECITY: - .string "RUNECITY$" -BGMName_CON_K: - .string "CON-K$" -BGMName_EIKOU_R: - .string "EIKOU-R$" -BGMName_KARAKURI: - .string "KARAKURI$" -BGMName_HUTAGO: - .string "HUTAGO$" -BGMName_SITENNOU: - .string "SITENNOU$" -BGMName_YAMA_EYE: - .string "YAMA-EYE$" -BGMName_CONLOBBY: - .string "CONLOBBY$" -BGMName_INTER_V: - .string "INTER-V$" -BGMName_DAIGO: - .string "DAIGO$" -BGMName_THANKFOR: - .string "THANKFOR$" -BGMName_END: - .string "END$" -BGMName_BATTLE27: - .string "BATTLE27$" -BGMName_BATTLE31: - .string "BATTLE31$" -BGMName_BATTLE20: - .string "BATTLE20$" -BGMName_BATTLE32: - .string "BATTLE32$" -BGMName_BATTLE33: - .string "BATTLE33$" -BGMName_BATTLE36: - .string "BATTLE36$" -BGMName_BATTLE34: - .string "BATTLE34$" -BGMName_BATTLE35: - .string "BATTLE35$" -BGMName_BATTLE38: - .string "BATTLE38$" -BGMName_BATTLE30: - .string "BATTLE30$" - - .align 2 -gBGMNames:: @ 83D07AC - .word BGMName_STOP - .word BGMName_TETSUJI - .word BGMName_FIELD13 - .word BGMName_KACHI22 - .word BGMName_KACHI2 - .word BGMName_KACHI3 - .word BGMName_KACHI5 - .word BGMName_PCC - .word BGMName_NIBI - .word BGMName_SUIKUN - .word BGMName_DOORO1 - .word BGMName_DOORO_X1 - .word BGMName_DOORO_X3 - .word BGMName_MACHI_S2 - .word BGMName_MACHI_S4 - .word BGMName_GIM - .word BGMName_NAMINORI - .word BGMName_DAN01 - .word BGMName_FANFA1 - .word BGMName_ME_ASA - .word BGMName_ME_BACHI - .word BGMName_FANFA4 - .word BGMName_FANFA5 - .word BGMName_ME_WAZA - .word BGMName_BIJYUTU - .word BGMName_DOORO_X4 - .word BGMName_FUNE_KAN - .word BGMName_ME_SHINKA - .word BGMName_SHINKA - .word BGMName_ME_WASURE - .word BGMName_SYOUJOEYE - .word BGMName_BOYEYE - .word BGMName_DAN02 - .word BGMName_MACHI_S3 - .word BGMName_ODAMAKI - .word BGMName_B_TOWER - .word BGMName_SWIMEYE - .word BGMName_DAN03 - .word BGMName_ME_KINOMI - .word BGMName_ME_TAMA - .word BGMName_ME_B_BIG - .word BGMName_ME_B_SMALL - .word BGMName_ME_ZANNEN - .word BGMName_BD_TIME - .word BGMName_TEST1 - .word BGMName_TEST2 - .word BGMName_TEST3 - .word BGMName_TEST4 - .word BGMName_TEST - .word BGMName_GOMACHI0 - .word BGMName_GOTOWN - .word BGMName_POKECEN - .word BGMName_NEXTROAD - .word BGMName_GRANROAD - .word BGMName_CYCLING - .word BGMName_FRIENDLY - .word BGMName_MISHIRO - .word BGMName_TOZAN - .word BGMName_GIRLEYE - .word BGMName_MINAMO - .word BGMName_ASHROAD - .word BGMName_EVENT0 - .word BGMName_DEEPDEEP - .word BGMName_KACHI1 - .word BGMName_TITLE3 - .word BGMName_DEMO1 - .word BGMName_GIRL_SUP - .word BGMName_HAGESHII - .word BGMName_KAKKOII - .word BGMName_KAZANBAI - .word BGMName_AQA_0 - .word BGMName_TSURETEK - .word BGMName_BOY_SUP - .word BGMName_RAINBOW - .word BGMName_AYASII - .word BGMName_KACHI4 - .word BGMName_ROPEWAY - .word BGMName_CASINO - .word BGMName_HIGHTOWN - .word BGMName_SAFARI - .word BGMName_C_ROAD - .word BGMName_AJITO - .word BGMName_M_BOAT - .word BGMName_M_DUNGON - .word BGMName_FINECITY - .word BGMName_MACHUPI - .word BGMName_P_SCHOOL - .word BGMName_DENDOU - .word BGMName_TONEKUSA - .word BGMName_MABOROSI - .word BGMName_CON_FAN - .word BGMName_CONTEST0 - .word BGMName_MGM0 - .word BGMName_T_BATTLE - .word BGMName_OOAME - .word BGMName_HIDERI - .word BGMName_RUNECITY - .word BGMName_CON_K - .word BGMName_EIKOU_R - .word BGMName_KARAKURI - .word BGMName_HUTAGO - .word BGMName_SITENNOU - .word BGMName_YAMA_EYE - .word BGMName_CONLOBBY - .word BGMName_INTER_V - .word BGMName_DAIGO - .word BGMName_THANKFOR - .word BGMName_END - .word BGMName_BATTLE27 - .word BGMName_BATTLE31 - .word BGMName_BATTLE20 - .word BGMName_BATTLE32 - .word BGMName_BATTLE33 - .word BGMName_BATTLE36 - .word BGMName_BATTLE34 - .word BGMName_BATTLE35 - .word BGMName_BATTLE38 - .word BGMName_BATTLE30 - -SEName_STOP: - .string "STOP$" -SEName_KAIFUKU: - .string "KAIFUKU$" -SEName_PC_LOGON: - .string "PC-LOGON$" -SEName_PC_OFF: - .string "PC-OFF$" -SEName_PC_ON: - .string "PC-ON$" -SEName_SELECT: - .string "SELECT$" -SEName_WIN_OPEN: - .string "WIN-OPEN$" -SEName_WALL_HIT: - .string "WALL-HIT$" -SEName_DOOR: - .string "DOOR$" -SEName_KAIDAN: - .string "KAIDAN$" -SEName_DANSA: - .string "DANSA$" -SEName_JITENSYA: - .string "JITENSYA$" -SEName_KOUKA_L: - .string "KOUKA-L$" -SEName_KOUKA_M: - .string "KOUKA-M$" -SEName_KOUKA_H: - .string "KOUKA-H$" -SEName_BOWA2: - .string "BOWA2$" -SEName_POKE_DEAD: - .string "POKE-DEAD$" -SEName_NIGERU: - .string "NIGERU$" -SEName_JIDO_DOA: - .string "JIDO-DOA$" -SEName_NAMINORI: - .string "NAMINORI$" -SEName_BAN: - .string "BAN$" -SEName_PIN: - .string "PIN$" -SEName_BOO: - .string "BOO$" -SEName_BOWA: - .string "BOWA$" -SEName_JYUNI: - .string "JYUNI$" -SEName_A: - .string "A$" -SEName_I: - .string "I$" -SEName_U: - .string "U$" -SEName_E: - .string "E$" -SEName_O: - .string "O$" -SEName_N: - .string "N$" -SEName_SEIKAI: - .string "SEIKAI$" -SEName_HAZURE: - .string "HAZURE$" -SEName_EXP: - .string "EXP$" -SEName_JITE_PYOKO: - .string "JITE-PYOKO$" -SEName_MU_PACHI: - .string "MU-PACHI$" -SEName_TK_KASYA: - .string "TK-KASYA$" -SEName_FU_ZAKU: - .string "FU-ZAKU$" -SEName_FU_ZAKU2: - .string "FU-ZAKU2$" -SEName_FU_ZUZUZU: - .string "FU-ZUZUZU$" -SEName_RU_GASHIN: - .string "RU-GASHIN$" -SEName_RU_GASYAN: - .string "RU-GASYAN$" -SEName_RU_BARI: - .string "RU-BARI$" -SEName_RU_HYUU: - .string "RU-HYUU$" -SEName_KI_GASYAN: - .string "KI-GASYAN$" -SEName_TK_WARPIN: - .string "TK-WARPIN$" -SEName_TK_WARPOUT: - .string "TK-WARPOUT$" -SEName_TU_SAA: - .string "TU-SAA$" -SEName_HI_TURUN: - .string "HI-TURUN$" -SEName_TRACK_MOVE: - .string "TRACK-MOVE$" -SEName_TRACK_STOP: - .string "TRACK-STOP$" -SEName_TRACK_HAIK: - .string "TRACK-HAIK$" -SEName_TRACK_DOOR: - .string "TRACK-DOOR$" -SEName_MOTER: - .string "MOTER$" -SEName_CARD: - .string "CARD$" -SEName_SAVE: - .string "SAVE$" -SEName_KON: - .string "KON$" -SEName_KON2: - .string "KON2$" -SEName_KON3: - .string "KON3$" -SEName_KON4: - .string "KON4$" -SEName_SUIKOMU: - .string "SUIKOMU$" -SEName_NAGERU: - .string "NAGERU$" -SEName_TOY_C: - .string "TOY-C$" -SEName_TOY_D: - .string "TOY-D$" -SEName_TOY_E: - .string "TOY-E$" -SEName_TOY_F: - .string "TOY-F$" -SEName_TOY_G: - .string "TOY-G$" -SEName_TOY_A: - .string "TOY-A$" -SEName_TOY_B: - .string "TOY-B$" -SEName_TOY_C1: - .string "TOY-C1$" -SEName_MIZU: - .string "MIZU$" -SEName_HASHI: - .string "HASHI$" -SEName_DAUGI: - .string "DAUGI$" -SEName_PINPON: - .string "PINPON$" -SEName_FUUSEN1: - .string "FUUSEN1$" -SEName_FUUSEN2: - .string "FUUSEN2$" -SEName_FUUSEN3: - .string "FUUSEN3$" -SEName_TOY_KABE: - .string "TOY-KABE$" -SEName_TOY_DANGO: - .string "TOY-DANGO$" -SEName_DOKU: - .string "DOKU$" -SEName_ESUKA: - .string "ESUKA$" -SEName_T_AME: - .string "T-AME$" -SEName_T_AME_E: - .string "T-AME-E$" -SEName_T_OOAME: - .string "T-OOAME$" -SEName_T_OOAME_E: - .string "T-OOAME-E$" -SEName_T_KOAME: - .string "T-KOAME$" -SEName_T_KOAME_E: - .string "T-KOAME-E$" -SEName_T_KAMI: - .string "T-KAMI$" -SEName_T_KAMI2: - .string "T-KAMI2$" -SEName_ELEBETA: - .string "ELEBETA$" -SEName_HINSI: - .string "HINSI$" -SEName_EXPMAX: - .string "EXPMAX$" -SEName_TAMAKORO: - .string "TAMAKORO$" -SEName_TAMAKORO_E: - .string "TAMAKORO-E$" -SEName_BASABASA: - .string "BASABASA$" -SEName_REGI: - .string "REGI$" -SEName_C_GAJI: - .string "C-GAJI$" -SEName_C_MAKU_U: - .string "C-MAKU-U$" -SEName_C_MAKU_D: - .string "C-MAKU-D$" -SEName_C_PASI: - .string "C-PASI$" -SEName_C_SYU: - .string "C-SYU$" -SEName_C_PIKON: - .string "C-PIKON$" -SEName_REAPOKE: - .string "REAPOKE$" -SEName_OP_BASYU: - .string "OP-BASYU$" -SEName_BT_START: - .string "BT-START$" -SEName_DENDOU: - .string "DENDOU$" -SEName_JIHANKI: - .string "JIHANKI$" -SEName_TAMA: - .string "TAMA$" -SEName_Z_SCROLL: - .string "Z-SCROLL$" -SEName_Z_PAGE: - .string "Z-PAGE$" -SEName_PN_ON: - .string "PN-ON$" -SEName_PN_OFF: - .string "PN-OFF$" -SEName_Z_SEARCH: - .string "Z-SEARCH$" -SEName_TAMAGO: - .string "TAMAGO$" -SEName_TB_START: - .string "TB-START$" -SEName_TB_KON: - .string "TB-KON$" -SEName_TB_KARA: - .string "TB-KARA$" -SEName_BIDORO: - .string "BIDORO$" -SEName_W085: - .string "W085$" -SEName_W085B: - .string "W085B$" -SEName_W231: - .string "W231$" -SEName_W171: - .string "W171$" -SEName_W233: - .string "W233$" -SEName_W233B: - .string "W233B$" -SEName_W145: - .string "W145$" -SEName_W145B: - .string "W145B$" -SEName_W145C: - .string "W145C$" -SEName_W240: - .string "W240$" -SEName_W015: - .string "W015$" -SEName_W081: - .string "W081$" -SEName_W081B: - .string "W081B$" -SEName_W088: - .string "W088$" -SEName_W016: - .string "W016$" -SEName_W016B: - .string "W016B$" -SEName_W003: - .string "W003$" -SEName_W104: - .string "W104$" -SEName_W013: - .string "W013$" -SEName_W196: - .string "W196$" -SEName_W086: - .string "W086$" -SEName_W004: - .string "W004$" -SEName_W025: - .string "W025$" -SEName_W025B: - .string "W025B$" -SEName_W152: - .string "W152$" -SEName_W026: - .string "W026$" -SEName_W172: - .string "W172$" -SEName_W172B: - .string "W172B$" -SEName_W053: - .string "W053$" -SEName_W007: - .string "W007$" -SEName_W092: - .string "W092$" -SEName_W221: - .string "W221$" -SEName_W221B: - .string "W221B$" -SEName_W052: - .string "W052$" -SEName_W036: - .string "W036$" -SEName_W059: - .string "W059$" -SEName_W059B: - .string "W059B$" -SEName_W010: - .string "W010$" -SEName_W011: - .string "W011$" -SEName_W017: - .string "W017$" -SEName_W019: - .string "W019$" -SEName_W028: - .string "W028$" -SEName_W013B: - .string "W013B$" -SEName_W044: - .string "W044$" -SEName_W029: - .string "W029$" -SEName_W057: - .string "W057$" -SEName_W056: - .string "W056$" -SEName_W250: - .string "W250$" -SEName_W030: - .string "W030$" -SEName_W039: - .string "W039$" -SEName_W054: - .string "W054$" -SEName_W077: - .string "W077$" -SEName_W020: - .string "W020$" -SEName_W082: - .string "W082$" -SEName_W047: - .string "W047$" -SEName_W195: - .string "W195$" -SEName_W006: - .string "W006$" -SEName_W091: - .string "W091$" -SEName_W146: - .string "W146$" -SEName_W120: - .string "W120$" -SEName_W153: - .string "W153$" -SEName_W071B: - .string "W071B$" -SEName_W071: - .string "W071$" -SEName_W103: - .string "W103$" -SEName_W062: - .string "W062$" -SEName_W062B: - .string "W062B$" -SEName_W048: - .string "W048$" -SEName_W187: - .string "W187$" -SEName_W118: - .string "W118$" -SEName_W155: - .string "W155$" -SEName_W122: - .string "W122$" -SEName_W060: - .string "W060$" -SEName_W185: - .string "W185$" -SEName_W014: - .string "W014$" -SEName_W043: - .string "W043$" -SEName_W207: - .string "W207$" -SEName_W207B: - .string "W207B$" -SEName_W215: - .string "W215$" -SEName_W109: - .string "W109$" -SEName_W173: - .string "W173$" -SEName_W280: - .string "W280$" -SEName_W202: - .string "W202$" -SEName_W060B: - .string "W060B$" -SEName_W076: - .string "W076$" -SEName_W080: - .string "W080$" -SEName_W100: - .string "W100$" -SEName_W107: - .string "W107$" -SEName_W166: - .string "W166$" -SEName_W129: - .string "W129$" -SEName_W115: - .string "W115$" -SEName_W112: - .string "W112$" -SEName_W197: - .string "W197$" -SEName_W199: - .string "W199$" -SEName_W236: - .string "W236$" -SEName_W204: - .string "W204$" -SEName_W268: - .string "W268$" -SEName_W070: - .string "W070$" -SEName_W063: - .string "W063$" -SEName_W127: - .string "W127$" -SEName_W179: - .string "W179$" -SEName_W151: - .string "W151$" -SEName_W201: - .string "W201$" -SEName_W161: - .string "W161$" -SEName_W161B: - .string "W161B$" -SEName_W227: - .string "W227$" -SEName_W227B: - .string "W227B$" -SEName_W226: - .string "W226$" -SEName_W208: - .string "W208$" -SEName_W213: - .string "W213$" -SEName_W213B: - .string "W213B$" -SEName_W234: - .string "W234$" -SEName_W260: - .string "W260$" -SEName_W328: - .string "W328$" -SEName_W320: - .string "W320$" -SEName_W255: - .string "W255$" -SEName_W291: - .string "W291$" -SEName_W089: - .string "W089$" -SEName_W239: - .string "W239$" -SEName_W230: - .string "W230$" -SEName_W281: - .string "W281$" -SEName_W327: - .string "W327$" -SEName_W287: - .string "W287$" -SEName_W257: - .string "W257$" -SEName_W253: - .string "W253$" -SEName_W258: - .string "W258$" -SEName_W322: - .string "W322$" -SEName_W298: - .string "W298$" -SEName_W287B: - .string "W287B$" -SEName_W114: - .string "W114$" -SEName_W063B: - .string "W063B$" - - .align 2 -gSENames:: @ 83D0F78 - .word SEName_STOP - .word SEName_KAIFUKU - .word SEName_PC_LOGON - .word SEName_PC_OFF - .word SEName_PC_ON - .word SEName_SELECT - .word SEName_WIN_OPEN - .word SEName_WALL_HIT - .word SEName_DOOR - .word SEName_KAIDAN - .word SEName_DANSA - .word SEName_JITENSYA - .word SEName_KOUKA_L - .word SEName_KOUKA_M - .word SEName_KOUKA_H - .word SEName_BOWA2 - .word SEName_POKE_DEAD - .word SEName_NIGERU - .word SEName_JIDO_DOA - .word SEName_NAMINORI - .word SEName_BAN - .word SEName_PIN - .word SEName_BOO - .word SEName_BOWA - .word SEName_JYUNI - .word SEName_A - .word SEName_I - .word SEName_U - .word SEName_E - .word SEName_O - .word SEName_N - .word SEName_SEIKAI - .word SEName_HAZURE - .word SEName_EXP - .word SEName_JITE_PYOKO - .word SEName_MU_PACHI - .word SEName_TK_KASYA - .word SEName_FU_ZAKU - .word SEName_FU_ZAKU2 - .word SEName_FU_ZUZUZU - .word SEName_RU_GASHIN - .word SEName_RU_GASYAN - .word SEName_RU_BARI - .word SEName_RU_HYUU - .word SEName_KI_GASYAN - .word SEName_TK_WARPIN - .word SEName_TK_WARPOUT - .word SEName_TU_SAA - .word SEName_HI_TURUN - .word SEName_TRACK_MOVE - .word SEName_TRACK_STOP - .word SEName_TRACK_HAIK - .word SEName_TRACK_DOOR - .word SEName_MOTER - .word SEName_CARD - .word SEName_SAVE - .word SEName_KON - .word SEName_KON2 - .word SEName_KON3 - .word SEName_KON4 - .word SEName_SUIKOMU - .word SEName_NAGERU - .word SEName_TOY_C - .word SEName_TOY_D - .word SEName_TOY_E - .word SEName_TOY_F - .word SEName_TOY_G - .word SEName_TOY_A - .word SEName_TOY_B - .word SEName_TOY_C1 - .word SEName_MIZU - .word SEName_HASHI - .word SEName_DAUGI - .word SEName_PINPON - .word SEName_FUUSEN1 - .word SEName_FUUSEN2 - .word SEName_FUUSEN3 - .word SEName_TOY_KABE - .word SEName_TOY_DANGO - .word SEName_DOKU - .word SEName_ESUKA - .word SEName_T_AME - .word SEName_T_AME_E - .word SEName_T_OOAME - .word SEName_T_OOAME_E - .word SEName_T_KOAME - .word SEName_T_KOAME_E - .word SEName_T_KAMI - .word SEName_T_KAMI2 - .word SEName_ELEBETA - .word SEName_HINSI - .word SEName_EXPMAX - .word SEName_TAMAKORO - .word SEName_TAMAKORO_E - .word SEName_BASABASA - .word SEName_REGI - .word SEName_C_GAJI - .word SEName_C_MAKU_U - .word SEName_C_MAKU_D - .word SEName_C_PASI - .word SEName_C_SYU - .word SEName_C_PIKON - .word SEName_REAPOKE - .word SEName_OP_BASYU - .word SEName_BT_START - .word SEName_DENDOU - .word SEName_JIHANKI - .word SEName_TAMA - .word SEName_Z_SCROLL - .word SEName_Z_PAGE - .word SEName_PN_ON - .word SEName_PN_OFF - .word SEName_Z_SEARCH - .word SEName_TAMAGO - .word SEName_TB_START - .word SEName_TB_KON - .word SEName_TB_KARA - .word SEName_BIDORO - .word SEName_W085 - .word SEName_W085B - .word SEName_W231 - .word SEName_W171 - .word SEName_W233 - .word SEName_W233B - .word SEName_W145 - .word SEName_W145B - .word SEName_W145C - .word SEName_W240 - .word SEName_W015 - .word SEName_W081 - .word SEName_W081B - .word SEName_W088 - .word SEName_W016 - .word SEName_W016B - .word SEName_W003 - .word SEName_W104 - .word SEName_W013 - .word SEName_W196 - .word SEName_W086 - .word SEName_W004 - .word SEName_W025 - .word SEName_W025B - .word SEName_W152 - .word SEName_W026 - .word SEName_W172 - .word SEName_W172B - .word SEName_W053 - .word SEName_W007 - .word SEName_W092 - .word SEName_W221 - .word SEName_W221B - .word SEName_W052 - .word SEName_W036 - .word SEName_W059 - .word SEName_W059B - .word SEName_W010 - .word SEName_W011 - .word SEName_W017 - .word SEName_W019 - .word SEName_W028 - .word SEName_W013B - .word SEName_W044 - .word SEName_W029 - .word SEName_W057 - .word SEName_W056 - .word SEName_W250 - .word SEName_W030 - .word SEName_W039 - .word SEName_W054 - .word SEName_W077 - .word SEName_W020 - .word SEName_W082 - .word SEName_W047 - .word SEName_W195 - .word SEName_W006 - .word SEName_W091 - .word SEName_W146 - .word SEName_W120 - .word SEName_W153 - .word SEName_W071B - .word SEName_W071 - .word SEName_W103 - .word SEName_W062 - .word SEName_W062B - .word SEName_W048 - .word SEName_W187 - .word SEName_W118 - .word SEName_W155 - .word SEName_W122 - .word SEName_W060 - .word SEName_W185 - .word SEName_W014 - .word SEName_W043 - .word SEName_W207 - .word SEName_W207B - .word SEName_W215 - .word SEName_W109 - .word SEName_W173 - .word SEName_W280 - .word SEName_W202 - .word SEName_W060B - .word SEName_W076 - .word SEName_W080 - .word SEName_W100 - .word SEName_W107 - .word SEName_W166 - .word SEName_W129 - .word SEName_W115 - .word SEName_W112 - .word SEName_W197 - .word SEName_W199 - .word SEName_W236 - .word SEName_W204 - .word SEName_W268 - .word SEName_W070 - .word SEName_W063 - .word SEName_W127 - .word SEName_W179 - .word SEName_W151 - .word SEName_W201 - .word SEName_W161 - .word SEName_W161B - .word SEName_W227 - .word SEName_W227B - .word SEName_W226 - .word SEName_W208 - .word SEName_W213 - .word SEName_W213B - .word SEName_W234 - .word SEName_W260 - .word SEName_W328 - .word SEName_W320 - .word SEName_W255 - .word SEName_W291 - .word SEName_W089 - .word SEName_W239 - .word SEName_W230 - .word SEName_W281 - .word SEName_W327 - .word SEName_W287 - .word SEName_W257 - .word SEName_W253 - .word SEName_W258 - .word SEName_W322 - .word SEName_W298 - .word SEName_W287B - .word SEName_W114 - .word SEName_W063B diff --git a/ld_script.txt b/ld_script.txt index 96422937f..86a6d970d 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -410,7 +410,7 @@ SECTIONS { data/money.o(.rodata); data/contest_effect.o(.rodata); data/record_mixing.o(.rodata); - data/sound_check_menu.o(.rodata); + src/sound_check_menu.o(.rodata); data/secret_base.o(.rodata); data/tv.o(.rodata); data/contest_link_80C2020.o(.rodata); diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index 12cde5da8..fc6da433b 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -57,11 +57,7 @@ extern struct ToneData voicegroup_8453190[]; extern struct ToneData voicegroup_84549C0[]; extern struct ToneData voicegroup_8453790[]; -extern u8 gUnknown_083D0300[18]; -extern s8 gUnknown_083D03F8[5]; - extern int gUnknown_020387B4[9]; -extern int gUnknown_083D039C[16]; extern s8 gUnknown_020387B3; extern u8 gUnknown_020387B1; @@ -75,35 +71,808 @@ extern u8 gUnknown_03005E98; extern struct MusicPlayerInfo *gUnknown_03005D30; extern struct MusicPlayerInfo gMPlay_BGM; -extern u8 *gBGMNames[]; -extern u8 *gSENames[]; - -extern u8 gDebugText_SoundCheckJap[]; -extern u8 gDebugText_BGM[]; -extern u8 gDebugText_SE[]; -extern u8 gDebugText_ABDesc[]; -extern u8 gDebugText_UpDown[]; -extern u8 gDebugText_DriverTest[]; -extern u8 gDebugText_BBack[]; -extern u8 gDebugText_APlay[]; -extern u8 gDebugText_Voice[]; -extern u8 gDebugText_Volume[]; -extern u8 gDebugText_Panpot[]; -extern u8 gDebugText_Pitch[]; -extern u8 gDebugText_Length[]; -extern u8 gDebugText_Release[]; -extern u8 gDebugText_Progress[]; -extern u8 gDebugText_Chorus[]; -extern u8 gDebugText_Priority[]; -extern u8 gDebugText_Playing[]; -extern u8 gDebugText_Reverse[]; -extern u8 gDebugText_Stereo[]; -extern u8 gUnknown_083D03DC[]; -extern u8 gUnknown_083D03DE[]; -extern u8 gOtherText_SE[]; -extern u8 gOtherText_Pan[]; -extern u8 gOtherText_LR[]; -extern u8 gOtherText_RL[]; +static const u8 gDebugText_SoundCheckJap[] = _("サウンドチェック"); +static const u8 gDebugText_BGM[] = _("BGM"); +static const u8 gDebugText_SE[] = _("SE "); +static const u8 gDebugText_ABDesc[] = _("A‥さいせい B‥おわり"); +static const u8 gDebugText_UpDown[] = _("L‥UP R‥DOWN"); +static const u8 gDebugText_DriverTest[] = _("R‥DRIVER-TEST"); + +// ideally this should be a multi Coords8 struct, but it wont match when its treated like a struct. +static const u8 gUnknown_083D0300[] = { 1, 1, 1, 3, 1, 5, 1, 7, 1, 9, 1, 11, 1, 13, 1, 15, 1, 17 }; + +static const u8 gDebugText_BBack[] = _("Bぼたんで もどる"); +static const u8 gDebugText_APlay[] = _("Aぼたんで さいせい"); +static const u8 gDebugText_Voice[] = _("VOICE‥‥‥‥"); +static const u8 gDebugText_Volume[] = _("VOLUME‥‥‥"); +static const u8 gDebugText_Panpot[] = _("PANPOT‥‥‥"); +static const u8 gDebugText_Pitch[] = _("PITCH‥‥‥‥"); +static const u8 gDebugText_Length[] = _("LENGTH‥‥‥"); +static const u8 gDebugText_Release[] = _("RELEASE‥‥"); +static const u8 gDebugText_Progress[] = _("PROGRESS‥"); +static const u8 gDebugText_Chorus[] = _("CHORUS‥‥‥"); +static const u8 gDebugText_Priority[] = _("PRIORITY‥"); +static const u8 gDebugText_Playing[] = _("さいせいちゆう‥"); // 再生中 (playing) +static const u8 gDebugText_Reverse[] = _("はんてん‥‥‥‥"); // 反転 (reverse) +static const u8 gDebugText_Stereo[] = _("すてれお‥‥‥‥"); // stereo + +// also ideally should be a MinMax struct, but any attempt to make this into a struct causes it to not match due to the weird multi dim access. +static const int gUnknown_083D039C[16] = +{ + 0, 387, + 0, 127, + -127, 127, + -128, 32639, + 0, 65535, + 0, 255, + 0, 65535, + -64, 63 +}; + +static const u8 gUnknown_083D03DC[] = _("▶"); +static const u8 gUnknown_083D03DE[] = _(" "); + +// why not just use Powers of ten from string_util? +static const int gUnknown_083D03E0[6] = +{ + 1, + 10, + 100, + 1000, + 10000, + 100000 +}; + +static const s8 gUnknown_083D03F8[5] = { 0x3F, 0x00, 0xC0, 0x7F, 0x80 }; + +static const u8 gOtherText_SE[] = _("SE"); +static const u8 gOtherText_Pan[] = _("PAN"); +static const u8 gOtherText_LR[] = _(" LR"); +static const u8 gOtherText_RL[] = _(" RL"); + +// bgm names +static const u8 BGMName_STOP[] = _("STOP"); +static const u8 BGMName_TETSUJI[] = _("TETSUJI"); +static const u8 BGMName_FIELD13[] = _("FIELD13"); +static const u8 BGMName_KACHI22[] = _("KACHI22"); +static const u8 BGMName_KACHI2[] = _("KACHI2"); +static const u8 BGMName_KACHI3[] = _("KACHI3"); +static const u8 BGMName_KACHI5[] = _("KACHI5"); +static const u8 BGMName_PCC[] = _("PCC"); +static const u8 BGMName_NIBI[] = _("NIBI"); +static const u8 BGMName_SUIKUN[] = _("SUIKUN"); +static const u8 BGMName_DOORO1[] = _("DOORO1"); +static const u8 BGMName_DOORO_X1[] = _("DOORO-X1"); +static const u8 BGMName_DOORO_X3[] = _("DOORO-X3"); +static const u8 BGMName_MACHI_S2[] = _("MACHI-S2"); +static const u8 BGMName_MACHI_S4[] = _("MACHI-S4"); +static const u8 BGMName_GIM[] = _("GIM"); +static const u8 BGMName_NAMINORI[] = _("NAMINORI"); +static const u8 BGMName_DAN01[] = _("DAN01"); +static const u8 BGMName_FANFA1[] = _("FANFA1"); +static const u8 BGMName_ME_ASA[] = _("ME-ASA"); +static const u8 BGMName_ME_BACHI[] = _("ME-BACHI"); +static const u8 BGMName_FANFA4[] = _("FANFA4"); +static const u8 BGMName_FANFA5[] = _("FANFA5"); +static const u8 BGMName_ME_WAZA[] = _("ME-WAZA"); +static const u8 BGMName_BIJYUTU[] = _("BIJYUTU"); +static const u8 BGMName_DOORO_X4[] = _("DOORO-X4"); +static const u8 BGMName_FUNE_KAN[] = _("FUNE-KAN"); +static const u8 BGMName_ME_SHINKA[] = _("ME-SHINKA"); +static const u8 BGMName_SHINKA[] = _("SHINKA"); +static const u8 BGMName_ME_WASURE[] = _("ME-WASURE"); +static const u8 BGMName_SYOUJOEYE[] = _("SYOUJOEYE"); +static const u8 BGMName_BOYEYE[] = _("BOYEYE"); +static const u8 BGMName_DAN02[] = _("DAN02"); +static const u8 BGMName_MACHI_S3[] = _("MACHI-S3"); +static const u8 BGMName_ODAMAKI[] = _("ODAMAKI"); +static const u8 BGMName_B_TOWER[] = _("B-TOWER"); +static const u8 BGMName_SWIMEYE[] = _("SWIMEYE"); +static const u8 BGMName_DAN03[] = _("DAN03"); +static const u8 BGMName_ME_KINOMI[] = _("ME-KINOMI"); +static const u8 BGMName_ME_TAMA[] = _("ME-TAMA"); +static const u8 BGMName_ME_B_BIG[] = _("ME-B-BIG"); +static const u8 BGMName_ME_B_SMALL[] = _("ME-B-SMALL"); +static const u8 BGMName_ME_ZANNEN[] = _("ME-ZANNEN"); +static const u8 BGMName_BD_TIME[] = _("BD-TIME"); +static const u8 BGMName_TEST1[] = _("TEST1"); +static const u8 BGMName_TEST2[] = _("TEST2"); +static const u8 BGMName_TEST3[] = _("TEST3"); +static const u8 BGMName_TEST4[] = _("TEST4"); +static const u8 BGMName_TEST[] = _("TEST"); +static const u8 BGMName_GOMACHI0[] = _("GOMACHI0"); +static const u8 BGMName_GOTOWN[] = _("GOTOWN"); +static const u8 BGMName_POKECEN[] = _("POKECEN"); +static const u8 BGMName_NEXTROAD[] = _("NEXTROAD"); +static const u8 BGMName_GRANROAD[] = _("GRANROAD"); +static const u8 BGMName_CYCLING[] = _("CYCLING"); +static const u8 BGMName_FRIENDLY[] = _("FRIENDLY"); +static const u8 BGMName_MISHIRO[] = _("MISHIRO"); +static const u8 BGMName_TOZAN[] = _("TOZAN"); +static const u8 BGMName_GIRLEYE[] = _("GIRLEYE"); +static const u8 BGMName_MINAMO[] = _("MINAMO"); +static const u8 BGMName_ASHROAD[] = _("ASHROAD"); +static const u8 BGMName_EVENT0[] = _("EVENT0"); +static const u8 BGMName_DEEPDEEP[] = _("DEEPDEEP"); +static const u8 BGMName_KACHI1[] = _("KACHI1"); +static const u8 BGMName_TITLE3[] = _("TITLE3"); +static const u8 BGMName_DEMO1[] = _("DEMO1"); +static const u8 BGMName_GIRL_SUP[] = _("GIRL-SUP"); +static const u8 BGMName_HAGESHII[] = _("HAGESHII"); +static const u8 BGMName_KAKKOII[] = _("KAKKOII"); +static const u8 BGMName_KAZANBAI[] = _("KAZANBAI"); +static const u8 BGMName_AQA_0[] = _("AQA-0"); +static const u8 BGMName_TSURETEK[] = _("TSURETEK"); +static const u8 BGMName_BOY_SUP[] = _("BOY-SUP"); +static const u8 BGMName_RAINBOW[] = _("RAINBOW"); +static const u8 BGMName_AYASII[] = _("AYASII"); +static const u8 BGMName_KACHI4[] = _("KACHI4"); +static const u8 BGMName_ROPEWAY[] = _("ROPEWAY"); +static const u8 BGMName_CASINO[] = _("CASINO"); +static const u8 BGMName_HIGHTOWN[] = _("HIGHTOWN"); +static const u8 BGMName_SAFARI[] = _("SAFARI"); +static const u8 BGMName_C_ROAD[] = _("C-ROAD"); +static const u8 BGMName_AJITO[] = _("AJITO"); +static const u8 BGMName_M_BOAT[] = _("M-BOAT"); +static const u8 BGMName_M_DUNGON[] = _("M-DUNGON"); +static const u8 BGMName_FINECITY[] = _("FINECITY"); +static const u8 BGMName_MACHUPI[] = _("MACHUPI"); +static const u8 BGMName_P_SCHOOL[] = _("P-SCHOOL"); +static const u8 BGMName_DENDOU[] = _("DENDOU"); +static const u8 BGMName_TONEKUSA[] = _("TONEKUSA"); +static const u8 BGMName_MABOROSI[] = _("MABOROSI"); +static const u8 BGMName_CON_FAN[] = _("CON-FAN"); +static const u8 BGMName_CONTEST0[] = _("CONTEST0"); +static const u8 BGMName_MGM0[] = _("MGM0"); +static const u8 BGMName_T_BATTLE[] = _("T-BATTLE"); +static const u8 BGMName_OOAME[] = _("OOAME"); +static const u8 BGMName_HIDERI[] = _("HIDERI"); +static const u8 BGMName_RUNECITY[] = _("RUNECITY"); +static const u8 BGMName_CON_K[] = _("CON-K"); +static const u8 BGMName_EIKOU_R[] = _("EIKOU-R"); +static const u8 BGMName_KARAKURI[] = _("KARAKURI"); +static const u8 BGMName_HUTAGO[] = _("HUTAGO"); +static const u8 BGMName_SITENNOU[] = _("SITENNOU"); +static const u8 BGMName_YAMA_EYE[] = _("YAMA-EYE"); +static const u8 BGMName_CONLOBBY[] = _("CONLOBBY"); +static const u8 BGMName_INTER_V[] = _("INTER-V"); +static const u8 BGMName_DAIGO[] = _("DAIGO"); +static const u8 BGMName_THANKFOR[] = _("THANKFOR"); +static const u8 BGMName_END[] = _("END"); +static const u8 BGMName_BATTLE27[] = _("BATTLE27"); +static const u8 BGMName_BATTLE31[] = _("BATTLE31"); +static const u8 BGMName_BATTLE20[] = _("BATTLE20"); +static const u8 BGMName_BATTLE32[] = _("BATTLE32"); +static const u8 BGMName_BATTLE33[] = _("BATTLE33"); +static const u8 BGMName_BATTLE36[] = _("BATTLE36"); +static const u8 BGMName_BATTLE34[] = _("BATTLE34"); +static const u8 BGMName_BATTLE35[] = _("BATTLE35"); +static const u8 BGMName_BATTLE38[] = _("BATTLE38"); +static const u8 BGMName_BATTLE30[] = _("BATTLE30"); + +static const u8 *const gBGMNames[] = +{ + BGMName_STOP, + BGMName_TETSUJI, + BGMName_FIELD13, + BGMName_KACHI22, + BGMName_KACHI2, + BGMName_KACHI3, + BGMName_KACHI5, + BGMName_PCC, + BGMName_NIBI, + BGMName_SUIKUN, + BGMName_DOORO1, + BGMName_DOORO_X1, + BGMName_DOORO_X3, + BGMName_MACHI_S2, + BGMName_MACHI_S4, + BGMName_GIM, + BGMName_NAMINORI, + BGMName_DAN01, + BGMName_FANFA1, + BGMName_ME_ASA, + BGMName_ME_BACHI, + BGMName_FANFA4, + BGMName_FANFA5, + BGMName_ME_WAZA, + BGMName_BIJYUTU, + BGMName_DOORO_X4, + BGMName_FUNE_KAN, + BGMName_ME_SHINKA, + BGMName_SHINKA, + BGMName_ME_WASURE, + BGMName_SYOUJOEYE, + BGMName_BOYEYE, + BGMName_DAN02, + BGMName_MACHI_S3, + BGMName_ODAMAKI, + BGMName_B_TOWER, + BGMName_SWIMEYE, + BGMName_DAN03, + BGMName_ME_KINOMI, + BGMName_ME_TAMA, + BGMName_ME_B_BIG, + BGMName_ME_B_SMALL, + BGMName_ME_ZANNEN, + BGMName_BD_TIME, + BGMName_TEST1, + BGMName_TEST2, + BGMName_TEST3, + BGMName_TEST4, + BGMName_TEST, + BGMName_GOMACHI0, + BGMName_GOTOWN, + BGMName_POKECEN, + BGMName_NEXTROAD, + BGMName_GRANROAD, + BGMName_CYCLING, + BGMName_FRIENDLY, + BGMName_MISHIRO, + BGMName_TOZAN, + BGMName_GIRLEYE, + BGMName_MINAMO, + BGMName_ASHROAD, + BGMName_EVENT0, + BGMName_DEEPDEEP, + BGMName_KACHI1, + BGMName_TITLE3, + BGMName_DEMO1, + BGMName_GIRL_SUP, + BGMName_HAGESHII, + BGMName_KAKKOII, + BGMName_KAZANBAI, + BGMName_AQA_0, + BGMName_TSURETEK, + BGMName_BOY_SUP, + BGMName_RAINBOW, + BGMName_AYASII, + BGMName_KACHI4, + BGMName_ROPEWAY, + BGMName_CASINO, + BGMName_HIGHTOWN, + BGMName_SAFARI, + BGMName_C_ROAD, + BGMName_AJITO, + BGMName_M_BOAT, + BGMName_M_DUNGON, + BGMName_FINECITY, + BGMName_MACHUPI, + BGMName_P_SCHOOL, + BGMName_DENDOU, + BGMName_TONEKUSA, + BGMName_MABOROSI, + BGMName_CON_FAN, + BGMName_CONTEST0, + BGMName_MGM0, + BGMName_T_BATTLE, + BGMName_OOAME, + BGMName_HIDERI, + BGMName_RUNECITY, + BGMName_CON_K, + BGMName_EIKOU_R, + BGMName_KARAKURI, + BGMName_HUTAGO, + BGMName_SITENNOU, + BGMName_YAMA_EYE, + BGMName_CONLOBBY, + BGMName_INTER_V, + BGMName_DAIGO, + BGMName_THANKFOR, + BGMName_END, + BGMName_BATTLE27, + BGMName_BATTLE31, + BGMName_BATTLE20, + BGMName_BATTLE32, + BGMName_BATTLE33, + BGMName_BATTLE36, + BGMName_BATTLE34, + BGMName_BATTLE35, + BGMName_BATTLE38, + BGMName_BATTLE30 +}; + +// SE names +static const u8 SEName_STOP[] = _("STOP"); +static const u8 SEName_KAIFUKU[] = _("KAIFUKU"); +static const u8 SEName_PC_LOGON[] = _("PC-LOGON"); +static const u8 SEName_PC_OFF[] = _("PC-OFF"); +static const u8 SEName_PC_ON[] = _("PC-ON"); +static const u8 SEName_SELECT[] = _("SELECT"); +static const u8 SEName_WIN_OPEN[] = _("WIN-OPEN"); +static const u8 SEName_WALL_HIT[] = _("WALL-HIT"); +static const u8 SEName_DOOR[] = _("DOOR"); +static const u8 SEName_KAIDAN[] = _("KAIDAN"); +static const u8 SEName_DANSA[] = _("DANSA"); +static const u8 SEName_JITENSYA[] = _("JITENSYA"); +static const u8 SEName_KOUKA_L[] = _("KOUKA-L"); +static const u8 SEName_KOUKA_M[] = _("KOUKA-M"); +static const u8 SEName_KOUKA_H[] = _("KOUKA-H"); +static const u8 SEName_BOWA2[] = _("BOWA2"); +static const u8 SEName_POKE_DEAD[] = _("POKE-DEAD"); +static const u8 SEName_NIGERU[] = _("NIGERU"); +static const u8 SEName_JIDO_DOA[] = _("JIDO-DOA"); +static const u8 SEName_NAMINORI[] = _("NAMINORI"); +static const u8 SEName_BAN[] = _("BAN"); +static const u8 SEName_PIN[] = _("PIN"); +static const u8 SEName_BOO[] = _("BOO"); +static const u8 SEName_BOWA[] = _("BOWA"); +static const u8 SEName_JYUNI[] = _("JYUNI"); +static const u8 SEName_A[] = _("A"); +static const u8 SEName_I[] = _("I"); +static const u8 SEName_U[] = _("U"); +static const u8 SEName_E[] = _("E"); +static const u8 SEName_O[] = _("O"); +static const u8 SEName_N[] = _("N"); +static const u8 SEName_SEIKAI[] = _("SEIKAI"); +static const u8 SEName_HAZURE[] = _("HAZURE"); +static const u8 SEName_EXP[] = _("EXP"); +static const u8 SEName_JITE_PYOKO[] = _("JITE-PYOKO"); +static const u8 SEName_MU_PACHI[] = _("MU-PACHI"); +static const u8 SEName_TK_KASYA[] = _("TK-KASYA"); +static const u8 SEName_FU_ZAKU[] = _("FU-ZAKU"); +static const u8 SEName_FU_ZAKU2[] = _("FU-ZAKU2"); +static const u8 SEName_FU_ZUZUZU[] = _("FU-ZUZUZU"); +static const u8 SEName_RU_GASHIN[] = _("RU-GASHIN"); +static const u8 SEName_RU_GASYAN[] = _("RU-GASYAN"); +static const u8 SEName_RU_BARI[] = _("RU-BARI"); +static const u8 SEName_RU_HYUU[] = _("RU-HYUU"); +static const u8 SEName_KI_GASYAN[] = _("KI-GASYAN"); +static const u8 SEName_TK_WARPIN[] = _("TK-WARPIN"); +static const u8 SEName_TK_WARPOUT[] = _("TK-WARPOUT"); +static const u8 SEName_TU_SAA[] = _("TU-SAA"); +static const u8 SEName_HI_TURUN[] = _("HI-TURUN"); +static const u8 SEName_TRACK_MOVE[] = _("TRACK-MOVE"); +static const u8 SEName_TRACK_STOP[] = _("TRACK-STOP"); +static const u8 SEName_TRACK_HAIK[] = _("TRACK-HAIK"); +static const u8 SEName_TRACK_DOOR[] = _("TRACK-DOOR"); +static const u8 SEName_MOTER[] = _("MOTER"); +static const u8 SEName_CARD[] = _("CARD"); +static const u8 SEName_SAVE[] = _("SAVE"); +static const u8 SEName_KON[] = _("KON"); +static const u8 SEName_KON2[] = _("KON2"); +static const u8 SEName_KON3[] = _("KON3"); +static const u8 SEName_KON4[] = _("KON4"); +static const u8 SEName_SUIKOMU[] = _("SUIKOMU"); +static const u8 SEName_NAGERU[] = _("NAGERU"); +static const u8 SEName_TOY_C[] = _("TOY-C"); +static const u8 SEName_TOY_D[] = _("TOY-D"); +static const u8 SEName_TOY_E[] = _("TOY-E"); +static const u8 SEName_TOY_F[] = _("TOY-F"); +static const u8 SEName_TOY_G[] = _("TOY-G"); +static const u8 SEName_TOY_A[] = _("TOY-A"); +static const u8 SEName_TOY_B[] = _("TOY-B"); +static const u8 SEName_TOY_C1[] = _("TOY-C1"); +static const u8 SEName_MIZU[] = _("MIZU"); +static const u8 SEName_HASHI[] = _("HASHI"); +static const u8 SEName_DAUGI[] = _("DAUGI"); +static const u8 SEName_PINPON[] = _("PINPON"); +static const u8 SEName_FUUSEN1[] = _("FUUSEN1"); +static const u8 SEName_FUUSEN2[] = _("FUUSEN2"); +static const u8 SEName_FUUSEN3[] = _("FUUSEN3"); +static const u8 SEName_TOY_KABE[] = _("TOY-KABE"); +static const u8 SEName_TOY_DANGO[] = _("TOY-DANGO"); +static const u8 SEName_DOKU[] = _("DOKU"); +static const u8 SEName_ESUKA[] = _("ESUKA"); +static const u8 SEName_T_AME[] = _("T-AME"); +static const u8 SEName_T_AME_E[] = _("T-AME-E"); +static const u8 SEName_T_OOAME[] = _("T-OOAME"); +static const u8 SEName_T_OOAME_E[] = _("T-OOAME-E"); +static const u8 SEName_T_KOAME[] = _("T-KOAME"); +static const u8 SEName_T_KOAME_E[] = _("T-KOAME-E"); +static const u8 SEName_T_KAMI[] = _("T-KAMI"); +static const u8 SEName_T_KAMI2[] = _("T-KAMI2"); +static const u8 SEName_ELEBETA[] = _("ELEBETA"); +static const u8 SEName_HINSI[] = _("HINSI"); +static const u8 SEName_EXPMAX[] = _("EXPMAX"); +static const u8 SEName_TAMAKORO[] = _("TAMAKORO"); +static const u8 SEName_TAMAKORO_E[] = _("TAMAKORO-E"); +static const u8 SEName_BASABASA[] = _("BASABASA"); +static const u8 SEName_REGI[] = _("REGI"); +static const u8 SEName_C_GAJI[] = _("C-GAJI"); +static const u8 SEName_C_MAKU_U[] = _("C-MAKU-U"); +static const u8 SEName_C_MAKU_D[] = _("C-MAKU-D"); +static const u8 SEName_C_PASI[] = _("C-PASI"); +static const u8 SEName_C_SYU[] = _("C-SYU"); +static const u8 SEName_C_PIKON[] = _("C-PIKON"); +static const u8 SEName_REAPOKE[] = _("REAPOKE"); +static const u8 SEName_OP_BASYU[] = _("OP-BASYU"); +static const u8 SEName_BT_START[] = _("BT-START"); +static const u8 SEName_DENDOU[] = _("DENDOU"); +static const u8 SEName_JIHANKI[] = _("JIHANKI"); +static const u8 SEName_TAMA[] = _("TAMA"); +static const u8 SEName_Z_SCROLL[] = _("Z-SCROLL"); +static const u8 SEName_Z_PAGE[] = _("Z-PAGE"); +static const u8 SEName_PN_ON[] = _("PN-ON"); +static const u8 SEName_PN_OFF[] = _("PN-OFF"); +static const u8 SEName_Z_SEARCH[] = _("Z-SEARCH"); +static const u8 SEName_TAMAGO[] = _("TAMAGO"); +static const u8 SEName_TB_START[] = _("TB-START"); +static const u8 SEName_TB_KON[] = _("TB-KON"); +static const u8 SEName_TB_KARA[] = _("TB-KARA"); +static const u8 SEName_BIDORO[] = _("BIDORO"); +static const u8 SEName_W085[] = _("W085"); +static const u8 SEName_W085B[] = _("W085B"); +static const u8 SEName_W231[] = _("W231"); +static const u8 SEName_W171[] = _("W171"); +static const u8 SEName_W233[] = _("W233"); +static const u8 SEName_W233B[] = _("W233B"); +static const u8 SEName_W145[] = _("W145"); +static const u8 SEName_W145B[] = _("W145B"); +static const u8 SEName_W145C[] = _("W145C"); +static const u8 SEName_W240[] = _("W240"); +static const u8 SEName_W015[] = _("W015"); +static const u8 SEName_W081[] = _("W081"); +static const u8 SEName_W081B[] = _("W081B"); +static const u8 SEName_W088[] = _("W088"); +static const u8 SEName_W016[] = _("W016"); +static const u8 SEName_W016B[] = _("W016B"); +static const u8 SEName_W003[] = _("W003"); +static const u8 SEName_W104[] = _("W104"); +static const u8 SEName_W013[] = _("W013"); +static const u8 SEName_W196[] = _("W196"); +static const u8 SEName_W086[] = _("W086"); +static const u8 SEName_W004[] = _("W004"); +static const u8 SEName_W025[] = _("W025"); +static const u8 SEName_W025B[] = _("W025B"); +static const u8 SEName_W152[] = _("W152"); +static const u8 SEName_W026[] = _("W026"); +static const u8 SEName_W172[] = _("W172"); +static const u8 SEName_W172B[] = _("W172B"); +static const u8 SEName_W053[] = _("W053"); +static const u8 SEName_W007[] = _("W007"); +static const u8 SEName_W092[] = _("W092"); +static const u8 SEName_W221[] = _("W221"); +static const u8 SEName_W221B[] = _("W221B"); +static const u8 SEName_W052[] = _("W052"); +static const u8 SEName_W036[] = _("W036"); +static const u8 SEName_W059[] = _("W059"); +static const u8 SEName_W059B[] = _("W059B"); +static const u8 SEName_W010[] = _("W010"); +static const u8 SEName_W011[] = _("W011"); +static const u8 SEName_W017[] = _("W017"); +static const u8 SEName_W019[] = _("W019"); +static const u8 SEName_W028[] = _("W028"); +static const u8 SEName_W013B[] = _("W013B"); +static const u8 SEName_W044[] = _("W044"); +static const u8 SEName_W029[] = _("W029"); +static const u8 SEName_W057[] = _("W057"); +static const u8 SEName_W056[] = _("W056"); +static const u8 SEName_W250[] = _("W250"); +static const u8 SEName_W030[] = _("W030"); +static const u8 SEName_W039[] = _("W039"); +static const u8 SEName_W054[] = _("W054"); +static const u8 SEName_W077[] = _("W077"); +static const u8 SEName_W020[] = _("W020"); +static const u8 SEName_W082[] = _("W082"); +static const u8 SEName_W047[] = _("W047"); +static const u8 SEName_W195[] = _("W195"); +static const u8 SEName_W006[] = _("W006"); +static const u8 SEName_W091[] = _("W091"); +static const u8 SEName_W146[] = _("W146"); +static const u8 SEName_W120[] = _("W120"); +static const u8 SEName_W153[] = _("W153"); +static const u8 SEName_W071B[] = _("W071B"); +static const u8 SEName_W071[] = _("W071"); +static const u8 SEName_W103[] = _("W103"); +static const u8 SEName_W062[] = _("W062"); +static const u8 SEName_W062B[] = _("W062B"); +static const u8 SEName_W048[] = _("W048"); +static const u8 SEName_W187[] = _("W187"); +static const u8 SEName_W118[] = _("W118"); +static const u8 SEName_W155[] = _("W155"); +static const u8 SEName_W122[] = _("W122"); +static const u8 SEName_W060[] = _("W060"); +static const u8 SEName_W185[] = _("W185"); +static const u8 SEName_W014[] = _("W014"); +static const u8 SEName_W043[] = _("W043"); +static const u8 SEName_W207[] = _("W207"); +static const u8 SEName_W207B[] = _("W207B"); +static const u8 SEName_W215[] = _("W215"); +static const u8 SEName_W109[] = _("W109"); +static const u8 SEName_W173[] = _("W173"); +static const u8 SEName_W280[] = _("W280"); +static const u8 SEName_W202[] = _("W202"); +static const u8 SEName_W060B[] = _("W060B"); +static const u8 SEName_W076[] = _("W076"); +static const u8 SEName_W080[] = _("W080"); +static const u8 SEName_W100[] = _("W100"); +static const u8 SEName_W107[] = _("W107"); +static const u8 SEName_W166[] = _("W166"); +static const u8 SEName_W129[] = _("W129"); +static const u8 SEName_W115[] = _("W115"); +static const u8 SEName_W112[] = _("W112"); +static const u8 SEName_W197[] = _("W197"); +static const u8 SEName_W199[] = _("W199"); +static const u8 SEName_W236[] = _("W236"); +static const u8 SEName_W204[] = _("W204"); +static const u8 SEName_W268[] = _("W268"); +static const u8 SEName_W070[] = _("W070"); +static const u8 SEName_W063[] = _("W063"); +static const u8 SEName_W127[] = _("W127"); +static const u8 SEName_W179[] = _("W179"); +static const u8 SEName_W151[] = _("W151"); +static const u8 SEName_W201[] = _("W201"); +static const u8 SEName_W161[] = _("W161"); +static const u8 SEName_W161B[] = _("W161B"); +static const u8 SEName_W227[] = _("W227"); +static const u8 SEName_W227B[] = _("W227B"); +static const u8 SEName_W226[] = _("W226"); +static const u8 SEName_W208[] = _("W208"); +static const u8 SEName_W213[] = _("W213"); +static const u8 SEName_W213B[] = _("W213B"); +static const u8 SEName_W234[] = _("W234"); +static const u8 SEName_W260[] = _("W260"); +static const u8 SEName_W328[] = _("W328"); +static const u8 SEName_W320[] = _("W320"); +static const u8 SEName_W255[] = _("W255"); +static const u8 SEName_W291[] = _("W291"); +static const u8 SEName_W089[] = _("W089"); +static const u8 SEName_W239[] = _("W239"); +static const u8 SEName_W230[] = _("W230"); +static const u8 SEName_W281[] = _("W281"); +static const u8 SEName_W327[] = _("W327"); +static const u8 SEName_W287[] = _("W287"); +static const u8 SEName_W257[] = _("W257"); +static const u8 SEName_W253[] = _("W253"); +static const u8 SEName_W258[] = _("W258"); +static const u8 SEName_W322[] = _("W322"); +static const u8 SEName_W298[] = _("W298"); +static const u8 SEName_W287B[] = _("W287B"); +static const u8 SEName_W114[] = _("W114"); +static const u8 SEName_W063B[] = _("W063B"); + +static const u8 *const gSENames[] = +{ + SEName_STOP, + SEName_KAIFUKU, + SEName_PC_LOGON, + SEName_PC_OFF, + SEName_PC_ON, + SEName_SELECT, + SEName_WIN_OPEN, + SEName_WALL_HIT, + SEName_DOOR, + SEName_KAIDAN, + SEName_DANSA, + SEName_JITENSYA, + SEName_KOUKA_L, + SEName_KOUKA_M, + SEName_KOUKA_H, + SEName_BOWA2, + SEName_POKE_DEAD, + SEName_NIGERU, + SEName_JIDO_DOA, + SEName_NAMINORI, + SEName_BAN, + SEName_PIN, + SEName_BOO, + SEName_BOWA, + SEName_JYUNI, + SEName_A, + SEName_I, + SEName_U, + SEName_E, + SEName_O, + SEName_N, + SEName_SEIKAI, + SEName_HAZURE, + SEName_EXP, + SEName_JITE_PYOKO, + SEName_MU_PACHI, + SEName_TK_KASYA, + SEName_FU_ZAKU, + SEName_FU_ZAKU2, + SEName_FU_ZUZUZU, + SEName_RU_GASHIN, + SEName_RU_GASYAN, + SEName_RU_BARI, + SEName_RU_HYUU, + SEName_KI_GASYAN, + SEName_TK_WARPIN, + SEName_TK_WARPOUT, + SEName_TU_SAA, + SEName_HI_TURUN, + SEName_TRACK_MOVE, + SEName_TRACK_STOP, + SEName_TRACK_HAIK, + SEName_TRACK_DOOR, + SEName_MOTER, + SEName_CARD, + SEName_SAVE, + SEName_KON, + SEName_KON2, + SEName_KON3, + SEName_KON4, + SEName_SUIKOMU, + SEName_NAGERU, + SEName_TOY_C, + SEName_TOY_D, + SEName_TOY_E, + SEName_TOY_F, + SEName_TOY_G, + SEName_TOY_A, + SEName_TOY_B, + SEName_TOY_C1, + SEName_MIZU, + SEName_HASHI, + SEName_DAUGI, + SEName_PINPON, + SEName_FUUSEN1, + SEName_FUUSEN2, + SEName_FUUSEN3, + SEName_TOY_KABE, + SEName_TOY_DANGO, + SEName_DOKU, + SEName_ESUKA, + SEName_T_AME, + SEName_T_AME_E, + SEName_T_OOAME, + SEName_T_OOAME_E, + SEName_T_KOAME, + SEName_T_KOAME_E, + SEName_T_KAMI, + SEName_T_KAMI2, + SEName_ELEBETA, + SEName_HINSI, + SEName_EXPMAX, + SEName_TAMAKORO, + SEName_TAMAKORO_E, + SEName_BASABASA, + SEName_REGI, + SEName_C_GAJI, + SEName_C_MAKU_U, + SEName_C_MAKU_D, + SEName_C_PASI, + SEName_C_SYU, + SEName_C_PIKON, + SEName_REAPOKE, + SEName_OP_BASYU, + SEName_BT_START, + SEName_DENDOU, + SEName_JIHANKI, + SEName_TAMA, + SEName_Z_SCROLL, + SEName_Z_PAGE, + SEName_PN_ON, + SEName_PN_OFF, + SEName_Z_SEARCH, + SEName_TAMAGO, + SEName_TB_START, + SEName_TB_KON, + SEName_TB_KARA, + SEName_BIDORO, + SEName_W085, + SEName_W085B, + SEName_W231, + SEName_W171, + SEName_W233, + SEName_W233B, + SEName_W145, + SEName_W145B, + SEName_W145C, + SEName_W240, + SEName_W015, + SEName_W081, + SEName_W081B, + SEName_W088, + SEName_W016, + SEName_W016B, + SEName_W003, + SEName_W104, + SEName_W013, + SEName_W196, + SEName_W086, + SEName_W004, + SEName_W025, + SEName_W025B, + SEName_W152, + SEName_W026, + SEName_W172, + SEName_W172B, + SEName_W053, + SEName_W007, + SEName_W092, + SEName_W221, + SEName_W221B, + SEName_W052, + SEName_W036, + SEName_W059, + SEName_W059B, + SEName_W010, + SEName_W011, + SEName_W017, + SEName_W019, + SEName_W028, + SEName_W013B, + SEName_W044, + SEName_W029, + SEName_W057, + SEName_W056, + SEName_W250, + SEName_W030, + SEName_W039, + SEName_W054, + SEName_W077, + SEName_W020, + SEName_W082, + SEName_W047, + SEName_W195, + SEName_W006, + SEName_W091, + SEName_W146, + SEName_W120, + SEName_W153, + SEName_W071B, + SEName_W071, + SEName_W103, + SEName_W062, + SEName_W062B, + SEName_W048, + SEName_W187, + SEName_W118, + SEName_W155, + SEName_W122, + SEName_W060, + SEName_W185, + SEName_W014, + SEName_W043, + SEName_W207, + SEName_W207B, + SEName_W215, + SEName_W109, + SEName_W173, + SEName_W280, + SEName_W202, + SEName_W060B, + SEName_W076, + SEName_W080, + SEName_W100, + SEName_W107, + SEName_W166, + SEName_W129, + SEName_W115, + SEName_W112, + SEName_W197, + SEName_W199, + SEName_W236, + SEName_W204, + SEName_W268, + SEName_W070, + SEName_W063, + SEName_W127, + SEName_W179, + SEName_W151, + SEName_W201, + SEName_W161, + SEName_W161B, + SEName_W227, + SEName_W227B, + SEName_W226, + SEName_W208, + SEName_W213, + SEName_W213B, + SEName_W234, + SEName_W260, + SEName_W328, + SEName_W320, + SEName_W255, + SEName_W291, + SEName_W089, + SEName_W239, + SEName_W230, + SEName_W281, + SEName_W327, + SEName_W287, + SEName_W257, + SEName_W253, + SEName_W258, + SEName_W322, + SEName_W298, + SEName_W287B, + SEName_W114, + SEName_W063B +}; void sub_80BA258(u8); void sub_80BA384(u8); @@ -111,7 +880,7 @@ void sub_80BA65C(u8); void sub_80BA68C(u8); void sub_80BA6B8(u8); void sub_80BA700(u16, u16, u16); -void sub_80BA79C(u8 *, u16, u16); +void sub_80BA79C(const u8 *const, u16, u16); void sub_80BA800(u8); void sub_80BAA48(u8); void sub_80BACDC(s8); @@ -769,7 +1538,7 @@ void sub_80BA700(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? MenuPrint(str, x, y); } -void sub_80BA79C(u8 *string, u16 x, u16 y) +void sub_80BA79C(const u8 *const string, u16 x, u16 y) { u8 i; u8 str[11]; @@ -1020,6 +1789,61 @@ void sub_80BAE10(u8 var1, u8 var2) MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); } +/* +sub_80BAE10: + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + add sp, sp, #0xfffffff8 + add r4, r0, #0 + add r5, r1, #0 + lsl r4, r4, #0x18 + lsr r4, r4, #0x18 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + ldr r1, .L133 + mov r0, sp + mov r2, #0x2 + bl memcpy + add r0, sp, #0x4 + mov r8, r0 + ldr r1, .L133+0x4 + mov r2, #0x2 + bl memcpy + ldr r6, .L133+0x8 + lsl r4, r4, #0x1 + add r0, r4, r6 + ldrb r1, [r0] + add r4, r4, #0x1 + add r4, r4, r6 + ldrb r2, [r4] + mov r0, r8 + bl MenuPrint + lsl r5, r5, #0x1 + add r0, r5, r6 + ldrb r1, [r0] + add r5, r5, #0x1 + add r5, r5, r6 + ldrb r2, [r5] + mov r0, sp + bl MenuPrint + add sp, sp, #0x8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6} + pop {r0} + bx r0 +.L134: + .align 2, 0 +.L133: + .word gUnknown_083D03DC + .word gUnknown_083D03DE + .word gUnknown_083D0300 +.Lfe16: + .size sub_80BAE10,.Lfe16-sub_80BAE10 + .align 2, 0 +*/ + /*void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4) { u32 powers[6]; @@ -1344,6 +2168,72 @@ void sub_80BB1D4(void) sub_80BAE78(IsSEPlaying(), 12, 8, 1); } +/* + thumb_func_start sub_80BB1D4 +sub_80BB1D4: @ 80BB1D4 + push {r4,r5,lr} + sub sp, 0x10 + ldr r1, _080BB218 @ =gOtherText_LR + mov r0, sp + movs r2, 0x5 + bl memcpy + add r5, sp, 0x8 + ldr r1, _080BB21C @ =gOtherText_RL + adds r0, r5, 0 + movs r2, 0x5 + bl memcpy + ldr r4, _080BB220 @ =gUnknown_020387B4 + ldr r0, [r4] + movs r1, 0x7 + movs r2, 0x2 + movs r3, 0x3 + bl sub_80BAE78 + ldr r1, _080BB224 @ =gUnknown_083D03F8 + ldr r0, [r4, 0x8] + adds r0, r1 + movs r1, 0 + ldrsb r1, [r0, r1] + movs r0, 0x80 + negs r0, r0 + cmp r1, r0 + beq _080BB228 + cmp r1, 0x7F + bne _080BB234 + mov r0, sp + b _080BB22A + .align 2, 0 +_080BB218: .4byte gOtherText_LR +_080BB21C: .4byte gOtherText_RL +_080BB220: .4byte gUnknown_020387B4 +_080BB224: .4byte gUnknown_083D03F8 +_080BB228: + adds r0, r5, 0 +_080BB22A: + movs r1, 0x7 + movs r2, 0x4 + bl MenuPrint + b _080BB240 +_080BB234: + adds r0, r1, 0 + movs r1, 0x7 + movs r2, 0x4 + movs r3, 0x3 + bl sub_80BAE78 +_080BB240: + bl IsSEPlaying + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xC + movs r2, 0x8 + movs r3, 0x1 + bl sub_80BAE78 + add sp, 0x10 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_80BB1D4 +*/ + void sub_80BB25C(u8 taskId) { struct CryRelatedStruct cryStruct, cryStruct2; -- cgit v1.2.3 From 90eaf7b902429321a2a2073fcff37379d755e749 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 30 Jun 2017 19:02:06 -0400 Subject: whoops --- src/sound_check_menu.c | 55 -------------------------------------------------- 1 file changed, 55 deletions(-) diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index fc6da433b..356eef11c 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -1789,61 +1789,6 @@ void sub_80BAE10(u8 var1, u8 var2) MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); } -/* -sub_80BAE10: - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - add sp, sp, #0xfffffff8 - add r4, r0, #0 - add r5, r1, #0 - lsl r4, r4, #0x18 - lsr r4, r4, #0x18 - lsl r5, r5, #0x18 - lsr r5, r5, #0x18 - ldr r1, .L133 - mov r0, sp - mov r2, #0x2 - bl memcpy - add r0, sp, #0x4 - mov r8, r0 - ldr r1, .L133+0x4 - mov r2, #0x2 - bl memcpy - ldr r6, .L133+0x8 - lsl r4, r4, #0x1 - add r0, r4, r6 - ldrb r1, [r0] - add r4, r4, #0x1 - add r4, r4, r6 - ldrb r2, [r4] - mov r0, r8 - bl MenuPrint - lsl r5, r5, #0x1 - add r0, r5, r6 - ldrb r1, [r0] - add r5, r5, #0x1 - add r5, r5, r6 - ldrb r2, [r5] - mov r0, sp - bl MenuPrint - add sp, sp, #0x8 - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r0} - bx r0 -.L134: - .align 2, 0 -.L133: - .word gUnknown_083D03DC - .word gUnknown_083D03DE - .word gUnknown_083D0300 -.Lfe16: - .size sub_80BAE10,.Lfe16-sub_80BAE10 - .align 2, 0 -*/ - /*void sub_80BAE78(int var1, u16 var2, u16 var3, u8 var4) { u32 powers[6]; -- cgit v1.2.3 From 13d7308a8f8cb5d57599ebf946aa8d956aa4508f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 30 Jun 2017 19:04:38 -0400 Subject: whoops 2 electric boogaloo --- src/sound_check_menu.c | 66 -------------------------------------------------- 1 file changed, 66 deletions(-) diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index 356eef11c..202bf857e 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -2113,72 +2113,6 @@ void sub_80BB1D4(void) sub_80BAE78(IsSEPlaying(), 12, 8, 1); } -/* - thumb_func_start sub_80BB1D4 -sub_80BB1D4: @ 80BB1D4 - push {r4,r5,lr} - sub sp, 0x10 - ldr r1, _080BB218 @ =gOtherText_LR - mov r0, sp - movs r2, 0x5 - bl memcpy - add r5, sp, 0x8 - ldr r1, _080BB21C @ =gOtherText_RL - adds r0, r5, 0 - movs r2, 0x5 - bl memcpy - ldr r4, _080BB220 @ =gUnknown_020387B4 - ldr r0, [r4] - movs r1, 0x7 - movs r2, 0x2 - movs r3, 0x3 - bl sub_80BAE78 - ldr r1, _080BB224 @ =gUnknown_083D03F8 - ldr r0, [r4, 0x8] - adds r0, r1 - movs r1, 0 - ldrsb r1, [r0, r1] - movs r0, 0x80 - negs r0, r0 - cmp r1, r0 - beq _080BB228 - cmp r1, 0x7F - bne _080BB234 - mov r0, sp - b _080BB22A - .align 2, 0 -_080BB218: .4byte gOtherText_LR -_080BB21C: .4byte gOtherText_RL -_080BB220: .4byte gUnknown_020387B4 -_080BB224: .4byte gUnknown_083D03F8 -_080BB228: - adds r0, r5, 0 -_080BB22A: - movs r1, 0x7 - movs r2, 0x4 - bl MenuPrint - b _080BB240 -_080BB234: - adds r0, r1, 0 - movs r1, 0x7 - movs r2, 0x4 - movs r3, 0x3 - bl sub_80BAE78 -_080BB240: - bl IsSEPlaying - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xC - movs r2, 0x8 - movs r3, 0x1 - bl sub_80BAE78 - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80BB1D4 -*/ - void sub_80BB25C(u8 taskId) { struct CryRelatedStruct cryStruct, cryStruct2; -- cgit v1.2.3 From 8059cdb262be63f8e6a879c716e7a0fa664a547d Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Fri, 30 Jun 2017 19:11:48 -0400 Subject: clean up memcpy size declares --- src/sound_check_menu.c | 109 ++++++++++++++++++++++++------------------------- 1 file changed, 54 insertions(+), 55 deletions(-) diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index 202bf857e..c16e20196 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -969,20 +969,19 @@ void CB2_StartSoundCheckMenu(void) // Task_InitSoundCheckMenu void sub_80BA258(u8 taskId) { - u8 soundcheckStr[9]; - u8 bgmStr[4]; - u8 seStr[4]; - u8 abDescStr[13]; - u8 upDownStr[12]; - u8 driverStr[14]; - - // these probably used size of the strings themselves, but they are not in the C file yet. - memcpy(soundcheckStr, gDebugText_SoundCheckJap, sizeof soundcheckStr); - memcpy(bgmStr, gDebugText_BGM, sizeof bgmStr); - memcpy(seStr, gDebugText_SE, sizeof seStr); - memcpy(abDescStr, gDebugText_ABDesc, sizeof abDescStr); - memcpy(upDownStr, gDebugText_UpDown, sizeof upDownStr); - memcpy(driverStr, gDebugText_DriverTest, sizeof driverStr); + u8 soundcheckStr[sizeof gDebugText_SoundCheckJap]; + u8 bgmStr[sizeof gDebugText_BGM]; + u8 seStr[sizeof gDebugText_SE]; + u8 abDescStr[sizeof gDebugText_ABDesc]; + u8 upDownStr[sizeof gDebugText_UpDown]; + u8 driverStr[sizeof gDebugText_DriverTest]; + + memcpy(soundcheckStr, gDebugText_SoundCheckJap, sizeof gDebugText_SoundCheckJap); + memcpy(bgmStr, gDebugText_BGM, sizeof gDebugText_BGM); + memcpy(seStr, gDebugText_SE, sizeof gDebugText_SE); + memcpy(abDescStr, gDebugText_ABDesc, sizeof gDebugText_ABDesc); + memcpy(upDownStr, gDebugText_UpDown, sizeof gDebugText_UpDown); + memcpy(driverStr, gDebugText_DriverTest, sizeof gDebugText_DriverTest); if(!gPaletteFade.active) { @@ -1556,35 +1555,35 @@ void sub_80BA79C(const u8 *const string, u16 x, u16 y) void sub_80BA800(u8 taskId) // Task_DrawDriverTestMenu { - u8 bbackStr[10]; - u8 aplayStr[11]; - u8 voiceStr[10]; - u8 volumeStr[10]; - u8 panpotStr[10]; - u8 pitchStr[10]; - u8 lengthStr[10]; - u8 releaseStr[10]; - u8 progressStr[10]; - u8 chorusStr[10]; - u8 priorityStr[10]; - u8 playingStr[9]; - u8 reverseStr[9]; - u8 stereoStr[9]; - - memcpy(bbackStr, gDebugText_BBack, sizeof bbackStr); - memcpy(aplayStr, gDebugText_APlay, sizeof aplayStr); - memcpy(voiceStr, gDebugText_Voice, sizeof voiceStr); - memcpy(volumeStr, gDebugText_Volume, sizeof volumeStr); - memcpy(panpotStr, gDebugText_Panpot, sizeof panpotStr); - memcpy(pitchStr, gDebugText_Pitch, sizeof pitchStr); - memcpy(lengthStr, gDebugText_Length, sizeof lengthStr); - memcpy(releaseStr, gDebugText_Release, sizeof releaseStr); - memcpy(progressStr, gDebugText_Progress, sizeof progressStr); - memcpy(chorusStr, gDebugText_Chorus, sizeof chorusStr); - memcpy(priorityStr, gDebugText_Priority, sizeof priorityStr); - memcpy(playingStr, gDebugText_Playing, sizeof playingStr); - memcpy(reverseStr, gDebugText_Reverse, sizeof reverseStr); - memcpy(stereoStr, gDebugText_Stereo, sizeof stereoStr); + u8 bbackStr[sizeof gDebugText_BBack]; + u8 aplayStr[sizeof gDebugText_APlay]; + u8 voiceStr[sizeof gDebugText_Voice]; + u8 volumeStr[sizeof gDebugText_Volume]; + u8 panpotStr[sizeof gDebugText_Panpot]; + u8 pitchStr[sizeof gDebugText_Pitch]; + u8 lengthStr[sizeof gDebugText_Length]; + u8 releaseStr[sizeof gDebugText_Release]; + u8 progressStr[sizeof gDebugText_Progress]; + u8 chorusStr[sizeof gDebugText_Chorus]; + u8 priorityStr[sizeof gDebugText_Priority]; + u8 playingStr[sizeof gDebugText_Playing]; + u8 reverseStr[sizeof gDebugText_Reverse]; + u8 stereoStr[sizeof gDebugText_Stereo]; + + memcpy(bbackStr, gDebugText_BBack, sizeof gDebugText_BBack); + memcpy(aplayStr, gDebugText_APlay, sizeof gDebugText_APlay); + memcpy(voiceStr, gDebugText_Voice, sizeof gDebugText_Voice); + memcpy(volumeStr, gDebugText_Volume, sizeof gDebugText_Volume); + memcpy(panpotStr, gDebugText_Panpot, sizeof gDebugText_Panpot); + memcpy(pitchStr, gDebugText_Pitch, sizeof gDebugText_Pitch); + memcpy(lengthStr, gDebugText_Length, sizeof gDebugText_Length); + memcpy(releaseStr, gDebugText_Release, sizeof gDebugText_Release); + memcpy(progressStr, gDebugText_Progress, sizeof gDebugText_Progress); + memcpy(chorusStr, gDebugText_Chorus, sizeof gDebugText_Chorus); + memcpy(priorityStr, gDebugText_Priority, sizeof gDebugText_Priority); + memcpy(playingStr, gDebugText_Playing, sizeof gDebugText_Playing); + memcpy(reverseStr, gDebugText_Reverse, sizeof gDebugText_Reverse); + memcpy(stereoStr, gDebugText_Stereo, sizeof gDebugText_Stereo); REG_DISPCNT = 0x3140; MenuDrawTextWindow(0, 0, 0x1D, 0x13); @@ -1749,9 +1748,9 @@ void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput void sub_80BACDC(s8 var) { - int minMaxArray[16]; + int minMaxArray[ARRAY_COUNT(gUnknown_083D039C)]; - memcpy(minMaxArray, gUnknown_083D039C, sizeof minMaxArray); + memcpy(minMaxArray, gUnknown_083D039C, sizeof gUnknown_083D039C); gUnknown_020387B4[gUnknown_020387B3] += var; if(gUnknown_020387B4[gUnknown_020387B3] > minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)]) @@ -1779,11 +1778,11 @@ void sub_80BAD5C(void) void sub_80BAE10(u8 var1, u8 var2) { - u8 str1[2]; - u8 str2[2]; + u8 str1[sizeof gUnknown_083D03DC]; + u8 str2[sizeof gUnknown_083D03DE]; - memcpy(str1, gUnknown_083D03DC, sizeof str1); - memcpy(str2, gUnknown_083D03DE, sizeof str2); + memcpy(str1, gUnknown_083D03DC, sizeof gUnknown_083D03DC); + memcpy(str2, gUnknown_083D03DE, sizeof gUnknown_083D03DE); MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); @@ -1972,13 +1971,13 @@ _080BAF80: .4byte gUnknown_083D03E0\n\ void sub_80BAF84(u8 taskId) { - u8 seStr[3]; - u8 panStr[4]; - u8 playingStr[9]; + u8 seStr[sizeof gOtherText_SE]; + u8 panStr[sizeof gOtherText_Pan]; + u8 playingStr[sizeof gDebugText_Playing]; - memcpy(seStr, gOtherText_SE, sizeof seStr); - memcpy(panStr, gOtherText_Pan, sizeof panStr); - memcpy(playingStr, gDebugText_Playing, sizeof playingStr); + memcpy(seStr, gOtherText_SE, sizeof gOtherText_SE); + memcpy(panStr, gOtherText_Pan, sizeof gOtherText_Pan); + memcpy(playingStr, gDebugText_Playing, sizeof gDebugText_Playing); REG_DISPCNT = 0x3140; MenuDrawTextWindow(0, 0, 0x1D, 0x13); -- cgit v1.2.3 From ab03d23dc5cd1d791df3cebaf000166987fe6720 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 1 Jul 2017 20:57:29 -0400 Subject: win range macros --- src/sound_check_menu.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index c16e20196..8ad846748 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -941,10 +941,10 @@ void CB2_StartSoundCheckMenu(void) SetUpWindowConfig(&gWindowConfig_81E6C3C); InitMenuWindow(&gWindowConfig_81E6CE4); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - REG_WIN0H = 0; - REG_WIN0V = 0; - REG_WIN1H = 0; - REG_WIN1V = 0; + REG_WIN0H = WIN_RANGE(0, 0); + REG_WIN0V = WIN_RANGE(0, 0); + REG_WIN1H = WIN_RANGE(0, 0); + REG_WIN1V = WIN_RANGE(0, 0); REG_WININ = 0x1111; REG_WINOUT = 0x31; REG_BLDCNT = 0xE1; @@ -996,8 +996,8 @@ void sub_80BA258(u8 taskId) MenuPrint(upDownStr, 14, 13); MenuPrint(driverStr, 14, 18); TASK.FUNC = sub_80BA384; - REG_WIN0H = 0x11DF; - REG_WIN0V = 0x11F; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); } } @@ -1498,12 +1498,12 @@ void sub_80BA6B8(u8 windowType) { case BGM_WINDOW: default: - REG_WIN1H = 0x11DF; - REG_WIN1V = 0x2957; + REG_WIN1H = WIN_RANGE(17, 223); + REG_WIN1V = WIN_RANGE(41, 87); break; case SE_WINDOW: - REG_WIN1H = 0x11DF; - REG_WIN1V = 0x618F; + REG_WIN1H = WIN_RANGE(17, 223); + REG_WIN1V = WIN_RANGE(97, 143); break; } } @@ -1601,8 +1601,8 @@ void sub_80BA800(u8 taskId) // Task_DrawDriverTestMenu MenuPrint(playingStr, 0x13, 0x10); MenuPrint(reverseStr, 0x13, 0xE); MenuPrint(stereoStr, 0x13, 0xC); - REG_WIN0H = 0xF0; - REG_WIN0V = 0xA0; + REG_WIN0H = WIN_RANGE(0, 240); + REG_WIN0V = WIN_RANGE(0, 160); gUnknown_020387B3 = 0; gUnknown_020387B1 = 0; gUnknown_020387B2 = 0; @@ -1628,8 +1628,8 @@ void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput if(gMain.newKeys & 0x2) { REG_DISPCNT = 0x7140; - REG_WIN0H = 0x11DF; - REG_WIN0V = 0x11F; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); TASK.FUNC = sub_80BA258; return; @@ -1984,8 +1984,8 @@ void sub_80BAF84(u8 taskId) MenuPrint(seStr, 3, 2); MenuPrint(panStr, 3, 4); MenuPrint(playingStr, 3, 8); - REG_WIN0H = 0xF0; - REG_WIN0V = 0xA0; + REG_WIN0H = WIN_RANGE(0, 240); + REG_WIN0V = WIN_RANGE(0, 160); gUnknown_020387B4[CRY_TEST_UNK0] = 1; gUnknown_020387B4[CRY_TEST_PANPOT] = 0; gUnknown_020387B4[CRY_TEST_CHORUS] = 0; @@ -2028,8 +2028,8 @@ void sub_80BB038(u8 taskId) if(gMain.newKeys & 0x2) { REG_DISPCNT = 0x7140; - REG_WIN0H = 0x11DF; - REG_WIN0V = 0x11F; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); TASK.FUNC = sub_80BA258; return; @@ -2184,8 +2184,8 @@ void sub_80BB3B4(u8 taskId) if(gMain.newKeys & 0x2) { REG_DISPCNT = 0x7140; - REG_WIN0H = 0x11DF; - REG_WIN0V = 0x11F; + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); TASK.FUNC = sub_80BA258; DestroyCryMeterNeedleSprite(); -- cgit v1.2.3 From 5f3d11e9dee2d6025c938f97a05d0a8de7df5e3a Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 1 Jul 2017 21:01:04 -0400 Subject: button defines --- src/sound_check_menu.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index 8ad846748..732452d6f 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -1625,7 +1625,7 @@ void sub_80BA800(u8 taskId) // Task_DrawDriverTestMenu void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput { - if(gMain.newKeys & 0x2) + if(gMain.newKeys & B_BUTTON) { REG_DISPCNT = 0x7140; REG_WIN0H = WIN_RANGE(17, 223); @@ -1634,7 +1634,7 @@ void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput TASK.FUNC = sub_80BA258; return; } - if(gMain.newAndRepeatedKeys & 0x40) // _080BAAA8 + if(gMain.newAndRepeatedKeys & DPAD_UP) // _080BAAA8 { u8 backupVar = gUnknown_020387B3; if(--gUnknown_020387B3 < 0) @@ -1643,7 +1643,7 @@ void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput sub_80BAE10(backupVar, gUnknown_020387B3); return; } - if(gMain.newAndRepeatedKeys & 0x80) // _080BAAD0 + if(gMain.newAndRepeatedKeys & DPAD_DOWN) // _080BAAD0 { u8 backupVar = gUnknown_020387B3; if(++gUnknown_020387B3 > 8) @@ -1652,44 +1652,44 @@ void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput sub_80BAE10(backupVar, gUnknown_020387B3); return; } - if(gMain.newKeys & 0x8) // _080BAAF8 + if(gMain.newKeys & START_BUTTON) // _080BAAF8 { gUnknown_020387D8 ^= 1; sub_80BAD5C(); return; } - if(gMain.newKeys & 0x4) // _080BAB14 + if(gMain.newKeys & SELECT_BUTTON) // _080BAB14 { gUnknown_020387D9 ^= 1; sub_80BAD5C(); SetPokemonCryStereo(gUnknown_020387D9); return; } - if(gMain.newAndRepeatedKeys & 0x100) // _080BAB38 + if(gMain.newAndRepeatedKeys & R_BUTTON) // _080BAB38 { sub_80BACDC(10); sub_80BAD5C(); return; } - if(gMain.newAndRepeatedKeys & 0x200) // _080BAB46 + if(gMain.newAndRepeatedKeys & L_BUTTON) // _080BAB46 { sub_80BACDC(-10); sub_80BAD5C(); return; } - if(gMain.newAndRepeatedKeys & 0x20) // _080BAB56 + if(gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BAB56 { sub_80BACDC(-1); sub_80BAD5C(); return; } - if(gMain.newAndRepeatedKeys & 0x10) // _080BAB64 + if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BAB64 { sub_80BACDC(1); sub_80BAD5C(); return; } - if(gMain.newKeys & 0x1) // _080BAB78 + if(gMain.newKeys & A_BUTTON) // _080BAB78 { u8 divide, remaining; @@ -2025,7 +2025,7 @@ void sub_80BB038(u8 taskId) } } // _080BB0A2 - if(gMain.newKeys & 0x2) + if(gMain.newKeys & B_BUTTON) { REG_DISPCNT = 0x7140; REG_WIN0H = WIN_RANGE(17, 223); @@ -2034,7 +2034,7 @@ void sub_80BB038(u8 taskId) TASK.FUNC = sub_80BA258; return; } - if(gMain.newKeys & 0x1) // _080BB104 + if(gMain.newKeys & A_BUTTON) // _080BB104 { s8 panpot = gUnknown_083D03F8[gUnknown_020387B4[CRY_TEST_PANPOT]]; if(panpot != -128) @@ -2061,25 +2061,25 @@ void sub_80BB038(u8 taskId) gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; return; } - if(gMain.newKeys & 0x200) // _080BB15E + if(gMain.newKeys & L_BUTTON) // _080BB15E { gUnknown_020387B4[CRY_TEST_PANPOT]++; if(gUnknown_020387B4[CRY_TEST_PANPOT] > 4) gUnknown_020387B4[CRY_TEST_PANPOT] = 0; } - if(gMain.newKeys & 0x100) // _080BB176 + if(gMain.newKeys & R_BUTTON) // _080BB176 { gUnknown_020387B4[CRY_TEST_PANPOT]--; if(gUnknown_020387B4[CRY_TEST_PANPOT] < 0) gUnknown_020387B4[CRY_TEST_PANPOT] = 4; } - if(gMain.newAndRepeatedKeys & 0x10) // _080BB192 + if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // _080BB192 { gUnknown_020387B4[CRY_TEST_UNK0]++; if(gUnknown_020387B4[CRY_TEST_UNK0] > 0xF7) gUnknown_020387B4[CRY_TEST_UNK0] = 0; } - else if(gMain.newAndRepeatedKeys & 0x20) // _080BB1B0 + else if(gMain.newAndRepeatedKeys & DPAD_LEFT) // _080BB1B0 { gUnknown_020387B4[CRY_TEST_UNK0]--; if(gUnknown_020387B4[CRY_TEST_UNK0] < 0) @@ -2161,27 +2161,27 @@ void sub_80BB3B4(u8 taskId) { sub_8119F88(3); - if(gMain.newKeys & 0x1) + if(gMain.newKeys & A_BUTTON) { sub_811A050(gUnknown_03005D34); } - if(gMain.newKeys & 0x100) + if(gMain.newKeys & R_BUTTON) { StopCryAndClearCrySongs(); } - if(gMain.newAndRepeatedKeys & 0x40) + if(gMain.newAndRepeatedKeys & DPAD_UP) { if(--gUnknown_03005D34 == 0) gUnknown_03005D34 = 384; // total species sub_80BB494(); } - if(gMain.newAndRepeatedKeys & 0x80) + if(gMain.newAndRepeatedKeys & DPAD_DOWN) { if(++gUnknown_03005D34 > 384) gUnknown_03005D34 = 1; sub_80BB494(); } - if(gMain.newKeys & 0x2) + if(gMain.newKeys & B_BUTTON) { REG_DISPCNT = 0x7140; REG_WIN0H = WIN_RANGE(17, 223); -- cgit v1.2.3 From 6493e7bbc7673f906ee7c009e80bed3d7b552620 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 1 Jul 2017 21:06:34 -0400 Subject: sizeof --- src/sound_check_menu.c | 116 ++++++++++++++++++++++++------------------------- 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index 732452d6f..078b1d072 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -969,19 +969,19 @@ void CB2_StartSoundCheckMenu(void) // Task_InitSoundCheckMenu void sub_80BA258(u8 taskId) { - u8 soundcheckStr[sizeof gDebugText_SoundCheckJap]; - u8 bgmStr[sizeof gDebugText_BGM]; - u8 seStr[sizeof gDebugText_SE]; - u8 abDescStr[sizeof gDebugText_ABDesc]; - u8 upDownStr[sizeof gDebugText_UpDown]; - u8 driverStr[sizeof gDebugText_DriverTest]; - - memcpy(soundcheckStr, gDebugText_SoundCheckJap, sizeof gDebugText_SoundCheckJap); - memcpy(bgmStr, gDebugText_BGM, sizeof gDebugText_BGM); - memcpy(seStr, gDebugText_SE, sizeof gDebugText_SE); - memcpy(abDescStr, gDebugText_ABDesc, sizeof gDebugText_ABDesc); - memcpy(upDownStr, gDebugText_UpDown, sizeof gDebugText_UpDown); - memcpy(driverStr, gDebugText_DriverTest, sizeof gDebugText_DriverTest); + u8 soundcheckStr[sizeof(gDebugText_SoundCheckJap)]; + u8 bgmStr[sizeof(gDebugText_BGM)]; + u8 seStr[sizeof(gDebugText_SE)]; + u8 abDescStr[sizeof(gDebugText_ABDesc)]; + u8 upDownStr[sizeof(gDebugText_UpDown)]; + u8 driverStr[sizeof(gDebugText_DriverTest)]; + + memcpy(soundcheckStr, gDebugText_SoundCheckJap, sizeof(gDebugText_SoundCheckJap)); + memcpy(bgmStr, gDebugText_BGM, sizeof(gDebugText_BGM)); + memcpy(seStr, gDebugText_SE, sizeof(gDebugText_SE)); + memcpy(abDescStr, gDebugText_ABDesc, sizeof(gDebugText_ABDesc)); + memcpy(upDownStr, gDebugText_UpDown, sizeof(gDebugText_UpDown)); + memcpy(driverStr, gDebugText_DriverTest, sizeof(gDebugText_DriverTest)); if(!gPaletteFade.active) { @@ -1555,35 +1555,35 @@ void sub_80BA79C(const u8 *const string, u16 x, u16 y) void sub_80BA800(u8 taskId) // Task_DrawDriverTestMenu { - u8 bbackStr[sizeof gDebugText_BBack]; - u8 aplayStr[sizeof gDebugText_APlay]; - u8 voiceStr[sizeof gDebugText_Voice]; - u8 volumeStr[sizeof gDebugText_Volume]; - u8 panpotStr[sizeof gDebugText_Panpot]; - u8 pitchStr[sizeof gDebugText_Pitch]; - u8 lengthStr[sizeof gDebugText_Length]; - u8 releaseStr[sizeof gDebugText_Release]; - u8 progressStr[sizeof gDebugText_Progress]; - u8 chorusStr[sizeof gDebugText_Chorus]; - u8 priorityStr[sizeof gDebugText_Priority]; - u8 playingStr[sizeof gDebugText_Playing]; - u8 reverseStr[sizeof gDebugText_Reverse]; - u8 stereoStr[sizeof gDebugText_Stereo]; - - memcpy(bbackStr, gDebugText_BBack, sizeof gDebugText_BBack); - memcpy(aplayStr, gDebugText_APlay, sizeof gDebugText_APlay); - memcpy(voiceStr, gDebugText_Voice, sizeof gDebugText_Voice); - memcpy(volumeStr, gDebugText_Volume, sizeof gDebugText_Volume); - memcpy(panpotStr, gDebugText_Panpot, sizeof gDebugText_Panpot); - memcpy(pitchStr, gDebugText_Pitch, sizeof gDebugText_Pitch); - memcpy(lengthStr, gDebugText_Length, sizeof gDebugText_Length); - memcpy(releaseStr, gDebugText_Release, sizeof gDebugText_Release); - memcpy(progressStr, gDebugText_Progress, sizeof gDebugText_Progress); - memcpy(chorusStr, gDebugText_Chorus, sizeof gDebugText_Chorus); - memcpy(priorityStr, gDebugText_Priority, sizeof gDebugText_Priority); - memcpy(playingStr, gDebugText_Playing, sizeof gDebugText_Playing); - memcpy(reverseStr, gDebugText_Reverse, sizeof gDebugText_Reverse); - memcpy(stereoStr, gDebugText_Stereo, sizeof gDebugText_Stereo); + u8 bbackStr[sizeof(gDebugText_BBack)]; + u8 aplayStr[sizeof(gDebugText_APlay)]; + u8 voiceStr[sizeof(gDebugText_Voice)]; + u8 volumeStr[sizeof(gDebugText_Volume)]; + u8 panpotStr[sizeof(gDebugText_Panpot)]; + u8 pitchStr[sizeof(gDebugText_Pitch)]; + u8 lengthStr[sizeof(gDebugText_Length)]; + u8 releaseStr[sizeof(gDebugText_Release)]; + u8 progressStr[sizeof(gDebugText_Progress)]; + u8 chorusStr[sizeof(gDebugText_Chorus)]; + u8 priorityStr[sizeof(gDebugText_Priority)]; + u8 playingStr[sizeof(gDebugText_Playing)]; + u8 reverseStr[sizeof(gDebugText_Reverse)]; + u8 stereoStr[sizeof(gDebugText_Stereo)]; + + memcpy(bbackStr, gDebugText_BBack, sizeof(gDebugText_BBack)); + memcpy(aplayStr, gDebugText_APlay, sizeof(gDebugText_APlay)); + memcpy(voiceStr, gDebugText_Voice, sizeof(gDebugText_Voice)); + memcpy(volumeStr, gDebugText_Volume, sizeof(gDebugText_Volume)); + memcpy(panpotStr, gDebugText_Panpot, sizeof(gDebugText_Panpot)); + memcpy(pitchStr, gDebugText_Pitch, sizeof(gDebugText_Pitch)); + memcpy(lengthStr, gDebugText_Length, sizeof(gDebugText_Length)); + memcpy(releaseStr, gDebugText_Release, sizeof(gDebugText_Release)); + memcpy(progressStr, gDebugText_Progress, sizeof(gDebugText_Progress)); + memcpy(chorusStr, gDebugText_Chorus, sizeof(gDebugText_Chorus)); + memcpy(priorityStr, gDebugText_Priority, sizeof(gDebugText_Priority)); + memcpy(playingStr, gDebugText_Playing, sizeof(gDebugText_Playing)); + memcpy(reverseStr, gDebugText_Reverse, sizeof(gDebugText_Reverse)); + memcpy(stereoStr, gDebugText_Stereo, sizeof(gDebugText_Stereo)); REG_DISPCNT = 0x3140; MenuDrawTextWindow(0, 0, 0x1D, 0x13); @@ -1750,7 +1750,7 @@ void sub_80BACDC(s8 var) { int minMaxArray[ARRAY_COUNT(gUnknown_083D039C)]; - memcpy(minMaxArray, gUnknown_083D039C, sizeof gUnknown_083D039C); + memcpy(minMaxArray, gUnknown_083D039C, sizeof(gUnknown_083D039C)); gUnknown_020387B4[gUnknown_020387B3] += var; if(gUnknown_020387B4[gUnknown_020387B3] > minMaxArray[MULTI_DIM_ARR(gUnknown_020387B3, B_16, MAX)]) @@ -1778,11 +1778,11 @@ void sub_80BAD5C(void) void sub_80BAE10(u8 var1, u8 var2) { - u8 str1[sizeof gUnknown_083D03DC]; - u8 str2[sizeof gUnknown_083D03DE]; + u8 str1[sizeof(gUnknown_083D03DC)]; + u8 str2[sizeof(gUnknown_083D03DE)]; - memcpy(str1, gUnknown_083D03DC, sizeof gUnknown_083D03DC); - memcpy(str2, gUnknown_083D03DE, sizeof gUnknown_083D03DE); + memcpy(str1, gUnknown_083D03DC, sizeof(gUnknown_083D03DC)); + memcpy(str2, gUnknown_083D03DE, sizeof(gUnknown_083D03DE)); MenuPrint(str2, gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var1, B_16, 1)]); MenuPrint(str1, gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 0)], gUnknown_083D0300[MULTI_DIM_ARR(var2, B_16, 1)]); @@ -1795,7 +1795,7 @@ void sub_80BAE10(u8 var1, u8 var2) u8 i; u8 someVar, someVar2; - memcpy(powers, gUnknown_083D03E0, sizeof powers); + memcpy(powers, gUnknown_083D03E0, sizeof(powers); for(i = 0; i < var4; i++) str[i] = 0; @@ -1971,13 +1971,13 @@ _080BAF80: .4byte gUnknown_083D03E0\n\ void sub_80BAF84(u8 taskId) { - u8 seStr[sizeof gOtherText_SE]; - u8 panStr[sizeof gOtherText_Pan]; - u8 playingStr[sizeof gDebugText_Playing]; + u8 seStr[sizeof(gOtherText_SE)]; + u8 panStr[sizeof(gOtherText_Pan)]; + u8 playingStr[sizeof(gDebugText_Playing)]; - memcpy(seStr, gOtherText_SE, sizeof gOtherText_SE); - memcpy(panStr, gOtherText_Pan, sizeof gOtherText_Pan); - memcpy(playingStr, gDebugText_Playing, sizeof gDebugText_Playing); + memcpy(seStr, gOtherText_SE, sizeof(gOtherText_SE)); + memcpy(panStr, gOtherText_Pan, sizeof(gOtherText_Pan)); + memcpy(playingStr, gDebugText_Playing, sizeof(gDebugText_Playing)); REG_DISPCNT = 0x3140; MenuDrawTextWindow(0, 0, 0x1D, 0x13); @@ -2089,11 +2089,11 @@ void sub_80BB038(u8 taskId) void sub_80BB1D4(void) { - u8 lrStr[5]; - u8 rlStr[5]; + u8 lrStr[sizeof(gOtherText_LR)]; + u8 rlStr[sizeof(gOtherText_RL)]; - memcpy(lrStr, gOtherText_LR, sizeof lrStr); - memcpy(rlStr, gOtherText_RL, sizeof rlStr); + memcpy(lrStr, gOtherText_LR, sizeof(lrStr)); + memcpy(rlStr, gOtherText_RL, sizeof(rlStr)); sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0], 7, 2, 3); -- cgit v1.2.3 From 87dc53438e56c09f72e0d30eab5a565137d16b63 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 1 Jul 2017 21:15:03 -0400 Subject: text defines --- include/text.h | 1 + src/sound_check_menu.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/include/text.h b/include/text.h index 6e32de6dd..2c579d227 100644 --- a/include/text.h +++ b/include/text.h @@ -6,6 +6,7 @@ #define CHAR_QUESTION_MARK 0xAC #define CHAR_PERIOD 0xAD #define CHAR_HYPHEN 0xAE +#define CHAR_3PERIODS 0xB0 #define CHAR_MALE 0xB5 #define CHAR_FEMALE 0xB6 #define CHAR_COMMA 0xB8 diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index 078b1d072..b23a2098d 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -1518,22 +1518,22 @@ void sub_80BA700(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? for(i = 0; i < 3; i++) str[i] = 0; // initialize array - str[3] = 0xB0; - str[4] = 0xFF; + str[3] = CHAR_3PERIODS; + str[4] = EOS; someBool = FALSE; divisorValue = soundIndex / 100; if(divisorValue) { - str[0] = divisorValue + 0xA1; + str[0] = divisorValue + CHAR_0; someBool = TRUE; } divisorValue = (soundIndex % 100) / 10; if(divisorValue || someBool != FALSE) - str[1] = divisorValue + 0xA1; + str[1] = divisorValue + CHAR_0; - str[2] = ((soundIndex % 100) % 10) + 0xA1; + str[2] = ((soundIndex % 100) % 10) + CHAR_0; MenuPrint(str, x, y); } @@ -1545,9 +1545,9 @@ void sub_80BA79C(const u8 *const string, u16 x, u16 y) for(i = 0; i < 11; i++) str[i] = 0; // format string. - str[10] = 0xFF; // the above for loop formats the last element of the array unnecessarily. + str[10] = EOS; // the above for loop formats the last element of the array unnecessarily. - for(i = 0; string[i] != 0xFF && i < 10; i++) + for(i = 0; string[i] != EOS && i < 10; i++) str[i] = string[i]; MenuPrint(str, x, y); @@ -1800,7 +1800,7 @@ void sub_80BAE10(u8 var1, u8 var2) for(i = 0; i < var4; i++) str[i] = 0; - str[var4 + 1] = 0xFF; + str[var4 + 1] = CHAR_0; someVar = 0; if(var1 < 0) // make absolute value? wtf -- cgit v1.2.3 From 3725149f032e114e40a0363636951293d99d79ef Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 1 Jul 2017 21:16:28 -0400 Subject: formatting --- include/text.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/text.h b/include/text.h index 2c579d227..e640a59f5 100644 --- a/include/text.h +++ b/include/text.h @@ -6,7 +6,7 @@ #define CHAR_QUESTION_MARK 0xAC #define CHAR_PERIOD 0xAD #define CHAR_HYPHEN 0xAE -#define CHAR_3PERIODS 0xB0 +#define CHAR_3PERIODS 0xB0 #define CHAR_MALE 0xB5 #define CHAR_FEMALE 0xB6 #define CHAR_COMMA 0xB8 -- cgit v1.2.3 From 5e1d6e8aab08c7d96ccffa03c00311717bbf3f7f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 1 Jul 2017 21:34:13 -0400 Subject: i dont want to give this commit a name --- src/sound_check_menu.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index b23a2098d..a8126b407 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -71,6 +71,26 @@ extern u8 gUnknown_03005E98; extern struct MusicPlayerInfo *gUnknown_03005D30; extern struct MusicPlayerInfo gMPlay_BGM; +void sub_80BA258(u8); +void sub_80BA384(u8); +void sub_80BA65C(u8); +void sub_80BA68C(u8); +void sub_80BA6B8(u8); +void sub_80BA700(u16, u16, u16); +void sub_80BA79C(const u8 *const, u16, u16); +void sub_80BA800(u8); +void sub_80BAA48(u8); +void sub_80BACDC(s8); +void sub_80BAD5C(void); +void sub_80BAE10(u8, u8); +void sub_80BAE78(int, u16, u16, u8); +void sub_80BAF84(u8); +void sub_80BB038(u8); +void sub_80BB1D4(void); +void sub_80BB25C(u8); +void sub_80BB3B4(u8); +void sub_80BB494(void); + static const u8 gDebugText_SoundCheckJap[] = _("サウンドチェック"); static const u8 gDebugText_BGM[] = _("BGM"); static const u8 gDebugText_SE[] = _("SE "); @@ -874,26 +894,6 @@ static const u8 *const gSENames[] = SEName_W063B }; -void sub_80BA258(u8); -void sub_80BA384(u8); -void sub_80BA65C(u8); -void sub_80BA68C(u8); -void sub_80BA6B8(u8); -void sub_80BA700(u16, u16, u16); -void sub_80BA79C(const u8 *const, u16, u16); -void sub_80BA800(u8); -void sub_80BAA48(u8); -void sub_80BACDC(s8); -void sub_80BAD5C(void); -void sub_80BAE10(u8, u8); -void sub_80BAE78(int, u16, u16, u8); -void sub_80BAF84(u8); -void sub_80BB038(u8); -void sub_80BB1D4(void); -void sub_80BB25C(u8); -void sub_80BB3B4(u8); -void sub_80BB494(void); - void sub_80BA0A8(void) { RunTasks(); -- cgit v1.2.3 From 3f3316e08ff6e4f901c2b03c62ff0074a4e1b90f Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 1 Jul 2017 22:03:20 -0400 Subject: i don't want to give this commit a name either --- src/sound_check_menu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index a8126b407..13a6f6f3e 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -1518,7 +1518,7 @@ void sub_80BA700(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ? for(i = 0; i < 3; i++) str[i] = 0; // initialize array - str[3] = CHAR_3PERIODS; + str[3] = CHAR_ELLIPSIS; str[4] = EOS; someBool = FALSE; -- cgit v1.2.3 From 2bedaf3824d27b6f8b3e3df9ec13604c0c6af749 Mon Sep 17 00:00:00 2001 From: ProjectRevoTPP Date: Sat, 1 Jul 2017 22:03:40 -0400 Subject: oops --- include/text.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/text.h b/include/text.h index e640a59f5..cf413644b 100644 --- a/include/text.h +++ b/include/text.h @@ -6,7 +6,7 @@ #define CHAR_QUESTION_MARK 0xAC #define CHAR_PERIOD 0xAD #define CHAR_HYPHEN 0xAE -#define CHAR_3PERIODS 0xB0 +#define CHAR_ELLIPSIS 0xB0 #define CHAR_MALE 0xB5 #define CHAR_FEMALE 0xB6 #define CHAR_COMMA 0xB8 -- cgit v1.2.3 From 39322db64069585764f8debb6d25a68682b1b3b6 Mon Sep 17 00:00:00 2001 From: yenatch Date: Mon, 3 Jul 2017 22:17:33 -0400 Subject: Use 0b for tm/hm learnsets --- include/data/pokemon/tmhm_learnsets.h | 832 +++++++++++++++++----------------- 1 file changed, 418 insertions(+), 414 deletions(-) diff --git a/include/data/pokemon/tmhm_learnsets.h b/include/data/pokemon/tmhm_learnsets.h index f8994def1..fa48f7f5c 100644 --- a/include/data/pokemon/tmhm_learnsets.h +++ b/include/data/pokemon/tmhm_learnsets.h @@ -9,419 +9,423 @@ // These are 58-bit numbers aligned to 64 bits. The least significant bit represents TM01, // while the most significant bit represents HM08. -const u32 gTMHMLearnsets[][2] = { - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (??????????) - {0x84350720, 0x00e41e08}, // 0b0011100100000111100000100010000100001101010000011100100000 (Bulbasaur) - {0x84350720, 0x00e41e08}, // 0b0011100100000111100000100010000100001101010000011100100000 (Ivysaur) - {0x86354730, 0x00e41e08}, // 0b0011100100000111100000100010000110001101010100011100110000 (Venusaur) - {0xcc510623, 0x00a61ea4}, // 0b0010100110000111101010010011001100010100010000011000100011 (Charmander) - {0xcc510623, 0x00a61ea4}, // 0b0010100110000111101010010011001100010100010000011000100011 (Charmeleon) - {0xce514633, 0x00ae5ea4}, // 0b0010101110010111101010010011001110010100010100011000110011 (Charizard) - {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Squirtle) - {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Wartortle) - {0xce537275, 0x03b01e00}, // 0b1110110000000111100000000011001110010100110111001001110101 (Blastoise) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Caterpie) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Metapod) - {0xb43f4620, 0x0040be80}, // 0b0001000000101111101000000010110100001111110100011000100000 (Butterfree) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Weedle) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Kakuna) - {0xc4354620, 0x00843e88}, // 0b0010000100001111101000100011000100001101010100011000100000 (Beedrill) - {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Pidgey) - {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Pidgeotto) - {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Pidgeot) - {0xadd33e20, 0x00843e02}, // 0b0010000100001111100000001010101101110100110011111000100000 (Rattata) - {0xadd37e30, 0x00a43e02}, // 0b0010100100001111100000001010101101110100110111111000110000 (Raticate) - {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Spearow) - {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Fearow) - {0x8e570620, 0x00213f08}, // 0b0000100001001111110000100010001110010101110000011000100000 (Ekans) - {0x8e574620, 0x00213f08}, // 0b0000100001001111110000100010001110010101110100011000100000 (Arbok) - {0xcdd38221, 0x00e01e02}, // 0b0011100000000111100000001011001101110100111000001000100001 (Pikachu) - {0xcdd3c221, 0x00e03e02}, // 0b0011100000001111100000001011001101110100111100001000100001 (Raichu) - {0xce510621, 0x00a43ed0}, // 0b0010100100001111101101000011001110010100010000011000100001 (Sandshrew) - {0xce514621, 0x00a43ed0}, // 0b0010100100001111101101000011001110010100010100011000100001 (Sandslash) - {0x8dd33624, 0x00a43e8a}, // 0b0010100100001111101000101010001101110100110011011000100100 (Nidoran♀) - {0x8dd33624, 0x00a43e8a}, // 0b0010100100001111101000101010001101110100110011011000100100 (Nidorina) - {0xefd37e35, 0x00b43ffe}, // 0b0010110100001111111111111011101111110100110111111000110101 (Nidoqueen) - {0x8dd33624, 0x00a43e0a}, // 0b0010100100001111100000101010001101110100110011011000100100 (Nidoran♂) - {0x8dd33624, 0x00a43e0a}, // 0b0010100100001111100000101010001101110100110011011000100100 (Nidorino) - {0xefd37e35, 0x00b43f7e}, // 0b0010110100001111110111111011101111110100110111111000110101 (Nidoking) - {0xfdfbb62d, 0x00611e27}, // 0b0001100001000111100010011111111101111110111011011000101101 (Clefairy) - {0xfdfbf62d, 0x00611e27}, // 0b0001100001000111100010011111111101111110111111011000101101 (Clefable) - {0x8c590630, 0x00021e24}, // 0b0000000010000111100010010010001100010110010000011000110000 (Vulpix) - {0x8c594630, 0x00021e24}, // 0b0000000010000111100010010010001100010110010100011000110000 (Ninetales) - {0xfdbbb625, 0x00611e27}, // 0b0001100001000111100010011111111101101110111011011000100101 (Jigglypuff) - {0xfdbbf625, 0x00611e27}, // 0b0001100001000111100010011111111101101110111111011000100101 (Wigglytuff) - {0xa4170e20, 0x00017f88}, // 0b0000000001011111111000100010100100000101110000111000100000 (Zubat) - {0xa4174e20, 0x00017f88}, // 0b0000000001011111111000100010100100000101110100111000100000 (Golbat) - {0x84350720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010000011100100000 (Oddish) - {0x84350720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010000011100100000 (Gloom) - {0x84354720, 0x00441e08}, // 0b0001000100000111100000100010000100001101010100011100100000 (Vileplume) - {0x8c350720, 0x00c43e88}, // 0b0011000100001111101000100010001100001101010000011100100000 (Paras) - {0x8c354720, 0x00c43e88}, // 0b0011000100001111101000100010001100001101010100011100100000 (Parasect) - {0x94350620, 0x0040be08}, // 0b0001000000101111100000100010010100001101010000011000100000 (Venonat) - {0x94354620, 0x0040be88}, // 0b0001000000101111101000100010010100001101010100011000100000 (Venomoth) - {0x8e110620, 0x00843ec8}, // 0b0010000100001111101100100010001110000100010000011000100000 (Diglett) - {0x8e114620, 0x00843ec8}, // 0b0010000100001111101100100010001110000100010100011000100000 (Dugtrio) - {0xadd30e24, 0x00453f82}, // 0b0001000101001111111000001010101101110100110000111000100100 (Meowth) - {0xadd34e34, 0x00453f82}, // 0b0001000101001111111000001010101101110100110100111000110100 (Persian) - {0xcc53326d, 0x03f01e80}, // 0b1111110000000111101000000011001100010100110011001001101101 (Psyduck) - {0xcc53726d, 0x03f01e80}, // 0b1111110000000111101000000011001100010100110111001001101101 (Golduck) - {0xcfd30ea1, 0x00a23ec0}, // 0b0010100010001111101100000011001111110100110000111010100001 (Mankey) - {0xcfd34ea1, 0x00a23ec0}, // 0b0010100010001111101100000011001111110100110100111010100001 (Primeape) - {0x8c510630, 0x00a23ea4}, // 0b0010100010001111101010010010001100010100010000011000110000 (Growlithe) - {0x8c514630, 0x00a23ea4}, // 0b0010100010001111101010010010001100010100010100011000110000 (Arcanine) - {0x9c133264, 0x03103e00}, // 0b1100010000001111100000000010011100000100110011001001100100 (Poliwag) - {0xde133265, 0x03b03e00}, // 0b1110110000001111100000000011011110000100110011001001100101 (Poliwhirl) - {0xde1372e5, 0x03b03e40}, // 0b1110110000001111100100000011011110000100110111001011100101 (Poliwrath) - {0xb45b8e29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111000111000101001 (Abra) - {0xb45b8e29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111000111000101001 (Kadabra) - {0xb45bce29, 0x0041bf03}, // 0b0001000001101111110000001110110100010110111100111000101001 (Alakazam) - {0xce1306a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110000011010100001 (Machop) - {0xce1306a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110000011010100001 (Machoke) - {0xce1346a1, 0x00a03e64}, // 0b0010100000001111100110010011001110000100110100011010100001 (Machamp) - {0x84350720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010000011100100000 (Bellsprout) - {0x84350720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010000011100100000 (Weepinbell) - {0x84354720, 0x00443e08}, // 0b0001000100001111100000100010000100001101010100011100100000 (Victreebel) - {0x84173264, 0x03143e08}, // 0b1100010100001111100000100010000100000101110011001001100100 (Tentacool) - {0x84177264, 0x03143e08}, // 0b1100010100001111100000100010000100000101110111001001100100 (Tentacruel) - {0xce110621, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010000011000100001 (Geodude) - {0xce110621, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010000011000100001 (Graveler) - {0xce114631, 0x00a01e74}, // 0b0010100000000111100111010011001110000100010100011000110001 (Golem) - {0x84710620, 0x00221e24}, // 0b0000100010000111100010010010000100011100010000011000100000 (Ponyta) - {0x84714620, 0x00221e24}, // 0b0000100010000111100010010010000100011100010100011000100000 (Rapidash) - {0xbe5b366c, 0x02709e24}, // 0b1001110000100111100010010010111110010110110011011001101100 (Slowpoke) - {0xfe5b766d, 0x02f09e24}, // 0b1011110000100111100010010011111110010110110111011001101101 (Slowbro) - {0x85930620, 0x00400e03}, // 0b0001000000000011100000001110000101100100110000011000100000 (Magnemite) - {0x85934620, 0x00400e03}, // 0b0001000000000011100000001110000101100100110100011000100000 (Magneton) - {0x84510620, 0x000c7e80}, // 0b0000001100011111101000000010000100010100010000011000100000 (Farfetch'd) - {0x84110620, 0x00087e80}, // 0b0000001000011111101000000010000100000100010000011000100000 (Doduo) - {0x84114e20, 0x00087f80}, // 0b0000001000011111111000000010000100000100010100111000100000 (Dodrio) - {0x841b3264, 0x03103e00}, // 0b1100010000001111100000000010000100000110110011001001100100 (Seel) - {0x841b7264, 0x03103e00}, // 0b1100010000001111100000000010000100000110110111001001100100 (Dewgong) - {0x8d970e20, 0x00003f6e}, // 0b0000000000001111110110111010001101100101110000111000100000 (Grimer) - {0xcd974e21, 0x00a03f6e}, // 0b0010100000001111110110111011001101100101110100111000100001 (Muk) - {0x84133264, 0x02101e00}, // 0b1000010000000111100000000010000100000100110011001001100100 (Shellder) - {0x84137264, 0x02101f00}, // 0b1000010000000111110000000010000100000100110111001001100100 (Cloyster) - {0xb4970e20, 0x0001bf08}, // 0b0000000001101111110000100010110100100101110000111000100000 (Gastly) - {0xb4970e20, 0x0001bf08}, // 0b0000000001101111110000100010110100100101110000111000100000 (Haunter) - {0xf5974e21, 0x00a1bf08}, // 0b0010100001101111110000100011110101100101110100111000100001 (Gengar) - {0x8e510e30, 0x00a01f50}, // 0b0010100000000111110101000010001110010100010000111000110000 (Onix) - {0xf41b8e29, 0x0041bf01}, // 0b0001000001101111110000000111110100000110111000111000101001 (Drowzee) - {0xf41bce29, 0x0041bf01}, // 0b0001000001101111110000000111110100000110111100111000101001 (Hypno) - {0x8c133264, 0x02b43e40}, // 0b1010110100001111100100000010001100000100110011001001100100 (Krabby) - {0x8c137264, 0x02b43e40}, // 0b1010110100001111100100000010001100000100110111001001100100 (Kingler) - {0x85938a20, 0x00402f02}, // 0b0001000000001011110000001010000101100100111000101000100000 (Voltorb) - {0x8593ca20, 0x00402f02}, // 0b0001000000001011110000001010000101100100111100101000100000 (Electrode) - {0x94358720, 0x0060be09}, // 0b0001100000101111100000100110010100001101011000011100100000 (Exeggcute) - {0x9435c720, 0x0060be09}, // 0b0001100000101111100000100110010100001101011100011100100000 (Exeggutor) - {0xce513621, 0x00a03ef4}, // 0b0010100000001111101111010011001110010100010011011000100001 (Cubone) - {0xce517621, 0x00a03ef4}, // 0b0010100000001111101111010011001110010100010111011000100001 (Marowak) - {0xc61306a1, 0x00a03e40}, // 0b0010100000001111100100000011000110000100110000011010100001 (Hitmonlee) - {0xc61306a1, 0x00a03e40}, // 0b0010100000001111100100000011000110000100110000011010100001 (Hitmonchan) - {0xeff37625, 0x00b43e76}, // 0b0010110100001111100111011011101111111100110111011000100101 (Lickitung) - {0xa5930e20, 0x00403f2e}, // 0b0001000000001111110010111010100101100100110000111000100000 (Koffing) - {0xa5934e20, 0x00403f2e}, // 0b0001000000001111110010111010100101100100110100111000100000 (Weezing) - {0x8fd33630, 0x00a03e76}, // 0b0010100000001111100111011010001111110100110011011000110000 (Rhyhorn) - {0xcfd37631, 0x00b43e76}, // 0b0010110100001111100111011011001111110100110111011000110001 (Rhydon) - {0xf7fbf66d, 0x00e19e76}, // 0b0011100001100111100111011011110111111110111111011001101101 (Chansey) - {0x84354720, 0x00c43e08}, // 0b0011000100001111100000100010000100001101010100011100100000 (Tangela) - {0xeff37675, 0x00b43ef6}, // 0b0010110100001111101111011011101111111100110111011001110101 (Kangaskhan) - {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Horsea) - {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Seadra) - {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Goldeen) - {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Seaking) - {0x9593b264, 0x03500e01}, // 0b1101010000000011100000000110010101100100111011001001100100 (Staryu) - {0x9593f264, 0x03508e01}, // 0b1101010000100011100000000110010101100100111111001001100100 (Starmie) - {0xf5bbce29, 0x0041bf03}, // 0b0001000001101111110000001111110101101110111100111000101001 (Mr. mime) - {0x84134620, 0x00847e80}, // 0b0010000100011111101000000010000100000100110100011000100000 (Scyther) - {0xf413fa6d, 0x0040bf01}, // 0b0001000000101111110000000111110100000100111111101001101101 (Jynx) - {0xd5d3c221, 0x00e03e02}, // 0b0011100000001111100000001011010101110100111100001000100001 (Electabuzz) - {0xd4514621, 0x00a03e24}, // 0b0010100000001111100010010011010100010100010100011000100001 (Magmar) - {0xce1346a1, 0x00a43e40}, // 0b0010100100001111100100000011001110000100110100011010100001 (Pinsir) - {0x87f37624, 0x00b01e76}, // 0b0010110000000111100111011010000111111100110111011000100100 (Tauros) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Magikarp) - {0x87937a74, 0x03b01f34}, // 0b1110110000000111110011010010000111100100110111101001110100 (Gyarados) - {0x95db7274, 0x03b01e02}, // 0b1110110000000111100000001010010101110110110111001001110100 (Lapras) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Ditto) - {0xac530620, 0x00001e00}, // 0b0000000000000111100000000010101100010100110000011000100000 (Eevee) - {0xac537674, 0x03101e00}, // 0b1100010000000111100000000010101100010100110111011001110100 (Vaporeon) - {0xadd34630, 0x00401e02}, // 0b0001000000000111100000001010101101110100110100011000110000 (Jolteon) - {0xac534630, 0x00021e24}, // 0b0000000010000111100010010010101100010100110100011000110000 (Flareon) - {0xb5f37620, 0x00402e82}, // 0b0001000000001011101000001010110101111100110111011000100000 (Porygon) - {0x84133264, 0x03903e50}, // 0b1110010000001111100101000010000100000100110011001001100100 (Omanyte) - {0x84137264, 0x03903e50}, // 0b1110010000001111100101000010000100000100110111001001100100 (Omastar) - {0x8c173264, 0x01903ed0}, // 0b0110010000001111101101000010001100000101110011001001100100 (Kabuto) - {0xcc177264, 0x03943ed0}, // 0b1110010100001111101101000011001100000101110111001001100100 (Kabutops) - {0x86534e32, 0x00a87ff4}, // 0b0010101000011111111111010010000110010100110100111000110010 (Aerodactyl) - {0xf7b37625, 0x00301e76}, // 0b0000110000000111100111011011110111101100110111011000100101 (Snorlax) - {0x84137674, 0x00884e91}, // 0b0010001000010011101001000110000100000100110111011001110100 (Articuno) - {0x8593c630, 0x00c84e92}, // 0b0011001000010011101001001010000101100100111100011000110000 (Zapdos) - {0x841b4630, 0x008a4eb4}, // 0b0010001010010011101011010010000100000110110100011000110000 (Moltres) - {0x85db7664, 0x01101e26}, // 0b0100010000000111100010011010000101110110110111011001100100 (Dratini) - {0x85db7664, 0x01101e26}, // 0b0100010000000111100010011010000101110110110111011001100100 (Dragonair) - {0xc7db7677, 0x03bc5ef6}, // 0b1110111100010111101111011011000111110110110111011001110111 (Dragonite) - {0xf7fbfeed, 0x00e18ff7}, // 0b0011100001100011111111011111110111111110111111111011101101 (Mewtwo) - {0xffffffff, 0x03ffffff}, // 0b1111111111111111111111111111111111111111111111111111111111 (Mew) - {0x847d8720, 0x00441e01}, // 0b0001000100000111100000000110000100011111011000011100100000 (Chikorita) - {0x847d8720, 0x00e41e01}, // 0b0011100100000111100000000110000100011111011000011100100000 (Bayleef) - {0x867dc720, 0x00e41e01}, // 0b0011100100000111100000000110000110011111011100011100100000 (Meganium) - {0x8c110620, 0x00061ea4}, // 0b0000000110000111101010010010001100000100010000011000100000 (Cyndaquil) - {0xcc110631, 0x00a61ea4}, // 0b0010100110000111101010010011001100000100010000011000110001 (Quilava) - {0xce114631, 0x00a61ea4}, // 0b0010100110000111101010010011001110000100010100011000110001 (Typhlosion) - {0xcc533265, 0x03141e80}, // 0b1100010100000111101000000011001100010100110011001001100101 (Totodile) - {0xcc533275, 0x03b41e80}, // 0b1110110100000111101000000011001100010100110011001001110101 (Croconaw) - {0xce537277, 0x03b41e80}, // 0b1110110100000111101000000011001110010100110111001001110111 (Feraligatr) - {0xecf31625, 0x00143e06}, // 0b0000010100001111100000011011101100111100110001011000100101 (Sentret) - {0xedf37625, 0x00b43e06}, // 0b0010110100001111100000011011101101111100110111011000100101 (Furret) - {0xb4130620, 0x00487e81}, // 0b0001001000011111101000000110110100000100110000011000100000 (Hoothoot) - {0xb4134620, 0x00487e81}, // 0b0001001000011111101000000110110100000100110100011000100000 (Noctowl) - {0xcc3d8621, 0x00403e81}, // 0b0001000000001111101000000111001100001111011000011000100001 (Ledyba) - {0xcc3dc621, 0x00403e81}, // 0b0001000000001111101000000111001100001111011100011000100001 (Ledian) - {0x9c350620, 0x00403e08}, // 0b0001000000001111100000100010011100001101010000011000100000 (Spinarak) - {0x9c354620, 0x00403e08}, // 0b0001000000001111100000100010011100001101010100011000100000 (Ariados) - {0xa4174e20, 0x00097f88}, // 0b0000001001011111111000100010100100000101110100111000100000 (Crobat) - {0x85933264, 0x03501e02}, // 0b1101010000000111100000001010000101100100110011001001100100 (Chinchou) - {0x85937264, 0x03501e02}, // 0b1101010000000111100000001010000101100100110111001001100100 (Lanturn) - {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Pichu) - {0xbc7b8624, 0x00401e27}, // 0b0001000000000111100010011110111100011110111000011000100100 (Cleffa) - {0xbc3b8624, 0x00401e27}, // 0b0001000000000111100010011110111100001110111000011000100100 (Igglybuff) - {0xb43b8624, 0x00c01e27}, // 0b0011000000000111100010011110110100001110111000011000100100 (Togepi) - {0xf43bc625, 0x00c85ea7}, // 0b0011001000010111101010011111110100001110111100011000100101 (Togetic) - {0xb4378628, 0x0040fe81}, // 0b0001000000111111101000000110110100001101111000011000101000 (Natu) - {0xb437c628, 0x0048fe81}, // 0b0001001000111111101000000110110100001101111100011000101000 (Xatu) - {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Mareep) - {0xc5d38221, 0x00e01e02}, // 0b0011100000000111100000001011000101110100111000001000100001 (Flaaffy) - {0xc5d3c221, 0x00e01e02}, // 0b0011100000000111100000001011000101110100111100001000100001 (Ampharos) - {0x843d4720, 0x00441e08}, // 0b0001000100000111100000100010000100001111010100011100100000 (Bellossom) - {0xcc533265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110011001001100101 (Marill) - {0xcc537265, 0x03b01e00}, // 0b1110110000000111100000000011001100010100110111001001100101 (Azumarill) - {0xce110e29, 0x00a03e50}, // 0b0010100000001111100101000011001110000100010000111000101001 (Sudowoodo) - {0xde137265, 0x03b03e00}, // 0b1110110000001111100000000011011110000100110111001001100101 (Politoed) - {0x84350720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010000011100100000 (Hoppip) - {0x84350720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010000011100100000 (Skiploom) - {0x84354720, 0x00401e80}, // 0b0001000000000111101000000010000100001101010100011100100000 (Jumpluff) - {0xedf30e25, 0x00a53e82}, // 0b0010100101001111101000001011101101111100110000111000100101 (Aipom) - {0x843d8720, 0x00441e08}, // 0b0001000100000111100000100010000100001111011000011100100000 (Sunkern) - {0x843dc720, 0x00441e08}, // 0b0001000100000111100000100010000100001111011100011100100000 (Sunflora) - {0xb4350620, 0x00407e80}, // 0b0001000000011111101000000010110100001101010000011000100000 (Yanma) - {0x8e533264, 0x03d01e18}, // 0b1111010000000111100001100010001110010100110011001001100100 (Wooper) - {0xce537265, 0x03f01e58}, // 0b1111110000000111100101100011001110010100110111001001100101 (Quagsire) - {0xbc53c628, 0x00449e01}, // 0b0001000100100111100000000110111100010100111100011000101000 (Espeon) - {0xbc534e20, 0x00451f00}, // 0b0001000101000111110000000010111100010100110100111000100000 (Umbreon) - {0xa4130e28, 0x00097f80}, // 0b0000001001011111111000000010100100000100110000111000101000 (Murkrow) - {0xfe5b766d, 0x02f09e24}, // 0b1011110000100111100010010011111110010110110111011001101101 (Slowking) - {0xb5930e28, 0x0041bf82}, // 0b0001000001101111111000001010110101100100110000111000101000 (Misdreavus) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Unown) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wobbuffet) - {0xb7d38628, 0x00e0be03}, // 0b0011100000101111100000001110110111110100111000011000101000 (Girafarig) - {0x8e358620, 0x00a01e11}, // 0b0010100000000111100001000110001110001101011000011000100000 (Pineco) - {0x8e35c620, 0x00a01e11}, // 0b0010100000000111100001000110001110001101011100011000100000 (Forretress) - {0xaff3362c, 0x00a03e66}, // 0b0010100000001111100110011010101111111100110011011000101100 (Dunsparce) - {0x8e530620, 0x00a47ed8}, // 0b0010100100011111101101100010001110010100110000011000100000 (Gligar) - {0x8e514e30, 0x00a41f50}, // 0b0010100100000111110101000010001110010100010100111000110000 (Steelix) - {0xefb30eb5, 0x00a23f2e}, // 0b0010100010001111110010111011101111101100110000111010110101 (Snubbull) - {0xeff34eb5, 0x00a23f6e}, // 0b0010100010001111110110111011101111111100110100111010110101 (Granbull) - {0xa4133264, 0x03101e0a}, // 0b1100010000000111100000101010100100000100110011001001100100 (Qwilfish) - {0x84134620, 0x00a47e90}, // 0b0010100100011111101001000010000100000100110100011000100000 (Scizor) - {0x8e190620, 0x00e01e58}, // 0b0011100000000111100101100010001110000110010000011000100000 (Shuckle) - {0xce1346a1, 0x00a43e40}, // 0b0010100100001111100100000011001110000100110100011010100001 (Heracross) - {0xec533e69, 0x00b53f80}, // 0b0010110101001111111000000011101100010100110011111001101001 (Sneasel) - {0xce130eb1, 0x00a43f80}, // 0b0010100100001111111000000011001110000100110000111010110001 (Teddiursa) - {0xce134eb1, 0x00a43fc0}, // 0b0010100100001111111100000011001110000100110100111010110001 (Ursaring) - {0x84118620, 0x00821e25}, // 0b0010000010000111100010010110000100000100011000011000100000 (Slugma) - {0x8611c620, 0x00a21e75}, // 0b0010100010000111100111010110000110000100011100011000100000 (Magcargo) - {0x8e13b270, 0x00a01e51}, // 0b0010100000000111100101000110001110000100111011001001110000 (Swinub) - {0x8e13f270, 0x00a01e51}, // 0b0010100000000111100101000110001110000100111111001001110000 (Piloswine) - {0xbe1bb66c, 0x00b01e51}, // 0b0010110000000111100101000110111110000110111011011001101100 (Corsola) - {0x94137624, 0x03103e24}, // 0b1100010000001111100010010010010100000100110111011000100100 (Remoraid) - {0x94137724, 0x03103e2c}, // 0b1100010000001111100010110010010100000100110111011100100100 (Octillery) - {0x84133265, 0x00083e80}, // 0b0000001000001111101000000010000100000100110011001001100101 (Delibird) - {0x86133264, 0x03101e80}, // 0b1100010000000111101000000010000110000100110011001001100100 (Mantine) - {0x84110e30, 0x008c7f90}, // 0b0010001100011111111001000010000100000100010000111000110000 (Skarmory) - {0xa4710e30, 0x00833f2c}, // 0b0010000011001111110010110010100100011100010000111000110000 (Houndour) - {0xa4714e30, 0x00a33f2c}, // 0b0010100011001111110010110010100100011100010100111000110000 (Houndoom) - {0x84137264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110111001001100100 (Kingdra) - {0x86510630, 0x00a01e50}, // 0b0010100000000111100101000010000110010100010000011000110000 (Phanpy) - {0x86514630, 0x00a01e50}, // 0b0010100000000111100101000010000110010100010100011000110000 (Donphan) - {0xb5f37620, 0x00402e82}, // 0b0001000000001011101000001010110101111100110111011000100000 (Porygon2) - {0xb7f38638, 0x0040be03}, // 0b0001000000101111100000001110110111111100111000011000111000 (Stantler) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Smeargle) - {0xc61306a0, 0x00a03e00}, // 0b0010100000001111100000000011000110000100110000011010100000 (Tyrogue) - {0xce1306a0, 0x00a03e10}, // 0b0010100000001111100001000011001110000100110000011010100000 (Hitmontop) - {0xb413b26c, 0x0040be01}, // 0b0001000000101111100000000110110100000100111011001001101100 (Smoochum) - {0xd5938221, 0x00c03e02}, // 0b0011000000001111100000001011010101100100111000001000100001 (Elekid) - {0xd4510621, 0x00803e24}, // 0b0010000000001111100010010011010100010100010000011000100001 (Magby) - {0xe7f37625, 0x00b01e52}, // 0b0010110000000111100101001011100111111100110111011000100101 (Miltank) - {0xf7fbf66d, 0x00e19e76}, // 0b0011100001100111100111011011110111111110111111011001101101 (Blissey) - {0x8dd34638, 0x00e40e13}, // 0b0011100100000011100001001110001101110100110100011000111000 (Raikou) - {0x8c734638, 0x00e40e35}, // 0b0011100100000011100011010110001100011100110100011000111000 (Entei) - {0x8c53767c, 0x03940e11}, // 0b1110010100000011100001000110001100010100110111011001111100 (Suicune) - {0xce134e20, 0x00801f10}, // 0b0010000000000111110001000011001110000100110100111000100000 (Larvitar) - {0xce134e20, 0x00801f10}, // 0b0010000000000111110001000011001110000100110100111000100000 (Pupitar) - {0xcfd37e37, 0x00b41ff6}, // 0b0010110100000111111111011011001111110100110111111000110111 (Tyranitar) - {0xb7dff67c, 0x03b8ce93}, // 0b1110111000110011101001001110110111110111111111011001111100 (Lugia) - {0xb7bfc638, 0x00ea4eb7}, // 0b0011101010010011101011011110110111101111111100011000111000 (Ho-Oh) - {0xb43fc62c, 0x00448e93}, // 0b0001000100100011101001001110110100001111111100011000101100 (Celebi) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (?) - {0xcc7d0721, 0x00e41ec0}, // 0b0011100100000111101100000011001100011111010000011100100001 (Treecko) - {0xcc7d0721, 0x00e41ec0}, // 0b0011100100000111101100000011001100011111010000011100100001 (Grovyle) - {0xce7d4733, 0x00e41ec0}, // 0b0011100100000111101100000011001110011111010100011100110011 (Sceptile) - {0x8c110620, 0x00a61ee4}, // 0b0010100110000111101110010010001100000100010000011000100000 (Torchic) - {0xcc1106a1, 0x00a61ee4}, // 0b0010100110000111101110010011001100000100010000011010100001 (Combusken) - {0xce1146b1, 0x00a61ee4}, // 0b0010100110000111101110010011001110000100010100011010110001 (Blaziken) - {0x8c533264, 0x03b01e40}, // 0b1110110000000111100100000010001100010100110011001001100100 (Mudkip) - {0x8e533264, 0x03b01e40}, // 0b1110110000000111100100000010001110010100110011001001100100 (Marshtomp) - {0xce537275, 0x03b01e40}, // 0b1110110000000111100100000011001110010100110111001001110101 (Swampert) - {0xac530e30, 0x00813f00}, // 0b0010000001001111110000000010101100010100110000111000110000 (Poochyena) - {0xac534e30, 0x00a13f00}, // 0b0010100001001111110000000010101100010100110100111000110000 (Mightyena) - {0xadd33624, 0x00943e02}, // 0b0010010100001111100000001010101101110100110011011000100100 (Zigzagoon) - {0xadd37634, 0x00b43e02}, // 0b0010110100001111100000001010101101110100110111011000110100 (Linoone) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wurmple) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Silcoon) - {0xb43d4620, 0x00403e80}, // 0b0001000000001111101000000010110100001111010100011000100000 (Beautifly) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Cascoon) - {0xb435c620, 0x00403e88}, // 0b0001000000001111101000100010110100001101011100011000100000 (Dustox) - {0x84373764, 0x00503e00}, // 0b0001010000001111100000000010000100001101110011011101100100 (Lotad) - {0xc4373764, 0x03f03e00}, // 0b1111110000001111100000000011000100001101110011011101100100 (Lombre) - {0xc4377765, 0x03f03e00}, // 0b1111110000001111100000000011000100001101110111011101100101 (Ludicolo) - {0xac350720, 0x00c01e00}, // 0b0011000000000111100000000010101100001101010000011100100000 (Seedot) - {0xec354720, 0x00e43f40}, // 0b0011100100001111110100000011101100001101010100011100100000 (Nuzleaf) - {0xec354720, 0x00e43fc0}, // 0b0011100100001111111100000011101100001101010100011100100000 (Shiftry) - {0xac350620, 0x00440e90}, // 0b0001000100000011101001000010101100001101010000011000100000 (Nincada) - {0xac354620, 0x00443e90}, // 0b0001000100001111101001000010101100001101010100011000100000 (Ninjask) - {0xac354620, 0x00442e90}, // 0b0001000100001011101001000010101100001101010100011000100000 (Shedinja) - {0x84130620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110000011000100000 (Taillow) - {0x84134620, 0x00087e80}, // 0b0000001000011111101000000010000100000100110100011000100000 (Swellow) - {0x843d0720, 0x00411e08}, // 0b0001000001000111100000100010000100001111010000011100100000 (Shroomish) - {0xc47d47a1, 0x00e51e08}, // 0b0011100101000111100000100011000100011111010100011110100001 (Breloom) - {0xfc1b062d, 0x00e1be42}, // 0b0011100001101111100100001011111100000110110000011000101101 (Spinda) - {0x84133264, 0x00087e82}, // 0b0000001000011111101000001010000100000100110011001001100100 (Wingull) - {0x84137264, 0x00187e82}, // 0b0000011000011111101000001010000100000100110111001001100100 (Pelipper) - {0xa4373624, 0x00403e00}, // 0b0001000000001111100000000010100100001101110011011000100100 (Surskit) - {0xa4377624, 0x00403e80}, // 0b0001000000001111101000000010100100001101110111011000100100 (Masquerain) - {0x86133274, 0x03b01e40}, // 0b1110110000000111100100000010000110000100110011001001110100 (Wailmer) - {0x86137274, 0x03b01e40}, // 0b1110110000000111100100000010000110000100110111001001110100 (Wailord) - {0xadfb362c, 0x00401e02}, // 0b0001000000000111100000001010101101111110110011011000101100 (Skitty) - {0xadfb762c, 0x00e01e02}, // 0b0011100000000111100000001010101101111110110111011000101100 (Delcatty) - {0xedf33625, 0x00e5bee6}, // 0b0011100101101111101110011011101101111100110011011000100101 (Kecleon) - {0xbe339620, 0x00408e51}, // 0b0001000000100011100101000110111110001100111001011000100000 (Baltoy) - {0xbe33d620, 0x00e08e51}, // 0b0011100000100011100101000110111110001100111101011000100000 (Claydol) - {0x87910e20, 0x00a01f52}, // 0b0010100000000111110101001010000111100100010000111000100000 (Nosepass) - {0x84510620, 0x00a21e2c}, // 0b0010100010000111100010110010000100010100010000011000100000 (Torkoal) - {0xfc130e2d, 0x00c53fc2}, // 0b0011000101001111111100001011111100000100110000111000101101 (Sableye) - {0x86133264, 0x03101e50}, // 0b1100010000000111100101000010000110000100110011001001100100 (Barboach) - {0x86137264, 0x03b01e50}, // 0b1110110000000111100101000010000110000100110111001001100100 (Whiscash) - {0x841b3264, 0x03101e00}, // 0b1100010000000111100000000010000100000110110011001001100100 (Luvdisc) - {0xcc133a64, 0x01b41ec8}, // 0b0110110100000111101100100011001100000100110011101001100100 (Corphish) - {0xcc137a64, 0x03b41ec8}, // 0b1110110100000111101100100011001100000100110111101001100100 (Crawdaunt) - {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Feebas) - {0x845b7264, 0x03101e00}, // 0b1100010000000111100000000010000100010110110111001001100100 (Milotic) - {0x84133a64, 0x03103f00}, // 0b1100010000001111110000000010000100000100110011101001100100 (Carvanha) - {0x86137a74, 0x03b03f40}, // 0b1110110000001111110100000010000110000100110111101001110100 (Sharpedo) - {0x8e354620, 0x00a01e50}, // 0b0010100000000111100101000010001110001101010100011000100000 (Trapinch) - {0x8e354620, 0x00a85e50}, // 0b0010101000010111100101000010001110001101010100011000100000 (Vibrava) - {0x8e754622, 0x00a85e74}, // 0b0010101000010111100111010010001110011101010100011000100010 (Flygon) - {0xce1306a1, 0x00b01e40}, // 0b0010110000000111100100000011001110000100110000011010100001 (Makuhita) - {0xce1346a1, 0x00b01e40}, // 0b0010110000000111100100000011001110000100110100011010100001 (Hariyama) - {0x85d30230, 0x00603e02}, // 0b0001100000001111100000001010000101110100110000001000110000 (Electrike) - {0x85d34230, 0x00603e02}, // 0b0001100000001111100000001010000101110100110100001000110000 (Manectric) - {0x8e110620, 0x00a21e74}, // 0b0010100010000111100111010010001110000100010000011000100000 (Numel) - {0x8e114630, 0x00a21e74}, // 0b0010100010000111100111010010001110000100010100011000110000 (Camerupt) - {0x86533264, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110011001001100100 (Spheal) - {0x86533274, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110011001001110100 (Sealeo) - {0x86537274, 0x03b01e40}, // 0b1110110000000111100100000010000110010100110111001001110100 (Walrein) - {0x84350721, 0x00441e10}, // 0b0001000100000111100001000010000100001101010000011100100001 (Cacnea) - {0x84354721, 0x00641e10}, // 0b0001100100000111100001000010000100001101010100011100100001 (Cacturne) - {0xa41bb264, 0x00401e00}, // 0b0001000000000111100000000010100100000110111011001001100100 (Snorunt) - {0xa61bfa64, 0x00401f00}, // 0b0001000000000111110000000010100110000110111111101001100100 (Glalie) - {0xb61bd228, 0x00408e51}, // 0b0001000000100011100101000110110110000110111101001000101000 (Lunatone) - {0xb639c628, 0x00428e75}, // 0b0001000010100011100111010110110110001110011100011000101000 (Solrock) - {0x84533264, 0x01101e00}, // 0b0100010000000111100000000010000100010100110011001001100100 (Azurill) - {0xb4538e28, 0x0041bf03}, // 0b0001000001101111110000001110110100010100111000111000101000 (Spoink) - {0xb453ce29, 0x0041bf03}, // 0b0001000001101111110000001110110100010100111100111000101001 (Grumpig) - {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Plusle) - {0x85d38220, 0x00401e02}, // 0b0001000000000111100000001010000101110100111000001000100000 (Minun) - {0xc4335e21, 0x00a01f7c}, // 0b0010100000000111110111110011000100001100110101111000100001 (Mawile) - {0xf41386a9, 0x00e01e41}, // 0b0011100000000111100100000111110100000100111000011010101001 (Meditite) - {0xf413c6a9, 0x00e01e41}, // 0b0011100000000111100100000111110100000100111100011010101001 (Medicham) - {0x843b1620, 0x00087e80}, // 0b0000001000011111101000000010000100001110110001011000100000 (Swablu) - {0x867b5632, 0x00887ea4}, // 0b0010001000011111101010010010000110011110110101011000110010 (Altaria) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Wynaut) - {0xb4133e28, 0x0041bf00}, // 0b0001000001101111110000000010110100000100110011111000101000 (Duskull) - {0xb6137e29, 0x00e1bf40}, // 0b0011100001101111110100000010110110000100110111111000101001 (Dusclops) - {0xa4350720, 0x00441e08}, // 0b0001000100000111100000100010100100001101010000011100100000 (Roselia) - {0xe5b336a5, 0x00a41ea6}, // 0b0010100100000111101010011011100101101100110011011010100101 (Slakoth) - {0xe7b33eb5, 0x00a41ea6}, // 0b0010100100000111101010011011100111101100110011111010110101 (Vigoroth) - {0xe7b37eb5, 0x00a41ea6}, // 0b0010100100000111101010011011100111101100110111111010110101 (Slaking) - {0xa4371724, 0x00a11e0a}, // 0b0010100001000111100000101010100100001101110001011100100100 (Gulpin) - {0xa4375724, 0x00a11e0a}, // 0b0010100001000111100000101010100100001101110101011100100100 (Swalot) - {0x863d4730, 0x00ec5e80}, // 0b0011101100010111101000000010000110001111010100011100110000 (Tropius) - {0xa4333634, 0x00001e26}, // 0b0000000000000111100010011010100100001100110011011000110100 (Whismur) - {0xe6333e34, 0x00a21f26}, // 0b0010100010000111110010011011100110001100110011111000110100 (Loudred) - {0xe6337e34, 0x00a21f26}, // 0b0010100010000111110010011011100110001100110111111000110100 (Exploud) - {0x84133264, 0x03101e00}, // 0b1100010000000111100000000010000100000100110011001001100100 (Clamperl) - {0x84137264, 0x03111e40}, // 0b1100010001000111100100000010000100000100110111001001100100 (Huntail) - {0xb41b7264, 0x03101e00}, // 0b1100010000000111100000000010110100000110110111001001100100 (Gorebyss) - {0xa5d37e6c, 0x00e53fb6}, // 0b0011100101001111111011011010100101110100110111111001101100 (Absol) - {0xb5930e28, 0x0041bf02}, // 0b0001000001101111110000001010110101100100110000111000101000 (Shuppet) - {0xb5934e28, 0x0041bf02}, // 0b0001000001101111110000001010110101100100110100111000101000 (Banette) - {0x8e570e20, 0x00a13e0c}, // 0b0010100001001111100000110010001110010101110000111000100000 (Seviper) - {0xedf73e35, 0x00a03ea6}, // 0b0010100000001111101010011011101101111101110011111000110101 (Zangoose) - {0x861b726c, 0x03901e50}, // 0b1110010000000111100101000010000110000110110111001001101100 (Relicanth) - {0x8e530634, 0x00a41ed2}, // 0b0010100100000111101101001010001110010100110000011000110100 (Aron) - {0x8e530634, 0x00a41ed2}, // 0b0010100100000111101101001010001110010100110000011000110100 (Lairon) - {0xcff37e37, 0x00b41ef6}, // 0b0010110100000111101111011011001111111100110111111000110111 (Aggron) - {0xa5b33664, 0x00403e36}, // 0b0001000000001111100011011010100101101100110011011001100100 (Castform) - {0xe5b78625, 0x00403e82}, // 0b0001000000001111101000001011100101101101111000011000100101 (Volbeat) - {0xe5b78625, 0x00403e82}, // 0b0001000000001111101000001011100101101101111000011000100101 (Illumise) - {0x84350720, 0x00001e18}, // 0b0000000000000111100001100010000100001101010000011100100000 (Lileep) - {0x86354720, 0x00a01e58}, // 0b0010100000000111100101100010000110001101010100011100100000 (Cradily) - {0xcc110624, 0x00841ed0}, // 0b0010000100000111101101000011001100000100010000011000100100 (Anorith) - {0xce514624, 0x00a41ed0}, // 0b0010100100000111101101000011001110010100010100011000100100 (Armaldo) - {0xb49b8e28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111000111000101000 (Ralts) - {0xb49b8e28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111000111000101000 (Kirlia) - {0xb49bce28, 0x0041bf03}, // 0b0001000001101111110000001110110100100110111100111000101000 (Gardevoir) - {0xc4130632, 0x00a41ee4}, // 0b0010100100000111101110010011000100000100110000011000110010 (Bagon) - {0xc4130632, 0x00a41ee4}, // 0b0010100100000111101110010011000100000100110000011000110010 (Shelgon) - {0xc6534632, 0x00ac5ee4}, // 0b0010101100010111101110010011000110010100110100011000110010 (Salamence) - {0x00000000, 0x00000000}, // 0b0000000000000000000000000000000000000000000000000000000000 (Beldum) - {0xf613c620, 0x00e40ed9}, // 0b0011100100000011101101100111110110000100111100011000100000 (Metang) - {0xf613c620, 0x00e40ed9}, // 0b0011100100000011101101100111110110000100111100011000100000 (Metagross) - {0xcf994621, 0x00a00e52}, // 0b0010100000000011100101001011001111100110010100011000100001 (Regirock) - {0xc79b7261, 0x00a00e02}, // 0b0010100000000011100000001011000111100110110111001001100001 (Regice) - {0xc79b4621, 0x00a00ed2}, // 0b0010100000000011101101001011000111100110110100011000100001 (Registeel) - {0xc79b727c, 0x03b00e42}, // 0b1110110000000011100100001011000111100110110111001001111100 (Kyogre) - {0xcff946b2, 0x00a60ef6}, // 0b0010100110000011101111011011001111111110010100011010110010 (Groudon) - {0xc7f376b6, 0x03ba0eb6}, // 0b1110111010000011101011011011000111111100110111011010110110 (Rayquaza) - {0xb7bbd63e, 0x035c5e93}, // 0b1101011100010111101001001110110111101110111101011000111110 (Latias) - {0xb7bbd63e, 0x035c5e93}, // 0b1101011100010111101001001110110111101110111101011000111110 (Latios) - {0xb59bc62c, 0x00408e93}, // 0b0001000000100011101001001110110101100110111100011000101100 (Jirachi) - {0xf5bbde2d, 0x00e58fc3}, // 0b0011100101100011111100001111110101101110111101111000101101 (Deoxys) - {0xb41b8e28, 0x00419f03}, // 0b0001000001100111110000001110110100000110111000111000101000 (Chimecho) -}; +asm( + ".align 2\n" + ".global gTMHMLearnsets\n" + "gTMHMLearnsets:\n" + + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ?????????? + ".8byte 0b0011100100000111100000100010000100001101010000011100100000\n" // Bulbasaur + ".8byte 0b0011100100000111100000100010000100001101010000011100100000\n" // Ivysaur + ".8byte 0b0011100100000111100000100010000110001101010100011100110000\n" // Venusaur + ".8byte 0b0010100110000111101010010011001100010100010000011000100011\n" // Charmander + ".8byte 0b0010100110000111101010010011001100010100010000011000100011\n" // Charmeleon + ".8byte 0b0010101110010111101010010011001110010100010100011000110011\n" // Charizard + ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Squirtle + ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Wartortle + ".8byte 0b1110110000000111100000000011001110010100110111001001110101\n" // Blastoise + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Caterpie + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Metapod + ".8byte 0b0001000000101111101000000010110100001111110100011000100000\n" // Butterfree + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Weedle + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Kakuna + ".8byte 0b0010000100001111101000100011000100001101010100011000100000\n" // Beedrill + ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Pidgey + ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Pidgeotto + ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Pidgeot + ".8byte 0b0010000100001111100000001010101101110100110011111000100000\n" // Rattata + ".8byte 0b0010100100001111100000001010101101110100110111111000110000\n" // Raticate + ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Spearow + ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Fearow + ".8byte 0b0000100001001111110000100010001110010101110000011000100000\n" // Ekans + ".8byte 0b0000100001001111110000100010001110010101110100011000100000\n" // Arbok + ".8byte 0b0011100000000111100000001011001101110100111000001000100001\n" // Pikachu + ".8byte 0b0011100000001111100000001011001101110100111100001000100001\n" // Raichu + ".8byte 0b0010100100001111101101000011001110010100010000011000100001\n" // Sandshrew + ".8byte 0b0010100100001111101101000011001110010100010100011000100001\n" // Sandslash + ".8byte 0b0010100100001111101000101010001101110100110011011000100100\n" // Nidoran♀ + ".8byte 0b0010100100001111101000101010001101110100110011011000100100\n" // Nidorina + ".8byte 0b0010110100001111111111111011101111110100110111111000110101\n" // Nidoqueen + ".8byte 0b0010100100001111100000101010001101110100110011011000100100\n" // Nidoran♂ + ".8byte 0b0010100100001111100000101010001101110100110011011000100100\n" // Nidorino + ".8byte 0b0010110100001111110111111011101111110100110111111000110101\n" // Nidoking + ".8byte 0b0001100001000111100010011111111101111110111011011000101101\n" // Clefairy + ".8byte 0b0001100001000111100010011111111101111110111111011000101101\n" // Clefable + ".8byte 0b0000000010000111100010010010001100010110010000011000110000\n" // Vulpix + ".8byte 0b0000000010000111100010010010001100010110010100011000110000\n" // Ninetales + ".8byte 0b0001100001000111100010011111111101101110111011011000100101\n" // Jigglypuff + ".8byte 0b0001100001000111100010011111111101101110111111011000100101\n" // Wigglytuff + ".8byte 0b0000000001011111111000100010100100000101110000111000100000\n" // Zubat + ".8byte 0b0000000001011111111000100010100100000101110100111000100000\n" // Golbat + ".8byte 0b0001000100000111100000100010000100001101010000011100100000\n" // Oddish + ".8byte 0b0001000100000111100000100010000100001101010000011100100000\n" // Gloom + ".8byte 0b0001000100000111100000100010000100001101010100011100100000\n" // Vileplume + ".8byte 0b0011000100001111101000100010001100001101010000011100100000\n" // Paras + ".8byte 0b0011000100001111101000100010001100001101010100011100100000\n" // Parasect + ".8byte 0b0001000000101111100000100010010100001101010000011000100000\n" // Venonat + ".8byte 0b0001000000101111101000100010010100001101010100011000100000\n" // Venomoth + ".8byte 0b0010000100001111101100100010001110000100010000011000100000\n" // Diglett + ".8byte 0b0010000100001111101100100010001110000100010100011000100000\n" // Dugtrio + ".8byte 0b0001000101001111111000001010101101110100110000111000100100\n" // Meowth + ".8byte 0b0001000101001111111000001010101101110100110100111000110100\n" // Persian + ".8byte 0b1111110000000111101000000011001100010100110011001001101101\n" // Psyduck + ".8byte 0b1111110000000111101000000011001100010100110111001001101101\n" // Golduck + ".8byte 0b0010100010001111101100000011001111110100110000111010100001\n" // Mankey + ".8byte 0b0010100010001111101100000011001111110100110100111010100001\n" // Primeape + ".8byte 0b0010100010001111101010010010001100010100010000011000110000\n" // Growlithe + ".8byte 0b0010100010001111101010010010001100010100010100011000110000\n" // Arcanine + ".8byte 0b1100010000001111100000000010011100000100110011001001100100\n" // Poliwag + ".8byte 0b1110110000001111100000000011011110000100110011001001100101\n" // Poliwhirl + ".8byte 0b1110110000001111100100000011011110000100110111001011100101\n" // Poliwrath + ".8byte 0b0001000001101111110000001110110100010110111000111000101001\n" // Abra + ".8byte 0b0001000001101111110000001110110100010110111000111000101001\n" // Kadabra + ".8byte 0b0001000001101111110000001110110100010110111100111000101001\n" // Alakazam + ".8byte 0b0010100000001111100110010011001110000100110000011010100001\n" // Machop + ".8byte 0b0010100000001111100110010011001110000100110000011010100001\n" // Machoke + ".8byte 0b0010100000001111100110010011001110000100110100011010100001\n" // Machamp + ".8byte 0b0001000100001111100000100010000100001101010000011100100000\n" // Bellsprout + ".8byte 0b0001000100001111100000100010000100001101010000011100100000\n" // Weepinbell + ".8byte 0b0001000100001111100000100010000100001101010100011100100000\n" // Victreebel + ".8byte 0b1100010100001111100000100010000100000101110011001001100100\n" // Tentacool + ".8byte 0b1100010100001111100000100010000100000101110111001001100100\n" // Tentacruel + ".8byte 0b0010100000000111100111010011001110000100010000011000100001\n" // Geodude + ".8byte 0b0010100000000111100111010011001110000100010000011000100001\n" // Graveler + ".8byte 0b0010100000000111100111010011001110000100010100011000110001\n" // Golem + ".8byte 0b0000100010000111100010010010000100011100010000011000100000\n" // Ponyta + ".8byte 0b0000100010000111100010010010000100011100010100011000100000\n" // Rapidash + ".8byte 0b1001110000100111100010010010111110010110110011011001101100\n" // Slowpoke + ".8byte 0b1011110000100111100010010011111110010110110111011001101101\n" // Slowbro + ".8byte 0b0001000000000011100000001110000101100100110000011000100000\n" // Magnemite + ".8byte 0b0001000000000011100000001110000101100100110100011000100000\n" // Magneton + ".8byte 0b0000001100011111101000000010000100010100010000011000100000\n" // Farfetch'd + ".8byte 0b0000001000011111101000000010000100000100010000011000100000\n" // Doduo + ".8byte 0b0000001000011111111000000010000100000100010100111000100000\n" // Dodrio + ".8byte 0b1100010000001111100000000010000100000110110011001001100100\n" // Seel + ".8byte 0b1100010000001111100000000010000100000110110111001001100100\n" // Dewgong + ".8byte 0b0000000000001111110110111010001101100101110000111000100000\n" // Grimer + ".8byte 0b0010100000001111110110111011001101100101110100111000100001\n" // Muk + ".8byte 0b1000010000000111100000000010000100000100110011001001100100\n" // Shellder + ".8byte 0b1000010000000111110000000010000100000100110111001001100100\n" // Cloyster + ".8byte 0b0000000001101111110000100010110100100101110000111000100000\n" // Gastly + ".8byte 0b0000000001101111110000100010110100100101110000111000100000\n" // Haunter + ".8byte 0b0010100001101111110000100011110101100101110100111000100001\n" // Gengar + ".8byte 0b0010100000000111110101000010001110010100010000111000110000\n" // Onix + ".8byte 0b0001000001101111110000000111110100000110111000111000101001\n" // Drowzee + ".8byte 0b0001000001101111110000000111110100000110111100111000101001\n" // Hypno + ".8byte 0b1010110100001111100100000010001100000100110011001001100100\n" // Krabby + ".8byte 0b1010110100001111100100000010001100000100110111001001100100\n" // Kingler + ".8byte 0b0001000000001011110000001010000101100100111000101000100000\n" // Voltorb + ".8byte 0b0001000000001011110000001010000101100100111100101000100000\n" // Electrode + ".8byte 0b0001100000101111100000100110010100001101011000011100100000\n" // Exeggcute + ".8byte 0b0001100000101111100000100110010100001101011100011100100000\n" // Exeggutor + ".8byte 0b0010100000001111101111010011001110010100010011011000100001\n" // Cubone + ".8byte 0b0010100000001111101111010011001110010100010111011000100001\n" // Marowak + ".8byte 0b0010100000001111100100000011000110000100110000011010100001\n" // Hitmonlee + ".8byte 0b0010100000001111100100000011000110000100110000011010100001\n" // Hitmonchan + ".8byte 0b0010110100001111100111011011101111111100110111011000100101\n" // Lickitung + ".8byte 0b0001000000001111110010111010100101100100110000111000100000\n" // Koffing + ".8byte 0b0001000000001111110010111010100101100100110100111000100000\n" // Weezing + ".8byte 0b0010100000001111100111011010001111110100110011011000110000\n" // Rhyhorn + ".8byte 0b0010110100001111100111011011001111110100110111011000110001\n" // Rhydon + ".8byte 0b0011100001100111100111011011110111111110111111011001101101\n" // Chansey + ".8byte 0b0011000100001111100000100010000100001101010100011100100000\n" // Tangela + ".8byte 0b0010110100001111101111011011101111111100110111011001110101\n" // Kangaskhan + ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Horsea + ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Seadra + ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Goldeen + ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Seaking + ".8byte 0b1101010000000011100000000110010101100100111011001001100100\n" // Staryu + ".8byte 0b1101010000100011100000000110010101100100111111001001100100\n" // Starmie + ".8byte 0b0001000001101111110000001111110101101110111100111000101001\n" // Mr. mime + ".8byte 0b0010000100011111101000000010000100000100110100011000100000\n" // Scyther + ".8byte 0b0001000000101111110000000111110100000100111111101001101101\n" // Jynx + ".8byte 0b0011100000001111100000001011010101110100111100001000100001\n" // Electabuzz + ".8byte 0b0010100000001111100010010011010100010100010100011000100001\n" // Magmar + ".8byte 0b0010100100001111100100000011001110000100110100011010100001\n" // Pinsir + ".8byte 0b0010110000000111100111011010000111111100110111011000100100\n" // Tauros + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Magikarp + ".8byte 0b1110110000000111110011010010000111100100110111101001110100\n" // Gyarados + ".8byte 0b1110110000000111100000001010010101110110110111001001110100\n" // Lapras + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Ditto + ".8byte 0b0000000000000111100000000010101100010100110000011000100000\n" // Eevee + ".8byte 0b1100010000000111100000000010101100010100110111011001110100\n" // Vaporeon + ".8byte 0b0001000000000111100000001010101101110100110100011000110000\n" // Jolteon + ".8byte 0b0000000010000111100010010010101100010100110100011000110000\n" // Flareon + ".8byte 0b0001000000001011101000001010110101111100110111011000100000\n" // Porygon + ".8byte 0b1110010000001111100101000010000100000100110011001001100100\n" // Omanyte + ".8byte 0b1110010000001111100101000010000100000100110111001001100100\n" // Omastar + ".8byte 0b0110010000001111101101000010001100000101110011001001100100\n" // Kabuto + ".8byte 0b1110010100001111101101000011001100000101110111001001100100\n" // Kabutops + ".8byte 0b0010101000011111111111010010000110010100110100111000110010\n" // Aerodactyl + ".8byte 0b0000110000000111100111011011110111101100110111011000100101\n" // Snorlax + ".8byte 0b0010001000010011101001000110000100000100110111011001110100\n" // Articuno + ".8byte 0b0011001000010011101001001010000101100100111100011000110000\n" // Zapdos + ".8byte 0b0010001010010011101011010010000100000110110100011000110000\n" // Moltres + ".8byte 0b0100010000000111100010011010000101110110110111011001100100\n" // Dratini + ".8byte 0b0100010000000111100010011010000101110110110111011001100100\n" // Dragonair + ".8byte 0b1110111100010111101111011011000111110110110111011001110111\n" // Dragonite + ".8byte 0b0011100001100011111111011111110111111110111111111011101101\n" // Mewtwo + ".8byte 0b1111111111111111111111111111111111111111111111111111111111\n" // Mew + ".8byte 0b0001000100000111100000000110000100011111011000011100100000\n" // Chikorita + ".8byte 0b0011100100000111100000000110000100011111011000011100100000\n" // Bayleef + ".8byte 0b0011100100000111100000000110000110011111011100011100100000\n" // Meganium + ".8byte 0b0000000110000111101010010010001100000100010000011000100000\n" // Cyndaquil + ".8byte 0b0010100110000111101010010011001100000100010000011000110001\n" // Quilava + ".8byte 0b0010100110000111101010010011001110000100010100011000110001\n" // Typhlosion + ".8byte 0b1100010100000111101000000011001100010100110011001001100101\n" // Totodile + ".8byte 0b1110110100000111101000000011001100010100110011001001110101\n" // Croconaw + ".8byte 0b1110110100000111101000000011001110010100110111001001110111\n" // Feraligatr + ".8byte 0b0000010100001111100000011011101100111100110001011000100101\n" // Sentret + ".8byte 0b0010110100001111100000011011101101111100110111011000100101\n" // Furret + ".8byte 0b0001001000011111101000000110110100000100110000011000100000\n" // Hoothoot + ".8byte 0b0001001000011111101000000110110100000100110100011000100000\n" // Noctowl + ".8byte 0b0001000000001111101000000111001100001111011000011000100001\n" // Ledyba + ".8byte 0b0001000000001111101000000111001100001111011100011000100001\n" // Ledian + ".8byte 0b0001000000001111100000100010011100001101010000011000100000\n" // Spinarak + ".8byte 0b0001000000001111100000100010011100001101010100011000100000\n" // Ariados + ".8byte 0b0000001001011111111000100010100100000101110100111000100000\n" // Crobat + ".8byte 0b1101010000000111100000001010000101100100110011001001100100\n" // Chinchou + ".8byte 0b1101010000000111100000001010000101100100110111001001100100\n" // Lanturn + ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Pichu + ".8byte 0b0001000000000111100010011110111100011110111000011000100100\n" // Cleffa + ".8byte 0b0001000000000111100010011110111100001110111000011000100100\n" // Igglybuff + ".8byte 0b0011000000000111100010011110110100001110111000011000100100\n" // Togepi + ".8byte 0b0011001000010111101010011111110100001110111100011000100101\n" // Togetic + ".8byte 0b0001000000111111101000000110110100001101111000011000101000\n" // Natu + ".8byte 0b0001001000111111101000000110110100001101111100011000101000\n" // Xatu + ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Mareep + ".8byte 0b0011100000000111100000001011000101110100111000001000100001\n" // Flaaffy + ".8byte 0b0011100000000111100000001011000101110100111100001000100001\n" // Ampharos + ".8byte 0b0001000100000111100000100010000100001111010100011100100000\n" // Bellossom + ".8byte 0b1110110000000111100000000011001100010100110011001001100101\n" // Marill + ".8byte 0b1110110000000111100000000011001100010100110111001001100101\n" // Azumarill + ".8byte 0b0010100000001111100101000011001110000100010000111000101001\n" // Sudowoodo + ".8byte 0b1110110000001111100000000011011110000100110111001001100101\n" // Politoed + ".8byte 0b0001000000000111101000000010000100001101010000011100100000\n" // Hoppip + ".8byte 0b0001000000000111101000000010000100001101010000011100100000\n" // Skiploom + ".8byte 0b0001000000000111101000000010000100001101010100011100100000\n" // Jumpluff + ".8byte 0b0010100101001111101000001011101101111100110000111000100101\n" // Aipom + ".8byte 0b0001000100000111100000100010000100001111011000011100100000\n" // Sunkern + ".8byte 0b0001000100000111100000100010000100001111011100011100100000\n" // Sunflora + ".8byte 0b0001000000011111101000000010110100001101010000011000100000\n" // Yanma + ".8byte 0b1111010000000111100001100010001110010100110011001001100100\n" // Wooper + ".8byte 0b1111110000000111100101100011001110010100110111001001100101\n" // Quagsire + ".8byte 0b0001000100100111100000000110111100010100111100011000101000\n" // Espeon + ".8byte 0b0001000101000111110000000010111100010100110100111000100000\n" // Umbreon + ".8byte 0b0000001001011111111000000010100100000100110000111000101000\n" // Murkrow + ".8byte 0b1011110000100111100010010011111110010110110111011001101101\n" // Slowking + ".8byte 0b0001000001101111111000001010110101100100110000111000101000\n" // Misdreavus + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Unown + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wobbuffet + ".8byte 0b0011100000101111100000001110110111110100111000011000101000\n" // Girafarig + ".8byte 0b0010100000000111100001000110001110001101011000011000100000\n" // Pineco + ".8byte 0b0010100000000111100001000110001110001101011100011000100000\n" // Forretress + ".8byte 0b0010100000001111100110011010101111111100110011011000101100\n" // Dunsparce + ".8byte 0b0010100100011111101101100010001110010100110000011000100000\n" // Gligar + ".8byte 0b0010100100000111110101000010001110010100010100111000110000\n" // Steelix + ".8byte 0b0010100010001111110010111011101111101100110000111010110101\n" // Snubbull + ".8byte 0b0010100010001111110110111011101111111100110100111010110101\n" // Granbull + ".8byte 0b1100010000000111100000101010100100000100110011001001100100\n" // Qwilfish + ".8byte 0b0010100100011111101001000010000100000100110100011000100000\n" // Scizor + ".8byte 0b0011100000000111100101100010001110000110010000011000100000\n" // Shuckle + ".8byte 0b0010100100001111100100000011001110000100110100011010100001\n" // Heracross + ".8byte 0b0010110101001111111000000011101100010100110011111001101001\n" // Sneasel + ".8byte 0b0010100100001111111000000011001110000100110000111010110001\n" // Teddiursa + ".8byte 0b0010100100001111111100000011001110000100110100111010110001\n" // Ursaring + ".8byte 0b0010000010000111100010010110000100000100011000011000100000\n" // Slugma + ".8byte 0b0010100010000111100111010110000110000100011100011000100000\n" // Magcargo + ".8byte 0b0010100000000111100101000110001110000100111011001001110000\n" // Swinub + ".8byte 0b0010100000000111100101000110001110000100111111001001110000\n" // Piloswine + ".8byte 0b0010110000000111100101000110111110000110111011011001101100\n" // Corsola + ".8byte 0b1100010000001111100010010010010100000100110111011000100100\n" // Remoraid + ".8byte 0b1100010000001111100010110010010100000100110111011100100100\n" // Octillery + ".8byte 0b0000001000001111101000000010000100000100110011001001100101\n" // Delibird + ".8byte 0b1100010000000111101000000010000110000100110011001001100100\n" // Mantine + ".8byte 0b0010001100011111111001000010000100000100010000111000110000\n" // Skarmory + ".8byte 0b0010000011001111110010110010100100011100010000111000110000\n" // Houndour + ".8byte 0b0010100011001111110010110010100100011100010100111000110000\n" // Houndoom + ".8byte 0b1100010000000111100000000010000100000100110111001001100100\n" // Kingdra + ".8byte 0b0010100000000111100101000010000110010100010000011000110000\n" // Phanpy + ".8byte 0b0010100000000111100101000010000110010100010100011000110000\n" // Donphan + ".8byte 0b0001000000001011101000001010110101111100110111011000100000\n" // Porygon2 + ".8byte 0b0001000000101111100000001110110111111100111000011000111000\n" // Stantler + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Smeargle + ".8byte 0b0010100000001111100000000011000110000100110000011010100000\n" // Tyrogue + ".8byte 0b0010100000001111100001000011001110000100110000011010100000\n" // Hitmontop + ".8byte 0b0001000000101111100000000110110100000100111011001001101100\n" // Smoochum + ".8byte 0b0011000000001111100000001011010101100100111000001000100001\n" // Elekid + ".8byte 0b0010000000001111100010010011010100010100010000011000100001\n" // Magby + ".8byte 0b0010110000000111100101001011100111111100110111011000100101\n" // Miltank + ".8byte 0b0011100001100111100111011011110111111110111111011001101101\n" // Blissey + ".8byte 0b0011100100000011100001001110001101110100110100011000111000\n" // Raikou + ".8byte 0b0011100100000011100011010110001100011100110100011000111000\n" // Entei + ".8byte 0b1110010100000011100001000110001100010100110111011001111100\n" // Suicune + ".8byte 0b0010000000000111110001000011001110000100110100111000100000\n" // Larvitar + ".8byte 0b0010000000000111110001000011001110000100110100111000100000\n" // Pupitar + ".8byte 0b0010110100000111111111011011001111110100110111111000110111\n" // Tyranitar + ".8byte 0b1110111000110011101001001110110111110111111111011001111100\n" // Lugia + ".8byte 0b0011101010010011101011011110110111101111111100011000111000\n" // Ho-Oh + ".8byte 0b0001000100100011101001001110110100001111111100011000101100\n" // Celebi + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // ? + ".8byte 0b0011100100000111101100000011001100011111010000011100100001\n" // Treecko + ".8byte 0b0011100100000111101100000011001100011111010000011100100001\n" // Grovyle + ".8byte 0b0011100100000111101100000011001110011111010100011100110011\n" // Sceptile + ".8byte 0b0010100110000111101110010010001100000100010000011000100000\n" // Torchic + ".8byte 0b0010100110000111101110010011001100000100010000011010100001\n" // Combusken + ".8byte 0b0010100110000111101110010011001110000100010100011010110001\n" // Blaziken + ".8byte 0b1110110000000111100100000010001100010100110011001001100100\n" // Mudkip + ".8byte 0b1110110000000111100100000010001110010100110011001001100100\n" // Marshtomp + ".8byte 0b1110110000000111100100000011001110010100110111001001110101\n" // Swampert + ".8byte 0b0010000001001111110000000010101100010100110000111000110000\n" // Poochyena + ".8byte 0b0010100001001111110000000010101100010100110100111000110000\n" // Mightyena + ".8byte 0b0010010100001111100000001010101101110100110011011000100100\n" // Zigzagoon + ".8byte 0b0010110100001111100000001010101101110100110111011000110100\n" // Linoone + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wurmple + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Silcoon + ".8byte 0b0001000000001111101000000010110100001111010100011000100000\n" // Beautifly + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Cascoon + ".8byte 0b0001000000001111101000100010110100001101011100011000100000\n" // Dustox + ".8byte 0b0001010000001111100000000010000100001101110011011101100100\n" // Lotad + ".8byte 0b1111110000001111100000000011000100001101110011011101100100\n" // Lombre + ".8byte 0b1111110000001111100000000011000100001101110111011101100101\n" // Ludicolo + ".8byte 0b0011000000000111100000000010101100001101010000011100100000\n" // Seedot + ".8byte 0b0011100100001111110100000011101100001101010100011100100000\n" // Nuzleaf + ".8byte 0b0011100100001111111100000011101100001101010100011100100000\n" // Shiftry + ".8byte 0b0001000100000011101001000010101100001101010000011000100000\n" // Nincada + ".8byte 0b0001000100001111101001000010101100001101010100011000100000\n" // Ninjask + ".8byte 0b0001000100001011101001000010101100001101010100011000100000\n" // Shedinja + ".8byte 0b0000001000011111101000000010000100000100110000011000100000\n" // Taillow + ".8byte 0b0000001000011111101000000010000100000100110100011000100000\n" // Swellow + ".8byte 0b0001000001000111100000100010000100001111010000011100100000\n" // Shroomish + ".8byte 0b0011100101000111100000100011000100011111010100011110100001\n" // Breloom + ".8byte 0b0011100001101111100100001011111100000110110000011000101101\n" // Spinda + ".8byte 0b0000001000011111101000001010000100000100110011001001100100\n" // Wingull + ".8byte 0b0000011000011111101000001010000100000100110111001001100100\n" // Pelipper + ".8byte 0b0001000000001111100000000010100100001101110011011000100100\n" // Surskit + ".8byte 0b0001000000001111101000000010100100001101110111011000100100\n" // Masquerain + ".8byte 0b1110110000000111100100000010000110000100110011001001110100\n" // Wailmer + ".8byte 0b1110110000000111100100000010000110000100110111001001110100\n" // Wailord + ".8byte 0b0001000000000111100000001010101101111110110011011000101100\n" // Skitty + ".8byte 0b0011100000000111100000001010101101111110110111011000101100\n" // Delcatty + ".8byte 0b0011100101101111101110011011101101111100110011011000100101\n" // Kecleon + ".8byte 0b0001000000100011100101000110111110001100111001011000100000\n" // Baltoy + ".8byte 0b0011100000100011100101000110111110001100111101011000100000\n" // Claydol + ".8byte 0b0010100000000111110101001010000111100100010000111000100000\n" // Nosepass + ".8byte 0b0010100010000111100010110010000100010100010000011000100000\n" // Torkoal + ".8byte 0b0011000101001111111100001011111100000100110000111000101101\n" // Sableye + ".8byte 0b1100010000000111100101000010000110000100110011001001100100\n" // Barboach + ".8byte 0b1110110000000111100101000010000110000100110111001001100100\n" // Whiscash + ".8byte 0b1100010000000111100000000010000100000110110011001001100100\n" // Luvdisc + ".8byte 0b0110110100000111101100100011001100000100110011101001100100\n" // Corphish + ".8byte 0b1110110100000111101100100011001100000100110111101001100100\n" // Crawdaunt + ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Feebas + ".8byte 0b1100010000000111100000000010000100010110110111001001100100\n" // Milotic + ".8byte 0b1100010000001111110000000010000100000100110011101001100100\n" // Carvanha + ".8byte 0b1110110000001111110100000010000110000100110111101001110100\n" // Sharpedo + ".8byte 0b0010100000000111100101000010001110001101010100011000100000\n" // Trapinch + ".8byte 0b0010101000010111100101000010001110001101010100011000100000\n" // Vibrava + ".8byte 0b0010101000010111100111010010001110011101010100011000100010\n" // Flygon + ".8byte 0b0010110000000111100100000011001110000100110000011010100001\n" // Makuhita + ".8byte 0b0010110000000111100100000011001110000100110100011010100001\n" // Hariyama + ".8byte 0b0001100000001111100000001010000101110100110000001000110000\n" // Electrike + ".8byte 0b0001100000001111100000001010000101110100110100001000110000\n" // Manectric + ".8byte 0b0010100010000111100111010010001110000100010000011000100000\n" // Numel + ".8byte 0b0010100010000111100111010010001110000100010100011000110000\n" // Camerupt + ".8byte 0b1110110000000111100100000010000110010100110011001001100100\n" // Spheal + ".8byte 0b1110110000000111100100000010000110010100110011001001110100\n" // Sealeo + ".8byte 0b1110110000000111100100000010000110010100110111001001110100\n" // Walrein + ".8byte 0b0001000100000111100001000010000100001101010000011100100001\n" // Cacnea + ".8byte 0b0001100100000111100001000010000100001101010100011100100001\n" // Cacturne + ".8byte 0b0001000000000111100000000010100100000110111011001001100100\n" // Snorunt + ".8byte 0b0001000000000111110000000010100110000110111111101001100100\n" // Glalie + ".8byte 0b0001000000100011100101000110110110000110111101001000101000\n" // Lunatone + ".8byte 0b0001000010100011100111010110110110001110011100011000101000\n" // Solrock + ".8byte 0b0100010000000111100000000010000100010100110011001001100100\n" // Azurill + ".8byte 0b0001000001101111110000001110110100010100111000111000101000\n" // Spoink + ".8byte 0b0001000001101111110000001110110100010100111100111000101001\n" // Grumpig + ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Plusle + ".8byte 0b0001000000000111100000001010000101110100111000001000100000\n" // Minun + ".8byte 0b0010100000000111110111110011000100001100110101111000100001\n" // Mawile + ".8byte 0b0011100000000111100100000111110100000100111000011010101001\n" // Meditite + ".8byte 0b0011100000000111100100000111110100000100111100011010101001\n" // Medicham + ".8byte 0b0000001000011111101000000010000100001110110001011000100000\n" // Swablu + ".8byte 0b0010001000011111101010010010000110011110110101011000110010\n" // Altaria + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Wynaut + ".8byte 0b0001000001101111110000000010110100000100110011111000101000\n" // Duskull + ".8byte 0b0011100001101111110100000010110110000100110111111000101001\n" // Dusclops + ".8byte 0b0001000100000111100000100010100100001101010000011100100000\n" // Roselia + ".8byte 0b0010100100000111101010011011100101101100110011011010100101\n" // Slakoth + ".8byte 0b0010100100000111101010011011100111101100110011111010110101\n" // Vigoroth + ".8byte 0b0010100100000111101010011011100111101100110111111010110101\n" // Slaking + ".8byte 0b0010100001000111100000101010100100001101110001011100100100\n" // Gulpin + ".8byte 0b0010100001000111100000101010100100001101110101011100100100\n" // Swalot + ".8byte 0b0011101100010111101000000010000110001111010100011100110000\n" // Tropius + ".8byte 0b0000000000000111100010011010100100001100110011011000110100\n" // Whismur + ".8byte 0b0010100010000111110010011011100110001100110011111000110100\n" // Loudred + ".8byte 0b0010100010000111110010011011100110001100110111111000110100\n" // Exploud + ".8byte 0b1100010000000111100000000010000100000100110011001001100100\n" // Clamperl + ".8byte 0b1100010001000111100100000010000100000100110111001001100100\n" // Huntail + ".8byte 0b1100010000000111100000000010110100000110110111001001100100\n" // Gorebyss + ".8byte 0b0011100101001111111011011010100101110100110111111001101100\n" // Absol + ".8byte 0b0001000001101111110000001010110101100100110000111000101000\n" // Shuppet + ".8byte 0b0001000001101111110000001010110101100100110100111000101000\n" // Banette + ".8byte 0b0010100001001111100000110010001110010101110000111000100000\n" // Seviper + ".8byte 0b0010100000001111101010011011101101111101110011111000110101\n" // Zangoose + ".8byte 0b1110010000000111100101000010000110000110110111001001101100\n" // Relicanth + ".8byte 0b0010100100000111101101001010001110010100110000011000110100\n" // Aron + ".8byte 0b0010100100000111101101001010001110010100110000011000110100\n" // Lairon + ".8byte 0b0010110100000111101111011011001111111100110111111000110111\n" // Aggron + ".8byte 0b0001000000001111100011011010100101101100110011011001100100\n" // Castform + ".8byte 0b0001000000001111101000001011100101101101111000011000100101\n" // Volbeat + ".8byte 0b0001000000001111101000001011100101101101111000011000100101\n" // Illumise + ".8byte 0b0000000000000111100001100010000100001101010000011100100000\n" // Lileep + ".8byte 0b0010100000000111100101100010000110001101010100011100100000\n" // Cradily + ".8byte 0b0010000100000111101101000011001100000100010000011000100100\n" // Anorith + ".8byte 0b0010100100000111101101000011001110010100010100011000100100\n" // Armaldo + ".8byte 0b0001000001101111110000001110110100100110111000111000101000\n" // Ralts + ".8byte 0b0001000001101111110000001110110100100110111000111000101000\n" // Kirlia + ".8byte 0b0001000001101111110000001110110100100110111100111000101000\n" // Gardevoir + ".8byte 0b0010100100000111101110010011000100000100110000011000110010\n" // Bagon + ".8byte 0b0010100100000111101110010011000100000100110000011000110010\n" // Shelgon + ".8byte 0b0010101100010111101110010011000110010100110100011000110010\n" // Salamence + ".8byte 0b0000000000000000000000000000000000000000000000000000000000\n" // Beldum + ".8byte 0b0011100100000011101101100111110110000100111100011000100000\n" // Metang + ".8byte 0b0011100100000011101101100111110110000100111100011000100000\n" // Metagross + ".8byte 0b0010100000000011100101001011001111100110010100011000100001\n" // Regirock + ".8byte 0b0010100000000011100000001011000111100110110111001001100001\n" // Regice + ".8byte 0b0010100000000011101101001011000111100110110100011000100001\n" // Registeel + ".8byte 0b1110110000000011100100001011000111100110110111001001111100\n" // Kyogre + ".8byte 0b0010100110000011101111011011001111111110010100011010110010\n" // Groudon + ".8byte 0b1110111010000011101011011011000111111100110111011010110110\n" // Rayquaza + ".8byte 0b1101011100010111101001001110110111101110111101011000111110\n" // Latias + ".8byte 0b1101011100010111101001001110110111101110111101011000111110\n" // Latios + ".8byte 0b0001000000100011101001001110110101100110111100011000101100\n" // Jirachi + ".8byte 0b0011100101100011111100001111110101101110111101111000101101\n" // Deoxys + ".8byte 0b0001000001100111110000001110110100000110111000111000101000\n" // Chimecho +); #endif //POKERUBY_TMHM_LEARNSETS_H -- cgit v1.2.3 From d8bfc0998dec654e908caddccf8147ea62c0ea4a Mon Sep 17 00:00:00 2001 From: yenatch Date: Mon, 3 Jul 2017 22:30:16 -0400 Subject: Restore double brackets in evolution data and flat indent --- include/data/pokemon/evolution.h | 1194 +++++++++++++++++++------------------- 1 file changed, 597 insertions(+), 597 deletions(-) diff --git a/include/data/pokemon/evolution.h b/include/data/pokemon/evolution.h index bc1b6d293..51e993347 100644 --- a/include/data/pokemon/evolution.h +++ b/include/data/pokemon/evolution.h @@ -6,603 +6,603 @@ #define POKERUBY_EVOLUTION_H const struct EvolutionData gEvolutionTable[] = { - { // ?????????? - }, {{ // Bulbasaur - {EVO_LEVEL, 16, SPECIES_IVYSAUR}, - }}, {{ // Ivysaur - {EVO_LEVEL, 32, SPECIES_VENUSAUR}, - }}, { // Venusaur - }, {{ // Charmander - {EVO_LEVEL, 16, SPECIES_CHARMELEON}, - }}, {{ // Charmeleon - {EVO_LEVEL, 36, SPECIES_CHARIZARD}, - }}, { // Charizard - }, {{ // Squirtle - {EVO_LEVEL, 16, SPECIES_WARTORTLE}, - }}, {{ // Wartortle - {EVO_LEVEL, 36, SPECIES_BLASTOISE}, - }}, { // Blastoise - }, {{ // Caterpie - {EVO_LEVEL, 7, SPECIES_METAPOD}, - }}, {{ // Metapod - {EVO_LEVEL, 10, SPECIES_BUTTERFREE}, - }}, { // Butterfree - }, {{ // Weedle - {EVO_LEVEL, 7, SPECIES_KAKUNA}, - }}, {{ // Kakuna - {EVO_LEVEL, 10, SPECIES_BEEDRILL}, - }}, { // Beedrill - }, {{ // Pidgey - {EVO_LEVEL, 18, SPECIES_PIDGEOTTO}, - }}, {{ // Pidgeotto - {EVO_LEVEL, 36, SPECIES_PIDGEOT}, - }}, { // Pidgeot - }, {{ // Rattata - {EVO_LEVEL, 20, SPECIES_RATICATE}, - }}, { // Raticate - }, {{ // Spearow - {EVO_LEVEL, 20, SPECIES_FEAROW}, - }}, { // Fearow - }, {{ // Ekans - {EVO_LEVEL, 22, SPECIES_ARBOK}, - }}, { // Arbok - }, {{ // Pikachu - {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}, - }}, { // Raichu - }, {{ // Sandshrew - {EVO_LEVEL, 22, SPECIES_SANDSLASH}, - }}, { // Sandslash - }, {{ // Nidoran♀ - {EVO_LEVEL, 16, SPECIES_NIDORINA}, - }}, {{ // Nidorina - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}, - }}, { // Nidoqueen - }, {{ // Nidoran♂ - {EVO_LEVEL, 16, SPECIES_NIDORINO}, - }}, {{ // Nidorino - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}, - }}, { // Nidoking - }, {{ // Clefairy - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}, - }}, { // Clefable - }, {{ // Vulpix - {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}, - }}, { // Ninetales - }, {{ // Jigglypuff - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}, - }}, { // Wigglytuff - }, {{ // Zubat - {EVO_LEVEL, 22, SPECIES_GOLBAT}, - }}, {{ // Golbat - {EVO_FRIENDSHIP, 0, SPECIES_CROBAT}, - }}, {{ // Oddish - {EVO_LEVEL, 21, SPECIES_GLOOM}, - }}, {{ // Gloom - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, - {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}, - }}, { // Vileplume - }, {{ // Paras - {EVO_LEVEL, 24, SPECIES_PARASECT}, - }}, { // Parasect - }, {{ // Venonat - {EVO_LEVEL, 31, SPECIES_VENOMOTH}, - }}, { // Venomoth - }, {{ // Diglett - {EVO_LEVEL, 26, SPECIES_DUGTRIO}, - }}, { // Dugtrio - }, {{ // Meowth - {EVO_LEVEL, 28, SPECIES_PERSIAN}, - }}, { // Persian - }, {{ // Psyduck - {EVO_LEVEL, 33, SPECIES_GOLDUCK}, - }}, { // Golduck - }, {{ // Mankey - {EVO_LEVEL, 28, SPECIES_PRIMEAPE}, - }}, { // Primeape - }, {{ // Growlithe - {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}, - }}, { // Arcanine - }, {{ // Poliwag - {EVO_LEVEL, 25, SPECIES_POLIWHIRL}, - }}, {{ // Poliwhirl - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, - }}, { // Poliwrath - }, {{ // Abra - {EVO_LEVEL, 16, SPECIES_KADABRA}, - }}, {{ // Kadabra - {EVO_TRADE, 0, SPECIES_ALAKAZAM}, - }}, { // Alakazam - }, {{ // Machop - {EVO_LEVEL, 28, SPECIES_MACHOKE}, - }}, {{ // Machoke - {EVO_TRADE, 0, SPECIES_MACHAMP}, - }}, { // Machamp - }, {{ // Bellsprout - {EVO_LEVEL, 21, SPECIES_WEEPINBELL}, - }}, {{ // Weepinbell - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}, - }}, { // Victreebel - }, {{ // Tentacool - {EVO_LEVEL, 30, SPECIES_TENTACRUEL}, - }}, { // Tentacruel - }, {{ // Geodude - {EVO_LEVEL, 25, SPECIES_GRAVELER}, - }}, {{ // Graveler - {EVO_TRADE, 0, SPECIES_GOLEM}, - }}, { // Golem - }, {{ // Ponyta - {EVO_LEVEL, 40, SPECIES_RAPIDASH}, - }}, { // Rapidash - }, {{ // Slowpoke - {EVO_LEVEL, 37, SPECIES_SLOWBRO}, - {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, - }}, { // Slowbro - }, {{ // Magnemite - {EVO_LEVEL, 30, SPECIES_MAGNETON}, - }}, { // Magneton - }, { // Farfetch'd - }, {{ // Doduo - {EVO_LEVEL, 31, SPECIES_DODRIO}, - }}, { // Dodrio - }, {{ // Seel - {EVO_LEVEL, 34, SPECIES_DEWGONG}, - }}, { // Dewgong - }, {{ // Grimer - {EVO_LEVEL, 38, SPECIES_MUK}, - }}, { // Muk - }, {{ // Shellder - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}, - }}, { // Cloyster - }, {{ // Gastly - {EVO_LEVEL, 25, SPECIES_HAUNTER}, - }}, {{ // Haunter - {EVO_TRADE, 0, SPECIES_GENGAR}, - }}, { // Gengar - }, {{ // Onix - {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, - }}, {{ // Drowzee - {EVO_LEVEL, 26, SPECIES_HYPNO}, - }}, { // Hypno - }, {{ // Krabby - {EVO_LEVEL, 28, SPECIES_KINGLER}, - }}, { // Kingler - }, {{ // Voltorb - {EVO_LEVEL, 30, SPECIES_ELECTRODE}, - }}, { // Electrode - }, {{ // Exeggcute - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, - }}, { // Exeggutor - }, {{ // Cubone - {EVO_LEVEL, 28, SPECIES_MAROWAK}, - }}, { // Marowak - }, { // Hitmonlee - }, { // Hitmonchan - }, { // Lickitung - }, {{ // Koffing - {EVO_LEVEL, 35, SPECIES_WEEZING}, - }}, { // Weezing - }, {{ // Rhyhorn - {EVO_LEVEL, 42, SPECIES_RHYDON}, - }}, { // Rhydon - }, {{ // Chansey - {EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}, - }}, { // Tangela - }, { // Kangaskhan - }, {{ // Horsea - {EVO_LEVEL, 32, SPECIES_SEADRA}, - }}, {{ // Seadra - {EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, - }}, {{ // Goldeen - {EVO_LEVEL, 33, SPECIES_SEAKING}, - }}, { // Seaking - }, {{ // Staryu - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}, - }}, { // Starmie - }, { // Mr. mime - }, {{ // Scyther - {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, - }}, { // Jynx - }, { // Electabuzz - }, { // Magmar - }, { // Pinsir - }, { // Tauros - }, {{ // Magikarp - {EVO_LEVEL, 20, SPECIES_GYARADOS}, - }}, { // Gyarados - }, { // Lapras - }, { // Ditto - }, {{ // Eevee - {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, - {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, - {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, - {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}, - }}, { // Vaporeon - }, { // Jolteon - }, { // Flareon - }, {{ // Porygon - {EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}, - }}, {{ // Omanyte - {EVO_LEVEL, 40, SPECIES_OMASTAR}, - }}, { // Omastar - }, {{ // Kabuto - {EVO_LEVEL, 40, SPECIES_KABUTOPS}, - }}, { // Kabutops - }, { // Aerodactyl - }, { // Snorlax - }, { // Articuno - }, { // Zapdos - }, { // Moltres - }, {{ // Dratini - {EVO_LEVEL, 30, SPECIES_DRAGONAIR}, - }}, {{ // Dragonair - {EVO_LEVEL, 55, SPECIES_DRAGONITE}, - }}, { // Dragonite - }, { // Mewtwo - }, { // Mew - }, {{ // Chikorita - {EVO_LEVEL, 16, SPECIES_BAYLEEF}, - }}, {{ // Bayleef - {EVO_LEVEL, 32, SPECIES_MEGANIUM}, - }}, { // Meganium - }, {{ // Cyndaquil - {EVO_LEVEL, 14, SPECIES_QUILAVA}, - }}, {{ // Quilava - {EVO_LEVEL, 36, SPECIES_TYPHLOSION}, - }}, { // Typhlosion - }, {{ // Totodile - {EVO_LEVEL, 18, SPECIES_CROCONAW}, - }}, {{ // Croconaw - {EVO_LEVEL, 30, SPECIES_FERALIGATR}, - }}, { // Feraligatr - }, {{ // Sentret - {EVO_LEVEL, 15, SPECIES_FURRET}, - }}, { // Furret - }, {{ // Hoothoot - {EVO_LEVEL, 20, SPECIES_NOCTOWL}, - }}, { // Noctowl - }, {{ // Ledyba - {EVO_LEVEL, 18, SPECIES_LEDIAN}, - }}, { // Ledian - }, {{ // Spinarak - {EVO_LEVEL, 22, SPECIES_ARIADOS}, - }}, { // Ariados - }, { // Crobat - }, {{ // Chinchou - {EVO_LEVEL, 27, SPECIES_LANTURN}, - }}, { // Lanturn - }, {{ // Pichu - {EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}, - }}, {{ // Cleffa - {EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}, - }}, {{ // Igglybuff - {EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}, - }}, {{ // Togepi - {EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}, - }}, { // Togetic - }, {{ // Natu - {EVO_LEVEL, 25, SPECIES_XATU}, - }}, { // Xatu - }, {{ // Mareep - {EVO_LEVEL, 15, SPECIES_FLAAFFY}, - }}, {{ // Flaaffy - {EVO_LEVEL, 30, SPECIES_AMPHAROS}, - }}, { // Ampharos - }, { // Bellossom - }, {{ // Marill - {EVO_LEVEL, 18, SPECIES_AZUMARILL}, - }}, { // Azumarill - }, { // Sudowoodo - }, { // Politoed - }, {{ // Hoppip - {EVO_LEVEL, 18, SPECIES_SKIPLOOM}, - }}, {{ // Skiploom - {EVO_LEVEL, 27, SPECIES_JUMPLUFF}, - }}, { // Jumpluff - }, { // Aipom - }, {{ // Sunkern - {EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}, - }}, { // Sunflora - }, { // Yanma - }, {{ // Wooper - {EVO_LEVEL, 20, SPECIES_QUAGSIRE}, - }}, { // Quagsire - }, { // Espeon - }, { // Umbreon - }, { // Murkrow - }, { // Slowking - }, { // Misdreavus - }, { // Unown - }, { // Wobbuffet - }, { // Girafarig - }, {{ // Pineco - {EVO_LEVEL, 31, SPECIES_FORRETRESS}, - }}, { // Forretress - }, { // Dunsparce - }, { // Gligar - }, { // Steelix - }, {{ // Snubbull - {EVO_LEVEL, 23, SPECIES_GRANBULL}, - }}, { // Granbull - }, { // Qwilfish - }, { // Scizor - }, { // Shuckle - }, { // Heracross - }, { // Sneasel - }, {{ // Teddiursa - {EVO_LEVEL, 30, SPECIES_URSARING}, - }}, { // Ursaring - }, {{ // Slugma - {EVO_LEVEL, 38, SPECIES_MAGCARGO}, - }}, { // Magcargo - }, {{ // Swinub - {EVO_LEVEL, 33, SPECIES_PILOSWINE}, - }}, { // Piloswine - }, { // Corsola - }, {{ // Remoraid - {EVO_LEVEL, 25, SPECIES_OCTILLERY}, - }}, { // Octillery - }, { // Delibird - }, { // Mantine - }, { // Skarmory - }, {{ // Houndour - {EVO_LEVEL, 24, SPECIES_HOUNDOOM}, - }}, { // Houndoom - }, { // Kingdra - }, {{ // Phanpy - {EVO_LEVEL, 25, SPECIES_DONPHAN}, - }}, { // Donphan - }, { // Porygon2 - }, { // Stantler - }, { // Smeargle - }, {{ // Tyrogue - {EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, - {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, - {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}, - }}, { // Hitmontop - }, {{ // Smoochum - {EVO_LEVEL, 30, SPECIES_JYNX}, - }}, {{ // Elekid - {EVO_LEVEL, 30, SPECIES_ELECTABUZZ}, - }}, {{ // Magby - {EVO_LEVEL, 30, SPECIES_MAGMAR}, - }}, { // Miltank - }, { // Blissey - }, { // Raikou - }, { // Entei - }, { // Suicune - }, {{ // Larvitar - {EVO_LEVEL, 30, SPECIES_PUPITAR}, - }}, {{ // Pupitar - {EVO_LEVEL, 55, SPECIES_TYRANITAR}, - }}, { // Tyranitar - }, { // Lugia - }, { // Ho-Oh - }, { // Celebi - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, { // ? - }, {{ // Treecko - {EVO_LEVEL, 16, SPECIES_GROVYLE}, - }}, {{ // Grovyle - {EVO_LEVEL, 36, SPECIES_SCEPTILE}, - }}, { // Sceptile - }, {{ // Torchic - {EVO_LEVEL, 16, SPECIES_COMBUSKEN}, - }}, {{ // Combusken - {EVO_LEVEL, 36, SPECIES_BLAZIKEN}, - }}, { // Blaziken - }, {{ // Mudkip - {EVO_LEVEL, 16, SPECIES_MARSHTOMP}, - }}, {{ // Marshtomp - {EVO_LEVEL, 36, SPECIES_SWAMPERT}, - }}, { // Swampert - }, {{ // Poochyena - {EVO_LEVEL, 18, SPECIES_MIGHTYENA}, - }}, { // Mightyena - }, {{ // Zigzagoon - {EVO_LEVEL, 20, SPECIES_LINOONE}, - }}, { // Linoone - }, {{ // Wurmple - {EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, - {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}, - }}, {{ // Silcoon - {EVO_LEVEL, 10, SPECIES_BEAUTIFLY}, - }}, { // Beautifly - }, {{ // Cascoon - {EVO_LEVEL, 10, SPECIES_DUSTOX}, - }}, { // Dustox - }, {{ // Lotad - {EVO_LEVEL, 14, SPECIES_LOMBRE}, - }}, {{ // Lombre - {EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}, - }}, { // Ludicolo - }, {{ // Seedot - {EVO_LEVEL, 14, SPECIES_NUZLEAF}, - }}, {{ // Nuzleaf - {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}, - }}, { // Shiftry - }, {{ // Nincada - {EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, - {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}, - }}, { // Ninjask - }, { // Shedinja - }, {{ // Taillow - {EVO_LEVEL, 22, SPECIES_SWELLOW}, - }}, { // Swellow - }, {{ // Shroomish - {EVO_LEVEL, 23, SPECIES_BRELOOM}, - }}, { // Breloom - }, { // Spinda - }, {{ // Wingull - {EVO_LEVEL, 25, SPECIES_PELIPPER}, - }}, { // Pelipper - }, {{ // Surskit - {EVO_LEVEL, 22, SPECIES_MASQUERAIN}, - }}, { // Masquerain - }, {{ // Wailmer - {EVO_LEVEL, 40, SPECIES_WAILORD}, - }}, { // Wailord - }, {{ // Skitty - {EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}, - }}, { // Delcatty - }, { // Kecleon - }, {{ // Baltoy - {EVO_LEVEL, 36, SPECIES_CLAYDOL}, - }}, { // Claydol - }, { // Nosepass - }, { // Torkoal - }, { // Sableye - }, {{ // Barboach - {EVO_LEVEL, 30, SPECIES_WHISCASH}, - }}, { // Whiscash - }, { // Luvdisc - }, {{ // Corphish - {EVO_LEVEL, 30, SPECIES_CRAWDAUNT}, - }}, { // Crawdaunt - }, {{ // Feebas - {EVO_BEAUTY, 170, SPECIES_MILOTIC}, - }}, { // Milotic - }, {{ // Carvanha - {EVO_LEVEL, 30, SPECIES_SHARPEDO}, - }}, { // Sharpedo - }, {{ // Trapinch - {EVO_LEVEL, 35, SPECIES_VIBRAVA}, - }}, {{ // Vibrava - {EVO_LEVEL, 45, SPECIES_FLYGON}, - }}, { // Flygon - }, {{ // Makuhita - {EVO_LEVEL, 24, SPECIES_HARIYAMA}, - }}, { // Hariyama - }, {{ // Electrike - {EVO_LEVEL, 26, SPECIES_MANECTRIC}, - }}, { // Manectric - }, {{ // Numel - {EVO_LEVEL, 33, SPECIES_CAMERUPT}, - }}, { // Camerupt - }, {{ // Spheal - {EVO_LEVEL, 32, SPECIES_SEALEO}, - }}, {{ // Sealeo - {EVO_LEVEL, 44, SPECIES_WALREIN}, - }}, { // Walrein - }, {{ // Cacnea - {EVO_LEVEL, 32, SPECIES_CACTURNE}, - }}, { // Cacturne - }, {{ // Snorunt - {EVO_LEVEL, 42, SPECIES_GLALIE}, - }}, { // Glalie - }, { // Lunatone - }, { // Solrock - }, {{ // Azurill - {EVO_FRIENDSHIP, 0, SPECIES_MARILL}, - }}, {{ // Spoink - {EVO_LEVEL, 32, SPECIES_GRUMPIG}, - }}, { // Grumpig - }, { // Plusle - }, { // Minun - }, { // Mawile - }, {{ // Meditite - {EVO_LEVEL, 37, SPECIES_MEDICHAM}, - }}, { // Medicham - }, {{ // Swablu - {EVO_LEVEL, 35, SPECIES_ALTARIA}, - }}, { // Altaria - }, {{ // Wynaut - {EVO_LEVEL, 15, SPECIES_WOBBUFFET}, - }}, {{ // Duskull - {EVO_LEVEL, 37, SPECIES_DUSCLOPS}, - }}, { // Dusclops - }, { // Roselia - }, {{ // Slakoth - {EVO_LEVEL, 18, SPECIES_VIGOROTH}, - }}, {{ // Vigoroth - {EVO_LEVEL, 36, SPECIES_SLAKING}, - }}, { // Slaking - }, {{ // Gulpin - {EVO_LEVEL, 26, SPECIES_SWALOT}, - }}, { // Swalot - }, { // Tropius - }, {{ // Whismur - {EVO_LEVEL, 20, SPECIES_LOUDRED}, - }}, {{ // Loudred - {EVO_LEVEL, 40, SPECIES_EXPLOUD}, - }}, { // Exploud - }, {{ // Clamperl - {EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, - {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, - }}, { // Huntail - }, { // Gorebyss - }, { // Absol - }, {{ // Shuppet - {EVO_LEVEL, 37, SPECIES_BANETTE}, - }}, { // Banette - }, { // Seviper - }, { // Zangoose - }, { // Relicanth - }, {{ // Aron - {EVO_LEVEL, 32, SPECIES_LAIRON}, - }}, {{ // Lairon - {EVO_LEVEL, 42, SPECIES_AGGRON}, - }}, { // Aggron - }, { // Castform - }, { // Volbeat - }, { // Illumise - }, {{ // Lileep - {EVO_LEVEL, 40, SPECIES_CRADILY}, - }}, { // Cradily - }, {{ // Anorith - {EVO_LEVEL, 40, SPECIES_ARMALDO}, - }}, { // Armaldo - }, {{ // Ralts - {EVO_LEVEL, 20, SPECIES_KIRLIA}, - }}, {{ // Kirlia - {EVO_LEVEL, 30, SPECIES_GARDEVOIR}, - }}, { // Gardevoir - }, {{ // Bagon - {EVO_LEVEL, 30, SPECIES_SHELGON}, - }}, {{ // Shelgon - {EVO_LEVEL, 50, SPECIES_SALAMENCE}, - }}, { // Salamence - }, {{ // Beldum - {EVO_LEVEL, 20, SPECIES_METANG}, - }}, {{ // Metang - {EVO_LEVEL, 45, SPECIES_METAGROSS}, - }}, { // Metagross - }, { // Regirock - }, { // Regice - }, { // Registeel - }, { // Kyogre - }, { // Groudon - }, { // Rayquaza - }, { // Latias - }, { // Latios - }, { // Jirachi - }, { // Deoxys - }, { // Chimecho - } + {{ // ?????????? + }}, {{ // Bulbasaur + {EVO_LEVEL, 16, SPECIES_IVYSAUR}, + }}, {{ // Ivysaur + {EVO_LEVEL, 32, SPECIES_VENUSAUR}, + }}, {{ // Venusaur + }}, {{ // Charmander + {EVO_LEVEL, 16, SPECIES_CHARMELEON}, + }}, {{ // Charmeleon + {EVO_LEVEL, 36, SPECIES_CHARIZARD}, + }}, {{ // Charizard + }}, {{ // Squirtle + {EVO_LEVEL, 16, SPECIES_WARTORTLE}, + }}, {{ // Wartortle + {EVO_LEVEL, 36, SPECIES_BLASTOISE}, + }}, {{ // Blastoise + }}, {{ // Caterpie + {EVO_LEVEL, 7, SPECIES_METAPOD}, + }}, {{ // Metapod + {EVO_LEVEL, 10, SPECIES_BUTTERFREE}, + }}, {{ // Butterfree + }}, {{ // Weedle + {EVO_LEVEL, 7, SPECIES_KAKUNA}, + }}, {{ // Kakuna + {EVO_LEVEL, 10, SPECIES_BEEDRILL}, + }}, {{ // Beedrill + }}, {{ // Pidgey + {EVO_LEVEL, 18, SPECIES_PIDGEOTTO}, + }}, {{ // Pidgeotto + {EVO_LEVEL, 36, SPECIES_PIDGEOT}, + }}, {{ // Pidgeot + }}, {{ // Rattata + {EVO_LEVEL, 20, SPECIES_RATICATE}, + }}, {{ // Raticate + }}, {{ // Spearow + {EVO_LEVEL, 20, SPECIES_FEAROW}, + }}, {{ // Fearow + }}, {{ // Ekans + {EVO_LEVEL, 22, SPECIES_ARBOK}, + }}, {{ // Arbok + }}, {{ // Pikachu + {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_RAICHU}, + }}, {{ // Raichu + }}, {{ // Sandshrew + {EVO_LEVEL, 22, SPECIES_SANDSLASH}, + }}, {{ // Sandslash + }}, {{ // Nidoran♀ + {EVO_LEVEL, 16, SPECIES_NIDORINA}, + }}, {{ // Nidorina + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOQUEEN}, + }}, {{ // Nidoqueen + }}, {{ // Nidoran♂ + {EVO_LEVEL, 16, SPECIES_NIDORINO}, + }}, {{ // Nidorino + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_NIDOKING}, + }}, {{ // Nidoking + }}, {{ // Clefairy + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_CLEFABLE}, + }}, {{ // Clefable + }}, {{ // Vulpix + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_NINETALES}, + }}, {{ // Ninetales + }}, {{ // Jigglypuff + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_WIGGLYTUFF}, + }}, {{ // Wigglytuff + }}, {{ // Zubat + {EVO_LEVEL, 22, SPECIES_GOLBAT}, + }}, {{ // Golbat + {EVO_FRIENDSHIP, 0, SPECIES_CROBAT}, + }}, {{ // Oddish + {EVO_LEVEL, 21, SPECIES_GLOOM}, + }}, {{ // Gloom + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VILEPLUME}, + {EVO_ITEM, ITEM_SUN_STONE, SPECIES_BELLOSSOM}, + }}, {{ // Vileplume + }}, {{ // Paras + {EVO_LEVEL, 24, SPECIES_PARASECT}, + }}, {{ // Parasect + }}, {{ // Venonat + {EVO_LEVEL, 31, SPECIES_VENOMOTH}, + }}, {{ // Venomoth + }}, {{ // Diglett + {EVO_LEVEL, 26, SPECIES_DUGTRIO}, + }}, {{ // Dugtrio + }}, {{ // Meowth + {EVO_LEVEL, 28, SPECIES_PERSIAN}, + }}, {{ // Persian + }}, {{ // Psyduck + {EVO_LEVEL, 33, SPECIES_GOLDUCK}, + }}, {{ // Golduck + }}, {{ // Mankey + {EVO_LEVEL, 28, SPECIES_PRIMEAPE}, + }}, {{ // Primeape + }}, {{ // Growlithe + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_ARCANINE}, + }}, {{ // Arcanine + }}, {{ // Poliwag + {EVO_LEVEL, 25, SPECIES_POLIWHIRL}, + }}, {{ // Poliwhirl + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_POLIWRATH}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_POLITOED}, + }}, {{ // Poliwrath + }}, {{ // Abra + {EVO_LEVEL, 16, SPECIES_KADABRA}, + }}, {{ // Kadabra + {EVO_TRADE, 0, SPECIES_ALAKAZAM}, + }}, {{ // Alakazam + }}, {{ // Machop + {EVO_LEVEL, 28, SPECIES_MACHOKE}, + }}, {{ // Machoke + {EVO_TRADE, 0, SPECIES_MACHAMP}, + }}, {{ // Machamp + }}, {{ // Bellsprout + {EVO_LEVEL, 21, SPECIES_WEEPINBELL}, + }}, {{ // Weepinbell + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_VICTREEBEL}, + }}, {{ // Victreebel + }}, {{ // Tentacool + {EVO_LEVEL, 30, SPECIES_TENTACRUEL}, + }}, {{ // Tentacruel + }}, {{ // Geodude + {EVO_LEVEL, 25, SPECIES_GRAVELER}, + }}, {{ // Graveler + {EVO_TRADE, 0, SPECIES_GOLEM}, + }}, {{ // Golem + }}, {{ // Ponyta + {EVO_LEVEL, 40, SPECIES_RAPIDASH}, + }}, {{ // Rapidash + }}, {{ // Slowpoke + {EVO_LEVEL, 37, SPECIES_SLOWBRO}, + {EVO_TRADE_ITEM, ITEM_KINGS_ROCK, SPECIES_SLOWKING}, + }}, {{ // Slowbro + }}, {{ // Magnemite + {EVO_LEVEL, 30, SPECIES_MAGNETON}, + }}, {{ // Magneton + }}, {{ // Farfetch'd + }}, {{ // Doduo + {EVO_LEVEL, 31, SPECIES_DODRIO}, + }}, {{ // Dodrio + }}, {{ // Seel + {EVO_LEVEL, 34, SPECIES_DEWGONG}, + }}, {{ // Dewgong + }}, {{ // Grimer + {EVO_LEVEL, 38, SPECIES_MUK}, + }}, {{ // Muk + }}, {{ // Shellder + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_CLOYSTER}, + }}, {{ // Cloyster + }}, {{ // Gastly + {EVO_LEVEL, 25, SPECIES_HAUNTER}, + }}, {{ // Haunter + {EVO_TRADE, 0, SPECIES_GENGAR}, + }}, {{ // Gengar + }}, {{ // Onix + {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_STEELIX}, + }}, {{ // Drowzee + {EVO_LEVEL, 26, SPECIES_HYPNO}, + }}, {{ // Hypno + }}, {{ // Krabby + {EVO_LEVEL, 28, SPECIES_KINGLER}, + }}, {{ // Kingler + }}, {{ // Voltorb + {EVO_LEVEL, 30, SPECIES_ELECTRODE}, + }}, {{ // Electrode + }}, {{ // Exeggcute + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_EXEGGUTOR}, + }}, {{ // Exeggutor + }}, {{ // Cubone + {EVO_LEVEL, 28, SPECIES_MAROWAK}, + }}, {{ // Marowak + }}, {{ // Hitmonlee + }}, {{ // Hitmonchan + }}, {{ // Lickitung + }}, {{ // Koffing + {EVO_LEVEL, 35, SPECIES_WEEZING}, + }}, {{ // Weezing + }}, {{ // Rhyhorn + {EVO_LEVEL, 42, SPECIES_RHYDON}, + }}, {{ // Rhydon + }}, {{ // Chansey + {EVO_FRIENDSHIP, 0, SPECIES_BLISSEY}, + }}, {{ // Tangela + }}, {{ // Kangaskhan + }}, {{ // Horsea + {EVO_LEVEL, 32, SPECIES_SEADRA}, + }}, {{ // Seadra + {EVO_TRADE_ITEM, ITEM_DRAGON_SCALE, SPECIES_KINGDRA}, + }}, {{ // Goldeen + {EVO_LEVEL, 33, SPECIES_SEAKING}, + }}, {{ // Seaking + }}, {{ // Staryu + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_STARMIE}, + }}, {{ // Starmie + }}, {{ // Mr. mime + }}, {{ // Scyther + {EVO_TRADE_ITEM, ITEM_METAL_COAT, SPECIES_SCIZOR}, + }}, {{ // Jynx + }}, {{ // Electabuzz + }}, {{ // Magmar + }}, {{ // Pinsir + }}, {{ // Tauros + }}, {{ // Magikarp + {EVO_LEVEL, 20, SPECIES_GYARADOS}, + }}, {{ // Gyarados + }}, {{ // Lapras + }}, {{ // Ditto + }}, {{ // Eevee + {EVO_ITEM, ITEM_THUNDER_STONE, SPECIES_JOLTEON}, + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_VAPOREON}, + {EVO_ITEM, ITEM_FIRE_STONE, SPECIES_FLAREON}, + {EVO_FRIENDSHIP_DAY, 0, SPECIES_ESPEON}, + {EVO_FRIENDSHIP_NIGHT, 0, SPECIES_UMBREON}, + }}, {{ // Vaporeon + }}, {{ // Jolteon + }}, {{ // Flareon + }}, {{ // Porygon + {EVO_TRADE_ITEM, ITEM_UP_GRADE, SPECIES_PORYGON2}, + }}, {{ // Omanyte + {EVO_LEVEL, 40, SPECIES_OMASTAR}, + }}, {{ // Omastar + }}, {{ // Kabuto + {EVO_LEVEL, 40, SPECIES_KABUTOPS}, + }}, {{ // Kabutops + }}, {{ // Aerodactyl + }}, {{ // Snorlax + }}, {{ // Articuno + }}, {{ // Zapdos + }}, {{ // Moltres + }}, {{ // Dratini + {EVO_LEVEL, 30, SPECIES_DRAGONAIR}, + }}, {{ // Dragonair + {EVO_LEVEL, 55, SPECIES_DRAGONITE}, + }}, {{ // Dragonite + }}, {{ // Mewtwo + }}, {{ // Mew + }}, {{ // Chikorita + {EVO_LEVEL, 16, SPECIES_BAYLEEF}, + }}, {{ // Bayleef + {EVO_LEVEL, 32, SPECIES_MEGANIUM}, + }}, {{ // Meganium + }}, {{ // Cyndaquil + {EVO_LEVEL, 14, SPECIES_QUILAVA}, + }}, {{ // Quilava + {EVO_LEVEL, 36, SPECIES_TYPHLOSION}, + }}, {{ // Typhlosion + }}, {{ // Totodile + {EVO_LEVEL, 18, SPECIES_CROCONAW}, + }}, {{ // Croconaw + {EVO_LEVEL, 30, SPECIES_FERALIGATR}, + }}, {{ // Feraligatr + }}, {{ // Sentret + {EVO_LEVEL, 15, SPECIES_FURRET}, + }}, {{ // Furret + }}, {{ // Hoothoot + {EVO_LEVEL, 20, SPECIES_NOCTOWL}, + }}, {{ // Noctowl + }}, {{ // Ledyba + {EVO_LEVEL, 18, SPECIES_LEDIAN}, + }}, {{ // Ledian + }}, {{ // Spinarak + {EVO_LEVEL, 22, SPECIES_ARIADOS}, + }}, {{ // Ariados + }}, {{ // Crobat + }}, {{ // Chinchou + {EVO_LEVEL, 27, SPECIES_LANTURN}, + }}, {{ // Lanturn + }}, {{ // Pichu + {EVO_FRIENDSHIP, 0, SPECIES_PIKACHU}, + }}, {{ // Cleffa + {EVO_FRIENDSHIP, 0, SPECIES_CLEFAIRY}, + }}, {{ // Igglybuff + {EVO_FRIENDSHIP, 0, SPECIES_JIGGLYPUFF}, + }}, {{ // Togepi + {EVO_FRIENDSHIP, 0, SPECIES_TOGETIC}, + }}, {{ // Togetic + }}, {{ // Natu + {EVO_LEVEL, 25, SPECIES_XATU}, + }}, {{ // Xatu + }}, {{ // Mareep + {EVO_LEVEL, 15, SPECIES_FLAAFFY}, + }}, {{ // Flaaffy + {EVO_LEVEL, 30, SPECIES_AMPHAROS}, + }}, {{ // Ampharos + }}, {{ // Bellossom + }}, {{ // Marill + {EVO_LEVEL, 18, SPECIES_AZUMARILL}, + }}, {{ // Azumarill + }}, {{ // Sudowoodo + }}, {{ // Politoed + }}, {{ // Hoppip + {EVO_LEVEL, 18, SPECIES_SKIPLOOM}, + }}, {{ // Skiploom + {EVO_LEVEL, 27, SPECIES_JUMPLUFF}, + }}, {{ // Jumpluff + }}, {{ // Aipom + }}, {{ // Sunkern + {EVO_ITEM, ITEM_SUN_STONE, SPECIES_SUNFLORA}, + }}, {{ // Sunflora + }}, {{ // Yanma + }}, {{ // Wooper + {EVO_LEVEL, 20, SPECIES_QUAGSIRE}, + }}, {{ // Quagsire + }}, {{ // Espeon + }}, {{ // Umbreon + }}, {{ // Murkrow + }}, {{ // Slowking + }}, {{ // Misdreavus + }}, {{ // Unown + }}, {{ // Wobbuffet + }}, {{ // Girafarig + }}, {{ // Pineco + {EVO_LEVEL, 31, SPECIES_FORRETRESS}, + }}, {{ // Forretress + }}, {{ // Dunsparce + }}, {{ // Gligar + }}, {{ // Steelix + }}, {{ // Snubbull + {EVO_LEVEL, 23, SPECIES_GRANBULL}, + }}, {{ // Granbull + }}, {{ // Qwilfish + }}, {{ // Scizor + }}, {{ // Shuckle + }}, {{ // Heracross + }}, {{ // Sneasel + }}, {{ // Teddiursa + {EVO_LEVEL, 30, SPECIES_URSARING}, + }}, {{ // Ursaring + }}, {{ // Slugma + {EVO_LEVEL, 38, SPECIES_MAGCARGO}, + }}, {{ // Magcargo + }}, {{ // Swinub + {EVO_LEVEL, 33, SPECIES_PILOSWINE}, + }}, {{ // Piloswine + }}, {{ // Corsola + }}, {{ // Remoraid + {EVO_LEVEL, 25, SPECIES_OCTILLERY}, + }}, {{ // Octillery + }}, {{ // Delibird + }}, {{ // Mantine + }}, {{ // Skarmory + }}, {{ // Houndour + {EVO_LEVEL, 24, SPECIES_HOUNDOOM}, + }}, {{ // Houndoom + }}, {{ // Kingdra + }}, {{ // Phanpy + {EVO_LEVEL, 25, SPECIES_DONPHAN}, + }}, {{ // Donphan + }}, {{ // Porygon2 + }}, {{ // Stantler + }}, {{ // Smeargle + }}, {{ // Tyrogue + {EVO_LEVEL_ATK_LT_DEF, 20, SPECIES_HITMONCHAN}, + {EVO_LEVEL_ATK_GT_DEF, 20, SPECIES_HITMONLEE}, + {EVO_LEVEL_ATK_EQ_DEF, 20, SPECIES_HITMONTOP}, + }}, {{ // Hitmontop + }}, {{ // Smoochum + {EVO_LEVEL, 30, SPECIES_JYNX}, + }}, {{ // Elekid + {EVO_LEVEL, 30, SPECIES_ELECTABUZZ}, + }}, {{ // Magby + {EVO_LEVEL, 30, SPECIES_MAGMAR}, + }}, {{ // Miltank + }}, {{ // Blissey + }}, {{ // Raikou + }}, {{ // Entei + }}, {{ // Suicune + }}, {{ // Larvitar + {EVO_LEVEL, 30, SPECIES_PUPITAR}, + }}, {{ // Pupitar + {EVO_LEVEL, 55, SPECIES_TYRANITAR}, + }}, {{ // Tyranitar + }}, {{ // Lugia + }}, {{ // Ho-Oh + }}, {{ // Celebi + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // ? + }}, {{ // Treecko + {EVO_LEVEL, 16, SPECIES_GROVYLE}, + }}, {{ // Grovyle + {EVO_LEVEL, 36, SPECIES_SCEPTILE}, + }}, {{ // Sceptile + }}, {{ // Torchic + {EVO_LEVEL, 16, SPECIES_COMBUSKEN}, + }}, {{ // Combusken + {EVO_LEVEL, 36, SPECIES_BLAZIKEN}, + }}, {{ // Blaziken + }}, {{ // Mudkip + {EVO_LEVEL, 16, SPECIES_MARSHTOMP}, + }}, {{ // Marshtomp + {EVO_LEVEL, 36, SPECIES_SWAMPERT}, + }}, {{ // Swampert + }}, {{ // Poochyena + {EVO_LEVEL, 18, SPECIES_MIGHTYENA}, + }}, {{ // Mightyena + }}, {{ // Zigzagoon + {EVO_LEVEL, 20, SPECIES_LINOONE}, + }}, {{ // Linoone + }}, {{ // Wurmple + {EVO_LEVEL_SILCOON, 7, SPECIES_SILCOON}, + {EVO_LEVEL_CASCOON, 7, SPECIES_CASCOON}, + }}, {{ // Silcoon + {EVO_LEVEL, 10, SPECIES_BEAUTIFLY}, + }}, {{ // Beautifly + }}, {{ // Cascoon + {EVO_LEVEL, 10, SPECIES_DUSTOX}, + }}, {{ // Dustox + }}, {{ // Lotad + {EVO_LEVEL, 14, SPECIES_LOMBRE}, + }}, {{ // Lombre + {EVO_ITEM, ITEM_WATER_STONE, SPECIES_LUDICOLO}, + }}, {{ // Ludicolo + }}, {{ // Seedot + {EVO_LEVEL, 14, SPECIES_NUZLEAF}, + }}, {{ // Nuzleaf + {EVO_ITEM, ITEM_LEAF_STONE, SPECIES_SHIFTRY}, + }}, {{ // Shiftry + }}, {{ // Nincada + {EVO_LEVEL_NINJASK, 20, SPECIES_NINJASK}, + {EVO_LEVEL_SHEDINJA, 20, SPECIES_SHEDINJA}, + }}, {{ // Ninjask + }}, {{ // Shedinja + }}, {{ // Taillow + {EVO_LEVEL, 22, SPECIES_SWELLOW}, + }}, {{ // Swellow + }}, {{ // Shroomish + {EVO_LEVEL, 23, SPECIES_BRELOOM}, + }}, {{ // Breloom + }}, {{ // Spinda + }}, {{ // Wingull + {EVO_LEVEL, 25, SPECIES_PELIPPER}, + }}, {{ // Pelipper + }}, {{ // Surskit + {EVO_LEVEL, 22, SPECIES_MASQUERAIN}, + }}, {{ // Masquerain + }}, {{ // Wailmer + {EVO_LEVEL, 40, SPECIES_WAILORD}, + }}, {{ // Wailord + }}, {{ // Skitty + {EVO_ITEM, ITEM_MOON_STONE, SPECIES_DELCATTY}, + }}, {{ // Delcatty + }}, {{ // Kecleon + }}, {{ // Baltoy + {EVO_LEVEL, 36, SPECIES_CLAYDOL}, + }}, {{ // Claydol + }}, {{ // Nosepass + }}, {{ // Torkoal + }}, {{ // Sableye + }}, {{ // Barboach + {EVO_LEVEL, 30, SPECIES_WHISCASH}, + }}, {{ // Whiscash + }}, {{ // Luvdisc + }}, {{ // Corphish + {EVO_LEVEL, 30, SPECIES_CRAWDAUNT}, + }}, {{ // Crawdaunt + }}, {{ // Feebas + {EVO_BEAUTY, 170, SPECIES_MILOTIC}, + }}, {{ // Milotic + }}, {{ // Carvanha + {EVO_LEVEL, 30, SPECIES_SHARPEDO}, + }}, {{ // Sharpedo + }}, {{ // Trapinch + {EVO_LEVEL, 35, SPECIES_VIBRAVA}, + }}, {{ // Vibrava + {EVO_LEVEL, 45, SPECIES_FLYGON}, + }}, {{ // Flygon + }}, {{ // Makuhita + {EVO_LEVEL, 24, SPECIES_HARIYAMA}, + }}, {{ // Hariyama + }}, {{ // Electrike + {EVO_LEVEL, 26, SPECIES_MANECTRIC}, + }}, {{ // Manectric + }}, {{ // Numel + {EVO_LEVEL, 33, SPECIES_CAMERUPT}, + }}, {{ // Camerupt + }}, {{ // Spheal + {EVO_LEVEL, 32, SPECIES_SEALEO}, + }}, {{ // Sealeo + {EVO_LEVEL, 44, SPECIES_WALREIN}, + }}, {{ // Walrein + }}, {{ // Cacnea + {EVO_LEVEL, 32, SPECIES_CACTURNE}, + }}, {{ // Cacturne + }}, {{ // Snorunt + {EVO_LEVEL, 42, SPECIES_GLALIE}, + }}, {{ // Glalie + }}, {{ // Lunatone + }}, {{ // Solrock + }}, {{ // Azurill + {EVO_FRIENDSHIP, 0, SPECIES_MARILL}, + }}, {{ // Spoink + {EVO_LEVEL, 32, SPECIES_GRUMPIG}, + }}, {{ // Grumpig + }}, {{ // Plusle + }}, {{ // Minun + }}, {{ // Mawile + }}, {{ // Meditite + {EVO_LEVEL, 37, SPECIES_MEDICHAM}, + }}, {{ // Medicham + }}, {{ // Swablu + {EVO_LEVEL, 35, SPECIES_ALTARIA}, + }}, {{ // Altaria + }}, {{ // Wynaut + {EVO_LEVEL, 15, SPECIES_WOBBUFFET}, + }}, {{ // Duskull + {EVO_LEVEL, 37, SPECIES_DUSCLOPS}, + }}, {{ // Dusclops + }}, {{ // Roselia + }}, {{ // Slakoth + {EVO_LEVEL, 18, SPECIES_VIGOROTH}, + }}, {{ // Vigoroth + {EVO_LEVEL, 36, SPECIES_SLAKING}, + }}, {{ // Slaking + }}, {{ // Gulpin + {EVO_LEVEL, 26, SPECIES_SWALOT}, + }}, {{ // Swalot + }}, {{ // Tropius + }}, {{ // Whismur + {EVO_LEVEL, 20, SPECIES_LOUDRED}, + }}, {{ // Loudred + {EVO_LEVEL, 40, SPECIES_EXPLOUD}, + }}, {{ // Exploud + }}, {{ // Clamperl + {EVO_TRADE_ITEM, ITEM_DEEP_SEA_TOOTH, SPECIES_HUNTAIL}, + {EVO_TRADE_ITEM, ITEM_DEEP_SEA_SCALE, SPECIES_GOREBYSS}, + }}, {{ // Huntail + }}, {{ // Gorebyss + }}, {{ // Absol + }}, {{ // Shuppet + {EVO_LEVEL, 37, SPECIES_BANETTE}, + }}, {{ // Banette + }}, {{ // Seviper + }}, {{ // Zangoose + }}, {{ // Relicanth + }}, {{ // Aron + {EVO_LEVEL, 32, SPECIES_LAIRON}, + }}, {{ // Lairon + {EVO_LEVEL, 42, SPECIES_AGGRON}, + }}, {{ // Aggron + }}, {{ // Castform + }}, {{ // Volbeat + }}, {{ // Illumise + }}, {{ // Lileep + {EVO_LEVEL, 40, SPECIES_CRADILY}, + }}, {{ // Cradily + }}, {{ // Anorith + {EVO_LEVEL, 40, SPECIES_ARMALDO}, + }}, {{ // Armaldo + }}, {{ // Ralts + {EVO_LEVEL, 20, SPECIES_KIRLIA}, + }}, {{ // Kirlia + {EVO_LEVEL, 30, SPECIES_GARDEVOIR}, + }}, {{ // Gardevoir + }}, {{ // Bagon + {EVO_LEVEL, 30, SPECIES_SHELGON}, + }}, {{ // Shelgon + {EVO_LEVEL, 50, SPECIES_SALAMENCE}, + }}, {{ // Salamence + }}, {{ // Beldum + {EVO_LEVEL, 20, SPECIES_METANG}, + }}, {{ // Metang + {EVO_LEVEL, 45, SPECIES_METAGROSS}, + }}, {{ // Metagross + }}, {{ // Regirock + }}, {{ // Regice + }}, {{ // Registeel + }}, {{ // Kyogre + }}, {{ // Groudon + }}, {{ // Rayquaza + }}, {{ // Latias + }}, {{ // Latios + }}, {{ // Jirachi + }}, {{ // Deoxys + }}, {{ // Chimecho + }} }; #endif //POKERUBY_EVOLUTION_H -- cgit v1.2.3 From b219b70250e9eb001111965fbdbcda2305c63c7f Mon Sep 17 00:00:00 2001 From: yenatch Date: Tue, 4 Jul 2017 20:49:25 -0400 Subject: battle_10 includes Addresses comments in #344 --- src/battle_10.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/battle_10.c b/src/battle_10.c index 29bc6ab36..34e4f75b1 100644 --- a/src/battle_10.c +++ b/src/battle_10.c @@ -4,6 +4,7 @@ #include "data2.h" #include "link.h" #include "palette.h" +#include "rom_8077ABC.h" #include "rom3.h" #include "songs.h" #include "sound.h" @@ -47,9 +48,7 @@ extern struct Window gUnknown_03004210; extern u16 gUnknown_030042A0; extern u16 gUnknown_030042A4; extern u8 gUnknown_0300434C[]; -extern const struct MonCoords gTrainerFrontPicCoords[]; -extern u8 sub_8077ABC(); extern u8 sub_8077F68(); extern u8 sub_8079E90(); extern u8 GetBankIdentity(u8); @@ -1318,6 +1317,6 @@ void sub_803A658(void) gBattleBankFunc[gActiveBank] = sub_8037F34; } -extern void nullsub_48(void) +void nullsub_48(void) { } -- cgit v1.2.3 From d5f7232c1dd31ff82187acc402173fcd6e76359e Mon Sep 17 00:00:00 2001 From: yenatch Date: Tue, 4 Jul 2017 20:55:59 -0400 Subject: travis: allow formatting job to fail instead of falsely reporting passed --- .travis.yml | 2 ++ .travis/check-git-clang-format-output.sh | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3d620e560..3db6ab6fc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,3 +55,5 @@ matrix: script: - ./build_tools.sh - make -j2 compare_ruby_de + allow_failures: + - env: _="Formatting" diff --git a/.travis/check-git-clang-format-output.sh b/.travis/check-git-clang-format-output.sh index e6acf8ced..c53efa726 100755 --- a/.travis/check-git-clang-format-output.sh +++ b/.travis/check-git-clang-format-output.sh @@ -17,5 +17,5 @@ if [ "$output" == "no modified files to format" ] || [ "$output" == "clang-forma else echo "clang-format failed:" echo "$output" | colordiff - exit 0 + exit 1 fi -- cgit v1.2.3 From 40347c124df9f288d97b3853ede1eb0338f8b4c9 Mon Sep 17 00:00:00 2001 From: yenatch Date: Wed, 5 Jul 2017 17:41:44 -0400 Subject: Fix STATUS2_FOCUS_ENERGRY --- include/battle.h | 2 +- src/battle_2.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/battle.h b/include/battle.h index a67dc70c5..05016b8c3 100644 --- a/include/battle.h +++ b/include/battle.h @@ -40,7 +40,7 @@ #define STATUS2_LOCK_CONFUSE 0x00000C00 #define STATUS2_MULTIPLETURNS 0x00001000 #define STATUS2_WRAPPED 0x0000E000 -#define STATUS2_FOCUS_ENERGRY 0x00100000 +#define STATUS2_FOCUS_ENERGY 0x00100000 #define STATUS2_TRANSFORMED 0x00200000 #define STATUS2_RECHARGE 0x00400000 #define STATUS2_RAGE 0x00800000 diff --git a/src/battle_2.c b/src/battle_2.c index 3701da608..64df97f00 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -1703,7 +1703,7 @@ void SwitchInClearStructs(void) } if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { - gBattleMons[gActiveBank].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGRY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED); + gBattleMons[gActiveBank].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED); gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_RECEIVER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); for (i = 0; i < gNoOfAllBanks; i++) -- cgit v1.2.3 From 123d5cc8b26d2a93fa3981beaccb84377c6ae20f Mon Sep 17 00:00:00 2001 From: yenatch Date: Wed, 5 Jul 2017 17:42:33 -0400 Subject: Fix tab-aligned comments --- include/battle.h | 96 ++++++++++++++-------------- src/battle_2.c | 2 +- src/battle_ai.c | 188 +++++++++++++++++++++++++++---------------------------- 3 files changed, 143 insertions(+), 143 deletions(-) diff --git a/include/battle.h b/include/battle.h index 05016b8c3..006e4e6fe 100644 --- a/include/battle.h +++ b/include/battle.h @@ -58,7 +58,7 @@ #define STATUS3_UNDERGROUND 0x80 #define STATUS3_MINIMIZED 0x100 #define STATUS3_CHARGED_UP 0x200 -#define STATUS3_ROOTED 0x400 +#define STATUS3_ROOTED 0x400 #define STATUS3_GRUDGE 0x4000 #define STATUS3_CANT_SCORE_A_CRIT 0x8000 #define STATUS3_MUDSPORT 0x10000 @@ -77,7 +77,7 @@ #define HITMARKER_IGNORE_ON_AIR 0x0010000 #define HITMARKER_IGNORE_UNDERGROUND 0x0020000 #define HITMARKER_IGNORE_UNDERWATER 0x0040000 -#define HITMARKER_x80000 0x0080000 +#define HITMARKER_x80000 0x0080000 #define HITMARKER_x100000 0x0100000 #define HITMARKER_x400000 0x0400000 #define HITMARKER_x800000 0x0800000 @@ -164,16 +164,16 @@ struct BattleStruct /* 0x2000000 */ u8 filler0[0x15DDE]; /*0x15DDE*/ u8 unk15DDE; /*0x15DDF*/ u8 unk15DDF; - /*0x15DE0*/ u8 filler15DE0[0x222]; - /*0x16002*/ u8 AnimTurn; - /*0x16003*/ u8 ScriptingActive; - /*0x16004*/ u8 WrappedMove1[4]; - /*0x16008*/ u8 WrappedMove2[4]; - /*0x1600C*/ u8 cmd49StateTracker; - /*0x1600D*/ u8 unk1600D; - /*0x1600E*/ u8 unk1600E; - /*0x1600F*/ u8 atk23StateTracker; - /*0x16010*/ u8 unk16010; + /*0x15DE0*/ u8 filler15DE0[0x222]; + /*0x16002*/ u8 AnimTurn; + /*0x16003*/ u8 ScriptingActive; + /*0x16004*/ u8 WrappedMove1[4]; + /*0x16008*/ u8 WrappedMove2[4]; + /*0x1600C*/ u8 cmd49StateTracker; + /*0x1600D*/ u8 unk1600D; + /*0x1600E*/ u8 unk1600E; + /*0x1600F*/ u8 atk23StateTracker; + /*0x16010*/ u8 unk16010; /*0x16011*/ u8 unk16011; /*0x16012*/ u8 unk16012; /*0x16013*/ u8 unk16013; @@ -185,10 +185,10 @@ struct BattleStruct /* 0x2000000 */ /*0x16019*/ u8 unk16019; /*0x1601A*/ u8 unk1601A; /*0x1601B*/ u8 wildVictorySong; - /*0x1601C*/ u8 DynamicMoveType; - /*0x1601D*/ u8 unk1601D; - /*0x1601E*/ u8 statChanger; - /*0x1601F*/ u8 DmgMultiplier; + /*0x1601C*/ u8 DynamicMoveType; + /*0x1601D*/ u8 unk1601D; + /*0x1601E*/ u8 statChanger; + /*0x1601F*/ u8 DmgMultiplier; /*0x16020*/ u8 WrappedBy[4]; /*0x16024*/ u8 unk16024; /*0x16025*/ u8 unk16025; @@ -323,7 +323,7 @@ struct BattleStruct /* 0x2000000 */ /*0x160AD*/ u8 unk160AD; /*0x160AE*/ u8 unk160AE; /*0x160AF*/ u8 unk160AF; - /*0x160B0*/ u8 unk160B0; + /*0x160B0*/ u8 unk160B0; /*0x160B1*/ u8 unk160B1; /*0x160B2*/ u8 unk160B2; /*0x160B3*/ u8 unk160B3; @@ -339,7 +339,7 @@ struct BattleStruct /* 0x2000000 */ /*0x160BD*/ u8 unk160BD; /*0x160BE*/ u8 unk160BE; /*0x160BF*/ u8 unk160BF; - /*0x160C0*/ u8 unk160C0; + /*0x160C0*/ u8 unk160C0; /*0x160C1*/ u8 unk160C1; /*0x160C2*/ u8 unk160C2; /*0x160C3*/ u8 unk160C3; @@ -381,25 +381,25 @@ struct DisableStruct struct BattleResults { - u8 PlayerFaintCounter; //0x0 - u8 OpponentFaintCounter; //0x1 - u8 unk2; //0x2 - u8 unk3; //0x3 - u8 unk4; //0x4 - u8 unk5_0:1; //0x5 - u8 unk5_1:1; //0x5 - u16 Poke1Species; //0x6 - u8 PokeString1[10]; //0x8 + u8 PlayerFaintCounter; // 0x0 + u8 OpponentFaintCounter; // 0x1 + u8 unk2; // 0x2 + u8 unk3; // 0x3 + u8 unk4; // 0x4 + u8 unk5_0:1; // 0x5 + u8 unk5_1:1; // 0x5 + u16 Poke1Species; // 0x6 + u8 PokeString1[10]; // 0x8 u8 unk12; - u8 BattleTurnCounter; //0x13 - u8 PokeString2[10]; //0x14 + u8 BattleTurnCounter; // 0x13 + u8 PokeString2[10]; // 0x14 u8 filler1E[2]; - u16 LastOpponentSpecies; //0x20 - u16 LastUsedMove; //0x22 - u16 OpponentMove; //0x24 - u16 OpponentSpecies; //0x26 - u16 CaughtPoke; //0x28 - u8 CaughtNick[10]; //0x2A + u16 LastOpponentSpecies; // 0x20 + u16 LastUsedMove; // 0x22 + u16 OpponentMove; // 0x24 + u16 OpponentSpecies; // 0x26 + u16 CaughtPoke; // 0x28 + u8 CaughtNick[10]; // 0x2A u8 filler34[2]; u8 unk36[10]; }; @@ -446,7 +446,7 @@ struct Struct2017840 struct ProtectStruct { - /*field0*/ + /*field0*/ u32 Protected:1; u32 Endured:1; u32 OnlyStruggle:1; @@ -455,7 +455,7 @@ struct ProtectStruct u32 StealMove:1; u32 Flag0Unknown:1; u32 PrlzImmobility:1; - /*field1*/ + /*field1*/ u32 ConfusionSelfDmg:1; u32 NotEffective:1; u32 ChargingTurn:1; @@ -463,24 +463,24 @@ struct ProtectStruct u32 UsedImprisionedMove:1; u32 LoveImmobility:1; u32 UsedDisabledMove:1; - /*field2*/ + /*field2*/ u32 UsedTauntedMove:1; u32 Flag2Unknown:1; u32 FlinchImmobility:1; u32 NotFirstStrike:1; - u32 Free : 4; - /*field3*/ - u32 field3 : 8; - u32 PhysicalDmg; - u32 SpecialDmg; - u8 PhysicalBank; - u8 SpecialBank; - u16 fieldE; + u32 Free : 4; + /*field3*/ + u32 field3 : 8; + u32 PhysicalDmg; + u32 SpecialDmg; + u8 PhysicalBank; + u8 SpecialBank; + u16 fieldE; }; struct SpecialStatus { - u8 statLowered : 1; + u8 statLowered : 1; u8 lightningRodRedirected : 1; u8 restoredBankSprite: 1; u8 intimidatedPoke : 1; @@ -495,7 +495,7 @@ struct SpecialStatus u8 moveturnPhysicalBank; u8 moveturnSpecialBank; u8 field12; - u8 field13; + u8 field13; }; struct sideTimer diff --git a/src/battle_2.c b/src/battle_2.c index 64df97f00..d08f2b8df 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -1654,7 +1654,7 @@ void sub_8010874(void) ewram160C9 = 6; ewram16113 = 0; for (i = 0; i < 11; i++) - gBattleResults.unk36[i] = 0; + gBattleResults.unk36[i] = 0; gBattleResults.BattleTurnCounter = 0; gBattleResults.PlayerFaintCounter = 0; gBattleResults.OpponentFaintCounter = 0; diff --git a/src/battle_ai.c b/src/battle_ai.c index b31df7ba0..9f95d23f3 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -139,100 +139,100 @@ typedef void (*BattleAICmdFunc)(void); static const BattleAICmdFunc sBattleAICmdTable[] = { - BattleAICmd_if_random_less_than, //0x0 - BattleAICmd_if_random_greater_than, //0x1 - BattleAICmd_if_random_equal, //0x2 - BattleAICmd_if_random_not_equal, //0x3 - BattleAICmd_score, //0x4 - BattleAICmd_if_hp_less_than, //0x5 - BattleAICmd_if_hp_more_than, //0x6 - BattleAICmd_if_hp_equal, //0x7 - BattleAICmd_if_hp_not_equal, //0x8 - BattleAICmd_if_status, //0x9 - BattleAICmd_if_not_status, //0xA - BattleAICmd_if_status2, //0xB - BattleAICmd_if_not_status2, //0xC - BattleAICmd_if_status3, //0xD - BattleAICmd_if_not_status3, //0xE - BattleAICmd_if_status4, //0xF - BattleAICmd_if_not_status4, //0x10 - BattleAICmd_if_less_than, //0x11 - BattleAICmd_if_more_than, //0x12 - BattleAICmd_if_equal, //0x13 - BattleAICmd_if_not_equal, //0x14 - BattleAICmd_if_less_than_32, //0x15 - BattleAICmd_if_more_than_32, //0x16 - BattleAICmd_if_equal_32, //0x17 - BattleAICmd_if_not_equal_32, //0x18 - BattleAICmd_if_move, //0x19 - BattleAICmd_if_not_move, //0x1A - BattleAICmd_if_in_bytes, //0x1B - BattleAICmd_if_not_in_bytes, //0x1C - BattleAICmd_if_in_words, //0x1D - BattleAICmd_if_not_in_words, //0x1E - BattleAICmd_if_user_can_damage, //0x1F - BattleAICmd_if_user_cant_damage, //0x20 - BattleAICmd_get_turn_count, //0x21 - BattleAICmd_get_type, //0x22 - BattleAICmd_get_move_power, //0x23 - BattleAICmd_is_most_powerful_move, //0x24 - BattleAICmd_get_move, //0x25 - BattleAICmd_if_arg_equal, //0x26 - BattleAICmd_if_arg_not_equal, //0x27 - BattleAICmd_if_would_go_first, //0x28 - BattleAICmd_if_would_not_go_first, //0x29 - BattleAICmd_nullsub_2A, //0x2A - BattleAICmd_nullsub_2B, //0x2B - BattleAICmd_count_alive_pokemon, //0x2C - BattleAICmd_get_considered_move, //0x2D - BattleAICmd_get_considered_move_effect, //0x2E - BattleAICmd_get_ability, //0x2F - BattleAICmd_get_highest_possible_damage, //0x30 - BattleAICmd_if_damage_bonus, //0x31 - BattleAICmd_nullsub_32, //0x32 - BattleAICmd_nullsub_33, //0x33 - BattleAICmd_if_status_in_party, //0x34 - BattleAICmd_if_status_not_in_party, //0x35 - BattleAICmd_get_weather, //0x36 - BattleAICmd_if_effect, //0x37 - BattleAICmd_if_not_effect, //0x38 - BattleAICmd_if_stat_level_less_than, //0x39 - BattleAICmd_if_stat_level_more_than, //0x3A - BattleAICmd_if_stat_level_equal, //0x3B - BattleAICmd_if_stat_level_not_equal, //0x3C - BattleAICmd_if_can_faint, //0x3D - BattleAICmd_if_cant_faint, //0x3E - BattleAICmd_if_has_move, //0x3F - BattleAICmd_if_dont_have_move, //0x40 - BattleAICmd_if_move_effect, //0x41 - BattleAICmd_if_not_move_effect, //0x42 - BattleAICmd_if_last_move_did_damage, //0x43 - BattleAICmd_if_encored, //0x44 - BattleAICmd_flee, //0x45 - BattleAICmd_if_random_100, //0x46 - BattleAICmd_watch, //0x47 - BattleAICmd_get_hold_effect, //0x48 - BattleAICmd_get_gender, //0x49 - BattleAICmd_is_first_turn, //0x4A - BattleAICmd_get_stockpile_count, //0x4B - BattleAICmd_is_double_battle, //0x4C - BattleAICmd_get_used_item, //0x4D - BattleAICmd_get_move_type_from_result, - BattleAICmd_get_move_power_from_result, - BattleAICmd_get_move_effect_from_result, - BattleAICmd_get_protect_count, - BattleAICmd_nullsub_52, - BattleAICmd_nullsub_53, - BattleAICmd_nullsub_54, - BattleAICmd_nullsub_55, - BattleAICmd_nullsub_56, - BattleAICmd_nullsub_57, - BattleAICmd_call, - BattleAICmd_jump, - BattleAICmd_end, - BattleAICmd_if_level_compare, - BattleAICmd_if_taunted, - BattleAICmd_if_not_taunted, + BattleAICmd_if_random_less_than, // 0x0 + BattleAICmd_if_random_greater_than, // 0x1 + BattleAICmd_if_random_equal, // 0x2 + BattleAICmd_if_random_not_equal, // 0x3 + BattleAICmd_score, // 0x4 + BattleAICmd_if_hp_less_than, // 0x5 + BattleAICmd_if_hp_more_than, // 0x6 + BattleAICmd_if_hp_equal, // 0x7 + BattleAICmd_if_hp_not_equal, // 0x8 + BattleAICmd_if_status, // 0x9 + BattleAICmd_if_not_status, // 0xA + BattleAICmd_if_status2, // 0xB + BattleAICmd_if_not_status2, // 0xC + BattleAICmd_if_status3, // 0xD + BattleAICmd_if_not_status3, // 0xE + BattleAICmd_if_status4, // 0xF + BattleAICmd_if_not_status4, // 0x10 + BattleAICmd_if_less_than, // 0x11 + BattleAICmd_if_more_than, // 0x12 + BattleAICmd_if_equal, // 0x13 + BattleAICmd_if_not_equal, // 0x14 + BattleAICmd_if_less_than_32, // 0x15 + BattleAICmd_if_more_than_32, // 0x16 + BattleAICmd_if_equal_32, // 0x17 + BattleAICmd_if_not_equal_32, // 0x18 + BattleAICmd_if_move, // 0x19 + BattleAICmd_if_not_move, // 0x1A + BattleAICmd_if_in_bytes, // 0x1B + BattleAICmd_if_not_in_bytes, // 0x1C + BattleAICmd_if_in_words, // 0x1D + BattleAICmd_if_not_in_words, // 0x1E + BattleAICmd_if_user_can_damage, // 0x1F + BattleAICmd_if_user_cant_damage, // 0x20 + BattleAICmd_get_turn_count, // 0x21 + BattleAICmd_get_type, // 0x22 + BattleAICmd_get_move_power, // 0x23 + BattleAICmd_is_most_powerful_move, // 0x24 + BattleAICmd_get_move, // 0x25 + BattleAICmd_if_arg_equal, // 0x26 + BattleAICmd_if_arg_not_equal, // 0x27 + BattleAICmd_if_would_go_first, // 0x28 + BattleAICmd_if_would_not_go_first, // 0x29 + BattleAICmd_nullsub_2A, // 0x2A + BattleAICmd_nullsub_2B, // 0x2B + BattleAICmd_count_alive_pokemon, // 0x2C + BattleAICmd_get_considered_move, // 0x2D + BattleAICmd_get_considered_move_effect, // 0x2E + BattleAICmd_get_ability, // 0x2F + BattleAICmd_get_highest_possible_damage, // 0x30 + BattleAICmd_if_damage_bonus, // 0x31 + BattleAICmd_nullsub_32, // 0x32 + BattleAICmd_nullsub_33, // 0x33 + BattleAICmd_if_status_in_party, // 0x34 + BattleAICmd_if_status_not_in_party, // 0x35 + BattleAICmd_get_weather, // 0x36 + BattleAICmd_if_effect, // 0x37 + BattleAICmd_if_not_effect, // 0x38 + BattleAICmd_if_stat_level_less_than, // 0x39 + BattleAICmd_if_stat_level_more_than, // 0x3A + BattleAICmd_if_stat_level_equal, // 0x3B + BattleAICmd_if_stat_level_not_equal, // 0x3C + BattleAICmd_if_can_faint, // 0x3D + BattleAICmd_if_cant_faint, // 0x3E + BattleAICmd_if_has_move, // 0x3F + BattleAICmd_if_dont_have_move, // 0x40 + BattleAICmd_if_move_effect, // 0x41 + BattleAICmd_if_not_move_effect, // 0x42 + BattleAICmd_if_last_move_did_damage, // 0x43 + BattleAICmd_if_encored, // 0x44 + BattleAICmd_flee, // 0x45 + BattleAICmd_if_random_100, // 0x46 + BattleAICmd_watch, // 0x47 + BattleAICmd_get_hold_effect, // 0x48 + BattleAICmd_get_gender, // 0x49 + BattleAICmd_is_first_turn, // 0x4A + BattleAICmd_get_stockpile_count, // 0x4B + BattleAICmd_is_double_battle, // 0x4C + BattleAICmd_get_used_item, // 0x4D + BattleAICmd_get_move_type_from_result, // 0x4E + BattleAICmd_get_move_power_from_result, // 0x4F + BattleAICmd_get_move_effect_from_result, // 0x50 + BattleAICmd_get_protect_count, // 0x51 + BattleAICmd_nullsub_52, // 0x52 + BattleAICmd_nullsub_53, // 0x53 + BattleAICmd_nullsub_54, // 0x54 + BattleAICmd_nullsub_55, // 0x55 + BattleAICmd_nullsub_56, // 0x56 + BattleAICmd_nullsub_57, // 0x57 + BattleAICmd_call, // 0x58 + BattleAICmd_jump, // 0x59 + BattleAICmd_end, // 0x5A + BattleAICmd_if_level_compare, // 0x5B + BattleAICmd_if_taunted, // 0x5C + BattleAICmd_if_not_taunted, // 0x5D }; #ifdef NONMATCHING -- cgit v1.2.3