Adding more attacks to Fire Red and Emerald!

Hello. Today I will be writing about how to add more attacks to Fire Red and Emerald. Please note that this will only apply to the English versions of these games. If you are using a different version you will need to find the appropriate offsets. I will also be assuming that you already know how to repoint data and insert ASM routines. If for some reason you don’t wish to add the attacks yourself please use Pokemon Game Editor. This is meant for more advanced users.

Some of you may have heard of a ROM hacker named Jambo51. He is a ROM hacker that created the first ROM base with added Pokemon. While working on it he realized that the level up format would have to be changed in order to support more than 511 moves. This is all based on the work that he started; I’ve simply added on to it.

To begin you’ll want to repoint the attack names. The names are 13 bytes per name and the original length of all the names is 4615 bytes. Repoint the current data to free space. Pad the data with “ACACACACACACACFF0000000000” for every new name you want to add. Offsets for the original data are below.

Next up will be the attack data. The attack data is 12 bytes per attack and the original length of all the data is 4260 bytes. Repoint the current data to free space. Pad the data with “000000000000000000000000” for every new attack that you want to add. The offsets for the data are below.

Also keep in mind that there are pointers for the PP data. The pointers will have these same offsets plus 4.

Next you will be repointing the move description table. The data is a pointer, or 4 bytes per attack and the original length of the table is 1420 bytes. Repoint the current table to free space. Pad the data with a pointer for any existing description for every new attack that you want to add. The offsets for the table are below.

Next you have to repoint the attack animation table. The data is a pointer, or 4 bytes per attack and the original length of the table is 1420 bytes. Repoint the current table to free space. Pad the data with a pointer for any existing animation for every new attack that you want to add. The offsets for the table are below.

As far as repointing goes, you are done at this point when dealing with Fire Red. When dealing with Emerald, however, you have contest attack data to repoint as well. The data is 8 bytes per attack and the original length of the data is 2840 bytes. Repoint the current data to free space. Pad the data with “0000000000000000” for every new attack that you want to add. The offset for the table is below.

At this point you are done with the repointing. Now you just need to do a few things to make the attacks work properly. There is a limiter that needs to be changed in order for the attack names to be used. Write “00000000000013E0” at the offset for your version.

Yet again we are done when it comes to Fire Red but we have to do a little more when it comes to Emerald due to the contest data. Write “0000000000000000” at the following offset. This seems to do the same but for contests.

At the next offset, write “00000000000000E0” to change a limiter that seems to be related to the attack animations for contests.

At this point you’ve done most of what you need to do. If you don’t need more than 511 attacks, you are done. If you do need more than 511, you will need to insert the following ASM routines. The instructions are with the respective routines.

Once those ASM routines are inserted it is time to for some boring stuff. The level up tables for each Pokemon need to be changed to the new format used by these routines. The format is the following with “0000FF” as the terminator.

[MOVE - Half-Word - Reverse Hex] [Level - Byte]

Unfortunately this is a lot to do but it is needed for the hack to work. Luckily if you do not wish to convert the level up tables yourself, you can use Pokemon Game Editor to add more attacks and it will convert the tables for you.

Once you’ve done all this, you are done. At this point you may want to edit inis for any programs you may want to use your ROM with. The following are the entries you would need to edit for Pokemon Game Editor.

AttackNames=31977C
NumberOfAttacks=354
AttackData=31C898
ContestMoveData=58C2B4
AttackDescriptionTable=61C524
AttackAnimationTable=2C8D6C
MoveTableHack=True

This should be all you need to add more attacks to your ROM. Now you can go ahead creating animations, effects, and all that good stuff. Please feel free to comment if you have any questions.