• 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
11
Years
    • 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
    • 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