Draw_mips_r5900.s 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799
  1. # vim:filetype=mips
  2. # several drawing related functions for MIPS R5900. Based on Draw_amips.s by Notaz.
  3. # (c) Copyright 2007, Grazvydas "notaz" Ignotas
  4. # All Rights Reserved
  5. .set noreorder # don't reorder any instructions
  6. .set noat # don't use $at. $at is used for substitute macro instructions (and some replacement code).
  7. .text
  8. .align 4
  9. .macro ext dest,src,pos,size
  10. srl \dest, \src, \pos
  11. li $at, ((1 << \size) - 1)
  12. and \dest, $at
  13. .endm
  14. .macro rotr dest,src,shift
  15. srl $at, \src, \shift
  16. sll \dest, \src, (32-\shift)
  17. or \dest, $at
  18. .endm
  19. # Note: Assumes that n is a multiple of 16.
  20. # void blockcpy_or(void *dst, void *src, size_t n, int pat)
  21. .global blockcpy_or
  22. .ent blockcpy_or
  23. blockcpy_or:
  24. #Spread my beauties! Multiply and divide! :D
  25. sll $t0, $a3, 8
  26. or $a3, $a3, $t0
  27. pcpyld $a3, $a3
  28. pcpyh $a3, $a3
  29. blockcpy_or_loop:
  30. ld $t0, 8($a1)
  31. ld $t1, 0($a1)
  32. pcpyld $t0, $t0, $t1
  33. # lq $t0, 0($a1) #This won't work because the data may not be aligned to a 128-bit address (And unless the source code of Picodrive is modified for that purpose, use two dword loads instead). :(
  34. por $t0, $t0, $a3
  35. sq $t0, 0($a0)
  36. addiu $a2, $a2, -16
  37. addiu $a0, $a0, 16
  38. bgtz $a2, blockcpy_or_loop
  39. addiu $a1, $a1, 16
  40. jr $ra
  41. nop
  42. .end blockcpy_or
  43. # void amips_clut(unsigned short *dst, unsigned char *src, unsigned short *pal, int count)
  44. .global amips_clut
  45. amips_clut:
  46. amips_clut_loop:
  47. lbu $t0, 0($a1) # tried lw here, no improvement noticed
  48. lbu $t1, 1($a1)
  49. lbu $t2, 2($a1)
  50. lbu $t3, 3($a1)
  51. sll $t0, 1
  52. sll $t1, 1
  53. sll $t2, 1
  54. sll $t3, 1
  55. addu $t0, $a2
  56. addu $t1, $a2
  57. addu $t2, $a2
  58. addu $t3, $a2
  59. lhu $t0, 0($t0)
  60. lhu $t1, 0($t1)
  61. lhu $t2, 0($t2)
  62. lhu $t3, 0($t3)
  63. sll $t1, $t1, 16
  64. or $t0, $t0, $t1
  65. sll $t3, $t3, 16
  66. or $t2, $t2, $t3
  67. sw $t0, 0($a0)
  68. sw $t2, 4($a0)
  69. addiu $a0, 8
  70. addiu $a3, -4
  71. bnez $a3, amips_clut_loop
  72. addiu $a1, 4
  73. jr $ra
  74. nop
  75. .global amips_clut_6bit
  76. amips_clut_6bit:
  77. amips_clut_loop6:
  78. lw $t0, 0($a1)
  79. sll $t4, $t0, 1
  80. andi $t4, $t4, 0x7E
  81. srl $t5, $t0, 7
  82. andi $t5, $t5, 0x7E
  83. srl $t6, $t0, 15
  84. andi $t6, $t6, 0x7E
  85. srl $t7, $t0, 23
  86. andi $t7, $t7, 0x7E
  87. addu $t0, $t4, $a2
  88. addu $t1, $t5, $a2
  89. addu $t2, $t6, $a2
  90. addu $t3, $t7, $a2
  91. lhu $t0, 0($t0)
  92. lhu $t1, 0($t1)
  93. lhu $t2, 0($t2)
  94. lhu $t3, 0($t3)
  95. sll $t1, $t1, 16
  96. or $t0, $t0, $t1
  97. sll $t3, $t3, 16
  98. or $t2, $t2, $t3
  99. sw $t0, 0($a0)
  100. sw $t2, 4($a0)
  101. addiu $a0, 8
  102. addiu $a3, -4
  103. bnez $a3, amips_clut_loop6
  104. addiu $a1, 4
  105. jr $ra
  106. nop
  107. # $a0 - pd, $a1 - tile word, $a2 - pal
  108. # ext rt, rs, pos, size // Extract size bits from position pos in rs and store in rt
  109. .macro TilePixelPrep shift dreg offs
  110. .if \shift
  111. ext \dreg, $a1, \shift, 4
  112. .else
  113. andi \dreg, $a1, 0xf
  114. .endif
  115. .if \offs
  116. sltu $t8, $0, \dreg
  117. li $at, ~(1<<\offs)
  118. and $t9, $t9, $at
  119. andi $at, $t8, 1
  120. sll $at, $at, \offs
  121. or $t9, $t9, $at
  122. .else
  123. sltu $t9, $0, \dreg
  124. .endif
  125. .endm
  126. .macro TileStartCode
  127. sll $a1, $a1, 1
  128. lui $t1, %hi(Pico+0x10000)
  129. addu $a1, $a1, $t1
  130. lw $a1, %lo(Pico+0x10000)($a1) # Pico.vram + addr
  131. beqz $a1, TileEmpty
  132. rotr $t1, $a1, 4 #Leaving this macro here is fine because TileEmpty doesn't use the result of this operation.
  133. beq $t1, $a1, SingleColor
  134. and $v0, $0 # not empty tile
  135. .endm
  136. .macro TileEndCode
  137. xori $t8, $t9, 0xff
  138. beqz $t8, tile11111111 # common case
  139. lui $v1, %hi(HighCol)
  140. addiu $v1, %lo(HighCol)
  141. lui $t8, %hi(TileTable)
  142. li $at, 0xFFFFFC03
  143. and $t8, $t8, $at
  144. andi $at, $t9, 0xFF
  145. sll $at, $at, 2
  146. or $t8, $t8, $at
  147. lw $t8, %lo(TileTable)($t8)
  148. jr $t8
  149. addu $a0, $v1
  150. .endm
  151. .global TileNorm
  152. TileNorm:
  153. TileStartCode
  154. TilePixelPrep 12, $t0, 0
  155. TilePixelPrep 8, $t1, 1
  156. TilePixelPrep 4, $t2, 2
  157. TilePixelPrep 0, $t3, 3
  158. TilePixelPrep 28, $t4, 4
  159. TilePixelPrep 24, $t5, 5
  160. TilePixelPrep 20, $t6, 6
  161. TilePixelPrep 16, $t7, 7
  162. TileEndCode
  163. .global TileFlip
  164. TileFlip:
  165. TileStartCode
  166. TilePixelPrep 16, $t0, 0
  167. TilePixelPrep 20, $t1, 1
  168. TilePixelPrep 24, $t2, 2
  169. TilePixelPrep 28, $t3, 3
  170. TilePixelPrep 0, $t4, 4
  171. TilePixelPrep 4, $t5, 5
  172. TilePixelPrep 8, $t6, 6
  173. TilePixelPrep 12, $t7, 7
  174. TileEndCode
  175. SingleColor:
  176. la $t9, HighCol
  177. andi $t0, $a1, 0xf
  178. or $t0, $t0, $a2
  179. addu $a0, $t9
  180. sb $t0, 0($a0)
  181. sb $t0, 1($a0)
  182. sb $t0, 2($a0)
  183. sb $t0, 3($a0)
  184. sb $t0, 4($a0)
  185. sb $t0, 5($a0)
  186. sb $t0, 6($a0)
  187. jr $ra
  188. sb $t0, 7($a0)
  189. TileEmpty:
  190. jr $ra
  191. or $v0, $0, 1 # empty tile
  192. tile11111111:
  193. la $v1, HighCol
  194. or $t0, $t0, $a2
  195. addu $a0, $v1
  196. sb $t0, 0($a0)
  197. tile11111110:
  198. or $t1, $t1, $a2
  199. sb $t1, 1($a0)
  200. tile11111100:
  201. or $t2, $t2, $a2
  202. sb $t2, 2($a0)
  203. tile11111000:
  204. or $t3, $t3, $a2
  205. sb $t3, 3($a0)
  206. tile11110000:
  207. or $t4, $t4, $a2
  208. sb $t4, 4($a0)
  209. tile11100000:
  210. or $t5, $t5, $a2
  211. sb $t5, 5($a0)
  212. tile11000000:
  213. or $t6, $t6, $a2
  214. sb $t6, 6($a0)
  215. tile10000000:
  216. or $t7, $t7, $a2
  217. jr $ra
  218. sb $t7, 7($a0)
  219. tile11111101:
  220. or $t0, $t0, $a2
  221. sb $t0, 0($a0)
  222. or $t2, $t2, $a2
  223. sb $t2, 2($a0)
  224. or $t3, $t3, $a2
  225. sb $t3, 3($a0)
  226. or $t4, $t4, $a2
  227. sb $t4, 4($a0)
  228. or $t5, $t5, $a2
  229. sb $t5, 5($a0)
  230. or $t6, $t6, $a2
  231. sb $t6, 6($a0)
  232. or $t7, $t7, $a2
  233. jr $ra
  234. sb $t7, 7($a0)
  235. tile11111011:
  236. or $t0, $t0, $a2
  237. sb $t0, 0($a0)
  238. tile11111010:
  239. or $t1, $t1, $a2
  240. sb $t1, 1($a0)
  241. or $t3, $t3, $a2
  242. sb $t3, 3($a0)
  243. or $t4, $t4, $a2
  244. sb $t4, 4($a0)
  245. or $t5, $t5, $a2
  246. sb $t5, 5($a0)
  247. or $t6, $t6, $a2
  248. sb $t6, 6($a0)
  249. or $t7, $t7, $a2
  250. jr $ra
  251. sb $t7, 7($a0)
  252. tile11111001:
  253. or $t0, $t0, $a2
  254. sb $t0, 0($a0)
  255. or $t3, $t3, $a2
  256. sb $t3, 3($a0)
  257. or $t4, $t4, $a2
  258. sb $t4, 4($a0)
  259. or $t5, $t5, $a2
  260. sb $t5, 5($a0)
  261. or $t6, $t6, $a2
  262. sb $t6, 6($a0)
  263. or $t7, $t7, $a2
  264. jr $ra
  265. sb $t7, 7($a0)
  266. tile11110111:
  267. or $t0, $t0, $a2
  268. sb $t0, 0($a0)
  269. tile11110110:
  270. or $t1, $t1, $a2
  271. sb $t1, 1($a0)
  272. tile11110100:
  273. or $t2, $t2, $a2
  274. sb $t2, 2($a0)
  275. or $t4, $t4, $a2
  276. sb $t4, 4($a0)
  277. or $t5, $t5, $a2
  278. sb $t5, 5($a0)
  279. or $t6, $t6, $a2
  280. sb $t6, 6($a0)
  281. or $t7, $t7, $a2
  282. jr $ra
  283. sb $t7, 7($a0)
  284. tile11110101:
  285. or $t0, $t0, $a2
  286. sb $t0, 0($a0)
  287. or $t2, $t2, $a2
  288. sb $t2, 2($a0)
  289. or $t4, $t4, $a2
  290. sb $t4, 4($a0)
  291. or $t5, $t5, $a2
  292. sb $t5, 5($a0)
  293. or $t6, $t6, $a2
  294. sb $t6, 6($a0)
  295. or $t7, $t7, $a2
  296. jr $ra
  297. sb $t7, 7($a0)
  298. tile11110011:
  299. or $t0, $t0, $a2
  300. sb $t0, 0($a0)
  301. tile11110010:
  302. or $t1, $t1, $a2
  303. sb $t1, 1($a0)
  304. or $t4, $t4, $a2
  305. sb $t4, 4($a0)
  306. or $t5, $t5, $a2
  307. sb $t5, 5($a0)
  308. or $t6, $t6, $a2
  309. sb $t6, 6($a0)
  310. or $t7, $t7, $a2
  311. jr $ra
  312. sb $t7, 7($a0)
  313. tile11110001:
  314. or $t0, $t0, $a2
  315. sb $t0, 0($a0)
  316. or $t4, $t4, $a2
  317. sb $t4, 4($a0)
  318. or $t5, $t5, $a2
  319. sb $t5, 5($a0)
  320. or $t6, $t6, $a2
  321. sb $t6, 6($a0)
  322. or $t7, $t7, $a2
  323. jr $ra
  324. sb $t7, 7($a0)
  325. tile11101111:
  326. or $t0, $t0, $a2
  327. sb $t0, 0($a0)
  328. tile11101110:
  329. or $t1, $t1, $a2
  330. sb $t1, 1($a0)
  331. tile11101100:
  332. or $t2, $t2, $a2
  333. sb $t2, 2($a0)
  334. tile11101000:
  335. or $t3, $t3, $a2
  336. sb $t3, 3($a0)
  337. or $t5, $t5, $a2
  338. sb $t5, 5($a0)
  339. or $t6, $t6, $a2
  340. sb $t6, 6($a0)
  341. or $t7, $t7, $a2
  342. jr $ra
  343. sb $t7, 7($a0)
  344. tile11101101:
  345. or $t0, $t0, $a2
  346. sb $t0, 0($a0)
  347. or $t2, $t2, $a2
  348. sb $t2, 2($a0)
  349. or $t3, $t3, $a2
  350. sb $t3, 3($a0)
  351. or $t5, $t5, $a2
  352. sb $t5, 5($a0)
  353. or $t6, $t6, $a2
  354. sb $t6, 6($a0)
  355. or $t7, $t7, $a2
  356. jr $ra
  357. sb $t7, 7($a0)
  358. tile11101011:
  359. or $t0, $t0, $a2
  360. sb $t0, 0($a0)
  361. tile11101010:
  362. or $t1, $t1, $a2
  363. sb $t1, 1($a0)
  364. or $t3, $t3, $a2
  365. sb $t3, 3($a0)
  366. or $t5, $t5, $a2
  367. sb $t5, 5($a0)
  368. or $t6, $t6, $a2
  369. sb $t6, 6($a0)
  370. or $t7, $t7, $a2
  371. jr $ra
  372. sb $t7, 7($a0)
  373. tile11101001:
  374. or $t0, $t0, $a2
  375. sb $t0, 0($a0)
  376. or $t3, $t3, $a2
  377. sb $t3, 3($a0)
  378. or $t5, $t5, $a2
  379. sb $t5, 5($a0)
  380. or $t6, $t6, $a2
  381. sb $t6, 6($a0)
  382. or $t7, $t7, $a2
  383. jr $ra
  384. sb $t7, 7($a0)
  385. tile11100111:
  386. or $t0, $t0, $a2
  387. sb $t0, 0($a0)
  388. tile11100110:
  389. or $t1, $t1, $a2
  390. sb $t1, 1($a0)
  391. tile11100100:
  392. or $t2, $t2, $a2
  393. sb $t2, 2($a0)
  394. or $t5, $t5, $a2
  395. sb $t5, 5($a0)
  396. or $t6, $t6, $a2
  397. sb $t6, 6($a0)
  398. or $t7, $t7, $a2
  399. jr $ra
  400. sb $t7, 7($a0)
  401. tile11100101:
  402. or $t0, $t0, $a2
  403. sb $t0, 0($a0)
  404. or $t2, $t2, $a2
  405. sb $t2, 2($a0)
  406. or $t5, $t5, $a2
  407. sb $t5, 5($a0)
  408. or $t6, $t6, $a2
  409. sb $t6, 6($a0)
  410. or $t7, $t7, $a2
  411. jr $ra
  412. sb $t7, 7($a0)
  413. tile11100011:
  414. or $t0, $t0, $a2
  415. sb $t0, 0($a0)
  416. tile11100010:
  417. or $t1, $t1, $a2
  418. sb $t1, 1($a0)
  419. or $t5, $t5, $a2
  420. sb $t5, 5($a0)
  421. or $t6, $t6, $a2
  422. sb $t6, 6($a0)
  423. or $t7, $t7, $a2
  424. jr $ra
  425. sb $t7, 7($a0)
  426. tile11100001:
  427. or $t0, $t0, $a2
  428. sb $t0, 0($a0)
  429. or $t5, $t5, $a2
  430. sb $t5, 5($a0)
  431. or $t6, $t6, $a2
  432. sb $t6, 6($a0)
  433. or $t7, $t7, $a2
  434. jr $ra
  435. sb $t7, 7($a0)
  436. tile11011111:
  437. or $t0, $t0, $a2
  438. sb $t0, 0($a0)
  439. tile11011110:
  440. or $t1, $t1, $a2
  441. sb $t1, 1($a0)
  442. tile11011100:
  443. or $t2, $t2, $a2
  444. sb $t2, 2($a0)
  445. tile11011000:
  446. or $t3, $t3, $a2
  447. sb $t3, 3($a0)
  448. tile11010000:
  449. or $t4, $t4, $a2
  450. sb $t4, 4($a0)
  451. or $t6, $t6, $a2
  452. sb $t6, 6($a0)
  453. or $t7, $t7, $a2
  454. jr $ra
  455. sb $t7, 7($a0)
  456. tile11011101:
  457. or $t0, $t0, $a2
  458. sb $t0, 0($a0)
  459. or $t2, $t2, $a2
  460. sb $t2, 2($a0)
  461. or $t3, $t3, $a2
  462. sb $t3, 3($a0)
  463. or $t4, $t4, $a2
  464. sb $t4, 4($a0)
  465. or $t6, $t6, $a2
  466. sb $t6, 6($a0)
  467. or $t7, $t7, $a2
  468. jr $ra
  469. sb $t7, 7($a0)
  470. tile11011011:
  471. or $t0, $t0, $a2
  472. sb $t0, 0($a0)
  473. tile11011010:
  474. or $t1, $t1, $a2
  475. sb $t1, 1($a0)
  476. or $t3, $t3, $a2
  477. sb $t3, 3($a0)
  478. or $t4, $t4, $a2
  479. sb $t4, 4($a0)
  480. or $t6, $t6, $a2
  481. sb $t6, 6($a0)
  482. or $t7, $t7, $a2
  483. jr $ra
  484. sb $t7, 7($a0)
  485. tile11011001:
  486. or $t0, $t0, $a2
  487. sb $t0, 0($a0)
  488. or $t3, $t3, $a2
  489. sb $t3, 3($a0)
  490. or $t4, $t4, $a2
  491. sb $t4, 4($a0)
  492. or $t6, $t6, $a2
  493. sb $t6, 6($a0)
  494. or $t7, $t7, $a2
  495. jr $ra
  496. sb $t7, 7($a0)
  497. tile11010111:
  498. or $t0, $t0, $a2
  499. sb $t0, 0($a0)
  500. tile11010110:
  501. or $t1, $t1, $a2
  502. sb $t1, 1($a0)
  503. tile11010100:
  504. or $t2, $t2, $a2
  505. sb $t2, 2($a0)
  506. or $t4, $t4, $a2
  507. sb $t4, 4($a0)
  508. or $t6, $t6, $a2
  509. sb $t6, 6($a0)
  510. or $t7, $t7, $a2
  511. jr $ra
  512. sb $t7, 7($a0)
  513. tile11010101:
  514. or $t0, $t0, $a2
  515. sb $t0, 0($a0)
  516. or $t2, $t2, $a2
  517. sb $t2, 2($a0)
  518. or $t4, $t4, $a2
  519. sb $t4, 4($a0)
  520. or $t6, $t6, $a2
  521. sb $t6, 6($a0)
  522. or $t7, $t7, $a2
  523. jr $ra
  524. sb $t7, 7($a0)
  525. tile11010011:
  526. or $t0, $t0, $a2
  527. sb $t0, 0($a0)
  528. tile11010010:
  529. or $t1, $t1, $a2
  530. sb $t1, 1($a0)
  531. or $t4, $t4, $a2
  532. sb $t4, 4($a0)
  533. or $t6, $t6, $a2
  534. sb $t6, 6($a0)
  535. or $t7, $t7, $a2
  536. jr $ra
  537. sb $t7, 7($a0)
  538. tile11010001:
  539. or $t0, $t0, $a2
  540. sb $t0, 0($a0)
  541. or $t4, $t4, $a2
  542. sb $t4, 4($a0)
  543. or $t6, $t6, $a2
  544. sb $t6, 6($a0)
  545. or $t7, $t7, $a2
  546. jr $ra
  547. sb $t7, 7($a0)
  548. tile11001111:
  549. or $t0, $t0, $a2
  550. sb $t0, 0($a0)
  551. tile11001110:
  552. or $t1, $t1, $a2
  553. sb $t1, 1($a0)
  554. tile11001100:
  555. or $t2, $t2, $a2
  556. sb $t2, 2($a0)
  557. tile11001000:
  558. or $t3, $t3, $a2
  559. sb $t3, 3($a0)
  560. or $t6, $t6, $a2
  561. sb $t6, 6($a0)
  562. or $t7, $t7, $a2
  563. jr $ra
  564. sb $t7, 7($a0)
  565. tile11001101:
  566. or $t0, $t0, $a2
  567. sb $t0, 0($a0)
  568. or $t2, $t2, $a2
  569. sb $t2, 2($a0)
  570. or $t3, $t3, $a2
  571. sb $t3, 3($a0)
  572. or $t6, $t6, $a2
  573. sb $t6, 6($a0)
  574. or $t7, $t7, $a2
  575. jr $ra
  576. sb $t7, 7($a0)
  577. tile11001011:
  578. or $t0, $t0, $a2
  579. sb $t0, 0($a0)
  580. tile11001010:
  581. or $t1, $t1, $a2
  582. sb $t1, 1($a0)
  583. or $t3, $t3, $a2
  584. sb $t3, 3($a0)
  585. or $t6, $t6, $a2
  586. sb $t6, 6($a0)
  587. or $t7, $t7, $a2
  588. jr $ra
  589. sb $t7, 7($a0)
  590. tile11001001:
  591. or $t0, $t0, $a2
  592. sb $t0, 0($a0)
  593. or $t3, $t3, $a2
  594. sb $t3, 3($a0)
  595. or $t6, $t6, $a2
  596. sb $t6, 6($a0)
  597. or $t7, $t7, $a2
  598. jr $ra
  599. sb $t7, 7($a0)
  600. tile11000111:
  601. or $t0, $t0, $a2
  602. sb $t0, 0($a0)
  603. tile11000110:
  604. or $t1, $t1, $a2
  605. sb $t1, 1($a0)
  606. tile11000100:
  607. or $t2, $t2, $a2
  608. sb $t2, 2($a0)
  609. or $t6, $t6, $a2
  610. sb $t6, 6($a0)
  611. or $t7, $t7, $a2
  612. jr $ra
  613. sb $t7, 7($a0)
  614. tile11000101:
  615. or $t0, $t0, $a2
  616. sb $t0, 0($a0)
  617. or $t2, $t2, $a2
  618. sb $t2, 2($a0)
  619. or $t6, $t6, $a2
  620. sb $t6, 6($a0)
  621. or $t7, $t7, $a2
  622. jr $ra
  623. sb $t7, 7($a0)
  624. tile11000011:
  625. or $t0, $t0, $a2
  626. sb $t0, 0($a0)
  627. tile11000010:
  628. or $t1, $t1, $a2
  629. sb $t1, 1($a0)
  630. or $t6, $t6, $a2
  631. sb $t6, 6($a0)
  632. or $t7, $t7, $a2
  633. jr $ra
  634. sb $t7, 7($a0)
  635. tile11000001:
  636. or $t0, $t0, $a2
  637. sb $t0, 0($a0)
  638. or $t6, $t6, $a2
  639. sb $t6, 6($a0)
  640. or $t7, $t7, $a2
  641. jr $ra
  642. sb $t7, 7($a0)
  643. tile10111111:
  644. or $t0, $t0, $a2
  645. sb $t0, 0($a0)
  646. tile10111110:
  647. or $t1, $t1, $a2
  648. sb $t1, 1($a0)
  649. tile10111100:
  650. or $t2, $t2, $a2
  651. sb $t2, 2($a0)
  652. tile10111000:
  653. or $t3, $t3, $a2
  654. sb $t3, 3($a0)
  655. tile10110000:
  656. or $t4, $t4, $a2
  657. sb $t4, 4($a0)
  658. tile10100000:
  659. or $t5, $t5, $a2
  660. sb $t5, 5($a0)
  661. or $t7, $t7, $a2
  662. jr $ra
  663. sb $t7, 7($a0)
  664. tile10111101:
  665. or $t0, $t0, $a2
  666. sb $t0, 0($a0)
  667. or $t2, $t2, $a2
  668. sb $t2, 2($a0)
  669. or $t3, $t3, $a2
  670. sb $t3, 3($a0)
  671. or $t4, $t4, $a2
  672. sb $t4, 4($a0)
  673. or $t5, $t5, $a2
  674. sb $t5, 5($a0)
  675. or $t7, $t7, $a2
  676. jr $ra
  677. sb $t7, 7($a0)
  678. tile10111011:
  679. or $t0, $t0, $a2
  680. sb $t0, 0($a0)
  681. tile10111010:
  682. or $t1, $t1, $a2
  683. sb $t1, 1($a0)
  684. or $t3, $t3, $a2
  685. sb $t3, 3($a0)
  686. or $t4, $t4, $a2
  687. sb $t4, 4($a0)
  688. or $t5, $t5, $a2
  689. sb $t5, 5($a0)
  690. or $t7, $t7, $a2
  691. jr $ra
  692. sb $t7, 7($a0)
  693. tile10111001:
  694. or $t0, $t0, $a2
  695. sb $t0, 0($a0)
  696. or $t3, $t3, $a2
  697. sb $t3, 3($a0)
  698. or $t4, $t4, $a2
  699. sb $t4, 4($a0)
  700. or $t5, $t5, $a2
  701. sb $t5, 5($a0)
  702. or $t7, $t7, $a2
  703. jr $ra
  704. sb $t7, 7($a0)
  705. tile10110111:
  706. or $t0, $t0, $a2
  707. sb $t0, 0($a0)
  708. tile10110110:
  709. or $t1, $t1, $a2
  710. sb $t1, 1($a0)
  711. tile10110100:
  712. or $t2, $t2, $a2
  713. sb $t2, 2($a0)
  714. or $t4, $t4, $a2
  715. sb $t4, 4($a0)
  716. or $t5, $t5, $a2
  717. sb $t5, 5($a0)
  718. or $t7, $t7, $a2
  719. jr $ra
  720. sb $t7, 7($a0)
  721. tile10110101:
  722. or $t0, $t0, $a2
  723. sb $t0, 0($a0)
  724. or $t2, $t2, $a2
  725. sb $t2, 2($a0)
  726. or $t4, $t4, $a2
  727. sb $t4, 4($a0)
  728. or $t5, $t5, $a2
  729. sb $t5, 5($a0)
  730. or $t7, $t7, $a2
  731. jr $ra
  732. sb $t7, 7($a0)
  733. tile10110011:
  734. or $t0, $t0, $a2
  735. sb $t0, 0($a0)
  736. tile10110010:
  737. or $t1, $t1, $a2
  738. sb $t1, 1($a0)
  739. or $t4, $t4, $a2
  740. sb $t4, 4($a0)
  741. or $t5, $t5, $a2
  742. sb $t5, 5($a0)
  743. or $t7, $t7, $a2
  744. jr $ra
  745. sb $t7, 7($a0)
  746. tile10110001:
  747. or $t0, $t0, $a2
  748. sb $t0, 0($a0)
  749. or $t4, $t4, $a2
  750. sb $t4, 4($a0)
  751. or $t5, $t5, $a2
  752. sb $t5, 5($a0)
  753. or $t7, $t7, $a2
  754. jr $ra
  755. sb $t7, 7($a0)
  756. tile10101111:
  757. or $t0, $t0, $a2
  758. sb $t0, 0($a0)
  759. tile10101110:
  760. or $t1, $t1, $a2
  761. sb $t1, 1($a0)
  762. tile10101100:
  763. or $t2, $t2, $a2
  764. sb $t2, 2($a0)
  765. tile10101000:
  766. or $t3, $t3, $a2
  767. sb $t3, 3($a0)
  768. or $t5, $t5, $a2
  769. sb $t5, 5($a0)
  770. or $t7, $t7, $a2
  771. jr $ra
  772. sb $t7, 7($a0)
  773. tile10101101:
  774. or $t0, $t0, $a2
  775. sb $t0, 0($a0)
  776. or $t2, $t2, $a2
  777. sb $t2, 2($a0)
  778. or $t3, $t3, $a2
  779. sb $t3, 3($a0)
  780. or $t5, $t5, $a2
  781. sb $t5, 5($a0)
  782. or $t7, $t7, $a2
  783. jr $ra
  784. sb $t7, 7($a0)
  785. tile10101011:
  786. or $t0, $t0, $a2
  787. sb $t0, 0($a0)
  788. tile10101010:
  789. or $t1, $t1, $a2
  790. sb $t1, 1($a0)
  791. or $t3, $t3, $a2
  792. sb $t3, 3($a0)
  793. or $t5, $t5, $a2
  794. sb $t5, 5($a0)
  795. or $t7, $t7, $a2
  796. jr $ra
  797. sb $t7, 7($a0)
  798. tile10101001:
  799. or $t0, $t0, $a2
  800. sb $t0, 0($a0)
  801. or $t3, $t3, $a2
  802. sb $t3, 3($a0)
  803. or $t5, $t5, $a2
  804. sb $t5, 5($a0)
  805. or $t7, $t7, $a2
  806. jr $ra
  807. sb $t7, 7($a0)
  808. tile10100111:
  809. or $t0, $t0, $a2
  810. sb $t0, 0($a0)
  811. tile10100110:
  812. or $t1, $t1, $a2
  813. sb $t1, 1($a0)
  814. tile10100100:
  815. or $t2, $t2, $a2
  816. sb $t2, 2($a0)
  817. or $t5, $t5, $a2
  818. sb $t5, 5($a0)
  819. or $t7, $t7, $a2
  820. jr $ra
  821. sb $t7, 7($a0)
  822. tile10100101:
  823. or $t0, $t0, $a2
  824. sb $t0, 0($a0)
  825. or $t2, $t2, $a2
  826. sb $t2, 2($a0)
  827. or $t5, $t5, $a2
  828. sb $t5, 5($a0)
  829. or $t7, $t7, $a2
  830. jr $ra
  831. sb $t7, 7($a0)
  832. tile10100011:
  833. or $t0, $t0, $a2
  834. sb $t0, 0($a0)
  835. tile10100010:
  836. or $t1, $t1, $a2
  837. sb $t1, 1($a0)
  838. or $t5, $t5, $a2
  839. sb $t5, 5($a0)
  840. or $t7, $t7, $a2
  841. jr $ra
  842. sb $t7, 7($a0)
  843. tile10100001:
  844. or $t0, $t0, $a2
  845. sb $t0, 0($a0)
  846. or $t5, $t5, $a2
  847. sb $t5, 5($a0)
  848. or $t7, $t7, $a2
  849. jr $ra
  850. sb $t7, 7($a0)
  851. tile10011111:
  852. or $t0, $t0, $a2
  853. sb $t0, 0($a0)
  854. tile10011110:
  855. or $t1, $t1, $a2
  856. sb $t1, 1($a0)
  857. tile10011100:
  858. or $t2, $t2, $a2
  859. sb $t2, 2($a0)
  860. tile10011000:
  861. or $t3, $t3, $a2
  862. sb $t3, 3($a0)
  863. tile10010000:
  864. or $t4, $t4, $a2
  865. sb $t4, 4($a0)
  866. or $t7, $t7, $a2
  867. jr $ra
  868. sb $t7, 7($a0)
  869. tile10011101:
  870. or $t0, $t0, $a2
  871. sb $t0, 0($a0)
  872. or $t2, $t2, $a2
  873. sb $t2, 2($a0)
  874. or $t3, $t3, $a2
  875. sb $t3, 3($a0)
  876. or $t4, $t4, $a2
  877. sb $t4, 4($a0)
  878. or $t7, $t7, $a2
  879. jr $ra
  880. sb $t7, 7($a0)
  881. tile10011011:
  882. or $t0, $t0, $a2
  883. sb $t0, 0($a0)
  884. tile10011010:
  885. or $t1, $t1, $a2
  886. sb $t1, 1($a0)
  887. or $t3, $t3, $a2
  888. sb $t3, 3($a0)
  889. or $t4, $t4, $a2
  890. sb $t4, 4($a0)
  891. or $t7, $t7, $a2
  892. jr $ra
  893. sb $t7, 7($a0)
  894. tile10011001:
  895. or $t0, $t0, $a2
  896. sb $t0, 0($a0)
  897. or $t3, $t3, $a2
  898. sb $t3, 3($a0)
  899. or $t4, $t4, $a2
  900. sb $t4, 4($a0)
  901. or $t7, $t7, $a2
  902. jr $ra
  903. sb $t7, 7($a0)
  904. tile10010111:
  905. or $t0, $t0, $a2
  906. sb $t0, 0($a0)
  907. tile10010110:
  908. or $t1, $t1, $a2
  909. sb $t1, 1($a0)
  910. tile10010100:
  911. or $t2, $t2, $a2
  912. sb $t2, 2($a0)
  913. or $t4, $t4, $a2
  914. sb $t4, 4($a0)
  915. or $t7, $t7, $a2
  916. jr $ra
  917. sb $t7, 7($a0)
  918. tile10010101:
  919. or $t0, $t0, $a2
  920. sb $t0, 0($a0)
  921. or $t2, $t2, $a2
  922. sb $t2, 2($a0)
  923. or $t4, $t4, $a2
  924. sb $t4, 4($a0)
  925. or $t7, $t7, $a2
  926. jr $ra
  927. sb $t7, 7($a0)
  928. tile10010011:
  929. or $t0, $t0, $a2
  930. sb $t0, 0($a0)
  931. tile10010010:
  932. or $t1, $t1, $a2
  933. sb $t1, 1($a0)
  934. or $t4, $t4, $a2
  935. sb $t4, 4($a0)
  936. or $t7, $t7, $a2
  937. jr $ra
  938. sb $t7, 7($a0)
  939. tile10010001:
  940. or $t0, $t0, $a2
  941. sb $t0, 0($a0)
  942. or $t4, $t4, $a2
  943. sb $t4, 4($a0)
  944. or $t7, $t7, $a2
  945. jr $ra
  946. sb $t7, 7($a0)
  947. tile10001111:
  948. or $t0, $t0, $a2
  949. sb $t0, 0($a0)
  950. tile10001110:
  951. or $t1, $t1, $a2
  952. sb $t1, 1($a0)
  953. tile10001100:
  954. or $t2, $t2, $a2
  955. sb $t2, 2($a0)
  956. tile10001000:
  957. or $t3, $t3, $a2
  958. sb $t3, 3($a0)
  959. or $t7, $t7, $a2
  960. jr $ra
  961. sb $t7, 7($a0)
  962. tile10001101:
  963. or $t0, $t0, $a2
  964. sb $t0, 0($a0)
  965. or $t2, $t2, $a2
  966. sb $t2, 2($a0)
  967. or $t3, $t3, $a2
  968. sb $t3, 3($a0)
  969. or $t7, $t7, $a2
  970. jr $ra
  971. sb $t7, 7($a0)
  972. tile10001011:
  973. or $t0, $t0, $a2
  974. sb $t0, 0($a0)
  975. tile10001010:
  976. or $t1, $t1, $a2
  977. sb $t1, 1($a0)
  978. or $t3, $t3, $a2
  979. sb $t3, 3($a0)
  980. or $t7, $t7, $a2
  981. jr $ra
  982. sb $t7, 7($a0)
  983. tile10001001:
  984. or $t0, $t0, $a2
  985. sb $t0, 0($a0)
  986. or $t3, $t3, $a2
  987. sb $t3, 3($a0)
  988. or $t7, $t7, $a2
  989. jr $ra
  990. sb $t7, 7($a0)
  991. tile10000111:
  992. or $t0, $t0, $a2
  993. sb $t0, 0($a0)
  994. tile10000110:
  995. or $t1, $t1, $a2
  996. sb $t1, 1($a0)
  997. tile10000100:
  998. or $t2, $t2, $a2
  999. sb $t2, 2($a0)
  1000. or $t7, $t7, $a2
  1001. jr $ra
  1002. sb $t7, 7($a0)
  1003. tile10000101:
  1004. or $t0, $t0, $a2
  1005. sb $t0, 0($a0)
  1006. or $t2, $t2, $a2
  1007. sb $t2, 2($a0)
  1008. or $t7, $t7, $a2
  1009. jr $ra
  1010. sb $t7, 7($a0)
  1011. tile10000011:
  1012. or $t0, $t0, $a2
  1013. sb $t0, 0($a0)
  1014. tile10000010:
  1015. or $t1, $t1, $a2
  1016. sb $t1, 1($a0)
  1017. or $t7, $t7, $a2
  1018. jr $ra
  1019. sb $t7, 7($a0)
  1020. tile10000001:
  1021. or $t0, $t0, $a2
  1022. sb $t0, 0($a0)
  1023. or $t7, $t7, $a2
  1024. jr $ra
  1025. sb $t7, 7($a0)
  1026. tile01111111:
  1027. or $t0, $t0, $a2
  1028. sb $t0, 0($a0)
  1029. tile01111110:
  1030. or $t1, $t1, $a2
  1031. sb $t1, 1($a0)
  1032. tile01111100:
  1033. or $t2, $t2, $a2
  1034. sb $t2, 2($a0)
  1035. tile01111000:
  1036. or $t3, $t3, $a2
  1037. sb $t3, 3($a0)
  1038. tile01110000:
  1039. or $t4, $t4, $a2
  1040. sb $t4, 4($a0)
  1041. tile01100000:
  1042. or $t5, $t5, $a2
  1043. sb $t5, 5($a0)
  1044. tile01000000:
  1045. or $t6, $t6, $a2
  1046. jr $ra
  1047. sb $t6, 6($a0)
  1048. tile00000000:
  1049. tile01111101:
  1050. or $t0, $t0, $a2
  1051. sb $t0, 0($a0)
  1052. or $t2, $t2, $a2
  1053. sb $t2, 2($a0)
  1054. or $t3, $t3, $a2
  1055. sb $t3, 3($a0)
  1056. or $t4, $t4, $a2
  1057. sb $t4, 4($a0)
  1058. or $t5, $t5, $a2
  1059. sb $t5, 5($a0)
  1060. or $t6, $t6, $a2
  1061. jr $ra
  1062. sb $t6, 6($a0)
  1063. tile01111011:
  1064. or $t0, $t0, $a2
  1065. sb $t0, 0($a0)
  1066. tile01111010:
  1067. or $t1, $t1, $a2
  1068. sb $t1, 1($a0)
  1069. or $t3, $t3, $a2
  1070. sb $t3, 3($a0)
  1071. or $t4, $t4, $a2
  1072. sb $t4, 4($a0)
  1073. or $t5, $t5, $a2
  1074. sb $t5, 5($a0)
  1075. or $t6, $t6, $a2
  1076. jr $ra
  1077. sb $t6, 6($a0)
  1078. tile01111001:
  1079. or $t0, $t0, $a2
  1080. sb $t0, 0($a0)
  1081. or $t3, $t3, $a2
  1082. sb $t3, 3($a0)
  1083. or $t4, $t4, $a2
  1084. sb $t4, 4($a0)
  1085. or $t5, $t5, $a2
  1086. sb $t5, 5($a0)
  1087. or $t6, $t6, $a2
  1088. jr $ra
  1089. sb $t6, 6($a0)
  1090. tile01110111:
  1091. or $t0, $t0, $a2
  1092. sb $t0, 0($a0)
  1093. tile01110110:
  1094. or $t1, $t1, $a2
  1095. sb $t1, 1($a0)
  1096. tile01110100:
  1097. or $t2, $t2, $a2
  1098. sb $t2, 2($a0)
  1099. or $t4, $t4, $a2
  1100. sb $t4, 4($a0)
  1101. or $t5, $t5, $a2
  1102. sb $t5, 5($a0)
  1103. or $t6, $t6, $a2
  1104. jr $ra
  1105. sb $t6, 6($a0)
  1106. tile01110101:
  1107. or $t0, $t0, $a2
  1108. sb $t0, 0($a0)
  1109. or $t2, $t2, $a2
  1110. sb $t2, 2($a0)
  1111. or $t4, $t4, $a2
  1112. sb $t4, 4($a0)
  1113. or $t5, $t5, $a2
  1114. sb $t5, 5($a0)
  1115. or $t6, $t6, $a2
  1116. jr $ra
  1117. sb $t6, 6($a0)
  1118. tile01110011:
  1119. or $t0, $t0, $a2
  1120. sb $t0, 0($a0)
  1121. tile01110010:
  1122. or $t1, $t1, $a2
  1123. sb $t1, 1($a0)
  1124. or $t4, $t4, $a2
  1125. sb $t4, 4($a0)
  1126. or $t5, $t5, $a2
  1127. sb $t5, 5($a0)
  1128. or $t6, $t6, $a2
  1129. jr $ra
  1130. sb $t6, 6($a0)
  1131. tile01110001:
  1132. or $t0, $t0, $a2
  1133. sb $t0, 0($a0)
  1134. or $t4, $t4, $a2
  1135. sb $t4, 4($a0)
  1136. or $t5, $t5, $a2
  1137. sb $t5, 5($a0)
  1138. or $t6, $t6, $a2
  1139. jr $ra
  1140. sb $t6, 6($a0)
  1141. tile01101111:
  1142. or $t0, $t0, $a2
  1143. sb $t0, 0($a0)
  1144. tile01101110:
  1145. or $t1, $t1, $a2
  1146. sb $t1, 1($a0)
  1147. tile01101100:
  1148. or $t2, $t2, $a2
  1149. sb $t2, 2($a0)
  1150. tile01101000:
  1151. or $t3, $t3, $a2
  1152. sb $t3, 3($a0)
  1153. or $t5, $t5, $a2
  1154. sb $t5, 5($a0)
  1155. or $t6, $t6, $a2
  1156. jr $ra
  1157. sb $t6, 6($a0)
  1158. tile01101101:
  1159. or $t0, $t0, $a2
  1160. sb $t0, 0($a0)
  1161. or $t2, $t2, $a2
  1162. sb $t2, 2($a0)
  1163. or $t3, $t3, $a2
  1164. sb $t3, 3($a0)
  1165. or $t5, $t5, $a2
  1166. sb $t5, 5($a0)
  1167. or $t6, $t6, $a2
  1168. jr $ra
  1169. sb $t6, 6($a0)
  1170. tile01101011:
  1171. or $t0, $t0, $a2
  1172. sb $t0, 0($a0)
  1173. tile01101010:
  1174. or $t1, $t1, $a2
  1175. sb $t1, 1($a0)
  1176. or $t3, $t3, $a2
  1177. sb $t3, 3($a0)
  1178. or $t5, $t5, $a2
  1179. sb $t5, 5($a0)
  1180. or $t6, $t6, $a2
  1181. jr $ra
  1182. sb $t6, 6($a0)
  1183. tile01101001:
  1184. or $t0, $t0, $a2
  1185. sb $t0, 0($a0)
  1186. or $t3, $t3, $a2
  1187. sb $t3, 3($a0)
  1188. or $t5, $t5, $a2
  1189. sb $t5, 5($a0)
  1190. or $t6, $t6, $a2
  1191. jr $ra
  1192. sb $t6, 6($a0)
  1193. tile01100111:
  1194. or $t0, $t0, $a2
  1195. sb $t0, 0($a0)
  1196. tile01100110:
  1197. or $t1, $t1, $a2
  1198. sb $t1, 1($a0)
  1199. tile01100100:
  1200. or $t2, $t2, $a2
  1201. sb $t2, 2($a0)
  1202. or $t5, $t5, $a2
  1203. sb $t5, 5($a0)
  1204. or $t6, $t6, $a2
  1205. jr $ra
  1206. sb $t6, 6($a0)
  1207. tile01100101:
  1208. or $t0, $t0, $a2
  1209. sb $t0, 0($a0)
  1210. or $t2, $t2, $a2
  1211. sb $t2, 2($a0)
  1212. or $t5, $t5, $a2
  1213. sb $t5, 5($a0)
  1214. or $t6, $t6, $a2
  1215. jr $ra
  1216. sb $t6, 6($a0)
  1217. tile01100011:
  1218. or $t0, $t0, $a2
  1219. sb $t0, 0($a0)
  1220. tile01100010:
  1221. or $t1, $t1, $a2
  1222. sb $t1, 1($a0)
  1223. or $t5, $t5, $a2
  1224. sb $t5, 5($a0)
  1225. or $t6, $t6, $a2
  1226. jr $ra
  1227. sb $t6, 6($a0)
  1228. tile01100001:
  1229. or $t0, $t0, $a2
  1230. sb $t0, 0($a0)
  1231. or $t5, $t5, $a2
  1232. sb $t5, 5($a0)
  1233. or $t6, $t6, $a2
  1234. jr $ra
  1235. sb $t6, 6($a0)
  1236. tile01011111:
  1237. or $t0, $t0, $a2
  1238. sb $t0, 0($a0)
  1239. tile01011110:
  1240. or $t1, $t1, $a2
  1241. sb $t1, 1($a0)
  1242. tile01011100:
  1243. or $t2, $t2, $a2
  1244. sb $t2, 2($a0)
  1245. tile01011000:
  1246. or $t3, $t3, $a2
  1247. sb $t3, 3($a0)
  1248. tile01010000:
  1249. or $t4, $t4, $a2
  1250. sb $t4, 4($a0)
  1251. or $t6, $t6, $a2
  1252. jr $ra
  1253. sb $t6, 6($a0)
  1254. tile01011101:
  1255. or $t0, $t0, $a2
  1256. sb $t0, 0($a0)
  1257. or $t2, $t2, $a2
  1258. sb $t2, 2($a0)
  1259. or $t3, $t3, $a2
  1260. sb $t3, 3($a0)
  1261. or $t4, $t4, $a2
  1262. sb $t4, 4($a0)
  1263. or $t6, $t6, $a2
  1264. jr $ra
  1265. sb $t6, 6($a0)
  1266. tile01011011:
  1267. or $t0, $t0, $a2
  1268. sb $t0, 0($a0)
  1269. tile01011010:
  1270. or $t1, $t1, $a2
  1271. sb $t1, 1($a0)
  1272. or $t3, $t3, $a2
  1273. sb $t3, 3($a0)
  1274. or $t4, $t4, $a2
  1275. sb $t4, 4($a0)
  1276. or $t6, $t6, $a2
  1277. jr $ra
  1278. sb $t6, 6($a0)
  1279. tile01011001:
  1280. or $t0, $t0, $a2
  1281. sb $t0, 0($a0)
  1282. or $t3, $t3, $a2
  1283. sb $t3, 3($a0)
  1284. or $t4, $t4, $a2
  1285. sb $t4, 4($a0)
  1286. or $t6, $t6, $a2
  1287. jr $ra
  1288. sb $t6, 6($a0)
  1289. tile01010111:
  1290. or $t0, $t0, $a2
  1291. sb $t0, 0($a0)
  1292. tile01010110:
  1293. or $t1, $t1, $a2
  1294. sb $t1, 1($a0)
  1295. tile01010100:
  1296. or $t2, $t2, $a2
  1297. sb $t2, 2($a0)
  1298. or $t4, $t4, $a2
  1299. sb $t4, 4($a0)
  1300. or $t6, $t6, $a2
  1301. jr $ra
  1302. sb $t6, 6($a0)
  1303. tile01010101:
  1304. or $t0, $t0, $a2
  1305. sb $t0, 0($a0)
  1306. or $t2, $t2, $a2
  1307. sb $t2, 2($a0)
  1308. or $t4, $t4, $a2
  1309. sb $t4, 4($a0)
  1310. or $t6, $t6, $a2
  1311. jr $ra
  1312. sb $t6, 6($a0)
  1313. tile01010011:
  1314. or $t0, $t0, $a2
  1315. sb $t0, 0($a0)
  1316. tile01010010:
  1317. or $t1, $t1, $a2
  1318. sb $t1, 1($a0)
  1319. or $t4, $t4, $a2
  1320. sb $t4, 4($a0)
  1321. or $t6, $t6, $a2
  1322. jr $ra
  1323. sb $t6, 6($a0)
  1324. tile01010001:
  1325. or $t0, $t0, $a2
  1326. sb $t0, 0($a0)
  1327. or $t4, $t4, $a2
  1328. sb $t4, 4($a0)
  1329. or $t6, $t6, $a2
  1330. jr $ra
  1331. sb $t6, 6($a0)
  1332. tile01001111:
  1333. or $t0, $t0, $a2
  1334. sb $t0, 0($a0)
  1335. tile01001110:
  1336. or $t1, $t1, $a2
  1337. sb $t1, 1($a0)
  1338. tile01001100:
  1339. or $t2, $t2, $a2
  1340. sb $t2, 2($a0)
  1341. tile01001000:
  1342. or $t3, $t3, $a2
  1343. sb $t3, 3($a0)
  1344. or $t6, $t6, $a2
  1345. jr $ra
  1346. sb $t6, 6($a0)
  1347. tile01001101:
  1348. or $t0, $t0, $a2
  1349. sb $t0, 0($a0)
  1350. or $t2, $t2, $a2
  1351. sb $t2, 2($a0)
  1352. or $t3, $t3, $a2
  1353. sb $t3, 3($a0)
  1354. or $t6, $t6, $a2
  1355. jr $ra
  1356. sb $t6, 6($a0)
  1357. tile01001011:
  1358. or $t0, $t0, $a2
  1359. sb $t0, 0($a0)
  1360. tile01001010:
  1361. or $t1, $t1, $a2
  1362. sb $t1, 1($a0)
  1363. or $t3, $t3, $a2
  1364. sb $t3, 3($a0)
  1365. or $t6, $t6, $a2
  1366. jr $ra
  1367. sb $t6, 6($a0)
  1368. tile01001001:
  1369. or $t0, $t0, $a2
  1370. sb $t0, 0($a0)
  1371. or $t3, $t3, $a2
  1372. sb $t3, 3($a0)
  1373. or $t6, $t6, $a2
  1374. jr $ra
  1375. sb $t6, 6($a0)
  1376. tile01000111:
  1377. or $t0, $t0, $a2
  1378. sb $t0, 0($a0)
  1379. tile01000110:
  1380. or $t1, $t1, $a2
  1381. sb $t1, 1($a0)
  1382. tile01000100:
  1383. or $t2, $t2, $a2
  1384. sb $t2, 2($a0)
  1385. or $t6, $t6, $a2
  1386. jr $ra
  1387. sb $t6, 6($a0)
  1388. tile01000101:
  1389. or $t0, $t0, $a2
  1390. sb $t0, 0($a0)
  1391. or $t2, $t2, $a2
  1392. sb $t2, 2($a0)
  1393. or $t6, $t6, $a2
  1394. jr $ra
  1395. sb $t6, 6($a0)
  1396. tile01000011:
  1397. or $t0, $t0, $a2
  1398. sb $t0, 0($a0)
  1399. tile01000010:
  1400. or $t1, $t1, $a2
  1401. sb $t1, 1($a0)
  1402. or $t6, $t6, $a2
  1403. jr $ra
  1404. sb $t6, 6($a0)
  1405. tile01000001:
  1406. or $t0, $t0, $a2
  1407. sb $t0, 0($a0)
  1408. or $t6, $t6, $a2
  1409. jr $ra
  1410. sb $t6, 6($a0)
  1411. tile00111111:
  1412. or $t0, $t0, $a2
  1413. sb $t0, 0($a0)
  1414. tile00111110:
  1415. or $t1, $t1, $a2
  1416. sb $t1, 1($a0)
  1417. tile00111100:
  1418. or $t2, $t2, $a2
  1419. sb $t2, 2($a0)
  1420. tile00111000:
  1421. or $t3, $t3, $a2
  1422. sb $t3, 3($a0)
  1423. tile00110000:
  1424. or $t4, $t4, $a2
  1425. sb $t4, 4($a0)
  1426. tile00100000:
  1427. or $t5, $t5, $a2
  1428. jr $ra
  1429. sb $t5, 5($a0)
  1430. tile00111101:
  1431. or $t0, $t0, $a2
  1432. sb $t0, 0($a0)
  1433. or $t2, $t2, $a2
  1434. sb $t2, 2($a0)
  1435. or $t3, $t3, $a2
  1436. sb $t3, 3($a0)
  1437. or $t4, $t4, $a2
  1438. sb $t4, 4($a0)
  1439. or $t5, $t5, $a2
  1440. jr $ra
  1441. sb $t5, 5($a0)
  1442. tile00111011:
  1443. or $t0, $t0, $a2
  1444. sb $t0, 0($a0)
  1445. tile00111010:
  1446. or $t1, $t1, $a2
  1447. sb $t1, 1($a0)
  1448. or $t3, $t3, $a2
  1449. sb $t3, 3($a0)
  1450. or $t4, $t4, $a2
  1451. sb $t4, 4($a0)
  1452. or $t5, $t5, $a2
  1453. jr $ra
  1454. sb $t5, 5($a0)
  1455. tile00111001:
  1456. or $t0, $t0, $a2
  1457. sb $t0, 0($a0)
  1458. or $t3, $t3, $a2
  1459. sb $t3, 3($a0)
  1460. or $t4, $t4, $a2
  1461. sb $t4, 4($a0)
  1462. or $t5, $t5, $a2
  1463. jr $ra
  1464. sb $t5, 5($a0)
  1465. tile00110111:
  1466. or $t0, $t0, $a2
  1467. sb $t0, 0($a0)
  1468. tile00110110:
  1469. or $t1, $t1, $a2
  1470. sb $t1, 1($a0)
  1471. tile00110100:
  1472. or $t2, $t2, $a2
  1473. sb $t2, 2($a0)
  1474. or $t4, $t4, $a2
  1475. sb $t4, 4($a0)
  1476. or $t5, $t5, $a2
  1477. jr $ra
  1478. sb $t5, 5($a0)
  1479. tile00110101:
  1480. or $t0, $t0, $a2
  1481. sb $t0, 0($a0)
  1482. or $t2, $t2, $a2
  1483. sb $t2, 2($a0)
  1484. or $t4, $t4, $a2
  1485. sb $t4, 4($a0)
  1486. or $t5, $t5, $a2
  1487. jr $ra
  1488. sb $t5, 5($a0)
  1489. tile00110011:
  1490. or $t0, $t0, $a2
  1491. sb $t0, 0($a0)
  1492. tile00110010:
  1493. or $t1, $t1, $a2
  1494. sb $t1, 1($a0)
  1495. or $t4, $t4, $a2
  1496. sb $t4, 4($a0)
  1497. or $t5, $t5, $a2
  1498. jr $ra
  1499. sb $t5, 5($a0)
  1500. tile00110001:
  1501. or $t0, $t0, $a2
  1502. sb $t0, 0($a0)
  1503. or $t4, $t4, $a2
  1504. sb $t4, 4($a0)
  1505. or $t5, $t5, $a2
  1506. jr $ra
  1507. sb $t5, 5($a0)
  1508. tile00101111:
  1509. or $t0, $t0, $a2
  1510. sb $t0, 0($a0)
  1511. tile00101110:
  1512. or $t1, $t1, $a2
  1513. sb $t1, 1($a0)
  1514. tile00101100:
  1515. or $t2, $t2, $a2
  1516. sb $t2, 2($a0)
  1517. tile00101000:
  1518. or $t3, $t3, $a2
  1519. sb $t3, 3($a0)
  1520. or $t5, $t5, $a2
  1521. jr $ra
  1522. sb $t5, 5($a0)
  1523. tile00101101:
  1524. or $t0, $t0, $a2
  1525. sb $t0, 0($a0)
  1526. or $t2, $t2, $a2
  1527. sb $t2, 2($a0)
  1528. or $t3, $t3, $a2
  1529. sb $t3, 3($a0)
  1530. or $t5, $t5, $a2
  1531. jr $ra
  1532. sb $t5, 5($a0)
  1533. tile00101011:
  1534. or $t0, $t0, $a2
  1535. sb $t0, 0($a0)
  1536. tile00101010:
  1537. or $t1, $t1, $a2
  1538. sb $t1, 1($a0)
  1539. or $t3, $t3, $a2
  1540. sb $t3, 3($a0)
  1541. or $t5, $t5, $a2
  1542. jr $ra
  1543. sb $t5, 5($a0)
  1544. tile00101001:
  1545. or $t0, $t0, $a2
  1546. sb $t0, 0($a0)
  1547. or $t3, $t3, $a2
  1548. sb $t3, 3($a0)
  1549. or $t5, $t5, $a2
  1550. jr $ra
  1551. sb $t5, 5($a0)
  1552. tile00100111:
  1553. or $t0, $t0, $a2
  1554. sb $t0, 0($a0)
  1555. tile00100110:
  1556. or $t1, $t1, $a2
  1557. sb $t1, 1($a0)
  1558. tile00100100:
  1559. or $t2, $t2, $a2
  1560. sb $t2, 2($a0)
  1561. or $t5, $t5, $a2
  1562. jr $ra
  1563. sb $t5, 5($a0)
  1564. tile00100101:
  1565. or $t0, $t0, $a2
  1566. sb $t0, 0($a0)
  1567. or $t2, $t2, $a2
  1568. sb $t2, 2($a0)
  1569. or $t5, $t5, $a2
  1570. jr $ra
  1571. sb $t5, 5($a0)
  1572. tile00100011:
  1573. or $t0, $t0, $a2
  1574. sb $t0, 0($a0)
  1575. tile00100010:
  1576. or $t1, $t1, $a2
  1577. sb $t1, 1($a0)
  1578. or $t5, $t5, $a2
  1579. jr $ra
  1580. sb $t5, 5($a0)
  1581. tile00100001:
  1582. or $t0, $t0, $a2
  1583. sb $t0, 0($a0)
  1584. or $t5, $t5, $a2
  1585. jr $ra
  1586. sb $t5, 5($a0)
  1587. tile00011111:
  1588. or $t0, $t0, $a2
  1589. sb $t0, 0($a0)
  1590. tile00011110:
  1591. or $t1, $t1, $a2
  1592. sb $t1, 1($a0)
  1593. tile00011100:
  1594. or $t2, $t2, $a2
  1595. sb $t2, 2($a0)
  1596. tile00011000:
  1597. or $t3, $t3, $a2
  1598. sb $t3, 3($a0)
  1599. tile00010000:
  1600. or $t4, $t4, $a2
  1601. jr $ra
  1602. sb $t4, 4($a0)
  1603. tile00011101:
  1604. or $t0, $t0, $a2
  1605. sb $t0, 0($a0)
  1606. or $t2, $t2, $a2
  1607. sb $t2, 2($a0)
  1608. or $t3, $t3, $a2
  1609. sb $t3, 3($a0)
  1610. or $t4, $t4, $a2
  1611. jr $ra
  1612. sb $t4, 4($a0)
  1613. tile00011011:
  1614. or $t0, $t0, $a2
  1615. sb $t0, 0($a0)
  1616. tile00011010:
  1617. or $t1, $t1, $a2
  1618. sb $t1, 1($a0)
  1619. or $t3, $t3, $a2
  1620. sb $t3, 3($a0)
  1621. or $t4, $t4, $a2
  1622. jr $ra
  1623. sb $t4, 4($a0)
  1624. tile00011001:
  1625. or $t0, $t0, $a2
  1626. sb $t0, 0($a0)
  1627. or $t3, $t3, $a2
  1628. sb $t3, 3($a0)
  1629. or $t4, $t4, $a2
  1630. jr $ra
  1631. sb $t4, 4($a0)
  1632. tile00010111:
  1633. or $t0, $t0, $a2
  1634. sb $t0, 0($a0)
  1635. tile00010110:
  1636. or $t1, $t1, $a2
  1637. sb $t1, 1($a0)
  1638. tile00010100:
  1639. or $t2, $t2, $a2
  1640. sb $t2, 2($a0)
  1641. or $t4, $t4, $a2
  1642. jr $ra
  1643. sb $t4, 4($a0)
  1644. tile00010101:
  1645. or $t0, $t0, $a2
  1646. sb $t0, 0($a0)
  1647. or $t2, $t2, $a2
  1648. sb $t2, 2($a0)
  1649. or $t4, $t4, $a2
  1650. jr $ra
  1651. sb $t4, 4($a0)
  1652. tile00010011:
  1653. or $t0, $t0, $a2
  1654. sb $t0, 0($a0)
  1655. tile00010010:
  1656. or $t1, $t1, $a2
  1657. sb $t1, 1($a0)
  1658. or $t4, $t4, $a2
  1659. jr $ra
  1660. sb $t4, 4($a0)
  1661. tile00010001:
  1662. or $t0, $t0, $a2
  1663. sb $t0, 0($a0)
  1664. or $t4, $t4, $a2
  1665. jr $ra
  1666. sb $t4, 4($a0)
  1667. tile00001111:
  1668. or $t0, $t0, $a2
  1669. sb $t0, 0($a0)
  1670. tile00001110:
  1671. or $t1, $t1, $a2
  1672. sb $t1, 1($a0)
  1673. tile00001100:
  1674. or $t2, $t2, $a2
  1675. sb $t2, 2($a0)
  1676. tile00001000:
  1677. or $t3, $t3, $a2
  1678. jr $ra
  1679. sb $t3, 3($a0)
  1680. tile00001101:
  1681. or $t0, $t0, $a2
  1682. sb $t0, 0($a0)
  1683. or $t2, $t2, $a2
  1684. sb $t2, 2($a0)
  1685. or $t3, $t3, $a2
  1686. jr $ra
  1687. sb $t3, 3($a0)
  1688. tile00001011:
  1689. or $t0, $t0, $a2
  1690. sb $t0, 0($a0)
  1691. tile00001010:
  1692. or $t1, $t1, $a2
  1693. sb $t1, 1($a0)
  1694. or $t3, $t3, $a2
  1695. jr $ra
  1696. sb $t3, 3($a0)
  1697. tile00001001:
  1698. or $t0, $t0, $a2
  1699. sb $t0, 0($a0)
  1700. or $t3, $t3, $a2
  1701. jr $ra
  1702. sb $t3, 3($a0)
  1703. tile00000111:
  1704. or $t0, $t0, $a2
  1705. sb $t0, 0($a0)
  1706. tile00000110:
  1707. or $t1, $t1, $a2
  1708. sb $t1, 1($a0)
  1709. tile00000100:
  1710. or $t2, $t2, $a2
  1711. jr $ra
  1712. sb $t2, 2($a0)
  1713. tile00000101:
  1714. or $t0, $t0, $a2
  1715. sb $t0, 0($a0)
  1716. or $t2, $t2, $a2
  1717. jr $ra
  1718. sb $t2, 2($a0)
  1719. tile00000011:
  1720. or $t0, $t0, $a2
  1721. sb $t0, 0($a0)
  1722. tile00000010:
  1723. or $t1, $t1, $a2
  1724. jr $ra
  1725. sb $t1, 1($a0)
  1726. tile00000001:
  1727. or $t0, $t0, $a2
  1728. jr $ra
  1729. sb $t0, 0($a0)
  1730. .data
  1731. .align 4
  1732. TileTable:
  1733. .long 000000000000, tile00000001, tile00000010, tile00000011, tile00000100, tile00000101, tile00000110, tile00000111
  1734. .long tile00001000, tile00001001, tile00001010, tile00001011, tile00001100, tile00001101, tile00001110, tile00001111
  1735. .long tile00010000, tile00010001, tile00010010, tile00010011, tile00010100, tile00010101, tile00010110, tile00010111
  1736. .long tile00011000, tile00011001, tile00011010, tile00011011, tile00011100, tile00011101, tile00011110, tile00011111
  1737. .long tile00100000, tile00100001, tile00100010, tile00100011, tile00100100, tile00100101, tile00100110, tile00100111
  1738. .long tile00101000, tile00101001, tile00101010, tile00101011, tile00101100, tile00101101, tile00101110, tile00101111
  1739. .long tile00110000, tile00110001, tile00110010, tile00110011, tile00110100, tile00110101, tile00110110, tile00110111
  1740. .long tile00111000, tile00111001, tile00111010, tile00111011, tile00111100, tile00111101, tile00111110, tile00111111
  1741. .long tile01000000, tile01000001, tile01000010, tile01000011, tile01000100, tile01000101, tile01000110, tile01000111
  1742. .long tile01001000, tile01001001, tile01001010, tile01001011, tile01001100, tile01001101, tile01001110, tile01001111
  1743. .long tile01010000, tile01010001, tile01010010, tile01010011, tile01010100, tile01010101, tile01010110, tile01010111
  1744. .long tile01011000, tile01011001, tile01011010, tile01011011, tile01011100, tile01011101, tile01011110, tile01011111
  1745. .long tile01100000, tile01100001, tile01100010, tile01100011, tile01100100, tile01100101, tile01100110, tile01100111
  1746. .long tile01101000, tile01101001, tile01101010, tile01101011, tile01101100, tile01101101, tile01101110, tile01101111
  1747. .long tile01110000, tile01110001, tile01110010, tile01110011, tile01110100, tile01110101, tile01110110, tile01110111
  1748. .long tile01111000, tile01111001, tile01111010, tile01111011, tile01111100, tile01111101, tile01111110, tile01111111
  1749. .long tile10000000, tile10000001, tile10000010, tile10000011, tile10000100, tile10000101, tile10000110, tile10000111
  1750. .long tile10001000, tile10001001, tile10001010, tile10001011, tile10001100, tile10001101, tile10001110, tile10001111
  1751. .long tile10010000, tile10010001, tile10010010, tile10010011, tile10010100, tile10010101, tile10010110, tile10010111
  1752. .long tile10011000, tile10011001, tile10011010, tile10011011, tile10011100, tile10011101, tile10011110, tile10011111
  1753. .long tile10100000, tile10100001, tile10100010, tile10100011, tile10100100, tile10100101, tile10100110, tile10100111
  1754. .long tile10101000, tile10101001, tile10101010, tile10101011, tile10101100, tile10101101, tile10101110, tile10101111
  1755. .long tile10110000, tile10110001, tile10110010, tile10110011, tile10110100, tile10110101, tile10110110, tile10110111
  1756. .long tile10111000, tile10111001, tile10111010, tile10111011, tile10111100, tile10111101, tile10111110, tile10111111
  1757. .long tile11000000, tile11000001, tile11000010, tile11000011, tile11000100, tile11000101, tile11000110, tile11000111
  1758. .long tile11001000, tile11001001, tile11001010, tile11001011, tile11001100, tile11001101, tile11001110, tile11001111
  1759. .long tile11010000, tile11010001, tile11010010, tile11010011, tile11010100, tile11010101, tile11010110, tile11010111
  1760. .long tile11011000, tile11011001, tile11011010, tile11011011, tile11011100, tile11011101, tile11011110, tile11011111
  1761. .long tile11100000, tile11100001, tile11100010, tile11100011, tile11100100, tile11100101, tile11100110, tile11100111
  1762. .long tile11101000, tile11101001, tile11101010, tile11101011, tile11101100, tile11101101, tile11101110, tile11101111
  1763. .long tile11110000, tile11110001, tile11110010, tile11110011, tile11110100, tile11110101, tile11110110, tile11110111
  1764. .long tile11111000, tile11111001, tile11111010, tile11111011, tile11111100, tile11111101, tile11111110, tile11111111