Introduction
This article provides detailed documentation on the Move data structures in the GBA games. Move names are stored elsewhere.
If you have something to add feel free to comment and I’d be happy to see people contributing to these articles. After every article will follow some related links that will help you get additional information.
Always remember that ROM images are illegal if you do not own the actual game and should only be used for personal backup reasons. If you like a game, please buy it and help the producers make new games.
Specs.
A base stats structure is a 34-byte piece of data in the Advanced Generation games.
Move Data Structure | ||
---|---|---|
Data | Type | Description |
Effect | byte | This is the move’s effect number. Some moves share the same effect number. Effectless moves have an Effect number of 0x00. |
Base Power | byte | This is the move’s Base Power which is used when calculating inflicted damage. |
Type | byte | This is the move’s Type. |
Accuracy | byte | This is the move’s accuracy. Divide this value by 256 to get a % accuracy. An accuracy of 0x00 means that it will never fail. |
PP | byte | The move’s base Power Points. |
Effect Accuracy | byte | This is the effects’s accuracy. Divide this value by 100 to get a % accuracy. An accuracy of 0x00 means that the effect will always occur. |
“Affects Whom” | byte | This determines who the move will hit on a 2on2 battle |
Priotiry | byte | Priority determines the move’s speed, for example Extremespeed will always hit first. The byte is signed which means that it can be either positive or negative. The higher the number is, the faster the move is. |
Special Flags | byte | A group of bit level flags that determine whether the move is affected by items such as King’s Rock or Brightpowder etc. See below for more. |
Padding | 3 bytes | Always equals 0000. It is used as a divider/padding between the data entries. |
Additional References
Types (decimal)
00 Normal 09 ??? 01 Fighting 10 Fire 02 Flying 11 Water 03 Poison 12 Grass 04 Ground 13 Electric 05 Rock 14 Psychic 06 Bug 15 Ice 07 Ghost 17 Dark 08 Steel
“Affects Whom” table
Note than only Spikes has a value of 0x40.
0x00 Selected target 0x01 Last opponent who moved 0x02 Unused 0x04 Random target 0x08 Both opponents 0x10 User 0x20 Both opponents and partner 0x40 Opponent field 0x80 Unused
Special Flags
Format (bit level): 00?? ???? 0 Empty 0 Empty ? 1: Affected by King’s Rock ? 1: Affected By Brightpowder ? 1: Affected by Snatch (Stat Altering) ? 1: No Damage For Opponent ? 1: Affects Opponent 0: Affects User ? 1: Physical Contact (Touch)
Sound moves
Moves that make sound and are therefore negated by the Soundproof ability.
It is unknown where this data is located.
- Grasswhistle
- Growl
- Heal Bell
- Hyper Voice
- Metal Sound
- Perish Song
- Roar
- Screech
- Sing
- Snore
- Supersonic
- Uproar
Maximum PP
maxPP = floor((PP*20/100)*3 + PP)
Signed byte
Use this function to convert the Priority value to a readable number.
function signedbyte($number) {
if ($number < 128) { return $number; }
return $number-256;
}