Pokémon species data structure (Generation III)
The Pokémon species data structure is a 28-byte structure, stored in the ROM of the Generation III games for every Pokémon species, that determines most of the information inherent to the species, such as base stats, types, Egg Groups, and effort value yield. Level-up moves (including those known at level 1), TM and HM flags, and Evolutions are stored elsewhere. The Pokémon species' names are not part of this structure, but are instead stored elsewhere.
Notes
| Offset | Contents | Size |
|---|---|---|
| 0x00 | Base HP | byte |
| 0x01 | Base Attack | byte |
| 0x02 | Base Defense | byte |
| 0x03 | Base Speed | byte |
| 0x04 | Base Sp. Attack | byte |
| 0x05 | Base Sp. Defense | byte |
| 0x06 | Type 1 | byte |
| 0x07 | Type 2 | byte |
| 0x08 | Catch rate | byte |
| 0x09 | Base experience yield | byte |
| 0x0A | Effort yield | word |
| 0x0C | Wild held item 1 | word |
| 0x0E | Wild held item 2 | word |
| 0x10 | Gender ratio | byte |
| 0x11 | Egg cycles | byte |
| 0x12 | Base friendship | byte |
| 0x13 | Growth rate | byte |
| 0x14 | Egg group 1 | byte |
| 0x15 | Egg group 2 | byte |
| 0x16 | Ability 1 | byte |
| 0x17 | Ability 2 | byte |
| 0x18 | Safari Zone rate | byte |
| 0x19 | Color and flip | byte |
| 0x1A | Padding (always 0) | word |
Types
The types are associated with the following values. For a single-type Pokémon, both types are set to the same value.
| Value | Type | Value | Type | Value | Type |
|---|---|---|---|---|---|
| 0 | Normal | 6 | Bug | 12 | Grass |
| 1 | Fighting | 7 | Ghost | 13 | Electric |
| 2 | Flying | 8 | Steel | 14 | Psychic |
| 3 | Poison | 9 | ??? | 15 | Ice |
| 4 | Ground | 10 | Fire | 16 | Dragon |
| 5 | Rock | 11 | Water | 17 | Dark |
Effort yield
Each stat is assigned two bits, which give how many effort values (0-3) the Pokémon yields in that stat when defeated. The last 4 bits of the word are unused and always 0.
| Bits | Stat |
|---|---|
| 0-1 | HP |
| 2-3 | Attack |
| 4-5 | Defense |
| 6-7 | Speed |
| 8-9 | Special Attack |
| 10-11 | Special Defense |
Wild held items
The item entries refer to items by their index number. The first item has a 50% chance of being held when the Pokémon is encountered in the wild, and the second has a 5% chance of being held. If both items are the same, the Pokémon always holds that item. If the first Pokémon in the player's party has Compound Eyes, these chances become 60% and 20%.
Gender ratio
- Main article: Personality value → Gender
The gender ratio is expressed as a 1-byte threshold for the Pokémon to be male. If the species is not all male, all female, or gender unknown, this value is compared to the lowest byte of the Pokémon's personality value: the Pokémon is female if that byte is less than the threshold and male otherwise.
| Gender threshold | Gender ratio | ||
|---|---|---|---|
| Binary | Decimal | Male | Female |
11111111
|
255 | Gender unknown | |
11111110
|
254 | 0.0% | 100.0% |
11100001
|
225 (unused) | 12.5% | 87.5% |
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% |
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 |
| 1 | Erratic | 600,000 |
| 2 | Fluctuating | 1,640,000 |
| 3 | Medium Slow | 1,059,860 |
| 4 | Fast | 800,000 |
| 5 | Slow | 1,250,000 |
Egg groups
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 |
Safari Zone rate
This value determines the rate at which the Pokémon will flee when encountered in the Safari Zone. For Pokémon that do not appear in the Safari Zone, this value is 0.
Color and flip
Color is used in the Pokédex's search function in Ruby, Sapphire, and Emerald. The following values correspond to the different possible colors:
| Value | Color | Value | Color |
|---|---|---|---|
| 0 | Red | 5 | Brown |
| 1 | Blue | 6 | Purple |
| 2 | Yellow | 7 | Gray |
| 3 | Green | 8 | White |
| 4 | Black | 9 | Pink |
"Flip" refers to whether the Pokémon's image is flipped when seen in the summary screen as opposed to when seen in the Pokédex or PC. This is determined by bit 7 (the most significant bit) of this field. For some Pokémon, such as Poliwag, Kingler, and Unown, this bit is set and the image is not flipped (i.e., the image is oriented the same in both places).
Fingerprint
The first entries of the table are shown below and can be used to locate it in a ROM.
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ?????????? (used for unknown/glitch Pokémon) 2D 31 31 2D 41 41 0C 03 2D 40 00 01 00 00 00 00 1F 14 46 03 01 07 41 00 00 03 00 00 // BULBASAUR 3C 3E 3F 3C 50 50 0C 03 2D 8D 00 05 00 00 00 00 1F 14 46 03 01 07 41 00 00 03 00 00 // IVYSAUR 50 52 53 50 64 64 0C 03 2D D0 00 06 00 00 00 00 1F 14 46 03 01 07 41 00 00 03 00 00 // VENUSAUR 27 34 2B 41 3C 32 0A 0A 2D 41 40 00 00 00 00 00 1F 14 46 03 01 0E 42 00 00 00 00 00 // CHARMANDER 3A 40 3A 50 50 41 0A 0A 2D 8E 40 01 00 00 00 00 1F 14 46 03 01 0E 42 00 00 00 00 00 // CHARMELEON 4E 54 4E 64 6D 55 0A 02 2D D1 00 03 00 00 00 00 1F 14 46 03 01 0E 42 00 00 00 00 00 // CHARIZARD 2C 30 41 2B 32 40 0B 0B 2D 42 10 00 00 00 00 00 1F 14 46 03 01 02 43 00 00 01 00 00 // SQUIRTLE 3B 3F 50 3A 41 50 0B 0B 2D 8F 10 04 00 00 00 00 1F 14 46 03 01 02 43 00 00 01 00 00 // WARTORTLE 4F 53 64 4E 55 69 0B 0B 2D D2 00 0C 00 00 00 00 1F 14 46 03 01 02 43 00 00 01 00 00 // BLASTOISE ...
Storage
The following are the addresses of the first data entry (Bulbasaur) in each release of the Generation III games. The table begins with an all-zero entry for index 0, so each address is 28 bytes after the start of the table. Since the ROM is mapped at 0x08000000, the offset in a ROM dump only uses the last six hexadecimal digits.
| Game | Language | Address |
|---|---|---|
| Ruby | Japanese | 0x081D09E8
|
| Japanese (Rev 1) | ||
| English | 0x081FEC34
| |
| English (Rev 1) | 0x081FEC4C
| |
| English (Rev 2) | ||
| German | 0x0820BC04
| |
| German (Rev 1) | ||
| French | 0x08207080
| |
| French (Rev 1) | ||
| Italian | 0x0820090C
| |
| Italian (Rev 1) | ||
| Spanish | 0x082039B0
| |
| Spanish (Rev 1) | ||
| Sapphire | Japanese | 0x081D0978
|
| Japanese (Rev 1) | ||
| English | 0x081FEBC4
| |
| English (Rev 1) | 0x081FEBDC
| |
| English (Rev 2) | ||
| German | 0x0820BB98
| |
| German (Rev 1) | ||
| French | 0x08207010
| |
| French (Rev 1) | ||
| Italian | 0x0820089C
| |
| Italian (Rev 1) | ||
| Spanish | 0x08203940
| |
| Spanish (Rev 1) | ||
| Emerald | Japanese | 0x082F0D70
|
| English | 0x083203E8
| |
| German | 0x08334DA8
| |
| French | 0x08327F58
| |
| Italian | 0x0831FDE8
| |
| Spanish | 0x083266A4
| |
| FireRed | Japanese | 0x082111A8
|
| Japanese (Rev 1) | 0x0820C9C0
| |
| English | 0x082547A0
| |
| English (Rev 1) | 0x08254810
| |
| German | 0x082546C4
| |
| French | 0x0824EBF0
| |
| Italian | 0x0824D880
| |
| Spanish | 0x0824FF68
| |
| LeafGreen | Japanese | 0x08211184
|
| Japanese (Rev 1) | 0x0820C99C
| |
| English | 0x0825477C
| |
| English (Rev 1) | 0x082547EC
| |
| German | 0x082546A0
| |
| French | 0x0824EBCC
| |
| Italian | 0x0824D85C
| |
| Spanish | 0x0824FF44
|
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. |