-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscreen4(sem_copia).asm
354 lines (290 loc) · 4.66 KB
/
screen4(sem_copia).asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
.text
ceu_init:
lui $8, 0x1001
li $9, 32768
li $20, 0x0ec7db
ceu:
beq $9, $0, nuvem_init
sw $20, 0($8)
sw $20, 65536($8)
addi $8, $8, 4
addi $9, $9, -1
j ceu
nuvem_init:
lui $8, 0x1001
addi $8, $8, 612
li $21, 1
li $9, 12
li $20, 0xfbfdff
nuvem:
beq $9, $0, proxima_nuvem
#linha 1
sw $20, 16($8)
sw $20, 65552($8)
# linha 2 e 3
sw $20, 520($8)
sw $20, 532($8)
sw $20, 66056($8)
sw $20, 66068($8)
sw $20, 1032($8)
sw $20, 1068($8)
sw $20, 66568($8)
sw $20, 66604($8)
# linha 4
sw $20, 1532($8)
sw $20, 1580($8)
sw $20, 1588($8)
sw $20, 67068($8)
sw $20, 67116($8)
sw $20, 67124($8)
# linha 5 a 8
sw $20, 2040($8)
sw $20, 2080($8)
sw $20, 2104($8)
sw $20, 67576($8)
sw $20, 67616($8)
sw $20, 67640($8)
sw $20, 2552($8)
sw $20, 2568($8)
sw $20, 2616($8)
sw $20, 68088($8)
sw $20, 68104($8)
sw $20, 68152($8)
sw $20, 3064($8)
sw $20, 3080($8)
sw $20, 3128($8)
sw $20, 68600($8)
sw $20, 68616($8)
sw $20, 68664($8)
sw $20, 3576($8)
sw $20, 3592($8)
sw $20, 3640($8)
sw $20, 69112($8)
sw $20, 69128($8)
sw $20, 69176($8)
# linha 9
sw $20, 4092($8)
sw $20, 4140($8)
sw $20, 4148($8)
sw $20, 69628($8)
sw $20, 69676($8)
sw $20, 69684($8)
# linha 10
sw $20, 4632($8)
sw $20, 70168($8)
addi $8, $8, 4
addi $9, $9, -1
j nuvem
proxima_nuvem:
beq $21 $0 solo_init
addi $21, $21, -1
addi $8, $8, 3296
li $9, 12
j nuvem
# chao/piso/solo
solo_init:
li $20, 0xc89858
lui $8, 0x1001
addi $8, $8, 26624
li $9, 6554
solo:
beq $9, $0, detalhe_solo_init
sw $20, 0($8)
sw $20, 65536($8)
addi $8, $8, 4
addi $9, $9, -1
j solo
detalhe_solo_init:
li $20, 0xe0c050
li $21, 2
lui $8, 0x1001
addi $8, $8, 26624
li $9, 16
detalhe_solo:
beq $9, $0, npds
sw $20, 0($8)
sw $20, 4($8)
sw $20, 512($8)
sw $20, 516($8)
sw $20, 1024($8)
sw $20, 1028($8)
sw $20, 65536($8)
sw $20, 65540($8)
sw $20, 66048($8)
sw $20, 66052($8)
sw $20, 66560($8)
sw $20, 66564($8)
sw $20, 1036($8)
sw $20, 1548($8)
sw $20, 66572($8)
sw $20, 67084($8)
addi $8, $8, 32
addi $9, $9, -1
j detalhe_solo
npds:
beq $21, $0 grama_init
addi $21, $21, -1
addi $8, $8, 2604
li $9, 16
j detalhe_solo
grama_init:
li $20, 0x00c800
lui $8, 0x1001
addi $8, $8, 26624
li $9, 128
grama:
beq $9, $0, dg_init
sw $20, 0($8)
sw $20, 512($8)
sw $20, 65536($8)
sw $20, 66048($8)
addi $8, $8, 4
addi $9, $9, -1
j grama
dg_init:
li $21, 0x786818
li $9, 26
dg:
beq $9, $0, mastro_init
sw $20, 4($8)
sw $20, 12($8)
sw $20, 65536($8)
sw $20, 65540($8)
sw $20, 65548($8)
# sombras
sw $21, 8($8)
sw $21, 16($8)
sw $21, 512($8)
sw $21, 516($8)
sw $21, 524($8)
sw $20, 65544($8)
sw $20, 65552($8)
sw $20, 66048($8)
sw $20, 66052($8)
sw $20, 66060($8)
addi $8, $8, 20
addi $9, $9, -1
j dg
mastro_init:
li $20, 0xb4f42c
lui $8, 0x1001
addi $8, $8, 10112
li $9, 33
mastro:
beq $9, $0, bola_init
sw $20, 0($8)
addi $8, $8, 512
addi $9, $9, -1
j mastro
bola_init:
li $20, 0x00b000
lui $8, 0x1001
addi $8, $8, 7548
li $9, 3
bola:
beq $9, $0, bandeira_init
sw $20, 0($8)
sw $20, 508($8)
sw $20,516($8)
sw $20,1020($8)
sw $20,1028($8)
sw $20,1532($8)
sw $20,1540($8)
sw $20,2048($8)
addi $8, $8, 4
addi $9, $9, -1
j bola
bandeira_init:
li $20, 0xffffff
lui $8, 0x1001
addi $8, $8, 10576
li $9, 12
move $10, $9
bandeira:
beq $9, $0, plb
sw $20, 0($8)
addi $8, $8, 4
addi $9, $9, -1
j bandeira
plb:
beq $10, $0, bloco_init
addi $9, $10, -1
move $10, $9
li $4, 4
mul $11, $10, $4
addi $8, $8, 512
sub $8, $8, $11
j bandeira
bloco_init:
li $20, 0xae4c0f
lui $8, 0x1001
addi $8, $8, 22688
li $9, 8
li $10, 7
li $11, 1
li $21, 1
bloco:
beq $9, $0 plb_m4
sw $20, 0($8)
sw $20, 65536($8)
addi $8, $8, 4
subi $9, $9, 1
j bloco
plb_m4:
beq $10, $0 detalhe_blocoHi
subi $10, $10, 1
addi $8, $8, 480
li $9, 8
j bloco
detalhe_blocoHi:
move $10, $8
subi $8, $8 3612
li $20, 0xd28a5c # luz
li $12, 0x5e3217 # sombra
li $9, 4
detalhe_blocoH:
beq $9, $0 detalhe_blocoVI
sw $20, 0($8)
sw $20, 8($8)
sw $20, 516($8)
sw $12, 3076($8)
sw $12, 3584($8)
sw $12, 3592($8)
addi $8, $8, 4
subi $9, $9, 1
j detalhe_blocoH
detalhe_blocoVI:
subi $8, $8 20
addi $8, $8 512
li $9, 4
detalhe_blocoV:
beq $9, $0 prox_bloco
sw $20, 0($8)
sw $20, 1024($8)
sw $20, 516($8)
sw $12, 28($8)
sw $12, 1052($8)
sw $12, 536($8)
addi $8, $8, 512
subi $9, $9, 1
j detalhe_blocoV
prox_bloco:
move $8, $10
beq $11, $0, bloco_acima
subi $8, $8, 3584
li $20, 0xae4c0f
li $9, 8
li $10, 7
addi $11, $11, -1
j bloco
bloco_acima:
beq $21, $0, fim
li $21, 0
subi $8, $8, 7712
li $20, 0xae4c0f
li $9, 8
li $10, 7
j bloco
fim:
li $2, 10
syscall