Advertisement
LuigiBlood

problem code

Jul 30th, 2019
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. ddhook_applypatch:
  2. //Format:
  3. //rrrrrrrr Tsssssss dddddddd ...
  4. //r = RAM address, T = Type, s = Size in bytes (aligned to 4), d = Data (size)
  5. //repeat until r = 0
  6. //T = 0, then copy (rrrrrrrr 0sssssss dddddddd ...)
  7. //T = 1, then fill (rrrrrrrr 1sssssss 000000dd)
  8.  
  9. addiu sp,sp,-0x20
  10. sw ra,0x20(sp)
  11.  
  12. addiu s0,0,0
  13.  
  14. li at,DDHOOK_PATCH
  15. sw at,0x1C(sp)
  16. sw s0,0x18(sp)
  17. -;
  18. li v0,ddhook_printf_copy_out_set
  19. li a3,ddhook_string_temp
  20. sw a3,0(v0)
  21.  
  22. addiu a3,sp,0x18
  23. n64dd_dprintf_num(ddhook_string_text)
  24.  
  25. li a1,ddhook_string_temp
  26. li a2,(ddhook_end - ddhook_string_temp)
  27. jal ddhook00_printf_out
  28. nop
  29.  
  30. lw s0,0x18(sp)
  31. addiu s0,s0,1
  32. sw s0,0x18(sp)
  33.  
  34. lw at,0x1C(sp)
  35. lw a0,0(at) //Get Dest
  36. nop
  37. beq a0,0,++ //If 0 then done
  38. nop
  39. lw a2,4(at) //Get Size
  40. addiu a1,at,8 //Get Source
  41. //Check type
  42. sra v0,a2,28
  43. bne v0,0,+
  44. nop
  45.  
  46. //Type 0: Copy
  47. addu at,a1,a2 //Prepare at for next patch
  48. sw at,0x1C(sp)
  49. n64dd_CallRamCopy() //Patch
  50. b - //Loop
  51. nop
  52.  
  53. //Type 1: Fill
  54. +; li a3,0x0FFFFFFF
  55. and a2,a2,a3
  56. addiu at,a1,4 //Prepare at for next patch
  57. lw a1,0(a1)
  58. sw at,0x1C(sp)
  59. n64dd_CallRamFill() //Patch
  60. b -
  61. nop
  62.  
  63. +;
  64. lw ra,0x20(sp)
  65. addiu sp,sp,0x20
  66. jr ra
  67. nop
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement