Thread: Research: FireRed Pokédex Hacking
View Single Post
Old May 13th, 2011 (7:24 AM). Edited May 13th, 2011 by Jambo51.
Jambo51's Avatar
Jambo51 Jambo51 is offline
Glory To Arstotzka
Join Date: Jun 2009
Gender: Male
Nature: Quiet
Posts: 732
Originally Posted by Meta Paradox View Post
Hmm... you guys could edit and control the Unown that can appear on each map now, right? So if you're adding the Sinnoh and Unova listings, why not try to edit some more for the controlled changing of formes for some Pokemon? Lie Cherrim's Overcast Forme appearing only in sunlight, or when giving a certain item to Giratina or Shaymin (possibly a Griseous Orb or Gracidea) that will change their formes. This is especially neccesary for Arceus, with seventeen Plates that can change its forme AND type. So, how about it? :D
And what if I told you i've already started doing some of the basic work needed for that...? I can already switch sprites around based on forme checks, although, I still haven't worked out a way to do type changes.

EDIT: I think that type isn't actually stored in the Pokémon's data. I think the game automatically reads the actual data table stored in the rom to determine type. In order to get TYPE changing formes, I was thinking of have the game run a set of extra checks, firstly checking the pokémon against a list of Pokémon which have formes and which type of forme (male/female sprite (Pikachu), simple sprite switch (Shellos and Gastrodon), sprite and type switch (Arceus)), and then, if it has a forme, run the appropriate check to see if the sprite needs switching. For the type, i'll need to run a LOT of extra checks. Basically, any read of the type of any given Pokémon (whether in Battle, or in status screen - Note that the Pokédex could support it too, but it's better not to really), will need to have those extra checks running and modifying the type behaviours for each given Pokémon individually.

In other words, we have forme 1 Burmy and forme 2 Burmy in our party. The check will get run for BOTH Burmys as it will match one of the forme checks, the first one will return Bug/Grass Type and Sprite number 1 (because of location or whatever it is that changes a Burmy's forme), while the second will return Bug/Steel Type and Sprite number 2. Does that make sense?

How I would go about doing it, would be to have a 650 byte long table (an entry for each Pokémon species) with the following key:
0 - No Forme
1 - Simple Sprite Switch (Including Male/Female Formes)
2 - Sprite and Type Switch

0 Speaks for itself. 1 would run appropriate checks for the species you pass it (if you pass it 0x19, it will check the Pokémon's gender, and then load the appropriate sprite, if you pass it 0x1A6 it will check where the Pokémon was caught, and load the appropriate sprite).
2 is more difficult. It would run a similar check to 1, but it would also have to force the game to bypass reading the normal Pokémon Stats Data, and make it read a separate set of data with a separate set of types.
Hey guys, please check out my recreations of the gen 1 and 2 music on my custom engine at my SoundCloud! - Here!
Reply With Quote