Alrighty, I'm gonna try that VM again and see what happens. PC IRC Doesn't work for me, but I got in RHO's.
Wait, so is GetPokemonData some kind of function that accesses the information in r0 given a value for r1? If so I would do something like:
@06D5E8
''''''
branch my routine
''''''
@my routine
'''''start'''''''
ldr r0, .Pokemon_data (just the pointer, not the actual data)
mov r1, #0x3A
ldr r3, .GetPokemonData
''''''rest'''''''''''
and it would return the Pokemon pointed by r0's Current HP and place it in r2 (in this case?).
I think I'm misinterpreting, unless there really is a function as awesome as that.
SetPokemonData obviously works in the same nature as GetPokemonData, I'm just waiting to get corrected here :P
I get everything else pretty much, though the goal of adding and subtracting 4 bytes sorta escapes me (is that just to clear?).
I've only been doing reading things the long way, so I've never actually used these built-in functions (assuming that's what they are).