Advertisement
Guest User

Draw Text To Screen

a guest
Feb 11th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Draw Text To Screen
  2.  
  3. This code will display the specified text on the television screen.
  4.  
  5. (NTSC-U)
  6. C200A3F0 00000007
  7. 9421FF80 BC410008
  8. 806DA358 80630044
  9. 80630000 3D808002
  10. 618C23E0 7D8903A6
  11. 4E800421 B8410008
  12. 38210080 80010014
  13. 60000000 00000000
  14. C2009640 0000000F
  15. 9421FF80 BC410008
  16. 38600000 388000DC
  17. 38A00001 4800002D
  18. 44726177 20546578
  19. 7420546F 20536372
  20. 65656E20 62792053
  21. 74617220 26205269
  22. 69646566 69000000
  23. 7CC802A6 3D808002
  24. 618C1DF0 7D8903A6
  25. 4E800421 3D808002
  26. 618C1DD0 7D8903A6
  27. 4E800421 B8410008
  28. 38210080 81830000
  29. 60000000 00000000
  30.  
  31. (PAL)
  32. C200A430 00000007
  33. 9421FF80 BC410008
  34. 806DA360 80630044
  35. 80630000 3D808002
  36. 618C2480 7D8903A6
  37. 4E800421 B8410008
  38. 38210080 80010014
  39. 60000000 00000000
  40. C2009680 0000000F
  41. 9421FF80 BC410008
  42. 38600000 388000DC
  43. 38A00001 4800002D
  44. 44726177 20546578
  45. 7420546F 20536372
  46. 65656E20 62792053
  47. 74617220 26205269
  48. 69646566 69000000
  49. 7CC802A6 3D808002
  50. 618C1E90 7D8903A6
  51. 4E800421 3D808002
  52. 618C1E70 7D8903A6
  53. 4E800421 B8410008
  54. 38210080 81830000
  55. 60000000 00000000
  56.  
  57. (NTSC-J)
  58. C200A38C 00000007
  59. 9421FF80 BC410008
  60. 806DA360 80630044
  61. 80630000 3D808002
  62. 618C23A0 7D8903A6
  63. 4E800421 B8410008
  64. 38210080 80010014
  65. 60000000 00000000
  66. C20095DC 0000000F
  67. 9421FF80 BC410008
  68. 38600000 388000DC
  69. 38A00001 4800002D
  70. 44726177 20546578
  71. 7420546F 20536372
  72. 65656E20 62792053
  73. 74617220 26205269
  74. 69646566 69000000
  75. 7CC802A6 3D808002
  76. 618C1DB0 7D8903A6
  77. 4E800421 3D808002
  78. 618C1D90 7D8903A6
  79. 4E800421 B8410008
  80. 38210080 81830000
  81. 60000000 00000000
  82.  
  83. (NTSC-K)
  84. C200A538 00000007
  85. 9421FF80 BC410008
  86. 806DA380 80630044
  87. 80630000 3D808002
  88. 618C24E0 7D8903A6
  89. 4E800421 B8410008
  90. 38210080 80010014
  91. 60000000 00000000
  92. C2009788 0000000F
  93. 9421FF80 BC410008
  94. 38600000 388000DC
  95. 38A00001 4800002D
  96. 44726177 20546578
  97. 7420546F 20536372
  98. 65656E20 62792053
  99. 74617220 26205269
  100. 69646566 69000000
  101. 7CC802A6 3D808002
  102. 618C1EF0 7D8903A6
  103. 4E800421 3D808002
  104. 618C1ED0 7D8903A6
  105. 4E800421 B8410008
  106. 38210080 81830000
  107. 60000000 00000000
  108.  
  109.  
  110.  
  111. #============================================================#
  112. #                           Source                           #
  113. #------------------------------------------------------------#
  114. # bLoadStaticRel Function Return Address Ports:              #
  115. # RMCE - 0x8000A3F0                                          #
  116. # RMCP - 0x8000A430                                          #
  117. # RMCJ - 0x8000A38C                                          #
  118. # RMCK - 0x8000A538                                          #
  119. #============================================================#
  120.  
  121. .macro push_stack size, registers
  122.        stwu r1, \size(r1) # Make space for 30 registers
  123.        stmw r2, 8(r1) # Push r2-r31 onto the stack
  124. .endm
  125.  
  126. .macro absolute_bl register, address
  127.        lis \register, \address@h
  128.        ori \register, \register, \address@l
  129.        mtctr \register
  130.        bctrl
  131. .endm
  132.  
  133. .macro pop_stack registers, size
  134.        lmw \registers, 8(r1) # Pop r2-r31 off the stack
  135.        addi r1, r1, \size # Release the space
  136. .endm
  137.  
  138. .set region, ''
  139.  
  140. .if     (region == 'E' || region == 'e') # RMCE
  141.         .set nw4r_db_DirectPrint_SetupFB, 0x800223E0
  142. .elseif (region == 'P' || region == 'p') # RMCP
  143.         .set nw4r_db_DirectPrint_SetupFB, 0x80022480
  144. .elseif (region == 'J' || region == 'j') # RMCJ
  145.         .set nw4r_db_DirectPrint_SetupFB, 0x800223A0
  146. .elseif (region == 'K' || region == 'k') # RMCK
  147.         .set nw4r_db_DirectPrint_SetupFB, 0x800224E0
  148. .else # Invalid Region
  149.         .abort
  150. .endif
  151.  
  152. # Function Prologue...
  153. push_stack -128, r2
  154.  
  155. # Get the Render Mode (RKSystem->mpVideo()->pRenderMode)
  156. .if     (region == 'E' || region == 'e') # RMCE
  157.         lwz r3, -0x5CA8(r13)
  158. .elseif (region == 'P' || region == 'p') # RMCP
  159.         lwz r3, -0x5CA0(r13)
  160. .elseif (region == 'J' || region == 'j') # RMCJ
  161.         lwz r3, -0x5CA0(r13)
  162. .elseif (region == 'K' || region == 'k') # RMCK
  163.         lwz r3, -0x5C80(r13)
  164. .endif
  165.  
  166. lwz r3, 0x44(r3)
  167. lwz r3, 0(r3)
  168.  
  169. # Call nw4r::db::DirectPrint_SetupFB
  170. absolute_bl r12, nw4r_db_DirectPrint_SetupFB
  171.  
  172. # Function Epilogue...
  173. pop_stack r2, 128
  174.  
  175. # Original Instruction
  176. lwz r0, 20(r1)
  177.  
  178. #============================================================#
  179. #                           Source                           #
  180. #------------------------------------------------------------#
  181. # Draw Debug Bar Call Address Ports:                         #
  182. # RMCE - 0x80009640                                          #
  183. # RMCP - 0x80009680                                          #
  184. # RMCJ - 0x800095DC                                          #
  185. # RMCK - 0x80009788                                          #
  186. #============================================================#
  187.  
  188. .macro push_stack size, registers
  189.        stwu r1, \size(r1) # Make space for 30 registers
  190.        stmw r2, 8(r1) # Push r2-r31 onto the stack
  191. .endm
  192.  
  193. .macro absolute_bl register, address
  194.        lis \register, \address@h
  195.        ori \register, \register, \address@l
  196.        mtctr \register
  197.        bctrl
  198. .endm
  199.  
  200. .macro pop_stack registers, size
  201.        lmw \registers, 8(r1) # Pop r2-r31 off the stack
  202.        addi r1, r1, \size # Release the space
  203. .endm
  204.  
  205. .set region, ''
  206.  
  207. .if     (region == 'E' || region == 'e') # RMCE
  208.         .set nw4r_db_DirectPrint_Printf, 0x80021DF0
  209.         .set nw4r_db_DirectPrint_StoreCache, 0x80021DD0
  210. .elseif (region == 'P' || region == 'p') # RMCP
  211.         .set nw4r_db_DirectPrint_Printf, 0x80021E90
  212.         .set nw4r_db_DirectPrint_StoreCache, 0x80021E70
  213. .elseif (region == 'J' || region == 'j') # RMCJ
  214.         .set nw4r_db_DirectPrint_Printf, 0x80021DB0
  215.         .set nw4r_db_DirectPrint_StoreCache, 0x80021D90
  216. .elseif (region == 'K' || region == 'k') # RMCK
  217.         .set nw4r_db_DirectPrint_Printf, 0x80021EF0
  218.         .set nw4r_db_DirectPrint_StoreCache, 0x80021ED0
  219. .else # Invalid Region
  220.         .abort
  221. .endif
  222.  
  223. # Function Prologue...
  224. push_stack -128, r2
  225.  
  226. li r3, 0   # X coordinate of text start
  227. li r4, 220 # Y coordinate of text start
  228. li r5, 1   # Wrap text
  229.  
  230. bl branch_link_write_printf_statement
  231.  
  232. .string "Draw Text To Screen by Star & Riidefi\0\0"
  233.  
  234. branch_link_write_printf_statement:
  235. mflr r6 # Store the pointer to the String into r6
  236.  
  237. # Call nw4r::db::DirectPrint_Printf
  238. absolute_bl r12, nw4r_db_DirectPrint_Printf
  239.  
  240. # Call nw4r::db::DirectPrint_StoreCache
  241. absolute_bl r12, nw4r_db_DirectPrint_StoreCache
  242.  
  243. # Function Epilogue...
  244. pop_stack r2, 128
  245.  
  246. # Original Instruction
  247. lwz r12, 0(r3)
  248.  
  249.  
  250.  
  251. Notes:
  252. - The text will flicker since we only setup 1 of the 2 framebuffers to be output to via Direct Print.
  253.  
  254. Code Creators: Star, Riidefi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement