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

Newbie's Guide to Move Hacking (and some addresses)

Cy-Chan

GSC Hacker
152
Posts
19
Years
  • Hi. This isn't a terribly useful tutorial, as tools exist for move hacking anyway, but it's here for anyone who wants it.

    There's also some pointers and addresses at the end that could be used for anything! Perhaps even repointing!

    Attack effects breakdown:

    The attack effects are broke down into 12 different hex bytes. Let's take pound, for example: 00 28 00 64 23 00 00 00 33 00 00 00.

    The first byte, 00, is the effect. Pound's effect is obviously to simply attack. Below are some of the more common move effects.

    Code:
    00 - Hit
    01 - Sleep
    02 - Hit and Poison
    03 - Hit and Heal
    04 - Hit and Burn
    05 - Hit and Freeze
    06 - Hit and Paralyze
    67 - Attack first

    The second byte, 28, is the power. Convert 28 from Hex to Decimal using your trusty Windows Scientific Calculator, and hey-presto, you get 40 (the base power of Pound).

    The third byte, 00, is the type. Pound is normal.

    Code:
    00 - Normal
    01 - Fighting
    02 - Flying
    03 - Poison
    04 - Ground
    05 - Rock
    06 - Bug
    07 - Ghost
    08 - Steel
    09 - Unknown (???)
    0A - Fire
    0B - Water
    0C - Grass
    0D - Electric
    0E - Psychic
    0F - Ice
    10 - Dragon
    11 - Dark

    The fourth byte, 64, is the accuracy of the move. 64 converted from hex to decimal is 100.

    The fifth byte, 23, is the amount of PP the move has. 23 converted to decimal is 35 (Pound's PP).

    The sixth byte, 00, is the effect accuracy. This is mainly used for moves that inflict status conditions, or well, have an effect. Sometimes it doesn't work as imagined.

    For example, you'd think if you set the effect accuracy of Double-Edge to 50% (32), then you'd only recoil half of the time? No. Since it's programmed to always recoil, it doesn't matter if it's set to 00, 32 or 64; it will always recoil.

    The seventh byte, 00, is attack target. This is mainly used for double battles (to hit one, or both of your opponent's Pokémon), but it's also used normally too, for example, letting Swords Dance up your own attack (rather than your opponent's).

    Code:
    00 - Your opponent's Pokémon (default)
    01 - Your own Pokémon
    04 - Random target
    08 - Both of your opponent's Pokémon
    16 - Both of your own Pokémon
    32 - All

    The eighth byte, 00, is priority. 00 means the move has no priority, while 01 means that it does.

    The ninth byte, 33, is contact (so, for example, if Rough Skin will hurt you or not). When set to 33, contact is made, when it's 32, it is not.

    The tenth through twelves bytes are padding. They don't do anything, so leave them be.

    Additional notes:

    When a move is set to 09, it will do precious little damage. As far as I can see, this is because ??? is neither physical nor special, so it simply hits for the attack's base damage, rather than being influenced by the power of the Pokémon using it.

    A move set to 12+ will automatically be special.

    Addresses and Pointers (FireRed only):

    These are just notes that I jotted down while messing around with the pointers (probably useless notes). Sorry if it seems messy.

    Between the two hyphens, I've included descriptions or examples to what the pointer controls.

    247094 - Attack name start location
    24829B - Attack name end location
    250C10 - Attack effects start location
    251CA8 - Attack effects end location
    482834 - Attack description location
    4886E0 - Pointer table for attack descriptions (starts with 34284808)
    137BC8 - Pointer table for the pointer table for attack descriptions (starts with E8864808)

    308A4: 94702408
    Attack list pointer (Battle Screen - Selection)
    -Which attack?
    ATTACK 1 | ATTACK 2
    ATTACK 3 | ATTACK 4-

    D764C: 94702408
    Attack list pointer (Battle Screen - Attacking)
    -POKéMON used ATTACKNAME!-

    13695C: 94702408
    Attack list pointer (Statistics Screen)
    -ATTACK1
    ATTACK2
    ATTACK3
    ATTACK4-

    16368: 040C2508
    Move effect pointer? (In battle)
    -I have no idea what this actually does, but without it, moves become glitchy.-

    2EA9C: 040C2508
    Move target pointer (In battle)
    -Without this set, you'll be able to select any Pokémon as a target.-

    386BC: 040C2508
    Enemy move target pointer (In battle)
    -Without this set, the enemy will continuously attack itself.-

    4105C: 040C2508
    PP total pointer
    -Displays the remaining amount of PP.-

    136950: 040C2508
    Type pointer
    -Gives the moves types.-
     
    Last edited by a moderator:

    X-aveon

    IS BACK!!!!!!!!!!!!!!!!!!!
    233
    Posts
    16
    Years
    • Seen Jun 25, 2012
    um... theres a tool for that. but anyways, nice tutorial. it'll help a lot of hex hackers

    YAY! FIRST POST!
     

    Thrace

    @tion
    1,048
    Posts
    16
    Years
    • Seen Oct 2, 2016
    Thanks a lot for this tutorial Cy-Chan! Its written in a very easy to understand way, I'm sure people will find this helpful.

    I have a few questions though. What do you mean by Priority (the 8th byte), what does it do for the attack? And in the additional notes what byte are you talking about?
     

    DarkFear

    I will ^^
    210
    Posts
    18
    Years
    • NZ
    • Seen Dec 22, 2010
    That's a bunch of great info there.

    For the ninth byte, is this also determining Attack Moves and Special Attack Moves? (32 for Special Attack Moves and 33 for Attack Moves)

    200TH POST LAWL
     
    Last edited:
    1,104
    Posts
    16
    Years
  • Thanks a lot for this tutorial Cy-Chan! Its written in a very easy to understand way, I'm sure people will find this helpful.

    I have a few questions though. What do you mean by Priority (the 8th byte), what does it do for the attack? And in the additional notes what byte are you talking about?

    Priority is for attacks like quick attack and extremespeed.
    Here's a list of effect's I compiled. I thought it might be helpful.
    Spoiler:
    Some of them, I couldn't be bothered looking at what the actual attack did. And when there's nothing it means the effect either isn't programmed into the game, or just not used.
     

    Thrace

    @tion
    1,048
    Posts
    16
    Years
    • Seen Oct 2, 2016
    Priority is for attacks like quick attack and extremespeed.
    Here's a list of effect's I compiled. I thought it might be helpful.
    Spoiler:
    Some of them, I couldn't be bothered looking at what the actual attack did. And when there's nothing it means the effect either isn't programmed into the game, or just not used.
    Doesn't the first bytes do that though? Isn't attacking first an effect?
     

    Cy-Chan

    GSC Hacker
    152
    Posts
    19
    Years
  • Well, I haven't tested it, but I'd believe the priority byte and the effect byte would have to be set to make say, Quick Attack work. It seems completely anal, so it's probably true.

    That's a bunch of great info there.

    For the ninth byte, is this also determining Attack Moves and Special Attack Moves? (32 for Special Attack Moves and 33 for Attack Moves)

    Nah, there was no attack split in the 3rd gen. Contact is really just used for ability triggers.
     
    1,104
    Posts
    16
    Years
  • Doesn't the first bytes do that though? Isn't attacking first an effect?
    Sorry I didn't see this. Umm... Yes it is a bit stupid for quick attack. But there's a somewhat hierarchy of prioritized attacks. And some of them can't use the effect of attack first, as they use different effects.
    You have attacks like Detect and Protect which have an effect and a high priority.
    Then there's extremespeed and quick attack. They both have effects which make them attack first, but when it comes down to it, I think extremespeed has a priority over quick attack.
    But then there's also attacks like counter, which have a low priority. So that they attack after being dealt damage.
    There's probably more, I just can't think of them.
     
    34
    Posts
    15
    Years
    • Seen Nov 19, 2010
    Sorry to revive this thread, but it's really useful.

    I have this doubt about this NOTE:

    Additional notes:

    When a move is set to 09, it will do precious little damage. As far as I can see, this is because ??? is neither physical nor special, so it simply hits for the attack's base damage, rather than being influenced by the power of the Pokémon using it.

    A move set to 12+ will automatically be special.

    Which byte does it stand for? the 7th?
    Because if this is correct, THIS IS A WAY TO INSERT DIAMOND AND PEARL SKILL SYSTEM IN 3d GENARATION.
     
    45
    Posts
    14
    Years
    • Seen May 20, 2015
    Sorry to revive this thread, but it's really useful.

    I have this doubt about this NOTE:

    Additional notes:

    When a move is set to 09, it will do precious little damage. As far as I can see, this is because ??? is neither physical nor special, so it simply hits for the attack's base damage, rather than being influenced by the power of the Pokémon using it.

    A move set to 12+ will automatically be special.

    Which byte does it stand for? the 7th?
    Because if this is correct, THIS IS A WAY TO INSERT DIAMOND AND PEARL SKILL SYSTEM IN 3d GENARATION.

    Bump, someone answer this pls.
     
    5,854
    Posts
    17
    Years
    • Seen Dec 8, 2023
    Sorry to revive this thread, but it's really useful.

    I have this doubt about this NOTE:

    Additional notes:

    When a move is set to 09, it will do precious little damage. As far as I can see, this is because ??? is neither physical nor special, so it simply hits for the attack's base damage, rather than being influenced by the power of the Pokémon using it.

    A move set to 12+ will automatically be special.

    Which byte does it stand for? the 7th?
    Because if this is correct, THIS IS A WAY TO INSERT DIAMOND AND PEARL SKILL SYSTEM IN 3d GENARATION.

    It stands for the third one, as expected.

    Code:
    00 - Normal
    01 - Fighting
    02 - Flying
    03 - Poison
    04 - Ground
    05 - Rock
    06 - Bug
    07 - Ghost
    08 - Steel
    09 - Unknown (???)
    0A - Fire
    0B - Water
    0C - Grass
    0D - Electric
    0E - Psychic
    0F - Ice
    10 - Dragon
    11 - Dark
    Everything before 09 - Unknown (???) is a physical attack, and everything after is a special attack, so it's only natural that the special characteristic continues on after what's there i.e. 12+

    So no, this isn't way to split the physical and special attacks like in 4th gen.
     

    Amabane~*

    Hard Boiled Shinigami
    16
    Posts
    14
    Years
    • Seen Sep 11, 2022
    DPSS in 3rd Gen is possible!

    So no, this isn't way to split the physical and special attacks like in 4th gen.

    Excuse me, but I disagree of you. Because the Japanese hackers discovered a way to do it. One of the unofficial patches for Touhou Puppet Play (aka Touhoumon) adds the Diamond & Pearl Skill System a FR hack. In 3rd Generation, Fire Punch does special-type damage, but with this patch he does physical-type damage, like the 4th Generation games. If you play it , you will see the DPSS on the skills, like the 4th Gen games.. We only need to discover HOW they made it. I'm not sure if hex editing would be the way, but that patch is enough proof of his existence. Maybe this could require hard coding (ASM or C), but a way do exists, that is for sure.

    I has a theory, is something like, they make new types (like a "special Normal" or "physical Fire") and had success to add it on the game. I'll will post it later, because I will make sure that my post won't be misunderstood (English is not my native language and I'm on a hurry here). Yeah, I know this is a not-Pokémon related hack, but all of us can have benefit of this discovery.

    I got only a already patched ROM right now, but I going to make a patch and upload it for anyone interested. You can get some information (in english) in Touhou Wiki. Search on google for "Touhou Wiki" and "Touhou Puupet Play" (since I can't post links with my first post^^)

    On there, in "Unofficial Patches" n.103. is the patch I'm talking about it.

    Sorry for the first post^^
     
    Back
    Top