Pokémon species data structure (Generation I)

The Pokémon species data structure is a 28-byte piece of data. 
Every Pokémon species in the Generation I has a 28-byte data structure stored in the game's ROM somewhere. The structures (with the exception of in ) appear in Pokédex order rather than index number. It determines some information inherent to the species, such as base Attack, Types, and catch rate. Cries and level-up moves (not starting moves), as well as evolutions are 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 Special 	byte
0x06 	Type 1 	byte
0x07 	Type 2 	byte
0x08 	Catch rate 	byte
0x09 	Base Exp. Yield 	byte
0x0A 	Dimensions of frontsprite	byte
0x0B 	Pointer to frontsprite 	word
0x0D 	Pointer to backsprite 	word
0x0F-0x12	Attacks known at lv. 1 	4 bytes
0x13 	Growth rate 	byte
0x14-0x1A	TM and HM flags 	7 bytes
0x1B 	 	byte
==Notes==
===Types===
Types are enumerated like this:
* 0x00: Normal
* 0x01: Fighting
* 0x02: Flying
* 0x03: Poison
* 0x04: Ground
* 0x05: Rock
* 0x06: Bird
* 0x07: Bug
* 0x08: Ghost
* 0x09-0x13: blank
* 0x14: Fire
* 0x15: Water
* 0x16: Grass
* 0x17: Electric
* 0x18: Psychic
* 0x19: Ice
* 0x1A: Dragon
=== Sprites ===
The dimensions of the frontsprite are given in the data structure even though they can also be found at the beginning of the (compressed) image data. The high nybble is the width, and the low nybble is the height. The width and height are given in tiles; to convert to pixels, multiply by 8. The backsprite is always 4×4.
The bank in which the sprite is located is based on the internal id of the Pokémon:
id 	bank
0x15 	0x01
0xB6 	0x0B
0x00 to 0x1E	0x09
0x1F to 0x49	0x0A
0x4A to 0x73	0x0B
0x74 to 0x98	0x0C
0x99 to 0xFF	0x0D
(Note: these values may not be correct for Yellow.)
The full offset to a sprite is then (bank << 14) + (pointer & 0x3fff).
The compression algorithm used by the sprites is, unfortunately, outside the scope of this article. It is covered in detail at .
=== Growth Rate ===
* 0. Medium Fast
* 3. Medium Slow
* 4. Fast
* 5. Slow
=== 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 five HMs are treated as TMs 51-55.
==Fingerprint==
===Red/Blue===
01 2D 31 31 2D 41 16 03 2D 40 55 00 40 E5 40 21 2D 00 00 03 A4 03 38 C0 03 08 06 00 // BULBASAUR
02 3C 3E 3F 3C 50 16 03 2D 8D 66 2B 50 57 51 21 2D 49 00 03 A4 03 38 C0 03 08 06 00 // IVYSAUR
03 50 52 53 50 64 16 03 2D D0 77 62 41 97 43 21 2D 49 16 03 A4 43 38 C0 03 08 06 00 // VENUSAUR
04 27 34 2B 41 32 14 14 2D 41 55 5C 5C 5C 5D 0A 2D 00 00 03 B5 03 4F C8 E3 08 26 00 // CHARMANDER
05 3A 40 3A 50 41 14 14 2D 8E 66 0C 5F 48 60 0A 2D 34 00 03 B5 03 4F C8 E3 08 26 00 // CHARMELEON
06 4E 54 4E 64 55 14 02 2D D1 77 86 62 95 64 0A 2D 34 2B 03 B5 43 4F CE E3 08 26 00 // CHARIZARD
07 2C 30 41 2B 32 15 15 2D 42 55 B8 5D 8F 5E 21 27 00 00 03 B1 3F 0F C8 83 08 32 00 // SQUIRTLE
08 3B 3F 50 3A 41 15 15 2D 8F 66 B1 60 F1 61 21 27 91 00 03 B1 3F 0F C8 83 08 32 00 // WARTORTLE
09 4F 53 64 4E 55 15 15 2D D2 77 37 76 51 78 21 27 91 37 03 B1 7F 0F CE 83 08 32 00 // BLASTOISE
0A 2D 1E 23 2D 14 07 07 FF 35 55 49 4A E1 4A 21 51 00 00 00 00 00 00 00 00 00 00 00 // CATERPIE
...
===Yellow===
01 2D 31 31 2D 41 16 03 2D 40 55 00 40 E4 40 21 2D 00 00 03 A4 03 38 C0 03 08 06 00 // BULBASAUR
02 3C 3E 3F 3C 50 16 03 2D 8D 66 E9 4F 73 51 21 2D 49 00 03 A4 03 38 C0 03 08 06 00 // IVYSAUR
03 50 52 53 50 64 16 03 2D D0 77 61 41 81 43 21 2D 49 16 03 A4 43 38 C0 03 08 06 00 // VENUSAUR
04 27 34 2B 41 32 14 14 2D 41 55 F0 5D FC 5E 0A 2D 00 00 03 B5 03 4F C8 E3 08 26 00 // CHARMANDER
05 3A 40 3A 50 41 14 14 2D 8E 66 C8 60 25 62 0A 2D 34 00 03 B5 03 4F C8 E3 08 26 00 // CHARMELEON
06 4E 54 4E 64 55 14 02 2D D1 77 A9 64 00 67 0A 2D 34 2B 03 B5 43 4F CE E3 08 2E 00 // CHARIZARD
07 2C 30 41 2B 32 15 15 2D 42 55 58 5F 4B 60 21 27 00 00 03 B1 3F 0F C8 83 08 32 00 // SQUIRTLE
08 3B 3F 50 3A 41 15 15 2D 8F 66 8E 62 14 64 21 27 91 00 03 B1 3F 0F C8 83 08 32 00 // WARTORTLE
09 4F 53 64 4E 55 15 15 2D D2 77 FA 75 0B 78 21 27 91 37 03 B1 7F 0F CE 83 08 32 00 // BLASTOISE
0A 2D 1E 23 2D 14 07 07 FF 35 55 05 4B E8 4B 21 51 00 00 00 00 00 00 00 00 00 00 00 // CATERPIE
...
==Storage==
The following are ROM offsets for the first entry (Bulbasaur) in each GB game:
* Red (en): 0x0383DE
* Blue (en): 0x0383DE
* Yellow (en): 0x0383DE
Note: In Red and Blue, 's stats are stored at 0x00425B. In Yellow, they are stored where one would expect them to be, after the other Pokémon.
==Related articles==