View Single Post
Old July 18th, 2008 (10:17 AM). Edited April 15th, 2010 by Logan.
Cy-Chan's Avatar
Cy-Chan Cy-Chan is offline
GSC Hacker
    Join Date: Jan 2005
    Location: UK, England.
    Age: 26
    Nature: Timid
    Posts: 152
    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.

    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.

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

    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 3 | ATTACK 4-

    D764C: 94702408
    Attack list pointer (Battle Screen - Attacking)

    13695C: 94702408
    Attack list pointer (Statistics Screen)

    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.-
    Reply With Quote