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 games has a 28-byte data structure stored in the game's ROM somewhere. The structures (with the exception of Mew in Red and Blue) 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 | Padding | 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 [1].
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, Mew's stats are stored at 0x00425B. In Yellow, they are stored where one would expect them to be, after the other Pokémon.
|
This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games. |