• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Conquest protagonist in the poll by clicking here.
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Development: Dynamic Pokémon Data

  • 218
    Posts
    11
    Years
    • Seen Nov 12, 2021
    In the Generation III games, almost everything in the data of a pokémon is dynamic. Moves, level, IVs, EVs, nickname.
    But there are things that have always been tied to their 0x1C bytes-long data in the ROM, like type, abilities -you can only have two different-, basestats. I always found that very limitating.
    This hack aims to change that, and allows you to change the type, ability, or basestat of a pokémon just like you would change its move, depending on each individual pokémon and not only its species.

    Dynamic Pokémon data

    [PokeCommunity.com] Dynamic Pokémon Data
    [PokeCommunity.com] Dynamic Pokémon Data
    [PokeCommunity.com] Dynamic Pokémon Data

    These are very simple scripts, I didn't bother making something fancy, you will have to take care of that. The above changes carry over storing your pokémon in the PC, sending it to battle, evolving, etc. So set these you have many solution, a simple script like the one provided, tweaking the wildbattle/givepokemon commands. I may provide them in the future if anyone is interested.
    This hack was done by changing how the data of a pokémon are read and written. I shrinked and simplified the functions, and written a macro so that it's easily customizable. I took the liberty of removing what I think are unecessary fields, like sanity (which can be derived from other data), language (it will always be english), the mew/deoxys bit for obedience (will always be TRUE), atk/def/spe/spa/spd stats (can be derived from other data).
    If you are not interested by the customization of your pokémon, you could simply have the data shrinked and save (a lot) of space in the RAM and saveblocks, allowing the PC to have more pokémon, for example. If you're a little adventurous, you could change anything about your pokémon without changing its species, like sprite, palette. You can make the changes temporary by storing the data in the part that are erased upon storing in the PC. There are many options you can think of.
    It also means that existing saves will have their pokémon becoming garbage, although I can think of a way or two to translate the data from vanilla to Dynamic.
    It is compatible with progressing hacks.

    You can download the code (in assembly) for FireRed and Emerald
    Although the code is in assembly, it can be easily translated in C to be compatible with the decomps, or used as it is.

    Credits

    The PRET Team - Their defines helped me organize this. Plus their awesome resources in general.
    Kingcom - For making the most awesome assembler ever.
    GameFreak/Nintento, etc. for obvious reasons.
     
    Last edited:
    Is there any possibility of the link being restored? It would also be of great help if other people could share the link of this tool.
     
    Back
    Top