Draw_amips.s 41 KB

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