Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ddhook_applypatch:
- //Format:
- //rrrrrrrr Tsssssss dddddddd ...
- //r = RAM address, T = Type, s = Size in bytes (aligned to 4), d = Data (size)
- //repeat until r = 0
- //T = 0, then copy (rrrrrrrr 0sssssss dddddddd ...)
- //T = 1, then fill (rrrrrrrr 1sssssss 000000dd)
- addiu sp,sp,-0x20
- sw ra,0x20(sp)
- addiu s0,0,0
- li at,DDHOOK_PATCH
- sw at,0x1C(sp)
- sw s0,0x18(sp)
- -;
- li v0,ddhook_printf_copy_out_set
- li a3,ddhook_string_temp
- sw a3,0(v0)
- addiu a3,sp,0x18
- n64dd_dprintf_num(ddhook_string_text)
- li a1,ddhook_string_temp
- li a2,(ddhook_end - ddhook_string_temp)
- jal ddhook00_printf_out
- nop
- lw s0,0x18(sp)
- addiu s0,s0,1
- sw s0,0x18(sp)
- lw at,0x1C(sp)
- lw a0,0(at) //Get Dest
- nop
- beq a0,0,++ //If 0 then done
- nop
- lw a2,4(at) //Get Size
- addiu a1,at,8 //Get Source
- //Check type
- sra v0,a2,28
- bne v0,0,+
- nop
- //Type 0: Copy
- addu at,a1,a2 //Prepare at for next patch
- sw at,0x1C(sp)
- n64dd_CallRamCopy() //Patch
- b - //Loop
- nop
- //Type 1: Fill
- +; li a3,0x0FFFFFFF
- and a2,a2,a3
- addiu at,a1,4 //Prepare at for next patch
- lw a1,0(a1)
- sw at,0x1C(sp)
- n64dd_CallRamFill() //Patch
- b -
- nop
- +;
- lw ra,0x20(sp)
- addiu sp,sp,0x20
- jr ra
- nop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement