Pokémon Evolution data structure (Generation III)

From Bulbapedia, the community-driven Pokémon encyclopedia.
Revision as of 19:42, 13 September 2011 by KelvSYC (talk | contribs) (Created page with "Data on the '''evolution of Pokémon''' is stored as a series of 6-byte structures in Generation III. These structures must be aligned on a 4-byte bou...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Data on the evolution of Pokémon is stored as a series of 6-byte structures in Generation III. These structures must be aligned on a 4-byte boundary, and each Pokémon species has 5 such entries, for a total of 40 bytes per species.

In all Generation III games, evolution data is situated between the Pokémon move list data pool and the actual Pokémon move list index; see Move list data structures in Generation III for a list of locations.

Pokémon Evolution Data Structure

Each species has 5 substructures, as Eevee has 5 evolution options. The overall structure is laid out as follows:

Offset Size Type Notes
0x00 6 Substructure First Substructure
0x06 2 Padding due to alignment
0x08 6 Substructure Second Substructure
0x0E 2 Padding due to alignment
0x10 6 Substructure Third Substructure
0x16 2 Padding due to alignment
0x18 6 Substructure Fourth Substructure
0x1E 2 Padding due to alignment
0x20 6 Substructure Fifth Substructure
0x26 2 Padding due to alignment

Pokémon Evolution Data Substructure

The 6-byte substructure is organized as follows:

Offset Size Type Notes
0x00 2 uint16_t Method of evolution - How this Pokémon will evolve. This can be one of the following values:
  • 0x0001 - Evolves by happiness without regards to time of day
  • 0x0002 - Evolves by happiness during the day
  • 0x0003 - Evolves by happiness at night
  • 0x0004 - Evolves by level up
  • 0x0005 - Evolves by trade without items
  • 0x0006 - Evolves by using an item on the Pokémon
  • 0x0007 - Evolves by trading the Pokémon while holding an item
  • 0x0008 - Evolves by level up, but only when Attack is greater than Defense
  • 0x0009 - Evolves by level up, but only when Attack is equal to Defense
  • 0x000A - Evolves by level up, but only when Attack is lower than Defense
  • 0x000B - Evolves by level up, but only when the personality value permits (WurmpleSilcoon evolution)
  • 0x000C - Evolves by level up, but only when the personality value permits (WurmpleCascoon evolution)
  • 0x000D - Evolves by level up, but may spawn another Pokémon if permitted (NincadaNinjask evolution)
  • 0x000E - Evolves by level up, but is only spawned if the conditions permit (NincadaShedinja evolution)
  • 0x000F - Evolves by beauty
0x02 2 uint16_t Parameter - The meaning of this is dependent on the method of evolution - the item, the level, etc. Not used and zeroed out where applicable. Note that the parameter is used for the beauty threshold, but is not used for happiness thresholds.
0x04 2 uint16_t Target Pokémon - The Pokémon which this Pokémon will evolve to. See List of Pokémon by index number (Generation III) for a list of values.

All unused entries will be entirely zeroed-out.