• 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 Trading Card Game 2 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.

[Ruby] Adding New Moves

I found one glitch after using this method. I use your method destinedjagold in my hack <Which trailer was in my signature> And I have strange failure with display Pokemon Nature names. Some of them become glitchy text <It was not freezing game.>
Again, your move description table is probably why you're getting glitchy natures. Look at this: https://www.pokecommunity.com/posts/8087194/
 
There are tutorials on how to add new attack moves without replacing older or already existing ones.
Yes, I am aware, but they're all for FireRed.
This tutorial will teach you on how to add new moves with Ruby, for the weird people like me who doesn't hack Emerald or FireRed. =/

Anyway, always remember the golden rule in hacking: always save a back-up.
Spoiler:


Now then...
These were my notes while I was doing it with my hack.
And I decided to share it~


[PokeCommunity.com] [Ruby] Adding New Moves


Adding New Attacks In Ruby

(This Tutorial Will Add 157 New Attacks)​

Step 1...
- Navigate to the attack data table.
--- Ruby = 1FB12C
- Select and copy 4,260 (hex = 10A4) bytes of data.
--- Ruby = 1FB12C to 1FC1D0
- Paste it on free space.
--- Example: Your offset: 800000 to 8010A4
- Repoint all references of the attack data to the new offset.
--- Ruby = 1FB12C => 2CB11F08
--- Example: Your offset: 800000 => 00008008
- Repoint the PP data to the new offset + 4 bytes.
--- Ruby = 1FB12C + 4 bytes = 1FB130 => 30B11F08
--- Example: Your offset: 800000 + 4 bytes = 800004 => 04008008

Step 2...
- Navigate back to the attack data table.
--- Ruby = 1FB12C
- Select and copy 1,884 (hex = 75C) bytes of data.
--- Ruby = 1FB12C to 1FB888
- Select and paste 1,884 (hex = 75C) bytes of free space data at the end of the attack data on the new offset.
--- Example: Your offset: 8010A4 to 801800

Step 3...
- Navigate to the attack name table.
--- Ruby = 1F8320
- Select and copy 4,615 (hex = 1207) bytes of data.
--- Ruby = 1F8320 to 1F9527
- Paste it on free space.
--- Example: Your offset: 802000 to 803207
- Repoint all references of the attack data to the new offset.
--- Ruby = 1F8320 => 20831F08
--- Example: Your offset: 802000 => 00208008

Step 4...
- Navigate back to the attack name table.
--- Ruby = 1F8320
- Select and copy 2,041 (hex = 7F9) bytes of data.
--- Ruby = 1F8320 to 1F8B19
- Select and paste 2,041 (hex = 7F9) bytes of free data at the end of the attack name data on the new offset.
--- Example: Your offset: 803207 to 803A00

Step 5...
- Navigate to the attack animation table.
--- Ruby = 1C7168
- Select and copy 1,420 (hex = 58C) bytes of data.
--- Ruby = 1C7168 to 1C76F4
- Select and paste it on free space that ends with a 0, 4, 8 or C.
--- Example: Your offset: 803A04 to 803F90
- Repoint all references of the attack data to the new offset.
--- Ruby = 1C7168 => 68711C08
--- Example: Your Offset: 803A04 => 043A8008

Step 6...
- Navigate back to the attack animation table.
--- Ruby = 1C7168
- Select and copy 628 (hex = 274) bytes of data.
--- Ruby = 1C7168 to 1C73DC
- Select and paste 628 (hex = 274) bytes of free space data at the end of the attack animation table on the new offset.
--- Example: Your offset: 803F90 to 804204

Optional Step...
- Navigate to the attack animation table...
--- Ruby = 3C09D8
- Select and copy 1,420 (hex = 58C) bytes of data.
--- Ruby = 3C09D8 to 3C0F64
- Paste it on free space.
--- Example: Your offset: 804500 to 804A8C
- Repoint all references of the attack data to the new offset.
--- Ruby = 3C09D8 - D8093C08
--- Example: Your offset: 804500 => 00458008
- Navigate back to the attack description table...
--- Ruby = 3C09D8
- Select and copy 628 (hex = 274) bytes of data.
--- Ruby = 3C09D8 to 3C0F64
- Select and paste 628 (hex = 274) bytes of free space data at the end of the attack animation table on the new offset.
--- Example: Your offset: 804A8C to 804D00

Step 7...
- Update the data on PGE's ini file.
--- NumberOfAttacks=511
--- AttackData=&H(new attack data table offset)
--- AttackNames=&H(new attack name table offset)
--- AttackAnimationTable=&H(new attack animation table offset)

Step 8...
- Disable the 6-byte limiter to 00 00 00 00 00 00.
--- Ruby = 120DF4 = B1 20 40 00 81 42 ==> 00 00 00 00 00 00​

[PokeCommunity.com] [Ruby] Adding New Moves


Repoint - "it means that you should replace this address to your new offset."


Select Data - "highlight—or select—the required amount of bytes/data."


[PokeCommunity.com] [Ruby] Adding New Moves


Resource...

[PokeCommunity.com] [Ruby] Adding New Moves


And that's it~
G'luck with your hacks, pipz~

Hi! I followed you tutorial and it works awesome!
But I got a problem with the pokemon natures when I did this
[PokeCommunity.com] [Ruby] Adding New Moves
[PokeCommunity.com] [Ruby] Adding New Moves


And one more thing, I don't know which to follow and which is not
- Select and copy 4,260 (hex = 10A4) bytes of data.
--- Ruby = 1FB12C to 1FC1D0
when In selecting block
if i followed this
- Select and copy 4,260 (hex = 10A4) bytes of data.
it select blocks
from 1FB12C to 1FC1CF
but if I followed this
--- Ruby = 1FB12C to 1FC1D0
from 1FB12C to 1FC1D1 (In other words it selects 4,261 (hex = 10A5) bytes of data)

by the way I use HxD

EDIT: I didn't follow the optional step.
 
Last edited:
Hi! I followed you tutorial and it works awesome!
But I got a problem with the pokemon natures when I did this
[PokeCommunity.com] [Ruby] Adding New Moves
[PokeCommunity.com] [Ruby] Adding New Moves

I cannot see the image. :/

And one more thing, I don't know which to follow and which is not

when In selecting block
if i followed this

it select blocks

but if I followed this

from 1FB12C to 1FC1D1 (In other words it selects 4,261 (hex = 10A5) bytes of data)

by the way I use HxD

Only select 10A4 hex of data. And no, it does not select up to 1FC1D1, but only up to 1FC1D0.

EDIT: I didn't follow the optional step.

You need to follow it, as someone pointed out that the Optional Step is not really optional. :/
 
I cannot see the image. :/



Only select 10A4 hex of data. And no, it does not select up to 1FC1D1, but only up to 1FC1D0.



You need to follow it, as someone pointed out that the Optional Step is not really optional. :/

Thanks. The Image shows the destroyed Nature Names don't why that happened
EDIT here are the images don't know if you can see this now
[PokeCommunity.com] [Ruby] Adding New Moves
[PokeCommunity.com] [Ruby] Adding New Moves
 
Last edited:
Back
Top