1024 lines
49 KiB
Plaintext
1024 lines
49 KiB
Plaintext
1 ;--------------------------------------------------------
|
|
2 ; File Created by SDCC : free open source ANSI-C Compiler
|
|
3 ; Version 4.0.0 #11528 (Linux)
|
|
4 ;--------------------------------------------------------
|
|
5 .module main
|
|
6 .optsdcc -mz80
|
|
7
|
|
8 ;--------------------------------------------------------
|
|
9 ; Public variables in this module
|
|
10 ;--------------------------------------------------------
|
|
11 .globl _main
|
|
12 .globl _loop
|
|
13 .globl _draw
|
|
14 .globl _render
|
|
15 .globl _new_shape
|
|
16 .globl _does_piece_fit
|
|
17 .globl _initialize_field
|
|
18 .globl _rotate
|
|
19 .globl _construct_shapes
|
|
20 .globl _random
|
|
21 .globl _put_string
|
|
22 .globl _counter
|
|
23 .globl _current_y
|
|
24 .globl _current_x
|
|
25 .globl _current_rotation
|
|
26 .globl _current_shape
|
|
27 .globl _seed
|
|
28 .globl _screen
|
|
29 .globl _field
|
|
30 .globl _tetromino
|
|
31 ;--------------------------------------------------------
|
|
32 ; special function registers
|
|
33 ;--------------------------------------------------------
|
|
0002 34 _cout = 0x0002
|
|
001F 35 _status = 0x001f
|
|
001E 36 _key = 0x001e
|
|
37 ;--------------------------------------------------------
|
|
38 ; ram data
|
|
39 ;--------------------------------------------------------
|
|
40 .area _DATA
|
|
0000 41 _tetromino::
|
|
0000 42 .ds 14
|
|
000E 43 _field::
|
|
000E 44 .ds 216
|
|
00E6 45 _screen::
|
|
00E6 46 .ds 216
|
|
01BE 47 _seed::
|
|
01BE 48 .ds 1
|
|
49 ;--------------------------------------------------------
|
|
50 ; ram data
|
|
51 ;--------------------------------------------------------
|
|
52 .area _INITIALIZED
|
|
0000 53 _current_shape::
|
|
0000 54 .ds 1
|
|
0001 55 _current_rotation::
|
|
0001 56 .ds 1
|
|
0002 57 _current_x::
|
|
0002 58 .ds 1
|
|
0003 59 _current_y::
|
|
0003 60 .ds 1
|
|
0004 61 _counter::
|
|
0004 62 .ds 1
|
|
63 ;--------------------------------------------------------
|
|
64 ; absolute external ram data
|
|
65 ;--------------------------------------------------------
|
|
66 .area _DABS (ABS)
|
|
67 ;--------------------------------------------------------
|
|
68 ; global & static initialisations
|
|
69 ;--------------------------------------------------------
|
|
70 .area _HOME
|
|
71 .area _GSINIT
|
|
72 .area _GSFINAL
|
|
73 .area _GSINIT
|
|
74 ;--------------------------------------------------------
|
|
75 ; Home
|
|
76 ;--------------------------------------------------------
|
|
77 .area _HOME
|
|
78 .area _HOME
|
|
79 ;--------------------------------------------------------
|
|
80 ; code
|
|
81 ;--------------------------------------------------------
|
|
82 .area _CODE
|
|
83 ;src/main.c:12: void construct_shapes() {
|
|
84 ; ---------------------------------
|
|
85 ; Function construct_shapes
|
|
86 ; ---------------------------------
|
|
0000 87 _construct_shapes::
|
|
88 ;src/main.c:13: tetromino[0] = "..X."
|
|
0000 21r2Br00 [10] 89 ld hl, #___str_0
|
|
0003 22r00r00 [16] 90 ld (_tetromino), hl
|
|
91 ;src/main.c:18: tetromino[1] = "..X."
|
|
0006 21r3Cr00 [10] 92 ld hl, #___str_1
|
|
0009 22r02r00 [16] 93 ld ((_tetromino + 0x0002)), hl
|
|
94 ;src/main.c:23: tetromino[2] = ".X.."
|
|
000C 21r4Dr00 [10] 95 ld hl, #___str_2
|
|
000F 22r04r00 [16] 96 ld ((_tetromino + 0x0004)), hl
|
|
97 ;src/main.c:28: tetromino[3] = "..X."
|
|
0012 21r5Er00 [10] 98 ld hl, #___str_3
|
|
0015 22r06r00 [16] 99 ld ((_tetromino + 0x0006)), hl
|
|
100 ;src/main.c:33: tetromino[4] = ".X.."
|
|
0018 21r6Fr00 [10] 101 ld hl, #___str_4
|
|
001B 22r08r00 [16] 102 ld ((_tetromino + 0x0008)), hl
|
|
103 ;src/main.c:38: tetromino[5] = "..X."
|
|
001E 21r80r00 [10] 104 ld hl, #___str_5
|
|
0021 22r0Ar00 [16] 105 ld ((_tetromino + 0x000a)), hl
|
|
106 ;src/main.c:43: tetromino[6] = "...."
|
|
0024 21r91r00 [10] 107 ld hl, #___str_6
|
|
0027 22r0Cr00 [16] 108 ld ((_tetromino + 0x000c)), hl
|
|
109 ;src/main.c:47: }
|
|
002A C9 [10] 110 ret
|
|
002B 111 ___str_0:
|
|
002B 2E 2E 58 2E 2E 2E 112 .ascii "..X...X...X...X."
|
|
58 2E 2E 2E 58 2E
|
|
2E 2E 58 2E
|
|
003B 00 113 .db 0x00
|
|
003C 114 ___str_1:
|
|
003C 2E 2E 58 2E 2E 58 115 .ascii "..X..XX..X......"
|
|
58 2E 2E 58 2E 2E
|
|
2E 2E 2E 2E
|
|
004C 00 116 .db 0x00
|
|
004D 117 ___str_2:
|
|
004D 2E 58 2E 2E 2E 58 118 .ascii ".X...XX...X....."
|
|
58 2E 2E 2E 58 2E
|
|
2E 2E 2E 2E
|
|
005D 00 119 .db 0x00
|
|
005E 120 ___str_3:
|
|
005E 2E 2E 58 2E 2E 2E 121 .ascii "..X...X..XX....."
|
|
58 2E 2E 58 58 2E
|
|
2E 2E 2E 2E
|
|
006E 00 122 .db 0x00
|
|
006F 123 ___str_4:
|
|
006F 2E 58 2E 2E 2E 58 124 .ascii ".X...X...XX....."
|
|
2E 2E 2E 58 58 2E
|
|
2E 2E 2E 2E
|
|
007F 00 125 .db 0x00
|
|
0080 126 ___str_5:
|
|
0080 2E 2E 58 2E 2E 58 127 .ascii "..X..XX...X....."
|
|
58 2E 2E 2E 58 2E
|
|
2E 2E 2E 2E
|
|
0090 00 128 .db 0x00
|
|
0091 129 ___str_6:
|
|
0091 2E 2E 2E 2E 2E 58 130 .ascii ".....XX..XX....."
|
|
58 2E 2E 58 58 2E
|
|
2E 2E 2E 2E
|
|
00A1 00 131 .db 0x00
|
|
132 ;src/main.c:49: uint8_t rotate(uint8_t x, uint8_t y, uint8_t r) {
|
|
133 ; ---------------------------------
|
|
134 ; Function rotate
|
|
135 ; ---------------------------------
|
|
00A2 136 _rotate::
|
|
00A2 DD E5 [15] 137 push ix
|
|
00A4 DD 21 00 00 [14] 138 ld ix,#0
|
|
00A8 DD 39 [15] 139 add ix,sp
|
|
00AA 3B [ 6] 140 dec sp
|
|
141 ;src/main.c:52: return y*4+x;
|
|
00AB DD 7E 05 [19] 142 ld a, 5 (ix)
|
|
00AE DD 4E 04 [19] 143 ld c, 4 (ix)
|
|
00B1 87 [ 4] 144 add a, a
|
|
00B2 87 [ 4] 145 add a, a
|
|
00B3 6F [ 4] 146 ld l, a
|
|
147 ;src/main.c:50: switch (r) {
|
|
00B4 DD 7E 06 [19] 148 ld a, 6 (ix)
|
|
00B7 B7 [ 4] 149 or a, a
|
|
00B8 28 21 [12] 150 jr Z,00101$
|
|
151 ;src/main.c:54: return 12 + y - x*4;
|
|
00BA DD 5E 05 [19] 152 ld e, 5 (ix)
|
|
00BD DD 7E 04 [19] 153 ld a, 4 (ix)
|
|
00C0 87 [ 4] 154 add a, a
|
|
00C1 87 [ 4] 155 add a, a
|
|
00C2 DD 77 FF [19] 156 ld -1 (ix), a
|
|
157 ;src/main.c:50: switch (r) {
|
|
00C5 DD 7E 06 [19] 158 ld a, 6 (ix)
|
|
00C8 3D [ 4] 159 dec a
|
|
00C9 28 13 [12] 160 jr Z,00102$
|
|
00CB DD 7E 06 [19] 161 ld a, 6 (ix)
|
|
00CE D6 02 [ 7] 162 sub a, #0x02
|
|
00D0 28 15 [12] 163 jr Z,00103$
|
|
00D2 DD 7E 06 [19] 164 ld a, 6 (ix)
|
|
00D5 D6 03 [ 7] 165 sub a, #0x03
|
|
00D7 28 15 [12] 166 jr Z,00104$
|
|
00D9 18 1C [12] 167 jr 00105$
|
|
168 ;src/main.c:51: case 0:
|
|
00DB 169 00101$:
|
|
170 ;src/main.c:52: return y*4+x;
|
|
00DB 09 [11] 171 add hl, bc
|
|
00DC 18 1B [12] 172 jr 00106$
|
|
173 ;src/main.c:53: case 1:
|
|
00DE 174 00102$:
|
|
175 ;src/main.c:54: return 12 + y - x*4;
|
|
00DE 7B [ 4] 176 ld a, e
|
|
00DF C6 0C [ 7] 177 add a, #0x0c
|
|
00E1 DD 96 FF [19] 178 sub a, -1 (ix)
|
|
00E4 6F [ 4] 179 ld l, a
|
|
00E5 18 12 [12] 180 jr 00106$
|
|
181 ;src/main.c:55: case 2:
|
|
00E7 182 00103$:
|
|
183 ;src/main.c:56: return 15 - y*4 - x;
|
|
00E7 3E 0F [ 7] 184 ld a, #0x0f
|
|
00E9 95 [ 4] 185 sub a, l
|
|
00EA 91 [ 4] 186 sub a, c
|
|
00EB 6F [ 4] 187 ld l, a
|
|
00EC 18 0B [12] 188 jr 00106$
|
|
189 ;src/main.c:57: case 3:
|
|
00EE 190 00104$:
|
|
191 ;src/main.c:58: return 3 - y + x*4;
|
|
00EE 3E 03 [ 7] 192 ld a, #0x03
|
|
00F0 93 [ 4] 193 sub a, e
|
|
00F1 DD 86 FF [19] 194 add a, -1 (ix)
|
|
00F4 6F [ 4] 195 ld l, a
|
|
00F5 18 02 [12] 196 jr 00106$
|
|
197 ;src/main.c:59: }
|
|
00F7 198 00105$:
|
|
199 ;src/main.c:60: return 0;
|
|
00F7 2E 00 [ 7] 200 ld l, #0x00
|
|
00F9 201 00106$:
|
|
202 ;src/main.c:61: }
|
|
00F9 33 [ 6] 203 inc sp
|
|
00FA DD E1 [14] 204 pop ix
|
|
00FC C9 [10] 205 ret
|
|
206 ;src/main.c:63: void initialize_field() {
|
|
207 ; ---------------------------------
|
|
208 ; Function initialize_field
|
|
209 ; ---------------------------------
|
|
00FD 210 _initialize_field::
|
|
00FD DD E5 [15] 211 push ix
|
|
00FF DD 21 00 00 [14] 212 ld ix,#0
|
|
0103 DD 39 [15] 213 add ix,sp
|
|
0105 F5 [11] 214 push af
|
|
0106 3B [ 6] 215 dec sp
|
|
216 ;src/main.c:64: for (uint8_t y = 0; y < HEIGHT; ++y) {
|
|
0107 0E 00 [ 7] 217 ld c, #0x00
|
|
0109 218 00107$:
|
|
219 ;src/main.c:65: for (uint8_t x = 0; x < WIDTH; ++x) {
|
|
0109 79 [ 4] 220 ld a,c
|
|
010A FE 12 [ 7] 221 cp a,#0x12
|
|
010C 30 55 [12] 222 jr NC,00109$
|
|
010E D6 11 [ 7] 223 sub a, #0x11
|
|
0110 3E 01 [ 7] 224 ld a, #0x01
|
|
0112 28 01 [12] 225 jr Z,00153$
|
|
0114 AF [ 4] 226 xor a, a
|
|
0115 227 00153$:
|
|
0115 DD 77 FD [19] 228 ld -3 (ix), a
|
|
0118 1E 00 [ 7] 229 ld e, #0x00
|
|
011A 230 00104$:
|
|
011A 7B [ 4] 231 ld a, e
|
|
011B D6 0C [ 7] 232 sub a, #0x0c
|
|
011D 30 41 [12] 233 jr NC,00108$
|
|
234 ;src/main.c:66: field[y*WIDTH + x] = (x == 0 || x == WIDTH - 1 || y == HEIGHT-1) ? 9 : 0;
|
|
011F 69 [ 4] 235 ld l, c
|
|
0120 26 00 [ 7] 236 ld h, #0x00
|
|
0122 D5 [11] 237 push de
|
|
0123 5D [ 4] 238 ld e, l
|
|
0124 54 [ 4] 239 ld d, h
|
|
0125 29 [11] 240 add hl, hl
|
|
0126 19 [11] 241 add hl, de
|
|
0127 29 [11] 242 add hl, hl
|
|
0128 29 [11] 243 add hl, hl
|
|
0129 D1 [10] 244 pop de
|
|
012A 7B [ 4] 245 ld a, e
|
|
012B 16 00 [ 7] 246 ld d, #0x00
|
|
012D 85 [ 4] 247 add a, l
|
|
012E 6F [ 4] 248 ld l, a
|
|
012F 7A [ 4] 249 ld a, d
|
|
0130 8C [ 4] 250 adc a, h
|
|
0131 67 [ 4] 251 ld h, a
|
|
0132 7D [ 4] 252 ld a, l
|
|
0133 C6r0E [ 7] 253 add a, #<(_field)
|
|
0135 DD 77 FE [19] 254 ld -2 (ix), a
|
|
0138 7C [ 4] 255 ld a, h
|
|
0139 CEs00 [ 7] 256 adc a, #>(_field)
|
|
013B DD 77 FF [19] 257 ld -1 (ix), a
|
|
013E 7B [ 4] 258 ld a, e
|
|
013F B7 [ 4] 259 or a, a
|
|
0140 28 0B [12] 260 jr Z,00114$
|
|
0142 7B [ 4] 261 ld a, e
|
|
0143 D6 0B [ 7] 262 sub a, #0x0b
|
|
0145 28 06 [12] 263 jr Z,00114$
|
|
0147 DD CB FD 46 [20] 264 bit 0, -3 (ix)
|
|
014B 28 05 [12] 265 jr Z,00111$
|
|
014D 266 00114$:
|
|
014D 21 09 00 [10] 267 ld hl, #0x0009
|
|
0150 18 03 [12] 268 jr 00112$
|
|
0152 269 00111$:
|
|
0152 21 00 00 [10] 270 ld hl, #0x0000
|
|
0155 271 00112$:
|
|
0155 7D [ 4] 272 ld a, l
|
|
0156 DD 6E FE [19] 273 ld l, -2 (ix)
|
|
0159 DD 66 FF [19] 274 ld h, -1 (ix)
|
|
015C 77 [ 7] 275 ld (hl), a
|
|
276 ;src/main.c:65: for (uint8_t x = 0; x < WIDTH; ++x) {
|
|
015D 1C [ 4] 277 inc e
|
|
015E 18 BA [12] 278 jr 00104$
|
|
0160 279 00108$:
|
|
280 ;src/main.c:64: for (uint8_t y = 0; y < HEIGHT; ++y) {
|
|
0160 0C [ 4] 281 inc c
|
|
0161 18 A6 [12] 282 jr 00107$
|
|
0163 283 00109$:
|
|
284 ;src/main.c:69: }
|
|
0163 DD F9 [10] 285 ld sp, ix
|
|
0165 DD E1 [14] 286 pop ix
|
|
0167 C9 [10] 287 ret
|
|
288 ;src/main.c:71: uint8_t does_piece_fit(uint8_t shape, uint8_t rotation, uint8_t px, uint8_t py) {
|
|
289 ; ---------------------------------
|
|
290 ; Function does_piece_fit
|
|
291 ; ---------------------------------
|
|
0168 292 _does_piece_fit::
|
|
0168 DD E5 [15] 293 push ix
|
|
016A DD 21 00 00 [14] 294 ld ix,#0
|
|
016E DD 39 [15] 295 add ix,sp
|
|
0170 F5 [11] 296 push af
|
|
0171 F5 [11] 297 push af
|
|
298 ;src/main.c:72: for (uint8_t y = 0; y < 4; ++y) {
|
|
0172 0E 00 [ 7] 299 ld c, #0x00
|
|
0174 300 00116$:
|
|
0174 79 [ 4] 301 ld a, c
|
|
0175 D6 04 [ 7] 302 sub a, #0x04
|
|
0177 D2r1Er02 [10] 303 jp NC, 00111$
|
|
304 ;src/main.c:73: for (uint8_t x = 0; x < 4; ++x) {
|
|
017A DD 7E 07 [19] 305 ld a, 7 (ix)
|
|
017D 81 [ 4] 306 add a, c
|
|
017E DD 77 FC [19] 307 ld -4 (ix), a
|
|
0181 AF [ 4] 308 xor a, a
|
|
0182 DD 77 FF [19] 309 ld -1 (ix), a
|
|
0185 310 00113$:
|
|
0185 DD 7E FF [19] 311 ld a, -1 (ix)
|
|
0188 D6 04 [ 7] 312 sub a, #0x04
|
|
018A D2r1Ar02 [10] 313 jp NC, 00117$
|
|
314 ;src/main.c:75: uint8_t pi = rotate(x, y, rotation);
|
|
018D C5 [11] 315 push bc
|
|
018E DD 46 05 [19] 316 ld b, 5 (ix)
|
|
0191 C5 [11] 317 push bc
|
|
0192 DD 7E FF [19] 318 ld a, -1 (ix)
|
|
0195 F5 [11] 319 push af
|
|
0196 33 [ 6] 320 inc sp
|
|
0197 CDrA2r00 [17] 321 call _rotate
|
|
019A F1 [10] 322 pop af
|
|
019B 33 [ 6] 323 inc sp
|
|
019C C1 [10] 324 pop bc
|
|
019D DD 75 FD [19] 325 ld -3 (ix), l
|
|
326 ;src/main.c:78: uint8_t fi = (py + y) * WIDTH + px + x;
|
|
01A0 DD 7E FC [19] 327 ld a, -4 (ix)
|
|
01A3 5F [ 4] 328 ld e, a
|
|
01A4 87 [ 4] 329 add a, a
|
|
01A5 83 [ 4] 330 add a, e
|
|
01A6 87 [ 4] 331 add a, a
|
|
01A7 87 [ 4] 332 add a, a
|
|
01A8 DD 46 06 [19] 333 ld b, 6 (ix)
|
|
01AB 80 [ 4] 334 add a, b
|
|
01AC DD 46 FF [19] 335 ld b, -1 (ix)
|
|
01AF 80 [ 4] 336 add a, b
|
|
01B0 DD 77 FE [19] 337 ld -2 (ix), a
|
|
338 ;src/main.c:80: if (px + x >= 0 && px + x < WIDTH) {
|
|
01B3 DD 5E 06 [19] 339 ld e, 6 (ix)
|
|
01B6 16 00 [ 7] 340 ld d, #0x00
|
|
01B8 DD 6E FF [19] 341 ld l, -1 (ix)
|
|
01BB 26 00 [ 7] 342 ld h, #0x00
|
|
01BD 19 [11] 343 add hl, de
|
|
01BE CB 7C [ 8] 344 bit 7, h
|
|
01C0 20 52 [12] 345 jr NZ,00114$
|
|
01C2 11 0C 80 [10] 346 ld de, #0x800c
|
|
01C5 29 [11] 347 add hl, hl
|
|
01C6 3F [ 4] 348 ccf
|
|
01C7 CB 1C [ 8] 349 rr h
|
|
01C9 CB 1D [ 8] 350 rr l
|
|
01CB ED 52 [15] 351 sbc hl, de
|
|
01CD 30 45 [12] 352 jr NC,00114$
|
|
353 ;src/main.c:81: if (py + y >= 0 && py + y < HEIGHT) {
|
|
01CF DD 5E 07 [19] 354 ld e, 7 (ix)
|
|
01D2 16 00 [ 7] 355 ld d, #0x00
|
|
01D4 69 [ 4] 356 ld l, c
|
|
01D5 26 00 [ 7] 357 ld h, #0x00
|
|
01D7 19 [11] 358 add hl, de
|
|
01D8 CB 7C [ 8] 359 bit 7, h
|
|
01DA 20 38 [12] 360 jr NZ,00114$
|
|
01DC 11 12 80 [10] 361 ld de, #0x8012
|
|
01DF 29 [11] 362 add hl, hl
|
|
01E0 3F [ 4] 363 ccf
|
|
01E1 CB 1C [ 8] 364 rr h
|
|
01E3 CB 1D [ 8] 365 rr l
|
|
01E5 ED 52 [15] 366 sbc hl, de
|
|
01E7 30 2B [12] 367 jr NC,00114$
|
|
368 ;src/main.c:83: if (tetromino[shape][pi] == 'X' && field[fi] != 0) {
|
|
01E9 DD 6E 04 [19] 369 ld l, 4 (ix)
|
|
01EC 26 00 [ 7] 370 ld h, #0x00
|
|
01EE 29 [11] 371 add hl, hl
|
|
01EF 11r00r00 [10] 372 ld de, #_tetromino
|
|
01F2 19 [11] 373 add hl, de
|
|
01F3 5E [ 7] 374 ld e, (hl)
|
|
01F4 23 [ 6] 375 inc hl
|
|
01F5 56 [ 7] 376 ld d, (hl)
|
|
01F6 DD 6E FD [19] 377 ld l, -3 (ix)
|
|
01F9 26 00 [ 7] 378 ld h, #0x00
|
|
01FB 19 [11] 379 add hl, de
|
|
01FC 7E [ 7] 380 ld a, (hl)
|
|
01FD D6 58 [ 7] 381 sub a, #0x58
|
|
01FF 20 13 [12] 382 jr NZ,00114$
|
|
0201 DD 7E FE [19] 383 ld a, -2 (ix)
|
|
0204 C6r0E [ 7] 384 add a, #<(_field)
|
|
0206 5F [ 4] 385 ld e, a
|
|
0207 3E 00 [ 7] 386 ld a, #0x00
|
|
0209 CEs00 [ 7] 387 adc a, #>(_field)
|
|
020B 57 [ 4] 388 ld d, a
|
|
020C 1A [ 7] 389 ld a, (de)
|
|
020D B7 [ 4] 390 or a, a
|
|
020E 28 04 [12] 391 jr Z,00114$
|
|
392 ;src/main.c:84: return 0;
|
|
0210 2E 00 [ 7] 393 ld l, #0x00
|
|
0212 18 0C [12] 394 jr 00118$
|
|
0214 395 00114$:
|
|
396 ;src/main.c:73: for (uint8_t x = 0; x < 4; ++x) {
|
|
0214 DD 34 FF [23] 397 inc -1 (ix)
|
|
0217 C3r85r01 [10] 398 jp 00113$
|
|
021A 399 00117$:
|
|
400 ;src/main.c:72: for (uint8_t y = 0; y < 4; ++y) {
|
|
021A 0C [ 4] 401 inc c
|
|
021B C3r74r01 [10] 402 jp 00116$
|
|
021E 403 00111$:
|
|
404 ;src/main.c:91: return 1;
|
|
021E 2E 01 [ 7] 405 ld l, #0x01
|
|
0220 406 00118$:
|
|
407 ;src/main.c:92: }
|
|
0220 DD F9 [10] 408 ld sp, ix
|
|
0222 DD E1 [14] 409 pop ix
|
|
0224 C9 [10] 410 ret
|
|
411 ;src/main.c:99: void new_shape() {
|
|
412 ; ---------------------------------
|
|
413 ; Function new_shape
|
|
414 ; ---------------------------------
|
|
0225 415 _new_shape::
|
|
416 ;src/main.c:100: do {
|
|
0225 417 00101$:
|
|
418 ;src/main.c:101: current_shape = random() & 0x07;
|
|
0225 CDr00r00 [17] 419 call _random
|
|
0228 7D [ 4] 420 ld a, l
|
|
0229 E6 07 [ 7] 421 and a, #0x07
|
|
022B 32r00r00 [13] 422 ld (_current_shape+0), a
|
|
423 ;src/main.c:102: } while (current_shape == 7);
|
|
022E 3Ar00r00 [13] 424 ld a,(#_current_shape + 0)
|
|
0231 D6 07 [ 7] 425 sub a, #0x07
|
|
0233 28 F0 [12] 426 jr Z,00101$
|
|
427 ;src/main.c:103: }
|
|
0235 C9 [10] 428 ret
|
|
429 ;src/main.c:105: void render() {
|
|
430 ; ---------------------------------
|
|
431 ; Function render
|
|
432 ; ---------------------------------
|
|
0236 433 _render::
|
|
0236 DD E5 [15] 434 push ix
|
|
0238 DD 21 00 00 [14] 435 ld ix,#0
|
|
023C DD 39 [15] 436 add ix,sp
|
|
023E F5 [11] 437 push af
|
|
023F F5 [11] 438 push af
|
|
439 ;src/main.c:107: for (uint8_t i = 0; i < WIDTH*HEIGHT; ++i) {
|
|
0240 01rE6r00 [10] 440 ld bc, #_screen+0
|
|
0243 11r0Er00 [10] 441 ld de, #_field+0
|
|
0246 AF [ 4] 442 xor a, a
|
|
0247 DD 77 FF [19] 443 ld -1 (ix), a
|
|
024A 444 00107$:
|
|
024A DD 7E FF [19] 445 ld a, -1 (ix)
|
|
024D D6 D8 [ 7] 446 sub a, #0xd8
|
|
024F 30 20 [12] 447 jr NC,00101$
|
|
448 ;src/main.c:108: screen[i] = field[i];
|
|
0251 79 [ 4] 449 ld a, c
|
|
0252 DD 86 FF [19] 450 add a, -1 (ix)
|
|
0255 DD 77 FD [19] 451 ld -3 (ix), a
|
|
0258 78 [ 4] 452 ld a, b
|
|
0259 CE 00 [ 7] 453 adc a, #0x00
|
|
025B DD 77 FE [19] 454 ld -2 (ix), a
|
|
025E DD 6E FF [19] 455 ld l, -1 (ix)
|
|
0261 26 00 [ 7] 456 ld h, #0x00
|
|
0263 19 [11] 457 add hl, de
|
|
0264 7E [ 7] 458 ld a, (hl)
|
|
0265 DD 6E FD [19] 459 ld l, -3 (ix)
|
|
0268 DD 66 FE [19] 460 ld h, -2 (ix)
|
|
026B 77 [ 7] 461 ld (hl), a
|
|
462 ;src/main.c:107: for (uint8_t i = 0; i < WIDTH*HEIGHT; ++i) {
|
|
026C DD 34 FF [23] 463 inc -1 (ix)
|
|
026F 18 D9 [12] 464 jr 00107$
|
|
0271 465 00101$:
|
|
466 ;src/main.c:112: for (uint8_t y = 0; y < 4; ++y) {
|
|
0271 1E 00 [ 7] 467 ld e, #0x00
|
|
0273 468 00113$:
|
|
0273 7B [ 4] 469 ld a, e
|
|
0274 D6 04 [ 7] 470 sub a, #0x04
|
|
0276 D2r1Br03 [10] 471 jp NC, 00115$
|
|
472 ;src/main.c:113: for (uint8_t x = 0; x < 4; ++x) {
|
|
0279 16 00 [ 7] 473 ld d, #0x00
|
|
027B 474 00110$:
|
|
027B 7A [ 4] 475 ld a, d
|
|
027C D6 04 [ 7] 476 sub a, #0x04
|
|
027E D2r17r03 [10] 477 jp NC, 00114$
|
|
478 ;src/main.c:114: if (tetromino[current_shape][rotate(x, y, current_rotation)] == 'X') {
|
|
0281 FD 21r00r00 [14] 479 ld iy, #_current_shape
|
|
0285 FD 6E 00 [19] 480 ld l, 0 (iy)
|
|
0288 26 00 [ 7] 481 ld h, #0x00
|
|
028A 29 [11] 482 add hl, hl
|
|
028B 3Er00 [ 7] 483 ld a, #<(_tetromino)
|
|
028D 85 [ 4] 484 add a, l
|
|
028E 6F [ 4] 485 ld l, a
|
|
028F 3Es00 [ 7] 486 ld a, #>(_tetromino)
|
|
0291 8C [ 4] 487 adc a, h
|
|
0292 67 [ 4] 488 ld h, a
|
|
0293 7E [ 7] 489 ld a, (hl)
|
|
0294 DD 77 FE [19] 490 ld -2 (ix), a
|
|
0297 23 [ 6] 491 inc hl
|
|
0298 7E [ 7] 492 ld a, (hl)
|
|
0299 DD 77 FF [19] 493 ld -1 (ix), a
|
|
029C C5 [11] 494 push bc
|
|
029D D5 [11] 495 push de
|
|
029E 3Ar01r00 [13] 496 ld a, (_current_rotation)
|
|
02A1 F5 [11] 497 push af
|
|
02A2 33 [ 6] 498 inc sp
|
|
02A3 7B [ 4] 499 ld a, e
|
|
02A4 F5 [11] 500 push af
|
|
02A5 33 [ 6] 501 inc sp
|
|
02A6 D5 [11] 502 push de
|
|
02A7 33 [ 6] 503 inc sp
|
|
02A8 CDrA2r00 [17] 504 call _rotate
|
|
02AB F1 [10] 505 pop af
|
|
02AC 33 [ 6] 506 inc sp
|
|
02AD 7D [ 4] 507 ld a, l
|
|
02AE D1 [10] 508 pop de
|
|
02AF C1 [10] 509 pop bc
|
|
02B0 DD 86 FE [19] 510 add a, -2 (ix)
|
|
02B3 6F [ 4] 511 ld l, a
|
|
02B4 3E 00 [ 7] 512 ld a, #0x00
|
|
02B6 DD 8E FF [19] 513 adc a, -1 (ix)
|
|
02B9 67 [ 4] 514 ld h, a
|
|
02BA 7E [ 7] 515 ld a, (hl)
|
|
02BB D6 58 [ 7] 516 sub a, #0x58
|
|
02BD 20 54 [12] 517 jr NZ,00111$
|
|
518 ;src/main.c:115: screen[(current_y+y)*WIDTH + current_x + x] = current_shape + 1;
|
|
02BF FD 21r03r00 [14] 519 ld iy, #_current_y
|
|
02C3 FD 6E 00 [19] 520 ld l, 0 (iy)
|
|
02C6 26 00 [ 7] 521 ld h, #0x00
|
|
02C8 DD 73 FE [19] 522 ld -2 (ix), e
|
|
02CB AF [ 4] 523 xor a, a
|
|
02CC DD 77 FF [19] 524 ld -1 (ix), a
|
|
02CF DD 7E FE [19] 525 ld a, -2 (ix)
|
|
02D2 85 [ 4] 526 add a, l
|
|
02D3 6F [ 4] 527 ld l, a
|
|
02D4 DD 7E FF [19] 528 ld a, -1 (ix)
|
|
02D7 8C [ 4] 529 adc a, h
|
|
02D8 67 [ 4] 530 ld h, a
|
|
02D9 D5 [11] 531 push de
|
|
02DA 5D [ 4] 532 ld e, l
|
|
02DB 54 [ 4] 533 ld d, h
|
|
02DC 29 [11] 534 add hl, hl
|
|
02DD 19 [11] 535 add hl, de
|
|
02DE 29 [11] 536 add hl, hl
|
|
02DF 29 [11] 537 add hl, hl
|
|
02E0 D1 [10] 538 pop de
|
|
02E1 E3 [19] 539 ex (sp), hl
|
|
02E2 3Ar02r00 [13] 540 ld a,(#_current_x + 0)
|
|
02E5 26 00 [ 7] 541 ld h, #0x00
|
|
02E7 DD 86 FC [19] 542 add a, -4 (ix)
|
|
02EA DD 77 FE [19] 543 ld -2 (ix), a
|
|
02ED 7C [ 4] 544 ld a, h
|
|
02EE DD 8E FD [19] 545 adc a, -3 (ix)
|
|
02F1 DD 77 FF [19] 546 ld -1 (ix), a
|
|
02F4 6A [ 4] 547 ld l, d
|
|
02F5 26 00 [ 7] 548 ld h, #0x00
|
|
02F7 7D [ 4] 549 ld a, l
|
|
02F8 DD 86 FE [19] 550 add a, -2 (ix)
|
|
02FB 6F [ 4] 551 ld l, a
|
|
02FC 7C [ 4] 552 ld a, h
|
|
02FD DD 8E FF [19] 553 adc a, -1 (ix)
|
|
0300 67 [ 4] 554 ld h, a
|
|
0301 09 [11] 555 add hl, bc
|
|
0302 DD 75 FE [19] 556 ld -2 (ix), l
|
|
0305 DD 74 FF [19] 557 ld -1 (ix), h
|
|
0308 3Ar00r00 [13] 558 ld a,(#_current_shape + 0)
|
|
030B 3C [ 4] 559 inc a
|
|
030C DD 6E FE [19] 560 ld l, -2 (ix)
|
|
030F DD 66 FF [19] 561 ld h, -1 (ix)
|
|
0312 77 [ 7] 562 ld (hl), a
|
|
0313 563 00111$:
|
|
564 ;src/main.c:113: for (uint8_t x = 0; x < 4; ++x) {
|
|
0313 14 [ 4] 565 inc d
|
|
0314 C3r7Br02 [10] 566 jp 00110$
|
|
0317 567 00114$:
|
|
568 ;src/main.c:112: for (uint8_t y = 0; y < 4; ++y) {
|
|
0317 1C [ 4] 569 inc e
|
|
0318 C3r73r02 [10] 570 jp 00113$
|
|
031B 571 00115$:
|
|
572 ;src/main.c:119: }
|
|
031B DD F9 [10] 573 ld sp, ix
|
|
031D DD E1 [14] 574 pop ix
|
|
031F C9 [10] 575 ret
|
|
576 ;src/main.c:122: void draw() {
|
|
577 ; ---------------------------------
|
|
578 ; Function draw
|
|
579 ; ---------------------------------
|
|
0320 580 _draw::
|
|
0320 DD E5 [15] 581 push ix
|
|
0322 DD 21 00 00 [14] 582 ld ix,#0
|
|
0326 DD 39 [15] 583 add ix,sp
|
|
0328 3B [ 6] 584 dec sp
|
|
585 ;src/main.c:124: put_string("\033[2;2H");
|
|
0329 21rB3r03 [10] 586 ld hl, #___str_8
|
|
032C E5 [11] 587 push hl
|
|
032D CDr00r00 [17] 588 call _put_string
|
|
0330 F1 [10] 589 pop af
|
|
590 ;src/main.c:125: for (uint8_t y = 0; y < HEIGHT*SCALE; ++y) {
|
|
0331 0E 00 [ 7] 591 ld c, #0x00
|
|
0333 592 00112$:
|
|
0333 79 [ 4] 593 ld a, c
|
|
0334 D6 12 [ 7] 594 sub a, #0x12
|
|
0336 30 6C [12] 595 jr NC,00114$
|
|
596 ;src/main.c:126: for (uint8_t x = 0; x < WIDTH*SCALE; ++x) {
|
|
0338 AF [ 4] 597 xor a, a
|
|
0339 DD 77 FF [19] 598 ld -1 (ix), a
|
|
033C 599 00109$:
|
|
033C DD 7E FF [19] 600 ld a, -1 (ix)
|
|
033F D6 0C [ 7] 601 sub a, #0x0c
|
|
0341 30 52 [12] 602 jr NC,00106$
|
|
603 ;src/main.c:127: uint8_t i = screen[y/SCALE*WIDTH + x/SCALE];
|
|
0343 59 [ 4] 604 ld e, c
|
|
0344 16 00 [ 7] 605 ld d, #0x00
|
|
0346 6B [ 4] 606 ld l, e
|
|
0347 62 [ 4] 607 ld h, d
|
|
0348 29 [11] 608 add hl, hl
|
|
0349 19 [11] 609 add hl, de
|
|
034A 29 [11] 610 add hl, hl
|
|
034B 29 [11] 611 add hl, hl
|
|
034C DD 5E FF [19] 612 ld e, -1 (ix)
|
|
034F 16 00 [ 7] 613 ld d, #0x00
|
|
0351 19 [11] 614 add hl, de
|
|
0352 11rE6r00 [10] 615 ld de, #_screen
|
|
0355 19 [11] 616 add hl, de
|
|
0356 5E [ 7] 617 ld e, (hl)
|
|
618 ;src/main.c:128: if (i >= 8) {
|
|
0357 7B [ 4] 619 ld a, e
|
|
0358 D6 08 [ 7] 620 sub a, #0x08
|
|
035A 38 12 [12] 621 jr C,00104$
|
|
622 ;src/main.c:129: cout = '\033';
|
|
035C 3E 1B [ 7] 623 ld a, #0x1b
|
|
035E D3 02 [11] 624 out (_cout), a
|
|
625 ;src/main.c:130: cout = '[';
|
|
0360 3E 5B [ 7] 626 ld a, #0x5b
|
|
0362 D3 02 [11] 627 out (_cout), a
|
|
628 ;src/main.c:131: cout = '0';
|
|
0364 3E 30 [ 7] 629 ld a, #0x30
|
|
0366 D3 02 [11] 630 out (_cout), a
|
|
631 ;src/main.c:132: cout = 'm';
|
|
0368 3E 6D [ 7] 632 ld a, #0x6d
|
|
036A D3 02 [11] 633 out (_cout), a
|
|
036C 18 19 [12] 634 jr 00105$
|
|
036E 635 00104$:
|
|
636 ;src/main.c:133: } else if (i > 0) {
|
|
036E 7B [ 4] 637 ld a, e
|
|
036F B7 [ 4] 638 or a, a
|
|
0370 28 15 [12] 639 jr Z,00105$
|
|
640 ;src/main.c:134: cout = '\033';
|
|
0372 3E 1B [ 7] 641 ld a, #0x1b
|
|
0374 D3 02 [11] 642 out (_cout), a
|
|
643 ;src/main.c:135: cout = '[';
|
|
0376 3E 5B [ 7] 644 ld a, #0x5b
|
|
0378 D3 02 [11] 645 out (_cout), a
|
|
646 ;src/main.c:136: cout = '3';
|
|
037A 3E 33 [ 7] 647 ld a, #0x33
|
|
037C D3 02 [11] 648 out (_cout), a
|
|
649 ;src/main.c:137: cout = 48+i;
|
|
037E 7B [ 4] 650 ld a, e
|
|
037F C6 30 [ 7] 651 add a, #0x30
|
|
0381 D3 02 [11] 652 out (_cout), a
|
|
653 ;src/main.c:138: cout = 'm';
|
|
0383 3E 6D [ 7] 654 ld a, #0x6d
|
|
0385 D3 02 [11] 655 out (_cout), a
|
|
0387 656 00105$:
|
|
657 ;src/main.c:140: char c = " RGOBMCW=#"[i];
|
|
0387 21rA8r03 [10] 658 ld hl, #___str_7
|
|
038A 16 00 [ 7] 659 ld d, #0x00
|
|
038C 19 [11] 660 add hl, de
|
|
038D 7E [ 7] 661 ld a, (hl)
|
|
038E D3 02 [11] 662 out (_cout), a
|
|
663 ;src/main.c:126: for (uint8_t x = 0; x < WIDTH*SCALE; ++x) {
|
|
0390 DD 34 FF [23] 664 inc -1 (ix)
|
|
0393 18 A7 [12] 665 jr 00109$
|
|
0395 666 00106$:
|
|
667 ;src/main.c:143: cout = '\n';
|
|
0395 3E 0A [ 7] 668 ld a, #0x0a
|
|
0397 D3 02 [11] 669 out (_cout), a
|
|
670 ;src/main.c:144: cout = '\r';
|
|
0399 3E 0D [ 7] 671 ld a, #0x0d
|
|
039B D3 02 [11] 672 out (_cout), a
|
|
673 ;src/main.c:145: cout = ' ';
|
|
039D 3E 20 [ 7] 674 ld a, #0x20
|
|
039F D3 02 [11] 675 out (_cout), a
|
|
676 ;src/main.c:125: for (uint8_t y = 0; y < HEIGHT*SCALE; ++y) {
|
|
03A1 0C [ 4] 677 inc c
|
|
03A2 18 8F [12] 678 jr 00112$
|
|
03A4 679 00114$:
|
|
680 ;src/main.c:147: }
|
|
03A4 33 [ 6] 681 inc sp
|
|
03A5 DD E1 [14] 682 pop ix
|
|
03A7 C9 [10] 683 ret
|
|
03A8 684 ___str_7:
|
|
03A8 20 52 47 4F 42 4D 685 .ascii " RGOBMCW=#"
|
|
43 57 3D 23
|
|
03B2 00 686 .db 0x00
|
|
03B3 687 ___str_8:
|
|
03B3 1B 688 .db 0x1b
|
|
03B4 5B 32 3B 32 48 689 .ascii "[2;2H"
|
|
03B9 00 690 .db 0x00
|
|
691 ;src/main.c:154: uint8_t loop() {
|
|
692 ; ---------------------------------
|
|
693 ; Function loop
|
|
694 ; ---------------------------------
|
|
03BA 695 _loop::
|
|
03BA DD E5 [15] 696 push ix
|
|
03BC DD 21 00 00 [14] 697 ld ix,#0
|
|
03C0 DD 39 [15] 698 add ix,sp
|
|
03C2 F5 [11] 699 push af
|
|
700 ;src/main.c:156: if (status & 1) {
|
|
03C3 DB 1F [11] 701 in a, (_status)
|
|
03C5 0F [ 4] 702 rrca
|
|
03C6 D2r6Cr04 [10] 703 jp NC,00116$
|
|
704 ;src/main.c:157: uint8_t nx = current_x;
|
|
03C9 3Ar02r00 [13] 705 ld a,(#_current_x + 0)
|
|
03CC DD 77 FE [19] 706 ld -2 (ix), a
|
|
707 ;src/main.c:158: uint8_t ny = current_y;
|
|
03CF 21r03r00 [10] 708 ld hl,#_current_y + 0
|
|
03D2 4E [ 7] 709 ld c, (hl)
|
|
710 ;src/main.c:159: uint8_t nr = current_rotation;
|
|
03D3 3Ar01r00 [13] 711 ld a,(#_current_rotation + 0)
|
|
03D6 DD 77 FF [19] 712 ld -1 (ix), a
|
|
713 ;src/main.c:161: switch (key) {
|
|
03D9 DB 1E [11] 714 in a, (_key)
|
|
03DB FE 03 [ 7] 715 cp a, #0x03
|
|
03DD 28 16 [12] 716 jr Z,00101$
|
|
03DF FE 61 [ 7] 717 cp a, #0x61
|
|
03E1 28 1F [12] 718 jr Z,00102$
|
|
03E3 FE 64 [ 7] 719 cp a, #0x64
|
|
03E5 28 20 [12] 720 jr Z,00103$
|
|
03E7 FE 72 [ 7] 721 cp a, #0x72
|
|
03E9 28 21 [12] 722 jr Z,00104$
|
|
03EB FE 73 [ 7] 723 cp a, #0x73
|
|
03ED 28 2D [12] 724 jr Z,00107$
|
|
03EF D6 77 [ 7] 725 sub a, #0x77
|
|
03F1 28 30 [12] 726 jr Z,00142$
|
|
03F3 18 4D [12] 727 jr 00112$
|
|
728 ;src/main.c:162: case 0x03:
|
|
03F5 729 00101$:
|
|
730 ;src/main.c:163: put_string("Exit!\n\r");
|
|
03F5 21r2Ar05 [10] 731 ld hl, #___str_9
|
|
03F8 E5 [11] 732 push hl
|
|
03F9 CDr00r00 [17] 733 call _put_string
|
|
03FC F1 [10] 734 pop af
|
|
735 ;src/main.c:164: return 0;
|
|
03FD 2E 00 [ 7] 736 ld l, #0x00
|
|
03FF C3r25r05 [10] 737 jp 00132$
|
|
738 ;src/main.c:167: case 'a':
|
|
0402 739 00102$:
|
|
740 ;src/main.c:168: nx--;
|
|
0402 DD 35 FE [23] 741 dec -2 (ix)
|
|
742 ;src/main.c:169: break;
|
|
0405 18 3B [12] 743 jr 00112$
|
|
744 ;src/main.c:172: case 'd':
|
|
0407 745 00103$:
|
|
746 ;src/main.c:173: nx++;
|
|
0407 DD 34 FE [23] 747 inc -2 (ix)
|
|
748 ;src/main.c:174: break;
|
|
040A 18 36 [12] 749 jr 00112$
|
|
750 ;src/main.c:177: case 'r':
|
|
040C 751 00104$:
|
|
752 ;src/main.c:178: nr++;
|
|
040C DD 34 FF [23] 753 inc -1 (ix)
|
|
754 ;src/main.c:179: if (nr == 4) {
|
|
040F DD 7E FF [19] 755 ld a, -1 (ix)
|
|
0412 D6 04 [ 7] 756 sub a, #0x04
|
|
0414 20 2C [12] 757 jr NZ,00112$
|
|
758 ;src/main.c:180: nr = 0;
|
|
0416 AF [ 4] 759 xor a, a
|
|
0417 DD 77 FF [19] 760 ld -1 (ix), a
|
|
761 ;src/main.c:182: break;
|
|
041A 18 26 [12] 762 jr 00112$
|
|
763 ;src/main.c:185: case 's':
|
|
041C 764 00107$:
|
|
765 ;src/main.c:186: counter = 0;
|
|
041C 21r04r00 [10] 766 ld hl,#_counter + 0
|
|
041F 36 00 [10] 767 ld (hl), #0x00
|
|
768 ;src/main.c:187: break;
|
|
0421 18 1F [12] 769 jr 00112$
|
|
770 ;src/main.c:191: while (does_piece_fit(current_shape, current_rotation, current_x, ++ny + 1));
|
|
0423 771 00142$:
|
|
0423 772 00109$:
|
|
0423 0C [ 4] 773 inc c
|
|
0424 79 [ 4] 774 ld a, c
|
|
0425 3C [ 4] 775 inc a
|
|
0426 C5 [11] 776 push bc
|
|
0427 F5 [11] 777 push af
|
|
0428 33 [ 6] 778 inc sp
|
|
0429 3Ar02r00 [13] 779 ld a, (_current_x)
|
|
042C F5 [11] 780 push af
|
|
042D 33 [ 6] 781 inc sp
|
|
042E 3Ar01r00 [13] 782 ld a, (_current_rotation)
|
|
0431 F5 [11] 783 push af
|
|
0432 33 [ 6] 784 inc sp
|
|
0433 3Ar00r00 [13] 785 ld a, (_current_shape)
|
|
0436 F5 [11] 786 push af
|
|
0437 33 [ 6] 787 inc sp
|
|
0438 CDr68r01 [17] 788 call _does_piece_fit
|
|
043B F1 [10] 789 pop af
|
|
043C F1 [10] 790 pop af
|
|
043D 7D [ 4] 791 ld a, l
|
|
043E C1 [10] 792 pop bc
|
|
043F B7 [ 4] 793 or a, a
|
|
0440 20 E1 [12] 794 jr NZ,00109$
|
|
795 ;src/main.c:193: }
|
|
0442 796 00112$:
|
|
797 ;src/main.c:195: if (does_piece_fit(current_shape, nr, nx, ny)) {
|
|
0442 C5 [11] 798 push bc
|
|
0443 79 [ 4] 799 ld a, c
|
|
0444 F5 [11] 800 push af
|
|
0445 33 [ 6] 801 inc sp
|
|
0446 DD 66 FE [19] 802 ld h, -2 (ix)
|
|
0449 DD 6E FF [19] 803 ld l, -1 (ix)
|
|
044C E5 [11] 804 push hl
|
|
044D 3Ar00r00 [13] 805 ld a, (_current_shape)
|
|
0450 F5 [11] 806 push af
|
|
0451 33 [ 6] 807 inc sp
|
|
0452 CDr68r01 [17] 808 call _does_piece_fit
|
|
0455 F1 [10] 809 pop af
|
|
0456 F1 [10] 810 pop af
|
|
0457 7D [ 4] 811 ld a, l
|
|
0458 C1 [10] 812 pop bc
|
|
0459 B7 [ 4] 813 or a, a
|
|
045A 28 10 [12] 814 jr Z,00116$
|
|
815 ;src/main.c:196: current_x = nx;
|
|
045C DD 7E FE [19] 816 ld a, -2 (ix)
|
|
045F 32r02r00 [13] 817 ld (#_current_x + 0),a
|
|
818 ;src/main.c:197: current_y = ny;
|
|
0462 21r03r00 [10] 819 ld hl,#_current_y + 0
|
|
0465 71 [ 7] 820 ld (hl), c
|
|
821 ;src/main.c:198: current_rotation = nr;
|
|
0466 DD 7E FF [19] 822 ld a, -1 (ix)
|
|
0469 32r01r00 [13] 823 ld (#_current_rotation + 0),a
|
|
046C 824 00116$:
|
|
825 ;src/main.c:203: if (counter == 0) {
|
|
046C 3Ar04r00 [13] 826 ld a,(#_counter + 0)
|
|
046F B7 [ 4] 827 or a, a
|
|
0470 C2r19r05 [10] 828 jp NZ, 00125$
|
|
829 ;src/main.c:204: if (does_piece_fit(current_shape, current_rotation, current_x, current_y+1)) {
|
|
0473 3Ar03r00 [13] 830 ld a,(#_current_y + 0)
|
|
0476 3C [ 4] 831 inc a
|
|
0477 F5 [11] 832 push af
|
|
0478 33 [ 6] 833 inc sp
|
|
0479 3Ar02r00 [13] 834 ld a, (_current_x)
|
|
047C F5 [11] 835 push af
|
|
047D 33 [ 6] 836 inc sp
|
|
047E 3Ar01r00 [13] 837 ld a, (_current_rotation)
|
|
0481 F5 [11] 838 push af
|
|
0482 33 [ 6] 839 inc sp
|
|
0483 3Ar00r00 [13] 840 ld a, (_current_shape)
|
|
0486 F5 [11] 841 push af
|
|
0487 33 [ 6] 842 inc sp
|
|
0488 CDr68r01 [17] 843 call _does_piece_fit
|
|
048B F1 [10] 844 pop af
|
|
048C F1 [10] 845 pop af
|
|
048D 7D [ 4] 846 ld a, l
|
|
048E B7 [ 4] 847 or a, a
|
|
048F 28 07 [12] 848 jr Z,00150$
|
|
849 ;src/main.c:205: current_y++;
|
|
0491 21r03r00 [10] 850 ld hl, #_current_y+0
|
|
0494 34 [11] 851 inc (hl)
|
|
0495 C3r14r05 [10] 852 jp 00123$
|
|
853 ;src/main.c:208: for (uint8_t y = 0; y < 4; ++y) {
|
|
0498 854 00150$:
|
|
0498 0E 00 [ 7] 855 ld c, #0x00
|
|
049A 856 00130$:
|
|
049A 79 [ 4] 857 ld a, c
|
|
049B D6 04 [ 7] 858 sub a, #0x04
|
|
049D 30 63 [12] 859 jr NC,00120$
|
|
860 ;src/main.c:209: for (uint8_t x = 0; x < 4; ++x) {
|
|
049F 06 00 [ 7] 861 ld b, #0x00
|
|
04A1 862 00127$:
|
|
04A1 78 [ 4] 863 ld a, b
|
|
04A2 D6 04 [ 7] 864 sub a, #0x04
|
|
04A4 30 59 [12] 865 jr NC,00131$
|
|
866 ;src/main.c:210: if (tetromino[current_shape][rotate(x, y, current_rotation)] == 'X') {
|
|
04A6 FD 21r00r00 [14] 867 ld iy, #_current_shape
|
|
04AA FD 6E 00 [19] 868 ld l, 0 (iy)
|
|
04AD 26 00 [ 7] 869 ld h, #0x00
|
|
04AF 29 [11] 870 add hl, hl
|
|
04B0 11r00r00 [10] 871 ld de, #_tetromino
|
|
04B3 19 [11] 872 add hl, de
|
|
04B4 5E [ 7] 873 ld e, (hl)
|
|
04B5 23 [ 6] 874 inc hl
|
|
04B6 56 [ 7] 875 ld d, (hl)
|
|
04B7 C5 [11] 876 push bc
|
|
04B8 D5 [11] 877 push de
|
|
04B9 3Ar01r00 [13] 878 ld a, (_current_rotation)
|
|
04BC F5 [11] 879 push af
|
|
04BD 33 [ 6] 880 inc sp
|
|
04BE 79 [ 4] 881 ld a, c
|
|
04BF F5 [11] 882 push af
|
|
04C0 33 [ 6] 883 inc sp
|
|
04C1 C5 [11] 884 push bc
|
|
04C2 33 [ 6] 885 inc sp
|
|
04C3 CDrA2r00 [17] 886 call _rotate
|
|
04C6 F1 [10] 887 pop af
|
|
04C7 33 [ 6] 888 inc sp
|
|
04C8 D1 [10] 889 pop de
|
|
04C9 C1 [10] 890 pop bc
|
|
04CA 26 00 [ 7] 891 ld h, #0x00
|
|
04CC 19 [11] 892 add hl, de
|
|
04CD 7E [ 7] 893 ld a, (hl)
|
|
04CE D6 58 [ 7] 894 sub a, #0x58
|
|
04D0 20 2A [12] 895 jr NZ,00128$
|
|
896 ;src/main.c:211: field[(current_y+y)*WIDTH + current_x + x] = current_shape + 1;
|
|
04D2 21r03r00 [10] 897 ld hl,#_current_y + 0
|
|
04D5 5E [ 7] 898 ld e, (hl)
|
|
04D6 16 00 [ 7] 899 ld d, #0x00
|
|
04D8 69 [ 4] 900 ld l, c
|
|
04D9 26 00 [ 7] 901 ld h, #0x00
|
|
04DB 19 [11] 902 add hl, de
|
|
04DC 5D [ 4] 903 ld e, l
|
|
04DD 54 [ 4] 904 ld d, h
|
|
04DE 29 [11] 905 add hl, hl
|
|
04DF 19 [11] 906 add hl, de
|
|
04E0 29 [11] 907 add hl, hl
|
|
04E1 29 [11] 908 add hl, hl
|
|
04E2 EB [ 4] 909 ex de, hl
|
|
04E3 FD 21r02r00 [14] 910 ld iy, #_current_x
|
|
04E7 FD 6E 00 [19] 911 ld l, 0 (iy)
|
|
04EA 26 00 [ 7] 912 ld h, #0x00
|
|
04EC 19 [11] 913 add hl, de
|
|
04ED 58 [ 4] 914 ld e, b
|
|
04EE 16 00 [ 7] 915 ld d, #0x00
|
|
04F0 19 [11] 916 add hl, de
|
|
04F1 EB [ 4] 917 ex de, hl
|
|
04F2 21r0Er00 [10] 918 ld hl, #_field
|
|
04F5 19 [11] 919 add hl, de
|
|
04F6 EB [ 4] 920 ex de, hl
|
|
04F7 3Ar00r00 [13] 921 ld a,(#_current_shape + 0)
|
|
04FA 3C [ 4] 922 inc a
|
|
04FB 12 [ 7] 923 ld (de), a
|
|
04FC 924 00128$:
|
|
925 ;src/main.c:209: for (uint8_t x = 0; x < 4; ++x) {
|
|
04FC 04 [ 4] 926 inc b
|
|
04FD 18 A2 [12] 927 jr 00127$
|
|
04FF 928 00131$:
|
|
929 ;src/main.c:208: for (uint8_t y = 0; y < 4; ++y) {
|
|
04FF 0C [ 4] 930 inc c
|
|
0500 18 98 [12] 931 jr 00130$
|
|
0502 932 00120$:
|
|
933 ;src/main.c:216: new_shape();
|
|
0502 CDr25r02 [17] 934 call _new_shape
|
|
935 ;src/main.c:217: current_y = 0;
|
|
0505 21r03r00 [10] 936 ld hl,#_current_y + 0
|
|
0508 36 00 [10] 937 ld (hl), #0x00
|
|
938 ;src/main.c:218: current_x = WIDTH/2;
|
|
050A 21r02r00 [10] 939 ld hl,#_current_x + 0
|
|
050D 36 06 [10] 940 ld (hl), #0x06
|
|
941 ;src/main.c:219: current_rotation = 0;
|
|
050F 21r01r00 [10] 942 ld hl,#_current_rotation + 0
|
|
0512 36 00 [10] 943 ld (hl), #0x00
|
|
0514 944 00123$:
|
|
945 ;src/main.c:221: counter = SPEED;
|
|
0514 21r04r00 [10] 946 ld hl,#_counter + 0
|
|
0517 36 02 [10] 947 ld (hl), #0x02
|
|
0519 948 00125$:
|
|
949 ;src/main.c:224: counter--;
|
|
0519 21r04r00 [10] 950 ld hl, #_counter+0
|
|
051C 35 [11] 951 dec (hl)
|
|
952 ;src/main.c:226: render();
|
|
051D CDr36r02 [17] 953 call _render
|
|
954 ;src/main.c:227: draw();
|
|
0520 CDr20r03 [17] 955 call _draw
|
|
956 ;src/main.c:229: return 1;
|
|
0523 2E 01 [ 7] 957 ld l, #0x01
|
|
0525 958 00132$:
|
|
959 ;src/main.c:230: }
|
|
0525 DD F9 [10] 960 ld sp, ix
|
|
0527 DD E1 [14] 961 pop ix
|
|
0529 C9 [10] 962 ret
|
|
052A 963 ___str_9:
|
|
052A 45 78 69 74 21 964 .ascii "Exit!"
|
|
052F 0A 965 .db 0x0a
|
|
0530 0D 966 .db 0x0d
|
|
0531 00 967 .db 0x00
|
|
968 ;src/main.c:234: void main() {
|
|
969 ; ---------------------------------
|
|
970 ; Function main
|
|
971 ; ---------------------------------
|
|
0532 972 _main::
|
|
973 ;src/main.c:235: construct_shapes();
|
|
0532 CDr00r00 [17] 974 call _construct_shapes
|
|
975 ;src/main.c:236: initialize_field();
|
|
0535 CDrFDr00 [17] 976 call _initialize_field
|
|
977 ;src/main.c:239: new_shape();
|
|
0538 CDr25r02 [17] 978 call _new_shape
|
|
979 ;src/main.c:242: put_string("\033[2J");
|
|
053B 21r4Br05 [10] 980 ld hl, #___str_10
|
|
053E E5 [11] 981 push hl
|
|
053F CDr00r00 [17] 982 call _put_string
|
|
0542 F1 [10] 983 pop af
|
|
984 ;src/main.c:246: while (loop());
|
|
0543 985 00101$:
|
|
0543 CDrBAr03 [17] 986 call _loop
|
|
0546 7D [ 4] 987 ld a, l
|
|
0547 B7 [ 4] 988 or a, a
|
|
0548 20 F9 [12] 989 jr NZ,00101$
|
|
990 ;src/main.c:247: }
|
|
054A C9 [10] 991 ret
|
|
054B 992 ___str_10:
|
|
054B 1B 993 .db 0x1b
|
|
054C 5B 32 4A 994 .ascii "[2J"
|
|
054F 00 995 .db 0x00
|
|
996 .area _CODE
|
|
997 .area _INITIALIZER
|
|
0000 998 __xinit__current_shape:
|
|
0000 00 999 .db #0x00 ; 0
|
|
0001 1000 __xinit__current_rotation:
|
|
0001 00 1001 .db #0x00 ; 0
|
|
0002 1002 __xinit__current_x:
|
|
0002 06 1003 .db #0x06 ; 6
|
|
0003 1004 __xinit__current_y:
|
|
0003 00 1005 .db #0x00 ; 0
|
|
0004 1006 __xinit__counter:
|
|
0004 02 1007 .db #0x02 ; 2
|
|
1008 .area _CABS (ABS)
|