Pokémon species data structure (Generation II)

The Pokémon species data structure is a 32-byte piece of data. 
Every Pokémon species in the Generation II has a 32-byte data structure stored in the game's ROM somewhere. It determines all information inherent to the species, such as base stats, types, catch rate and Egg Groups. The Pokémon species' names are not part of this structure, but are instead stored elsewhere.
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 Exp. Yield 	byte
0x0b 	Wild held item 1 	byte
0x0c 	Wild held item 2 	byte
0x0d 	Gender ratio 	byte
0x0e 	 	byte
0x0f 	Egg cycles 	byte
0x10 	 	byte
0x11 	Dimensions of frontsprite	byte
0x12-0x15	 	4 bytes
0x16 	Growth rate 	byte
0x17 	Egg Groups 	byte
0x18-0x1f	TM and HM flags 	8 bytes
==Notes==
===Types===
For a single-type Pokémon, both types are set to the same value.
* 0x00: 
* 0x01: 
* 0x02: 
* 0x03: 
* 0x04: 
* 0x05: 
* 0x06: 
* 0x07: 
* 0x08: 
* 0x09: 
* 0x0a:-0x12: blank
* 0x13: 
* 0x14: 
* 0x15: 
* 0x16: 
* 0x17: 
* 0x18: 
* 0x19: 
* 0x1a: 
* 0x1b: 
===Wild held items===
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, while the second has a 2% chance of being held. However, if a special flag is set for a given battle, the Pokémon will always be holding its first item; this is used for , , and (although Lugia never has a held item).
===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 threshold	Gender ratio 	Gender ratio
Binary 	Decimal 	Male 	Female
11111111 	255 	Gender unknown	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 calculated based on this threshold value and the Pokémon's Attack IV, following a certain set of rules.
===Frontsprite dimensions===
One nybble each for width and height in 8×8 pixel tiles. They always match and are always 5, 6, or 7 tiles.
===Blank===
In the GB games, this is where the Pokémon's Lv.1 moves were stored. In GSC, Lv.1 moves were moved in with the rest of the moves.
===Growth rate===
* 0. Medium Fast
* 3. Medium Slow
* 4. Fast
* 5. Slow
===Egg Groups===
The low nybble is one group, and the high nybble is another. For a Pokémon in only one group, both are set to the same value.
* 0x01: 
* 0x02: 
* 0x03: 
* 0x04: 
* 0x05: 
* 0x06: 
* 0x07: 
* 0x08: 
* 0x09: 
* 0x0a: 
* 0x0b: 
* 0x0c: 
* 0x0d: 
* 0x0e: 
* 0x0f: 
===TMs===
The TMs which a Pokémon can learn are stored as a bunch of flags. Starting from the LSB of the first byte, and ending with the MSB of the last byte. The seven HMs are treated as TMs 51-57.
In , 3 bits after the HMs are used to indicate the ability to be taught , , and/or by the Move Tutor.
==Fingerprint==
===Gold/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 GBC game:
Game	English 	Japanese
 	0x051B0B	0x051AA9
 	0x051B0B	0x051AA9
 	0x051424	0x0514BA
==Related articles==