Pokémon species data structure (Generation III)

The Pokémon species data structure is a 28-byte structure that determines all information inherent to a Pokémon species, such as base stats, types, Egg Groups, and EV yield. Every Pokémon species in the Generation III games has a data structure stored in the game's ROM.

Notes

Base Stats
typeoffset
Base HPbyte0
Base Attackbyte1
Base Defensebyte2
Base Speedbyte3
Base Sp. Attackbyte4
Base Sp. Defensebyte5
Type 1byte6
Type 2byte7
Catch ratebyte8
Base Exp. yieldbyte9
Effort yieldword10
Item 1word12
Item 2word14
Genderbyte16
Egg cyclesbyte17
Base friendshipbyte18
Level-up typebyte19
Egg Group 1byte20
Egg Group 2byte21
Ability 1byte22
Ability 2byte23
Safari Zone ratebyte24
Color and Flipbyte25
Padding*word26.

Missing from this structure are moves known at Level 1, and TM and HM flags, which are stored elsewhere.

Types

The types are associated with the following values:

ValueType
0Normal
1Fighting
2Flying
3Poison
4Ground
5Rock
ValueType
6Bug
7Ghost
8Steel
9???
10Fire
11Water
ValueType
12Grass
13Electric
14Psychic
15Ice
16Dragon
17Dark

If the Pokémon only has one type, both Type 1 and Type 2 will be set to the same value.

Effort yield

Each stat is assigned two bits to determine how many EVs the Pokémon will give in that stat. The last 4 bits in the byte are empty (0).

BitsStat
0-1HP
2-3Attack
4-5Defense
6-7Speed
8-9Special Attack
10-11Special Defense

Items

If an item is assigned to Item 1, the Pokémon will have a 50% chance of having that item when encountered in the wild. An item assigned to Item 2 will have a 5% chance of being held. If both Item 1 and Item 2 are the same, then the Pokémon will always be holding that item when it is encountered.

Gender

Main article: Personality value → Gender

This value determines the chance that a Pokémon will be male or female. If the species is not all male, all female, or gender unknown, then this value is compared to the lowest byte of a Pokémon's personality value to determine its gender.

ValueGender
0Always male
1-253Mixed /
254Always female
255Gender unknown

Level-up Type

The following values correspond to the different growth rates a Pokémon can have:

ValueGrowthLv100 Exp
0Medium Fast1,000,000
1Erratic600,000
2Fluctuating1,640,000
3Medium Slow1,059,860
4Fast800,000
5Slow1,250,000

Egg Groups

The following values correspond to the different Egg Groups a Pokémon can belong to:

ValueType
1Monster
2Water 1
3Bug
4Flying
5Field
ValueType
6Fairy
7Grass
8Human-Like
9Water 3
10Mineral
ValueType
11Amorphous
12Water 2
13Ditto
14Dragon
15Undiscovered

For Pokémon only in a single Egg Group, both entries are the same value.

Safari Zone rate

This value determines the rate at which the Pokémon will flee when encountered in the Safari Zone. Only Pokémon that appear in the Safari Zone have this value set.

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:

ValueType
0Red
1Blue
2Yellow
3Green
4Black
ValueType
5Brown
6Purple
7Gray
8White
9Pink

"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).

Storage

This section is incomplete.
Please feel free to edit this section to add missing information and complete it.
Reason: Are the Ruby and Sapphire addresses only for US games? For non-US games?

The following are the RAM offsets for the first data entry (Bulbasaur) in each GBA game. Since a game is loaded into RAM at 0x08000000, this means that the offset in a ROM dump will only use the last six hexadecimal digits.

GameAddress
Ruby0x081FEC34
Sapphire0x081FEBC4
Emerald0x082F0D70
EmeraldEN-US0x083203E8
FireRed0x082111A8
FireRedEN-US0x082547A0
LeafGreen0x08211184
LeafGreenEN-US0x0825477C

Fingerprint

Below is a sample of the data for the first Pokémon species data structures.

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
...


Data structure in the Pokémon games
Generation I Pokémon speciesPokémonPoké MartCharacter encodingSave
Generation II Pokémon speciesPokémonTrainerCharacter encodingSave
Generation III Pokémon species (Pokémon evolutionPokédexType chart)
Pokémon (substructures) • MoveContestContest moveItem
Trainer TowerBattle FrontierCharacter encodingSave
Generation IV PokémonSave
TCG GB and GB2 Character encoding


This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games.
This article is issued from Bulbagarden. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.