** You will need to understand Part 1 of this tutorial before you can decompress the files used in any other parts**
Editing moves works pretty much like in the GBA games. You can attempt to make new moves by mixing and matching the different move effects available and manipulating accuracy, damage etc. I remember seeing a post on a forum somewhere where someone posted every Gen IV - VI move that was possible to remake using gen III effects so you can try searching for that if you want ideas.
The move data is pretty much the same in Colosseum and XD but differs slightly for a few bytes. A significant difference is that XD has the Gen IV style physical/special split on shadow moves.
Also of note is that all the shadow moves are simply recorded as normal type moves and the battle routine automatically calculates the move effectiveness as a shadow move (always neutral in colo; super effective on non-shadow pokemon, not very effective on shadow pokemon in XD) when it detects a move that is meant to be a shadow move. There doesn't appear to be any marker for the shadow moves in the move data. The game seems to decide based on the id of the move (i.e. move 0x164 in colo which is shadow rush and moves 0x164-175 in XD which are the shadow moves starting with shadow blitz and ending with shadow half).
The full move list is available on Github. There is also a list of each of the move effects (same as in RS/FRLG) in order and an enumeration for each of the possible values for the target.
A lot of data that was represented by 1 bit in the gba games gets a whole byte in these games. Each move has a series of flags in its data like whether or not it is blocked by protected or affected by the king's rock. Set the value to 1 for true or 0 for false. I represent these boolean variables by putting a '?' at the end because a full description takes up a lot of room on the table.
The first move (pound) is in common_rel.fdat at offset 0x11E048 in colo and offset 0xA2748 in XD. The size of each move is 0x38 (56) in colo and in XD. The offsets are how many bytes from the first byte of the move's entry the data for that variable is.
N.B. Setting the physical/special flag on a normal move is not enough to make it adopt the physical/special split. It sucks, I know...
Also HMs aren't available in the game and the only effect they have is that they can't be deleted without a move tutor. Removing the HM flag should allow the moves to be deleted. However, this hasn't been tested yet and there is also an HM flag in the TM and HM list in the start.dol which could have an effect.
Damage seems to be part of a move effect. This means that no matter how much base power you give a move, if the move's effect is the same as leer's then it will decrease the target's defense and do no damage. You would need to use rock smash's effect which is damage as well as lowering defense and you could change the effect accuracy as you like.
Move data table
|Variable||Size (bytes)||Colosseum Offset||XD Offset|
|Move Priority||1||0x00||0x00||(Look up a gen III move tutorial to understand how priority works. It isn't obvious for negative priorities like counter but is basically 255 minus the value you want. i.e. a priority of -3 is represented by 252 = 0xFC)|
|Blocked by protect?||1||0x07||0x07|
|Magic coat reflects?||1||0x08||0x08|
|Snatch steals move?||1||0x09||0x09|
|Mirror move copies?||1||0x0A||0x0A|
|King's rock affects?||1||0x0B||0x0B|
|Is an HM?||1||0x12||0x12|
|ID for Move's Name||2||0x22||0x22|
|ID for Animation||2||0x32||0x32|
|Physical/Special||1||N/A||0x13||XD Shadow Moves Only|
|Description Text ID||2||0x2E||0x2E||This points to text in the string table contained in start.dol.|
|Recoil Flat||1||0x13||0x14||Moves like Hyper Beam, Jump Kick, Thrash, Psycho Boost, and Double edge have this flag set.|
Interestingly there is an entry after shadow half in XD which doesn't appear in the game and has a little bit of data missing. If you navigate to the string its name id points to then you find the text "????". The move is unselectable in battle probably because it doesn't have an animation set in its data and one probably doesn't exist for it. The id for the string of its description points to the text "this move can't be used because the heart's door is shut".
Similarly in Colosseum there is an entry after shadow rush with incomplete data which shares a few values with the XD move. Its name id also points to the text "????".
Edited by evandixon
Update table formatting