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:
branch my routine
ldr r0, .Pokemon_data (just the pointer, not the actual data)
mov r1, #0x3A
ldr r3, .GetPokemonData
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).
Sure, if you can show me how I record the number of steps taken? I assume I can find clues in the same code that repel/safari zone uses. Since you did the repel port recently maybe you can tell me where it starts :P