Guest User

TASK3 ASM(J)

a guest
Jul 17th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.93 KB | None | 0 0
  1. arch n64.cpu
  2. endian msb
  3. //output "", create
  4.  
  5. include "LIB\N64.inc"
  6. include "LIB\macros.inc"
  7.  
  8. origin 0x0
  9. insert "Super Mario 64 (J) [!].z64"
  10.  
  11. // Title Screen
  12. origin 0xF0DE0
  13. Asciiz("TASK3")
  14. origin 0xF0DE8
  15. Asciiz(" JPN")
  16.  
  17. // All Stars Yellow
  18. origin 0xAC4F8
  19. beq r0, r0, 0xAC51C // 812F14F8 1000
  20. origin 0x65750
  21. beq r0, r0, 0x65760 // 812AA750 1000
  22.  
  23. //Always Have Special Triple Jump
  24. //origin 0x26334
  25. //nop // 8126B334 2400
  26.  
  27. //no pipe
  28. origin 0x2188D0
  29. dh 0x1D00 //810E8AC0 1D00
  30.  
  31. //no wind
  32. origin 0x105D0
  33. dh 0x1000 //812555D0 1000
  34. origin 0x25144
  35. dh 0x1000 //8126A144 1000
  36. origin 0x218FA0
  37. dh 0x1D00 //810E9190 1D00
  38.  
  39. //no big balls
  40. origin 0x21BB68
  41. dh 0x1D00 //810EBD58 1D00
  42.  
  43. //no water
  44. origin 0x8B5C0
  45. dh 0x2419 //812D05C0 2419
  46. origin 0xFD5DC
  47. dh 0x2419 //81381BCC 2419
  48.  
  49. // THIposition
  50. origin 0x42AA9C
  51. dh 0x1CDE //8118FB74 1CDE
  52. dh 0xFE00 //8118FB76 FE00
  53. dh 0xE76E //8118FB78 E76E
  54.  
  55. // change star from 3goombas
  56. origin 0x42A7C7 //
  57. db 0x7A
  58. origin 0x42A7D5 //
  59. db 0x00
  60. origin 0x42A7DA //
  61. dh 0x3E1C
  62.  
  63. // change 3goombas(star) position
  64. origin 0x42A7C8
  65. dh 0xED00 //8118FCE0 ED00
  66. dh 0xF4DA //8118FCE2 F4DA
  67. dh 0x1933 //8118FCE4 1933
  68.  
  69. // No Music
  70. origin 0xD747C
  71. addiu a1, r0, 0x0000 // 8131C47C 2405 & 8131C47E 0000
  72.  
  73. // Level Reset
  74. origin 0x5771C
  75. nop // 8129C71C 2400
  76. origin 0x57740
  77. nop // 8129C740 2400
  78.  
  79. // Prevent timer reset at start of Koopa race
  80. origin 0x460C
  81. nop // 8124960C 2400
  82.  
  83. // Prevent timer stop at end of Koopa race
  84. origin 0x4630
  85. nop // 81249630 2400
  86.  
  87. // Manual Timer
  88. origin 0x4658
  89. sb k1, 0x9EEE (at) // 81249658 A03B
  90. origin 0x4660
  91. nop // 81249660 2400
  92. //origin 0x6014
  93. //ori t2, t1, 0x0040 // 8024B017 0040
  94. origin 0x8ADC
  95. sb r0, 0x00EE (t5) // 8124DADC A1A0 & 8124DADE 00EE
  96.  
  97. // Star-Grab Timer
  98. origin 0x8AD0
  99. base 0x8024DAD0
  100. lb at, 0x00 (t5)
  101. ori t6, r0, 0x7F
  102. beq r0, at, 0x8024DADC
  103. origin 0x8AE4
  104. sh t6, 0xFA (t5)
  105.  
  106. // Centisecond
  107. origin 0x9DAB8
  108. addiu at, r0, 0x0A
  109. origin 0x9DAF0
  110. mult t9, at
  111. mflo t1
  112. addiu at, r0, 0x03
  113. div t1, at
  114. mflo t2
  115. sh t2, 0x24 (sp)
  116. origin 0x9DB50
  117. addiu a2, a2, 0x71D4
  118.  
  119. // Lag Frame Counter
  120. origin 0xE1a2C
  121. jal 0x8027EF18 // ROM 0x39F18
  122. origin 0x3BB0 // Hijack BUF display
  123. lui t8, 0x8034
  124. lw t7, 0x9F20 (t8) // Read current value
  125. lw t6, 0x9F24 (t8) // Read previous value
  126. sw t7, 0x9F24 (t8) // Copy current value to previous value
  127. subu t5, t7, t6 // Calculate difference between previous and current
  128. lw a3, 0x9F28 (t8) // Load sum
  129. addu a3, a3, t5 // Expect 2 frames difference
  130. addiu a3, a3, 0xFFFE
  131. origin 0x3BE4
  132. sw a3, 0x9F28 (t8) // Save sum
  133. origin 0x39F18 // RAM 0x8027EF18
  134. lui t2,0x8034
  135. lw t3,0x9F20(t2)
  136. addiu t3, t3, 0x0001
  137. sw t3, 0x9F20 (t2) // Add 1 to the video interrupt counter
  138. j 0x80326C18 // Return to normal exception handling path
  139. nop
  140.  
  141. // Lag as Lives
  142. origin 0x3BE0
  143. nop
  144. origin 0x9D86C
  145. lw a3, 0x9F28 (a3)
  146.  
  147. // Hijack Resource Meter
  148. origin 0x2CFC
  149. nop
  150. origin 0x2D04
  151. jal 0x8027E0AC // ROM 0x390AC
  152. origin 0x390AC // RAM 0x8027E0AC
  153.  
  154. // Constant Writes
  155. lui t0, 0x8020
  156. lui t1, 0x8033
  157. lui t2, 0x8034
  158.  
  159. // 120 Star File (Slot 3)
  160. addiu v0, r0, 0x1F10
  161. sh v0, 0x7BE8 (t0) // 81207BE8 1F10
  162. addiu v0, r0, 0xFFCB
  163. sh v0, 0x7BEA (t0) // 81207BEA FFCB
  164. addiu v0, r0, 0x7FFF
  165. sh v0, 0x7BEC (t0) // 81207BEC 7FFF
  166. sh v0, 0x7BEE (t0) // 81207BEE 7FFF
  167. addiu v0, r0, 0x7F7F
  168. sh v0, 0x7BF0 (t0) // 80207BF0 007F & 80207BF1 007F
  169. sh v0, 0x7BF2 (t0) // 80207BF2 007F & 80207BF3 007F
  170. sh v0, 0x7BF4 (t0) // 80207BF4 007F & 80207BF5 007F
  171. sh v0, 0x7BF6 (t0) // 80207BF6 007F & 80207BF7 007F
  172. sh v0, 0x7BF8 (t0) // 80207BF8 007F & 80207BF9 007F
  173. sb v0, 0x7BFA (t0) // 80207BFA 007F
  174. addiu v0, r0, 0x0081
  175. sb v0, 0x7BFB (t0) // 80207BFB 0081
  176. addiu v0, r0, 0x0101
  177. sh v0, 0x7BFC (t0) // 81207BFC 0101
  178. addiu v0, r0, 0x0301
  179. sh v0, 0x7BFE (t0) // 81207BFE 0301
  180. addiu v0, r0, 0x0101
  181. sh v0, 0x7C00 (t0) // 81207C00 0101
  182. addiu v0, r0, 0x0181
  183. sh v0, 0x7C02 (t0) // 81207C02 0181
  184.  
  185. // Remove Time Text
  186. sh r0, 0x71C8 (t1) // 813371C8 0000
  187.  
  188. // Conditionals
  189. lui t0, 0x8020
  190. lui t1, 0x8028
  191. lui t2, 0x8033
  192. lui t3, 0x8034
  193. lui t4, 0x8036
  194.  
  195. // Automatically Reset Timer at Star Select
  196. lb at, 0x9EC9 (t3)
  197. addiu v0, r0, 0x0004
  198. bne at, v0, Skip01 // D0339EC9 0004
  199. nop
  200. sh r0, 0x9EFC (t3) // 81339EFC 0000
  201. Skip01:
  202.  
  203. // Level Reset(L)
  204. lb at, 0x9C31 (t3)
  205. addiu v0, r0, 0x0020
  206. bne at, v0, Skip02 // D0339C31 0020
  207. nop
  208. addiu v0, r0, 0x0008
  209. sb v0, 0x9EAE (t3) // 80339EAE 0008
  210. sh r0, 0x9EF2 (t3) // 81339EF2 0000
  211. sh r0, 0x9EA8 (t3) // 81339EA8 0000
  212. addiu v0, r0, 0x0002
  213. sb v0, 0x9ED8 (t3) // 80339ED8 0002
  214. addiu v0, r0, 0x0005
  215. sh v0, 0x00A4 (t4) // 813600A4 0005
  216. Skip02:
  217.  
  218. // Level Reset Camera Fix
  219. lb at, 0x9ED9 (t3)
  220. addiu v0, r0, 0x001D
  221. beq at, v0, Skip03 // D2339ED9 001D
  222. nop
  223. addiu v0, r0, 0x0001
  224. sh v0, 0x6D2A (t1) // 81286D2A 0001
  225. Skip03:
  226. bne at, v0, Skip04 // D0339ED9 001D
  227. nop
  228. sh r0, 0x6D2A (t1) // 81286D2A 0000
  229. Skip04:
  230.  
  231. // Manual Timer reset on L
  232. lb at, 0x9C31 (t3)
  233. addiu v0, r0, 0x0020
  234. bne at, v0, Skip05 // D0339C31 0020
  235. nop
  236. sh r0, 0x9EFC (t3) // 81339EFC 0000
  237. Skip05:
  238.  
  239. // Star Select(L+R)
  240. lb at, 0x9C31 (t3)
  241. addiu v0, r0, 0x0030
  242. bne at, v0, Skip07 // D0339C31 0030
  243. nop
  244. addiu v0, r0, 0x0008
  245. sb v0, 0x9EAE (t3) // 80339EAE 0008
  246. addiu v0, r0, 0x0004
  247. sh v0, 0x9EC8 (t3) // 81339EC8 0004
  248. addiu v0, r0, 0x0002
  249. sb v0, 0x9ED8 (t3) // 80339ED8 0002
  250. sh r0, 0x9EFC (t3) // 81339EFC 0000
  251. sw r0, 0xFED4 (t2) // 8132FED4 0000 & 8132FED6 0000
  252. lb at, 0x9ED9 (t3)
  253. addiu v0, r0, 0x000D
  254. bne at, v0, Not_THI // D0339ED9 000D
  255. nop
  256. THI:
  257. addiu v0, r0, 0x010A
  258. sh v0, 0x9EDA (t3) // 81339EDA 020A
  259. beq r0, r0, Skip07
  260. nop
  261. Not_THI:
  262. addiu v0, r0, 0x010A
  263. sh v0, 0x9EDA (t3) // 81339EDA 010A
  264. Skip07:
  265.  
  266. // Lag Frame Counter
  267. lb at, 0x9C31 (t3)
  268. addiu v0, r0, 0x0020
  269. bne at, v0, Skip14 // D0339C31 0020
  270. nop
  271. sw r0, 0x9F28 (t3) // 81339F28 0000 & 81339F2A 0000
  272. Skip14:
  273.  
  274. // Lag Frame Counter Reset
  275. lb at, 0x9EC9 (t3)
  276. addiu v0, r0, 0x0004
  277. bne at, v0, Skip15 // D0339EC9 0004
  278. nop
  279. sw r0, 0x9F28 (t3) // 81339F28 0000 & 81339F2A 0000
  280. Skip15:
  281.  
  282. // Return
  283. jr ra
  284. nop
Advertisement
Add Comment
Please, Sign In to add comment