add $nativecall command
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# This function implements the $nativecall chat command on GameCube clients.
|
||||
|
||||
entry_ptr:
|
||||
reloc0:
|
||||
.offsetof start
|
||||
|
||||
start:
|
||||
mflr r0
|
||||
stw [r1 + 4], r0
|
||||
stwu [r1 - 0x20], r1
|
||||
bl read
|
||||
call_addr:
|
||||
.zero
|
||||
arg0:
|
||||
.zero
|
||||
arg1:
|
||||
.zero
|
||||
arg2:
|
||||
.zero
|
||||
arg3:
|
||||
.zero
|
||||
arg4:
|
||||
.zero
|
||||
arg5:
|
||||
.zero
|
||||
arg6:
|
||||
.zero
|
||||
arg7:
|
||||
.zero
|
||||
arg8:
|
||||
.zero
|
||||
arg9:
|
||||
.zero
|
||||
resume:
|
||||
mflr r12
|
||||
lwz r0, [r12] # call_addr
|
||||
lwz r3, [r12 + 0x04] # arg0
|
||||
lwz r4, [r12 + 0x08] # arg1
|
||||
lwz r5, [r12 + 0x0C] # arg2
|
||||
lwz r6, [r12 + 0x10] # arg3
|
||||
lwz r7, [r12 + 0x14] # arg4
|
||||
lwz r8, [r12 + 0x18] # arg5
|
||||
lwz r9, [r12 + 0x1C] # arg6
|
||||
lwz r10, [r12 + 0x20] # arg7
|
||||
lwz r11, [r12 + 0x24] # arg8
|
||||
lwz r12, [r12 + 0x28] # arg9
|
||||
mtctr r0
|
||||
bctrl
|
||||
addi r1, r1, 0x20
|
||||
lwz r0, [r1 + 4]
|
||||
mtlr r0
|
||||
blr
|
||||
Reference in New Issue
Block a user