1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-02 09:29:35 +00:00

Added next piece

This commit is contained in:
jespergravgaard 2019-02-10 21:10:40 +01:00
parent bfce6bffd1
commit 7f78991374
11 changed files with 10911 additions and 8994 deletions

View File

@ -171,8 +171,12 @@ align($40) byte[4*4*4] PIECE_I = {
// The different pieces
word[] PIECES = { (word)PIECE_T, (word)PIECE_S, (word)PIECE_Z, (word)PIECE_J, (word)PIECE_O, (word)PIECE_I, (word)PIECE_L };
// The chars to use for the different pieces
byte[] PIECES_CHARS = { $64, $65, $a5, $65, $64, $64, $a5 };
// The chars to use for the different pieces - when inside the playing area
byte[] PIECES_CHARS = { $65, $66, $a6, $66, $65, $65, $a6 };
// The chars to use for the different pieces - when outside the playing area (eg. the next area).
byte[] PIECES_NEXT_CHARS = { $63, $64, $a4, $64, $63, $63, $a4 };
// The initial X/Y for each piece
byte[] PIECES_START_X = { 4, 4, 4, 4, 4, 4, 4 };

View File

@ -11,6 +11,9 @@ byte*[PLAYFIELD_LINES] playfield_lines;
// Indixes into the playfield for each playfield line
byte[PLAYFIELD_LINES+1] playfield_lines_idx;
// The index of the next moving piece. (0-6)
byte next_piece_idx = 0;
// The current moving piece. Points to the start of the piece definition.
byte* current_piece = 0;
@ -219,21 +222,28 @@ void play_lock_current() {
}
// Spawn a new piece
// Moves the next piece into the current and spawns a new next piece
void play_spawn_current() {
// Move next piece into current
byte current_piece_idx = next_piece_idx;
current_piece = PIECES[current_piece_idx<<1];
current_piece_char = PIECES_CHARS[current_piece_idx];
current_orientation = 0;
current_piece_gfx = current_piece + current_orientation;
current_xpos = PIECES_START_X[current_piece_idx];
current_ypos = PIECES_START_Y[current_piece_idx];
if(play_collision(current_xpos,current_ypos,current_orientation)==COLLISION_PLAYFIELD) {
game_over = 1;
}
// Spawn a new next piece
// Pick a random piece (0-6)
byte piece_idx = 7;
while(piece_idx==7) {
piece_idx = sid_rnd()&7;
}
current_piece = PIECES[piece_idx<<1];
current_piece_char = PIECES_CHARS[piece_idx];
current_orientation = 0;
current_piece_gfx = current_piece + current_orientation;
current_xpos = PIECES_START_X[piece_idx];
current_ypos = PIECES_START_Y[piece_idx];
if(play_collision(current_xpos,current_ypos,current_orientation)==COLLISION_PLAYFIELD) {
game_over = 1;
}
next_piece_idx = piece_idx;
}
// Look through the playfield for lines - and remove any lines found

View File

@ -176,3 +176,32 @@ void render_moving() {
}
}
// Render the next tetromino in the "next" area
void render_next() {
// Find the screen area
word next_area_offset = 40*12 + 24 + 4;
byte* screen_next_area;
if(render_screen_render==0) {
screen_next_area = PLAYFIELD_SCREEN_1+next_area_offset;
} else {
screen_next_area = PLAYFIELD_SCREEN_2+next_area_offset;
}
// Render the next piece
byte* next_piece_gfx = PIECES[next_piece_idx<<1];
byte next_piece_char = PIECES_NEXT_CHARS[next_piece_idx];
for(byte l:0..3) {
for(byte c:0..3) {
byte cell = *next_piece_gfx++;
if(cell!=0) {
*screen_next_area = next_piece_char;
} else {
*screen_next_area = 0;
}
screen_next_area++;
}
screen_next_area += 36;
}
}

View File

@ -18,9 +18,12 @@ void main() {
sprites_init();
sprites_irq_init();
play_init();
// Spawn twice to spawn both current & next
play_spawn_current();
play_spawn_current();
render_playfield();
render_moving();
render_next();
while(true) {
// Wait for a frame to pass
while(*RASTER!=$ff) {}
@ -41,6 +44,7 @@ void main() {
if(render!=0) {
render_playfield();
render_moving();
render_next();
render_score();
render_screen_swap();
}

View File

@ -76,41 +76,42 @@
.label PLAYFIELD_SPRITE_PTRS_2 = PLAYFIELD_SCREEN_2+SPRITE_PTRS
.const IRQ_RASTER_FIRST = SPRITES_FIRST_YPOS+$13
.const toSpritePtr1_return = PLAYFIELD_SPRITES>>6
.label keyboard_events_size = $22
.label render_screen_showing = $24
.label irq_raster_next = $23
.label irq_sprite_ypos = $25
.label irq_sprite_ptr = $26
.label irq_cnt = $27
.label keyboard_events_size = $23
.label render_screen_showing = $25
.label irq_raster_next = $24
.label irq_sprite_ypos = $26
.label irq_sprite_ptr = $27
.label irq_cnt = $28
.label current_movedown_slow = $18
.label current_ypos = $10
.label current_xpos = $20
.label current_orientation = $1d
.label current_piece_gfx = $1e
.label current_piece_char = $1c
.label level_bcd = $19
.label current_piece = $1a
.label game_over = $22
.label next_piece_idx = $21
.label level = $17
.label render_screen_render = 3
.label render_screen_show = 2
.label current_movedown_counter = 4
.label lines_bcd = $11
.label score_bcd = $13
.label current_piece = $1a
.label current_piece_char = $1c
.label game_over = $21
.label current_piece_16 = 5
.label render_screen_render_30 = 9
.label current_xpos_57 = $a
.label current_piece_gfx_62 = 5
.label render_screen_render_64 = 9
.label current_xpos_124 = $a
.label current_xpos_125 = $a
.label current_piece_gfx_114 = 5
.label current_piece_gfx_115 = 5
.label current_piece_90 = 5
.label current_piece_91 = 5
.label current_piece_92 = 5
.label current_piece_93 = 5
.label current_piece_94 = 5
.label current_piece_17 = 5
.label render_screen_render_33 = 9
.label current_xpos_58 = $a
.label current_piece_gfx_63 = 5
.label render_screen_render_69 = 9
.label current_xpos_132 = $a
.label current_xpos_133 = $a
.label current_piece_gfx_122 = 5
.label current_piece_gfx_123 = 5
.label current_piece_98 = 5
.label current_piece_99 = 5
.label current_piece_100 = 5
.label current_piece_101 = 5
.label current_piece_102 = 5
bbegin:
lda #0
sta render_screen_showing
@ -132,21 +133,26 @@ main: {
jsr play_init
lda #0
sta game_over
sta next_piece_idx
jsr play_spawn_current
jsr play_spawn_current
ldx #$40
jsr render_playfield
ldy current_ypos
lda current_xpos
sta current_xpos_124
sta current_xpos_132
lda current_piece_gfx
sta current_piece_gfx_114
sta current_piece_gfx_122
lda current_piece_gfx+1
sta current_piece_gfx_114+1
sta current_piece_gfx_122+1
ldx current_piece_char
lda #$40
sta render_screen_render_30
sta render_screen_render_33
jsr render_moving
ldy play_spawn_current._3
ldy play_spawn_current.piece_idx
lda #$40
jsr render_next
ldy play_spawn_current._0
lda PIECES,y
sta current_piece
lda PIECES+1,y
@ -190,15 +196,18 @@ main: {
jsr render_playfield
ldy current_ypos
lda render_screen_render
sta render_screen_render_64
sta render_screen_render_69
lda current_xpos
sta current_xpos_125
sta current_xpos_133
lda current_piece_gfx
sta current_piece_gfx_115
sta current_piece_gfx_123
lda current_piece_gfx+1
sta current_piece_gfx_115+1
sta current_piece_gfx_123+1
ldx current_piece_char
jsr render_moving
lda render_screen_render
ldy next_piece_idx
jsr render_next
jsr render_score
jsr render_screen_swap
jmp b4
@ -318,6 +327,76 @@ render_bcd: {
!:
rts
}
render_next: {
.const next_area_offset = $28*$c+$18+4
.label next_piece_char = $a
.label next_piece_gfx = 5
.label screen_next_area = 7
.label l = 9
cmp #0
beq b1
lda #<PLAYFIELD_SCREEN_2+next_area_offset
sta screen_next_area
lda #>PLAYFIELD_SCREEN_2+next_area_offset
sta screen_next_area+1
jmp b2
b1:
lda #<PLAYFIELD_SCREEN_1+next_area_offset
sta screen_next_area
lda #>PLAYFIELD_SCREEN_1+next_area_offset
sta screen_next_area+1
b2:
tya
asl
tax
lda PIECES_NEXT_CHARS,y
sta next_piece_char
lda PIECES,x
sta next_piece_gfx
lda PIECES+1,x
sta next_piece_gfx+1
lda #0
sta l
b3:
ldx #0
b4:
ldy #0
lda (next_piece_gfx),y
inc next_piece_gfx
bne !+
inc next_piece_gfx+1
!:
cmp #0
bne b5
lda #0
tay
sta (screen_next_area),y
b6:
inc screen_next_area
bne !+
inc screen_next_area+1
!:
inx
cpx #4
bne b4
lda screen_next_area
clc
adc #$24
sta screen_next_area
bcc !+
inc screen_next_area+1
!:
inc l
lda l
cmp #4
bne b3
rts
b5:
lda next_piece_char
ldy #0
sta (screen_next_area),y
jmp b6
}
render_moving: {
.label ypos2 = $b
.label screen_line = 7
@ -352,7 +431,7 @@ render_moving: {
bne b1
rts
b2:
lda render_screen_render_30
lda render_screen_render_33
clc
adc ypos2
tay
@ -360,13 +439,13 @@ render_moving: {
sta screen_line
lda screen_lines_1+1,y
sta screen_line+1
lda current_xpos_57
lda current_xpos_58
sta xpos
lda #0
sta c
b4:
ldy i
lda (current_piece_gfx_62),y
lda (current_piece_gfx_63),y
inc i
cmp #0
beq b5
@ -426,7 +505,7 @@ render_playfield: {
play_movement: {
.label render = 9
.label return = 9
.label key_event = $28
.label key_event = $29
lda key_event
jsr play_move_down
txa
@ -474,9 +553,9 @@ play_move_rotate: {
sta play_collision.ypos
ldx orientation
lda current_piece
sta current_piece_93
sta current_piece_101
lda current_piece+1
sta current_piece_93+1
sta current_piece_101+1
jsr play_collision
cmp #COLLISION_NONE
bne b3
@ -504,7 +583,7 @@ play_collision: {
.label piece_gfx = 5
.label ypos2 = $b
.label playfield_line = 7
.label i = $29
.label i = $2a
.label col = $f
.label l = $d
.label i_2 = $e
@ -601,9 +680,9 @@ play_move_leftright: {
sta play_collision.ypos
ldx current_orientation
lda current_piece
sta current_piece_92
sta current_piece_100
lda current_piece+1
sta current_piece_92+1
sta current_piece_100+1
jsr play_collision
cmp #COLLISION_NONE
bne b3
@ -623,9 +702,9 @@ play_move_leftright: {
sta play_collision.ypos
ldx current_orientation
lda current_piece
sta current_piece_91
sta current_piece_99
lda current_piece+1
sta current_piece_91+1
sta current_piece_99+1
jsr play_collision
cmp #COLLISION_NONE
bne b3
@ -665,9 +744,9 @@ play_move_down: {
sta play_collision.xpos
ldx current_orientation
lda current_piece
sta current_piece_90
sta current_piece_98
lda current_piece+1
sta current_piece_90+1
sta current_piece_98+1
jsr play_collision
cmp #COLLISION_NONE
beq b6
@ -677,7 +756,7 @@ play_move_down: {
tax
jsr play_update_score
jsr play_spawn_current
ldy play_spawn_current._3
ldy play_spawn_current._0
lda PIECES,y
sta current_piece
lda PIECES+1,y
@ -698,17 +777,15 @@ play_move_down: {
jmp b7
}
play_spawn_current: {
.label _3 = 4
ldx #7
b1:
cpx #7
beq b2
.label _0 = 4
.label piece_idx = $21
ldx next_piece_idx
txa
asl
sta _3
sta _0
lda PIECES_CHARS,x
sta current_piece_char
ldy _3
ldy _0
lda PIECES,y
sta current_piece_gfx
lda PIECES+1,y
@ -722,22 +799,28 @@ play_spawn_current: {
lda current_ypos
sta play_collision.ypos
lda PIECES,y
sta current_piece_94
sta current_piece_102
lda PIECES+1,y
sta current_piece_94+1
sta current_piece_102+1
ldx #0
jsr play_collision
cmp #COLLISION_PLAYFIELD
bne breturn
bne b1
lda #1
sta game_over
breturn:
rts
b1:
lda #7
sta piece_idx
b2:
lda piece_idx
cmp #7
beq b3
rts
b3:
jsr sid_rnd
and #7
tax
jmp b1
sta piece_idx
jmp b2
}
sid_rnd: {
lda SID_VOICE3_OSC
@ -745,7 +828,7 @@ sid_rnd: {
}
play_update_score: {
.label lines_before = 4
.label add_bcd = $2a
.label add_bcd = $2b
cpx #0
beq breturn
lda lines_bcd
@ -1391,7 +1474,7 @@ sid_rnd_init: {
}
sprites_irq: {
.const toSpritePtr2_return = PLAYFIELD_SPRITES>>6
.label raster_sprite_gfx_modify = $2e
.label raster_sprite_gfx_modify = $2f
sta rega+1
stx regx+1
cld
@ -1503,7 +1586,8 @@ sprites_irq: {
PIECE_O: .byte 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0
.align $40
PIECE_I: .byte 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0
PIECES_CHARS: .byte $64, $65, $a5, $65, $64, $64, $a5
PIECES_CHARS: .byte $65, $66, $a6, $66, $65, $65, $a6
PIECES_NEXT_CHARS: .byte $63, $64, $a4, $64, $63, $63, $a4
PIECES_START_X: .byte 4, 4, 4, 4, 4, 4, 4
PIECES_START_Y: .byte 1, 1, 1, 1, 1, 0, 1
MOVEDOWN_SLOW_SPEEDS: .byte $30, $2b, $26, $21, $1c, $17, $12, $d, 8, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
(label) @14
(label) @22
(label) @23
(label) @37
(label) @24
(label) @38
(label) @39
(label) @begin
(label) @end
(byte*) BGCOL
@ -169,7 +169,9 @@
(word[]) PIECES
(const word[]) PIECES#0 PIECES = { ((word))(const byte[4*4*4]) PIECE_T#0, ((word))(const byte[4*4*4]) PIECE_S#0, ((word))(const byte[4*4*4]) PIECE_Z#0, ((word))(const byte[4*4*4]) PIECE_J#0, ((word))(const byte[4*4*4]) PIECE_O#0, ((word))(const byte[4*4*4]) PIECE_I#0, ((word))(const byte[4*4*4]) PIECE_L#0 }
(byte[]) PIECES_CHARS
(const byte[]) PIECES_CHARS#0 PIECES_CHARS = { (byte/signed byte/word/signed word/dword/signed dword) 100, (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/word/signed word/dword/signed dword) 165, (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/signed byte/word/signed word/dword/signed dword) 100, (byte/signed byte/word/signed word/dword/signed dword) 100, (byte/word/signed word/dword/signed dword) 165 }
(const byte[]) PIECES_CHARS#0 PIECES_CHARS = { (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/signed byte/word/signed word/dword/signed dword) 102, (byte/word/signed word/dword/signed dword) 166, (byte/signed byte/word/signed word/dword/signed dword) 102, (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/signed byte/word/signed word/dword/signed dword) 101, (byte/word/signed word/dword/signed dword) 166 }
(byte[]) PIECES_NEXT_CHARS
(const byte[]) PIECES_NEXT_CHARS#0 PIECES_NEXT_CHARS = { (byte/signed byte/word/signed word/dword/signed dword) 99, (byte/signed byte/word/signed word/dword/signed dword) 100, (byte/word/signed word/dword/signed dword) 164, (byte/signed byte/word/signed word/dword/signed dword) 100, (byte/signed byte/word/signed word/dword/signed dword) 99, (byte/signed byte/word/signed word/dword/signed dword) 99, (byte/word/signed word/dword/signed dword) 164 }
(byte[]) PIECES_START_X
(const byte[]) PIECES_START_X#0 PIECES_START_X = { (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 4 }
(byte[]) PIECES_START_Y
@ -285,103 +287,103 @@
(byte) YELLOW
(byte) current_movedown_counter
(byte) current_movedown_counter#12 current_movedown_counter zp ZP_BYTE:4 0.5333333333333333
(byte) current_movedown_counter#14 current_movedown_counter zp ZP_BYTE:4 3.257142857142857
(byte) current_movedown_counter#14 current_movedown_counter zp ZP_BYTE:4 3.0000000000000004
(byte) current_movedown_counter#16 current_movedown_counter zp ZP_BYTE:4 8.769230769230768
(byte) current_movedown_fast
(const byte) current_movedown_fast#0 current_movedown_fast = (byte/signed byte/word/signed word/dword/signed dword) 10
(byte) current_movedown_slow
(byte) current_movedown_slow#1 current_movedown_slow zp ZP_BYTE:24 0.2222222222222222
(byte) current_movedown_slow#1 current_movedown_slow zp ZP_BYTE:24 0.18181818181818182
(byte) current_movedown_slow#10 current_movedown_slow zp ZP_BYTE:24 4.0
(byte) current_movedown_slow#14 current_movedown_slow zp ZP_BYTE:24 2.214285714285714
(byte) current_movedown_slow#21 current_movedown_slow zp ZP_BYTE:24 3.314285714285714
(byte) current_movedown_slow#21 current_movedown_slow zp ZP_BYTE:24 3.052631578947369
(byte) current_movedown_slow#23 current_movedown_slow zp ZP_BYTE:24 1.3333333333333333
(byte) current_movedown_slow#38 current_movedown_slow zp ZP_BYTE:24 6.0
(byte) current_movedown_slow#69 current_movedown_slow zp ZP_BYTE:24 0.26666666666666666
(byte) current_orientation
(byte) current_orientation#12 current_orientation zp ZP_BYTE:29 3.189189189189189
(byte) current_orientation#16 current_orientation zp ZP_BYTE:29 6.444444444444443
(byte) current_orientation#19 current_orientation zp ZP_BYTE:29 0.36
(byte) current_orientation#24 current_orientation zp ZP_BYTE:29 1.3333333333333333
(byte) current_orientation#36 current_orientation zp ZP_BYTE:29 4.0
(byte) current_orientation#13 current_orientation zp ZP_BYTE:29 3.189189189189189
(byte) current_orientation#17 current_orientation zp ZP_BYTE:29 5.523809523809523
(byte) current_orientation#20 current_orientation zp ZP_BYTE:29 0.36
(byte) current_orientation#25 current_orientation zp ZP_BYTE:29 1.3333333333333333
(byte) current_orientation#38 current_orientation zp ZP_BYTE:29 4.0
(byte) current_orientation#7 current_orientation zp ZP_BYTE:29 3.0
(byte*) current_piece
(byte*) current_piece#14 current_piece zp ZP_WORD:26 1.6315789473684217
(byte*) current_piece#16 current_piece#16 zp ZP_WORD:5 12.0
(byte*) current_piece#20 current_piece zp ZP_WORD:26 3.243243243243243
(byte*) current_piece#27 current_piece zp ZP_WORD:26 6.0
(byte*~) current_piece#88 current_piece zp ZP_WORD:26 4.0
(byte*~) current_piece#90 current_piece#90 zp ZP_WORD:5 4.0
(byte*~) current_piece#91 current_piece#91 zp ZP_WORD:5 4.0
(byte*~) current_piece#92 current_piece#92 zp ZP_WORD:5 4.0
(byte*~) current_piece#93 current_piece#93 zp ZP_WORD:5 4.0
(byte*~) current_piece#94 current_piece#94 zp ZP_WORD:5 4.0
(byte*~) current_piece#95 current_piece zp ZP_WORD:26 4.0
(byte*) current_piece#10 current_piece zp ZP_WORD:26 3.243243243243243
(byte*~) current_piece#100 current_piece#100 zp ZP_WORD:5 4.0
(byte*~) current_piece#101 current_piece#101 zp ZP_WORD:5 4.0
(byte*~) current_piece#102 current_piece#102 zp ZP_WORD:5 4.0
(byte*~) current_piece#103 current_piece zp ZP_WORD:26 4.0
(byte*) current_piece#15 current_piece zp ZP_WORD:26 1.5696202531645564
(byte*) current_piece#17 current_piece#17 zp ZP_WORD:5 12.0
(byte*) current_piece#29 current_piece zp ZP_WORD:26 6.0
(byte*~) current_piece#96 current_piece zp ZP_WORD:26 4.0
(byte*~) current_piece#98 current_piece#98 zp ZP_WORD:5 4.0
(byte*~) current_piece#99 current_piece#99 zp ZP_WORD:5 4.0
(byte) current_piece_char
(byte~) current_piece_char#102 reg byte x 4.0
(byte~) current_piece_char#103 reg byte x 22.0
(byte) current_piece_char#14 current_piece_char zp ZP_BYTE:28 3.628571428571428
(byte) current_piece_char#16 current_piece_char zp ZP_BYTE:28 0.32
(byte) current_piece_char#19 current_piece_char zp ZP_BYTE:28 187.38888888888889
(byte) current_piece_char#27 current_piece_char zp ZP_BYTE:28 6.0
(byte) current_piece_char#64 reg byte x 50.699999999999996
(byte~) current_piece_char#110 reg byte x 4.0
(byte~) current_piece_char#111 reg byte x 22.0
(byte) current_piece_char#15 current_piece_char zp ZP_BYTE:28 3.3421052631578956
(byte) current_piece_char#21 current_piece_char zp ZP_BYTE:28 187.38888888888889
(byte) current_piece_char#29 current_piece_char zp ZP_BYTE:28 6.0
(byte) current_piece_char#4 current_piece_char zp ZP_BYTE:28 0.23529411764705882
(byte) current_piece_char#67 reg byte x 50.699999999999996
(byte*) current_piece_gfx
(byte*) current_piece_gfx#103 current_piece_gfx zp ZP_WORD:30 187.38888888888889
(byte*~) current_piece_gfx#114 current_piece_gfx#114 zp ZP_WORD:5 2.0
(byte*~) current_piece_gfx#115 current_piece_gfx#115 zp ZP_WORD:5 11.0
(byte*) current_piece_gfx#16 current_piece_gfx zp ZP_WORD:30 7.055555555555554
(byte*) current_piece_gfx#18 current_piece_gfx zp ZP_WORD:30 0.3571428571428571
(byte*) current_piece_gfx#19 current_piece_gfx zp ZP_WORD:30 1.3333333333333333
(byte*) current_piece_gfx#21 current_piece_gfx zp ZP_WORD:30 0.3333333333333333
(byte*) current_piece_gfx#33 current_piece_gfx zp ZP_WORD:30 6.0
(byte*) current_piece_gfx#111 current_piece_gfx zp ZP_WORD:30 187.38888888888889
(byte*~) current_piece_gfx#122 current_piece_gfx#122 zp ZP_WORD:5 2.0
(byte*~) current_piece_gfx#123 current_piece_gfx#123 zp ZP_WORD:5 11.0
(byte*) current_piece_gfx#17 current_piece_gfx zp ZP_WORD:30 6.047619047619047
(byte*) current_piece_gfx#19 current_piece_gfx zp ZP_WORD:30 0.3571428571428571
(byte*) current_piece_gfx#20 current_piece_gfx zp ZP_WORD:30 1.3333333333333333
(byte*) current_piece_gfx#35 current_piece_gfx zp ZP_WORD:30 6.0
(byte*) current_piece_gfx#6 current_piece_gfx zp ZP_WORD:30 4.0
(byte*) current_piece_gfx#62 current_piece_gfx#62 zp ZP_WORD:5 50.699999999999996
(byte*) current_piece_gfx#63 current_piece_gfx#63 zp ZP_WORD:5 50.699999999999996
(byte*) current_piece_gfx#7 current_piece_gfx zp ZP_WORD:30 0.24242424242424243
(byte) current_xpos
(byte) current_xpos#113 current_xpos zp ZP_BYTE:32 20.75925925925926
(byte~) current_xpos#124 current_xpos#124 zp ZP_BYTE:10 1.3333333333333333
(byte~) current_xpos#125 current_xpos#125 zp ZP_BYTE:10 7.333333333333333
(byte) current_xpos#17 current_xpos zp ZP_BYTE:32 7.055555555555554
(byte) current_xpos#20 current_xpos zp ZP_BYTE:32 0.7692307692307692
(byte) current_xpos#24 current_xpos zp ZP_BYTE:32 0.4666666666666666
(byte) current_xpos#28 current_xpos zp ZP_BYTE:32 0.43478260869565216
(byte) current_xpos#41 current_xpos zp ZP_BYTE:32 6.0
(byte) current_xpos#102 current_xpos zp ZP_BYTE:32 0.3125
(byte) current_xpos#121 current_xpos zp ZP_BYTE:32 20.75925925925926
(byte~) current_xpos#132 current_xpos#132 zp ZP_BYTE:10 1.3333333333333333
(byte~) current_xpos#133 current_xpos#133 zp ZP_BYTE:10 7.333333333333333
(byte) current_xpos#18 current_xpos zp ZP_BYTE:32 6.047619047619047
(byte) current_xpos#21 current_xpos zp ZP_BYTE:32 0.7692307692307692
(byte) current_xpos#25 current_xpos zp ZP_BYTE:32 0.4666666666666666
(byte) current_xpos#43 current_xpos zp ZP_BYTE:32 6.0
(byte) current_xpos#5 current_xpos zp ZP_BYTE:32 4.0
(byte) current_xpos#57 current_xpos#57 zp ZP_BYTE:10 5.7
(byte) current_xpos#58 current_xpos#58 zp ZP_BYTE:10 5.7
(byte) current_xpos#7 current_xpos zp ZP_BYTE:32 4.0
(byte) current_ypos
(byte~) current_ypos#100 reg byte y 1.0
(byte~) current_ypos#101 reg byte y 4.4
(byte) current_ypos#11 reg byte y 15.0
(byte) current_ypos#17 current_ypos zp ZP_BYTE:16 1.7500000000000007
(byte) current_ypos#10 current_ypos zp ZP_BYTE:16 3.297297297297297
(byte~) current_ypos#108 reg byte y 1.0
(byte~) current_ypos#109 reg byte y 4.4
(byte) current_ypos#12 reg byte y 15.0
(byte) current_ypos#18 current_ypos zp ZP_BYTE:16 1.683544303797468
(byte) current_ypos#2 current_ypos zp ZP_BYTE:16 4.0
(byte) current_ypos#22 current_ypos zp ZP_BYTE:16 0.4545454545454546
(byte) current_ypos#25 current_ypos zp ZP_BYTE:16 3.297297297297297
(byte) current_ypos#36 current_ypos zp ZP_BYTE:16 6.0
(byte) current_ypos#38 current_ypos zp ZP_BYTE:16 6.0
(byte) current_ypos#5 current_ypos zp ZP_BYTE:16 0.3225806451612903
(byte) game_over
(byte) game_over#14 game_over zp ZP_BYTE:33 3.371428571428571
(byte) game_over#15 game_over zp ZP_BYTE:33 0.46153846153846156
(byte) game_over#19 game_over zp ZP_BYTE:33 4.804347826086958
(byte) game_over#26 game_over zp ZP_BYTE:33 6.0
(byte) game_over#70 game_over zp ZP_BYTE:33 0.19047619047619047
(byte) game_over#10 game_over zp ZP_BYTE:34 4.804347826086958
(byte) game_over#15 game_over zp ZP_BYTE:34 3.1052631578947376
(byte) game_over#28 game_over zp ZP_BYTE:34 6.0
(byte) game_over#52 game_over zp ZP_BYTE:34 0.3333333333333333
(byte) game_over#65 game_over zp ZP_BYTE:34 0.4
(byte) irq_cnt
(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:39 0.17391304347826086
(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:39 3.0
(byte) irq_cnt#2 irq_cnt zp ZP_BYTE:39 20.0
(byte) irq_cnt#0 irq_cnt zp ZP_BYTE:40 0.17391304347826086
(byte) irq_cnt#1 irq_cnt zp ZP_BYTE:40 3.0
(byte) irq_cnt#2 irq_cnt zp ZP_BYTE:40 20.0
(byte) irq_raster_next
(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:35 0.3076923076923077
(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:35 1.0
(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:35 1.3333333333333333
(byte) irq_raster_next#3 irq_raster_next zp ZP_BYTE:35 1.3333333333333333
(byte) irq_raster_next#4 irq_raster_next zp ZP_BYTE:35 8.0
(byte) irq_raster_next#0 irq_raster_next zp ZP_BYTE:36 0.3076923076923077
(byte) irq_raster_next#1 irq_raster_next zp ZP_BYTE:36 1.0
(byte) irq_raster_next#2 irq_raster_next zp ZP_BYTE:36 1.3333333333333333
(byte) irq_raster_next#3 irq_raster_next zp ZP_BYTE:36 1.3333333333333333
(byte) irq_raster_next#4 irq_raster_next zp ZP_BYTE:36 8.0
(byte) irq_sprite_ptr
(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:38 0.25806451612903225
(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:38 20.0
(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:38 20.0
(byte) irq_sprite_ptr#3 irq_sprite_ptr zp ZP_BYTE:38 20.0
(byte) irq_sprite_ptr#0 irq_sprite_ptr zp ZP_BYTE:39 0.25806451612903225
(byte) irq_sprite_ptr#1 irq_sprite_ptr zp ZP_BYTE:39 20.0
(byte) irq_sprite_ptr#2 irq_sprite_ptr zp ZP_BYTE:39 20.0
(byte) irq_sprite_ptr#3 irq_sprite_ptr zp ZP_BYTE:39 20.0
(byte) irq_sprite_ypos
(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:37 0.27586206896551724
(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:37 20.0
(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:37 20.0
(byte) irq_sprite_ypos#3 irq_sprite_ypos zp ZP_BYTE:37 20.0
(byte) irq_sprite_ypos#0 irq_sprite_ypos zp ZP_BYTE:38 0.27586206896551724
(byte) irq_sprite_ypos#1 irq_sprite_ypos zp ZP_BYTE:38 20.0
(byte) irq_sprite_ypos#2 irq_sprite_ypos zp ZP_BYTE:38 20.0
(byte) irq_sprite_ypos#3 irq_sprite_ypos zp ZP_BYTE:38 20.0
(byte[]) keyboard_char_keycodes
(byte()) keyboard_event_get()
(label) keyboard_event_get::@3
@ -456,15 +458,15 @@
(byte[8]) keyboard_events
(const byte[8]) keyboard_events#0 keyboard_events = { fill( 8, 0) }
(byte) keyboard_events_size
(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:34 20002.0
(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:34 8100.9000000000015
(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:34 97.06451612903226
(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:34 5.043478260869566
(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:34 18.999999999999996
(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:34 20002.0
(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:34 429.2857142857143
(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:34 10201.2
(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:34 3.0
(byte) keyboard_events_size#1 keyboard_events_size zp ZP_BYTE:35 20002.0
(byte) keyboard_events_size#10 keyboard_events_size zp ZP_BYTE:35 8100.9000000000015
(byte) keyboard_events_size#13 keyboard_events_size zp ZP_BYTE:35 97.06451612903226
(byte) keyboard_events_size#16 keyboard_events_size zp ZP_BYTE:35 4.461538461538461
(byte) keyboard_events_size#19 keyboard_events_size zp ZP_BYTE:35 18.999999999999996
(byte) keyboard_events_size#2 keyboard_events_size zp ZP_BYTE:35 20002.0
(byte) keyboard_events_size#29 keyboard_events_size zp ZP_BYTE:35 429.2857142857143
(byte) keyboard_events_size#30 keyboard_events_size zp ZP_BYTE:35 10201.2
(byte) keyboard_events_size#4 keyboard_events_size zp ZP_BYTE:35 3.0
(byte[8]) keyboard_matrix_col_bitmask
(const byte[8]) keyboard_matrix_col_bitmask#0 keyboard_matrix_col_bitmask = { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 8, (byte/signed byte/word/signed word/dword/signed dword) 16, (byte/signed byte/word/signed word/dword/signed dword) 32, (byte/signed byte/word/signed word/dword/signed dword) 64, (byte/word/signed word/dword/signed dword) 128 }
(byte()) keyboard_matrix_read((byte) keyboard_matrix_read::rowid)
@ -488,20 +490,20 @@
(const byte[8]) keyboard_scan_values#0 keyboard_scan_values = { fill( 8, 0) }
(byte) level
(byte) level#10 level zp ZP_BYTE:23 2.140350877192983
(byte) level#16 level zp ZP_BYTE:23 3.314285714285714
(byte) level#16 level zp ZP_BYTE:23 3.052631578947369
(byte) level#18 level zp ZP_BYTE:23 1.3333333333333333
(byte) level#20 level zp ZP_BYTE:23 0.4444444444444444
(byte) level#31 level zp ZP_BYTE:23 6.0
(byte) level_bcd
(byte) level_bcd#11 level_bcd zp ZP_BYTE:25 2.0
(byte) level_bcd#17 level_bcd zp ZP_BYTE:25 2.0701754385964914
(byte) level_bcd#17 level_bcd zp ZP_BYTE:25 1.966666666666667
(byte) level_bcd#19 level_bcd zp ZP_BYTE:25 1.3333333333333333
(byte) level_bcd#21 level_bcd zp ZP_BYTE:25 2.6666666666666665
(byte) level_bcd#32 level_bcd zp ZP_BYTE:25 6.0
(byte) level_bcd#64 level_bcd zp ZP_BYTE:25 0.6000000000000001
(byte) level_bcd#8 level_bcd zp ZP_BYTE:25 4.0
(word) lines_bcd
(word) lines_bcd#15 lines_bcd zp ZP_WORD:17 2.105263157894737
(word) lines_bcd#15 lines_bcd zp ZP_WORD:17 2.0000000000000004
(word) lines_bcd#17 lines_bcd zp ZP_WORD:17 1.3333333333333333
(word) lines_bcd#19 lines_bcd zp ZP_WORD:17 2.4400000000000004
(word) lines_bcd#27 lines_bcd zp ZP_WORD:17 6.0
@ -517,14 +519,17 @@
(label) main::@29
(label) main::@30
(label) main::@31
(label) main::@32
(label) main::@33
(label) main::@34
(label) main::@35
(label) main::@36
(label) main::@37
(label) main::@38
(label) main::@39
(label) main::@4
(label) main::@40
(label) main::@41
(label) main::@42
(label) main::@6
(label) main::@7
(label) main::@9
@ -532,6 +537,14 @@
(byte) main::key_event#0 reg byte x 101.0
(byte) main::render
(byte) main::render#1 reg byte a 202.0
(byte) next_piece_idx
(byte) next_piece_idx#10 next_piece_idx zp ZP_BYTE:33 2.608695652173914
(byte) next_piece_idx#12 reg byte y 3.4
(byte) next_piece_idx#16 next_piece_idx zp ZP_BYTE:33 3.3421052631578956
(byte) next_piece_idx#17 next_piece_idx zp ZP_BYTE:33 6.0
(byte) next_piece_idx#31 next_piece_idx zp ZP_BYTE:33 6.0
(byte~) next_piece_idx#84 reg byte y 4.0
(byte~) next_piece_idx#85 reg byte y 22.0
(byte()) play_collision((byte) play_collision::xpos , (byte) play_collision::ypos , (byte) play_collision::orientation)
(byte~) play_collision::$7 reg byte a 20002.0
(label) play_collision::@1
@ -553,7 +566,7 @@
(byte) play_collision::col#2 col zp ZP_BYTE:15 6375.75
(byte~) play_collision::col#9 col zp ZP_BYTE:15 2002.0
(byte) play_collision::i
(byte) play_collision::i#1 i zp ZP_BYTE:41 1615.6153846153845
(byte) play_collision::i#1 i zp ZP_BYTE:42 1615.6153846153845
(byte~) play_collision::i#11 i#11 zp ZP_BYTE:14 2002.0
(byte~) play_collision::i#13 i#13 zp ZP_BYTE:14 20002.0
(byte) play_collision::i#2 i#2 zp ZP_BYTE:14 15502.0
@ -740,7 +753,7 @@
(label) play_movement::@7
(label) play_movement::@return
(byte) play_movement::key_event
(byte) play_movement::key_event#0 key_event zp ZP_BYTE:40 8.916666666666664
(byte) play_movement::key_event#0 key_event zp ZP_BYTE:41 8.916666666666664
(byte) play_movement::render
(byte) play_movement::render#1 render zp ZP_BYTE:9 1.0
(byte) play_movement::render#2 render zp ZP_BYTE:9 0.8
@ -789,9 +802,9 @@
(byte) play_remove_lines::y#1 y zp ZP_BYTE:4 1501.5
(byte) play_remove_lines::y#8 y zp ZP_BYTE:4 133.46666666666667
(void()) play_spawn_current()
(byte~) play_spawn_current::$1 reg byte a 2002.0
(byte~) play_spawn_current::$3 $3 zp ZP_BYTE:4 0.08333333333333333
(byte~) play_spawn_current::$5 reg byte a 4.0
(byte~) play_spawn_current::$0 $0 zp ZP_BYTE:4 0.06060606060606061
(byte~) play_spawn_current::$2 reg byte a 4.0
(byte~) play_spawn_current::$6 reg byte a 2002.0
(label) play_spawn_current::@1
(label) play_spawn_current::@10
(label) play_spawn_current::@11
@ -799,9 +812,11 @@
(label) play_spawn_current::@3
(label) play_spawn_current::@9
(label) play_spawn_current::@return
(byte) play_spawn_current::current_piece_idx
(byte) play_spawn_current::current_piece_idx#0 reg byte x 2.0
(byte) play_spawn_current::piece_idx
(byte) play_spawn_current::piece_idx#1 reg byte x 2002.0
(byte) play_spawn_current::piece_idx#2 reg byte x 334.99999999999994
(byte) play_spawn_current::piece_idx#1 piece_idx zp ZP_BYTE:33 2002.0
(byte) play_spawn_current::piece_idx#2 piece_idx zp ZP_BYTE:33 111.66666666666667
(void()) play_update_score((byte) play_update_score::removed)
(byte~) play_update_score::$2 reg byte a 4.0
(byte~) play_update_score::$4 reg byte a 4.0
@ -810,7 +825,7 @@
(label) play_update_score::@4
(label) play_update_score::@return
(dword) play_update_score::add_bcd
(dword) play_update_score::add_bcd#0 add_bcd zp ZP_DWORD:42 1.3333333333333333
(dword) play_update_score::add_bcd#0 add_bcd zp ZP_DWORD:43 1.3333333333333333
(byte) play_update_score::lines_after
(byte) play_update_score::lines_after#0 reg byte a 4.0
(byte) play_update_score::lines_before
@ -920,6 +935,40 @@
(byte) render_moving::ypos2#0 ypos2 zp ZP_BYTE:11 4.0
(byte) render_moving::ypos2#1 ypos2 zp ZP_BYTE:11 67.33333333333333
(byte) render_moving::ypos2#2 ypos2 zp ZP_BYTE:11 27.06666666666667
(void()) render_next()
(byte~) render_next::$6 reg byte x 1.0
(label) render_next::@11
(label) render_next::@2
(label) render_next::@3
(label) render_next::@4
(label) render_next::@5
(label) render_next::@6
(label) render_next::@7
(label) render_next::@9
(label) render_next::@return
(byte) render_next::c
(byte) render_next::c#1 reg byte x 1501.5
(byte) render_next::c#2 reg byte x 286.0
(byte) render_next::cell
(byte) render_next::cell#0 reg byte a 1001.0
(byte) render_next::l
(byte) render_next::l#1 l zp ZP_BYTE:9 151.5
(byte) render_next::l#7 l zp ZP_BYTE:9 18.363636363636363
(word) render_next::next_area_offset
(const word) render_next::next_area_offset#0 next_area_offset = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 12+(byte/signed byte/word/signed word/dword/signed dword) 24+(byte/signed byte/word/signed word/dword/signed dword) 4
(byte) render_next::next_piece_char
(byte) render_next::next_piece_char#0 next_piece_char zp ZP_BYTE:10 66.86666666666667
(byte*) render_next::next_piece_gfx
(byte*) render_next::next_piece_gfx#1 next_piece_gfx zp ZP_WORD:5 210.29999999999998
(byte*) render_next::next_piece_gfx#2 next_piece_gfx zp ZP_WORD:5 1552.0
(byte*) render_next::next_piece_gfx#3 next_piece_gfx zp ZP_WORD:5 204.0
(byte*~) render_next::next_piece_gfx#9 next_piece_gfx zp ZP_WORD:5 4.0
(byte*) render_next::screen_next_area
(byte*) render_next::screen_next_area#10 screen_next_area zp ZP_WORD:7 0.5
(byte*) render_next::screen_next_area#2 screen_next_area zp ZP_WORD:7 701.0
(byte*) render_next::screen_next_area#3 screen_next_area zp ZP_WORD:7 67.33333333333333
(byte*) render_next::screen_next_area#4 screen_next_area zp ZP_WORD:7 684.1666666666667
(byte*) render_next::screen_next_area#9 screen_next_area zp ZP_WORD:7 204.0
(void()) render_playfield()
(byte~) render_playfield::$2 reg byte a 202.0
(byte~) render_playfield::$3 reg byte a 202.0
@ -1006,17 +1055,19 @@
(byte) render_screen_original::y#6 y zp ZP_BYTE:2 0.9166666666666666
(byte) render_screen_render
(byte) render_screen_render#11 render_screen_render zp ZP_BYTE:3 3.25
(byte) render_screen_render#17 render_screen_render zp ZP_BYTE:3 0.7551020408163266
(byte) render_screen_render#21 reg byte x 8.615384615384615
(byte) render_screen_render#30 render_screen_render#30 zp ZP_BYTE:9 5.6
(byte~) render_screen_render#64 render_screen_render#64 zp ZP_BYTE:9 5.5
(byte~) render_screen_render#65 reg byte x 22.0
(byte) render_screen_render#15 reg byte a 13.0
(byte) render_screen_render#18 render_screen_render zp ZP_BYTE:3 0.923076923076923
(byte) render_screen_render#22 reg byte x 8.615384615384615
(byte) render_screen_render#33 render_screen_render#33 zp ZP_BYTE:9 5.6
(byte~) render_screen_render#68 reg byte a 11.0
(byte~) render_screen_render#69 render_screen_render#69 zp ZP_BYTE:9 5.5
(byte~) render_screen_render#70 reg byte x 22.0
(byte) render_screen_show
(byte) render_screen_show#13 render_screen_show zp ZP_BYTE:2 4.333333333333333
(byte) render_screen_show#16 render_screen_show zp ZP_BYTE:2 0.48571428571428577
(byte) render_screen_show#16 render_screen_show zp ZP_BYTE:2 0.4473684210526316
(byte) render_screen_showing
(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:36 0.4
(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:36 20.0
(byte) render_screen_showing#0 render_screen_showing zp ZP_BYTE:37 0.4
(byte) render_screen_showing#1 render_screen_showing zp ZP_BYTE:37 20.0
(void()) render_screen_swap()
(label) render_screen_swap::@return
(void()) render_show()
@ -1055,7 +1106,7 @@
(dword[5]) score_add_bcd
(const dword[5]) score_add_bcd#0 score_add_bcd = { fill( 5, 0) }
(dword) score_bcd
(dword) score_bcd#14 score_bcd zp ZP_DWORD:19 3.314285714285714
(dword) score_bcd#14 score_bcd zp ZP_DWORD:19 3.052631578947369
(dword) score_bcd#16 score_bcd zp ZP_DWORD:19 1.3333333333333333
(dword) score_bcd#18 score_bcd zp ZP_DWORD:19 2.352941176470588
(dword) score_bcd#27 score_bcd zp ZP_DWORD:19 6.0
@ -1103,7 +1154,7 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq()
(byte) sprites_irq::ptr#3 reg byte a 2.6666666666666665
(byte) sprites_irq::ptr#4 reg byte a 4.0
(byte) sprites_irq::raster_sprite_gfx_modify
(byte) sprites_irq::raster_sprite_gfx_modify#0 raster_sprite_gfx_modify zp ZP_BYTE:46 6.5
(byte) sprites_irq::raster_sprite_gfx_modify#0 raster_sprite_gfx_modify zp ZP_BYTE:47 6.5
(label) sprites_irq::toSpritePtr2
(word~) sprites_irq::toSpritePtr2_$0
(word~) sprites_irq::toSpritePtr2_$1
@ -1124,42 +1175,45 @@ interrupt(HARDWARE_CLOBBER)(void()) sprites_irq()
(byte*) toSpritePtr1_sprite
zp ZP_BYTE:2 [ render_screen_show#16 render_screen_show#13 play_init::idx#2 play_init::idx#1 sprites_init::xpos#2 sprites_init::xpos#1 render_screen_original::y#6 render_screen_original::y#1 ]
zp ZP_BYTE:3 [ render_screen_render#17 render_screen_render#11 ]
zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$3 play_update_score::lines_before#0 ]
zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 current_piece_gfx#62 current_piece_gfx#114 current_piece_gfx#115 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#16 current_piece#90 current_piece#91 current_piece#92 current_piece#93 current_piece#94 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 play_lock_current::playfield_line#0 ]
zp ZP_WORD:7 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 play_collision::playfield_line#0 ]
zp ZP_BYTE:3 [ render_screen_render#18 render_screen_render#11 ]
zp ZP_BYTE:4 [ current_movedown_counter#16 current_movedown_counter#14 current_movedown_counter#12 play_remove_lines::y#8 play_remove_lines::y#1 play_lock_current::l#6 play_lock_current::l#1 play_spawn_current::$0 play_update_score::lines_before#0 ]
zp ZP_WORD:5 [ render_score::screen#2 render_bcd::screen#6 render_bcd::screen#0 render_bcd::screen#1 render_bcd::screen#2 render_bcd::screen#3 render_bcd::screen#4 render_bcd::screen#5 render_next::next_piece_gfx#2 render_next::next_piece_gfx#3 render_next::next_piece_gfx#1 render_next::next_piece_gfx#9 current_piece_gfx#63 current_piece_gfx#122 current_piece_gfx#123 render_playfield::screen_line#2 render_playfield::screen_line#0 render_playfield::screen_line#1 current_piece#17 current_piece#98 current_piece#99 current_piece#100 current_piece#101 current_piece#102 play_collision::piece_gfx#0 play_init::pli#2 play_init::pli#1 render_init::li_1#2 render_init::li_1#1 render_screen_original::oscr#2 render_screen_original::oscr#4 render_screen_original::oscr#1 play_lock_current::playfield_line#0 ]
zp ZP_WORD:7 [ render_bcd::offset#6 render_bcd::screen_pos#3 render_bcd::screen_pos#0 render_bcd::screen_pos#2 render_bcd::screen_pos#1 render_next::screen_next_area#4 render_next::screen_next_area#9 render_next::screen_next_area#3 render_next::screen_next_area#10 render_next::screen_next_area#2 render_init::li_2#2 render_init::li_2#1 render_screen_original::ocols#2 render_screen_original::ocols#4 render_screen_original::ocols#1 render_moving::screen_line#0 play_collision::playfield_line#0 ]
reg byte y [ render_bcd::only_low#6 ]
reg byte x [ render_bcd::bcd#6 render_bcd::bcd#0 render_bcd::bcd#1 render_bcd::bcd#2 render_bcd::bcd#3 render_bcd::bcd#4 render_bcd::bcd#5 ]
reg byte y [ current_ypos#11 current_ypos#100 current_ypos#101 ]
zp ZP_BYTE:9 [ render_screen_render#30 render_screen_render#64 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
zp ZP_BYTE:10 [ current_xpos#57 current_xpos#124 current_xpos#125 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 keyboard_event_pressed::row_bits#0 ]
reg byte x [ current_piece_char#64 current_piece_char#102 current_piece_char#103 ]
reg byte a [ render_screen_render#15 render_screen_render#68 ]
reg byte y [ next_piece_idx#12 next_piece_idx#84 next_piece_idx#85 ]
zp ZP_BYTE:9 [ render_next::l#7 render_next::l#1 render_screen_render#33 render_screen_render#69 render_playfield::l#2 render_playfield::l#1 play_movement::return#2 play_movement::render#1 play_movement::return#0 play_movement::render#2 play_remove_lines::removed#11 play_remove_lines::removed#7 play_remove_lines::removed#1 play_lock_current::i#2 play_lock_current::i#3 play_lock_current::i#7 play_lock_current::i#9 keyboard_event_pressed::keycode#5 keyboard_event_scan::row#2 keyboard_event_scan::row#1 ]
reg byte x [ render_next::c#2 render_next::c#1 ]
reg byte y [ current_ypos#12 current_ypos#108 current_ypos#109 ]
zp ZP_BYTE:10 [ current_xpos#58 current_xpos#132 current_xpos#133 render_playfield::i#2 render_playfield::i#3 render_playfield::i#1 play_move_rotate::orientation#3 play_move_rotate::orientation#1 play_move_rotate::orientation#2 play_remove_lines::x#2 play_remove_lines::x#1 play_lock_current::col#2 play_lock_current::col#0 play_lock_current::col#1 keyboard_event_scan::keycode#10 keyboard_event_scan::keycode#11 keyboard_event_scan::keycode#14 keyboard_event_scan::keycode#1 keyboard_event_scan::keycode#15 render_next::next_piece_char#0 keyboard_event_pressed::row_bits#0 ]
reg byte x [ current_piece_char#67 current_piece_char#110 current_piece_char#111 ]
zp ZP_BYTE:11 [ render_moving::ypos2#2 render_moving::ypos2#0 render_moving::ypos2#1 render_playfield::c#2 render_playfield::c#1 play_collision::ypos#5 play_collision::ypos#0 play_collision::ypos#1 play_collision::ypos#2 play_collision::ypos#3 play_collision::ypos#4 play_collision::ypos2#2 play_collision::ypos2#0 play_collision::ypos2#1 play_remove_lines::full#4 play_remove_lines::full#2 play_lock_current::i#1 keyboard_event_scan::row_scan#0 ]
zp ZP_BYTE:12 [ render_moving::l#4 render_moving::l#1 play_collision::xpos#6 play_collision::xpos#0 play_collision::xpos#1 play_collision::xpos#2 play_collision::xpos#3 play_collision::xpos#4 play_remove_lines::c#0 ]
zp ZP_BYTE:13 [ render_moving::i#4 render_moving::i#3 render_moving::i#8 render_moving::i#2 render_moving::i#1 play_collision::l#6 play_collision::l#1 ]
zp ZP_BYTE:14 [ render_moving::xpos#2 render_moving::xpos#0 render_moving::xpos#1 play_collision::i#2 play_collision::i#3 play_collision::i#11 play_collision::i#13 ]
zp ZP_BYTE:15 [ render_moving::c#2 render_moving::c#1 play_collision::col#2 play_collision::col#9 play_collision::col#1 ]
reg byte x [ render_screen_render#21 render_screen_render#65 ]
reg byte x [ render_screen_render#22 render_screen_render#70 ]
reg byte a [ play_move_rotate::return#2 ]
reg byte x [ play_collision::orientation#5 play_collision::orientation#0 play_collision::orientation#1 play_collision::orientation#2 play_collision::orientation#3 ]
reg byte x [ play_collision::c#2 play_collision::c#1 ]
reg byte a [ play_collision::return#15 ]
reg byte a [ play_move_leftright::return#2 ]
reg byte x [ play_move_down::movedown#6 play_move_down::movedown#3 play_move_down::movedown#7 play_move_down::movedown#2 play_move_down::movedown#10 ]
zp ZP_BYTE:16 [ current_ypos#36 current_ypos#25 current_ypos#17 current_ypos#22 current_ypos#2 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ]
zp ZP_BYTE:16 [ current_ypos#38 current_ypos#10 current_ypos#18 current_ypos#5 current_ypos#2 play_lock_current::ypos2#2 play_lock_current::ypos2#0 play_lock_current::ypos2#1 ]
zp ZP_WORD:17 [ lines_bcd#27 lines_bcd#17 lines_bcd#19 lines_bcd#15 lines_bcd#30 render_screen_original::screen#7 render_screen_original::screen#6 render_screen_original::screen#5 render_screen_original::screen#8 render_screen_original::screen#9 render_screen_original::screen#10 render_screen_original::screen#2 render_screen_original::screen#3 ]
zp ZP_DWORD:19 [ score_bcd#27 score_bcd#16 score_bcd#18 score_bcd#14 score_bcd#30 ]
zp ZP_BYTE:23 [ level#31 level#18 level#10 level#16 level#20 ]
zp ZP_BYTE:24 [ current_movedown_slow#38 current_movedown_slow#23 current_movedown_slow#14 current_movedown_slow#21 current_movedown_slow#1 current_movedown_slow#69 current_movedown_slow#10 ]
zp ZP_BYTE:25 [ level_bcd#32 level_bcd#19 level_bcd#11 level_bcd#17 level_bcd#64 level_bcd#21 level_bcd#8 ]
zp ZP_WORD:26 [ current_piece#27 current_piece#95 current_piece#20 current_piece#14 current_piece#88 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ]
zp ZP_BYTE:28 [ current_piece_char#27 current_piece_char#19 current_piece_char#14 current_piece_char#16 ]
zp ZP_BYTE:29 [ current_orientation#36 current_orientation#12 current_orientation#16 current_orientation#19 current_orientation#24 current_orientation#7 ]
zp ZP_WORD:30 [ current_piece_gfx#33 current_piece_gfx#103 current_piece_gfx#16 current_piece_gfx#21 current_piece_gfx#18 current_piece_gfx#19 current_piece_gfx#6 ]
zp ZP_BYTE:32 [ current_xpos#41 current_xpos#113 current_xpos#17 current_xpos#28 current_xpos#20 current_xpos#24 current_xpos#7 current_xpos#5 ]
zp ZP_WORD:26 [ current_piece#29 current_piece#103 current_piece#10 current_piece#15 current_piece#96 render_screen_original::cols#6 render_screen_original::cols#5 render_screen_original::cols#4 render_screen_original::cols#7 render_screen_original::cols#3 render_screen_original::cols#1 render_screen_original::cols#2 ]
zp ZP_BYTE:28 [ current_piece_char#29 current_piece_char#21 current_piece_char#15 current_piece_char#4 ]
zp ZP_BYTE:29 [ current_orientation#38 current_orientation#13 current_orientation#17 current_orientation#20 current_orientation#25 current_orientation#7 ]
zp ZP_WORD:30 [ current_piece_gfx#35 current_piece_gfx#111 current_piece_gfx#17 current_piece_gfx#7 current_piece_gfx#19 current_piece_gfx#20 current_piece_gfx#6 ]
zp ZP_BYTE:32 [ current_xpos#43 current_xpos#121 current_xpos#18 current_xpos#102 current_xpos#21 current_xpos#25 current_xpos#7 current_xpos#5 ]
reg byte x [ play_move_down::return#3 ]
zp ZP_BYTE:33 [ game_over#70 game_over#26 game_over#19 game_over#14 game_over#15 ]
reg byte x [ play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ]
zp ZP_BYTE:33 [ next_piece_idx#17 next_piece_idx#31 next_piece_idx#10 next_piece_idx#16 play_spawn_current::piece_idx#2 play_spawn_current::piece_idx#1 ]
zp ZP_BYTE:34 [ game_over#65 game_over#28 game_over#10 game_over#15 game_over#52 ]
reg byte x [ play_increase_level::b#2 play_increase_level::b#1 ]
reg byte y [ play_remove_lines::r#2 play_remove_lines::r#3 play_remove_lines::r#1 ]
reg byte x [ play_remove_lines::w#6 play_remove_lines::w#4 play_remove_lines::w#12 play_remove_lines::w#11 play_remove_lines::w#1 play_remove_lines::w#2 play_remove_lines::w#3 ]
@ -1167,27 +1221,29 @@ reg byte x [ play_lock_current::c#2 play_lock_current::c#1 ]
reg byte x [ keyboard_event_get::return#2 keyboard_event_get::return#1 ]
reg byte x [ keyboard_modifiers#13 keyboard_modifiers#4 keyboard_modifiers#12 keyboard_modifiers#3 keyboard_modifiers#11 ]
reg byte x [ keyboard_event_scan::col#2 keyboard_event_scan::col#1 ]
zp ZP_BYTE:34 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ]
zp ZP_BYTE:35 [ keyboard_events_size#10 keyboard_events_size#29 keyboard_events_size#19 keyboard_events_size#16 keyboard_events_size#13 keyboard_events_size#4 keyboard_events_size#30 keyboard_events_size#2 keyboard_events_size#1 ]
reg byte a [ render_show::d018val#3 ]
reg byte x [ play_init::j#2 play_init::j#1 ]
reg byte x [ play_init::b#2 play_init::b#1 ]
reg byte x [ sprites_init::s#2 sprites_init::s#1 ]
reg byte x [ render_init::i#2 render_init::i#1 ]
reg byte x [ render_screen_original::x#6 render_screen_original::x#5 render_screen_original::x#4 render_screen_original::x#1 render_screen_original::x#2 render_screen_original::x#3 ]
zp ZP_BYTE:35 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ]
zp ZP_BYTE:36 [ render_screen_showing#0 render_screen_showing#1 ]
zp ZP_BYTE:37 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 irq_sprite_ypos#1 ]
zp ZP_BYTE:38 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 irq_sprite_ptr#1 ]
zp ZP_BYTE:39 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ]
zp ZP_BYTE:36 [ irq_raster_next#4 irq_raster_next#3 irq_raster_next#1 irq_raster_next#2 irq_raster_next#0 ]
zp ZP_BYTE:37 [ render_screen_showing#0 render_screen_showing#1 ]
zp ZP_BYTE:38 [ irq_sprite_ypos#0 irq_sprite_ypos#3 irq_sprite_ypos#2 irq_sprite_ypos#1 ]
zp ZP_BYTE:39 [ irq_sprite_ptr#0 irq_sprite_ptr#3 irq_sprite_ptr#2 irq_sprite_ptr#1 ]
zp ZP_BYTE:40 [ irq_cnt#0 irq_cnt#1 irq_cnt#2 ]
reg byte x [ keyboard_event_get::return#3 ]
reg byte x [ main::key_event#0 ]
zp ZP_BYTE:40 [ play_movement::key_event#0 ]
zp ZP_BYTE:41 [ play_movement::key_event#0 ]
reg byte a [ play_movement::return#3 ]
reg byte a [ main::render#1 ]
reg byte a [ render_bcd::$3 ]
reg byte a [ render_bcd::$4 ]
reg byte a [ render_bcd::$5 ]
reg byte a [ render_bcd::$6 ]
reg byte x [ render_next::$6 ]
reg byte a [ render_next::cell#0 ]
reg byte a [ render_moving::$2 ]
reg byte a [ render_moving::current_cell#0 ]
reg byte a [ render_playfield::$2 ]
@ -1205,7 +1261,7 @@ reg byte a [ play_move_rotate::$2 ]
reg byte a [ play_collision::return#14 ]
reg byte a [ play_move_rotate::$6 ]
reg byte a [ play_move_rotate::$4 ]
zp ZP_BYTE:41 [ play_collision::i#1 ]
zp ZP_BYTE:42 [ play_collision::i#1 ]
reg byte a [ play_collision::$7 ]
reg byte a [ play_collision::return#13 ]
reg byte a [ play_move_leftright::$4 ]
@ -1218,14 +1274,15 @@ reg byte a [ play_move_down::$12 ]
reg byte a [ play_remove_lines::return#0 ]
reg byte a [ play_move_down::removed#0 ]
reg byte x [ play_update_score::removed#0 ]
reg byte x [ play_spawn_current::current_piece_idx#0 ]
reg byte a [ play_collision::return#10 ]
reg byte a [ play_spawn_current::$5 ]
reg byte a [ play_spawn_current::$2 ]
reg byte a [ sid_rnd::return#2 ]
reg byte a [ play_spawn_current::$1 ]
reg byte a [ play_spawn_current::$6 ]
reg byte a [ sid_rnd::return#0 ]
reg byte a [ play_update_score::$2 ]
reg byte a [ play_update_score::$4 ]
zp ZP_DWORD:42 [ play_update_score::add_bcd#0 ]
zp ZP_DWORD:43 [ play_update_score::add_bcd#0 ]
reg byte a [ play_update_score::$5 ]
reg byte a [ play_update_score::lines_after#0 ]
reg byte a [ play_increase_level::$1 ]
@ -1256,7 +1313,7 @@ reg byte a [ render_init::$13 ]
reg byte a [ render_init::$14 ]
reg byte a [ sprites_irq::ypos#0 ]
reg byte x [ sprites_irq::$0 ]
zp ZP_BYTE:46 [ sprites_irq::raster_sprite_gfx_modify#0 ]
zp ZP_BYTE:47 [ sprites_irq::raster_sprite_gfx_modify#0 ]
reg byte x [ sprites_irq::ptr#0 ]
reg byte a [ sprites_irq::ptr#3 ]
reg byte a [ sprites_irq::ptr#4 ]