add client function for debugging movement data
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
.meta hide_from_patches_menu
|
||||
.meta name="MovementDebug"
|
||||
.meta description=""
|
||||
.meta show_return_value
|
||||
|
||||
# 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
|
||||
Reference in New Issue
Block a user