• 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?".
  • 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

252
Posts
10
Years
  • Age 27
  • Seen Jul 6, 2019

RuFF

Hope you're having a RuFF day!
365
Posts
11
Years
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~


33f3x2u.jpg


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​

33f3x2u.jpg


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


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


33f3x2u.jpg


Resource...

33f3x2u.jpg


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
picture.php
picture.php


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:

destinedjagold

You can contact me in PC's discord server...
8,593
Posts
16
Years
  • Age 33
  • Seen Dec 23, 2023
Hi! I followed you tutorial and it works awesome!
But I got a problem with the pokemon natures when I did this
picture.php
picture.php

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. :/
 

RuFF

Hope you're having a RuFF day!
365
Posts
11
Years
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
doYhyo5.png
W2scToc.png
 
Last edited:
Back
Top