73 lines
1.4 KiB
ArmAsm
73 lines
1.4 KiB
ArmAsm
.meta name="MovementDebug"
|
|
.meta description=""
|
|
.meta show_return_value
|
|
|
|
.versions 3OE1
|
|
|
|
# Usage examples:
|
|
# Read movement data 09 fparam1:
|
|
# $patch MovementDebug e=0x09 f=1 r=1
|
|
# Write to movement data 09 iparam6:
|
|
# $patch MovementDebug e=0x09 i=6 v=8
|
|
# Write to movement data 36 fparam1 (v is interpreted as float if it contains a '.'):
|
|
# $patch MovementDebug e=0x36 f=1 v=60.0
|
|
|
|
entry_ptr:
|
|
reloc0:
|
|
.offsetof start
|
|
start:
|
|
mflr r12
|
|
b get_data_ptr
|
|
get_data_ptr_ret:
|
|
mflr r11
|
|
mtlr r12
|
|
|
|
li r3, 0
|
|
lwz r7, [r11] # table index
|
|
cmplwi r7, 0x60
|
|
bgelr
|
|
|
|
lwz r8, [r13 - 0x5B70]
|
|
mulli r7, r7, 0x30
|
|
add r7, r7, r8
|
|
|
|
lwz r0, [r11 + 12] # value
|
|
lwz r9, [r11 + 16] # read-only
|
|
|
|
lwz r4, [r11 + 4] # fparam number
|
|
subi r4, r4, 1
|
|
cmplwi r4, 6
|
|
bge not_fparam
|
|
rlwinm r4, r4, 2, 0, 31
|
|
lwzx r3, [r7 + r4]
|
|
cmplwi r9, 0
|
|
bnelr
|
|
stwx [r7 + r4], r0
|
|
blr
|
|
|
|
not_fparam:
|
|
lwz r4, [r11 + 8] # iparam number
|
|
subi r4, r4, 1
|
|
cmplwi r4, 6
|
|
bgelr
|
|
rlwinm r4, r4, 2, 0, 31
|
|
addi r4, r4, 0x18
|
|
lwzx r3, [r7 + r4]
|
|
cmplwi r9, 0
|
|
bnelr
|
|
stwx [r7 + r4], r0
|
|
blr
|
|
|
|
get_data_ptr:
|
|
bl get_data_ptr_ret
|
|
e: # Movement data index
|
|
.data 0xFFFFFFFF
|
|
f: # Float param index
|
|
.zero
|
|
i: # Int parameter index
|
|
.zero
|
|
v: # Value
|
|
.zero
|
|
r: # Read-only
|
|
.zero
|