Advertisement
Guest User

Untitled

a guest
Dec 9th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.46 KB | None | 0 0
  1.  
  2. inject @ 80265220
  3.  
  4.  
  5. .macro branchl reg, address
  6. lis \reg, \address @h
  7. ori \reg,\reg,\address @l
  8. mtctr \reg
  9. bctrl
  10. .endm
  11.  
  12. .macro branch reg, address
  13. lis \reg, \address @h
  14. ori \reg,\reg,\address @l
  15. mtctr \reg
  16. bctr
  17. .endm
  18.  
  19. .macro load reg, address
  20. lis \reg, \address @h
  21. ori \reg, \reg, \address @l
  22. .endm
  23.  
  24. .macro loadf regf,reg,address
  25. lis \reg, \address @h
  26. ori \reg, \reg, \address @l
  27. stw \reg,-0x4(sp)
  28. lfs \regf,-0x4(sp)
  29. .endm
  30.  
  31. .macro backup
  32. stwu r1,-68(r1) # make space for 12 registers
  33. stmw r20,8(r1) # push r20-r31 onto the stack
  34. mflr r0
  35. stw r0,64(sp)
  36. .endm
  37.  
  38. .macro restore
  39. lwz r0,64(sp)
  40. mtlr r0
  41. lmw r20,8(r1) # pop r20-r31 off the stack
  42. addi r1,r1,68 # release the space
  43. .endm
  44.  
  45. .macro intToFloat reg,reg2
  46. xoris \reg,\reg,0x8000
  47. lis r18,0x4330
  48. lfd f16,-0x7470(rtoc) # load magic number
  49. stw r18,0(r2)
  50. stw \reg,4(r2)
  51. lfd \reg2,0(r2)
  52. fsubs \reg2,\reg2,f16
  53. .endm
  54.  
  55. .set ActionStateChange,0x800693ac
  56. .set HSD_Randi,0x80380580
  57. .set HSD_Randf,0x80380528
  58. .set Wait,0x8008a348
  59. .set Fall,0x800cc730
  60.  
  61. .set entity,31
  62. .set player,31
  63.  
  64. #ffa rq done
  65. #ffa end
  66. #team rq
  67. #team end
  68.  
  69. backup
  70.  
  71. ######################
  72. #CHECK FOR NO CONTEST#
  73. ######################
  74.  
  75. load r3,0x80452c6c
  76. lwz r3,0x0(r3)
  77. cmpwi r3,0x0 #check camera type, 1 = no contest
  78. beq gameEndedNormally
  79.  
  80. noContest:
  81. load r3,0x8046b6a1 #get player who ragequit
  82. lbz r30,0(r3) #player who ragequit in r30
  83.  
  84. checkForTeam:
  85. load r3,0x80479da8
  86. lbz r3,0x2(r3)
  87. cmpwi r3,0x1
  88. beq TeamQuit
  89.  
  90. #***************************************************#
  91.  
  92. ####################
  93. #FFA RAGE QUIT LOOP#
  94. ####################
  95. FFA:
  96. load r4,0x80453080 #r3 = player block BA
  97.  
  98. #this loops once for each block
  99. playerBlockCheck:
  100. lwz r0, 0(r4)
  101. cmpwi r0, 0 #an inactive player block will store "0" at offset 0x0
  102. beq+ nextPlayerBlock #so only check active players
  103.  
  104. lbz r0, 0x45(r4) #check player number
  105. cmpw r0,r30 #compare loaded player to ragequitter
  106. beq+ nextPlayerBlock #if equal, move on to next player
  107. mr r3,r0 #if not ragequitter, declare him winner
  108. subi r4,rtoc,0xdd4
  109. li r0,0x0
  110. stw r0,0x0(r4) #zero flags
  111. li r0,0x1
  112. stbx r0,r3,r4 #set winner
  113. b exit
  114.  
  115. nextPlayerBlock:
  116. addi r4, r4, 0xe90 #blocks are 0xe90 in length
  117. b playerBlockCheck
  118.  
  119. ################
  120. #TEAM RAGE QUIT#
  121. ################
  122. TeamQuit:
  123.  
  124. mulli r3,r30,168 #get offset
  125. load r28,0x80479da4 #players match data start
  126. add r3,r3,r28 #get players match data
  127. lbz r3,0x5F(r3) #get quitters team ID
  128. mr r31,r3 #backup quitter ID to r31
  129.  
  130. subi r27,rtoc,0xdd4
  131. li r0,0x0
  132. stw r0,0x0(r27) #zero flags
  133.  
  134.  
  135. li r29,0x0 #set loop count
  136. TeamRQLoop:
  137. mr r3,r29
  138. branchl r14,0x8003241c #branch to PlayerBlock_LoadSlotType
  139. cmpwi r3,0x3 #check if slot is empty
  140. beq TeamRQIncrement
  141.  
  142. mulli r3,r29,168 #get offset
  143. add r3,r3,r28 #get players match data
  144. lbz r3,0x5F(r3) #get players team ID
  145. cmpw r3,r31 #check if same as quitter
  146. beq TeamRQIncrement
  147.  
  148. li r0,1
  149. stbx r0,r29,r27 #store 1 for person not on quitters team
  150.  
  151. TeamRQIncrement:
  152. addi r29,r29,1
  153. cmpwi r29,0x4
  154. blt TeamRQLoop
  155.  
  156. b exit
  157.  
  158. #***************************************************#
  159.  
  160. ############
  161. #NORMAL END#
  162. ############
  163. gameEndedNormally:
  164. load r3,0x80479da8
  165. lbz r3,0x2(r3)
  166. cmpwi r3,0x1
  167. beq teamEnd
  168.  
  169.  
  170. #########
  171. #FFA END#
  172. #########
  173. ffaEnd:
  174.  
  175. subi r27,rtoc,0xdd4
  176. li r0,0x0
  177. stw r0,0x0(r27) #zero flags
  178.  
  179. load r28,0x80479da4 #players match data start
  180. li r29,0x0 #loop count init
  181.  
  182. ffaEndLoop:
  183.  
  184. mr r3,r29
  185. branchl r14,0x8003241c #branch to PlayerBlock_LoadSlotType
  186. cmpwi r3,0x3 #check if slot is empty
  187. beq ffaLost
  188.  
  189. mulli r3,r29,168 #get offset
  190. add r3,r3,r28 #get players match data
  191. lbz r3,0x5D(r3) #check if player won
  192. cmpwi r3,0x0 #check if player won
  193. bne ffaLost
  194.  
  195. li r0,1
  196. stbx r0,r29,r27 #store 1 for person on winning team
  197.  
  198. ffaLost:
  199. addi r29,r29,1
  200. cmpwi r29,0x4
  201. blt ffaEndLoop
  202.  
  203. b exit
  204.  
  205.  
  206.  
  207. ##########
  208. #TEAM END#
  209. ##########
  210. teamEnd:
  211.  
  212. subi r27,rtoc,0xdd4
  213. li r0,0x0
  214. stw r0,0x0(r27) #zero flags
  215.  
  216. load r28,0x80479da4 #players match data start
  217. li r29,0x0 #loop count init
  218.  
  219. TeamEndLoop:
  220. mr r3,r29
  221. branchl r14,0x8003241c #branch to PlayerBlock_LoadSlotType
  222. cmpwi r3,0x3 #check if slot is empty
  223. beq teamLost
  224.  
  225. mulli r3,r29,168 #get offset
  226. add r3,r3,r28 #get players match data
  227. lbz r3,0x5F(r3) #get team ID
  228.  
  229. mulli r3,r3,0xC #get team win offset
  230. add r3,r3,r28
  231. lbz r3,0x24(r3) #get team win value
  232. cmpwi r3,0x0 #1 = lost
  233. bne teamLost
  234.  
  235. li r0,1
  236. stbx r0,r29,r27 #store 1 for person on winning team
  237.  
  238. teamLost:
  239. addi r29,r29,1
  240. cmpwi r29,0x4
  241. blt TeamEndLoop
  242.  
  243. b exit
  244.  
  245.  
  246. #***************************************************#
  247.  
  248. exit:
  249. restore
  250. addi r3, r30, 12
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement