destinedjagold
Oh Hai Thar.
- 8,594
- Posts
- 17
- Years
- Stinky/Old/Fart
- On your ceiling...
- Seen Apr 17, 2025
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.
Now then...
These were my notes while I was doing it with my hack.
And I decided to share it~
(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
Repoint - "it means that you should replace this address to your new offset."
Select Data - "highlight—or select—the required amount of bytes/data."
Resource...
And that's it~
G'luck with your hacks, pipz~
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:
![[PokeCommunity.com] [Ruby] Adding New Moves [PokeCommunity.com] [Ruby] Adding New Moves](https://i40.tinypic.com/2exrghi.jpg)
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 [PokeCommunity.com] [Ruby] Adding New Moves](https://i40.tinypic.com/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
![[PokeCommunity.com] [Ruby] Adding New Moves [PokeCommunity.com] [Ruby] Adding New Moves](https://i40.tinypic.com/33f3x2u.jpg)
Repoint - "it means that you should replace this address to your new offset."
Example...
- Repoint the PP data to the new offset + 4 bytes.
--- Ruby = 1FB12C + 4 bytes = 1FB130 => 30B11F08
The underlined reversed offset is the address you'll need to replace.
Example, your selected free offset is 0x820000.
820000 => 00008208
Swap the red ones and add 08 at the end.
So, in this example, search and replace 30B11F08 with your reversed offset, 00008208.
Spoiler:![]()
Spoiler:![]()
Spoiler:![]()
Select Data - "highlight—or select—the required amount of bytes/data."
Example...
- Select and copy 4,260 (hex = 10A4) bytes of data.
--- Ruby = 1FB12C to 1FC1D0
Start copying on the blue arrow...
Spoiler:![]()
...and stop at one byte behind offset 1FC1D0 at the red arrow...
Spoiler:![]()
![[PokeCommunity.com] [Ruby] Adding New Moves [PokeCommunity.com] [Ruby] Adding New Moves](https://i40.tinypic.com/33f3x2u.jpg)
Resource...
![[PokeCommunity.com] [Ruby] Adding New Moves [PokeCommunity.com] [Ruby] Adding New Moves](https://i40.tinypic.com/33f3x2u.jpg)
And that's it~
G'luck with your hacks, pipz~
Last edited: