Hacking - DS Generation: Evolution Data

Evolution Data for the DS Pokémon games is stored in data/poketool/personal/evo.narc. Inside the NARC Wrapper, the format (as a C-struct) is:

struct evo_option {
    short method;      // See Methods, below.
    short argument;    // An argument for methods requiring one.
    short destination; // National Dex ID of end-result of evolution.
};

struct evolutions {
    struct evo_option options[7]; // Up to 7 evolution possibilities. Those not used
                                  // are set to 0.
    short padding;                // Set to zero.
};

The file consists of an array of 501 instances of struct evolutions representing each Pokémon in National order. The second structure (index 1) is Bulbasaur, not index 0.

Methods

There are 26 different values for the methods of evolution. They are:

  1. 0x00 - No Evolution: All the remaining values are 0.
  2. 0x01 - Happiness: Argument is 0.
  3. 0x02 - Happiness During the Day: Argument is 0.
  4. 0x03 - Happiness During the Night: Argument is 0.
  5. 0x04 - Leveling: Argument is the level at which the evolution occurs.
  6. 0x05 - Trading: Argument is 0.
  7. 0x06 - Trading with Held Item: Argument is the item-id of the item that must be held.
  8. 0x07 - Item: Argument is the item-id of the item that must be applied to the Pokémon.
  9. 0x08 - Attack > Defense at Level: Argument is the level at which the evolution occurs.
  10. 0x09 - Attack = Defense at Level: Argument is the level at which the evolution occurs.
  11. 0x0A - Attack < Defense at Level: Argument is the level at which the evolution occurs.
  12. 0x0B - Personality mod 10 < 5 at Level: Argument is the level at which the evolution occurs.
  13. 0x0C - Personality mod 10 > 4 at Level: Argument is the level at which the evolution occurs.
  14. 0x0D - Try to Create a New Pokémon: Argument is the level at which the evolution occurs. This should probably always appear with a second method of 0x0E, as it marks that a second Pokémon may be created if enough space exists in the party. (e.g. to Ninjask)
  15. 0x0E - Create a New Pokémon if Space Exists: Argument is the level at which the evolution occurs. (e.g. to Shedinja)
  16. 0x0F - Beauty Level: Argument is unknown, but 0xAA for evolution into Milotic (probably minimal threshold).
  17. 0x10 - Male-only Item: Argument is the item-id of the item that must be applied to the Pokémon.
  18. 0x11 - Female-only Item: Argument is the item-id of the item that must be applied to the Pokémon.
  19. 0x12 - Level up during Daytime with Held Item: Argument is the item-id of the item that must be held.
  20. 0x13 - Level up during Nighttime with Held Item: Argument is the item-id of the item that must be held.
  21. 0x14 - Level up with Move: Argument is the move-id of the move that must be known.
  22. 0x15 - Level with Pokémon in Party: Argument is the National Dex number of the accompanying Pokémon.
  23. 0x16 - Female-only Level: Argument is the level at which the evolution occurs.
  24. 0x17 - Male-only Level: Argument is the level at which the evolution occurs.
  25. 0x18 - Level in Mt. Coronet: Argument is 0.
  26. 0x19 - Level in Eterna Forest: Argument is 0.
  27. 0x1A - Level on Route 217: Argument is 0.

Item IDs

The following is a list of known item-ids of item-contingent evolutions

Move IDs

The following is a list of known move-ids of move-contingent evolutions