Pokémon species data structure (Generation II)
The Pokémon species data structure is a 32-byte structure, stored in the ROM of the Generation II games for every Pokémon species, that determines most of the information inherent to the species, such as base stats, types, catch rate and Egg Groups. The structures appear in Pokédex order, which is the same as index number order in Generation II. The Pokémon species' names are not part of this structure, but are instead stored elsewhere.
Notes
| Offset | Contents | Size |
|---|---|---|
| 0x00 | Pokédex number | byte |
| 0x01 | Base HP | byte |
| 0x02 | Base Attack | byte |
| 0x03 | Base Defense | byte |
| 0x04 | Base Speed | byte |
| 0x05 | Base Sp. Attack | byte |
| 0x06 | Base Sp. Defense | byte |
| 0x07 | Type 1 | byte |
| 0x08 | Type 2 | byte |
| 0x09 | Catch rate | byte |
| 0x0A | Base experience yield | byte |
| 0x0B | Wild held item 1 | byte |
| 0x0C | Wild held item 2 | byte |
| 0x0D | Gender ratio | byte |
| 0x0E | Unknown (always 100) | byte |
| 0x0F | Egg cycles | byte |
| 0x10 | Unknown (always 5) | byte |
| 0x11 | Front sprite dimensions | byte |
| 0x12-0x15 | Blank (always 00 00 00 00) | 4 bytes |
| 0x16 | Growth rate | byte |
| 0x17 | Egg groups | byte |
| 0x18-0x1F | TM and HM flags | 8 bytes |
Stat experience yield
Generation II has no effort yield field. When a Pokémon is defeated, the stat experience it gives is equal to its base stats. Special stat experience is shared by Special Attack and Special Defense, and is gained from the base Special Attack.
Types
The types are associated with the following values. For a single-type Pokémon, both types are set to the same value. Values 10-18 are unused and are displayed as Normal.
| Value | Type | Value | Type | Value | Type |
|---|---|---|---|---|---|
| 0 | Normal | 10 | Normal | 20 | Fire |
| 1 | Fighting | 11 | Normal | 21 | Water |
| 2 | Flying | 12 | Normal | 22 | Grass |
| 3 | Poison | 13 | Normal | 23 | Electric |
| 4 | Ground | 14 | Normal | 24 | Psychic |
| 5 | Rock | 15 | Normal | 25 | Ice |
| 6 | Bird | 16 | Normal | 26 | Dragon |
| 7 | Bug | 17 | Normal | 27 | Dark |
| 8 | Ghost | 18 | Normal | ||
| 9 | Steel | 19 | ??? |
Wild held items
- Main article: List of Pokémon by wild held item (Generation II)
The item entries refer to items by their index number. The first item has a 23% chance of being held when the Pokémon is encountered in the wild, and the second has a 2% chance of being held. In the scripted encounters with Snorlax, Ho-Oh, and Lugia, the Pokémon always holds its first item. Lugia has no held item, so it holds nothing.
Gender ratio
The gender ratio is expressed as a 1-byte threshold for the Pokémon to be male. The possible values are:
| Gender threshold | Gender ratio | ||
|---|---|---|---|
| Binary | Decimal | Male | Female |
11111111
|
255 | Gender unknown | |
11111110
|
254 | 0.0% | 100.0% |
10111111
|
191 | 25.0% | 75.0% |
01111111
|
127 | 50.0% | 50.0% |
00111111
|
63 | 75.0% | 25.0% |
00011111
|
31 | 87.5% | 12.5% |
00000000
|
0 | 100.0% | 0.0% |
A Pokémon's gender is determined by combining its Attack and Speed IVs into a single byte, , which puts Attack in the high nybble and Speed in the low nybble. The Pokémon is male if this byte is greater than the threshold and female otherwise. The exceptions are a threshold of 0, which is always male, 254, which is always female, and 255, which is always gender unknown.
Front sprite dimensions
The width and height of the front sprite, in 8×8 pixel tiles, are stored in one nybble each. They always match and are always 5, 6, or 7.
Blank
These bytes are unused and always 0. In the Generation I games, the corresponding bytes held the Pokémon's level 1 moves. In Generation II, those moves are stored with the rest of the level-up moves.
Growth rate
The following values correspond to the different growth rates a Pokémon can have:
| Value | Growth rate | Lv. 100 Exp |
|---|---|---|
| 0 | Medium Fast | 1,000,000 |
| 3 | Medium Slow | 1,059,860 |
| 4 | Fast | 800,000 |
| 5 | Slow | 1,250,000 |
Egg groups
The high nybble is the first group, and the low nybble is the second. For a Pokémon in only one group, both are set to the same value. The following values correspond to the different Egg Groups a Pokémon can belong to:
| Value | Egg group | Value | Egg group | Value | Egg group |
|---|---|---|---|---|---|
| 1 | Monster | 6 | Fairy | 11 | Amorphous |
| 2 | Water 1 | 7 | Grass | 12 | Water 2 |
| 3 | Bug | 8 | Human-Like | 13 | Ditto |
| 4 | Flying | 9 | Water 3 | 14 | Dragon |
| 5 | Field | 10 | Mineral | 15 | No Eggs Discovered |
TMs
The TMs and HMs a Pokémon can learn are stored as a bit field, with one bit per move, ordered from the least significant bit (LSB) of the first byte to the most significant bit (MSB) of the last byte. The seven HMs are treated as TMs 51-57.
For example, Charizard's TM and HM flags are B7 56 D9 CE F6 D8 2D 02. TM n is stored in bit of byte , where bit 0 is the LSB:
| Byte | Value | Binary | Bits set | Moves |
|---|---|---|---|---|
| 0 | B7 |
10110111 |
0, 1, 2, 4, 5, 7 | TM01 (Dynamic Punch), TM02 (Headbutt), TM03 (Curse), TM05 (Roar), TM06 (Toxic), TM08 (Rock Smash) |
| 1 | 56 |
01010110 |
1, 2, 4, 6 | TM10 (Hidden Power), TM11 (Sunny Day), TM13 (Snore), TM15 (Hyper Beam) |
| 2 | D9 |
11011001 |
0, 3, 4, 6, 7 | TM17 (Protect), TM20 (Endure), TM21 (Frustration), TM23 (Iron Tail), TM24 (Dragon Breath) |
| 3 | CE |
11001110 |
1, 2, 3, 6, 7 | TM26 (Earthquake), TM27 (Return), TM28 (Dig), TM31 (Mud-Slap), TM32 (Double Team) |
| 4 | F6 |
11110110 |
1, 2, 4, 5, 6, 7 | TM34 (Swagger), TM35 (Sleep Talk), TM37 (Sandstorm), TM38 (Fire Blast), TM39 (Swift), TM40 (Defense Curl) |
| 5 | D8 |
11011000 |
3, 4, 6, 7 | TM44 (Rest), TM45 (Attract), TM47 (Steel Wing), TM48 (Fire Punch) |
| 6 | 2D |
00101101 |
0, 2, 3, 5 | TM49 (Fury Cutter), HM01 (Cut), HM02 (Fly), HM04 (Strength) |
| 7 | 02 |
00000010 |
1 | Flamethrower |
The binary column is written with the MSB on the left, so the bit numbers count from the right. The HMs follow the TMs, so bit 2 of byte 6 is TM51, which is HM01 (Cut). Byte 7 holds the seventh HM and the move tutor bits described below.
In Pokémon Crystal, the three bits after the HMs indicate whether the Pokémon can be taught Flamethrower, Thunderbolt, or Ice Beam by the Move Tutor, in that order. These are bits 1-3 of the last byte. In the example above, bit 1 is set, so Charizard can be taught Flamethrower.
Fingerprint
The first entries of the table are shown below and can be used to locate it in a ROM. In these entries, Gold, Silver, and Crystal differ only in the last byte, which holds the Crystal move tutor bits.
Gold and Silver
01 2D 31 31 2D 41 41 16 03 2D 40 00 00 1F 64 14 05 55 00 00 00 00 03 17 26 1E 3D C4 86 18 45 00 // BULBASAUR 02 3C 3E 3F 3C 50 50 16 03 2D 8D 00 00 1F 64 14 05 66 00 00 00 00 03 17 26 1E 3D C4 86 18 45 00 // IVYSAUR 03 50 52 53 50 64 64 16 03 2D D0 00 00 1F 64 14 05 77 00 00 00 00 03 17 36 5E 3D C4 86 18 45 00 // VENUSAUR 04 27 34 2B 41 3C 32 14 14 2D 41 00 00 1F 64 14 05 55 00 00 00 00 03 1E A7 16 D9 CC E6 98 25 00 // CHARMANDER 05 3A 40 3A 50 50 41 14 14 2D 8E 00 00 1F 64 14 05 66 00 00 00 00 03 1E A7 16 D9 CC E6 98 25 00 // CHARMELEON 06 4E 54 4E 64 6D 55 14 02 2D D1 00 00 1F 64 14 05 77 00 00 00 00 03 1E B7 56 D9 CE F6 D8 2D 00 // CHARIZARD 07 2C 30 41 2B 32 40 15 15 2D 42 00 00 1F 64 14 05 55 00 00 00 00 03 12 AF B2 5B CC 87 18 B0 01 // SQUIRTLE 08 3B 3F 50 3A 41 50 15 15 2D 8F 00 00 1F 64 14 05 66 00 00 00 00 03 12 AF B2 5B CC 87 18 B0 01 // WARTORTLE 09 4F 53 64 4E 55 69 15 15 2D D2 00 00 1F 64 14 05 77 00 00 00 00 03 12 BF F2 5B CE 87 18 B0 01 // BLASTOISE 0A 2D 1E 23 2D 14 14 07 07 FF 35 00 00 7F 64 0F 05 55 00 00 00 00 00 33 00 00 00 00 00 00 00 00 // CATERPIE ...
Crystal
01 2D 31 31 2D 41 41 16 03 2D 40 00 00 1F 64 14 05 55 00 00 00 00 03 17 26 1E 3D C4 86 18 45 00 // BULBASAUR 02 3C 3E 3F 3C 50 50 16 03 2D 8D 00 00 1F 64 14 05 66 00 00 00 00 03 17 26 1E 3D C4 86 18 45 00 // IVYSAUR 03 50 52 53 50 64 64 16 03 2D D0 00 00 1F 64 14 05 77 00 00 00 00 03 17 36 5E 3D C4 86 18 45 00 // VENUSAUR 04 27 34 2B 41 3C 32 14 14 2D 41 00 00 1F 64 14 05 55 00 00 00 00 03 1E A7 16 D9 CC E6 98 25 02 // CHARMANDER 05 3A 40 3A 50 50 41 14 14 2D 8E 00 00 1F 64 14 05 66 00 00 00 00 03 1E A7 16 D9 CC E6 98 25 02 // CHARMELEON 06 4E 54 4E 64 6D 55 14 02 2D D1 00 00 1F 64 14 05 77 00 00 00 00 03 1E B7 56 D9 CE F6 D8 2D 02 // CHARIZARD 07 2C 30 41 2B 32 40 15 15 2D 42 00 00 1F 64 14 05 55 00 00 00 00 03 12 AF B2 5B CC 87 18 B0 09 // SQUIRTLE 08 3B 3F 50 3A 41 50 15 15 2D 8F 00 00 1F 64 14 05 66 00 00 00 00 03 12 AF B2 5B CC 87 18 B0 09 // WARTORTLE 09 4F 53 64 4E 55 69 15 15 2D D2 00 00 1F 64 14 05 77 00 00 00 00 03 12 BF F2 5B CE 87 18 B0 09 // BLASTOISE 0A 2D 1E 23 2D 14 14 07 07 FF 35 00 00 7F 64 0F 05 55 00 00 00 00 00 33 00 00 00 00 00 00 00 00 // CATERPIE ...
Storage
The following are ROM offsets for the first entry (Bulbasaur) in each release of the Generation II games.
| Game | Language | Offset |
|---|---|---|
| Gold | Japanese | 0x051AA9
|
| Japanese (Rev 1) | ||
| Korean | 0x051BDF
| |
| English | 0x051B0B
| |
| German | 0x051B00
| |
| French | 0x051B10
| |
| Italian | 0x051B19
| |
| Spanish | ||
| Silver | Japanese | 0x051AA9
|
| Japanese (Rev 1) | ||
| Korean | 0x051BDF
| |
| English | 0x051B0B
| |
| German | 0x051B00
| |
| French | 0x051B10
| |
| Italian | 0x051B19
| |
| Spanish | ||
| Crystal | Japanese | 0x0514BA
|
| English | 0x051424
| |
| German | 0x05140E
| |
| French | 0x051417
| |
| Italian | 0x051433
| |
| Spanish | 0x05142D
|
Related articles
| |||||||||||||||||||||||||||||||||
| This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games. |