Advertisement
Guest User

Untitled

a guest
Nov 1st, 2017
3,946
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.94 KB | None | 0 0
  1. .org 0x861c0
  2. !main:
  3. addiu sp, sp, $ffe8
  4. sw ra, $14 (SP)
  5. jal $370000
  6. nop
  7. !end:
  8. lw ra, $14 (SP)
  9. jr ra
  10. addiu sp, sp, $0018
  11.  
  12. .org 0x7d0000
  13. !main2:
  14. addiu sp, sp, $ffe8
  15. sw ra, $14 (SP)
  16. lui t0, $8034
  17. lw t1, $b17c (t0)
  18. lui at, $0C00
  19. ori at, at, $0227
  20. bne at, t1, !endahsiufrbuzasf
  21. nop
  22. lui t2, $8037
  23. lhu t3, $fffc (T2)
  24. lhu t1, $afa0 (T0)
  25. andi t5, t1, $0300
  26. beq t5, r0, !skipthissetting
  27. nop
  28. andi t5, t5, $0100
  29. sh t5, $fffe (T2)
  30. !skipthissetting:
  31. andi t1, t1, $0020
  32. sh t1, $fffc (T2)
  33. beq t3, t1, !endahsiufrbuzasf
  34. nop
  35. beq t1, r0, !endahsiufrbuzasf
  36. nop
  37. !shoothat:
  38. lui a0, $8036
  39. lw a0, $1158 (A0)
  40. addiu a1, r0, $00aa
  41. lui a2, $1300
  42. jal $29edcc
  43. ori a2, a2, $10b8
  44. addiu at, r0, $00ff
  45. sw at, $017c (V0)
  46. lui t2, $8037
  47. lhu t2, $fffe (T2)
  48. srl t2, t2, $8
  49. sw t2, $0144 (V0)
  50. sw t2, $00f0 (V0)
  51.  
  52. lui at, $42e8
  53. mtc1 at, f2
  54. lwc1 f0, $00a4 (V0)
  55. add.s f0, f0, f2
  56. swc1 f0, $00a4 (V0)
  57.  
  58. lui t1, $8034
  59. lhu t2, $c536 (T1)
  60. sw t2, $00d0 (V0)
  61. lhu t2, $c538 (T1)
  62. lhu t3, $b19e (T1)
  63. add t2, t2, t3
  64. sw t2, $00c8 (V0)
  65. sw t2, $00d4 (V0)
  66.  
  67. lui at, $42c8
  68. mtc1 at, f6
  69.  
  70.  
  71.  
  72. lui t4, $8038
  73. lhu t7, $00d2 (v0)
  74. sub t7, r0, t7
  75. andi t7, t7, $ffff
  76. sra t8, t7, $4
  77. sll t9, t8, $2
  78. addu t4, t4, t9
  79. lwc1 f4, $6000 (T4)
  80. mul.s f8, f4, f6
  81. swc1 f8, $00b0 (v0)
  82.  
  83. lwc1 f10, $7000 (T4)
  84. mul.s f18, f10, f6
  85. swc1 f18, $00b8 (v0)
  86. lui a0, $5023
  87. jal $2ca144
  88. ori a0, a0, $0081
  89.  
  90. !endahsiufrbuzasf:
  91. lw ra, $14 (SP)
  92. jr ra
  93. addiu sp, sp, $0018
  94.  
  95.  
  96. .org 0x7d1700
  97. !portalposition:
  98. addiu sp, sp, $ffe8
  99. sw ra, $14 (SP)
  100. jal $2a04c0
  101. addiu a0, r0, $00fb
  102. lhu t1, $0002 (v1)
  103. andi t1, t1, $fffb
  104. sh t1, $0002 (V1)
  105. sw r0, $00b8 (V1)
  106. lui at, $3f80
  107. sw at, $002c (V1)
  108. sw at, $0034 (V1)
  109. lui at, $3f80
  110. sw at, $0030 (V1)
  111. lw t2, $0144 (V1)
  112. sw t2, $00f0 (V1)
  113.  
  114. lw t1, $014c (V1)
  115. addiu at, r0, $1
  116. beq t1, at, !droptoground
  117. nop
  118. lw t0, $0180 (V1)
  119. lui at, $c2c8
  120. mtc1 at, f4
  121. lwc1 f2, $001c (t0)
  122. mul.s f2, f2, f4
  123. lwc1 f12, $00a0 (V1)
  124. add.s f2, f2, f12
  125. swc1 f2, $00a0 (v1)
  126.  
  127.  
  128. lwc1 f2, $0024 (t0)
  129. mul.s f2, f2, f4
  130. lwc1 f12, $00a8 (V1)
  131. add.s f2, f2, f12
  132. swc1 f2, $00a8 (V1)
  133. lw t1, $008c (V1)
  134. andi t1, t1, $fffe
  135. //sw t1, $008c (V1)
  136. beq r0, r0, !nopositionrot
  137. nop
  138. !droptoground:
  139. LWC1 F12, $00A0 (V1)
  140. LWC1 F10, $00A4 (V1)
  141. LW A2, $00A8 (V1)
  142. LUI AT, $4300
  143. MTC1 AT, F16
  144. JAL $80381794
  145. ADD.S F14, F10, F16
  146. lwc1 f2, $00a4 (V1)
  147. swc1 f0, $00a4 (V1)
  148.  
  149.  
  150. !nopositionrot:
  151. lw ra, $14 (SP)
  152. jr ra
  153. addiu sp, sp, $0018
  154.  
  155.  
  156. //disable shooting portals into portals
  157. //list at 80371c00
  158. .org 0x7d1900
  159. !checkcoll:
  160. addiu sp, sp, $ffe8
  161. sw ra, $14 (SP)
  162. lui a0, $1300
  163. jal $277f50
  164. ori a0, a0, $10b8
  165. sw v0, $000c (SP)
  166. lui a2, $8034
  167. addiu a2, a2, $d488
  168. !loop21111:
  169. lui t2, $8037
  170. lw t6, $0144 (v1)
  171. sll t6, t6, $A
  172. add t2, t2, t6
  173. !checkobjects11:
  174. lw t3, $1c00 (T2)
  175. beq t3, a2, !thisisoutobject
  176. nop
  177. addiu t2, t2, $4
  178. lw t3, $1c00 (T2)
  179. addiu at, r0, $ffff
  180. bne t3, at, !checkobjects11
  181. nop
  182.  
  183. lui t2, $8037
  184. lw t6, $0144 (v1)
  185. sll t6, t6, $A
  186. add t2, t2, t6
  187. !checkobjects1122:
  188. lw t3, $1c00 (T2)
  189. beq t3, r0, !thisisoutobject
  190. nop
  191. beq r0, r0, !checkobjects1122
  192. addiu t2, t2, $4
  193. !thisisoutobject:
  194. sw r0, $1c00 (T2)
  195. lh t1, $0074 (a2)
  196. beq t1, r0, !endofthisloop21111111
  197. nop
  198. lui at, $42c8
  199. mtc1 at, f0
  200. lwc1 f2, $00a0 (A2)
  201. lwc1 f12, $00a0 (V1)
  202. sub.s f2, f2, f12
  203. abs.s f2, f2
  204. c.lt.s f2, f0
  205. nop
  206. bc1f !endofthisloop21111111
  207. nop
  208. lwc1 f2, $00a4 (A2)
  209. lwc1 f12, $00a4 (V1)
  210. sub.s f2, f2, f12
  211. abs.s f2, f2
  212. c.lt.s f2, f0
  213. nop
  214. bc1f !endofthisloop21111111
  215. nop
  216. lwc1 f2, $00a8 (A2)
  217. lwc1 f12, $00a8 (V1)
  218. sub.s f2, f2, f12
  219. abs.s f2, f2
  220. c.lt.s f2, f0
  221. nop
  222. bc1f !endofthisloop21111111
  223. nop
  224. lw t6, $020c (A2)
  225. lw t7, $000c (SP)
  226. beq t6, t7, !endofthisloop21111111
  227. nop
  228. sw a2, $1c00 (T2)
  229. bne t3, r0, !endofthisloop21111111
  230. nop
  231.  
  232. lui t2, $8037
  233. lw t6, $0144 (v1)
  234. xori t6, t6, $0001
  235. sll t6, t6, $A
  236. add t2, t2, t6
  237. !chekifthasaf:
  238. lw t3, $1c00 (T2)
  239. beq t3, a2, !endofthisloop21111111
  240. nop
  241. addiu t2, t2, $4
  242. lw t3, $1c00 (T2)
  243. addiu at, r0, $ffff
  244. bne at, t3, !chekifthasaf
  245. nop
  246.  
  247. sw a2, $0010 (SP)
  248. addiu v0, r0, $1
  249. beq r0, r0, !endofcheckcoll
  250. nop
  251. !endofthisloop21111111:
  252. lui t1, $8036
  253. ori t1, t1, $0e88
  254. addiu a2, a2, $260
  255. bne a2, t1, !loop21111
  256. nop
  257. !portaldead:
  258. addiu v0, r0, $0000
  259. !endofcheckcoll:
  260. lw a2, $0010 (SP)
  261. lw ra, $0014 (SP)
  262. jr ra
  263. addiu sp, sp, $0018
  264.  
  265.  
  266. .org 0x856d0
  267. !portal:
  268. addiu sp, sp, $ffe8
  269. sw ra, $14 (SP)
  270. lui v1, $8036
  271. lw v1, $1160 (V1)
  272. lui at, $5800
  273. sw at, $019c (v1)
  274. lw t0, $014c (V1)
  275. beq t0, r0, !run
  276. nop
  277. jal $371400
  278. nop
  279. lui v1, $8036
  280. lw v1, $1160 (V1)
  281. lui at, $4348
  282. sw at, $01f8 (V1)
  283. lui at, $4300
  284. sw at, $01fc (V1)
  285.  
  286. jal $371900
  287. nop
  288. beq v0, r0, !asasbdfasbzfzuasdf
  289. nop
  290.  
  291.  
  292.  
  293.  
  294. //lw t0, $0154 (V1)
  295. //slti at, t0, $0002
  296. //sw r0, $0154 (V1)
  297. //bne at, r0, !asasbdfasbzfzuasdf
  298. //nop
  299.  
  300. !portcalculation:
  301. lui a0, $1300
  302. jal $277f50
  303. ori a0, a0, $10b8
  304. //beq to a2 end
  305. lui t0, $8034
  306. addiu t0, t0, $d488
  307. !loop22:
  308. lw t2, $020c (T0)
  309. bne t2, v0, !endofthisloop22
  310. nop
  311. bne t0, v1, !teleportme
  312. nop
  313. !endofthisloop22:
  314. lui t1, $8036
  315. ori t1, t1, $0e88
  316. addiu t0, t0, $260
  317. bne t0, t1, !loop22
  318. nop
  319. beq r0, r0, !asasbdfasbzfzuasdf
  320. nop
  321. //t0 is portal to port to, v1 portal to port from
  322. !teleportme:
  323. lui a1, $8036
  324. lw a1, $1158 (A1)
  325. bne a2, a1, !skipcameramovement
  326. nop
  327. sw r0, $0154 (T0)
  328. sw r0, $0154 (v1)
  329. lui t5, $8034
  330. lwc1 f2, $00a0 (T0)
  331. lwc1 f12, $00a0 (V1)
  332. sub.s f2, f2, f12
  333. lwc1 f0, $c6a4 (T5)
  334. add.s f0, f0, f2
  335.  
  336. lwc1 f2, $00a4 (T0)
  337. lwc1 f12, $00a4 (V1)
  338. sub.s f2, f2, f12
  339. lwc1 f0, $c6a8 (T5)
  340. add.s f0, f0, f2
  341.  
  342. lwc1 f2, $00a8 (T0)
  343. lwc1 f12, $00a8 (V1)
  344. sub.s f2, f2, f12
  345. lwc1 f0, $c6ac (T5)
  346. add.s f0, f0, f2
  347. !skipcameramovement:
  348. jal $370200
  349. nop
  350. lui a0, $5066
  351. jal $2ca1e0
  352. ori a0, a0, $0081
  353. beq r0, r0, !asasbdfasbzfzuasdf
  354. nop
  355. !run:
  356. lui a0, $1300
  357. jal $277f50
  358. ori a0, a0, $10b8
  359.  
  360. lw t4, $0154 (V1)
  361. bne t4, r0, !donasfrasuibfbasf
  362. nop
  363. lui t0, $8034
  364. addiu t0, t0, $d488
  365. lw t4, $0144 (v1)
  366. !loop2:
  367. lw t2, $020c (T0)
  368. bne t2, v0, !endofthisloop2
  369. nop
  370. beq t0, v1, !endofthisloop2
  371. nop
  372. lw t6, $0144 (t0)
  373. bne t6, t4, !endofthisloop2
  374. nop
  375. sh r0, $0074 (T0)
  376. !endofthisloop2:
  377. lui t1, $8036
  378. ori t1, t1, $0e88
  379. addiu t0, t0, $260
  380. bne t0, t1, !loop2
  381. nop
  382. !donasfrasuibfbasf:
  383.  
  384.  
  385. LWC1 F12, $00A0 (V1)
  386. LWC1 F10, $00A4 (V1)
  387. LW A2, $00A8 (V1)
  388. LUI AT, $4300
  389. MTC1 AT, F16
  390. JAL $80381794
  391. ADD.S F14, F10, F16
  392. lwc1 f2, $00a4 (V1)
  393. c.lt.s f2, f0
  394. nop
  395. bc1f !monkeyend
  396. nop
  397. addiu at, r0, $1
  398. sw at, $014c (V1)
  399. lw v0, $fffc (SP)
  400. jal $371700
  401. sw v0, $0180 (V1)
  402. !monkeyend:
  403. addiu a0, v1, $00a0
  404. lui a1, $42c8
  405. JAL $80251A48
  406. lui a2, $42c8
  407. beq v0, r0, !endhatfunction
  408. nop
  409. addiu at, r0, $2
  410. sw at, $014c (V1)
  411. jal $371700
  412. sw v0, $0180 (V1)
  413. !endhatfunction:
  414. lw t1, $0154 (V1)
  415. addiu at, r0, $0080
  416. bne t1, at, !endportal
  417. nop
  418. sh r0, $0074 (V1)
  419.  
  420. !endportal:
  421. jal $2a1308
  422. nop
  423. jal $29f070
  424. nop
  425. !asasbdfasbzfzuasdf:
  426. lui t0, $8034
  427. lui t2, $8037
  428. lw t1, $b1b8 (T0)
  429. sw t1, $ffe0 (T2)
  430. lw t1, $b1bc (T0)
  431. sw t1, $ffe4 (T2)
  432. lw t1, $b1c0 (T0)
  433. sw t1, $ffe8 (T2)
  434. lhu t1, $b19e (T0)
  435. lui t4, $8036
  436. lw t4, $1158 (T4)
  437. sw t1, $00c8 (T4)
  438. sh t1, $ffec (T2)
  439. lw t1, $b17c (T0)
  440. sw t1, $fff0 (T2)
  441. lw ra, $14 (SP)
  442. jr ra
  443. addiu sp, sp, $0018
  444.  
  445.  
  446. //t0 port to
  447. //v1 port from
  448. //a2 is object to port
  449. .org 0x7d0200
  450. !calcmore:
  451. addiu sp, sp, $ffb0
  452. sw ra, $14 (SP)
  453. lui a1, $8036
  454. lw a1, $1158 (A1)
  455. bne a1, a2, !ditsnotmarioguys
  456. nop
  457. lui t2, $8037
  458. lw t1, $ffe0 (T2)
  459. sw t1, $00ac (A2)
  460. lw t1, $ffe4 (T2)
  461. sw t1, $00b0 (A2)
  462. lw t1, $ffe8 (T2)
  463. sw t1, $00b4 (A2)
  464. lhu t1, $ffec (T2)
  465. sw t1, $00c8 (a2)
  466. !ditsnotmarioguys:
  467.  
  468.  
  469.  
  470.  
  471.  
  472. lw t4, $014c (V1)
  473. addiu at, r0, $1
  474. beq t4, at, !fromground
  475. nop
  476. !fromwall:
  477. lw t4, $014c (t0)
  478. addiu at, r0, $1
  479. beq t4, at, !toground1
  480. nop
  481. !towall1:
  482.  
  483. sw a2, $0018 (SP)
  484. sw v1, $001c (SP)
  485. sw t0, $0020 (SP)
  486.  
  487. lw t1, $0180 (V1)
  488. lwc1 f12, $0024 (T1)
  489. jal $37a9a8
  490. lwc1 f14, $001c (t1)
  491. andi v0, v0, $ffff
  492. sw v0, $0028 (SP)
  493.  
  494. lw t0, $0020 (SP)
  495. lw t1, $0180 (t0)
  496. lwc1 f12, $0024 (T1)
  497. jal $37a9a8
  498. lwc1 f14, $001c (t1)
  499. andi v0, v0, $ffff
  500. lw a2, $0018 (SP)
  501. lw v1, $001c (SP)
  502. lw t0, $0020 (SP)
  503.  
  504. lw t1, $0028 (SP)
  505. sub t1, v0, t1
  506. sw t1, $0048 (SP)
  507. lw t2, $00c8 (A2)
  508. add t2, t2, t1
  509. addiu t2, t2, $8000
  510. sw t2, $00c8 (A2)
  511.  
  512.  
  513.  
  514. lwc1 f2, $00a8 (V1)
  515. lwc1 f12, $00a8 (A2)
  516. sub.s f12, f12, f2
  517. mul.s f0, f12, f12
  518.  
  519. lwc1 f4, $00a0 (V1)
  520. lwc1 f14, $00a0 (A2)
  521. sub.s f14, f14, f4
  522. mul.s f10, f14, f14
  523. add.s f0, f0, f10
  524. sqrt.s f0, f0
  525. sw a2, $0018 (SP)
  526. sw v1, $001c (SP)
  527. sw t0, $0020 (SP)
  528. swc1 f0, $0024 (SP)
  529. jal $37a9a8
  530. nop
  531. lw t1, $0048 (SP)
  532. add v0, v0, t1
  533. andi v0, v0, $ffff
  534. lw a2, $0018 (SP)
  535. lw v1, $001c (SP)
  536. lw t0, $0020 (SP)
  537. lwc1 f6, $0024 (SP)
  538.  
  539. lui t4, $8038
  540. sra t8, v0, $4
  541. sll t9, t8, $2
  542. addu t4, t4, t9
  543.  
  544. lwc1 f4, $6000 (T4)
  545. mul.s f8, f4, f6
  546. lwc1 f4, $00a0 (t0)
  547. add.s f4, f4, f8
  548. swc1 f4, $00a0 (A2)
  549. lwc1 f10, $7000 (T4)
  550. mul.s f18, f10, f6
  551. lwc1 f4, $00a8 (t0)
  552. add.s f4, f4, f18
  553. swc1 f4, $00a8 (A2)
  554.  
  555.  
  556.  
  557.  
  558.  
  559. lwc1 f12, $00b4 (A2)
  560. mul.s f0, f12, f12
  561.  
  562. lwc1 f14, $00ac (A2)
  563. mul.s f10, f14, f14
  564. add.s f0, f0, f10
  565. sqrt.s f0, f0
  566. swc1 f0, $0024 (SP)
  567. sw a2, $0018 (SP)
  568. sw v1, $001c (SP)
  569. sw t0, $0020 (SP)
  570. jal $37a9a8
  571. nop
  572. andi v0, v0, $ffff
  573. lw a2, $0018 (SP)
  574. lw v1, $001c (SP)
  575. lw t0, $0020 (SP)
  576. lwc1 f6, $0024 (SP)
  577. swc1 f6, $00b8 (a2)
  578.  
  579. lui t4, $8038
  580. sra t8, v0, $4
  581. sll t9, t8, $2
  582. addu t4, t4, t9
  583.  
  584. lwc1 f4, $6000 (T4)
  585. mul.s f8, f4, f6
  586. swc1 f8, $00ac (A2)
  587. lwc1 f10, $7000 (T4)
  588. mul.s f18, f10, f6
  589. swc1 f18, $00b4 (A2)
  590.  
  591.  
  592.  
  593. lwc1 f2, $00a4 (V1)
  594. lwc1 f12, $00a4 (A2)
  595. sub.s f12, f12, f2
  596. lwc1 f4, $00a4 (T0)
  597. add.s f4, f4, f12
  598. swc1 f4, $00a4 (A2)
  599. beq r0, r0, !reuiasf
  600. nop
  601. !toground1:
  602. lw t1, $00ac (a2)
  603. sw t1, $0030 (SP)
  604. lw t1, $00b4 (a2)
  605. sw t1, $0034 (SP)
  606. sw a2, $0018 (SP)
  607. sw v1, $001c (SP)
  608. sw t0, $0020 (SP)
  609.  
  610. lw t1, $0180 (V1)
  611. lwc1 f12, $0024 (T1)
  612. jal $37a9a8
  613. lwc1 f14, $001c (t1)
  614. andi v0, v0, $ffff
  615. sw v0, $0028 (SP)
  616.  
  617. lw t0, $0020 (SP)
  618. lw t1, $0180 (t0)
  619. lwc1 f12, $0024 (T1)
  620. lwc1 f14, $001c (t1)
  621. add.s f2, f12, f14
  622. mtc1 r0, f0
  623. c.eq.s f0, f2
  624. lw v0, $0028 (SP)
  625. bc1t !skipretorationcausenormalvector0
  626. nop
  627. jal $37a9a8
  628. nop
  629. andi v0, v0, $ffff
  630. !skipretorationcausenormalvector0:
  631. lw a2, $0018 (SP)
  632. lw v1, $001c (SP)
  633. lw t0, $0020 (SP)
  634.  
  635. lw t1, $0028 (SP)
  636. sub t1, v0, t1
  637. lw t2, $00c8 (A2)
  638. add t2, t2, t1
  639. addiu t2, t2, $8000
  640. sw t2, $00c8 (A2)
  641.  
  642. lw t1, $0180 (T0)
  643. lwc1 f12, $0020 (T1)
  644. mul.s f2, f12, f12
  645. lui at, $3f80
  646. mtc1 at, f14
  647. sub.s f14, f14, f2
  648. jal $37a9a8
  649. sqrt.s f14, f14
  650. andi v0, v0, $ffff
  651. lw a2, $0018 (SP)
  652. lw v1, $001c (SP)
  653. lw t0, $0020 (SP)
  654.  
  655. lwc1 f6, $00b0 (A2)
  656. lui t4, $8038
  657. sra t8, v0, $4
  658. sll t9, t8, $2
  659. addu t4, t4, t9
  660. lwc1 f4, $6000 (T4)
  661. mul.s f8, f4, f6
  662. swc1 f8, $00b0 (A2)
  663. lwc1 f10, $7000 (T4)
  664. mul.s f18, f10, f6
  665. swc1 f18, $00b8 (A2)
  666.  
  667.  
  668.  
  669. //turn horizontal speed into new speed
  670.  
  671.  
  672. lw t1, $0180 (T0)
  673. lwc1 f12, $0020 (T1)
  674. mul.s f2, f12, f12
  675. lui at, $3f80
  676. mtc1 at, f14
  677. sub.s f14, f14, f2
  678. jal $37a9a8
  679. sqrt.s f14, f14
  680. andi v0, v0, $ffff
  681. lw a2, $0018 (SP)
  682. lw v1, $001c (SP)
  683. lw t0, $0020 (SP)
  684.  
  685. lwc1 f6, $0030 (SP)
  686. abs.s f6, f6
  687. lui t4, $8038
  688. sra t8, v0, $4
  689. sll t9, t8, $2
  690. addu t4, t4, t9
  691. lwc1 f4, $7000 (T4)
  692. mul.s f8, f4, f6
  693. lwc1 f0, $00b0 (A2)
  694. add.s f8, f0, f8
  695. swc1 f8, $00b0 (A2)
  696. lwc1 f10, $6000 (T4)
  697. mul.s f18, f10, f6
  698. lwc1 f0, $00b8 (A2)
  699. add.s f18, f0, f18
  700. swc1 f18, $00b8 (A2)
  701.  
  702.  
  703.  
  704. lw t1, $0180 (T0)
  705. lwc1 f12, $0020 (T1)
  706. mul.s f2, f12, f12
  707. lui at, $3f80
  708. mtc1 at, f14
  709. sub.s f14, f14, f2
  710. jal $37a9a8
  711. sqrt.s f14, f14
  712. andi v0, v0, $ffff
  713. lw a2, $0018 (SP)
  714. lw v1, $001c (SP)
  715. lw t0, $0020 (SP)
  716.  
  717. lwc1 f6, $0034 (SP)
  718. abs.s f6, f6
  719. lui t4, $8038
  720. sra t8, v0, $4
  721. sll t9, t8, $2
  722. addu t4, t4, t9
  723. lwc1 f4, $7000 (T4)
  724. mul.s f8, f4, f6
  725. lwc1 f0, $00b0 (A2)
  726. add.s f8, f0, f8
  727. swc1 f8, $00b0 (A2)
  728. lwc1 f10, $6000 (T4)
  729. mul.s f18, f10, f6
  730. lwc1 f0, $00b8 (A2)
  731. add.s f18, f0, f18
  732. swc1 f18, $00b8 (A2)
  733.  
  734. //X and Z speed
  735. lw t1, $0180 (t0)
  736. lwc1 f12, $0024 (T1)
  737. lwc1 f14, $001c (t1)
  738. add.s f2, f12, f14
  739. mtc1 r0, f0
  740. c.eq.s f0, f2
  741. lw v0, $0028 (SP)
  742. bc1t !skipretorationcausenormalvector02
  743. nop
  744. jal $37a9a8
  745. nop
  746. andi v0, v0, $ffff
  747. !skipretorationcausenormalvector02:
  748. lw a2, $0018 (SP)
  749. lw v1, $001c (SP)
  750. lw t0, $0020 (SP)
  751. lwc1 f6, $00b8 (A2)
  752.  
  753. lui t4, $8038
  754. sra t8, v0, $4
  755. sll t9, t8, $2
  756. addu t4, t4, t9
  757. lwc1 f4, $6000 (T4)
  758. mul.s f8, f4, f6
  759. swc1 f8, $00ac (A2)
  760. lwc1 f10, $7000 (T4)
  761. mul.s f18, f10, f6
  762. swc1 f18, $00b4 (A2)
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777. //calculate new position
  778.  
  779. lwc1 f2, $00a0 (A2)
  780. lwc1 f12, $00a0 (V1)
  781. sub.s f2, f2, f12
  782. swc1 f2, $0030 (SP)
  783. lwc1 f4, $00a8 (A2)
  784. lwc1 f14, $00a8 (V1)
  785. sub.s f4, f4, f14
  786. swc1 f4, $0034 (SP)
  787.  
  788.  
  789.  
  790. lw t1, $0180 (T0)
  791. lwc1 f12, $0020 (T1)
  792. mul.s f2, f12, f12
  793. lui at, $3f80
  794. mtc1 at, f14
  795. sub.s f14, f14, f2
  796. jal $37a9a8
  797. sqrt.s f14, f14
  798. andi v0, v0, $ffff
  799. lw a2, $0018 (SP)
  800. lw v1, $001c (SP)
  801. lw t0, $0020 (SP)
  802.  
  803. lwc1 f6, $00b0 (A2)
  804. lui t4, $8038
  805. sra t8, v0, $4
  806. sll t9, t8, $2
  807. addu t4, t4, t9
  808. lwc1 f4, $6000 (T4)
  809. mul.s f8, f4, f6
  810. lwc1 f2, $00a4 (T0)
  811. add.s f2, f2, f8
  812. swc1 f2, $00a4 (A2)
  813. lwc1 f10, $7000 (T4)
  814. mul.s f18, f10, f6
  815. swc1 f18, $0038 (SP)
  816.  
  817. lw t1, $0180 (T0)
  818. lwc1 f12, $0020 (T1)
  819. mul.s f2, f12, f12
  820. lui at, $3f80
  821. mtc1 at, f14
  822. sub.s f14, f14, f2
  823. jal $37a9a8
  824. sqrt.s f14, f14
  825. andi v0, v0, $ffff
  826. lw a2, $0018 (SP)
  827. lw v1, $001c (SP)
  828. lw t0, $0020 (SP)
  829.  
  830. lwc1 f6, $0030 (SP)
  831. abs.s f6, f6
  832. lui t4, $8038
  833. sra t8, v0, $4
  834. sll t9, t8, $2
  835. addu t4, t4, t9
  836. lwc1 f4, $7000 (T4)
  837. mul.s f8, f4, f6
  838. lwc1 f0, $00a4 (A2)
  839. add.s f8, f0, f8
  840. swc1 f8, $00a4 (A2)
  841. lwc1 f10, $6000 (T4)
  842. mul.s f18, f10, f6
  843. lwc1 f0, $0038 (sp)
  844. add.s f18, f0, f18
  845. swc1 f18, $0038 (sp)
  846.  
  847.  
  848.  
  849. lw t1, $0180 (T0)
  850. lwc1 f12, $0020 (T1)
  851. mul.s f2, f12, f12
  852. lui at, $3f80
  853. mtc1 at, f14
  854. sub.s f14, f14, f2
  855. jal $37a9a8
  856. sqrt.s f14, f14
  857. andi v0, v0, $ffff
  858. lw a2, $0018 (SP)
  859. lw v1, $001c (SP)
  860. lw t0, $0020 (SP)
  861.  
  862. lwc1 f6, $0034 (SP)
  863. abs.s f6, f6
  864. lui t4, $8038
  865. sra t8, v0, $4
  866. sll t9, t8, $2
  867. addu t4, t4, t9
  868. lwc1 f4, $7000 (T4)
  869. mul.s f8, f4, f6
  870. lwc1 f0, $00a4 (A2)
  871. add.s f8, f0, f8
  872. swc1 f8, $00a4 (A2)
  873. lwc1 f10, $6000 (T4)
  874. mul.s f18, f10, f6
  875. lwc1 f0, $0038 (sp)
  876. add.s f18, f0, f18
  877. swc1 f18, $0038 (sp)
  878.  
  879. //X and Z speed
  880. lw t1, $0180 (t0)
  881. lwc1 f12, $0024 (T1)
  882. lwc1 f14, $001c (t1)
  883. add.s f2, f12, f14
  884. mtc1 r0, f0
  885. c.eq.s f0, f2
  886. lw v0, $0028 (SP)
  887. bc1t !skipretorationcausenormalvector021
  888. nop
  889. jal $37a9a8
  890. nop
  891. andi v0, v0, $ffff
  892. !skipretorationcausenormalvector021:
  893. lw a2, $0018 (SP)
  894. lw v1, $001c (SP)
  895. lw t0, $0020 (SP)
  896. lwc1 f6, $00b8 (A2)
  897.  
  898. lui t4, $8038
  899. sra t8, v0, $4
  900. sll t9, t8, $2
  901. addu t4, t4, t9
  902. lwc1 f4, $6000 (T4)
  903. mul.s f8, f4, f6
  904. lwc1 f2, $00a0 (T0)
  905. add.s f8, f8, f2
  906. swc1 f8, $00a0 (A2)
  907. lwc1 f10, $7000 (T4)
  908. mul.s f18, f10, f6
  909. lwc1 f2, $00a8 (T0)
  910. add.s f18, f18, f2
  911. swc1 f18, $00a8 (A2)
  912.  
  913.  
  914. beq r0, r0, !reuiasf
  915. nop
  916.  
  917.  
  918.  
  919. !fromground:
  920. lw t4, $014c (t0)
  921. addiu at, r0, $1
  922. beq t4, at, !toground2
  923. nop
  924. !towall2:
  925. sw a2, $0018 (SP)
  926. sw v1, $001c (SP)
  927. sw t0, $0020 (SP)
  928. lw t1, $00ac (A2)
  929. sw t1, $0040 (SP)
  930. lw t1, $00b0 (A2)
  931. sw t1, $0044 (SP)
  932. lw t1, $00b4 (A2)
  933. sw t1, $0048 (SP)
  934.  
  935.  
  936. lw t1, $0180 (V1)
  937. lwc1 f12, $0024 (T1)
  938. lwc1 f14, $001c (t1)
  939. add.s f2, f12, f14
  940. mtc1 r0, f0
  941. c.eq.s f0, f2
  942. lhu t7, $00ca (A2)
  943. //maybe rotate 180
  944. sw t7, $0028 (SP)
  945. bc1t !skipretorationcausenormalvector01114422
  946. nop
  947. jal $37a9a8
  948. nop
  949. addiu v0, v0, $8000
  950. andi v0, v0, $ffff
  951. sw v0, $0028 (SP)
  952. !skipretorationcausenormalvector01114422:
  953. lw t0, $0020 (SP)
  954. lw t1, $0180 (t0)
  955. lwc1 f12, $0024 (T1)
  956. jal $37a9a8
  957. lwc1 f14, $001c (t1)
  958. andi v0, v0, $ffff
  959. sw v0, $003c (SP)
  960. lw a2, $0018 (SP)
  961. lw v1, $001c (SP)
  962. lw t0, $0020 (SP)
  963.  
  964. lw t1, $0028 (SP)
  965. sub t1, v0, t1
  966. lw t2, $00c8 (A2)
  967. add t2, t2, t1
  968. sw t2, $00c8 (A2)
  969. andi t2, t2, $ffff
  970.  
  971. sub t3, v0, t2
  972. sll t3, t3, $10
  973. sra t3, t3, $10
  974. sra t4, t3, $1f
  975. xor t3, t3, t4
  976. sub t3, t3, t4
  977. slti at, t3, $4000
  978. bne at, r0, !skipthissetting11
  979. nop
  980. addiu t2, t2, $8000
  981. sw t2, $00c8 (A2)
  982. !skipthissetting11:
  983.  
  984. lw t1, $0180 (v1)
  985. lwc1 f12, $0020 (T1)
  986. mul.s f2, f12, f12
  987. lui at, $3f80
  988. mtc1 at, f14
  989. sub.s f14, f14, f2
  990. jal $37a9a8
  991. sqrt.s f14, f14
  992. andi v0, v0, $ffff
  993. lw a2, $0018 (SP)
  994. lw v1, $001c (SP)
  995. lw t0, $0020 (SP)
  996.  
  997. lwc1 f6, $00b0 (A2)
  998. neg.s f6, f6
  999. lui t4, $8038
  1000. sra t8, v0, $4
  1001. sll t9, t8, $2
  1002. addu t4, t4, t9
  1003. lwc1 f4, $6000 (T4)
  1004. mul.s f8, f4, f6
  1005. swc1 f8, $00b0 (A2)
  1006. lwc1 f10, $7000 (T4)
  1007. mul.s f18, f10, f6
  1008. swc1 f18, $00b8 (A2)
  1009.  
  1010.  
  1011. lw t1, $0180 (v1)
  1012. lwc1 f12, $0020 (T1)
  1013. mul.s f2, f12, f12
  1014. lui at, $3f80
  1015. mtc1 at, f14
  1016. sub.s f14, f14, f2
  1017. jal $37a9a8
  1018. sqrt.s f14, f14
  1019. andi v0, v0, $ffff
  1020. lw a2, $0018 (SP)
  1021. lw v1, $001c (SP)
  1022. lw t0, $0020 (SP)
  1023.  
  1024. lwc1 f6, $00ac (A2)
  1025. lwc1 f16, $00b4 (A2)
  1026. mul.s f6, f6, f6
  1027. mul.s f16, f16, f16
  1028. add.s f6, f6, f16
  1029. sqrt.s f6, f6
  1030. lui t4, $8038
  1031. sra t8, v0, $4
  1032. sll t9, t8, $2
  1033. addu t4, t4, t9
  1034. lwc1 f4, $7000 (T4)
  1035. mul.s f8, f4, f6
  1036. lwc1 f0, $00b0 (A2)
  1037. add.s f8, f8, f0
  1038. swc1 f8, $00b0 (A2)
  1039. lwc1 f10, $6000 (T4)
  1040. mul.s f18, f10, f6
  1041. lwc1 f0, $00b8 (A2)
  1042. add.s f18, f18, f0
  1043. swc1 f18, $00b8 (A2)
  1044.  
  1045.  
  1046. lw v0, $00c8 (a2)
  1047. lwc1 f6, $00b8 (A2)
  1048.  
  1049. lui t4, $8038
  1050. sra t8, v0, $4
  1051. sll t9, t8, $2
  1052. addu t4, t4, t9
  1053. lwc1 f4, $6000 (T4)
  1054. mul.s f8, f4, f6
  1055. swc1 f8, $00ac (A2)
  1056. lwc1 f10, $7000 (T4)
  1057. mul.s f18, f10, f6
  1058. swc1 f18, $00b4 (A2)
  1059.  
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. //calculate ground to wall pos
  1067. lw t1, $0180 (v1)
  1068. lwc1 f12, $0020 (T1)
  1069. mul.s f2, f12, f12
  1070. lui at, $3f80
  1071. mtc1 at, f14
  1072. sub.s f14, f14, f2
  1073. jal $37a9a8
  1074. sqrt.s f14, f14
  1075. andi v0, v0, $ffff
  1076. lw a2, $0018 (SP)
  1077. lw v1, $001c (SP)
  1078. lw t0, $0020 (SP)
  1079.  
  1080. lwc1 f2, $00a4 (V1)
  1081. lwc1 f6, $00a4 (A2)
  1082. sub.s f6, f6, f2
  1083. lui t4, $8038
  1084. sra t8, v0, $4
  1085. sll t9, t8, $2
  1086. addu t4, t4, t9
  1087. lwc1 f4, $6000 (T4)
  1088. mul.s f8, f4, f6
  1089. lwc1 f0, $00a4 (T0)
  1090. add.s f8, f8, f0
  1091. swc1 f8, $00a4 (a2)
  1092. lwc1 f10, $7000 (T4)
  1093. mul.s f18, f10, f6
  1094. swc1 f18, $004c (SP) //position offset
  1095.  
  1096.  
  1097. lw t1, $0180 (v1)
  1098. lwc1 f12, $0020 (T1)
  1099. mul.s f2, f12, f12
  1100. lui at, $3f80
  1101. mtc1 at, f14
  1102. sub.s f14, f14, f2
  1103. jal $37a9a8
  1104. sqrt.s f14, f14
  1105. andi v0, v0, $ffff
  1106. lw a2, $0018 (SP)
  1107. lw v1, $001c (SP)
  1108. lw t0, $0020 (SP)
  1109.  
  1110. lwc1 f0, $00a0 (v1)
  1111. lwc1 f6, $00a0 (A2)
  1112. sub.s f6, f6, f0
  1113. lwc1 f10, $00a8 (V1)
  1114. lwc1 f16, $00a8 (A2)
  1115. sub.s f16, f16, f10
  1116. mul.s f6, f6, f6
  1117. mul.s f16, f16, f16
  1118. add.s f6, f6, f16
  1119. sqrt.s f6, f6
  1120. lui t4, $8038
  1121. sra t8, v0, $4
  1122. sll t9, t8, $2
  1123. addu t4, t4, t9
  1124. lwc1 f4, $7000 (T4)
  1125. mul.s f8, f4, f6
  1126. lwc1 f0, $00a4 (A2)
  1127. add.s f8, f8, f0
  1128. swc1 f8, $00a4 (A2)
  1129. lwc1 f10, $6000 (T4)
  1130. mul.s f18, f10, f6
  1131. lwc1 f0, $004c (sp)
  1132. add.s f18, f18, f0
  1133. swc1 f18, $004c (sp)
  1134.  
  1135.  
  1136. lw v0, $00c8 (a2)
  1137. lwc1 f6, $004c (sp)
  1138.  
  1139. lui t4, $8038
  1140. sra t8, v0, $4
  1141. sll t9, t8, $2
  1142. addu t4, t4, t9
  1143. lwc1 f4, $6000 (T4)
  1144. mul.s f8, f4, f6
  1145. lwc1 f0, $00a0 (T0)
  1146. add.s f8, f8, f0
  1147. swc1 f8, $00a0 (A2)
  1148. lwc1 f10, $7000 (T4)
  1149. mul.s f18, f10, f6
  1150. lwc1 f0, $00a8 (T0)
  1151. add.s f18, f18, f0
  1152. swc1 f18, $00a8 (A2)
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160. beq r0, r0, !reuiasf
  1161. nop
  1162. !toground2:
  1163. sw a2, $0018 (SP)
  1164. sw v1, $001c (SP)
  1165. sw t0, $0020 (SP)
  1166. lw t1, $00ac (A2)
  1167. sw t1, $0040 (SP)
  1168. lw t1, $00b0 (A2)
  1169. sw t1, $0044 (SP)
  1170. lw t1, $00b4 (A2)
  1171. sw t1, $0048 (SP)
  1172.  
  1173. lw t1, $0180 (V1)
  1174. lwc1 f12, $0024 (T1)
  1175. lwc1 f14, $001c (t1)
  1176. add.s f2, f12, f14
  1177. mtc1 r0, f0
  1178. c.eq.s f0, f2
  1179. lhu t7, $00ca (A2)
  1180. //maybe rotate 180
  1181. sw t7, $0028 (SP)
  1182. bc1t !skipretorationcausenormalvector011144
  1183. nop
  1184. jal $37a9a8
  1185. nop
  1186. addiu v0, v0, $8000
  1187. andi v0, v0, $ffff
  1188. sw v0, $0028 (SP)
  1189. !skipretorationcausenormalvector011144:
  1190. lw t0, $0020 (SP)
  1191. lw t1, $0180 (t0)
  1192. lwc1 f12, $0024 (T1)
  1193. lwc1 f14, $001c (t1)
  1194. add.s f2, f12, f14
  1195. mtc1 r0, f0
  1196. c.eq.s f0, f2
  1197. lw v0, $0028 (SP)
  1198. bc1t !skipretorationcausenormalvector01144
  1199. nop
  1200. jal $37a9a8
  1201. nop
  1202. andi v0, v0, $ffff
  1203. !skipretorationcausenormalvector01144:
  1204. sw v0, $003c (SP)
  1205. lw a2, $0018 (SP)
  1206. lw v1, $001c (SP)
  1207. lw t0, $0020 (SP)
  1208.  
  1209. lw t1, $0028 (SP)
  1210. sub t1, v0, t1
  1211. lw t2, $00c8 (A2)
  1212. add t2, t2, t1
  1213. sw t2, $00c8 (A2)
  1214.  
  1215.  
  1216.  
  1217.  
  1218.  
  1219. lw t1, $0180 (v1)
  1220. lwc1 f12, $0020 (T1)
  1221. mul.s f2, f12, f12
  1222. lui at, $3f80
  1223. mtc1 at, f14
  1224. sub.s f14, f14, f2
  1225. jal $37a9a8
  1226. sqrt.s f14, f14
  1227. andi v0, v0, $ffff
  1228. lw a2, $0018 (SP)
  1229. lw v1, $001c (SP)
  1230. lw t0, $0020 (SP)
  1231.  
  1232. lwc1 f6, $00b0 (A2)
  1233. neg.s f6, f6
  1234. lui t4, $8038
  1235. sra t8, v0, $4
  1236. sll t9, t8, $2
  1237. addu t4, t4, t9
  1238. lwc1 f4, $7000 (T4)
  1239. mul.s f8, f4, f6
  1240. swc1 f8, $00b0 (A2)
  1241. lwc1 f10, $6000 (T4)
  1242. mul.s f18, f10, f6
  1243. swc1 f18, $00b8 (A2)
  1244.  
  1245.  
  1246. lw t1, $0180 (v1)
  1247. lwc1 f12, $0020 (T1)
  1248. mul.s f2, f12, f12
  1249. lui at, $3f80
  1250. mtc1 at, f14
  1251. sub.s f14, f14, f2
  1252. jal $37a9a8
  1253. sqrt.s f14, f14
  1254. andi v0, v0, $ffff
  1255. lw a2, $0018 (SP)
  1256. lw v1, $001c (SP)
  1257. lw t0, $0020 (SP)
  1258.  
  1259. lwc1 f6, $00ac (A2)
  1260. lwc1 f16, $00b4 (A2)
  1261. mul.s f6, f6, f6
  1262. mul.s f16, f16, f16
  1263. add.s f6, f6, f16
  1264. sqrt.s f6, f6
  1265. lui t4, $8038
  1266. sra t8, v0, $4
  1267. sll t9, t8, $2
  1268. addu t4, t4, t9
  1269. lwc1 f4, $6000 (T4)
  1270. mul.s f8, f4, f6
  1271. lwc1 f0, $00b0 (A2)
  1272. add.s f8, f8, f0
  1273. swc1 f8, $00b0 (A2)
  1274. lwc1 f10, $7000 (T4)
  1275. mul.s f18, f10, f6
  1276. lwc1 f0, $00b8 (A2)
  1277. add.s f18, f18, f0
  1278. swc1 f18, $00b8 (A2)
  1279.  
  1280.  
  1281. lw v0, $00c8 (a2)
  1282. lwc1 f6, $00b8 (A2)
  1283.  
  1284. lui t4, $8038
  1285. sra t8, v0, $4
  1286. sll t9, t8, $2
  1287. addu t4, t4, t9
  1288. lwc1 f4, $6000 (T4)
  1289. mul.s f8, f4, f6
  1290. swc1 f8, $00ac (A2)
  1291. lwc1 f10, $7000 (T4)
  1292. mul.s f18, f10, f6
  1293. swc1 f18, $00b4 (A2)
  1294.  
  1295.  
  1296. lw t1, $00ac (a2)
  1297. sw t1, $0030 (SP)
  1298. lw t1, $00b4 (a2)
  1299. sw t1, $0034 (SP)
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306. lw t1, $0180 (T0)
  1307. lwc1 f12, $0020 (T1)
  1308. mul.s f2, f12, f12
  1309. lui at, $3f80
  1310. mtc1 at, f14
  1311. sub.s f14, f14, f2
  1312. jal $37a9a8
  1313. sqrt.s f14, f14
  1314. andi v0, v0, $ffff
  1315. lw a2, $0018 (SP)
  1316. lw v1, $001c (SP)
  1317. lw t0, $0020 (SP)
  1318.  
  1319. lwc1 f6, $00b0 (A2)
  1320. lui t4, $8038
  1321. sra t8, v0, $4
  1322. sll t9, t8, $2
  1323. addu t4, t4, t9
  1324. lwc1 f4, $7000 (T4)
  1325. mul.s f8, f4, f6
  1326. swc1 f8, $00b0 (A2)
  1327. lwc1 f10, $6000 (T4)
  1328. mul.s f18, f10, f6
  1329. swc1 f18, $00b8 (A2)
  1330.  
  1331.  
  1332.  
  1333. //turn horizontal speed into new speed
  1334. lw t1, $0180 (T0)
  1335. lwc1 f12, $0020 (T1)
  1336. mul.s f2, f12, f12
  1337. lui at, $3f80
  1338. mtc1 at, f14
  1339. sub.s f14, f14, f2
  1340. jal $37a9a8
  1341. sqrt.s f14, f14
  1342. andi v0, v0, $ffff
  1343. lw a2, $0018 (SP)
  1344. lw v1, $001c (SP)
  1345. lw t0, $0020 (SP)
  1346.  
  1347. lwc1 f6, $0030 (SP)
  1348. abs.s f6, f6
  1349. lui t4, $8038
  1350. sra t8, v0, $4
  1351. sll t9, t8, $2
  1352. addu t4, t4, t9
  1353. lwc1 f4, $6000 (T4)
  1354. mul.s f8, f4, f6
  1355. lwc1 f0, $00b0 (A2)
  1356. add.s f8, f0, f8
  1357. swc1 f8, $00b0 (A2)
  1358. lwc1 f10, $7000 (T4)
  1359. mul.s f18, f10, f6
  1360. lwc1 f0, $00b8 (A2)
  1361. add.s f18, f0, f18
  1362. swc1 f18, $00b8 (A2)
  1363.  
  1364.  
  1365.  
  1366. lw t1, $0180 (T0)
  1367. lwc1 f12, $0020 (T1)
  1368. mul.s f2, f12, f12
  1369. lui at, $3f80
  1370. mtc1 at, f14
  1371. sub.s f14, f14, f2
  1372. jal $37a9a8
  1373. sqrt.s f14, f14
  1374. andi v0, v0, $ffff
  1375. lw a2, $0018 (SP)
  1376. lw v1, $001c (SP)
  1377. lw t0, $0020 (SP)
  1378.  
  1379. lwc1 f6, $0034 (SP)
  1380. abs.s f6, f6
  1381. lui t4, $8038
  1382. sra t8, v0, $4
  1383. sll t9, t8, $2
  1384. addu t4, t4, t9
  1385. lwc1 f4, $6000 (T4)
  1386. mul.s f8, f4, f6
  1387. lwc1 f0, $00b0 (A2)
  1388. add.s f8, f0, f8
  1389. swc1 f8, $00b0 (A2)
  1390. lwc1 f10, $7000 (T4)
  1391. mul.s f18, f10, f6
  1392. lwc1 f0, $00b8 (A2)
  1393. add.s f18, f0, f18
  1394. swc1 f18, $00b8 (A2)
  1395.  
  1396. //X and Z speed
  1397. lw t1, $0180 (t0)
  1398. lwc1 f12, $0024 (T1)
  1399. lwc1 f14, $001c (t1)
  1400. add.s f2, f12, f14
  1401. mtc1 r0, f0
  1402. c.eq.s f0, f2
  1403. lw v0, $0028 (SP)
  1404. bc1t !skipretorationcausenormalvector0244
  1405. nop
  1406. jal $37a9a8
  1407. nop
  1408. andi v0, v0, $ffff
  1409. !skipretorationcausenormalvector0244:
  1410. lw a2, $0018 (SP)
  1411. lw v1, $001c (SP)
  1412. lw t0, $0020 (SP)
  1413. lwc1 f6, $00b8 (A2)
  1414.  
  1415. lui t4, $8038
  1416. sra t8, v0, $4
  1417. sll t9, t8, $2
  1418. addu t4, t4, t9
  1419. lwc1 f4, $6000 (T4)
  1420. mul.s f8, f4, f6
  1421. swc1 f8, $00ac (A2)
  1422. lwc1 f10, $7000 (T4)
  1423. mul.s f18, f10, f6
  1424. swc1 f18, $00b4 (A2)
  1425.  
  1426.  
  1427. lui a1, $8036
  1428. lw a1, $1158 (A1)
  1429. bne a1, a2 , !skiptsauifbuisafuibisdau
  1430. nop
  1431. lui t2, $8037
  1432. lw t1, $fff0 (T2)
  1433. lui at, $0080
  1434. ori at, at, $08A9
  1435. bne t1, at, !skiptsauifbuisafuibisdau
  1436. nop
  1437. lui at, $0300
  1438. ori at, at, $0881
  1439. sw at, $fff0 (T2)
  1440. !skiptsauifbuisafuibisdau:
  1441.  
  1442. lwc1 f0, $0040 (sp)
  1443. mul.s f10, f0, f0
  1444. lwc1 f2, $0044 (sp)
  1445. mul.s f12, f2, f2
  1446. lwc1 f4, $0048 (sp)
  1447. mul.s f14, f4, f4
  1448. add.s f0, f10, f12
  1449. add.s f0, f0, f14
  1450. sqrt.s f0, f0
  1451.  
  1452. lwc1 f8, $00ac (a2)
  1453. mul.s f18, f8, f8
  1454. lwc1 f2, $00b0 (a2)
  1455. mul.s f12, f2, f2
  1456. lwc1 f4, $00b4 (a2)
  1457. mul.s f14, f4, f4
  1458. add.s f18, f18, f12
  1459. add.s f18, f18, f14
  1460. sqrt.s f18, f18
  1461. div.s f0, f0, f18
  1462.  
  1463. mul.s f8, f8, f0
  1464. swc1 f8, $00ac (A2)
  1465. mul.s f2, f2, f0
  1466. swc1 f2, $00b0 (A2)
  1467. mul.s f4, f4, f0
  1468. swc1 f4, $00b4 (A2)
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474. //GROUND TO GROUND POSITIONS
  1475.  
  1476. lwc1 f0, $00a0 (V1)
  1477. lwc1 f10, $00a0 (A2)
  1478. sub.s f10, f10, f0
  1479. swc1 f10, $0040 (SP)
  1480.  
  1481. lwc1 f2, $00a4 (V1)
  1482. lwc1 f12, $00a4 (A2)
  1483. sub.s f12, f12, f2
  1484. swc1 f12, $0044 (SP)
  1485.  
  1486. lwc1 f4, $00a8 (V1)
  1487. lwc1 f14, $00a8 (A2)
  1488. sub.s f14, f14, f4
  1489. swc1 f14, $0048 (SP)
  1490.  
  1491. lw t1, $0180 (v1)
  1492. lwc1 f12, $0020 (T1)
  1493. mul.s f2, f12, f12
  1494. lui at, $3f80
  1495. mtc1 at, f14
  1496. sub.s f14, f14, f2
  1497. jal $37a9a8
  1498. sqrt.s f14, f14
  1499. andi v0, v0, $ffff
  1500. lw a2, $0018 (SP)
  1501. lw v1, $001c (SP)
  1502. lw t0, $0020 (SP)
  1503.  
  1504. lwc1 f0, $00a4 (v1)
  1505. lwc1 f6, $00a4 (A2)
  1506. sub.s f6, f6, f0
  1507. lui t4, $8038
  1508. sra t8, v0, $4
  1509. sll t9, t8, $2
  1510. addu t4, t4, t9
  1511. lwc1 f4, $7000 (T4)
  1512. mul.s f8, f4, f6
  1513. lwc1 f0, $00a4 (T0)
  1514. add.s f8, f0, f8
  1515. swc1 f8, $00a4 (A2)
  1516. lwc1 f10, $6000 (T4)
  1517. mul.s f18, f10, f6
  1518. swc1 f18, $004c (sp) //translation offset
  1519.  
  1520.  
  1521. lw t1, $0180 (v1)
  1522. lwc1 f12, $0020 (T1)
  1523. mul.s f2, f12, f12
  1524. lui at, $3f80
  1525. mtc1 at, f14
  1526. sub.s f14, f14, f2
  1527. jal $37a9a8
  1528. sqrt.s f14, f14
  1529. andi v0, v0, $ffff
  1530. lw a2, $0018 (SP)
  1531. lw v1, $001c (SP)
  1532. lw t0, $0020 (SP)
  1533.  
  1534. lwc1 f2, $00a0 (v1)
  1535. lwc1 f4, $00a0 (a2)
  1536. sub.s f6, f2, f4
  1537. lwc1 f12, $00a8 (v1)
  1538. lwc1 f14, $00a8 (A2)
  1539. sub.s f16, f12, f14
  1540.  
  1541. mul.s f6, f6, f6
  1542. mul.s f16, f16, f16
  1543. add.s f6, f6, f16
  1544. sqrt.s f6, f6
  1545. lui t4, $8038
  1546. sra t8, v0, $4
  1547. sll t9, t8, $2
  1548. addu t4, t4, t9
  1549. lwc1 f4, $6000 (T4)
  1550. mul.s f8, f4, f6
  1551. lwc1 f0, $00a4 (a2)
  1552. add.s f8, f8, f0
  1553. swc1 f8, $00a4 (A2)
  1554. lwc1 f10, $7000 (T4)
  1555. mul.s f18, f10, f6
  1556. lwc1 f0, $004c (sp)
  1557. add.s f18, f18, f0
  1558. swc1 f18, $004c (sp)
  1559.  
  1560. lwc1 f2, $00a0 (a2)
  1561. swc1 f2, $0164 (V1)
  1562. lwc1 f2, $00a8 (a2)
  1563. jal $2A2748
  1564. swc1 f2, $016c (V1) //calculate rotation towards mario from portal
  1565. lwc1 f6, $004c (sp)
  1566. andi v0, v0, $ffff
  1567. lw a2, $0018 (SP)
  1568. lw v1, $001c (SP)
  1569. lw t0, $0020 (SP)
  1570.  
  1571. lui t4, $8038
  1572. sra t8, v0, $4
  1573. sll t9, t8, $2
  1574. addu t4, t4, t9
  1575. lwc1 f4, $6000 (T4)
  1576. mul.s f8, f4, f6
  1577. lwc1 f0, $00a0 (T0)
  1578. add.s f8, f8, f0
  1579. swc1 f8, $00a0 (A2)
  1580. lwc1 f10, $7000 (T4)
  1581. mul.s f18, f10, f6
  1582. lwc1 f0, $00a8 (T0)
  1583. add.s f18, f18, f0
  1584. swc1 f18, $00a8 (A2)
  1585.  
  1586. //calculate a2+a0 first
  1587. lwc1 f2, $00a0 (T0)
  1588. lwc1 f12, $00a0 (A2)
  1589. sub.s f12, f12, f2
  1590. swc1 f12, $0030 (SP)
  1591.  
  1592. lwc1 f4, $00a8 (T0)
  1593. lwc1 f14, $00a8 (A2)
  1594. sub.s f14, f14, f4
  1595. swc1 f14, $0034 (SP)
  1596. //IS THIS NECESSARY
  1597.  
  1598. lw t1, $0180 (T0)
  1599. lwc1 f12, $0020 (T1)
  1600. mul.s f2, f12, f12
  1601. lui at, $3f80
  1602. mtc1 at, f14
  1603. sub.s f14, f14, f2
  1604. jal $37a9a8
  1605. sqrt.s f14, f14
  1606. andi v0, v0, $ffff
  1607. lw a2, $0018 (SP)
  1608. lw v1, $001c (SP)
  1609. lw t0, $0020 (SP)
  1610.  
  1611. lwc1 f0, $00a4 (t0)
  1612. lwc1 f6, $00a4 (A2)
  1613. sub.s f6, f6, f0
  1614. lui t4, $8038
  1615. sra t8, v0, $4
  1616. sll t9, t8, $2
  1617. addu t4, t4, t9
  1618. lwc1 f4, $7000 (T4)
  1619. mul.s f8, f4, f6
  1620. lwc1 f0, $00a4 (T0)
  1621. add.s f8, f8, f0
  1622. swc1 f8, $00a4 (A2)
  1623. lwc1 f10, $6000 (T4)
  1624. mul.s f18, f10, f6
  1625. swc1 f18, $004c (sp)
  1626.  
  1627. //turn horizontal speed into new speed
  1628. lw t1, $0180 (T0)
  1629. lwc1 f12, $0020 (T1)
  1630. mul.s f2, f12, f12
  1631. lui at, $3f80
  1632. mtc1 at, f14
  1633. sub.s f14, f14, f2
  1634. jal $37a9a8
  1635. sqrt.s f14, f14
  1636. andi v0, v0, $ffff
  1637. lw a2, $0018 (SP)
  1638. lw v1, $001c (SP)
  1639. lw t0, $0020 (SP)
  1640.  
  1641. lwc1 f6, $0030 (SP)
  1642. //abs.s f6, f6 //useless?
  1643. lui t4, $8038
  1644. sra t8, v0, $4
  1645. sll t9, t8, $2
  1646. addu t4, t4, t9
  1647. lwc1 f4, $6000 (T4)
  1648. mul.s f8, f4, f6
  1649. lwc1 f0, $00a4 (A2)
  1650. add.s f8, f0, f8
  1651. swc1 f8, $00a4 (A2)
  1652. lwc1 f10, $7000 (T4)
  1653. mul.s f18, f10, f6
  1654. lwc1 f0, $004c (sp)
  1655. add.s f18, f0, f18
  1656. swc1 f18, $004c (sp)
  1657.  
  1658. lw t1, $0180 (T0)
  1659. lwc1 f12, $0020 (T1)
  1660. mul.s f2, f12, f12
  1661. lui at, $3f80
  1662. mtc1 at, f14
  1663. sub.s f14, f14, f2
  1664. jal $37a9a8
  1665. sqrt.s f14, f14
  1666. andi v0, v0, $ffff
  1667. lw a2, $0018 (SP)
  1668. lw v1, $001c (SP)
  1669. lw t0, $0020 (SP)
  1670.  
  1671. lwc1 f6, $0034 (SP)
  1672. //abs.s f6, f6 //useless?
  1673. lui t4, $8038
  1674. sra t8, v0, $4
  1675. sll t9, t8, $2
  1676. addu t4, t4, t9
  1677. lwc1 f4, $6000 (T4)
  1678. mul.s f8, f4, f6
  1679. lwc1 f0, $00a4 (A2)
  1680. add.s f8, f0, f8
  1681. swc1 f8, $00a4 (A2)
  1682. lwc1 f10, $7000 (T4)
  1683. mul.s f18, f10, f6
  1684. lwc1 f0, $004c (sp)
  1685. add.s f18, f0, f18
  1686. swc1 f18, $004c (sp)
  1687.  
  1688. //X and Z speed
  1689. lw t1, $0180 (t0)
  1690. lwc1 f12, $0024 (T1)
  1691. lwc1 f14, $001c (t1)
  1692. add.s f2, f12, f14
  1693. mtc1 r0, f0
  1694. c.eq.s f0, f2
  1695. lw v0, $0028 (SP)
  1696. bc1t !skipretorationcausenormalvector0244333
  1697. nop
  1698. jal $37a9a8
  1699. nop
  1700. andi v0, v0, $ffff
  1701. !skipretorationcausenormalvector0244333:
  1702. lw a2, $0018 (SP)
  1703. lw v1, $001c (SP)
  1704. lw t0, $0020 (SP)
  1705. lwc1 f6, $004c (sp)
  1706.  
  1707. lui t4, $8038
  1708. sra t8, v0, $4
  1709. sll t9, t8, $2
  1710. addu t4, t4, t9
  1711. lwc1 f4, $6000 (T4)
  1712. mul.s f8, f4, f6
  1713. lwc1 f0, $00a0 (T0)
  1714. add.s f8, f8, f0
  1715. swc1 f8, $00a0 (A2)
  1716. lwc1 f10, $7000 (T4)
  1717. mul.s f18, f10, f6
  1718. lwc1 f0, $00a8 (T0)
  1719. add.s f18, f18, f0
  1720. swc1 f18, $00a8 (A2)
  1721.  
  1722. lwc1 f0, $0040 (sp)
  1723. mul.s f10, f0, f0
  1724. lwc1 f2, $0044 (sp)
  1725. mul.s f12, f2, f2
  1726. lwc1 f4, $0048 (sp)
  1727. mul.s f14, f4, f4
  1728. add.s f0, f10, f12
  1729. add.s f0, f0, f14
  1730. sqrt.s f0, f0
  1731. //calculate current distance then scale
  1732.  
  1733. lwc1 f10, $00a0 (T0)
  1734. lwc1 f8, $00a0 (a2)
  1735. sub.s f8, f8, f10
  1736. mul.s f18, f8, f8
  1737. lwc1 f10, $00a4 (T0)
  1738. lwc1 f2, $00a4 (a2)
  1739. sub.s f2, f2, f10
  1740. mul.s f12, f2, f2
  1741. lwc1 f10, $00a8 (T0)
  1742. lwc1 f4, $00a8 (a2)
  1743. sub.s f4, f4, f10
  1744. mul.s f14, f4, f4
  1745. add.s f18, f18, f12
  1746. add.s f18, f18, f14
  1747. sqrt.s f18, f18
  1748. div.s f0, f0, f18
  1749. mul.s f8, f8, f0
  1750. lwc1 f12, $00a0 (T0)
  1751. add.s f12, f12, f8
  1752. swc1 f12, $00a0 (A2)
  1753. mul.s f2, f2, f0
  1754. lwc1 f14, $00a4 (T0)
  1755. add.s f14, f14, f2
  1756. swc1 f14, $00a4 (A2)
  1757. mul.s f4, f4, f0
  1758. lwc1 f16, $00a8 (T0)
  1759. add.s f16, f16, f4
  1760. swc1 f16, $00a8 (A2)
  1761. beq r0, r0, !reuiasf
  1762. nop
  1763.  
  1764. !reuiasf:
  1765. lui a1, $8036
  1766. lw a1, $1158 (A1)
  1767. bne a1, a2, !dontwriteaiusfzisafi
  1768. nop
  1769. //write out mario rotation values if mario was ported
  1770. lui t4, $8034
  1771. lw t1, $00c8 (A2)
  1772. sh t1, $b19e (T4)
  1773. lw t1, $00a0 (A2)
  1774. sw t1, $b1ac (T4)
  1775. lw t1, $00a4 (A2)
  1776. sw t1, $b1b0 (T4)
  1777. lw t1, $00a8 (A2)
  1778. sw t1, $b1b4 (T4)
  1779. lw t1, $00ac (A2)
  1780. sw t1, $b1b8 (T4)
  1781. lw t1, $00b0 (A2)
  1782. sw t1, $b1bc (T4)
  1783. lw t1, $00b4 (A2)
  1784. sw t1, $b1c0 (T4)
  1785. lw t1, $00b8 (A2)
  1786. sw t1, $b1c4 (T4)
  1787. lui t2, $8037
  1788. lw t1, $fff0 (T2)
  1789. sw t1, $b17c (T4)
  1790. !dontwriteaiusfzisafi:
  1791. lw ra, $14 (SP)
  1792. jr ra
  1793. addiu sp, sp, $0050
  1794.  
  1795.  
  1796. .org 0x7d1400
  1797. !calculaterotation:
  1798. ADDIU SP, SP, 0xFFC0
  1799. SW RA, 0x001C (SP)
  1800. lw t1, $014c (V1)
  1801. addiu at, r0, $2
  1802. beq t1, at, !endallofthis
  1803. nop
  1804. LUI T6, 0x8036
  1805. LW T6, 0x1160 (T6)
  1806. LWC1 F4, 0x00A0 (T6)
  1807. SWC1 F4, 0x003C (SP)
  1808. LUI T7, 0x8036
  1809. LW T7, 0x1160 (T7)
  1810. LWC1 F6, 0x00A4 (T7)
  1811. SWC1 F6, 0x0038 (SP)
  1812. LUI T8, 0x8036
  1813. LW T8, 0x1160 (T8)
  1814. LWC1 F8, 0x00A8 (T8)
  1815. SWC1 F8, 0x0034 (SP)
  1816. LUI AT, 0x8034
  1817. LWC1 F10, 0x8478 (AT)
  1818. SWC1 F10, 0x002C (SP)
  1819. LUI T9, 0x8036
  1820. LW T9, 0x1160 (T9)
  1821. LUI AT, 0x8038
  1822. LHU T0, 0x00CA (T9)
  1823. LWC1 F18, 0x00B8 (T9)
  1824. SRA T1, T0, 0x4
  1825. SLL T2, T1, 0x2
  1826. ADDU AT, AT, T2
  1827. LWC1 F16, 0x6000 (AT)
  1828. MUL.S F4, F16, F18
  1829. SWC1 F4, 0x0028 (SP)
  1830. LUI T3, 0x8036
  1831. LW T3, 0x1160 (T3)
  1832. LUI AT, 0x8038
  1833. LHU T4, 0x00CA (T3)
  1834. LWC1 F8, 0x00B8 (T3)
  1835. SRA T5, T4, 0x4
  1836. SLL T6, T5, 0x2
  1837. ADDU AT, AT, T6
  1838. LWC1 F6, 0x7000 (AT)
  1839. MUL.S F10, F6, F8
  1840. SWC1 F10, 0x0024 (SP)
  1841. SH R0, 0x0022 (SP)
  1842. LWC1 F4, 0x0034 (SP)
  1843. LWC1 F6, 0x0024 (SP)
  1844. LWC1 F18, 0x0028 (SP)
  1845. LWC1 F16, 0x003C (SP)
  1846. ADD.S F8, F4, F6
  1847. MFC1 A3, F18
  1848. LWC1 F14, 0x0038 (SP)
  1849. SWC1 F6, 0x0010 (SP)
  1850. MFC1 A2, F8
  1851. JAL 0x802E405C
  1852. ADD.S F12, F16, F18
  1853. BNEZ V0, !skipasfjihasfui
  1854. NOP
  1855. LH T7, 0x0022 (SP)
  1856. ADDIU T8, T7, 0x0002
  1857. SH T8, 0x0022 (SP)
  1858. !skipasfjihasfui:
  1859. LWC1 F4, 0x0034 (SP)
  1860. LWC1 F8, 0x0024 (SP)
  1861. LWC1 F10, 0x003C (SP)
  1862. LWC1 F16, 0x0028 (SP)
  1863. ADD.S F18, F4, F8
  1864. LUI A3, 0x8036
  1865. ADDIU A3, A3, 0x1450
  1866. LWC1 F14, 0x0038 (SP)
  1867. MFC1 A2, F18
  1868. JAL 0x80381900
  1869. ADD.S F12, F10, F16
  1870. SWC1 F0, 0x0030 (SP)
  1871. beq r0, r0, !rotateme
  1872. nop
  1873. LUI A0, 0x8036
  1874. LW A0, 0x1450 (A0)
  1875. LW A1, 0x0030 (SP)
  1876. LW A2, 0x0028 (SP)
  1877. JAL 0x802E41A4
  1878. LW A3, 0x0024 (SP)
  1879. ADDIU AT, R0, 0x0001
  1880. BNE V0, AT, !endrotation
  1881. NOP
  1882. LWC1 F6, 0x003C (SP)
  1883. LWC1 F10, 0x0028 (SP)
  1884. LWC1 F16, 0x0034 (SP)
  1885. LWC1 F4, 0x0024 (SP)
  1886. ADD.S F12, F6, F10
  1887. JAL 0x80381BA0
  1888. ADD.S F14, F16, F4
  1889. SWC1 F0, 0x002C (SP)
  1890. LWC1 F8, 0x002C (SP)
  1891. LWC1 F18, 0x0038 (SP)
  1892. C.LT.S F18, F8
  1893. NOP
  1894. BC1F !rotateme
  1895. NOP
  1896. LWC1 F6, 0x002C (SP)
  1897. LUI A0, 0x8036
  1898. LW A0, 0x1450 (A0)
  1899. LW A1, 0x0030 (SP)
  1900. LW A2, 0x0028 (SP)
  1901. LW A3, 0x0024 (SP)
  1902. JAL 0x802E4814
  1903. SWC1 F6, 0x0010 (SP)
  1904. LH T0, 0x0022 (SP)
  1905. ADDIU T1, T0, 0x0004
  1906. BEQ R0, R0, !endrotation
  1907. SH T1, 0x0022 (SP)
  1908. !rotateme:
  1909. LUI A0, 0x8036
  1910. LW A0, 0x1450 (A0)
  1911. LW A1, 0x0030 (SP)
  1912. LW A2, 0x0028 (SP)
  1913. JAL 0x802E445C
  1914. LW A3, 0x0024 (SP)
  1915. !endrotation:
  1916. LH V0, 0x0022 (SP)
  1917. lui v1, $8036
  1918. lw v1, $1160 (V1)
  1919. sw r0, $00b0 (V1)
  1920. sw r0, $00b8 (V1)
  1921. beq r0, r0, !fdinalsafiua
  1922. nop
  1923. !endallofthis:
  1924. addiu at, r0, $4000
  1925. sw at, $00d0 (V1)
  1926. sh at, $001a (V1)
  1927. lw t1, $0180 (V1)
  1928. lwc1 f12, $0024 (T1)
  1929. jal $37a9a8
  1930. lwc1 f14, $001c (t1)
  1931. andi v0, v0, $ffff
  1932. sw v0, $00d4 (V1)
  1933. sw v0, $00c8 (V1)
  1934. sh v0, $001c (V1)
  1935.  
  1936. !fdinalsafiua:
  1937. LW RA, 0x001C (SP)
  1938. JR RA
  1939. ADDIU SP, SP, 0x0040
  1940.  
  1941. //f3d at 7D2800 and 7D3F00
  1942. //geo at 7D2700
  1943. //pointer1 at 7D2798
  1944. //pointer2 at 7D27A0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement