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:
|0x06||2||Padding due to alignment|
|0x0E||2||Padding due to alignment|
|0x16||2||Padding due to alignment|
|0x1E||2||Padding due to alignment|
|0x26||2||Padding due to alignment|
Pokémon Evolution Data Substructure
The 6-byte substructure is organized as follows:
|0x00||2||uint16_t|| Method of evolution - How this Pokémon will evolve. This can be one of the following values:
|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 friendship 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.
|This data structure article is part of Project Games, a Bulbapedia project that aims to write comprehensive articles on the Pokémon games.|