summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTianmaru <tianmaru@gmail.com>2019-08-26 01:48:34 +0200
committerTianmaru <tianmaru@gmail.com>2019-08-26 01:48:34 +0200
commit17193df4b4157f50adf7fabbfe389ded72bbfd5d (patch)
tree7d046f568a5a2cc227777974035fe29b6dc667d7
parent15bb497c7dbaa83bfb809667083025b8deb87ac0 (diff)
Created How to add a new Pokémon species (markdown)
-rw-r--r--How-to-add-a-new-Pokémon-species.md1531
1 files changed, 1531 insertions, 0 deletions
diff --git a/How-to-add-a-new-Pokémon-species.md b/How-to-add-a-new-Pokémon-species.md
new file mode 100644
index 0000000..f2e7917
--- /dev/null
+++ b/How-to-add-a-new-Pokémon-species.md
@@ -0,0 +1,1531 @@
+# How to add a new Pokémon species
+Despite the persistent rumors about an incredibly strong third form of Mew hiding somewhere, it actually wasn't possible to catch it... OR WAS IT?
+In this tutorial, we will add a new Pokémon species to the game.
+
+## The Graphics
+We will start by copying the folder containing the sprites for Mewtwo and rename it to `mewthree` (pretty meta huh?):
+```sh
+cp -r graphics/pokemon/mewtwo graphics/pokemon/mewthree
+```
+## 1. Edit the sprites
+Let's edit the sprites. Start your favourite image editor (I have used GIMP) and change `anim_front.png`, `front.png` and `back.png` to meet your expectations.
+__Make sure that you are using the indexed mode and you have limited yourself to 14 colors!__
+Put the RGB values of your colors into `normal.pal` between the first and the last color and the RGB values for the shiny version into `shiny.pal`.
+Edit `footprint.png` using two colors in indexed mode, black and white.
+Finally, edit `icon.png`. Notice, that the icon will use one of three predefined palettes instead of `normal.pal`.
+
+## 2. Register the sprites
+Sadly, just putting the image files into the graphics folder is not enough. To use the sprites we have to register them, which is kind of tedious. First, create constants for the file paths.
+Edit [include/graphics.h](../blob/master/include/graphics.h):
+```diff
+ extern const u8 gMonFootprint_Chimecho[];
++extern const u32 gMonFrontPic_Mewthree[];
++extern const u32 gMonPalette_Mewthree[];
++extern const u32 gMonBackPic_Mewthree[];
++extern const u32 gMonShinyPalette_Mewthree[];
++extern const u32 gMonStillFrontPic_Mewthree[];
++extern const u8 gMonIcon_Mewthree[];
++extern const u8 gMonFootprint_Mewthree[];
+ extern const u32 gMonPic_Egg[];
+```
+
+Now link the graphic files.
+Edit [src/data/graphics/pokemon.h](../blob/master/src/data/graphics/pokemon.h):
+```diff
+ const u8 gMonFootprint_Chimecho[] = INCBIN_U8("graphics/pokemon/chimecho/footprint.1bpp");
+
++const u32 gMonStillFrontPic_Mewthree[] = INCBIN_U32("graphics/pokemon/mewthree/front.4bpp.lz");
++const u32 gMonPalette_Mewthree[] = INCBIN_U32("graphics/pokemon/mewthree/normal.gbapal.lz");
++const u32 gMonBackPic_Mewthree[] = INCBIN_U32("graphics/pokemon/mewthree/back.4bpp.lz");
++const u32 gMonShinyPalette_Mewthree[] = INCBIN_U32("graphics/pokemon/mewthree/shiny.gbapal.lz");
++const u8 gMonIcon_Mewthree[] = INCBIN_U8("graphics/pokemon/mewthree/icon.4bpp");
++const u8 gMonFootprint_Mewthree[] = INCBIN_U8("graphics/pokemon/mewthree/footprint.1bpp");
+
+ const u32 gMonStillFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/front.4bpp.lz");
+```
+
+The animated front picture is still missing.
+Edit [src/anim_mon_front_pics.c](../blob/master/src/anim_mon_front_pics.c):
+```diff
+ const u32 gMonFrontPic_Chimecho[] = INCBIN_U32("graphics/pokemon/chimecho/anim_front.4bpp.lz");
++const u32 gMonFrontPic_Mewthree[] = INCBIN_U32("graphics/pokemon/mewthree/anim_front.4bpp.lz");
+
+ const u32 gMonFrontPic_Egg[] = INCBIN_U32("graphics/pokemon/egg/anim_front.4bpp.lz");
+```
+
+## 3. Animate the sprites
+You can define the animation order, in which the sprites will be shown. The first number is the sprite index (so 0 or 1) and the second number is the number of frames the sprite will be visible.
+Edit [src/data/pokemon_graphics/front_pic_anims.h](../blob/master/src/data/pokemon_graphics/front_pic_anims.h):
+```diff
+ ...
+ static const union AnimCmd sAnim_CHIMECHO_1[] =
+ {
+ ANIMCMD_FRAME(0, 15),
+ ...
+ ANIMCMD_END,
+ };
+
++static const union AnimCmd sAnim_MEWTHREE_1[] =
++{
++ ANIMCMD_FRAME(1, 30),
++ ANIMCMD_FRAME(0, 20),
++ ANIMCMD_END,
++};
+
+ static const union AnimCmd sAnim_EGG_1[] =
+ {
+ ...
+
+ static const union AnimCmd *const sAnims_CHIMECHO[] ={
+ sAnim_GeneralFrame0,
+ sAnim_CHIMECHO_1,
+ };
+
++static const union AnimCmd *const sAnims_MEWTHREE[] ={
++ sAnim_GeneralFrame0,
++ sAnim_MEWTHREE_1,
++};
+
+ static const union AnimCmd *const sAnims_EGG[] ={
+ sAnim_GeneralFrame0,
+ sAnim_EGG_1,
+ };
+ ...
+ const union AnimCmd *const *const gMonFrontAnimsPtrTable[] =
+ {
+ ANIM_CMD(NONE),
+ ANIM_CMD(BULBASAUR),
+ ...
+ ANIM_CMD(CHIMECHO),
++ ANIM_CMD(MEWTHREE),
+ ANIM_CMD(EGG),
+ ...
+};
+```
+
+Because you are limited to two frames, there are already [predefined animations](#available-battle-animations), describing translations, rotations, scalings or color changes.
+Edit [src/pokemon_animation.c](../blob/master/src/pokemon_animation.c):
+```diff
+ static const u8 sSpeciesToBackAnimSet[] =
+ {
+ [SPECIES_BULBASAUR] = BACK_ANIM_DIP_RIGHT_SIDE,
+ ...
+ [SPECIES_CHIMECHO] = BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE,
++ [SPECIES_MEWTHREE] = BACK_ANIM_GROW_2,
+ };
+```
+
+If you want your Pokémon to fly above the ground, you can add an entry to `gEnemyMonElevation`.
+Edit [src/data/pokemon_graphics/enemy_mon_elevation.h](../blob/master/src/data/pokemon_graphics/enemy_mon_elevation.h):
+```diff
+ const u8 gEnemyMonElevation[NUM_SPECIES] =
+ {
+ [SPECIES_BUTTERFREE] = 8,
+ ...
+ [SPECIES_CHIMECHO] = 12,
++ [SPECIES_MEWTHREE] = 6,
+ };
+```
+
+## 4. Update the tables
+Edit [src/data/pokemon_graphics/front_pic_table.c](../blob/master/src/data/pokemon_graphics/front_pic_table.c):
+```diff
+ const struct CompressedSpriteSheet gMonFrontPicTable[] =
+ {
+ SPECIES_SPRITE(NONE, gMonFrontPic_CircledQuestionMark),
+ SPECIES_SPRITE(BULBASAUR, gMonFrontPic_Bulbasaur),
+ ...
+ SPECIES_SPRITE(CHIMECHO, gMonFrontPic_Chimecho),
++ SPECIES_SPRITE(MEWTHREE, gMonFrontPic_Mewthree),
+ SPECIES_SPRITE(EGG, gMonFrontPic_Egg),
+ ...
+};
+```
+
+Edit [src/data/pokemon_graphics/still_front_pic_table.c](../blob/master/src/data/pokemon_graphics/still_front_pic_table.c):
+```diff
+ const struct CompressedSpriteSheet gMonStillFrontPicTable[] =
+ {
+ SPECIES_SPRITE(NONE, gMonStillFrontPic_CircledQuestionMark),
+ SPECIES_SPRITE(BULBASAUR, gMonStillFrontPic_Bulbasaur),
+ ...
+ SPECIES_SPRITE(CHIMECHO, gMonStillFrontPic_Chimecho),
++ SPECIES_SPRITE(MEWTHREE, gMonStillFrontPic_Mewthree),
+ SPECIES_SPRITE(EGG, gMonStillFrontPic_Egg),
+ ...
+ };
+```
+
+Edit [src/data/pokemon_graphics/front_pic_coordinates.h](../blob/master/src/data/pokemon_graphics/front_pic_coordinates.h):
+```diff
+ const struct MonCoords gMonFrontPicCoords[] =
+ {
+ ...
+ [SPECIES_CHIMECHO] =
+ {
+ .size = 0x37,
+ .y_offset = 0x06,
+ },
++ [SPECIES_MEWTHREE] =
++ {
++ .size = 0x88,
++ .y_offset = 0x00,
++ },
+ [SPECIES_EGG] =
+ {
+ .size = 0x33,
+ .y_offset = 0x14,
+ },
+ ...
+ };
+```
+
+Edit [src/data/pokemon_graphics/back_pic_table.h](../blob/master/src/data/pokemon_graphics/back_pic_table.h):
+```diff
+ const struct CompressedSpriteSheet gMonBackPicTable[] =
+ {
+ SPECIES_SPRITE(NONE, gMonBackPic_CircledQuestionMark),
+ SPECIES_SPRITE(BULBASAUR, gMonBackPic_Bulbasaur),
+ ...
+ SPECIES_SPRITE(CHIMECHO, gMonBackPic_Chimecho),
++ SPECIES_SPRITE(MEWTHREE, gMonBackPic_Mewthree),
+ SPECIES_SPRITE(EGG, gMonStillFrontPic_Egg),
+ ...
+};
+```
+
+Edit [src/data/pokemon_graphics/back_pic_coordinates.h](../blob/master/src/data/pokemon_graphics/back_pic_coordinates.h):
+```diff
+ const struct MonCoords gMonBackPicCoords[] =
+ {
+ ...
+ [SPECIES_CHIMECHO] =
+ {
+ .size = 0x47,
+ .y_offset = 0x07,
+ },
++ [SPECIES_MEWTHREE] =
++ {
++ .size = 0x78,
++ .y_offset = 0x01,
++ },
+ [SPECIES_EGG] =
+ {
+ .size = 0x36,
+ .y_offset = 0x0a,
+ },
+ ...
+ };
+```
+
+Edit [src/data/pokemon_graphics/footprint_table.h](../blob/master/src/data/pokemon_graphics/footprint_table.h):
+```diff
+ const u8 *const gMonFootprintTable[] =
+ {
+ [SPECIES_NONE] = gMonFootprint_Bulbasaur,
+ [SPECIES_BULBASAUR] = gMonFootprint_Bulbasaur,
+ ...
+ [SPECIES_CHIMECHO] = gMonFootprint_Chimecho,
++ [SPECIES_MEWTHREE] = gMonFootprint_Mewthree,
+ [SPECIES_EGG] = gMonFootprint_Bulbasaur,
+ };
+```
+
+Edit [src/data/pokemon_graphics/palette_table.h](../blob/master/src/data/pokemon_graphics/palette_table.h):
+```diff
+ const struct CompressedSpritePalette gMonPaletteTable[] =
+ {
+ SPECIES_PAL(NONE, gMonPalette_CircledQuestionMark),
+ SPECIES_PAL(BULBASAUR, gMonPalette_Bulbasaur),
+ ...
+ SPECIES_PAL(CHIMECHO, gMonPalette_Chimecho),
++ SPECIES_PAL(MEWTHREE, gMonPalette_Mewthree),
+ SPECIES_PAL(EGG, gMonPalette_Egg),
+ ...
+};
+```
+
+Edit [src/data/pokemon_graphics/shiny_palette_table.h](../blob/master/src/data/pokemon_graphics/shiny_palette_table.h):
+```diff
+const struct CompressedSpritePalette gMonShinyPaletteTable[] =
+{
+ SPECIES_SHINY_PAL(NONE, gMonShinyPalette_CircledQuestionMark),
+ SPECIES_SHINY_PAL(BULBASAUR, gMonShinyPalette_Bulbasaur),
+ ...
+ SPECIES_SHINY_PAL(CHIMECHO, gMonShinyPalette_Chimecho),
++ SPECIES_SHINY_PAL(MEWTHREE, gMonShinyPalette_Mewthree),
+ SPECIES_SHINY_PAL(EGG, gMonPalette_Egg),
+ ...
+};
+```
+
+Edit [src/pokemon_icon.c](../blob/master/src/pokemon_icon.c):
+```diff
+ const u8 *const gMonIconTable[] =
+ {
+ [SPECIES_NONE] = gMonIcon_Bulbasaur,
+ ...
+ [SPECIES_CHIMECHO] = gMonIcon_Chimecho,
++ [SPECIES_MEWTHREE] = gMonIcon_Mewthree,
+ [SPECIES_EGG] = gMonIcon_Egg,
+ ...
+ [SPECIES_UNOWN_QMARK] = gMonIcon_UnownQuestionMark,
+ };
+
+ const u8 gMonIconPaletteIndices[] =
+ {
+ [SPECIES_NONE] = 0,
+ ...
+ [SPECIES_CHIMECHO] = 0,
++ [SPECIES_MEWTHREE] = 2,
+ [SPECIES_EGG] = 1,
+ ...
+ [SPECIES_UNOWN_QMARK] = 0,
+ };
+```
+
+## The Data
+Our plan is as simple as it is brilliant: clone Mewtwo... and make it even stronger!
+### 1. Declare a species constant
+Our first step towards creating a new digital lifeform is to define its own species constant.
+Edit [include/constants/species.h](../blob/master/include/constants/species.h):
+```diff
+ #ifndef GUARD_CONSTANTS_SPECIES_H
+ #define GUARD_CONSTANTS_SPECIES_H
+
+ #define SPECIES_NONE 0
+ #define SPECIES_BULBASAUR 1
+ ...
+ #define SPECIES_CHIMECHO 411
++#define SPECIES_MEWTHREE 412
+-#define SPECIES_EGG 412
++#define SPECIES_EGG 413
+
+-#define SPECIES_UNOWN_B 413
++#define SPECIES_UNOWN_B 414
+ ...
+-#define SPECIES_UNOWN_QMARK 439
++#define SPECIES_UNOWN_QMARK 440
+```
+Remember to increase the value of all species constants after Mewthree until SPECIES_UNOWN_QMARK by one.
+
+### 2. Devise a name
+This name will be displayed in the game. It may be different than the identifier of the species constant, especially when there are special characters involved.
+Edit [src/data/text/species_names.h](../blob/master/src/data/text/species_names.h):
+```diff
+ const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1] = {
+ [SPECIES_NONE] = _("??????????"),
+ [SPECIES_BULBASAUR] = _("BULBASAUR"),
+ ...
+ [SPECIES_CHIMECHO] = _("CHIMECHO"),
++ [SPECIES_MEWTHREE] = _("MEWTHREE"),
+ };
+```
+Apparently, the `_()` underscore function is from GNU gettext to translate the text into the system language, but since the translation files seem to be missing, I am not quite sure what it really does.
+
+## 3. Define its Pokédex entry
+First, we will need to add new index constants for its Pokédex entry. The index constants are divided into the Hoenn Pokédex, which contains all Pokémon native to the Hoenn region, and the national Pokédex containing all known Pokémon, which can be received after entering the hall of fame for the first time.
+Edit [include/constants/species.h](../blob/master/include/constants/species.h):
+```diff
+ // National Dex Index Defines
+
+ #define NATIONAL_DEX_NONE 0
+ #define NATIONAL_DEX_BULBASAUR 1
+ ...
+ #define NATIONAL_DEX_CELEBI 251
+
+-#define NATIONAL_DEX_OLD_UNOWN_B 387
++#define NATIONAL_DEX_OLD_UNOWN_B 388
+ ...
+-#define NATIONAL_DEX_OLD_UNOWN_Z 411
++#define NATIONAL_DEX_OLD_UNOWN_Z 412
+
+ #define NATIONAL_DEX_TREECKO 252
+ ...
+ #define NATIONAL_DEX_DEOXYS 386
+ #define NATIONAL_DEX_CHIMECHO 358
++#define NATIONAL_DEX_MEWTHREE 387
+
+ // Hoenn Dex Index Defines
+ #define HOENN_DEX_NONE 0
+ #define HOENN_DEX_BULBASAUR 203
+ ...
+ #define HOENN_DEX_CELEBI 386
++#define HOENN_DEX_MEWTHREE 387
+
+-#define HOENN_DEX_OLD_UNOWN_B 387
++#define HOENN_DEX_OLD_UNOWN_B 388
+ ...
+-#define HOENN_DEX_OLD_UNOWN_Z 411
++#define HOENN_DEX_OLD_UNOWN_Z 412
+```
+
+Edit [src/pokemon.c](../blob/master/src/pokemon.c):
+```diff
+ const u16 gSpeciesToHoennPokedexNum[] = // Assigns all species to the Hoenn Dex Index (Summary No. for Hoenn Dex)
+ {
+ SPECIES_TO_HOENN(BULBASAUR),
+ ...
+ SPECIES_TO_HOENN(CHIMECHO),
++ SPECIES_TO_HOENN(MEWTHREE),
+ };
+
+ const u16 gSpeciesToNationalPokedexNum[] = // Assigns all species to the National Dex Index (Summary No. for National Dex)
+ {
+ SPECIES_TO_NATIONAL(BULBASAUR),
+ ...
++ SPECIES_TO_NATIONAL(MEWTHREE),
+ };
+
+ const u16 gHoennToNationalOrder[] = // Assigns Hoenn Dex Pokémon (Using National Dex Index)
+ {
+ HOENN_TO_NATIONAL(TREECKO),
+ ...
+ HOENN_TO_NATIONAL(CELEBI),
++ HOENN_TO_NATIONAL(MEWTHREE),
+ HOENN_TO_NATIONAL(OLD_UNOWN_B),
+ ...
+ HOENN_TO_NATIONAL(OLD_UNOWN_Z),
+ };
+
+ ...
+ static const u8 sMonFrontAnimIdsTable[] =
+ {
+ [SPECIES_BULBASAUR - 1] = 0x06,
+ ...
+ [SPECIES_CHIMECHO - 1] = 0x1d,
++ [SPECIES_MEWTHREE - 1] = 0x09,
+ };
+```
+
+Now we can define the actual text of the Pokédex entry.
+Append to [src/data/pokemon/pokedex_text.h](../blob/master/src/data/pokemon/pokedex_text.h):
+```c
+const u8 gMewthreePokedexText[] = _(
+ "The rumors became true.\n"
+ "This is Mews final form.\n"
+ "Its power level is over 9000.\n"
+ "Has science gone too far?");
+```
+
+Finally, we will add the Pokédex entry for Mewthree and link the text to it.
+Edit [src/data/pokemon/pokedex_entries.h](../blob/master/src/data/pokemon/pokedex_entries.h):
+```diff
+ const struct PokedexEntry gPokedexEntries[] =
+ {
+ ...
+ [NATIONAL_DEX_DEOXYS] =
+ {
+ .categoryName = _("DNA"),
+ .height = 17,
+ .weight = 608,
+ .description = gDeoxysPokedexText,
+ .pokemonScale = 256,
+ .pokemonOffset = 0,
+ .trainerScale = 290,
+ .trainerOffset = 2,
+ },
+
++ [NATIONAL_DEX_MEWTHREE] =
++ {
++ .categoryName = _("NEW SPECIES"),
++ .height = 15,
++ .weight = 330,
++ .description = gMewthreePokedexText,
++ .pokemonScale = 256,
++ .pokemonOffset = 0,
++ .trainerScale = 290,
++ .trainerOffset = 2,
++ },
+ };
+```
+
+The values `pokemonScale`, `pokemonOffset`, `trainerScale` and `trainerOffset` are used for the height comparison figure in the Pokédex. Height and weight are specified in meters and kilograms respectively, while the last digit is the first decimal place.
+In Pokémon Emerald, you can sort the Pokédex by name, height or weight. Apparently, the Pokémon order is hardcoded in the game files and not calculated from their data. Therefore we have to include our new Pokémon species at the right places. While the correct position for the alphabetical order is easy to find, it can become quite tedious for height and weight. To find the right position for your Pokémon, you may look at the tables sorted by [height](#pokémon-ordered-by-height) and [weight](#pokémon-ordered-by-weight) respectively in the appendix.
+Edit [src/data/pokemon/pokedex_orders.h](../blob/master/src/data/pokemon/pokedex_orders.h):
+```diff
+ const u16 gPokedexOrder_Alphabetical[] =
+ {
+ ...
+ NATIONAL_DEX_MEW,
++ NATIONAL_DEX_MEWTHREE,
+ NATIONAL_DEX_MEWTWO,
+ ...
+ };
+
+ const u16 gPokedexOrder_Weight[] =
+ {
+ ...
+ NATIONAL_DEX_CRAWDAUNT,
++ NATIONAL_DEX_MEWTHREE,
+ NATIONAL_DEX_DUGTRIO,
+ ...
+ };
+
+ const u16 gPokedexOrder_Height[] =
+ {
+ ...
+ NATIONAL_DEX_XATU,
++ NATIONAL_DEX_MEWTHREE,
+ NATIONAL_DEX_CRADILY,
+ ...
+ };
+```
+
+## 4. Define its base stats
+Edit [src/data/pokemon/base_stats.h](../blob/master/src/data/pokemon/base_stats.h):
+```diff
+ const struct BaseStats gBaseStats[] =
+ {
+ [SPECIES_NONE] = {0},
+ ...
++ [SPECIES_MEWTHREE] =
++ {
++ .baseHP = 106,
++ .baseAttack = 150,
++ .baseDefense = 70,
++ .baseSpeed = 140,
++ .baseSpAttack = 194,
++ .baseSpDefense = 120,
++ .type1 = TYPE_PSYCHIC,
++ .type2 = TYPE_PSYCHIC,
++ .catchRate = 3,
++ .expYield = 255,
++ .evYield_HP = 0,
++ .evYield_Attack = 0,
++ .evYield_Defense = 0,
++ .evYield_Speed = 0,
++ .evYield_SpAttack = 3,
++ .evYield_SpDefense = 0,
++ .item1 = ITEM_NONE,
++ .item2 = ITEM_NONE,
++ .genderRatio = MON_GENDERLESS,
++ .eggCycles = 120,
++ .friendship = 0,
++ .growthRate = GROWTH_SLOW,
++ .eggGroup1 = EGG_GROUP_UNDISCOVERED,
++ .eggGroup2 = EGG_GROUP_UNDISCOVERED,
++ .abilities = {ABILITY_INSOMNIA, ABILITY_NONE},
++ .safariZoneFleeRate = 0,
++ .bodyColor = BODY_COLOR_PURPLE,
++ .noFlip = FALSE,
++ },
+ };
+```
+The `.` is the structure reference operator in C to refer to the member object of the structure BaseStats.
+Notice how I also changed the ability to `ABILITY_INSOMNIA`, so our little monster doesn't even need to sleep anymore. You can find the abilities for example here [include/constants/abilities.h](../blob/master/include/constants/abilities.h) and here [src/data/text/abilities.h](../blob/master/src/data/text/abilities.h).
+
+## 5. Delimit the moveset
+Let's begin with the moves that can be learned by leveling up.
+Append to [src/data/pokemon/level_up_learnsets.h](../blob/master/src/data/pokemon/level_up_learnsets.h):
+```c
+static const u16 sMewthreeLevelUpLearnset[] = {
+ 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
+};
+```
+
+Again, we need to register the learnset.
+Edit [src/data/pokemon/level_up_learnsets_pointers.h](../blob/master/src/data/pokemon/level_up_learnsets_pointers.h):
+```diff
+ const u16 *const gLevelUpLearnsets[NUM_SPECIES] =
+ {
+ [SPECIES_NONE] = sBulbasaurLevelUpLearnset,
+ [SPECIES_BULBASAUR] = sBulbasaurLevelUpLearnset,
+ ...
+ [SPECIES_CHIMECHO] = sChimechoLevelUpLearnset,
++ [SPECIES_MEWTHREE] = sMewthreeLevelUpLearnset,
+ };
+```
+
+Edit [src/data/pokemon/tmhm_learnsets.h](../blob/master/src/data/pokemon/tmhm_learnsets.h):
+```diff
+ const u32 gTMHMLearnsets[][2] =
+ {
+ [SPECIES_NONE] = TMHM_LEARNSET(0),
+ ...
+ [SPECIES_CHIMECHO] = TMHM_LEARNSET(TMHM(TM04_CALM_MIND)
+ ...
+ | TMHM(HM05_FLASH)),
+
++ [SPECIES_MEWTHREE] = TMHM_LEARNSET(TMHM(TM01_FOCUS_PUNCH)
++ | TMHM(TM03_WATER_PULSE)
++ | TMHM(TM04_CALM_MIND)
++ | TMHM(TM06_TOXIC)
++ | TMHM(TM07_HAIL)
++ | TMHM(TM08_BULK_UP)
++ | TMHM(TM10_HIDDEN_POWER)
++ | TMHM(TM11_SUNNY_DAY)
++ | TMHM(TM12_TAUNT)
++ | TMHM(TM13_ICE_BEAM)
++ | TMHM(TM14_BLIZZARD)
++ | TMHM(TM15_HYPER_BEAM)
++ | TMHM(TM16_LIGHT_SCREEN)
++ | TMHM(TM17_PROTECT)
++ | TMHM(TM18_RAIN_DANCE)
++ | TMHM(TM20_SAFEGUARD)
++ | TMHM(TM21_FRUSTRATION)
++ | TMHM(TM22_SOLARBEAM)
++ | TMHM(TM23_IRON_TAIL)
++ | TMHM(TM24_THUNDERBOLT)
++ | TMHM(TM25_THUNDER)
++ | TMHM(TM26_EARTHQUAKE)
++ | TMHM(TM27_RETURN)
++ | TMHM(TM29_PSYCHIC)
++ | TMHM(TM30_SHADOW_BALL)
++ | TMHM(TM31_BRICK_BREAK)
++ | TMHM(TM32_DOUBLE_TEAM)
++ | TMHM(TM33_REFLECT)
++ | TMHM(TM34_SHOCK_WAVE)
++ | TMHM(TM35_FLAMETHROWER)
++ | TMHM(TM37_SANDSTORM)
++ | TMHM(TM38_FIRE_BLAST)
++ | TMHM(TM39_ROCK_TOMB)
++ | TMHM(TM40_AERIAL_ACE)
++ | TMHM(TM41_TORMENT)
++ | TMHM(TM42_FACADE)
++ | TMHM(TM43_SECRET_POWER)
++ | TMHM(TM44_REST)
++ | TMHM(TM48_SKILL_SWAP)
++ | TMHM(TM49_SNATCH)
++ | TMHM(HM04_STRENGTH)
++ | TMHM(HM05_FLASH)
++ | TMHM(HM06_ROCK_SMASH)),
+ };
+```
+
+Edit [src/data/pokemon/tutor_learnsets.h](../blob/master/src/data/pokemon/tutor_learnsets.h):
+```diff
+ static const u32 sTutorLearnsets[] =
+ {
+ [SPECIES_NONE] = TUTOR_LEARNSET(0),
+ ...
+ [SPECIES_CHIMECHO] = TUTOR_LEARNSET(TUTOR(MOVE_DOUBLE_EDGE)
+ ...
+ | TUTOR(MOVE_DEFENSE_CURL)),
+
++ [SPECIES_MEWTHREE] = TUTOR_LEARNSET(TUTOR(MOVE_MEGA_PUNCH)
++ | TUTOR(MOVE_MEGA_KICK)
++ | TUTOR(MOVE_BODY_SLAM)
++ | TUTOR(MOVE_DOUBLE_EDGE)
++ | TUTOR(MOVE_COUNTER)
++ | TUTOR(MOVE_SEISMIC_TOSS)
++ | TUTOR(MOVE_MIMIC)
++ | TUTOR(MOVE_METRONOME)
++ | TUTOR(MOVE_DREAM_EATER)
++ | TUTOR(MOVE_THUNDER_WAVE)
++ | TUTOR(MOVE_SUBSTITUTE)
++ | TUTOR(MOVE_DYNAMIC_PUNCH)
++ | TUTOR(MOVE_PSYCH_UP)
++ | TUTOR(MOVE_SNORE)
++ | TUTOR(MOVE_ICY_WIND)
++ | TUTOR(MOVE_ENDURE)
++ | TUTOR(MOVE_MUD_SLAP)
++ | TUTOR(MOVE_ICE_PUNCH)
++ | TUTOR(MOVE_SWAGGER)
++ | TUTOR(MOVE_SLEEP_TALK)
++ | TUTOR(MOVE_SWIFT)
++ | TUTOR(MOVE_THUNDER_PUNCH)
++ | TUTOR(MOVE_FIRE_PUNCH)),
+ };
+```
+
+If you want to create a Pokémon which can breed, you will need to edit [src/data/pokemon/egg_moves.h](../blob/master/src/data/pokemon/egg_moves.h).
+
+## 6. Define its cry
+```sh
+cp sound/direct_sound_samples/cry_mewtwo.bin sound/direct_sound_samples/cry_mewthree.bin
+cp sound/direct_sound_samples/cry_mewtwo.aif sound/direct_sound_samples/cry_mewthree.aif
+```
+
+Edit [src/data/pokemon/cry_ids.h](../blob/master/src/data/pokemon/cry_ids.h):
+```diff
+ const u16 gSpeciesIdToCryId[] =
+ {
+ [SPECIES_TREECKO - 277] = 273,
+ ...
+ [SPECIES_CHIMECHO - 277] = 387,
++ [SPECIES_MEWTHREE - 277] = 388,
+ };
+```
+
+## 7. Define the Evolutions
+We want Mewthree to evolve from Mewtwo by reaching level 100.
+Edit [src/data/pokemon/evolution.h](../blob/master/src/data/pokemon/evolution.h):
+```diff
+ [SPECIES_METANG] = {{EVO_LEVEL, 45, SPECIES_METAGROSS}},
++ [SPECIES_MEWTWO] = {{EVO_LEVEL, 100, SPECIES_MEWTHREE}},
+ };
+```
+
+## 8. Easy Chat about your Pokémon
+Edit [src/data/easy_chat/easy_chat_words_by_letter.h](../blob/master/src/data/easy_chat/easy_chat_words_by_letter.h):
+```diff
+ const u16 gEasyChatWordsByLetter_M[] = {
+ EC_MOVE2(MACH_PUNCH),
+ ...
+ EC_POKEMON2(MEW),
++ EC_POKEMON2(MEWTHREE),
+ EC_POKEMON2(MEWTWO),
+ ...
+ EC_WORD_MYSTERY,
+ };
+```
+
+## 9. Make it appear!
+Now Mewthree really does slumber in the games code - but we won't know until we make him appear somewhere! The legend tells that Mewthree is hiding somewhere in Petalburg Woods...
+Edit [src/data/wild_encounters.json](../blob/master/src/data/wild_encounters.json):
+```diff
+ {
+ "map": "MAP_PETALBURG_WOODS",
+ "base_label": "gPetalburgWoods",
+ "land_mons": {
+ "encounter_rate": 20,
+ "mons": [
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_POOCHYENA"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_WURMPLE"
+ },
+ {
+ "min_level": 5,
+ "max_level": 5,
+ "species": "SPECIES_SHROOMISH"
+ },
+ {
+- "min_level": 6,
+- "max_level": 6,
+- "species": "SPECIES_POOCHYENA"
++ "min_level": 5,
++ "max_level": 5,
++ "species": "SPECIES_MEWTHREE"
+ },
+ ...
+ }
+```
+
+Congratulations, you have created your own personal pocket monster! You may call yourself a mad scientist now.
+
+## Appendix
+### Available Battle Animations
+1. BACK_ANIM_NONE
+2. BACK_ANIM_H_SLIDE_QUICK
+3. BACK_ANIM_H_SLIDE
+4. BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_1
+5. BACK_ANIM_H_SLIDE_WITH_V_COMPRESS_2
+6. BACK_ANIM_SHRINK_GROW_1
+7. BACK_ANIM_GROW_1
+8. BACK_ANIM_CIRCLE_MOVE_COUNTERCLOCKWISE
+9. BACK_ANIM_HORIZONTAL_SHAKE
+10. BACK_ANIM_VERTICAL_SHAKE
+11. BACK_ANIM_V_SHAKE_WITH_H_SLIDE
+12. BACK_ANIM_VERTICAL_STRETCH
+13. BACK_ANIM_HORIZONTAL_STRETCH
+14. BACK_ANIM_GROW_2
+15. BACK_ANIM_V_SHAKE_WITH_PAUSE
+16. BACK_ANIM_CIRCLE_MOVE_CLOCKWISE
+17. BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_SMALL
+18. BACK_ANIM_CONCAVE_DOWN_ARC_SWAY_LARGE
+19. BACK_ANIM_CONCAVE_UP_ARC_SWAY_LARGE
+20. BACK_ANIM_DIP_RIGHT_SIDE
+21. BACK_ANIM_SHRINK_GROW_2
+22. BACK_ANIM_JOLT_RIGHT
+23. BACK_ANIM_FLASH_YELLOW_WITH_SHAKE
+24. BACK_ANIM_FADE_RED_WITH_SHAKE
+25. BACK_ANIM_FADE_GREEN_WITH_SHAKE
+26. BACK_ANIM_FADE_BLUE_WITH_SHAKE
+
+### Pokémon ordered by height
+| Pokemon | height (m) |
+| :------ | ---------: |
+| Diglett | 0.2 |
+| Natu | 0.2 |
+| Azurill | 0.2 |
+| Caterpie | 0.3 |
+| Weedle | 0.3 |
+| Pidgey | 0.3 |
+| Rattata | 0.3 |
+| Spearow | 0.3 |
+| Paras | 0.3 |
+| Magnemite | 0.3 |
+| Shellder | 0.3 |
+| Ditto | 0.3 |
+| Eevee | 0.3 |
+| Pichu | 0.3 |
+| Cleffa | 0.3 |
+| Igglybuff | 0.3 |
+| Togepi | 0.3 |
+| Sunkern | 0.3 |
+| Wurmple | 0.3 |
+| Taillow | 0.3 |
+| Roselia | 0.3 |
+| Castform | 0.3 |
+| Jirachi | 0.3 |
+| Pikachu | 0.4 |
+| Nidoran_f | 0.4 |
+| Meowth | 0.4 |
+| Geodude | 0.4 |
+| Krabby | 0.4 |
+| Exeggcute | 0.4 |
+| Cubone | 0.4 |
+| Horsea | 0.4 |
+| Omanyte | 0.4 |
+| Mew | 0.4 |
+| Bellossom | 0.4 |
+| Marill | 0.4 |
+| Hoppip | 0.4 |
+| Wooper | 0.4 |
+| Swinub | 0.4 |
+| Smoochum | 0.4 |
+| Torchic | 0.4 |
+| Mudkip | 0.4 |
+| Zigzagoon | 0.4 |
+| Ralts | 0.4 |
+| Shroomish | 0.4 |
+| Aron | 0.4 |
+| Plusle | 0.4 |
+| Minun | 0.4 |
+| Gulpin | 0.4 |
+| Cacnea | 0.4 |
+| Swablu | 0.4 |
+| Barboach | 0.4 |
+| Clamperl | 0.4 |
+| Squirtle | 0.5 |
+| Nidoran_m | 0.5 |
+| Jigglypuff | 0.5 |
+| Oddish | 0.5 |
+| Mankey | 0.5 |
+| Voltorb | 0.5 |
+| Kabuto | 0.5 |
+| Cyndaquil | 0.5 |
+| Spinarak | 0.5 |
+| Chinchou | 0.5 |
+| Murkrow | 0.5 |
+| Unown | 0.5 |
+| Qwilfish | 0.5 |
+| Phanpy | 0.5 |
+| Treecko | 0.5 |
+| Poochyena | 0.5 |
+| Linoone | 0.5 |
+| Lotad | 0.5 |
+| Seedot | 0.5 |
+| Surskit | 0.5 |
+| Nincada | 0.5 |
+| Sableye | 0.5 |
+| Torkoal | 0.5 |
+| Baltoy | 0.5 |
+| Charmander | 0.6 |
+| Kakuna | 0.6 |
+| Sandshrew | 0.6 |
+| Clefairy | 0.6 |
+| Vulpix | 0.6 |
+| Poliwag | 0.6 |
+| Koffing | 0.6 |
+| Goldeen | 0.6 |
+| Totodile | 0.6 |
+| Togetic | 0.6 |
+| Mareep | 0.6 |
+| Skiploom | 0.6 |
+| Pineco | 0.6 |
+| Snubbull | 0.6 |
+| Shuckle | 0.6 |
+| Teddiursa | 0.6 |
+| Corsola | 0.6 |
+| Remoraid | 0.6 |
+| Houndour | 0.6 |
+| Porygon2 | 0.6 |
+| Elekid | 0.6 |
+| Larvitar | 0.6 |
+| Celebi | 0.6 |
+| Silcoon | 0.6 |
+| Wingull | 0.6 |
+| Whismur | 0.6 |
+| Skitty | 0.6 |
+| Mawile | 0.6 |
+| Meditite | 0.6 |
+| Electrike | 0.6 |
+| Illumise | 0.6 |
+| Corphish | 0.6 |
+| Feebas | 0.6 |
+| Shuppet | 0.6 |
+| Chimecho | 0.6 |
+| Wynaut | 0.6 |
+| Luvdisc | 0.6 |
+| Bagon | 0.6 |
+| Beldum | 0.6 |
+| Bulbasaur | 0.7 |
+| Metapod | 0.7 |
+| Raticate | 0.7 |
+| Dugtrio | 0.7 |
+| Growlithe | 0.7 |
+| Bellsprout | 0.7 |
+| Hoothoot | 0.7 |
+| Misdreavus | 0.7 |
+| Slugma | 0.7 |
+| Tyrogue | 0.7 |
+| Magby | 0.7 |
+| Marshtomp | 0.7 |
+| Cascoon | 0.7 |
+| Swellow | 0.7 |
+| Volbeat | 0.7 |
+| Numel | 0.7 |
+| Spoink | 0.7 |
+| Trapinch | 0.7 |
+| Anorith | 0.7 |
+| Snorunt | 0.7 |
+| Raichu | 0.8 |
+| Nidorina | 0.8 |
+| Zubat | 0.8 |
+| Gloom | 0.8 |
+| Psyduck | 0.8 |
+| Machop | 0.8 |
+| Farfetchd | 0.8 |
+| Staryu | 0.8 |
+| Jolteon | 0.8 |
+| Porygon | 0.8 |
+| Sentret | 0.8 |
+| Flaaffy | 0.8 |
+| Azumarill | 0.8 |
+| Jumpluff | 0.8 |
+| Aipom | 0.8 |
+| Sunflora | 0.8 |
+| Magcargo | 0.8 |
+| Kirlia | 0.8 |
+| Masquerain | 0.8 |
+| Slakoth | 0.8 |
+| Ninjask | 0.8 |
+| Shedinja | 0.8 |
+| Carvanha | 0.8 |
+| Duskull | 0.8 |
+| Spheal | 0.8 |
+| Nidorino | 0.9 |
+| Abra | 0.9 |
+| Tentacool | 0.9 |
+| Grimer | 0.9 |
+| Magikarp | 0.9 |
+| Flareon | 0.9 |
+| Chikorita | 0.9 |
+| Quilava | 0.9 |
+| Espeon | 0.9 |
+| Sneasel | 0.9 |
+| Octillery | 0.9 |
+| Delibird | 0.9 |
+| Grovyle | 0.9 |
+| Combusken | 0.9 |
+| Lairon | 0.9 |
+| Grumpig | 0.9 |
+| Whiscash | 0.9 |
+| Ivysaur | 1.0 |
+| Wartortle | 1.0 |
+| Beedrill | 1.0 |
+| Sandslash | 1.0 |
+| Wigglytuff | 1.0 |
+| Parasect | 1.0 |
+| Venonat | 1.0 |
+| Persian | 1.0 |
+| Primeape | 1.0 |
+| Poliwhirl | 1.0 |
+| Weepinbell | 1.0 |
+| Graveler | 1.0 |
+| Ponyta | 1.0 |
+| Magneton | 1.0 |
+| Drowzee | 1.0 |
+| Marowak | 1.0 |
+| Rhyhorn | 1.0 |
+| Tangela | 1.0 |
+| Vaporeon | 1.0 |
+| Omastar | 1.0 |
+| Ledyba | 1.0 |
+| Umbreon | 1.0 |
+| Mightyena | 1.0 |
+| Beautifly | 1.0 |
+| Nuzleaf | 1.0 |
+| Loudred | 1.0 |
+| Makuhita | 1.0 |
+| Nosepass | 1.0 |
+| Lunatone | 1.0 |
+| Lileep | 1.0 |
+| Kecleon | 1.0 |
+| Relicanth | 1.0 |
+| Charmeleon | 1.1 |
+| Butterfree | 1.1 |
+| Pidgeotto | 1.1 |
+| Ninetales | 1.1 |
+| Seel | 1.1 |
+| Chansey | 1.1 |
+| Starmie | 1.1 |
+| Electabuzz | 1.1 |
+| Croconaw | 1.1 |
+| Ariados | 1.1 |
+| Politoed | 1.1 |
+| Gligar | 1.1 |
+| Piloswine | 1.1 |
+| Donphan | 1.1 |
+| Delcatty | 1.1 |
+| Spinda | 1.1 |
+| Vibrava | 1.1 |
+| Altaria | 1.1 |
+| Crawdaunt | 1.1 |
+| Banette | 1.1 |
+| Sealeo | 1.1 |
+| Shelgon | 1.1 |
+| Fearow | 1.2 |
+| Vileplume | 1.2 |
+| Slowpoke | 1.2 |
+| Muk | 1.2 |
+| Electrode | 1.2 |
+| Lickitung | 1.2 |
+| Weezing | 1.2 |
+| Seadra | 1.2 |
+| Bayleef | 1.2 |
+| Lanturn | 1.2 |
+| Sudowoodo | 1.2 |
+| Yanma | 1.2 |
+| Forretress | 1.2 |
+| Smeargle | 1.2 |
+| Miltank | 1.2 |
+| Pupitar | 1.2 |
+| Dustox | 1.2 |
+| Lombre | 1.2 |
+| Pelipper | 1.2 |
+| Breloom | 1.2 |
+| Solrock | 1.2 |
+| Absol | 1.2 |
+| Metang | 1.2 |
+| Nidoqueen | 1.3 |
+| Clefable | 1.3 |
+| Poliwrath | 1.3 |
+| Kadabra | 1.3 |
+| Gastly | 1.3 |
+| Kingler | 1.3 |
+| Seaking | 1.3 |
+| Mr_mime | 1.3 |
+| Magmar | 1.3 |
+| Kabutops | 1.3 |
+| Wobbuffet | 1.3 |
+| Shiftry | 1.3 |
+| Medicham | 1.3 |
+| Cacturne | 1.3 |
+| Zangoose | 1.3 |
+| Nidoking | 1.4 |
+| Golem | 1.4 |
+| Doduo | 1.4 |
+| Hitmonchan | 1.4 |
+| Jynx | 1.4 |
+| Tauros | 1.4 |
+| Ledian | 1.4 |
+| Ampharos | 1.4 |
+| Quagsire | 1.4 |
+| Granbull | 1.4 |
+| Houndoom | 1.4 |
+| Stantler | 1.4 |
+| Hitmontop | 1.4 |
+| Vigoroth | 1.4 |
+| Walrein | 1.4 |
+| Latias | 1.4 |
+| Pidgeot | 1.5 |
+| Venomoth | 1.5 |
+| Alakazam | 1.5 |
+| Machoke | 1.5 |
+| Cloyster | 1.5 |
+| Gengar | 1.5 |
+| Hitmonlee | 1.5 |
+| Scyther | 1.5 |
+| Pinsir | 1.5 |
+| Xatu | 1.5 |
+| Girafarig | 1.5 |
+| Dunsparce | 1.5 |
+| Heracross | 1.5 |
+| Blissey | 1.5 |
+| Swampert | 1.5 |
+| Ludicolo | 1.5 |
+| Exploud | 1.5 |
+| Manectric | 1.5 |
+| Claydol | 1.5 |
+| Cradily | 1.5 |
+| Armaldo | 1.5 |
+| Glalie | 1.5 |
+| Salamence | 1.5 |
+| Blastoise | 1.6 |
+| Golbat | 1.6 |
+| Machamp | 1.6 |
+| Tentacruel | 1.6 |
+| Slowbro | 1.6 |
+| Haunter | 1.6 |
+| Hypno | 1.6 |
+| Zapdos | 1.6 |
+| Noctowl | 1.6 |
+| Gardevoir | 1.6 |
+| Dusclops | 1.6 |
+| Metagross | 1.6 |
+| Charizard | 1.7 |
+| Golduck | 1.7 |
+| Victreebel | 1.7 |
+| Rapidash | 1.7 |
+| Dewgong | 1.7 |
+| Articuno | 1.7 |
+| Typhlosion | 1.7 |
+| Skarmory | 1.7 |
+| Sceptile | 1.7 |
+| Swalot | 1.7 |
+| Huntail | 1.7 |
+| Regirock | 1.7 |
+| Deoxys | 1.7 |
+| Dodrio | 1.8 |
+| Aerodactyl | 1.8 |
+| Dratini | 1.8 |
+| Meganium | 1.8 |
+| Furret | 1.8 |
+| Crobat | 1.8 |
+| Scizor | 1.8 |
+| Ursaring | 1.8 |
+| Kingdra | 1.8 |
+| Sharpedo | 1.8 |
+| Gorebyss | 1.8 |
+| Regice | 1.8 |
+| Arcanine | 1.9 |
+| Rhydon | 1.9 |
+| Raikou | 1.9 |
+| Blaziken | 1.9 |
+| Camerupt | 1.9 |
+| Registeel | 1.9 |
+| Venusaur | 2.0 |
+| Ekans | 2.0 |
+| Exeggutor | 2.0 |
+| Moltres | 2.0 |
+| Mewtwo | 2.0 |
+| Slowking | 2.0 |
+| Suicune | 2.0 |
+| Tyranitar | 2.0 |
+| Slaking | 2.0 |
+| Wailmer | 2.0 |
+| Flygon | 2.0 |
+| Tropius | 2.0 |
+| Latios | 2.0 |
+| Snorlax | 2.1 |
+| Mantine | 2.1 |
+| Entei | 2.1 |
+| Aggron | 2.1 |
+| Kangaskhan | 2.2 |
+| Dragonite | 2.2 |
+| Feraligatr | 2.3 |
+| Hariyama | 2.3 |
+| Lapras | 2.5 |
+| Seviper | 2.7 |
+| Arbok | 3.5 |
+| Groudon | 3.5 |
+| Ho_oh | 3.8 |
+| Dragonair | 4.0 |
+| Kyogre | 4.5 |
+| Lugia | 5.2 |
+| Milotic | 6.2 |
+| Gyarados | 6.5 |
+| Rayquaza | 7.0 |
+| Onix | 8.8 |
+| Steelix | 9.2 |
+| Wailord | 14.5 |
+
+### Pokémon ordered by weight
+| Pokemon | weight (kg) |
+| :------ | ----------: |
+| Gastly | 0.1 |
+| Haunter | 0.1 |
+| Hoppip | 0.5 |
+| Diglett | 0.8 |
+| Castform | 0.8 |
+| Igglybuff | 1.0 |
+| Koffing | 1.0 |
+| Skiploom | 1.0 |
+| Chimecho | 1.0 |
+| Misdreavus | 1.0 |
+| Jirachi | 1.1 |
+| Swablu | 1.2 |
+| Shedinja | 1.2 |
+| Togepi | 1.5 |
+| Surskit | 1.7 |
+| Pidgey | 1.8 |
+| Sunkern | 1.8 |
+| Barboach | 1.9 |
+| Natu | 2.0 |
+| Azurill | 2.0 |
+| Spearow | 2.0 |
+| Pichu | 2.0 |
+| Roselia | 2.0 |
+| Murkrow | 2.1 |
+| Taillow | 2.3 |
+| Shuppet | 2.3 |
+| Exeggcute | 2.5 |
+| Torchic | 2.5 |
+| Lotad | 2.6 |
+| Caterpie | 2.9 |
+| Cleffa | 3.0 |
+| Jumpluff | 3.0 |
+| Weedle | 3.2 |
+| Togetic | 3.2 |
+| Dratini | 3.3 |
+| Rattata | 3.5 |
+| Wurmple | 3.6 |
+| Masquerain | 3.6 |
+| Qwilfish | 3.9 |
+| Shellder | 4.0 |
+| Ditto | 4.0 |
+| Mew | 4.0 |
+| Seedot | 4.0 |
+| Bellsprout | 4.0 |
+| Meowth | 4.2 |
+| Plusle | 4.2 |
+| Minun | 4.2 |
+| Shroomish | 4.5 |
+| Unown | 5.0 |
+| Treecko | 5.0 |
+| Corsola | 5.0 |
+| Celebi | 5.0 |
+| Spinda | 5.0 |
+| Paras | 5.4 |
+| Oddish | 5.4 |
+| Jigglypuff | 5.5 |
+| Nincada | 5.5 |
+| Bellossom | 5.8 |
+| Magnemite | 6.0 |
+| Pikachu | 6.0 |
+| Smoochum | 6.0 |
+| Sentret | 6.0 |
+| Chikorita | 6.4 |
+| Weepinbell | 6.4 |
+| Eevee | 6.5 |
+| Krabby | 6.5 |
+| Cubone | 6.5 |
+| Swinub | 6.5 |
+| Ralts | 6.6 |
+| Bulbasaur | 6.9 |
+| Ekans | 6.9 |
+| Nidoran_f | 7.0 |
+| Pineco | 7.2 |
+| Feebas | 7.4 |
+| Omanyte | 7.5 |
+| Clefairy | 7.5 |
+| Zubat | 7.5 |
+| Mudkip | 7.6 |
+| Mareep | 7.8 |
+| Snubbull | 7.8 |
+| Cyndaquil | 7.9 |
+| Horsea | 8.0 |
+| Marill | 8.5 |
+| Wooper | 8.5 |
+| Spinarak | 8.5 |
+| Charmander | 8.5 |
+| Sunflora | 8.5 |
+| Gloom | 8.6 |
+| Luvdisc | 8.7 |
+| Teddiursa | 8.8 |
+| Squirtle | 9.0 |
+| Nidoran_m | 9.0 |
+| Totodile | 9.5 |
+| Wingull | 9.5 |
+| Weezing | 9.5 |
+| Vulpix | 9.9 |
+| Metapod | 9.9 |
+| Kakuna | 10.0 |
+| Silcoon | 10.0 |
+| Magikarp | 10.0 |
+| Gulpin | 10.3 |
+| Voltorb | 10.4 |
+| Houndour | 10.8 |
+| Ledyba | 10.8 |
+| Sableye | 11.0 |
+| Skitty | 11.0 |
+| Meditite | 11.2 |
+| Kabuto | 11.5 |
+| Mawile | 11.5 |
+| Corphish | 11.5 |
+| Cascoon | 11.5 |
+| Aipom | 11.5 |
+| Chinchou | 12.0 |
+| Sandshrew | 12.0 |
+| Remoraid | 12.0 |
+| Ninjask | 12.0 |
+| Wigglytuff | 12.0 |
+| Poliwag | 12.4 |
+| Anorith | 12.5 |
+| Banette | 12.5 |
+| Venomoth | 12.5 |
+| Ivysaur | 13.0 |
+| Flaaffy | 13.3 |
+| Poochyena | 13.6 |
+| Wynaut | 14.0 |
+| Dunsparce | 14.0 |
+| Goldeen | 15.0 |
+| Trapinch | 15.0 |
+| Farfetchd | 15.0 |
+| Duskull | 15.0 |
+| Xatu | 15.0 |
+| Electrike | 15.2 |
+| Vibrava | 15.3 |
+| Victreebel | 15.5 |
+| Bayleef | 15.8 |
+| Delibird | 16.0 |
+| Whismur | 16.3 |
+| Dragonair | 16.5 |
+| Snorunt | 16.8 |
+| Zigzagoon | 17.5 |
+| Illumise | 17.7 |
+| Volbeat | 17.7 |
+| Raticate | 18.5 |
+| Vileplume | 18.6 |
+| Growlithe | 19.0 |
+| Quilava | 19.0 |
+| Charmeleon | 19.0 |
+| Machop | 19.5 |
+| Nidorino | 19.5 |
+| Abra | 19.5 |
+| Combusken | 19.5 |
+| Psyduck | 19.6 |
+| Swellow | 19.8 |
+| Ninetales | 19.9 |
+| Geodude | 20.0 |
+| Nidorina | 20.0 |
+| Poliwhirl | 20.0 |
+| Kirlia | 20.2 |
+| Shuckle | 20.5 |
+| Altaria | 20.6 |
+| Carvanha | 20.8 |
+| Tyrogue | 21.0 |
+| Hoothoot | 21.2 |
+| Magby | 21.4 |
+| Baltoy | 21.5 |
+| Grovyle | 21.6 |
+| Kecleon | 22.0 |
+| Wartortle | 22.5 |
+| Lanturn | 22.5 |
+| Gorebyss | 22.6 |
+| Relicanth | 23.4 |
+| Elekid | 23.5 |
+| Whiscash | 23.6 |
+| Lileep | 23.8 |
+| Numel | 24.0 |
+| Slakoth | 24.0 |
+| Jolteon | 24.5 |
+| Flareon | 25.0 |
+| Croconaw | 25.0 |
+| Seadra | 25.0 |
+| Espeon | 26.5 |
+| Umbreon | 27.0 |
+| Huntail | 27.0 |
+| Mankey | 28.0 |
+| Marshtomp | 28.0 |
+| Sneasel | 28.0 |
+| Nuzleaf | 28.0 |
+| Pelipper | 28.0 |
+| Beautifly | 28.4 |
+| Azumarill | 28.5 |
+| Octillery | 28.5 |
+| Wobbuffet | 28.5 |
+| Vaporeon | 29.0 |
+| Beedrill | 29.5 |
+| Sandslash | 29.5 |
+| Parasect | 29.5 |
+| Raichu | 30.0 |
+| Grimer | 30.0 |
+| Venonat | 30.0 |
+| Ponyta | 30.0 |
+| Pidgeotto | 30.0 |
+| Electabuzz | 30.0 |
+| Muk | 30.0 |
+| Spoink | 30.6 |
+| Dusclops | 30.6 |
+| Medicham | 31.5 |
+| Dustox | 31.6 |
+| Persian | 32.0 |
+| Primeape | 32.0 |
+| Butterfree | 32.0 |
+| Drowzee | 32.4 |
+| Linoone | 32.5 |
+| Porygon2 | 32.5 |
+| Lombre | 32.5 |
+| Furret | 32.5 |
+| Delcatty | 32.6 |
+| Crawdaunt | 32.8 |
+| Dugtrio | 33.3 |
+| Phanpy | 33.5 |
+| Ariados | 33.5 |
+| Politoed | 33.9 |
+| Staryu | 34.5 |
+| Chansey | 34.6 |
+| Slugma | 35.0 |
+| Tangela | 35.0 |
+| Omastar | 35.0 |
+| Houndoom | 35.0 |
+| Ledian | 35.6 |
+| Slowpoke | 36.0 |
+| Porygon | 36.5 |
+| Mightyena | 37.0 |
+| Fearow | 38.0 |
+| Sudowoodo | 38.0 |
+| Yanma | 38.0 |
+| Seaking | 39.0 |
+| Breloom | 39.2 |
+| Doduo | 39.2 |
+| Spheal | 39.5 |
+| Pidgeot | 39.5 |
+| Clefable | 40.0 |
+| Latias | 40.0 |
+| Manectric | 40.2 |
+| Zangoose | 40.3 |
+| Loudred | 40.5 |
+| Kabutops | 40.5 |
+| Gengar | 40.5 |
+| Jynx | 40.6 |
+| Noctowl | 40.8 |
+| Girafarig | 41.5 |
+| Bagon | 42.1 |
+| Magmar | 44.5 |
+| Marowak | 45.0 |
+| Tentacool | 45.5 |
+| Vigoroth | 46.5 |
+| Blissey | 46.8 |
+| Absol | 47.0 |
+| Hitmontop | 48.0 |
+| Alakazam | 48.0 |
+| Gardevoir | 48.4 |
+| Granbull | 48.7 |
+| Hitmonlee | 49.8 |
+| Hitmonchan | 50.2 |
+| Skarmory | 50.5 |
+| Cacnea | 51.3 |
+| Blaziken | 52.0 |
+| Sceptile | 52.2 |
+| Clamperl | 52.5 |
+| Seviper | 52.5 |
+| Zapdos | 52.6 |
+| Poliwrath | 54.0 |
+| Heracross | 54.0 |
+| Mr_mime | 54.5 |
+| Magcargo | 55.0 |
+| Pinsir | 55.0 |
+| Ludicolo | 55.0 |
+| Golbat | 55.0 |
+| Tentacruel | 55.0 |
+| Articuno | 55.4 |
+| Piloswine | 55.8 |
+| Scyther | 56.0 |
+| Kadabra | 56.5 |
+| Smeargle | 58.0 |
+| Aerodactyl | 59.0 |
+| Shiftry | 59.6 |
+| Aron | 60.0 |
+| Magneton | 60.0 |
+| Nidoqueen | 60.0 |
+| Kingler | 60.0 |
+| Moltres | 60.0 |
+| Latios | 60.0 |
+| Cradily | 60.4 |
+| Deoxys | 60.8 |
+| Ampharos | 61.5 |
+| Nidoking | 62.0 |
+| Gligar | 64.8 |
+| Arbok | 65.0 |
+| Lickitung | 65.5 |
+| Electrode | 66.6 |
+| Armaldo | 68.2 |
+| Machoke | 70.5 |
+| Stantler | 71.2 |
+| Grumpig | 71.5 |
+| Larvitar | 72.0 |
+| Quagsire | 75.0 |
+| Crobat | 75.0 |
+| Miltank | 75.5 |
+| Hypno | 75.6 |
+| Golduck | 76.6 |
+| Cacturne | 77.4 |
+| Slowbro | 78.5 |
+| Typhlosion | 79.5 |
+| Slowking | 79.5 |
+| Starmie | 80.0 |
+| Swalot | 80.0 |
+| Kangaskhan | 80.0 |
+| Torkoal | 80.4 |
+| Swampert | 81.9 |
+| Flygon | 82.0 |
+| Exploud | 84.0 |
+| Dodrio | 85.2 |
+| Blastoise | 85.5 |
+| Makuhita | 86.4 |
+| Sealeo | 87.6 |
+| Tauros | 88.4 |
+| Sharpedo | 88.8 |
+| Feraligatr | 88.8 |
+| Seel | 90.0 |
+| Charizard | 90.5 |
+| Rapidash | 95.0 |
+| Beldum | 95.2 |
+| Nosepass | 97.0 |
+| Venusaur | 100.0 |
+| Tropius | 100.0 |
+| Meganium | 100.5 |
+| Salamence | 102.6 |
+| Graveler | 105.0 |
+| Claydol | 108.0 |
+| Shelgon | 110.5 |
+| Rhyhorn | 115.0 |
+| Scizor | 118.0 |
+| Lairon | 120.0 |
+| Donphan | 120.0 |
+| Dewgong | 120.0 |
+| Rhydon | 120.0 |
+| Exeggutor | 120.0 |
+| Mewtwo | 122.0 |
+| Forretress | 125.8 |
+| Ursaring | 125.8 |
+| Machamp | 130.0 |
+| Wailmer | 130.0 |
+| Slaking | 130.5 |
+| Cloyster | 132.5 |
+| Walrein | 150.6 |
+| Pupitar | 152.0 |
+| Kingdra | 152.0 |
+| Solrock | 154.0 |
+| Arcanine | 155.0 |
+| Milotic | 162.0 |
+| Lunatone | 168.0 |
+| Regice | 175.0 |
+| Raikou | 178.0 |
+| Suicune | 187.0 |
+| Entei | 198.0 |
+| Ho_oh | 199.0 |
+| Tyranitar | 202.0 |
+| Metang | 202.5 |
+| Registeel | 205.0 |
+| Rayquaza | 206.5 |
+| Dragonite | 210.0 |
+| Onix | 210.0 |
+| Lugia | 216.0 |
+| Camerupt | 220.0 |
+| Mantine | 220.0 |
+| Lapras | 220.0 |
+| Regirock | 230.0 |
+| Gyarados | 235.0 |
+| Hariyama | 253.8 |
+| Glalie | 256.5 |
+| Golem | 300.0 |
+| Kyogre | 352.0 |
+| Aggron | 360.0 |
+| Wailord | 398.0 |
+| Steelix | 400.0 |
+| Snorlax | 460.0 |
+| Metagross | 550.0 |
+| Groudon | 950.0 |