Cy-Chan
GSC Hacker
- 152
- Posts
- 20
- Years
- Age 33
- UK, England.
- Seen May 9, 2015
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.
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.
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).
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.-
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: