Guest User

TASK4 ASM(J)

a guest
Aug 2nd, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.03 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 "LIB\Super Mario 64 (J) [!].z64"
  10.  
  11. // Title Screen
  12. origin 0xF0DE0
  13. Asciiz("TASK4")
  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. //1up->blue coin
  28. origin 0xEB842
  29. dh 0x30B4 //81330842 30B4
  30. dh 0x0077 //81330844 0077
  31. origin 0xA0600
  32. dh 0x1000 //812E5600 1000
  33.  
  34. //Remove redcoin
  35. origin 0x21BFBC
  36. dh 0x1D00 //810EC1AC 1D00
  37.  
  38. //Remove fires
  39. origin 0x219298
  40. dh 0x1D00 //810E9488 1D00
  41.  
  42. //Remove small bully
  43. origin 0x21B740
  44. dh 0x1D00 //810EB930 1D00
  45.  
  46. //Remove boss bully
  47. origin 0x21B770
  48. dh 0x1D00 //810EB960 1D00
  49.  
  50. //Remove spurt fire
  51. origin 0x219238
  52. dh 0x1D00 //810E9428 1D00
  53.  
  54. //Walk On Lava
  55. origin 0xB728
  56. dh 0x1000 //81250728 1000
  57.  
  58. // LLLposition
  59. origin 0x48B1BC
  60. dh 0x0000 //81189174 0000
  61. dh 0x0700 //81189176 0700
  62. dh 0xE520 //81189178 E520
  63.  
  64. // LLL face orientation
  65. origin 0x48B1C5
  66. dh 0x0000 //8118917C 0000
  67.  
  68. // change star posi
  69. origin 0x48AE2C
  70. dh 0xFFFF //8118987C FFFF
  71. dh 0x02BA //8118987E 02BA
  72. dh 0x181C //81189880 181C
  73.  
  74. // No Music
  75. origin 0xD747C
  76. addiu a1, r0, 0x0000 // 8131C47C 2405 & 8131C47E 0000
  77.  
  78. // Level Reset
  79. origin 0x5771C
  80. nop // 8129C71C 2400
  81. origin 0x57740
  82. nop // 8129C740 2400
  83.  
  84. // Prevent timer reset at start of Koopa race
  85. origin 0x460C
  86. nop // 8124960C 2400
  87.  
  88. // Prevent timer stop at end of Koopa race
  89. origin 0x4630
  90. nop // 81249630 2400
  91.  
  92. // Manual Timer
  93. origin 0x4658
  94. sb k1, 0x9EEE (at) // 81249658 A03B
  95. origin 0x4660
  96. nop // 81249660 2400
  97. //origin 0x6014
  98. //ori t2, t1, 0x0040 // 8024B017 0040
  99. origin 0x8ADC
  100. sb r0, 0x00EE (t5) // 8124DADC A1A0 & 8124DADE 00EE
  101.  
  102. // Star-Grab Timer
  103. origin 0x8AD0
  104. base 0x8024DAD0
  105. lb at, 0x00 (t5)
  106. ori t6, r0, 0x7F
  107. beq r0, at, 0x8024DADC
  108. origin 0x8AE4
  109. sh t6, 0xFA (t5)
  110.  
  111. // Centisecond
  112. origin 0x9DAB8
  113. addiu at, r0, 0x0A
  114. origin 0x9DAF0
  115. mult t9, at
  116. mflo t1
  117. addiu at, r0, 0x03
  118. div t1, at
  119. mflo t2
  120. sh t2, 0x24 (sp)
  121. origin 0x9DB50
  122. addiu a2, a2, 0x71D4
  123.  
  124. // Lag Frame Counter
  125. origin 0xE1a2C
  126. jal 0x8027EF18 // ROM 0x39F18
  127. origin 0x3BB0 // Hijack BUF display
  128. lui t8, 0x8034
  129. lw t7, 0x9F20 (t8) // Read current value
  130. lw t6, 0x9F24 (t8) // Read previous value
  131. sw t7, 0x9F24 (t8) // Copy current value to previous value
  132. subu t5, t7, t6 // Calculate difference between previous and current
  133. lw a3, 0x9F28 (t8) // Load sum
  134. addu a3, a3, t5 // Expect 2 frames difference
  135. addiu a3, a3, 0xFFFE
  136. origin 0x3BE4
  137. sw a3, 0x9F28 (t8) // Save sum
  138. origin 0x39F18 // RAM 0x8027EF18
  139. lui t2,0x8034
  140. lw t3,0x9F20(t2)
  141. addiu t3, t3, 0x0001
  142. sw t3, 0x9F20 (t2) // Add 1 to the video interrupt counter
  143. j 0x80326C18 // Return to normal exception handling path
  144. nop
  145.  
  146. // Lag as Lives
  147. origin 0x3BE0
  148. nop
  149. origin 0x9D86C
  150. lw a3, 0x9F28 (a3)
  151.  
  152. // Hijack Resource Meter
  153. origin 0x2CFC
  154. nop
  155. origin 0x2D04
  156. jal 0x8027E0AC // ROM 0x390AC
  157. origin 0x390AC // RAM 0x8027E0AC
  158.  
  159. // Constant Writes
  160. lui t0, 0x8020
  161. lui t1, 0x8033
  162. lui t2, 0x8034
  163.  
  164. // 120 Star File (Slot 3)
  165. addiu v0, r0, 0x1F10
  166. sh v0, 0x7BE8 (t0) // 81207BE8 1F10
  167. addiu v0, r0, 0xFFCB
  168. sh v0, 0x7BEA (t0) // 81207BEA FFCB
  169. addiu v0, r0, 0x7FFF
  170. sh v0, 0x7BEC (t0) // 81207BEC 7FFF
  171. sh v0, 0x7BEE (t0) // 81207BEE 7FFF
  172. addiu v0, r0, 0x7F7F
  173. sh v0, 0x7BF0 (t0) // 80207BF0 007F & 80207BF1 007F
  174. sh v0, 0x7BF2 (t0) // 80207BF2 007F & 80207BF3 007F
  175. sh v0, 0x7BF4 (t0) // 80207BF4 007F & 80207BF5 007F
  176. sh v0, 0x7BF6 (t0) // 80207BF6 007F & 80207BF7 007F
  177. sh v0, 0x7BF8 (t0) // 80207BF8 007F & 80207BF9 007F
  178. sb v0, 0x7BFA (t0) // 80207BFA 007F
  179. addiu v0, r0, 0x0081
  180. sb v0, 0x7BFB (t0) // 80207BFB 0081
  181. addiu v0, r0, 0x0101
  182. sh v0, 0x7BFC (t0) // 81207BFC 0101
  183. addiu v0, r0, 0x0301
  184. sh v0, 0x7BFE (t0) // 81207BFE 0301
  185. addiu v0, r0, 0x0101
  186. sh v0, 0x7C00 (t0) // 81207C00 0101
  187. addiu v0, r0, 0x0181
  188. sh v0, 0x7C02 (t0) // 81207C02 0181
  189.  
  190. // Remove Time Text
  191. sh r0, 0x71C8 (t1) // 813371C8 0000
  192.  
  193. // Conditionals
  194. lui t0, 0x8020
  195. lui t1, 0x8028
  196. lui t2, 0x8033
  197. lui t3, 0x8034
  198. lui t4, 0x8036
  199.  
  200. // Automatically Reset Timer at Star Select
  201. lb at, 0x9EC9 (t3)
  202. addiu v0, r0, 0x0004
  203. bne at, v0, Skip01 // D0339EC9 0004
  204. nop
  205. sh r0, 0x9EFC (t3) // 81339EFC 0000
  206. Skip01:
  207.  
  208. // Level Reset(L)
  209. lb at, 0x9C31 (t3)
  210. addiu v0, r0, 0x0020
  211. bne at, v0, Skip02 // D0339C31 0020
  212. nop
  213. addiu v0, r0, 0x0008
  214. sb v0, 0x9EAE (t3) // 80339EAE 0008
  215. sh r0, 0x9EF2 (t3) // 81339EF2 0000
  216. sh r0, 0x9EA8 (t3) // 81339EA8 0000
  217. addiu v0, r0, 0x0002
  218. sb v0, 0x9ED8 (t3) // 80339ED8 0002
  219. addiu v0, r0, 0x0005
  220. sh v0, 0x00A4 (t4) // 813600A4 0005
  221. Skip02:
  222.  
  223. // Level Reset Camera Fix
  224. lb at, 0x9ED9 (t3)
  225. addiu v0, r0, 0x001D
  226. beq at, v0, Skip03 // D2339ED9 001D
  227. nop
  228. addiu v0, r0, 0x0001
  229. sh v0, 0x6D2A (t1) // 81286D2A 0001
  230. Skip03:
  231. bne at, v0, Skip04 // D0339ED9 001D
  232. nop
  233. sh r0, 0x6D2A (t1) // 81286D2A 0000
  234. Skip04:
  235.  
  236. // Manual Timer reset on L
  237. lb at, 0x9C31 (t3)
  238. addiu v0, r0, 0x0020
  239. bne at, v0, Skip05 // D0339C31 0020
  240. nop
  241. sh r0, 0x9EFC (t3) // 81339EFC 0000
  242. Skip05:
  243.  
  244. // Star Select(L+R)
  245. lb at, 0x9C31 (t3)
  246. addiu v0, r0, 0x0030
  247. bne at, v0, Skip07 // D0339C31 0030
  248. nop
  249. addiu v0, r0, 0x0008
  250. sb v0, 0x9EAE (t3) // 80339EAE 0008
  251. addiu v0, r0, 0x0004
  252. sh v0, 0x9EC8 (t3) // 81339EC8 0004
  253. addiu v0, r0, 0x0002
  254. sb v0, 0x9ED8 (t3) // 80339ED8 0002
  255. sh r0, 0x9EFC (t3) // 81339EFC 0000
  256. sw r0, 0xFED4 (t2) // 8132FED4 0000 & 8132FED6 0000
  257. lb at, 0x9ED9 (t3)
  258. addiu v0, r0, 0x000D
  259. bne at, v0, Not_THI // D0339ED9 000D
  260. nop
  261. THI:
  262. addiu v0, r0, 0x010A
  263. sh v0, 0x9EDA (t3) // 81339EDA 020A
  264. beq r0, r0, Skip07
  265. nop
  266. Not_THI:
  267. addiu v0, r0, 0x010A
  268. sh v0, 0x9EDA (t3) // 81339EDA 010A
  269. Skip07:
  270.  
  271. // Lag Frame Counter
  272. lb at, 0x9C31 (t3)
  273. addiu v0, r0, 0x0020
  274. bne at, v0, Skip14 // D0339C31 0020
  275. nop
  276. sw r0, 0x9F28 (t3) // 81339F28 0000 & 81339F2A 0000
  277. Skip14:
  278.  
  279. // Lag Frame Counter Reset
  280. lb at, 0x9EC9 (t3)
  281. addiu v0, r0, 0x0004
  282. bne at, v0, Skip15 // D0339EC9 0004
  283. nop
  284. sw r0, 0x9F28 (t3) // 81339F28 0000 & 81339F2A 0000
  285. Skip15:
  286.  
  287. // Return
  288. jr ra
  289. nop
Advertisement
Add Comment
Please, Sign In to add comment