• 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?".
  • Forum moderator applications are now open! Click here for details.
  • 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
  • Age 33
  • 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
  • Age 29
  • 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
  • Age 33
  • 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
14
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
  • Age 34
  • 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