Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 38.19 KB | None | 0 0
  1.  
  2.  
  3. nop
  4. nop
  5. nop
  6. nop
  7. nop
  8. addi $29 $0 4096
  9.  
  10. addi $13 $0 31
  11. startLoop:
  12. st $1
  13. sll $14 $1 $13
  14. srl $14 $14 $13
  15. bnez $14 startLoop
  16.  
  17. addi $13 $0 1
  18. resetSw:
  19. st $2
  20. srl $14 $2 $13
  21. bnez $14 resetSw
  22.  
  23.  
  24. addi $13 $0 13
  25. srl $14 $1 $13
  26. addi $17 $14 0
  27.  
  28. sll $14 $14 $13
  29. sub $1 $1 $14
  30.  
  31. addi $13 $17 0
  32. sw $13 2482($0)
  33.  
  34. addi $14 $0 -1
  35. addi $23 $0 -5
  36. addi $24 $0 4
  37. addi $15 $0 28
  38. addi $16 $0 31
  39. setupPlayer:
  40. addi $14 $14 1
  41. addi $23 $23 5
  42. sw $0 2463($10)
  43. beq $14 $24 startGame
  44. sll $17 $13 $15
  45. srl $17 $17 $16
  46.  
  47. j setupPlayer
  48.  
  49.  
  50.  
  51.  
  52. startGame:
  53.  
  54. j gameLoop
  55.  
  56.  
  57. mapGen:
  58. addi $28 $31 0
  59. jal saveAll
  60.  
  61.  
  62. addi $13 $0 1600
  63. addi $14 $0 80
  64.  
  65. beqz $1 nextLevel
  66. j firstGen
  67.  
  68.  
  69. firstGen:
  70. addi $15 $0 16
  71. addi $16 $0 28
  72. addi $21 $15 8
  73.  
  74. firstGenLoop:
  75. sll $17 $1 $15
  76. srl $17 $17 $16
  77. addi $18 $17 10
  78. sw $18 0($13)
  79.  
  80. addi $13 $13 1
  81. addi $15 $15 1
  82. blt $15 $21 firstGenLoop
  83.  
  84. sw $1 2490($0)
  85.  
  86. j genLevelSt
  87.  
  88. nextLevel:
  89. addi $21 $0 1608
  90.  
  91. nextLevelLoop:
  92. sw $13 72($13)
  93. addi $13 $13 1
  94. blt $13 $21 nextLevelLoop
  95.  
  96. genLevelSt:
  97. addi $16 $0 16
  98. addi $21 $0 11
  99. addi $22 $0 1680
  100. addi $23 $0 0
  101. addi $17 $0 27
  102.  
  103. newRandGenLoop:
  104. jal genNewRandom
  105. addi $15 $7 0
  106. addi $16 $0 16
  107.  
  108. mainGenLoop:
  109.  
  110. beq $16 $21 newRandGenLoop
  111.  
  112. addi $18 $0 0
  113. lw $19 -1($13)
  114. add $18 $18 $19
  115. lw $19 -2($13)
  116. add $18 $18 $19
  117. lw $19 -3($13)
  118. add $18 $18 $19
  119.  
  120. addi $20 $0 3
  121. div $18 $18 $20
  122.  
  123. addi $23 $15 0
  124. sll $23 $23 $16
  125. srl $23 $23 $17
  126.  
  127. addi $26 $0 28
  128. sll $27 $23 $26
  129. srl $27 $27 $26
  130.  
  131. addi $26 $0 10
  132. blt $27 $26 offOne
  133.  
  134. addi $26 $0 14
  135. blt $27 $26 offTwo
  136.  
  137. offThree:
  138. addi $27 $0 3
  139. j getSign
  140.  
  141. offTwo:
  142. addi $27 $0 2
  143. j getSign
  144.  
  145. offOne:
  146. addi $27 $0 1
  147. j getSign
  148.  
  149. getSign:
  150. addi $26 $0 15
  151. bgt $23 $26 isNeg
  152.  
  153. isPos:
  154. add $18 $18 $27
  155. j checkEl
  156.  
  157. isNeg:
  158. sub $18 $18 $27
  159. j checkEl
  160.  
  161. checkEl:
  162.  
  163. addi $19 $0 32
  164. addi $20 $0 5
  165.  
  166. bgt $18 $19 subEl
  167. blt $18 $20 addEl
  168. j saveEl
  169.  
  170. addEl:
  171. addi $18 $18 1
  172. j checkEl
  173. subEl:
  174. addi $18 $18 -1
  175. j checkEl
  176.  
  177. saveEl:
  178. sw $18 0($13)
  179.  
  180. addi $13 $13 1
  181. addi $16 $16 1
  182.  
  183. blt $13 $22 mainGenLoop
  184.  
  185.  
  186.  
  187.  
  188. jal makeMap
  189.  
  190. jal loadAll
  191. addi $31 $28 0
  192. jr $31
  193.  
  194.  
  195. makeMap:
  196. addi $28 $31 0
  197. jal saveAll
  198.  
  199. addi $13 $0 0
  200. addi $14 $0 0
  201. addi $15 $0 40
  202. addi $16 $0 80
  203.  
  204. addi $17 $0 0
  205. addi $26 $0 0
  206.  
  207. makeMapRow:
  208.  
  209. lw $17 1600($13)
  210. addi $11 $0 40
  211. sub $17 $11 $17
  212.  
  213. makeMapColumn:
  214.  
  215. blt $14 $17 emptyBlock
  216. beq $14 $17 topBlock
  217. j underBlock
  218.  
  219. emptyBlock:
  220. addi $18 $0 0
  221. j saveBlock
  222.  
  223. underBlock:
  224. addi $18 $0 2048
  225. j saveBlock
  226.  
  227. topBlock:
  228. addi $12 $0 75
  229. bgt $13 $12 forceCheckHole
  230.  
  231. contTopBlock:
  232. jal genNewRandom
  233. addi $22 $7 0
  234. addi $20 $0 11
  235. srl $22 $22 $20
  236. jal genNewRandom
  237. addi $10 $7 0
  238. srl $10 $10 $20
  239.  
  240. addi $11 $0 5
  241. blt $22 $11 emptyBlock
  242. addi $11 $0 7
  243. blt $22 $11 dynBlock
  244. addi $11 $0 8
  245. blt $22 $11 powerUp
  246. addi $11 $0 10
  247. blt $22 $11 windBlock
  248. j groundBlock
  249.  
  250. dynBlock:
  251. addi $11 $0 10
  252. addi $22 $0 12
  253. blt $10 $11 otherBits
  254. addi $11 $0 20
  255. addi $22 $0 15
  256. blt $10 $11 otherBits
  257. addi $11 $0 26
  258. addi $22 $0 16
  259. blt $10 $11 otherBits
  260. addi $11 $0 29
  261. addi $22 $0 13
  262. blt $10 $11 otherBits
  263. addi $22 $0 14
  264. j otherBits
  265.  
  266.  
  267. powerUp:
  268. addi $11 $0 8
  269. addi $22 $0 26
  270. blt $10 $11 WP
  271. addi $11 $0 16
  272. addi $22 $0 27
  273. blt $10 $11 WP
  274. addi $11 $0 24
  275. addi $22 $0 28
  276. blt $10 $11 WP
  277. addi $22 $0 29
  278. j WP
  279.  
  280. windBlock:
  281. addi $11 $0 8
  282. addi $22 $0 19
  283. blt $10 $11 WP
  284. addi $11 $0 16
  285. addi $22 $0 20
  286. blt $10 $11 WP
  287. addi $11 $0 24
  288. addi $22 $0 21
  289. blt $10 $11 WP
  290. addi $22 $0 22
  291. j WP
  292.  
  293. groundBlock:
  294. addi $11 $0 2
  295. addi $22 $0 18
  296. blt $10 $11 otherBits
  297. addi $11 $0 4
  298. addi $22 $0 1
  299. blt $10 $11 otherBits
  300. addi $11 $0 6
  301. addi $22 $0 3
  302. blt $10 $11 otherBits
  303. addi $11 $0 8
  304. addi $22 $0 4
  305. blt $10 $11 otherBits
  306. addi $11 $0 10
  307. addi $22 $0 5
  308. blt $10 $11 otherBits
  309. addi $11 $0 12
  310. addi $22 $0 6
  311. blt $10 $11 otherBits
  312. addi $11 $0 14
  313. addi $22 $0 7
  314. blt $10 $11 otherBits
  315. addi $11 $0 16
  316. addi $22 $0 8
  317. blt $10 $11 otherBits
  318. addi $11 $0 18
  319. addi $22 $0 9
  320. blt $10 $11 otherBits
  321. addi $11 $0 20
  322. addi $22 $0 10
  323. blt $10 $11 otherBits
  324. addi $11 $0 22
  325. addi $22 $0 11
  326. blt $10 $11 otherBits
  327. addi $11 $0 24
  328. addi $22 $0 12
  329. blt $10 $11 otherBits
  330. addi $11 $0 26
  331. addi $22 $0 17
  332. blt $10 $11 otherBits
  333. addi $11 $0 28
  334. addi $22 $0 23
  335. blt $10 $11 otherBits
  336. addi $11 $0 30
  337. addi $22 $0 24
  338. blt $10 $11 otherBits
  339. addi $22 $0 25
  340. j otherBits
  341.  
  342. WP:
  343. jal genNewRandom
  344. addi $22 $7 0
  345. addi $23 $0 27
  346. sll $21 $22 $23
  347. srl $21 $21 $23
  348.  
  349. addi $20 $0 13
  350. blt $21 $20 twoOffset
  351. addi $20 $0 26
  352. blt $21 $20 threeOffset
  353. addi $20 $0 29
  354. blt $21 $20 fourOffset
  355.  
  356. fourOffset:
  357. addi $21 $0 5
  358. j offsetCont
  359. threeOffset:
  360. addi $21 $0 4
  361. j offsetCont
  362. twoOffset:
  363. addi $21 $0 3
  364. j offsetCont
  365. oneOffset:
  366. addi $21 $0 2
  367. j offsetCont
  368.  
  369. offsetCont:
  370. sub $14 $17 $21
  371. j otherBits
  372.  
  373.  
  374. otherBits:
  375. addi $19 $0 25
  376. beq $22 $19 isWater
  377. addi $19 $0 23
  378. beq $22 $19 isIce
  379. addi $19 $0 24
  380. beq $22 $19 isMud
  381. addi $19 $0 18
  382. beq $22 $19 isHole
  383. j isOther
  384.  
  385. isWater:
  386. sll $18 $22 $20
  387. addi $18 $18 512
  388. j saveBlock
  389.  
  390. isIce:
  391. sll $18 $22 $20
  392. addi $18 $18 128
  393. j saveBlock
  394.  
  395. isMud:
  396. sll $18 $22 $20
  397. addi $18 $18 320
  398. j saveBlock
  399.  
  400. isHole:
  401. addi $19 $0 71
  402. blt $13 $19 noHole
  403. bnez $26 noHole
  404. addi $22 $0 18
  405. sll $18 $22 $20
  406. addi $26 $0 1
  407. j saveBlock
  408.  
  409.  
  410. noHole:
  411. j emptyBlock
  412.  
  413. isOther:
  414. sll $18 $22 $20
  415. j saveBlock
  416.  
  417. forceCheckHole:
  418. beqz $26 isHole
  419. j contTopBlock
  420.  
  421.  
  422. saveBlock:
  423.  
  424. mult $1 $14 $16
  425. add $1 $1 $13
  426. addi $2 $18 0
  427. jal writeGridCode
  428.  
  429. addi $14 $14 1
  430.  
  431. blt $14 $15 makeMapColumn
  432.  
  433. addi $13 $13 1
  434. addi $14 $0 0
  435.  
  436. blt $13 $16 makeMapRow
  437.  
  438.  
  439. jal loadAll
  440. addi $31 $28 0
  441. jr $31
  442.  
  443. indexToAddress:
  444. addi $28 $31 0
  445. jal saveAll
  446.  
  447. addi $13 $0 2
  448.  
  449. div $7 $1 2
  450. mod $8 $1 2
  451.  
  452. jal loadAll
  453. addi $31 $28 0
  454. jr $31
  455.  
  456. genNewRandom:
  457. addi $28 $31 0
  458. jal saveAll
  459.  
  460. addi $23 $0 2490
  461. lw $15 0($23)
  462. lw $24 1($23)
  463. lw $25 2($23)
  464. lw $26 3($23)
  465.  
  466. mult $15 $15 $24
  467. add $15 $15 $26
  468. mod $15 $15 $25
  469. sw $15 0($23)
  470.  
  471. addi $7 $15 0
  472.  
  473. jal loadAll
  474. addi $31 $28 0
  475. jr $31
  476.  
  477. normalizeToPlusMinusOne:
  478. addi $28 $31 0
  479. jal saveAll
  480.  
  481. addi $13 $0 1
  482. addi $14 $0 10
  483. addi $15 $0 1
  484. sub $14 $14 $15
  485. sll $13 $13 $14
  486.  
  487. bgt $1 $13 maxOneNormalizeToPlusMinusOne
  488. sub $13 $0 $13
  489. blt $1 $13 minOneNormalizeToPlusMinusOne
  490.  
  491. addi $7 $1 0
  492.  
  493. leaveNormalizeToPlusMinusOne:
  494.  
  495. jal loadAll
  496. addi $31 $28 0
  497. jr $31
  498.  
  499. maxOneNormalizeToPlusMinusOne:
  500. addi $7 $13 0
  501. j leaveNormalizeToPlusMinusOne
  502.  
  503. minOneNormalizeToPlusMinusOne:
  504. addi $7 $13 0
  505. j leaveNormalizeToPlusMinusOne
  506.  
  507. nopSlide:
  508. addi $28 $31 0
  509. jal saveAll
  510.  
  511. addi $13 $0 2000
  512.  
  513. nopSlideOuterLoop:
  514. addi $14 $0 5
  515. addi $13 $13 -1
  516. beqz $13 nopSlideLeaveLoop
  517.  
  518. nopSlideInnerLoop:
  519. addi $14 $14 -1
  520. beqz $14 nopSlideOuterLoop
  521. j nopSlideInnerLoop
  522.  
  523.  
  524. nopSlideLeaveLoop:
  525.  
  526. jal loadAll
  527. addi $31 $28 0
  528. jr $31
  529.  
  530. absoluteValue:
  531. addi $28 $31 0
  532. jal saveAll
  533.  
  534. addi $13 $0 31
  535. srl $14 $1 $13
  536.  
  537. beqz $14 absEx
  538.  
  539. sub $1 $0 $1
  540.  
  541. absEx:
  542. addi $7 $1 0
  543.  
  544. jal loadAll
  545. addi $31 $28 0
  546. jr $31
  547.  
  548.  
  549. getSwitchVal:
  550.  
  551. addi $28 $31 0
  552. jal saveAll
  553.  
  554. addi $13 $1 0
  555.  
  556. st $14
  557.  
  558. addi $15 $0 31
  559. sub $15 $15 $14
  560. addi $15 $15 1
  561.  
  562. sll $14 $14 $15
  563.  
  564. addi $15 $0 31
  565. srl $7 $14 $15
  566.  
  567. jal loadAll
  568. addi $31 $28 0
  569. jr $31
  570.  
  571. exit:
  572. j exit
  573.  
  574. drawBall:
  575. addi $28 $31 0
  576. jal saveAll
  577. addi $13 $0 10
  578. sra $1 $1 $13
  579. sra $2 $2 $13
  580.  
  581. addi $15 $1 0
  582. addi $18 $15 -1
  583. addi $17 $15 1
  584.  
  585. addi $16 $2 0
  586. addi $20 $16 -1
  587. addi $19 $16 1
  588.  
  589. sll $18 $18 $13
  590. sll $15 $15 $13
  591. sll $17 $17 $13
  592. sll $20 $20 $13
  593. sll $16 $16 $13
  594. sll $19 $19 $13
  595.  
  596. addi $2 $16 0
  597. jal drawBallPixel
  598. addi $1 $18 0
  599. jal drawBallPixel
  600. addi $1 $17 0
  601. jal drawBallPixel
  602.  
  603. addi $2 $20 0
  604. jal drawBallPixel
  605. addi $1 $15 0
  606. jal drawBallPixel
  607. addi $1 $18 0
  608. jal drawBallPixel
  609.  
  610. addi $2 $19 0
  611. jal drawBallPixel
  612. addi $1 $15 0
  613. jal drawBallPixel
  614. addi $1 $17 0
  615. jal drawBallPixel
  616.  
  617. jal loadAll
  618. addi $31 $28 0
  619. jr $31
  620.  
  621. drawBallPixel:
  622. addi $28 $31 0
  623. jal saveAll
  624.  
  625. addi $13, $0, 640
  626. addi $14, $0, 480
  627. addi $27, $0, 10
  628. sra $16, $1, $27
  629. sra $17, $2, $27
  630.  
  631. bltz $16, drawBallExit
  632. bltz $17, drawBallExit
  633. bgt $16, $13, drawBallExit
  634. bgt $17, $14, drawBallExit
  635.  
  636. mult $18, $17, $13
  637. add $18, $18, $16
  638.  
  639. sp $3, 0($18)
  640.  
  641. drawBallExit:
  642.  
  643. jal loadAll
  644. addi $31 $28 0
  645. jr $31
  646.  
  647.  
  648. getGrid:
  649. addi $28 $31 0
  650. jal saveAll
  651.  
  652. addi $13, $0, 640
  653. addi $14, $0, 480
  654. addi $15, $0, 80
  655. addi $27, $0, 10
  656. sra $16, $1, $27
  657. sra $17, $2, $27
  658.  
  659. bltz $16, offscreen
  660. bltz $17, offscreen
  661. bgt $16, $13, offscreen
  662. bgt $17, $14, offscreen
  663.  
  664. addi $13, $0, 8
  665. addi $14, $0, 12
  666. div $16, $16, $13
  667. div $17, $17, $14
  668.  
  669. mult $7, $17, $15
  670. add $7, $7, $16
  671.  
  672. jal loadAll
  673. addi $31 $28 0
  674. jr $31
  675.  
  676. offscreen:
  677. addi $7, $0 -1
  678.  
  679. jal loadAll
  680. addi $31 $28 0
  681. jr $31
  682.  
  683.  
  684. getGridCode:
  685.  
  686. addi $28 $31 0
  687. jal saveAll
  688.  
  689. bltz $1, offRead
  690.  
  691. addi $13, $0, 2
  692. mod $14, $1, $13
  693. div $15, $1, $13
  694. lw $7, 0($15)
  695.  
  696.  
  697. addi $16, $0, 16
  698. beqz $14, evenRead
  699.  
  700. sll $7, $7, $16
  701.  
  702. evenRead:
  703. srl $7, $7, $16
  704.  
  705. jal loadAll
  706. addi $31 $28 0
  707. jr $31
  708.  
  709. offRead:
  710. addi $7, $0, 0
  711.  
  712. jal loadAll
  713. addi $31 $28 0
  714. jr $31
  715.  
  716. writeGridCode:
  717. addi $28 $31 0
  718. jal saveAll
  719.  
  720. bltz $1, exitWrite
  721.  
  722. addi $13, $0, 2
  723. mod $14, $1, $13
  724. div $15, $1, $13
  725. lw $16, 0($15)
  726.  
  727.  
  728. addi $17, $0, 16
  729. bnez $14, evenWrite
  730.  
  731. sll $16 $16 $17
  732. srl $16 $16 $17
  733. sll $2 $2 $17
  734. add $16 $2 $16
  735. j saveWrite
  736.  
  737. evenWrite:
  738. srl $16 $16 $17
  739. sll $16 $16 $17
  740. add $16 $16 $2
  741. j saveWrite
  742.  
  743. saveWrite:
  744. sw $16 0($15)
  745.  
  746. exitWrite:
  747.  
  748. jal loadAll
  749. addi $31 $28 0
  750. jr $31
  751.  
  752. saveGridSquareFromPos:
  753. addi $28 $31 0
  754. jal saveAll
  755.  
  756. jal getGrid
  757. addi $1 $7 0
  758. jal saveGridSquare
  759. jal loadAll
  760. addi $31 $28 0
  761. jr $31
  762.  
  763. saveGridSquare:
  764. addi $28 $31 0
  765. jal saveAll
  766.  
  767. addi $13, $0, 640
  768. addi $14, $0, 80
  769.  
  770. div $15, $1, $14
  771.  
  772. addi $16, $0, 12
  773. mult $17, $15, $13
  774. mult $17, $17, $16
  775.  
  776. addi $16, $0, 8
  777. mult $15, $15, $14
  778. sub $15, $1, $15
  779. mult $18, $15, $16
  780. add $27, $17, $18
  781.  
  782. jal getGridCode
  783. addi $13, $0, 11
  784. srl $7, $7, $13
  785.  
  786.  
  787. addi $13, $0, 12
  788. addi $14, $0, 4
  789. addi $15, $0, 0
  790. addi $17, $0, 1680
  791. addi $18, $0, 24
  792. addi $20, $0, 2
  793. addi $21, $0, 8
  794. addi $22, $0, 640
  795. mult $7, $7, $18
  796. add $17, $17, $7
  797.  
  798. saveGridSquarecol:
  799.  
  800. saveGridSquarerow:
  801.  
  802.  
  803. saveGridSquareword:
  804. lw $19, 0($17)
  805. sll $19, $19, $15
  806. srl $19, $19, $18
  807. sp $19, 0($27)
  808.  
  809. addi $27, $27, 1
  810. addi $15, $15, 8
  811.  
  812. addi $14, $14, -1
  813. bnez $14, saveGridSquareword
  814.  
  815. addi $17, $17, 1
  816. addi $20, $20, -1
  817. addi $14, $0, 4
  818. addi $15, $0, 0
  819. bnez $20, saveGridSquarerow
  820.  
  821. addi $20, $0, 2
  822. addi $13, $13, -1
  823. sub $27, $27, $21
  824. add $27, $27, $22
  825. bnez $13, saveGridSquarecol
  826.  
  827. jal loadAll
  828. addi $31 $28 0
  829. jr $31
  830.  
  831. writeGridCodeFromPos:
  832. addi $28 $31 0
  833. jal saveAll
  834.  
  835. jal getGrid
  836. addi $1 $7 0
  837. addi $2 $3 0
  838.  
  839. jal writeGridCode
  840. jal saveGridSquare
  841.  
  842. jal loadAll
  843. addi $31 $28 0
  844. jr $31
  845.  
  846. getGridCodeFromPos:
  847. addi $28 $31 0
  848. jal saveAll
  849.  
  850. jal getGrid
  851. addi $1 $7 0
  852. jal getGridCode
  853.  
  854. jal loadAll
  855. addi $31 $28 0
  856. jr $31
  857.  
  858. drawAll:
  859. addi $28 $31 0
  860. jal saveAll
  861.  
  862. addi $13 $0 0
  863. addi $14 $0 3200
  864. drawLoop:
  865. addi $1 $13 0
  866.  
  867. jal saveGridSquare
  868.  
  869. addi $13 $13 1
  870. bne $13 $14 drawLoop
  871.  
  872. jal loadAll
  873. addi $31 $28 0
  874. jr $31
  875.  
  876. relativePixel:
  877. addi $28 $31 0
  878. jal saveAll
  879.  
  880. jal getGridCodeFromPos
  881. addi $15 $7 0
  882. addi $16 $0 11
  883. srl $15 $15 $16
  884.  
  885. addi $13 $0 10
  886. srl $1 $1 $13
  887. srl $2 $2 $13
  888.  
  889. addi $13 $0 8
  890. addi $14 $0 12
  891.  
  892. mod $13 $1 $13
  893. mod $14 $2 $14
  894.  
  895. addi $16 $0 8
  896.  
  897. mult $17 $14 $16
  898. add $17 $17 $13
  899. addi $18 $0 4
  900. div $19 $17 $18
  901. mod $20 $17 $18
  902.  
  903. addi $21 $0 24
  904. mult $21 $21 $15
  905. add $21 $21 $19
  906. lw $22 1680($21)
  907. addi $23 $0 8
  908. mult $23 $23 $20
  909. sll $22 $22 $23
  910. addi $23 $0 24
  911. srl $22 $22 $23
  912.  
  913. addi $7 $22 0
  914.  
  915.  
  916. jal loadAll
  917. addi $31 $28 0
  918. jr $31
  919.  
  920.  
  921. collisionsRouting:
  922.  
  923.  
  924.  
  925.  
  926. addi $28 $31 0
  927. jal saveAll
  928.  
  929. addi $13 $1 0
  930. addi $14 $2 0
  931. addi $15 $3 0
  932. addi $16 $4 0
  933.  
  934. jal getGridCodeFromPos
  935. addi $26 $7 0
  936. addi $17 $0 11
  937. srl $27 $26 $17
  938.  
  939. addi $17 $0 10
  940. sra $19 $13 $17
  941. sra $20 $14 $17
  942.  
  943. addi $17 $0 0
  944. blt $19 $17 leftWall
  945.  
  946. addi $17 $0 600
  947. bgt $19 $17 rightWall
  948.  
  949. addi $17 $0 0
  950. blt $20 $17 botWall
  951.  
  952. addi $17 $0 8
  953. mod $19 $19 $17
  954. addi $17 $0 12
  955. mod $20 $20 $17
  956.  
  957.  
  958. addi $17 $0 0
  959. beq $27 $17 geoAir
  960.  
  961. addi $17 $0 1
  962. beq $27 $17 geoFullSquare
  963.  
  964. addi $17 $0 2
  965. beq $27 $17 geoBottomRightTriangle
  966.  
  967. addi $17 $0 3
  968. beq $27 $17 geoTopRightTriangle
  969.  
  970. addi $17 $0 4
  971. beq $27 $17 geoBottomLeftTriangle
  972.  
  973. addi $17 $0 5
  974. beq $27 $17 geoTopLeftTriangle
  975.  
  976. addi $17 $0 6
  977. beq $27 $17 geoBottomQuarterFull
  978.  
  979. addi $17 $0 7
  980. beq $27 $17 geoBottomHalfFull
  981.  
  982. addi $17 $0 8
  983. beq $27 $17 geoBottomThreeQuarterFull
  984.  
  985. addi $17 $0 9
  986. beq $27 $17 geoTopQuarterFull
  987.  
  988. addi $17 $0 10
  989. beq $27 $17 geoTopHalfFull
  990.  
  991. addi $17 $0 11
  992. beq $27 $17 geoTopThreeQuarterFull
  993.  
  994. addi $17 $0 12
  995. beq $27 $17 geoBarrel
  996.  
  997. addi $17 $0 13
  998. beq $27 $17 geoAcc
  999.  
  1000. addi $17 $0 14
  1001. beq $27 $17 geoDec
  1002.  
  1003. addi $17 $0 15
  1004. beq $27 $17 geoTwoHitBlock
  1005.  
  1006. addi $17 $0 16
  1007. beq $27 $17 geoOneHitBlock
  1008.  
  1009. addi $17 $0 17
  1010. beq $27 $17 geoSpire
  1011.  
  1012. addi $17 $0 18
  1013. beq $27 $17 geoHole
  1014.  
  1015. addi $17 $0 19
  1016. beq $27 $17 geoRightWind
  1017.  
  1018. addi $17 $0 20
  1019. beq $27 $17 geoLeftWind
  1020.  
  1021. addi $17 $0 21
  1022. beq $27 $17 geoUpWind
  1023.  
  1024. addi $17 $0 22
  1025. beq $27 $17 geoDownWind
  1026.  
  1027. addi $17 $0 23
  1028. beq $27 $17 geoIce
  1029.  
  1030. addi $17 $0 24
  1031. beq $27 $17 geoMud
  1032.  
  1033. addi $17 $0 25
  1034. beq $27 $17 geoWater
  1035.  
  1036. addi $17 $0 26
  1037. beq $27 $17 geoLowGrav
  1038.  
  1039. addi $17 $0 27
  1040. beq $27 $17 geoHighGrav
  1041.  
  1042. addi $17 $0 28
  1043. beq $27 $17 geoMaxHitPlus
  1044.  
  1045. addi $17 $0 29
  1046. beq $27 $17 geoMaxHitMinus
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055. upNorm:
  1056. addi $17 $0 0
  1057. addi $18 $0 -1
  1058.  
  1059. addi $21 $0 10
  1060. sll $22 $17 $21
  1061. sll $23 $18 $21
  1062. add $13 $13 $22
  1063. add $14 $14 $23
  1064.  
  1065. j makeCollision
  1066.  
  1067. downNorm:
  1068. addi $17 $0 0
  1069. addi $18 $0 1
  1070.  
  1071. addi $21 $0 10
  1072. sll $22 $17 $21
  1073. sll $23 $18 $21
  1074. add $13 $13 $22
  1075. add $14 $14 $23
  1076.  
  1077. j makeCollision
  1078.  
  1079. leftNorm:
  1080. addi $17 $0 -1
  1081. addi $18 $0 0
  1082.  
  1083. addi $21 $0 10
  1084. sll $22 $17 $21
  1085. sll $23 $18 $21
  1086. add $13 $13 $22
  1087. add $14 $14 $23
  1088.  
  1089. j makeCollision
  1090.  
  1091. rightNorm:
  1092. addi $17 $0 1
  1093. addi $18 $0 0
  1094.  
  1095. addi $21 $0 10
  1096. sll $22 $17 $21
  1097. sll $23 $18 $21
  1098. add $13 $13 $22
  1099. add $14 $14 $23
  1100.  
  1101. j makeCollision
  1102.  
  1103. upLeftNorm:
  1104. addi $17 $0 0
  1105. addi $18 $0 -1
  1106.  
  1107. addi $21 $0 10
  1108. sll $22 $17 $21
  1109. sll $23 $18 $21
  1110. add $13 $13 $22
  1111. add $14 $14 $23
  1112.  
  1113. addi $17 $0 -1
  1114. addi $18 $0 -1
  1115.  
  1116. j makeCollision
  1117.  
  1118. upRightNorm:
  1119. addi $17 $0 0
  1120. addi $18 $0 -1
  1121.  
  1122. addi $21 $0 10
  1123. sll $22 $17 $21
  1124. sll $23 $18 $21
  1125. add $13 $13 $22
  1126. add $14 $14 $23
  1127.  
  1128. addi $17 $0 1
  1129. addi $18 $0 -1
  1130.  
  1131. j makeCollision
  1132.  
  1133. downLeftNorm:
  1134. addi $17 $0 -1
  1135. addi $18 $0 1
  1136.  
  1137. addi $21 $0 10
  1138. sll $22 $17 $21
  1139. sll $23 $18 $21
  1140. add $13 $13 $22
  1141. add $14 $14 $23
  1142.  
  1143. addi $17 $0 -1
  1144. addi $18 $0 0
  1145.  
  1146. j makeCollision
  1147.  
  1148. downRightNorm:
  1149. addi $17 $0 1
  1150. addi $18 $0 1
  1151.  
  1152. addi $21 $0 10
  1153. sll $22 $17 $21
  1154. sll $23 $18 $21
  1155. add $13 $13 $22
  1156. add $14 $14 $23
  1157.  
  1158. addi $17 $0 1
  1159. addi $18 $0 0
  1160.  
  1161. j makeCollision
  1162.  
  1163. triangleUpRightNorm:
  1164.  
  1165. addi $17 $0 4
  1166. addi $18 $0 -3
  1167. addi $25 $0 10
  1168.  
  1169. sll $17 $17 $12
  1170. sll $18 $18 $25
  1171. addi $25 $0 5
  1172. div $17 $17 $25
  1173. div $18 $18 $25
  1174. addi $3 $17 0
  1175. addi $4 $18 0
  1176.  
  1177. addi $22 $17 0
  1178. addi $23 $18 0
  1179. add $13 $13 $22
  1180. add $14 $14 $23
  1181.  
  1182. j postNormShiftingCollision
  1183.  
  1184. triangleUpLeftNorm:
  1185.  
  1186. addi $17 $0 -4
  1187. addi $18 $0 -3
  1188. addi $25 $0 10
  1189.  
  1190. sll $17 $17 $12
  1191. sll $18 $18 $25
  1192. addi $25 $0 5
  1193. div $17 $17 $25
  1194. div $18 $18 $25
  1195. addi $3 $17 0
  1196. addi $4 $18 0
  1197.  
  1198. addi $22 $17 0
  1199. addi $23 $18 0
  1200. add $13 $13 $22
  1201. add $14 $14 $23
  1202.  
  1203. j postNormShiftingCollision
  1204.  
  1205.  
  1206. triangleDownRightNorm:
  1207.  
  1208. addi $17 $0 4
  1209. addi $18 $0 3
  1210. addi $25 $0 10
  1211.  
  1212. sll $17 $17 $12
  1213. sll $18 $18 $25
  1214. addi $25 $0 5
  1215. div $17 $17 $25
  1216. div $18 $18 $25
  1217. addi $3 $17 0
  1218. addi $4 $18 0
  1219.  
  1220. addi $22 $17 0
  1221. addi $23 $18 0
  1222. add $13 $13 $22
  1223. add $14 $14 $23
  1224.  
  1225. j postNormShiftingCollision
  1226.  
  1227. triangleDownLeftNorm:
  1228.  
  1229. addi $17 $0 -4
  1230. addi $18 $0 3
  1231. addi $25 $0 10
  1232.  
  1233. sll $17 $17 $12
  1234. sll $18 $18 $25
  1235. addi $25 $0 5
  1236. div $17 $17 $25
  1237. div $18 $18 $25
  1238. addi $3 $17 0
  1239. addi $4 $18 0
  1240.  
  1241. addi $22 $17 0
  1242. addi $23 $18 0
  1243. add $13 $13 $22
  1244. add $14 $14 $23
  1245.  
  1246. j postNormShiftingCollision
  1247.  
  1248. leftWall:
  1249. addi $17 $0 1
  1250. addi $18 $0 0
  1251.  
  1252. addi $21 $0 10
  1253. sll $22 $17 $21
  1254. sll $23 $18 $21
  1255. add $13 $13 $22
  1256. add $14 $14 $23
  1257.  
  1258. j makeCollision
  1259.  
  1260. rightWall:
  1261. addi $17 $0 -3
  1262. addi $18 $0 0
  1263.  
  1264. addi $21 $0 10
  1265. sll $22 $17 $21
  1266. sll $23 $18 $21
  1267. add $13 $13 $22
  1268. add $14 $14 $23
  1269.  
  1270. j makeCollision
  1271.  
  1272. botWall:
  1273. addi $17 $0 0
  1274. addi $18 $0 1
  1275.  
  1276. addi $21 $0 10
  1277. sll $22 $17 $21
  1278. sll $23 $18 $21
  1279. add $13 $13 $22
  1280. add $14 $14 $23
  1281.  
  1282. j makeCollision
  1283.  
  1284.  
  1285. geoAir:
  1286.  
  1287. j noCollisionRouting
  1288.  
  1289.  
  1290. TODO: SET BACK TO NOCOLLISIONEXIT
  1291. addi $17 $0 10
  1292. addi $9 $0 0
  1293. addi $10 $0 -1
  1294. sll $9 $9 $17
  1295. sll $10 $10 $17
  1296.  
  1297. j collisionsRoutingExit
  1298.  
  1299.  
  1300.  
  1301. geoFullSquare:
  1302.  
  1303. addi $17 $0 0
  1304. beq $19 $17 geoFullSquareHandleLeft:
  1305.  
  1306. addi $17 $0 7
  1307. beq $19 $17 geoFullSquareHandleRight:
  1308.  
  1309. addi $17 $0 0
  1310. beq $20 $17 upNorm
  1311.  
  1312. addi $17 $0 11
  1313. beq $20 $17 downNorm
  1314.  
  1315. j trappedInsideExit
  1316.  
  1317. geoFullSquareHandleLeft:
  1318. addi $17 $0 0
  1319. beq $20 $17 upLeftNorm
  1320.  
  1321. addi $17 $0 11
  1322. beq $20 $17 downLeftNorm
  1323.  
  1324. j leftNorm
  1325.  
  1326. geoFullSquareHandleRight:
  1327.  
  1328. addi $17 $0 0
  1329. beq $20 $17 upRightNorm
  1330.  
  1331. addi $17 $0 11
  1332. beq $20 $17 downRightNorm
  1333.  
  1334. j rightNorm
  1335.  
  1336.  
  1337. geoBottomRightTriangle:
  1338.  
  1339. addi $17 $0 11
  1340. beq $20 $17 downNorm
  1341.  
  1342. addi $17 $0 7
  1343. beq $19 $17 rightNorm
  1344.  
  1345. j triangleUpLeftNorm
  1346.  
  1347.  
  1348. geoTopRightTriangle:
  1349.  
  1350. addi $17 $0 0
  1351. beq $20 $17 upNorm
  1352.  
  1353. addi $17 $0 7
  1354. beq $19 $17 rightNorm
  1355.  
  1356. j triangleDownLeftNorm
  1357.  
  1358.  
  1359. geoBottomLeftTriangle:
  1360.  
  1361. addi $17 $0 11
  1362. beq $20 $17 downNorm
  1363.  
  1364. addi $17 $0 0
  1365. beq $19 $17 leftNorm
  1366.  
  1367. j triangleUpRightNorm
  1368.  
  1369.  
  1370. geoTopLeftTriangle:
  1371.  
  1372. addi $17 $0 11
  1373. beq $20 $17 downNorm
  1374.  
  1375. addi $17 $0 7
  1376. beq $19 $17 rightNorm
  1377.  
  1378. j triangleDownRightNorm
  1379.  
  1380.  
  1381. geoBottomQuarterFull:
  1382.  
  1383. addi $17 $0 0
  1384. beq $19 $17 geoBottomQuarterFullHandleLeft
  1385.  
  1386. addi $17 $0 7
  1387. beq $19 $17 geoBottomQuarterFullHandleRight
  1388.  
  1389. addi $17 $0 9
  1390. beq $20 $17 upNorm
  1391.  
  1392. addi $17 $0 11
  1393. beq $20 $17 downNorm
  1394.  
  1395. j trappedInsideExit
  1396.  
  1397. geoBottomQuarterFullHandleLeft:
  1398. addi $17 $0 9
  1399. beq $20 $17 upLeftNorm
  1400.  
  1401. addi $17 $0 11
  1402. beq $20 $17 downLeftNorm
  1403.  
  1404. j leftNorm
  1405.  
  1406. geoBottomQuarterFullHandleRight:
  1407.  
  1408. addi $17 $0 9
  1409. beq $20 $17 upRightNorm
  1410.  
  1411. addi $17 $0 11
  1412. beq $20 $17 downRightNorm
  1413.  
  1414. j rightNorm
  1415.  
  1416.  
  1417. geoBottomHalfFull:
  1418.  
  1419. addi $17 $0 0
  1420. beq $19 $17 geoBottomHalfFullHandleLeft
  1421.  
  1422. addi $17 $0 7
  1423. beq $19 $17 geoBottomHalfFullHandleRight
  1424.  
  1425. addi $17 $0 6
  1426. beq $20 $17 upNorm
  1427.  
  1428. addi $17 $0 11
  1429. beq $20 $17 downNorm
  1430.  
  1431. j trappedInsideExit
  1432.  
  1433. geoBottomHalfFullHandleLeft:
  1434. addi $17 $0 6
  1435. beq $20 $17 upLeftNorm
  1436.  
  1437. addi $17 $0 11
  1438. beq $20 $17 downLeftNorm
  1439.  
  1440. j leftNorm
  1441.  
  1442. geoBottomHalfFullHandleRight:
  1443.  
  1444. addi $17 $0 6
  1445. beq $20 $17 upRightNorm
  1446.  
  1447. addi $17 $0 11
  1448. beq $20 $17 downRightNorm
  1449.  
  1450. j rightNorm
  1451.  
  1452. geoBottomThreeQuarterFull:
  1453.  
  1454. addi $17 $0 0
  1455. beq $19 $17 geoBottomThreeQuarterFullHandleLeft
  1456.  
  1457. addi $17 $0 7
  1458. beq $19 $17 geoBottomThreeQuarterFullHandleRight
  1459.  
  1460. addi $17 $0 3
  1461. beq $20 $17 upNorm
  1462.  
  1463. addi $17 $0 11
  1464. beq $20 $17 downNorm
  1465.  
  1466. j trappedInsideExit
  1467.  
  1468. geoBottomThreeQuarterFullHandleLeft:
  1469. addi $17 $0 3
  1470. beq $20 $17 upLeftNorm
  1471.  
  1472. addi $17 $0 11
  1473. beq $20 $17 downLeftNorm
  1474.  
  1475. j leftNorm
  1476.  
  1477. geoBottomThreeQuarterFullHandleRight:
  1478.  
  1479. addi $17 $0 3
  1480. beq $20 $17 upRightNorm
  1481.  
  1482. addi $17 $0 11
  1483. beq $20 $17 downRightNorm
  1484.  
  1485. j rightNorm
  1486.  
  1487. geoTopQuarterFull:
  1488.  
  1489. addi $17 $0 0
  1490. beq $19 $17 geoTopQuarterFullHandleLeft
  1491.  
  1492. addi $17 $0 7
  1493. beq $19 $17 geoTopQuarterFullHandleRight
  1494.  
  1495. addi $17 $0 0
  1496. beq $20 $17 upNorm
  1497.  
  1498. addi $17 $0 2
  1499. beq $20 $17 downNorm
  1500.  
  1501. j trappedInsideExit
  1502.  
  1503. geoTopQuarterFullHandleLeft:
  1504. addi $17 $0 0
  1505. beq $20 $17 upLeftNorm
  1506.  
  1507. addi $17 $0 2
  1508. beq $20 $17 downLeftNorm
  1509.  
  1510. j leftNorm
  1511.  
  1512. geoTopQuarterFullHandleRight:
  1513.  
  1514. addi $17 $0 0
  1515. beq $20 $17 upRightNorm
  1516.  
  1517. addi $17 $0 2
  1518. beq $20 $17 downRightNorm
  1519.  
  1520. j rightNorm
  1521.  
  1522.  
  1523. geoTopHalfFull:
  1524.  
  1525. addi $17 $0 0
  1526. beq $19 $17 geoTopHalfFullHandleLeft
  1527.  
  1528. addi $17 $0 7
  1529. beq $19 $17 geoTopHalfFullHandleRight
  1530.  
  1531. addi $17 $0 0
  1532. beq $20 $17 upNorm
  1533.  
  1534. addi $17 $0 5
  1535. beq $20 $17 downNorm
  1536.  
  1537. j trappedInsideExit
  1538.  
  1539. geoTopHalfFullHandleLeft:
  1540. addi $17 $0 0
  1541. beq $20 $17 upLeftNorm
  1542.  
  1543. addi $17 $0 5
  1544. beq $20 $17 downLeftNorm
  1545.  
  1546. j leftNorm
  1547.  
  1548. geoTopHalfFullHandleRight:
  1549.  
  1550. addi $17 $0 0
  1551. beq $20 $17 upRightNorm
  1552.  
  1553. addi $17 $0 5
  1554. beq $20 $17 downRightNorm
  1555.  
  1556. j rightNorm
  1557.  
  1558. geoTopThreeQuarterFull:
  1559.  
  1560. addi $17 $0 0
  1561. beq $19 $17 geoTopThreeQuarterFullHandleLeft
  1562.  
  1563. addi $17 $0 7
  1564. beq $19 $17 geoTopThreeQuarterFullHandleRight
  1565.  
  1566. addi $17 $0 0
  1567. beq $20 $17 upNorm
  1568.  
  1569. addi $17 $0 8
  1570. beq $20 $17 downNorm
  1571.  
  1572. j trappedInsideExit
  1573.  
  1574. geoTopThreeQuarterFullHandleLeft:
  1575. addi $17 $0 0
  1576. beq $20 $17 upLeftNorm
  1577.  
  1578. addi $17 $0 8
  1579. beq $20 $17 downLeftNorm
  1580.  
  1581. j leftNorm
  1582.  
  1583. geoTopThreeQuarterFullHandleRight:
  1584.  
  1585. addi $17 $0 0
  1586. beq $20 $17 upRightNorm
  1587.  
  1588. addi $17 $0 8
  1589. beq $20 $17 downRightNorm
  1590.  
  1591. j rightNorm
  1592.  
  1593. geoBarrel:
  1594. addi $1 $13 0
  1595. addi $2 $14 0
  1596. addi $3 $0 0
  1597. jal writeGridCodeFromPos
  1598.  
  1599. addi $17 $0 9
  1600. addi $18 $0 10
  1601. addi $18 $18 -3
  1602. sll $17 $17 $18
  1603. sub $17 $0 $17
  1604.  
  1605. mult $9 $15 $17
  1606. mult $10 $16 $17
  1607.  
  1608. addi $18 $0 10
  1609. sra $9 $9 $18
  1610. sra $10 $10 $18
  1611.  
  1612. j collisionsRoutingExit
  1613.  
  1614. geoTwoHitBlock:
  1615. addi $1 $13 0
  1616. addi $2 $14 0
  1617.  
  1618. addi $3 $0 1
  1619. addi $17 $0 16
  1620. sll $3 $3 $17
  1621. jal writeGridCodeFromPos
  1622.  
  1623. addi $17 $0 0
  1624. beq $19 $17 geoTwoHitBlockHandleLeft
  1625.  
  1626. addi $17 $0 7
  1627. beq $19 $17 geoTwoHitBlockHandleRight
  1628.  
  1629. addi $17 $0 0
  1630. beq $20 $17 upNorm
  1631.  
  1632. addi $17 $0 11
  1633. beq $20 $17 downNorm
  1634.  
  1635. j trappedInsideExit
  1636.  
  1637. geoTwoHitBlockHandleLeft:
  1638. addi $17 $0 0
  1639. beq $20 $17 upLeftNorm
  1640.  
  1641. addi $17 $0 11
  1642. beq $20 $17 downLeftNorm
  1643.  
  1644. j leftNorm
  1645.  
  1646. geoTwoHitBlockHandleRight:
  1647.  
  1648. addi $17 $0 0
  1649. beq $20 $17 upRightNorm
  1650.  
  1651. addi $17 $0 11
  1652. beq $20 $17 downRightNorm
  1653.  
  1654. j rightNorm
  1655.  
  1656. geoOneHitBlock:
  1657. addi $1 $13 0
  1658. addi $2 $14 0
  1659. addi $3 $0 0
  1660. jal writeGridCodeFromPos
  1661.  
  1662. addi $17 $0 0
  1663. beq $19 $17 geoOneHitBlockHandleLeft
  1664.  
  1665. addi $17 $0 7
  1666. beq $19 $17 geoOneHitBlockHandleRight
  1667.  
  1668. addi $17 $0 0
  1669. beq $20 $17 upNorm
  1670.  
  1671. addi $17 $0 11
  1672. beq $20 $17 downNorm
  1673.  
  1674. j trappedInsideExit
  1675.  
  1676. geoOneHitBlockHandleLeft:
  1677. addi $17 $0 0
  1678. beq $20 $17 upLeftNorm
  1679.  
  1680. addi $17 $0 11
  1681. beq $20 $17 downLeftNorm
  1682.  
  1683. j leftNorm
  1684.  
  1685. geoOneHitBlockHandleRight:
  1686.  
  1687. addi $17 $0 0
  1688. beq $20 $17 upRightNorm
  1689.  
  1690. addi $17 $0 11
  1691. beq $20 $17 downRightNorm
  1692.  
  1693. j rightNorm
  1694.  
  1695. geoSpire:
  1696.  
  1697. addi $17 $0 11
  1698. beq $20 $17 downNorm
  1699.  
  1700. addi $17 $0 4
  1701. blt $19 $17 triangleUpLeftNorm
  1702.  
  1703. j triangleUpRightNorm
  1704.  
  1705. geoHole:
  1706. addi $17 $0 0
  1707. beq $19 $17 geoHoleHandleLeft:
  1708.  
  1709. addi $17 $0 7
  1710. beq $19 $17 geoHoleHandleRight:
  1711.  
  1712. addi $17 $0 11
  1713. beq $20 $17 downNorm
  1714.  
  1715. j exitMap
  1716.  
  1717. geoHoleHandleLeft:
  1718. addi $17 $0 0
  1719. beq $20 $17 upLeftNorm
  1720.  
  1721. addi $17 $0 11
  1722. beq $20 $17 downLeftNorm
  1723.  
  1724. j leftNorm
  1725.  
  1726. geoHoleHandleRight:
  1727.  
  1728. addi $17 $0 0
  1729. beq $20 $17 upRightNorm
  1730.  
  1731. addi $17 $0 11
  1732. beq $20 $17 downRightNorm
  1733.  
  1734. j rightNorm
  1735.  
  1736.  
  1737. geoRightWind:
  1738.  
  1739. addi $18 $0 1
  1740. addi $17 $0 10
  1741. addi $17 $17 -3
  1742. sll $18 $18 $17
  1743.  
  1744. addi $9 $18 0
  1745. addi $10 $16 0
  1746.  
  1747. j collisionsRoutingExit
  1748.  
  1749.  
  1750. geoLeftWind:
  1751.  
  1752. addi $18 $0 -1
  1753. addi $17 $17 -3
  1754. addi $17 $0 10
  1755. sll $18 $18 $17
  1756.  
  1757. addi $9 $18 0
  1758. addi $10 $16 0
  1759.  
  1760. j collisionsRoutingExit
  1761.  
  1762. geoUpWind:
  1763.  
  1764. addi $18 $0 -1
  1765. addi $17 $17 -3
  1766. addi $17 $0 10
  1767. sll $18 $18 $17
  1768.  
  1769. addi $9 $15 0
  1770. addi $10 $18 0
  1771.  
  1772. j collisionsRoutingExit
  1773.  
  1774. geoDownWind:
  1775.  
  1776. addi $18 $0 1
  1777. addi $17 $17 -3
  1778. addi $17 $0 10
  1779. sll $18 $18 $17
  1780.  
  1781. addi $9 $15 0
  1782. addi $10 $18 0
  1783.  
  1784. j collisionsRoutingExit
  1785.  
  1786. geoIce:
  1787.  
  1788. addi $17 $0 0
  1789. beq $19 $17 geoIceHandleLeft
  1790.  
  1791. addi $17 $0 7
  1792. beq $19 $17 geoIceHandleRight
  1793.  
  1794. addi $17 $0 0
  1795. beq $20 $17 upNorm
  1796.  
  1797. addi $17 $0 11
  1798. beq $20 $17 downNorm
  1799.  
  1800. j trappedInsideExit
  1801.  
  1802. geoIceHandleLeft:
  1803. addi $17 $0 0
  1804. beq $20 $17 upLeftNorm
  1805.  
  1806. addi $17 $0 11
  1807. beq $20 $17 downLeftNorm
  1808.  
  1809. j leftNorm
  1810.  
  1811. geoIceHandleRight:
  1812.  
  1813. addi $17 $0 0
  1814. beq $20 $17 upRightNorm
  1815.  
  1816. addi $17 $0 11
  1817. beq $20 $17 downRightNorm
  1818.  
  1819. j rightNorm
  1820.  
  1821. geoMud:
  1822.  
  1823. addi $17 $0 0
  1824. beq $19 $17 geoMudHandleLeft
  1825.  
  1826. addi $17 $0 7
  1827. beq $19 $17 geoMudHandleRight
  1828.  
  1829. addi $17 $0 0
  1830. beq $20 $17 upNorm
  1831.  
  1832. addi $17 $0 11
  1833. beq $20 $17 downNorm
  1834.  
  1835. j trappedInsideExit
  1836.  
  1837. geoMudHandleLeft:
  1838. addi $17 $0 0
  1839. beq $20 $17 upLeftNorm
  1840.  
  1841. addi $17 $0 11
  1842. beq $20 $17 downLeftNorm
  1843.  
  1844. j leftNorm
  1845.  
  1846. geoMudHandleRight:
  1847.  
  1848. addi $17 $0 0
  1849. beq $20 $17 upRightNorm
  1850.  
  1851. addi $17 $0 11
  1852. beq $20 $17 downRightNorm
  1853.  
  1854. j rightNorm
  1855.  
  1856. geoWater:
  1857.  
  1858. j noCollisionRouting
  1859.  
  1860. geoLowGrav:
  1861.  
  1862. addi $1 $13 0
  1863. addi $2 $14 0
  1864. addi $3 $0 0
  1865. jal writeGridCodeFromPos
  1866.  
  1867. addi $17 $0 0
  1868. beq $19 $17 geoFullSquareHandleLeft
  1869.  
  1870. addi $17 $0 7
  1871. beq $19 $17 geoFullSquareHandleRight
  1872.  
  1873. addi $17 $0 0
  1874. beq $20 $17 upNorm
  1875.  
  1876. addi $17 $0 11
  1877. beq $20 $17 downNorm
  1878.  
  1879. j trappedInsideExit
  1880.  
  1881.  
  1882. geoHighGrav:
  1883.  
  1884. addi $1 $13 0
  1885. addi $2 $14 0
  1886. addi $3 $0 0
  1887. jal writeGridCodeFromPos
  1888.  
  1889. addi $17 $0 0
  1890. beq $19 $17 geoFullSquareHandleLeft
  1891.  
  1892. addi $17 $0 7
  1893. beq $19 $17 geoFullSquareHandleRight
  1894.  
  1895. addi $17 $0 0
  1896. beq $20 $17 upNorm
  1897.  
  1898. addi $17 $0 11
  1899. beq $20 $17 downNorm
  1900.  
  1901. j trappedInsideExit
  1902.  
  1903. geoMaxHitPlus:
  1904.  
  1905. addi $1 $13 0
  1906. addi $2 $14 0
  1907. addi $3 $0 0
  1908. jal writeGridCodeFromPos
  1909.  
  1910. addi $17 $0 0
  1911. beq $19 $17 geoFullSquareHandleLeft
  1912.  
  1913. addi $17 $0 7
  1914. beq $19 $17 geoFullSquareHandleRight
  1915.  
  1916. addi $17 $0 0
  1917. beq $20 $17 upNorm
  1918.  
  1919. addi $17 $0 11
  1920. beq $20 $17 downNorm
  1921.  
  1922. j trappedInsideExit
  1923.  
  1924.  
  1925. geoMaxHitMinus:
  1926.  
  1927. addi $1 $13 0
  1928. addi $2 $14 0
  1929. addi $3 $0 0
  1930. jal writeGridCodeFromPos
  1931.  
  1932. addi $17 $0 0
  1933. beq $19 $17 geoFullSquareHandleLeft
  1934.  
  1935. addi $17 $0 7
  1936. beq $19 $17 geoFullSquareHandleRight
  1937.  
  1938. addi $17 $0 0
  1939. beq $20 $17 upNorm
  1940.  
  1941. addi $17 $0 11
  1942. beq $20 $17 downNorm
  1943.  
  1944. j trappedInsideExit
  1945.  
  1946.  
  1947. geoAcc:
  1948.  
  1949. addi $1 $13 0
  1950. addi $2 $14 0
  1951. addi $3 $0 0
  1952. jal writeGridCodeFromPos
  1953.  
  1954. addi $17 $0 0
  1955. beq $19 $17 geoFullSquareHandleLeft
  1956.  
  1957. addi $17 $0 7
  1958. beq $19 $17 geoFullSquareHandleRight
  1959.  
  1960. addi $17 $0 0
  1961. beq $20 $17 upNorm
  1962.  
  1963. addi $17 $0 11
  1964. beq $20 $17 downNorm
  1965.  
  1966. j trappedInsideExit
  1967.  
  1968.  
  1969. geoDec:
  1970.  
  1971. addi $1 $13 0
  1972. addi $2 $14 0
  1973. addi $3 $0 0
  1974. jal writeGridCodeFromPos
  1975.  
  1976. addi $17 $0 0
  1977. beq $19 $17 geoFullSquareHandleLeft
  1978.  
  1979. addi $17 $0 7
  1980. beq $19 $17 geoFullSquareHandleRight
  1981.  
  1982. addi $17 $0 0
  1983. beq $20 $17 upNorm
  1984.  
  1985. addi $17 $0 11
  1986. beq $20 $17 downNorm
  1987.  
  1988. j trappedInsideExit
  1989.  
  1990.  
  1991.  
  1992. j trappedInsideExit
  1993.  
  1994. noCollisionRouting:
  1995. addi $9 $15 0
  1996. addi $10 $16 0
  1997. j collisionsRoutingExit
  1998.  
  1999. makeCollision:
  2000.  
  2001. addi $21 $0 10
  2002. addi $3 $17 0
  2003. addi $4 $18 0
  2004. sll $3 $3 $21
  2005. sll $4 $4 $21
  2006.  
  2007. postNormShiftingCollision:
  2008.  
  2009.  
  2010. addi $1 $26 0
  2011. jal getBlockConstants
  2012. addi $5 $8 0
  2013. addi $6 $9 0
  2014.  
  2015. addi $1 $15 0
  2016. addi $2 $16 0
  2017.  
  2018. jal collision
  2019.  
  2020. addi $9 $7 0
  2021. addi $10 $8 0
  2022.  
  2023. j collisionsRoutingExit
  2024.  
  2025. collisionsRoutingExit:
  2026. addi $7 $13 0
  2027. addi $8 $14 0
  2028. jal loadAll
  2029. addi $31 $28 0
  2030. jr $31
  2031.  
  2032.  
  2033. trappedInsideExit:
  2034. j upNorm
  2035.  
  2036. exitMap:
  2037.  
  2038. jal loadAll
  2039. addi $31 $28 0
  2040. addi $1 $0 0
  2041. j gameLoop
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047. getBlockConstants:
  2048. addi $28 $31 0
  2049. jal saveAll
  2050.  
  2051.  
  2052. addi $13 $1 0
  2053.  
  2054. addi $23 $0 21
  2055. sll $14 $13 $23
  2056. addi $23 $0 30
  2057. srl $14 $14 $23
  2058.  
  2059. addi $23 $0 23
  2060. sll $15 $13 $23
  2061. addi $23 $0 30
  2062. srl $15 $15 $23
  2063.  
  2064. addi $23 $0 25
  2065. sll $16 $13 $23
  2066. addi $23 $0 30
  2067. srl $16 $16 $23
  2068.  
  2069.  
  2070. addi $23 $0 2460
  2071. lw $17 0($23)
  2072. lw $18 1($23)
  2073. lw $19 2($23)
  2074.  
  2075. addi $23 $0 0
  2076. beq $14 $23 constantNormalGravity
  2077. addi $23 $0 1
  2078. beq $14 $23 constantLowGravity
  2079. addi $23 $0 2
  2080. beq $14 $23 constantHighGravity
  2081. addi $23 $0 3
  2082. beq $14 $23 constantNegativeGravity
  2083.  
  2084. frictionXCalculations:
  2085. addi $23 $0 0
  2086. beq $15 $23 constantNormalFrictionX
  2087. addi $23 $0 1
  2088. beq $15 $23 constantLowFrictionX
  2089. addi $23 $0 2
  2090. beq $15 $23 constantHighFrictionX
  2091. addi $23 $0 3
  2092. beq $15 $23 constantNegativeFrictionX
  2093.  
  2094. frictionYCalculations:
  2095. addi $23 $0 0
  2096. beq $16 $23 constantNormalFrictionY
  2097. addi $23 $0 1
  2098. beq $16 $23 constantLowFrictionY
  2099. addi $23 $0 2
  2100. beq $16 $23 constantHighFrictionY
  2101. addi $23 $0 3
  2102. beq $16 $23 constantNegativeFrictionY
  2103.  
  2104. endBlockConstantCalculations:
  2105.  
  2106. jal loadAll
  2107. addi $31 $28 0
  2108. jr $31
  2109.  
  2110. constantNormalGravity:
  2111. addi $7 $17 0
  2112. j frictionXCalculations
  2113.  
  2114. constantLowGravity:
  2115. addi $23 $0 2
  2116. div $7 $17 $23
  2117. j frictionXCalculations
  2118.  
  2119. constantHighGravity:
  2120. addi $23 $0 2
  2121. mult $7 $17 $23
  2122. j frictionXCalculations
  2123.  
  2124. constantNegativeGravity:
  2125. sub $7 $0 $17
  2126. j frictionXCalculations
  2127.  
  2128. constantNormalFrictionX:
  2129. addi $8 $18 0
  2130. j frictionYCalculations
  2131.  
  2132. constantLowFrictionX:
  2133. addi $23 $0 2
  2134. div $8 $18 $23
  2135. j frictionYCalculations
  2136.  
  2137. constantHighFrictionX:
  2138. addi $23 $0 2
  2139. mult $8 $18 $23
  2140. j frictionYCalculations
  2141.  
  2142. constantNegativeFrictionX:
  2143. sub $8 $0 $18
  2144. j frictionYCalculations
  2145.  
  2146. constantNormalFrictionY:
  2147. addi $9 $19 0
  2148. j endBlockConstantCalculations
  2149.  
  2150. constantLowFrictionY:
  2151. addi $23 $0 2
  2152. div $9 $19 $23
  2153. j endBlockConstantCalculations
  2154.  
  2155. constantHighFrictionY:
  2156. addi $23 $0 2
  2157. mult $9 $19 $23
  2158. j endBlockConstantCalculations
  2159.  
  2160. constantNegativeFrictionY:
  2161. sub $9 $0 $19
  2162. j endBlockConstantCalculations
  2163.  
  2164.  
  2165. gameLoop:
  2166.  
  2167. jal mapGen
  2168. jal drawAll
  2169.  
  2170. addi $1 $0 3
  2171. addi $7 $0 100
  2172. addi $8 $0 100
  2173. addi $21 $0 10
  2174. sll $7 $7 $21
  2175. sll $8 $8 $21
  2176.  
  2177.  
  2178. lw $13 2482($0)
  2179. addi $23 $0 5
  2180. addi $24 $0 28
  2181. addi $25 $0 31
  2182. addi $26 $0 2483
  2183. addi $27 $0 2458
  2184.  
  2185. initialSave:
  2186. addi $27 $27 5
  2187. bgt $27 $26 initialSaveExit
  2188. sw $7 0($27)
  2189. sw $8 1($27)
  2190. sw $0 2($27)
  2191. sw $0 3($27)
  2192. sw $0 4($27)
  2193. j initialSave
  2194.  
  2195. initialSaveExit:
  2196.  
  2197. addi $1 $0 0
  2198.  
  2199. mainGravityLoop:
  2200. addi $1 $0 0
  2201. addi $23 $0 2463
  2202. lw $21 2483($0)
  2203. addi $22 $0 5
  2204. mult $22 $1 $22
  2205. add $23 $23 $22
  2206.  
  2207. addi $1 $0 1
  2208. lw $2 0($23)
  2209. lw $3 1($23)
  2210. addi $4 $21 21
  2211.  
  2212. jal userInput
  2213.  
  2214. addi $13 $0 3
  2215. sra $7 $7 $13
  2216. sra $8 $8 $13
  2217.  
  2218. sw $7 2($23)
  2219. sw $8 3($23)
  2220.  
  2221. calcCycle:
  2222.  
  2223.  
  2224.  
  2225.  
  2226. lw $13 0($23)
  2227. lw $14 1($23)
  2228. lw $15 2($23)
  2229. lw $16 3($23)
  2230. lw $17 4($23)
  2231.  
  2232. st $24
  2233. addi $25 $0 31
  2234. sll $24 $24 $25
  2235. srl $24 $24 $25
  2236.  
  2237. beqz $24 skipRefreshSGS
  2238. jal saveGridSquareFromPos
  2239. skipRefreshSGS:
  2240.  
  2241. addi $1 $13 0
  2242. addi $2 $14 0
  2243. addi $3 $15 0
  2244. addi $4 $16 0
  2245. addi $5 $17 0
  2246.  
  2247. jal timeStepAcceleration
  2248.  
  2249. addi $1 $7 0
  2250. addi $2 $8 0
  2251. addi $3 $9 0
  2252. addi $4 $10 0
  2253. addi $5 $11 0
  2254.  
  2255. jal collisionsRouting
  2256.  
  2257. addi $13 $7 0
  2258. addi $14 $8 0
  2259. addi $15 $9 0
  2260. addi $16 $10 0
  2261. addi $17 $11 0
  2262.  
  2263.  
  2264. addi $3 $0 2
  2265. beqz $24 skipRefresh
  2266. jal drawAll
  2267. jal drawBallPixel
  2268. jal nopSlide
  2269. skipRefresh:
  2270. jal drawBallPixel
  2271.  
  2272. sw $13 0($23)
  2273. sw $14 1($23)
  2274. sw $15 2($23)
  2275. sw $16 3($23)
  2276. sw $17 4($23)
  2277.  
  2278. addi $1 $13 0
  2279. addi $2 $14 0
  2280. addi $3 $15 0
  2281. addi $4 $16 0
  2282.  
  2283. jal isBallStopped
  2284.  
  2285. beqz $7 calcCycle
  2286.  
  2287. j mainGravityLoop
  2288.  
  2289.  
  2290. lw $1 2483($0)
  2291. lw $2 2482($0)
  2292. addi $17 $0 4
  2293. cycleCheck:
  2294. addi $2 $2 1
  2295. beq $2 $17 skipReset
  2296. addi $2 $0 0
  2297. skipReset:
  2298.  
  2299. addi $13 $0 31
  2300. addi $14 $0 28
  2301. add $14 $14 $1
  2302.  
  2303. sll $2 $2 $14
  2304. srl $2 $2 $13
  2305. beqz $2 cycleCheck
  2306.  
  2307. sw $2 2483($0)
  2308.  
  2309. j mainGravityLoop
  2310.  
  2311.  
  2312.  
  2313. isBallStopped:
  2314. addi $28 $31 0
  2315. jal saveAll
  2316.  
  2317.  
  2318. addi $13 $1 0
  2319. addi $14 $2 0
  2320. addi $15 $3 0
  2321. addi $16 $4 0
  2322.  
  2323.  
  2324. jal getGridCodeFromPos
  2325. addi $23 $7 0
  2326. addi $24 $0 11
  2327. srl $23 $23 $24
  2328.  
  2329. addi $7 $0 0
  2330. bnez $23 isBallStoppedExit
  2331.  
  2332.  
  2333. addi $1 $15 0
  2334. jal absoluteValue
  2335. addi $17 $7 0
  2336.  
  2337.  
  2338. addi $21 $0 100
  2339. addi $7 $0 1
  2340. blt $17 $21 isBallStoppedExit
  2341.  
  2342.  
  2343. addi $7 $0 0
  2344.  
  2345. isBallStoppedExit:
  2346.  
  2347. jal loadAll
  2348. addi $31 $28 0
  2349. jr $31
  2350.  
  2351.  
  2352. slowmo:
  2353. addi $28 $31 0
  2354. jal saveAll
  2355.  
  2356. addi $1 $0 13
  2357. jal getSwitchVal
  2358. beqz $7 slowmoExit
  2359.  
  2360. jal nopSlide
  2361. jal nopSlide
  2362. jal nopSlide
  2363.  
  2364. slowmoExit:
  2365.  
  2366. jal loadAll
  2367. addi $31 $28 0
  2368. jr $31
  2369.  
  2370.  
  2371.  
  2372.  
  2373. debugBallDisplay:
  2374. addi $28 $31 0
  2375. jal saveAll
  2376.  
  2377. addi $1 $0 150
  2378. addi $2 $0 150
  2379. addi $13 $0 10
  2380. sll $1 $1 $13
  2381. sll $2 $2 $13
  2382. addi $3 $0 2
  2383.  
  2384. jal drawBall
  2385.  
  2386. jal loadAll
  2387. addi $31 $28 0
  2388. jr $31
  2389.  
  2390. userInput:
  2391. addi $28 $31 0
  2392. jal saveAll
  2393.  
  2394. jal nopSlide
  2395. jal nopSlide
  2396.  
  2397. addi $13, $0, 0
  2398. addi $14, $0, 0
  2399. addi $15, $0, 0
  2400. addi $16, $0, 10
  2401. addi $17, $0, -10
  2402.  
  2403. addi $23 $1 0
  2404. addi $18 $2 0
  2405. addi $19 $3 0
  2406. addi $20 $4 0
  2407.  
  2408. beqz $23 inputLoopKB
  2409. j inputLoopCT
  2410.  
  2411.  
  2412. inputLoopKB:
  2413.  
  2414. addi $1 $18 0
  2415. addi $2 $19 0
  2416. addi $3 $20 0
  2417. addi $21 $0 10
  2418. srl $1 $1 $21
  2419. srl $2 $2 $21
  2420.  
  2421. jal saveGridSquareFromPos
  2422. sll $1 $1 $21
  2423. sll $2 $2 $21
  2424. jal drawBallPixel
  2425.  
  2426. add $1 $1 $13
  2427. add $2 $2 $14
  2428. addi $3 $0 30
  2429. srl $1 $1 $21
  2430. srl $2 $2 $21
  2431. sll $1 $1 $21
  2432. sll $2 $2 $21
  2433. jal drawBallPixel
  2434.  
  2435. jal waitKBInput
  2436.  
  2437. addi $15, $0, 90
  2438. beq $7, t2, userInputExit
  2439.  
  2440. addi $15, $0, 117
  2441. beq $7, $15, readUpArrow
  2442. addi $15, $0, 114
  2443. beq $7, $15, readDownArrow
  2444. addi $15, $0, 116
  2445. beq $7, $15, readRightArrow
  2446. addi $15, $0, 107
  2447. beq $7, $15, readLeftArrow
  2448.  
  2449. j inputLoopKB
  2450.  
  2451.  
  2452. readUpArrow:
  2453. beq $14, $16, inputLoopKB
  2454. addi $14, $14, 1
  2455. j inputLoopKB
  2456.  
  2457. readDownArrow:
  2458. beq $14, $17, inputLoopKB
  2459. addi $14, $14, -1
  2460. j inputLoopKB
  2461.  
  2462. readRightArrow:
  2463. beq $13, $16, inputLoopKB
  2464. addi $13, $13, 1
  2465. j inputLoopKB
  2466.  
  2467. readLeftArrow:
  2468. beq $13, $17, inputLoopKB
  2469. addi $13, $13, -1
  2470. j inputLoopKB
  2471.  
  2472.  
  2473.  
  2474.  
  2475.  
  2476. waitKBInput:
  2477. addi $28 $31 0
  2478. jal saveAll
  2479.  
  2480. addi $13, $0, 0
  2481. addi $14, $0, 0
  2482. addi $15, $0, 65
  2483.  
  2484. waitKBInputLoop:
  2485. addi $14, $13, 0
  2486. kb $13
  2487.  
  2488. beq $13 $14 waitKBInputLoop
  2489. bne $14 $15 waitKBInputLoop
  2490.  
  2491. addi $7, $13, 0
  2492.  
  2493. jal loadAll
  2494. addi $31 $28 0
  2495. jr $31
  2496.  
  2497. inputLoopCTmov:
  2498. addi $28 $31 0
  2499. jal saveAll
  2500. addi $1 $18 0
  2501. addi $2 $19 0
  2502. addi $3 $13 0
  2503. addi $4 $14 0
  2504.  
  2505. jal refreshPrev
  2506.  
  2507. jal loadAll
  2508. addi $31 $28 0
  2509. jr $31
  2510.  
  2511.  
  2512. inputLoopCT:
  2513.  
  2514.  
  2515.  
  2516. addi $1 $18 0
  2517. addi $2 $19 0
  2518. addi $3 $20 0
  2519. jal drawBallPixel
  2520.  
  2521. addi $21 $0 10
  2522. sll $27 $13 $21
  2523. sll $26 $14 $21
  2524. add $1 $1 $27
  2525. add $2 $2 $26
  2526. addi $3 $0 4
  2527. jal drawBallPixel
  2528.  
  2529. jal waitCTInput
  2530.  
  2531.  
  2532. addi $15, $0, 73
  2533. beq $7, $15, userInputExit
  2534.  
  2535. addi $15, $0, 81
  2536. beq $7, $15, readUpKey
  2537. addi $15, $0, 69
  2538. beq $7, $15, readDownKey
  2539. addi $15, $0, 97
  2540. beq $7, $15, readRightKey
  2541. addi $15, $0, 67
  2542. beq $7, $15, readLeftKey
  2543.  
  2544. j inputLoopCT
  2545.  
  2546.  
  2547. readUpKey:
  2548. beq $14, $17, inputLoopCT
  2549. jal inputLoopCTmov
  2550. addi $14, $14, -1
  2551. j inputLoopCT
  2552.  
  2553. readDownKey:
  2554. beq $14, $16, inputLoopCT
  2555. jal inputLoopCTmov
  2556. addi $14, $14, 1
  2557. j inputLoopCT
  2558.  
  2559. readRightKey:
  2560. beq $13, $16, inputLoopCT
  2561. jal inputLoopCTmov
  2562. addi $13, $13, 1
  2563. j inputLoopCT
  2564.  
  2565. readLeftKey:
  2566. beq $13, $17, inputLoopCT
  2567. jal inputLoopCTmov
  2568. addi $13, $13, -1
  2569. j inputLoopCT
  2570.  
  2571. waitCTInput:
  2572. addi $28 $31 0
  2573. jal saveAll
  2574.  
  2575. addi $13, $0, 0
  2576. addi $14, $0, 0
  2577. addi $15, $0, 65
  2578. addi $16, $0, 65535
  2579. addi $17, $0, 1
  2580. sll $16 $16 $17
  2581.  
  2582. stgpioloop:
  2583. addi $15 $0 0
  2584. gpio $13
  2585. addi $14 $13 0
  2586. waitCTInputLoop:
  2587. gpio $13
  2588. bne $13 $14 stgpioloop
  2589. addi $15 $15 1
  2590. bne $15 $16 waitCTInputLoop
  2591.  
  2592. addi $7, $13, 0
  2593. addi $1 $7 0
  2594. jal nopSlide
  2595.  
  2596. jal loadAll
  2597. addi $31 $28 0
  2598. jr $31
  2599.  
  2600.  
  2601. userInputExit:
  2602.  
  2603. addi $7, $13, 0
  2604. addi $8, $14, 0
  2605. addi $21 $0 9
  2606.  
  2607. sll $7 $7 $21
  2608. sll $8 $8 $21
  2609.  
  2610. jal loadAll
  2611. addi $31 $28 0
  2612. jr $31
  2613.  
  2614.  
  2615. bgtz $7 conX
  2616. sub $7 $0 $7
  2617. sll $7 $7 $21
  2618. sub $7 $0 $7
  2619. j negX
  2620. conX:
  2621. sll $7 $7 $21
  2622. negX:
  2623. bgtz $8 conY
  2624. sub $8 $0 $8
  2625. sll $8 $8 $21
  2626. sub $8 $0 $8
  2627. j negY
  2628. conY:
  2629. sll $8 $8 $21
  2630. negY:
  2631.  
  2632. jal loadAll
  2633. addi $31 $28 0
  2634. jr $31
  2635.  
  2636. refreshPrev:
  2637. addi $28 $31 0
  2638. jal saveAll
  2639.  
  2640. addi $21 $0 10
  2641.  
  2642. sll $3 $3 $21
  2643. sll $4 $4 $21
  2644.  
  2645. add $1 $1 $3
  2646. add $2 $2 $4
  2647.  
  2648. jal saveGridSquareFromPos
  2649.  
  2650. jal loadAll
  2651. addi $31 $28 0
  2652. jr $31
  2653.  
  2654. genPosition:
  2655. addi $28 $31 0
  2656. jal saveAll
  2657.  
  2658. lw $13 1600($1)
  2659.  
  2660. addi $14 $0 10
  2661. addi $7 $1 0
  2662. addi $21 $0 8
  2663. addi $22 $0 12
  2664. mult $7 $7 $21
  2665. sll $7 $7 $14
  2666.  
  2667. addi $15 $0 40
  2668. sub $8 $15 $13
  2669. addi $8 $8 -1
  2670. mult $8 $8 $22
  2671. sll $8 $8 $14
  2672.  
  2673. jal loadAll
  2674. addi $31 $28 0
  2675. jr $31
  2676.  
  2677.  
  2678. saveAll:
  2679. addi $29, $29, -1
  2680. sw $13, 0($29)
  2681. addi $29, $29, -1
  2682. sw $14, 0($29)
  2683. addi $29, $29, -1
  2684. sw $15, 0($29)
  2685. addi $29, $29, -1
  2686. sw $16, 0($29)
  2687. addi $29, $29, -1
  2688. sw $17, 0($29)
  2689. addi $29, $29, -1
  2690. sw $18, 0($29)
  2691. addi $29, $29, -1
  2692. sw $19, 0($29)
  2693. addi $29, $29, -1
  2694. sw $20, 0($29)
  2695. addi $29, $29, -1
  2696. sw $21, 0($29)
  2697. addi $29, $29, -1
  2698. sw $22, 0($29)
  2699. addi $29, $29, -1
  2700. sw $23, 0($29)
  2701. addi $29, $29, -1
  2702. sw $24, 0($29)
  2703. addi $29, $29, -1
  2704. sw $25, 0($29)
  2705. addi $29, $29, -1
  2706. sw $26, 0($29)
  2707. addi $29, $29, -1
  2708. sw $27, 0($29)
  2709.  
  2710. addi $29, $29, -1
  2711. sw $1, 0($29)
  2712. addi $29, $29, -1
  2713. sw $2, 0($29)
  2714. addi $29, $29, -1
  2715. sw $3, 0($29)
  2716. addi $29, $29, -1
  2717. sw $4, 0($29)
  2718. addi $29, $29, -1
  2719. sw $5, 0($29)
  2720. addi $29, $29, -1
  2721. sw $6, 0($29)
  2722.  
  2723. addi $29, $29, -1
  2724. sw $28, 0($29)
  2725.  
  2726. jr $31
  2727.  
  2728. loadAll:
  2729. lw $28, 0($29)
  2730. addi $29, $29, 1
  2731.  
  2732. lw $6, 0($29)
  2733. addi $29, $29, 1
  2734. lw $5, 0($29)
  2735. addi $29, $29, 1
  2736. lw $4, 0($29)
  2737. addi $29, $29, 1
  2738. lw $3, 0($29)
  2739. addi $29, $29, 1
  2740. lw $2, 0($29)
  2741. addi $29, $29, 1
  2742. lw $1, 0($29)
  2743. addi $29, $29, 1
  2744.  
  2745. lw $27, 0($29)
  2746. addi $29, $29, 1
  2747. lw $26, 0($29)
  2748. addi $29, $29, 1
  2749. lw $25, 0($29)
  2750. addi $29, $29, 1
  2751. lw $24, 0($29)
  2752. addi $29, $29, 1
  2753. lw $23, 0($29)
  2754. addi $29, $29, 1
  2755. lw $22, 0($29)
  2756. addi $29, $29, 1
  2757. lw $21, 0($29)
  2758. addi $29, $29, 1
  2759. lw $20, 0($29)
  2760. addi $29, $29, 1
  2761. lw $19, 0($29)
  2762. addi $29, $29, 1
  2763. lw $18, 0($29)
  2764. addi $29, $29, 1
  2765. lw $17, 0($29)
  2766. addi $29, $29, 1
  2767. lw $16, 0($29)
  2768. addi $29, $29, 1
  2769. lw $15, 0($29)
  2770. addi $29, $29, 1
  2771. lw $14, 0($29)
  2772. addi $29, $29, 1
  2773. lw $13, 0($29)
  2774. addi $29, $29, 1
  2775.  
  2776. jr $31
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782.  
  2783. dotProduct:
  2784. addi $28 $31 0
  2785. jal saveAll
  2786.  
  2787. mult $13 $1 $3
  2788. mult $14 $2 $4
  2789.  
  2790. addi $15 $0 10
  2791.  
  2792. sra $13 $13 $15
  2793. sra $14 $14 $15
  2794.  
  2795. add $7 $13 $14
  2796.  
  2797. jal loadAll
  2798. addi $31 $28 0
  2799. jr $31
  2800.  
  2801.  
  2802.  
  2803. collision:
  2804. addi $28 $31 0
  2805. jal saveAll
  2806.  
  2807. addi $13 $1 0
  2808. addi $14 $2 0
  2809. addi $15 $3 0
  2810. addi $16 $4 0
  2811. addi $22 $0 10
  2812.  
  2813.  
  2814. jal dotProduct
  2815. addi $17 $7 0
  2816.  
  2817. addi $1 $15 0
  2818. addi $2 $16 0
  2819. jal dotProduct
  2820.  
  2821. sll $17 $17 $22
  2822.  
  2823. div $17 $17 $7
  2824.  
  2825. mult $18 $15 $17
  2826. mult $19 $16 $17
  2827.  
  2828. sra $18 $18 $22
  2829. sra $19 $19 $22
  2830.  
  2831.  
  2832. sub $20 $13 $18
  2833. sub $21 $14 $19
  2834.  
  2835. mult $20 $20 $5
  2836. mult $21 $21 $5
  2837. sra $20 $20 $22
  2838. sra $21 $21 $22
  2839.  
  2840. mult $18 $18 $6
  2841. mult $19 $19 $in6
  2842. sra $18 $18 $22
  2843. sra $19 $19 $22
  2844.  
  2845.  
  2846. sub $7 $20 $17
  2847. sub $8 $21 $19
  2848.  
  2849.  
  2850. addi $23 $0 900
  2851. addi $22 $0 10
  2852. mult $7 $7 $23
  2853. mult $8 $8 $23
  2854. sra $7 $7 $22
  2855. sra $8 $8 $22
  2856.  
  2857. jal loadAll
  2858. addi $31 $28 0
  2859. jr $31
  2860.  
  2861.  
  2862.  
  2863.  
  2864. timeStepAcceleration:
  2865. addi $28 $31 0
  2866. jal saveAll
  2867.  
  2868. addi $13 $1 0
  2869. addi $14 $2 0
  2870. addi $15 $3 0
  2871. addi $16 $4 0
  2872.  
  2873. jal getGridCodeFromPos
  2874. addi $1 $7 0
  2875.  
  2876. addi $23 $7 0
  2877. addi $24 $0 11
  2878. srl $23 $23 $24
  2879.  
  2880.  
  2881. jal getBlockConstants
  2882. addi $17 $7 0
  2883.  
  2884. bnez $23 notGrounded
  2885. add $1 $16 $17
  2886. j passnotGrounded
  2887. notGrounded:
  2888.  
  2889. sub $1 $16 $17
  2890. sub $1 $16 $17
  2891. passnotGrounded:
  2892.  
  2893. jal normalizeToPlusMinusOne
  2894. addi $10 $7 0
  2895.  
  2896. addi $1 $15 0
  2897. jal normalizeToPlusMinusOne
  2898. addi $9 $7 0
  2899.  
  2900. add $8 $14 $10
  2901. add $7 $13 $9
  2902.  
  2903. jal loadAll
  2904. addi $31 $28 0
  2905. jr $31
  2906.  
  2907. isCollision:
  2908. addi $28 $31 0
  2909. jal saveAll
  2910.  
  2911.  
  2912.  
  2913. addi $13 $0 10
  2914. srl $14 $1 $13
  2915. srl $15 $2 $13
  2916. addi $27 $0 640
  2917. mult $26 $27 $15
  2918. add $26 $26 $14
  2919. lp $16 0($26)
  2920.  
  2921. addi $16 $7 0
  2922.  
  2923. addi $17, $0, 1
  2924. beq $16, $17, hasCollided
  2925.  
  2926. addi $17, $0, 2
  2927. beq $16, $17, hasCollided
  2928.  
  2929. addi $17, $0, 3
  2930. beq $16, $17, hasCollided
  2931.  
  2932. addi $17, $0, 4
  2933. beq $16, $17, hasCollided
  2934.  
  2935. addi $17, $0, 7
  2936. beq $16, $17, hasCollided
  2937.  
  2938. addi $17, $0, 8
  2939. beq $16, $17, hasCollided
  2940.  
  2941. addi $17, $0, 9
  2942. beq $16, $17, hasCollided
  2943.  
  2944. addi $17, $0, 10
  2945. beq $16, $17, hasCollided
  2946.  
  2947. addi $17, $0, 11
  2948. beq $16, $17, hasCollided
  2949.  
  2950. addi $17, $0, 12
  2951. beq $16, $17, hasCollided
  2952.  
  2953. addi $17, $0, 14
  2954. beq $16, $17, hasCollided
  2955.  
  2956. addi $17, $0, 15
  2957. beq $16, $17, hasCollided
  2958.  
  2959. addi $17, $0, 16
  2960. beq $16, $17, hasCollided
  2961.  
  2962. addi $7, $0, 0
  2963. j isCollisionExit
  2964.  
  2965. isCollisionExit:
  2966. jal loadAll
  2967. addi $31 $28 0
  2968. jr $31
  2969.  
  2970. hasCollided: addi $7, $0, 1
  2971. j isCollisionExit
  2972. x
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement