“The Website Previously Known as Legendary Pokémon.”

Legacy, Weeklymech

Pokedex Data Structure

by Arty2


This article provides detailed documentation on the Pokédex data structures in the GBA games.

If you have something to add feel free to comment and I’d be happy to see people contributing to these articles. After every article will follow some related links that will help you get additional information.

Some might notice that the following article looks like Bulbapedia’s related page; I started that one page and fellow Bulbapedia editors are free to take more details from this one article and add it to Bulbapedia. Most stuff is self-explicatory but let’s get into detail.


A base stats structure is a 34-byte piece of data in the Advanced Generation games.

Pokédex Data Structure
Data  Type  Description
Padding byte Always equals 0x00.
Name 12 bytes This is the Pokémon’s species/nickname. It is always in capital letters and possible empty letters are filled with 0x00. The last byte is a normal slash /. (TINYRACCOON/ for example)
Height 2 bytes This is the Pokémon’s height. It is stored in decimetres (1/10 metres) and converted to other units with in-game functions.
Weight 2 bytes This is the Pokémon’s weight. It is stored in hectogrammes (1/10 kilogrammes) and converted to other units with in-game functions.
Description pointer start 4 bytes These show the game where the description for that Pokémon is. The MSB byte is always set to 0x08, which matches a BRANCH instruction (B) in assembly. If a pointer looks like 0x12345608 (in hex) then the location is 0x563412.
Description pointer end 4 bytes
Pokémon scale 2 bytes This is the Pokémon’s scale used in the compare size function.
Pokémon offset 2 bytes This is the Pokémon’s offset used in the compare size function.
Trainer Scale byte This is the Trainer’s scale used in the compare size function.
Trainer Offset 1 bytes This is the Pokémon’s offset used in the compare size function.
Padding byte Always equals 0x0000.


Here follow some functions that are pretty similar to the ones used in the games.

Decimetres to Feet/inches

feet = (round($value/0.254)-$inches)/12
inches = (round($value/0.254)%12)

Hectogrammes to libres


Size compare

This returns the picture’s height/width in Size Compare Mode.

x = floor(64*256/scale)

Note: 64pixels is a standard sprite size.

The offsets’ true use is not confirmed but they sure affect the placement of the Pokémon’s sprite. A Pokémon’s Levitate ability or Flying type, also seems to have something to do with the sprite’s placement.

Related links

About the author


Heracles is an Athens-based architect and designer.
He founded LegendaryPKMN in 2001.

Recent news


Trainers, get ready to hatch some egg-citing 2 km Eggs! Eggstravaganza returns on March 22.

via @PokemonGoApp


Get hyped for #PokemonGOCommunityDay, Trainers! After evolving your Ivysaur into Venusaur during Community Day, your Venusaur will know the exclusive […]

via @PokemonGoApp


The Legendary Pokémon Lugia will soar back to Raid Battles with an improved move on March 16! #BeLegendary

via @PokemonGoApp


The Pokémon GO forecast calls for Pokémon that prefer windy weather to hatch more often from Eggs starting March 5! […]

via @PokemonGoApp


Groudon and Kyogre will be available in #PokemonGO through Raid Battles once again from February 23 till March 5. Depending […]

via @LegendaryPKMN

Read more news