Advertisement
fishguy6564

Check if Player Should go Backwards (WIP)

Jul 9th, 2021 (edited)
1,454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .macro CALL symbol
  2. lis     r18,\symbol@h
  3. ori     r18,r18,\symbol@l
  4. mtctr   r18
  5. bctrl
  6. .endm
  7.  
  8. .set sqrt, 0x8001B094
  9.  
  10. stwu r1,-256(r1)
  11. stmw r4,8(r1)
  12. mflr r14
  13. mr r20,r3
  14. mr r8, r4
  15. lwz r3,12(r20)
  16. lis r4,-32768
  17. cmpw r4,r29
  18. bge endSubroutine
  19. lis r4,-32384
  20. cmpw r4,r29
  21. ble endSubroutine
  22. mr r4,r29
  23. mr r7,r4
  24.  
  25. lwz r5, -0x18(r4)
  26.  
  27. lwz r5,48(r4)
  28. lis r15,-32612
  29. lwz r19,-28816(r15)
  30. lwz r19,12(r19)
  31. rlwinm r17,r5,2,22,29
  32. li r5,0
  33. rlwinm r18,r5,2,22,29
  34. lwzx r17,r19,r17
  35. lwzx r18,r19,r18
  36. mr r3,r18
  37. mr r4,r17
  38. bl determineKMPDirection
  39. cmpwi r3,0
  40. lwz r3,12(r20)
  41. beq lololol
  42. lwz r3,8(r20)
  43. lololol:
  44.  
  45. lbz r5, -0x18(r29)
  46. cmpwi r5, 0
  47. bne endSubroutine
  48. lbz r5, -0x17(r29)
  49. cmpwi r5, 0
  50. beq endSubroutine
  51. li r5, 0
  52. stb r5, -0x17(r29)
  53.  
  54. mr r4, r3
  55. lwz r3, 0x30(r7)
  56.  
  57. bl determineNearestKMPPoint
  58.  
  59. endSubroutine:
  60. mtlr r14
  61. lmw r4,8(r1)
  62. addi r1,r1,256
  63. b end
  64.  
  65. determineKMPDirection:
  66. stwu r1,-256(r1)
  67. stmw r4,8(r1)
  68. lfs f0,12(r3)
  69. lfs f1,12(r4)
  70. fcmpo cr0,f0,f1
  71. li r3,0
  72. bge setForwardFlag
  73. li r3,1
  74. setForwardFlag:
  75. lmw r4,8(r1)
  76. addi r1,r1,256
  77. blr
  78.  
  79.  
  80. getPlayerVector3:
  81. stwu r1, -256(r1)
  82. stmw r4, 8(r1)
  83. mflr r14
  84.  
  85. lis r15, 0x809C
  86. lwz r15, -0x2EF0(r15)
  87. lwz r15, 0x20(r15)
  88. slwi r17, r3, 2
  89. lwzx r15, r15, r17
  90. lwz r15, 0x18(r15)
  91. addi r15, r15, 0x758
  92.  
  93. mr r3, r15
  94.  
  95. mtlr r14
  96. lmw r4,8(r1)
  97. addi r1,r1,256
  98. blr
  99.  
  100. getEnemyPointVector3:
  101. stwu r1, -256(r1)
  102. stmw r4, 8(r1)
  103. mflr r14
  104.  
  105. lis r15, 0x809C
  106. lwz r15, -0x70D8(r15)
  107. lwz r15, 0x10(r15)
  108. lwz r15, 0(r15)
  109. mr r9, r15
  110. clrlslwi  r16, r3, 16,2
  111. lwzx r15, r15, r16
  112. cmpwi r4, 0
  113. lwz r3, 0xC(r15)
  114. beq goForward
  115. lwz r3, 0x8(r15)
  116. goForward:
  117.  
  118. lbz r3, 0(r3)
  119. cmpw r3, r8
  120. bne skipThisAdjustment
  121. li r15, -1
  122. skipThisAdjustment:
  123. mr r3, r15
  124.  
  125.  
  126. mtlr r14
  127. lmw r4,8(r1)
  128. addi r1,r1,256
  129. blr
  130.  
  131. getMaxEnemyPoints:
  132. stwu r1, -256(r1)
  133. stmw r4, 8(r1)
  134. mflr r14
  135.  
  136. lis r15, 0x809C
  137. lwz r15, -0x70D8(r15)
  138. lwz r15, 0x10(r15)
  139. lhz r3, 4(r15)
  140.  
  141. mtlr r14
  142. lmw r4,8(r1)
  143. addi r1,r1,256
  144. blr
  145.  
  146. determineNearestKMPPoint:
  147. stwu r1,-256(r1)
  148. stmw r4,8(r1)
  149. mflr r14
  150.  
  151. mr r18, r4
  152.  
  153. BL getPlayerVector3
  154. mr r15, r3
  155.  
  156. BL getMaxEnemyPoints
  157. mr r5, r3
  158.  
  159.  
  160.  
  161. lis r16, 0x8160
  162. lis r17, 0x7F80
  163. stw r17, 4(r16)
  164. li r17, 0
  165.  
  166. distanceDeterminationLoop:
  167.  
  168.  
  169. mr r4, r18
  170. mr r3, r17
  171. BL getEnemyPointVector3
  172. cmpwi r3, -1
  173. beq doNotReplace
  174.  
  175. mr r9, r3
  176. lwz r4, 4(r9)
  177. mr r3, r15
  178. BL determineDistance
  179.  
  180.  
  181. lfs f0, 4(r16)
  182. fcmpo cr0, f0, f1
  183. ble doNotReplace
  184. stfs f1, 4(r16)
  185. stw r9, 8(r16)
  186. doNotReplace:
  187.  
  188. addi r17, r17, 1
  189. cmpw r17, r5
  190. blt distanceDeterminationLoop
  191. exitLoop:
  192.  
  193. lwz r3, 8(r16)
  194.  
  195. cmpwi r18, 0
  196. lwz r4, 0xC(r3)
  197. beq skipThis
  198. lwz r4, 8(r3)
  199. skipThis:
  200. mr r3, r4
  201.  
  202. li r5, 0
  203. stw r5, 4(r16)
  204. stw r5, 8(r16)
  205.  
  206. mtlr r14
  207. lmw r4,8(r1)
  208. addi r1,r1,256
  209. blr
  210.  
  211.  
  212. determineDistance:
  213. stwu r1,-256(r1)
  214. stmw r4,8(r1)
  215. mflr r14
  216.  
  217. lfs f10, 8(r3)
  218. lfs f11, 4(r3)
  219. lfs f12, 0(r3)
  220.  
  221. lfs f13, 8(r3)
  222. lfs f14, 4(r3)
  223. lfs f15, 0(r3)
  224.  
  225. subf f10, f10, f13
  226. subf f11, f11, f14
  227. subf f12, f12, f15
  228.  
  229. fmul f10, f10, f10
  230. fmul f11, f11, f11
  231. fmul f12, f12, f12
  232.  
  233. fadd f10, f10, f11
  234. fadd f10, f10, f12
  235.  
  236. fmr f1, f10
  237. CALL sqrt
  238.  
  239. mtlr r14
  240. lmw r4,8(r1)
  241. addi r1,r1,256
  242. blr
  243.  
  244. end:
  245.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement