• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Forum moderator applications are now open! Click here for details.
  • 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.

Adding New Moves and Creating New Move Effects

itman

Back to ROM hacking. :D
98
Posts
16
Years
  • Age 30
  • Seen Feb 5, 2014
This is a tutorial on how to add new moves to Pokemon Fire Red without replacing old ones, and a start on creating new move effects. This info was founded by Jambo51, and the original thread can be found here:

http://www.pokecommunity.com/showthread.php?t=263479

Due to it being a tad confusing to some (because it was never written to be a tutorial in the first place), I thought I would make it easier to follow because this is huge, and I feel like many hacks could benefit from this. This is for Fire Red BPRE 1.0 (aka FR US 1.0) by the way. To know if you have a BPRE ROM, load it up and watch the title screen. If the "Presents" after the Gamefreak symbol doesn't show up, you have BPRE. I hope this makes it easier for people to understand how to do it.

What's needed:
1. FIre Red BPRE 1.0 ROM (aka FR US 1.0)
2. A Hex Editor (I'll be using Hex Workshop).
3. Pokemon Game Editor by Gamer2020. (Download it here: http://www.pokecommunity.com/showthread.php?t=265635).
4. As Jambo excellently puts it, *PATIENCE*.


PART ONE - ADDING NEW MOVES WITHOUT REPLACING EXISTING ONE

Step One
Spoiler:


Step Two

Spoiler:



Step Three

Spoiler:



Step Four

Spoiler:



Step Five

Spoiler:


Step Six

Spoiler:



Step Seven

Spoiler:



Step Eight

Spoiler:



Step Nine

Spoiler:



Step Ten

Spoiler:



Step Eleven

Spoiler:



Step Twelve

Spoiler:



Step Thirteen

Spoiler:



Step Fourteen

Spoiler:



Step Fifteen

Spoiler:



Step Sixteen

Spoiler:



Step Seventeen

Spoiler:



Step Eighteen

Spoiler:



Step Nineteen

Spoiler:



Step Twenty

Spoiler:



Step Twenty-One

Spoiler:



Step Twenty-Two

Spoiler:



From Here...

Spoiler:




PART 2 - CREATING NEW MOVE EFFECTS

Step One

Spoiler:



Step Two

Spoiler:



Step Two and a Half (hehe)

Spoiler:



Step Three

Spoiler:



Step Four

Spoiler:



Step Five

Spoiler:



Step Six

Spoiler:


But what if we want to add multiple effects?
For example, Flare Blitz?

Jambo51 made a way to do so.


DON'T MOVE ON UNLESS YOU UNDERSTAND EVERYTHING ELSE!

Spoiler:



Now, for more complicated moves, other moves need to be dissected and experimented with to be found. The Hammer Arm code is my own, while the Flare Blitz code is Jambo's. Here are a few more. If you have successfully made a move effect, please let me know and I'll update it to this post.

Spoiler:


Quiver Dance -Made by pawell6

Spoiler:


Coil - Made by Garuga17

Spoiler:


Close Combat - Made by pawell6

Spoiler:


Note: this guide does not cover assigning different animations other than the inherited ones. I will add it soon once I figure out how to do it. ;)

EDIT: Take a look at this thread to make custom animations, by Chaos Rush: http://www.pokecommunity.com/showthread.php?t=281520

EDIT2: Everyone do this too. Update PGE's ini file (Open up PGE, goto Help > Update > ROM ini file). Then, go to where we were changing the pointers for the attack data and such, and there should be a new pointer at the bottom that says "AttackAnimationPointer". Change that to your new location for the attack animations (the one originally at 0x1C68F4, in my examples I placed it at 0x90336C).
 
Last edited:

timson733333

Woah.
135
Posts
16
Years
WHOA

whoawhoawhoawhoawhoa

This is amazing. I love how you adapted Jambo's tutorial into an easy, picture-followable tutorial. And adding the effects - I don't have time to do it right now but this will be VERY VERY VERY useful in the future. Thank you! :)

but I base most of my experiments on Ruby and all of this is for FireRed

/ragemovetofirered
 
Last edited:
1,323
Posts
16
Years
  • Seen Dec 9, 2023
In case anyone is wondering about attack animations, here is what I've documented on it:
http://www.pokecommunity.com/showthread.php?t=281520

Hopefully with itman's tutorial, we'll finally start seeing more hacks with Gen IV/V/custom moves. I linked to my thread so people won't make new moves using existing animations, because custom animations are cool :P
 

TheOrangePichu

Currently working on new hack
49
Posts
12
Years
Funny, I was just thinking of this the other day. Finally, now with Jambo's patch, Rush's Pokemon Sprites, and now the ability to insert new moves, we can finally have 4th and 5th gen Pokemon and there moves in Pokemon Fire Red! Now if only we could add new abilities...
 

FirEmerald

Pokemon reverse engineer
47
Posts
11
Years
  • Age 26
  • Seen Jul 18, 2015
Did you know that someone made a repointer for pokemon GBA games that would simplify this process?
 

Jambo51

Glory To Arstotzka
736
Posts
14
Years
  • Seen Jan 28, 2018
Excellent tutorial, sir. Although, I did notice you forgot to change the animations pointer in PGE's ini, which could lead to bugs down the line. :P

Funny, I was just thinking of this the other day. Finally, now with Jambo's patch, Rush's Pokemon Sprites, and now the ability to insert new moves, we can finally have 4th and 5th gen Pokemon and there moves in Pokemon Fire Red! Now if only we could add new abilities...

We CAN add abilities (as I have done in my 649 Patch Project). Unfortunately, however, the vast majority can only be inserted at an ASM level, making it largely inaccessible to most hackers. Some can be inserted at the Battle Scripting level though, such as adding the Multitype clause to Transform.
 

timson733333

Woah.
135
Posts
16
Years
I tried doing this for Ruby, but you lost me at Step 15. Where is the Attack Animation offset?

It's not in roms.ini. You have to find it yourself. Same thing happened to me, so I moved to FireRed :/

Also, when we select, is 4260 bytes in hex or in decimal?
 

DoesntKnowHowToPlay

Tiny Umbrella with Lots and Lots of Good
265
Posts
12
Years
  • Seen Feb 24, 2024
This looks like it will be very helpful for people to start learning, but I'd like to point out that that Hammer Arm script will not pierce Clear Body like in the vanilla games- you have to do a little more work. (This is actually quite important as one of the most well-known users of Hammer Arm is Metagross.)

Using JPAN's old thread on Battle Scripts, I was able to piece together one that does:

Edit: This script is old and will fail on misses/hitting immunities, look on page 4 for a better one

Spoiler:


And the decompiled logic for those wondering what I'm doing:

Spoiler:


Also, a bit of cautionary advice- if any of the effects you're inserting are important enough that you want the AI to use them in battle, make sure they replace appropriate effects. For example, there was a Japanese hack that replaced Nightmare's somewhat useless effect with one similar to Relic Song (10% chance to inflict Sleep), which is fun for the player, but was useless for the AI because it would only use the attack if either it was their only option or the foe was already asleep. I currently have no idea how the AI treats effects in unused slots, so be careful with those.
 
Last edited:

LCCoolJ95

Limited Capacity
638
Posts
14
Years
It's not in roms.ini. You have to find it yourself. Same thing happened to me, so I moved to FireRed :/

Also, when we select, is 4260 bytes in hex or in decimal?
I tried using a technique that incorporated using Fire Red's hex values. I was going to copy the beginning of the hex values and find them in the Ruby rom. It didn't work. Though, I found the first two hex values of the animations from Fire Red and in Ruby. The rest didn't match up though...
 
1,323
Posts
16
Years
  • Seen Dec 9, 2023
I tried using a technique that incorporated using Fire Red's hex values. I was going to copy the beginning of the hex values and find them in the Ruby rom. It didn't work. Though, I found the first two hex values of the animations from Fire Red and in Ruby. The rest didn't match up though...
Pointers are going to be different between ROMs. The Attack Animation offset is a table, and a table in terms of ROM hacking, is a collection of pointers that the game refers to. So obviously tables will be completely different, but they will be in the same format. In order to find the Attack Animation Table in Ruby, what you should do is this:

1. Go to the offset of the table in a FireRed ROM
2. Go to the offset that the first pointer lists in the table
3. NOW search for that hex data in a Ruby ROM
4. Look at the offset that the search took you in the Ruby ROM, then convert it to a pointer
5. Search for your new pointer in the Ruby ROM
6. You should now be at the Animation Table for Ruby
 
4
Posts
11
Years
  • Seen Jan 18, 2013
Would this apply to Hm's as well?
And would this allow you to give tms an Hm's effect (i.e. Tm Dig actually Digging with the same effects of Dive)
 
1,323
Posts
16
Years
  • Seen Dec 9, 2023
@itman: Your Wake-Up Slap script doesn't work. If the opponent is not asleep, it works fine. But if the opponent is asleep, the game freezes.
 

itman

Back to ROM hacking. :D
98
Posts
16
Years
  • Age 30
  • Seen Feb 5, 2014
@itman: Your Wake-Up Slap script doesn't work. If the opponent is not asleep, it works fine. But if the opponent is asleep, the game freezes.

I just tested it and it worked for me. All I did was edit smellingsalt's effect to check for sleep and then wake them up. So all I changed was two bytes.
 

LCCoolJ95

Limited Capacity
638
Posts
14
Years
I've successfully added 125 or more moves to the game. The question is, how come every time I try to use that move in game, the move does crap? Seriously, I tried using Blue Flare, but the game just reset itself, and when I tried using Bolt Strike, the game froze. And, when I tried to check out the description in the Summary window of either move, a bunch of random symbols and numbers appeared, freezing the game. Can someone please help me with this? I'm trying to make a Black 2/White 2 demake for Ruby, and I need the extra moves to work. :/

Maybe it's because there is no animation data...where is the tutorial for that?
 
Last edited:
69
Posts
11
Years
  • Seen Jul 22, 2019
Does anyone else have errors with PGE when trying to edit the newer versions of Psywave, Focus Energy, and Reflect? It's weird, but yeah...

Also, when using the moves WITHOUT removing the limiter it says Bulbasaur used a NORMAL move when trying to use a move I added. When I got rid of the limiter it made it so that even the trainer I'm battling's pokemon moves say that. For example it'd be like Bulbasaur used a normal move. Foe Charmander used a normal move. help? lol

On to trying move effects =.= I fail

EDIT: Where did the the offset 0x1D6947 come from for the flare blitz part?
 
Last edited:

timson733333

Woah.
135
Posts
16
Years
Also, when using the moves WITHOUT removing the limiter it says Bulbasaur used a NORMAL move when trying to use a move I added. When I got rid of the limiter it made it so that even the trainer I'm battling's pokemon moves say that. For example it'd be like Bulbasaur used a normal move. Foe Charmander used a normal move. help? lol

At 0xD75FC, you are supposed to overwrite the bytes with 00 00 00 00 00 00. Not 00 00 00 00 00 00 00 00. Overwriting the last two will make every move say "X used a <TYPE> move!" This is another error in the guide that should be fixed.
 

itman

Back to ROM hacking. :D
98
Posts
16
Years
  • Age 30
  • Seen Feb 5, 2014
At 0xD75FC, you are supposed to overwrite the bytes with 00 00 00 00 00 00. Not 00 00 00 00 00 00 00 00. Overwriting the last two will make every move say "X used a <TYPE> move!" This is another error in the guide that should be fixed.

*Fixed. ;) Thanks for letting me know, I didn't even realize I put too many 00's lol.
 
69
Posts
11
Years
  • Seen Jul 22, 2019
At 0xD75FC, you are supposed to overwrite the bytes with 00 00 00 00 00 00. Not 00 00 00 00 00 00 00 00. Overwriting the last two will make every move say "X used a <TYPE> move!" This is another error in the guide that should be fixed.

:D thank youu. I was thinking that I probably screwed up somewhere. After all I am very bad at this.
 
Back
Top